summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author ClawGrip <clawgrip@hotmail.com>2021-11-24 15:50:28 +0100
committer GitHub <noreply@github.com>2021-11-24 15:50:28 +0100
commit4e74563abb4c8b385baa72d0c2d5f3987fa88652 (patch)
tree24301baaecadd69e1822242a3aed822aed00f942 /src
parent44b0be43cee0db6bd0e4c66334925cb22a7febd4 (diff)
snowbros.cpp: Redumped "u78.bin" from "3in1semia", it was good afterall (#8873)
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/snowbros.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mame/drivers/snowbros.cpp b/src/mame/drivers/snowbros.cpp
index 33c5f05719f..1375558ed1d 100644
--- a/src/mame/drivers/snowbros.cpp
+++ b/src/mame/drivers/snowbros.cpp
@@ -2594,7 +2594,7 @@ ROM_START( 3in1semia ) // SemiCom Ser-4331-4 PCB
ROM_LOAD( "u75.bin", 0x000000, 0x80000, CRC(9d705249) SHA1(99e0adca1f3f285692bf15c988b25d87f6b1dd90) )
ROM_LOAD( "u76.bin", 0x080000, 0x80000, CRC(b65f5d79) SHA1(a9f19cf54f5ecdeca58f853f3053a686b89fea63) )
ROM_LOAD( "u77.bin", 0x100000, 0x80000, CRC(b9728be9) SHA1(4ea7940f9d1d7c01cfcab92184b6513e4b0a83d7) )
- ROM_LOAD( "u78.bin", 0x180000, 0x20000, BAD_DUMP CRC(aefad49e) SHA1(246ea713eaaa6a01290eded36377437cb7e79fa8) ) // ROM damaged (MX26C1000APC)
+ ROM_LOAD( "u78.bin", 0x180000, 0x20000, CRC(aefad49e) SHA1(246ea713eaaa6a01290eded36377437cb7e79fa8) ) // MX26C1000APC
ROM_END
/*
idth='100%'> -rw-r--r--src/build/verinfo.py170
-rw-r--r--src/devices/bus/a1bus/a1bus.c (renamed from src/emu/bus/a1bus/a1bus.c)0
-rw-r--r--src/devices/bus/a1bus/a1bus.h (renamed from src/emu/bus/a1bus/a1bus.h)0
-rw-r--r--src/devices/bus/a1bus/a1cassette.c (renamed from src/emu/bus/a1bus/a1cassette.c)0
-rw-r--r--src/devices/bus/a1bus/a1cassette.h (renamed from src/emu/bus/a1bus/a1cassette.h)0
-rw-r--r--src/devices/bus/a1bus/a1cffa.c (renamed from src/emu/bus/a1bus/a1cffa.c)0
-rw-r--r--src/devices/bus/a1bus/a1cffa.h (renamed from src/emu/bus/a1bus/a1cffa.h)0
-rw-r--r--src/devices/bus/a2bus/a2alfam2.c (renamed from src/emu/bus/a2bus/a2alfam2.c)0
-rw-r--r--src/devices/bus/a2bus/a2alfam2.h (renamed from src/emu/bus/a2bus/a2alfam2.h)0
-rw-r--r--src/devices/bus/a2bus/a2applicard.c (renamed from src/emu/bus/a2bus/a2applicard.c)0
-rw-r--r--src/devices/bus/a2bus/a2applicard.h (renamed from src/emu/bus/a2bus/a2applicard.h)0
-rw-r--r--src/devices/bus/a2bus/a2arcadebd.c (renamed from src/emu/bus/a2bus/a2arcadebd.c)0
-rw-r--r--src/devices/bus/a2bus/a2arcadebd.h (renamed from src/emu/bus/a2bus/a2arcadebd.h)0
-rw-r--r--src/devices/bus/a2bus/a2bus.c (renamed from src/emu/bus/a2bus/a2bus.c)0
-rw-r--r--src/devices/bus/a2bus/a2bus.h (renamed from src/emu/bus/a2bus/a2bus.h)0
-rw-r--r--src/devices/bus/a2bus/a2cffa.c (renamed from src/emu/bus/a2bus/a2cffa.c)0
-rw-r--r--src/devices/bus/a2bus/a2cffa.h (renamed from src/emu/bus/a2bus/a2cffa.h)0
-rw-r--r--src/devices/bus/a2bus/a2corvus.c (renamed from src/emu/bus/a2bus/a2corvus.c)0
-rw-r--r--src/devices/bus/a2bus/a2corvus.h (renamed from src/emu/bus/a2bus/a2corvus.h)0
-rw-r--r--src/devices/bus/a2bus/a2diskii.c (renamed from src/emu/bus/a2bus/a2diskii.c)0
-rw-r--r--src/devices/bus/a2bus/a2diskii.h (renamed from src/emu/bus/a2bus/a2diskii.h)0
-rw-r--r--src/devices/bus/a2bus/a2diskiing.c (renamed from src/emu/bus/a2bus/a2diskiing.c)0
-rw-r--r--src/devices/bus/a2bus/a2diskiing.h (renamed from src/emu/bus/a2bus/a2diskiing.h)0
-rw-r--r--src/devices/bus/a2bus/a2dx1.c (renamed from src/emu/bus/a2bus/a2dx1.c)0
-rw-r--r--src/devices/bus/a2bus/a2dx1.h (renamed from src/emu/bus/a2bus/a2dx1.h)0
-rw-r--r--src/devices/bus/a2bus/a2eauxslot.c (renamed from src/emu/bus/a2bus/a2eauxslot.c)0
-rw-r--r--src/devices/bus/a2bus/a2eauxslot.h (renamed from src/emu/bus/a2bus/a2eauxslot.h)0
-rw-r--r--src/devices/bus/a2bus/a2echoii.c (renamed from src/emu/bus/a2bus/a2echoii.c)0
-rw-r--r--src/devices/bus/a2bus/a2echoii.h (renamed from src/emu/bus/a2bus/a2echoii.h)0
-rw-r--r--src/devices/bus/a2bus/a2eext80col.c (renamed from src/emu/bus/a2bus/a2eext80col.c)0
-rw-r--r--src/devices/bus/a2bus/a2eext80col.h (renamed from src/emu/bus/a2bus/a2eext80col.h)0
-rw-r--r--src/devices/bus/a2bus/a2eramworks3.c (renamed from src/emu/bus/a2bus/a2eramworks3.c)0
-rw-r--r--src/devices/bus/a2bus/a2eramworks3.h (renamed from src/emu/bus/a2bus/a2eramworks3.h)0
-rw-r--r--src/devices/bus/a2bus/a2estd80col.c (renamed from src/emu/bus/a2bus/a2estd80col.c)0
-rw-r--r--src/devices/bus/a2bus/a2estd80col.h (renamed from src/emu/bus/a2bus/a2estd80col.h)0
-rw-r--r--src/devices/bus/a2bus/a2hsscsi.c (renamed from src/emu/bus/a2bus/a2hsscsi.c)0
-rw-r--r--src/devices/bus/a2bus/a2hsscsi.h (renamed from src/emu/bus/a2bus/a2hsscsi.h)0
-rw-r--r--src/devices/bus/a2bus/a2lang.c (renamed from src/emu/bus/a2bus/a2lang.c)0
-rw-r--r--src/devices/bus/a2bus/a2lang.h (renamed from src/emu/bus/a2bus/a2lang.h)0
-rw-r--r--src/devices/bus/a2bus/a2mcms.c (renamed from src/emu/bus/a2bus/a2mcms.c)0
-rw-r--r--src/devices/bus/a2bus/a2mcms.h (renamed from src/emu/bus/a2bus/a2mcms.h)0
-rw-r--r--src/devices/bus/a2bus/a2memexp.c (renamed from src/emu/bus/a2bus/a2memexp.c)0
-rw-r--r--src/devices/bus/a2bus/a2memexp.h (renamed from src/emu/bus/a2bus/a2memexp.h)0
-rw-r--r--src/devices/bus/a2bus/a2midi.c (renamed from src/emu/bus/a2bus/a2midi.c)0
-rw-r--r--src/devices/bus/a2bus/a2midi.h (renamed from src/emu/bus/a2bus/a2midi.h)0
-rw-r--r--src/devices/bus/a2bus/a2mockingboard.c (renamed from src/emu/bus/a2bus/a2mockingboard.c)0
-rw-r--r--src/devices/bus/a2bus/a2mockingboard.h (renamed from src/emu/bus/a2bus/a2mockingboard.h)0
-rw-r--r--src/devices/bus/a2bus/a2pic.c (renamed from src/emu/bus/a2bus/a2pic.c)0
-rw-r--r--src/devices/bus/a2bus/a2pic.h (renamed from src/emu/bus/a2bus/a2pic.h)0
-rw-r--r--src/devices/bus/a2bus/a2sam.c (renamed from src/emu/bus/a2bus/a2sam.c)0
-rw-r--r--src/devices/bus/a2bus/a2sam.h (renamed from src/emu/bus/a2bus/a2sam.h)0
-rw-r--r--src/devices/bus/a2bus/a2scsi.c (renamed from src/emu/bus/a2bus/a2scsi.c)0
-rw-r--r--src/devices/bus/a2bus/a2scsi.h (renamed from src/emu/bus/a2bus/a2scsi.h)0
-rw-r--r--src/devices/bus/a2bus/a2softcard.c (renamed from src/emu/bus/a2bus/a2softcard.c)0
-rw-r--r--src/devices/bus/a2bus/a2softcard.h (renamed from src/emu/bus/a2bus/a2softcard.h)0
-rw-r--r--src/devices/bus/a2bus/a2ssc.c (renamed from src/emu/bus/a2bus/a2ssc.c)0
-rw-r--r--src/devices/bus/a2bus/a2ssc.h (renamed from src/emu/bus/a2bus/a2ssc.h)0
-rw-r--r--src/devices/bus/a2bus/a2swyft.c (renamed from src/emu/bus/a2bus/a2swyft.c)0
-rw-r--r--src/devices/bus/a2bus/a2swyft.h (renamed from src/emu/bus/a2bus/a2swyft.h)0
-rw-r--r--src/devices/bus/a2bus/a2themill.c (renamed from src/emu/bus/a2bus/a2themill.c)0
-rw-r--r--src/devices/bus/a2bus/a2themill.h (renamed from src/emu/bus/a2bus/a2themill.h)0
-rw-r--r--src/devices/bus/a2bus/a2thunderclock.c (renamed from src/emu/bus/a2bus/a2thunderclock.c)0
-rw-r--r--src/devices/bus/a2bus/a2thunderclock.h (renamed from src/emu/bus/a2bus/a2thunderclock.h)0
-rw-r--r--src/devices/bus/a2bus/a2ultraterm.c (renamed from src/emu/bus/a2bus/a2ultraterm.c)0
-rw-r--r--src/devices/bus/a2bus/a2ultraterm.h (renamed from src/emu/bus/a2bus/a2ultraterm.h)0
-rw-r--r--src/devices/bus/a2bus/a2videoterm.c (renamed from src/emu/bus/a2bus/a2videoterm.c)0
-rw-r--r--src/devices/bus/a2bus/a2videoterm.h (renamed from src/emu/bus/a2bus/a2videoterm.h)0
-rw-r--r--src/devices/bus/a2bus/a2vulcan.c (renamed from src/emu/bus/a2bus/a2vulcan.c)0
-rw-r--r--src/devices/bus/a2bus/a2vulcan.h (renamed from src/emu/bus/a2bus/a2vulcan.h)0
-rw-r--r--src/devices/bus/a2bus/a2zipdrive.c (renamed from src/emu/bus/a2bus/a2zipdrive.c)0
-rw-r--r--src/devices/bus/a2bus/a2zipdrive.h (renamed from src/emu/bus/a2bus/a2zipdrive.h)0
-rw-r--r--src/devices/bus/a2bus/corvfdc01.c (renamed from src/emu/bus/a2bus/corvfdc01.c)0
-rw-r--r--src/devices/bus/a2bus/corvfdc01.h (renamed from src/emu/bus/a2bus/corvfdc01.h)0
-rw-r--r--src/devices/bus/a2bus/corvfdc02.c (renamed from src/emu/bus/a2bus/corvfdc02.c)0
-rw-r--r--src/devices/bus/a2bus/corvfdc02.h (renamed from src/emu/bus/a2bus/corvfdc02.h)0
-rw-r--r--src/devices/bus/a2bus/ezcgi.c (renamed from src/emu/bus/a2bus/ezcgi.c)4
-rw-r--r--src/devices/bus/a2bus/ezcgi.h (renamed from src/emu/bus/a2bus/ezcgi.h)0
-rw-r--r--src/devices/bus/a2bus/laser128.c (renamed from src/emu/bus/a2bus/laser128.c)0
-rw-r--r--src/devices/bus/a2bus/laser128.h (renamed from src/emu/bus/a2bus/laser128.h)0
-rw-r--r--src/devices/bus/a2bus/mouse.c (renamed from src/emu/bus/a2bus/mouse.c)0
-rw-r--r--src/devices/bus/a2bus/mouse.h (renamed from src/emu/bus/a2bus/mouse.h)0
-rw-r--r--src/devices/bus/a2bus/ramcard128k.c (renamed from src/emu/bus/a2bus/ramcard128k.c)0
-rw-r--r--src/devices/bus/a2bus/ramcard128k.h (renamed from src/emu/bus/a2bus/ramcard128k.h)0
-rw-r--r--src/devices/bus/a2bus/ramcard16k.c (renamed from src/emu/bus/a2bus/ramcard16k.c)0
-rw-r--r--src/devices/bus/a2bus/ramcard16k.h (renamed from src/emu/bus/a2bus/ramcard16k.h)0
-rw-r--r--src/devices/bus/a2bus/timemasterho.c (renamed from src/emu/bus/a2bus/timemasterho.c)0
-rw-r--r--src/devices/bus/a2bus/timemasterho.h (renamed from src/emu/bus/a2bus/timemasterho.h)0
-rw-r--r--src/devices/bus/a7800/a78_carts.h (renamed from src/emu/bus/a7800/a78_carts.h)0
-rw-r--r--src/devices/bus/a7800/a78_slot.c (renamed from src/emu/bus/a7800/a78_slot.c)0
-rw-r--r--src/devices/bus/a7800/a78_slot.h (renamed from src/emu/bus/a7800/a78_slot.h)0
-rw-r--r--src/devices/bus/a7800/cpuwiz.c (renamed from src/emu/bus/a7800/cpuwiz.c)0
-rw-r--r--src/devices/bus/a7800/cpuwiz.h (renamed from src/emu/bus/a7800/cpuwiz.h)0
-rw-r--r--src/devices/bus/a7800/hiscore.c (renamed from src/emu/bus/a7800/hiscore.c)0
-rw-r--r--src/devices/bus/a7800/hiscore.h (renamed from src/emu/bus/a7800/hiscore.h)0
-rw-r--r--src/devices/bus/a7800/rom.c (renamed from src/emu/bus/a7800/rom.c)2
-rw-r--r--src/devices/bus/a7800/rom.h (renamed from src/emu/bus/a7800/rom.h)0
-rw-r--r--src/devices/bus/a7800/xboard.c (renamed from src/emu/bus/a7800/xboard.c)0
-rw-r--r--src/devices/bus/a7800/xboard.h (renamed from src/emu/bus/a7800/xboard.h)0
-rw-r--r--src/devices/bus/a800/a800_carts.h (renamed from src/emu/bus/a800/a800_carts.h)0
-rw-r--r--src/devices/bus/a800/a800_slot.c (renamed from src/emu/bus/a800/a800_slot.c)0
-rw-r--r--src/devices/bus/a800/a800_slot.h (renamed from src/emu/bus/a800/a800_slot.h)0
-rw-r--r--src/devices/bus/a800/a8sio.c (renamed from src/emu/bus/a8sio/a8sio.c)0
-rw-r--r--src/devices/bus/a800/a8sio.h (renamed from src/emu/bus/a8sio/a8sio.h)0
-rw-r--r--src/devices/bus/a800/cassette.c (renamed from src/emu/bus/a8sio/cassette.c)0
-rw-r--r--src/devices/bus/a800/cassette.h (renamed from src/emu/bus/a8sio/cassette.h)0
-rw-r--r--src/devices/bus/a800/oss.c (renamed from src/emu/bus/a800/oss.c)0
-rw-r--r--src/devices/bus/a800/oss.h (renamed from src/emu/bus/a800/oss.h)0
-rw-r--r--src/devices/bus/a800/rom.c (renamed from src/emu/bus/a800/rom.c)0
-rw-r--r--src/devices/bus/a800/rom.h (renamed from src/emu/bus/a800/rom.h)0
-rw-r--r--src/devices/bus/a800/sparta.c (renamed from src/emu/bus/a800/sparta.c)0
-rw-r--r--src/devices/bus/a800/sparta.h (renamed from src/emu/bus/a800/sparta.h)0
-rw-r--r--src/devices/bus/abcbus/abc890.c (renamed from src/emu/bus/abcbus/abc890.c)0
-rw-r--r--src/devices/bus/abcbus/abc890.h (renamed from src/emu/bus/abcbus/abc890.h)0
-rw-r--r--src/devices/bus/abcbus/abcbus.c (renamed from src/emu/bus/abcbus/abcbus.c)0
-rw-r--r--src/devices/bus/abcbus/abcbus.h (renamed from src/emu/bus/abcbus/abcbus.h)0
-rw-r--r--src/devices/bus/abcbus/fd2.c (renamed from src/emu/bus/abcbus/fd2.c)0
-rw-r--r--src/devices/bus/abcbus/fd2.h (renamed from src/emu/bus/abcbus/fd2.h)0
-rw-r--r--src/devices/bus/abcbus/hdc.c (renamed from src/emu/bus/abcbus/hdc.c)0
-rw-r--r--src/devices/bus/abcbus/hdc.h (renamed from src/emu/bus/abcbus/hdc.h)0
-rw-r--r--src/devices/bus/abcbus/lux10828.c (renamed from src/emu/bus/abcbus/lux10828.c)0
-rw-r--r--src/devices/bus/abcbus/lux10828.h (renamed from src/emu/bus/abcbus/lux10828.h)0
-rw-r--r--src/devices/bus/abcbus/lux21046.c (renamed from src/emu/bus/abcbus/lux21046.c)0
-rw-r--r--src/devices/bus/abcbus/lux21046.h (renamed from src/emu/bus/abcbus/lux21046.h)0
-rw-r--r--src/devices/bus/abcbus/lux21056.c (renamed from src/emu/bus/abcbus/lux21056.c)0
-rw-r--r--src/devices/bus/abcbus/lux21056.h (renamed from src/emu/bus/abcbus/lux21056.h)0
-rw-r--r--src/devices/bus/abcbus/lux4105.c (renamed from src/emu/bus/abcbus/lux4105.c)0
-rw-r--r--src/devices/bus/abcbus/lux4105.h (renamed from src/emu/bus/abcbus/lux4105.h)0
-rw-r--r--src/devices/bus/abcbus/memcard.c (renamed from src/emu/bus/abcbus/memcard.c)0
-rw-r--r--src/devices/bus/abcbus/memcard.h (renamed from src/emu/bus/abcbus/memcard.h)0
-rw-r--r--src/devices/bus/abcbus/ram.c (renamed from src/emu/bus/abcbus/ram.c)0
-rw-r--r--src/devices/bus/abcbus/ram.h (renamed from src/emu/bus/abcbus/ram.h)0
-rw-r--r--src/devices/bus/abcbus/sio.c (renamed from src/emu/bus/abcbus/sio.c)0
-rw-r--r--src/devices/bus/abcbus/sio.h (renamed from src/emu/bus/abcbus/sio.h)0
-rw-r--r--src/devices/bus/abcbus/slutprov.c (renamed from src/emu/bus/abcbus/slutprov.c)0
-rw-r--r--src/devices/bus/abcbus/slutprov.h (renamed from src/emu/bus/abcbus/slutprov.h)0
-rw-r--r--src/devices/bus/abcbus/turbo.c (renamed from src/emu/bus/abcbus/turbo.c)0
-rw-r--r--src/devices/bus/abcbus/turbo.h (renamed from src/emu/bus/abcbus/turbo.h)0
-rw-r--r--src/devices/bus/abcbus/uni800.c (renamed from src/emu/bus/abcbus/uni800.c)0
-rw-r--r--src/devices/bus/abcbus/uni800.h (renamed from src/emu/bus/abcbus/uni800.h)0
-rw-r--r--src/devices/bus/abckb/abc77.c (renamed from src/emu/bus/abckb/abc77.c)0
-rw-r--r--src/devices/bus/abckb/abc77.h (renamed from src/emu/bus/abckb/abc77.h)0
-rw-r--r--src/devices/bus/abckb/abc800kb.c (renamed from src/emu/bus/abckb/abc800kb.c)0
-rw-r--r--src/devices/bus/abckb/abc800kb.h (renamed from src/emu/bus/abckb/abc800kb.h)0
-rw-r--r--src/devices/bus/abckb/abc99.c (renamed from src/emu/bus/abckb/abc99.c)0
-rw-r--r--src/devices/bus/abckb/abc99.h (renamed from src/emu/bus/abckb/abc99.h)0
-rw-r--r--src/devices/bus/abckb/abckb.c (renamed from src/emu/bus/abckb/abckb.c)0
-rw-r--r--src/devices/bus/abckb/abckb.h (renamed from src/emu/bus/abckb/abckb.h)0
-rw-r--r--src/devices/bus/adam/adamlink.c (renamed from src/emu/bus/adam/adamlink.c)0
-rw-r--r--src/devices/bus/adam/adamlink.h (renamed from src/emu/bus/adam/adamlink.h)0
-rw-r--r--src/devices/bus/adam/exp.c (renamed from src/emu/bus/adam/exp.c)0
-rw-r--r--src/devices/bus/adam/exp.h (renamed from src/emu/bus/adam/exp.h)0
-rw-r--r--src/devices/bus/adam/ide.c (renamed from src/emu/bus/adam/ide.c)0
-rw-r--r--src/devices/bus/adam/ide.h (renamed from src/emu/bus/adam/ide.h)0
-rw-r--r--src/devices/bus/adam/ram.c (renamed from src/emu/bus/adam/ram.c)0
-rw-r--r--src/devices/bus/adam/ram.h (renamed from src/emu/bus/adam/ram.h)0
-rw-r--r--src/devices/bus/adamnet/adamnet.c (renamed from src/emu/bus/adamnet/adamnet.c)0
-rw-r--r--src/devices/bus/adamnet/adamnet.h (renamed from src/emu/bus/adamnet/adamnet.h)0
-rw-r--r--src/devices/bus/adamnet/ddp.c (renamed from src/emu/bus/adamnet/ddp.c)0
-rw-r--r--src/devices/bus/adamnet/ddp.h (renamed from src/emu/bus/adamnet/ddp.h)0
-rw-r--r--src/devices/bus/adamnet/fdc.c (renamed from src/emu/bus/adamnet/fdc.c)0
-rw-r--r--src/devices/bus/adamnet/fdc.h (renamed from src/emu/bus/adamnet/fdc.h)0
-rw-r--r--src/devices/bus/adamnet/kb.c (renamed from src/emu/bus/adamnet/kb.c)0
-rw-r--r--src/devices/bus/adamnet/kb.h (renamed from src/emu/bus/adamnet/kb.h)0
-rw-r--r--src/devices/bus/adamnet/printer.c (renamed from src/emu/bus/adamnet/printer.c)0
-rw-r--r--src/devices/bus/adamnet/printer.h (renamed from src/emu/bus/adamnet/printer.h)0
-rw-r--r--src/devices/bus/adamnet/spi.c (renamed from src/emu/bus/adamnet/spi.c)0
-rw-r--r--src/devices/bus/adamnet/spi.h (renamed from src/emu/bus/adamnet/spi.h)0
-rw-r--r--src/devices/bus/amiga/zorro/a2052.c (renamed from src/emu/bus/amiga/zorro/a2052.c)0
-rw-r--r--src/devices/bus/amiga/zorro/a2052.h (renamed from src/emu/bus/amiga/zorro/a2052.h)0
-rw-r--r--src/devices/bus/amiga/zorro/a2232.c (renamed from src/emu/bus/amiga/zorro/a2232.c)0
-rw-r--r--src/devices/bus/amiga/zorro/a2232.h (renamed from src/emu/bus/amiga/zorro/a2232.h)0
-rw-r--r--src/devices/bus/amiga/zorro/a590.c (renamed from src/emu/bus/amiga/zorro/a590.c)0
-rw-r--r--src/devices/bus/amiga/zorro/a590.h (renamed from src/emu/bus/amiga/zorro/a590.h)0
-rw-r--r--src/devices/bus/amiga/zorro/action_replay.c (renamed from src/emu/bus/amiga/zorro/action_replay.c)0
-rw-r--r--src/devices/bus/amiga/zorro/action_replay.h (renamed from src/emu/bus/amiga/zorro/action_replay.h)0
-rw-r--r--src/devices/bus/amiga/zorro/buddha.c (renamed from src/emu/bus/amiga/zorro/buddha.c)0
-rw-r--r--src/devices/bus/amiga/zorro/buddha.h (renamed from src/emu/bus/amiga/zorro/buddha.h)0
-rw-r--r--src/devices/bus/amiga/zorro/cards.c (renamed from src/emu/bus/amiga/zorro/cards.c)0
-rw-r--r--src/devices/bus/amiga/zorro/cards.h (renamed from src/emu/bus/amiga/zorro/cards.h)0
-rw-r--r--src/devices/bus/amiga/zorro/zorro.c (renamed from src/emu/bus/amiga/zorro/zorro.c)0
-rw-r--r--src/devices/bus/amiga/zorro/zorro.h (renamed from src/emu/bus/amiga/zorro/zorro.h)0
-rw-r--r--src/devices/bus/apf/rom.c (renamed from src/emu/bus/apf/rom.c)0
-rw-r--r--src/devices/bus/apf/rom.h (renamed from src/emu/bus/apf/rom.h)0
-rw-r--r--src/devices/bus/apf/slot.c (renamed from src/emu/bus/apf/slot.c)0
-rw-r--r--src/devices/bus/apf/slot.h (renamed from src/emu/bus/apf/slot.h)0
-rw-r--r--src/devices/bus/apricot/cards.c (renamed from src/emu/bus/apricot/cards.c)0
-rw-r--r--src/devices/bus/apricot/cards.h (renamed from src/emu/bus/apricot/cards.h)0
-rw-r--r--src/devices/bus/apricot/expansion.c (renamed from src/emu/bus/apricot/expansion.c)0
-rw-r--r--src/devices/bus/apricot/expansion.h (renamed from src/emu/bus/apricot/expansion.h)0
-rw-r--r--src/devices/bus/apricot/ram.c (renamed from src/emu/bus/apricot/ram.c)0
-rw-r--r--src/devices/bus/apricot/ram.h (renamed from src/emu/bus/apricot/ram.h)0
-rw-r--r--src/devices/bus/arcadia/rom.c (renamed from src/emu/bus/arcadia/rom.c)0
-rw-r--r--src/devices/bus/arcadia/rom.h (renamed from src/emu/bus/arcadia/rom.h)0
-rw-r--r--src/devices/bus/arcadia/slot.c (renamed from src/emu/bus/arcadia/slot.c)0
-rw-r--r--src/devices/bus/arcadia/slot.h (renamed from src/emu/bus/arcadia/slot.h)0
-rw-r--r--src/devices/bus/astrocde/exp.c (renamed from src/emu/bus/astrocde/exp.c)0
-rw-r--r--src/devices/bus/astrocde/exp.h (renamed from src/emu/bus/astrocde/exp.h)0
-rw-r--r--src/devices/bus/astrocde/ram.c (renamed from src/emu/bus/astrocde/ram.c)0
-rw-r--r--src/devices/bus/astrocde/ram.h (renamed from src/emu/bus/astrocde/ram.h)0
-rw-r--r--src/devices/bus/astrocde/rom.c (renamed from src/emu/bus/astrocde/rom.c)0
-rw-r--r--src/devices/bus/astrocde/rom.h (renamed from src/emu/bus/astrocde/rom.h)0
-rw-r--r--src/devices/bus/astrocde/slot.c (renamed from src/emu/bus/astrocde/slot.c)0
-rw-r--r--src/devices/bus/astrocde/slot.h (renamed from src/emu/bus/astrocde/slot.h)0
-rw-r--r--src/devices/bus/bml3/bml3bus.c (renamed from src/emu/bus/bml3/bml3bus.c)0
-rw-r--r--src/devices/bus/bml3/bml3bus.h (renamed from src/emu/bus/bml3/bml3bus.h)0
-rw-r--r--src/devices/bus/bml3/bml3kanji.c (renamed from src/emu/bus/bml3/bml3kanji.c)0
-rw-r--r--src/devices/bus/bml3/bml3kanji.h (renamed from src/emu/bus/bml3/bml3kanji.h)0
-rw-r--r--src/devices/bus/bml3/bml3mp1802.c (renamed from src/emu/bus/bml3/bml3mp1802.c)0
-rw-r--r--src/devices/bus/bml3/bml3mp1802.h (renamed from src/emu/bus/bml3/bml3mp1802.h)0
-rw-r--r--src/devices/bus/bml3/bml3mp1805.c (renamed from src/emu/bus/bml3/bml3mp1805.c)0
-rw-r--r--src/devices/bus/bml3/bml3mp1805.h (renamed from src/emu/bus/bml3/bml3mp1805.h)0
-rw-r--r--src/devices/bus/bw2/exp.c (renamed from src/emu/bus/bw2/exp.c)0
-rw-r--r--src/devices/bus/bw2/exp.h (renamed from src/emu/bus/bw2/exp.h)0
-rw-r--r--src/devices/bus/bw2/ramcard.c (renamed from src/emu/bus/bw2/ramcard.c)0
-rw-r--r--src/devices/bus/bw2/ramcard.h (renamed from src/emu/bus/bw2/ramcard.h)0
-rw-r--r--src/devices/bus/c64/16kb.c (renamed from src/emu/bus/c64/16kb.c)0
-rw-r--r--src/devices/bus/c64/16kb.h (renamed from src/emu/bus/c64/16kb.h)0
-rw-r--r--src/devices/bus/c64/4dxh.c (renamed from src/emu/bus/c64/4dxh.c)0
-rw-r--r--src/devices/bus/c64/4dxh.h (renamed from src/emu/bus/c64/4dxh.h)0
-rw-r--r--src/devices/bus/c64/4ksa.c (renamed from src/emu/bus/c64/4ksa.c)0
-rw-r--r--src/devices/bus/c64/4ksa.h (renamed from src/emu/bus/c64/4ksa.h)0
-rw-r--r--src/devices/bus/c64/4tba.c (renamed from src/emu/bus/c64/4tba.c)0
-rw-r--r--src/devices/bus/c64/4tba.h (renamed from src/emu/bus/c64/4tba.h)0
-rw-r--r--src/devices/bus/c64/bn1541.c (renamed from src/emu/bus/c64/bn1541.c)0
-rw-r--r--src/devices/bus/c64/bn1541.h (renamed from src/emu/bus/c64/bn1541.h)0
-rw-r--r--src/devices/bus/c64/c128_comal80.c (renamed from src/emu/bus/c64/c128_comal80.c)0
-rw-r--r--src/devices/bus/c64/c128_comal80.h (renamed from src/emu/bus/c64/c128_comal80.h)0
-rw-r--r--src/devices/bus/c64/c128_partner.c250
-rw-r--r--src/devices/bus/c64/c128_partner.h68
-rw-r--r--src/devices/bus/c64/comal80.c (renamed from src/emu/bus/c64/comal80.c)0
-rw-r--r--src/devices/bus/c64/comal80.h (renamed from src/emu/bus/c64/comal80.h)0
-rw-r--r--src/devices/bus/c64/cpm.c (renamed from src/emu/bus/c64/cpm.c)0
-rw-r--r--src/devices/bus/c64/cpm.h (renamed from src/emu/bus/c64/cpm.h)0
-rw-r--r--src/devices/bus/c64/currah_speech.c (renamed from src/emu/bus/c64/currah_speech.c)0
-rw-r--r--src/devices/bus/c64/currah_speech.h (renamed from src/emu/bus/c64/currah_speech.h)0
-rw-r--r--src/devices/bus/c64/dela_ep256.c (renamed from src/emu/bus/c64/dela_ep256.c)0
-rw-r--r--src/devices/bus/c64/dela_ep256.h (renamed from src/emu/bus/c64/dela_ep256.h)0
-rw-r--r--src/devices/bus/c64/dela_ep64.c (renamed from src/emu/bus/c64/dela_ep64.c)0
-rw-r--r--src/devices/bus/c64/dela_ep64.h (renamed from src/emu/bus/c64/dela_ep64.h)0
-rw-r--r--src/devices/bus/c64/dela_ep7x8.c (renamed from src/emu/bus/c64/dela_ep7x8.c)0
-rw-r--r--src/devices/bus/c64/dela_ep7x8.h (renamed from src/emu/bus/c64/dela_ep7x8.h)0
-rw-r--r--src/devices/bus/c64/dinamic.c (renamed from src/emu/bus/c64/dinamic.c)0
-rw-r--r--src/devices/bus/c64/dinamic.h (renamed from src/emu/bus/c64/dinamic.h)0
-rw-r--r--src/devices/bus/c64/dqbb.c (renamed from src/emu/bus/c64/dqbb.c)0
-rw-r--r--src/devices/bus/c64/dqbb.h (renamed from src/emu/bus/c64/dqbb.h)0
-rw-r--r--src/devices/bus/c64/easy_calc_result.c (renamed from src/emu/bus/c64/easy_calc_result.c)0
-rw-r--r--src/devices/bus/c64/easy_calc_result.h (renamed from src/emu/bus/c64/easy_calc_result.h)0
-rw-r--r--src/devices/bus/c64/easyflash.c (renamed from src/emu/bus/c64/easyflash.c)0
-rw-r--r--src/devices/bus/c64/easyflash.h (renamed from src/emu/bus/c64/easyflash.h)0
-rw-r--r--src/devices/bus/c64/epyx_fast_load.c (renamed from src/emu/bus/c64/epyx_fast_load.c)0
-rw-r--r--src/devices/bus/c64/epyx_fast_load.h (renamed from src/emu/bus/c64/epyx_fast_load.h)0
-rw-r--r--src/devices/bus/c64/exos.c (renamed from src/emu/bus/c64/exos.c)0
-rw-r--r--src/devices/bus/c64/exos.h (renamed from src/emu/bus/c64/exos.h)0
-rw-r--r--src/devices/bus/c64/exp.c (renamed from src/emu/bus/c64/exp.c)2
-rw-r--r--src/devices/bus/c64/exp.h (renamed from src/emu/bus/c64/exp.h)0
-rw-r--r--src/devices/bus/c64/fcc.c (renamed from src/emu/bus/c64/fcc.c)0
-rw-r--r--src/devices/bus/c64/fcc.h (renamed from src/emu/bus/c64/fcc.h)0
-rw-r--r--src/devices/bus/c64/final.c (renamed from src/emu/bus/c64/final.c)0
-rw-r--r--src/devices/bus/c64/final.h (renamed from src/emu/bus/c64/final.h)0
-rw-r--r--src/devices/bus/c64/final3.c (renamed from src/emu/bus/c64/final3.c)0
-rw-r--r--src/devices/bus/c64/final3.h (renamed from src/emu/bus/c64/final3.h)0
-rw-r--r--src/devices/bus/c64/fun_play.c (renamed from src/emu/bus/c64/fun_play.c)0
-rw-r--r--src/devices/bus/c64/fun_play.h (renamed from src/emu/bus/c64/fun_play.h)0
-rw-r--r--src/devices/bus/c64/geocable.c (renamed from src/emu/bus/c64/geocable.c)0
-rw-r--r--src/devices/bus/c64/geocable.h (renamed from src/emu/bus/c64/geocable.h)0
-rw-r--r--src/devices/bus/c64/georam.c (renamed from src/emu/bus/c64/georam.c)0
-rw-r--r--src/devices/bus/c64/georam.h (renamed from src/emu/bus/c64/georam.h)0
-rw-r--r--src/devices/bus/c64/ide64.c (renamed from src/emu/bus/c64/ide64.c)0
-rw-r--r--src/devices/bus/c64/ide64.h (renamed from src/emu/bus/c64/ide64.h)0
-rw-r--r--src/devices/bus/c64/ieee488.c (renamed from src/emu/bus/c64/ieee488.c)0
-rw-r--r--src/devices/bus/c64/ieee488.h (renamed from src/emu/bus/c64/ieee488.h)0
-rw-r--r--src/devices/bus/c64/kingsoft.c (renamed from src/emu/bus/c64/kingsoft.c)0
-rw-r--r--src/devices/bus/c64/kingsoft.h (renamed from src/emu/bus/c64/kingsoft.h)0
-rw-r--r--src/devices/bus/c64/mach5.c (renamed from src/emu/bus/c64/mach5.c)0
-rw-r--r--src/devices/bus/c64/mach5.h (renamed from src/emu/bus/c64/mach5.h)0
-rw-r--r--src/devices/bus/c64/magic_desk.c (renamed from src/emu/bus/c64/magic_desk.c)0
-rw-r--r--src/devices/bus/c64/magic_desk.h (renamed from src/emu/bus/c64/magic_desk.h)0
-rw-r--r--src/devices/bus/c64/magic_formel.c (renamed from src/emu/bus/c64/magic_formel.c)0
-rw-r--r--src/devices/bus/c64/magic_formel.h (renamed from src/emu/bus/c64/magic_formel.h)0
-rw-r--r--src/devices/bus/c64/magic_voice.c (renamed from src/emu/bus/c64/magic_voice.c)0
-rw-r--r--src/devices/bus/c64/magic_voice.h (renamed from src/emu/bus/c64/magic_voice.h)0
-rw-r--r--src/devices/bus/c64/midi_maplin.c (renamed from src/emu/bus/c64/midi_maplin.c)0
-rw-r--r--src/devices/bus/c64/midi_maplin.h (renamed from src/emu/bus/c64/midi_maplin.h)0
-rw-r--r--src/devices/bus/c64/midi_namesoft.c (renamed from src/emu/bus/c64/midi_namesoft.c)0
-rw-r--r--src/devices/bus/c64/midi_namesoft.h (renamed from src/emu/bus/c64/midi_namesoft.h)0
-rw-r--r--src/devices/bus/c64/midi_passport.c (renamed from src/emu/bus/c64/midi_passport.c)0
-rw-r--r--src/devices/bus/c64/midi_passport.h (renamed from src/emu/bus/c64/midi_passport.h)0
-rw-r--r--src/devices/bus/c64/midi_sci.c (renamed from src/emu/bus/c64/midi_sci.c)0
-rw-r--r--src/devices/bus/c64/midi_sci.h (renamed from src/emu/bus/c64/midi_sci.h)0
-rw-r--r--src/devices/bus/c64/midi_siel.c (renamed from src/emu/bus/c64/midi_siel.c)0
-rw-r--r--src/devices/bus/c64/midi_siel.h (renamed from src/emu/bus/c64/midi_siel.h)0
-rw-r--r--src/devices/bus/c64/mikro_assembler.c (renamed from src/emu/bus/c64/mikro_assembler.c)0
-rw-r--r--src/devices/bus/c64/mikro_assembler.h (renamed from src/emu/bus/c64/mikro_assembler.h)0
-rw-r--r--src/devices/bus/c64/multiscreen.c (renamed from src/emu/bus/c64/multiscreen.c)0
-rw-r--r--src/devices/bus/c64/multiscreen.h (renamed from src/emu/bus/c64/multiscreen.h)0
-rw-r--r--src/devices/bus/c64/music64.c (renamed from src/emu/bus/c64/music64.c)0
-rw-r--r--src/devices/bus/c64/music64.h (renamed from src/emu/bus/c64/music64.h)0
-rw-r--r--src/devices/bus/c64/neoram.c (renamed from src/emu/bus/c64/neoram.c)0
-rw-r--r--src/devices/bus/c64/neoram.h (renamed from src/emu/bus/c64/neoram.h)0
-rw-r--r--src/devices/bus/c64/ocean.c (renamed from src/emu/bus/c64/ocean.c)0
-rw-r--r--src/devices/bus/c64/ocean.h (renamed from src/emu/bus/c64/ocean.h)0
-rw-r--r--src/devices/bus/c64/pagefox.c (renamed from src/emu/bus/c64/pagefox.c)0
-rw-r--r--src/devices/bus/c64/pagefox.h (renamed from src/emu/bus/c64/pagefox.h)0
-rw-r--r--src/devices/bus/c64/partner.c (renamed from src/emu/bus/c64/partner.c)0
-rw-r--r--src/devices/bus/c64/partner.h (renamed from src/emu/bus/c64/partner.h)0
-rw-r--r--src/devices/bus/c64/prophet64.c (renamed from src/emu/bus/c64/prophet64.c)0
-rw-r--r--src/devices/bus/c64/prophet64.h (renamed from src/emu/bus/c64/prophet64.h)0
-rw-r--r--src/devices/bus/c64/ps64.c (renamed from src/emu/bus/c64/ps64.c)0
-rw-r--r--src/devices/bus/c64/ps64.h (renamed from src/emu/bus/c64/ps64.h)0
-rw-r--r--src/devices/bus/c64/reu.c (renamed from src/emu/bus/c64/reu.c)0
-rw-r--r--src/devices/bus/c64/reu.h (renamed from src/emu/bus/c64/reu.h)0
-rw-r--r--src/devices/bus/c64/rex.c (renamed from src/emu/bus/c64/rex.c)0
-rw-r--r--src/devices/bus/c64/rex.h (renamed from src/emu/bus/c64/rex.h)0
-rw-r--r--src/devices/bus/c64/rex_ep256.c (renamed from src/emu/bus/c64/rex_ep256.c)0
-rw-r--r--src/devices/bus/c64/rex_ep256.h (renamed from src/emu/bus/c64/rex_ep256.h)0
-rw-r--r--src/devices/bus/c64/ross.c (renamed from src/emu/bus/c64/ross.c)0
-rw-r--r--src/devices/bus/c64/ross.h (renamed from src/emu/bus/c64/ross.h)0
-rw-r--r--src/devices/bus/c64/sfx_sound_expander.c (renamed from src/emu/bus/c64/sfx_sound_expander.c)0
-rw-r--r--src/devices/bus/c64/sfx_sound_expander.h (renamed from src/emu/bus/c64/sfx_sound_expander.h)0
-rw-r--r--src/devices/bus/c64/silverrock.c (renamed from src/emu/bus/c64/silverrock.c)0
-rw-r--r--src/devices/bus/c64/silverrock.h (renamed from src/emu/bus/c64/silverrock.h)0
-rw-r--r--src/devices/bus/c64/simons_basic.c (renamed from src/emu/bus/c64/simons_basic.c)0
-rw-r--r--src/devices/bus/c64/simons_basic.h (renamed from src/emu/bus/c64/simons_basic.h)0
-rw-r--r--src/devices/bus/c64/stardos.c (renamed from src/emu/bus/c64/stardos.c)0
-rw-r--r--src/devices/bus/c64/stardos.h (renamed from src/emu/bus/c64/stardos.h)0
-rw-r--r--src/devices/bus/c64/std.c (renamed from src/emu/bus/c64/std.c)0
-rw-r--r--src/devices/bus/c64/std.h (renamed from src/emu/bus/c64/std.h)0
-rw-r--r--src/devices/bus/c64/structured_basic.c (renamed from src/emu/bus/c64/structured_basic.c)0
-rw-r--r--src/devices/bus/c64/structured_basic.h (renamed from src/emu/bus/c64/structured_basic.h)0
-rw-r--r--src/devices/bus/c64/super_explode.c (renamed from src/emu/bus/c64/super_explode.c)0
-rw-r--r--src/devices/bus/c64/super_explode.h (renamed from src/emu/bus/c64/super_explode.h)0
-rw-r--r--src/devices/bus/c64/super_games.c (renamed from src/emu/bus/c64/super_games.c)0
-rw-r--r--src/devices/bus/c64/super_games.h (renamed from src/emu/bus/c64/super_games.h)0
-rw-r--r--src/devices/bus/c64/supercpu.c (renamed from src/emu/bus/c64/supercpu.c)0
-rw-r--r--src/devices/bus/c64/supercpu.h (renamed from src/emu/bus/c64/supercpu.h)0
-rw-r--r--src/devices/bus/c64/sw8k.c (renamed from src/emu/bus/c64/sw8k.c)0
-rw-r--r--src/devices/bus/c64/sw8k.h (renamed from src/emu/bus/c64/sw8k.h)0
-rw-r--r--src/devices/bus/c64/swiftlink.c (renamed from src/emu/bus/c64/swiftlink.c)0
-rw-r--r--src/devices/bus/c64/swiftlink.h (renamed from src/emu/bus/c64/swiftlink.h)0
-rw-r--r--src/devices/bus/c64/system3.c (renamed from src/emu/bus/c64/system3.c)0
-rw-r--r--src/devices/bus/c64/system3.h (renamed from src/emu/bus/c64/system3.h)0
-rw-r--r--src/devices/bus/c64/tdos.c (renamed from src/emu/bus/c64/tdos.c)0
-rw-r--r--src/devices/bus/c64/tdos.h (renamed from src/emu/bus/c64/tdos.h)0
-rw-r--r--src/devices/bus/c64/turbo232.c (renamed from src/emu/bus/c64/turbo232.c)0
-rw-r--r--src/devices/bus/c64/turbo232.h (renamed from src/emu/bus/c64/turbo232.h)0
-rw-r--r--src/devices/bus/c64/user.c (renamed from src/emu/bus/c64/user.c)0
-rw-r--r--src/devices/bus/c64/user.h (renamed from src/emu/bus/c64/user.h)0
-rw-r--r--src/devices/bus/c64/vizastar.c (renamed from src/emu/bus/c64/vizastar.c)0
-rw-r--r--src/devices/bus/c64/vizastar.h (renamed from src/emu/bus/c64/vizastar.h)0
-rw-r--r--src/devices/bus/c64/vw64.c (renamed from src/emu/bus/c64/vw64.c)0
-rw-r--r--src/devices/bus/c64/vw64.h (renamed from src/emu/bus/c64/vw64.h)0
-rw-r--r--src/devices/bus/c64/warp_speed.c (renamed from src/emu/bus/c64/warp_speed.c)0
-rw-r--r--src/devices/bus/c64/warp_speed.h (renamed from src/emu/bus/c64/warp_speed.h)0
-rw-r--r--src/devices/bus/c64/westermann.c (renamed from src/emu/bus/c64/westermann.c)0
-rw-r--r--src/devices/bus/c64/westermann.h (renamed from src/emu/bus/c64/westermann.h)0
-rw-r--r--src/devices/bus/c64/xl80.c (renamed from src/emu/bus/c64/xl80.c)0
-rw-r--r--src/devices/bus/c64/xl80.h (renamed from src/emu/bus/c64/xl80.h)0
-rw-r--r--src/devices/bus/c64/zaxxon.c (renamed from src/emu/bus/c64/zaxxon.c)0
-rw-r--r--src/devices/bus/c64/zaxxon.h (renamed from src/emu/bus/c64/zaxxon.h)0
-rw-r--r--src/devices/bus/cbm2/24k.c (renamed from src/emu/bus/cbm2/24k.c)0
-rw-r--r--src/devices/bus/cbm2/24k.h (renamed from src/emu/bus/cbm2/24k.h)0
-rw-r--r--src/devices/bus/cbm2/exp.c (renamed from src/emu/bus/cbm2/exp.c)0
-rw-r--r--src/devices/bus/cbm2/exp.h (renamed from src/emu/bus/cbm2/exp.h)0
-rw-r--r--src/devices/bus/cbm2/hrg.c (renamed from src/emu/bus/cbm2/hrg.c)0
-rw-r--r--src/devices/bus/cbm2/hrg.h (renamed from src/emu/bus/cbm2/hrg.h)0
-rw-r--r--src/devices/bus/cbm2/std.c (renamed from src/emu/bus/cbm2/std.c)0
-rw-r--r--src/devices/bus/cbm2/std.h (renamed from src/emu/bus/cbm2/std.h)0
-rw-r--r--src/devices/bus/cbm2/user.c (renamed from src/emu/bus/cbm2/user.c)0
-rw-r--r--src/devices/bus/cbm2/user.h (renamed from src/emu/bus/cbm2/user.h)0
-rw-r--r--src/devices/bus/cbmiec/c1526.c269
-rw-r--r--src/devices/bus/cbmiec/c1526.h90
-rw-r--r--src/devices/bus/cbmiec/c1541.c (renamed from src/emu/bus/cbmiec/c1541.c)0
-rw-r--r--src/devices/bus/cbmiec/c1541.h (renamed from src/emu/bus/cbmiec/c1541.h)0
-rw-r--r--src/devices/bus/cbmiec/c1571.c (renamed from src/emu/bus/cbmiec/c1571.c)0
-rw-r--r--src/devices/bus/cbmiec/c1571.h (renamed from src/emu/bus/cbmiec/c1571.h)0
-rw-r--r--src/devices/bus/cbmiec/c1581.c (renamed from src/emu/bus/cbmiec/c1581.c)0
-rw-r--r--src/devices/bus/cbmiec/c1581.h (renamed from src/emu/bus/cbmiec/c1581.h)0
-rw-r--r--src/devices/bus/cbmiec/c64_nl10.c (renamed from src/emu/bus/cbmiec/c64_nl10.c)0
-rw-r--r--src/devices/bus/cbmiec/c64_nl10.h (renamed from src/emu/bus/cbmiec/c64_nl10.h)0
-rw-r--r--src/devices/bus/cbmiec/cbmiec.c (renamed from src/emu/bus/cbmiec/cbmiec.c)7
-rw-r--r--src/devices/bus/cbmiec/cbmiec.h (renamed from src/emu/bus/cbmiec/cbmiec.h)0
-rw-r--r--src/devices/bus/cbmiec/cmdhd.c (renamed from src/emu/bus/cbmiec/cmdhd.c)0
-rw-r--r--src/devices/bus/cbmiec/cmdhd.h (renamed from src/emu/bus/cbmiec/cmdhd.h)0
-rw-r--r--src/devices/bus/cbmiec/diag264_lb_iec.c (renamed from src/emu/bus/cbmiec/diag264_lb_iec.c)0
-rw-r--r--src/devices/bus/cbmiec/diag264_lb_iec.h (renamed from src/emu/bus/cbmiec/diag264_lb_iec.h)0
-rw-r--r--src/devices/bus/cbmiec/fd2000.c (renamed from src/emu/bus/cbmiec/fd2000.c)0
-rw-r--r--src/devices/bus/cbmiec/fd2000.h (renamed from src/emu/bus/cbmiec/fd2000.h)0
-rw-r--r--src/devices/bus/cbmiec/interpod.c (renamed from src/emu/bus/cbmiec/interpod.c)0
-rw-r--r--src/devices/bus/cbmiec/interpod.h (renamed from src/emu/bus/cbmiec/interpod.h)0
-rw-r--r--src/devices/bus/cbmiec/serialbox.c (renamed from src/emu/bus/cbmiec/serialbox.c)0
-rw-r--r--src/devices/bus/cbmiec/serialbox.h (renamed from src/emu/bus/cbmiec/serialbox.h)0
-rw-r--r--src/devices/bus/cbmiec/vic1515.c164
-rw-r--r--src/devices/bus/cbmiec/vic1515.h55
-rw-r--r--src/devices/bus/cbmiec/vic1520.c192
-rw-r--r--src/devices/bus/cbmiec/vic1520.h55
-rw-r--r--src/devices/bus/centronics/comxpl80.c (renamed from src/emu/bus/centronics/comxpl80.c)0
-rw-r--r--src/devices/bus/centronics/comxpl80.h (renamed from src/emu/bus/centronics/comxpl80.h)0
-rw-r--r--src/devices/bus/centronics/covox.c (renamed from src/emu/bus/centronics/covox.c)0
-rw-r--r--src/devices/bus/centronics/covox.h (renamed from src/emu/bus/centronics/covox.h)0
-rw-r--r--src/devices/bus/centronics/ctronics.c (renamed from src/emu/bus/centronics/ctronics.c)2
-rw-r--r--src/devices/bus/centronics/ctronics.h (renamed from src/emu/bus/centronics/ctronics.h)0
-rw-r--r--src/devices/bus/centronics/digiblst.c (renamed from src/emu/bus/centronics/digiblst.c)0
-rw-r--r--src/devices/bus/centronics/digiblst.h (renamed from src/emu/bus/centronics/digiblst.h)0
-rw-r--r--src/devices/bus/centronics/dsjoy.c (renamed from src/emu/bus/centronics/dsjoy.c)0
-rw-r--r--src/devices/bus/centronics/dsjoy.h (renamed from src/emu/bus/centronics/dsjoy.h)0
-rw-r--r--src/devices/bus/centronics/epson_ex800.c (renamed from src/emu/bus/centronics/epson_ex800.c)0
-rw-r--r--src/devices/bus/centronics/epson_ex800.h (renamed from src/emu/bus/centronics/epson_ex800.h)0
-rw-r--r--src/devices/bus/centronics/epson_lx800.c (renamed from src/emu/bus/centronics/epson_lx800.c)0
-rw-r--r--src/devices/bus/centronics/epson_lx800.h (renamed from src/emu/bus/centronics/epson_lx800.h)0
-rw-r--r--src/devices/bus/centronics/epson_lx810l.c (renamed from src/emu/bus/centronics/epson_lx810l.c)94
-rw-r--r--src/devices/bus/centronics/epson_lx810l.h (renamed from src/emu/bus/centronics/epson_lx810l.h)21
-rw-r--r--src/devices/bus/centronics/nec_p72.c94
-rw-r--r--src/devices/bus/centronics/nec_p72.h45
-rw-r--r--src/devices/bus/centronics/printer.c (renamed from src/emu/bus/centronics/printer.c)1
-rw-r--r--src/devices/bus/centronics/printer.h (renamed from src/emu/bus/centronics/printer.h)0
-rw-r--r--src/devices/bus/cgenie/expansion/carts.c (renamed from src/emu/bus/cgenie/expansion/carts.c)0
-rw-r--r--src/devices/bus/cgenie/expansion/carts.h (renamed from src/emu/bus/cgenie/expansion/carts.h)0
-rw-r--r--src/devices/bus/cgenie/expansion/expansion.c (renamed from src/emu/bus/cgenie/expansion/expansion.c)0
-rw-r--r--src/devices/bus/cgenie/expansion/expansion.h (renamed from src/emu/bus/cgenie/expansion/expansion.h)0
-rw-r--r--src/devices/bus/cgenie/expansion/floppy.c (renamed from src/emu/bus/cgenie/expansion/floppy.c)0
-rw-r--r--src/devices/bus/cgenie/expansion/floppy.h (renamed from src/emu/bus/cgenie/expansion/floppy.h)0
-rw-r--r--src/devices/bus/cgenie/parallel/carts.c (renamed from src/emu/bus/cgenie/parallel/carts.c)0
-rw-r--r--src/devices/bus/cgenie/parallel/carts.h (renamed from src/emu/bus/cgenie/parallel/carts.h)0
-rw-r--r--src/devices/bus/cgenie/parallel/joystick.c (renamed from src/emu/bus/cgenie/parallel/joystick.c)0
-rw-r--r--src/devices/bus/cgenie/parallel/joystick.h (renamed from src/emu/bus/cgenie/parallel/joystick.h)0
-rw-r--r--src/devices/bus/cgenie/parallel/parallel.c (renamed from src/emu/bus/cgenie/parallel/parallel.c)0
-rw-r--r--src/devices/bus/cgenie/parallel/parallel.h (renamed from src/emu/bus/cgenie/parallel/parallel.h)0
-rw-r--r--src/devices/bus/cgenie/parallel/printer.c (renamed from src/emu/bus/cgenie/parallel/printer.c)0
-rw-r--r--src/devices/bus/cgenie/parallel/printer.h (renamed from src/emu/bus/cgenie/parallel/printer.h)0
-rw-r--r--src/devices/bus/chanf/rom.c (renamed from src/emu/bus/chanf/rom.c)0
-rw-r--r--src/devices/bus/chanf/rom.h (renamed from src/emu/bus/chanf/rom.h)0
-rw-r--r--src/devices/bus/chanf/slot.c (renamed from src/emu/bus/chanf/slot.c)0
-rw-r--r--src/devices/bus/chanf/slot.h (renamed from src/emu/bus/chanf/slot.h)0
-rw-r--r--src/devices/bus/coco/coco_232.c (renamed from src/emu/bus/coco/coco_232.c)0
-rw-r--r--src/devices/bus/coco/coco_232.h (renamed from src/emu/bus/coco/coco_232.h)0
-rw-r--r--src/devices/bus/coco/coco_dwsock.c (renamed from src/emu/bus/coco/coco_dwsock.c)0
-rw-r--r--src/devices/bus/coco/coco_dwsock.h (renamed from src/emu/bus/coco/coco_dwsock.h)0
-rw-r--r--src/devices/bus/coco/coco_fdc.c (renamed from src/emu/bus/coco/coco_fdc.c)0
-rw-r--r--src/devices/bus/coco/coco_fdc.h (renamed from src/emu/bus/coco/coco_fdc.h)0
-rw-r--r--src/devices/bus/coco/coco_multi.c (renamed from src/emu/bus/coco/coco_multi.c)0
-rw-r--r--src/devices/bus/coco/coco_multi.h (renamed from src/emu/bus/coco/coco_multi.h)0
-rw-r--r--src/devices/bus/coco/coco_orch90.c (renamed from src/emu/bus/coco/coco_orch90.c)0
-rw-r--r--src/devices/bus/coco/coco_orch90.h (renamed from src/emu/bus/coco/coco_orch90.h)0
-rw-r--r--src/devices/bus/coco/coco_pak.c (renamed from src/emu/bus/coco/coco_pak.c)0
-rw-r--r--src/devices/bus/coco/coco_pak.h (renamed from src/emu/bus/coco/coco_pak.h)0
-rw-r--r--src/devices/bus/coco/cococart.c (renamed from src/emu/bus/coco/cococart.c)0
-rw-r--r--src/devices/bus/coco/cococart.h (renamed from src/emu/bus/coco/cococart.h)0
-rw-r--r--src/devices/bus/coleco/ctrl.c (renamed from src/emu/bus/coleco/ctrl.c)0
-rw-r--r--src/devices/bus/coleco/ctrl.h (renamed from src/emu/bus/coleco/ctrl.h)0
-rw-r--r--src/devices/bus/coleco/exp.c (renamed from src/emu/bus/coleco/exp.c)11
-rw-r--r--src/devices/bus/coleco/exp.h (renamed from src/emu/bus/coleco/exp.h)0
-rw-r--r--src/devices/bus/coleco/hand.c (renamed from src/emu/bus/coleco/hand.c)0
-rw-r--r--src/devices/bus/coleco/hand.h (renamed from src/emu/bus/coleco/hand.h)0
-rw-r--r--src/devices/bus/coleco/sac.c (renamed from src/emu/bus/coleco/sac.c)0
-rw-r--r--src/devices/bus/coleco/sac.h (renamed from src/emu/bus/coleco/sac.h)0
-rw-r--r--src/devices/bus/coleco/std.c (renamed from src/emu/bus/coleco/std.c)0
-rw-r--r--src/devices/bus/coleco/std.h (renamed from src/emu/bus/coleco/std.h)0
-rw-r--r--src/devices/bus/coleco/xin1.c71
-rw-r--r--src/devices/bus/coleco/xin1.h48
-rw-r--r--src/devices/bus/compucolor/floppy.c (renamed from src/emu/bus/compucolor/floppy.c)0
-rw-r--r--src/devices/bus/compucolor/floppy.h (renamed from src/emu/bus/compucolor/floppy.h)0
-rw-r--r--src/devices/bus/comx35/clm.c (renamed from src/emu/bus/comx35/clm.c)0
-rw-r--r--src/devices/bus/comx35/clm.h (renamed from src/emu/bus/comx35/clm.h)0
-rw-r--r--src/devices/bus/comx35/eprom.c (renamed from src/emu/bus/comx35/eprom.c)0
-rw-r--r--src/devices/bus/comx35/eprom.h (renamed from src/emu/bus/comx35/eprom.h)0
-rw-r--r--src/devices/bus/comx35/exp.c (renamed from src/emu/bus/comx35/exp.c)0
-rw-r--r--src/devices/bus/comx35/exp.h (renamed from src/emu/bus/comx35/exp.h)0
-rw-r--r--src/devices/bus/comx35/expbox.c (renamed from src/emu/bus/comx35/expbox.c)0
-rw-r--r--src/devices/bus/comx35/expbox.h (renamed from src/emu/bus/comx35/expbox.h)0
-rw-r--r--src/devices/bus/comx35/fdc.c (renamed from src/emu/bus/comx35/fdc.c)0
-rw-r--r--src/devices/bus/comx35/fdc.h (renamed from src/emu/bus/comx35/fdc.h)0
-rw-r--r--src/devices/bus/comx35/joycard.c (renamed from src/emu/bus/comx35/joycard.c)0
-rw-r--r--src/devices/bus/comx35/joycard.h (renamed from src/emu/bus/comx35/joycard.h)0
-rw-r--r--src/devices/bus/comx35/printer.c (renamed from src/emu/bus/comx35/printer.c)0
-rw-r--r--src/devices/bus/comx35/printer.h (renamed from src/emu/bus/comx35/printer.h)0
-rw-r--r--src/devices/bus/comx35/ram.c (renamed from src/emu/bus/comx35/ram.c)0
-rw-r--r--src/devices/bus/comx35/ram.h (renamed from src/emu/bus/comx35/ram.h)0
-rw-r--r--src/devices/bus/comx35/thermal.c (renamed from src/emu/bus/comx35/thermal.c)0
-rw-r--r--src/devices/bus/comx35/thermal.h (renamed from src/emu/bus/comx35/thermal.h)0
-rw-r--r--src/devices/bus/cpc/amdrum.c (renamed from src/emu/bus/cpc/amdrum.c)0
-rw-r--r--src/devices/bus/cpc/amdrum.h (renamed from src/emu/bus/cpc/amdrum.h)0
-rw-r--r--src/devices/bus/cpc/brunword4.c (renamed from src/emu/bus/cpc/brunword4.c)0
-rw-r--r--src/devices/bus/cpc/brunword4.h (renamed from src/emu/bus/cpc/brunword4.h)0
-rw-r--r--src/devices/bus/cpc/cpc_pds.c (renamed from src/emu/bus/cpc/cpc_pds.c)0
-rw-r--r--src/devices/bus/cpc/cpc_pds.h (renamed from src/emu/bus/cpc/cpc_pds.h)0
-rw-r--r--src/devices/bus/cpc/cpc_rom.c (renamed from src/emu/bus/cpc/cpc_rom.c)0
-rw-r--r--src/devices/bus/cpc/cpc_rom.h (renamed from src/emu/bus/cpc/cpc_rom.h)0
-rw-r--r--src/devices/bus/cpc/cpc_rs232.c (renamed from src/emu/bus/cpc/cpc_rs232.c)0
-rw-r--r--src/devices/bus/cpc/cpc_rs232.h (renamed from src/emu/bus/cpc/cpc_rs232.h)0
-rw-r--r--src/devices/bus/cpc/cpc_ssa1.c (renamed from src/emu/bus/cpc/cpc_ssa1.c)0
-rw-r--r--src/devices/bus/cpc/cpc_ssa1.h (renamed from src/emu/bus/cpc/cpc_ssa1.h)0
-rw-r--r--src/devices/bus/cpc/cpcexp.c (renamed from src/emu/bus/cpc/cpcexp.c)0
-rw-r--r--src/devices/bus/cpc/cpcexp.h (renamed from src/emu/bus/cpc/cpcexp.h)10
-rw-r--r--src/devices/bus/cpc/ddi1.c (renamed from src/emu/bus/cpc/ddi1.c)24
-rw-r--r--src/devices/bus/cpc/ddi1.h (renamed from src/emu/bus/cpc/ddi1.h)4
-rw-r--r--src/devices/bus/cpc/hd20.c (renamed from src/emu/bus/cpc/hd20.c)0
-rw-r--r--src/devices/bus/cpc/hd20.h (renamed from src/emu/bus/cpc/hd20.h)0
-rw-r--r--src/devices/bus/cpc/magicsound.c189
-rw-r--r--src/devices/bus/cpc/magicsound.h91
-rw-r--r--src/devices/bus/cpc/mface2.c (renamed from src/emu/bus/cpc/mface2.c)0
-rw-r--r--src/devices/bus/cpc/mface2.h (renamed from src/emu/bus/cpc/mface2.h)0
-rw-r--r--src/devices/bus/cpc/playcity.c (renamed from src/emu/bus/cpc/playcity.c)0
-rw-r--r--src/devices/bus/cpc/playcity.h (renamed from src/emu/bus/cpc/playcity.h)0
-rw-r--r--src/devices/bus/cpc/smartwatch.c (renamed from src/emu/bus/cpc/smartwatch.c)0
-rw-r--r--src/devices/bus/cpc/smartwatch.h (renamed from src/emu/bus/cpc/smartwatch.h)0
-rw-r--r--src/devices/bus/cpc/symbfac2.c (renamed from src/emu/bus/cpc/symbfac2.c)0
-rw-r--r--src/devices/bus/cpc/symbfac2.h (renamed from src/emu/bus/cpc/symbfac2.h)0
-rw-r--r--src/devices/bus/crvision/rom.c (renamed from src/emu/bus/crvision/rom.c)0
-rw-r--r--src/devices/bus/crvision/rom.h (renamed from src/emu/bus/crvision/rom.h)0
-rw-r--r--src/devices/bus/crvision/slot.c (renamed from src/emu/bus/crvision/slot.c)0
-rw-r--r--src/devices/bus/crvision/slot.h (renamed from src/emu/bus/crvision/slot.h)0
-rw-r--r--src/devices/bus/dmv/dmvbus.c (renamed from src/emu/bus/dmv/dmvbus.c)0
-rw-r--r--src/devices/bus/dmv/dmvbus.h (renamed from src/emu/bus/dmv/dmvbus.h)0
-rw-r--r--src/devices/bus/dmv/k210.c (renamed from src/emu/bus/dmv/k210.c)0
-rw-r--r--src/devices/bus/dmv/k210.h (renamed from src/emu/bus/dmv/k210.h)0
-rw-r--r--src/devices/bus/dmv/k220.c (renamed from src/emu/bus/dmv/k220.c)13
-rw-r--r--src/devices/bus/dmv/k220.h (renamed from src/emu/bus/dmv/k220.h)0
-rw-r--r--src/devices/bus/dmv/k230.c (renamed from src/emu/bus/dmv/k230.c)0
-rw-r--r--src/devices/bus/dmv/k230.h (renamed from src/emu/bus/dmv/k230.h)0
-rw-r--r--src/devices/bus/dmv/k233.c (renamed from src/emu/bus/dmv/k233.c)0
-rw-r--r--src/devices/bus/dmv/k233.h (renamed from src/emu/bus/dmv/k233.h)0
-rw-r--r--src/devices/bus/dmv/k801.c (renamed from src/emu/bus/dmv/k801.c)0
-rw-r--r--src/devices/bus/dmv/k801.h (renamed from src/emu/bus/dmv/k801.h)0
-rw-r--r--src/devices/bus/dmv/k803.c (renamed from src/emu/bus/dmv/k803.c)0
-rw-r--r--src/devices/bus/dmv/k803.h (renamed from src/emu/bus/dmv/k803.h)0
-rw-r--r--src/devices/bus/dmv/k806.c (renamed from src/emu/bus/dmv/k806.c)0
-rw-r--r--src/devices/bus/dmv/k806.h (renamed from src/emu/bus/dmv/k806.h)0
-rw-r--r--src/devices/bus/dmv/ram.c (renamed from src/emu/bus/dmv/ram.c)0
-rw-r--r--src/devices/bus/dmv/ram.h (renamed from src/emu/bus/dmv/ram.h)0
-rw-r--r--src/devices/bus/ecbbus/ecbbus.c (renamed from src/emu/bus/ecbbus/ecbbus.c)0
-rw-r--r--src/devices/bus/ecbbus/ecbbus.h (renamed from src/emu/bus/ecbbus/ecbbus.h)0
-rw-r--r--src/devices/bus/ecbbus/grip.c (renamed from src/emu/bus/ecbbus/grip.c)0
-rw-r--r--src/devices/bus/ecbbus/grip.h (renamed from src/emu/bus/ecbbus/grip.h)0
-rw-r--r--src/devices/bus/econet/e01.c (renamed from src/emu/bus/econet/e01.c)0
-rw-r--r--src/devices/bus/econet/e01.h (renamed from src/emu/bus/econet/e01.h)0
-rw-r--r--src/devices/bus/econet/econet.c (renamed from src/emu/bus/econet/econet.c)0
-rw-r--r--src/devices/bus/econet/econet.h (renamed from src/emu/bus/econet/econet.h)0
-rw-r--r--src/devices/bus/ep64/exdos.c (renamed from src/emu/bus/ep64/exdos.c)0
-rw-r--r--src/devices/bus/ep64/exdos.h (renamed from src/emu/bus/ep64/exdos.h)0
-rw-r--r--src/devices/bus/ep64/exp.c (renamed from src/emu/bus/ep64/exp.c)0
-rw-r--r--src/devices/bus/ep64/exp.h (renamed from src/emu/bus/ep64/exp.h)0
-rw-r--r--src/devices/bus/epson_sio/epson_sio.c (renamed from src/emu/bus/epson_sio/epson_sio.c)0
-rw-r--r--src/devices/bus/epson_sio/epson_sio.h (renamed from src/emu/bus/epson_sio/epson_sio.h)0
-rw-r--r--src/devices/bus/epson_sio/pf10.c (renamed from src/emu/bus/epson_sio/pf10.c)0
-rw-r--r--src/devices/bus/epson_sio/pf10.h (renamed from src/emu/bus/epson_sio/pf10.h)0
-rw-r--r--src/devices/bus/epson_sio/tf20.c (renamed from src/emu/bus/epson_sio/tf20.c)0
-rw-r--r--src/devices/bus/epson_sio/tf20.h (renamed from src/emu/bus/epson_sio/tf20.h)0
-rw-r--r--src/devices/bus/gameboy/gb_slot.c (renamed from src/emu/bus/gameboy/gb_slot.c)0
-rw-r--r--src/devices/bus/gameboy/gb_slot.h (renamed from src/emu/bus/gameboy/gb_slot.h)0
-rw-r--r--src/devices/bus/gameboy/mbc.c (renamed from src/emu/bus/gameboy/mbc.c)0
-rw-r--r--src/devices/bus/gameboy/mbc.h (renamed from src/emu/bus/gameboy/mbc.h)0
-rw-r--r--src/devices/bus/gameboy/rom.c (renamed from src/emu/bus/gameboy/rom.c)0
-rw-r--r--src/devices/bus/gameboy/rom.h (renamed from src/emu/bus/gameboy/rom.h)0
-rw-r--r--src/devices/bus/gamegear/ggext.c (renamed from src/emu/bus/gamegear/ggext.c)0
-rw-r--r--src/devices/bus/gamegear/ggext.h (renamed from src/emu/bus/gamegear/ggext.h)0
-rw-r--r--src/devices/bus/gamegear/smsctrladp.c (renamed from src/emu/bus/gamegear/smsctrladp.c)0
-rw-r--r--src/devices/bus/gamegear/smsctrladp.h (renamed from src/emu/bus/gamegear/smsctrladp.h)0
-rw-r--r--src/devices/bus/gba/gba_slot.c (renamed from src/emu/bus/gba/gba_slot.c)0
-rw-r--r--src/devices/bus/gba/gba_slot.h (renamed from src/emu/bus/gba/gba_slot.h)0
-rw-r--r--src/devices/bus/gba/rom.c (renamed from src/emu/bus/gba/rom.c)0
-rw-r--r--src/devices/bus/gba/rom.h (renamed from src/emu/bus/gba/rom.h)0
-rw-r--r--src/devices/bus/generic/carts.c (renamed from src/emu/bus/generic/carts.c)0
-rw-r--r--src/devices/bus/generic/carts.h (renamed from src/emu/bus/generic/carts.h)0
-rw-r--r--src/devices/bus/generic/ram.c (renamed from src/emu/bus/generic/ram.c)0
-rw-r--r--src/devices/bus/generic/ram.h (renamed from src/emu/bus/generic/ram.h)0
-rw-r--r--src/devices/bus/generic/rom.c (renamed from src/emu/bus/generic/rom.c)0
-rw-r--r--src/devices/bus/generic/rom.h (renamed from src/emu/bus/generic/rom.h)0
-rw-r--r--src/devices/bus/generic/slot.c (renamed from src/emu/bus/generic/slot.c)0
-rw-r--r--src/devices/bus/generic/slot.h (renamed from src/emu/bus/generic/slot.h)0
-rw-r--r--src/devices/bus/ieee488/c2031.c (renamed from src/emu/bus/ieee488/c2031.c)0
-rw-r--r--src/devices/bus/ieee488/c2031.h (renamed from src/emu/bus/ieee488/c2031.h)0
-rw-r--r--src/devices/bus/ieee488/c2040.c (renamed from src/emu/bus/ieee488/c2040.c)0
-rw-r--r--src/devices/bus/ieee488/c2040.h (renamed from src/emu/bus/ieee488/c2040.h)0
-rw-r--r--src/devices/bus/ieee488/c2040fdc.c (renamed from src/emu/bus/ieee488/c2040fdc.c)0
-rw-r--r--src/devices/bus/ieee488/c2040fdc.h (renamed from src/emu/bus/ieee488/c2040fdc.h)0
-rw-r--r--src/devices/bus/ieee488/c8050.c (renamed from src/emu/bus/ieee488/c8050.c)0
-rw-r--r--src/devices/bus/ieee488/c8050.h (renamed from src/emu/bus/ieee488/c8050.h)0
-rw-r--r--src/devices/bus/ieee488/c8050fdc.c (renamed from src/emu/bus/ieee488/c8050fdc.c)0
-rw-r--r--src/devices/bus/ieee488/c8050fdc.h (renamed from src/emu/bus/ieee488/c8050fdc.h)0
-rw-r--r--src/devices/bus/ieee488/c8280.c (renamed from src/emu/bus/ieee488/c8280.c)0
-rw-r--r--src/devices/bus/ieee488/c8280.h (renamed from src/emu/bus/ieee488/c8280.h)0
-rw-r--r--src/devices/bus/ieee488/d9060.c (renamed from src/emu/bus/ieee488/d9060.c)0
-rw-r--r--src/devices/bus/ieee488/d9060.h (renamed from src/emu/bus/ieee488/d9060.h)0
-rw-r--r--src/devices/bus/ieee488/hardbox.c (renamed from src/emu/bus/ieee488/hardbox.c)4
-rw-r--r--src/devices/bus/ieee488/hardbox.h (renamed from src/emu/bus/ieee488/hardbox.h)0
-rw-r--r--src/devices/bus/ieee488/ieee488.c (renamed from src/emu/bus/ieee488/ieee488.c)2
-rw-r--r--src/devices/bus/ieee488/ieee488.h (renamed from src/emu/bus/ieee488/ieee488.h)0
-rw-r--r--src/devices/bus/ieee488/shark.c (renamed from src/emu/bus/ieee488/shark.c)0
-rw-r--r--src/devices/bus/ieee488/shark.h (renamed from src/emu/bus/ieee488/shark.h)0
-rw-r--r--src/devices/bus/ieee488/softbox.c (renamed from src/emu/bus/ieee488/softbox.c)2
-rw-r--r--src/devices/bus/ieee488/softbox.h (renamed from src/emu/bus/ieee488/softbox.h)0
-rw-r--r--src/devices/bus/imi7000/imi5000h.c (renamed from src/emu/bus/imi7000/imi5000h.c)0
-rw-r--r--src/devices/bus/imi7000/imi5000h.h (renamed from src/emu/bus/imi7000/imi5000h.h)0
-rw-r--r--src/devices/bus/imi7000/imi7000.c (renamed from src/emu/bus/imi7000/imi7000.c)0
-rw-r--r--src/devices/bus/imi7000/imi7000.h (renamed from src/emu/bus/imi7000/imi7000.h)0
-rw-r--r--src/devices/bus/intv/ecs.c (renamed from src/emu/bus/intv/ecs.c)0
-rw-r--r--src/devices/bus/intv/ecs.h (renamed from src/emu/bus/intv/ecs.h)0
-rw-r--r--src/devices/bus/intv/rom.c (renamed from src/emu/bus/intv/rom.c)0
-rw-r--r--src/devices/bus/intv/rom.h (renamed from src/emu/bus/intv/rom.h)0
-rw-r--r--src/devices/bus/intv/slot.c (renamed from src/emu/bus/intv/slot.c)0
-rw-r--r--src/devices/bus/intv/slot.h (renamed from src/emu/bus/intv/slot.h)0
-rw-r--r--src/devices/bus/intv/voice.c (renamed from src/emu/bus/intv/voice.c)0
-rw-r--r--src/devices/bus/intv/voice.h (renamed from src/emu/bus/intv/voice.h)0
-rw-r--r--src/devices/bus/iq151/disc2.c (renamed from src/emu/bus/iq151/disc2.c)0
-rw-r--r--src/devices/bus/iq151/disc2.h (renamed from src/emu/bus/iq151/disc2.h)0
-rw-r--r--src/devices/bus/iq151/grafik.c (renamed from src/emu/bus/iq151/grafik.c)0
-rw-r--r--src/devices/bus/iq151/grafik.h (renamed from src/emu/bus/iq151/grafik.h)0
-rw-r--r--src/devices/bus/iq151/iq151.c (renamed from src/emu/bus/iq151/iq151.c)0
-rw-r--r--src/devices/bus/iq151/iq151.h (renamed from src/emu/bus/iq151/iq151.h)0
-rw-r--r--src/devices/bus/iq151/minigraf.c (renamed from src/emu/bus/iq151/minigraf.c)0
-rw-r--r--src/devices/bus/iq151/minigraf.h (renamed from src/emu/bus/iq151/minigraf.h)0
-rw-r--r--src/devices/bus/iq151/ms151a.c (renamed from src/emu/bus/iq151/ms151a.c)0
-rw-r--r--src/devices/bus/iq151/ms151a.h (renamed from src/emu/bus/iq151/ms151a.h)0
-rw-r--r--src/devices/bus/iq151/rom.c (renamed from src/emu/bus/iq151/rom.c)0
-rw-r--r--src/devices/bus/iq151/rom.h (renamed from src/emu/bus/iq151/rom.h)0
-rw-r--r--src/devices/bus/iq151/staper.c (renamed from src/emu/bus/iq151/staper.c)0
-rw-r--r--src/devices/bus/iq151/staper.h (renamed from src/emu/bus/iq151/staper.h)0
-rw-r--r--src/devices/bus/iq151/video32.c (renamed from src/emu/bus/iq151/video32.c)0
-rw-r--r--src/devices/bus/iq151/video32.h (renamed from src/emu/bus/iq151/video32.h)0
-rw-r--r--src/devices/bus/iq151/video64.c (renamed from src/emu/bus/iq151/video64.c)0
-rw-r--r--src/devices/bus/iq151/video64.h (renamed from src/emu/bus/iq151/video64.h)0
-rw-r--r--src/devices/bus/isa/3c503.c (renamed from src/emu/bus/isa/3c503.c)0
-rw-r--r--src/devices/bus/isa/3c503.h (renamed from src/emu/bus/isa/3c503.h)0
-rw-r--r--src/devices/bus/isa/3c505.c (renamed from src/emu/bus/isa/3c505.c)0
-rw-r--r--src/devices/bus/isa/3c505.h (renamed from src/emu/bus/isa/3c505.h)0
-rw-r--r--src/devices/bus/isa/adlib.c (renamed from src/emu/bus/isa/adlib.c)0
-rw-r--r--src/devices/bus/isa/adlib.h (renamed from src/emu/bus/isa/adlib.h)0
-rw-r--r--src/devices/bus/isa/aga.c (renamed from src/emu/bus/isa/aga.c)0
-rw-r--r--src/devices/bus/isa/aga.h (renamed from src/emu/bus/isa/aga.h)0
-rw-r--r--src/devices/bus/isa/aha1542.c (renamed from src/emu/bus/isa/aha1542.c)0
-rw-r--r--src/devices/bus/isa/aha1542.h (renamed from src/emu/bus/isa/aha1542.h)0
-rw-r--r--src/devices/bus/isa/cga.c (renamed from src/emu/bus/isa/cga.c)0
-rw-r--r--src/devices/bus/isa/cga.h (renamed from src/emu/bus/isa/cga.h)0
-rw-r--r--src/devices/bus/isa/com.c (renamed from src/emu/bus/isa/com.c)0
-rw-r--r--src/devices/bus/isa/com.h (renamed from src/emu/bus/isa/com.h)0
-rw-r--r--src/devices/bus/isa/dectalk.c (renamed from src/emu/bus/isa/dectalk.c)0
-rw-r--r--src/devices/bus/isa/dectalk.h (renamed from src/emu/bus/isa/dectalk.h)0
-rw-r--r--src/devices/bus/isa/ega.c (renamed from src/emu/bus/isa/ega.c)0
-rw-r--r--src/devices/bus/isa/ega.h (renamed from src/emu/bus/isa/ega.h)0
-rw-r--r--src/devices/bus/isa/fdc.c (renamed from src/emu/bus/isa/fdc.c)0
-rw-r--r--src/devices/bus/isa/fdc.h (renamed from src/emu/bus/isa/fdc.h)0
-rw-r--r--src/devices/bus/isa/finalchs.c (renamed from src/emu/bus/isa/finalchs.c)0
-rw-r--r--src/devices/bus/isa/finalchs.h (renamed from src/emu/bus/isa/finalchs.h)0
-rw-r--r--src/devices/bus/isa/gblaster.c (renamed from src/emu/bus/isa/gblaster.c)12
-rw-r--r--src/devices/bus/isa/gblaster.h (renamed from src/emu/bus/isa/gblaster.h)0
-rw-r--r--src/devices/bus/isa/gus.c (renamed from src/emu/bus/isa/gus.c)2
-rw-r--r--src/devices/bus/isa/gus.h (renamed from src/emu/bus/isa/gus.h)0
-rw-r--r--src/devices/bus/isa/hdc.c (renamed from src/emu/bus/isa/hdc.c)0
-rw-r--r--src/devices/bus/isa/hdc.h (renamed from src/emu/bus/isa/hdc.h)0
-rw-r--r--src/devices/bus/isa/ibm_mfc.c (renamed from src/emu/bus/isa/ibm_mfc.c)0
-rw-r--r--src/devices/bus/isa/ibm_mfc.h (renamed from src/emu/bus/isa/ibm_mfc.h)0
-rw-r--r--src/devices/bus/isa/ide.c (renamed from src/emu/bus/isa/ide.c)0
-rw-r--r--src/devices/bus/isa/ide.h (renamed from src/emu/bus/isa/ide.h)0
-rw-r--r--src/devices/bus/isa/isa.c (renamed from src/emu/bus/isa/isa.c)0
-rw-r--r--src/devices/bus/isa/isa.h (renamed from src/emu/bus/isa/isa.h)0
-rw-r--r--src/devices/bus/isa/isa_cards.c (renamed from src/emu/bus/isa/isa_cards.c)2
-rw-r--r--src/devices/bus/isa/isa_cards.h (renamed from src/emu/bus/isa/isa_cards.h)1
-rw-r--r--src/devices/bus/isa/lpt.c (renamed from src/emu/bus/isa/lpt.c)0
-rw-r--r--src/devices/bus/isa/lpt.h (renamed from src/emu/bus/isa/lpt.h)0
-rw-r--r--src/devices/bus/isa/mach32.c (renamed from src/emu/bus/isa/mach32.c)0
-rw-r--r--src/devices/bus/isa/mach32.h (renamed from src/emu/bus/isa/mach32.h)0
-rw-r--r--src/devices/bus/isa/mc1502_fdc.c (renamed from src/emu/bus/isa/mc1502_fdc.c)0
-rw-r--r--src/devices/bus/isa/mc1502_fdc.h (renamed from src/emu/bus/isa/mc1502_fdc.h)0
-rw-r--r--src/devices/bus/isa/mc1502_rom.c (renamed from src/emu/bus/isa/mc1502_rom.c)0
-rw-r--r--src/devices/bus/isa/mc1502_rom.h (renamed from src/emu/bus/isa/mc1502_rom.h)0
-rw-r--r--src/devices/bus/isa/mda.c (renamed from src/emu/bus/isa/mda.c)0
-rw-r--r--src/devices/bus/isa/mda.h (renamed from src/emu/bus/isa/mda.h)0
-rw-r--r--src/devices/bus/isa/mpu401.c (renamed from src/emu/bus/isa/mpu401.c)0
-rw-r--r--src/devices/bus/isa/mpu401.h (renamed from src/emu/bus/isa/mpu401.h)0
-rw-r--r--src/devices/bus/isa/mufdc.c (renamed from src/emu/bus/isa/mufdc.c)0
-rw-r--r--src/devices/bus/isa/mufdc.h (renamed from src/emu/bus/isa/mufdc.h)0
-rw-r--r--src/devices/bus/isa/ne1000.c (renamed from src/emu/bus/isa/ne1000.c)0
-rw-r--r--src/devices/bus/isa/ne1000.h (renamed from src/emu/bus/isa/ne1000.h)0
-rw-r--r--src/devices/bus/isa/ne2000.c (renamed from src/emu/bus/isa/ne2000.c)0
-rw-r--r--src/devices/bus/isa/ne2000.h (renamed from src/emu/bus/isa/ne2000.h)0
-rw-r--r--src/devices/bus/isa/num9rev.c (renamed from src/emu/bus/isa/num9rev.c)0
-rw-r--r--src/devices/bus/isa/num9rev.h (renamed from src/emu/bus/isa/num9rev.h)0
-rw-r--r--src/devices/bus/isa/omti8621.c (renamed from src/emu/bus/isa/omti8621.c)0
-rw-r--r--src/devices/bus/isa/omti8621.h (renamed from src/emu/bus/isa/omti8621.h)0
-rw-r--r--src/devices/bus/isa/p1_fdc.c (renamed from src/emu/bus/isa/p1_fdc.c)0
-rw-r--r--src/devices/bus/isa/p1_fdc.h (renamed from src/emu/bus/isa/p1_fdc.h)0
-rw-r--r--src/devices/bus/isa/p1_hdc.c (renamed from src/emu/bus/isa/p1_hdc.c)0
-rw-r--r--src/devices/bus/isa/p1_hdc.h (renamed from src/emu/bus/isa/p1_hdc.h)0
-rw-r--r--src/devices/bus/isa/p1_rom.c (renamed from src/emu/bus/isa/p1_rom.c)0
-rw-r--r--src/devices/bus/isa/p1_rom.h (renamed from src/emu/bus/isa/p1_rom.h)0
-rw-r--r--src/devices/bus/isa/pc1640_iga.c (renamed from src/emu/bus/isa/pc1640_iga.c)0
-rw-r--r--src/devices/bus/isa/pc1640_iga.h (renamed from src/emu/bus/isa/pc1640_iga.h)0
-rw-r--r--src/devices/bus/isa/pds.c (renamed from src/emu/bus/isa/pds.c)0
-rw-r--r--src/devices/bus/isa/pds.h (renamed from src/emu/bus/isa/pds.h)0
-rw-r--r--src/devices/bus/isa/pgc.c365
-rw-r--r--src/devices/bus/isa/pgc.h69
-rw-r--r--src/devices/bus/isa/s3virge.c (renamed from src/emu/bus/isa/s3virge.c)0
-rw-r--r--src/devices/bus/isa/s3virge.h (renamed from src/emu/bus/isa/s3virge.h)0
-rw-r--r--src/devices/bus/isa/sb16.c (renamed from src/emu/bus/isa/sb16.c)0
-rw-r--r--src/devices/bus/isa/sb16.h (renamed from src/emu/bus/isa/sb16.h)0
-rw-r--r--src/devices/bus/isa/sblaster.c (renamed from src/emu/bus/isa/sblaster.c)4
-rw-r--r--src/devices/bus/isa/sblaster.h (renamed from src/emu/bus/isa/sblaster.h)0
-rw-r--r--src/devices/bus/isa/sc499.c (renamed from src/emu/bus/isa/sc499.c)0
-rw-r--r--src/devices/bus/isa/sc499.h (renamed from src/emu/bus/isa/sc499.h)0
-rw-r--r--src/devices/bus/isa/side116.c (renamed from src/emu/bus/isa/side116.c)0
-rw-r--r--src/devices/bus/isa/side116.h (renamed from src/emu/bus/isa/side116.h)0
-rw-r--r--src/devices/bus/isa/ssi2001.c (renamed from src/emu/bus/isa/ssi2001.c)0
-rw-r--r--src/devices/bus/isa/ssi2001.h (renamed from src/emu/bus/isa/ssi2001.h)0
-rw-r--r--src/devices/bus/isa/stereo_fx.c (renamed from src/emu/bus/isa/stereo_fx.c)0
-rw-r--r--src/devices/bus/isa/stereo_fx.h (renamed from src/emu/bus/isa/stereo_fx.h)0
-rw-r--r--src/devices/bus/isa/svga_cirrus.c (renamed from src/emu/bus/isa/svga_cirrus.c)0
-rw-r--r--src/devices/bus/isa/svga_cirrus.h (renamed from src/emu/bus/isa/svga_cirrus.h)0
-rw-r--r--src/devices/bus/isa/svga_s3.c (renamed from src/emu/bus/isa/svga_s3.c)0
-rw-r--r--src/devices/bus/isa/svga_s3.h (renamed from src/emu/bus/isa/svga_s3.h)0
-rw-r--r--src/devices/bus/isa/svga_trident.c (renamed from src/emu/bus/isa/svga_trident.c)0
-rw-r--r--src/devices/bus/isa/svga_trident.h (renamed from src/emu/bus/isa/svga_trident.h)0
-rw-r--r--src/devices/bus/isa/svga_tseng.c (renamed from src/emu/bus/isa/svga_tseng.c)0
-rw-r--r--src/devices/bus/isa/svga_tseng.h (renamed from src/emu/bus/isa/svga_tseng.h)0
-rw-r--r--src/devices/bus/isa/trident.c (renamed from src/emu/bus/isa/trident.c)0
-rw-r--r--src/devices/bus/isa/trident.h (renamed from src/emu/bus/isa/trident.h)0
-rw-r--r--src/devices/bus/isa/vga.c (renamed from src/emu/bus/isa/vga.c)0
-rw-r--r--src/devices/bus/isa/vga.h (renamed from src/emu/bus/isa/vga.h)0
-rw-r--r--src/devices/bus/isa/vga_ati.c (renamed from src/emu/bus/isa/vga_ati.c)0
-rw-r--r--src/devices/bus/isa/vga_ati.h (renamed from src/emu/bus/isa/vga_ati.h)0
-rw-r--r--src/devices/bus/isa/wd1002a_wx1.c (renamed from src/emu/bus/isa/wd1002a_wx1.c)0
-rw-r--r--src/devices/bus/isa/wd1002a_wx1.h (renamed from src/emu/bus/isa/wd1002a_wx1.h)0
-rw-r--r--src/devices/bus/isa/wdxt_gen.c (renamed from src/emu/bus/isa/wdxt_gen.c)0
-rw-r--r--src/devices/bus/isa/wdxt_gen.h (renamed from src/emu/bus/isa/wdxt_gen.h)0
-rw-r--r--src/devices/bus/isa/xsu_cards.c (renamed from src/emu/bus/isa/xsu_cards.c)0
-rw-r--r--src/devices/bus/isa/xsu_cards.h (renamed from src/emu/bus/isa/xsu_cards.h)0
-rw-r--r--src/devices/bus/isa/xtide.c (renamed from src/emu/bus/isa/xtide.c)0
-rw-r--r--src/devices/bus/isa/xtide.h (renamed from src/emu/bus/isa/xtide.h)0
-rw-r--r--src/devices/bus/isbx/compis_fdc.c (renamed from src/emu/bus/isbx/compis_fdc.c)0
-rw-r--r--src/devices/bus/isbx/compis_fdc.h (renamed from src/emu/bus/isbx/compis_fdc.h)0
-rw-r--r--src/devices/bus/isbx/isbc_218a.c (renamed from src/emu/bus/isbx/isbc_218a.c)0
-rw-r--r--src/devices/bus/isbx/isbc_218a.h (renamed from src/emu/bus/isbx/isbc_218a.h)0
-rw-r--r--src/devices/bus/isbx/isbx.c (renamed from src/emu/bus/isbx/isbx.c)0
-rw-r--r--src/devices/bus/isbx/isbx.h (renamed from src/emu/bus/isbx/isbx.h)0
-rw-r--r--src/devices/bus/kc/d002.c (renamed from src/emu/bus/kc/d002.c)0
-rw-r--r--src/devices/bus/kc/d002.h (renamed from src/emu/bus/kc/d002.h)0
-rw-r--r--src/devices/bus/kc/d004.c (renamed from src/emu/bus/kc/d004.c)0
-rw-r--r--src/devices/bus/kc/d004.h (renamed from src/emu/bus/kc/d004.h)0
-rw-r--r--src/devices/bus/kc/kc.c (renamed from src/emu/bus/kc/kc.c)0
-rw-r--r--src/devices/bus/kc/kc.h (renamed from src/emu/bus/kc/kc.h)0
-rw-r--r--src/devices/bus/kc/ram.c (renamed from src/emu/bus/kc/ram.c)0
-rw-r--r--src/devices/bus/kc/ram.h (renamed from src/emu/bus/kc/ram.h)0
-rw-r--r--src/devices/bus/kc/rom.c (renamed from src/emu/bus/kc/rom.c)0
-rw-r--r--src/devices/bus/kc/rom.h (renamed from src/emu/bus/kc/rom.h)0
-rw-r--r--src/devices/bus/lpci/cirrus.c (renamed from src/emu/bus/lpci/cirrus.c)0
-rw-r--r--src/devices/bus/lpci/cirrus.h (renamed from src/emu/bus/lpci/cirrus.h)0
-rw-r--r--src/devices/bus/lpci/i82371ab.c (renamed from src/emu/bus/lpci/i82371ab.c)0
-rw-r--r--src/devices/bus/lpci/i82371ab.h (renamed from src/emu/bus/lpci/i82371ab.h)0
-rw-r--r--src/devices/bus/lpci/i82371sb.c (renamed from src/emu/bus/lpci/i82371sb.c)0
-rw-r--r--src/devices/bus/lpci/i82371sb.h (renamed from src/emu/bus/lpci/i82371sb.h)0
-rw-r--r--src/devices/bus/lpci/i82439tx.c (renamed from src/emu/bus/lpci/i82439tx.c)0
-rw-r--r--src/devices/bus/lpci/i82439tx.h (renamed from src/emu/bus/lpci/i82439tx.h)0
-rw-r--r--src/devices/bus/lpci/mpc105.c (renamed from src/emu/bus/lpci/mpc105.c)0
-rw-r--r--src/devices/bus/lpci/mpc105.h (renamed from src/emu/bus/lpci/mpc105.h)0
-rw-r--r--src/devices/bus/lpci/northbridge.c (renamed from src/emu/bus/lpci/northbridge.c)0
-rw-r--r--src/devices/bus/lpci/northbridge.h (renamed from src/emu/bus/lpci/northbridge.h)0
-rw-r--r--src/devices/bus/lpci/pci.c (renamed from src/emu/bus/lpci/pci.c)0
-rw-r--r--src/devices/bus/lpci/pci.h (renamed from src/emu/bus/lpci/pci.h)0
-rw-r--r--src/devices/bus/lpci/southbridge.c (renamed from src/emu/bus/lpci/southbridge.c)0
-rw-r--r--src/devices/bus/lpci/southbridge.h (renamed from src/emu/bus/lpci/southbridge.h)0
-rw-r--r--src/devices/bus/lpci/vt82c505.c96
-rw-r--r--src/devices/bus/lpci/vt82c505.h38
-rw-r--r--src/devices/bus/macpds/macpds.c (renamed from src/emu/bus/macpds/macpds.c)0
-rw-r--r--src/devices/bus/macpds/macpds.h (renamed from src/emu/bus/macpds/macpds.h)0
-rw-r--r--src/devices/bus/macpds/pds_tpdfpd.c (renamed from src/emu/bus/macpds/pds_tpdfpd.c)0
-rw-r--r--src/devices/bus/macpds/pds_tpdfpd.h (renamed from src/emu/bus/macpds/pds_tpdfpd.h)0
-rw-r--r--src/devices/bus/megadrive/eeprom.c (renamed from src/emu/bus/megadrive/eeprom.c)0
-rw-r--r--src/devices/bus/megadrive/eeprom.h (renamed from src/emu/bus/megadrive/eeprom.h)0
-rw-r--r--src/devices/bus/megadrive/ggenie.c (renamed from src/emu/bus/megadrive/ggenie.c)0
-rw-r--r--src/devices/bus/megadrive/ggenie.h (renamed from src/emu/bus/megadrive/ggenie.h)0
-rw-r--r--src/devices/bus/megadrive/jcart.c (renamed from src/emu/bus/megadrive/jcart.c)0
-rw-r--r--src/devices/bus/megadrive/jcart.h (renamed from src/emu/bus/megadrive/jcart.h)0
-rw-r--r--src/devices/bus/megadrive/md_carts.c (renamed from src/emu/bus/megadrive/md_carts.c)0
-rw-r--r--src/devices/bus/megadrive/md_carts.h (renamed from src/emu/bus/megadrive/md_carts.h)0
-rw-r--r--src/devices/bus/megadrive/md_slot.c (renamed from src/emu/bus/megadrive/md_slot.c)0
-rw-r--r--src/devices/bus/megadrive/md_slot.h (renamed from src/emu/bus/megadrive/md_slot.h)0
-rw-r--r--src/devices/bus/megadrive/rom.c (renamed from src/emu/bus/megadrive/rom.c)0
-rw-r--r--src/devices/bus/megadrive/rom.h (renamed from src/emu/bus/megadrive/rom.h)0
-rw-r--r--src/devices/bus/megadrive/sk.c (renamed from src/emu/bus/megadrive/sk.c)0
-rw-r--r--src/devices/bus/megadrive/sk.h (renamed from src/emu/bus/megadrive/sk.h)0
-rw-r--r--src/devices/bus/megadrive/stm95.c (renamed from src/emu/bus/megadrive/stm95.c)0
-rw-r--r--src/devices/bus/megadrive/stm95.h (renamed from src/emu/bus/megadrive/stm95.h)0
-rw-r--r--src/devices/bus/megadrive/svp.c (renamed from src/emu/bus/megadrive/svp.c)0
-rw-r--r--src/devices/bus/megadrive/svp.h (renamed from src/emu/bus/megadrive/svp.h)0
-rw-r--r--src/devices/bus/midi/midi.c (renamed from src/emu/bus/midi/midi.c)0
-rw-r--r--src/devices/bus/midi/midi.h (renamed from src/emu/bus/midi/midi.h)0
-rw-r--r--src/devices/bus/midi/midiinport.c (renamed from src/emu/bus/midi/midiinport.c)0
-rw-r--r--src/devices/bus/midi/midiinport.h (renamed from src/emu/bus/midi/midiinport.h)0
-rw-r--r--src/devices/bus/midi/midioutport.c (renamed from src/emu/bus/midi/midioutport.c)0
-rw-r--r--src/devices/bus/midi/midioutport.h (renamed from src/emu/bus/midi/midioutport.h)0
-rw-r--r--src/devices/bus/msx_cart/arc.c (renamed from src/emu/bus/msx_cart/arc.c)0
-rw-r--r--src/devices/bus/msx_cart/arc.h (renamed from src/emu/bus/msx_cart/arc.h)0
-rw-r--r--src/devices/bus/msx_cart/ascii.c (renamed from src/emu/bus/msx_cart/ascii.c)92
-rw-r--r--src/devices/bus/msx_cart/ascii.h (renamed from src/emu/bus/msx_cart/ascii.h)24
-rw-r--r--src/devices/bus/msx_cart/bm_012.c (renamed from src/emu/bus/msx_cart/bm_012.c)0
-rw-r--r--src/devices/bus/msx_cart/bm_012.h (renamed from src/emu/bus/msx_cart/bm_012.h)0
-rw-r--r--src/devices/bus/msx_cart/cartridge.c (renamed from src/emu/bus/msx_cart/cartridge.c)3
-rw-r--r--src/devices/bus/msx_cart/cartridge.h (renamed from src/emu/bus/msx_cart/cartridge.h)0
-rw-r--r--src/devices/bus/msx_cart/crossblaim.c (renamed from src/emu/bus/msx_cart/crossblaim.c)0
-rw-r--r--src/devices/bus/msx_cart/crossblaim.h (renamed from src/emu/bus/msx_cart/crossblaim.h)0
-rw-r--r--src/devices/bus/msx_cart/disk.c (renamed from src/emu/bus/msx_cart/disk.c)0
-rw-r--r--src/devices/bus/msx_cart/disk.h (renamed from src/emu/bus/msx_cart/disk.h)0
-rw-r--r--src/devices/bus/msx_cart/dooly.c (renamed from src/emu/bus/msx_cart/dooly.c)0
-rw-r--r--src/devices/bus/msx_cart/dooly.h (renamed from src/emu/bus/msx_cart/dooly.h)0
-rw-r--r--src/devices/bus/msx_cart/fmpac.c (renamed from src/emu/bus/msx_cart/fmpac.c)0
-rw-r--r--src/devices/bus/msx_cart/fmpac.h (renamed from src/emu/bus/msx_cart/fmpac.h)0
-rw-r--r--src/devices/bus/msx_cart/fs_sr022.c71
-rw-r--r--src/devices/bus/msx_cart/fs_sr022.h33
-rw-r--r--src/devices/bus/msx_cart/halnote.c (renamed from src/emu/bus/msx_cart/halnote.c)0
-rw-r--r--src/devices/bus/msx_cart/halnote.h (renamed from src/emu/bus/msx_cart/halnote.h)0
-rw-r--r--src/devices/bus/msx_cart/hfox.c (renamed from src/emu/bus/msx_cart/hfox.c)0
-rw-r--r--src/devices/bus/msx_cart/hfox.h (renamed from src/emu/bus/msx_cart/hfox.h)0
-rw-r--r--src/devices/bus/msx_cart/holy_quran.c (renamed from src/emu/bus/msx_cart/holy_quran.c)0
-rw-r--r--src/devices/bus/msx_cart/holy_quran.h (renamed from src/emu/bus/msx_cart/holy_quran.h)0
-rw-r--r--src/devices/bus/msx_cart/konami.c (renamed from src/emu/bus/msx_cart/konami.c)2
-rw-r--r--src/devices/bus/msx_cart/konami.h (renamed from src/emu/bus/msx_cart/konami.h)0
-rw-r--r--src/devices/bus/msx_cart/korean.c (renamed from src/emu/bus/msx_cart/korean.c)0
-rw-r--r--src/devices/bus/msx_cart/korean.h (renamed from src/emu/bus/msx_cart/korean.h)0
-rw-r--r--src/devices/bus/msx_cart/majutsushi.c (renamed from src/emu/bus/msx_cart/majutsushi.c)0
-rw-r--r--src/devices/bus/msx_cart/majutsushi.h (renamed from src/emu/bus/msx_cart/majutsushi.h)0
-rw-r--r--src/devices/bus/msx_cart/moonsound.c (renamed from src/emu/bus/msx_cart/moonsound.c)8
-rw-r--r--src/devices/bus/msx_cart/moonsound.h (renamed from src/emu/bus/msx_cart/moonsound.h)1
-rw-r--r--src/devices/bus/msx_cart/msx_audio.c (renamed from src/emu/bus/msx_cart/msx_audio.c)0
-rw-r--r--src/devices/bus/msx_cart/msx_audio.h (renamed from src/emu/bus/msx_cart/msx_audio.h)0
-rw-r--r--src/devices/bus/msx_cart/msx_audio_kb.c (renamed from src/emu/bus/msx_cart/msx_audio_kb.c)0
-rw-r--r--src/devices/bus/msx_cart/msx_audio_kb.h (renamed from src/emu/bus/msx_cart/msx_audio_kb.h)0
-rw-r--r--src/devices/bus/msx_cart/msxdos2.c (renamed from src/emu/bus/msx_cart/msxdos2.c)0
-rw-r--r--src/devices/bus/msx_cart/msxdos2.h (renamed from src/emu/bus/msx_cart/msxdos2.h)0
-rw-r--r--src/devices/bus/msx_cart/nomapper.c (renamed from src/emu/bus/msx_cart/nomapper.c)0
-rw-r--r--src/devices/bus/msx_cart/nomapper.h (renamed from src/emu/bus/msx_cart/nomapper.h)0
-rw-r--r--src/devices/bus/msx_cart/rtype.c (renamed from src/emu/bus/msx_cart/rtype.c)0
-rw-r--r--src/devices/bus/msx_cart/rtype.h (renamed from src/emu/bus/msx_cart/rtype.h)0
-rw-r--r--src/devices/bus/msx_cart/super_swangi.c (renamed from src/emu/bus/msx_cart/super_swangi.c)0
-rw-r--r--src/devices/bus/msx_cart/super_swangi.h (renamed from src/emu/bus/msx_cart/super_swangi.h)0
-rw-r--r--src/devices/bus/msx_cart/superloderunner.c (renamed from src/emu/bus/msx_cart/superloderunner.c)0
-rw-r--r--src/devices/bus/msx_cart/superloderunner.h (renamed from src/emu/bus/msx_cart/superloderunner.h)0
-rw-r--r--src/devices/bus/msx_cart/yamaha.c (renamed from src/emu/bus/msx_cart/yamaha.c)0
-rw-r--r--src/devices/bus/msx_cart/yamaha.h (renamed from src/emu/bus/msx_cart/yamaha.h)0
-rw-r--r--src/devices/bus/msx_slot/bunsetsu.c (renamed from src/emu/bus/msx_slot/bunsetsu.c)0
-rw-r--r--src/devices/bus/msx_slot/bunsetsu.h (renamed from src/emu/bus/msx_slot/bunsetsu.h)0
-rw-r--r--src/devices/bus/msx_slot/cartridge.c (renamed from src/emu/bus/msx_slot/cartridge.c)0
-rw-r--r--src/devices/bus/msx_slot/cartridge.h (renamed from src/emu/bus/msx_slot/cartridge.h)0
-rw-r--r--src/devices/bus/msx_slot/disk.c (renamed from src/emu/bus/msx_slot/disk.c)0
-rw-r--r--src/devices/bus/msx_slot/disk.h (renamed from src/emu/bus/msx_slot/disk.h)0
-rw-r--r--src/devices/bus/msx_slot/fs4600.c (renamed from src/emu/bus/msx_slot/fs4600.c)0
-rw-r--r--src/devices/bus/msx_slot/fs4600.h (renamed from src/emu/bus/msx_slot/fs4600.h)0
-rw-r--r--src/devices/bus/msx_slot/music.c (renamed from src/emu/bus/msx_slot/music.c)0
-rw-r--r--src/devices/bus/msx_slot/music.h (renamed from src/emu/bus/msx_slot/music.h)0
-rw-r--r--src/devices/bus/msx_slot/panasonic08.c (renamed from src/emu/bus/msx_slot/panasonic08.c)0
-rw-r--r--src/devices/bus/msx_slot/panasonic08.h (renamed from src/emu/bus/msx_slot/panasonic08.h)0
-rw-r--r--src/devices/bus/msx_slot/ram.c (renamed from src/emu/bus/msx_slot/ram.c)0
-rw-r--r--src/devices/bus/msx_slot/ram.h (renamed from src/emu/bus/msx_slot/ram.h)0
-rw-r--r--src/devices/bus/msx_slot/ram_mm.c (renamed from src/emu/bus/msx_slot/ram_mm.c)0
-rw-r--r--src/devices/bus/msx_slot/ram_mm.h (renamed from src/emu/bus/msx_slot/ram_mm.h)0
-rw-r--r--src/devices/bus/msx_slot/rom.c (renamed from src/emu/bus/msx_slot/rom.c)0
-rw-r--r--src/devices/bus/msx_slot/rom.h (renamed from src/emu/bus/msx_slot/rom.h)0
-rw-r--r--src/devices/bus/msx_slot/slot.c (renamed from src/emu/bus/msx_slot/slot.c)0
-rw-r--r--src/devices/bus/msx_slot/slot.h (renamed from src/emu/bus/msx_slot/slot.h)0
-rw-r--r--src/devices/bus/msx_slot/sony08.c (renamed from src/emu/bus/msx_slot/sony08.c)0
-rw-r--r--src/devices/bus/msx_slot/sony08.h (renamed from src/emu/bus/msx_slot/sony08.h)0
-rw-r--r--src/devices/bus/nasbus/avc.c (renamed from src/emu/bus/nasbus/avc.c)17
-rw-r--r--src/devices/bus/nasbus/avc.h (renamed from src/emu/bus/nasbus/avc.h)3
-rw-r--r--src/devices/bus/nasbus/cards.c (renamed from src/emu/bus/nasbus/cards.c)0
-rw-r--r--src/devices/bus/nasbus/cards.h (renamed from src/emu/bus/nasbus/cards.h)0
-rw-r--r--src/devices/bus/nasbus/floppy.c (renamed from src/emu/bus/nasbus/floppy.c)0
-rw-r--r--src/devices/bus/nasbus/floppy.h (renamed from src/emu/bus/nasbus/floppy.h)0
-rw-r--r--src/devices/bus/nasbus/nasbus.c (renamed from src/emu/bus/nasbus/nasbus.c)0
-rw-r--r--src/devices/bus/nasbus/nasbus.h (renamed from src/emu/bus/nasbus/nasbus.h)0
-rw-r--r--src/devices/bus/neogeo/banked_cart.c (renamed from src/emu/bus/neogeo/banked_cart.c)0
-rw-r--r--src/devices/bus/neogeo/banked_cart.h (renamed from src/emu/bus/neogeo/banked_cart.h)0
-rw-r--r--src/devices/bus/neogeo/bootleg_cart.c (renamed from src/emu/bus/neogeo/bootleg_cart.c)0
-rw-r--r--src/devices/bus/neogeo/bootleg_cart.h (renamed from src/emu/bus/neogeo/bootleg_cart.h)0
-rw-r--r--src/devices/bus/neogeo/bootleg_hybrid_cart.c (renamed from src/emu/bus/neogeo/bootleg_hybrid_cart.c)0
-rw-r--r--src/devices/bus/neogeo/bootleg_hybrid_cart.h (renamed from src/emu/bus/neogeo/bootleg_hybrid_cart.h)0
-rw-r--r--src/devices/bus/neogeo/bootleg_prot.c (renamed from src/emu/bus/neogeo/bootleg_prot.c)0
-rw-r--r--src/devices/bus/neogeo/bootleg_prot.h (renamed from src/emu/bus/neogeo/bootleg_prot.h)0
-rw-r--r--src/devices/bus/neogeo/cmc_cart.c (renamed from src/emu/bus/neogeo/cmc_cart.c)0
-rw-r--r--src/devices/bus/neogeo/cmc_cart.h (renamed from src/emu/bus/neogeo/cmc_cart.h)0
-rw-r--r--src/devices/bus/neogeo/cmc_prot.c (renamed from src/emu/bus/neogeo/cmc_prot.c)0
-rw-r--r--src/devices/bus/neogeo/cmc_prot.h (renamed from src/emu/bus/neogeo/cmc_prot.h)0
-rw-r--r--src/devices/bus/neogeo/fatfury2_cart.c (renamed from src/emu/bus/neogeo/fatfury2_cart.c)0
-rw-r--r--src/devices/bus/neogeo/fatfury2_cart.h (renamed from src/emu/bus/neogeo/fatfury2_cart.h)0
-rw-r--r--src/devices/bus/neogeo/fatfury2_prot.c (renamed from src/emu/bus/neogeo/fatfury2_prot.c)0
-rw-r--r--src/devices/bus/neogeo/fatfury2_prot.h (renamed from src/emu/bus/neogeo/fatfury2_prot.h)0
-rw-r--r--src/devices/bus/neogeo/kof2002_cart.c (renamed from src/emu/bus/neogeo/kof2002_cart.c)0
-rw-r--r--src/devices/bus/neogeo/kof2002_cart.h (renamed from src/emu/bus/neogeo/kof2002_cart.h)0
-rw-r--r--src/devices/bus/neogeo/kof2002_prot.c (renamed from src/emu/bus/neogeo/kof2002_prot.c)0
-rw-r--r--src/devices/bus/neogeo/kof2002_prot.h (renamed from src/emu/bus/neogeo/kof2002_prot.h)0
-rw-r--r--src/devices/bus/neogeo/kof98_cart.c (renamed from src/emu/bus/neogeo/kof98_cart.c)0
-rw-r--r--src/devices/bus/neogeo/kof98_cart.h (renamed from src/emu/bus/neogeo/kof98_cart.h)0
-rw-r--r--src/devices/bus/neogeo/kof98_prot.c (renamed from src/emu/bus/neogeo/kof98_prot.c)0
-rw-r--r--src/devices/bus/neogeo/kof98_prot.h (renamed from src/emu/bus/neogeo/kof98_prot.h)0
-rw-r--r--src/devices/bus/neogeo/kog_prot.c (renamed from src/emu/bus/neogeo/kog_prot.c)0
-rw-r--r--src/devices/bus/neogeo/kog_prot.h (renamed from src/emu/bus/neogeo/kog_prot.h)0
-rw-r--r--src/devices/bus/neogeo/mslugx_cart.c (renamed from src/emu/bus/neogeo/mslugx_cart.c)0
-rw-r--r--src/devices/bus/neogeo/mslugx_cart.h (renamed from src/emu/bus/neogeo/mslugx_cart.h)0
-rw-r--r--src/devices/bus/neogeo/mslugx_prot.c (renamed from src/emu/bus/neogeo/mslugx_prot.c)0
-rw-r--r--src/devices/bus/neogeo/mslugx_prot.h (renamed from src/emu/bus/neogeo/mslugx_prot.h)0
-rw-r--r--src/devices/bus/neogeo/neogeo_carts.c (renamed from src/emu/bus/neogeo/neogeo_carts.c)0
-rw-r--r--src/devices/bus/neogeo/neogeo_carts.h (renamed from src/emu/bus/neogeo/neogeo_carts.h)0
-rw-r--r--src/devices/bus/neogeo/neogeo_helper.c (renamed from src/emu/bus/neogeo/neogeo_helper.c)0
-rw-r--r--src/devices/bus/neogeo/neogeo_helper.h (renamed from src/emu/bus/neogeo/neogeo_helper.h)0
-rw-r--r--src/devices/bus/neogeo/neogeo_intf.c (renamed from src/emu/bus/neogeo/neogeo_intf.c)0
-rw-r--r--src/devices/bus/neogeo/neogeo_intf.h (renamed from src/emu/bus/neogeo/neogeo_intf.h)0
-rw-r--r--src/devices/bus/neogeo/neogeo_slot.c (renamed from src/emu/bus/neogeo/neogeo_slot.c)0
-rw-r--r--src/devices/bus/neogeo/neogeo_slot.h (renamed from src/emu/bus/neogeo/neogeo_slot.h)0
-rw-r--r--src/devices/bus/neogeo/pcm2_cart.c (renamed from src/emu/bus/neogeo/pcm2_cart.c)0
-rw-r--r--src/devices/bus/neogeo/pcm2_cart.h (renamed from src/emu/bus/neogeo/pcm2_cart.h)0
-rw-r--r--src/devices/bus/neogeo/pcm2_prot.c (renamed from src/emu/bus/neogeo/pcm2_prot.c)0
-rw-r--r--src/devices/bus/neogeo/pcm2_prot.h (renamed from src/emu/bus/neogeo/pcm2_prot.h)0
-rw-r--r--src/devices/bus/neogeo/pvc_cart.c (renamed from src/emu/bus/neogeo/pvc_cart.c)0
-rw-r--r--src/devices/bus/neogeo/pvc_cart.h (renamed from src/emu/bus/neogeo/pvc_cart.h)0
-rw-r--r--src/devices/bus/neogeo/pvc_prot.c (renamed from src/emu/bus/neogeo/pvc_prot.c)0
-rw-r--r--src/devices/bus/neogeo/pvc_prot.h (renamed from src/emu/bus/neogeo/pvc_prot.h)0
-rw-r--r--src/devices/bus/neogeo/rom.c (renamed from src/emu/bus/neogeo/rom.c)0
-rw-r--r--src/devices/bus/neogeo/rom.h (renamed from src/emu/bus/neogeo/rom.h)0
-rw-r--r--src/devices/bus/neogeo/sbp_prot.c (renamed from src/emu/bus/neogeo/sbp_prot.c)0
-rw-r--r--src/devices/bus/neogeo/sbp_prot.h (renamed from src/emu/bus/neogeo/sbp_prot.h)0
-rw-r--r--src/devices/bus/neogeo/sma_cart.c (renamed from src/emu/bus/neogeo/sma_cart.c)0
-rw-r--r--src/devices/bus/neogeo/sma_cart.h (renamed from src/emu/bus/neogeo/sma_cart.h)0
-rw-r--r--src/devices/bus/neogeo/sma_prot.c (renamed from src/emu/bus/neogeo/sma_prot.c)0
-rw-r--r--src/devices/bus/neogeo/sma_prot.h (renamed from src/emu/bus/neogeo/sma_prot.h)0
-rw-r--r--src/devices/bus/nes/2a03pur.c (renamed from src/emu/bus/nes/2a03pur.c)0
-rw-r--r--src/devices/bus/nes/2a03pur.h (renamed from src/emu/bus/nes/2a03pur.h)0
-rw-r--r--src/devices/bus/nes/act53.c (renamed from src/emu/bus/nes/act53.c)0
-rw-r--r--src/devices/bus/nes/act53.h (renamed from src/emu/bus/nes/act53.h)0
-rw-r--r--src/devices/bus/nes/aladdin.c (renamed from src/emu/bus/nes/aladdin.c)0
-rw-r--r--src/devices/bus/nes/aladdin.h (renamed from src/emu/bus/nes/aladdin.h)0
-rw-r--r--src/devices/bus/nes/ave.c (renamed from src/emu/bus/nes/ave.c)0
-rw-r--r--src/devices/bus/nes/ave.h (renamed from src/emu/bus/nes/ave.h)0
-rw-r--r--src/devices/bus/nes/bandai.c (renamed from src/emu/bus/nes/bandai.c)0
-rw-r--r--src/devices/bus/nes/bandai.h (renamed from src/emu/bus/nes/bandai.h)0
-rw-r--r--src/devices/bus/nes/benshieng.c (renamed from src/emu/bus/nes/benshieng.c)0
-rw-r--r--src/devices/bus/nes/benshieng.h (renamed from src/emu/bus/nes/benshieng.h)0
-rw-r--r--src/devices/bus/nes/bootleg.c (renamed from src/emu/bus/nes/bootleg.c)0
-rw-r--r--src/devices/bus/nes/bootleg.h (renamed from src/emu/bus/nes/bootleg.h)0
-rw-r--r--src/devices/bus/nes/camerica.c (renamed from src/emu/bus/nes/camerica.c)0
-rw-r--r--src/devices/bus/nes/camerica.h (renamed from src/emu/bus/nes/camerica.h)0
-rw-r--r--src/devices/bus/nes/cne.c (renamed from src/emu/bus/nes/cne.c)0
-rw-r--r--src/devices/bus/nes/cne.h (renamed from src/emu/bus/nes/cne.h)0
-rw-r--r--src/devices/bus/nes/cony.c (renamed from src/emu/bus/nes/cony.c)0
-rw-r--r--src/devices/bus/nes/cony.h (renamed from src/emu/bus/nes/cony.h)0
-rw-r--r--src/devices/bus/nes/datach.c (renamed from src/emu/bus/nes/datach.c)0
-rw-r--r--src/devices/bus/nes/datach.h (renamed from src/emu/bus/nes/datach.h)0
-rw-r--r--src/devices/bus/nes/discrete.c (renamed from src/emu/bus/nes/discrete.c)0
-rw-r--r--src/devices/bus/nes/discrete.h (renamed from src/emu/bus/nes/discrete.h)0
-rw-r--r--src/devices/bus/nes/disksys.c (renamed from src/emu/bus/nes/disksys.c)0
-rw-r--r--src/devices/bus/nes/disksys.h (renamed from src/emu/bus/nes/disksys.h)0
-rw-r--r--src/devices/bus/nes/event.c (renamed from src/emu/bus/nes/event.c)0
-rw-r--r--src/devices/bus/nes/event.h (renamed from src/emu/bus/nes/event.h)0
-rw-r--r--src/devices/bus/nes/ggenie.c (renamed from src/emu/bus/nes/ggenie.c)0
-rw-r--r--src/devices/bus/nes/ggenie.h (renamed from src/emu/bus/nes/ggenie.h)0
-rw-r--r--src/devices/bus/nes/henggedianzi.c (renamed from src/emu/bus/nes/henggedianzi.c)0
-rw-r--r--src/devices/bus/nes/henggedianzi.h (renamed from src/emu/bus/nes/henggedianzi.h)0
-rw-r--r--src/devices/bus/nes/hes.c (renamed from src/emu/bus/nes/hes.c)0
-rw-r--r--src/devices/bus/nes/hes.h (renamed from src/emu/bus/nes/hes.h)0
-rw-r--r--src/devices/bus/nes/hosenkan.c (renamed from src/emu/bus/nes/hosenkan.c)0
-rw-r--r--src/devices/bus/nes/hosenkan.h (renamed from src/emu/bus/nes/hosenkan.h)0
-rw-r--r--src/devices/bus/nes/irem.c (renamed from src/emu/bus/nes/irem.c)0
-rw-r--r--src/devices/bus/nes/irem.h (renamed from src/emu/bus/nes/irem.h)0
-rw-r--r--src/devices/bus/nes/jaleco.c (renamed from src/emu/bus/nes/jaleco.c)0
-rw-r--r--src/devices/bus/nes/jaleco.h (renamed from src/emu/bus/nes/jaleco.h)0
-rw-r--r--src/devices/bus/nes/jy.c (renamed from src/emu/bus/nes/jy.c)0
-rw-r--r--src/devices/bus/nes/jy.h (renamed from src/emu/bus/nes/jy.h)0
-rw-r--r--src/devices/bus/nes/kaiser.c (renamed from src/emu/bus/nes/kaiser.c)0
-rw-r--r--src/devices/bus/nes/kaiser.h (renamed from src/emu/bus/nes/kaiser.h)0
-rw-r--r--src/devices/bus/nes/karastudio.c (renamed from src/emu/bus/nes/karastudio.c)0
-rw-r--r--src/devices/bus/nes/karastudio.h (renamed from src/emu/bus/nes/karastudio.h)0
-rw-r--r--src/devices/bus/nes/konami.c (renamed from src/emu/bus/nes/konami.c)0
-rw-r--r--src/devices/bus/nes/konami.h (renamed from src/emu/bus/nes/konami.h)0
-rw-r--r--src/devices/bus/nes/legacy.c (renamed from src/emu/bus/nes/legacy.c)0
-rw-r--r--src/devices/bus/nes/legacy.h (renamed from src/emu/bus/nes/legacy.h)0
-rw-r--r--src/devices/bus/nes/mmc1.c (renamed from src/emu/bus/nes/mmc1.c)0
-rw-r--r--src/devices/bus/nes/mmc1.h (renamed from src/emu/bus/nes/mmc1.h)0
-rw-r--r--src/devices/bus/nes/mmc2.c (renamed from src/emu/bus/nes/mmc2.c)0
-rw-r--r--src/devices/bus/nes/mmc2.h (renamed from src/emu/bus/nes/mmc2.h)0
-rw-r--r--src/devices/bus/nes/mmc3.c (renamed from src/emu/bus/nes/mmc3.c)0
-rw-r--r--src/devices/bus/nes/mmc3.h (renamed from src/emu/bus/nes/mmc3.h)0
-rw-r--r--src/devices/bus/nes/mmc3_clones.c (renamed from src/emu/bus/nes/mmc3_clones.c)0
-rw-r--r--src/devices/bus/nes/mmc3_clones.h (renamed from src/emu/bus/nes/mmc3_clones.h)0
-rw-r--r--src/devices/bus/nes/mmc5.c (renamed from src/emu/bus/nes/mmc5.c)0
-rw-r--r--src/devices/bus/nes/mmc5.h (renamed from src/emu/bus/nes/mmc5.h)0
-rw-r--r--src/devices/bus/nes/multigame.c (renamed from src/emu/bus/nes/multigame.c)0
-rw-r--r--src/devices/bus/nes/multigame.h (renamed from src/emu/bus/nes/multigame.h)0
-rw-r--r--src/devices/bus/nes/namcot.c (renamed from src/emu/bus/nes/namcot.c)0
-rw-r--r--src/devices/bus/nes/namcot.h (renamed from src/emu/bus/nes/namcot.h)0
-rw-r--r--src/devices/bus/nes/nanjing.c (renamed from src/emu/bus/nes/nanjing.c)0
-rw-r--r--src/devices/bus/nes/nanjing.h (renamed from src/emu/bus/nes/nanjing.h)0
-rw-r--r--src/devices/bus/nes/nes_carts.c (renamed from src/emu/bus/nes/nes_carts.c)0
-rw-r--r--src/devices/bus/nes/nes_carts.h (renamed from src/emu/bus/nes/nes_carts.h)0
-rw-r--r--src/devices/bus/nes/nes_ines.inc (renamed from src/emu/bus/nes/nes_ines.inc)0
-rw-r--r--src/devices/bus/nes/nes_pcb.inc (renamed from src/emu/bus/nes/nes_pcb.inc)0
-rw-r--r--src/devices/bus/nes/nes_slot.c (renamed from src/emu/bus/nes/nes_slot.c)0
-rw-r--r--src/devices/bus/nes/nes_slot.h (renamed from src/emu/bus/nes/nes_slot.h)0
-rw-r--r--src/devices/bus/nes/nes_unif.inc (renamed from src/emu/bus/nes/nes_unif.inc)0
-rw-r--r--src/devices/bus/nes/ntdec.c (renamed from src/emu/bus/nes/ntdec.c)0
-rw-r--r--src/devices/bus/nes/ntdec.h (renamed from src/emu/bus/nes/ntdec.h)0
-rw-r--r--src/devices/bus/nes/nxrom.c (renamed from src/emu/bus/nes/nxrom.c)0
-rw-r--r--src/devices/bus/nes/nxrom.h (renamed from src/emu/bus/nes/nxrom.h)0
-rw-r--r--src/devices/bus/nes/pirate.c (renamed from src/emu/bus/nes/pirate.c)0
-rw-r--r--src/devices/bus/nes/pirate.h (renamed from src/emu/bus/nes/pirate.h)0
-rw-r--r--src/devices/bus/nes/pt554.c (renamed from src/emu/bus/nes/pt554.c)0
-rw-r--r--src/devices/bus/nes/pt554.h (renamed from src/emu/bus/nes/pt554.h)0
-rw-r--r--src/devices/bus/nes/racermate.c (renamed from src/emu/bus/nes/racermate.c)0
-rw-r--r--src/devices/bus/nes/racermate.h (renamed from src/emu/bus/nes/racermate.h)0
-rw-r--r--src/devices/bus/nes/rcm.c (renamed from src/emu/bus/nes/rcm.c)0
-rw-r--r--src/devices/bus/nes/rcm.h (renamed from src/emu/bus/nes/rcm.h)0
-rw-r--r--src/devices/bus/nes/rexsoft.c (renamed from src/emu/bus/nes/rexsoft.c)0
-rw-r--r--src/devices/bus/nes/rexsoft.h (renamed from src/emu/bus/nes/rexsoft.h)0
-rw-r--r--src/devices/bus/nes/sachen.c (renamed from src/emu/bus/nes/sachen.c)0
-rw-r--r--src/devices/bus/nes/sachen.h (renamed from src/emu/bus/nes/sachen.h)0
-rw-r--r--src/devices/bus/nes/somari.c (renamed from src/emu/bus/nes/somari.c)0
-rw-r--r--src/devices/bus/nes/somari.h (renamed from src/emu/bus/nes/somari.h)0
-rw-r--r--src/devices/bus/nes/sunsoft.c (renamed from src/emu/bus/nes/sunsoft.c)0
-rw-r--r--src/devices/bus/nes/sunsoft.h (renamed from src/emu/bus/nes/sunsoft.h)0
-rw-r--r--src/devices/bus/nes/sunsoft_dcs.c (renamed from src/emu/bus/nes/sunsoft_dcs.c)0
-rw-r--r--src/devices/bus/nes/sunsoft_dcs.h (renamed from src/emu/bus/nes/sunsoft_dcs.h)0
-rw-r--r--src/devices/bus/nes/taito.c (renamed from src/emu/bus/nes/taito.c)0
-rw-r--r--src/devices/bus/nes/taito.h (renamed from src/emu/bus/nes/taito.h)0
-rw-r--r--src/devices/bus/nes/tengen.c (renamed from src/emu/bus/nes/tengen.c)0
-rw-r--r--src/devices/bus/nes/tengen.h (renamed from src/emu/bus/nes/tengen.h)0
-rw-r--r--src/devices/bus/nes/txc.c (renamed from src/emu/bus/nes/txc.c)0
-rw-r--r--src/devices/bus/nes/txc.h (renamed from src/emu/bus/nes/txc.h)0
-rw-r--r--src/devices/bus/nes/waixing.c (renamed from src/emu/bus/nes/waixing.c)0
-rw-r--r--src/devices/bus/nes/waixing.h (renamed from src/emu/bus/nes/waixing.h)0
-rw-r--r--src/devices/bus/nes_ctrl/4score.c (renamed from src/emu/bus/nes_ctrl/4score.c)0
-rw-r--r--src/devices/bus/nes_ctrl/4score.h (renamed from src/emu/bus/nes_ctrl/4score.h)0
-rw-r--r--src/devices/bus/nes_ctrl/arkpaddle.c (renamed from src/emu/bus/nes_ctrl/arkpaddle.c)0
-rw-r--r--src/devices/bus/nes_ctrl/arkpaddle.h (renamed from src/emu/bus/nes_ctrl/arkpaddle.h)0
-rw-r--r--src/devices/bus/nes_ctrl/bcbattle.c (renamed from src/emu/bus/nes_ctrl/bcbattle.c)0
-rw-r--r--src/devices/bus/nes_ctrl/bcbattle.h (renamed from src/emu/bus/nes_ctrl/bcbattle.h)0
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.c (renamed from src/emu/bus/nes_ctrl/ctrl.c)0
-rw-r--r--src/devices/bus/nes_ctrl/ctrl.h (renamed from src/emu/bus/nes_ctrl/ctrl.h)0
-rw-r--r--src/devices/bus/nes_ctrl/fckeybrd.c (renamed from src/emu/bus/nes_ctrl/fckeybrd.c)0
-rw-r--r--src/devices/bus/nes_ctrl/fckeybrd.h (renamed from src/emu/bus/nes_ctrl/fckeybrd.h)0
-rw-r--r--src/devices/bus/nes_ctrl/ftrainer.c (renamed from src/emu/bus/nes_ctrl/ftrainer.c)0
-rw-r--r--src/devices/bus/nes_ctrl/ftrainer.h (renamed from src/emu/bus/nes_ctrl/ftrainer.h)0
-rw-r--r--src/devices/bus/nes_ctrl/hori.c (renamed from src/emu/bus/nes_ctrl/hori.c)0
-rw-r--r--src/devices/bus/nes_ctrl/hori.h (renamed from src/emu/bus/nes_ctrl/hori.h)0
-rw-r--r--src/devices/bus/nes_ctrl/joypad.c (renamed from src/emu/bus/nes_ctrl/joypad.c)0
-rw-r--r--src/devices/bus/nes_ctrl/joypad.h (renamed from src/emu/bus/nes_ctrl/joypad.h)0
-rw-r--r--src/devices/bus/nes_ctrl/konamihs.c (renamed from src/emu/bus/nes_ctrl/konamihs.c)0
-rw-r--r--src/devices/bus/nes_ctrl/konamihs.h (renamed from src/emu/bus/nes_ctrl/konamihs.h)0
-rw-r--r--src/devices/bus/nes_ctrl/miracle.c (renamed from src/emu/bus/nes_ctrl/miracle.c)0
-rw-r--r--src/devices/bus/nes_ctrl/miracle.h (renamed from src/emu/bus/nes_ctrl/miracle.h)0
-rw-r--r--src/devices/bus/nes_ctrl/mjpanel.c (renamed from src/emu/bus/nes_ctrl/mjpanel.c)0
-rw-r--r--src/devices/bus/nes_ctrl/mjpanel.h (renamed from src/emu/bus/nes_ctrl/mjpanel.h)0
-rw-r--r--src/devices/bus/nes_ctrl/pachinko.c (renamed from src/emu/bus/nes_ctrl/pachinko.c)0
-rw-r--r--src/devices/bus/nes_ctrl/pachinko.h (renamed from src/emu/bus/nes_ctrl/pachinko.h)0
-rw-r--r--src/devices/bus/nes_ctrl/partytap.c (renamed from src/emu/bus/nes_ctrl/partytap.c)0
-rw-r--r--src/devices/bus/nes_ctrl/partytap.h (renamed from src/emu/bus/nes_ctrl/partytap.h)0
-rw-r--r--src/devices/bus/nes_ctrl/powerpad.c (renamed from src/emu/bus/nes_ctrl/powerpad.c)0
-rw-r--r--src/devices/bus/nes_ctrl/powerpad.h (renamed from src/emu/bus/nes_ctrl/powerpad.h)0
-rw-r--r--src/devices/bus/nes_ctrl/suborkey.c (renamed from src/emu/bus/nes_ctrl/suborkey.c)0
-rw-r--r--src/devices/bus/nes_ctrl/suborkey.h (renamed from src/emu/bus/nes_ctrl/suborkey.h)0
-rw-r--r--src/devices/bus/nes_ctrl/zapper.c (renamed from src/emu/bus/nes_ctrl/zapper.c)0
-rw-r--r--src/devices/bus/nes_ctrl/zapper.h (renamed from src/emu/bus/nes_ctrl/zapper.h)0
-rw-r--r--src/devices/bus/nubus/nubus.c (renamed from src/emu/bus/nubus/nubus.c)0
-rw-r--r--src/devices/bus/nubus/nubus.h (renamed from src/emu/bus/nubus/nubus.h)0
-rw-r--r--src/devices/bus/nubus/nubus_48gc.c (renamed from src/emu/bus/nubus/nubus_48gc.c)0
-rw-r--r--src/devices/bus/nubus/nubus_48gc.h (renamed from src/emu/bus/nubus/nubus_48gc.h)0
-rw-r--r--src/devices/bus/nubus/nubus_asntmc3b.c (renamed from src/emu/bus/nubus/nubus_asntmc3b.c)0
-rw-r--r--src/devices/bus/nubus/nubus_asntmc3b.h (renamed from src/emu/bus/nubus/nubus_asntmc3b.h)0
-rw-r--r--src/devices/bus/nubus/nubus_cb264.c (renamed from src/emu/bus/nubus/nubus_cb264.c)0
-rw-r--r--src/devices/bus/nubus/nubus_cb264.h (renamed from src/emu/bus/nubus/nubus_cb264.h)0
-rw-r--r--src/devices/bus/nubus/nubus_image.c (renamed from src/emu/bus/nubus/nubus_image.c)0
-rw-r--r--src/devices/bus/nubus/nubus_image.h (renamed from src/emu/bus/nubus/nubus_image.h)0
-rw-r--r--src/devices/bus/nubus/nubus_m2hires.c (renamed from src/emu/bus/nubus/nubus_m2hires.c)0
-rw-r--r--src/devices/bus/nubus/nubus_m2hires.h (renamed from src/emu/bus/nubus/nubus_m2hires.h)0
-rw-r--r--src/devices/bus/nubus/nubus_m2video.c (renamed from src/emu/bus/nubus/nubus_m2video.c)0
-rw-r--r--src/devices/bus/nubus/nubus_m2video.h (renamed from src/emu/bus/nubus/nubus_m2video.h)0
-rw-r--r--src/devices/bus/nubus/nubus_radiustpd.c (renamed from src/emu/bus/nubus/nubus_radiustpd.c)0
-rw-r--r--src/devices/bus/nubus/nubus_radiustpd.h (renamed from src/emu/bus/nubus/nubus_radiustpd.h)0
-rw-r--r--src/devices/bus/nubus/nubus_spec8.c (renamed from src/emu/bus/nubus/nubus_spec8.c)0
-rw-r--r--src/devices/bus/nubus/nubus_spec8.h (renamed from src/emu/bus/nubus/nubus_spec8.h)0
-rw-r--r--src/devices/bus/nubus/nubus_specpdq.c (renamed from src/emu/bus/nubus/nubus_specpdq.c)0
-rw-r--r--src/devices/bus/nubus/nubus_specpdq.h (renamed from src/emu/bus/nubus/nubus_specpdq.h)0
-rw-r--r--src/devices/bus/nubus/nubus_vikbw.c (renamed from src/emu/bus/nubus/nubus_vikbw.c)0
-rw-r--r--src/devices/bus/nubus/nubus_vikbw.h (renamed from src/emu/bus/nubus/nubus_vikbw.h)0
-rw-r--r--src/devices/bus/nubus/nubus_wsportrait.c (renamed from src/emu/bus/nubus/nubus_wsportrait.c)0
-rw-r--r--src/devices/bus/nubus/nubus_wsportrait.h (renamed from src/emu/bus/nubus/nubus_wsportrait.h)0
-rw-r--r--src/devices/bus/nubus/pds30_30hr.c (renamed from src/emu/bus/nubus/pds30_30hr.c)0
-rw-r--r--src/devices/bus/nubus/pds30_30hr.h (renamed from src/emu/bus/nubus/pds30_30hr.h)0
-rw-r--r--src/devices/bus/nubus/pds30_cb264.c (renamed from src/emu/bus/nubus/pds30_cb264.c)0
-rw-r--r--src/devices/bus/nubus/pds30_cb264.h (renamed from src/emu/bus/nubus/pds30_cb264.h)0
-rw-r--r--src/devices/bus/nubus/pds30_mc30.c (renamed from src/emu/bus/nubus/pds30_mc30.c)0
-rw-r--r--src/devices/bus/nubus/pds30_mc30.h (renamed from src/emu/bus/nubus/pds30_mc30.h)0
-rw-r--r--src/devices/bus/nubus/pds30_procolor816.c (renamed from src/emu/bus/nubus/pds30_procolor816.c)0
-rw-r--r--src/devices/bus/nubus/pds30_procolor816.h (renamed from src/emu/bus/nubus/pds30_procolor816.h)0
-rw-r--r--src/devices/bus/nubus/pds30_sigmalview.c (renamed from src/emu/bus/nubus/pds30_sigmalview.c)0
-rw-r--r--src/devices/bus/nubus/pds30_sigmalview.h (renamed from src/emu/bus/nubus/pds30_sigmalview.h)0
-rw-r--r--src/devices/bus/odyssey2/chess.c (renamed from src/emu/bus/odyssey2/chess.c)0
-rw-r--r--src/devices/bus/odyssey2/chess.h (renamed from src/emu/bus/odyssey2/chess.h)0
-rw-r--r--src/devices/bus/odyssey2/rom.c (renamed from src/emu/bus/odyssey2/rom.c)0
-rw-r--r--src/devices/bus/odyssey2/rom.h (renamed from src/emu/bus/odyssey2/rom.h)0
-rw-r--r--src/devices/bus/odyssey2/slot.c (renamed from src/emu/bus/odyssey2/slot.c)0
-rw-r--r--src/devices/bus/odyssey2/slot.h (renamed from src/emu/bus/odyssey2/slot.h)0
-rw-r--r--src/devices/bus/odyssey2/voice.c (renamed from src/emu/bus/odyssey2/voice.c)0
-rw-r--r--src/devices/bus/odyssey2/voice.h (renamed from src/emu/bus/odyssey2/voice.h)0
-rw-r--r--src/devices/bus/oricext/jasmin.c (renamed from src/emu/bus/oricext/jasmin.c)0
-rw-r--r--src/devices/bus/oricext/jasmin.h (renamed from src/emu/bus/oricext/jasmin.h)0
-rw-r--r--src/devices/bus/oricext/microdisc.c (renamed from src/emu/bus/oricext/microdisc.c)0
-rw-r--r--src/devices/bus/oricext/microdisc.h (renamed from src/emu/bus/oricext/microdisc.h)0
-rw-r--r--src/devices/bus/oricext/oricext.c (renamed from src/emu/bus/oricext/oricext.c)0
-rw-r--r--src/devices/bus/oricext/oricext.h (renamed from src/emu/bus/oricext/oricext.h)0
-rw-r--r--src/devices/bus/pc_joy/pc_joy.c (renamed from src/emu/bus/pc_joy/pc_joy.c)2
-rw-r--r--src/devices/bus/pc_joy/pc_joy.h (renamed from src/emu/bus/pc_joy/pc_joy.h)0
-rw-r--r--src/devices/bus/pc_joy/pc_joy_sw.c (renamed from src/emu/bus/pc_joy/pc_joy_sw.c)0
-rw-r--r--src/devices/bus/pc_joy/pc_joy_sw.h (renamed from src/emu/bus/pc_joy/pc_joy_sw.h)0
-rw-r--r--src/devices/bus/pc_kbd/ec1841.c (renamed from src/emu/bus/pc_kbd/ec1841.c)0
-rw-r--r--src/devices/bus/pc_kbd/ec1841.h (renamed from src/emu/bus/pc_kbd/ec1841.h)0
-rw-r--r--src/devices/bus/pc_kbd/iskr1030.c500
-rw-r--r--src/devices/bus/pc_kbd/iskr1030.h (renamed from src/emu/bus/pc_kbd/iskr1030.h)15
-rw-r--r--src/devices/bus/pc_kbd/keyboards.c (renamed from src/emu/bus/pc_kbd/keyboards.c)0
-rw-r--r--src/devices/bus/pc_kbd/keyboards.h (renamed from src/emu/bus/pc_kbd/keyboards.h)0
-rw-r--r--src/devices/bus/pc_kbd/keytro.c (renamed from src/emu/bus/pc_kbd/keytro.c)0
-rw-r--r--src/devices/bus/pc_kbd/keytro.h (renamed from src/emu/bus/pc_kbd/keytro.h)0
-rw-r--r--src/devices/bus/pc_kbd/msnat.c (renamed from src/emu/bus/pc_kbd/msnat.c)0
-rw-r--r--src/devices/bus/pc_kbd/msnat.h (renamed from src/emu/bus/pc_kbd/msnat.h)0
-rw-r--r--src/devices/bus/pc_kbd/pc83.c (renamed from src/emu/bus/pc_kbd/pc83.c)0
-rw-r--r--src/devices/bus/pc_kbd/pc83.h (renamed from src/emu/bus/pc_kbd/pc83.h)0
-rw-r--r--src/devices/bus/pc_kbd/pc_kbdc.c (renamed from src/emu/bus/pc_kbd/pc_kbdc.c)0
-rw-r--r--src/devices/bus/pc_kbd/pc_kbdc.h (renamed from src/emu/bus/pc_kbd/pc_kbdc.h)0
-rw-r--r--src/devices/bus/pc_kbd/pcat84.c (renamed from src/emu/bus/pc_kbd/pcat84.c)0
-rw-r--r--src/devices/bus/pc_kbd/pcat84.h (renamed from src/emu/bus/pc_kbd/pcat84.h)0
-rw-r--r--src/devices/bus/pc_kbd/pcxt83.c (renamed from src/emu/bus/pc_kbd/pcxt83.c)0
-rw-r--r--src/devices/bus/pc_kbd/pcxt83.h (renamed from src/emu/bus/pc_kbd/pcxt83.h)0
-rw-r--r--src/devices/bus/pce/pce_rom.c (renamed from src/emu/bus/pce/pce_rom.c)0
-rw-r--r--src/devices/bus/pce/pce_rom.h (renamed from src/emu/bus/pce/pce_rom.h)0
-rw-r--r--src/devices/bus/pce/pce_slot.c (renamed from src/emu/bus/pce/pce_slot.c)0
-rw-r--r--src/devices/bus/pce/pce_slot.h (renamed from src/emu/bus/pce/pce_slot.h)0
-rw-r--r--src/devices/bus/pet/64k.c (renamed from src/emu/bus/pet/64k.c)0
-rw-r--r--src/devices/bus/pet/64k.h (renamed from src/emu/bus/pet/64k.h)0
-rw-r--r--src/devices/bus/pet/c2n.c (renamed from src/emu/bus/pet/c2n.c)0
-rw-r--r--src/devices/bus/pet/c2n.h (renamed from src/emu/bus/pet/c2n.h)0
-rw-r--r--src/devices/bus/pet/cass.c (renamed from src/emu/bus/pet/cass.c)0
-rw-r--r--src/devices/bus/pet/cass.h (renamed from src/emu/bus/pet/cass.h)0
-rw-r--r--src/devices/bus/pet/cb2snd.c (renamed from src/emu/bus/pet/cb2snd.c)0
-rw-r--r--src/devices/bus/pet/cb2snd.h (renamed from src/emu/bus/pet/cb2snd.h)0
-rw-r--r--src/devices/bus/pet/diag.c (renamed from src/emu/bus/pet/diag.c)0
-rw-r--r--src/devices/bus/pet/diag.h (renamed from src/emu/bus/pet/diag.h)0
-rw-r--r--src/devices/bus/pet/diag264_lb_tape.c (renamed from src/emu/bus/pet/diag264_lb_tape.c)0
-rw-r--r--src/devices/bus/pet/diag264_lb_tape.h (renamed from src/emu/bus/pet/diag264_lb_tape.h)0
-rw-r--r--src/devices/bus/pet/exp.c (renamed from src/emu/bus/pet/exp.c)0
-rw-r--r--src/devices/bus/pet/exp.h (renamed from src/emu/bus/pet/exp.h)0
-rw-r--r--src/devices/bus/pet/hsg.c (renamed from src/emu/bus/pet/hsg.c)0
-rw-r--r--src/devices/bus/pet/hsg.h (renamed from src/emu/bus/pet/hsg.h)0
-rw-r--r--src/devices/bus/pet/petuja.c (renamed from src/emu/bus/pet/petuja.c)0
-rw-r--r--src/devices/bus/pet/petuja.h (renamed from src/emu/bus/pet/petuja.h)0
-rw-r--r--src/devices/bus/pet/superpet.c (renamed from src/emu/bus/pet/superpet.c)0
-rw-r--r--src/devices/bus/pet/superpet.h (renamed from src/emu/bus/pet/superpet.h)0
-rw-r--r--src/devices/bus/pet/user.c (renamed from src/emu/bus/pet/user.c)0
-rw-r--r--src/devices/bus/pet/user.h (renamed from src/emu/bus/pet/user.h)0
-rw-r--r--src/devices/bus/plus4/c1551.c (renamed from src/emu/bus/plus4/c1551.c)0
-rw-r--r--src/devices/bus/plus4/c1551.h (renamed from src/emu/bus/plus4/c1551.h)0
-rw-r--r--src/devices/bus/plus4/diag264_lb_user.c (renamed from src/emu/bus/plus4/diag264_lb_user.c)0
-rw-r--r--src/devices/bus/plus4/diag264_lb_user.h (renamed from src/emu/bus/plus4/diag264_lb_user.h)0
-rw-r--r--src/devices/bus/plus4/exp.c (renamed from src/emu/bus/plus4/exp.c)0
-rw-r--r--src/devices/bus/plus4/exp.h (renamed from src/emu/bus/plus4/exp.h)0
-rw-r--r--src/devices/bus/plus4/sid.c (renamed from src/emu/bus/plus4/sid.c)0
-rw-r--r--src/devices/bus/plus4/sid.h (renamed from src/emu/bus/plus4/sid.h)0
-rw-r--r--src/devices/bus/plus4/std.c (renamed from src/emu/bus/plus4/std.c)0
-rw-r--r--src/devices/bus/plus4/std.h (renamed from src/emu/bus/plus4/std.h)0
-rw-r--r--src/devices/bus/plus4/user.c (renamed from src/emu/bus/plus4/user.c)0
-rw-r--r--src/devices/bus/plus4/user.h (renamed from src/emu/bus/plus4/user.h)0
-rw-r--r--src/devices/bus/psx/analogue.c (renamed from src/emu/bus/psx/analogue.c)0
-rw-r--r--src/devices/bus/psx/analogue.h (renamed from src/emu/bus/psx/analogue.h)0
-rw-r--r--src/devices/bus/psx/ctlrport.c (renamed from src/emu/bus/psx/ctlrport.c)0
-rw-r--r--src/devices/bus/psx/ctlrport.h (renamed from src/emu/bus/psx/ctlrport.h)0
-rw-r--r--src/devices/bus/psx/memcard.c (renamed from src/emu/bus/psx/memcard.c)0
-rw-r--r--src/devices/bus/psx/memcard.h (renamed from src/emu/bus/psx/memcard.h)0
-rw-r--r--src/devices/bus/psx/multitap.c (renamed from src/emu/bus/psx/multitap.c)0
-rw-r--r--src/devices/bus/psx/multitap.h (renamed from src/emu/bus/psx/multitap.h)0
-rw-r--r--src/devices/bus/ql/cst_q_plus4.c (renamed from src/emu/bus/ql/cst_q_plus4.c)0
-rw-r--r--src/devices/bus/ql/cst_q_plus4.h (renamed from src/emu/bus/ql/cst_q_plus4.h)0
-rw-r--r--src/devices/bus/ql/cst_qdisc.c (renamed from src/emu/bus/ql/cst_qdisc.c)0
-rw-r--r--src/devices/bus/ql/cst_qdisc.h (renamed from src/emu/bus/ql/cst_qdisc.h)0
-rw-r--r--src/devices/bus/ql/cumana_fdi.c (renamed from src/emu/bus/ql/cumana_fdi.c)0
-rw-r--r--src/devices/bus/ql/cumana_fdi.h (renamed from src/emu/bus/ql/cumana_fdi.h)0
-rw-r--r--src/devices/bus/ql/exp.c (renamed from src/emu/bus/ql/exp.c)0
-rw-r--r--src/devices/bus/ql/exp.h (renamed from src/emu/bus/ql/exp.h)0
-rw-r--r--src/devices/bus/ql/kempston_di.c (renamed from src/emu/bus/ql/kempston_di.c)0
-rw-r--r--src/devices/bus/ql/kempston_di.h (renamed from src/emu/bus/ql/kempston_di.h)0
-rw-r--r--src/devices/bus/ql/miracle_gold_card.c (renamed from src/emu/bus/ql/miracle_gold_card.c)0
-rw-r--r--src/devices/bus/ql/miracle_gold_card.h (renamed from src/emu/bus/ql/miracle_gold_card.h)0
-rw-r--r--src/devices/bus/ql/miracle_hd.c (renamed from src/emu/bus/ql/miracle_hd.c)0
-rw-r--r--src/devices/bus/ql/miracle_hd.h (renamed from src/emu/bus/ql/miracle_hd.h)0
-rw-r--r--src/devices/bus/ql/mp_fdi.c (renamed from src/emu/bus/ql/mp_fdi.c)0
-rw-r--r--src/devices/bus/ql/mp_fdi.h (renamed from src/emu/bus/ql/mp_fdi.h)0
-rw-r--r--src/devices/bus/ql/opd_basic_master.c (renamed from src/emu/bus/ql/opd_basic_master.c)0
-rw-r--r--src/devices/bus/ql/opd_basic_master.h (renamed from src/emu/bus/ql/opd_basic_master.h)0
-rw-r--r--src/devices/bus/ql/pcml_qdisk.c (renamed from src/emu/bus/ql/pcml_qdisk.c)0
-rw-r--r--src/devices/bus/ql/pcml_qdisk.h (renamed from src/emu/bus/ql/pcml_qdisk.h)0
-rw-r--r--src/devices/bus/ql/qubide.c (renamed from src/emu/bus/ql/qubide.c)0
-rw-r--r--src/devices/bus/ql/qubide.h (renamed from src/emu/bus/ql/qubide.h)0
-rw-r--r--src/devices/bus/ql/rom.c (renamed from src/emu/bus/ql/rom.c)0
-rw-r--r--src/devices/bus/ql/rom.h (renamed from src/emu/bus/ql/rom.h)0
-rw-r--r--src/devices/bus/ql/sandy_superdisk.c (renamed from src/emu/bus/ql/sandy_superdisk.c)0
-rw-r--r--src/devices/bus/ql/sandy_superdisk.h (renamed from src/emu/bus/ql/sandy_superdisk.h)0
-rw-r--r--src/devices/bus/ql/sandy_superqboard.c (renamed from src/emu/bus/ql/sandy_superqboard.c)0
-rw-r--r--src/devices/bus/ql/sandy_superqboard.h (renamed from src/emu/bus/ql/sandy_superqboard.h)0
-rw-r--r--src/devices/bus/ql/std.c (renamed from src/emu/bus/ql/std.c)0
-rw-r--r--src/devices/bus/ql/std.h (renamed from src/emu/bus/ql/std.h)0
-rw-r--r--src/devices/bus/ql/trumpcard.c (renamed from src/emu/bus/ql/trumpcard.c)0
-rw-r--r--src/devices/bus/ql/trumpcard.h (renamed from src/emu/bus/ql/trumpcard.h)0
-rw-r--r--src/devices/bus/rs232/keyboard.c (renamed from src/emu/bus/rs232/keyboard.c)0
-rw-r--r--src/devices/bus/rs232/keyboard.h (renamed from src/emu/bus/rs232/keyboard.h)0
-rw-r--r--src/devices/bus/rs232/loopback.c (renamed from src/emu/bus/rs232/loopback.c)0
-rw-r--r--src/devices/bus/rs232/loopback.h (renamed from src/emu/bus/rs232/loopback.h)0
-rw-r--r--src/devices/bus/rs232/null_modem.c (renamed from src/emu/bus/rs232/null_modem.c)0
-rw-r--r--src/devices/bus/rs232/null_modem.h (renamed from src/emu/bus/rs232/null_modem.h)0
-rw-r--r--src/devices/bus/rs232/printer.c (renamed from src/emu/bus/rs232/printer.c)0
-rw-r--r--src/devices/bus/rs232/printer.h (renamed from src/emu/bus/rs232/printer.h)0
-rw-r--r--src/devices/bus/rs232/pty.c138
-rw-r--r--src/devices/bus/rs232/pty.h52
-rw-r--r--src/devices/bus/rs232/rs232.c (renamed from src/emu/bus/rs232/rs232.c)2
-rw-r--r--src/devices/bus/rs232/rs232.h (renamed from src/emu/bus/rs232/rs232.h)0
-rw-r--r--src/devices/bus/rs232/ser_mouse.c (renamed from src/emu/bus/rs232/ser_mouse.c)0
-rw-r--r--src/devices/bus/rs232/ser_mouse.h (renamed from src/emu/bus/rs232/ser_mouse.h)0
-rw-r--r--src/devices/bus/rs232/terminal.c (renamed from src/emu/bus/rs232/terminal.c)0
-rw-r--r--src/devices/bus/rs232/terminal.h (renamed from src/emu/bus/rs232/terminal.h)0
-rw-r--r--src/devices/bus/rs232/xvd701.c (renamed from src/emu/bus/rs232/xvd701.c)0
-rw-r--r--src/devices/bus/rs232/xvd701.h (renamed from src/emu/bus/rs232/xvd701.h)0
-rw-r--r--src/devices/bus/s100/dj2db.c (renamed from src/emu/bus/s100/dj2db.c)0
-rw-r--r--src/devices/bus/s100/dj2db.h (renamed from src/emu/bus/s100/dj2db.h)0
-rw-r--r--src/devices/bus/s100/djdma.c (renamed from src/emu/bus/s100/djdma.c)0
-rw-r--r--src/devices/bus/s100/djdma.h (renamed from src/emu/bus/s100/djdma.h)0
-rw-r--r--src/devices/bus/s100/mm65k16s.c (renamed from src/emu/bus/s100/mm65k16s.c)0
-rw-r--r--src/devices/bus/s100/mm65k16s.h (renamed from src/emu/bus/s100/mm65k16s.h)0
-rw-r--r--src/devices/bus/s100/nsmdsa.c (renamed from src/emu/bus/s100/nsmdsa.c)0
-rw-r--r--src/devices/bus/s100/nsmdsa.h (renamed from src/emu/bus/s100/nsmdsa.h)0
-rw-r--r--src/devices/bus/s100/nsmdsad.c (renamed from src/emu/bus/s100/nsmdsad.c)0
-rw-r--r--src/devices/bus/s100/nsmdsad.h (renamed from src/emu/bus/s100/nsmdsad.h)0
-rw-r--r--src/devices/bus/s100/s100.c (renamed from src/emu/bus/s100/s100.c)0
-rw-r--r--src/devices/bus/s100/s100.h (renamed from src/emu/bus/s100/s100.h)0
-rw-r--r--src/devices/bus/s100/wunderbus.c (renamed from src/emu/bus/s100/wunderbus.c)0
-rw-r--r--src/devices/bus/s100/wunderbus.h (renamed from src/emu/bus/s100/wunderbus.h)0
-rw-r--r--src/devices/bus/saturn/bram.c (renamed from src/emu/bus/saturn/bram.c)0
-rw-r--r--src/devices/bus/saturn/bram.h (renamed from src/emu/bus/saturn/bram.h)0
-rw-r--r--src/devices/bus/saturn/dram.c (renamed from src/emu/bus/saturn/dram.c)0
-rw-r--r--src/devices/bus/saturn/dram.h (renamed from src/emu/bus/saturn/dram.h)0
-rw-r--r--src/devices/bus/saturn/rom.c (renamed from src/emu/bus/saturn/rom.c)0
-rw-r--r--src/devices/bus/saturn/rom.h (renamed from src/emu/bus/saturn/rom.h)0
-rw-r--r--src/devices/bus/saturn/sat_slot.c (renamed from src/emu/bus/saturn/sat_slot.c)0
-rw-r--r--src/devices/bus/saturn/sat_slot.h (renamed from src/emu/bus/saturn/sat_slot.h)0
-rw-r--r--src/devices/bus/scsi/acb4070.c (renamed from src/emu/bus/scsi/acb4070.c)0
-rw-r--r--src/devices/bus/scsi/acb4070.h (renamed from src/emu/bus/scsi/acb4070.h)0
-rw-r--r--src/devices/bus/scsi/cdu76s.c (renamed from src/emu/bus/scsi/cdu76s.c)0
-rw-r--r--src/devices/bus/scsi/cdu76s.h (renamed from src/emu/bus/scsi/cdu76s.h)0
-rw-r--r--src/devices/bus/scsi/d9060hd.c (renamed from src/emu/bus/scsi/d9060hd.c)0
-rw-r--r--src/devices/bus/scsi/d9060hd.h (renamed from src/emu/bus/scsi/d9060hd.h)0
-rw-r--r--src/devices/bus/scsi/omti5100.c187
-rw-r--r--src/devices/bus/scsi/omti5100.h (renamed from src/emu/bus/scsi/omti5100.h)2
-rw-r--r--src/devices/bus/scsi/pc9801_sasi.c (renamed from src/emu/bus/scsi/pc9801_sasi.c)0
-rw-r--r--src/devices/bus/scsi/pc9801_sasi.h (renamed from src/emu/bus/scsi/pc9801_sasi.h)0
-rw-r--r--src/devices/bus/scsi/s1410.c (renamed from src/emu/bus/scsi/s1410.c)0
-rw-r--r--src/devices/bus/scsi/s1410.h (renamed from src/emu/bus/scsi/s1410.h)0
-rw-r--r--src/devices/bus/scsi/sa1403d.c (renamed from src/emu/bus/scsi/sa1403d.c)0
-rw-r--r--src/devices/bus/scsi/sa1403d.h (renamed from src/emu/bus/scsi/sa1403d.h)0
-rw-r--r--src/devices/bus/scsi/scsi.c (renamed from src/emu/bus/scsi/scsi.c)0
-rw-r--r--src/devices/bus/scsi/scsi.h (renamed from src/emu/bus/scsi/scsi.h)0
-rw-r--r--src/devices/bus/scsi/scsicd.c (renamed from src/emu/bus/scsi/scsicd.c)0
-rw-r--r--src/devices/bus/scsi/scsicd.h (renamed from src/emu/bus/scsi/scsicd.h)0
-rw-r--r--src/devices/bus/scsi/scsihd.c (renamed from src/emu/bus/scsi/scsihd.c)0
-rw-r--r--src/devices/bus/scsi/scsihd.h (renamed from src/emu/bus/scsi/scsihd.h)0
-rw-r--r--src/devices/bus/scsi/scsihle.c (renamed from src/emu/bus/scsi/scsihle.c)4
-rw-r--r--src/devices/bus/scsi/scsihle.h (renamed from src/emu/bus/scsi/scsihle.h)0
-rw-r--r--src/devices/bus/scv/rom.c (renamed from src/emu/bus/scv/rom.c)0
-rw-r--r--src/devices/bus/scv/rom.h (renamed from src/emu/bus/scv/rom.h)0
-rw-r--r--src/devices/bus/scv/slot.c (renamed from src/emu/bus/scv/slot.c)0
-rw-r--r--src/devices/bus/scv/slot.h (renamed from src/emu/bus/scv/slot.h)0
-rw-r--r--src/devices/bus/sega8/ccatch.c (renamed from src/emu/bus/sega8/ccatch.c)0
-rw-r--r--src/devices/bus/sega8/ccatch.h (renamed from src/emu/bus/sega8/ccatch.h)0
-rw-r--r--src/devices/bus/sega8/mgear.c (renamed from src/emu/bus/sega8/mgear.c)0
-rw-r--r--src/devices/bus/sega8/mgear.h (renamed from src/emu/bus/sega8/mgear.h)0
-rw-r--r--src/devices/bus/sega8/rom.c (renamed from src/emu/bus/sega8/rom.c)0
-rw-r--r--src/devices/bus/sega8/rom.h (renamed from src/emu/bus/sega8/rom.h)0
-rw-r--r--src/devices/bus/sega8/sega8_slot.c (renamed from src/emu/bus/sega8/sega8_slot.c)0
-rw-r--r--src/devices/bus/sega8/sega8_slot.h (renamed from src/emu/bus/sega8/sega8_slot.h)0
-rw-r--r--src/devices/bus/sms_ctrl/graphic.c (renamed from src/emu/bus/sms_ctrl/graphic.c)0
-rw-r--r--src/devices/bus/sms_ctrl/graphic.h (renamed from src/emu/bus/sms_ctrl/graphic.h)0
-rw-r--r--src/devices/bus/sms_ctrl/joypad.c (renamed from src/emu/bus/sms_ctrl/joypad.c)0
-rw-r--r--src/devices/bus/sms_ctrl/joypad.h (renamed from src/emu/bus/sms_ctrl/joypad.h)0
-rw-r--r--src/devices/bus/sms_ctrl/lphaser.c (renamed from src/emu/bus/sms_ctrl/lphaser.c)0
-rw-r--r--src/devices/bus/sms_ctrl/lphaser.h (renamed from src/emu/bus/sms_ctrl/lphaser.h)0
-rw-r--r--src/devices/bus/sms_ctrl/multitap.c (renamed from src/emu/bus/sms_ctrl/multitap.c)0
-rw-r--r--src/devices/bus/sms_ctrl/multitap.h (renamed from src/emu/bus/sms_ctrl/multitap.h)0
-rw-r--r--src/devices/bus/sms_ctrl/paddle.c (renamed from src/emu/bus/sms_ctrl/paddle.c)0
-rw-r--r--src/devices/bus/sms_ctrl/paddle.h (renamed from src/emu/bus/sms_ctrl/paddle.h)0
-rw-r--r--src/devices/bus/sms_ctrl/rfu.c (renamed from src/emu/bus/sms_ctrl/rfu.c)0
-rw-r--r--src/devices/bus/sms_ctrl/rfu.h (renamed from src/emu/bus/sms_ctrl/rfu.h)0
-rw-r--r--src/devices/bus/sms_ctrl/smsctrl.c (renamed from src/emu/bus/sms_ctrl/smsctrl.c)0
-rw-r--r--src/devices/bus/sms_ctrl/smsctrl.h (renamed from src/emu/bus/sms_ctrl/smsctrl.h)0
-rw-r--r--src/devices/bus/sms_ctrl/sports.c (renamed from src/emu/bus/sms_ctrl/sports.c)100
-rw-r--r--src/devices/bus/sms_ctrl/sports.h (renamed from src/emu/bus/sms_ctrl/sports.h)7
-rw-r--r--src/devices/bus/sms_ctrl/sportsjp.c (renamed from src/emu/bus/sms_ctrl/sportsjp.c)0
-rw-r--r--src/devices/bus/sms_ctrl/sportsjp.h (renamed from src/emu/bus/sms_ctrl/sportsjp.h)0
-rw-r--r--src/devices/bus/sms_exp/gender.c (renamed from src/emu/bus/sms_exp/gender.c)0
-rw-r--r--src/devices/bus/sms_exp/gender.h (renamed from src/emu/bus/sms_exp/gender.h)0
-rw-r--r--src/devices/bus/sms_exp/smsexp.c (renamed from src/emu/bus/sms_exp/smsexp.c)0
-rw-r--r--src/devices/bus/sms_exp/smsexp.h (renamed from src/emu/bus/sms_exp/smsexp.h)0
-rw-r--r--src/devices/bus/snes/bsx.c (renamed from src/emu/bus/snes/bsx.c)0
-rw-r--r--src/devices/bus/snes/bsx.h (renamed from src/emu/bus/snes/bsx.h)0
-rw-r--r--src/devices/bus/snes/event.c (renamed from src/emu/bus/snes/event.c)0
-rw-r--r--src/devices/bus/snes/event.h (renamed from src/emu/bus/snes/event.h)0
-rw-r--r--src/devices/bus/snes/rom.c (renamed from src/emu/bus/snes/rom.c)0
-rw-r--r--src/devices/bus/snes/rom.h (renamed from src/emu/bus/snes/rom.h)0
-rw-r--r--src/devices/bus/snes/rom21.c (renamed from src/emu/bus/snes/rom21.c)0
-rw-r--r--src/devices/bus/snes/rom21.h (renamed from src/emu/bus/snes/rom21.h)0
-rw-r--r--src/devices/bus/snes/sa1.c (renamed from src/emu/bus/snes/sa1.c)0
-rw-r--r--src/devices/bus/snes/sa1.h (renamed from src/emu/bus/snes/sa1.h)0
-rw-r--r--src/devices/bus/snes/sdd1.c (renamed from src/emu/bus/snes/sdd1.c)2
-rw-r--r--src/devices/bus/snes/sdd1.h (renamed from src/emu/bus/snes/sdd1.h)0
-rw-r--r--src/devices/bus/snes/sfx.c (renamed from src/emu/bus/snes/sfx.c)0
-rw-r--r--src/devices/bus/snes/sfx.h (renamed from src/emu/bus/snes/sfx.h)0
-rw-r--r--src/devices/bus/snes/sgb.c (renamed from src/emu/bus/snes/sgb.c)0
-rw-r--r--src/devices/bus/snes/sgb.h (renamed from src/emu/bus/snes/sgb.h)0
-rw-r--r--src/devices/bus/snes/snes_carts.c (renamed from src/emu/bus/snes/snes_carts.c)0
-rw-r--r--src/devices/bus/snes/snes_carts.h (renamed from src/emu/bus/snes/snes_carts.h)0
-rw-r--r--src/devices/bus/snes/snes_slot.c (renamed from src/emu/bus/snes/snes_slot.c)0
-rw-r--r--src/devices/bus/snes/snes_slot.h (renamed from src/emu/bus/snes/snes_slot.h)0
-rw-r--r--src/devices/bus/snes/spc7110.c (renamed from src/emu/bus/snes/spc7110.c)0
-rw-r--r--src/devices/bus/snes/spc7110.h (renamed from src/emu/bus/snes/spc7110.h)0
-rw-r--r--src/devices/bus/snes/sufami.c (renamed from src/emu/bus/snes/sufami.c)0
-rw-r--r--src/devices/bus/snes/sufami.h (renamed from src/emu/bus/snes/sufami.h)0
-rw-r--r--src/devices/bus/snes/upd.c (renamed from src/emu/bus/snes/upd.c)0
-rw-r--r--src/devices/bus/snes/upd.h (renamed from src/emu/bus/snes/upd.h)0
-rw-r--r--src/devices/bus/snes_ctrl/bcbattle.c (renamed from src/emu/bus/snes_ctrl/bcbattle.c)0
-rw-r--r--src/devices/bus/snes_ctrl/bcbattle.h (renamed from src/emu/bus/snes_ctrl/bcbattle.h)0
-rw-r--r--src/devices/bus/snes_ctrl/ctrl.c (renamed from src/emu/bus/snes_ctrl/ctrl.c)0
-rw-r--r--src/devices/bus/snes_ctrl/ctrl.h (renamed from src/emu/bus/snes_ctrl/ctrl.h)0
-rw-r--r--src/devices/bus/snes_ctrl/joypad.c (renamed from src/emu/bus/snes_ctrl/joypad.c)0
-rw-r--r--src/devices/bus/snes_ctrl/joypad.h (renamed from src/emu/bus/snes_ctrl/joypad.h)0
-rw-r--r--src/devices/bus/snes_ctrl/miracle.c (renamed from src/emu/bus/snes_ctrl/miracle.c)0
-rw-r--r--src/devices/bus/snes_ctrl/miracle.h (renamed from src/emu/bus/snes_ctrl/miracle.h)0
-rw-r--r--src/devices/bus/snes_ctrl/mouse.c (renamed from src/emu/bus/snes_ctrl/mouse.c)0
-rw-r--r--src/devices/bus/snes_ctrl/mouse.h (renamed from src/emu/bus/snes_ctrl/mouse.h)0
-rw-r--r--src/devices/bus/snes_ctrl/multitap.c (renamed from src/emu/bus/snes_ctrl/multitap.c)0
-rw-r--r--src/devices/bus/snes_ctrl/multitap.h (renamed from src/emu/bus/snes_ctrl/multitap.h)0
-rw-r--r--src/devices/bus/snes_ctrl/pachinko.c (renamed from src/emu/bus/snes_ctrl/pachinko.c)0
-rw-r--r--src/devices/bus/snes_ctrl/pachinko.h (renamed from src/emu/bus/snes_ctrl/pachinko.h)0
-rw-r--r--src/devices/bus/snes_ctrl/sscope.c (renamed from src/emu/bus/snes_ctrl/sscope.c)0
-rw-r--r--src/devices/bus/snes_ctrl/sscope.h (renamed from src/emu/bus/snes_ctrl/sscope.h)0
-rw-r--r--src/devices/bus/snes_ctrl/twintap.c (renamed from src/emu/bus/snes_ctrl/twintap.c)0
-rw-r--r--src/devices/bus/snes_ctrl/twintap.h (renamed from src/emu/bus/snes_ctrl/twintap.h)0
-rw-r--r--src/devices/bus/spc1000/exp.c (renamed from src/emu/bus/spc1000/exp.c)0
-rw-r--r--src/devices/bus/spc1000/exp.h (renamed from src/emu/bus/spc1000/exp.h)0
-rw-r--r--src/devices/bus/spc1000/fdd.c (renamed from src/emu/bus/spc1000/fdd.c)0
-rw-r--r--src/devices/bus/spc1000/fdd.h (renamed from src/emu/bus/spc1000/fdd.h)0
-rw-r--r--src/devices/bus/spc1000/vdp.c (renamed from src/emu/bus/spc1000/vdp.c)0
-rw-r--r--src/devices/bus/spc1000/vdp.h (renamed from src/emu/bus/spc1000/vdp.h)0
-rw-r--r--src/devices/bus/ti99_peb/bwg.c (renamed from src/emu/bus/ti99_peb/bwg.c)4
-rw-r--r--src/devices/bus/ti99_peb/bwg.h (renamed from src/emu/bus/ti99_peb/bwg.h)0
-rw-r--r--src/devices/bus/ti99_peb/evpc.c (renamed from src/emu/bus/ti99_peb/evpc.c)0
-rw-r--r--src/devices/bus/ti99_peb/evpc.h (renamed from src/emu/bus/ti99_peb/evpc.h)0
-rw-r--r--src/devices/bus/ti99_peb/hfdc.c (renamed from src/emu/bus/ti99_peb/hfdc.c)40
-rw-r--r--src/devices/bus/ti99_peb/hfdc.h (renamed from src/emu/bus/ti99_peb/hfdc.h)8
-rw-r--r--src/devices/bus/ti99_peb/horizon.c (renamed from src/emu/bus/ti99_peb/horizon.c)0
-rw-r--r--src/devices/bus/ti99_peb/horizon.h (renamed from src/emu/bus/ti99_peb/horizon.h)0
-rw-r--r--src/devices/bus/ti99_peb/hsgpl.c (renamed from src/emu/bus/ti99_peb/hsgpl.c)18
-rw-r--r--src/devices/bus/ti99_peb/hsgpl.h (renamed from src/emu/bus/ti99_peb/hsgpl.h)10
-rw-r--r--src/devices/bus/ti99_peb/memex.c (renamed from src/emu/bus/ti99_peb/memex.c)0
-rw-r--r--src/devices/bus/ti99_peb/memex.h (renamed from src/emu/bus/ti99_peb/memex.h)0
-rw-r--r--src/devices/bus/ti99_peb/myarcmem.c (renamed from src/emu/bus/ti99_peb/myarcmem.c)0
-rw-r--r--src/devices/bus/ti99_peb/myarcmem.h (renamed from src/emu/bus/ti99_peb/myarcmem.h)0
-rw-r--r--src/devices/bus/ti99_peb/pcode.c (renamed from src/emu/bus/ti99_peb/pcode.c)0
-rw-r--r--src/devices/bus/ti99_peb/pcode.h (renamed from src/emu/bus/ti99_peb/pcode.h)2
-rw-r--r--src/devices/bus/ti99_peb/peribox.c (renamed from src/emu/bus/ti99_peb/peribox.c)0
-rw-r--r--src/devices/bus/ti99_peb/peribox.h (renamed from src/emu/bus/ti99_peb/peribox.h)2
-rw-r--r--src/devices/bus/ti99_peb/samsmem.c (renamed from src/emu/bus/ti99_peb/samsmem.c)0
-rw-r--r--src/devices/bus/ti99_peb/samsmem.h (renamed from src/emu/bus/ti99_peb/samsmem.h)0
-rw-r--r--src/devices/bus/ti99_peb/spchsyn.c (renamed from src/emu/bus/ti99_peb/spchsyn.c)0
-rw-r--r--src/devices/bus/ti99_peb/spchsyn.h (renamed from src/emu/bus/ti99_peb/spchsyn.h)0
-rw-r--r--src/devices/bus/ti99_peb/ti_32kmem.c (renamed from src/emu/bus/ti99_peb/ti_32kmem.c)0
-rw-r--r--src/devices/bus/ti99_peb/ti_32kmem.h (renamed from src/emu/bus/ti99_peb/ti_32kmem.h)0
-rw-r--r--src/devices/bus/ti99_peb/ti_fdc.c (renamed from src/emu/bus/ti99_peb/ti_fdc.c)3
-rw-r--r--src/devices/bus/ti99_peb/ti_fdc.h (renamed from src/emu/bus/ti99_peb/ti_fdc.h)0
-rw-r--r--src/devices/bus/ti99_peb/ti_rs232.c (renamed from src/emu/bus/ti99_peb/ti_rs232.c)11
-rw-r--r--src/devices/bus/ti99_peb/ti_rs232.h (renamed from src/emu/bus/ti99_peb/ti_rs232.h)0
-rw-r--r--src/devices/bus/ti99_peb/tn_ide.c (renamed from src/emu/bus/ti99_peb/tn_ide.c)1
-rw-r--r--src/devices/bus/ti99_peb/tn_ide.h (renamed from src/emu/bus/ti99_peb/tn_ide.h)0
-rw-r--r--src/devices/bus/ti99_peb/tn_usbsm.c (renamed from src/emu/bus/ti99_peb/tn_usbsm.c)0
-rw-r--r--src/devices/bus/ti99_peb/tn_usbsm.h (renamed from src/emu/bus/ti99_peb/tn_usbsm.h)0
-rw-r--r--src/devices/bus/ti99x/990_dk.c (renamed from src/mess/machine/ti99/990_dk.c)0
-rw-r--r--src/devices/bus/ti99x/990_dk.h (renamed from src/mess/machine/ti99/990_dk.h)0
-rw-r--r--src/devices/bus/ti99x/990_hd.c (renamed from src/mess/machine/ti99/990_hd.c)0
-rw-r--r--src/devices/bus/ti99x/990_hd.h (renamed from src/mess/machine/ti99/990_hd.h)0
-rw-r--r--src/devices/bus/ti99x/990_tap.c (renamed from src/mess/machine/ti99/990_tap.c)0
-rw-r--r--src/devices/bus/ti99x/990_tap.h (renamed from src/mess/machine/ti99/990_tap.h)0
-rw-r--r--src/devices/bus/ti99x/998board.c (renamed from src/mess/machine/ti99/mapper8.c)267
-rw-r--r--src/devices/bus/ti99x/998board.h (renamed from src/mess/machine/ti99/mapper8.h)59
-rw-r--r--src/devices/bus/ti99x/datamux.c (renamed from src/mess/machine/ti99/datamux.c)2
-rw-r--r--src/devices/bus/ti99x/datamux.h (renamed from src/mess/machine/ti99/datamux.h)0
-rw-r--r--src/devices/bus/ti99x/genboard.c (renamed from src/mess/machine/ti99/genboard.c)351
-rw-r--r--src/devices/bus/ti99x/genboard.h (renamed from src/mess/machine/ti99/genboard.h)36
-rw-r--r--src/devices/bus/ti99x/grom.c (renamed from src/mess/machine/ti99/grom.c)0
-rw-r--r--src/devices/bus/ti99x/grom.h (renamed from src/mess/machine/ti99/grom.h)0
-rw-r--r--src/devices/bus/ti99x/gromport.c (renamed from src/mess/machine/ti99/gromport.c)216
-rw-r--r--src/devices/bus/ti99x/gromport.h (renamed from src/mess/machine/ti99/gromport.h)28
-rw-r--r--src/devices/bus/ti99x/handset.c (renamed from src/mess/machine/ti99/handset.c)0
-rw-r--r--src/devices/bus/ti99x/handset.h (renamed from src/mess/machine/ti99/handset.h)0
-rw-r--r--src/devices/bus/ti99x/joyport.c (renamed from src/mess/machine/ti99/joyport.c)0
-rw-r--r--src/devices/bus/ti99x/joyport.h (renamed from src/mess/machine/ti99/joyport.h)0
-rw-r--r--src/devices/bus/ti99x/mecmouse.c (renamed from src/mess/machine/ti99/mecmouse.c)0
-rw-r--r--src/devices/bus/ti99x/mecmouse.h (renamed from src/mess/machine/ti99/mecmouse.h)0
-rw-r--r--src/devices/bus/ti99x/ti99defs.h (renamed from src/mess/machine/ti99/ti99defs.h)6
-rw-r--r--src/devices/bus/ti99x/videowrp.c (renamed from src/mess/machine/ti99/videowrp.c)0
-rw-r--r--src/devices/bus/ti99x/videowrp.h (renamed from src/mess/machine/ti99/videowrp.h)2
-rw-r--r--src/devices/bus/tiki100/8088.c176
-rw-r--r--src/devices/bus/tiki100/8088.h60
-rw-r--r--src/devices/bus/tiki100/exp.c207
-rw-r--r--src/devices/bus/tiki100/exp.h193
-rw-r--r--src/devices/bus/tiki100/hdc.c118
-rw-r--r--src/devices/bus/tiki100/hdc.h55
-rw-r--r--src/devices/bus/tvc/hbf.c (renamed from src/emu/bus/tvc/hbf.c)0
-rw-r--r--src/devices/bus/tvc/hbf.h (renamed from src/emu/bus/tvc/hbf.h)0
-rw-r--r--src/devices/bus/tvc/tvc.c (renamed from src/emu/bus/tvc/tvc.c)0
-rw-r--r--src/devices/bus/tvc/tvc.h (renamed from src/emu/bus/tvc/tvc.h)0
-rw-r--r--src/devices/bus/vboy/rom.c (renamed from src/emu/bus/vboy/rom.c)0
-rw-r--r--src/devices/bus/vboy/rom.h (renamed from src/emu/bus/vboy/rom.h)0
-rw-r--r--src/devices/bus/vboy/slot.c (renamed from src/emu/bus/vboy/slot.c)0
-rw-r--r--src/devices/bus/vboy/slot.h (renamed from src/emu/bus/vboy/slot.h)0
-rw-r--r--src/devices/bus/vc4000/rom.c (renamed from src/emu/bus/vc4000/rom.c)0
-rw-r--r--src/devices/bus/vc4000/rom.h (renamed from src/emu/bus/vc4000/rom.h)0
-rw-r--r--src/devices/bus/vc4000/slot.c (renamed from src/emu/bus/vc4000/slot.c)0
-rw-r--r--src/devices/bus/vc4000/slot.h (renamed from src/emu/bus/vc4000/slot.h)0
-rw-r--r--src/devices/bus/vcs/compumat.c (renamed from src/emu/bus/vcs/compumat.c)0
-rw-r--r--src/devices/bus/vcs/compumat.h (renamed from src/emu/bus/vcs/compumat.h)0
-rw-r--r--src/devices/bus/vcs/dpc.c (renamed from src/emu/bus/vcs/dpc.c)0
-rw-r--r--src/devices/bus/vcs/dpc.h (renamed from src/emu/bus/vcs/dpc.h)0
-rwxr-xr-xsrc/devices/bus/vcs/rom.c (renamed from src/emu/bus/vcs/rom.c)0
-rwxr-xr-xsrc/devices/bus/vcs/rom.h (renamed from src/emu/bus/vcs/rom.h)0
-rw-r--r--src/devices/bus/vcs/scharger.c (renamed from src/emu/bus/vcs/scharger.c)0
-rw-r--r--src/devices/bus/vcs/scharger.h (renamed from src/emu/bus/vcs/scharger.h)0
-rwxr-xr-xsrc/devices/bus/vcs/vcs_slot.c (renamed from src/emu/bus/vcs/vcs_slot.c)0
-rwxr-xr-xsrc/devices/bus/vcs/vcs_slot.h (renamed from src/emu/bus/vcs/vcs_slot.h)0
-rw-r--r--src/devices/bus/vcs_ctrl/ctrl.c (renamed from src/emu/bus/vcs_ctrl/ctrl.c)0
-rw-r--r--src/devices/bus/vcs_ctrl/ctrl.h (renamed from src/emu/bus/vcs_ctrl/ctrl.h)0
-rw-r--r--src/devices/bus/vcs_ctrl/joybooster.c (renamed from src/emu/bus/vcs_ctrl/joybooster.c)0
-rw-r--r--src/devices/bus/vcs_ctrl/joybooster.h (renamed from src/emu/bus/vcs_ctrl/joybooster.h)0
-rw-r--r--src/devices/bus/vcs_ctrl/joystick.c (renamed from src/emu/bus/vcs_ctrl/joystick.c)0
-rw-r--r--src/devices/bus/vcs_ctrl/joystick.h (renamed from src/emu/bus/vcs_ctrl/joystick.h)0
-rw-r--r--src/devices/bus/vcs_ctrl/keypad.c (renamed from src/emu/bus/vcs_ctrl/keypad.c)0
-rw-r--r--src/devices/bus/vcs_ctrl/keypad.h (renamed from src/emu/bus/vcs_ctrl/keypad.h)0
-rw-r--r--src/devices/bus/vcs_ctrl/lightpen.c (renamed from src/emu/bus/vcs_ctrl/lightpen.c)0
-rw-r--r--src/devices/bus/vcs_ctrl/lightpen.h (renamed from src/emu/bus/vcs_ctrl/lightpen.h)0
-rw-r--r--src/devices/bus/vcs_ctrl/paddles.c (renamed from src/emu/bus/vcs_ctrl/paddles.c)0
-rw-r--r--src/devices/bus/vcs_ctrl/paddles.h (renamed from src/emu/bus/vcs_ctrl/paddles.h)0
-rw-r--r--src/devices/bus/vcs_ctrl/wheel.c (renamed from src/emu/bus/vcs_ctrl/wheel.c)0
-rw-r--r--src/devices/bus/vcs_ctrl/wheel.h (renamed from src/emu/bus/vcs_ctrl/wheel.h)0
-rw-r--r--src/devices/bus/vectrex/rom.c (renamed from src/emu/bus/vectrex/rom.c)0
-rw-r--r--src/devices/bus/vectrex/rom.h (renamed from src/emu/bus/vectrex/rom.h)0
-rw-r--r--src/devices/bus/vectrex/slot.c (renamed from src/emu/bus/vectrex/slot.c)0
-rw-r--r--src/devices/bus/vectrex/slot.h (renamed from src/emu/bus/vectrex/slot.h)0
-rw-r--r--src/devices/bus/vic10/exp.c (renamed from src/emu/bus/vic10/exp.c)0
-rw-r--r--src/devices/bus/vic10/exp.h (renamed from src/emu/bus/vic10/exp.h)0
-rw-r--r--src/devices/bus/vic10/std.c (renamed from src/emu/bus/vic10/std.c)0
-rw-r--r--src/devices/bus/vic10/std.h (renamed from src/emu/bus/vic10/std.h)0
-rw-r--r--src/devices/bus/vic20/4cga.c (renamed from src/emu/bus/vic20/4cga.c)0
-rw-r--r--src/devices/bus/vic20/4cga.h (renamed from src/emu/bus/vic20/4cga.h)0
-rw-r--r--src/devices/bus/vic20/exp.c (renamed from src/emu/bus/vic20/exp.c)0
-rw-r--r--src/devices/bus/vic20/exp.h (renamed from src/emu/bus/vic20/exp.h)0
-rw-r--r--src/devices/bus/vic20/fe3.c (renamed from src/emu/bus/vic20/fe3.c)0
-rw-r--r--src/devices/bus/vic20/fe3.h (renamed from src/emu/bus/vic20/fe3.h)0
-rw-r--r--src/devices/bus/vic20/megacart.c (renamed from src/emu/bus/vic20/megacart.c)0
-rw-r--r--src/devices/bus/vic20/megacart.h (renamed from src/emu/bus/vic20/megacart.h)0
-rw-r--r--src/devices/bus/vic20/std.c (renamed from src/emu/bus/vic20/std.c)0
-rw-r--r--src/devices/bus/vic20/std.h (renamed from src/emu/bus/vic20/std.h)0
-rw-r--r--src/devices/bus/vic20/user.c (renamed from src/emu/bus/vic20/user.c)0
-rw-r--r--src/devices/bus/vic20/user.h (renamed from src/emu/bus/vic20/user.h)0
-rw-r--r--src/devices/bus/vic20/vic1010.c (renamed from src/emu/bus/vic20/vic1010.c)0
-rw-r--r--src/devices/bus/vic20/vic1010.h (renamed from src/emu/bus/vic20/vic1010.h)0
-rw-r--r--src/devices/bus/vic20/vic1011.c (renamed from src/emu/bus/vic20/vic1011.c)0
-rw-r--r--src/devices/bus/vic20/vic1011.h (renamed from src/emu/bus/vic20/vic1011.h)0
-rw-r--r--src/devices/bus/vic20/vic1110.c (renamed from src/emu/bus/vic20/vic1110.c)0
-rw-r--r--src/devices/bus/vic20/vic1110.h (renamed from src/emu/bus/vic20/vic1110.h)0
-rw-r--r--src/devices/bus/vic20/vic1111.c (renamed from src/emu/bus/vic20/vic1111.c)0
-rw-r--r--src/devices/bus/vic20/vic1111.h (renamed from src/emu/bus/vic20/vic1111.h)0
-rw-r--r--src/devices/bus/vic20/vic1112.c (renamed from src/emu/bus/vic20/vic1112.c)0
-rw-r--r--src/devices/bus/vic20/vic1112.h (renamed from src/emu/bus/vic20/vic1112.h)0
-rw-r--r--src/devices/bus/vic20/vic1210.c (renamed from src/emu/bus/vic20/vic1210.c)0
-rw-r--r--src/devices/bus/vic20/vic1210.h (renamed from src/emu/bus/vic20/vic1210.h)0
-rw-r--r--src/devices/bus/vidbrain/exp.c (renamed from src/emu/bus/vidbrain/exp.c)0
-rw-r--r--src/devices/bus/vidbrain/exp.h (renamed from src/emu/bus/vidbrain/exp.h)0
-rw-r--r--src/devices/bus/vidbrain/money_minder.c (renamed from src/emu/bus/vidbrain/money_minder.c)0
-rw-r--r--src/devices/bus/vidbrain/money_minder.h (renamed from src/emu/bus/vidbrain/money_minder.h)0
-rw-r--r--src/devices/bus/vidbrain/std.c (renamed from src/emu/bus/vidbrain/std.c)0
-rw-r--r--src/devices/bus/vidbrain/std.h (renamed from src/emu/bus/vidbrain/std.h)0
-rw-r--r--src/devices/bus/vidbrain/timeshare.c (renamed from src/emu/bus/vidbrain/timeshare.c)0
-rw-r--r--src/devices/bus/vidbrain/timeshare.h (renamed from src/emu/bus/vidbrain/timeshare.h)0
-rw-r--r--src/devices/bus/vip/byteio.c (renamed from src/emu/bus/vip/byteio.c)0
-rw-r--r--src/devices/bus/vip/byteio.h (renamed from src/emu/bus/vip/byteio.h)0
-rw-r--r--src/devices/bus/vip/exp.c (renamed from src/emu/bus/vip/exp.c)0
-rw-r--r--src/devices/bus/vip/exp.h (renamed from src/emu/bus/vip/exp.h)0
-rw-r--r--src/devices/bus/vip/vp550.c (renamed from src/emu/bus/vip/vp550.c)0
-rw-r--r--src/devices/bus/vip/vp550.h (renamed from src/emu/bus/vip/vp550.h)0
-rw-r--r--src/devices/bus/vip/vp570.c (renamed from src/emu/bus/vip/vp570.c)0
-rw-r--r--src/devices/bus/vip/vp570.h (renamed from src/emu/bus/vip/vp570.h)0
-rw-r--r--src/devices/bus/vip/vp575.c (renamed from src/emu/bus/vip/vp575.c)0
-rw-r--r--src/devices/bus/vip/vp575.h (renamed from src/emu/bus/vip/vp575.h)0
-rw-r--r--src/devices/bus/vip/vp585.c (renamed from src/emu/bus/vip/vp585.c)0
-rw-r--r--src/devices/bus/vip/vp585.h (renamed from src/emu/bus/vip/vp585.h)0
-rw-r--r--src/devices/bus/vip/vp590.c (renamed from src/emu/bus/vip/vp590.c)0
-rw-r--r--src/devices/bus/vip/vp590.h (renamed from src/emu/bus/vip/vp590.h)0
-rw-r--r--src/devices/bus/vip/vp595.c (renamed from src/emu/bus/vip/vp595.c)0
-rw-r--r--src/devices/bus/vip/vp595.h (renamed from src/emu/bus/vip/vp595.h)0
-rw-r--r--src/devices/bus/vip/vp620.c (renamed from src/emu/bus/vip/vp620.c)0
-rw-r--r--src/devices/bus/vip/vp620.h (renamed from src/emu/bus/vip/vp620.h)0
-rw-r--r--src/devices/bus/vip/vp700.c (renamed from src/emu/bus/vip/vp700.c)0
-rw-r--r--src/devices/bus/vip/vp700.h (renamed from src/emu/bus/vip/vp700.h)0
-rw-r--r--src/devices/bus/vtech/ioexp/carts.c (renamed from src/emu/bus/vtech/ioexp/carts.c)0
-rw-r--r--src/devices/bus/vtech/ioexp/carts.h (renamed from src/emu/bus/vtech/ioexp/carts.h)0
-rw-r--r--src/devices/bus/vtech/ioexp/ioexp.c (renamed from src/emu/bus/vtech/ioexp/ioexp.c)0
-rw-r--r--src/devices/bus/vtech/ioexp/ioexp.h (renamed from src/emu/bus/vtech/ioexp/ioexp.h)0
-rw-r--r--src/devices/bus/vtech/ioexp/joystick.c (renamed from src/emu/bus/vtech/ioexp/joystick.c)0
-rw-r--r--src/devices/bus/vtech/ioexp/joystick.h (renamed from src/emu/bus/vtech/ioexp/joystick.h)0
-rw-r--r--src/devices/bus/vtech/ioexp/printer.c (renamed from src/emu/bus/vtech/ioexp/printer.c)0
-rw-r--r--src/devices/bus/vtech/ioexp/printer.h (renamed from src/emu/bus/vtech/ioexp/printer.h)0
-rw-r--r--src/devices/bus/vtech/memexp/carts.c (renamed from src/emu/bus/vtech/memexp/carts.c)0
-rw-r--r--src/devices/bus/vtech/memexp/carts.h (renamed from src/emu/bus/vtech/memexp/carts.h)0
-rw-r--r--src/devices/bus/vtech/memexp/floppy.c (renamed from src/emu/bus/vtech/memexp/floppy.c)0
-rw-r--r--src/devices/bus/vtech/memexp/floppy.h (renamed from src/emu/bus/vtech/memexp/floppy.h)0
-rw-r--r--src/devices/bus/vtech/memexp/memexp.c (renamed from src/emu/bus/vtech/memexp/memexp.c)0
-rw-r--r--src/devices/bus/vtech/memexp/memexp.h (renamed from src/emu/bus/vtech/memexp/memexp.h)0
-rw-r--r--src/devices/bus/vtech/memexp/memory.c (renamed from src/emu/bus/vtech/memexp/memory.c)0
-rw-r--r--src/devices/bus/vtech/memexp/memory.h (renamed from src/emu/bus/vtech/memexp/memory.h)0
-rw-r--r--src/devices/bus/vtech/memexp/rs232.c (renamed from src/emu/bus/vtech/memexp/rs232.c)0
-rw-r--r--src/devices/bus/vtech/memexp/rs232.h (renamed from src/emu/bus/vtech/memexp/rs232.h)0
-rw-r--r--src/devices/bus/vtech/memexp/wordpro.c (renamed from src/emu/bus/vtech/memexp/wordpro.c)0
-rw-r--r--src/devices/bus/vtech/memexp/wordpro.h (renamed from src/emu/bus/vtech/memexp/wordpro.h)0
-rw-r--r--src/devices/bus/wangpc/emb.c (renamed from src/emu/bus/wangpc/emb.c)0
-rw-r--r--src/devices/bus/wangpc/emb.h (renamed from src/emu/bus/wangpc/emb.h)0
-rw-r--r--src/devices/bus/wangpc/lic.c (renamed from src/emu/bus/wangpc/lic.c)0
-rw-r--r--src/devices/bus/wangpc/lic.h (renamed from src/emu/bus/wangpc/lic.h)0
-rw-r--r--src/devices/bus/wangpc/lvc.c (renamed from src/emu/bus/wangpc/lvc.c)0
-rw-r--r--src/devices/bus/wangpc/lvc.h (renamed from src/emu/bus/wangpc/lvc.h)0
-rw-r--r--src/devices/bus/wangpc/mcc.c (renamed from src/emu/bus/wangpc/mcc.c)0
-rw-r--r--src/devices/bus/wangpc/mcc.h (renamed from src/emu/bus/wangpc/mcc.h)0
-rw-r--r--src/devices/bus/wangpc/mvc.c (renamed from src/emu/bus/wangpc/mvc.c)0
-rw-r--r--src/devices/bus/wangpc/mvc.h (renamed from src/emu/bus/wangpc/mvc.h)0
-rw-r--r--src/devices/bus/wangpc/rtc.c (renamed from src/emu/bus/wangpc/rtc.c)0
-rw-r--r--src/devices/bus/wangpc/rtc.h (renamed from src/emu/bus/wangpc/rtc.h)0
-rw-r--r--src/devices/bus/wangpc/tig.c (renamed from src/emu/bus/wangpc/tig.c)0
-rw-r--r--src/devices/bus/wangpc/tig.h (renamed from src/emu/bus/wangpc/tig.h)0
-rw-r--r--src/devices/bus/wangpc/wangpc.c (renamed from src/emu/bus/wangpc/wangpc.c)0
-rw-r--r--src/devices/bus/wangpc/wangpc.h (renamed from src/emu/bus/wangpc/wangpc.h)0
-rw-r--r--src/devices/bus/wangpc/wdc.c (renamed from src/emu/bus/wangpc/wdc.c)0
-rw-r--r--src/devices/bus/wangpc/wdc.h (renamed from src/emu/bus/wangpc/wdc.h)0
-rw-r--r--src/devices/bus/wswan/rom.c (renamed from src/emu/bus/wswan/rom.c)0
-rw-r--r--src/devices/bus/wswan/rom.h (renamed from src/emu/bus/wswan/rom.h)0
-rw-r--r--src/devices/bus/wswan/slot.c (renamed from src/emu/bus/wswan/slot.c)0
-rw-r--r--src/devices/bus/wswan/slot.h (renamed from src/emu/bus/wswan/slot.h)0
-rw-r--r--src/devices/bus/x68k/x68k_neptunex.c (renamed from src/emu/bus/x68k/x68k_neptunex.c)0
-rw-r--r--src/devices/bus/x68k/x68k_neptunex.h (renamed from src/emu/bus/x68k/x68k_neptunex.h)0
-rw-r--r--src/devices/bus/x68k/x68k_scsiext.c (renamed from src/emu/bus/x68k/x68k_scsiext.c)0
-rw-r--r--src/devices/bus/x68k/x68k_scsiext.h (renamed from src/emu/bus/x68k/x68k_scsiext.h)0
-rw-r--r--src/devices/bus/x68k/x68kexp.c (renamed from src/emu/bus/x68k/x68kexp.c)0
-rw-r--r--src/devices/bus/x68k/x68kexp.h (renamed from src/emu/bus/x68k/x68kexp.h)0
-rw-r--r--src/devices/bus/z88/flash.c (renamed from src/emu/bus/z88/flash.c)0
-rw-r--r--src/devices/bus/z88/flash.h (renamed from src/emu/bus/z88/flash.h)0
-rw-r--r--src/devices/bus/z88/ram.c (renamed from src/emu/bus/z88/ram.c)0
-rw-r--r--src/devices/bus/z88/ram.h (renamed from src/emu/bus/z88/ram.h)0
-rw-r--r--src/devices/bus/z88/rom.c (renamed from src/emu/bus/z88/rom.c)0
-rw-r--r--src/devices/bus/z88/rom.h (renamed from src/emu/bus/z88/rom.h)0
-rw-r--r--src/devices/bus/z88/z88.c (renamed from src/emu/bus/z88/z88.c)0
-rw-r--r--src/devices/bus/z88/z88.h (renamed from src/emu/bus/z88/z88.h)0
-rw-r--r--src/devices/cpu/8x300/8x300.c (renamed from src/emu/cpu/8x300/8x300.c)0
-rw-r--r--src/devices/cpu/8x300/8x300.h (renamed from src/emu/cpu/8x300/8x300.h)0
-rw-r--r--src/devices/cpu/8x300/8x300dasm.c (renamed from src/emu/cpu/8x300/8x300dasm.c)0
-rw-r--r--src/devices/cpu/adsp2100/2100dasm.c (renamed from src/emu/cpu/adsp2100/2100dasm.c)0
-rw-r--r--src/devices/cpu/adsp2100/2100ops.inc (renamed from src/emu/cpu/adsp2100/2100ops.inc)0
-rw-r--r--src/devices/cpu/adsp2100/adsp2100.c (renamed from src/emu/cpu/adsp2100/adsp2100.c)0
-rw-r--r--src/devices/cpu/adsp2100/adsp2100.h (renamed from src/emu/cpu/adsp2100/adsp2100.h)0
-rw-r--r--src/devices/cpu/alph8201/8201dasm.c (renamed from src/emu/cpu/alph8201/8201dasm.c)0
-rw-r--r--src/devices/cpu/alph8201/alph8201.c (renamed from src/emu/cpu/alph8201/alph8201.c)0
-rw-r--r--src/devices/cpu/alph8201/alph8201.h (renamed from src/emu/cpu/alph8201/alph8201.h)0
-rw-r--r--src/devices/cpu/alto2/a2curt.c (renamed from src/emu/cpu/alto2/a2curt.c)0
-rw-r--r--src/devices/cpu/alto2/a2curt.h (renamed from src/emu/cpu/alto2/a2curt.h)0
-rw-r--r--src/devices/cpu/alto2/a2dht.c (renamed from src/emu/cpu/alto2/a2dht.c)0
-rw-r--r--src/devices/cpu/alto2/a2dht.h (renamed from src/emu/cpu/alto2/a2dht.h)0
-rw-r--r--src/devices/cpu/alto2/a2disk.c (renamed from src/emu/cpu/alto2/a2disk.c)0
-rw-r--r--src/devices/cpu/alto2/a2disk.h (renamed from src/emu/cpu/alto2/a2disk.h)0
-rw-r--r--src/devices/cpu/alto2/a2disp.c (renamed from src/emu/cpu/alto2/a2disp.c)0
-rw-r--r--src/devices/cpu/alto2/a2disp.h (renamed from src/emu/cpu/alto2/a2disp.h)0
-rw-r--r--src/devices/cpu/alto2/a2dvt.c (renamed from src/emu/cpu/alto2/a2dvt.c)0
-rw-r--r--src/devices/cpu/alto2/a2dvt.h (renamed from src/emu/cpu/alto2/a2dvt.h)0
-rw-r--r--src/devices/cpu/alto2/a2dwt.c (renamed from src/emu/cpu/alto2/a2dwt.c)0
-rw-r--r--src/devices/cpu/alto2/a2dwt.h (renamed from src/emu/cpu/alto2/a2dwt.h)0
-rw-r--r--src/devices/cpu/alto2/a2emu.c (renamed from src/emu/cpu/alto2/a2emu.c)0
-rw-r--r--src/devices/cpu/alto2/a2emu.h (renamed from src/emu/cpu/alto2/a2emu.h)0
-rw-r--r--src/devices/cpu/alto2/a2ether.c (renamed from src/emu/cpu/alto2/a2ether.c)0
-rw-r--r--src/devices/cpu/alto2/a2ether.h (renamed from src/emu/cpu/alto2/a2ether.h)0
-rw-r--r--src/devices/cpu/alto2/a2hw.c (renamed from src/emu/cpu/alto2/a2hw.c)0
-rw-r--r--src/devices/cpu/alto2/a2hw.h (renamed from src/emu/cpu/alto2/a2hw.h)0
-rw-r--r--src/devices/cpu/alto2/a2jkff.h (renamed from src/emu/cpu/alto2/a2jkff.h)0
-rw-r--r--src/devices/cpu/alto2/a2kbd.c (renamed from src/emu/cpu/alto2/a2kbd.c)0
-rw-r--r--src/devices/cpu/alto2/a2kbd.h (renamed from src/emu/cpu/alto2/a2kbd.h)0
-rw-r--r--src/devices/cpu/alto2/a2ksec.c (renamed from src/emu/cpu/alto2/a2ksec.c)0
-rw-r--r--src/devices/cpu/alto2/a2ksec.h (renamed from src/emu/cpu/alto2/a2ksec.h)0
-rw-r--r--src/devices/cpu/alto2/a2kwd.c (renamed from src/emu/cpu/alto2/a2kwd.c)0
-rw-r--r--src/devices/cpu/alto2/a2kwd.h (renamed from src/emu/cpu/alto2/a2kwd.h)0
-rw-r--r--src/devices/cpu/alto2/a2mem.c (renamed from src/emu/cpu/alto2/a2mem.c)0
-rw-r--r--src/devices/cpu/alto2/a2mem.h (renamed from src/emu/cpu/alto2/a2mem.h)0
-rw-r--r--src/devices/cpu/alto2/a2mouse.c (renamed from src/emu/cpu/alto2/a2mouse.c)0
-rw-r--r--src/devices/cpu/alto2/a2mouse.h (renamed from src/emu/cpu/alto2/a2mouse.h)0
-rw-r--r--src/devices/cpu/alto2/a2mrt.c (renamed from src/emu/cpu/alto2/a2mrt.c)0
-rw-r--r--src/devices/cpu/alto2/a2mrt.h (renamed from src/emu/cpu/alto2/a2mrt.h)0
-rw-r--r--src/devices/cpu/alto2/a2part.c (renamed from src/emu/cpu/alto2/a2part.c)0
-rw-r--r--src/devices/cpu/alto2/a2part.h (renamed from src/emu/cpu/alto2/a2part.h)0
-rw-r--r--src/devices/cpu/alto2/a2ram.c (renamed from src/emu/cpu/alto2/a2ram.c)0
-rw-r--r--src/devices/cpu/alto2/a2ram.h (renamed from src/emu/cpu/alto2/a2ram.h)0
-rw-r--r--src/devices/cpu/alto2/a2roms.c (renamed from src/emu/cpu/alto2/a2roms.c)0
-rw-r--r--src/devices/cpu/alto2/a2roms.h (renamed from src/emu/cpu/alto2/a2roms.h)0
-rw-r--r--src/devices/cpu/alto2/alto2cpu.c (renamed from src/emu/cpu/alto2/alto2cpu.c)0
-rw-r--r--src/devices/cpu/alto2/alto2cpu.h (renamed from src/emu/cpu/alto2/alto2cpu.h)0
-rw-r--r--src/devices/cpu/alto2/alto2dsm.c (renamed from src/emu/cpu/alto2/alto2dsm.c)0
-rw-r--r--src/devices/cpu/am29000/am29000.c (renamed from src/emu/cpu/am29000/am29000.c)0
-rw-r--r--src/devices/cpu/am29000/am29000.h (renamed from src/emu/cpu/am29000/am29000.h)0
-rw-r--r--src/devices/cpu/am29000/am29dasm.c (renamed from src/emu/cpu/am29000/am29dasm.c)0
-rw-r--r--src/devices/cpu/am29000/am29ops.h (renamed from src/emu/cpu/am29000/am29ops.h)0
-rw-r--r--src/devices/cpu/amis2000/amis2000.c (renamed from src/emu/cpu/amis2000/amis2000.c)0
-rw-r--r--src/devices/cpu/amis2000/amis2000.h (renamed from src/emu/cpu/amis2000/amis2000.h)0
-rw-r--r--src/devices/cpu/amis2000/amis2000d.c (renamed from src/emu/cpu/amis2000/amis2000d.c)0
-rw-r--r--src/devices/cpu/amis2000/amis2000op.c (renamed from src/emu/cpu/amis2000/amis2000op.c)0
-rw-r--r--src/devices/cpu/apexc/apexc.c (renamed from src/emu/cpu/apexc/apexc.c)0
-rw-r--r--src/devices/cpu/apexc/apexc.h (renamed from src/emu/cpu/apexc/apexc.h)0
-rw-r--r--src/devices/cpu/apexc/apexcdsm.c (renamed from src/emu/cpu/apexc/apexcdsm.c)0
-rw-r--r--src/devices/cpu/arc/arc.c (renamed from src/emu/cpu/arc/arc.c)0
-rw-r--r--src/devices/cpu/arc/arc.h (renamed from src/emu/cpu/arc/arc.h)0
-rw-r--r--src/devices/cpu/arc/arcdasm.c (renamed from src/emu/cpu/arc/arcdasm.c)0
-rw-r--r--src/devices/cpu/arcompact/arcompact.c (renamed from src/emu/cpu/arcompact/arcompact.c)0
-rw-r--r--src/devices/cpu/arcompact/arcompact.h (renamed from src/emu/cpu/arcompact/arcompact.h)0
-rw-r--r--src/devices/cpu/arcompact/arcompact_common.c (renamed from src/emu/cpu/arcompact/arcompact_common.c)0
-rw-r--r--src/devices/cpu/arcompact/arcompact_common.h (renamed from src/emu/cpu/arcompact/arcompact_common.h)0
-rw-r--r--src/devices/cpu/arcompact/arcompact_execute.c (renamed from src/emu/cpu/arcompact/arcompact_execute.c)0
-rw-r--r--src/devices/cpu/arcompact/arcompact_make.py434
-rw-r--r--src/devices/cpu/arcompact/arcompactdasm.c (renamed from src/emu/cpu/arcompact/arcompactdasm.c)0
-rw-r--r--src/devices/cpu/arcompact/arcompactdasm_dispatch.c (renamed from src/emu/cpu/arcompact/arcompactdasm_dispatch.c)0
-rw-r--r--src/devices/cpu/arcompact/arcompactdasm_dispatch.h (renamed from src/emu/cpu/arcompact/arcompactdasm_dispatch.h)0
-rw-r--r--src/devices/cpu/arcompact/arcompactdasm_ops.c (renamed from src/emu/cpu/arcompact/arcompactdasm_ops.c)0
-rw-r--r--src/devices/cpu/arcompact/arcompactdasm_ops.h (renamed from src/emu/cpu/arcompact/arcompactdasm_ops.h)0
-rw-r--r--src/devices/cpu/arm/arm.c (renamed from src/emu/cpu/arm/arm.c)0
-rw-r--r--src/devices/cpu/arm/arm.h (renamed from src/emu/cpu/arm/arm.h)0
-rw-r--r--src/devices/cpu/arm/armdasm.c (renamed from src/emu/cpu/arm/armdasm.c)0
-rw-r--r--src/devices/cpu/arm7/arm7.c (renamed from src/emu/cpu/arm7/arm7.c)0
-rw-r--r--src/devices/cpu/arm7/arm7.h (renamed from src/emu/cpu/arm7/arm7.h)0
-rw-r--r--src/devices/cpu/arm7/arm7core.h (renamed from src/emu/cpu/arm7/arm7core.h)0
-rw-r--r--src/devices/cpu/arm7/arm7core.inc (renamed from src/emu/cpu/arm7/arm7core.inc)0
-rw-r--r--src/devices/cpu/arm7/arm7dasm.c (renamed from src/emu/cpu/arm7/arm7dasm.c)0
-rw-r--r--src/devices/cpu/arm7/arm7drc.inc (renamed from src/emu/cpu/arm7/arm7drc.inc)0
-rw-r--r--src/devices/cpu/arm7/arm7help.h (renamed from src/emu/cpu/arm7/arm7help.h)0
-rw-r--r--src/devices/cpu/arm7/arm7ops.c (renamed from src/emu/cpu/arm7/arm7ops.c)0
-rw-r--r--src/devices/cpu/arm7/arm7tdrc.inc (renamed from src/emu/cpu/arm7/arm7tdrc.inc)0
-rw-r--r--src/devices/cpu/arm7/arm7thmb.c (renamed from src/emu/cpu/arm7/arm7thmb.c)0
-rw-r--r--src/devices/cpu/asap/asap.c (renamed from src/emu/cpu/asap/asap.c)0
-rw-r--r--src/devices/cpu/asap/asap.h (renamed from src/emu/cpu/asap/asap.h)0
-rw-r--r--src/devices/cpu/asap/asapdasm.c (renamed from src/emu/cpu/asap/asapdasm.c)0
-rw-r--r--src/devices/cpu/avr8/avr8.c (renamed from src/emu/cpu/avr8/avr8.c)18
-rw-r--r--src/devices/cpu/avr8/avr8.h (renamed from src/emu/cpu/avr8/avr8.h)18
-rw-r--r--src/devices/cpu/avr8/avr8dasm.c (renamed from src/emu/cpu/avr8/avr8dasm.c)2
-rw-r--r--src/devices/cpu/ccpu/ccpu.c (renamed from src/emu/cpu/ccpu/ccpu.c)0
-rw-r--r--src/devices/cpu/ccpu/ccpu.h (renamed from src/emu/cpu/ccpu/ccpu.h)0
-rw-r--r--src/devices/cpu/ccpu/ccpudasm.c (renamed from src/emu/cpu/ccpu/ccpudasm.c)0
-rw-r--r--src/devices/cpu/cop400/cop400.c (renamed from src/emu/cpu/cop400/cop400.c)0
-rw-r--r--src/devices/cpu/cop400/cop400.h (renamed from src/emu/cpu/cop400/cop400.h)0
-rw-r--r--src/devices/cpu/cop400/cop400op.inc (renamed from src/emu/cpu/cop400/cop400op.inc)0
-rw-r--r--src/devices/cpu/cop400/cop410ds.c (renamed from src/emu/cpu/cop400/cop410ds.c)0
-rw-r--r--src/devices/cpu/cop400/cop420ds.c (renamed from src/emu/cpu/cop400/cop420ds.c)0
-rw-r--r--src/devices/cpu/cop400/cop440ds.c (renamed from src/emu/cpu/cop400/cop440ds.c)0
-rw-r--r--src/devices/cpu/cosmac/cosdasm.c (renamed from src/emu/cpu/cosmac/cosdasm.c)0
-rw-r--r--src/devices/cpu/cosmac/cosmac.c (renamed from src/emu/cpu/cosmac/cosmac.c)0
-rw-r--r--src/devices/cpu/cosmac/cosmac.h (renamed from src/emu/cpu/cosmac/cosmac.h)0
-rw-r--r--src/devices/cpu/cp1610/1610dasm.c (renamed from src/emu/cpu/cp1610/1610dasm.c)0
-rw-r--r--src/devices/cpu/cp1610/cp1610.c (renamed from src/emu/cpu/cp1610/cp1610.c)0
-rw-r--r--src/devices/cpu/cp1610/cp1610.h (renamed from src/emu/cpu/cp1610/cp1610.h)0
-rw-r--r--src/devices/cpu/cubeqcpu/cubedasm.c (renamed from src/emu/cpu/cubeqcpu/cubedasm.c)0
-rw-r--r--src/devices/cpu/cubeqcpu/cubeqcpu.c (renamed from src/emu/cpu/cubeqcpu/cubeqcpu.c)0
-rw-r--r--src/devices/cpu/cubeqcpu/cubeqcpu.h (renamed from src/emu/cpu/cubeqcpu/cubeqcpu.h)0
-rw-r--r--src/devices/cpu/drcbec.c (renamed from src/emu/cpu/drcbec.c)0
-rw-r--r--src/devices/cpu/drcbec.h (renamed from src/emu/cpu/drcbec.h)0
-rw-r--r--src/devices/cpu/drcbeut.c (renamed from src/emu/cpu/drcbeut.c)0
-rw-r--r--src/devices/cpu/drcbeut.h (renamed from src/emu/cpu/drcbeut.h)0
-rw-r--r--src/devices/cpu/drcbex64.c (renamed from src/emu/cpu/drcbex64.c)0
-rw-r--r--src/devices/cpu/drcbex64.h (renamed from src/emu/cpu/drcbex64.h)0
-rw-r--r--src/devices/cpu/drcbex86.c (renamed from src/emu/cpu/drcbex86.c)0
-rw-r--r--src/devices/cpu/drcbex86.h (renamed from src/emu/cpu/drcbex86.h)0
-rw-r--r--src/devices/cpu/drccache.c (renamed from src/emu/cpu/drccache.c)0
-rw-r--r--src/devices/cpu/drccache.h (renamed from src/emu/cpu/drccache.h)0
-rw-r--r--src/devices/cpu/drcfe.c (renamed from src/emu/cpu/drcfe.c)0
-rw-r--r--src/devices/cpu/drcfe.h (renamed from src/emu/cpu/drcfe.h)0
-rw-r--r--src/devices/cpu/drcuml.c (renamed from src/emu/cpu/drcuml.c)0
-rw-r--r--src/devices/cpu/drcuml.h (renamed from src/emu/cpu/drcuml.h)0
-rw-r--r--src/devices/cpu/drcumlsh.h (renamed from src/emu/cpu/drcumlsh.h)0
-rw-r--r--src/devices/cpu/dsp16/dsp16.c (renamed from src/emu/cpu/dsp16/dsp16.c)0
-rw-r--r--src/devices/cpu/dsp16/dsp16.h (renamed from src/emu/cpu/dsp16/dsp16.h)0
-rw-r--r--src/devices/cpu/dsp16/dsp16dis.c (renamed from src/emu/cpu/dsp16/dsp16dis.c)0
-rw-r--r--src/devices/cpu/dsp16/dsp16ops.inc (renamed from src/emu/cpu/dsp16/dsp16ops.inc)0
-rw-r--r--src/devices/cpu/dsp32/dsp32.c (renamed from src/emu/cpu/dsp32/dsp32.c)0
-rw-r--r--src/devices/cpu/dsp32/dsp32.h (renamed from src/emu/cpu/dsp32/dsp32.h)0
-rw-r--r--src/devices/cpu/dsp32/dsp32dis.c (renamed from src/emu/cpu/dsp32/dsp32dis.c)0
-rw-r--r--src/devices/cpu/dsp32/dsp32ops.inc (renamed from src/emu/cpu/dsp32/dsp32ops.inc)0
-rw-r--r--src/devices/cpu/dsp56k/dsp56def.h (renamed from src/emu/cpu/dsp56k/dsp56def.h)0
-rw-r--r--src/devices/cpu/dsp56k/dsp56dsm.c (renamed from src/emu/cpu/dsp56k/dsp56dsm.c)0
-rw-r--r--src/devices/cpu/dsp56k/dsp56k.c (renamed from src/emu/cpu/dsp56k/dsp56k.c)0
-rw-r--r--src/devices/cpu/dsp56k/dsp56k.h (renamed from src/emu/cpu/dsp56k/dsp56k.h)0
-rw-r--r--src/devices/cpu/dsp56k/dsp56mem.c (renamed from src/emu/cpu/dsp56k/dsp56mem.c)0
-rw-r--r--src/devices/cpu/dsp56k/dsp56mem.h (renamed from src/emu/cpu/dsp56k/dsp56mem.h)0
-rw-r--r--src/devices/cpu/dsp56k/dsp56ops.inc (renamed from src/emu/cpu/dsp56k/dsp56ops.inc)0
-rw-r--r--src/devices/cpu/dsp56k/dsp56pcu.c (renamed from src/emu/cpu/dsp56k/dsp56pcu.c)0
-rw-r--r--src/devices/cpu/dsp56k/dsp56pcu.h (renamed from src/emu/cpu/dsp56k/dsp56pcu.h)0
-rw-r--r--src/devices/cpu/dsp56k/inst.c (renamed from src/emu/cpu/dsp56k/inst.c)0
-rw-r--r--src/devices/cpu/dsp56k/inst.h (renamed from src/emu/cpu/dsp56k/inst.h)0
-rw-r--r--src/devices/cpu/dsp56k/opcode.c (renamed from src/emu/cpu/dsp56k/opcode.c)0
-rw-r--r--src/devices/cpu/dsp56k/opcode.h (renamed from src/emu/cpu/dsp56k/opcode.h)0
-rw-r--r--src/devices/cpu/dsp56k/pmove.c (renamed from src/emu/cpu/dsp56k/pmove.c)0
-rw-r--r--src/devices/cpu/dsp56k/pmove.h (renamed from src/emu/cpu/dsp56k/pmove.h)0
-rw-r--r--src/devices/cpu/dsp56k/tables.c (renamed from src/emu/cpu/dsp56k/tables.c)0
-rw-r--r--src/devices/cpu/dsp56k/tables.h (renamed from src/emu/cpu/dsp56k/tables.h)0
-rw-r--r--src/devices/cpu/e0c6200/e0c6200.c (renamed from src/emu/cpu/e0c6200/e0c6200.c)0
-rw-r--r--src/devices/cpu/e0c6200/e0c6200.h (renamed from src/emu/cpu/e0c6200/e0c6200.h)0
-rw-r--r--src/devices/cpu/e0c6200/e0c6200d.c (renamed from src/emu/cpu/e0c6200/e0c6200d.c)0
-rw-r--r--src/devices/cpu/e0c6200/e0c6200op.inc (renamed from src/emu/cpu/e0c6200/e0c6200op.inc)0
-rw-r--r--src/devices/cpu/e0c6200/e0c6s46.c (renamed from src/emu/cpu/e0c6200/e0c6s46.c)0
-rw-r--r--src/devices/cpu/e0c6200/e0c6s46.h (renamed from src/emu/cpu/e0c6200/e0c6s46.h)0
-rw-r--r--src/devices/cpu/e132xs/32xsdasm.c (renamed from src/emu/cpu/e132xs/32xsdasm.c)0
-rw-r--r--src/devices/cpu/e132xs/e132xs.c (renamed from src/emu/cpu/e132xs/e132xs.c)16
-rw-r--r--src/devices/cpu/e132xs/e132xs.h (renamed from src/emu/cpu/e132xs/e132xs.h)0
-rw-r--r--src/devices/cpu/e132xs/e132xsop.inc (renamed from src/emu/cpu/e132xs/e132xsop.inc)0
-rw-r--r--src/devices/cpu/es5510/es5510.c (renamed from src/emu/cpu/es5510/es5510.c)0
-rw-r--r--src/devices/cpu/es5510/es5510.h (renamed from src/emu/cpu/es5510/es5510.h)0
-rw-r--r--src/devices/cpu/esrip/esrip.c (renamed from src/emu/cpu/esrip/esrip.c)0
-rw-r--r--src/devices/cpu/esrip/esrip.h (renamed from src/emu/cpu/esrip/esrip.h)0
-rw-r--r--src/devices/cpu/esrip/esripdsm.c (renamed from src/emu/cpu/esrip/esripdsm.c)0
-rw-r--r--src/devices/cpu/f8/f8.c (renamed from src/emu/cpu/f8/f8.c)0
-rw-r--r--src/devices/cpu/f8/f8.h (renamed from src/emu/cpu/f8/f8.h)0
-rw-r--r--src/devices/cpu/f8/f8dasm.c (renamed from src/emu/cpu/f8/f8dasm.c)0
-rw-r--r--src/devices/cpu/g65816/g65816.c (renamed from src/emu/cpu/g65816/g65816.c)0
-rw-r--r--src/devices/cpu/g65816/g65816.h (renamed from src/emu/cpu/g65816/g65816.h)0
-rw-r--r--src/devices/cpu/g65816/g65816cm.h (renamed from src/emu/cpu/g65816/g65816cm.h)0
-rw-r--r--src/devices/cpu/g65816/g65816ds.c (renamed from src/emu/cpu/g65816/g65816ds.c)0
-rw-r--r--src/devices/cpu/g65816/g65816ds.h (renamed from src/emu/cpu/g65816/g65816ds.h)0
-rw-r--r--src/devices/cpu/g65816/g65816o0.c (renamed from src/emu/cpu/g65816/g65816o0.c)0
-rw-r--r--src/devices/cpu/g65816/g65816o1.c (renamed from src/emu/cpu/g65816/g65816o1.c)0
-rw-r--r--src/devices/cpu/g65816/g65816o2.c (renamed from src/emu/cpu/g65816/g65816o2.c)0
-rw-r--r--src/devices/cpu/g65816/g65816o3.c (renamed from src/emu/cpu/g65816/g65816o3.c)0
-rw-r--r--src/devices/cpu/g65816/g65816o4.c (renamed from src/emu/cpu/g65816/g65816o4.c)0
-rw-r--r--src/devices/cpu/g65816/g65816op.h (renamed from src/emu/cpu/g65816/g65816op.h)0
-rw-r--r--src/devices/cpu/h6280/6280dasm.c (renamed from src/emu/cpu/h6280/6280dasm.c)5
-rw-r--r--src/devices/cpu/h6280/h6280.c (renamed from src/emu/cpu/h6280/h6280.c)0
-rw-r--r--src/devices/cpu/h6280/h6280.h (renamed from src/emu/cpu/h6280/h6280.h)0
-rw-r--r--src/devices/cpu/h8/h8.c (renamed from src/emu/cpu/h8/h8.c)0
-rw-r--r--src/devices/cpu/h8/h8.h (renamed from src/emu/cpu/h8/h8.h)0
-rw-r--r--src/devices/cpu/h8/h8.lst (renamed from src/emu/cpu/h8/h8.lst)0
-rw-r--r--src/devices/cpu/h8/h83002.c (renamed from src/emu/cpu/h8/h83002.c)0
-rw-r--r--src/devices/cpu/h8/h83002.h (renamed from src/emu/cpu/h8/h83002.h)0
-rw-r--r--src/devices/cpu/h8/h83006.c (renamed from src/emu/cpu/h8/h83006.c)0
-rw-r--r--src/devices/cpu/h8/h83006.h (renamed from src/emu/cpu/h8/h83006.h)0
-rw-r--r--src/devices/cpu/h8/h83008.c (renamed from src/emu/cpu/h8/h83008.c)0
-rw-r--r--src/devices/cpu/h8/h83008.h (renamed from src/emu/cpu/h8/h83008.h)0
-rw-r--r--src/devices/cpu/h8/h83048.c (renamed from src/emu/cpu/h8/h83048.c)0
-rw-r--r--src/devices/cpu/h8/h83048.h (renamed from src/emu/cpu/h8/h83048.h)0
-rw-r--r--src/devices/cpu/h8/h83337.c (renamed from src/emu/cpu/h8/h83337.c)0
-rw-r--r--src/devices/cpu/h8/h83337.h (renamed from src/emu/cpu/h8/h83337.h)0
-rw-r--r--src/devices/cpu/h8/h8_adc.c (renamed from src/emu/cpu/h8/h8_adc.c)0
-rw-r--r--src/devices/cpu/h8/h8_adc.h (renamed from src/emu/cpu/h8/h8_adc.h)0
-rw-r--r--src/devices/cpu/h8/h8_intc.c (renamed from src/emu/cpu/h8/h8_intc.c)0
-rw-r--r--src/devices/cpu/h8/h8_intc.h (renamed from src/emu/cpu/h8/h8_intc.h)0
-rw-r--r--src/devices/cpu/h8/h8_port.c (renamed from src/emu/cpu/h8/h8_port.c)0
-rw-r--r--src/devices/cpu/h8/h8_port.h (renamed from src/emu/cpu/h8/h8_port.h)0
-rw-r--r--src/devices/cpu/h8/h8_sci.c (renamed from src/emu/cpu/h8/h8_sci.c)0
-rw-r--r--src/devices/cpu/h8/h8_sci.h (renamed from src/emu/cpu/h8/h8_sci.h)0
-rw-r--r--src/devices/cpu/h8/h8_timer16.c (renamed from src/emu/cpu/h8/h8_timer16.c)2
-rw-r--r--src/devices/cpu/h8/h8_timer16.h (renamed from src/emu/cpu/h8/h8_timer16.h)0
-rw-r--r--src/devices/cpu/h8/h8_timer8.c (renamed from src/emu/cpu/h8/h8_timer8.c)0
-rw-r--r--src/devices/cpu/h8/h8_timer8.h (renamed from src/emu/cpu/h8/h8_timer8.h)0
-rw-r--r--src/devices/cpu/h8/h8h.c (renamed from src/emu/cpu/h8/h8h.c)0
-rw-r--r--src/devices/cpu/h8/h8h.h (renamed from src/emu/cpu/h8/h8h.h)0
-rw-r--r--src/devices/cpu/h8/h8make.py (renamed from src/emu/cpu/h8/h8make.py)118
-rw-r--r--src/devices/cpu/h8/h8s2000.c (renamed from src/emu/cpu/h8/h8s2000.c)0
-rw-r--r--src/devices/cpu/h8/h8s2000.h (renamed from src/emu/cpu/h8/h8s2000.h)0
-rw-r--r--src/devices/cpu/h8/h8s2245.c (renamed from src/emu/cpu/h8/h8s2245.c)0
-rw-r--r--src/devices/cpu/h8/h8s2245.h (renamed from src/emu/cpu/h8/h8s2245.h)0
-rw-r--r--src/devices/cpu/h8/h8s2320.c (renamed from src/emu/cpu/h8/h8s2320.c)0
-rw-r--r--src/devices/cpu/h8/h8s2320.h (renamed from src/emu/cpu/h8/h8s2320.h)0
-rw-r--r--src/devices/cpu/h8/h8s2357.c (renamed from src/emu/cpu/h8/h8s2357.c)0
-rw-r--r--src/devices/cpu/h8/h8s2357.h (renamed from src/emu/cpu/h8/h8s2357.h)0
-rw-r--r--src/devices/cpu/h8/h8s2600.c (renamed from src/emu/cpu/h8/h8s2600.c)0
-rw-r--r--src/devices/cpu/h8/h8s2600.h (renamed from src/emu/cpu/h8/h8s2600.h)0
-rw-r--r--src/devices/cpu/h8/h8s2655.c (renamed from src/emu/cpu/h8/h8s2655.c)0
-rw-r--r--src/devices/cpu/h8/h8s2655.h (renamed from src/emu/cpu/h8/h8s2655.h)0
-rw-r--r--src/devices/cpu/hcd62121/hcd62121.c (renamed from src/emu/cpu/hcd62121/hcd62121.c)0
-rw-r--r--src/devices/cpu/hcd62121/hcd62121.h (renamed from src/emu/cpu/hcd62121/hcd62121.h)0
-rw-r--r--src/devices/cpu/hcd62121/hcd62121_ops.h (renamed from src/emu/cpu/hcd62121/hcd62121_ops.h)0
-rw-r--r--src/devices/cpu/hcd62121/hcd62121d.c (renamed from src/emu/cpu/hcd62121/hcd62121d.c)0
-rw-r--r--src/devices/cpu/hd61700/hd61700.c (renamed from src/emu/cpu/hd61700/hd61700.c)0
-rw-r--r--src/devices/cpu/hd61700/hd61700.h (renamed from src/emu/cpu/hd61700/hd61700.h)0
-rw-r--r--src/devices/cpu/hd61700/hd61700d.c (renamed from src/emu/cpu/hd61700/hd61700d.c)0
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.c (renamed from src/emu/cpu/hmcs40/hmcs40.c)0
-rw-r--r--src/devices/cpu/hmcs40/hmcs40.h (renamed from src/emu/cpu/hmcs40/hmcs40.h)0
-rw-r--r--src/devices/cpu/hmcs40/hmcs40d.c (renamed from src/emu/cpu/hmcs40/hmcs40d.c)0
-rw-r--r--src/devices/cpu/hmcs40/hmcs40op.c (renamed from src/emu/cpu/hmcs40/hmcs40op.c)0
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.c961
-rw-r--r--src/devices/cpu/hphybrid/hphybrid.h (renamed from src/emu/cpu/hphybrid/hphybrid.h)4
-rw-r--r--src/devices/cpu/hphybrid/hphybrid_dasm.c (renamed from src/emu/cpu/hphybrid/hphybrid_dasm.c)0
-rw-r--r--src/devices/cpu/i386/cycles.h (renamed from src/emu/cpu/i386/cycles.h)0
-rw-r--r--src/devices/cpu/i386/i386.c (renamed from src/emu/cpu/i386/i386.c)0
-rw-r--r--src/devices/cpu/i386/i386.h (renamed from src/emu/cpu/i386/i386.h)0
-rw-r--r--src/devices/cpu/i386/i386dasm.c (renamed from src/emu/cpu/i386/i386dasm.c)0
-rw-r--r--src/devices/cpu/i386/i386op16.inc (renamed from src/emu/cpu/i386/i386op16.inc)0
-rw-r--r--src/devices/cpu/i386/i386op32.inc (renamed from src/emu/cpu/i386/i386op32.inc)0
-rw-r--r--src/devices/cpu/i386/i386ops.h (renamed from src/emu/cpu/i386/i386ops.h)0
-rw-r--r--src/devices/cpu/i386/i386ops.inc (renamed from src/emu/cpu/i386/i386ops.inc)0
-rw-r--r--src/devices/cpu/i386/i386priv.h (renamed from src/emu/cpu/i386/i386priv.h)0
-rw-r--r--src/devices/cpu/i386/i486ops.inc (renamed from src/emu/cpu/i386/i486ops.inc)0
-rw-r--r--src/devices/cpu/i386/pentops.inc (renamed from src/emu/cpu/i386/pentops.inc)0
-rw-r--r--src/devices/cpu/i386/x87ops.inc (renamed from src/emu/cpu/i386/x87ops.inc)0
-rw-r--r--src/devices/cpu/i4004/4004dasm.c (renamed from src/emu/cpu/i4004/4004dasm.c)0
-rw-r--r--src/devices/cpu/i4004/i4004.c (renamed from src/emu/cpu/i4004/i4004.c)0
-rw-r--r--src/devices/cpu/i4004/i4004.h (renamed from src/emu/cpu/i4004/i4004.h)0
-rw-r--r--src/devices/cpu/i8008/8008dasm.c (renamed from src/emu/cpu/i8008/8008dasm.c)0
-rw-r--r--src/devices/cpu/i8008/i8008.c (renamed from src/emu/cpu/i8008/i8008.c)0
-rw-r--r--src/devices/cpu/i8008/i8008.h (renamed from src/emu/cpu/i8008/i8008.h)0
-rw-r--r--src/devices/cpu/i8085/8085dasm.c (renamed from src/emu/cpu/i8085/8085dasm.c)0
-rw-r--r--src/devices/cpu/i8085/i8085.c (renamed from src/emu/cpu/i8085/i8085.c)0
-rw-r--r--src/devices/cpu/i8085/i8085.h (renamed from src/emu/cpu/i8085/i8085.h)0
-rw-r--r--src/devices/cpu/i8085/i8085cpu.h (renamed from src/emu/cpu/i8085/i8085cpu.h)0
-rw-r--r--src/devices/cpu/i8089/i8089.c (renamed from src/emu/cpu/i8089/i8089.c)0
-rw-r--r--src/devices/cpu/i8089/i8089.h (renamed from src/emu/cpu/i8089/i8089.h)0
-rw-r--r--src/devices/cpu/i8089/i8089_channel.c (renamed from src/emu/cpu/i8089/i8089_channel.c)0
-rw-r--r--src/devices/cpu/i8089/i8089_channel.h (renamed from src/emu/cpu/i8089/i8089_channel.h)0
-rw-r--r--src/devices/cpu/i8089/i8089_dasm.c (renamed from src/emu/cpu/i8089/i8089_dasm.c)0
-rw-r--r--src/devices/cpu/i8089/i8089_ops.c (renamed from src/emu/cpu/i8089/i8089_ops.c)0
-rw-r--r--src/devices/cpu/i86/i186.c (renamed from src/emu/cpu/i86/i186.c)0
-rw-r--r--src/devices/cpu/i86/i186.h (renamed from src/emu/cpu/i86/i186.h)0
-rw-r--r--src/devices/cpu/i86/i286.c (renamed from src/emu/cpu/i86/i286.c)0
-rw-r--r--src/devices/cpu/i86/i286.h (renamed from src/emu/cpu/i86/i286.h)0
-rw-r--r--src/devices/cpu/i86/i86.c (renamed from src/emu/cpu/i86/i86.c)0
-rw-r--r--src/devices/cpu/i86/i86.h (renamed from src/emu/cpu/i86/i86.h)0
-rw-r--r--src/devices/cpu/i86/i86.txt (renamed from src/emu/cpu/i86/i86.txt)0
-rw-r--r--src/devices/cpu/i86/i86inline.h (renamed from src/emu/cpu/i86/i86inline.h)0
-rw-r--r--src/devices/cpu/i860/i860.c (renamed from src/emu/cpu/i860/i860.c)0
-rw-r--r--src/devices/cpu/i860/i860.h (renamed from src/emu/cpu/i860/i860.h)0
-rw-r--r--src/devices/cpu/i860/i860dasm.c (renamed from src/emu/cpu/i860/i860dasm.c)0
-rw-r--r--src/devices/cpu/i860/i860dec.inc (renamed from src/emu/cpu/i860/i860dec.inc)0
-rw-r--r--src/devices/cpu/i860/i860dis.c (renamed from src/emu/cpu/i860/i860dis.c)0
-rw-r--r--src/devices/cpu/i960/i960.c (renamed from src/emu/cpu/i960/i960.c)0
-rw-r--r--src/devices/cpu/i960/i960.h (renamed from src/emu/cpu/i960/i960.h)0
-rw-r--r--src/devices/cpu/i960/i960dis.c (renamed from src/emu/cpu/i960/i960dis.c)0
-rw-r--r--src/devices/cpu/i960/i960dis.h (renamed from src/emu/cpu/i960/i960dis.h)0
-rw-r--r--src/devices/cpu/ie15/ie15.c (renamed from src/emu/cpu/ie15/ie15.c)0
-rw-r--r--src/devices/cpu/ie15/ie15.h (renamed from src/emu/cpu/ie15/ie15.h)0
-rw-r--r--src/devices/cpu/ie15/ie15dasm.c (renamed from src/emu/cpu/ie15/ie15dasm.c)0
-rw-r--r--src/devices/cpu/jaguar/jagdasm.c (renamed from src/emu/cpu/jaguar/jagdasm.c)0
-rw-r--r--src/devices/cpu/jaguar/jaguar.c (renamed from src/emu/cpu/jaguar/jaguar.c)0
-rw-r--r--src/devices/cpu/jaguar/jaguar.h (renamed from src/emu/cpu/jaguar/jaguar.h)0
-rw-r--r--src/devices/cpu/lc8670/lc8670.c (renamed from src/emu/cpu/lc8670/lc8670.c)6
-rw-r--r--src/devices/cpu/lc8670/lc8670.h (renamed from src/emu/cpu/lc8670/lc8670.h)0
-rw-r--r--src/devices/cpu/lc8670/lc8670dsm.c (renamed from src/emu/cpu/lc8670/lc8670dsm.c)0
-rw-r--r--src/devices/cpu/lh5801/5801dasm.c (renamed from src/emu/cpu/lh5801/5801dasm.c)0
-rw-r--r--src/devices/cpu/lh5801/5801tbl.inc (renamed from src/emu/cpu/lh5801/5801tbl.inc)0
-rw-r--r--src/devices/cpu/lh5801/lh5801.c (renamed from src/emu/cpu/lh5801/lh5801.c)0
-rw-r--r--src/devices/cpu/lh5801/lh5801.h (renamed from src/emu/cpu/lh5801/lh5801.h)0
-rw-r--r--src/devices/cpu/lr35902/lr35902.c (renamed from src/emu/cpu/lr35902/lr35902.c)0
-rw-r--r--src/devices/cpu/lr35902/lr35902.h (renamed from src/emu/cpu/lr35902/lr35902.h)0
-rw-r--r--src/devices/cpu/lr35902/lr35902d.c (renamed from src/emu/cpu/lr35902/lr35902d.c)0
-rw-r--r--src/devices/cpu/lr35902/opc_cb.inc (renamed from src/emu/cpu/lr35902/opc_cb.inc)0
-rw-r--r--src/devices/cpu/lr35902/opc_main.inc (renamed from src/emu/cpu/lr35902/opc_main.inc)0
-rw-r--r--src/devices/cpu/m37710/m37710.c (renamed from src/emu/cpu/m37710/m37710.c)0
-rw-r--r--src/devices/cpu/m37710/m37710.h (renamed from src/emu/cpu/m37710/m37710.h)0
-rw-r--r--src/devices/cpu/m37710/m37710cm.h (renamed from src/emu/cpu/m37710/m37710cm.h)0
-rw-r--r--src/devices/cpu/m37710/m37710il.h (renamed from src/emu/cpu/m37710/m37710il.h)0
-rw-r--r--src/devices/cpu/m37710/m37710o0.c (renamed from src/emu/cpu/m37710/m37710o0.c)0
-rw-r--r--src/devices/cpu/m37710/m37710o1.c (renamed from src/emu/cpu/m37710/m37710o1.c)0
-rw-r--r--src/devices/cpu/m37710/m37710o2.c (renamed from src/emu/cpu/m37710/m37710o2.c)0
-rw-r--r--src/devices/cpu/m37710/m37710o3.c (renamed from src/emu/cpu/m37710/m37710o3.c)0
-rw-r--r--src/devices/cpu/m37710/m37710op.h (renamed from src/emu/cpu/m37710/m37710op.h)0
-rw-r--r--src/devices/cpu/m37710/m7700ds.c (renamed from src/emu/cpu/m37710/m7700ds.c)0
-rw-r--r--src/devices/cpu/m37710/m7700ds.h (renamed from src/emu/cpu/m37710/m7700ds.h)0
-rw-r--r--src/devices/cpu/m6502/ddeco16.lst (renamed from src/emu/cpu/m6502/ddeco16.lst)0
-rw-r--r--src/devices/cpu/m6502/deco16.c (renamed from src/emu/cpu/m6502/deco16.c)0
-rw-r--r--src/devices/cpu/m6502/deco16.h (renamed from src/emu/cpu/m6502/deco16.h)0
-rw-r--r--src/devices/cpu/m6502/dm4510.lst (renamed from src/emu/cpu/m6502/dm4510.lst)0
-rw-r--r--src/devices/cpu/m6502/dm6502.lst (renamed from src/emu/cpu/m6502/dm6502.lst)0
-rw-r--r--src/devices/cpu/m6502/dm6509.lst (renamed from src/emu/cpu/m6502/dm6509.lst)0
-rw-r--r--src/devices/cpu/m6502/dm6510.lst (renamed from src/emu/cpu/m6502/dm6510.lst)0
-rw-r--r--src/devices/cpu/m6502/dm65c02.lst (renamed from src/emu/cpu/m6502/dm65c02.lst)0
-rw-r--r--src/devices/cpu/m6502/dm65ce02.lst (renamed from src/emu/cpu/m6502/dm65ce02.lst)0
-rw-r--r--src/devices/cpu/m6502/dm740.lst (renamed from src/emu/cpu/m6502/dm740.lst)0
-rw-r--r--src/devices/cpu/m6502/dn2a03.lst (renamed from src/emu/cpu/m6502/dn2a03.lst)0
-rw-r--r--src/devices/cpu/m6502/dr65c02.lst (renamed from src/emu/cpu/m6502/dr65c02.lst)0
-rw-r--r--src/devices/cpu/m6502/m3745x.c (renamed from src/emu/cpu/m6502/m3745x.c)0
-rw-r--r--src/devices/cpu/m6502/m3745x.h (renamed from src/emu/cpu/m6502/m3745x.h)0
-rw-r--r--src/devices/cpu/m6502/m4510.c (renamed from src/emu/cpu/m6502/m4510.c)0
-rw-r--r--src/devices/cpu/m6502/m4510.h (renamed from src/emu/cpu/m6502/m4510.h)0
-rw-r--r--src/devices/cpu/m6502/m5074x.c (renamed from src/emu/cpu/m6502/m5074x.c)0
-rw-r--r--src/devices/cpu/m6502/m5074x.h (renamed from src/emu/cpu/m6502/m5074x.h)0
-rw-r--r--src/devices/cpu/m6502/m6502.c (renamed from src/emu/cpu/m6502/m6502.c)0
-rw-r--r--src/devices/cpu/m6502/m6502.h (renamed from src/emu/cpu/m6502/m6502.h)0
-rw-r--r--src/devices/cpu/m6502/m6502.txt (renamed from src/emu/cpu/m6502/m6502.txt)0
-rwxr-xr-xsrc/devices/cpu/m6502/m6502make.py (renamed from src/emu/cpu/m6502/m6502make.py)6
-rw-r--r--src/devices/cpu/m6502/m6504.c (renamed from src/emu/cpu/m6502/m6504.c)0
-rw-r--r--src/devices/cpu/m6502/m6504.h (renamed from src/emu/cpu/m6502/m6504.h)0
-rw-r--r--src/devices/cpu/m6502/m6509.c (renamed from src/emu/cpu/m6502/m6509.c)0
-rw-r--r--src/devices/cpu/m6502/m6509.h (renamed from src/emu/cpu/m6502/m6509.h)0
-rw-r--r--src/devices/cpu/m6502/m6510.c (renamed from src/emu/cpu/m6502/m6510.c)0
-rw-r--r--src/devices/cpu/m6502/m6510.h (renamed from src/emu/cpu/m6502/m6510.h)0
-rw-r--r--src/devices/cpu/m6502/m6510t.c (renamed from src/emu/cpu/m6502/m6510t.c)0
-rw-r--r--src/devices/cpu/m6502/m6510t.h (renamed from src/emu/cpu/m6502/m6510t.h)0
-rw-r--r--src/devices/cpu/m6502/m65c02.c (renamed from src/emu/cpu/m6502/m65c02.c)0
-rw-r--r--src/devices/cpu/m6502/m65c02.h (renamed from src/emu/cpu/m6502/m65c02.h)0
-rw-r--r--src/devices/cpu/m6502/m65ce02.c (renamed from src/emu/cpu/m6502/m65ce02.c)0
-rw-r--r--src/devices/cpu/m6502/m65ce02.h (renamed from src/emu/cpu/m6502/m65ce02.h)0
-rw-r--r--src/devices/cpu/m6502/m65sc02.c (renamed from src/emu/cpu/m6502/m65sc02.c)0
-rw-r--r--src/devices/cpu/m6502/m65sc02.h (renamed from src/emu/cpu/m6502/m65sc02.h)0
-rw-r--r--src/devices/cpu/m6502/m740.c (renamed from src/emu/cpu/m6502/m740.c)0
-rw-r--r--src/devices/cpu/m6502/m740.h (renamed from src/emu/cpu/m6502/m740.h)0
-rw-r--r--src/devices/cpu/m6502/m7501.c (renamed from src/emu/cpu/m6502/m7501.c)0
-rw-r--r--src/devices/cpu/m6502/m7501.h (renamed from src/emu/cpu/m6502/m7501.h)0
-rw-r--r--src/devices/cpu/m6502/m8502.c (renamed from src/emu/cpu/m6502/m8502.c)0
-rw-r--r--src/devices/cpu/m6502/m8502.h (renamed from src/emu/cpu/m6502/m8502.h)0
-rw-r--r--src/devices/cpu/m6502/n2a03.c (renamed from src/emu/cpu/m6502/n2a03.c)0
-rw-r--r--src/devices/cpu/m6502/n2a03.h (renamed from src/emu/cpu/m6502/n2a03.h)0
-rw-r--r--src/devices/cpu/m6502/odeco16.lst (renamed from src/emu/cpu/m6502/odeco16.lst)0
-rw-r--r--src/devices/cpu/m6502/om4510.lst (renamed from src/emu/cpu/m6502/om4510.lst)0
-rw-r--r--src/devices/cpu/m6502/om6502.lst (renamed from src/emu/cpu/m6502/om6502.lst)0
-rw-r--r--src/devices/cpu/m6502/om6509.lst (renamed from src/emu/cpu/m6502/om6509.lst)0
-rw-r--r--src/devices/cpu/m6502/om6510.lst (renamed from src/emu/cpu/m6502/om6510.lst)0
-rw-r--r--src/devices/cpu/m6502/om65c02.lst (renamed from src/emu/cpu/m6502/om65c02.lst)0
-rw-r--r--src/devices/cpu/m6502/om65ce02.lst (renamed from src/emu/cpu/m6502/om65ce02.lst)0
-rw-r--r--src/devices/cpu/m6502/om740.lst (renamed from src/emu/cpu/m6502/om740.lst)0
-rw-r--r--src/devices/cpu/m6502/on2a03.lst (renamed from src/emu/cpu/m6502/on2a03.lst)0
-rw-r--r--src/devices/cpu/m6502/r65c02.c (renamed from src/emu/cpu/m6502/r65c02.c)0
-rw-r--r--src/devices/cpu/m6502/r65c02.h (renamed from src/emu/cpu/m6502/r65c02.h)0
-rw-r--r--src/devices/cpu/m6800/6800dasm.c (renamed from src/emu/cpu/m6800/6800dasm.c)0
-rw-r--r--src/devices/cpu/m6800/6800ops.inc (renamed from src/emu/cpu/m6800/6800ops.inc)0
-rw-r--r--src/devices/cpu/m6800/6800tbl.inc (renamed from src/emu/cpu/m6800/6800tbl.inc)0
-rw-r--r--src/devices/cpu/m6800/m6800.c (renamed from src/emu/cpu/m6800/m6800.c)0
-rw-r--r--src/devices/cpu/m6800/m6800.h (renamed from src/emu/cpu/m6800/m6800.h)0
-rw-r--r--src/devices/cpu/m68000/m68000.h (renamed from src/emu/cpu/m68000/m68000.h)0
-rw-r--r--src/devices/cpu/m68000/m68k_in.c (renamed from src/emu/cpu/m68000/m68k_in.c)37
-rw-r--r--src/devices/cpu/m68000/m68kcpu.c (renamed from src/emu/cpu/m68000/m68kcpu.c)12
-rw-r--r--src/devices/cpu/m68000/m68kcpu.h (renamed from src/emu/cpu/m68000/m68kcpu.h)0
-rw-r--r--src/devices/cpu/m68000/m68kdasm.c (renamed from src/emu/cpu/m68000/m68kdasm.c)0
-rw-r--r--src/devices/cpu/m68000/m68kfpu.inc (renamed from src/emu/cpu/m68000/m68kfpu.inc)6
-rw-r--r--src/devices/cpu/m68000/m68kmake.c (renamed from src/emu/cpu/m68000/m68kmake.c)0
-rw-r--r--src/devices/cpu/m68000/m68kmmu.h (renamed from src/emu/cpu/m68000/m68kmmu.h)0
-rw-r--r--src/devices/cpu/m68000/m68kops.c (renamed from src/emu/cpu/m68000/m68kops.c)90
-rw-r--r--src/devices/cpu/m68000/m68kops.h (renamed from src/emu/cpu/m68000/m68kops.h)0
-rw-r--r--src/devices/cpu/m68000/makefile (renamed from src/emu/cpu/m68000/makefile)0
-rw-r--r--src/devices/cpu/m6805/6805dasm.c (renamed from src/emu/cpu/m6805/6805dasm.c)0
-rw-r--r--src/devices/cpu/m6805/6805ops.inc (renamed from src/emu/cpu/m6805/6805ops.inc)0
-rw-r--r--src/devices/cpu/m6805/m6805.c (renamed from src/emu/cpu/m6805/m6805.c)0
-rw-r--r--src/devices/cpu/m6805/m6805.h (renamed from src/emu/cpu/m6805/m6805.h)0
-rw-r--r--src/devices/cpu/m6809/6309dasm.c (renamed from src/emu/cpu/m6809/6309dasm.c)0
-rw-r--r--src/devices/cpu/m6809/6809dasm.c (renamed from src/emu/cpu/m6809/6809dasm.c)0
-rw-r--r--src/devices/cpu/m6809/base6x09.ops (renamed from src/emu/cpu/m6809/base6x09.ops)0
-rw-r--r--src/devices/cpu/m6809/hd6309.c (renamed from src/emu/cpu/m6809/hd6309.c)0
-rw-r--r--src/devices/cpu/m6809/hd6309.h (renamed from src/emu/cpu/m6809/hd6309.h)0
-rw-r--r--src/devices/cpu/m6809/hd6309.ops (renamed from src/emu/cpu/m6809/hd6309.ops)0
-rw-r--r--src/devices/cpu/m6809/knmidasm.c (renamed from src/emu/cpu/m6809/knmidasm.c)0
-rw-r--r--src/devices/cpu/m6809/konami.c (renamed from src/emu/cpu/m6809/konami.c)0
-rw-r--r--src/devices/cpu/m6809/konami.h (renamed from src/emu/cpu/m6809/konami.h)0
-rw-r--r--src/devices/cpu/m6809/konami.ops (renamed from src/emu/cpu/m6809/konami.ops)0
-rw-r--r--src/devices/cpu/m6809/m6809.c (renamed from src/emu/cpu/m6809/m6809.c)0
-rw-r--r--src/devices/cpu/m6809/m6809.h (renamed from src/emu/cpu/m6809/m6809.h)0
-rw-r--r--src/devices/cpu/m6809/m6809.ops (renamed from src/emu/cpu/m6809/m6809.ops)0
-rw-r--r--src/devices/cpu/m6809/m6809inl.h (renamed from src/emu/cpu/m6809/m6809inl.h)0
-rw-r--r--src/devices/cpu/m6809/m6809make.py (renamed from src/emu/cpu/m6809/m6809make.py)0
-rw-r--r--src/devices/cpu/mb86233/mb86233.c (renamed from src/emu/cpu/mb86233/mb86233.c)0
-rw-r--r--src/devices/cpu/mb86233/mb86233.h (renamed from src/emu/cpu/mb86233/mb86233.h)0
-rw-r--r--src/devices/cpu/mb86233/mb86233d.c (renamed from src/emu/cpu/mb86233/mb86233d.c)0
-rw-r--r--src/devices/cpu/mb86235/mb86235.c (renamed from src/emu/cpu/mb86235/mb86235.c)0
-rw-r--r--src/devices/cpu/mb86235/mb86235.h (renamed from src/emu/cpu/mb86235/mb86235.h)0
-rw-r--r--src/devices/cpu/mb86235/mb86235d.c (renamed from src/emu/cpu/mb86235/mb86235d.c)0
-rw-r--r--src/devices/cpu/mb88xx/mb88dasm.c (renamed from src/emu/cpu/mb88xx/mb88dasm.c)0
-rw-r--r--src/devices/cpu/mb88xx/mb88xx.c (renamed from src/emu/cpu/mb88xx/mb88xx.c)0
-rw-r--r--src/devices/cpu/mb88xx/mb88xx.h (renamed from src/emu/cpu/mb88xx/mb88xx.h)0
-rw-r--r--src/devices/cpu/mc68hc11/hc11dasm.c (renamed from src/emu/cpu/mc68hc11/hc11dasm.c)0
-rw-r--r--src/devices/cpu/mc68hc11/hc11ops.h (renamed from src/emu/cpu/mc68hc11/hc11ops.h)0
-rw-r--r--src/devices/cpu/mc68hc11/hc11ops.inc (renamed from src/emu/cpu/mc68hc11/hc11ops.inc)0
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.c (renamed from src/emu/cpu/mc68hc11/mc68hc11.c)0
-rw-r--r--src/devices/cpu/mc68hc11/mc68hc11.h (renamed from src/emu/cpu/mc68hc11/mc68hc11.h)0
-rw-r--r--src/devices/cpu/mcs48/mcs48.c (renamed from src/emu/cpu/mcs48/mcs48.c)0
-rw-r--r--src/devices/cpu/mcs48/mcs48.h (renamed from src/emu/cpu/mcs48/mcs48.h)0
-rw-r--r--src/devices/cpu/mcs48/mcs48dsm.c (renamed from src/emu/cpu/mcs48/mcs48dsm.c)0
-rw-r--r--src/devices/cpu/mcs51/mcs51.c (renamed from src/emu/cpu/mcs51/mcs51.c)0
-rw-r--r--src/devices/cpu/mcs51/mcs51.h (renamed from src/emu/cpu/mcs51/mcs51.h)0
-rw-r--r--src/devices/cpu/mcs51/mcs51dasm.c (renamed from src/emu/cpu/mcs51/mcs51dasm.c)0
-rw-r--r--src/devices/cpu/mcs51/mcs51ops.inc (renamed from src/emu/cpu/mcs51/mcs51ops.inc)0
-rw-r--r--src/devices/cpu/mcs96/i8x9x.c (renamed from src/emu/cpu/mcs96/i8x9x.c)0
-rw-r--r--src/devices/cpu/mcs96/i8x9x.h (renamed from src/emu/cpu/mcs96/i8x9x.h)0
-rw-r--r--src/devices/cpu/mcs96/i8xc196.c (renamed from src/emu/cpu/mcs96/i8xc196.c)0
-rw-r--r--src/devices/cpu/mcs96/i8xc196.h (renamed from src/emu/cpu/mcs96/i8xc196.h)0
-rw-r--r--src/devices/cpu/mcs96/mcs96.c (renamed from src/emu/cpu/mcs96/mcs96.c)0
-rw-r--r--src/devices/cpu/mcs96/mcs96.h (renamed from src/emu/cpu/mcs96/mcs96.h)0
-rw-r--r--src/devices/cpu/mcs96/mcs96make.py (renamed from src/emu/cpu/mcs96/mcs96make.py)40
-rw-r--r--src/devices/cpu/mcs96/mcs96ops.lst (renamed from src/emu/cpu/mcs96/mcs96ops.lst)0
-rw-r--r--src/devices/cpu/melps4/m58846.c (renamed from src/emu/cpu/melps4/m58846.c)0
-rw-r--r--src/devices/cpu/melps4/m58846.h (renamed from src/emu/cpu/melps4/m58846.h)0
-rw-r--r--src/devices/cpu/melps4/melps4.c (renamed from src/emu/cpu/melps4/melps4.c)0
-rw-r--r--src/devices/cpu/melps4/melps4.h (renamed from src/emu/cpu/melps4/melps4.h)0
-rw-r--r--src/devices/cpu/melps4/melps4d.c (renamed from src/emu/cpu/melps4/melps4d.c)0
-rw-r--r--src/devices/cpu/melps4/melps4op.c (renamed from src/emu/cpu/melps4/melps4op.c)0
-rw-r--r--src/devices/cpu/minx/minx.c (renamed from src/emu/cpu/minx/minx.c)0
-rw-r--r--src/devices/cpu/minx/minx.h (renamed from src/emu/cpu/minx/minx.h)0
-rw-r--r--src/devices/cpu/minx/minxd.c (renamed from src/emu/cpu/minx/minxd.c)0
-rw-r--r--src/devices/cpu/minx/minxfunc.h (renamed from src/emu/cpu/minx/minxfunc.h)0
-rw-r--r--src/devices/cpu/minx/minxopce.h (renamed from src/emu/cpu/minx/minxopce.h)0
-rw-r--r--src/devices/cpu/minx/minxopcf.h (renamed from src/emu/cpu/minx/minxopcf.h)0
-rw-r--r--src/devices/cpu/minx/minxops.h (renamed from src/emu/cpu/minx/minxops.h)0
-rw-r--r--src/devices/cpu/mips/mips3.c (renamed from src/emu/cpu/mips/mips3.c)48
-rw-r--r--src/devices/cpu/mips/mips3.h (renamed from src/emu/cpu/mips/mips3.h)1
-rw-r--r--src/devices/cpu/mips/mips3com.c (renamed from src/emu/cpu/mips/mips3com.c)0
-rw-r--r--src/devices/cpu/mips/mips3com.h (renamed from src/emu/cpu/mips/mips3com.h)0
-rw-r--r--src/devices/cpu/mips/mips3drc.c (renamed from src/emu/cpu/mips/mips3drc.c)0
-rw-r--r--src/devices/cpu/mips/mips3dsm.c (renamed from src/emu/cpu/mips/mips3dsm.c)9
-rw-r--r--src/devices/cpu/mips/mips3fe.c (renamed from src/emu/cpu/mips/mips3fe.c)0
-rw-r--r--src/devices/cpu/mips/mips3fe.h (renamed from src/emu/cpu/mips/mips3fe.h)0
-rw-r--r--src/devices/cpu/mips/r3000.c (renamed from src/emu/cpu/mips/r3000.c)0
-rw-r--r--src/devices/cpu/mips/r3000.h (renamed from src/emu/cpu/mips/r3000.h)0
-rw-r--r--src/devices/cpu/mips/r3kdasm.c (renamed from src/emu/cpu/mips/r3kdasm.c)0
-rw-r--r--src/devices/cpu/mn10200/mn10200.c (renamed from src/emu/cpu/mn10200/mn10200.c)0
-rw-r--r--src/devices/cpu/mn10200/mn10200.h (renamed from src/emu/cpu/mn10200/mn10200.h)0
-rw-r--r--src/devices/cpu/mn10200/mn102dis.c (renamed from src/emu/cpu/mn10200/mn102dis.c)0
-rw-r--r--src/devices/cpu/nec/nec.c (renamed from src/emu/cpu/nec/nec.c)0
-rw-r--r--src/devices/cpu/nec/nec.h (renamed from src/emu/cpu/nec/nec.h)0
-rw-r--r--src/devices/cpu/nec/necdasm.c (renamed from src/emu/cpu/nec/necdasm.c)0
-rw-r--r--src/devices/cpu/nec/necea.h (renamed from src/emu/cpu/nec/necea.h)0
-rw-r--r--src/devices/cpu/nec/necinstr.h (renamed from src/emu/cpu/nec/necinstr.h)0
-rw-r--r--src/devices/cpu/nec/necinstr.inc (renamed from src/emu/cpu/nec/necinstr.inc)0
-rw-r--r--src/devices/cpu/nec/necmacro.h (renamed from src/emu/cpu/nec/necmacro.h)0
-rw-r--r--src/devices/cpu/nec/necmodrm.h (renamed from src/emu/cpu/nec/necmodrm.h)0
-rw-r--r--src/devices/cpu/nec/necpriv.h (renamed from src/emu/cpu/nec/necpriv.h)0
-rw-r--r--src/devices/cpu/nec/v25.c (renamed from src/emu/cpu/nec/v25.c)0
-rw-r--r--src/devices/cpu/nec/v25.h (renamed from src/emu/cpu/nec/v25.h)0
-rw-r--r--src/devices/cpu/nec/v25instr.h (renamed from src/emu/cpu/nec/v25instr.h)0
-rw-r--r--src/devices/cpu/nec/v25instr.inc (renamed from src/emu/cpu/nec/v25instr.inc)0
-rw-r--r--src/devices/cpu/nec/v25priv.h (renamed from src/emu/cpu/nec/v25priv.h)0
-rw-r--r--src/devices/cpu/nec/v25sfr.c (renamed from src/emu/cpu/nec/v25sfr.c)0
-rw-r--r--src/devices/cpu/nec/v53.c (renamed from src/emu/cpu/nec/v53.c)56
-rw-r--r--src/devices/cpu/nec/v53.h (renamed from src/emu/cpu/nec/v53.h)0
-rw-r--r--src/devices/cpu/pdp1/pdp1.c (renamed from src/emu/cpu/pdp1/pdp1.c)0
-rw-r--r--src/devices/cpu/pdp1/pdp1.h (renamed from src/emu/cpu/pdp1/pdp1.h)0
-rw-r--r--src/devices/cpu/pdp1/pdp1dasm.c (renamed from src/emu/cpu/pdp1/pdp1dasm.c)0
-rw-r--r--src/devices/cpu/pdp1/tx0.c (renamed from src/emu/cpu/pdp1/tx0.c)0
-rw-r--r--src/devices/cpu/pdp1/tx0.h (renamed from src/emu/cpu/pdp1/tx0.h)0
-rw-r--r--src/devices/cpu/pdp1/tx0dasm.c (renamed from src/emu/cpu/pdp1/tx0dasm.c)0
-rw-r--r--src/devices/cpu/pdp8/pdp8.c249
-rw-r--r--src/devices/cpu/pdp8/pdp8.h113
-rw-r--r--src/devices/cpu/pdp8/pdp8dasm.c174
-rw-r--r--src/devices/cpu/pic16c5x/16c5xdsm.c (renamed from src/emu/cpu/pic16c5x/16c5xdsm.c)0
-rw-r--r--src/devices/cpu/pic16c5x/dis16c5x.c (renamed from src/emu/cpu/pic16c5x/dis16c5x.c)0
-rw-r--r--src/devices/cpu/pic16c5x/pic16c5x.c (renamed from src/emu/cpu/pic16c5x/pic16c5x.c)0
-rw-r--r--src/devices/cpu/pic16c5x/pic16c5x.h (renamed from src/emu/cpu/pic16c5x/pic16c5x.h)0
-rw-r--r--src/devices/cpu/pic16c62x/16c62xdsm.c (renamed from src/emu/cpu/pic16c62x/16c62xdsm.c)0
-rw-r--r--src/devices/cpu/pic16c62x/dis16c62x.c (renamed from src/emu/cpu/pic16c62x/dis16c62x.c)0
-rw-r--r--src/devices/cpu/pic16c62x/pic16c62x.c (renamed from src/emu/cpu/pic16c62x/pic16c62x.c)0
-rw-r--r--src/devices/cpu/pic16c62x/pic16c62x.h (renamed from src/emu/cpu/pic16c62x/pic16c62x.h)0
-rw-r--r--src/devices/cpu/powerpc/drc_ops.c (renamed from src/emu/cpu/powerpc/drc_ops.c)0
-rw-r--r--src/devices/cpu/powerpc/drc_ops.h (renamed from src/emu/cpu/powerpc/drc_ops.h)0
-rw-r--r--src/devices/cpu/powerpc/ppc.c (renamed from src/emu/cpu/powerpc/ppc.c)0
-rw-r--r--src/devices/cpu/powerpc/ppc.h (renamed from src/emu/cpu/powerpc/ppc.h)0
-rw-r--r--src/devices/cpu/powerpc/ppc403.inc (renamed from src/emu/cpu/powerpc/ppc403.inc)0
-rw-r--r--src/devices/cpu/powerpc/ppc602.inc (renamed from src/emu/cpu/powerpc/ppc602.inc)0
-rw-r--r--src/devices/cpu/powerpc/ppc603.inc (renamed from src/emu/cpu/powerpc/ppc603.inc)0
-rw-r--r--src/devices/cpu/powerpc/ppc_dasm.c (renamed from src/emu/cpu/powerpc/ppc_dasm.c)0
-rw-r--r--src/devices/cpu/powerpc/ppc_mem.inc (renamed from src/emu/cpu/powerpc/ppc_mem.inc)0
-rw-r--r--src/devices/cpu/powerpc/ppc_ops.h (renamed from src/emu/cpu/powerpc/ppc_ops.h)0
-rw-r--r--src/devices/cpu/powerpc/ppc_ops.inc (renamed from src/emu/cpu/powerpc/ppc_ops.inc)0
-rw-r--r--src/devices/cpu/powerpc/ppccom.c (renamed from src/emu/cpu/powerpc/ppccom.c)2
-rw-r--r--src/devices/cpu/powerpc/ppccom.h (renamed from src/emu/cpu/powerpc/ppccom.h)0
-rw-r--r--src/devices/cpu/powerpc/ppcdrc.c (renamed from src/emu/cpu/powerpc/ppcdrc.c)0
-rw-r--r--src/devices/cpu/powerpc/ppcfe.c (renamed from src/emu/cpu/powerpc/ppcfe.c)0
-rw-r--r--src/devices/cpu/powerpc/ppcfe.h (renamed from src/emu/cpu/powerpc/ppcfe.h)0
-rw-r--r--src/devices/cpu/pps4/pps4.c (renamed from src/emu/cpu/pps4/pps4.c)0
-rw-r--r--src/devices/cpu/pps4/pps4.h (renamed from src/emu/cpu/pps4/pps4.h)0
-rw-r--r--src/devices/cpu/pps4/pps4dasm.c (renamed from src/emu/cpu/pps4/pps4dasm.c)0
-rw-r--r--src/devices/cpu/psx/dismips.c (renamed from src/emu/cpu/psx/dismips.c)0
-rw-r--r--src/devices/cpu/psx/dismips.mak (renamed from src/emu/cpu/psx/dismips.mak)0
-rw-r--r--src/devices/cpu/psx/dma.c (renamed from src/emu/cpu/psx/dma.c)0
-rw-r--r--src/devices/cpu/psx/dma.h (renamed from src/emu/cpu/psx/dma.h)0
-rw-r--r--src/devices/cpu/psx/gte.c (renamed from src/emu/cpu/psx/gte.c)0
-rw-r--r--src/devices/cpu/psx/gte.h (renamed from src/emu/cpu/psx/gte.h)0
-rw-r--r--src/devices/cpu/psx/irq.c (renamed from src/emu/cpu/psx/irq.c)0
-rw-r--r--src/devices/cpu/psx/irq.h (renamed from src/emu/cpu/psx/irq.h)0
-rw-r--r--src/devices/cpu/psx/mdec.c (renamed from src/emu/cpu/psx/mdec.c)0
-rw-r--r--src/devices/cpu/psx/mdec.h (renamed from src/emu/cpu/psx/mdec.h)0
-rw-r--r--src/devices/cpu/psx/psx.c (renamed from src/emu/cpu/psx/psx.c)8
-rw-r--r--src/devices/cpu/psx/psx.h (renamed from src/emu/cpu/psx/psx.h)4
-rw-r--r--src/devices/cpu/psx/psxdasm.c (renamed from src/emu/cpu/psx/psxdasm.c)0
-rw-r--r--src/devices/cpu/psx/rcnt.c (renamed from src/emu/cpu/psx/rcnt.c)0
-rw-r--r--src/devices/cpu/psx/rcnt.h (renamed from src/emu/cpu/psx/rcnt.h)0
-rw-r--r--src/devices/cpu/psx/sio.c (renamed from src/emu/cpu/psx/sio.c)0
-rw-r--r--src/devices/cpu/psx/sio.h (renamed from src/emu/cpu/psx/sio.h)0
-rw-r--r--src/devices/cpu/rsp/clamp.h (renamed from src/emu/cpu/rsp/clamp.h)0
-rw-r--r--src/devices/cpu/rsp/rsp.c (renamed from src/emu/cpu/rsp/rsp.c)8
-rw-r--r--src/devices/cpu/rsp/rsp.h (renamed from src/emu/cpu/rsp/rsp.h)0
-rw-r--r--src/devices/cpu/rsp/rsp_dasm.c (renamed from src/emu/cpu/rsp/rsp_dasm.c)17
-rw-r--r--src/devices/cpu/rsp/rspcp2.c (renamed from src/emu/cpu/rsp/rspcp2.c)258
-rw-r--r--src/devices/cpu/rsp/rspcp2.h (renamed from src/emu/cpu/rsp/rspcp2.h)35
-rw-r--r--src/devices/cpu/rsp/rspcp2d.c (renamed from src/emu/cpu/rsp/rspcp2d.c)2
-rw-r--r--src/devices/cpu/rsp/rspcp2d.h (renamed from src/emu/cpu/rsp/rspcp2d.h)0
-rw-r--r--src/devices/cpu/rsp/rspdiv.h (renamed from src/emu/cpu/rsp/rspdiv.h)0
-rw-r--r--src/devices/cpu/rsp/rspdrc.c (renamed from src/emu/cpu/rsp/rspdrc.c)2
-rw-r--r--src/devices/cpu/rsp/rspfe.c (renamed from src/emu/cpu/rsp/rspfe.c)0
-rw-r--r--src/devices/cpu/rsp/rspfe.h (renamed from src/emu/cpu/rsp/rspfe.h)0
-rw-r--r--src/devices/cpu/rsp/vabs.h (renamed from src/emu/cpu/rsp/vabs.h)0
-rw-r--r--src/devices/cpu/rsp/vadd.h (renamed from src/emu/cpu/rsp/vadd.h)1
-rw-r--r--src/devices/cpu/rsp/vaddc.h (renamed from src/emu/cpu/rsp/vaddc.h)0
-rw-r--r--src/devices/cpu/rsp/vand.h (renamed from src/emu/cpu/rsp/vand.h)0
-rw-r--r--src/devices/cpu/rsp/vch.h (renamed from src/emu/cpu/rsp/vch.h)0
-rw-r--r--src/devices/cpu/rsp/vcl.h (renamed from src/emu/cpu/rsp/vcl.h)2
-rw-r--r--src/devices/cpu/rsp/vcmp.h (renamed from src/emu/cpu/rsp/vcmp.h)0
-rw-r--r--src/devices/cpu/rsp/vcr.h (renamed from src/emu/cpu/rsp/vcr.h)0
-rw-r--r--src/devices/cpu/rsp/vdivh.h (renamed from src/emu/cpu/rsp/vdivh.h)0
-rw-r--r--src/devices/cpu/rsp/vldst.h (renamed from src/emu/cpu/rsp/vldst.h)0
-rw-r--r--src/devices/cpu/rsp/vmac.h (renamed from src/emu/cpu/rsp/vmac.h)0
-rw-r--r--src/devices/cpu/rsp/vmov.h (renamed from src/emu/cpu/rsp/vmov.h)0
-rw-r--r--src/devices/cpu/rsp/vmrg.h (renamed from src/emu/cpu/rsp/vmrg.h)0
-rw-r--r--src/devices/cpu/rsp/vmudh.h (renamed from src/emu/cpu/rsp/vmudh.h)1
-rw-r--r--src/devices/cpu/rsp/vmul.h (renamed from src/emu/cpu/rsp/vmul.h)0
-rw-r--r--src/devices/cpu/rsp/vmulh.h (renamed from src/emu/cpu/rsp/vmulh.h)1
-rw-r--r--src/devices/cpu/rsp/vmull.h (renamed from src/emu/cpu/rsp/vmull.h)0
-rw-r--r--src/devices/cpu/rsp/vmulm.h (renamed from src/emu/cpu/rsp/vmulm.h)0
-rw-r--r--src/devices/cpu/rsp/vmuln.h (renamed from src/emu/cpu/rsp/vmuln.h)0
-rw-r--r--src/devices/cpu/rsp/vor.h (renamed from src/emu/cpu/rsp/vor.h)0
-rw-r--r--src/devices/cpu/rsp/vrcpsq.h (renamed from src/emu/cpu/rsp/vrcpsq.h)2
-rw-r--r--src/devices/cpu/rsp/vrsq.h (renamed from src/emu/cpu/rsp/vrsq.h)2
-rw-r--r--src/devices/cpu/rsp/vsub.h (renamed from src/emu/cpu/rsp/vsub.h)0
-rw-r--r--src/devices/cpu/rsp/vsubc.h (renamed from src/emu/cpu/rsp/vsubc.h)0
-rw-r--r--src/devices/cpu/rsp/vxor.h (renamed from src/emu/cpu/rsp/vxor.h)0
-rw-r--r--src/devices/cpu/s2650/2650dasm.c (renamed from src/emu/cpu/s2650/2650dasm.c)0
-rw-r--r--src/devices/cpu/s2650/s2650.c (renamed from src/emu/cpu/s2650/s2650.c)0
-rw-r--r--src/devices/cpu/s2650/s2650.h (renamed from src/emu/cpu/s2650/s2650.h)0
-rw-r--r--src/devices/cpu/s2650/s2650cpu.h (renamed from src/emu/cpu/s2650/s2650cpu.h)0
-rw-r--r--src/devices/cpu/saturn/satops.inc (renamed from src/emu/cpu/saturn/satops.inc)0
-rw-r--r--src/devices/cpu/saturn/sattable.inc (renamed from src/emu/cpu/saturn/sattable.inc)0
-rw-r--r--src/devices/cpu/saturn/saturn.c (renamed from src/emu/cpu/saturn/saturn.c)0
-rw-r--r--src/devices/cpu/saturn/saturn.h (renamed from src/emu/cpu/saturn/saturn.h)0
-rw-r--r--src/devices/cpu/saturn/saturnds.c (renamed from src/emu/cpu/saturn/saturnds.c)0
-rw-r--r--src/devices/cpu/sc61860/readpc.c (renamed from src/emu/cpu/sc61860/readpc.c)0
-rw-r--r--src/devices/cpu/sc61860/sc61860.c (renamed from src/emu/cpu/sc61860/sc61860.c)0
-rw-r--r--src/devices/cpu/sc61860/sc61860.h (renamed from src/emu/cpu/sc61860/sc61860.h)0
-rw-r--r--src/devices/cpu/sc61860/scdasm.c (renamed from src/emu/cpu/sc61860/scdasm.c)0
-rw-r--r--src/devices/cpu/sc61860/scops.inc (renamed from src/emu/cpu/sc61860/scops.inc)0
-rw-r--r--src/devices/cpu/sc61860/sctable.inc (renamed from src/emu/cpu/sc61860/sctable.inc)0
-rw-r--r--src/devices/cpu/scmp/scmp.c (renamed from src/emu/cpu/scmp/scmp.c)0
-rw-r--r--src/devices/cpu/scmp/scmp.h (renamed from src/emu/cpu/scmp/scmp.h)0
-rw-r--r--src/devices/cpu/scmp/scmpdasm.c (renamed from src/emu/cpu/scmp/scmpdasm.c)0
-rw-r--r--src/devices/cpu/score/score.c (renamed from src/emu/cpu/score/score.c)0
-rw-r--r--src/devices/cpu/score/score.h (renamed from src/emu/cpu/score/score.h)0
-rw-r--r--src/devices/cpu/score/scoredsm.c (renamed from src/emu/cpu/score/scoredsm.c)0
-rw-r--r--src/devices/cpu/score/scorem.h (renamed from src/emu/cpu/score/scorem.h)0
-rw-r--r--src/devices/cpu/scudsp/scudsp.c (renamed from src/emu/cpu/scudsp/scudsp.c)0
-rw-r--r--src/devices/cpu/scudsp/scudsp.h (renamed from src/emu/cpu/scudsp/scudsp.h)0
-rw-r--r--src/devices/cpu/scudsp/scudspdasm.c (renamed from src/emu/cpu/scudsp/scudspdasm.c)0
-rw-r--r--src/devices/cpu/se3208/se3208.c (renamed from src/emu/cpu/se3208/se3208.c)0
-rw-r--r--src/devices/cpu/se3208/se3208.h (renamed from src/emu/cpu/se3208/se3208.h)0
-rw-r--r--src/devices/cpu/se3208/se3208dis.c (renamed from src/emu/cpu/se3208/se3208dis.c)0
-rw-r--r--src/devices/cpu/sh2/sh2.c (renamed from src/emu/cpu/sh2/sh2.c)20
-rw-r--r--src/devices/cpu/sh2/sh2.h (renamed from src/emu/cpu/sh2/sh2.h)12
-rw-r--r--src/devices/cpu/sh2/sh2comn.c (renamed from src/emu/cpu/sh2/sh2comn.c)35
-rw-r--r--src/devices/cpu/sh2/sh2comn.h (renamed from src/emu/cpu/sh2/sh2comn.h)0
-rw-r--r--src/devices/cpu/sh2/sh2dasm.c (renamed from src/emu/cpu/sh2/sh2dasm.c)0
-rw-r--r--src/devices/cpu/sh2/sh2drc.c (renamed from src/emu/cpu/sh2/sh2drc.c)0
-rw-r--r--src/devices/cpu/sh2/sh2fe.c (renamed from src/emu/cpu/sh2/sh2fe.c)0
-rw-r--r--src/devices/cpu/sh4/sh3comn.c (renamed from src/emu/cpu/sh4/sh3comn.c)0
-rw-r--r--src/devices/cpu/sh4/sh3comn.h (renamed from src/emu/cpu/sh4/sh3comn.h)0
-rw-r--r--src/devices/cpu/sh4/sh4.c (renamed from src/emu/cpu/sh4/sh4.c)0
-rw-r--r--src/devices/cpu/sh4/sh4.h (renamed from src/emu/cpu/sh4/sh4.h)0
-rw-r--r--src/devices/cpu/sh4/sh4comn.c (renamed from src/emu/cpu/sh4/sh4comn.c)0
-rw-r--r--src/devices/cpu/sh4/sh4comn.h (renamed from src/emu/cpu/sh4/sh4comn.h)0
-rw-r--r--src/devices/cpu/sh4/sh4dasm.c (renamed from src/emu/cpu/sh4/sh4dasm.c)0
-rw-r--r--src/devices/cpu/sh4/sh4dmac.c (renamed from src/emu/cpu/sh4/sh4dmac.c)0
-rw-r--r--src/devices/cpu/sh4/sh4dmac.h (renamed from src/emu/cpu/sh4/sh4dmac.h)0
-rw-r--r--src/devices/cpu/sh4/sh4regs.h (renamed from src/emu/cpu/sh4/sh4regs.h)0
-rw-r--r--src/devices/cpu/sh4/sh4tmu.c (renamed from src/emu/cpu/sh4/sh4tmu.c)0
-rw-r--r--src/devices/cpu/sh4/sh4tmu.h (renamed from src/emu/cpu/sh4/sh4tmu.h)0
-rw-r--r--src/devices/cpu/sharc/compute.inc (renamed from src/emu/cpu/sharc/compute.inc)0
-rw-r--r--src/devices/cpu/sharc/sharc.c (renamed from src/emu/cpu/sharc/sharc.c)0
-rw-r--r--src/devices/cpu/sharc/sharc.h (renamed from src/emu/cpu/sharc/sharc.h)0
-rw-r--r--src/devices/cpu/sharc/sharcdma.inc (renamed from src/emu/cpu/sharc/sharcdma.inc)0
-rw-r--r--src/devices/cpu/sharc/sharcdsm.c (renamed from src/emu/cpu/sharc/sharcdsm.c)0
-rw-r--r--src/devices/cpu/sharc/sharcdsm.h (renamed from src/emu/cpu/sharc/sharcdsm.h)0
-rw-r--r--src/devices/cpu/sharc/sharcmem.inc (renamed from src/emu/cpu/sharc/sharcmem.inc)0
-rw-r--r--src/devices/cpu/sharc/sharcops.h (renamed from src/emu/cpu/sharc/sharcops.h)0
-rw-r--r--src/devices/cpu/sharc/sharcops.inc (renamed from src/emu/cpu/sharc/sharcops.inc)0
-rw-r--r--src/devices/cpu/sm510/sm510.c (renamed from src/emu/cpu/sm510/sm510.c)30
-rw-r--r--src/devices/cpu/sm510/sm510.h (renamed from src/emu/cpu/sm510/sm510.h)10
-rw-r--r--src/devices/cpu/sm510/sm510core.c (renamed from src/emu/cpu/sm510/sm510core.c)0
-rw-r--r--src/devices/cpu/sm510/sm510d.c (renamed from src/emu/cpu/sm510/sm510d.c)8
-rw-r--r--src/devices/cpu/sm510/sm510op.c (renamed from src/emu/cpu/sm510/sm510op.c)4
-rw-r--r--src/devices/cpu/sm510/sm511core.c (renamed from src/emu/cpu/sm510/sm511core.c)8
-rw-r--r--src/devices/cpu/sm8500/sm8500.c (renamed from src/emu/cpu/sm8500/sm8500.c)0
-rw-r--r--src/devices/cpu/sm8500/sm8500.h (renamed from src/emu/cpu/sm8500/sm8500.h)0
-rw-r--r--src/devices/cpu/sm8500/sm8500d.c (renamed from src/emu/cpu/sm8500/sm8500d.c)0
-rw-r--r--src/devices/cpu/sm8500/sm85ops.h (renamed from src/emu/cpu/sm8500/sm85ops.h)0
-rw-r--r--src/devices/cpu/spc700/spc700.c (renamed from src/emu/cpu/spc700/spc700.c)0
-rw-r--r--src/devices/cpu/spc700/spc700.h (renamed from src/emu/cpu/spc700/spc700.h)0
-rw-r--r--src/devices/cpu/spc700/spc700ds.c (renamed from src/emu/cpu/spc700/spc700ds.c)0
-rw-r--r--src/devices/cpu/spc700/spc700ds.h (renamed from src/emu/cpu/spc700/spc700ds.h)0
-rw-r--r--src/devices/cpu/ssem/ssem.c (renamed from src/emu/cpu/ssem/ssem.c)2
-rw-r--r--src/devices/cpu/ssem/ssem.h (renamed from src/emu/cpu/ssem/ssem.h)2
-rw-r--r--src/devices/cpu/ssem/ssemdasm.c (renamed from src/emu/cpu/ssem/ssemdasm.c)2
-rw-r--r--src/devices/cpu/ssp1601/ssp1601.c (renamed from src/emu/cpu/ssp1601/ssp1601.c)0
-rw-r--r--src/devices/cpu/ssp1601/ssp1601.h (renamed from src/emu/cpu/ssp1601/ssp1601.h)0
-rw-r--r--src/devices/cpu/ssp1601/ssp1601d.c (renamed from src/emu/cpu/ssp1601/ssp1601d.c)0
-rw-r--r--src/devices/cpu/superfx/sfx_dasm.c (renamed from src/emu/cpu/superfx/sfx_dasm.c)0
-rw-r--r--src/devices/cpu/superfx/superfx.c (renamed from src/emu/cpu/superfx/superfx.c)0
-rw-r--r--src/devices/cpu/superfx/superfx.h (renamed from src/emu/cpu/superfx/superfx.h)0
-rw-r--r--src/devices/cpu/t11/t11.c (renamed from src/emu/cpu/t11/t11.c)43
-rw-r--r--src/devices/cpu/t11/t11.h (renamed from src/emu/cpu/t11/t11.h)18
-rw-r--r--src/devices/cpu/t11/t11dasm.c (renamed from src/emu/cpu/t11/t11dasm.c)0
-rw-r--r--src/devices/cpu/t11/t11ops.inc (renamed from src/emu/cpu/t11/t11ops.inc)0
-rw-r--r--src/devices/cpu/t11/t11table.inc (renamed from src/emu/cpu/t11/t11table.inc)0
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.c (renamed from src/emu/cpu/tlcs90/tlcs90.c)0
-rw-r--r--src/devices/cpu/tlcs90/tlcs90.h (renamed from src/emu/cpu/tlcs90/tlcs90.h)0
-rw-r--r--src/devices/cpu/tlcs900/900tbl.inc (renamed from src/emu/cpu/tlcs900/900tbl.inc)0
-rw-r--r--src/devices/cpu/tlcs900/dasm900.c (renamed from src/emu/cpu/tlcs900/dasm900.c)0
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.c (renamed from src/emu/cpu/tlcs900/tlcs900.c)0
-rw-r--r--src/devices/cpu/tlcs900/tlcs900.h (renamed from src/emu/cpu/tlcs900/tlcs900.h)0
-rw-r--r--src/devices/cpu/tms0980/tms0980.c (renamed from src/emu/cpu/tms0980/tms0980.c)71
-rw-r--r--src/devices/cpu/tms0980/tms0980.h (renamed from src/emu/cpu/tms0980/tms0980.h)18
-rw-r--r--src/devices/cpu/tms0980/tms0980d.c (renamed from src/emu/cpu/tms0980/tms0980d.c)0
-rw-r--r--src/devices/cpu/tms32010/32010dsm.c (renamed from src/emu/cpu/tms32010/32010dsm.c)0
-rw-r--r--src/devices/cpu/tms32010/dis32010.c (renamed from src/emu/cpu/tms32010/dis32010.c)0
-rw-r--r--src/devices/cpu/tms32010/tms32010.c (renamed from src/emu/cpu/tms32010/tms32010.c)0
-rw-r--r--src/devices/cpu/tms32010/tms32010.h (renamed from src/emu/cpu/tms32010/tms32010.h)0
-rw-r--r--src/devices/cpu/tms32025/32025dsm.c (renamed from src/emu/cpu/tms32025/32025dsm.c)0
-rw-r--r--src/devices/cpu/tms32025/dis32025.c (renamed from src/emu/cpu/tms32025/dis32025.c)0
-rw-r--r--src/devices/cpu/tms32025/tms32025.c (renamed from src/emu/cpu/tms32025/tms32025.c)0
-rw-r--r--src/devices/cpu/tms32025/tms32025.h (renamed from src/emu/cpu/tms32025/tms32025.h)0
-rw-r--r--src/devices/cpu/tms32031/32031ops.c (renamed from src/emu/cpu/tms32031/32031ops.c)0
-rw-r--r--src/devices/cpu/tms32031/dis32031.c (renamed from src/emu/cpu/tms32031/dis32031.c)0
-rw-r--r--src/devices/cpu/tms32031/tms32031.c (renamed from src/emu/cpu/tms32031/tms32031.c)0
-rw-r--r--src/devices/cpu/tms32031/tms32031.h (renamed from src/emu/cpu/tms32031/tms32031.h)0
-rw-r--r--src/devices/cpu/tms32051/32051ops.c (renamed from src/emu/cpu/tms32051/32051ops.c)0
-rw-r--r--src/devices/cpu/tms32051/32051ops.h (renamed from src/emu/cpu/tms32051/32051ops.h)0
-rw-r--r--src/devices/cpu/tms32051/dis32051.c (renamed from src/emu/cpu/tms32051/dis32051.c)0
-rw-r--r--src/devices/cpu/tms32051/tms32051.c (renamed from src/emu/cpu/tms32051/tms32051.c)0
-rw-r--r--src/devices/cpu/tms32051/tms32051.h (renamed from src/emu/cpu/tms32051/tms32051.h)0
-rw-r--r--src/devices/cpu/tms32082/dis_mp.c (renamed from src/emu/cpu/tms32082/dis_mp.c)0
-rw-r--r--src/devices/cpu/tms32082/dis_pp.c (renamed from src/emu/cpu/tms32082/dis_pp.c)0
-rw-r--r--src/devices/cpu/tms32082/mp_ops.c (renamed from src/emu/cpu/tms32082/mp_ops.c)67
-rw-r--r--src/devices/cpu/tms32082/tms32082.c (renamed from src/emu/cpu/tms32082/tms32082.c)66
-rw-r--r--src/devices/cpu/tms32082/tms32082.h (renamed from src/emu/cpu/tms32082/tms32082.h)7
-rw-r--r--src/devices/cpu/tms34010/34010dsm.c (renamed from src/emu/cpu/tms34010/34010dsm.c)0
-rw-r--r--src/devices/cpu/tms34010/34010fld.c (renamed from src/emu/cpu/tms34010/34010fld.c)0
-rw-r--r--src/devices/cpu/tms34010/34010gfx.c (renamed from src/emu/cpu/tms34010/34010gfx.c)0
-rw-r--r--src/devices/cpu/tms34010/34010ops.c (renamed from src/emu/cpu/tms34010/34010ops.c)0
-rw-r--r--src/devices/cpu/tms34010/34010ops.h (renamed from src/emu/cpu/tms34010/34010ops.h)0
-rw-r--r--src/devices/cpu/tms34010/34010tbl.c (renamed from src/emu/cpu/tms34010/34010tbl.c)0
-rw-r--r--src/devices/cpu/tms34010/dis34010.c (renamed from src/emu/cpu/tms34010/dis34010.c)0
-rw-r--r--src/devices/cpu/tms34010/makefile (renamed from src/emu/cpu/tms34010/makefile)0
-rw-r--r--src/devices/cpu/tms34010/tms34010.c (renamed from src/emu/cpu/tms34010/tms34010.c)0
-rw-r--r--src/devices/cpu/tms34010/tms34010.h (renamed from src/emu/cpu/tms34010/tms34010.h)0
-rw-r--r--src/devices/cpu/tms57002/57002dsm.c (renamed from src/emu/cpu/tms57002/57002dsm.c)0
-rw-r--r--src/devices/cpu/tms57002/tms57002.c (renamed from src/emu/cpu/tms57002/tms57002.c)0
-rw-r--r--src/devices/cpu/tms57002/tms57002.h (renamed from src/emu/cpu/tms57002/tms57002.h)0
-rw-r--r--src/devices/cpu/tms57002/tms57kdec.c (renamed from src/emu/cpu/tms57002/tms57kdec.c)0
-rw-r--r--src/devices/cpu/tms57002/tmsinstr.lst (renamed from src/emu/cpu/tms57002/tmsinstr.lst)0
-rwxr-xr-xsrc/devices/cpu/tms57002/tmsmake.py (renamed from src/emu/cpu/tms57002/tmsmake.py)0
-rw-r--r--src/devices/cpu/tms7000/7000dasm.c (renamed from src/emu/cpu/tms7000/7000dasm.c)0
-rw-r--r--src/devices/cpu/tms7000/tms7000.c (renamed from src/emu/cpu/tms7000/tms7000.c)0
-rw-r--r--src/devices/cpu/tms7000/tms7000.h (renamed from src/emu/cpu/tms7000/tms7000.h)0
-rw-r--r--src/devices/cpu/tms7000/tms70op.inc (renamed from src/emu/cpu/tms7000/tms70op.inc)0
-rw-r--r--src/devices/cpu/tms9900/9900dasm.c (renamed from src/emu/cpu/tms9900/9900dasm.c)0
-rw-r--r--src/devices/cpu/tms9900/99xxcore.h (renamed from src/emu/cpu/tms9900/99xxcore.h)0
-rw-r--r--src/devices/cpu/tms9900/ti990_10.c (renamed from src/emu/cpu/tms9900/ti990_10.c)0
-rw-r--r--src/devices/cpu/tms9900/ti990_10.h (renamed from src/emu/cpu/tms9900/ti990_10.h)0
-rw-r--r--src/devices/cpu/tms9900/tms9900.c (renamed from src/emu/cpu/tms9900/tms9900.c)0
-rw-r--r--src/devices/cpu/tms9900/tms9900.h (renamed from src/emu/cpu/tms9900/tms9900.h)0
-rw-r--r--src/devices/cpu/tms9900/tms9980a.c (renamed from src/emu/cpu/tms9900/tms9980a.c)0
-rw-r--r--src/devices/cpu/tms9900/tms9980a.h (renamed from src/emu/cpu/tms9900/tms9980a.h)0
-rw-r--r--src/devices/cpu/tms9900/tms9995.c (renamed from src/emu/cpu/tms9900/tms9995.c)2
-rw-r--r--src/devices/cpu/tms9900/tms9995.h (renamed from src/emu/cpu/tms9900/tms9995.h)0
-rw-r--r--src/devices/cpu/tms9900/tms99com.h (renamed from src/emu/cpu/tms9900/tms99com.h)0
-rw-r--r--src/devices/cpu/ucom4/ucom4.c (renamed from src/emu/cpu/ucom4/ucom4.c)102
-rw-r--r--src/devices/cpu/ucom4/ucom4.h (renamed from src/emu/cpu/ucom4/ucom4.h)17
-rw-r--r--src/devices/cpu/ucom4/ucom4d.c (renamed from src/emu/cpu/ucom4/ucom4d.c)0
-rw-r--r--src/devices/cpu/ucom4/ucom4op.c (renamed from src/emu/cpu/ucom4/ucom4op.c)44
-rw-r--r--src/devices/cpu/uml.c (renamed from src/emu/cpu/uml.c)0
-rw-r--r--src/devices/cpu/uml.h (renamed from src/emu/cpu/uml.h)0
-rw-r--r--src/devices/cpu/unsp/unsp.c (renamed from src/emu/cpu/unsp/unsp.c)2
-rw-r--r--src/devices/cpu/unsp/unsp.h (renamed from src/emu/cpu/unsp/unsp.h)2
-rw-r--r--src/devices/cpu/unsp/unspdasm.c (renamed from src/emu/cpu/unsp/unspdasm.c)2
-rw-r--r--src/devices/cpu/upd7725/dasm7725.c (renamed from src/emu/cpu/upd7725/dasm7725.c)0
-rw-r--r--src/devices/cpu/upd7725/upd7725.c (renamed from src/emu/cpu/upd7725/upd7725.c)0
-rw-r--r--src/devices/cpu/upd7725/upd7725.h (renamed from src/emu/cpu/upd7725/upd7725.h)0
-rw-r--r--src/devices/cpu/upd7810/upd7810.c (renamed from src/emu/cpu/upd7810/upd7810.c)0
-rw-r--r--src/devices/cpu/upd7810/upd7810.h (renamed from src/emu/cpu/upd7810/upd7810.h)0
-rw-r--r--src/devices/cpu/upd7810/upd7810_dasm.c (renamed from src/emu/cpu/upd7810/upd7810_dasm.c)0
-rw-r--r--src/devices/cpu/upd7810/upd7810_macros.h (renamed from src/emu/cpu/upd7810/upd7810_macros.h)0
-rw-r--r--src/devices/cpu/upd7810/upd7810_opcodes.c (renamed from src/emu/cpu/upd7810/upd7810_opcodes.c)0
-rw-r--r--src/devices/cpu/upd7810/upd7810_table.c (renamed from src/emu/cpu/upd7810/upd7810_table.c)0
-rw-r--r--src/devices/cpu/v30mz/v30mz.c (renamed from src/emu/cpu/v30mz/v30mz.c)0
-rw-r--r--src/devices/cpu/v30mz/v30mz.h (renamed from src/emu/cpu/v30mz/v30mz.h)0
-rw-r--r--src/devices/cpu/v60/am.inc (renamed from src/emu/cpu/v60/am.inc)0
-rw-r--r--src/devices/cpu/v60/am1.inc (renamed from src/emu/cpu/v60/am1.inc)0
-rw-r--r--src/devices/cpu/v60/am2.inc (renamed from src/emu/cpu/v60/am2.inc)0
-rw-r--r--src/devices/cpu/v60/am3.inc (renamed from src/emu/cpu/v60/am3.inc)0
-rw-r--r--src/devices/cpu/v60/op12.inc (renamed from src/emu/cpu/v60/op12.inc)0
-rw-r--r--src/devices/cpu/v60/op2.inc (renamed from src/emu/cpu/v60/op2.inc)0
-rw-r--r--src/devices/cpu/v60/op3.inc (renamed from src/emu/cpu/v60/op3.inc)0
-rw-r--r--src/devices/cpu/v60/op4.inc (renamed from src/emu/cpu/v60/op4.inc)0
-rw-r--r--src/devices/cpu/v60/op5.inc (renamed from src/emu/cpu/v60/op5.inc)0
-rw-r--r--src/devices/cpu/v60/op6.inc (renamed from src/emu/cpu/v60/op6.inc)0
-rw-r--r--src/devices/cpu/v60/op7a.inc (renamed from src/emu/cpu/v60/op7a.inc)0
-rw-r--r--src/devices/cpu/v60/optable.inc (renamed from src/emu/cpu/v60/optable.inc)0
-rw-r--r--src/devices/cpu/v60/v60.c (renamed from src/emu/cpu/v60/v60.c)65
-rw-r--r--src/devices/cpu/v60/v60.h (renamed from src/emu/cpu/v60/v60.h)0
-rw-r--r--src/devices/cpu/v60/v60d.c (renamed from src/emu/cpu/v60/v60d.c)0
-rw-r--r--src/devices/cpu/v810/v810.c (renamed from src/emu/cpu/v810/v810.c)2
-rw-r--r--src/devices/cpu/v810/v810.h (renamed from src/emu/cpu/v810/v810.h)0
-rw-r--r--src/devices/cpu/v810/v810dasm.c (renamed from src/emu/cpu/v810/v810dasm.c)0
-rw-r--r--src/devices/cpu/vtlb.c (renamed from src/emu/cpu/vtlb.c)0
-rw-r--r--src/devices/cpu/vtlb.h (renamed from src/emu/cpu/vtlb.h)0
-rw-r--r--src/devices/cpu/x86emit.h (renamed from src/emu/cpu/x86emit.h)0
-rw-r--r--src/devices/cpu/x86log.c (renamed from src/emu/cpu/x86log.c)0
-rw-r--r--src/devices/cpu/x86log.h (renamed from src/emu/cpu/x86log.h)0
-rw-r--r--src/devices/cpu/z180/z180.c (renamed from src/emu/cpu/z180/z180.c)0
-rw-r--r--src/devices/cpu/z180/z180.h (renamed from src/emu/cpu/z180/z180.h)0
-rw-r--r--src/devices/cpu/z180/z180cb.inc (renamed from src/emu/cpu/z180/z180cb.inc)0
-rw-r--r--src/devices/cpu/z180/z180dasm.c (renamed from src/emu/cpu/z180/z180dasm.c)0
-rw-r--r--src/devices/cpu/z180/z180dd.inc (renamed from src/emu/cpu/z180/z180dd.inc)0
-rw-r--r--src/devices/cpu/z180/z180ed.inc (renamed from src/emu/cpu/z180/z180ed.inc)0
-rw-r--r--src/devices/cpu/z180/z180fd.inc (renamed from src/emu/cpu/z180/z180fd.inc)0
-rw-r--r--src/devices/cpu/z180/z180op.inc (renamed from src/emu/cpu/z180/z180op.inc)0
-rw-r--r--src/devices/cpu/z180/z180ops.h (renamed from src/emu/cpu/z180/z180ops.h)0
-rw-r--r--src/devices/cpu/z180/z180tbl.h (renamed from src/emu/cpu/z180/z180tbl.h)0
-rw-r--r--src/devices/cpu/z180/z180xy.inc (renamed from src/emu/cpu/z180/z180xy.inc)0
-rw-r--r--src/devices/cpu/z8/z8.c (renamed from src/emu/cpu/z8/z8.c)0
-rw-r--r--src/devices/cpu/z8/z8.h (renamed from src/emu/cpu/z8/z8.h)0
-rw-r--r--src/devices/cpu/z8/z8dasm.c (renamed from src/emu/cpu/z8/z8dasm.c)0
-rw-r--r--src/devices/cpu/z8/z8ops.inc (renamed from src/emu/cpu/z8/z8ops.inc)0
-rw-r--r--src/devices/cpu/z80/kl5c80a12.c (renamed from src/emu/cpu/z80/kl5c80a12.c)0
-rw-r--r--src/devices/cpu/z80/kl5c80a12.h (renamed from src/emu/cpu/z80/kl5c80a12.h)0
-rw-r--r--src/devices/cpu/z80/tmpz84c011.c (renamed from src/emu/cpu/z80/tmpz84c011.c)0
-rw-r--r--src/devices/cpu/z80/tmpz84c011.h (renamed from src/emu/cpu/z80/tmpz84c011.h)0
-rw-r--r--src/devices/cpu/z80/tmpz84c015.c (renamed from src/emu/cpu/z80/tmpz84c015.c)0
-rw-r--r--src/devices/cpu/z80/tmpz84c015.h (renamed from src/emu/cpu/z80/tmpz84c015.h)0
-rw-r--r--src/devices/cpu/z80/z80.c (renamed from src/emu/cpu/z80/z80.c)0
-rw-r--r--src/devices/cpu/z80/z80.h (renamed from src/emu/cpu/z80/z80.h)0
-rw-r--r--src/devices/cpu/z80/z80daisy.c (renamed from src/emu/cpu/z80/z80daisy.c)0
-rw-r--r--src/devices/cpu/z80/z80daisy.h (renamed from src/emu/cpu/z80/z80daisy.h)0
-rw-r--r--src/devices/cpu/z80/z80dasm.c (renamed from src/emu/cpu/z80/z80dasm.c)0
-rw-r--r--src/devices/cpu/z8000/8000dasm.c (renamed from src/emu/cpu/z8000/8000dasm.c)0
-rw-r--r--src/devices/cpu/z8000/makedab.c (renamed from src/emu/cpu/z8000/makedab.c)0
-rw-r--r--src/devices/cpu/z8000/z8000.c (renamed from src/emu/cpu/z8000/z8000.c)0
-rw-r--r--src/devices/cpu/z8000/z8000.h (renamed from src/emu/cpu/z8000/z8000.h)0
-rw-r--r--src/devices/cpu/z8000/z8000cpu.h (renamed from src/emu/cpu/z8000/z8000cpu.h)0
-rw-r--r--src/devices/cpu/z8000/z8000dab.h (renamed from src/emu/cpu/z8000/z8000dab.h)0
-rw-r--r--src/devices/cpu/z8000/z8000ops.inc (renamed from src/emu/cpu/z8000/z8000ops.inc)0
-rw-r--r--src/devices/cpu/z8000/z8000tbl.inc (renamed from src/emu/cpu/z8000/z8000tbl.inc)0
-rw-r--r--src/devices/imagedev/bitbngr.c (renamed from src/emu/imagedev/bitbngr.c)0
-rw-r--r--src/devices/imagedev/bitbngr.h (renamed from src/emu/imagedev/bitbngr.h)0
-rw-r--r--src/devices/imagedev/cassette.c (renamed from src/emu/imagedev/cassette.c)0
-rw-r--r--src/devices/imagedev/cassette.h (renamed from src/emu/imagedev/cassette.h)0
-rw-r--r--src/devices/imagedev/chd_cd.c (renamed from src/emu/imagedev/chd_cd.c)0
-rw-r--r--src/devices/imagedev/chd_cd.h (renamed from src/emu/imagedev/chd_cd.h)0
-rw-r--r--src/devices/imagedev/diablo.c (renamed from src/emu/imagedev/diablo.c)0
-rw-r--r--src/devices/imagedev/diablo.h (renamed from src/emu/imagedev/diablo.h)0
-rw-r--r--src/devices/imagedev/flopdrv.c (renamed from src/emu/imagedev/flopdrv.c)0
-rw-r--r--src/devices/imagedev/flopdrv.h (renamed from src/emu/imagedev/flopdrv.h)0
-rw-r--r--src/devices/imagedev/floppy.c (renamed from src/emu/imagedev/floppy.c)253
-rw-r--r--src/devices/imagedev/floppy.h (renamed from src/emu/imagedev/floppy.h)62
-rw-r--r--src/devices/imagedev/harddriv.c (renamed from src/emu/imagedev/harddriv.c)0
-rw-r--r--src/devices/imagedev/harddriv.h (renamed from src/emu/imagedev/harddriv.h)0
-rw-r--r--src/devices/imagedev/mfmhd.c (renamed from src/emu/machine/ti99_hd.c)960
-rw-r--r--src/devices/imagedev/mfmhd.h (renamed from src/emu/machine/ti99_hd.h)131
-rw-r--r--src/devices/imagedev/midiin.c (renamed from src/emu/imagedev/midiin.c)0
-rw-r--r--src/devices/imagedev/midiin.h (renamed from src/emu/imagedev/midiin.h)0
-rw-r--r--src/devices/imagedev/midiout.c (renamed from src/emu/imagedev/midiout.c)0
-rw-r--r--src/devices/imagedev/midiout.h (renamed from src/emu/imagedev/midiout.h)0
-rw-r--r--src/devices/imagedev/printer.c (renamed from src/emu/imagedev/printer.c)0
-rw-r--r--src/devices/imagedev/printer.h (renamed from src/emu/imagedev/printer.h)0
-rw-r--r--src/devices/imagedev/snapquik.c (renamed from src/emu/imagedev/snapquik.c)0
-rw-r--r--src/devices/imagedev/snapquik.h (renamed from src/emu/imagedev/snapquik.h)0
-rw-r--r--src/devices/machine/40105.c (renamed from src/emu/machine/40105.c)0
-rw-r--r--src/devices/machine/40105.h (renamed from src/emu/machine/40105.h)0
-rw-r--r--src/devices/machine/53c7xx.c (renamed from src/emu/machine/53c7xx.c)0
-rw-r--r--src/devices/machine/53c7xx.h (renamed from src/emu/machine/53c7xx.h)0
-rw-r--r--src/devices/machine/53c810.c (renamed from src/emu/machine/53c810.c)0
-rw-r--r--src/devices/machine/53c810.h (renamed from src/emu/machine/53c810.h)0
-rw-r--r--src/devices/machine/64h156.c (renamed from src/emu/machine/64h156.c)0
-rw-r--r--src/devices/machine/64h156.h (renamed from src/emu/machine/64h156.h)0
-rw-r--r--src/devices/machine/6522via.c (renamed from src/emu/machine/6522via.c)0
-rw-r--r--src/devices/machine/6522via.h (renamed from src/emu/machine/6522via.h)0
-rw-r--r--src/devices/machine/6525tpi.c (renamed from src/emu/machine/6525tpi.c)0
-rw-r--r--src/devices/machine/6525tpi.h (renamed from src/emu/machine/6525tpi.h)0
-rw-r--r--src/devices/machine/6532riot.c (renamed from src/emu/machine/6532riot.c)0
-rw-r--r--src/devices/machine/6532riot.h (renamed from src/emu/machine/6532riot.h)0
-rw-r--r--src/devices/machine/6821pia.c (renamed from src/emu/machine/6821pia.c)0
-rw-r--r--src/devices/machine/6821pia.h (renamed from src/emu/machine/6821pia.h)0
-rw-r--r--src/devices/machine/68230pit.c265
-rw-r--r--src/devices/machine/68230pit.h131
-rw-r--r--src/devices/machine/68307.c (renamed from src/emu/machine/68307.c)0
-rw-r--r--src/devices/machine/68307.h (renamed from src/emu/machine/68307.h)0
-rw-r--r--src/devices/machine/68307bus.c (renamed from src/emu/machine/68307bus.c)0
-rw-r--r--src/devices/machine/68307bus.h (renamed from src/emu/machine/68307bus.h)0
-rw-r--r--src/devices/machine/68307sim.c (renamed from src/emu/machine/68307sim.c)0
-rw-r--r--src/devices/machine/68307sim.h (renamed from src/emu/machine/68307sim.h)0
-rw-r--r--src/devices/machine/68307tmu.c (renamed from src/emu/machine/68307tmu.c)0
-rw-r--r--src/devices/machine/68307tmu.h (renamed from src/emu/machine/68307tmu.h)0
-rw-r--r--src/devices/machine/68340.c (renamed from src/emu/machine/68340.c)0
-rw-r--r--src/devices/machine/68340.h (renamed from src/emu/machine/68340.h)0
-rw-r--r--src/devices/machine/68340dma.c (renamed from src/emu/machine/68340dma.c)0
-rw-r--r--src/devices/machine/68340dma.h (renamed from src/emu/machine/68340dma.h)0
-rw-r--r--src/devices/machine/68340ser.c (renamed from src/emu/machine/68340ser.c)0
-rw-r--r--src/devices/machine/68340ser.h (renamed from src/emu/machine/68340ser.h)0
-rw-r--r--src/devices/machine/68340sim.c (renamed from src/emu/machine/68340sim.c)0
-rw-r--r--src/devices/machine/68340sim.h (renamed from src/emu/machine/68340sim.h)0
-rw-r--r--src/devices/machine/68340tmu.c (renamed from src/emu/machine/68340tmu.c)0
-rw-r--r--src/devices/machine/68340tmu.h (renamed from src/emu/machine/68340tmu.h)0
-rw-r--r--src/devices/machine/6840ptm.c (renamed from src/emu/machine/6840ptm.c)0
-rw-r--r--src/devices/machine/6840ptm.h (renamed from src/emu/machine/6840ptm.h)0
-rw-r--r--src/devices/machine/6850acia.c (renamed from src/emu/machine/6850acia.c)0
-rw-r--r--src/devices/machine/6850acia.h (renamed from src/emu/machine/6850acia.h)0
-rw-r--r--src/devices/machine/68561mpcc.c (renamed from src/emu/machine/68561mpcc.c)0
-rw-r--r--src/devices/machine/68561mpcc.h (renamed from src/emu/machine/68561mpcc.h)0
-rw-r--r--src/devices/machine/7200fifo.c (renamed from src/emu/machine/7200fifo.c)0
-rw-r--r--src/devices/machine/7200fifo.h (renamed from src/emu/machine/7200fifo.h)0
-rw-r--r--src/devices/machine/74123.c (renamed from src/emu/machine/74123.c)0
-rw-r--r--src/devices/machine/74123.h (renamed from src/emu/machine/74123.h)0
-rw-r--r--src/devices/machine/74145.c (renamed from src/emu/machine/74145.c)0
-rw-r--r--src/devices/machine/74145.h (renamed from src/emu/machine/74145.h)0
-rw-r--r--src/devices/machine/74148.c (renamed from src/emu/machine/74148.c)0
-rw-r--r--src/devices/machine/74148.h (renamed from src/emu/machine/74148.h)0
-rw-r--r--src/devices/machine/74153.c (renamed from src/emu/machine/74153.c)0
-rw-r--r--src/devices/machine/74153.h (renamed from src/emu/machine/74153.h)0
-rw-r--r--src/devices/machine/74181.c (renamed from src/emu/machine/74181.c)0
-rw-r--r--src/devices/machine/74181.h (renamed from src/emu/machine/74181.h)0
-rw-r--r--src/devices/machine/7474.c (renamed from src/emu/machine/7474.c)0
-rw-r--r--src/devices/machine/7474.h (renamed from src/emu/machine/7474.h)0
-rw-r--r--src/devices/machine/8042kbdc.c (renamed from src/emu/machine/8042kbdc.c)0
-rw-r--r--src/devices/machine/8042kbdc.h (renamed from src/emu/machine/8042kbdc.h)0
-rw-r--r--src/devices/machine/8530scc.c (renamed from src/emu/machine/8530scc.c)2
-rw-r--r--src/devices/machine/8530scc.h (renamed from src/emu/machine/8530scc.h)0
-rw-r--r--src/devices/machine/aakart.c (renamed from src/emu/machine/aakart.c)0
-rw-r--r--src/devices/machine/aakart.h (renamed from src/emu/machine/aakart.h)0
-rw-r--r--src/devices/machine/adc0808.c (renamed from src/emu/machine/adc0808.c)0
-rw-r--r--src/devices/machine/adc0808.h (renamed from src/emu/machine/adc0808.h)0
-rw-r--r--src/devices/machine/adc083x.c (renamed from src/emu/machine/adc083x.c)0
-rw-r--r--src/devices/machine/adc083x.h (renamed from src/emu/machine/adc083x.h)0
-rw-r--r--src/devices/machine/adc1038.c (renamed from src/emu/machine/adc1038.c)0
-rw-r--r--src/devices/machine/adc1038.h (renamed from src/emu/machine/adc1038.h)0
-rw-r--r--src/devices/machine/adc1213x.c (renamed from src/emu/machine/adc1213x.c)0
-rw-r--r--src/devices/machine/adc1213x.h (renamed from src/emu/machine/adc1213x.h)0
-rw-r--r--src/devices/machine/aicartc.c (renamed from src/emu/machine/aicartc.c)0
-rw-r--r--src/devices/machine/aicartc.h (renamed from src/emu/machine/aicartc.h)0
-rw-r--r--src/devices/machine/akiko.c (renamed from src/emu/machine/akiko.c)0
-rw-r--r--src/devices/machine/akiko.h (renamed from src/emu/machine/akiko.h)0
-rw-r--r--src/devices/machine/am53cf96.c (renamed from src/emu/machine/am53cf96.c)0
-rw-r--r--src/devices/machine/am53cf96.h (renamed from src/emu/machine/am53cf96.h)0
-rw-r--r--src/devices/machine/am9517a.c (renamed from src/emu/machine/am9517a.c)0
-rw-r--r--src/devices/machine/am9517a.h (renamed from src/emu/machine/am9517a.h)0
-rw-r--r--src/devices/machine/amigafdc.c (renamed from src/emu/machine/amigafdc.c)0
-rw-r--r--src/devices/machine/amigafdc.h (renamed from src/emu/machine/amigafdc.h)0
-rw-r--r--src/devices/machine/at28c16.c (renamed from src/emu/machine/at28c16.c)0
-rw-r--r--src/devices/machine/at28c16.h (renamed from src/emu/machine/at28c16.h)0
-rw-r--r--src/devices/machine/at29x.c525
-rw-r--r--src/devices/machine/at29x.h116
-rw-r--r--src/devices/machine/at45dbxx.c (renamed from src/emu/machine/at45dbxx.c)0
-rw-r--r--src/devices/machine/at45dbxx.h (renamed from src/emu/machine/at45dbxx.h)0
-rw-r--r--src/devices/machine/at_keybc.c (renamed from src/emu/machine/at_keybc.c)20
-rw-r--r--src/devices/machine/at_keybc.h (renamed from src/emu/machine/at_keybc.h)1
-rw-r--r--src/devices/machine/atadev.c (renamed from src/emu/machine/atadev.c)0
-rw-r--r--src/devices/machine/atadev.h (renamed from src/emu/machine/atadev.h)0
-rw-r--r--src/devices/machine/ataflash.c (renamed from src/emu/machine/ataflash.c)0
-rw-r--r--src/devices/machine/ataflash.h (renamed from src/emu/machine/ataflash.h)0
-rw-r--r--src/devices/machine/atahle.c (renamed from src/emu/machine/atahle.c)23
-rw-r--r--src/devices/machine/atahle.h (renamed from src/emu/machine/atahle.h)7
-rw-r--r--src/devices/machine/ataintf.c (renamed from src/emu/machine/ataintf.c)0
-rw-r--r--src/devices/machine/ataintf.h (renamed from src/emu/machine/ataintf.h)0
-rw-r--r--src/devices/machine/atapicdr.c (renamed from src/emu/machine/atapicdr.c)0
-rw-r--r--src/devices/machine/atapicdr.h (renamed from src/emu/machine/atapicdr.h)2
-rw-r--r--src/devices/machine/atapihle.c (renamed from src/emu/machine/atapihle.c)6
-rw-r--r--src/devices/machine/atapihle.h (renamed from src/emu/machine/atapihle.h)0
-rw-r--r--src/devices/machine/autoconfig.c (renamed from src/emu/machine/autoconfig.c)0
-rw-r--r--src/devices/machine/autoconfig.h (renamed from src/emu/machine/autoconfig.h)0
-rw-r--r--src/devices/machine/ay31015.c (renamed from src/emu/machine/ay31015.c)0
-rw-r--r--src/devices/machine/ay31015.h (renamed from src/emu/machine/ay31015.h)0
-rw-r--r--src/devices/machine/bankdev.c (renamed from src/emu/machine/bankdev.c)0
-rw-r--r--src/devices/machine/bankdev.h (renamed from src/emu/machine/bankdev.h)0
-rw-r--r--src/devices/machine/bcreader.c (renamed from src/emu/machine/bcreader.c)0
-rw-r--r--src/devices/machine/bcreader.h (renamed from src/emu/machine/bcreader.h)0
-rw-r--r--src/devices/machine/buffer.c (renamed from src/emu/machine/buffer.c)0
-rw-r--r--src/devices/machine/buffer.h (renamed from src/emu/machine/buffer.h)0
-rw-r--r--src/devices/machine/cdp1852.c (renamed from src/emu/machine/cdp1852.c)0
-rw-r--r--src/devices/machine/cdp1852.h (renamed from src/emu/machine/cdp1852.h)0
-rw-r--r--src/devices/machine/cdp1871.c (renamed from src/emu/machine/cdp1871.c)0
-rw-r--r--src/devices/machine/cdp1871.h (renamed from src/emu/machine/cdp1871.h)0
-rw-r--r--src/devices/machine/clock.c (renamed from src/emu/machine/clock.c)0
-rw-r--r--src/devices/machine/clock.h (renamed from src/emu/machine/clock.h)0
-rw-r--r--src/devices/machine/com8116.c (renamed from src/emu/machine/com8116.c)0
-rw-r--r--src/devices/machine/com8116.h (renamed from src/emu/machine/com8116.h)0
-rw-r--r--src/devices/machine/corvushd.c (renamed from src/emu/machine/corvushd.c)0
-rw-r--r--src/devices/machine/corvushd.h (renamed from src/emu/machine/corvushd.h)0
-rw-r--r--src/devices/machine/cr511b.c (renamed from src/emu/machine/cr511b.c)0
-rw-r--r--src/devices/machine/cr511b.h (renamed from src/emu/machine/cr511b.h)0
-rw-r--r--src/devices/machine/cr589.c (renamed from src/emu/machine/cr589.c)0
-rw-r--r--src/devices/machine/cr589.h (renamed from src/emu/machine/cr589.h)0
-rw-r--r--src/devices/machine/cs4031.c (renamed from src/emu/machine/cs4031.c)0
-rw-r--r--src/devices/machine/cs4031.h (renamed from src/emu/machine/cs4031.h)0
-rw-r--r--src/devices/machine/cs8221.c (renamed from src/emu/machine/cs8221.c)0
-rw-r--r--src/devices/machine/cs8221.h (renamed from src/emu/machine/cs8221.h)0
-rw-r--r--src/devices/machine/diablo_hd.c (renamed from src/emu/machine/diablo_hd.c)0
-rw-r--r--src/devices/machine/diablo_hd.h (renamed from src/emu/machine/diablo_hd.h)0
-rw-r--r--src/devices/machine/dmac.c (renamed from src/emu/machine/dmac.c)0
-rw-r--r--src/devices/machine/dmac.h (renamed from src/emu/machine/dmac.h)0
-rw-r--r--src/devices/machine/dp8390.c (renamed from src/emu/machine/dp8390.c)0
-rw-r--r--src/devices/machine/dp8390.h (renamed from src/emu/machine/dp8390.h)0
-rw-r--r--src/devices/machine/ds1204.c (renamed from src/emu/machine/ds1204.c)0
-rw-r--r--src/devices/machine/ds1204.h (renamed from src/emu/machine/ds1204.h)0
-rw-r--r--src/devices/machine/ds128x.c (renamed from src/emu/machine/ds128x.c)0
-rw-r--r--src/devices/machine/ds128x.h (renamed from src/emu/machine/ds128x.h)0
-rw-r--r--src/devices/machine/ds1302.c (renamed from src/emu/machine/ds1302.c)0
-rw-r--r--src/devices/machine/ds1302.h (renamed from src/emu/machine/ds1302.h)0
-rw-r--r--src/devices/machine/ds1315.c (renamed from src/emu/machine/ds1315.c)0
-rw-r--r--src/devices/machine/ds1315.h (renamed from src/emu/machine/ds1315.h)0
-rw-r--r--src/devices/machine/ds2401.c (renamed from src/emu/machine/ds2401.c)0
-rw-r--r--src/devices/machine/ds2401.h (renamed from src/emu/machine/ds2401.h)0
-rw-r--r--src/devices/machine/ds2404.c (renamed from src/emu/machine/ds2404.c)0
-rw-r--r--src/devices/machine/ds2404.h (renamed from src/emu/machine/ds2404.h)0
-rw-r--r--src/devices/machine/ds75160a.c (renamed from src/emu/machine/ds75160a.c)0
-rw-r--r--src/devices/machine/ds75160a.h (renamed from src/emu/machine/ds75160a.h)0
-rw-r--r--src/devices/machine/ds75161a.c (renamed from src/emu/machine/ds75161a.c)0
-rw-r--r--src/devices/machine/ds75161a.h (renamed from src/emu/machine/ds75161a.h)0
-rw-r--r--src/devices/machine/e0516.c (renamed from src/emu/machine/e0516.c)0
-rw-r--r--src/devices/machine/e0516.h (renamed from src/emu/machine/e0516.h)0
-rw-r--r--src/devices/machine/e05a03.c (renamed from src/emu/machine/e05a03.c)0
-rw-r--r--src/devices/machine/e05a03.h (renamed from src/emu/machine/e05a03.h)0
-rw-r--r--src/devices/machine/e05a30.c (renamed from src/emu/machine/e05a30.c)8
-rw-r--r--src/devices/machine/e05a30.h (renamed from src/emu/machine/e05a30.h)0
-rw-r--r--src/devices/machine/eeprom.c (renamed from src/emu/machine/eeprom.c)0
-rw-r--r--src/devices/machine/eeprom.h (renamed from src/emu/machine/eeprom.h)0
-rw-r--r--src/devices/machine/eeprompar.c (renamed from src/emu/machine/eeprompar.c)0
-rw-r--r--src/devices/machine/eeprompar.h (renamed from src/emu/machine/eeprompar.h)0
-rw-r--r--src/devices/machine/eepromser.c (renamed from src/emu/machine/eepromser.c)0
-rw-r--r--src/devices/machine/eepromser.h (renamed from src/emu/machine/eepromser.h)0
-rw-r--r--src/devices/machine/er2055.c (renamed from src/emu/machine/er2055.c)0
-rw-r--r--src/devices/machine/er2055.h (renamed from src/emu/machine/er2055.h)0
-rw-r--r--src/devices/machine/f3853.c (renamed from src/emu/machine/f3853.c)0
-rw-r--r--src/devices/machine/f3853.h (renamed from src/emu/machine/f3853.h)0
-rw-r--r--src/devices/machine/fdc37c665gt.c (renamed from src/emu/machine/fdc37c665gt.c)0
-rw-r--r--src/devices/machine/fdc37c665gt.h (renamed from src/emu/machine/fdc37c665gt.h)0
-rw-r--r--src/devices/machine/fdc_pll.c (renamed from src/emu/machine/fdc_pll.c)8
-rw-r--r--src/devices/machine/fdc_pll.h (renamed from src/emu/machine/fdc_pll.h)0
-rw-r--r--src/devices/machine/gayle.c (renamed from src/emu/machine/gayle.c)0
-rw-r--r--src/devices/machine/gayle.h (renamed from src/emu/machine/gayle.h)0
-rw-r--r--src/devices/machine/hd63450.c (renamed from src/emu/machine/hd63450.c)0
-rw-r--r--src/devices/machine/hd63450.h (renamed from src/emu/machine/hd63450.h)0
-rw-r--r--src/devices/machine/hd64610.c (renamed from src/emu/machine/hd64610.c)0
-rw-r--r--src/devices/machine/hd64610.h (renamed from src/emu/machine/hd64610.h)0
-rw-r--r--src/devices/machine/hdc92x4.c (renamed from src/emu/machine/hdc9234.c)333
-rw-r--r--src/devices/machine/hdc92x4.h (renamed from src/emu/machine/hdc9234.h)73
-rw-r--r--src/devices/machine/i2cmem.c (renamed from src/emu/machine/i2cmem.c)0
-rw-r--r--src/devices/machine/i2cmem.h (renamed from src/emu/machine/i2cmem.h)0
-rw-r--r--src/devices/machine/i6300esb.c (renamed from src/emu/machine/i6300esb.c)0
-rw-r--r--src/devices/machine/i6300esb.h (renamed from src/emu/machine/i6300esb.h)0
-rw-r--r--src/devices/machine/i80130.c (renamed from src/emu/machine/i80130.c)0
-rw-r--r--src/devices/machine/i80130.h (renamed from src/emu/machine/i80130.h)0
-rw-r--r--src/devices/machine/i8155.c (renamed from src/emu/machine/i8155.c)0
-rw-r--r--src/devices/machine/i8155.h (renamed from src/emu/machine/i8155.h)0
-rw-r--r--src/devices/machine/i8212.c (renamed from src/emu/machine/i8212.c)0
-rw-r--r--src/devices/machine/i8212.h (renamed from src/emu/machine/i8212.h)0
-rw-r--r--src/devices/machine/i8214.c (renamed from src/emu/machine/i8214.c)0
-rw-r--r--src/devices/machine/i8214.h (renamed from src/emu/machine/i8214.h)0
-rw-r--r--src/devices/machine/i8243.c (renamed from src/emu/machine/i8243.c)0
-rw-r--r--src/devices/machine/i8243.h (renamed from src/emu/machine/i8243.h)0
-rw-r--r--src/devices/machine/i8251.c (renamed from src/emu/machine/i8251.c)19
-rw-r--r--src/devices/machine/i8251.h (renamed from src/emu/machine/i8251.h)3
-rw-r--r--src/devices/machine/i82541.c (renamed from src/emu/machine/i82541.c)0
-rw-r--r--src/devices/machine/i82541.h (renamed from src/emu/machine/i82541.h)0
-rw-r--r--src/devices/machine/i8255.c (renamed from src/emu/machine/i8255.c)0
-rw-r--r--src/devices/machine/i8255.h (renamed from src/emu/machine/i8255.h)0
-rw-r--r--src/devices/machine/i8257.c (renamed from src/emu/machine/i8257.c)0
-rw-r--r--src/devices/machine/i8257.h (renamed from src/emu/machine/i8257.h)0
-rw-r--r--src/devices/machine/i8271.c1698
-rw-r--r--src/devices/machine/i8271.h296
-rw-r--r--src/devices/machine/i8279.c (renamed from src/emu/machine/i8279.c)0
-rw-r--r--src/devices/machine/i8279.h (renamed from src/emu/machine/i8279.h)0
-rw-r--r--src/devices/machine/i82875p.c (renamed from src/emu/machine/i82875p.c)0
-rw-r--r--src/devices/machine/i82875p.h (renamed from src/emu/machine/i82875p.h)0
-rw-r--r--src/devices/machine/i8355.c (renamed from src/emu/machine/i8355.c)0
-rw-r--r--src/devices/machine/i8355.h (renamed from src/emu/machine/i8355.h)0
-rw-r--r--src/devices/machine/idectrl.c (renamed from src/emu/machine/idectrl.c)10
-rw-r--r--src/devices/machine/idectrl.h (renamed from src/emu/machine/idectrl.h)0
-rw-r--r--src/devices/machine/idehd.c (renamed from src/emu/machine/idehd.c)2
-rw-r--r--src/devices/machine/idehd.h (renamed from src/emu/machine/idehd.h)0
-rw-r--r--src/devices/machine/im6402.c (renamed from src/emu/machine/im6402.c)0
-rw-r--r--src/devices/machine/im6402.h (renamed from src/emu/machine/im6402.h)0
-rw-r--r--src/devices/machine/ins8154.c (renamed from src/emu/machine/ins8154.c)0
-rw-r--r--src/devices/machine/ins8154.h (renamed from src/emu/machine/ins8154.h)0
-rw-r--r--src/devices/machine/ins8250.c (renamed from src/emu/machine/ins8250.c)0
-rw-r--r--src/devices/machine/ins8250.h (renamed from src/emu/machine/ins8250.h)0
-rw-r--r--src/devices/machine/intelfsh.c (renamed from src/emu/machine/intelfsh.c)32
-rw-r--r--src/devices/machine/intelfsh.h (renamed from src/emu/machine/intelfsh.h)12
-rw-r--r--src/devices/machine/jvsdev.c (renamed from src/emu/machine/jvsdev.c)7
-rw-r--r--src/devices/machine/jvsdev.h (renamed from src/emu/machine/jvsdev.h)2
-rw-r--r--src/devices/machine/jvshost.c (renamed from src/emu/machine/jvshost.c)0
-rw-r--r--src/devices/machine/jvshost.h (renamed from src/emu/machine/jvshost.h)0
-rw-r--r--src/devices/machine/k033906.c (renamed from src/emu/machine/k033906.c)0
-rw-r--r--src/devices/machine/k033906.h (renamed from src/emu/machine/k033906.h)0
-rw-r--r--src/devices/machine/k053252.c (renamed from src/emu/machine/k053252.c)0
-rw-r--r--src/devices/machine/k053252.h (renamed from src/emu/machine/k053252.h)0
-rw-r--r--src/devices/machine/k056230.c (renamed from src/emu/machine/k056230.c)0
-rw-r--r--src/devices/machine/k056230.h (renamed from src/emu/machine/k056230.h)0
-rw-r--r--src/devices/machine/kb3600.c (renamed from src/emu/machine/kb3600.c)0
-rw-r--r--src/devices/machine/kb3600.h (renamed from src/emu/machine/kb3600.h)0
-rw-r--r--src/devices/machine/keyboard.c (renamed from src/emu/machine/keyboard.c)0
-rw-r--r--src/devices/machine/keyboard.h (renamed from src/emu/machine/keyboard.h)0
-rw-r--r--src/devices/machine/kr2376.c (renamed from src/emu/machine/kr2376.c)0
-rw-r--r--src/devices/machine/kr2376.h (renamed from src/emu/machine/kr2376.h)0
-rw-r--r--src/devices/machine/laserdsc.c (renamed from src/emu/machine/laserdsc.c)0
-rw-r--r--src/devices/machine/laserdsc.h (renamed from src/emu/machine/laserdsc.h)0
-rw-r--r--src/devices/machine/latch.c (renamed from src/emu/machine/latch.c)0
-rw-r--r--src/devices/machine/latch.h (renamed from src/emu/machine/latch.h)0
-rw-r--r--src/devices/machine/latch8.c (renamed from src/emu/machine/latch8.c)0
-rw-r--r--src/devices/machine/latch8.h (renamed from src/emu/machine/latch8.h)0
-rw-r--r--src/devices/machine/lc89510.c (renamed from src/emu/machine/lc89510.c)0
-rw-r--r--src/devices/machine/lc89510.h (renamed from src/emu/machine/lc89510.h)0
-rw-r--r--src/devices/machine/ldpr8210.c (renamed from src/emu/machine/ldpr8210.c)2
-rw-r--r--src/devices/machine/ldpr8210.h (renamed from src/emu/machine/ldpr8210.h)0
-rw-r--r--src/devices/machine/ldstub.c (renamed from src/emu/machine/ldstub.c)0
-rw-r--r--src/devices/machine/ldstub.h (renamed from src/emu/machine/ldstub.h)0
-rw-r--r--src/devices/machine/ldv1000.c (renamed from src/emu/machine/ldv1000.c)0
-rw-r--r--src/devices/machine/ldv1000.h (renamed from src/emu/machine/ldv1000.h)0
-rw-r--r--src/devices/machine/ldvp931.c (renamed from src/emu/machine/ldvp931.c)0
-rw-r--r--src/devices/machine/ldvp931.h (renamed from src/emu/machine/ldvp931.h)0
-rw-r--r--src/devices/machine/legscsi.c (renamed from src/emu/machine/legscsi.c)0
-rw-r--r--src/devices/machine/legscsi.h (renamed from src/emu/machine/legscsi.h)0
-rw-r--r--src/devices/machine/lh5810.c (renamed from src/emu/machine/lh5810.c)0
-rw-r--r--src/devices/machine/lh5810.h (renamed from src/emu/machine/lh5810.h)0
-rw-r--r--src/devices/machine/linflash.c (renamed from src/emu/machine/linflash.c)0
-rw-r--r--src/devices/machine/linflash.h (renamed from src/emu/machine/linflash.h)0
-rw-r--r--src/devices/machine/lpc-acpi.c (renamed from src/emu/machine/lpc-acpi.c)0
-rw-r--r--src/devices/machine/lpc-acpi.h (renamed from src/emu/machine/lpc-acpi.h)0
-rw-r--r--src/devices/machine/lpc-pit.c (renamed from src/emu/machine/lpc-pit.c)0
-rw-r--r--src/devices/machine/lpc-pit.h (renamed from src/emu/machine/lpc-pit.h)0
-rw-r--r--src/devices/machine/lpc-rtc.c (renamed from src/emu/machine/lpc-rtc.c)0
-rw-r--r--src/devices/machine/lpc-rtc.h (renamed from src/emu/machine/lpc-rtc.h)0
-rw-r--r--src/devices/machine/lpc.c (renamed from src/emu/machine/lpc.c)0
-rw-r--r--src/devices/machine/lpc.h (renamed from src/emu/machine/lpc.h)0
-rw-r--r--src/devices/machine/lpci.c (renamed from src/emu/machine/lpci.c)0
-rw-r--r--src/devices/machine/lpci.h (renamed from src/emu/machine/lpci.h)0
-rw-r--r--src/devices/machine/m6m80011ap.c (renamed from src/emu/machine/m6m80011ap.c)0
-rw-r--r--src/devices/machine/m6m80011ap.h (renamed from src/emu/machine/m6m80011ap.h)0
-rw-r--r--src/devices/machine/matsucd.c (renamed from src/emu/machine/matsucd.c)0
-rw-r--r--src/devices/machine/matsucd.h (renamed from src/emu/machine/matsucd.h)0
-rw-r--r--src/devices/machine/mb14241.c (renamed from src/emu/machine/mb14241.c)0
-rw-r--r--src/devices/machine/mb14241.h (renamed from src/emu/machine/mb14241.h)0
-rw-r--r--src/devices/machine/mb3773.c (renamed from src/emu/machine/mb3773.c)0
-rw-r--r--src/devices/machine/mb3773.h (renamed from src/emu/machine/mb3773.h)0
-rw-r--r--src/devices/machine/mb8421.c (renamed from src/emu/machine/mb8421.c)0
-rw-r--r--src/devices/machine/mb8421.h (renamed from src/emu/machine/mb8421.h)0
-rw-r--r--src/devices/machine/mb87078.c (renamed from src/emu/machine/mb87078.c)0
-rw-r--r--src/devices/machine/mb87078.h (renamed from src/emu/machine/mb87078.h)0
-rw-r--r--src/devices/machine/mb8795.c (renamed from src/emu/machine/mb8795.c)0
-rw-r--r--src/devices/machine/mb8795.h (renamed from src/emu/machine/mb8795.h)0
-rw-r--r--src/devices/machine/mb89352.c (renamed from src/emu/machine/mb89352.c)0
-rw-r--r--src/devices/machine/mb89352.h (renamed from src/emu/machine/mb89352.h)0
-rw-r--r--src/devices/machine/mb89363b.c (renamed from src/emu/machine/mb89363b.c)0
-rw-r--r--src/devices/machine/mb89363b.h (renamed from src/emu/machine/mb89363b.h)0
-rw-r--r--src/devices/machine/mb89371.c (renamed from src/emu/machine/mb89371.c)0
-rw-r--r--src/devices/machine/mb89371.h (renamed from src/emu/machine/mb89371.h)0
-rw-r--r--src/devices/machine/mc146818.c (renamed from src/emu/machine/mc146818.c)17
-rw-r--r--src/devices/machine/mc146818.h (renamed from src/emu/machine/mc146818.h)16
-rw-r--r--src/devices/machine/mc2661.c (renamed from src/emu/machine/mc2661.c)0
-rw-r--r--src/devices/machine/mc2661.h (renamed from src/emu/machine/mc2661.h)0
-rw-r--r--src/devices/machine/mc68328.c (renamed from src/emu/machine/mc68328.c)3
-rw-r--r--src/devices/machine/mc68328.h (renamed from src/emu/machine/mc68328.h)3
-rw-r--r--src/devices/machine/mc6843.c (renamed from src/emu/machine/mc6843.c)0
-rw-r--r--src/devices/machine/mc6843.h (renamed from src/emu/machine/mc6843.h)0
-rw-r--r--src/devices/machine/mc6846.c (renamed from src/emu/machine/mc6846.c)0
-rw-r--r--src/devices/machine/mc6846.h (renamed from src/emu/machine/mc6846.h)0
-rw-r--r--src/devices/machine/mc6852.c (renamed from src/emu/machine/mc6852.c)0
-rw-r--r--src/devices/machine/mc6852.h (renamed from src/emu/machine/mc6852.h)0
-rw-r--r--src/devices/machine/mc6854.c (renamed from src/emu/machine/mc6854.c)0
-rw-r--r--src/devices/machine/mc6854.h (renamed from src/emu/machine/mc6854.h)0
-rw-r--r--src/devices/machine/mc68681.c (renamed from src/emu/machine/mc68681.c)0
-rw-r--r--src/devices/machine/mc68681.h (renamed from src/emu/machine/mc68681.h)0
-rw-r--r--src/devices/machine/mc68901.c (renamed from src/emu/machine/mc68901.c)0
-rw-r--r--src/devices/machine/mc68901.h (renamed from src/emu/machine/mc68901.h)0
-rw-r--r--src/devices/machine/mccs1850.c (renamed from src/emu/machine/mccs1850.c)0
-rw-r--r--src/devices/machine/mccs1850.h (renamed from src/emu/machine/mccs1850.h)0
-rw-r--r--src/devices/machine/mcf5206e.c (renamed from src/emu/machine/mcf5206e.c)0
-rw-r--r--src/devices/machine/mcf5206e.h (renamed from src/emu/machine/mcf5206e.h)0
-rw-r--r--src/devices/machine/microtch.c (renamed from src/emu/machine/microtch.c)0
-rw-r--r--src/devices/machine/microtch.h (renamed from src/emu/machine/microtch.h)0
-rw-r--r--src/devices/machine/mm58167.c (renamed from src/emu/machine/mm58167.c)0
-rw-r--r--src/devices/machine/mm58167.h (renamed from src/emu/machine/mm58167.h)0
-rw-r--r--src/devices/machine/mm58274c.c (renamed from src/emu/machine/mm58274c.c)0
-rw-r--r--src/devices/machine/mm58274c.h (renamed from src/emu/machine/mm58274c.h)0
-rw-r--r--src/devices/machine/mm74c922.c (renamed from src/emu/machine/mm74c922.c)0
-rw-r--r--src/devices/machine/mm74c922.h (renamed from src/emu/machine/mm74c922.h)0
-rw-r--r--src/devices/machine/mos6526.c (renamed from src/emu/machine/mos6526.c)0
-rw-r--r--src/devices/machine/mos6526.h (renamed from src/emu/machine/mos6526.h)0
-rw-r--r--src/devices/machine/mos6529.c (renamed from src/emu/machine/mos6529.c)0
-rw-r--r--src/devices/machine/mos6529.h (renamed from src/emu/machine/mos6529.h)0
-rw-r--r--src/devices/machine/mos6530.c (renamed from src/emu/machine/mos6530.c)0
-rw-r--r--src/devices/machine/mos6530.h (renamed from src/emu/machine/mos6530.h)0
-rw-r--r--src/devices/machine/mos6530n.c (renamed from src/emu/machine/mos6530n.c)0
-rw-r--r--src/devices/machine/mos6530n.h (renamed from src/emu/machine/mos6530n.h)0
-rw-r--r--src/devices/machine/mos6551.c (renamed from src/emu/machine/mos6551.c)0
-rw-r--r--src/devices/machine/mos6551.h (renamed from src/emu/machine/mos6551.h)0
-rw-r--r--src/devices/machine/mos6702.c (renamed from src/emu/machine/mos6702.c)0
-rw-r--r--src/devices/machine/mos6702.h (renamed from src/emu/machine/mos6702.h)0
-rw-r--r--src/devices/machine/mos8706.c (renamed from src/emu/machine/mos8706.c)0
-rw-r--r--src/devices/machine/mos8706.h (renamed from src/emu/machine/mos8706.h)0
-rw-r--r--src/devices/machine/mos8722.c (renamed from src/emu/machine/mos8722.c)0
-rw-r--r--src/devices/machine/mos8722.h (renamed from src/emu/machine/mos8722.h)0
-rw-r--r--src/devices/machine/mos8726.c (renamed from src/emu/machine/mos8726.c)0
-rw-r--r--src/devices/machine/mos8726.h (renamed from src/emu/machine/mos8726.h)0
-rw-r--r--src/devices/machine/mpu401.c (renamed from src/emu/machine/mpu401.c)0
-rw-r--r--src/devices/machine/mpu401.h (renamed from src/emu/machine/mpu401.h)0
-rw-r--r--src/devices/machine/msm5832.c (renamed from src/emu/machine/msm5832.c)0
-rw-r--r--src/devices/machine/msm5832.h (renamed from src/emu/machine/msm5832.h)0
-rw-r--r--src/devices/machine/msm58321.c (renamed from src/emu/machine/msm58321.c)0
-rw-r--r--src/devices/machine/msm58321.h (renamed from src/emu/machine/msm58321.h)0
-rw-r--r--src/devices/machine/msm6242.c (renamed from src/emu/machine/msm6242.c)0
-rw-r--r--src/devices/machine/msm6242.h (renamed from src/emu/machine/msm6242.h)0
-rw-r--r--src/devices/machine/ncr5380.c (renamed from src/emu/machine/ncr5380.c)0
-rw-r--r--src/devices/machine/ncr5380.h (renamed from src/emu/machine/ncr5380.h)0
-rw-r--r--src/devices/machine/ncr5380n.c (renamed from src/emu/machine/ncr5380n.c)0
-rw-r--r--src/devices/machine/ncr5380n.h (renamed from src/emu/machine/ncr5380n.h)0
-rw-r--r--src/devices/machine/ncr5390.c (renamed from src/emu/machine/ncr5390.c)0
-rw-r--r--src/devices/machine/ncr5390.h (renamed from src/emu/machine/ncr5390.h)0
-rw-r--r--src/devices/machine/ncr539x.c (renamed from src/emu/machine/ncr539x.c)0
-rw-r--r--src/devices/machine/ncr539x.h (renamed from src/emu/machine/ncr539x.h)0
-rw-r--r--src/devices/machine/netlist.c (renamed from src/emu/machine/netlist.c)107
-rw-r--r--src/devices/machine/netlist.h (renamed from src/emu/machine/netlist.h)20
-rw-r--r--src/devices/machine/nmc9306.c (renamed from src/emu/machine/nmc9306.c)0
-rw-r--r--src/devices/machine/nmc9306.h (renamed from src/emu/machine/nmc9306.h)0
-rw-r--r--src/devices/machine/nsc810.c (renamed from src/emu/machine/nsc810.c)0
-rw-r--r--src/devices/machine/nsc810.h (renamed from src/emu/machine/nsc810.h)0
-rw-r--r--src/devices/machine/nscsi_bus.c (renamed from src/emu/machine/nscsi_bus.c)0
-rw-r--r--src/devices/machine/nscsi_bus.h (renamed from src/emu/machine/nscsi_bus.h)0
-rw-r--r--src/devices/machine/nscsi_cb.c (renamed from src/emu/machine/nscsi_cb.c)0
-rw-r--r--src/devices/machine/nscsi_cb.h (renamed from src/emu/machine/nscsi_cb.h)0
-rw-r--r--src/devices/machine/nscsi_cd.c (renamed from src/emu/machine/nscsi_cd.c)0
-rw-r--r--src/devices/machine/nscsi_cd.h (renamed from src/emu/machine/nscsi_cd.h)0
-rw-r--r--src/devices/machine/nscsi_hd.c (renamed from src/emu/machine/nscsi_hd.c)0
-rw-r--r--src/devices/machine/nscsi_hd.h (renamed from src/emu/machine/nscsi_hd.h)0
-rw-r--r--src/devices/machine/nscsi_s1410.c (renamed from src/emu/machine/nscsi_s1410.c)0
-rw-r--r--src/devices/machine/nscsi_s1410.h (renamed from src/emu/machine/nscsi_s1410.h)0
-rw-r--r--src/devices/machine/nvram.c (renamed from src/emu/machine/nvram.c)10
-rw-r--r--src/devices/machine/nvram.h (renamed from src/emu/machine/nvram.h)0
-rw-r--r--src/devices/machine/pc_fdc.c (renamed from src/emu/machine/pc_fdc.c)0
-rw-r--r--src/devices/machine/pc_fdc.h (renamed from src/emu/machine/pc_fdc.h)0
-rw-r--r--src/devices/machine/pc_lpt.c (renamed from src/emu/machine/pc_lpt.c)0
-rw-r--r--src/devices/machine/pc_lpt.h (renamed from src/emu/machine/pc_lpt.h)0
-rw-r--r--src/devices/machine/pccard.c (renamed from src/emu/machine/pccard.c)0
-rw-r--r--src/devices/machine/pccard.h (renamed from src/emu/machine/pccard.h)0
-rw-r--r--src/devices/machine/pcf8593.c (renamed from src/emu/machine/pcf8593.c)0
-rw-r--r--src/devices/machine/pcf8593.h (renamed from src/emu/machine/pcf8593.h)0
-rw-r--r--src/devices/machine/pci-apic.c (renamed from src/emu/machine/pci-apic.c)0
-rw-r--r--src/devices/machine/pci-apic.h (renamed from src/emu/machine/pci-apic.h)0
-rw-r--r--src/devices/machine/pci-sata.c (renamed from src/emu/machine/pci-sata.c)0
-rw-r--r--src/devices/machine/pci-sata.h (renamed from src/emu/machine/pci-sata.h)0
-rw-r--r--src/devices/machine/pci-smbus.c (renamed from src/emu/machine/pci-smbus.c)0
-rw-r--r--src/devices/machine/pci-smbus.h (renamed from src/emu/machine/pci-smbus.h)0
-rw-r--r--src/devices/machine/pci-usb.c (renamed from src/emu/machine/pci-usb.c)0
-rw-r--r--src/devices/machine/pci-usb.h (renamed from src/emu/machine/pci-usb.h)0
-rw-r--r--src/devices/machine/pci.c (renamed from src/emu/machine/pci.c)11
-rw-r--r--src/devices/machine/pci.h (renamed from src/emu/machine/pci.h)0
-rw-r--r--src/devices/machine/pci9050.c (renamed from src/emu/machine/pci9050.c)0
-rw-r--r--src/devices/machine/pci9050.h (renamed from src/emu/machine/pci9050.h)0
-rw-r--r--src/devices/machine/pckeybrd.c (renamed from src/emu/machine/pckeybrd.c)0
-rw-r--r--src/devices/machine/pckeybrd.h (renamed from src/emu/machine/pckeybrd.h)0
-rw-r--r--src/devices/machine/pic8259.c (renamed from src/emu/machine/pic8259.c)0
-rw-r--r--src/devices/machine/pic8259.h (renamed from src/emu/machine/pic8259.h)3
-rw-r--r--src/devices/machine/pit8253.c (renamed from src/emu/machine/pit8253.c)28
-rw-r--r--src/devices/machine/pit8253.h (renamed from src/emu/machine/pit8253.h)3
-rw-r--r--src/devices/machine/pla.c (renamed from src/emu/machine/pla.c)0
-rw-r--r--src/devices/machine/pla.h (renamed from src/emu/machine/pla.h)0
-rw-r--r--src/devices/machine/r10696.c (renamed from src/emu/machine/r10696.c)0
-rw-r--r--src/devices/machine/r10696.h (renamed from src/emu/machine/r10696.h)0
-rw-r--r--src/devices/machine/r10788.c (renamed from src/emu/machine/r10788.c)0
-rw-r--r--src/devices/machine/r10788.h (renamed from src/emu/machine/r10788.h)0
-rw-r--r--src/devices/machine/ra17xx.c (renamed from src/emu/machine/ra17xx.c)0
-rw-r--r--src/devices/machine/ra17xx.h (renamed from src/emu/machine/ra17xx.h)0
-rw-r--r--src/devices/machine/ram.c (renamed from src/emu/machine/ram.c)0
-rw-r--r--src/devices/machine/ram.h (renamed from src/emu/machine/ram.h)0
-rw-r--r--src/devices/machine/rescap.h (renamed from src/emu/machine/rescap.h)0
-rw-r--r--src/devices/machine/rf5c296.c (renamed from src/emu/machine/rf5c296.c)0
-rw-r--r--src/devices/machine/rf5c296.h (renamed from src/emu/machine/rf5c296.h)0
-rw-r--r--src/devices/machine/roc10937.c (renamed from src/emu/machine/roc10937.c)0
-rw-r--r--src/devices/machine/roc10937.h (renamed from src/emu/machine/roc10937.h)0
-rw-r--r--src/devices/machine/rp5c01.c (renamed from src/emu/machine/rp5c01.c)0
-rw-r--r--src/devices/machine/rp5c01.h (renamed from src/emu/machine/rp5c01.h)0
-rw-r--r--src/devices/machine/rp5c15.c (renamed from src/emu/machine/rp5c15.c)0
-rw-r--r--src/devices/machine/rp5c15.h (renamed from src/emu/machine/rp5c15.h)0
-rw-r--r--src/devices/machine/rp5h01.c (renamed from src/emu/machine/rp5h01.c)0
-rw-r--r--src/devices/machine/rp5h01.h (renamed from src/emu/machine/rp5h01.h)0
-rw-r--r--src/devices/machine/rtc4543.c (renamed from src/emu/machine/rtc4543.c)0
-rw-r--r--src/devices/machine/rtc4543.h (renamed from src/emu/machine/rtc4543.h)0
-rw-r--r--src/devices/machine/rtc65271.c (renamed from src/emu/machine/rtc65271.c)0
-rw-r--r--src/devices/machine/rtc65271.h (renamed from src/emu/machine/rtc65271.h)0
-rw-r--r--src/devices/machine/rtc9701.c (renamed from src/emu/machine/rtc9701.c)0
-rw-r--r--src/devices/machine/rtc9701.h (renamed from src/emu/machine/rtc9701.h)0
-rw-r--r--src/devices/machine/s2636.c (renamed from src/emu/machine/s2636.c)0
-rw-r--r--src/devices/machine/s2636.h (renamed from src/emu/machine/s2636.h)0
-rw-r--r--src/devices/machine/s3520cf.c (renamed from src/emu/machine/s3520cf.c)0
-rw-r--r--src/devices/machine/s3520cf.h (renamed from src/emu/machine/s3520cf.h)0
-rw-r--r--src/devices/machine/s3c2400.c (renamed from src/emu/machine/s3c2400.c)0
-rw-r--r--src/devices/machine/s3c2400.h (renamed from src/emu/machine/s3c2400.h)0
-rw-r--r--src/devices/machine/s3c2410.c (renamed from src/emu/machine/s3c2410.c)0
-rw-r--r--src/devices/machine/s3c2410.h (renamed from src/emu/machine/s3c2410.h)0
-rw-r--r--src/devices/machine/s3c2440.c (renamed from src/emu/machine/s3c2440.c)0
-rw-r--r--src/devices/machine/s3c2440.h (renamed from src/emu/machine/s3c2440.h)0
-rw-r--r--src/devices/machine/s3c24xx.inc (renamed from src/emu/machine/s3c24xx.inc)0
-rw-r--r--src/devices/machine/s3c44b0.c (renamed from src/emu/machine/s3c44b0.c)0
-rw-r--r--src/devices/machine/s3c44b0.h (renamed from src/emu/machine/s3c44b0.h)0
-rw-r--r--src/devices/machine/saturn.c (renamed from src/emu/machine/saturn.c)2
-rw-r--r--src/devices/machine/serflash.c (renamed from src/emu/machine/serflash.c)0
-rw-r--r--src/devices/machine/serflash.h (renamed from src/emu/machine/serflash.h)0
-rw-r--r--src/devices/machine/smc91c9x.c (renamed from src/emu/machine/smc91c9x.c)0
-rw-r--r--src/devices/machine/smc91c9x.h (renamed from src/emu/machine/smc91c9x.h)0
-rw-r--r--src/devices/machine/smpc.c (renamed from src/emu/machine/smpc.c)12
-rw-r--r--src/devices/machine/smpc.h (renamed from src/emu/machine/smpc.h)0
-rw-r--r--src/devices/machine/spchrom.c (renamed from src/emu/machine/spchrom.c)0
-rw-r--r--src/devices/machine/spchrom.h (renamed from src/emu/machine/spchrom.h)0
-rw-r--r--src/devices/machine/steppers.c (renamed from src/emu/machine/steppers.c)0
-rw-r--r--src/devices/machine/steppers.h (renamed from src/emu/machine/steppers.h)0
-rw-r--r--src/devices/machine/strata.c (renamed from src/emu/machine/strata.c)0
-rw-r--r--src/devices/machine/strata.h (renamed from src/emu/machine/strata.h)0
-rw-r--r--src/devices/machine/stvcd.c (renamed from src/emu/machine/stvcd.c)7
-rw-r--r--src/devices/machine/t10mmc.c (renamed from src/emu/machine/t10mmc.c)0
-rw-r--r--src/devices/machine/t10mmc.h (renamed from src/emu/machine/t10mmc.h)0
-rw-r--r--src/devices/machine/t10sbc.c (renamed from src/emu/machine/t10sbc.c)0
-rw-r--r--src/devices/machine/t10sbc.h (renamed from src/emu/machine/t10sbc.h)0
-rw-r--r--src/devices/machine/t10spc.c (renamed from src/emu/machine/t10spc.c)0
-rw-r--r--src/devices/machine/t10spc.h (renamed from src/emu/machine/t10spc.h)0
-rw-r--r--src/devices/machine/tc009xlvc.c (renamed from src/emu/machine/tc009xlvc.c)0
-rw-r--r--src/devices/machine/tc009xlvc.h (renamed from src/emu/machine/tc009xlvc.h)0
-rw-r--r--src/devices/machine/terminal.c (renamed from src/emu/machine/terminal.c)0
-rw-r--r--src/devices/machine/terminal.h (renamed from src/emu/machine/terminal.h)0
-rw-r--r--src/devices/machine/timekpr.c (renamed from src/emu/machine/timekpr.c)0
-rw-r--r--src/devices/machine/timekpr.h (renamed from src/emu/machine/timekpr.h)0
-rw-r--r--src/devices/machine/tmp68301.c (renamed from src/emu/machine/tmp68301.c)11
-rw-r--r--src/devices/machine/tmp68301.h (renamed from src/emu/machine/tmp68301.h)1
-rw-r--r--src/devices/machine/tms1024.c (renamed from src/emu/machine/tms1024.c)0
-rw-r--r--src/devices/machine/tms1024.h (renamed from src/emu/machine/tms1024.h)0
-rw-r--r--src/devices/machine/tms5501.c (renamed from src/emu/machine/tms5501.c)0
-rw-r--r--src/devices/machine/tms5501.h (renamed from src/emu/machine/tms5501.h)0
-rw-r--r--src/devices/machine/tms6100.c (renamed from src/emu/machine/tms6100.c)23
-rw-r--r--src/devices/machine/tms6100.h (renamed from src/emu/machine/tms6100.h)3
-rw-r--r--src/devices/machine/tms9901.c (renamed from src/emu/machine/tms9901.c)0
-rw-r--r--src/devices/machine/tms9901.h (renamed from src/emu/machine/tms9901.h)0
-rw-r--r--src/devices/machine/tms9902.c (renamed from src/emu/machine/tms9902.c)0
-rw-r--r--src/devices/machine/tms9902.h (renamed from src/emu/machine/tms9902.h)0
-rw-r--r--src/devices/machine/upd1990a.c (renamed from src/emu/machine/upd1990a.c)0
-rw-r--r--src/devices/machine/upd1990a.h (renamed from src/emu/machine/upd1990a.h)0
-rw-r--r--src/devices/machine/upd4701.c (renamed from src/emu/machine/upd4701.c)0
-rw-r--r--src/devices/machine/upd4701.h (renamed from src/emu/machine/upd4701.h)0
-rw-r--r--src/devices/machine/upd4992.c (renamed from src/emu/machine/upd4992.c)0
-rw-r--r--src/devices/machine/upd4992.h (renamed from src/emu/machine/upd4992.h)0
-rw-r--r--src/devices/machine/upd7002.c (renamed from src/emu/machine/upd7002.c)0
-rw-r--r--src/devices/machine/upd7002.h (renamed from src/emu/machine/upd7002.h)0
-rw-r--r--src/devices/machine/upd71071.c (renamed from src/emu/machine/upd71071.c)0
-rw-r--r--src/devices/machine/upd71071.h (renamed from src/emu/machine/upd71071.h)0
-rw-r--r--src/devices/machine/upd765.c (renamed from src/emu/machine/upd765.c)6
-rw-r--r--src/devices/machine/upd765.h (renamed from src/emu/machine/upd765.h)0
-rw-r--r--src/devices/machine/v3021.c (renamed from src/emu/machine/v3021.c)0
-rw-r--r--src/devices/machine/v3021.h (renamed from src/emu/machine/v3021.h)0
-rw-r--r--src/devices/machine/vrc4373.c (renamed from src/emu/machine/vrc4373.c)0
-rw-r--r--src/devices/machine/vrc4373.h (renamed from src/emu/machine/vrc4373.h)0
-rw-r--r--src/devices/machine/vt82c496.c225
-rw-r--r--src/devices/machine/vt82c496.h60
-rw-r--r--src/devices/machine/vt83c461.c (renamed from src/emu/machine/vt83c461.c)0
-rw-r--r--src/devices/machine/vt83c461.h (renamed from src/emu/machine/vt83c461.h)0
-rw-r--r--src/devices/machine/wd11c00_17.c (renamed from src/emu/machine/wd11c00_17.c)0
-rw-r--r--src/devices/machine/wd11c00_17.h (renamed from src/emu/machine/wd11c00_17.h)0
-rw-r--r--src/devices/machine/wd2010.c (renamed from src/emu/machine/wd2010.c)0
-rw-r--r--src/devices/machine/wd2010.h (renamed from src/emu/machine/wd2010.h)0
-rw-r--r--src/devices/machine/wd33c93.c (renamed from src/emu/machine/wd33c93.c)0
-rw-r--r--src/devices/machine/wd33c93.h (renamed from src/emu/machine/wd33c93.h)0
-rw-r--r--src/devices/machine/wd7600.c (renamed from src/emu/machine/wd7600.c)0
-rw-r--r--src/devices/machine/wd7600.h (renamed from src/emu/machine/wd7600.h)0
-rw-r--r--src/devices/machine/wd_fdc.c (renamed from src/emu/machine/wd_fdc.c)4
-rw-r--r--src/devices/machine/wd_fdc.h (renamed from src/emu/machine/wd_fdc.h)2
-rw-r--r--src/devices/machine/wozfdc.c (renamed from src/emu/machine/wozfdc.c)0
-rw-r--r--src/devices/machine/wozfdc.h (renamed from src/emu/machine/wozfdc.h)0
-rw-r--r--src/devices/machine/x2212.c (renamed from src/emu/machine/x2212.c)0
-rw-r--r--src/devices/machine/x2212.h (renamed from src/emu/machine/x2212.h)0
-rw-r--r--src/devices/machine/x76f041.c (renamed from src/emu/machine/x76f041.c)0
-rw-r--r--src/devices/machine/x76f041.h (renamed from src/emu/machine/x76f041.h)0
-rw-r--r--src/devices/machine/x76f100.c (renamed from src/emu/machine/x76f100.c)0
-rw-r--r--src/devices/machine/x76f100.h (renamed from src/emu/machine/x76f100.h)0
-rw-r--r--src/devices/machine/ym2148.c (renamed from src/emu/machine/ym2148.c)0
-rw-r--r--src/devices/machine/ym2148.h (renamed from src/emu/machine/ym2148.h)0
-rw-r--r--src/devices/machine/z80ctc.c (renamed from src/emu/machine/z80ctc.c)2
-rw-r--r--src/devices/machine/z80ctc.h (renamed from src/emu/machine/z80ctc.h)0
-rw-r--r--src/devices/machine/z80dart.c (renamed from src/emu/machine/z80dart.c)0
-rw-r--r--src/devices/machine/z80dart.h (renamed from src/emu/machine/z80dart.h)0
-rw-r--r--src/devices/machine/z80dma.c (renamed from src/emu/machine/z80dma.c)0
-rw-r--r--src/devices/machine/z80dma.h (renamed from src/emu/machine/z80dma.h)0
-rw-r--r--src/devices/machine/z80pio.c (renamed from src/emu/machine/z80pio.c)0
-rw-r--r--src/devices/machine/z80pio.h (renamed from src/emu/machine/z80pio.h)0
-rw-r--r--src/devices/machine/z80scc.c2241
-rw-r--r--src/devices/machine/z80scc.h728
-rw-r--r--src/devices/machine/z80sio.c1429
-rw-r--r--src/devices/machine/z80sio.h533
-rw-r--r--src/devices/machine/z80sti.c (renamed from src/emu/machine/z80sti.c)0
-rw-r--r--src/devices/machine/z80sti.h (renamed from src/emu/machine/z80sti.h)0
-rw-r--r--src/devices/machine/z8536.c (renamed from src/emu/machine/z8536.c)0
-rw-r--r--src/devices/machine/z8536.h (renamed from src/emu/machine/z8536.h)0
-rw-r--r--src/devices/sound/2151intf.c (renamed from src/emu/sound/2151intf.c)0
-rw-r--r--src/devices/sound/2151intf.h (renamed from src/emu/sound/2151intf.h)0
-rw-r--r--src/devices/sound/2203intf.c (renamed from src/emu/sound/2203intf.c)0
-rw-r--r--src/devices/sound/2203intf.h (renamed from src/emu/sound/2203intf.h)0
-rw-r--r--src/devices/sound/2413intf.c (renamed from src/emu/sound/2413intf.c)0
-rw-r--r--src/devices/sound/2413intf.h (renamed from src/emu/sound/2413intf.h)0
-rw-r--r--src/devices/sound/2608intf.c (renamed from src/emu/sound/2608intf.c)0
-rw-r--r--src/devices/sound/2608intf.h (renamed from src/emu/sound/2608intf.h)0
-rw-r--r--src/devices/sound/2610intf.c (renamed from src/emu/sound/2610intf.c)0
-rw-r--r--src/devices/sound/2610intf.h (renamed from src/emu/sound/2610intf.h)0
-rw-r--r--src/devices/sound/2612intf.c (renamed from src/emu/sound/2612intf.c)0
-rw-r--r--src/devices/sound/2612intf.h (renamed from src/emu/sound/2612intf.h)0
-rw-r--r--src/devices/sound/262intf.c (renamed from src/emu/sound/262intf.c)0
-rw-r--r--src/devices/sound/262intf.h (renamed from src/emu/sound/262intf.h)0
-rw-r--r--src/devices/sound/315-5641.c70
-rw-r--r--src/devices/sound/315-5641.h30
-rw-r--r--src/devices/sound/3526intf.c (renamed from src/emu/sound/3526intf.c)0
-rw-r--r--src/devices/sound/3526intf.h (renamed from src/emu/sound/3526intf.h)0
-rw-r--r--src/devices/sound/3812intf.c (renamed from src/emu/sound/3812intf.c)0
-rw-r--r--src/devices/sound/3812intf.h (renamed from src/emu/sound/3812intf.h)0
-rw-r--r--src/devices/sound/8950intf.c (renamed from src/emu/sound/8950intf.c)0
-rw-r--r--src/devices/sound/8950intf.h (renamed from src/emu/sound/8950intf.h)0
-rw-r--r--src/devices/sound/aica.c (renamed from src/emu/sound/aica.c)0
-rw-r--r--src/devices/sound/aica.h (renamed from src/emu/sound/aica.h)0
-rw-r--r--src/devices/sound/aicadsp.c (renamed from src/emu/sound/aicadsp.c)0
-rw-r--r--src/devices/sound/aicadsp.h (renamed from src/emu/sound/aicadsp.h)0
-rw-r--r--src/devices/sound/amiga.c (renamed from src/emu/sound/amiga.c)0
-rw-r--r--src/devices/sound/amiga.h (renamed from src/emu/sound/amiga.h)0
-rw-r--r--src/devices/sound/asc.c (renamed from src/emu/sound/asc.c)0
-rw-r--r--src/devices/sound/asc.h (renamed from src/emu/sound/asc.h)0
-rw-r--r--src/devices/sound/astrocde.c (renamed from src/emu/sound/astrocde.c)0
-rw-r--r--src/devices/sound/astrocde.h (renamed from src/emu/sound/astrocde.h)0
-rw-r--r--src/devices/sound/awacs.c (renamed from src/emu/sound/awacs.c)0
-rw-r--r--src/devices/sound/awacs.h (renamed from src/emu/sound/awacs.h)0
-rw-r--r--src/devices/sound/ay8910.c (renamed from src/emu/sound/ay8910.c)0
-rw-r--r--src/devices/sound/ay8910.h (renamed from src/emu/sound/ay8910.h)0
-rw-r--r--src/devices/sound/beep.c (renamed from src/emu/sound/beep.c)0
-rw-r--r--src/devices/sound/beep.h (renamed from src/emu/sound/beep.h)0
-rw-r--r--src/devices/sound/bsmt2000.c (renamed from src/emu/sound/bsmt2000.c)0
-rw-r--r--src/devices/sound/bsmt2000.h (renamed from src/emu/sound/bsmt2000.h)0
-rw-r--r--src/devices/sound/c140.c (renamed from src/emu/sound/c140.c)20
-rw-r--r--src/devices/sound/c140.h (renamed from src/emu/sound/c140.h)30
-rw-r--r--src/devices/sound/c352.c (renamed from src/emu/sound/c352.c)26
-rw-r--r--src/devices/sound/c352.h (renamed from src/emu/sound/c352.h)11
-rw-r--r--src/devices/sound/c6280.c (renamed from src/emu/sound/c6280.c)0
-rw-r--r--src/devices/sound/c6280.h (renamed from src/emu/sound/c6280.h)0
-rw-r--r--src/devices/sound/cdda.c (renamed from src/emu/sound/cdda.c)0
-rw-r--r--src/devices/sound/cdda.h (renamed from src/emu/sound/cdda.h)0
-rw-r--r--src/devices/sound/cdp1863.c (renamed from src/emu/sound/cdp1863.c)0
-rw-r--r--src/devices/sound/cdp1863.h (renamed from src/emu/sound/cdp1863.h)0
-rw-r--r--src/devices/sound/cdp1864.c (renamed from src/emu/sound/cdp1864.c)0
-rw-r--r--src/devices/sound/cdp1864.h (renamed from src/emu/sound/cdp1864.h)0
-rw-r--r--src/devices/sound/cdp1869.c (renamed from src/emu/sound/cdp1869.c)0
-rw-r--r--src/devices/sound/cdp1869.h (renamed from src/emu/sound/cdp1869.h)0
-rw-r--r--src/devices/sound/cem3394.c (renamed from src/emu/sound/cem3394.c)0
-rw-r--r--src/devices/sound/cem3394.h (renamed from src/emu/sound/cem3394.h)0
-rw-r--r--src/devices/sound/dac.c (renamed from src/emu/sound/dac.c)0
-rw-r--r--src/devices/sound/dac.h (renamed from src/emu/sound/dac.h)0
-rw-r--r--src/devices/sound/digitalk.c (renamed from src/emu/sound/digitalk.c)6
-rw-r--r--src/devices/sound/digitalk.h (renamed from src/emu/sound/digitalk.h)0
-rw-r--r--src/devices/sound/disc_cls.h (renamed from src/emu/sound/disc_cls.h)0
-rw-r--r--src/devices/sound/disc_dev.h (renamed from src/emu/sound/disc_dev.h)0
-rw-r--r--src/devices/sound/disc_dev.inc (renamed from src/emu/sound/disc_dev.inc)0
-rw-r--r--src/devices/sound/disc_flt.h (renamed from src/emu/sound/disc_flt.h)0
-rw-r--r--src/devices/sound/disc_flt.inc (renamed from src/emu/sound/disc_flt.inc)0
-rw-r--r--src/devices/sound/disc_inp.inc (renamed from src/emu/sound/disc_inp.inc)0
-rw-r--r--src/devices/sound/disc_mth.h (renamed from src/emu/sound/disc_mth.h)0
-rw-r--r--src/devices/sound/disc_mth.inc (renamed from src/emu/sound/disc_mth.inc)0
-rw-r--r--src/devices/sound/disc_sys.inc (renamed from src/emu/sound/disc_sys.inc)0
-rw-r--r--src/devices/sound/disc_wav.h (renamed from src/emu/sound/disc_wav.h)0
-rw-r--r--src/devices/sound/disc_wav.inc (renamed from src/emu/sound/disc_wav.inc)0
-rw-r--r--src/devices/sound/discrete.c (renamed from src/emu/sound/discrete.c)16
-rw-r--r--src/devices/sound/discrete.h (renamed from src/emu/sound/discrete.h)2
-rw-r--r--src/devices/sound/dmadac.c (renamed from src/emu/sound/dmadac.c)0
-rw-r--r--src/devices/sound/dmadac.h (renamed from src/emu/sound/dmadac.h)0
-rw-r--r--src/devices/sound/es1373.c (renamed from src/emu/sound/es1373.c)0
-rw-r--r--src/devices/sound/es1373.h (renamed from src/emu/sound/es1373.h)0
-rw-r--r--src/devices/sound/es5503.c (renamed from src/emu/sound/es5503.c)0
-rw-r--r--src/devices/sound/es5503.h (renamed from src/emu/sound/es5503.h)0
-rw-r--r--src/devices/sound/es5506.c (renamed from src/emu/sound/es5506.c)2
-rw-r--r--src/devices/sound/es5506.h (renamed from src/emu/sound/es5506.h)0
-rw-r--r--src/devices/sound/es8712.c (renamed from src/emu/sound/es8712.c)0
-rw-r--r--src/devices/sound/es8712.h (renamed from src/emu/sound/es8712.h)0
-rw-r--r--src/devices/sound/esqpump.c (renamed from src/emu/sound/esqpump.c)0
-rw-r--r--src/devices/sound/esqpump.h (renamed from src/emu/sound/esqpump.h)0
-rw-r--r--src/devices/sound/flt_rc.c (renamed from src/emu/sound/flt_rc.c)0
-rw-r--r--src/devices/sound/flt_rc.h (renamed from src/emu/sound/flt_rc.h)0
-rw-r--r--src/devices/sound/flt_vol.c (renamed from src/emu/sound/flt_vol.c)0
-rw-r--r--src/devices/sound/flt_vol.h (renamed from src/emu/sound/flt_vol.h)0
-rw-r--r--src/devices/sound/fm.c (renamed from src/emu/sound/fm.c)0
-rw-r--r--src/devices/sound/fm.h (renamed from src/emu/sound/fm.h)0
-rw-r--r--src/devices/sound/fm2612.c (renamed from src/emu/sound/fm2612.c)0
-rw-r--r--src/devices/sound/fmopl.c (renamed from src/emu/sound/fmopl.c)0
-rw-r--r--src/devices/sound/fmopl.h (renamed from src/emu/sound/fmopl.h)0
-rw-r--r--src/devices/sound/gaelco.c (renamed from src/emu/sound/gaelco.c)2
-rw-r--r--src/devices/sound/gaelco.h (renamed from src/emu/sound/gaelco.h)0
-rw-r--r--src/devices/sound/hc55516.c (renamed from src/emu/sound/hc55516.c)0
-rw-r--r--src/devices/sound/hc55516.h (renamed from src/emu/sound/hc55516.h)0
-rw-r--r--src/devices/sound/i5000.c (renamed from src/emu/sound/i5000.c)0
-rw-r--r--src/devices/sound/i5000.h (renamed from src/emu/sound/i5000.h)0
-rw-r--r--src/devices/sound/ics2115.c (renamed from src/emu/sound/ics2115.c)0
-rw-r--r--src/devices/sound/ics2115.h (renamed from src/emu/sound/ics2115.h)0
-rw-r--r--src/devices/sound/iremga20.c (renamed from src/emu/sound/iremga20.c)0
-rw-r--r--src/devices/sound/iremga20.h (renamed from src/emu/sound/iremga20.h)0
-rw-r--r--src/devices/sound/k005289.c (renamed from src/emu/sound/k005289.c)0
-rw-r--r--src/devices/sound/k005289.h (renamed from src/emu/sound/k005289.h)0
-rw-r--r--src/devices/sound/k007232.c (renamed from src/emu/sound/k007232.c)0
-rw-r--r--src/devices/sound/k007232.h (renamed from src/emu/sound/k007232.h)0
-rw-r--r--src/devices/sound/k051649.c (renamed from src/emu/sound/k051649.c)0
-rw-r--r--src/devices/sound/k051649.h (renamed from src/emu/sound/k051649.h)0
-rw-r--r--src/devices/sound/k053260.c (renamed from src/emu/sound/k053260.c)0
-rw-r--r--src/devices/sound/k053260.h (renamed from src/emu/sound/k053260.h)0
-rw-r--r--src/devices/sound/k054539.c (renamed from src/emu/sound/k054539.c)0
-rw-r--r--src/devices/sound/k054539.h (renamed from src/emu/sound/k054539.h)0
-rw-r--r--src/devices/sound/k056800.c (renamed from src/emu/sound/k056800.c)0
-rw-r--r--src/devices/sound/k056800.h (renamed from src/emu/sound/k056800.h)0
-rw-r--r--src/devices/sound/l7a1045_l6028_dsp_a.c (renamed from src/emu/sound/l7a1045_l6028_dsp_a.c)2
-rw-r--r--src/devices/sound/l7a1045_l6028_dsp_a.h (renamed from src/emu/sound/l7a1045_l6028_dsp_a.h)2
-rw-r--r--src/devices/sound/lmc1992.c (renamed from src/emu/sound/lmc1992.c)0
-rw-r--r--src/devices/sound/lmc1992.h (renamed from src/emu/sound/lmc1992.h)0
-rw-r--r--src/devices/sound/mas3507d.c (renamed from src/emu/sound/mas3507d.c)0
-rw-r--r--src/devices/sound/mas3507d.h (renamed from src/emu/sound/mas3507d.h)0
-rw-r--r--src/devices/sound/mos6560.c (renamed from src/emu/sound/mos6560.c)0
-rw-r--r--src/devices/sound/mos6560.h (renamed from src/emu/sound/mos6560.h)0
-rw-r--r--src/devices/sound/mos6581.c (renamed from src/emu/sound/mos6581.c)0
-rw-r--r--src/devices/sound/mos6581.h (renamed from src/emu/sound/mos6581.h)0
-rw-r--r--src/devices/sound/mos7360.c (renamed from src/emu/sound/mos7360.c)0
-rw-r--r--src/devices/sound/mos7360.h (renamed from src/emu/sound/mos7360.h)0
-rw-r--r--src/devices/sound/mpeg_audio.c (renamed from src/emu/sound/mpeg_audio.c)0
-rw-r--r--src/devices/sound/mpeg_audio.h (renamed from src/emu/sound/mpeg_audio.h)0
-rw-r--r--src/devices/sound/msm5205.c (renamed from src/emu/sound/msm5205.c)0
-rw-r--r--src/devices/sound/msm5205.h (renamed from src/emu/sound/msm5205.h)0
-rw-r--r--src/devices/sound/msm5232.c (renamed from src/emu/sound/msm5232.c)0
-rw-r--r--src/devices/sound/msm5232.h (renamed from src/emu/sound/msm5232.h)0
-rw-r--r--src/devices/sound/multipcm.c (renamed from src/emu/sound/multipcm.c)0
-rw-r--r--src/devices/sound/multipcm.h (renamed from src/emu/sound/multipcm.h)0
-rw-r--r--src/devices/sound/n63701x.c (renamed from src/emu/sound/n63701x.c)0
-rw-r--r--src/devices/sound/n63701x.h (renamed from src/emu/sound/n63701x.h)0
-rw-r--r--src/devices/sound/namco.c (renamed from src/emu/sound/namco.c)0
-rw-r--r--src/devices/sound/namco.h (renamed from src/emu/sound/namco.h)0
-rw-r--r--src/devices/sound/nes_apu.c (renamed from src/emu/sound/nes_apu.c)4
-rw-r--r--src/devices/sound/nes_apu.h (renamed from src/emu/sound/nes_apu.h)0
-rw-r--r--src/devices/sound/nes_defs.h (renamed from src/emu/sound/nes_defs.h)0
-rw-r--r--src/devices/sound/nile.c (renamed from src/emu/sound/nile.c)0
-rw-r--r--src/devices/sound/nile.h (renamed from src/emu/sound/nile.h)0
-rw-r--r--src/devices/sound/okiadpcm.c (renamed from src/emu/sound/okiadpcm.c)0
-rw-r--r--src/devices/sound/okiadpcm.h (renamed from src/emu/sound/okiadpcm.h)0
-rw-r--r--src/devices/sound/okim6258.c (renamed from src/emu/sound/okim6258.c)0
-rw-r--r--src/devices/sound/okim6258.h (renamed from src/emu/sound/okim6258.h)0
-rw-r--r--src/devices/sound/okim6295.c (renamed from src/emu/sound/okim6295.c)0
-rw-r--r--src/devices/sound/okim6295.h (renamed from src/emu/sound/okim6295.h)0
-rw-r--r--src/devices/sound/okim6376.c (renamed from src/emu/sound/okim6376.c)0
-rw-r--r--src/devices/sound/okim6376.h (renamed from src/emu/sound/okim6376.h)0
-rw-r--r--src/devices/sound/okim9810.c (renamed from src/emu/sound/okim9810.c)0
-rw-r--r--src/devices/sound/okim9810.h (renamed from src/emu/sound/okim9810.h)0
-rw-r--r--src/devices/sound/pci-ac97.c (renamed from src/emu/sound/pci-ac97.c)0
-rw-r--r--src/devices/sound/pci-ac97.h (renamed from src/emu/sound/pci-ac97.h)0
-rw-r--r--src/devices/sound/pokey.c (renamed from src/emu/sound/pokey.c)0
-rw-r--r--src/devices/sound/pokey.h (renamed from src/emu/sound/pokey.h)0
-rw-r--r--src/devices/sound/pokey.txt (renamed from src/emu/sound/pokey.txt)0
-rw-r--r--src/devices/sound/qs1000.c (renamed from src/emu/sound/qs1000.c)0
-rw-r--r--src/devices/sound/qs1000.h (renamed from src/emu/sound/qs1000.h)0
-rw-r--r--src/devices/sound/qsound.c (renamed from src/emu/sound/qsound.c)0
-rw-r--r--src/devices/sound/qsound.h (renamed from src/emu/sound/qsound.h)0
-rw-r--r--src/devices/sound/rf5c400.c (renamed from src/emu/sound/rf5c400.c)12
-rw-r--r--src/devices/sound/rf5c400.h (renamed from src/emu/sound/rf5c400.h)0
-rw-r--r--src/devices/sound/rf5c68.c (renamed from src/emu/sound/rf5c68.c)0
-rw-r--r--src/devices/sound/rf5c68.h (renamed from src/emu/sound/rf5c68.h)0
-rw-r--r--src/devices/sound/s14001a.c (renamed from src/emu/sound/s14001a.c)0
-rw-r--r--src/devices/sound/s14001a.h (renamed from src/emu/sound/s14001a.h)0
-rw-r--r--src/devices/sound/saa1099.c (renamed from src/emu/sound/saa1099.c)0
-rw-r--r--src/devices/sound/saa1099.h (renamed from src/emu/sound/saa1099.h)0
-rw-r--r--src/devices/sound/samples.c (renamed from src/emu/sound/samples.c)12
-rw-r--r--src/devices/sound/samples.h (renamed from src/emu/sound/samples.h)3
-rw-r--r--src/devices/sound/sb0400.c (renamed from src/emu/sound/sb0400.c)0
-rw-r--r--src/devices/sound/sb0400.h (renamed from src/emu/sound/sb0400.h)0
-rw-r--r--src/devices/sound/scsp.c (renamed from src/emu/sound/scsp.c)19
-rw-r--r--src/devices/sound/scsp.h (renamed from src/emu/sound/scsp.h)0
-rw-r--r--src/devices/sound/scspdsp.c (renamed from src/emu/sound/scspdsp.c)0
-rw-r--r--src/devices/sound/scspdsp.h (renamed from src/emu/sound/scspdsp.h)0
-rw-r--r--src/devices/sound/segapcm.c (renamed from src/emu/sound/segapcm.c)0
-rw-r--r--src/devices/sound/segapcm.h (renamed from src/emu/sound/segapcm.h)0
-rw-r--r--src/devices/sound/sid.c (renamed from src/emu/sound/sid.c)0
-rw-r--r--src/devices/sound/sid.h (renamed from src/emu/sound/sid.h)0
-rw-r--r--src/devices/sound/side6581.h (renamed from src/emu/sound/side6581.h)0
-rw-r--r--src/devices/sound/sidenvel.c (renamed from src/emu/sound/sidenvel.c)0
-rw-r--r--src/devices/sound/sidenvel.h (renamed from src/emu/sound/sidenvel.h)0
-rw-r--r--src/devices/sound/sidvoice.c (renamed from src/emu/sound/sidvoice.c)0
-rw-r--r--src/devices/sound/sidvoice.h (renamed from src/emu/sound/sidvoice.h)0
-rw-r--r--src/devices/sound/sidw6581.h (renamed from src/emu/sound/sidw6581.h)0
-rw-r--r--src/devices/sound/sidw8580.h (renamed from src/emu/sound/sidw8580.h)0
-rw-r--r--src/devices/sound/sn76477.c (renamed from src/emu/sound/sn76477.c)2
-rw-r--r--src/devices/sound/sn76477.h (renamed from src/emu/sound/sn76477.h)0
-rw-r--r--src/devices/sound/sn76496.c (renamed from src/emu/sound/sn76496.c)17
-rw-r--r--src/devices/sound/sn76496.h (renamed from src/emu/sound/sn76496.h)4
-rw-r--r--src/devices/sound/snkwave.c (renamed from src/emu/sound/snkwave.c)0
-rw-r--r--src/devices/sound/snkwave.h (renamed from src/emu/sound/snkwave.h)0
-rw-r--r--src/devices/sound/sp0250.c (renamed from src/emu/sound/sp0250.c)0
-rw-r--r--src/devices/sound/sp0250.h (renamed from src/emu/sound/sp0250.h)0
-rw-r--r--src/devices/sound/sp0256.c (renamed from src/emu/sound/sp0256.c)0
-rw-r--r--src/devices/sound/sp0256.h (renamed from src/emu/sound/sp0256.h)0
-rw-r--r--src/devices/sound/speaker.c (renamed from src/emu/sound/speaker.c)0
-rw-r--r--src/devices/sound/speaker.h (renamed from src/emu/sound/speaker.h)0
-rw-r--r--src/devices/sound/spu.c (renamed from src/emu/sound/spu.c)0
-rw-r--r--src/devices/sound/spu.h (renamed from src/emu/sound/spu.h)0
-rw-r--r--src/devices/sound/spu_tables.c (renamed from src/emu/sound/spu_tables.c)0
-rw-r--r--src/devices/sound/spureverb.c (renamed from src/emu/sound/spureverb.c)0
-rw-r--r--src/devices/sound/spureverb.h (renamed from src/emu/sound/spureverb.h)0
-rw-r--r--src/devices/sound/st0016.c (renamed from src/emu/sound/st0016.c)0
-rw-r--r--src/devices/sound/st0016.h (renamed from src/emu/sound/st0016.h)0
-rw-r--r--src/devices/sound/t6721a.c (renamed from src/emu/sound/t6721a.c)0
-rw-r--r--src/devices/sound/t6721a.h (renamed from src/emu/sound/t6721a.h)0
-rw-r--r--src/devices/sound/t6w28.c (renamed from src/emu/sound/t6w28.c)0
-rw-r--r--src/devices/sound/t6w28.h (renamed from src/emu/sound/t6w28.h)0
-rw-r--r--src/devices/sound/tc8830f.c (renamed from src/emu/sound/tc8830f.c)0
-rw-r--r--src/devices/sound/tc8830f.h (renamed from src/emu/sound/tc8830f.h)0
-rw-r--r--src/devices/sound/tiaintf.c (renamed from src/emu/sound/tiaintf.c)0
-rw-r--r--src/devices/sound/tiaintf.h (renamed from src/emu/sound/tiaintf.h)0
-rw-r--r--src/devices/sound/tiasound.c (renamed from src/emu/sound/tiasound.c)0
-rw-r--r--src/devices/sound/tiasound.h (renamed from src/emu/sound/tiasound.h)0
-rw-r--r--src/devices/sound/tms3615.c (renamed from src/emu/sound/tms3615.c)0
-rw-r--r--src/devices/sound/tms3615.h (renamed from src/emu/sound/tms3615.h)0
-rw-r--r--src/devices/sound/tms36xx.c (renamed from src/emu/sound/tms36xx.c)2
-rw-r--r--src/devices/sound/tms36xx.h (renamed from src/emu/sound/tms36xx.h)0
-rw-r--r--src/devices/sound/tms5110.c (renamed from src/emu/sound/tms5110.c)1107
-rw-r--r--src/devices/sound/tms5110.h (renamed from src/emu/sound/tms5110.h)106
-rw-r--r--src/devices/sound/tms5110r.inc (renamed from src/emu/sound/tms5110r.inc)92
-rw-r--r--src/devices/sound/tms5220.c (renamed from src/emu/sound/tms5220.c)729
-rw-r--r--src/devices/sound/tms5220.h (renamed from src/emu/sound/tms5220.h)44
-rw-r--r--src/devices/sound/tms5220.txt (renamed from src/emu/sound/tms5220.txt)0
-rw-r--r--src/devices/sound/upd7752.c (renamed from src/emu/sound/upd7752.c)0
-rw-r--r--src/devices/sound/upd7752.h (renamed from src/emu/sound/upd7752.h)0
-rw-r--r--src/devices/sound/upd7759.c (renamed from src/emu/sound/upd7759.c)25
-rw-r--r--src/devices/sound/upd7759.h (renamed from src/emu/sound/upd7759.h)22
-rw-r--r--src/devices/sound/vlm5030.c (renamed from src/emu/sound/vlm5030.c)0
-rw-r--r--src/devices/sound/vlm5030.h (renamed from src/emu/sound/vlm5030.h)0
-rw-r--r--src/devices/sound/votrax.c (renamed from src/emu/sound/votrax.c)0
-rw-r--r--src/devices/sound/votrax.h (renamed from src/emu/sound/votrax.h)0
-rw-r--r--src/devices/sound/vrc6.c (renamed from src/emu/sound/vrc6.c)0
-rw-r--r--src/devices/sound/vrc6.h (renamed from src/emu/sound/vrc6.h)0
-rw-r--r--src/devices/sound/vrender0.c (renamed from src/emu/sound/vrender0.c)0
-rw-r--r--src/devices/sound/vrender0.h (renamed from src/emu/sound/vrender0.h)0
-rw-r--r--src/devices/sound/wave.c (renamed from src/emu/sound/wave.c)16
-rw-r--r--src/devices/sound/wave.h (renamed from src/emu/sound/wave.h)3
-rw-r--r--src/devices/sound/x1_010.c (renamed from src/emu/sound/x1_010.c)2
-rw-r--r--src/devices/sound/x1_010.h (renamed from src/emu/sound/x1_010.h)0
-rw-r--r--src/devices/sound/ym2151.c (renamed from src/emu/sound/ym2151.c)0
-rw-r--r--src/devices/sound/ym2151.h (renamed from src/emu/sound/ym2151.h)0
-rw-r--r--src/devices/sound/ym2151.txt (renamed from src/emu/sound/ym2151.txt)0
-rw-r--r--src/devices/sound/ym2413.c (renamed from src/emu/sound/ym2413.c)0
-rw-r--r--src/devices/sound/ym2413.h (renamed from src/emu/sound/ym2413.h)0
-rw-r--r--src/devices/sound/ymdeltat.c (renamed from src/emu/sound/ymdeltat.c)0
-rw-r--r--src/devices/sound/ymdeltat.h (renamed from src/emu/sound/ymdeltat.h)0
-rw-r--r--src/devices/sound/ymf262.c (renamed from src/emu/sound/ymf262.c)0
-rw-r--r--src/devices/sound/ymf262.h (renamed from src/emu/sound/ymf262.h)0
-rw-r--r--src/devices/sound/ymf271.c (renamed from src/emu/sound/ymf271.c)0
-rw-r--r--src/devices/sound/ymf271.h (renamed from src/emu/sound/ymf271.h)0
-rw-r--r--src/devices/sound/ymf278b.c (renamed from src/emu/sound/ymf278b.c)57
-rw-r--r--src/devices/sound/ymf278b.h (renamed from src/emu/sound/ymf278b.h)7
-rw-r--r--src/devices/sound/ymz280b.c (renamed from src/emu/sound/ymz280b.c)2
-rw-r--r--src/devices/sound/ymz280b.h (renamed from src/emu/sound/ymz280b.h)0
-rw-r--r--src/devices/sound/ymz770.c (renamed from src/emu/sound/ymz770.c)0
-rw-r--r--src/devices/sound/ymz770.h (renamed from src/emu/sound/ymz770.h)0
-rw-r--r--src/devices/sound/zsg2.c (renamed from src/emu/sound/zsg2.c)0
-rw-r--r--src/devices/sound/zsg2.h (renamed from src/emu/sound/zsg2.h)0
-rw-r--r--src/devices/video/315_5124.c (renamed from src/emu/video/315_5124.c)26
-rw-r--r--src/devices/video/315_5124.h (renamed from src/emu/video/315_5124.h)2
-rw-r--r--src/devices/video/315_5313.c (renamed from src/emu/video/315_5313.c)6
-rw-r--r--src/devices/video/315_5313.h (renamed from src/emu/video/315_5313.h)0
-rw-r--r--src/devices/video/bufsprite.c (renamed from src/emu/video/bufsprite.c)0
-rw-r--r--src/devices/video/bufsprite.h (renamed from src/emu/video/bufsprite.h)0
-rw-r--r--src/devices/video/cdp1861.c (renamed from src/emu/video/cdp1861.c)0
-rw-r--r--src/devices/video/cdp1861.h (renamed from src/emu/video/cdp1861.h)0
-rw-r--r--src/devices/video/cdp1862.c (renamed from src/emu/video/cdp1862.c)0
-rw-r--r--src/devices/video/cdp1862.h (renamed from src/emu/video/cdp1862.h)0
-rw-r--r--src/devices/video/cgapal.c (renamed from src/emu/video/cgapal.c)0
-rw-r--r--src/devices/video/cgapal.h (renamed from src/emu/video/cgapal.h)0
-rw-r--r--src/devices/video/clgd542x.c (renamed from src/emu/video/clgd542x.c)0
-rw-r--r--src/devices/video/clgd542x.h (renamed from src/emu/video/clgd542x.h)0
-rw-r--r--src/devices/video/crt9007.c (renamed from src/emu/video/crt9007.c)0
-rw-r--r--src/devices/video/crt9007.h (renamed from src/emu/video/crt9007.h)0
-rw-r--r--src/devices/video/crt9021.c (renamed from src/emu/video/crt9021.c)0
-rw-r--r--src/devices/video/crt9021.h (renamed from src/emu/video/crt9021.h)0
-rw-r--r--src/devices/video/crt9212.c (renamed from src/emu/video/crt9212.c)0
-rw-r--r--src/devices/video/crt9212.h (renamed from src/emu/video/crt9212.h)0
-rw-r--r--src/devices/video/crtc_ega.c (renamed from src/emu/video/crtc_ega.c)0
-rw-r--r--src/devices/video/crtc_ega.h (renamed from src/emu/video/crtc_ega.h)0
-rw-r--r--src/devices/video/dl1416.c (renamed from src/emu/video/dl1416.c)0
-rw-r--r--src/devices/video/dl1416.h (renamed from src/emu/video/dl1416.h)0
-rw-r--r--src/devices/video/dm9368.c (renamed from src/emu/video/dm9368.c)0
-rw-r--r--src/devices/video/dm9368.h (renamed from src/emu/video/dm9368.h)0
-rw-r--r--src/devices/video/ef9340_1.c (renamed from src/emu/video/ef9340_1.c)0
-rw-r--r--src/devices/video/ef9340_1.h (renamed from src/emu/video/ef9340_1.h)0
-rw-r--r--src/devices/video/ef9341_chargen.h (renamed from src/emu/video/ef9341_chargen.h)0
-rw-r--r--src/devices/video/ef9345.c (renamed from src/emu/video/ef9345.c)2
-rw-r--r--src/devices/video/ef9345.h (renamed from src/emu/video/ef9345.h)0
-rw-r--r--src/devices/video/epic12.c (renamed from src/emu/video/epic12.c)0
-rw-r--r--src/devices/video/epic12.h (renamed from src/emu/video/epic12.h)0
-rw-r--r--src/devices/video/epic12_blit0.c (renamed from src/emu/video/epic12_blit0.c)0
-rw-r--r--src/devices/video/epic12_blit1.c (renamed from src/emu/video/epic12_blit1.c)0
-rw-r--r--src/devices/video/epic12_blit2.c (renamed from src/emu/video/epic12_blit2.c)0
-rw-r--r--src/devices/video/epic12_blit3.c (renamed from src/emu/video/epic12_blit3.c)0
-rw-r--r--src/devices/video/epic12_blit4.c (renamed from src/emu/video/epic12_blit4.c)0
-rw-r--r--src/devices/video/epic12_blit5.c (renamed from src/emu/video/epic12_blit5.c)0
-rw-r--r--src/devices/video/epic12_blit6.c (renamed from src/emu/video/epic12_blit6.c)0
-rw-r--r--src/devices/video/epic12_blit7.c (renamed from src/emu/video/epic12_blit7.c)0
-rw-r--r--src/devices/video/epic12_blit8.c (renamed from src/emu/video/epic12_blit8.c)0
-rw-r--r--src/devices/video/epic12in.inc (renamed from src/emu/video/epic12in.inc)0
-rw-r--r--src/devices/video/epic12pixel.inc (renamed from src/emu/video/epic12pixel.inc)0
-rw-r--r--src/devices/video/fixfreq.c (renamed from src/emu/video/fixfreq.c)0
-rw-r--r--src/devices/video/fixfreq.h (renamed from src/emu/video/fixfreq.h)0
-rw-r--r--src/devices/video/gf4500.c (renamed from src/emu/video/gf4500.c)0
-rw-r--r--src/devices/video/gf4500.h (renamed from src/emu/video/gf4500.h)0
-rw-r--r--src/devices/video/gf7600gs.c (renamed from src/emu/video/gf7600gs.c)0
-rw-r--r--src/devices/video/gf7600gs.h (renamed from src/emu/video/gf7600gs.h)0
-rw-r--r--src/devices/video/h63484.c (renamed from src/emu/video/h63484.c)2
-rw-r--r--src/devices/video/h63484.h (renamed from src/emu/video/h63484.h)0
-rw-r--r--src/devices/video/hd44102.c (renamed from src/emu/video/hd44102.c)0
-rw-r--r--src/devices/video/hd44102.h (renamed from src/emu/video/hd44102.h)0
-rw-r--r--src/devices/video/hd44352.c (renamed from src/emu/video/hd44352.c)0
-rw-r--r--src/devices/video/hd44352.h (renamed from src/emu/video/hd44352.h)0
-rw-r--r--src/devices/video/hd44780.c (renamed from src/emu/video/hd44780.c)0
-rw-r--r--src/devices/video/hd44780.h (renamed from src/emu/video/hd44780.h)16
-rw-r--r--src/devices/video/hd61830.c (renamed from src/emu/video/hd61830.c)0
-rw-r--r--src/devices/video/hd61830.h (renamed from src/emu/video/hd61830.h)0
-rw-r--r--src/devices/video/hd63484.c (renamed from src/emu/video/hd63484.c)0
-rw-r--r--src/devices/video/hd63484.h (renamed from src/emu/video/hd63484.h)0
-rw-r--r--src/devices/video/hd66421.c (renamed from src/emu/video/hd66421.c)0
-rw-r--r--src/devices/video/hd66421.h (renamed from src/emu/video/hd66421.h)0
-rw-r--r--src/devices/video/huc6202.c (renamed from src/emu/video/huc6202.c)0
-rw-r--r--src/devices/video/huc6202.h (renamed from src/emu/video/huc6202.h)0
-rw-r--r--src/devices/video/huc6260.c (renamed from src/emu/video/huc6260.c)0
-rw-r--r--src/devices/video/huc6260.h (renamed from src/emu/video/huc6260.h)0
-rw-r--r--src/devices/video/huc6261.c (renamed from src/emu/video/huc6261.c)0
-rw-r--r--src/devices/video/huc6261.h (renamed from src/emu/video/huc6261.h)0
-rw-r--r--src/devices/video/huc6270.c (renamed from src/emu/video/huc6270.c)0
-rw-r--r--src/devices/video/huc6270.h (renamed from src/emu/video/huc6270.h)0
-rw-r--r--src/devices/video/huc6272.c (renamed from src/emu/video/huc6272.c)0
-rw-r--r--src/devices/video/huc6272.h (renamed from src/emu/video/huc6272.h)0
-rw-r--r--src/devices/video/i8244.c (renamed from src/emu/video/i8244.c)0
-rw-r--r--src/devices/video/i8244.h (renamed from src/emu/video/i8244.h)0
-rw-r--r--src/devices/video/i82730.c (renamed from src/emu/video/i82730.c)6
-rw-r--r--src/devices/video/i82730.h (renamed from src/emu/video/i82730.h)4
-rw-r--r--src/devices/video/i8275.c (renamed from src/emu/video/i8275.c)2
-rw-r--r--src/devices/video/i8275.h (renamed from src/emu/video/i8275.h)0
-rw-r--r--src/devices/video/m50458.c (renamed from src/emu/video/m50458.c)0
-rw-r--r--src/devices/video/m50458.h (renamed from src/emu/video/m50458.h)0
-rw-r--r--src/devices/video/mb90082.c (renamed from src/emu/video/mb90082.c)0
-rw-r--r--src/devices/video/mb90082.h (renamed from src/emu/video/mb90082.h)0
-rw-r--r--src/devices/video/mb_vcu.c (renamed from src/emu/video/mb_vcu.c)2
-rw-r--r--src/devices/video/mb_vcu.h (renamed from src/emu/video/mb_vcu.h)0
-rw-r--r--src/devices/video/mc6845.c (renamed from src/emu/video/mc6845.c)0
-rw-r--r--src/devices/video/mc6845.h (renamed from src/emu/video/mc6845.h)0
-rw-r--r--src/devices/video/mc6847.c (renamed from src/emu/video/mc6847.c)0
-rw-r--r--src/devices/video/mc6847.h (renamed from src/emu/video/mc6847.h)0
-rw-r--r--src/devices/video/mos6566.c (renamed from src/emu/video/mos6566.c)0
-rw-r--r--src/devices/video/mos6566.h (renamed from src/emu/video/mos6566.h)0
-rw-r--r--src/devices/video/msm6222b.c (renamed from src/emu/video/msm6222b.c)0
-rw-r--r--src/devices/video/msm6222b.h (renamed from src/emu/video/msm6222b.h)0
-rw-r--r--src/devices/video/msm6255.c (renamed from src/emu/video/msm6255.c)0
-rw-r--r--src/devices/video/msm6255.h (renamed from src/emu/video/msm6255.h)0
-rw-r--r--src/devices/video/pc_vga.c (renamed from src/emu/video/pc_vga.c)0
-rw-r--r--src/devices/video/pc_vga.h (renamed from src/emu/video/pc_vga.h)0
-rw-r--r--src/devices/video/poly.h (renamed from src/emu/video/poly.h)150
-rw-r--r--src/devices/video/polylgcy.c (renamed from src/emu/video/polylgcy.c)0
-rw-r--r--src/devices/video/polylgcy.h (renamed from src/emu/video/polylgcy.h)6
-rw-r--r--src/devices/video/psx.c (renamed from src/emu/video/psx.c)0
-rw-r--r--src/devices/video/psx.h (renamed from src/emu/video/psx.h)0
-rw-r--r--src/devices/video/ramdac.c (renamed from src/emu/video/ramdac.c)0
-rw-r--r--src/devices/video/ramdac.h (renamed from src/emu/video/ramdac.h)0
-rw-r--r--src/devices/video/saa5050.c (renamed from src/emu/video/saa5050.c)0
-rw-r--r--src/devices/video/saa5050.h (renamed from src/emu/video/saa5050.h)0
-rw-r--r--src/devices/video/scn2674.c (renamed from src/emu/video/scn2674.c)171
-rw-r--r--src/devices/video/scn2674.h (renamed from src/emu/video/scn2674.h)4
-rw-r--r--src/devices/video/sed1200.c (renamed from src/emu/video/sed1200.c)0
-rw-r--r--src/devices/video/sed1200.h (renamed from src/emu/video/sed1200.h)0
-rw-r--r--src/devices/video/sed1330.c (renamed from src/emu/video/sed1330.c)0
-rw-r--r--src/devices/video/sed1330.h (renamed from src/emu/video/sed1330.h)0
-rw-r--r--src/devices/video/sed1520.c (renamed from src/emu/video/sed1520.c)0
-rw-r--r--src/devices/video/sed1520.h (renamed from src/emu/video/sed1520.h)0
-rw-r--r--src/devices/video/snes_ppu.c (renamed from src/emu/video/snes_ppu.c)0
-rw-r--r--src/devices/video/snes_ppu.h (renamed from src/emu/video/snes_ppu.h)0
-rw-r--r--src/devices/video/stvvdp1.c (renamed from src/emu/video/stvvdp1.c)0
-rw-r--r--src/devices/video/stvvdp2.c (renamed from src/emu/video/stvvdp2.c)0
-rw-r--r--src/devices/video/t6a04.c (renamed from src/emu/video/t6a04.c)0
-rw-r--r--src/devices/video/t6a04.h (renamed from src/emu/video/t6a04.h)0
-rw-r--r--src/devices/video/tea1002.c (renamed from src/emu/video/tea1002.c)0
-rw-r--r--src/devices/video/tea1002.h (renamed from src/emu/video/tea1002.h)0
-rw-r--r--src/devices/video/tlc34076.c (renamed from src/emu/video/tlc34076.c)0
-rw-r--r--src/devices/video/tlc34076.h (renamed from src/emu/video/tlc34076.h)0
-rw-r--r--src/devices/video/tms34061.c (renamed from src/emu/video/tms34061.c)0
-rw-r--r--src/devices/video/tms34061.h (renamed from src/emu/video/tms34061.h)0
-rw-r--r--src/devices/video/tms3556.c (renamed from src/emu/video/tms3556.c)0
-rw-r--r--src/devices/video/tms3556.h (renamed from src/emu/video/tms3556.h)0
-rw-r--r--src/devices/video/tms9927.c (renamed from src/emu/video/tms9927.c)0
-rw-r--r--src/devices/video/tms9927.h (renamed from src/emu/video/tms9927.h)0
-rw-r--r--src/devices/video/tms9928a.c (renamed from src/emu/video/tms9928a.c)0
-rw-r--r--src/devices/video/tms9928a.h (renamed from src/emu/video/tms9928a.h)0
-rw-r--r--src/devices/video/upd3301.c (renamed from src/emu/video/upd3301.c)0
-rw-r--r--src/devices/video/upd3301.h (renamed from src/emu/video/upd3301.h)0
-rw-r--r--src/devices/video/upd7220.c (renamed from src/emu/video/upd7220.c)5
-rw-r--r--src/devices/video/upd7220.h (renamed from src/emu/video/upd7220.h)0
-rw-r--r--src/devices/video/upd7227.c (renamed from src/emu/video/upd7227.c)0
-rw-r--r--src/devices/video/upd7227.h (renamed from src/emu/video/upd7227.h)0
-rw-r--r--src/devices/video/v9938.c (renamed from src/emu/video/v9938.c)168
-rw-r--r--src/devices/video/v9938.h (renamed from src/emu/video/v9938.h)59
-rw-r--r--src/devices/video/vic4567.c (renamed from src/emu/video/vic4567.c)0
-rw-r--r--src/devices/video/vic4567.h (renamed from src/emu/video/vic4567.h)0
-rw-r--r--src/devices/video/vooddefs.h (renamed from src/emu/video/vooddefs.h)33
-rw-r--r--src/devices/video/voodoo.c (renamed from src/emu/video/voodoo.c)40
-rw-r--r--src/devices/video/voodoo.h (renamed from src/emu/video/voodoo.h)0
-rw-r--r--src/devices/video/voodoo_pci.c (renamed from src/emu/video/voodoo_pci.c)0
-rw-r--r--src/devices/video/voodoo_pci.h (renamed from src/emu/video/voodoo_pci.h)0
-rw-r--r--src/emu/attotime.c36
-rw-r--r--src/emu/attotime.h132
-rw-r--r--src/emu/audit.c11
-rw-r--r--src/emu/bus/pc_kbd/iskr1030.c453
-rw-r--r--src/emu/bus/scsi/omti5100.c94
-rw-r--r--src/emu/clifront.c6
-rw-r--r--src/emu/cpu/arcompact/arcompact_make.py433
-rw-r--r--src/emu/cpu/hphybrid/hphybrid.c961
-rw-r--r--src/emu/debug/debugcmd.c2
-rw-r--r--src/emu/debug/debugcpu.c11
-rw-r--r--src/emu/device.c4
-rw-r--r--src/emu/dipty.c85
-rw-r--r--src/emu/dipty.h48
-rw-r--r--src/emu/drivenum.c2
-rw-r--r--src/emu/drivenum.h2
-rw-r--r--src/emu/drivers/empty.c2
-rw-r--r--src/emu/drivers/emudummy.c2
-rw-r--r--src/emu/drivers/testcpu.c2
-rw-r--r--src/emu/emu.h1
-rw-r--r--src/emu/emuopts.c35
-rw-r--r--src/emu/emuopts.h17
-rw-r--r--src/emu/emupal.c76
-rw-r--r--src/emu/emupal.h61
-rw-r--r--src/emu/gamedrv.h56
-rw-r--r--src/emu/info.c32
-rw-r--r--src/emu/ioport.c17
-rw-r--r--src/emu/ioport.h1
-rw-r--r--src/emu/luaengine.c2
-rw-r--r--src/emu/machine.c17
-rw-r--r--src/emu/machine/at29040a.c446
-rw-r--r--src/emu/machine/at29040a.h90
-rw-r--r--src/emu/machine/i8271.c1510
-rw-r--r--src/emu/machine/i8271.h165
-rw-r--r--src/emu/mconfig.h2
-rw-r--r--src/emu/memory.c24
-rw-r--r--src/emu/memory.h7
-rw-r--r--src/emu/netlist/macro/nlm_opamp.c47
-rw-r--r--src/emu/netlist/nl_time.h134
-rw-r--r--src/emu/netlist/plib/pstring.c360
-rw-r--r--src/emu/netlist/plib/pstring.h259
-rw-r--r--src/emu/output.c6
-rw-r--r--src/emu/render.c43
-rw-r--r--src/emu/render.h12
-rw-r--r--src/emu/rendfont.c4
-rw-r--r--src/emu/rendlay.c44
-rw-r--r--src/emu/rendlay.h9
-rw-r--r--src/emu/romload.h1
-rw-r--r--src/emu/save.c9
-rw-r--r--src/emu/save.h4
-rw-r--r--src/emu/schedule.c34
-rw-r--r--src/emu/screen.c19
-rw-r--r--src/emu/screen.h15
-rw-r--r--src/emu/softlist.c8
-rw-r--r--src/emu/sound.c26
-rw-r--r--src/emu/ui/devopt.c2
-rw-r--r--src/emu/ui/info_pty.c44
-rw-r--r--src/emu/ui/info_pty.h24
-rw-r--r--src/emu/ui/mainmenu.c9
-rw-r--r--src/emu/ui/mainmenu.h3
-rw-r--r--src/emu/ui/miscmenu.c8
-rw-r--r--src/emu/ui/selgame.c16
-rw-r--r--src/emu/ui/sliders.c3
-rw-r--r--src/emu/ui/ui.c60
-rw-r--r--src/emu/validity.c6
-rw-r--r--src/emu/video.c14
-rw-r--r--src/emu/video/rgbsse.h12
-rw-r--r--src/lib/formats/atom_dsk.c31
-rw-r--r--src/lib/formats/atom_dsk.h22
-rw-r--r--src/lib/formats/bbc_dsk.c216
-rw-r--r--src/lib/formats/bbc_dsk.h62
-rw-r--r--src/lib/formats/flopimg.c2
-rw-r--r--src/lib/formats/mfm_hd.c750
-rw-r--r--src/lib/formats/mfm_hd.h212
-rw-r--r--src/lib/formats/ti99_dsk.c8
-rw-r--r--src/lib/formats/tiki100_dsk.c5
-rw-r--r--src/lib/formats/vector06_dsk.c4
-rw-r--r--src/lib/netlist/analog/nld_bjt.c (renamed from src/emu/netlist/analog/nld_bjt.c)24
-rw-r--r--src/lib/netlist/analog/nld_bjt.h (renamed from src/emu/netlist/analog/nld_bjt.h)30
-rw-r--r--src/lib/netlist/analog/nld_fourterm.c (renamed from src/emu/netlist/analog/nld_fourterm.c)7
-rw-r--r--src/lib/netlist/analog/nld_fourterm.h (renamed from src/emu/netlist/analog/nld_fourterm.h)2
-rw-r--r--src/lib/netlist/analog/nld_opamps.c (renamed from src/emu/netlist/analog/nld_opamps.c)107
-rw-r--r--src/lib/netlist/analog/nld_opamps.h (renamed from src/emu/netlist/analog/nld_opamps.h)6
-rw-r--r--src/lib/netlist/analog/nld_switches.c (renamed from src/emu/netlist/analog/nld_switches.c)2
-rw-r--r--src/lib/netlist/analog/nld_switches.h (renamed from src/emu/netlist/analog/nld_switches.h)2
-rw-r--r--src/lib/netlist/analog/nld_twoterm.c (renamed from src/emu/netlist/analog/nld_twoterm.c)9
-rw-r--r--src/lib/netlist/analog/nld_twoterm.h (renamed from src/emu/netlist/analog/nld_twoterm.h)61
-rw-r--r--src/lib/netlist/build/makefile166
-rw-r--r--src/lib/netlist/devices/net_lib.c (renamed from src/emu/netlist/devices/net_lib.c)62
-rw-r--r--src/lib/netlist/devices/net_lib.h (renamed from src/emu/netlist/devices/net_lib.h)21
-rw-r--r--src/lib/netlist/devices/nld_4020.c (renamed from src/emu/netlist/devices/nld_4020.c)0
-rw-r--r--src/lib/netlist/devices/nld_4020.h (renamed from src/emu/netlist/devices/nld_4020.h)2
-rw-r--r--src/lib/netlist/devices/nld_4066.c (renamed from src/emu/netlist/devices/nld_4066.c)0
-rw-r--r--src/lib/netlist/devices/nld_4066.h (renamed from src/emu/netlist/devices/nld_4066.h)2
-rw-r--r--src/lib/netlist/devices/nld_7400.c (renamed from src/emu/netlist/devices/nld_7400.c)0
-rw-r--r--src/lib/netlist/devices/nld_7400.h (renamed from src/emu/netlist/devices/nld_7400.h)0
-rw-r--r--src/lib/netlist/devices/nld_7402.c (renamed from src/emu/netlist/devices/nld_7402.c)0
-rw-r--r--src/lib/netlist/devices/nld_7402.h (renamed from src/emu/netlist/devices/nld_7402.h)0
-rw-r--r--src/lib/netlist/devices/nld_7404.c (renamed from src/emu/netlist/devices/nld_7404.c)0
-rw-r--r--src/lib/netlist/devices/nld_7404.h (renamed from src/emu/netlist/devices/nld_7404.h)0
-rw-r--r--src/lib/netlist/devices/nld_7408.c (renamed from src/emu/netlist/devices/nld_7408.c)0
-rw-r--r--src/lib/netlist/devices/nld_7408.h (renamed from src/emu/netlist/devices/nld_7408.h)0
-rw-r--r--src/lib/netlist/devices/nld_7410.c (renamed from src/emu/netlist/devices/nld_7410.c)0
-rw-r--r--src/lib/netlist/devices/nld_7410.h (renamed from src/emu/netlist/devices/nld_7410.h)0
-rw-r--r--src/lib/netlist/devices/nld_74107.c (renamed from src/emu/netlist/devices/nld_74107.c)0
-rw-r--r--src/lib/netlist/devices/nld_74107.h (renamed from src/emu/netlist/devices/nld_74107.h)2
-rw-r--r--src/lib/netlist/devices/nld_7411.c (renamed from src/emu/netlist/devices/nld_7411.c)0
-rw-r--r--src/lib/netlist/devices/nld_7411.h (renamed from src/emu/netlist/devices/nld_7411.h)0
-rw-r--r--src/lib/netlist/devices/nld_74123.c (renamed from src/emu/netlist/devices/nld_74123.c)1
-rw-r--r--src/lib/netlist/devices/nld_74123.h (renamed from src/emu/netlist/devices/nld_74123.h)4
-rw-r--r--src/lib/netlist/devices/nld_74153.c (renamed from src/emu/netlist/devices/nld_74153.c)0
-rw-r--r--src/lib/netlist/devices/nld_74153.h (renamed from src/emu/netlist/devices/nld_74153.h)2
-rw-r--r--src/lib/netlist/devices/nld_74175.c (renamed from src/emu/netlist/devices/nld_74175.c)0
-rw-r--r--src/lib/netlist/devices/nld_74175.h (renamed from src/emu/netlist/devices/nld_74175.h)0
-rw-r--r--src/lib/netlist/devices/nld_74192.c (renamed from src/emu/netlist/devices/nld_74192.c)0
-rw-r--r--src/lib/netlist/devices/nld_74192.h (renamed from src/emu/netlist/devices/nld_74192.h)2
-rw-r--r--src/lib/netlist/devices/nld_74193.c (renamed from src/emu/netlist/devices/nld_74193.c)0
-rw-r--r--src/lib/netlist/devices/nld_74193.h (renamed from src/emu/netlist/devices/nld_74193.h)2
-rw-r--r--src/lib/netlist/devices/nld_7420.c (renamed from src/emu/netlist/devices/nld_7420.c)0
-rw-r--r--src/lib/netlist/devices/nld_7420.h (renamed from src/emu/netlist/devices/nld_7420.h)0
-rw-r--r--src/lib/netlist/devices/nld_7425.c (renamed from src/emu/netlist/devices/nld_7425.c)0
-rw-r--r--src/lib/netlist/devices/nld_7425.h (renamed from src/emu/netlist/devices/nld_7425.h)0
-rw-r--r--src/lib/netlist/devices/nld_7427.c (renamed from src/emu/netlist/devices/nld_7427.c)0
-rw-r--r--src/lib/netlist/devices/nld_7427.h (renamed from src/emu/netlist/devices/nld_7427.h)0
-rw-r--r--src/lib/netlist/devices/nld_74279.c (renamed from src/emu/netlist/devices/nld_74279.c)0
-rw-r--r--src/lib/netlist/devices/nld_74279.h (renamed from src/emu/netlist/devices/nld_74279.h)0
-rw-r--r--src/lib/netlist/devices/nld_7430.c (renamed from src/emu/netlist/devices/nld_7430.c)0
-rw-r--r--src/lib/netlist/devices/nld_7430.h (renamed from src/emu/netlist/devices/nld_7430.h)0
-rw-r--r--src/lib/netlist/devices/nld_7432.c (renamed from src/emu/netlist/devices/nld_7432.c)0
-rw-r--r--src/lib/netlist/devices/nld_7432.h (renamed from src/emu/netlist/devices/nld_7432.h)0
-rw-r--r--src/lib/netlist/devices/nld_7437.c (renamed from src/emu/netlist/devices/nld_7437.c)0
-rw-r--r--src/lib/netlist/devices/nld_7437.h (renamed from src/emu/netlist/devices/nld_7437.h)0
-rw-r--r--src/lib/netlist/devices/nld_7448.c (renamed from src/emu/netlist/devices/nld_7448.c)0
-rw-r--r--src/lib/netlist/devices/nld_7448.h (renamed from src/emu/netlist/devices/nld_7448.h)2
-rw-r--r--src/lib/netlist/devices/nld_7450.c (renamed from src/emu/netlist/devices/nld_7450.c)0
-rw-r--r--src/lib/netlist/devices/nld_7450.h (renamed from src/emu/netlist/devices/nld_7450.h)0
-rw-r--r--src/lib/netlist/devices/nld_7474.c (renamed from src/emu/netlist/devices/nld_7474.c)0
-rw-r--r--src/lib/netlist/devices/nld_7474.h (renamed from src/emu/netlist/devices/nld_7474.h)0
-rw-r--r--src/lib/netlist/devices/nld_7483.c (renamed from src/emu/netlist/devices/nld_7483.c)0
-rw-r--r--src/lib/netlist/devices/nld_7483.h (renamed from src/emu/netlist/devices/nld_7483.h)2
-rw-r--r--src/lib/netlist/devices/nld_7486.c (renamed from src/emu/netlist/devices/nld_7486.c)0
-rw-r--r--src/lib/netlist/devices/nld_7486.h (renamed from src/emu/netlist/devices/nld_7486.h)0
-rw-r--r--src/lib/netlist/devices/nld_7490.c (renamed from src/emu/netlist/devices/nld_7490.c)0
-rw-r--r--src/lib/netlist/devices/nld_7490.h (renamed from src/emu/netlist/devices/nld_7490.h)2
-rw-r--r--src/lib/netlist/devices/nld_7493.c (renamed from src/emu/netlist/devices/nld_7493.c)2
-rw-r--r--src/lib/netlist/devices/nld_7493.h (renamed from src/emu/netlist/devices/nld_7493.h)2
-rw-r--r--src/lib/netlist/devices/nld_74ls629.c (renamed from src/emu/netlist/devices/nld_74ls629.c)5
-rw-r--r--src/lib/netlist/devices/nld_74ls629.h (renamed from src/emu/netlist/devices/nld_74ls629.h)4
-rw-r--r--src/lib/netlist/devices/nld_82S16.c (renamed from src/emu/netlist/devices/nld_82S16.c)0
-rw-r--r--src/lib/netlist/devices/nld_82S16.h (renamed from src/emu/netlist/devices/nld_82S16.h)2
-rw-r--r--src/lib/netlist/devices/nld_9310.c (renamed from src/emu/netlist/devices/nld_9310.c)0
-rw-r--r--src/lib/netlist/devices/nld_9310.h (renamed from src/emu/netlist/devices/nld_9310.h)2
-rw-r--r--src/lib/netlist/devices/nld_9312.c (renamed from src/emu/netlist/devices/nld_9312.c)0
-rw-r--r--src/lib/netlist/devices/nld_9312.h (renamed from src/emu/netlist/devices/nld_9312.h)0
-rw-r--r--src/lib/netlist/devices/nld_9316.c (renamed from src/emu/netlist/devices/nld_9316.c)0
-rw-r--r--src/lib/netlist/devices/nld_9316.h (renamed from src/emu/netlist/devices/nld_9316.h)2
-rw-r--r--src/lib/netlist/devices/nld_cmos.h (renamed from src/emu/netlist/devices/nld_cmos.h)4
-rw-r--r--src/lib/netlist/devices/nld_legacy.c (renamed from src/emu/netlist/devices/nld_legacy.c)2
-rw-r--r--src/lib/netlist/devices/nld_legacy.h (renamed from src/emu/netlist/devices/nld_legacy.h)2
-rw-r--r--src/lib/netlist/devices/nld_log.c (renamed from src/emu/netlist/devices/nld_log.c)16
-rw-r--r--src/lib/netlist/devices/nld_log.h (renamed from src/emu/netlist/devices/nld_log.h)9
-rw-r--r--src/lib/netlist/devices/nld_mm5837.c (renamed from src/emu/netlist/devices/nld_mm5837.c)2
-rw-r--r--src/lib/netlist/devices/nld_mm5837.h (renamed from src/emu/netlist/devices/nld_mm5837.h)4
-rw-r--r--src/lib/netlist/devices/nld_ne555.c (renamed from src/emu/netlist/devices/nld_ne555.c)2
-rw-r--r--src/lib/netlist/devices/nld_ne555.h (renamed from src/emu/netlist/devices/nld_ne555.h)4
-rw-r--r--src/lib/netlist/devices/nld_r2r_dac.c (renamed from src/emu/netlist/devices/nld_r2r_dac.c)2
-rw-r--r--src/lib/netlist/devices/nld_r2r_dac.h (renamed from src/emu/netlist/devices/nld_r2r_dac.h)4
-rw-r--r--src/lib/netlist/devices/nld_signal.h (renamed from src/emu/netlist/devices/nld_signal.h)2
-rw-r--r--src/lib/netlist/devices/nld_system.c (renamed from src/emu/netlist/devices/nld_system.c)8
-rw-r--r--src/lib/netlist/devices/nld_system.h (renamed from src/emu/netlist/devices/nld_system.h)19
-rw-r--r--src/lib/netlist/devices/nld_truthtable.c (renamed from src/emu/netlist/devices/nld_truthtable.c)12
-rw-r--r--src/lib/netlist/devices/nld_truthtable.h (renamed from src/emu/netlist/devices/nld_truthtable.h)7
-rw-r--r--src/lib/netlist/macro/nlm_cd4xxx.c (renamed from src/emu/netlist/macro/nlm_cd4xxx.c)14
-rw-r--r--src/lib/netlist/macro/nlm_cd4xxx.h (renamed from src/emu/netlist/macro/nlm_cd4xxx.h)2
-rw-r--r--src/lib/netlist/macro/nlm_opamp.c83
-rw-r--r--src/lib/netlist/macro/nlm_opamp.h (renamed from src/emu/netlist/macro/nlm_opamp.h)10
-rw-r--r--src/lib/netlist/macro/nlm_other.c55
-rw-r--r--src/lib/netlist/macro/nlm_other.h27
-rw-r--r--src/lib/netlist/macro/nlm_ttl74xx.c (renamed from src/emu/netlist/macro/nlm_ttl74xx.c)4
-rw-r--r--src/lib/netlist/macro/nlm_ttl74xx.h (renamed from src/emu/netlist/macro/nlm_ttl74xx.h)6
-rw-r--r--src/lib/netlist/nl_base.c (renamed from src/emu/netlist/nl_base.c)145
-rw-r--r--src/lib/netlist/nl_base.h (renamed from src/emu/netlist/nl_base.h)81
-rw-r--r--src/lib/netlist/nl_config.h (renamed from src/emu/netlist/nl_config.h)23
-rw-r--r--src/lib/netlist/nl_dice_compat.h (renamed from src/emu/netlist/nl_dice_compat.h)0
-rw-r--r--src/lib/netlist/nl_factory.c (renamed from src/emu/netlist/nl_factory.c)34
-rw-r--r--src/lib/netlist/nl_factory.h (renamed from src/emu/netlist/nl_factory.h)21
-rw-r--r--src/lib/netlist/nl_lists.h (renamed from src/emu/netlist/nl_lists.h)0
-rw-r--r--src/lib/netlist/nl_parser.c (renamed from src/emu/netlist/nl_parser.c)61
-rw-r--r--src/lib/netlist/nl_parser.h (renamed from src/emu/netlist/nl_parser.h)10
-rw-r--r--src/lib/netlist/nl_setup.c (renamed from src/emu/netlist/nl_setup.c)440
-rw-r--r--src/lib/netlist/nl_setup.h (renamed from src/emu/netlist/nl_setup.h)100
-rw-r--r--src/lib/netlist/nl_time.h137
-rw-r--r--src/lib/netlist/nl_util.h (renamed from src/emu/netlist/nl_util.h)0
-rw-r--r--src/lib/netlist/plib/palloc.c (renamed from src/emu/netlist/plib/palloc.c)13
-rw-r--r--src/lib/netlist/plib/palloc.h (renamed from src/emu/netlist/plib/palloc.h)25
-rw-r--r--src/lib/netlist/plib/pconfig.h (renamed from src/emu/netlist/plib/pconfig.h)65
-rw-r--r--src/lib/netlist/plib/pfmtlog.c166
-rw-r--r--src/lib/netlist/plib/pfmtlog.h292
-rw-r--r--src/lib/netlist/plib/plists.h (renamed from src/emu/netlist/plib/plists.h)117
-rw-r--r--src/lib/netlist/plib/poptions.h (renamed from src/emu/netlist/plib/poptions.h)0
-rw-r--r--src/lib/netlist/plib/pparser.c (renamed from src/emu/netlist/plib/pparser.c)240
-rw-r--r--src/lib/netlist/plib/pparser.h (renamed from src/emu/netlist/plib/pparser.h)45
-rw-r--r--src/lib/netlist/plib/pstate.c (renamed from src/emu/netlist/plib/pstate.c)4
-rw-r--r--src/lib/netlist/plib/pstate.h (renamed from src/emu/netlist/plib/pstate.h)7
-rw-r--r--src/lib/netlist/plib/pstream.c362
-rw-r--r--src/lib/netlist/plib/pstream.h378
-rw-r--r--src/lib/netlist/plib/pstring.c600
-rw-r--r--src/lib/netlist/plib/pstring.h381
-rw-r--r--src/lib/netlist/plib/ptypes.h97
-rw-r--r--src/lib/netlist/prg/nltool.c (renamed from src/tools/nltool.c)252
-rw-r--r--src/lib/netlist/prg/nlwav.c289
-rw-r--r--src/lib/netlist/solver/mat_cr.h (renamed from src/emu/netlist/solver/mat_cr.h)11
-rw-r--r--src/lib/netlist/solver/nld_ms_direct.h (renamed from src/emu/netlist/solver/nld_ms_direct.h)254
-rw-r--r--src/lib/netlist/solver/nld_ms_direct1.h (renamed from src/emu/netlist/solver/nld_ms_direct1.h)8
-rw-r--r--src/lib/netlist/solver/nld_ms_direct2.h (renamed from src/emu/netlist/solver/nld_ms_direct2.h)12
-rw-r--r--src/lib/netlist/solver/nld_ms_direct_lu.h651
-rw-r--r--src/lib/netlist/solver/nld_ms_gmres.h (renamed from src/emu/netlist/solver/nld_ms_gmres.h)67
-rw-r--r--src/lib/netlist/solver/nld_ms_sor.h (renamed from src/emu/netlist/solver/nld_ms_sor.h)6
-rw-r--r--src/lib/netlist/solver/nld_ms_sor_mat.h (renamed from src/emu/netlist/solver/nld_ms_sor_mat.h)30
-rw-r--r--src/lib/netlist/solver/nld_solver.c (renamed from src/emu/netlist/solver/nld_solver.c)125
-rw-r--r--src/lib/netlist/solver/nld_solver.h (renamed from src/emu/netlist/solver/nld_solver.h)33
-rw-r--r--src/lib/netlist/solver/vector_base.h (renamed from src/emu/netlist/solver/vector_base.h)32
-rw-r--r--src/lib/netlist/tools/nl_convert.c (renamed from src/emu/netlist/tools/nl_convert.c)100
-rw-r--r--src/lib/netlist/tools/nl_convert.h (renamed from src/emu/netlist/tools/nl_convert.h)17
-rw-r--r--src/lib/util/coreutil.c19
-rw-r--r--src/lib/util/coreutil.h1
-rw-r--r--src/lib/util/palette.c60
-rw-r--r--src/lib/util/palette.h3
-rw-r--r--src/mame/arcade.lst497
-rw-r--r--src/mame/audio/alesis.c (renamed from src/mess/audio/alesis.c)0
-rw-r--r--src/mame/audio/arcadia.c (renamed from src/mess/audio/arcadia.c)0
-rw-r--r--src/mame/audio/arcadia.h (renamed from src/mess/audio/arcadia.h)0
-rw-r--r--src/mame/audio/atarijsa.c10
-rw-r--r--src/mame/audio/atarijsa.h5
-rw-r--r--src/mame/audio/cage.c4
-rw-r--r--src/mame/audio/channelf.c (renamed from src/mess/audio/channelf.c)0
-rw-r--r--src/mame/audio/channelf.h (renamed from src/mess/audio/channelf.h)0
-rw-r--r--src/mame/audio/dai_snd.c (renamed from src/mess/audio/dai_snd.c)0
-rw-r--r--src/mame/audio/dai_snd.h (renamed from src/mess/audio/dai_snd.h)0
-rw-r--r--src/mame/audio/dave.c (renamed from src/mess/audio/dave.c)0
-rw-r--r--src/mame/audio/dave.h (renamed from src/mess/audio/dave.h)0
-rw-r--r--src/mame/audio/dcs.c2
-rw-r--r--src/mame/audio/gamate.c (renamed from src/mess/audio/gamate.c)6
-rw-r--r--src/mame/audio/gb.c (renamed from src/mess/audio/gb.c)14
-rw-r--r--src/mame/audio/gb.h (renamed from src/mess/audio/gb.h)0
-rw-r--r--src/mame/audio/hng64.c14
-rw-r--r--src/mame/audio/irem.c158
-rw-r--r--src/mame/audio/irem.h39
-rw-r--r--src/mame/audio/leland.c162
-rw-r--r--src/mame/audio/lynx.c (renamed from src/mess/audio/lynx.c)0
-rw-r--r--src/mame/audio/lynx.h (renamed from src/mess/audio/lynx.h)0
-rw-r--r--src/mame/audio/mac.c (renamed from src/mess/audio/mac.c)0
-rw-r--r--src/mame/audio/mea8000.c (renamed from src/mess/audio/mea8000.c)0
-rw-r--r--src/mame/audio/mea8000.h (renamed from src/mess/audio/mea8000.h)0
-rw-r--r--src/mame/audio/micro3d.c4
-rw-r--r--src/mame/audio/nl_kidniki.c185
-rw-r--r--src/mame/audio/scramble.c13
-rw-r--r--src/mame/audio/seibu.h24
-rw-r--r--src/mame/audio/socrates.c (renamed from src/mess/audio/socrates.c)0
-rw-r--r--src/mame/audio/socrates.h (renamed from src/mess/audio/socrates.h)0
-rw-r--r--src/mame/audio/specimx_snd.c (renamed from src/mess/audio/specimx_snd.c)0
-rw-r--r--src/mame/audio/specimx_snd.h (renamed from src/mess/audio/specimx_snd.h)0
-rw-r--r--src/mame/audio/svis_snd.c (renamed from src/mess/audio/svis_snd.c)0
-rw-r--r--src/mame/audio/svis_snd.h (renamed from src/mess/audio/svis_snd.h)0
-rw-r--r--src/mame/audio/targ.c15
-rw-r--r--src/mame/audio/tvc_snd.c (renamed from src/mess/audio/tvc_snd.c)0
-rw-r--r--src/mame/audio/tvc_snd.h (renamed from src/mess/audio/tvc_snd.h)0
-rw-r--r--src/mame/audio/upd1771.c (renamed from src/mess/audio/upd1771.c)0
-rw-r--r--src/mame/audio/upd1771.h (renamed from src/mess/audio/upd1771.h)0
-rw-r--r--src/mame/audio/vboy.c (renamed from src/mess/audio/vboy.c)0
-rw-r--r--src/mame/audio/vboy.h (renamed from src/mess/audio/vboy.h)0
-rw-r--r--src/mame/audio/vc4000snd.c (renamed from src/mess/audio/vc4000snd.c)0
-rw-r--r--src/mame/audio/vc4000snd.h (renamed from src/mess/audio/vc4000snd.h)0
-rw-r--r--src/mame/audio/wswan_snd.c (renamed from src/mess/audio/wswan_snd.c)0
-rw-r--r--src/mame/audio/wswan_snd.h (renamed from src/mess/audio/wswan_snd.h)0
-rw-r--r--src/mame/drivers/1942.c68
-rw-r--r--src/mame/drivers/1943.c12
-rw-r--r--src/mame/drivers/1945kiii.c5
-rw-r--r--src/mame/drivers/20pacgal.c18
-rw-r--r--src/mame/drivers/24cdjuke.c2
-rw-r--r--src/mame/drivers/2mindril.c2
-rw-r--r--src/mame/drivers/30test.c2
-rw-r--r--src/mame/drivers/39in1.c18
-rw-r--r--src/mame/drivers/3do.c8
-rw-r--r--src/mame/drivers/3x3puzzl.c6
-rw-r--r--src/mame/drivers/4004clk.c (renamed from src/mess/drivers/4004clk.c)13
-rw-r--r--src/mame/drivers/40love.c6
-rw-r--r--src/mame/drivers/4enlinea.c2
-rw-r--r--src/mame/drivers/4enraya.c9
-rw-r--r--src/mame/drivers/4roses.c6
-rw-r--r--src/mame/drivers/5clown.c6
-rw-r--r--src/mame/drivers/68ksbc.c (renamed from src/mess/drivers/68ksbc.c)2
-rw-r--r--src/mame/drivers/8080bw.c253
-rw-r--r--src/mame/drivers/88games.c15
-rw-r--r--src/mame/drivers/a1supply.c6
-rw-r--r--src/mame/drivers/a2600.c (renamed from src/mess/drivers/a2600.c)13
-rw-r--r--src/mame/drivers/a310.c (renamed from src/mess/drivers/a310.c)6
-rw-r--r--src/mame/drivers/a5105.c (renamed from src/mess/drivers/a5105.c)2
-rw-r--r--src/mame/drivers/a51xx.c (renamed from src/mess/drivers/a51xx.c)4
-rw-r--r--src/mame/drivers/a6809.c (renamed from src/mess/drivers/a6809.c)0
-rw-r--r--src/mame/drivers/a7150.c (renamed from src/mess/drivers/a7150.c)2
-rw-r--r--src/mame/drivers/a7800.c (renamed from src/mess/drivers/a7800.c)7
-rw-r--r--src/mame/drivers/abc1600.c (renamed from src/mess/drivers/abc1600.c)2
-rw-r--r--src/mame/drivers/abc80.c (renamed from src/mess/drivers/abc80.c)2
-rw-r--r--src/mame/drivers/abc80x.c (renamed from src/mess/drivers/abc80x.c)8
-rw-r--r--src/mame/drivers/ac1.c (renamed from src/mess/drivers/ac1.c)14
-rw-r--r--src/mame/drivers/ace.c2
-rw-r--r--src/mame/drivers/acefruit.c8
-rw-r--r--src/mame/drivers/aces1.c94
-rw-r--r--src/mame/drivers/acesp.c1076
-rw-r--r--src/mame/drivers/acommand.c2
-rw-r--r--src/mame/drivers/acrnsys1.c (renamed from src/mess/drivers/acrnsys1.c)0
-rw-r--r--src/mame/drivers/actfancr.c10
-rw-r--r--src/mame/drivers/adam.c (renamed from src/mess/drivers/adam.c)2
-rw-r--r--src/mame/drivers/adp.c16
-rw-r--r--src/mame/drivers/advision.c (renamed from src/mess/drivers/advision.c)2
-rw-r--r--src/mame/drivers/aeroboto.c4
-rw-r--r--src/mame/drivers/aerofgt.c89
-rw-r--r--src/mame/drivers/aim65.c (renamed from src/mess/drivers/aim65.c)2
-rw-r--r--src/mame/drivers/aim65_40.c (renamed from src/mess/drivers/aim65_40.c)2
-rw-r--r--src/mame/drivers/airbustr.c6
-rw-r--r--src/mame/drivers/ajax.c18
-rw-r--r--src/mame/drivers/albazc.c2
-rw-r--r--src/mame/drivers/albazg.c2
-rw-r--r--src/mame/drivers/aleck64.c30
-rw-r--r--src/mame/drivers/aleisttl.c4
-rw-r--r--src/mame/drivers/alesis.c (renamed from src/mess/drivers/alesis.c)20
-rw-r--r--src/mame/drivers/alg.c80
-rw-r--r--src/mame/drivers/alien.c2
-rw-r--r--src/mame/drivers/aliens.c39
-rw-r--r--src/mame/drivers/alinvade.c2
-rw-r--r--src/mame/drivers/allied.c24
-rw-r--r--src/mame/drivers/alpha68k.c52
-rw-r--r--src/mame/drivers/alphasma.c (renamed from src/mess/drivers/alphasma.c)4
-rw-r--r--src/mame/drivers/alphatro.c (renamed from src/mess/drivers/alphatro.c)2
-rw-r--r--src/mame/drivers/altair.c (renamed from src/mess/drivers/altair.c)2
-rw-r--r--src/mame/drivers/alto2.c (renamed from src/mess/drivers/alto2.c)2
-rw-r--r--src/mame/drivers/altos5.c (renamed from src/mess/drivers/altos5.c)4
-rw-r--r--src/mame/drivers/alvg.c18
-rw-r--r--src/mame/drivers/amaticmg.c16
-rw-r--r--src/mame/drivers/ambush.c8
-rw-r--r--src/mame/drivers/amico2k.c (renamed from src/mess/drivers/amico2k.c)2
-rw-r--r--src/mame/drivers/amiga.c (renamed from src/mess/drivers/amiga.c)48
-rw-r--r--src/mame/drivers/ampoker2.c26
-rw-r--r--src/mame/drivers/ampro.c (renamed from src/mess/drivers/ampro.c)3
-rw-r--r--src/mame/drivers/amspdwy.c8
-rw-r--r--src/mame/drivers/amstr_pc.c (renamed from src/mess/drivers/amstr_pc.c)12
-rw-r--r--src/mame/drivers/amstrad.c (renamed from src/mess/drivers/amstrad.c)40
-rw-r--r--src/mame/drivers/amusco.c24
-rw-r--r--src/mame/drivers/amust.c (renamed from src/mess/drivers/amust.c)32
-rw-r--r--src/mame/drivers/angelkds.c4
-rw-r--r--src/mame/drivers/apc.c (renamed from src/mess/drivers/apc.c)18
-rw-r--r--src/mame/drivers/apexc.c (renamed from src/mess/drivers/apexc.c)4
-rw-r--r--src/mame/drivers/apf.c (renamed from src/mess/drivers/apf.c)2
-rw-r--r--src/mame/drivers/apogee.c (renamed from src/mess/drivers/apogee.c)0
-rw-r--r--src/mame/drivers/apollo.c (renamed from src/mess/drivers/apollo.c)8
-rw-r--r--src/mame/drivers/apple1.c (renamed from src/mess/drivers/apple1.c)2
-rw-r--r--src/mame/drivers/apple2.c (renamed from src/mess/drivers/apple2.c)83
-rw-r--r--src/mame/drivers/apple2e.c (renamed from src/mess/drivers/apple2e.c)48
-rw-r--r--src/mame/drivers/apple2gs.c (renamed from src/mess/drivers/apple2gs.c)14
-rw-r--r--src/mame/drivers/apple3.c (renamed from src/mess/drivers/apple3.c)2
-rw-r--r--src/mame/drivers/applix.c (renamed from src/mess/drivers/applix.c)2
-rw-r--r--src/mame/drivers/appoooh.c8
-rw-r--r--src/mame/drivers/apricot.c (renamed from src/mess/drivers/apricot.c)4
-rw-r--r--src/mame/drivers/apricotf.c (renamed from src/mess/drivers/apricotf.c)8
-rw-r--r--src/mame/drivers/apricotp.c (renamed from src/mess/drivers/apricotp.c)2
-rw-r--r--src/mame/drivers/aquarium.c2
-rw-r--r--src/mame/drivers/aquarius.c (renamed from src/mess/drivers/aquarius.c)2
-rw-r--r--src/mame/drivers/arabian.c4
-rw-r--r--src/mame/drivers/arachnid.c2
-rw-r--r--src/mame/drivers/arcadecl.c4
-rw-r--r--src/mame/drivers/arcadia.c1710
-rw-r--r--src/mame/drivers/argo.c (renamed from src/mess/drivers/argo.c)2
-rw-r--r--src/mame/drivers/argus.c8
-rw-r--r--src/mame/drivers/aristmk4.c6
-rw-r--r--src/mame/drivers/aristmk5.c30
-rw-r--r--src/mame/drivers/aristmk6.c24
-rw-r--r--src/mame/drivers/arkanoid.c114
-rw-r--r--src/mame/drivers/armedf.c30
-rw-r--r--src/mame/drivers/arsystems.c1004
-rw-r--r--src/mame/drivers/artmagic.c12
-rw-r--r--src/mame/drivers/ashnojoe.c4
-rw-r--r--src/mame/drivers/asst128.c (renamed from src/mess/drivers/asst128.c)32
-rw-r--r--src/mame/drivers/asterix.c10
-rw-r--r--src/mame/drivers/asteroid.c36
-rw-r--r--src/mame/drivers/astinvad.c37
-rw-r--r--src/mame/drivers/astrafr.c366
-rw-r--r--src/mame/drivers/astrcorp.c94
-rw-r--r--src/mame/drivers/astrocde.c150
-rw-r--r--src/mame/drivers/astrof.c32
-rw-r--r--src/mame/drivers/astrohome.c (renamed from src/mess/drivers/astrocde.c)6
-rw-r--r--src/mame/drivers/astropc.c16
-rw-r--r--src/mame/drivers/asuka.c168
-rw-r--r--src/mame/drivers/at.c (renamed from src/mess/drivers/at.c)244
-rw-r--r--src/mame/drivers/atari400.c (renamed from src/mess/drivers/atari400.c)20
-rw-r--r--src/mame/drivers/atari_s1.c10
-rw-r--r--src/mame/drivers/atari_s2.c8
-rw-r--r--src/mame/drivers/atarifb.c14
-rw-r--r--src/mame/drivers/atarig1.c24
-rw-r--r--src/mame/drivers/atarig42.c4
-rw-r--r--src/mame/drivers/atarigt.c12
-rw-r--r--src/mame/drivers/atarigx2.c26
-rw-r--r--src/mame/drivers/atarist.c (renamed from src/mess/drivers/atarist.c)80
-rw-r--r--src/mame/drivers/atarisy1.c122
-rw-r--r--src/mame/drivers/atarisy2.c111
-rw-r--r--src/mame/drivers/atarisy4.c4
-rw-r--r--src/mame/drivers/atarittl.c64
-rw-r--r--src/mame/drivers/atetris.c14
-rw-r--r--src/mame/drivers/atlantis.c6
-rw-r--r--src/mame/drivers/atm.c (renamed from src/mess/drivers/atm.c)8
-rw-r--r--src/mame/drivers/atom.c (renamed from src/mess/drivers/atom.c)43
-rw-r--r--src/mame/drivers/atronic.c60
-rw-r--r--src/mame/drivers/attache.c (renamed from src/mess/drivers/attache.c)28
-rw-r--r--src/mame/drivers/attckufo.c2
-rw-r--r--src/mame/drivers/atvtrack.c6
-rw-r--r--src/mame/drivers/aussiebyte.c574
-rw-r--r--src/mame/drivers/avalnche.c6
-rw-r--r--src/mame/drivers/avigo.c (renamed from src/mess/drivers/avigo.c)10
-rw-r--r--src/mame/drivers/avt.c8
-rw-r--r--src/mame/drivers/ax20.c (renamed from src/mess/drivers/ax20.c)2
-rw-r--r--src/mame/drivers/aztarac.c2
-rw-r--r--src/mame/drivers/b16.c (renamed from src/mess/drivers/b16.c)2
-rw-r--r--src/mame/drivers/b2m.c (renamed from src/mess/drivers/b2m.c)4
-rw-r--r--src/mame/drivers/babbage.c (renamed from src/mess/drivers/babbage.c)2
-rw-r--r--src/mame/drivers/backfire.c4
-rw-r--r--src/mame/drivers/badlands.c4
-rw-r--r--src/mame/drivers/bagman.c24
-rw-r--r--src/mame/drivers/bailey.c4
-rw-r--r--src/mame/drivers/balsente.c66
-rw-r--r--src/mame/drivers/banctec.c (renamed from src/mess/drivers/banctec.c)2
-rw-r--r--src/mame/drivers/bankp.c4
-rw-r--r--src/mame/drivers/barata.c2
-rw-r--r--src/mame/drivers/bartop52.c2
-rw-r--r--src/mame/drivers/basic52.c (renamed from src/mess/drivers/basic52.c)4
-rw-r--r--src/mame/drivers/batman.c2
-rw-r--r--src/mame/drivers/battlane.c6
-rw-r--r--src/mame/drivers/battlera.c6
-rw-r--r--src/mame/drivers/battlex.c2
-rw-r--r--src/mame/drivers/battlnts.c15
-rw-r--r--src/mame/drivers/bbc.c (renamed from src/mess/drivers/bbc.c)945
-rw-r--r--src/mame/drivers/bbcbc.c (renamed from src/mess/drivers/bbcbc.c)2
-rw-r--r--src/mame/drivers/bbusters.c16
-rw-r--r--src/mame/drivers/bcs3.c492
-rw-r--r--src/mame/drivers/beaminv.c4
-rw-r--r--src/mame/drivers/bebox.c (renamed from src/mess/drivers/bebox.c)16
-rw-r--r--src/mame/drivers/beehive.c (renamed from src/mess/drivers/beehive.c)2
-rw-r--r--src/mame/drivers/beezer.c4
-rw-r--r--src/mame/drivers/belatra.c14
-rw-r--r--src/mame/drivers/berzerk.c14
-rw-r--r--src/mame/drivers/besta.c (renamed from src/mess/drivers/besta.c)24
-rw-r--r--src/mame/drivers/bestleag.c4
-rw-r--r--src/mame/drivers/beta.c (renamed from src/mess/drivers/beta.c)2
-rw-r--r--src/mame/drivers/bfcobra.c16
-rw-r--r--src/mame/drivers/bfm_ad5sw.c494
-rw-r--r--src/mame/drivers/bfm_sc1.c28
-rw-r--r--src/mame/drivers/bfm_sc2.c130
-rw-r--r--src/mame/drivers/bfm_sc4.c6238
-rw-r--r--src/mame/drivers/bfm_sc5sw.c3362
-rw-r--r--src/mame/drivers/bfm_swp.c8
-rw-r--r--src/mame/drivers/bfmsys83.c4
-rw-r--r--src/mame/drivers/bfmsys85.c68
-rw-r--r--src/mame/drivers/bgt.c8
-rw-r--r--src/mame/drivers/big10.c37
-rw-r--r--src/mame/drivers/bigbord2.c (renamed from src/mess/drivers/bigbord2.c)2
-rw-r--r--src/mame/drivers/bigevglf.c4
-rw-r--r--src/mame/drivers/bigstrkb.c4
-rw-r--r--src/mame/drivers/binbug.c (renamed from src/mess/drivers/binbug.c)2
-rw-r--r--src/mame/drivers/bingo.c48
-rw-r--r--src/mame/drivers/bingoc.c2
-rw-r--r--src/mame/drivers/bingoman.c4
-rw-r--r--src/mame/drivers/bingor.c10
-rw-r--r--src/mame/drivers/bionicc.c13
-rw-r--r--src/mame/drivers/bishi.c6
-rw-r--r--src/mame/drivers/bitgraph.c (renamed from src/mess/drivers/bitgraph.c)4
-rw-r--r--src/mame/drivers/bk.c (renamed from src/mess/drivers/bk.c)4
-rw-r--r--src/mame/drivers/bking.c6
-rw-r--r--src/mame/drivers/blackt96.c2
-rw-r--r--src/mame/drivers/bladestl.c9
-rw-r--r--src/mame/drivers/blitz.c4
-rw-r--r--src/mame/drivers/blitz68k.c26
-rw-r--r--src/mame/drivers/blktiger.c14
-rw-r--r--src/mame/drivers/blmbycar.c6
-rw-r--r--src/mame/drivers/blockade.c12
-rw-r--r--src/mame/drivers/blockhl.c390
-rw-r--r--src/mame/drivers/blockout.c10
-rw-r--r--src/mame/drivers/bloodbro.c12
-rw-r--r--src/mame/drivers/blueprnt.c8
-rw-r--r--src/mame/drivers/bmcbowl.c2
-rw-r--r--src/mame/drivers/bmcpokr.c6
-rw-r--r--src/mame/drivers/bmjr.c (renamed from src/mess/drivers/bmjr.c)15
-rw-r--r--src/mame/drivers/bml3.c (renamed from src/mess/drivers/bml3.c)19
-rw-r--r--src/mame/drivers/bnstars.c2
-rw-r--r--src/mame/drivers/bntyhunt.c2
-rw-r--r--src/mame/drivers/bob85.c (renamed from src/mess/drivers/bob85.c)2
-rw-r--r--src/mame/drivers/bogeyman.c7
-rw-r--r--src/mame/drivers/bombjack.c6
-rw-r--r--src/mame/drivers/boogwing.c10
-rw-r--r--src/mame/drivers/bottom9.c7
-rw-r--r--src/mame/drivers/bowltry.c2
-rw-r--r--src/mame/drivers/boxer.c2
-rw-r--r--src/mame/drivers/br8641.c200
-rw-r--r--src/mame/drivers/brkthru.c8
-rw-r--r--src/mame/drivers/bsktball.c2
-rw-r--r--src/mame/drivers/btime.c46
-rw-r--r--src/mame/drivers/btoads.c2
-rw-r--r--src/mame/drivers/bublbobl.c34
-rw-r--r--src/mame/drivers/buggychl.c4
-rw-r--r--src/mame/drivers/bullet.c (renamed from src/mess/drivers/bullet.c)4
-rw-r--r--src/mame/drivers/busicom.c (renamed from src/mess/drivers/busicom.c)2
-rw-r--r--src/mame/drivers/buster.c15
-rw-r--r--src/mame/drivers/bw12.c (renamed from src/mess/drivers/bw12.c)4
-rw-r--r--src/mame/drivers/bw2.c (renamed from src/mess/drivers/bw2.c)2
-rw-r--r--src/mame/drivers/bwidow.c20
-rw-r--r--src/mame/drivers/bwing.c10
-rw-r--r--src/mame/drivers/by17.c20
-rw-r--r--src/mame/drivers/by35.c142
-rw-r--r--src/mame/drivers/by6803.c46
-rw-r--r--src/mame/drivers/by68701.c12
-rw-r--r--src/mame/drivers/byvid.c6
-rw-r--r--src/mame/drivers/bzone.c12
-rw-r--r--src/mame/drivers/c10.c (renamed from src/mess/drivers/c10.c)2
-rw-r--r--src/mame/drivers/c128.c (renamed from src/mess/drivers/c128.c)96
-rw-r--r--src/mame/drivers/c64.c (renamed from src/mess/drivers/c64.c)84
-rw-r--r--src/mame/drivers/c64dtv.c (renamed from src/mess/drivers/c64dtv.c)2
-rw-r--r--src/mame/drivers/c65.c (renamed from src/mess/drivers/c65.c)4
-rw-r--r--src/mame/drivers/c65_old.c (renamed from src/mess/drivers/c65_old.c)4
-rw-r--r--src/mame/drivers/c80.c (renamed from src/mess/drivers/c80.c)2
-rw-r--r--src/mame/drivers/c900.c (renamed from src/mess/drivers/c900.c)2
-rw-r--r--src/mame/drivers/cabal.c12
-rw-r--r--src/mame/drivers/cabaret.c2
-rw-r--r--src/mame/drivers/calchase.c4
-rw-r--r--src/mame/drivers/calomega.c86
-rw-r--r--src/mame/drivers/calorie.c5
-rw-r--r--src/mame/drivers/camplynx.c936
-rw-r--r--src/mame/drivers/canon_s80.c54
-rw-r--r--src/mame/drivers/canyon.c4
-rw-r--r--src/mame/drivers/capbowl.c18
-rw-r--r--src/mame/drivers/capcom.c28
-rw-r--r--src/mame/drivers/capr1.c2
-rw-r--r--src/mame/drivers/caprcyc.c2
-rw-r--r--src/mame/drivers/cardline.c2
-rw-r--r--src/mame/drivers/carjmbre.c2
-rw-r--r--src/mame/drivers/carpolo.c2
-rw-r--r--src/mame/drivers/casloopy.c (renamed from src/mess/drivers/casloopy.c)4
-rw-r--r--src/mame/drivers/castle.c4
-rw-r--r--src/mame/drivers/caswin.c8
-rw-r--r--src/mame/drivers/cat.c (renamed from src/mess/drivers/cat.c)4
-rw-r--r--src/mame/drivers/cave.c98
-rw-r--r--src/mame/drivers/cavepc.c2
-rw-r--r--src/mame/drivers/cb2001.c4
-rw-r--r--src/mame/drivers/cball.c2
-rw-r--r--src/mame/drivers/cbasebal.c2
-rw-r--r--src/mame/drivers/cbm2.c (renamed from src/mess/drivers/cbm2.c)32
-rw-r--r--src/mame/drivers/cbuster.c10
-rw-r--r--src/mame/drivers/cc40.c (renamed from src/mess/drivers/cc40.c)2
-rw-r--r--src/mame/drivers/ccastles.c16
-rw-r--r--src/mame/drivers/cchance.c8
-rw-r--r--src/mame/drivers/cchasm.c4
-rw-r--r--src/mame/drivers/cclimber.c74
-rw-r--r--src/mame/drivers/ccs2810.c (renamed from src/mess/drivers/ccs2810.c)5
-rw-r--r--src/mame/drivers/ccs300.c (renamed from src/mess/drivers/ccs300.c)2
-rw-r--r--src/mame/drivers/cd2650.c (renamed from src/mess/drivers/cd2650.c)0
-rw-r--r--src/mame/drivers/cdc721.c (renamed from src/mess/drivers/cdc721.c)2
-rw-r--r--src/mame/drivers/cdi.c28
-rw-r--r--src/mame/drivers/centiped.c30
-rw-r--r--src/mame/drivers/cesclass.c6
-rw-r--r--src/mame/drivers/cfx9850.c (renamed from src/mess/drivers/cfx9850.c)2
-rw-r--r--src/mame/drivers/cgc7900.c (renamed from src/mess/drivers/cgc7900.c)2
-rw-r--r--src/mame/drivers/cgenie.c (renamed from src/mess/drivers/cgenie.c)0
-rw-r--r--src/mame/drivers/chaknpop.c2
-rw-r--r--src/mame/drivers/cham24.c2
-rw-r--r--src/mame/drivers/champbas.c32
-rw-r--r--src/mame/drivers/champbwl.c4
-rw-r--r--src/mame/drivers/chanbara.c26
-rw-r--r--src/mame/drivers/changela.c2
-rw-r--r--src/mame/drivers/channelf.c (renamed from src/mess/drivers/channelf.c)0
-rw-r--r--src/mame/drivers/chaos.c (renamed from src/mess/drivers/chaos.c)2
-rw-r--r--src/mame/drivers/cheekyms.c2
-rw-r--r--src/mame/drivers/chessmst.c (renamed from src/mess/drivers/chessmst.c)2
-rw-r--r--src/mame/drivers/chesstrv.c (renamed from src/mess/drivers/chesstrv.c)4
-rw-r--r--src/mame/drivers/chexx.c420
-rw-r--r--src/mame/drivers/chicago.c18
-rw-r--r--src/mame/drivers/chihiro.c1971
-rw-r--r--src/mame/drivers/chinagat.c8
-rw-r--r--src/mame/drivers/chinsan.c2
-rw-r--r--src/mame/drivers/chqflag.c28
-rw-r--r--src/mame/drivers/chsuper.c6
-rw-r--r--src/mame/drivers/cidelsa.c8
-rw-r--r--src/mame/drivers/cinemat.c50
-rw-r--r--src/mame/drivers/circus.c12
-rw-r--r--src/mame/drivers/circusc.c12
-rw-r--r--src/mame/drivers/cischeat.c16
-rw-r--r--src/mame/drivers/citycon.c6
-rw-r--r--src/mame/drivers/clayshoo.c2
-rw-r--r--src/mame/drivers/clcd.c (renamed from src/mess/drivers/clcd.c)0
-rw-r--r--src/mame/drivers/cliffhgr.c2
-rw-r--r--src/mame/drivers/cloak.c16
-rw-r--r--src/mame/drivers/cloud9.c4
-rw-r--r--src/mame/drivers/clshroad.c8
-rw-r--r--src/mame/drivers/cm1800.c (renamed from src/mess/drivers/cm1800.c)2
-rw-r--r--src/mame/drivers/cmmb.c14
-rw-r--r--src/mame/drivers/cninja.c78
-rw-r--r--src/mame/drivers/cntsteer.c73
-rw-r--r--src/mame/drivers/cobra.c37
-rw-r--r--src/mame/drivers/coco12.c (renamed from src/mess/drivers/coco12.c)0
-rw-r--r--src/mame/drivers/coco3.c (renamed from src/mess/drivers/coco3.c)4
-rw-r--r--src/mame/drivers/cocoloco.c2
-rw-r--r--src/mame/drivers/codata.c (renamed from src/mess/drivers/codata.c)2
-rw-r--r--src/mame/drivers/coinmstr.c10
-rw-r--r--src/mame/drivers/coinmvga.c10
-rw-r--r--src/mame/drivers/coleco.c (renamed from src/mess/drivers/coleco.c)99
-rw-r--r--src/mame/drivers/combatsc.c2
-rw-r--r--src/mame/drivers/comebaby.c2
-rw-r--r--src/mame/drivers/commando.c16
-rw-r--r--src/mame/drivers/compgolf.c4
-rw-r--r--src/mame/drivers/compis.c (renamed from src/mess/drivers/compis.c)4
-rw-r--r--src/mame/drivers/compucolor.c (renamed from src/mess/drivers/compucolor.c)24
-rw-r--r--src/mame/drivers/comquest.c (renamed from src/mess/drivers/comquest.c)2
-rw-r--r--src/mame/drivers/comx35.c (renamed from src/mess/drivers/comx35.c)4
-rw-r--r--src/mame/drivers/concept.c (renamed from src/mess/drivers/concept.c)0
-rw-r--r--src/mame/drivers/contra.c20
-rw-r--r--src/mame/drivers/coolpool.c6
-rw-r--r--src/mame/drivers/coolridr.c77
-rw-r--r--src/mame/drivers/cop01.c6
-rw-r--r--src/mame/drivers/cops.c6
-rw-r--r--src/mame/drivers/copsnrob.c2
-rw-r--r--src/mame/drivers/corona.c4
-rw-r--r--src/mame/drivers/cortex.c (renamed from src/mess/drivers/cortex.c)2
-rw-r--r--src/mame/drivers/cosmic.c32
-rw-r--r--src/mame/drivers/cosmicos.c (renamed from src/mess/drivers/cosmicos.c)2
-rw-r--r--src/mame/drivers/cp1.c (renamed from src/mess/drivers/cp1.c)2
-rw-r--r--src/mame/drivers/cps1.c439
-rw-r--r--src/mame/drivers/cps2.c631
-rw-r--r--src/mame/drivers/cps3.c84
-rw-r--r--src/mame/drivers/craft.c (renamed from src/mess/drivers/craft.c)14
-rw-r--r--src/mame/drivers/crbaloon.c4
-rw-r--r--src/mame/drivers/crgolf.c12
-rw-r--r--src/mame/drivers/crimfght.c261
-rw-r--r--src/mame/drivers/crospang.c6
-rw-r--r--src/mame/drivers/crshrace.c4
-rw-r--r--src/mame/drivers/crvision.c (renamed from src/mess/drivers/crvision.c)4
-rw-r--r--src/mame/drivers/crystal.c6
-rw-r--r--src/mame/drivers/csc.c (renamed from src/mess/drivers/csc.c)2
-rw-r--r--src/mame/drivers/cshooter.c4
-rw-r--r--src/mame/drivers/csplayh5.c116
-rw-r--r--src/mame/drivers/cswat.c2
-rw-r--r--src/mame/drivers/ct486.c (renamed from src/mess/drivers/ct486.c)0
-rw-r--r--src/mame/drivers/cubo.c18
-rw-r--r--src/mame/drivers/cultures.c2
-rw-r--r--src/mame/drivers/cupidon.c14
-rw-r--r--src/mame/drivers/cv1k.c6
-rw-r--r--src/mame/drivers/cvicny.c (renamed from src/mess/drivers/cvicny.c)2
-rw-r--r--src/mame/drivers/cvs.c50
-rw-r--r--src/mame/drivers/cxhumax.c (renamed from src/mess/drivers/cxhumax.c)2
-rw-r--r--src/mame/drivers/cybertnk.c2
-rw-r--r--src/mame/drivers/cybiko.c (renamed from src/mess/drivers/cybiko.c)46
-rw-r--r--src/mame/drivers/cyclemb.c4
-rw-r--r--src/mame/drivers/czk80.c (renamed from src/mess/drivers/czk80.c)2
-rw-r--r--src/mame/drivers/d6800.c (renamed from src/mess/drivers/d6800.c)0
-rw-r--r--src/mame/drivers/d6809.c (renamed from src/mess/drivers/d6809.c)2
-rw-r--r--src/mame/drivers/d9final.c2
-rw-r--r--src/mame/drivers/dacholer.c6
-rw-r--r--src/mame/drivers/dai.c (renamed from src/mess/drivers/dai.c)0
-rw-r--r--src/mame/drivers/dai3wksi.c31
-rw-r--r--src/mame/drivers/darius.c10
-rw-r--r--src/mame/drivers/darkmist.c2
-rw-r--r--src/mame/drivers/darkseal.c10
-rw-r--r--src/mame/drivers/daruma.c169
-rw-r--r--src/mame/drivers/dassault.c12
-rw-r--r--src/mame/drivers/dblcrown.c2
-rw-r--r--src/mame/drivers/dblewing.c2
-rw-r--r--src/mame/drivers/dbz.c6
-rw-r--r--src/mame/drivers/dccons.c (renamed from src/mess/drivers/dccons.c)10
-rw-r--r--src/mame/drivers/dcheese.c18
-rw-r--r--src/mame/drivers/dcon.c4
-rw-r--r--src/mame/drivers/dct11em.c (renamed from src/mess/drivers/dct11em.c)2
-rw-r--r--src/mame/drivers/dday.c4
-rw-r--r--src/mame/drivers/ddayjlc.c4
-rw-r--r--src/mame/drivers/ddealer.c5
-rw-r--r--src/mame/drivers/ddenlovr.c1065
-rw-r--r--src/mame/drivers/ddragon.c46
-rw-r--r--src/mame/drivers/ddragon3.c34
-rw-r--r--src/mame/drivers/ddribble.c4
-rw-r--r--src/mame/drivers/ddz.c2
-rw-r--r--src/mame/drivers/de_2.c34
-rw-r--r--src/mame/drivers/de_3.c92
-rw-r--r--src/mame/drivers/de_3b.c52
-rw-r--r--src/mame/drivers/deadang.c64
-rw-r--r--src/mame/drivers/dec0.c104
-rw-r--r--src/mame/drivers/dec8.c46
-rw-r--r--src/mame/drivers/deco156.c14
-rw-r--r--src/mame/drivers/deco32.c441
-rw-r--r--src/mame/drivers/deco_ld.c10
-rw-r--r--src/mame/drivers/deco_mlc.c4
-rw-r--r--src/mame/drivers/decocass.c10
-rw-r--r--src/mame/drivers/dectalk.c (renamed from src/mess/drivers/dectalk.c)2
-rw-r--r--src/mame/drivers/decwritr.c384
-rw-r--r--src/mame/drivers/deniam.c8
-rw-r--r--src/mame/drivers/deshoros.c2
-rw-r--r--src/mame/drivers/destroyr.c86
-rw-r--r--src/mame/drivers/dfruit.c2
-rw-r--r--src/mame/drivers/dgn_beta.c (renamed from src/mess/drivers/dgn_beta.c)2
-rw-r--r--src/mame/drivers/dgpix.c12
-rw-r--r--src/mame/drivers/dietgo.c8
-rw-r--r--src/mame/drivers/digel804.c (renamed from src/mess/drivers/digel804.c)4
-rw-r--r--src/mame/drivers/dim68k.c (renamed from src/mess/drivers/dim68k.c)2
-rw-r--r--src/mame/drivers/discoboy.c4
-rw-r--r--src/mame/drivers/diverboy.c3
-rw-r--r--src/mame/drivers/djboy.c6
-rw-r--r--src/mame/drivers/djmain.c21
-rw-r--r--src/mame/drivers/dkong.c74
-rw-r--r--src/mame/drivers/dlair.c36
-rw-r--r--src/mame/drivers/dlair2.c30
-rw-r--r--src/mame/drivers/dm7000.c (renamed from src/mess/drivers/dm7000.c)6
-rw-r--r--src/mame/drivers/dmndrby.c4
-rw-r--r--src/mame/drivers/dms5000.c (renamed from src/mess/drivers/dms5000.c)2
-rw-r--r--src/mame/drivers/dms86.c (renamed from src/mess/drivers/dms86.c)2
-rw-r--r--src/mame/drivers/dmv.c (renamed from src/mess/drivers/dmv.c)2
-rw-r--r--src/mame/drivers/docastle.c30
-rw-r--r--src/mame/drivers/dogfgt.c6
-rw-r--r--src/mame/drivers/dolphunk.c (renamed from src/mess/drivers/dolphunk.c)0
-rw-r--r--src/mame/drivers/dominob.c5
-rw-r--r--src/mame/drivers/dooyong.c44
-rw-r--r--src/mame/drivers/dorachan.c48
-rw-r--r--src/mame/drivers/dotrikun.c4
-rw-r--r--src/mame/drivers/dps1.c (renamed from src/mess/drivers/dps1.c)2
-rw-r--r--src/mame/drivers/dragon.c (renamed from src/mess/drivers/dragon.c)0
-rw-r--r--src/mame/drivers/dragrace.c2
-rw-r--r--src/mame/drivers/dreambal.c2
-rw-r--r--src/mame/drivers/dreamwld.c24
-rw-r--r--src/mame/drivers/drgnmst.c2
-rw-r--r--src/mame/drivers/dribling.c6
-rw-r--r--src/mame/drivers/drmicro.c2
-rw-r--r--src/mame/drivers/drtomy.c5
-rw-r--r--src/mame/drivers/drw80pkr.c4
-rw-r--r--src/mame/drivers/dsb46.c (renamed from src/mess/drivers/dsb46.c)2
-rw-r--r--src/mame/drivers/dual68.c (renamed from src/mess/drivers/dual68.c)2
-rw-r--r--src/mame/drivers/dunhuang.c2
-rw-r--r--src/mame/drivers/dvk_kcgd.c384
-rw-r--r--src/mame/drivers/dvk_ksm.c (renamed from src/mess/drivers/dvk_ksm.c)14
-rw-r--r--src/mame/drivers/dwarfd.c12
-rw-r--r--src/mame/drivers/dynadice.c14
-rw-r--r--src/mame/drivers/dynax.c144
-rw-r--r--src/mame/drivers/dynduke.c17
-rw-r--r--src/mame/drivers/eacc.c (renamed from src/mess/drivers/eacc.c)2
-rw-r--r--src/mame/drivers/ec184x.c (renamed from src/mess/drivers/ec184x.c)57
-rw-r--r--src/mame/drivers/ec65.c (renamed from src/mess/drivers/ec65.c)4
-rw-r--r--src/mame/drivers/ecoinf1.c18
-rw-r--r--src/mame/drivers/ecoinf2.c20
-rw-r--r--src/mame/drivers/ecoinf3.c24
-rw-r--r--src/mame/drivers/ecoinfr.c2
-rw-r--r--src/mame/drivers/egghunt.c2
-rw-r--r--src/mame/drivers/einstein.c (renamed from src/mess/drivers/einstein.c)2
-rw-r--r--src/mame/drivers/elecbowl.c (renamed from src/mess/drivers/elecbowl.c)6
-rw-r--r--src/mame/drivers/electra.c2
-rw-r--r--src/mame/drivers/electron.c (renamed from src/mess/drivers/electron.c)57
-rw-r--r--src/mame/drivers/elekscmp.c (renamed from src/mess/drivers/elekscmp.c)2
-rw-r--r--src/mame/drivers/elf.c (renamed from src/mess/drivers/elf.c)2
-rw-r--r--src/mame/drivers/elwro800.c (renamed from src/mess/drivers/elwro800.c)0
-rw-r--r--src/mame/drivers/embargo.c2
-rw-r--r--src/mame/drivers/enigma2.c61
-rw-r--r--src/mame/drivers/enmirage.c (renamed from src/mess/drivers/mirage.c)2
-rw-r--r--src/mame/drivers/eolith.c38
-rw-r--r--src/mame/drivers/eolith16.c2
-rw-r--r--src/mame/drivers/ep64.c (renamed from src/mess/drivers/ep64.c)6
-rw-r--r--src/mame/drivers/epos.c18
-rw-r--r--src/mame/drivers/eprom.c8
-rw-r--r--src/mame/drivers/equites.c16
-rw-r--r--src/mame/drivers/ertictac.c8
-rw-r--r--src/mame/drivers/esd16.c30
-rw-r--r--src/mame/drivers/esh.c6
-rw-r--r--src/mame/drivers/espial.c6
-rw-r--r--src/mame/drivers/esq1.c (renamed from src/mess/drivers/esq1.c)6
-rw-r--r--src/mame/drivers/esq5505.c (renamed from src/mess/drivers/esq5505.c)16
-rw-r--r--src/mame/drivers/esqasr.c (renamed from src/mess/drivers/esqasr.c)4
-rw-r--r--src/mame/drivers/esqkt.c (renamed from src/mess/drivers/esqkt.c)2
-rw-r--r--src/mame/drivers/esqmr.c (renamed from src/mess/drivers/esqmr.c)4
-rw-r--r--src/mame/drivers/esripsys.c6
-rw-r--r--src/mame/drivers/et3400.c (renamed from src/mess/drivers/et3400.c)2
-rw-r--r--src/mame/drivers/eti660.c350
-rw-r--r--src/mame/drivers/ettrivia.c2
-rw-r--r--src/mame/drivers/europc.c (renamed from src/mess/drivers/europc.c)2
-rw-r--r--src/mame/drivers/evmbug.c (renamed from src/mess/drivers/evmbug.c)2
-rw-r--r--src/mame/drivers/excali64.c (renamed from src/mess/drivers/excali64.c)2
-rw-r--r--src/mame/drivers/exedexes.c4
-rw-r--r--src/mame/drivers/exelv.c (renamed from src/mess/drivers/exelv.c)28
-rw-r--r--src/mame/drivers/exerion.c6
-rw-r--r--src/mame/drivers/exidy.c46
-rw-r--r--src/mame/drivers/exidyttl.c6
-rw-r--r--src/mame/drivers/exp85.c (renamed from src/mess/drivers/exp85.c)0
-rw-r--r--src/mame/drivers/expro02.c46
-rw-r--r--src/mame/drivers/exprraid.c14
-rw-r--r--src/mame/drivers/extrema.c20
-rw-r--r--src/mame/drivers/exzisus.c6
-rw-r--r--src/mame/drivers/f-32.c4
-rw-r--r--src/mame/drivers/f1gp.c6
-rw-r--r--src/mame/drivers/famibox.c2
-rw-r--r--src/mame/drivers/fantland.c10
-rw-r--r--src/mame/drivers/fanucs15.c (renamed from src/mess/drivers/fanucs15.c)2
-rw-r--r--src/mame/drivers/fanucspmg.c (renamed from src/mess/drivers/fanucspmg.c)4
-rw-r--r--src/mame/drivers/fastfred.c16
-rw-r--r--src/mame/drivers/fastlane.c2
-rw-r--r--src/mame/drivers/fb01.c (renamed from src/mess/drivers/fb01.c)2
-rw-r--r--src/mame/drivers/fc100.c (renamed from src/mess/drivers/fc100.c)2
-rw-r--r--src/mame/drivers/fcombat.c2
-rw-r--r--src/mame/drivers/fcrash.c86
-rw-r--r--src/mame/drivers/fgoal.c4
-rw-r--r--src/mame/drivers/fidelz80.c (renamed from src/mess/drivers/fidelz80.c)12
-rw-r--r--src/mame/drivers/finalizr.c4
-rw-r--r--src/mame/drivers/fireball.c2
-rw-r--r--src/mame/drivers/firebeat.c1066
-rw-r--r--src/mame/drivers/firetrap.c8
-rw-r--r--src/mame/drivers/fitfight.c8
-rw-r--r--src/mame/drivers/fk1.c (renamed from src/mess/drivers/fk1.c)2
-rw-r--r--src/mame/drivers/flicker.c2
-rw-r--r--src/mame/drivers/flipjack.c2
-rw-r--r--src/mame/drivers/flkatck.c6
-rw-r--r--src/mame/drivers/flower.c4
-rw-r--r--src/mame/drivers/flstory.c12
-rw-r--r--src/mame/drivers/flyball.c4
-rw-r--r--src/mame/drivers/fm7.c (renamed from src/mess/drivers/fm7.c)29
-rw-r--r--src/mame/drivers/fmtowns.c (renamed from src/mess/drivers/fmtowns.c)24
-rw-r--r--src/mame/drivers/foodf.c8
-rw-r--r--src/mame/drivers/force68k.c606
-rw-r--r--src/mame/drivers/forte2.c2
-rw-r--r--src/mame/drivers/fortecar.c2
-rw-r--r--src/mame/drivers/fp1100.c (renamed from src/mess/drivers/fp1100.c)2
-rw-r--r--src/mame/drivers/fp200.c (renamed from src/mess/drivers/fp200.c)2
-rw-r--r--src/mame/drivers/fp6000.c (renamed from src/mess/drivers/fp6000.c)2
-rw-r--r--src/mame/drivers/freekick.c30
-rw-r--r--src/mame/drivers/fresh.c2
-rw-r--r--src/mame/drivers/fromanc2.c6
-rw-r--r--src/mame/drivers/fromance.c16
-rw-r--r--src/mame/drivers/fruitpc.c4
-rw-r--r--src/mame/drivers/ft68m.c (renamed from src/mess/drivers/ft68m.c)2
-rw-r--r--src/mame/drivers/fungames.c4
-rw-r--r--src/mame/drivers/funkball.c2
-rw-r--r--src/mame/drivers/funkybee.c8
-rw-r--r--src/mame/drivers/funkyjet.c8
-rw-r--r--src/mame/drivers/funworld.c28
-rw-r--r--src/mame/drivers/funybubl.c4
-rw-r--r--src/mame/drivers/fuukifg2.c6
-rw-r--r--src/mame/drivers/fuukifg3.c19
-rw-r--r--src/mame/drivers/g627.c6
-rw-r--r--src/mame/drivers/gaelco.c12
-rw-r--r--src/mame/drivers/gaelco2.c44
-rw-r--r--src/mame/drivers/gaelco3d.c14
-rw-r--r--src/mame/drivers/gaiden.c30
-rw-r--r--src/mame/drivers/gal3.c4
-rw-r--r--src/mame/drivers/galaga.c58
-rw-r--r--src/mame/drivers/galastrm.c2
-rw-r--r--src/mame/drivers/galaxi.c5
-rw-r--r--src/mame/drivers/galaxia.c34
-rw-r--r--src/mame/drivers/galaxian.c494
-rw-r--r--src/mame/drivers/galaxold.c126
-rw-r--r--src/mame/drivers/galaxy.c (renamed from src/mess/drivers/galaxy.c)0
-rw-r--r--src/mame/drivers/galeb.c (renamed from src/mess/drivers/galeb.c)0
-rw-r--r--src/mame/drivers/galgame.c2
-rw-r--r--src/mame/drivers/galivan.c22
-rw-r--r--src/mame/drivers/galpani2.c24
-rw-r--r--src/mame/drivers/galpani3.c8
-rw-r--r--src/mame/drivers/galpanic.c9
-rw-r--r--src/mame/drivers/galspnbl.c4
-rw-r--r--src/mame/drivers/gamate.c (renamed from src/mess/drivers/gamate.c)14
-rw-r--r--src/mame/drivers/gambl186.c4
-rw-r--r--src/mame/drivers/gamecom.c (renamed from src/mess/drivers/gamecom.c)2
-rw-r--r--src/mame/drivers/gamecstl.c4
-rw-r--r--src/mame/drivers/gameking.c (renamed from src/mess/drivers/gameking.c)5
-rw-r--r--src/mame/drivers/gameplan.c16
-rw-r--r--src/mame/drivers/gamepock.c (renamed from src/mess/drivers/gamepock.c)0
-rw-r--r--src/mame/drivers/gammagic.c4
-rw-r--r--src/mame/drivers/gamtor.c2
-rw-r--r--src/mame/drivers/gaplus.c18
-rw-r--r--src/mame/drivers/gb.c (renamed from src/mess/drivers/gb.c)43
-rw-r--r--src/mame/drivers/gba.c (renamed from src/mess/drivers/gba.c)6
-rw-r--r--src/mame/drivers/gberet.c8
-rw-r--r--src/mame/drivers/gcpinbal.c2
-rw-r--r--src/mame/drivers/gei.c276
-rw-r--r--src/mame/drivers/geneve.c (renamed from src/mess/drivers/geneve.c)106
-rw-r--r--src/mame/drivers/geniusiq.c (renamed from src/mess/drivers/geniusiq.c)16
-rw-r--r--src/mame/drivers/genpc.c (renamed from src/mess/drivers/genpc.c)2
-rw-r--r--src/mame/drivers/ggconnie.c2
-rw-r--r--src/mame/drivers/ghosteo.c6
-rw-r--r--src/mame/drivers/gijoe.c8
-rw-r--r--src/mame/drivers/gimix.c (renamed from src/mess/drivers/gimix.c)2
-rw-r--r--src/mame/drivers/ginganin.c4
-rw-r--r--src/mame/drivers/gizmondo.c (renamed from src/mess/drivers/gizmondo.c)2
-rw-r--r--src/mame/drivers/gladiatr.c12
-rw-r--r--src/mame/drivers/glasgow.c (renamed from src/mess/drivers/glasgow.c)137
-rw-r--r--src/mame/drivers/glass.c6
-rw-r--r--src/mame/drivers/globalfr.c44
-rw-r--r--src/mame/drivers/globalvr.c18
-rw-r--r--src/mame/drivers/gluck2.c2
-rw-r--r--src/mame/drivers/gmaster.c (renamed from src/mess/drivers/gmaster.c)2
-rw-r--r--src/mame/drivers/gng.c22
-rw-r--r--src/mame/drivers/go2000.c3
-rw-r--r--src/mame/drivers/goal92.c2
-rw-r--r--src/mame/drivers/goindol.c8
-rw-r--r--src/mame/drivers/goldngam.c4
-rw-r--r--src/mame/drivers/goldnpkr.c40
-rw-r--r--src/mame/drivers/goldstar.c207
-rw-r--r--src/mame/drivers/good.c3
-rw-r--r--src/mame/drivers/goodejan.c6
-rw-r--r--src/mame/drivers/gotcha.c4
-rw-r--r--src/mame/drivers/gottlieb.c24
-rw-r--r--src/mame/drivers/gotya.c4
-rw-r--r--src/mame/drivers/gp2x.c (renamed from src/mess/drivers/gp2x.c)2
-rw-r--r--src/mame/drivers/gp32.c (renamed from src/mess/drivers/gp32.c)2
-rw-r--r--src/mame/drivers/gp_1.c20
-rw-r--r--src/mame/drivers/gp_2.c30
-rw-r--r--src/mame/drivers/gpworld.c2
-rw-r--r--src/mame/drivers/gradius3.c91
-rw-r--r--src/mame/drivers/grchamp.c2
-rw-r--r--src/mame/drivers/grfd2301.c (renamed from src/mess/drivers/grfd2301.c)2
-rw-r--r--src/mame/drivers/gridlee.c2
-rw-r--r--src/mame/drivers/groundfx.c2
-rw-r--r--src/mame/drivers/gstream.c6
-rw-r--r--src/mame/drivers/gstriker.c18
-rw-r--r--src/mame/drivers/gsword.c6
-rw-r--r--src/mame/drivers/gticlub.c18
-rw-r--r--src/mame/drivers/gts1.c42
-rw-r--r--src/mame/drivers/gts3.c32
-rw-r--r--src/mame/drivers/gts3a.c70
-rw-r--r--src/mame/drivers/gts80.c44
-rw-r--r--src/mame/drivers/gts80a.c44
-rw-r--r--src/mame/drivers/gts80b.c50
-rw-r--r--src/mame/drivers/guab.c2
-rw-r--r--src/mame/drivers/gumbo.c14
-rw-r--r--src/mame/drivers/gundealr.c12
-rw-r--r--src/mame/drivers/gunpey.c2
-rw-r--r--src/mame/drivers/gunsmoke.c391
-rw-r--r--src/mame/drivers/gyruss.c8
-rw-r--r--src/mame/drivers/h19.c (renamed from src/mess/drivers/h19.c)2
-rw-r--r--src/mame/drivers/h8.c (renamed from src/mess/drivers/h8.c)2
-rw-r--r--src/mame/drivers/h89.c (renamed from src/mess/drivers/h89.c)2
-rw-r--r--src/mame/drivers/halleys.c10
-rw-r--r--src/mame/drivers/hanaawas.c2
-rw-r--r--src/mame/drivers/hankin.c10
-rw-r--r--src/mame/drivers/harddriv.c210
-rw-r--r--src/mame/drivers/harriet.c (renamed from src/mess/drivers/harriet.c)2
-rw-r--r--src/mame/drivers/hazelgr.c2
-rw-r--r--src/mame/drivers/hcastle.c10
-rw-r--r--src/mame/drivers/headonb.c2
-rw-r--r--src/mame/drivers/hec2hrp.c (renamed from src/mess/drivers/hec2hrp.c)14
-rw-r--r--src/mame/drivers/hh_cop400.c (renamed from src/mess/drivers/hh_cop400.c)14
-rw-r--r--src/mame/drivers/hh_hmcs40.c (renamed from src/mess/drivers/hh_hmcs40.c)824
-rw-r--r--src/mame/drivers/hh_melps4.c (renamed from src/mess/drivers/hh_melps4.c)161
-rw-r--r--src/mame/drivers/hh_pic16.c (renamed from src/mess/drivers/hh_pic16.c)4
-rw-r--r--src/mame/drivers/hh_sm510.c (renamed from src/mess/drivers/hh_sm510.c)10
-rw-r--r--src/mame/drivers/hh_tms1k.c (renamed from src/mess/drivers/hh_tms1k.c)101
-rw-r--r--src/mame/drivers/hh_ucom4.c (renamed from src/mess/drivers/hh_ucom4.c)223
-rw-r--r--src/mame/drivers/hideseek.c2
-rw-r--r--src/mame/drivers/higemaru.c2
-rw-r--r--src/mame/drivers/highvdeo.c4
-rw-r--r--src/mame/drivers/hikaru.c12
-rw-r--r--src/mame/drivers/himesiki.c2
-rw-r--r--src/mame/drivers/hitme.c12
-rw-r--r--src/mame/drivers/hitpoker.c2
-rw-r--r--src/mame/drivers/hk68v10.c383
-rw-r--r--src/mame/drivers/hnayayoi.c6
-rw-r--r--src/mame/drivers/hng64.c89
-rw-r--r--src/mame/drivers/holeland.c8
-rw-r--r--src/mame/drivers/homedata.c40
-rw-r--r--src/mame/drivers/homelab.c (renamed from src/mess/drivers/homelab.c)10
-rw-r--r--src/mame/drivers/homerun.c6
-rw-r--r--src/mame/drivers/homez80.c (renamed from src/mess/drivers/homez80.c)2
-rw-r--r--src/mame/drivers/horizon.c (renamed from src/mess/drivers/horizon.c)4
-rw-r--r--src/mame/drivers/hornet.c18
-rw-r--r--src/mame/drivers/hotblock.c2
-rw-r--r--src/mame/drivers/hotstuff.c2
-rw-r--r--src/mame/drivers/hp16500.c (renamed from src/mess/drivers/hp16500.c)8
-rw-r--r--src/mame/drivers/hp48.c (renamed from src/mess/drivers/hp48.c)2
-rw-r--r--src/mame/drivers/hp49gp.c (renamed from src/mess/drivers/hp49gp.c)2
-rw-r--r--src/mame/drivers/hp64k.c (renamed from src/mess/drivers/hp64k.c)620
-rw-r--r--src/mame/drivers/hp9845.c (renamed from src/mess/drivers/hp9845.c)14
-rw-r--r--src/mame/drivers/hp9k.c (renamed from src/mess/drivers/hp9k.c)2
-rw-r--r--src/mame/drivers/hp9k_3xx.c (renamed from src/mess/drivers/hp9k_3xx.c)14
-rw-r--r--src/mame/drivers/hp_ipc.c358
-rw-r--r--src/mame/drivers/hprot1.c (renamed from src/mess/drivers/hprot1.c)6
-rw-r--r--src/mame/drivers/hpz80unk.c (renamed from src/mess/drivers/hpz80unk.c)2
-rw-r--r--src/mame/drivers/hshavoc.c2
-rw-r--r--src/mame/drivers/ht68k.c (renamed from src/mess/drivers/ht68k.c)2
-rw-r--r--src/mame/drivers/huebler.c (renamed from src/mess/drivers/huebler.c)2
-rw-r--r--src/mame/drivers/hunter2.c (renamed from src/mess/drivers/hunter2.c)2
-rw-r--r--src/mame/drivers/hvyunit.c8
-rw-r--r--src/mame/drivers/hx20.c (renamed from src/mess/drivers/hx20.c)4
-rw-r--r--src/mame/drivers/hyhoo.c4
-rw-r--r--src/mame/drivers/hyperscan.c (renamed from src/mess/drivers/hyperscan.c)2
-rw-r--r--src/mame/drivers/hyperspt.c10
-rw-r--r--src/mame/drivers/hyprduel.c6
-rw-r--r--src/mame/drivers/i7000.c415
-rw-r--r--src/mame/drivers/ibm6580.c (renamed from src/mess/drivers/ibm6580.c)2
-rw-r--r--src/mame/drivers/ibmpc.c (renamed from src/mess/drivers/ibmpc.c)2
-rw-r--r--src/mame/drivers/ibmpcjr.c (renamed from src/mess/drivers/ibmpcjr.c)4
-rw-r--r--src/mame/drivers/icatel.c (renamed from src/mess/drivers/icatel.c)28
-rw-r--r--src/mame/drivers/icecold.c4
-rw-r--r--src/mame/drivers/ichiban.c2
-rw-r--r--src/mame/drivers/ie15.c (renamed from src/mess/drivers/ie15.c)15
-rw-r--r--src/mame/drivers/if800.c (renamed from src/mess/drivers/if800.c)2
-rw-r--r--src/mame/drivers/igs009.c4
-rw-r--r--src/mame/drivers/igs011.c34
-rw-r--r--src/mame/drivers/igs017.c669
-rw-r--r--src/mame/drivers/igs_fear.c169
-rw-r--r--src/mame/drivers/igs_m027.c690
-rw-r--r--src/mame/drivers/igs_m036.c12
-rw-r--r--src/mame/drivers/igspc.c4
-rw-r--r--src/mame/drivers/igspoker.c104
-rw-r--r--src/mame/drivers/ikki.c4
-rw-r--r--src/mame/drivers/imds.c (renamed from src/mess/drivers/imds.c)2
-rw-r--r--src/mame/drivers/imds2.c (renamed from src/mess/drivers/imds2.c)48
-rw-r--r--src/mame/drivers/imolagp.c4
-rw-r--r--src/mame/drivers/imsai.c (renamed from src/mess/drivers/imsai.c)2
-rw-r--r--src/mame/drivers/inder.c20
-rw-r--r--src/mame/drivers/indiana.c (renamed from src/mess/drivers/indiana.c)2
-rw-r--r--src/mame/drivers/instruct.c (renamed from src/mess/drivers/instruct.c)0
-rw-r--r--src/mame/drivers/interact.c (renamed from src/mess/drivers/interact.c)4
-rw-r--r--src/mame/drivers/intrscti.c2
-rw-r--r--src/mame/drivers/intv.c (renamed from src/mess/drivers/intv.c)12
-rw-r--r--src/mame/drivers/inufuku.c4
-rw-r--r--src/mame/drivers/invqix.c2
-rw-r--r--src/mame/drivers/ip20.c (renamed from src/mess/drivers/ip20.c)2
-rw-r--r--src/mame/drivers/ip22.c (renamed from src/mess/drivers/ip22.c)6
-rw-r--r--src/mame/drivers/ipc.c (renamed from src/mess/drivers/ipc.c)4
-rw-r--r--src/mame/drivers/ipds.c (renamed from src/mess/drivers/ipds.c)2
-rw-r--r--src/mame/drivers/iq151.c (renamed from src/mess/drivers/iq151.c)0
-rw-r--r--src/mame/drivers/iqblock.c4
-rw-r--r--src/mame/drivers/irisha.c (renamed from src/mess/drivers/irisha.c)2
-rw-r--r--src/mame/drivers/ironhors.c6
-rw-r--r--src/mame/drivers/isbc.c (renamed from src/mess/drivers/isbc.c)8
-rw-r--r--src/mame/drivers/iskr103x.c (renamed from src/mess/drivers/iskr103x.c)2
-rw-r--r--src/mame/drivers/istellar.c2
-rw-r--r--src/mame/drivers/iteagle.c14
-rw-r--r--src/mame/drivers/itech32.c2
-rw-r--r--src/mame/drivers/itech8.c27
-rw-r--r--src/mame/drivers/itgambl2.c34
-rw-r--r--src/mame/drivers/itgambl3.c12
-rw-r--r--src/mame/drivers/itgamble.c20
-rw-r--r--src/mame/drivers/itt3030.c (renamed from src/mess/drivers/itt3030.c)2
-rw-r--r--src/mame/drivers/jack.c43
-rw-r--r--src/mame/drivers/jackie.c2
-rw-r--r--src/mame/drivers/jackpool.c2
-rw-r--r--src/mame/drivers/jade.c (renamed from src/mess/drivers/jade.c)2
-rw-r--r--src/mame/drivers/jaguar.c49
-rw-r--r--src/mame/drivers/jailbrek.c6
-rw-r--r--src/mame/drivers/jalmah.c12
-rw-r--r--src/mame/drivers/jangou.c16
-rw-r--r--src/mame/drivers/jankenmn.c2
-rw-r--r--src/mame/drivers/jantotsu.c2
-rw-r--r--src/mame/drivers/jchan.c4
-rw-r--r--src/mame/drivers/jclub2.c8
-rw-r--r--src/mame/drivers/jedi.c2
-rw-r--r--src/mame/drivers/jeutel.c4
-rw-r--r--src/mame/drivers/jokrwild.c2
-rw-r--r--src/mame/drivers/jollyjgr.c53
-rw-r--r--src/mame/drivers/jongkyo.c2
-rw-r--r--src/mame/drivers/jonos.c (renamed from src/mess/drivers/jonos.c)2
-rw-r--r--src/mame/drivers/joystand.c687
-rw-r--r--src/mame/drivers/jp.c20
-rw-r--r--src/mame/drivers/jpmimpct.c36
-rw-r--r--src/mame/drivers/jpmimpctsw.c2
-rw-r--r--src/mame/drivers/jpmmps.c416
-rw-r--r--src/mame/drivers/jpms80.c48
-rw-r--r--src/mame/drivers/jpmsru.c24
-rw-r--r--src/mame/drivers/jpmsys5.c2
-rw-r--r--src/mame/drivers/jpmsys5sw.c2
-rw-r--r--src/mame/drivers/jpmsys7.c24
-rw-r--r--src/mame/drivers/jr100.c (renamed from src/mess/drivers/jr100.c)0
-rw-r--r--src/mame/drivers/jr200.c (renamed from src/mess/drivers/jr200.c)18
-rw-r--r--src/mame/drivers/jrpacman.c4
-rw-r--r--src/mame/drivers/jtc.c (renamed from src/mess/drivers/jtc.c)8
-rw-r--r--src/mame/drivers/jubilee.c2
-rw-r--r--src/mame/drivers/juicebox.c (renamed from src/mess/drivers/juicebox.c)0
-rw-r--r--src/mame/drivers/junior.c (renamed from src/mess/drivers/junior.c)2
-rw-r--r--src/mame/drivers/junofrst.c9
-rw-r--r--src/mame/drivers/jupace.c (renamed from src/mess/drivers/ace.c)130
-rw-r--r--src/mame/drivers/jupiter.c (renamed from src/mess/drivers/jupiter.c)4
-rw-r--r--src/mame/drivers/jvh.c4
-rw-r--r--src/mame/drivers/k1003.c (renamed from src/mess/drivers/k1003.c)2
-rw-r--r--src/mame/drivers/k8915.c (renamed from src/mess/drivers/k8915.c)2
-rw-r--r--src/mame/drivers/kaneko16.c184
-rw-r--r--src/mame/drivers/kangaroo.c10
-rw-r--r--src/mame/drivers/karnov.c18
-rw-r--r--src/mame/drivers/kas89.c67
-rw-r--r--src/mame/drivers/kaypro.c (renamed from src/mess/drivers/kaypro.c)14
-rw-r--r--src/mame/drivers/kc.c (renamed from src/mess/drivers/kc.c)8
-rw-r--r--src/mame/drivers/kchamp.c10
-rw-r--r--src/mame/drivers/kenseim.c2
-rw-r--r--src/mame/drivers/kickgoal.c4
-rw-r--r--src/mame/drivers/kim1.c (renamed from src/mess/drivers/kim1.c)2
-rw-r--r--src/mame/drivers/kingdrby.c8
-rw-r--r--src/mame/drivers/kingobox.c10
-rw-r--r--src/mame/drivers/kinst.c22
-rw-r--r--src/mame/drivers/kissproto.c2
-rw-r--r--src/mame/drivers/kncljoe.c6
-rw-r--r--src/mame/drivers/koftball.c2
-rw-r--r--src/mame/drivers/koikoi.c2
-rw-r--r--src/mame/drivers/konamigq.c87
-rw-r--r--src/mame/drivers/konamigv.c32
-rw-r--r--src/mame/drivers/konamigx.c192
-rw-r--r--src/mame/drivers/konamim2.c24
-rw-r--r--src/mame/drivers/konendev.c323
-rw-r--r--src/mame/drivers/konin.c (renamed from src/mess/drivers/konin.c)2
-rw-r--r--src/mame/drivers/kontest.c2
-rw-r--r--src/mame/drivers/kopunch.c2
-rw-r--r--src/mame/drivers/korgm1.c (renamed from src/mess/drivers/korgm1.c)2
-rw-r--r--src/mame/drivers/kramermc.c (renamed from src/mess/drivers/kramermc.c)2
-rw-r--r--src/mame/drivers/ksayakyu.c2
-rw-r--r--src/mame/drivers/ksys573.c230
-rw-r--r--src/mame/drivers/kungfur.c2
-rw-r--r--src/mame/drivers/kurukuru.c43
-rw-r--r--src/mame/drivers/kyocera.c (renamed from src/mess/drivers/kyocera.c)4
-rw-r--r--src/mame/drivers/kyugo.c38
-rw-r--r--src/mame/drivers/labyrunr.c6
-rw-r--r--src/mame/drivers/ladybug.c16
-rw-r--r--src/mame/drivers/ladyfrog.c4
-rw-r--r--src/mame/drivers/laser3k.c (renamed from src/mess/drivers/laser3k.c)4
-rw-r--r--src/mame/drivers/laserbas.c6
-rw-r--r--src/mame/drivers/laserbat.c8
-rw-r--r--src/mame/drivers/lasso.c14
-rw-r--r--src/mame/drivers/lastbank.c2
-rw-r--r--src/mame/drivers/lastduel.c181
-rw-r--r--src/mame/drivers/lastfght.c2
-rw-r--r--src/mame/drivers/lazercmd.c6
-rw-r--r--src/mame/drivers/lbeach.c2
-rw-r--r--src/mame/drivers/lc80.c (renamed from src/mess/drivers/lc80.c)6
-rw-r--r--src/mame/drivers/lcmate2.c (renamed from src/mess/drivers/lcmate2.c)2
-rw-r--r--src/mame/drivers/leapster.c (renamed from src/mess/drivers/leapster.c)4
-rw-r--r--src/mame/drivers/legionna.c48
-rw-r--r--src/mame/drivers/leland.c2
-rw-r--r--src/mame/drivers/lemmings.c2
-rw-r--r--src/mame/drivers/lethal.c14
-rw-r--r--src/mame/drivers/lethalj.c29
-rw-r--r--src/mame/drivers/lft.c (renamed from src/mess/drivers/lft.c)4
-rw-r--r--src/mame/drivers/lg-dvd.c41
-rw-r--r--src/mame/drivers/lgp.c4
-rw-r--r--src/mame/drivers/liberate.c25
-rw-r--r--src/mame/drivers/liberatr.c4
-rw-r--r--src/mame/drivers/limenko.c10
-rw-r--r--src/mame/drivers/lindbergh.c165
-rw-r--r--src/mame/drivers/lisa.c (renamed from src/mess/drivers/lisa.c)10
-rw-r--r--src/mame/drivers/littlerb.c2
-rw-r--r--src/mame/drivers/lkage.c14
-rw-r--r--src/mame/drivers/llc.c (renamed from src/mess/drivers/llc.c)2
-rw-r--r--src/mame/drivers/lockon.c4
-rw-r--r--src/mame/drivers/lola8a.c (renamed from src/mess/drivers/lola8a.c)19
-rw-r--r--src/mame/drivers/looping.c8
-rw-r--r--src/mame/drivers/lordgun.c6
-rw-r--r--src/mame/drivers/lsasquad.c6
-rw-r--r--src/mame/drivers/ltcasino.c6
-rw-r--r--src/mame/drivers/ltd.c14
-rw-r--r--src/mame/drivers/luckgrln.c4
-rw-r--r--src/mame/drivers/lucky74.c4
-rw-r--r--src/mame/drivers/lviv.c (renamed from src/mess/drivers/lviv.c)0
-rw-r--r--src/mame/drivers/lwings.c104
-rw-r--r--src/mame/drivers/lynx.c (renamed from src/mess/drivers/lynx.c)4
-rw-r--r--src/mame/drivers/m10.c14
-rw-r--r--src/mame/drivers/m107.c79
-rw-r--r--src/mame/drivers/m14.c2
-rw-r--r--src/mame/drivers/m20.c (renamed from src/mess/drivers/m20.c)10
-rw-r--r--src/mame/drivers/m24.c (renamed from src/mess/drivers/m24.c)4
-rw-r--r--src/mame/drivers/m5.c (renamed from src/mess/drivers/m5.c)0
-rw-r--r--src/mame/drivers/m52.c20
-rw-r--r--src/mame/drivers/m57.c12
-rw-r--r--src/mame/drivers/m58.c27
-rw-r--r--src/mame/drivers/m62.c92
-rw-r--r--src/mame/drivers/m63.c8
-rw-r--r--src/mame/drivers/m6805evs.c (renamed from src/mess/drivers/m6805evs.c)2
-rw-r--r--src/mame/drivers/m72.c1542
-rw-r--r--src/mame/drivers/m79152pc.c (renamed from src/mess/drivers/m79152pc.c)2
-rw-r--r--src/mame/drivers/m79amb.c2
-rw-r--r--src/mame/drivers/m90.c32
-rw-r--r--src/mame/drivers/m92.c174
-rw-r--r--src/mame/drivers/mac.c (renamed from src/mess/drivers/mac.c)52
-rw-r--r--src/mame/drivers/macpci.c (renamed from src/mess/drivers/macpci.c)2
-rw-r--r--src/mame/drivers/macrossp.c78
-rw-r--r--src/mame/drivers/macs.c10
-rw-r--r--src/mame/drivers/madalien.c6
-rw-r--r--src/mame/drivers/madmotor.c2
-rw-r--r--src/mame/drivers/magic10.c35
-rw-r--r--src/mame/drivers/magicard.c14
-rw-r--r--src/mame/drivers/magicfly.c8
-rw-r--r--src/mame/drivers/magictg.c4
-rw-r--r--src/mame/drivers/magmax.c2
-rw-r--r--src/mame/drivers/magtouch.c2
-rw-r--r--src/mame/drivers/mainevt.c88
-rw-r--r--src/mame/drivers/mainsnk.c4
-rw-r--r--src/mame/drivers/malzak.c4
-rw-r--r--src/mame/drivers/manohman.c2
-rw-r--r--src/mame/drivers/mappy.c36
-rw-r--r--src/mame/drivers/marineb.c20
-rw-r--r--src/mame/drivers/marinedt.c2
-rw-r--r--src/mame/drivers/mario.c14
-rw-r--r--src/mame/drivers/markham.c2
-rw-r--r--src/mame/drivers/mastboy.c42
-rw-r--r--src/mame/drivers/matmania.c8
-rw-r--r--src/mame/drivers/maxaflex.c2
-rw-r--r--src/mame/drivers/maygay1bsw.c2
-rw-r--r--src/mame/drivers/maygayep.c1834
-rw-r--r--src/mame/drivers/maygaysw.c20
-rw-r--r--src/mame/drivers/maygayv1.c2
-rw-r--r--src/mame/drivers/mayumi.c2
-rw-r--r--src/mame/drivers/mazerbla.c10
-rw-r--r--src/mame/drivers/mbc200.c (renamed from src/mess/drivers/mbc200.c)2
-rw-r--r--src/mame/drivers/mbc55x.c (renamed from src/mess/drivers/mbc55x.c)2
-rw-r--r--src/mame/drivers/mbdtower.c (renamed from src/mess/drivers/mbdtower.c)4
-rw-r--r--src/mame/drivers/mbee.c (renamed from src/mess/drivers/mbee.c)16
-rw-r--r--src/mame/drivers/mc10.c (renamed from src/mess/drivers/mc10.c)8
-rw-r--r--src/mame/drivers/mc1000.c (renamed from src/mess/drivers/mc1000.c)14
-rw-r--r--src/mame/drivers/mc1502.c (renamed from src/mess/drivers/mc1502.c)2
-rw-r--r--src/mame/drivers/mc80.c (renamed from src/mess/drivers/mc80.c)4
-rw-r--r--src/mame/drivers/mcatadv.c12
-rw-r--r--src/mame/drivers/mcb216.c (renamed from src/mess/drivers/mcb216.c)4
-rw-r--r--src/mame/drivers/mccpm.c (renamed from src/mess/drivers/mccpm.c)2
-rw-r--r--src/mame/drivers/mcr.c66
-rw-r--r--src/mame/drivers/mcr3.c27
-rw-r--r--src/mame/drivers/mcr68.c36
-rw-r--r--src/mame/drivers/meadows.c6
-rw-r--r--src/mame/drivers/meadwttl.c8
-rw-r--r--src/mame/drivers/mediagx.c6
-rw-r--r--src/mame/drivers/megadriv.c (renamed from src/mess/drivers/megadriv.c)66
-rw-r--r--src/mame/drivers/megadrvb.c2
-rw-r--r--src/mame/drivers/megaphx.c2
-rw-r--r--src/mame/drivers/megaplay.c2
-rw-r--r--src/mame/drivers/megasys1.c132
-rw-r--r--src/mame/drivers/megatech.c138
-rw-r--r--src/mame/drivers/megazone.c10
-rw-r--r--src/mame/drivers/meijinsn.c2
-rw-r--r--src/mame/drivers/mekd2.c (renamed from src/mess/drivers/mekd2.c)0
-rw-r--r--src/mame/drivers/mephisto.c511
-rw-r--r--src/mame/drivers/mephistp.c115
-rw-r--r--src/mame/drivers/merit.c164
-rw-r--r--src/mame/drivers/meritm.c248
-rw-r--r--src/mame/drivers/mermaid.c6
-rw-r--r--src/mame/drivers/mes.c (renamed from src/mess/drivers/mes.c)2
-rw-r--r--src/mame/drivers/metalmx.c2
-rw-r--r--src/mame/drivers/metlclsh.c2
-rw-r--r--src/mame/drivers/metro.c80
-rw-r--r--src/mame/drivers/mexico86.c10
-rw-r--r--src/mame/drivers/meyc8080.c8
-rw-r--r--src/mame/drivers/mgames.c2
-rw-r--r--src/mame/drivers/mgavegas.c6
-rw-r--r--src/mame/drivers/mgolf.c2
-rw-r--r--src/mame/drivers/mhavoc.c12
-rw-r--r--src/mame/drivers/mice.c (renamed from src/mess/drivers/mice.c)2
-rw-r--r--src/mame/drivers/micral.c292
-rw-r--r--src/mame/drivers/micro3d.c13
-rw-r--r--src/mame/drivers/microdec.c (renamed from src/mess/drivers/microdec.c)4
-rw-r--r--src/mame/drivers/microkit.c (renamed from src/mess/drivers/microkit.c)2
-rw-r--r--src/mame/drivers/micronic.c (renamed from src/mess/drivers/micronic.c)2
-rw-r--r--src/mame/drivers/micropin.c4
-rw-r--r--src/mame/drivers/microtan.c (renamed from src/mess/drivers/microtan.c)0
-rw-r--r--src/mame/drivers/microvsn.c (renamed from src/mess/drivers/microvsn.c)2
-rw-r--r--src/mame/drivers/midqslvr.c10
-rw-r--r--src/mame/drivers/midtunit.c55
-rw-r--r--src/mame/drivers/midvunit.c42
-rw-r--r--src/mame/drivers/midwunit.c41
-rw-r--r--src/mame/drivers/midxunit.c72
-rw-r--r--src/mame/drivers/midyunit.c232
-rw-r--r--src/mame/drivers/midzeus.c26
-rw-r--r--src/mame/drivers/mikie.c6
-rw-r--r--src/mame/drivers/mikro80.c (renamed from src/mess/drivers/mikro80.c)0
-rw-r--r--src/mame/drivers/mikromik.c (renamed from src/mess/drivers/mikromik.c)6
-rw-r--r--src/mame/drivers/mikrosha.c (renamed from src/mess/drivers/mikrosha.c)0
-rw-r--r--src/mame/drivers/mil4000.c2
-rw-r--r--src/mame/drivers/mini2440.c (renamed from src/mess/drivers/mini2440.c)0
-rw-r--r--src/mame/drivers/miniboy7.c4
-rw-r--r--src/mame/drivers/minicom.c (renamed from src/mess/drivers/minicom.c)4
-rw-r--r--src/mame/drivers/minivadr.c24
-rw-r--r--src/mame/drivers/mirage.c4
-rw-r--r--src/mame/drivers/mirax.c4
-rw-r--r--src/mame/drivers/missb2.c4
-rw-r--r--src/mame/drivers/missile.c18
-rw-r--r--src/mame/drivers/mitchell.c58
-rw-r--r--src/mame/drivers/mits680b.c (renamed from src/mess/drivers/mits680b.c)2
-rw-r--r--src/mame/drivers/mjkjidai.c2
-rw-r--r--src/mame/drivers/mjsister.c2
-rw-r--r--src/mame/drivers/mk1.c (renamed from src/mess/drivers/mk1.c)2
-rw-r--r--src/mame/drivers/mk14.c (renamed from src/mess/drivers/mk14.c)2
-rw-r--r--src/mame/drivers/mk2.c (renamed from src/mess/drivers/mk2.c)0
-rw-r--r--src/mame/drivers/mk85.c (renamed from src/mess/drivers/mk85.c)6
-rw-r--r--src/mame/drivers/mk90.c (renamed from src/mess/drivers/mk90.c)6
-rw-r--r--src/mame/drivers/mkit09.c (renamed from src/mess/drivers/mkit09.c)47
-rw-r--r--src/mame/drivers/mlanding.c2
-rw-r--r--src/mame/drivers/mmagic.c317
-rw-r--r--src/mame/drivers/mmd1.c (renamed from src/mess/drivers/mmd1.c)4
-rw-r--r--src/mame/drivers/mmm.c2
-rw-r--r--src/mame/drivers/mmodular.c (renamed from src/mess/drivers/mmodular.c)60
-rw-r--r--src/mame/drivers/mod8.c (renamed from src/mess/drivers/mod8.c)2
-rw-r--r--src/mame/drivers/model1.c16
-rw-r--r--src/mame/drivers/model2.c132
-rw-r--r--src/mame/drivers/model3.c119
-rw-r--r--src/mame/drivers/modellot.c (renamed from src/mess/drivers/modellot.c)2
-rw-r--r--src/mame/drivers/mogura.c2
-rw-r--r--src/mame/drivers/mole.c12
-rw-r--r--src/mame/drivers/molecular.c (renamed from src/mess/drivers/molecular.c)2
-rw-r--r--src/mame/drivers/momoko.c2
-rw-r--r--src/mame/drivers/monacogp.c4
-rw-r--r--src/mame/drivers/monty.c (renamed from src/mess/drivers/monty.c)4
-rw-r--r--src/mame/drivers/monzagp.c466
-rw-r--r--src/mame/drivers/moo.c18
-rw-r--r--src/mame/drivers/mosaic.c6
-rw-r--r--src/mame/drivers/mouser.c4
-rw-r--r--src/mame/drivers/mpf1.c (renamed from src/mess/drivers/mpf1.c)2
-rw-r--r--src/mame/drivers/mps1230.c162
-rw-r--r--src/mame/drivers/mpu12wbk.c2
-rw-r--r--src/mame/drivers/mpu2.c4
-rw-r--r--src/mame/drivers/mpu3.c2
-rw-r--r--src/mame/drivers/mpu4.c26
-rw-r--r--src/mame/drivers/mpu4avan.c2
-rw-r--r--src/mame/drivers/mpu4bwb.c2
-rw-r--r--src/mame/drivers/mpu4concept.c2
-rw-r--r--src/mame/drivers/mpu4crystal.c204
-rw-r--r--src/mame/drivers/mpu4dealem.c2
-rw-r--r--src/mame/drivers/mpu4empire.c164
-rw-r--r--src/mame/drivers/mpu4mdm.c90
-rw-r--r--src/mame/drivers/mpu4misc.c28
-rw-r--r--src/mame/drivers/mpu4mod2sw.c4
-rw-r--r--src/mame/drivers/mpu4mod4yam.c6
-rw-r--r--src/mame/drivers/mpu4plasma.c16
-rw-r--r--src/mame/drivers/mpu4sw.c66
-rw-r--r--src/mame/drivers/mpu4union.c66
-rw-r--r--src/mame/drivers/mpu4vid.c4
-rw-r--r--src/mame/drivers/mpu5.c1260
-rw-r--r--src/mame/drivers/mpz80.c (renamed from src/mess/drivers/mpz80.c)2
-rw-r--r--src/mame/drivers/mquake.c2
-rw-r--r--src/mame/drivers/mrdo.c14
-rw-r--r--src/mame/drivers/mrflea.c2
-rw-r--r--src/mame/drivers/mrgame.c10
-rw-r--r--src/mame/drivers/mrjong.c6
-rw-r--r--src/mame/drivers/ms0515.c (renamed from src/mess/drivers/ms0515.c)2
-rw-r--r--src/mame/drivers/ms32.c34
-rw-r--r--src/mame/drivers/ms9540.c (renamed from src/mess/drivers/ms9540.c)2
-rw-r--r--src/mame/drivers/msbc1.c (renamed from src/mess/drivers/msbc1.c)2
-rw-r--r--src/mame/drivers/msisaac.c2
-rw-r--r--src/mame/drivers/mstation.c (renamed from src/mess/drivers/mstation.c)2
-rw-r--r--src/mame/drivers/msx.c (renamed from src/mess/drivers/msx.c)133
-rw-r--r--src/mame/drivers/mt735.c71
-rw-r--r--src/mame/drivers/mtx.c (renamed from src/mess/drivers/mtx.c)0
-rw-r--r--src/mame/drivers/mugsmash.c2
-rw-r--r--src/mame/drivers/multfish.c228
-rw-r--r--src/mame/drivers/multfish_boot.c248
-rw-r--r--src/mame/drivers/multfish_ref.c88
-rw-r--r--src/mame/drivers/multi16.c (renamed from src/mess/drivers/multi16.c)2
-rw-r--r--src/mame/drivers/multi8.c (renamed from src/mess/drivers/multi8.c)14
-rw-r--r--src/mame/drivers/munchmo.c4
-rw-r--r--src/mame/drivers/murogem.c8
-rw-r--r--src/mame/drivers/murogmbl.c2
-rw-r--r--src/mame/drivers/mustache.c2
-rw-r--r--src/mame/drivers/mvme350.c257
-rw-r--r--src/mame/drivers/mw18w.c4
-rw-r--r--src/mame/drivers/mw8080bw.c54
-rw-r--r--src/mame/drivers/mwarr.c3
-rw-r--r--src/mame/drivers/mwsub.c2
-rw-r--r--src/mame/drivers/mx2178.c (renamed from src/mess/drivers/mx2178.c)2
-rw-r--r--src/mame/drivers/myb3k.c (renamed from src/mess/drivers/myb3k.c)2
-rw-r--r--src/mame/drivers/mycom.c (renamed from src/mess/drivers/mycom.c)4
-rw-r--r--src/mame/drivers/mystston.c6
-rw-r--r--src/mame/drivers/mystwarr.c60
-rw-r--r--src/mame/drivers/myvision.c (renamed from src/mess/drivers/myvision.c)0
-rw-r--r--src/mame/drivers/mz2000.c (renamed from src/mess/drivers/mz2000.c)20
-rw-r--r--src/mame/drivers/mz2500.c (renamed from src/mess/drivers/mz2500.c)6
-rw-r--r--src/mame/drivers/mz3500.c (renamed from src/mess/drivers/mz3500.c)16
-rw-r--r--src/mame/drivers/mz6500.c (renamed from src/mess/drivers/mz6500.c)2
-rw-r--r--src/mame/drivers/mz700.c (renamed from src/mess/drivers/mz700.c)4
-rw-r--r--src/mame/drivers/mz80.c (renamed from src/mess/drivers/mz80.c)2
-rw-r--r--src/mame/drivers/mzr8105.c369
-rw-r--r--src/mame/drivers/n64.c (renamed from src/mess/drivers/n64.c)33
-rw-r--r--src/mame/drivers/n8080.c24
-rw-r--r--src/mame/drivers/nakajies.c (renamed from src/mess/drivers/nakajies.c)14
-rw-r--r--src/mame/drivers/namcofl.c10
-rw-r--r--src/mame/drivers/namcona1.c80
-rw-r--r--src/mame/drivers/namconb1.c66
-rw-r--r--src/mame/drivers/namcond1.c30
-rw-r--r--src/mame/drivers/namcops2.c1073
-rw-r--r--src/mame/drivers/namcos1.c87
-rw-r--r--src/mame/drivers/namcos10.c347
-rw-r--r--src/mame/drivers/namcos11.c78
-rw-r--r--src/mame/drivers/namcos12.c458
-rw-r--r--src/mame/drivers/namcos2.c38
-rw-r--r--src/mame/drivers/namcos21.c22
-rw-r--r--src/mame/drivers/namcos22.c60
-rw-r--r--src/mame/drivers/namcos23.c235
-rw-r--r--src/mame/drivers/namcos86.c96
-rw-r--r--src/mame/drivers/nanos.c (renamed from src/mess/drivers/nanos.c)2
-rw-r--r--src/mame/drivers/naomi.c320
-rw-r--r--src/mame/drivers/nascom1.c (renamed from src/mess/drivers/nascom1.c)6
-rw-r--r--src/mame/drivers/naughtyb.c28
-rw-r--r--src/mame/drivers/nbmj8688.c78
-rw-r--r--src/mame/drivers/nbmj8891.c86
-rw-r--r--src/mame/drivers/nbmj8900.c4
-rw-r--r--src/mame/drivers/nbmj8991.c36
-rw-r--r--src/mame/drivers/nbmj9195.c72
-rw-r--r--src/mame/drivers/nc.c (renamed from src/mess/drivers/nc.c)2
-rw-r--r--src/mame/drivers/nemesis.c38
-rw-r--r--src/mame/drivers/neogeo.c10
-rw-r--r--src/mame/drivers/neogeo_noslot.c510
-rw-r--r--src/mame/drivers/neoprint.c65
-rw-r--r--src/mame/drivers/neptunp2.c2
-rw-r--r--src/mame/drivers/nes.c (renamed from src/mess/drivers/nes.c)18
-rw-r--r--src/mame/drivers/newbrain.c (renamed from src/mess/drivers/newbrain.c)8
-rw-r--r--src/mame/drivers/news.c4
-rw-r--r--src/mame/drivers/next.c (renamed from src/mess/drivers/next.c)16
-rw-r--r--src/mame/drivers/nexus3d.c8
-rw-r--r--src/mame/drivers/ng_aes.c (renamed from src/mess/drivers/ng_aes.c)4
-rw-r--r--src/mame/drivers/ngen.c (renamed from src/mess/drivers/ngen.c)110
-rw-r--r--src/mame/drivers/ngp.c (renamed from src/mess/drivers/ngp.c)4
-rw-r--r--src/mame/drivers/nightgal.c14
-rw-r--r--src/mame/drivers/ninjakd2.c24
-rw-r--r--src/mame/drivers/ninjaw.c8
-rw-r--r--src/mame/drivers/nitedrvr.c2
-rw-r--r--src/mame/drivers/niyanpai.c10
-rw-r--r--src/mame/drivers/nmg5.c55
-rw-r--r--src/mame/drivers/nmk16.c110
-rw-r--r--src/mame/drivers/norautp.c67
-rw-r--r--src/mame/drivers/nova2001.c30
-rw-r--r--src/mame/drivers/nsm.c2
-rw-r--r--src/mame/drivers/nsmpoker.c2
-rw-r--r--src/mame/drivers/nss.c26
-rw-r--r--src/mame/drivers/nwk-tr.c12
-rw-r--r--src/mame/drivers/nycaptor.c10
-rw-r--r--src/mame/drivers/nyny.c31
-rw-r--r--src/mame/drivers/ob68k1a.c (renamed from src/mess/drivers/ob68k1a.c)2
-rw-r--r--src/mame/drivers/octopus.c (renamed from src/mess/drivers/octopus.c)2
-rw-r--r--src/mame/drivers/odyssey2.c (renamed from src/mess/drivers/odyssey2.c)6
-rw-r--r--src/mame/drivers/ohmygod.c4
-rw-r--r--src/mame/drivers/ojankohs.c10
-rw-r--r--src/mame/drivers/okean240.c (renamed from src/mess/drivers/okean240.c)6
-rw-r--r--src/mame/drivers/olibochu.c3
-rw-r--r--src/mame/drivers/omegrace.c6
-rw-r--r--src/mame/drivers/ondra.c (renamed from src/mess/drivers/ondra.c)0
-rw-r--r--src/mame/drivers/oneshot.c6
-rw-r--r--src/mame/drivers/onetwo.c4
-rw-r--r--src/mame/drivers/onyx.c (renamed from src/mess/drivers/onyx.c)2
-rw-r--r--src/mame/drivers/opwolf.c10
-rw-r--r--src/mame/drivers/orao.c (renamed from src/mess/drivers/orao.c)46
-rw-r--r--src/mame/drivers/orbit.c2
-rw-r--r--src/mame/drivers/oric.c (renamed from src/mess/drivers/oric.c)25
-rw-r--r--src/mame/drivers/orion.c (renamed from src/mess/drivers/orion.c)0
-rw-r--r--src/mame/drivers/osbexec.c (renamed from src/mess/drivers/osbexec.c)2
-rw-r--r--src/mame/drivers/osborne1.c (renamed from src/mess/drivers/osborne1.c)0
-rw-r--r--src/mame/drivers/osi.c (renamed from src/mess/drivers/osi.c)10
-rw-r--r--src/mame/drivers/othello.c2
-rw-r--r--src/mame/drivers/othunder.c209
-rw-r--r--src/mame/drivers/overdriv.c6
-rw-r--r--src/mame/drivers/p112.c (renamed from src/mess/drivers/p112.c)2
-rw-r--r--src/mame/drivers/p2000t.c (renamed from src/mess/drivers/p2000t.c)0
-rw-r--r--src/mame/drivers/p8k.c (renamed from src/mess/drivers/p8k.c)4
-rw-r--r--src/mame/drivers/pachifev.c2
-rw-r--r--src/mame/drivers/pacland.c10
-rw-r--r--src/mame/drivers/pacman.c243
-rw-r--r--src/mame/drivers/palm.c (renamed from src/mess/drivers/palm.c)34
-rw-r--r--src/mame/drivers/palm_dbg.inc (renamed from src/mess/drivers/palm_dbg.inc)0
-rw-r--r--src/mame/drivers/palmz22.c (renamed from src/mess/drivers/palmz22.c)2
-rw-r--r--src/mame/drivers/pandoras.c2
-rw-r--r--src/mame/drivers/pangofun.c2
-rw-r--r--src/mame/drivers/panicr.c4
-rw-r--r--src/mame/drivers/paradise.c22
-rw-r--r--src/mame/drivers/paranoia.c56
-rw-r--r--src/mame/drivers/parodius.c8
-rw-r--r--src/mame/drivers/partner.c (renamed from src/mess/drivers/partner.c)2
-rw-r--r--src/mame/drivers/pasha2.c2
-rw-r--r--src/mame/drivers/paso1600.c (renamed from src/mess/drivers/paso1600.c)2
-rw-r--r--src/mame/drivers/pasogo.c (renamed from src/mess/drivers/pasogo.c)2
-rw-r--r--src/mame/drivers/pasopia.c (renamed from src/mess/drivers/pasopia.c)2
-rw-r--r--src/mame/drivers/pasopia7.c (renamed from src/mess/drivers/pasopia7.c)16
-rw-r--r--src/mame/drivers/pass.c2
-rw-r--r--src/mame/drivers/pastelg.c6
-rw-r--r--src/mame/drivers/pb1000.c (renamed from src/mess/drivers/pb1000.c)6
-rw-r--r--src/mame/drivers/pbaction.c10
-rw-r--r--src/mame/drivers/pc.c (renamed from src/mess/drivers/pc.c)28
-rw-r--r--src/mame/drivers/pc100.c (renamed from src/mess/drivers/pc100.c)25
-rw-r--r--src/mame/drivers/pc1500.c (renamed from src/mess/drivers/pc1500.c)2
-rw-r--r--src/mame/drivers/pc1512.c (renamed from src/mess/drivers/pc1512.c)16
-rw-r--r--src/mame/drivers/pc2000.c (renamed from src/mess/drivers/pc2000.c)32
-rw-r--r--src/mame/drivers/pc4.c (renamed from src/mess/drivers/pc4.c)2
-rw-r--r--src/mame/drivers/pc6001.c (renamed from src/mess/drivers/pc6001.c)12
-rw-r--r--src/mame/drivers/pc8001.c (renamed from src/mess/drivers/pc8001.c)4
-rw-r--r--src/mame/drivers/pc8401a.c (renamed from src/mess/drivers/pc8401a.c)6
-rw-r--r--src/mame/drivers/pc8801.c (renamed from src/mess/drivers/pc8801.c)36
-rw-r--r--src/mame/drivers/pc88va.c (renamed from src/mess/drivers/pc88va.c)6
-rw-r--r--src/mame/drivers/pc9801.c (renamed from src/mess/drivers/pc9801.c)47
-rw-r--r--src/mame/drivers/pcat_dyn.c4
-rw-r--r--src/mame/drivers/pcat_nit.c12
-rw-r--r--src/mame/drivers/pcd.c (renamed from src/mess/drivers/pcd.c)292
-rw-r--r--src/mame/drivers/pce.c (renamed from src/mess/drivers/pce.c)26
-rw-r--r--src/mame/drivers/pce220.c (renamed from src/mess/drivers/pce220.c)4
-rw-r--r--src/mame/drivers/pcfx.c (renamed from src/mess/drivers/pcfx.c)4
-rw-r--r--src/mame/drivers/pcktgal.c14
-rw-r--r--src/mame/drivers/pcm.c (renamed from src/mess/drivers/pcm.c)0
-rw-r--r--src/mame/drivers/pcw.c (renamed from src/mess/drivers/pcw.c)10
-rw-r--r--src/mame/drivers/pcw16.c (renamed from src/mess/drivers/pcw16.c)2
-rw-r--r--src/mame/drivers/pcxt.c4
-rw-r--r--src/mame/drivers/pda600.c (renamed from src/mess/drivers/pda600.c)2
-rw-r--r--src/mame/drivers/pdp1.c (renamed from src/mess/drivers/pdp1.c)38
-rw-r--r--src/mame/drivers/pdp11.c (renamed from src/mess/drivers/pdp11.c)8
-rw-r--r--src/mame/drivers/pecom.c (renamed from src/mess/drivers/pecom.c)0
-rw-r--r--src/mame/drivers/pegasus.c (renamed from src/mess/drivers/pegasus.c)4
-rw-r--r--src/mame/drivers/pencil2.c (renamed from src/mess/drivers/pencil2.c)0
-rw-r--r--src/mame/drivers/pengadvb.c2
-rw-r--r--src/mame/drivers/pengo.c16
-rw-r--r--src/mame/drivers/pentagon.c (renamed from src/mess/drivers/pentagon.c)0
-rw-r--r--src/mame/drivers/peoplepc.c (renamed from src/mess/drivers/peoplepc.c)2
-rw-r--r--src/mame/drivers/peplus.c483
-rw-r--r--src/mame/drivers/pes.c (renamed from src/mess/drivers/pes.c)2
-rw-r--r--src/mame/drivers/pet.c (renamed from src/mess/drivers/pet.c)95
-rw-r--r--src/mame/drivers/peyper.c20
-rw-r--r--src/mame/drivers/pgm.c421
-rw-r--r--src/mame/drivers/pgm2.c16
-rw-r--r--src/mame/drivers/phc25.c (renamed from src/mess/drivers/phc25.c)4
-rw-r--r--src/mame/drivers/phoenix.c155
-rw-r--r--src/mame/drivers/photon2.c58
-rw-r--r--src/mame/drivers/photoply.c2
-rw-r--r--src/mame/drivers/phunsy.c (renamed from src/mess/drivers/phunsy.c)2
-rw-r--r--src/mame/drivers/piggypas.c244
-rw-r--r--src/mame/drivers/pimps.c (renamed from src/mess/drivers/pimps.c)2
-rw-r--r--src/mame/drivers/pinball2k.c8
-rw-r--r--src/mame/drivers/pingpong.c2
-rw-r--r--src/mame/drivers/pinkiri8.c12
-rw-r--r--src/mame/drivers/pipbug.c (renamed from src/mess/drivers/pipbug.c)2
-rw-r--r--src/mame/drivers/pipedrm.c12
-rw-r--r--src/mame/drivers/pipeline.c2
-rw-r--r--src/mame/drivers/pirates.c4
-rw-r--r--src/mame/drivers/pitagjr.c (renamed from src/mess/drivers/pitagjr.c)2
-rw-r--r--src/mame/drivers/pitnrun.c4
-rw-r--r--src/mame/drivers/pk8000.c (renamed from src/mess/drivers/pk8000.c)2
-rw-r--r--src/mame/drivers/pk8020.c (renamed from src/mess/drivers/pk8020.c)0
-rw-r--r--src/mame/drivers/pkscram.c2
-rw-r--r--src/mame/drivers/pktgaldx.c6
-rw-r--r--src/mame/drivers/plan80.c (renamed from src/mess/drivers/plan80.c)2
-rw-r--r--src/mame/drivers/play_1.c10
-rw-r--r--src/mame/drivers/play_2.c16
-rw-r--r--src/mame/drivers/play_3.c4
-rw-r--r--src/mame/drivers/play_5.c22
-rw-r--r--src/mame/drivers/playch10.c12
-rw-r--r--src/mame/drivers/playmark.c22
-rw-r--r--src/mame/drivers/plus4.c (renamed from src/mess/drivers/plus4.c)18
-rw-r--r--src/mame/drivers/pluto5.c228
-rw-r--r--src/mame/drivers/plygonet.c21
-rw-r--r--src/mame/drivers/pm68k.c (renamed from src/mess/drivers/pm68k.c)2
-rw-r--r--src/mame/drivers/pmd85.c (renamed from src/mess/drivers/pmd85.c)35
-rw-r--r--src/mame/drivers/pmi80.c (renamed from src/mess/drivers/pmi80.c)2
-rw-r--r--src/mame/drivers/pntnpuzl.c2
-rw-r--r--src/mame/drivers/pocketc.c (renamed from src/mess/drivers/pocketc.c)28
-rw-r--r--src/mame/drivers/pockstat.c (renamed from src/mess/drivers/pockstat.c)6
-rw-r--r--src/mame/drivers/poisk1.c (renamed from src/mess/drivers/poisk1.c)0
-rw-r--r--src/mame/drivers/pokemini.c (renamed from src/mess/drivers/pokemini.c)2
-rw-r--r--src/mame/drivers/poker72.c2
-rw-r--r--src/mame/drivers/polepos.c2
-rw-r--r--src/mame/drivers/poly.c (renamed from src/mess/drivers/poly.c)2
-rw-r--r--src/mame/drivers/poly88.c (renamed from src/mess/drivers/poly88.c)2
-rw-r--r--src/mame/drivers/poly880.c (renamed from src/mess/drivers/poly880.c)2
-rw-r--r--src/mame/drivers/pong.c8
-rw-r--r--src/mame/drivers/poolshrk.c4
-rw-r--r--src/mame/drivers/pooyan.c6
-rw-r--r--src/mame/drivers/popeye.c10
-rw-r--r--src/mame/drivers/popobear.c2
-rw-r--r--src/mame/drivers/popper.c2
-rw-r--r--src/mame/drivers/portfoli.c (renamed from src/mess/drivers/portfoli.c)2
-rw-r--r--src/mame/drivers/portrait.c4
-rw-r--r--src/mame/drivers/potgoldu.c2
-rw-r--r--src/mame/drivers/powerbal.c6
-rw-r--r--src/mame/drivers/powerins.c8
-rw-r--r--src/mame/drivers/pp01.c (renamed from src/mess/drivers/pp01.c)2
-rw-r--r--src/mame/drivers/ppmast93.c2
-rw-r--r--src/mame/drivers/prehisle.c16
-rw-r--r--src/mame/drivers/prestige.c (renamed from src/mess/drivers/prestige.c)40
-rw-r--r--src/mame/drivers/primo.c (renamed from src/mess/drivers/primo.c)2
-rw-r--r--src/mame/drivers/pro80.c (renamed from src/mess/drivers/pro80.c)2
-rw-r--r--src/mame/drivers/proconn.c274
-rw-r--r--src/mame/drivers/prof180x.c (renamed from src/mess/drivers/prof180x.c)4
-rw-r--r--src/mame/drivers/prof80.c (renamed from src/mess/drivers/prof80.c)2
-rw-r--r--src/mame/drivers/progolf.c4
-rw-r--r--src/mame/drivers/proteus3.c408
-rw-r--r--src/mame/drivers/psattack.c2
-rw-r--r--src/mame/drivers/pse.c6
-rw-r--r--src/mame/drivers/psikyo.c30
-rw-r--r--src/mame/drivers/psikyo4.c16
-rw-r--r--src/mame/drivers/psikyosh.c40
-rw-r--r--src/mame/drivers/psion.c (renamed from src/mess/drivers/psion.c)22
-rw-r--r--src/mame/drivers/psx.c (renamed from src/mess/drivers/psx.c)9
-rw-r--r--src/mame/drivers/psychic5.c6
-rw-r--r--src/mame/drivers/pt68k4.c (renamed from src/mess/drivers/pt68k4.c)4
-rw-r--r--src/mame/drivers/ptcsol.c (renamed from src/mess/drivers/ptcsol.c)0
-rw-r--r--src/mame/drivers/pturn.c2
-rw-r--r--src/mame/drivers/puckpkmn.c2
-rw-r--r--src/mame/drivers/pulsar.c (renamed from src/mess/drivers/pulsar.c)2
-rw-r--r--src/mame/drivers/pv1000.c (renamed from src/mess/drivers/pv1000.c)13
-rw-r--r--src/mame/drivers/pv2000.c (renamed from src/mess/drivers/pv2000.c)2
-rw-r--r--src/mame/drivers/pv9234.c (renamed from src/mess/drivers/pv9234.c)2
-rw-r--r--src/mame/drivers/pve500.c (renamed from src/mess/drivers/pve500.c)2
-rw-r--r--src/mame/drivers/px4.c (renamed from src/mess/drivers/px4.c)0
-rw-r--r--src/mame/drivers/px8.c (renamed from src/mess/drivers/px8.c)2
-rw-r--r--src/mame/drivers/pyl601.c (renamed from src/mess/drivers/pyl601.c)0
-rw-r--r--src/mame/drivers/pyson.c6
-rw-r--r--src/mame/drivers/pzletime.c3
-rw-r--r--src/mame/drivers/qix.c198
-rw-r--r--src/mame/drivers/ql.c (renamed from src/mess/drivers/ql.c)22
-rw-r--r--src/mame/drivers/qtsbc.c (renamed from src/mess/drivers/qtsbc.c)2
-rw-r--r--src/mame/drivers/quakeat.c2
-rw-r--r--src/mame/drivers/quantum.c24
-rw-r--r--src/mame/drivers/quasar.c4
-rw-r--r--src/mame/drivers/queen.c2
-rw-r--r--src/mame/drivers/quizdna.c6
-rw-r--r--src/mame/drivers/quizo.c4
-rw-r--r--src/mame/drivers/quizpani.c2
-rw-r--r--src/mame/drivers/quizpun2.c4
-rw-r--r--src/mame/drivers/quizshow.c2
-rw-r--r--src/mame/drivers/qx10.c (renamed from src/mess/drivers/qx10.c)2
-rw-r--r--src/mame/drivers/r2dtank.c26
-rw-r--r--src/mame/drivers/r2dx_v33.c8
-rw-r--r--src/mame/drivers/rabbit.c2
-rw-r--r--src/mame/drivers/radio86.c (renamed from src/mess/drivers/radio86.c)0
-rw-r--r--src/mame/drivers/raiden.c14
-rw-r--r--src/mame/drivers/raiden2.c72
-rw-r--r--src/mame/drivers/rainbow.c3248
-rw-r--r--src/mame/drivers/rallyx.c34
-rw-r--r--src/mame/drivers/rambo.c227
-rw-r--r--src/mame/drivers/rampart.c6
-rw-r--r--src/mame/drivers/ramtek.c89
-rw-r--r--src/mame/drivers/rastan.c14
-rw-r--r--src/mame/drivers/rastersp.c2
-rw-r--r--src/mame/drivers/ravens.c (renamed from src/mess/drivers/ravens.c)4
-rw-r--r--src/mame/drivers/rbisland.c977
-rw-r--r--src/mame/drivers/rbmk.c2
-rw-r--r--src/mame/drivers/rc759.c (renamed from src/mess/drivers/rc759.c)20
-rw-r--r--src/mame/drivers/rcorsair.c2
-rw-r--r--src/mame/drivers/rd100.c115
-rw-r--r--src/mame/drivers/rd110.c (renamed from src/mess/drivers/rd110.c)2
-rw-r--r--src/mame/drivers/re900.c4
-rw-r--r--src/mame/drivers/realbrk.c14
-rw-r--r--src/mame/drivers/redalert.c8
-rw-r--r--src/mame/drivers/redclash.c12
-rw-r--r--src/mame/drivers/renegade.c6
-rw-r--r--src/mame/drivers/replicator.c727
-rw-r--r--src/mame/drivers/retofinv.c6
-rw-r--r--src/mame/drivers/rex6000.c (renamed from src/mess/drivers/rex6000.c)4
-rw-r--r--src/mame/drivers/rgum.c2
-rw-r--r--src/mame/drivers/riscpc.c (renamed from src/mess/drivers/riscpc.c)14
-rw-r--r--src/mame/drivers/rltennis.c2
-rw-r--r--src/mame/drivers/rm380z.c (renamed from src/mess/drivers/rm380z.c)2
-rw-r--r--src/mame/drivers/rmhaihai.c10
-rw-r--r--src/mame/drivers/rmnimbus.c (renamed from src/mess/drivers/rmnimbus.c)0
-rw-r--r--src/mame/drivers/rmt32.c (renamed from src/mess/drivers/rmt32.c)4
-rw-r--r--src/mame/drivers/rockrage.c8
-rw-r--r--src/mame/drivers/rocnrope.c17
-rw-r--r--src/mame/drivers/rohga.c32
-rw-r--r--src/mame/drivers/rollerg.c4
-rw-r--r--src/mame/drivers/rollext.c366
-rw-r--r--src/mame/drivers/rollrace.c6
-rw-r--r--src/mame/drivers/rotaryf.c2
-rw-r--r--src/mame/drivers/roul.c2
-rw-r--r--src/mame/drivers/route16.c80
-rw-r--r--src/mame/drivers/rowamet.c2
-rw-r--r--src/mame/drivers/royalmah.c26
-rw-r--r--src/mame/drivers/rpunch.c12
-rw-r--r--src/mame/drivers/rsc55.c (renamed from src/mess/drivers/rsc55.c)2
-rw-r--r--src/mame/drivers/rt1715.c (renamed from src/mess/drivers/rt1715.c)6
-rw-r--r--src/mame/drivers/runaway.c4
-rw-r--r--src/mame/drivers/rungun.c12
-rw-r--r--src/mame/drivers/rvoice.c (renamed from src/mess/drivers/rvoice.c)2
-rw-r--r--src/mame/drivers/rx78.c (renamed from src/mess/drivers/rx78.c)0
-rw-r--r--src/mame/drivers/s11.c26
-rw-r--r--src/mame/drivers/s11a.c20
-rw-r--r--src/mame/drivers/s11b.c94
-rw-r--r--src/mame/drivers/s11c.c50
-rw-r--r--src/mame/drivers/s3.c14
-rw-r--r--src/mame/drivers/s4.c34
-rw-r--r--src/mame/drivers/s6.c24
-rw-r--r--src/mame/drivers/s6a.c8
-rw-r--r--src/mame/drivers/s7.c46
-rw-r--r--src/mame/drivers/s8.c4
-rw-r--r--src/mame/drivers/s8a.c2
-rw-r--r--src/mame/drivers/s9.c18
-rw-r--r--src/mame/drivers/sacstate.c (renamed from src/mess/drivers/sacstate.c)2
-rw-r--r--src/mame/drivers/safarir.c4
-rw-r--r--src/mame/drivers/sage2.c (renamed from src/mess/drivers/sage2.c)2
-rw-r--r--src/mame/drivers/sam.c396
-rw-r--r--src/mame/drivers/samcoupe.c (renamed from src/mess/drivers/samcoupe.c)67
-rw-r--r--src/mame/drivers/sandscrp.c6
-rw-r--r--src/mame/drivers/sangho.c141
-rw-r--r--src/mame/drivers/sapi1.c (renamed from src/mess/drivers/sapi1.c)10
-rw-r--r--src/mame/drivers/saturn.c (renamed from src/mess/drivers/saturn.c)10
-rw-r--r--src/mame/drivers/sauro.c10
-rw-r--r--src/mame/drivers/savia84.c (renamed from src/mess/drivers/savia84.c)2
-rw-r--r--src/mame/drivers/savquest.c2
-rw-r--r--src/mame/drivers/sbasketb.c8
-rw-r--r--src/mame/drivers/sbc6510.c (renamed from src/mess/drivers/sbc6510.c)2
-rw-r--r--src/mame/drivers/sbowling.c4
-rw-r--r--src/mame/drivers/sbrain.c (renamed from src/mess/drivers/sbrain.c)2
-rw-r--r--src/mame/drivers/sbrkout.c8
-rw-r--r--src/mame/drivers/sbugger.c4
-rw-r--r--src/mame/drivers/sc1.c (renamed from src/mess/drivers/sc1.c)2
-rw-r--r--src/mame/drivers/sc2.c (renamed from src/mess/drivers/sc2.c)2
-rw-r--r--src/mame/drivers/scobra.c368
-rw-r--r--src/mame/drivers/scorpion.c (renamed from src/mess/drivers/scorpion.c)8
-rw-r--r--src/mame/drivers/scotrsht.c2
-rw-r--r--src/mame/drivers/scramble.c118
-rw-r--r--src/mame/drivers/scregg.c8
-rw-r--r--src/mame/drivers/scv.c (renamed from src/mess/drivers/scv.c)4
-rw-r--r--src/mame/drivers/sderby.c4
-rw-r--r--src/mame/drivers/sdk80.c (renamed from src/mess/drivers/sdk80.c)75
-rw-r--r--src/mame/drivers/sdk85.c (renamed from src/mess/drivers/sdk85.c)2
-rw-r--r--src/mame/drivers/sdk86.c (renamed from src/mess/drivers/sdk86.c)2
-rw-r--r--src/mame/drivers/seabattl.c4
-rw-r--r--src/mame/drivers/sealy.c2
-rw-r--r--src/mame/drivers/seattle.c123
-rw-r--r--src/mame/drivers/seattlecmp.c (renamed from src/mess/drivers/seattle.c)2
-rw-r--r--src/mame/drivers/segac2.c70
-rw-r--r--src/mame/drivers/segacoin.c2
-rw-r--r--src/mame/drivers/segae.c14
-rw-r--r--src/mame/drivers/segag80r.c24
-rw-r--r--src/mame/drivers/segag80v.c22
-rw-r--r--src/mame/drivers/segahang.c166
-rw-r--r--src/mame/drivers/segajw.c2
-rw-r--r--src/mame/drivers/segald.c12
-rw-r--r--src/mame/drivers/segam1.c2
-rw-r--r--src/mame/drivers/segaorun.c359
-rw-r--r--src/mame/drivers/segapico.c (renamed from src/mess/drivers/segapico.c)126
-rw-r--r--src/mame/drivers/segapm.c80
-rw-r--r--src/mame/drivers/segas16a.c231
-rw-r--r--src/mame/drivers/segas16b.c1587
-rw-r--r--src/mame/drivers/segas18.c727
-rw-r--r--src/mame/drivers/segas24.c19
-rw-r--r--src/mame/drivers/segas32.c141
-rw-r--r--src/mame/drivers/segasp.c4
-rw-r--r--src/mame/drivers/segaufo.c14
-rw-r--r--src/mame/drivers/segaxbd.c2290
-rw-r--r--src/mame/drivers/segaybd.c46
-rw-r--r--src/mame/drivers/seibuspi.c108
-rw-r--r--src/mame/drivers/seicross.c12
-rw-r--r--src/mame/drivers/selz80.c (renamed from src/mess/drivers/selz80.c)4
-rw-r--r--src/mame/drivers/sengokmj.c2
-rw-r--r--src/mame/drivers/senjyo.c40
-rw-r--r--src/mame/drivers/seta.c84
-rw-r--r--src/mame/drivers/seta2.c55
-rw-r--r--src/mame/drivers/sf.c10
-rw-r--r--src/mame/drivers/sfbonus.c16
-rw-r--r--src/mame/drivers/sfcbox.c10
-rw-r--r--src/mame/drivers/sfkick.c149
-rw-r--r--src/mame/drivers/sg1000.c (renamed from src/mess/drivers/sg1000.c)14
-rw-r--r--src/mame/drivers/sgi_ip2.c (renamed from src/mess/drivers/sgi_ip2.c)4
-rw-r--r--src/mame/drivers/sgi_ip6.c (renamed from src/mess/drivers/sgi_ip6.c)4
-rw-r--r--src/mame/drivers/sh4robot.c (renamed from src/mess/drivers/sh4robot.c)2
-rw-r--r--src/mame/drivers/shadfrce.c66
-rw-r--r--src/mame/drivers/shangha3.c10
-rw-r--r--src/mame/drivers/shanghai.c10
-rw-r--r--src/mame/drivers/shangkid.c14
-rw-r--r--src/mame/drivers/shaolins.c6
-rw-r--r--src/mame/drivers/shisen.c8
-rw-r--r--src/mame/drivers/shootout.c6
-rw-r--r--src/mame/drivers/shougi.c4
-rw-r--r--src/mame/drivers/shtzone.c2
-rw-r--r--src/mame/drivers/shuuz.c4
-rw-r--r--src/mame/drivers/sidearms.c32
-rw-r--r--src/mame/drivers/sidepckt.c6
-rw-r--r--src/mame/drivers/sigmab52.c8
-rw-r--r--src/mame/drivers/sigmab98.c4
-rw-r--r--src/mame/drivers/silkroad.c4
-rw-r--r--src/mame/drivers/silvmil.c97
-rw-r--r--src/mame/drivers/simpl156.c42
-rw-r--r--src/mame/drivers/simple_st0016.c8
-rw-r--r--src/mame/drivers/simpsons.c21
-rw-r--r--src/mame/drivers/sitcom.c (renamed from src/mess/drivers/sitcom.c)2
-rw-r--r--src/mame/drivers/skeetsht.c4
-rw-r--r--src/mame/drivers/skimaxx.c2
-rw-r--r--src/mame/drivers/skyarmy.c6
-rw-r--r--src/mame/drivers/skydiver.c2
-rw-r--r--src/mame/drivers/skyfox.c6
-rw-r--r--src/mame/drivers/skykid.c10
-rw-r--r--src/mame/drivers/skylncr.c2
-rw-r--r--src/mame/drivers/skyraid.c2
-rw-r--r--src/mame/drivers/slapfght.c40
-rw-r--r--src/mame/drivers/slapshot.c6
-rw-r--r--src/mame/drivers/slc1.c (renamed from src/mess/drivers/slc1.c)0
-rw-r--r--src/mame/drivers/sleic.c2
-rw-r--r--src/mame/drivers/slicer.c (renamed from src/mess/drivers/slicer.c)2
-rw-r--r--src/mame/drivers/sliver.c28
-rw-r--r--src/mame/drivers/slotcarn.c4
-rw-r--r--src/mame/drivers/sm1800.c (renamed from src/mess/drivers/sm1800.c)2
-rw-r--r--src/mame/drivers/smc777.c (renamed from src/mess/drivers/smc777.c)40
-rw-r--r--src/mame/drivers/sms.c (renamed from src/mess/drivers/sms.c)35
-rw-r--r--src/mame/drivers/smsmcorp.c22
-rw-r--r--src/mame/drivers/snes.c (renamed from src/mess/drivers/snes.c)4
-rw-r--r--src/mame/drivers/snesb.c12
-rw-r--r--src/mame/drivers/snk6502.c36
-rw-r--r--src/mame/drivers/snk68.c26
-rw-r--r--src/mame/drivers/snowbros.c56
-rw-r--r--src/mame/drivers/socrates.c (renamed from src/mess/drivers/socrates.c)10
-rw-r--r--src/mame/drivers/softbox.c (renamed from src/mess/drivers/softbox.c)8
-rw-r--r--src/mame/drivers/solomon.c4
-rw-r--r--src/mame/drivers/sonson.c4
-rw-r--r--src/mame/drivers/sorcerer.c (renamed from src/mess/drivers/sorcerer.c)32
-rw-r--r--src/mame/drivers/sothello.c28
-rw-r--r--src/mame/drivers/spacefb.c18
-rw-r--r--src/mame/drivers/spaceg.c2
-rw-r--r--src/mame/drivers/spbactn.c6
-rw-r--r--src/mame/drivers/spc1000.c (renamed from src/mess/drivers/spc1000.c)2
-rw-r--r--src/mame/drivers/spcforce.c42
-rw-r--r--src/mame/drivers/spdodgeb.c6
-rw-r--r--src/mame/drivers/spec128.c (renamed from src/mess/drivers/spec128.c)2
-rw-r--r--src/mame/drivers/special.c (renamed from src/mess/drivers/special.c)4
-rw-r--r--src/mame/drivers/specpls3.c (renamed from src/mess/drivers/specpls3.c)8
-rw-r--r--src/mame/drivers/spectra.c2
-rw-r--r--src/mame/drivers/spectrum.c (renamed from src/mess/drivers/spectrum.c)14
-rw-r--r--src/mame/drivers/speedatk.c2
-rw-r--r--src/mame/drivers/speedbal.c4
-rw-r--r--src/mame/drivers/speedspn.c2
-rw-r--r--src/mame/drivers/speglsht.c2
-rw-r--r--src/mame/drivers/spiders.c23
-rw-r--r--src/mame/drivers/spinb.c10
-rw-r--r--src/mame/drivers/splash.c18
-rw-r--r--src/mame/drivers/splus.c30
-rw-r--r--src/mame/drivers/spoker.c6
-rw-r--r--src/mame/drivers/spool99.c10
-rw-r--r--src/mame/drivers/sprcros2.c4
-rw-r--r--src/mame/drivers/sprint2.c20
-rw-r--r--src/mame/drivers/spy.c5
-rw-r--r--src/mame/drivers/squale.c99
-rw-r--r--src/mame/drivers/srmp2.c16
-rw-r--r--src/mame/drivers/srmp5.c2
-rw-r--r--src/mame/drivers/srmp6.c2
-rw-r--r--src/mame/drivers/srumbler.c8
-rw-r--r--src/mame/drivers/ssem.c (renamed from src/mess/drivers/ssem.c)15
-rw-r--r--src/mame/drivers/ssfindo.c6
-rw-r--r--src/mame/drivers/sshot.c4
-rw-r--r--src/mame/drivers/ssingles.c4
-rw-r--r--src/mame/drivers/sslam.c6
-rw-r--r--src/mame/drivers/ssozumo.c2
-rw-r--r--src/mame/drivers/sspeedr.c2
-rw-r--r--src/mame/drivers/ssrj.c2
-rw-r--r--src/mame/drivers/sstrangr.c38
-rw-r--r--src/mame/drivers/ssv.c62
-rw-r--r--src/mame/drivers/ssystem3.c (renamed from src/mess/drivers/ssystem3.c)90
-rw-r--r--src/mame/drivers/st_mp100.c24
-rw-r--r--src/mame/drivers/st_mp200.c44
-rw-r--r--src/mame/drivers/stactics.c2
-rw-r--r--src/mame/drivers/stadhero.c2
-rw-r--r--src/mame/drivers/starcrus.c2
-rw-r--r--src/mame/drivers/starfire.c8
-rw-r--r--src/mame/drivers/starshp1.c4
-rw-r--r--src/mame/drivers/starwars.c2
-rw-r--r--src/mame/drivers/statriv2.c36
-rw-r--r--src/mame/drivers/stellafr.c4
-rw-r--r--src/mame/drivers/stfight.c16
-rw-r--r--src/mame/drivers/stlforce.c6
-rw-r--r--src/mame/drivers/stratos.c (renamed from src/mess/drivers/stratos.c)2
-rw-r--r--src/mame/drivers/strnskil.c8
-rw-r--r--src/mame/drivers/studio2.c (renamed from src/mess/drivers/studio2.c)16
-rw-r--r--src/mame/drivers/stuntair.c2
-rw-r--r--src/mame/drivers/stv.c140
-rw-r--r--src/mame/drivers/su2000.c2
-rw-r--r--src/mame/drivers/sub.c2
-rw-r--r--src/mame/drivers/subs.c2
-rw-r--r--src/mame/drivers/subsino.c2
-rw-r--r--src/mame/drivers/subsino2.c2
-rw-r--r--src/mame/drivers/summit.c2
-rw-r--r--src/mame/drivers/sumt8035.c4
-rw-r--r--src/mame/drivers/sun1.c (renamed from src/mess/drivers/sun1.c)2
-rw-r--r--src/mame/drivers/sun2.c (renamed from src/mess/drivers/sun2.c)4
-rw-r--r--src/mame/drivers/sun3.c (renamed from src/mess/drivers/sun3.c)18
-rw-r--r--src/mame/drivers/sun4.c (renamed from src/mess/drivers/sun4.c)16
-rw-r--r--src/mame/drivers/suna16.c24
-rw-r--r--src/mame/drivers/suna8.c97
-rw-r--r--src/mame/drivers/supbtime.c8
-rw-r--r--src/mame/drivers/supdrapo.c6
-rw-r--r--src/mame/drivers/supduck.c2
-rw-r--r--src/mame/drivers/super6.c (renamed from src/mess/drivers/super6.c)2
-rw-r--r--src/mame/drivers/super80.c (renamed from src/mess/drivers/super80.c)10
-rw-r--r--src/mame/drivers/supercon.c (renamed from src/mess/drivers/supercon.c)8
-rw-r--r--src/mame/drivers/supercrd.c4
-rw-r--r--src/mame/drivers/superdq.c6
-rw-r--r--src/mame/drivers/superqix.c26
-rw-r--r--src/mame/drivers/superslave.c (renamed from src/mess/drivers/superslave.c)2
-rw-r--r--src/mame/drivers/superwng.c2
-rw-r--r--src/mame/drivers/supracan.c (renamed from src/mess/drivers/supracan.c)7
-rw-r--r--src/mame/drivers/suprgolf.c4
-rw-r--r--src/mame/drivers/suprloco.c4
-rw-r--r--src/mame/drivers/suprnova.c60
-rw-r--r--src/mame/drivers/suprridr.c2
-rw-r--r--src/mame/drivers/suprslam.c2
-rw-r--r--src/mame/drivers/surpratk.c6
-rw-r--r--src/mame/drivers/sv8000.c (renamed from src/mess/drivers/sv8000.c)0
-rw-r--r--src/mame/drivers/svi318.c (renamed from src/mess/drivers/svi318.c)12
-rw-r--r--src/mame/drivers/svision.c (renamed from src/mess/drivers/svision.c)0
-rw-r--r--src/mame/drivers/svmu.c (renamed from src/mess/drivers/svmu.c)2
-rw-r--r--src/mame/drivers/swtpc.c (renamed from src/mess/drivers/swtpc.c)2
-rw-r--r--src/mame/drivers/swtpc09.c (renamed from src/mess/drivers/swtpc09.c)8
-rw-r--r--src/mame/drivers/sym1.c (renamed from src/mess/drivers/sym1.c)0
-rw-r--r--src/mame/drivers/sys2900.c (renamed from src/mess/drivers/sys2900.c)2
-rw-r--r--src/mame/drivers/systec.c (renamed from src/mess/drivers/systec.c)2
-rw-r--r--src/mame/drivers/system1.c204
-rw-r--r--src/mame/drivers/system16.c188
-rw-r--r--src/mame/drivers/tagteam.c4
-rw-r--r--src/mame/drivers/tail2nos.c6
-rw-r--r--src/mame/drivers/taito.c74
-rw-r--r--src/mame/drivers/taito_b.c72
-rw-r--r--src/mame/drivers/taito_f2.c122
-rw-r--r--src/mame/drivers/taito_f3.c112
-rw-r--r--src/mame/drivers/taito_h.c14
-rw-r--r--src/mame/drivers/taito_l.c10
-rw-r--r--src/mame/drivers/taito_o.c2
-rw-r--r--src/mame/drivers/taito_x.c2
-rw-r--r--src/mame/drivers/taito_z.c86
-rw-r--r--src/mame/drivers/taitoair.c45
-rw-r--r--src/mame/drivers/taitogn.c48
-rw-r--r--src/mame/drivers/taitojc.c26
-rw-r--r--src/mame/drivers/taitopjc.c2
-rw-r--r--src/mame/drivers/taitosj.c48
-rw-r--r--src/mame/drivers/taitottl.c26
-rw-r--r--src/mame/drivers/taitotx.c30
-rw-r--r--src/mame/drivers/taitotz.c16
-rw-r--r--src/mame/drivers/taitowlf.c2
-rw-r--r--src/mame/drivers/tamag1.c (renamed from src/mess/drivers/tamag1.c)2
-rw-r--r--src/mame/drivers/tandy1t.c (renamed from src/mess/drivers/tandy1t.c)0
-rw-r--r--src/mame/drivers/tandy2k.c (renamed from src/mess/drivers/tandy2k.c)11
-rw-r--r--src/mame/drivers/tank8.c54
-rw-r--r--src/mame/drivers/tankbatt.c4
-rw-r--r--src/mame/drivers/tankbust.c2
-rw-r--r--src/mame/drivers/taotaido.c6
-rw-r--r--src/mame/drivers/tapatune.c43
-rw-r--r--src/mame/drivers/targeth.c4
-rw-r--r--src/mame/drivers/tasman.c15
-rw-r--r--src/mame/drivers/tatsumi.c12
-rw-r--r--src/mame/drivers/tattack.c2
-rw-r--r--src/mame/drivers/tavernie.c (renamed from src/mess/drivers/tavernie.c)5
-rw-r--r--src/mame/drivers/taxidriv.c2
-rw-r--r--src/mame/drivers/tb303.c (renamed from src/mess/drivers/tb303.c)73
-rw-r--r--src/mame/drivers/tbowl.c6
-rw-r--r--src/mame/drivers/tcl.c2
-rw-r--r--src/mame/drivers/tdv2324.c (renamed from src/mess/drivers/tdv2324.c)2
-rw-r--r--src/mame/drivers/tec1.c (renamed from src/mess/drivers/tec1.c)0
-rw-r--r--src/mame/drivers/techno.c2
-rw-r--r--src/mame/drivers/tecmo.c16
-rw-r--r--src/mame/drivers/tecmo16.c8
-rw-r--r--src/mame/drivers/tecmosys.c6
-rw-r--r--src/mame/drivers/tecnbras.c (renamed from src/mess/drivers/tecnbras.c)2
-rw-r--r--src/mame/drivers/tehkanwc.c10
-rw-r--r--src/mame/drivers/tek405x.c (renamed from src/mess/drivers/tek405x.c)6
-rw-r--r--src/mame/drivers/tek410x.c (renamed from src/mess/drivers/tek410x.c)4
-rw-r--r--src/mame/drivers/tempest.c12
-rw-r--r--src/mame/drivers/terak.c (renamed from src/mess/drivers/terak.c)2
-rw-r--r--src/mame/drivers/terracre.c18
-rw-r--r--src/mame/drivers/test_t400.c (renamed from src/mess/drivers/test_t400.c)4
-rw-r--r--src/mame/drivers/tetrisp2.c26
-rw-r--r--src/mame/drivers/tgtpanic.c2
-rw-r--r--src/mame/drivers/thayers.c4
-rw-r--r--src/mame/drivers/thedealr.c84
-rw-r--r--src/mame/drivers/thedeep.c4
-rw-r--r--src/mame/drivers/thepit.c42
-rw-r--r--src/mame/drivers/thomson.c (renamed from src/mess/drivers/thomson.c)143
-rw-r--r--src/mame/drivers/thoop2.c2
-rw-r--r--src/mame/drivers/thunderx.c19
-rw-r--r--src/mame/drivers/ti630.c (renamed from src/mess/drivers/ti630.c)2
-rw-r--r--src/mame/drivers/ti74.c (renamed from src/mess/drivers/ti74.c)4
-rw-r--r--src/mame/drivers/ti85.c (renamed from src/mess/drivers/ti85.c)22
-rw-r--r--src/mame/drivers/ti89.c (renamed from src/mess/drivers/ti89.c)10
-rw-r--r--src/mame/drivers/ti990_10.c (renamed from src/mess/drivers/ti990_10.c)6
-rw-r--r--src/mame/drivers/ti990_4.c (renamed from src/mess/drivers/ti990_4.c)6
-rw-r--r--src/mame/drivers/ti99_2.c (renamed from src/mess/drivers/ti99_2.c)4
-rw-r--r--src/mame/drivers/ti99_4p.c (renamed from src/mess/drivers/ti99_4p.c)12
-rw-r--r--src/mame/drivers/ti99_4x.c (renamed from src/mess/drivers/ti99_4x.c)18
-rw-r--r--src/mame/drivers/ti99_8.c (renamed from src/mess/drivers/ti99_8.c)13
-rw-r--r--src/mame/drivers/tiamc1.c8
-rw-r--r--src/mame/drivers/ticalc1x.c (renamed from src/mess/drivers/ticalc1x.c)164
-rw-r--r--src/mame/drivers/tigeroad.c14
-rw-r--r--src/mame/drivers/tiki100.c (renamed from src/mess/drivers/tiki100.c)280
-rw-r--r--src/mame/drivers/tim011.c (renamed from src/mess/drivers/tim011.c)2
-rw-r--r--src/mame/drivers/tim100.c (renamed from src/mess/drivers/tim100.c)2
-rw-r--r--src/mame/drivers/timelimt.c4
-rw-r--r--src/mame/drivers/timeplt.c14
-rw-r--r--src/mame/drivers/timetrv.c2
-rw-r--r--src/mame/drivers/timex.c (renamed from src/mess/drivers/timex.c)0
-rw-r--r--src/mame/drivers/tispeak.c (renamed from src/mess/drivers/tispeak.c)784
-rw-r--r--src/mame/drivers/tk2000.c (renamed from src/mess/drivers/tk2000.c)2
-rw-r--r--src/mame/drivers/tk80.c (renamed from src/mess/drivers/tk80.c)10
-rw-r--r--src/mame/drivers/tk80bs.c (renamed from src/mess/drivers/tk80bs.c)2
-rw-r--r--src/mame/drivers/tm990189.c (renamed from src/mess/drivers/tm990189.c)0
-rw-r--r--src/mame/drivers/tmaster.c2
-rw-r--r--src/mame/drivers/tmc1800.c (renamed from src/mess/drivers/tmc1800.c)8
-rw-r--r--src/mame/drivers/tmc2000e.c (renamed from src/mess/drivers/tmc2000e.c)2
-rw-r--r--src/mame/drivers/tmc600.c (renamed from src/mess/drivers/tmc600.c)4
-rw-r--r--src/mame/drivers/tmmjprd.c4
-rw-r--r--src/mame/drivers/tmnt.c129
-rw-r--r--src/mame/drivers/tmspoker.c2
-rw-r--r--src/mame/drivers/tnzs.c68
-rw-r--r--src/mame/drivers/toaplan1.c22
-rw-r--r--src/mame/drivers/toaplan2.c169
-rw-r--r--src/mame/drivers/toki.c16
-rw-r--r--src/mame/drivers/tokyocop.c2
-rw-r--r--src/mame/drivers/tomcat.c2
-rw-r--r--src/mame/drivers/tonton.c39
-rw-r--r--src/mame/drivers/toobin.c12
-rw-r--r--src/mame/drivers/topspeed.c6
-rw-r--r--src/mame/drivers/toratora.c41
-rw-r--r--src/mame/drivers/tourtabl.c4
-rw-r--r--src/mame/drivers/tourvis.c69
-rw-r--r--src/mame/drivers/tp84.c6
-rw-r--r--src/mame/drivers/trackfld.c96
-rw-r--r--src/mame/drivers/travrusa.c32
-rw-r--r--src/mame/drivers/tricep.c (renamed from src/mess/drivers/tricep.c)2
-rw-r--r--src/mame/drivers/triforce.c120
-rw-r--r--src/mame/drivers/triplhnt.c2
-rw-r--r--src/mame/drivers/trs80.c (renamed from src/mess/drivers/trs80.c)2
-rw-r--r--src/mame/drivers/trs80m2.c (renamed from src/mess/drivers/trs80m2.c)10
-rw-r--r--src/mame/drivers/truco.c2
-rw-r--r--src/mame/drivers/trucocl.c2
-rw-r--r--src/mame/drivers/trvmadns.c4
-rw-r--r--src/mame/drivers/trvquest.c2
-rw-r--r--src/mame/drivers/tryout.c2
-rw-r--r--src/mame/drivers/ts802.c (renamed from src/mess/drivers/ts802.c)5
-rw-r--r--src/mame/drivers/ts803.c (renamed from src/mess/drivers/ts803.c)2
-rw-r--r--src/mame/drivers/ts816.c (renamed from src/mess/drivers/ts816.c)2
-rw-r--r--src/mame/drivers/tsamurai.c26
-rw-r--r--src/mame/drivers/tsispch.c (renamed from src/mess/drivers/tsispch.c)4
-rw-r--r--src/mame/drivers/ttchamp.c147
-rw-r--r--src/mame/drivers/tubep.c6
-rw-r--r--src/mame/drivers/tugboat.c8
-rw-r--r--src/mame/drivers/tumbleb.c42
-rw-r--r--src/mame/drivers/tumblep.c4
-rw-r--r--src/mame/drivers/tunhunt.c4
-rw-r--r--src/mame/drivers/turbo.c32
-rw-r--r--src/mame/drivers/tutankhm.c9
-rw-r--r--src/mame/drivers/tutor.c (renamed from src/mess/drivers/tutor.c)0
-rw-r--r--src/mame/drivers/tv950.c (renamed from src/mess/drivers/tv950.c)2
-rw-r--r--src/mame/drivers/tvc.c (renamed from src/mess/drivers/tvc.c)6
-rw-r--r--src/mame/drivers/tvgame.c (renamed from src/mess/drivers/tvgame.c)0
-rw-r--r--src/mame/drivers/twin16.c30
-rw-r--r--src/mame/drivers/twinkle.c34
-rw-r--r--src/mame/drivers/twins.c6
-rw-r--r--src/mame/drivers/tx0.c (renamed from src/mess/drivers/tx0.c)19
-rw-r--r--src/mame/drivers/tx1.c6
-rw-r--r--src/mame/drivers/uapce.c8
-rw-r--r--src/mame/drivers/uknc.c (renamed from src/mess/drivers/uknc.c)10
-rw-r--r--src/mame/drivers/ultraman.c3
-rw-r--r--src/mame/drivers/undrfire.c6
-rw-r--r--src/mame/drivers/unior.c (renamed from src/mess/drivers/unior.c)2
-rw-r--r--src/mame/drivers/unistar.c (renamed from src/mess/drivers/unistar.c)2
-rw-r--r--src/mame/drivers/univac.c (renamed from src/mess/drivers/univac.c)2
-rw-r--r--src/mame/drivers/unixpc.c (renamed from src/mess/drivers/unixpc.c)2
-rw-r--r--src/mame/drivers/unkfr.c4
-rw-r--r--src/mame/drivers/unkhorse.c13
-rw-r--r--src/mame/drivers/upscope.c2
-rw-r--r--src/mame/drivers/usgames.c16
-rw-r--r--src/mame/drivers/ut88.c (renamed from src/mess/drivers/ut88.c)0
-rw-r--r--src/mame/drivers/uzebox.c (renamed from src/mess/drivers/uzebox.c)2
-rw-r--r--src/mame/drivers/v1050.c (renamed from src/mess/drivers/v1050.c)2
-rw-r--r--src/mame/drivers/v6809.c (renamed from src/mess/drivers/v6809.c)3
-rw-r--r--src/mame/drivers/vamphalf.c48
-rw-r--r--src/mame/drivers/vaportra.c8
-rw-r--r--src/mame/drivers/vastar.c10
-rw-r--r--src/mame/drivers/vax11.c (renamed from src/mess/drivers/vax11.c)2
-rw-r--r--src/mame/drivers/vball.c8
-rw-r--r--src/mame/drivers/vboy.c (renamed from src/mess/drivers/vboy.c)2
-rw-r--r--src/mame/drivers/vc4000.c (renamed from src/mess/drivers/vc4000.c)48
-rw-r--r--src/mame/drivers/vcombat.c4
-rw-r--r--src/mame/drivers/vcs80.c (renamed from src/mess/drivers/vcs80.c)2
-rw-r--r--src/mame/drivers/vd.c6
-rw-r--r--src/mame/drivers/vector06.c (renamed from src/mess/drivers/vector06.c)26
-rw-r--r--src/mame/drivers/vector4.c (renamed from src/mess/drivers/vector4.c)2
-rw-r--r--src/mame/drivers/vectrex.c2
-rw-r--r--src/mame/drivers/vega.c2
-rw-r--r--src/mame/drivers/vegaeo.c2
-rw-r--r--src/mame/drivers/vegas.c263
-rw-r--r--src/mame/drivers/vendetta.c20
-rw-r--r--src/mame/drivers/vertigo.c2
-rw-r--r--src/mame/drivers/vg5k.c (renamed from src/mess/drivers/vg5k.c)2
-rw-r--r--src/mame/drivers/vic10.c (renamed from src/mess/drivers/vic10.c)2
-rw-r--r--src/mame/drivers/vic20.c (renamed from src/mess/drivers/vic20.c)8
-rw-r--r--src/mame/drivers/vicdual.c158
-rw-r--r--src/mame/drivers/victor9k.c (renamed from src/mess/drivers/victor9k.c)2
-rw-r--r--src/mame/drivers/victory.c4
-rw-r--r--src/mame/drivers/vidbrain.c (renamed from src/mess/drivers/vidbrain.c)2
-rw-r--r--src/mame/drivers/videopin.c4
-rw-r--r--src/mame/drivers/videopkr.c2
-rw-r--r--src/mame/drivers/vigilant.c28
-rw-r--r--src/mame/drivers/vii.c (renamed from src/mess/drivers/vii.c)14
-rw-r--r--src/mame/drivers/vip.c (renamed from src/mess/drivers/vip.c)4
-rw-r--r--src/mame/drivers/viper.c68
-rw-r--r--src/mame/drivers/vixen.c (renamed from src/mess/drivers/vixen.c)2
-rw-r--r--src/mame/drivers/vk100.c (renamed from src/mess/drivers/vk100.c)86
-rw-r--r--src/mame/drivers/vlc.c2
-rw-r--r--src/mame/drivers/volfied.c12
-rw-r--r--src/mame/drivers/votrpss.c (renamed from src/mess/drivers/votrpss.c)2
-rw-r--r--src/mame/drivers/votrtnt.c (renamed from src/mess/drivers/votrtnt.c)25
-rw-r--r--src/mame/drivers/voyager.c2
-rw-r--r--src/mame/drivers/vp101.c4
-rw-r--r--src/mame/drivers/vpoker.c23
-rw-r--r--src/mame/drivers/vroulet.c2
-rw-r--r--src/mame/drivers/vsnes.c12
-rw-r--r--src/mame/drivers/vt100.c (renamed from src/mess/drivers/vt100.c)24
-rw-r--r--src/mame/drivers/vt220.c (renamed from src/mess/drivers/vt220.c)2
-rw-r--r--src/mame/drivers/vt240.c (renamed from src/mess/drivers/vt240.c)6
-rw-r--r--src/mame/drivers/vt320.c (renamed from src/mess/drivers/vt320.c)8
-rw-r--r--src/mame/drivers/vt520.c (renamed from src/mess/drivers/vt520.c)6
-rw-r--r--src/mame/drivers/vta2000.c (renamed from src/mess/drivers/vta2000.c)2
-rw-r--r--src/mame/drivers/vtech1.c (renamed from src/mess/drivers/vtech1.c)4
-rw-r--r--src/mame/drivers/vtech2.c (renamed from src/mess/drivers/vtech2.c)0
-rw-r--r--src/mame/drivers/vulgus.c6
-rw-r--r--src/mame/drivers/wacky_gator.c178
-rw-r--r--src/mame/drivers/wallc.c8
-rw-r--r--src/mame/drivers/wangpc.c (renamed from src/mess/drivers/wangpc.c)2
-rw-r--r--src/mame/drivers/wardner.c6
-rw-r--r--src/mame/drivers/warpsped.c2
-rw-r--r--src/mame/drivers/warpwarp.c36
-rw-r--r--src/mame/drivers/warriorb.c8
-rw-r--r--src/mame/drivers/wc90.c150
-rw-r--r--src/mame/drivers/wc90b.c6
-rw-r--r--src/mame/drivers/wecleman.c226
-rw-r--r--src/mame/drivers/welltris.c6
-rw-r--r--src/mame/drivers/wgp.c20
-rw-r--r--src/mame/drivers/wheelfir.c2
-rw-r--r--src/mame/drivers/white_mod.c304
-rw-r--r--src/mame/drivers/whitestar.c364
-rw-r--r--src/mame/drivers/wicat.c (renamed from src/mess/drivers/wicat.c)2
-rw-r--r--src/mame/drivers/wico.c2
-rw-r--r--src/mame/drivers/wildfire.c (renamed from src/mess/drivers/wildfire.c)6
-rw-r--r--src/mame/drivers/wildpkr.c2
-rw-r--r--src/mame/drivers/williams.c92
-rw-r--r--src/mame/drivers/wink.c4
-rw-r--r--src/mame/drivers/wiping.c4
-rw-r--r--src/mame/drivers/wiz.c18
-rw-r--r--src/mame/drivers/wms.c54
-rw-r--r--src/mame/drivers/wolfpack.c2
-rw-r--r--src/mame/drivers/wpc_95.c124
-rw-r--r--src/mame/drivers/wpc_an.c34
-rw-r--r--src/mame/drivers/wpc_dcs.c64
-rw-r--r--src/mame/drivers/wpc_dot.c36
-rw-r--r--src/mame/drivers/wpc_flip1.c18
-rw-r--r--src/mame/drivers/wpc_flip2.c98
-rw-r--r--src/mame/drivers/wpc_s.c114
-rw-r--r--src/mame/drivers/wrally.c6
-rw-r--r--src/mame/drivers/wswan.c (renamed from src/mess/drivers/wswan.c)4
-rw-r--r--src/mame/drivers/wwfsstar.c10
-rw-r--r--src/mame/drivers/wyvernf0.c2
-rw-r--r--src/mame/drivers/x07.c (renamed from src/mess/drivers/x07.c)2
-rw-r--r--src/mame/drivers/x1.c (renamed from src/mess/drivers/x1.c)6
-rw-r--r--src/mame/drivers/x1twin.c (renamed from src/mess/drivers/x1twin.c)2
-rw-r--r--src/mame/drivers/x68k.c (renamed from src/mess/drivers/x68k.c)10
-rw-r--r--src/mame/drivers/xain.c8
-rw-r--r--src/mame/drivers/xavix.c (renamed from src/mess/drivers/xavix.c)2
-rw-r--r--src/mame/drivers/xbox.c254
-rw-r--r--src/mame/drivers/xerox820.c (renamed from src/mess/drivers/xerox820.c)8
-rw-r--r--src/mame/drivers/xexex.c6
-rw-r--r--src/mame/drivers/xmen.c76
-rw-r--r--src/mame/drivers/xor100.c (renamed from src/mess/drivers/xor100.c)2
-rw-r--r--src/mame/drivers/xorworld.c9
-rw-r--r--src/mame/drivers/xtheball.c2
-rw-r--r--src/mame/drivers/xtom3d.c2
-rw-r--r--src/mame/drivers/xxmissio.c6
-rw-r--r--src/mame/drivers/xyonix.c8
-rw-r--r--src/mame/drivers/yiear.c4
-rw-r--r--src/mame/drivers/ymmu100.c (renamed from src/mess/drivers/ymmu100.c)4
-rw-r--r--src/mame/drivers/ymmu100.ppm (renamed from src/mess/drivers/ymmu100.ppm)bin578415 -> 578415 bytes-rw-r--r--src/mame/drivers/yunsun16.c40
-rw-r--r--src/mame/drivers/yunsung8.c10
-rw-r--r--src/mame/drivers/z100.c (renamed from src/mess/drivers/z100.c)2
-rw-r--r--src/mame/drivers/z1013.c (renamed from src/mess/drivers/z1013.c)6
-rw-r--r--src/mame/drivers/z80dev.c (renamed from src/mess/drivers/z80dev.c)2
-rw-r--r--src/mame/drivers/z80ne.c (renamed from src/mess/drivers/z80ne.c)8
-rw-r--r--src/mame/drivers/z88.c (renamed from src/mess/drivers/z88.c)22
-rw-r--r--src/mame/drivers/z9001.c (renamed from src/mess/drivers/z9001.c)12
-rw-r--r--src/mame/drivers/zac2650.c6
-rw-r--r--src/mame/drivers/zac_1.c22
-rw-r--r--src/mame/drivers/zac_2.c76
-rw-r--r--src/mame/drivers/zac_proto.c6
-rw-r--r--src/mame/drivers/zaccaria.c20
-rw-r--r--src/mame/drivers/zapcomputer.c175
-rw-r--r--src/mame/drivers/zaurus.c (renamed from src/mess/drivers/zaurus.c)12
-rw-r--r--src/mame/drivers/zaxxon.c24
-rw-r--r--src/mame/drivers/zerozone.c4
-rw-r--r--src/mame/drivers/zexall.c (renamed from src/mess/drivers/zexall.c)2
-rw-r--r--src/mame/drivers/zn.c210
-rw-r--r--src/mame/drivers/zodiack.c10
-rw-r--r--src/mame/drivers/zorba.c (renamed from src/mess/drivers/zorba.c)5
-rw-r--r--src/mame/drivers/zr107.c18
-rw-r--r--src/mame/drivers/zrt80.c (renamed from src/mess/drivers/zrt80.c)0
-rw-r--r--src/mame/drivers/zsbc3.c (renamed from src/mess/drivers/zsbc3.c)2
-rw-r--r--src/mame/drivers/zx.c (renamed from src/mess/drivers/zx.c)4
-rw-r--r--src/mame/etc/template_driver.c2
-rw-r--r--src/mame/includes/1942.h1
-rw-r--r--src/mame/includes/4enraya.h1
-rw-r--r--src/mame/includes/8080bw.h10
-rw-r--r--src/mame/includes/88games.h3
-rw-r--r--src/mame/includes/abc1600.h (renamed from src/mess/includes/abc1600.h)0
-rw-r--r--src/mame/includes/abc80.h (renamed from src/mess/includes/abc80.h)0
-rw-r--r--src/mame/includes/abc80x.h (renamed from src/mess/includes/abc80x.h)0
-rw-r--r--src/mame/includes/ac1.h (renamed from src/mess/includes/ac1.h)9
-rw-r--r--src/mame/includes/adam.h (renamed from src/mess/includes/adam.h)0
-rw-r--r--src/mame/includes/advision.h (renamed from src/mess/includes/advision.h)0
-rw-r--r--src/mame/includes/aerofgt.h1
-rw-r--r--src/mame/includes/aim65.h (renamed from src/mess/includes/aim65.h)0
-rw-r--r--src/mame/includes/ajax.h8
-rw-r--r--src/mame/includes/alesis.h (renamed from src/mess/includes/alesis.h)17
-rw-r--r--src/mame/includes/aliens.h12
-rw-r--r--src/mame/includes/amiga.h5
-rw-r--r--src/mame/includes/amspdwy.h1
-rw-r--r--src/mame/includes/amstrad.h (renamed from src/mess/includes/amstrad.h)3
-rw-r--r--src/mame/includes/apollo.h (renamed from src/mess/includes/apollo.h)0
-rw-r--r--src/mame/includes/apple1.h (renamed from src/mess/includes/apple1.h)0
-rw-r--r--src/mame/includes/apple2.h (renamed from src/mess/includes/apple2.h)0
-rw-r--r--src/mame/includes/apple2gs.h (renamed from src/mess/includes/apple2gs.h)0
-rw-r--r--src/mame/includes/apple3.h (renamed from src/mess/includes/apple3.h)0
-rw-r--r--src/mame/includes/aquarium.h1
-rw-r--r--src/mame/includes/aquarius.h (renamed from src/mess/includes/aquarius.h)0
-rw-r--r--src/mame/includes/arcadia.h (renamed from src/mess/includes/arcadia.h)0
-rw-r--r--src/mame/includes/armedf.h1
-rw-r--r--src/mame/includes/ashnojoe.h1
-rw-r--r--src/mame/includes/asterix.h3
-rw-r--r--src/mame/includes/astrocde.h41
-rw-r--r--src/mame/includes/asuka.h3
-rw-r--r--src/mame/includes/at.h (renamed from src/mess/includes/at.h)6
-rw-r--r--src/mame/includes/atarist.h (renamed from src/mess/includes/atarist.h)0
-rw-r--r--src/mame/includes/atarisy2.h4
-rw-r--r--src/mame/includes/atom.h (renamed from src/mess/includes/atom.h)6
-rw-r--r--src/mame/includes/aussiebyte.h126
-rw-r--r--src/mame/includes/avigo.h (renamed from src/mess/includes/avigo.h)0
-rw-r--r--src/mame/includes/b2m.h (renamed from src/mess/includes/b2m.h)0
-rw-r--r--src/mame/includes/banctec.h (renamed from src/mess/includes/banctec.h)0
-rw-r--r--src/mame/includes/battlnts.h1
-rw-r--r--src/mame/includes/bbc.h (renamed from src/mess/includes/bbc.h)58
-rw-r--r--src/mame/includes/bebox.h (renamed from src/mess/includes/bebox.h)11
-rw-r--r--src/mame/includes/bionicc.h4
-rw-r--r--src/mame/includes/bishi.h1
-rw-r--r--src/mame/includes/bk.h (renamed from src/mess/includes/bk.h)0
-rw-r--r--src/mame/includes/bladestl.h1
-rw-r--r--src/mame/includes/blktiger.h2
-rw-r--r--src/mame/includes/blockhl.h56
-rw-r--r--src/mame/includes/bogeyman.h2
-rw-r--r--src/mame/includes/bottom9.h6
-rw-r--r--src/mame/includes/btime.h3
-rw-r--r--src/mame/includes/bublbobl.h1
-rw-r--r--src/mame/includes/bullet.h (renamed from src/mess/includes/bullet.h)0
-rw-r--r--src/mame/includes/busicom.h (renamed from src/mess/includes/busicom.h)0
-rw-r--r--src/mame/includes/bw12.h (renamed from src/mess/includes/bw12.h)0
-rw-r--r--src/mame/includes/bw2.h (renamed from src/mess/includes/bw2.h)0
-rw-r--r--src/mame/includes/c128.h (renamed from src/mess/includes/c128.h)1
-rw-r--r--src/mame/includes/c64.h (renamed from src/mess/includes/c64.h)73
-rw-r--r--src/mame/includes/c65.h (renamed from src/mess/includes/c65.h)0
-rw-r--r--src/mame/includes/c80.h (renamed from src/mess/includes/c80.h)0
-rw-r--r--src/mame/includes/cbasebal.h1
-rw-r--r--src/mame/includes/cbm2.h (renamed from src/mess/includes/cbm2.h)0
-rw-r--r--src/mame/includes/cclimber.h2
-rw-r--r--src/mame/includes/cgc7900.h (renamed from src/mess/includes/cgc7900.h)0
-rw-r--r--src/mame/includes/channelf.h (renamed from src/mess/includes/channelf.h)0
-rw-r--r--src/mame/includes/chihiro.h29
-rw-r--r--src/mame/includes/chqflag.h6
-rw-r--r--src/mame/includes/citycon.h1
-rw-r--r--src/mame/includes/coco.h (renamed from src/mess/includes/coco.h)9
-rw-r--r--src/mame/includes/coco12.h (renamed from src/mess/includes/coco12.h)2
-rw-r--r--src/mame/includes/coco3.h (renamed from src/mess/includes/coco3.h)0
-rw-r--r--src/mame/includes/coleco.h (renamed from src/mess/includes/coleco.h)62
-rw-r--r--src/mame/includes/compis.h (renamed from src/mess/includes/compis.h)0
-rw-r--r--src/mame/includes/comquest.h (renamed from src/mess/includes/comquest.h)0
-rw-r--r--src/mame/includes/comx35.h (renamed from src/mess/includes/comx35.h)0
-rw-r--r--src/mame/includes/concept.h (renamed from src/mess/includes/concept.h)0
-rw-r--r--src/mame/includes/cosmicos.h (renamed from src/mess/includes/cosmicos.h)0
-rw-r--r--src/mame/includes/crimfght.h29
-rw-r--r--src/mame/includes/crospang.h1
-rw-r--r--src/mame/includes/crshrace.h2
-rw-r--r--src/mame/includes/crvision.h (renamed from src/mess/includes/crvision.h)0
-rw-r--r--src/mame/includes/cxhumax.h (renamed from src/mess/includes/cxhumax.h)0
-rw-r--r--src/mame/includes/cybiko.h (renamed from src/mess/includes/cybiko.h)16
-rw-r--r--src/mame/includes/dai.h (renamed from src/mess/includes/dai.h)0
-rw-r--r--src/mame/includes/dbz.h1
-rw-r--r--src/mame/includes/dccons.h (renamed from src/mess/includes/dccons.h)0
-rw-r--r--src/mame/includes/dec8.h2
-rw-r--r--src/mame/includes/deco32.h4
-rw-r--r--src/mame/includes/dgn_beta.h (renamed from src/mess/includes/dgn_beta.h)0
-rw-r--r--src/mame/includes/dgnalpha.h (renamed from src/mess/includes/dgnalpha.h)0
-rw-r--r--src/mame/includes/dietgo.h1
-rw-r--r--src/mame/includes/djmain.h5
-rw-r--r--src/mame/includes/dm7000.h (renamed from src/mess/includes/dm7000.h)0
-rw-r--r--src/mame/includes/dogfgt.h1
-rw-r--r--src/mame/includes/dragon.h (renamed from src/mess/includes/dragon.h)4
-rw-r--r--src/mame/includes/drgnmst.h1
-rw-r--r--src/mame/includes/dynduke.h5
-rw-r--r--src/mame/includes/ec184x.h (renamed from src/mess/includes/ec184x.h)0
-rw-r--r--src/mame/includes/einstein.h (renamed from src/mess/includes/einstein.h)0
-rw-r--r--src/mame/includes/electron.h (renamed from src/mess/includes/electron.h)0
-rw-r--r--src/mame/includes/elf.h (renamed from src/mess/includes/elf.h)0
-rw-r--r--src/mame/includes/ep64.h (renamed from src/mess/includes/ep64.h)0
-rw-r--r--src/mame/includes/esd16.h1
-rw-r--r--src/mame/includes/eti660.h (renamed from src/mess/includes/eti660.h)46
-rw-r--r--src/mame/includes/exp85.h (renamed from src/mess/includes/exp85.h)0
-rw-r--r--src/mame/includes/f1gp.h1
-rw-r--r--src/mame/includes/fantland.h1
-rw-r--r--src/mame/includes/fidelz80.h (renamed from src/mess/includes/fidelz80.h)0
-rw-r--r--src/mame/includes/fitfight.h1
-rw-r--r--src/mame/includes/flkatck.h1
-rw-r--r--src/mame/includes/flstory.h2
-rw-r--r--src/mame/includes/fm7.h (renamed from src/mess/includes/fm7.h)8
-rw-r--r--src/mame/includes/fmtowns.h (renamed from src/mess/includes/fmtowns.h)0
-rw-r--r--src/mame/includes/fromance.h1
-rw-r--r--src/mame/includes/funkyjet.h1
-rw-r--r--src/mame/includes/gaelco.h1
-rw-r--r--src/mame/includes/gaelco2.h62
-rw-r--r--src/mame/includes/galastrm.h32
-rw-r--r--src/mame/includes/galaxian.h7
-rw-r--r--src/mame/includes/galaxold.h7
-rw-r--r--src/mame/includes/galaxy.h (renamed from src/mess/includes/galaxy.h)0
-rw-r--r--src/mame/includes/galeb.h (renamed from src/mess/includes/galeb.h)0
-rw-r--r--src/mame/includes/galpanic.h4
-rw-r--r--src/mame/includes/gamate.h (renamed from src/mess/includes/gamate.h)0
-rw-r--r--src/mame/includes/gamecom.h (renamed from src/mess/includes/gamecom.h)0
-rw-r--r--src/mame/includes/gamepock.h (renamed from src/mess/includes/gamepock.h)0
-rw-r--r--src/mame/includes/gb.h (renamed from src/mess/includes/gb.h)0
-rw-r--r--src/mame/includes/gba.h (renamed from src/mess/includes/gba.h)0
-rw-r--r--src/mame/includes/gcpinbal.h1
-rw-r--r--src/mame/includes/genpc.h (renamed from src/mess/includes/genpc.h)0
-rw-r--r--src/mame/includes/gijoe.h1
-rw-r--r--src/mame/includes/ginganin.h1
-rw-r--r--src/mame/includes/glass.h1
-rw-r--r--src/mame/includes/gng.h2
-rw-r--r--src/mame/includes/goal92.h1
-rw-r--r--src/mame/includes/gotcha.h1
-rw-r--r--src/mame/includes/gp32.h (renamed from src/mess/includes/gp32.h)0
-rw-r--r--src/mame/includes/gradius3.h6
-rw-r--r--src/mame/includes/gumbo.h1
-rw-r--r--src/mame/includes/harddriv.h9
-rw-r--r--src/mame/includes/hec2hrp.h (renamed from src/mess/includes/hec2hrp.h)0
-rw-r--r--src/mame/includes/hh_tms1k.h (renamed from src/mess/includes/hh_tms1k.h)4
-rw-r--r--src/mame/includes/hh_ucom4.h (renamed from src/mess/includes/hh_ucom4.h)0
-rw-r--r--src/mame/includes/himesiki.h1
-rw-r--r--src/mame/includes/hng64.h163
-rw-r--r--src/mame/includes/hp48.h (renamed from src/mess/includes/hp48.h)0
-rw-r--r--src/mame/includes/huebler.h (renamed from src/mess/includes/huebler.h)0
-rw-r--r--src/mame/includes/hx20.h (renamed from src/mess/includes/hx20.h)0
-rw-r--r--src/mame/includes/imds2.h (renamed from src/mess/includes/imds2.h)5
-rw-r--r--src/mame/includes/intv.h (renamed from src/mess/includes/intv.h)0
-rw-r--r--src/mame/includes/inufuku.h1
-rw-r--r--src/mame/includes/itech8.h14
-rw-r--r--src/mame/includes/jack.h1
-rw-r--r--src/mame/includes/jupiter.h (renamed from src/mess/includes/jupiter.h)0
-rw-r--r--src/mame/includes/kangaroo.h4
-rw-r--r--src/mame/includes/kaypro.h (renamed from src/mess/includes/kaypro.h)0
-rw-r--r--src/mame/includes/kc.h (renamed from src/mess/includes/kc.h)0
-rw-r--r--src/mame/includes/kickgoal.h1
-rw-r--r--src/mame/includes/konamigx.h8
-rw-r--r--src/mame/includes/kramermc.h (renamed from src/mess/includes/kramermc.h)0
-rw-r--r--src/mame/includes/kyocera.h (renamed from src/mess/includes/kyocera.h)0
-rw-r--r--src/mame/includes/lc80.h (renamed from src/mess/includes/lc80.h)0
-rw-r--r--src/mame/includes/leland.h13
-rw-r--r--src/mame/includes/lethalj.h19
-rw-r--r--src/mame/includes/liberate.h3
-rw-r--r--src/mame/includes/lisa.h (renamed from src/mess/includes/lisa.h)0
-rw-r--r--src/mame/includes/lkage.h1
-rw-r--r--src/mame/includes/llc.h (renamed from src/mess/includes/llc.h)0
-rw-r--r--src/mame/includes/lviv.h (renamed from src/mess/includes/lviv.h)0
-rw-r--r--src/mame/includes/lwings.h5
-rw-r--r--src/mame/includes/lynx.h (renamed from src/mess/includes/lynx.h)0
-rw-r--r--src/mame/includes/m107.h7
-rw-r--r--src/mame/includes/m5.h (renamed from src/mess/includes/m5.h)0
-rw-r--r--src/mame/includes/m72.h58
-rw-r--r--src/mame/includes/m92.h9
-rw-r--r--src/mame/includes/mac.h (renamed from src/mess/includes/mac.h)0
-rw-r--r--src/mame/includes/macpci.h (renamed from src/mess/includes/macpci.h)0
-rw-r--r--src/mame/includes/macrossp.h15
-rw-r--r--src/mame/includes/madmotor.h1
-rw-r--r--src/mame/includes/mainevt.h15
-rw-r--r--src/mame/includes/mbc55x.h (renamed from src/mess/includes/mbc55x.h)0
-rw-r--r--src/mame/includes/mbee.h (renamed from src/mess/includes/mbee.h)0
-rw-r--r--src/mame/includes/mboard.h (renamed from src/mess/includes/mboard.h)21
-rw-r--r--src/mame/includes/mc1000.h (renamed from src/mess/includes/mc1000.h)0
-rw-r--r--src/mame/includes/mc1502.h (renamed from src/mess/includes/mc1502.h)0
-rw-r--r--src/mame/includes/mc80.h (renamed from src/mess/includes/mc80.h)0
-rw-r--r--src/mame/includes/mcatadv.h1
-rw-r--r--src/mame/includes/mcr68.h6
-rw-r--r--src/mame/includes/md_cons.h (renamed from src/mess/includes/md_cons.h)0
-rw-r--r--src/mame/includes/megadriv.h2
-rw-r--r--src/mame/includes/megasys1.h1
-rw-r--r--src/mame/includes/metlclsh.h2
-rw-r--r--src/mame/includes/micro3d.h41
-rw-r--r--src/mame/includes/micronic.h (renamed from src/mess/includes/micronic.h)0
-rw-r--r--src/mame/includes/microtan.h (renamed from src/mess/includes/microtan.h)0
-rw-r--r--src/mame/includes/midtunit.h3
-rw-r--r--src/mame/includes/midzeus.h2
-rw-r--r--src/mame/includes/mikro80.h (renamed from src/mess/includes/mikro80.h)0
-rw-r--r--src/mame/includes/mikromik.h (renamed from src/mess/includes/mikromik.h)0
-rw-r--r--src/mame/includes/model2.h181
-rw-r--r--src/mame/includes/model3.h14
-rw-r--r--src/mame/includes/momoko.h1
-rw-r--r--src/mame/includes/moo.h1
-rw-r--r--src/mame/includes/mpf1.h (renamed from src/mess/includes/mpf1.h)0
-rw-r--r--src/mame/includes/mpz80.h (renamed from src/mess/includes/mpz80.h)0
-rw-r--r--src/mame/includes/mrflea.h1
-rw-r--r--src/mame/includes/msbc1.h (renamed from src/mess/includes/msbc1.h)0
-rw-r--r--src/mame/includes/msx.h (renamed from src/mess/includes/msx.h)2
-rw-r--r--src/mame/includes/mtx.h (renamed from src/mess/includes/mtx.h)0
-rw-r--r--src/mame/includes/mz700.h (renamed from src/mess/includes/mz700.h)0
-rw-r--r--src/mame/includes/mz80.h (renamed from src/mess/includes/mz80.h)0
-rw-r--r--src/mame/includes/n64.h15
-rw-r--r--src/mame/includes/namcona1.h27
-rw-r--r--src/mame/includes/namcond1.h25
-rw-r--r--src/mame/includes/namcos1.h11
-rw-r--r--src/mame/includes/nbmj9195.h2
-rw-r--r--src/mame/includes/nc.h (renamed from src/mess/includes/nc.h)0
-rw-r--r--src/mame/includes/nes.h (renamed from src/mess/includes/nes.h)0
-rw-r--r--src/mame/includes/newbrain.h (renamed from src/mess/includes/newbrain.h)0
-rw-r--r--src/mame/includes/news.h1
-rw-r--r--src/mame/includes/next.h (renamed from src/mess/includes/next.h)0
-rw-r--r--src/mame/includes/nova2001.h1
-rw-r--r--src/mame/includes/ob68k1a.h (renamed from src/mess/includes/ob68k1a.h)0
-rw-r--r--src/mame/includes/ondra.h (renamed from src/mess/includes/ondra.h)0
-rw-r--r--src/mame/includes/orao.h (renamed from src/mess/includes/orao.h)19
-rw-r--r--src/mame/includes/orion.h (renamed from src/mess/includes/orion.h)0
-rw-r--r--src/mame/includes/osborne1.h (renamed from src/mess/includes/osborne1.h)0
-rw-r--r--src/mame/includes/osi.h (renamed from src/mess/includes/osi.h)0
-rw-r--r--src/mame/includes/overdriv.h3
-rw-r--r--src/mame/includes/p2000t.h (renamed from src/mess/includes/p2000t.h)0
-rw-r--r--src/mame/includes/partner.h (renamed from src/mess/includes/partner.h)0
-rw-r--r--src/mame/includes/pasopia.h (renamed from src/mess/includes/pasopia.h)0
-rw-r--r--src/mame/includes/pbaction.h1
-rw-r--r--src/mame/includes/pc1251.h (renamed from src/mess/includes/pc1251.h)0
-rw-r--r--src/mame/includes/pc1350.h (renamed from src/mess/includes/pc1350.h)0
-rw-r--r--src/mame/includes/pc1401.h (renamed from src/mess/includes/pc1401.h)0
-rw-r--r--src/mame/includes/pc1403.h (renamed from src/mess/includes/pc1403.h)0
-rw-r--r--src/mame/includes/pc1512.h (renamed from src/mess/includes/pc1512.h)0
-rw-r--r--src/mame/includes/pc4.h (renamed from src/mess/includes/pc4.h)0
-rw-r--r--src/mame/includes/pc8001.h (renamed from src/mess/includes/pc8001.h)0
-rw-r--r--src/mame/includes/pc8401a.h (renamed from src/mess/includes/pc8401a.h)0
-rw-r--r--src/mame/includes/pce.h (renamed from src/mess/includes/pce.h)10
-rw-r--r--src/mame/includes/pcktgal.h2
-rw-r--r--src/mame/includes/pcw.h (renamed from src/mess/includes/pcw.h)0
-rw-r--r--src/mame/includes/pcw16.h (renamed from src/mess/includes/pcw16.h)0
-rw-r--r--src/mame/includes/pdp1.h (renamed from src/mess/includes/pdp1.h)60
-rw-r--r--src/mame/includes/pecom.h (renamed from src/mess/includes/pecom.h)0
-rw-r--r--src/mame/includes/pes.h (renamed from src/mess/includes/pes.h)0
-rw-r--r--src/mame/includes/pet.h (renamed from src/mess/includes/pet.h)0
-rw-r--r--src/mame/includes/pgm.h4
-rw-r--r--src/mame/includes/phc25.h (renamed from src/mess/includes/phc25.h)0
-rw-r--r--src/mame/includes/phoenix.h1
-rw-r--r--src/mame/includes/pk8020.h (renamed from src/mess/includes/pk8020.h)0
-rw-r--r--src/mame/includes/pktgaldx.h2
-rw-r--r--src/mame/includes/plus4.h (renamed from src/mess/includes/plus4.h)0
-rw-r--r--src/mame/includes/plygonet.h5
-rw-r--r--src/mame/includes/pmd85.h (renamed from src/mess/includes/pmd85.h)7
-rw-r--r--src/mame/includes/pocketc.h (renamed from src/mess/includes/pocketc.h)0
-rw-r--r--src/mame/includes/poisk1.h (renamed from src/mess/includes/poisk1.h)0
-rw-r--r--src/mame/includes/poly88.h (renamed from src/mess/includes/poly88.h)0
-rw-r--r--src/mame/includes/poly880.h (renamed from src/mess/includes/poly880.h)0
-rw-r--r--src/mame/includes/portfoli.h (renamed from src/mess/includes/portfoli.h)0
-rw-r--r--src/mame/includes/pp01.h (renamed from src/mess/includes/pp01.h)0
-rw-r--r--src/mame/includes/primo.h (renamed from src/mess/includes/primo.h)0
-rw-r--r--src/mame/includes/prof180x.h (renamed from src/mess/includes/prof180x.h)0
-rw-r--r--src/mame/includes/prof80.h (renamed from src/mess/includes/prof80.h)0
-rw-r--r--src/mame/includes/psikyo.h1
-rw-r--r--src/mame/includes/psion.h (renamed from src/mess/includes/psion.h)0
-rw-r--r--src/mame/includes/px8.h (renamed from src/mess/includes/px8.h)0
-rw-r--r--src/mame/includes/ql.h (renamed from src/mess/includes/ql.h)0
-rw-r--r--src/mame/includes/radio86.h (renamed from src/mess/includes/radio86.h)0
-rw-r--r--src/mame/includes/rastan.h3
-rw-r--r--src/mame/includes/rbisland.h (renamed from src/mame/includes/rainbow.h)1
-rw-r--r--src/mame/includes/rm380z.h (renamed from src/mess/includes/rm380z.h)0
-rw-r--r--src/mame/includes/rmnimbus.h (renamed from src/mess/includes/rmnimbus.h)12
-rw-r--r--src/mame/includes/rockrage.h1
-rw-r--r--src/mame/includes/rocnrope.h26
-rw-r--r--src/mame/includes/rollerg.h5
-rw-r--r--src/mame/includes/route16.h9
-rw-r--r--src/mame/includes/sage2.h (renamed from src/mess/includes/sage2.h)0
-rw-r--r--src/mame/includes/samcoupe.h (renamed from src/mess/includes/samcoupe.h)59
-rw-r--r--src/mame/includes/scramble.h12
-rw-r--r--src/mame/includes/segas16b.h10
-rw-r--r--src/mame/includes/segaxbd.h165
-rw-r--r--src/mame/includes/senjyo.h16
-rw-r--r--src/mame/includes/seta.h1
-rw-r--r--src/mame/includes/sg1000.h (renamed from src/mess/includes/sg1000.h)0
-rw-r--r--src/mame/includes/shadfrce.h19
-rw-r--r--src/mame/includes/sms.h (renamed from src/mess/includes/sms.h)0
-rw-r--r--src/mame/includes/softbox.h (renamed from src/mess/includes/softbox.h)0
-rw-r--r--src/mame/includes/sorcerer.h (renamed from src/mess/includes/sorcerer.h)2
-rw-r--r--src/mame/includes/special.h (renamed from src/mess/includes/special.h)0
-rw-r--r--src/mame/includes/spectrum.h (renamed from src/mess/includes/spectrum.h)2
-rw-r--r--src/mame/includes/spiders.h9
-rw-r--r--src/mame/includes/spy.h5
-rw-r--r--src/mame/includes/ssystem3.h (renamed from src/mess/includes/ssystem3.h)30
-rw-r--r--src/mame/includes/suna16.h10
-rw-r--r--src/mame/includes/suna8.h11
-rw-r--r--src/mame/includes/supbtime.h1
-rw-r--r--src/mame/includes/super6.h (renamed from src/mess/includes/super6.h)0
-rw-r--r--src/mame/includes/super80.h (renamed from src/mess/includes/super80.h)0
-rw-r--r--src/mame/includes/superqix.h1
-rw-r--r--src/mame/includes/superslave.h (renamed from src/mess/includes/superslave.h)0
-rw-r--r--src/mame/includes/suprslam.h1
-rw-r--r--src/mame/includes/svi318.h (renamed from src/mess/includes/svi318.h)0
-rw-r--r--src/mame/includes/svision.h (renamed from src/mess/includes/svision.h)0
-rw-r--r--src/mame/includes/swtpc09.h (renamed from src/mess/includes/swtpc09.h)0
-rw-r--r--src/mame/includes/system1.h7
-rw-r--r--src/mame/includes/system16.h3
-rw-r--r--src/mame/includes/taito_b.h1
-rw-r--r--src/mame/includes/taito_f2.h2
-rw-r--r--src/mame/includes/taito_f3.h12
-rw-r--r--src/mame/includes/taito_o.h3
-rw-r--r--src/mame/includes/taitoair.h4
-rw-r--r--src/mame/includes/tandy2k.h (renamed from src/mess/includes/tandy2k.h)0
-rw-r--r--src/mame/includes/tank8.h59
-rw-r--r--src/mame/includes/tdv2324.h (renamed from src/mess/includes/tdv2324.h)0
-rw-r--r--src/mame/includes/tek405x.h (renamed from src/mess/includes/tek405x.h)0
-rw-r--r--src/mame/includes/thomson.h (renamed from src/mess/includes/thomson.h)52
-rw-r--r--src/mame/includes/ti85.h (renamed from src/mess/includes/ti85.h)0
-rw-r--r--src/mame/includes/ti89.h (renamed from src/mess/includes/ti89.h)0
-rw-r--r--src/mame/includes/tiki100.h (renamed from src/mess/includes/tiki100.h)68
-rw-r--r--src/mame/includes/tmc1800.h (renamed from src/mess/includes/tmc1800.h)0
-rw-r--r--src/mame/includes/tmc2000e.h (renamed from src/mess/includes/tmc2000e.h)0
-rw-r--r--src/mame/includes/tmc600.h (renamed from src/mess/includes/tmc600.h)0
-rw-r--r--src/mame/includes/tnzs.h24
-rw-r--r--src/mame/includes/trackfld.h1
-rw-r--r--src/mame/includes/trs80.h (renamed from src/mess/includes/trs80.h)0
-rw-r--r--src/mame/includes/trs80m2.h (renamed from src/mess/includes/trs80m2.h)0
-rw-r--r--src/mame/includes/tsispch.h (renamed from src/mess/includes/tsispch.h)0
-rw-r--r--src/mame/includes/tumbleb.h1
-rw-r--r--src/mame/includes/tumblep.h1
-rw-r--r--src/mame/includes/tutankhm.h7
-rw-r--r--src/mame/includes/tx0.h (renamed from src/mess/includes/tx0.h)12
-rw-r--r--src/mame/includes/ultraman.h7
-rw-r--r--src/mame/includes/ut88.h (renamed from src/mess/includes/ut88.h)0
-rw-r--r--src/mame/includes/v1050.h (renamed from src/mess/includes/v1050.h)0
-rw-r--r--src/mame/includes/vc4000.h (renamed from src/mess/includes/vc4000.h)7
-rw-r--r--src/mame/includes/vcs80.h (renamed from src/mess/includes/vcs80.h)0
-rw-r--r--src/mame/includes/vector06.h (renamed from src/mess/includes/vector06.h)70
-rw-r--r--src/mame/includes/vic10.h (renamed from src/mess/includes/vic10.h)0
-rw-r--r--src/mame/includes/vic20.h (renamed from src/mess/includes/vic20.h)0
-rw-r--r--src/mame/includes/vicdual.h17
-rw-r--r--src/mame/includes/victor9k.h (renamed from src/mess/includes/victor9k.h)0
-rw-r--r--src/mame/includes/vidbrain.h (renamed from src/mess/includes/vidbrain.h)0
-rw-r--r--src/mame/includes/vip.h (renamed from src/mess/includes/vip.h)0
-rw-r--r--src/mame/includes/vixen.h (renamed from src/mess/includes/vixen.h)0
-rw-r--r--src/mame/includes/volfied.h1
-rw-r--r--src/mame/includes/vtech2.h (renamed from src/mess/includes/vtech2.h)0
-rw-r--r--src/mame/includes/wangpc.h (renamed from src/mess/includes/wangpc.h)0
-rw-r--r--src/mame/includes/warpwarp.h19
-rw-r--r--src/mame/includes/wgp.h11
-rw-r--r--src/mame/includes/wswan.h (renamed from src/mess/includes/wswan.h)0
-rw-r--r--src/mame/includes/x07.h (renamed from src/mess/includes/x07.h)0
-rw-r--r--src/mame/includes/x1.h (renamed from src/mess/includes/x1.h)0
-rw-r--r--src/mame/includes/x68k.h (renamed from src/mess/includes/x68k.h)0
-rw-r--r--src/mame/includes/xbox.h321
-rw-r--r--src/mame/includes/xerox820.h (renamed from src/mess/includes/xerox820.h)0
-rw-r--r--src/mame/includes/xexex.h1
-rw-r--r--src/mame/includes/xmen.h10
-rw-r--r--src/mame/includes/xor100.h (renamed from src/mess/includes/xor100.h)0
-rw-r--r--src/mame/includes/xxmissio.h2
-rw-r--r--src/mame/includes/z80ne.h (renamed from src/mess/includes/z80ne.h)0
-rw-r--r--src/mame/includes/z88.h (renamed from src/mess/includes/z88.h)0
-rw-r--r--src/mame/includes/zx.h (renamed from src/mess/includes/zx.h)0
-rw-r--r--src/mame/layout/4004clk.lay47
-rw-r--r--src/mame/layout/abc1600.lay (renamed from src/mess/layout/abc1600.lay)0
-rw-r--r--src/mame/layout/acrnsys1.lay (renamed from src/mess/layout/acrnsys1.lay)0
-rw-r--r--src/mame/layout/aim65.lay135
-rw-r--r--src/mame/layout/aim65_40.lay (renamed from src/mess/layout/aim65_40.lay)0
-rw-r--r--src/mame/layout/amaztron.lay (renamed from src/mess/layout/amaztron.lay)0
-rw-r--r--src/mame/layout/amico2k.lay (renamed from src/mess/layout/amico2k.lay)0
-rw-r--r--src/mame/layout/amiga.lay (renamed from src/mess/layout/amiga.lay)0
-rw-r--r--src/mame/layout/apollo.lay (renamed from src/mess/layout/apollo.lay)0
-rw-r--r--src/mame/layout/apollo_15i.lay (renamed from src/mess/layout/apollo_15i.lay)0
-rw-r--r--src/mame/layout/apollo_dsp.lay (renamed from src/mess/layout/apollo_dsp.lay)0
-rw-r--r--src/mame/layout/apricotp.lay (renamed from src/mess/layout/apricotp.lay)0
-rw-r--r--src/mame/layout/aquastge.lay15
-rw-r--r--src/mame/layout/astro.lay (renamed from src/mess/layout/astro.lay)0
-rw-r--r--src/mame/layout/avigo.lay (renamed from src/mess/layout/avigo.lay)0
-rw-r--r--src/mame/layout/babbage.lay (renamed from src/mess/layout/babbage.lay)0
-rw-r--r--src/mame/layout/bankshot.lay (renamed from src/mess/layout/bankshot.lay)0
-rw-r--r--src/mame/layout/bbc.lay (renamed from src/mess/layout/bbc.lay)0
-rw-r--r--src/mame/layout/beta.lay (renamed from src/mess/layout/beta.lay)0
-rw-r--r--src/mame/layout/bigtrak.lay (renamed from src/mess/layout/bigtrak.lay)0
-rw-r--r--src/mame/layout/bitgrpha.lay (renamed from src/mess/layout/bitgrpha.lay)0
-rw-r--r--src/mame/layout/bitgrphb.lay (renamed from src/mess/layout/bitgrphb.lay)0
-rw-r--r--src/mame/layout/bob85.lay (renamed from src/mess/layout/bob85.lay)0
-rw-r--r--src/mame/layout/borisdpl.lay (renamed from src/mess/layout/borisdpl.lay)0
-rw-r--r--src/mame/layout/bridgec3.lay (renamed from src/mess/layout/bridgec3.lay)0
-rw-r--r--src/mame/layout/c80.lay (renamed from src/mess/layout/c80.lay)0
-rw-r--r--src/mame/layout/cc40.lay (renamed from src/mess/layout/cc40.lay)0
-rw-r--r--src/mame/layout/chessmst.lay (renamed from src/mess/layout/chessmst.lay)0
-rw-r--r--src/mame/layout/chesstrv.lay (renamed from src/mess/layout/chesstrv.lay)0
-rw-r--r--src/mame/layout/chexx.lay75
-rw-r--r--src/mame/layout/cmezspin.lay262
-rw-r--r--src/mame/layout/cnsector.lay (renamed from src/mess/layout/cnsector.lay)0
-rw-r--r--src/mame/layout/coco3.lay (renamed from src/mess/layout/coco3.lay)0
-rw-r--r--src/mame/layout/comp4.lay (renamed from src/mess/layout/comp4.lay)0
-rw-r--r--src/mame/layout/cosmicos.lay (renamed from src/mess/layout/cosmicos.lay)0
-rw-r--r--src/mame/layout/cp1.lay (renamed from src/mess/layout/cp1.lay)0
-rw-r--r--src/mame/layout/cvicny.lay (renamed from src/mess/layout/cvicny.lay)0
-rw-r--r--src/mame/layout/dataman.lay78
-rw-r--r--src/mame/layout/digel804.lay (renamed from src/mess/layout/digel804.lay)0
-rw-r--r--src/mame/layout/dmv.lay (renamed from src/mess/layout/dmv.lay)0
-rw-r--r--src/mame/layout/dolphunk.lay (renamed from src/mess/layout/dolphunk.lay)0
-rw-r--r--src/mame/layout/eacc.lay (renamed from src/mess/layout/eacc.lay)0
-rw-r--r--src/mame/layout/ebaskb2.lay (renamed from src/mess/layout/ebaskb2.lay)0
-rw-r--r--src/mame/layout/ebball.lay (renamed from src/mess/layout/ebball.lay)0
-rw-r--r--src/mame/layout/ebball2.lay (renamed from src/mess/layout/ebball2.lay)0
-rw-r--r--src/mame/layout/ebball3.lay (renamed from src/mess/layout/ebball3.lay)0
-rw-r--r--src/mame/layout/efball.lay (renamed from src/mess/layout/efball.lay)0
-rw-r--r--src/mame/layout/efootb4.lay (renamed from src/mess/layout/efootb4.lay)0
-rw-r--r--src/mame/layout/einvader.lay (renamed from src/mess/layout/einvader.lay)0
-rw-r--r--src/mame/layout/einvaderc.lay (renamed from src/mess/layout/einvaderc.lay)0
-rw-r--r--src/mame/layout/elecbowl.lay (renamed from src/mess/layout/elecbowl.lay)0
-rw-r--r--src/mame/layout/elecdet.lay (renamed from src/mess/layout/elecdet.lay)0
-rw-r--r--src/mame/layout/elekscmp.lay (renamed from src/mess/layout/elekscmp.lay)0
-rw-r--r--src/mame/layout/elf2.lay (renamed from src/mess/layout/elf2.lay)0
-rw-r--r--src/mame/layout/esq1by22.lay (renamed from src/mess/layout/esq1by22.lay)0
-rw-r--r--src/mame/layout/esq2by40.lay (renamed from src/mess/layout/esq2by40.lay)0
-rw-r--r--src/mame/layout/et3400.lay (renamed from src/mess/layout/et3400.lay)0
-rw-r--r--src/mame/layout/fb01.lay (renamed from src/mess/layout/fb01.lay)0
-rw-r--r--src/mame/layout/fccpu1.lay17
-rw-r--r--src/mame/layout/fidelz80.lay (renamed from src/mess/layout/fidelz80.lay)0
-rw-r--r--src/mame/layout/funjacks.lay (renamed from src/mess/layout/funjacks.lay)0
-rw-r--r--src/mame/layout/funrlgl.lay (renamed from src/mess/layout/funrlgl.lay)0
-rw-r--r--src/mame/layout/gamecom.lay (renamed from src/mess/layout/gamecom.lay)0
-rw-r--r--src/mame/layout/gjackpot.lay (renamed from src/mess/layout/gjackpot.lay)0
-rw-r--r--src/mame/layout/gl3000s.lay (renamed from src/mess/layout/gl3000s.lay)0
-rw-r--r--src/mame/layout/glasgow.lay (renamed from src/mess/layout/glasgow.lay)0
-rw-r--r--src/mame/layout/gpoker.lay (renamed from src/mess/layout/gpoker.lay)0
-rw-r--r--src/mame/layout/h2hbaseb.lay (renamed from src/mess/layout/h2hbaseb.lay)0
-rw-r--r--src/mame/layout/h2hfootb.lay (renamed from src/mess/layout/h2hfootb.lay)0
-rw-r--r--src/mame/layout/h8.lay (renamed from src/mess/layout/h8.lay)0
-rw-r--r--src/mame/layout/hh_hmcs40_test.lay (renamed from src/mess/layout/hh_hmcs40_test.lay)0
-rw-r--r--src/mame/layout/hh_melps4_test.lay (renamed from src/mess/layout/hh_melps4_test.lay)0
-rw-r--r--src/mame/layout/hh_sm510_test.lay (renamed from src/mess/layout/hh_sm510_test.lay)0
-rw-r--r--src/mame/layout/hh_tms1k_test.lay (renamed from src/mess/layout/hh_tms1k_test.lay)0
-rw-r--r--src/mame/layout/hh_ucom4_test.lay (renamed from src/mess/layout/hh_ucom4_test.lay)0
-rw-r--r--src/mame/layout/ie15.lay (renamed from src/mess/layout/ie15.lay)0
-rw-r--r--src/mame/layout/instruct.lay (renamed from src/mess/layout/instruct.lay)0
-rw-r--r--src/mame/layout/junior.lay (renamed from src/mess/layout/junior.lay)0
-rw-r--r--src/mame/layout/k1003.lay (renamed from src/mess/layout/k1003.lay)0
-rw-r--r--src/mame/layout/kim1.lay (renamed from src/mess/layout/kim1.lay)0
-rw-r--r--src/mame/layout/lantutor.lay (renamed from src/mess/layout/lantutor.lay)2
-rw-r--r--src/mame/layout/lc80.lay (renamed from src/mess/layout/lc80.lay)0
-rw-r--r--src/mame/layout/lightfgt.lay (renamed from src/mess/layout/lightfgt.lay)0
-rw-r--r--src/mame/layout/llc1.lay (renamed from src/mess/layout/llc1.lay)0
-rw-r--r--src/mame/layout/lynx.lay (renamed from src/mess/layout/lynx.lay)0
-rw-r--r--src/mame/layout/mac.lay (renamed from src/mess/layout/mac.lay)0
-rw-r--r--src/mame/layout/maniac.lay (renamed from src/mess/layout/maniac.lay)0
-rw-r--r--src/mame/layout/mathmagi.lay (renamed from src/mess/layout/mathmagi.lay)0
-rw-r--r--src/mame/layout/mbdtower.lay (renamed from src/mess/layout/mbdtower.lay)0
-rw-r--r--src/mame/layout/megacd.lay (renamed from src/mess/layout/megacd.lay)0
-rw-r--r--src/mame/layout/mekd2.lay (renamed from src/mess/layout/mekd2.lay)0
-rw-r--r--src/mame/layout/mephisto.lay (renamed from src/mess/layout/mephisto.lay)0
-rw-r--r--src/mame/layout/merlin.lay (renamed from src/mess/layout/merlin.lay)0
-rw-r--r--src/mame/layout/minicom.lay (renamed from src/mess/layout/minicom.lay)0
-rw-r--r--src/mame/layout/mirage.lay (renamed from src/mess/layout/mirage.lay)0
-rw-r--r--src/mame/layout/mk1.lay (renamed from src/mess/layout/mk1.lay)0
-rw-r--r--src/mame/layout/mk14.lay (renamed from src/mess/layout/mk14.lay)0
-rw-r--r--src/mame/layout/mk2.lay (renamed from src/mess/layout/mk2.lay)0
-rw-r--r--src/mame/layout/mkit09.lay (renamed from src/mess/layout/mkit09.lay)0
-rw-r--r--src/mame/layout/mmd1.lay (renamed from src/mess/layout/mmd1.lay)0
-rw-r--r--src/mame/layout/mmd2.lay (renamed from src/mess/layout/mmd2.lay)0
-rw-r--r--src/mame/layout/mmerlin.lay (renamed from src/mess/layout/mmerlin.lay)0
-rw-r--r--src/mame/layout/monzagp.lay106
-rw-r--r--src/mame/layout/mpf1.lay (renamed from src/mess/layout/mpf1.lay)0
-rw-r--r--src/mame/layout/mpf1b.lay (renamed from src/mess/layout/mpf1b.lay)0
-rw-r--r--src/mame/layout/mpf1p.lay (renamed from src/mess/layout/mpf1p.lay)0
-rw-r--r--src/mame/layout/mvbfree.lay (renamed from src/mess/layout/mvbfree.lay)0
-rw-r--r--src/mame/layout/newbrain.lay (renamed from src/mess/layout/newbrain.lay)0
-rw-r--r--src/mame/layout/pairmtch.lay201
-rw-r--r--src/mame/layout/pc1500.lay (renamed from src/mess/layout/pc1500.lay)0
-rw-r--r--src/mame/layout/pc8500.lay (renamed from src/mess/layout/pc8500.lay)0
-rw-r--r--src/mame/layout/pcw.lay (renamed from src/mess/layout/pcw.lay)0
-rw-r--r--src/mame/layout/piggypas.lay27
-rw-r--r--src/mame/layout/pmi80.lay (renamed from src/mess/layout/pmi80.lay)0
-rw-r--r--src/mame/layout/poly880.lay (renamed from src/mess/layout/poly880.lay)0
-rw-r--r--src/mame/layout/pro80.lay (renamed from src/mess/layout/pro80.lay)0
-rw-r--r--src/mame/layout/pve500.lay (renamed from src/mess/layout/pve500.lay)0
-rw-r--r--src/mame/layout/px4.lay (renamed from src/mess/layout/px4.lay)0
-rw-r--r--src/mame/layout/px8.lay (renamed from src/mess/layout/px8.lay)0
-rw-r--r--src/mame/layout/rainbow.lay (renamed from src/mess/layout/rainbow.lay)0
-rw-r--r--src/mame/layout/ravens.lay (renamed from src/mess/layout/ravens.lay)0
-rw-r--r--src/mame/layout/savia84.lay (renamed from src/mess/layout/savia84.lay)0
-rw-r--r--src/mame/layout/sc1.lay (renamed from src/mess/layout/sc1.lay)0
-rw-r--r--src/mame/layout/sc2.lay (renamed from src/mess/layout/sc2.lay)0
-rw-r--r--src/mame/layout/sdk85.lay (renamed from src/mess/layout/sdk85.lay)0
-rw-r--r--src/mame/layout/sdk86.lay (renamed from src/mess/layout/sdk86.lay)0
-rw-r--r--src/mame/layout/selz80.lay (renamed from src/mess/layout/selz80.lay)0
-rw-r--r--src/mame/layout/simon.lay (renamed from src/mess/layout/simon.lay)0
-rw-r--r--src/mame/layout/sitcom.lay (renamed from src/mess/layout/sitcom.lay)0
-rw-r--r--src/mame/layout/slc1.lay (renamed from src/mess/layout/slc1.lay)0
-rw-r--r--src/mame/layout/sms1.lay (renamed from src/mess/layout/sms1.lay)0
-rw-r--r--src/mame/layout/snmath.lay68
-rw-r--r--src/mame/layout/snspell.lay (renamed from src/mess/layout/snspell.lay)8
-rw-r--r--src/mame/layout/splitsec.lay (renamed from src/mess/layout/splitsec.lay)0
-rw-r--r--src/mame/layout/sr16.lay (renamed from src/mess/layout/sr16.lay)0
-rw-r--r--src/mame/layout/ssimon.lay (renamed from src/mess/layout/ssimon.lay)0
-rw-r--r--src/mame/layout/starwbc.lay (renamed from src/mess/layout/starwbc.lay)0
-rw-r--r--src/mame/layout/stopthie.lay (renamed from src/mess/layout/stopthie.lay)0
-rw-r--r--src/mame/layout/super80.lay (renamed from src/mess/layout/super80.lay)0
-rw-r--r--src/mame/layout/svision.lay (renamed from src/mess/layout/svision.lay)0
-rw-r--r--src/mame/layout/svmu.lay (renamed from src/mess/layout/svmu.lay)0
-rw-r--r--src/mame/layout/sym1.lay (renamed from src/mess/layout/sym1.lay)0
-rw-r--r--src/mame/layout/tactix.lay150
-rw-r--r--src/mame/layout/tama.lay (renamed from src/mess/layout/tama.lay)0
-rw-r--r--src/mame/layout/tandy12.lay (renamed from src/mess/layout/tandy12.lay)0
-rw-r--r--src/mame/layout/tavernie.lay (renamed from src/mess/layout/tavernie.lay)0
-rw-r--r--src/mame/layout/tb303.lay45
-rw-r--r--src/mame/layout/tbreakup.lay (renamed from src/mess/layout/tbreakup.lay)0
-rw-r--r--src/mame/layout/tc4.lay (renamed from src/mess/layout/tc4.lay)0
-rw-r--r--src/mame/layout/tec1.lay (renamed from src/mess/layout/tec1.lay)0
-rw-r--r--src/mame/layout/tecnbras.lay (renamed from src/mess/layout/tecnbras.lay)0
-rw-r--r--src/mame/layout/ti1270.lay (renamed from src/mess/layout/ti1270.lay)0
-rw-r--r--src/mame/layout/ti30.lay (renamed from src/mess/layout/ti30.lay)0
-rw-r--r--src/mame/layout/ti74.lay (renamed from src/mess/layout/ti74.lay)0
-rw-r--r--src/mame/layout/ti95.lay (renamed from src/mess/layout/ti95.lay)0
-rw-r--r--src/mame/layout/tisr16.lay (renamed from src/mess/layout/tisr16.lay)0
-rw-r--r--src/mame/layout/tk80.lay (renamed from src/mess/layout/tk80.lay)0
-rw-r--r--src/mame/layout/tm990189.lay (renamed from src/mess/layout/tm990189.lay)0
-rw-r--r--src/mame/layout/tm990189v.lay (renamed from src/mess/layout/tm990189v.lay)0
-rw-r--r--src/mame/layout/tntell.lay101
-rw-r--r--src/mame/layout/unixpc.lay (renamed from src/mess/layout/unixpc.lay)0
-rw-r--r--src/mame/layout/ut88mini.lay (renamed from src/mess/layout/ut88mini.lay)0
-rw-r--r--src/mame/layout/vboy.lay (renamed from src/mess/layout/vboy.lay)0
-rw-r--r--src/mame/layout/vcs80.lay (renamed from src/mess/layout/vcs80.lay)0
-rw-r--r--src/mame/layout/vidbrain.lay (renamed from src/mess/layout/vidbrain.lay)0
-rw-r--r--src/mame/layout/vk100.lay (renamed from src/mess/layout/vk100.lay)0
-rw-r--r--src/mame/layout/votrpss.lay (renamed from src/mess/layout/votrpss.lay)0
-rw-r--r--src/mame/layout/votrtnt.lay (renamed from src/mess/layout/votrtnt.lay)0
-rw-r--r--src/mame/layout/vsc.lay (renamed from src/mess/layout/vsc.lay)0
-rw-r--r--src/mame/layout/vt100.lay (renamed from src/mess/layout/vt100.lay)0
-rw-r--r--src/mame/layout/wicat.lay (renamed from src/mess/layout/wicat.lay)0
-rw-r--r--src/mame/layout/wildfire.lay (renamed from src/mess/layout/wildfire.lay)0
-rw-r--r--src/mame/layout/wizatron.lay (renamed from src/mess/layout/wizatron.lay)0
-rw-r--r--src/mame/layout/wswan.lay (renamed from src/mess/layout/wswan.lay)0
-rw-r--r--src/mame/layout/x68000.lay (renamed from src/mess/layout/x68000.lay)0
-rw-r--r--src/mame/layout/z80dev.lay (renamed from src/mess/layout/z80dev.lay)0
-rw-r--r--src/mame/layout/z80ne.lay (renamed from src/mess/layout/z80ne.lay)0
-rw-r--r--src/mame/layout/z80net.lay (renamed from src/mess/layout/z80net.lay)0
-rw-r--r--src/mame/layout/z80netb.lay (renamed from src/mess/layout/z80netb.lay)0
-rw-r--r--src/mame/layout/z80netf.lay (renamed from src/mess/layout/z80netf.lay)0
-rw-r--r--src/mame/layout/zapcomputer.lay44
-rw-r--r--src/mame/machine/6883sam.c (renamed from src/mess/machine/6883sam.c)0
-rw-r--r--src/mame/machine/6883sam.h (renamed from src/mess/machine/6883sam.h)0
-rw-r--r--src/mame/machine/abc1600mac.c (renamed from src/mess/machine/abc1600mac.c)0
-rw-r--r--src/mame/machine/abc1600mac.h (renamed from src/mess/machine/abc1600mac.h)0
-rw-r--r--src/mame/machine/abc80kb.c (renamed from src/mess/machine/abc80kb.c)0
-rw-r--r--src/mame/machine/abc80kb.h (renamed from src/mess/machine/abc80kb.h)0
-rw-r--r--src/mame/machine/ac1.c (renamed from src/mess/machine/ac1.c)14
-rw-r--r--src/mame/machine/advision.c (renamed from src/mess/machine/advision.c)0
-rw-r--r--src/mame/machine/aim65.c (renamed from src/mess/machine/aim65.c)0
-rw-r--r--src/mame/machine/ajax.c6
-rw-r--r--src/mame/machine/amiga.c62
-rw-r--r--src/mame/machine/amigakbd.c (renamed from src/mess/machine/amigakbd.c)0
-rw-r--r--src/mame/machine/amigakbd.h (renamed from src/mess/machine/amigakbd.h)0
-rw-r--r--src/mame/machine/amstrad.c (renamed from src/mess/machine/amstrad.c)26
-rw-r--r--src/mame/machine/apollo.c (renamed from src/mess/machine/apollo.c)0
-rw-r--r--src/mame/machine/apollo_dbg.c (renamed from src/mess/machine/apollo_dbg.c)0
-rw-r--r--src/mame/machine/apollo_kbd.c (renamed from src/mess/machine/apollo_kbd.c)0
-rw-r--r--src/mame/machine/apollo_kbd.h (renamed from src/mess/machine/apollo_kbd.h)0
-rw-r--r--src/mame/machine/appldriv.c (renamed from src/mess/machine/appldriv.c)0
-rw-r--r--src/mame/machine/appldriv.h (renamed from src/mess/machine/appldriv.h)0
-rw-r--r--src/mame/machine/apple1.c (renamed from src/mess/machine/apple1.c)0
-rw-r--r--src/mame/machine/apple2.c (renamed from src/mess/machine/apple2.c)0
-rw-r--r--src/mame/machine/apple2gs.c (renamed from src/mess/machine/apple2gs.c)2
-rw-r--r--src/mame/machine/apple3.c (renamed from src/mess/machine/apple3.c)0
-rw-r--r--src/mame/machine/applefdc.c (renamed from src/mess/machine/applefdc.c)0
-rw-r--r--src/mame/machine/applefdc.h (renamed from src/mess/machine/applefdc.h)0
-rw-r--r--src/mame/machine/apricotkb.c (renamed from src/mess/machine/apricotkb.c)0
-rw-r--r--src/mame/machine/apricotkb.h (renamed from src/mess/machine/apricotkb.h)0
-rw-r--r--src/mame/machine/apricotkb_hle.c (renamed from src/mess/machine/apricotkb_hle.c)0
-rw-r--r--src/mame/machine/apricotkb_hle.h (renamed from src/mess/machine/apricotkb_hle.h)0
-rw-r--r--src/mame/machine/at.c (renamed from src/mess/machine/at.c)17
-rw-r--r--src/mame/machine/atari.c12
-rw-r--r--src/mame/machine/atari_vg.c117
-rw-r--r--src/mame/machine/atari_vg.h7
-rw-r--r--src/mame/machine/atarifdc.c (renamed from src/mess/machine/atarifdc.c)0
-rw-r--r--src/mame/machine/atarifdc.h (renamed from src/mess/machine/atarifdc.h)0
-rw-r--r--src/mame/machine/awboard.c10
-rw-r--r--src/mame/machine/b2m.c (renamed from src/mess/machine/b2m.c)0
-rw-r--r--src/mame/machine/bbc.c (renamed from src/mess/machine/bbc.c)701
-rw-r--r--src/mame/machine/bebox.c (renamed from src/mess/machine/bebox.c)37
-rw-r--r--src/mame/machine/beta.c (renamed from src/mess/machine/beta.c)0
-rw-r--r--src/mame/machine/beta.h (renamed from src/mess/machine/beta.h)0
-rw-r--r--src/mame/machine/bk.c (renamed from src/mess/machine/bk.c)0
-rw-r--r--src/mame/machine/c65_old.c (renamed from src/mess/machine/c65_old.c)0
-rw-r--r--src/mame/machine/cbm_snqk.c (renamed from src/mess/machine/cbm_snqk.c)0
-rw-r--r--src/mame/machine/cbm_snqk.h (renamed from src/mess/machine/cbm_snqk.h)0
-rw-r--r--src/mame/machine/cdi070.c2
-rw-r--r--src/mame/machine/cdi070.h2
-rw-r--r--src/mame/machine/cdicdic.c2
-rw-r--r--src/mame/machine/cdicdic.h2
-rw-r--r--src/mame/machine/cdislave.c2
-rw-r--r--src/mame/machine/cdislave.h2
-rw-r--r--src/mame/machine/coco.c (renamed from src/mess/machine/coco.c)54
-rw-r--r--src/mame/machine/coco12.c (renamed from src/mess/machine/coco12.c)5
-rw-r--r--src/mame/machine/coco3.c (renamed from src/mess/machine/coco3.c)0
-rw-r--r--src/mame/machine/coco_vhd.c (renamed from src/mess/machine/coco_vhd.c)0
-rw-r--r--src/mame/machine/coco_vhd.h (renamed from src/mess/machine/coco_vhd.h)0
-rw-r--r--src/mame/machine/coleco.c (renamed from src/mess/machine/coleco.c)92
-rw-r--r--src/mame/machine/coleco.h (renamed from src/mess/machine/coleco.h)3
-rw-r--r--src/mame/machine/compiskb.c (renamed from src/mess/machine/compiskb.c)0
-rw-r--r--src/mame/machine/compiskb.h (renamed from src/mess/machine/compiskb.h)0
-rw-r--r--src/mame/machine/concept.c (renamed from src/mess/machine/concept.c)0
-rw-r--r--src/mame/machine/cuda.c (renamed from src/mess/machine/cuda.c)0
-rw-r--r--src/mame/machine/cuda.h (renamed from src/mess/machine/cuda.h)0
-rw-r--r--src/mame/machine/cx4data.inc (renamed from src/mess/machine/cx4data.inc)0
-rw-r--r--src/mame/machine/cx4fn.inc (renamed from src/mess/machine/cx4fn.inc)0
-rw-r--r--src/mame/machine/cx4oam.inc (renamed from src/mess/machine/cx4oam.inc)0
-rw-r--r--src/mame/machine/cx4ops.inc (renamed from src/mess/machine/cx4ops.inc)0
-rw-r--r--src/mame/machine/cybiko.c (renamed from src/mess/machine/cybiko.c)5
-rw-r--r--src/mame/machine/dai.c (renamed from src/mess/machine/dai.c)0
-rw-r--r--src/mame/machine/dc-ctrl.c42
-rw-r--r--src/mame/machine/dc-ctrl.h6
-rw-r--r--src/mame/machine/dc.c10
-rw-r--r--src/mame/machine/dccons.c (renamed from src/mess/machine/dccons.c)25
-rw-r--r--src/mame/machine/dec_lk201.c (renamed from src/mess/machine/dec_lk201.c)0
-rw-r--r--src/mame/machine/dec_lk201.h (renamed from src/mess/machine/dec_lk201.h)0
-rw-r--r--src/mame/machine/deco146.c2
-rw-r--r--src/mame/machine/dgn_beta.c (renamed from src/mess/machine/dgn_beta.c)0
-rw-r--r--src/mame/machine/dgnalpha.c (renamed from src/mess/machine/dgnalpha.c)0
-rw-r--r--src/mame/machine/dmv_keyb.c (renamed from src/mess/machine/dmv_keyb.c)0
-rw-r--r--src/mame/machine/dmv_keyb.h (renamed from src/mess/machine/dmv_keyb.h)0
-rw-r--r--src/mame/machine/docg3.c (renamed from src/mess/machine/docg3.c)0
-rw-r--r--src/mame/machine/docg3.h (renamed from src/mess/machine/docg3.h)0
-rw-r--r--src/mame/machine/dragon.c (renamed from src/mess/machine/dragon.c)12
-rw-r--r--src/mame/machine/egret.c (renamed from src/mess/machine/egret.c)0
-rw-r--r--src/mame/machine/egret.h (renamed from src/mess/machine/egret.h)0
-rw-r--r--src/mame/machine/einstein.c (renamed from src/mess/machine/einstein.c)0
-rw-r--r--src/mame/machine/electron.c (renamed from src/mess/machine/electron.c)8
-rw-r--r--src/mame/machine/esqpanel.c (renamed from src/mess/machine/esqpanel.c)0
-rw-r--r--src/mame/machine/esqpanel.h (renamed from src/mess/machine/esqpanel.h)0
-rw-r--r--src/mame/machine/esqvfd.c (renamed from src/mess/machine/esqvfd.c)0
-rw-r--r--src/mame/machine/esqvfd.h (renamed from src/mess/machine/esqvfd.h)0
-rw-r--r--src/mame/machine/fd1089.c2
-rw-r--r--src/mame/machine/fd1094.c10
-rw-r--r--src/mame/machine/fm_scsi.c (renamed from src/mess/machine/fm_scsi.c)0
-rw-r--r--src/mame/machine/fm_scsi.h (renamed from src/mess/machine/fm_scsi.h)0
-rw-r--r--src/mame/machine/gaelco2.c18
-rw-r--r--src/mame/machine/galaxy.c (renamed from src/mess/machine/galaxy.c)0
-rw-r--r--src/mame/machine/gamecom.c (renamed from src/mess/machine/gamecom.c)0
-rw-r--r--src/mame/machine/gamepock.c (renamed from src/mess/machine/gamepock.c)0
-rw-r--r--src/mame/machine/gb.c (renamed from src/mess/machine/gb.c)0
-rw-r--r--src/mame/machine/genpc.c (renamed from src/mess/machine/genpc.c)0
-rw-r--r--src/mame/machine/harddriv.c17
-rw-r--r--src/mame/machine/hec2hrp.c (renamed from src/mess/machine/hec2hrp.c)0
-rw-r--r--src/mame/machine/hecdisk2.c (renamed from src/mess/machine/hecdisk2.c)0
-rw-r--r--src/mame/machine/hng64_net.c2
-rw-r--r--src/mame/machine/hp48.c (renamed from src/mess/machine/hp48.c)0
-rw-r--r--src/mame/machine/ie15_kbd.c (renamed from src/mess/machine/ie15_kbd.c)0
-rw-r--r--src/mame/machine/ie15_kbd.h (renamed from src/mess/machine/ie15_kbd.h)0
-rw-r--r--src/mame/machine/intv.c (renamed from src/mess/machine/intv.c)0
-rw-r--r--src/mame/machine/isbc_215g.c (renamed from src/mess/machine/isbc_215g.c)0
-rw-r--r--src/mame/machine/isbc_215g.h (renamed from src/mess/machine/isbc_215g.h)0
-rw-r--r--src/mame/machine/iteagle_fpga.c74
-rw-r--r--src/mame/machine/iteagle_fpga.h2
-rw-r--r--src/mame/machine/jvs13551.c37
-rw-r--r--src/mame/machine/jvs13551.h3
-rw-r--r--src/mame/machine/k7659kb.c (renamed from src/mess/machine/k7659kb.c)0
-rw-r--r--src/mame/machine/k7659kb.h (renamed from src/mess/machine/k7659kb.h)0
-rw-r--r--src/mame/machine/kay_kbd.c (renamed from src/mess/machine/kay_kbd.c)0
-rw-r--r--src/mame/machine/kaypro.c (renamed from src/mess/machine/kaypro.c)0
-rw-r--r--src/mame/machine/kb_7007_3.h (renamed from src/mess/machine/kb_7007_3.h)0
-rw-r--r--src/mame/machine/kb_poisk1.h (renamed from src/mess/machine/kb_poisk1.h)0
-rw-r--r--src/mame/machine/kc.c (renamed from src/mess/machine/kc.c)0
-rw-r--r--src/mame/machine/kc_keyb.c (renamed from src/mess/machine/kc_keyb.c)0
-rw-r--r--src/mame/machine/kc_keyb.h (renamed from src/mess/machine/kc_keyb.h)0
-rw-r--r--src/mame/machine/kramermc.c (renamed from src/mess/machine/kramermc.c)0
-rw-r--r--src/mame/machine/lisa.c (renamed from src/mess/machine/lisa.c)0
-rw-r--r--src/mame/machine/llc.c (renamed from src/mess/machine/llc.c)0
-rw-r--r--src/mame/machine/lviv.c (renamed from src/mess/machine/lviv.c)0
-rw-r--r--src/mame/machine/lynx.c (renamed from src/mess/machine/lynx.c)0
-rw-r--r--src/mame/machine/m1comm.c4
-rw-r--r--src/mame/machine/m20_8086.c (renamed from src/mess/machine/m20_8086.c)0
-rw-r--r--src/mame/machine/m20_8086.h (renamed from src/mess/machine/m20_8086.h)0
-rw-r--r--src/mame/machine/m20_kbd.c (renamed from src/mess/machine/m20_kbd.c)0
-rw-r--r--src/mame/machine/m20_kbd.h (renamed from src/mess/machine/m20_kbd.h)0
-rw-r--r--src/mame/machine/m24_kbd.c (renamed from src/mess/machine/m24_kbd.c)0
-rw-r--r--src/mame/machine/m24_kbd.h (renamed from src/mess/machine/m24_kbd.h)0
-rw-r--r--src/mame/machine/m24_z8000.c (renamed from src/mess/machine/m24_z8000.c)0
-rw-r--r--src/mame/machine/m24_z8000.h (renamed from src/mess/machine/m24_z8000.h)0
-rw-r--r--src/mame/machine/m2comm.c597
-rw-r--r--src/mame/machine/m2comm.h89
-rw-r--r--src/mame/machine/mac.c (renamed from src/mess/machine/mac.c)0
-rw-r--r--src/mame/machine/macadb.c (renamed from src/mess/machine/macadb.c)0
-rw-r--r--src/mame/machine/mackbd.c (renamed from src/mess/machine/mackbd.c)0
-rw-r--r--src/mame/machine/mackbd.h (renamed from src/mess/machine/mackbd.h)0
-rw-r--r--src/mame/machine/macpci.c (renamed from src/mess/machine/macpci.c)0
-rw-r--r--src/mame/machine/macrtc.c (renamed from src/mess/machine/macrtc.c)0
-rw-r--r--src/mame/machine/macrtc.h (renamed from src/mess/machine/macrtc.h)0
-rw-r--r--src/mame/machine/mbc55x.c (renamed from src/mess/machine/mbc55x.c)0
-rw-r--r--src/mame/machine/mbee.c (renamed from src/mess/machine/mbee.c)7
-rw-r--r--src/mame/machine/mboard.c (renamed from src/mess/machine/mboard.c)27
-rw-r--r--src/mame/machine/mc80.c (renamed from src/mess/machine/mc80.c)0
-rw-r--r--src/mame/machine/mc8123.h1
-rw-r--r--src/mame/machine/mega32x.c (renamed from src/mess/machine/mega32x.c)4
-rw-r--r--src/mame/machine/mega32x.h (renamed from src/mess/machine/mega32x.h)0
-rw-r--r--src/mame/machine/megacd.c (renamed from src/mess/machine/megacd.c)0
-rw-r--r--src/mame/machine/megacd.h (renamed from src/mess/machine/megacd.h)0
-rw-r--r--src/mame/machine/megacdcd.c (renamed from src/mess/machine/megacdcd.c)0
-rw-r--r--src/mame/machine/megacdcd.h (renamed from src/mess/machine/megacdcd.h)0
-rw-r--r--src/mame/machine/megadriv.c24
-rw-r--r--src/mame/machine/micro3d.c18
-rw-r--r--src/mame/machine/microdrv.c (renamed from src/mess/machine/microdrv.c)0
-rw-r--r--src/mame/machine/microdrv.h (renamed from src/mess/machine/microdrv.h)0
-rw-r--r--src/mame/machine/micropolis.c (renamed from src/mess/machine/micropolis.c)0
-rw-r--r--src/mame/machine/micropolis.h (renamed from src/mess/machine/micropolis.h)0
-rw-r--r--src/mame/machine/microtan.c (renamed from src/mess/machine/microtan.c)0
-rw-r--r--src/mame/machine/mie.c26
-rw-r--r--src/mame/machine/mie.h1
-rw-r--r--src/mame/machine/mikro80.c (renamed from src/mess/machine/mikro80.c)0
-rw-r--r--src/mame/machine/mm1kb.c (renamed from src/mess/machine/mm1kb.c)35
-rw-r--r--src/mame/machine/mm1kb.h (renamed from src/mess/machine/mm1kb.h)22
-rw-r--r--src/mame/machine/model3.c2
-rw-r--r--src/mame/machine/ms7004.c (renamed from src/mess/machine/ms7004.c)15
-rw-r--r--src/mame/machine/ms7004.h (renamed from src/mess/machine/ms7004.h)0
-rw-r--r--src/mame/machine/msx.c (renamed from src/mess/machine/msx.c)10
-rw-r--r--src/mame/machine/msx_matsushita.c (renamed from src/mess/machine/msx_matsushita.c)0
-rw-r--r--src/mame/machine/msx_matsushita.h (renamed from src/mess/machine/msx_matsushita.h)0
-rw-r--r--src/mame/machine/msx_s1985.c (renamed from src/mess/machine/msx_s1985.c)0
-rw-r--r--src/mame/machine/msx_s1985.h (renamed from src/mess/machine/msx_s1985.h)0
-rw-r--r--src/mame/machine/msx_switched.c (renamed from src/mess/machine/msx_switched.c)0
-rw-r--r--src/mame/machine/msx_switched.h (renamed from src/mess/machine/msx_switched.h)0
-rw-r--r--src/mame/machine/msx_systemflags.c (renamed from src/mess/machine/msx_systemflags.c)0
-rw-r--r--src/mame/machine/msx_systemflags.h (renamed from src/mess/machine/msx_systemflags.h)0
-rw-r--r--src/mame/machine/mtx.c (renamed from src/mess/machine/mtx.c)0
-rw-r--r--src/mame/machine/mz700.c (renamed from src/mess/machine/mz700.c)0
-rw-r--r--src/mame/machine/mz80.c (renamed from src/mess/machine/mz80.c)0
-rw-r--r--src/mame/machine/n64.c137
-rw-r--r--src/mame/machine/namco62.c2
-rw-r--r--src/mame/machine/namco62.h2
-rw-r--r--src/mame/machine/namcond1.c23
-rw-r--r--src/mame/machine/namcos1.c8
-rw-r--r--src/mame/machine/nc.c (renamed from src/mess/machine/nc.c)0
-rw-r--r--src/mame/machine/nes.c (renamed from src/mess/machine/nes.c)0
-rw-r--r--src/mame/machine/nextkbd.c (renamed from src/mess/machine/nextkbd.c)0
-rw-r--r--src/mame/machine/nextkbd.h (renamed from src/mess/machine/nextkbd.h)0
-rw-r--r--src/mame/machine/nextmo.c (renamed from src/mess/machine/nextmo.c)0
-rw-r--r--src/mame/machine/nextmo.h (renamed from src/mess/machine/nextmo.h)0
-rw-r--r--src/mame/machine/ngen_kb.c (renamed from src/mess/machine/ngen_kb.c)0
-rw-r--r--src/mame/machine/ngen_kb.h (renamed from src/mess/machine/ngen_kb.h)0
-rw-r--r--src/mame/machine/nmk004.c2
-rw-r--r--src/mame/machine/ns10crypt.c415
-rw-r--r--src/mame/machine/ns10crypt.h108
-rw-r--r--src/mame/machine/ondra.c (renamed from src/mess/machine/ondra.c)0
-rw-r--r--src/mame/machine/orao.c80
-rw-r--r--src/mame/machine/orion.c (renamed from src/mess/machine/orion.c)2
-rw-r--r--src/mame/machine/osborne1.c (renamed from src/mess/machine/osborne1.c)0
-rw-r--r--src/mame/machine/p2000t.c (renamed from src/mess/machine/p2000t.c)0
-rw-r--r--src/mame/machine/partner.c (renamed from src/mess/machine/partner.c)0
-rw-r--r--src/mame/machine/pc1251.c (renamed from src/mess/machine/pc1251.c)0
-rw-r--r--src/mame/machine/pc1350.c (renamed from src/mess/machine/pc1350.c)0
-rw-r--r--src/mame/machine/pc1401.c (renamed from src/mess/machine/pc1401.c)0
-rw-r--r--src/mame/machine/pc1403.c (renamed from src/mess/machine/pc1403.c)0
-rw-r--r--src/mame/machine/pc1512kb.c (renamed from src/mess/machine/pc1512kb.c)0
-rw-r--r--src/mame/machine/pc1512kb.h (renamed from src/mess/machine/pc1512kb.h)0
-rw-r--r--src/mame/machine/pc9801_118.c (renamed from src/mess/machine/pc9801_118.c)0
-rw-r--r--src/mame/machine/pc9801_118.h (renamed from src/mess/machine/pc9801_118.h)0
-rw-r--r--src/mame/machine/pc9801_26.c (renamed from src/mess/machine/pc9801_26.c)0
-rw-r--r--src/mame/machine/pc9801_26.h (renamed from src/mess/machine/pc9801_26.h)0
-rw-r--r--src/mame/machine/pc9801_86.c (renamed from src/mess/machine/pc9801_86.c)0
-rw-r--r--src/mame/machine/pc9801_86.h (renamed from src/mess/machine/pc9801_86.h)0
-rw-r--r--src/mame/machine/pc9801_cbus.c (renamed from src/mess/machine/pc9801_cbus.c)0
-rw-r--r--src/mame/machine/pc9801_cbus.h (renamed from src/mess/machine/pc9801_cbus.h)0
-rw-r--r--src/mame/machine/pc9801_kbd.c (renamed from src/mess/machine/pc9801_kbd.c)0
-rw-r--r--src/mame/machine/pc9801_kbd.h (renamed from src/mess/machine/pc9801_kbd.h)0
-rw-r--r--src/mame/machine/pcd_kbd.c (renamed from src/mess/machine/pcd_kbd.c)9
-rw-r--r--src/mame/machine/pcd_kbd.h (renamed from src/mess/machine/pcd_kbd.h)0
-rw-r--r--src/mame/machine/pce.c (renamed from src/mess/machine/pce.c)16
-rw-r--r--src/mame/machine/pce220_ser.c (renamed from src/mess/machine/pce220_ser.c)0
-rw-r--r--src/mame/machine/pce220_ser.h (renamed from src/mess/machine/pce220_ser.h)0
-rw-r--r--src/mame/machine/pce_cd.c (renamed from src/mess/machine/pce_cd.c)7
-rw-r--r--src/mame/machine/pce_cd.h (renamed from src/mess/machine/pce_cd.h)2
-rw-r--r--src/mame/machine/pecom.c (renamed from src/mess/machine/pecom.c)0
-rw-r--r--src/mame/machine/pgmcrypt.c185
-rw-r--r--src/mame/machine/pgmcrypt.h4
-rw-r--r--src/mame/machine/pgmprot_orlegend.c13
-rw-r--r--src/mame/machine/pk8020.c (renamed from src/mess/machine/pk8020.c)0
-rw-r--r--src/mame/machine/pmd85.c (renamed from src/mess/machine/pmd85.c)0
-rw-r--r--src/mame/machine/poly88.c (renamed from src/mess/machine/poly88.c)0
-rw-r--r--src/mame/machine/pp01.c (renamed from src/mess/machine/pp01.c)0
-rw-r--r--src/mame/machine/primo.c (renamed from src/mess/machine/primo.c)0
-rw-r--r--src/mame/machine/prof80mmu.c (renamed from src/mess/machine/prof80mmu.c)0
-rw-r--r--src/mame/machine/prof80mmu.h (renamed from src/mess/machine/prof80mmu.h)0
-rw-r--r--src/mame/machine/psion_pack.c (renamed from src/mess/machine/psion_pack.c)0
-rw-r--r--src/mame/machine/psion_pack.h (renamed from src/mess/machine/psion_pack.h)0
-rw-r--r--src/mame/machine/psxcd.c (renamed from src/mess/machine/psxcd.c)0
-rw-r--r--src/mame/machine/psxcd.h (renamed from src/mess/machine/psxcd.h)0
-rw-r--r--src/mame/machine/pxa255.h2
-rw-r--r--src/mame/machine/qimi.c (renamed from src/mess/machine/qimi.c)0
-rw-r--r--src/mame/machine/qimi.h (renamed from src/mess/machine/qimi.h)0
-rw-r--r--src/mame/machine/qx10kbd.c (renamed from src/mess/machine/qx10kbd.c)0
-rw-r--r--src/mame/machine/qx10kbd.h (renamed from src/mess/machine/qx10kbd.h)0
-rw-r--r--src/mame/machine/radio86.c (renamed from src/mess/machine/radio86.c)0
-rw-r--r--src/mame/machine/raiden2cop.c10
-rw-r--r--src/mame/machine/rbisland.c (renamed from src/mame/machine/rainbow.c)2
-rw-r--r--src/mame/machine/rm380z.c (renamed from src/mess/machine/rm380z.c)0
-rw-r--r--src/mame/machine/rmnimbus.c (renamed from src/mess/machine/rmnimbus.c)10
-rw-r--r--src/mame/machine/rmnkbd.c (renamed from src/mess/machine/rmnkbd.c)0
-rw-r--r--src/mame/machine/rmnkbd.h (renamed from src/mess/machine/rmnkbd.h)0
-rw-r--r--src/mame/machine/rx01.c (renamed from src/mess/machine/rx01.c)0
-rw-r--r--src/mame/machine/rx01.h (renamed from src/mess/machine/rx01.h)0
-rw-r--r--src/mame/machine/s32comm.c142
-rw-r--r--src/mame/machine/s32comm.h18
-rw-r--r--src/mame/machine/samcoupe.c (renamed from src/mess/machine/samcoupe.c)18
-rw-r--r--src/mame/machine/scramble.c17
-rw-r--r--src/mame/machine/segacrp2.c2
-rw-r--r--src/mame/machine/segacrp2.h2
-rw-r--r--src/mame/machine/sgi.c (renamed from src/mess/machine/sgi.c)0
-rw-r--r--src/mame/machine/sgi.h (renamed from src/mess/machine/sgi.h)0
-rw-r--r--src/mame/machine/slikshot.c4
-rw-r--r--src/mame/machine/smartmed.c (renamed from src/mess/machine/smartmed.c)0
-rw-r--r--src/mame/machine/smartmed.h (renamed from src/mess/machine/smartmed.h)0
-rw-r--r--src/mame/machine/sms.c (renamed from src/mess/machine/sms.c)70
-rw-r--r--src/mame/machine/snes.c6
-rw-r--r--src/mame/machine/snescx4.c (renamed from src/mess/machine/snescx4.c)0
-rw-r--r--src/mame/machine/snescx4.h (renamed from src/mess/machine/snescx4.h)0
-rw-r--r--src/mame/machine/sonydriv.c (renamed from src/mess/machine/sonydriv.c)0
-rw-r--r--src/mame/machine/sonydriv.h (renamed from src/mess/machine/sonydriv.h)0
-rw-r--r--src/mame/machine/sorcerer.c (renamed from src/mess/machine/sorcerer.c)13
-rw-r--r--src/mame/machine/spec_snqk.c (renamed from src/mess/machine/spec_snqk.c)169
-rw-r--r--src/mame/machine/spec_snqk.h (renamed from src/mess/machine/spec_snqk.h)0
-rw-r--r--src/mame/machine/special.c (renamed from src/mess/machine/special.c)0
-rw-r--r--src/mame/machine/super80.c (renamed from src/mess/machine/super80.c)4
-rw-r--r--src/mame/machine/svi318.c (renamed from src/mess/machine/svi318.c)0
-rw-r--r--src/mame/machine/swim.c (renamed from src/mess/machine/swim.c)0
-rw-r--r--src/mame/machine/swim.h (renamed from src/mess/machine/swim.h)0
-rw-r--r--src/mame/machine/swtpc09.c (renamed from src/mess/machine/swtpc09.c)0
-rw-r--r--src/mame/machine/tandy2kb.c (renamed from src/mess/machine/tandy2kb.c)0
-rw-r--r--src/mame/machine/tandy2kb.h (renamed from src/mess/machine/tandy2kb.h)0
-rw-r--r--src/mame/machine/teleprinter.c (renamed from src/mess/machine/teleprinter.c)0
-rw-r--r--src/mame/machine/teleprinter.h (renamed from src/mess/machine/teleprinter.h)0
-rw-r--r--src/mame/machine/thomflop.c (renamed from src/mess/machine/thomflop.c)14
-rw-r--r--src/mame/machine/thomflop.h (renamed from src/mess/machine/thomflop.h)0
-rw-r--r--src/mame/machine/thomson.c (renamed from src/mess/machine/thomson.c)459
-rw-r--r--src/mame/machine/ti85.c (renamed from src/mess/machine/ti85.c)0
-rw-r--r--src/mame/machine/tnzs.c40
-rw-r--r--src/mame/machine/trs80.c (renamed from src/mess/machine/trs80.c)0
-rw-r--r--src/mame/machine/trs80m2kb.c (renamed from src/mess/machine/trs80m2kb.c)0
-rw-r--r--src/mame/machine/trs80m2kb.h (renamed from src/mess/machine/trs80m2kb.h)0
-rw-r--r--src/mame/machine/upd65031.c (renamed from src/mess/machine/upd65031.c)0
-rw-r--r--src/mame/machine/upd65031.h (renamed from src/mess/machine/upd65031.h)0
-rw-r--r--src/mame/machine/ut88.c (renamed from src/mess/machine/ut88.c)0
-rw-r--r--src/mame/machine/v1050kb.c (renamed from src/mess/machine/v1050kb.c)0
-rw-r--r--src/mame/machine/v1050kb.h (renamed from src/mess/machine/v1050kb.h)0
-rw-r--r--src/mame/machine/vector06.c (renamed from src/mess/machine/vector06.c)42
-rw-r--r--src/mame/machine/victor9k_fdc.c (renamed from src/mess/machine/victor9k_fdc.c)0
-rw-r--r--src/mame/machine/victor9k_fdc.h (renamed from src/mess/machine/victor9k_fdc.h)0
-rw-r--r--src/mame/machine/victor9kb.c (renamed from src/mess/machine/victor9kb.c)32
-rw-r--r--src/mame/machine/victor9kb.h (renamed from src/mess/machine/victor9kb.h)0
-rw-r--r--src/mame/machine/vtech2.c (renamed from src/mess/machine/vtech2.c)0
-rw-r--r--src/mame/machine/wangpckb.c (renamed from src/mess/machine/wangpckb.c)0
-rw-r--r--src/mame/machine/wangpckb.h (renamed from src/mess/machine/wangpckb.h)0
-rw-r--r--src/mame/machine/wswan.c (renamed from src/mess/machine/wswan.c)0
-rw-r--r--src/mame/machine/x1.c (renamed from src/mess/machine/x1.c)0
-rw-r--r--src/mame/machine/x68k_hdc.c (renamed from src/mess/machine/x68k_hdc.c)0
-rw-r--r--src/mame/machine/x68k_hdc.h (renamed from src/mess/machine/x68k_hdc.h)0
-rw-r--r--src/mame/machine/x68k_kbd.c (renamed from src/mess/machine/x68k_kbd.c)0
-rw-r--r--src/mame/machine/x68k_kbd.h (renamed from src/mess/machine/x68k_kbd.h)0
-rw-r--r--src/mame/machine/x820kb.c (renamed from src/mess/machine/x820kb.c)0
-rw-r--r--src/mame/machine/x820kb.h (renamed from src/mess/machine/x820kb.h)0
-rw-r--r--src/mame/machine/xbox.c1542
-rw-r--r--src/mame/machine/z80bin.c (renamed from src/mess/machine/z80bin.c)4
-rw-r--r--src/mame/machine/z80bin.h (renamed from src/mess/machine/z80bin.h)2
-rw-r--r--src/mame/machine/z80ne.c (renamed from src/mess/machine/z80ne.c)0
-rw-r--r--src/mame/machine/zx.c (renamed from src/mess/machine/zx.c)0
-rw-r--r--src/mame/machine/zx8302.c (renamed from src/mess/machine/zx8302.c)0
-rw-r--r--src/mame/machine/zx8302.h (renamed from src/mess/machine/zx8302.h)0
-rw-r--r--src/mame/mame.mak10
-rw-r--r--src/mame/mess.lst90
-rw-r--r--src/mame/osd/windows/mame/mame.man7
-rw-r--r--src/mame/osd/windows/mess/mess.man7
-rw-r--r--src/mame/video/4enraya.c7
-rw-r--r--src/mame/video/733_asr.c (renamed from src/mess/video/733_asr.c)0
-rw-r--r--src/mame/video/733_asr.h (renamed from src/mess/video/733_asr.h)0
-rw-r--r--src/mame/video/8080bw.c214
-rw-r--r--src/mame/video/88games.c12
-rw-r--r--src/mame/video/911_chr.h (renamed from src/mess/video/911_chr.h)0
-rw-r--r--src/mame/video/911_key.h (renamed from src/mess/video/911_key.h)0
-rw-r--r--src/mame/video/911_vdt.c (renamed from src/mess/video/911_vdt.c)0
-rw-r--r--src/mame/video/911_vdt.h (renamed from src/mess/video/911_vdt.h)0
-rw-r--r--src/mame/video/abc1600.c (renamed from src/mess/video/abc1600.c)0
-rw-r--r--src/mame/video/abc1600.h (renamed from src/mess/video/abc1600.h)0
-rw-r--r--src/mame/video/abc80.c (renamed from src/mess/video/abc80.c)0
-rw-r--r--src/mame/video/abc800.c (renamed from src/mess/video/abc800.c)0
-rw-r--r--src/mame/video/abc802.c (renamed from src/mess/video/abc802.c)0
-rw-r--r--src/mame/video/abc806.c (renamed from src/mess/video/abc806.c)0
-rw-r--r--src/mame/video/ac1.c (renamed from src/mess/video/ac1.c)0
-rw-r--r--src/mame/video/advision.c (renamed from src/mess/video/advision.c)0
-rw-r--r--src/mame/video/aerofgt.c2
-rw-r--r--src/mame/video/ajax.c40
-rw-r--r--src/mame/video/alesis.c (renamed from src/mess/video/alesis.c)0
-rw-r--r--src/mame/video/aliens.c35
-rw-r--r--src/mame/video/amiga.c10
-rw-r--r--src/mame/video/amspdwy.c5
-rw-r--r--src/mame/video/antic.c9
-rw-r--r--src/mame/video/antic.h3
-rw-r--r--src/mame/video/apollo.c (renamed from src/mess/video/apollo.c)0
-rw-r--r--src/mame/video/apple1.c (renamed from src/mess/video/apple1.c)0
-rw-r--r--src/mame/video/apple2.c (renamed from src/mess/video/apple2.c)69
-rw-r--r--src/mame/video/apple2.h (renamed from src/mess/video/apple2.h)2
-rw-r--r--src/mame/video/apple2gs.c (renamed from src/mess/video/apple2gs.c)0
-rw-r--r--src/mame/video/apple3.c (renamed from src/mess/video/apple3.c)0
-rw-r--r--src/mame/video/aquarius.c (renamed from src/mess/video/aquarius.c)0
-rw-r--r--src/mame/video/arcadia.c (renamed from src/mess/video/arcadia.c)0
-rw-r--r--src/mame/video/astrocde.c27
-rw-r--r--src/mame/video/atarimo.c14
-rw-r--r--src/mame/video/atarist.c (renamed from src/mess/video/atarist.c)0
-rw-r--r--src/mame/video/atarist.h (renamed from src/mess/video/atarist.h)0
-rw-r--r--src/mame/video/atarisy2.c30
-rw-r--r--src/mame/video/aussiebyte.c196
-rw-r--r--src/mame/video/avgdvg.c4
-rw-r--r--src/mame/video/avgdvg.h2
-rw-r--r--src/mame/video/avigo.c (renamed from src/mess/video/avigo.c)0
-rw-r--r--src/mame/video/b2m.c (renamed from src/mess/video/b2m.c)0
-rw-r--r--src/mame/video/battlnts.c2
-rw-r--r--src/mame/video/bbc.c (renamed from src/mess/video/bbc.c)36
-rw-r--r--src/mame/video/bionicc.c39
-rw-r--r--src/mame/video/bk.c (renamed from src/mess/video/bk.c)0
-rw-r--r--src/mame/video/bladestl.c2
-rw-r--r--src/mame/video/blockhl.c62
-rw-r--r--src/mame/video/bogeyman.c6
-rw-r--r--src/mame/video/bottom9.c48
-rw-r--r--src/mame/video/btime.c9
-rw-r--r--src/mame/video/busicom.c (renamed from src/mess/video/busicom.c)0
-rw-r--r--src/mame/video/cgc7900.c (renamed from src/mess/video/cgc7900.c)0
-rw-r--r--src/mame/video/channelf.c (renamed from src/mess/video/channelf.c)0
-rw-r--r--src/mame/video/chihiro.c546
-rw-r--r--src/mame/video/chqflag.c34
-rw-r--r--src/mame/video/comquest.c (renamed from src/mess/video/comquest.c)0
-rw-r--r--src/mame/video/comx35.c (renamed from src/mess/video/comx35.c)0
-rw-r--r--src/mame/video/cps1.c26
-rw-r--r--src/mame/video/crimfght.c58
-rw-r--r--src/mame/video/crt.c (renamed from src/mess/video/crt.c)0
-rw-r--r--src/mame/video/crt.h (renamed from src/mess/video/crt.h)0
-rw-r--r--src/mame/video/dai.c (renamed from src/mess/video/dai.c)0
-rw-r--r--src/mame/video/deco16ic.c21
-rw-r--r--src/mame/video/deco32.c10
-rw-r--r--src/mame/video/dgn_beta.c (renamed from src/mess/video/dgn_beta.c)0
-rw-r--r--src/mame/video/dynduke.c7
-rw-r--r--src/mame/video/electron.c (renamed from src/mess/video/electron.c)0
-rw-r--r--src/mame/video/fm7.c (renamed from src/mess/video/fm7.c)56
-rw-r--r--src/mame/video/fmtowns.c (renamed from src/mess/video/fmtowns.c)0
-rw-r--r--src/mame/video/galastrm.c144
-rw-r--r--src/mame/video/galaxian.c19
-rw-r--r--src/mame/video/galaxold.c13
-rw-r--r--src/mame/video/galaxy.c (renamed from src/mess/video/galaxy.c)0
-rw-r--r--src/mame/video/galeb.c (renamed from src/mess/video/galeb.c)0
-rw-r--r--src/mame/video/galpanic.c11
-rw-r--r--src/mame/video/gamecom.c (renamed from src/mess/video/gamecom.c)0
-rw-r--r--src/mame/video/gb_lcd.c (renamed from src/mess/video/gb_lcd.c)0
-rw-r--r--src/mame/video/gb_lcd.h (renamed from src/mess/video/gb_lcd.h)0
-rw-r--r--src/mame/video/gba.c (renamed from src/mess/video/gba.c)2
-rw-r--r--src/mame/video/gime.c (renamed from src/mess/video/gime.c)0
-rw-r--r--src/mame/video/gime.h (renamed from src/mess/video/gime.h)0
-rw-r--r--src/mame/video/gradius3.c29
-rw-r--r--src/mame/video/gtia.c2
-rw-r--r--src/mame/video/hec2video.c (renamed from src/mess/video/hec2video.c)0
-rw-r--r--src/mame/video/hexion.c2
-rw-r--r--src/mame/video/hng64.c890
-rw-r--r--src/mame/video/hng64_3d.c1298
-rw-r--r--src/mame/video/hng64_sprite.c2
-rw-r--r--src/mame/video/hp48.c (renamed from src/mess/video/hp48.c)0
-rw-r--r--src/mame/video/igs017_igs031.c448
-rw-r--r--src/mame/video/igs017_igs031.h106
-rw-r--r--src/mame/video/intv.c (renamed from src/mess/video/intv.c)0
-rw-r--r--src/mame/video/itech8.c5
-rw-r--r--src/mame/video/jack.c6
-rw-r--r--src/mame/video/k051960.c107
-rw-r--r--src/mame/video/k051960.h33
-rw-r--r--src/mame/video/k052109.c48
-rw-r--r--src/mame/video/k052109.h23
-rw-r--r--src/mame/video/k057714.c737
-rw-r--r--src/mame/video/k057714.h69
-rw-r--r--src/mame/video/k1ge.c (renamed from src/mess/video/k1ge.c)0
-rw-r--r--src/mame/video/k1ge.h (renamed from src/mess/video/k1ge.h)0
-rw-r--r--src/mame/video/kangaroo.c9
-rw-r--r--src/mame/video/kaypro.c (renamed from src/mess/video/kaypro.c)0
-rw-r--r--src/mame/video/kc.c (renamed from src/mess/video/kc.c)0
-rw-r--r--src/mame/video/konamigx.c32
-rw-r--r--src/mame/video/kramermc.c (renamed from src/mess/video/kramermc.c)0
-rw-r--r--src/mame/video/kyocera.c (renamed from src/mess/video/kyocera.c)0
-rw-r--r--src/mame/video/lethalj.c13
-rw-r--r--src/mame/video/liberate.c8
-rw-r--r--src/mame/video/llc.c (renamed from src/mess/video/llc.c)0
-rw-r--r--src/mame/video/lviv.c (renamed from src/mess/video/lviv.c)0
-rw-r--r--src/mame/video/lwings.c12
-rw-r--r--src/mame/video/m72.c218
-rw-r--r--src/mame/video/mac.c (renamed from src/mess/video/mac.c)4
-rw-r--r--src/mame/video/macrossp.c317
-rw-r--r--src/mame/video/mainevt.c34
-rw-r--r--src/mame/video/maria.c (renamed from src/mess/video/maria.c)0
-rw-r--r--src/mame/video/maria.h (renamed from src/mess/video/maria.h)0
-rw-r--r--src/mame/video/mbc55x.c (renamed from src/mess/video/mbc55x.c)0
-rw-r--r--src/mame/video/mbee.c (renamed from src/mess/video/mbee.c)0
-rw-r--r--src/mame/video/mc80.c (renamed from src/mess/video/mc80.c)0
-rw-r--r--src/mame/video/mcd212.c4
-rw-r--r--src/mame/video/mcd212.h2
-rw-r--r--src/mame/video/mcr68.c27
-rw-r--r--src/mame/video/micro3d.c9
-rw-r--r--src/mame/video/microtan.c (renamed from src/mess/video/microtan.c)0
-rw-r--r--src/mame/video/midtunit.c14
-rw-r--r--src/mame/video/midzeus.c579
-rw-r--r--src/mame/video/midzeus2.c131
-rw-r--r--src/mame/video/mikro80.c (renamed from src/mess/video/mikro80.c)0
-rw-r--r--src/mame/video/mikromik.c (renamed from src/mess/video/mikromik.c)58
-rw-r--r--src/mame/video/model2.c216
-rw-r--r--src/mame/video/model2rd.inc52
-rw-r--r--src/mame/video/model3.c153
-rw-r--r--src/mame/video/mz700.c (renamed from src/mess/video/mz700.c)0
-rw-r--r--src/mame/video/mz80.c (renamed from src/mess/video/mz80.c)0
-rw-r--r--src/mame/video/n64.c255
-rw-r--r--src/mame/video/n64.h11
-rw-r--r--src/mame/video/n64types.h2
-rw-r--r--src/mame/video/namcona1.c47
-rw-r--r--src/mame/video/namcos22.c4
-rw-r--r--src/mame/video/naughtyb.c2
-rw-r--r--src/mame/video/nbmj9195.c6
-rw-r--r--src/mame/video/nc.c (renamed from src/mess/video/nc.c)0
-rw-r--r--src/mame/video/nes.c (renamed from src/mess/video/nes.c)23
-rw-r--r--src/mame/video/newbrain.c (renamed from src/mess/video/newbrain.c)0
-rw-r--r--src/mame/video/newport.c (renamed from src/mess/video/newport.c)0
-rw-r--r--src/mame/video/newport.h (renamed from src/mess/video/newport.h)0
-rw-r--r--src/mame/video/nick.c (renamed from src/mess/video/nick.c)0
-rw-r--r--src/mame/video/nick.h (renamed from src/mess/video/nick.h)0
-rw-r--r--src/mame/video/nova2001.c10
-rw-r--r--src/mame/video/ondra.c (renamed from src/mess/video/ondra.c)0
-rw-r--r--src/mame/video/orao.c (renamed from src/mess/video/orao.c)0
-rw-r--r--src/mame/video/orion.c (renamed from src/mess/video/orion.c)0
-rw-r--r--src/mame/video/osi.c (renamed from src/mess/video/osi.c)0
-rw-r--r--src/mame/video/p2000m.c (renamed from src/mess/video/p2000m.c)0
-rw-r--r--src/mame/video/pc080sn.c1
-rw-r--r--src/mame/video/pc090oj.c1
-rw-r--r--src/mame/video/pc1251.c (renamed from src/mess/video/pc1251.c)0
-rw-r--r--src/mame/video/pc1350.c (renamed from src/mess/video/pc1350.c)0
-rw-r--r--src/mame/video/pc1401.c (renamed from src/mess/video/pc1401.c)0
-rw-r--r--src/mame/video/pc1403.c (renamed from src/mess/video/pc1403.c)0
-rw-r--r--src/mame/video/pc1512.c (renamed from src/mess/video/pc1512.c)0
-rw-r--r--src/mame/video/pc4.c (renamed from src/mess/video/pc4.c)0
-rw-r--r--src/mame/video/pc8401a.c (renamed from src/mess/video/pc8401a.c)0
-rw-r--r--src/mame/video/pc_t1t.c (renamed from src/mess/video/pc_t1t.c)0
-rw-r--r--src/mame/video/pc_t1t.h (renamed from src/mess/video/pc_t1t.h)0
-rw-r--r--src/mame/video/pcd.c486
-rw-r--r--src/mame/video/pcd.h117
-rw-r--r--src/mame/video/pcw.c (renamed from src/mess/video/pcw.c)0
-rw-r--r--src/mame/video/pcw16.c (renamed from src/mess/video/pcw16.c)0
-rw-r--r--src/mame/video/pdp1.c (renamed from src/mess/video/pdp1.c)3
-rw-r--r--src/mame/video/pecom.c (renamed from src/mess/video/pecom.c)0
-rw-r--r--src/mame/video/pk8020.c (renamed from src/mess/video/pk8020.c)0
-rw-r--r--src/mame/video/pocketc.c (renamed from src/mess/video/pocketc.c)0
-rw-r--r--src/mame/video/poisk1.c (renamed from src/mess/video/poisk1.c)0
-rw-r--r--src/mame/video/poisk1.h (renamed from src/mess/video/poisk1.h)0
-rw-r--r--src/mame/video/poly88.c (renamed from src/mess/video/poly88.c)0
-rw-r--r--src/mame/video/powervr2.c5
-rw-r--r--src/mame/video/powervr2.h1
-rw-r--r--src/mame/video/pp01.c (renamed from src/mess/video/pp01.c)0
-rw-r--r--src/mame/video/primo.c (renamed from src/mess/video/primo.c)0
-rw-r--r--src/mame/video/rbisland.c (renamed from src/mame/video/rainbow.c)2
-rw-r--r--src/mame/video/rdpbhelp.h13
-rw-r--r--src/mame/video/rdpblend.c3
-rw-r--r--src/mame/video/rdpblend.h2
-rw-r--r--src/mame/video/rdptpipe.c25
-rw-r--r--src/mame/video/rdptpipe.h2
-rw-r--r--src/mame/video/rm380z.c (renamed from src/mess/video/rm380z.c)0
-rw-r--r--src/mame/video/rmnimbus.c (renamed from src/mess/video/rmnimbus.c)0
-rw-r--r--src/mame/video/rockrage.c2
-rw-r--r--src/mame/video/rollerg.c18
-rw-r--r--src/mame/video/route16.c50
-rw-r--r--src/mame/video/samcoupe.c (renamed from src/mess/video/samcoupe.c)0
-rw-r--r--src/mame/video/sega16sp.c36
-rw-r--r--src/mame/video/sega16sp.h19
-rw-r--r--src/mame/video/segaic16.c86
-rw-r--r--src/mame/video/segaic16_road.c12
-rw-r--r--src/mame/video/segaic16_road.h2
-rw-r--r--src/mame/video/segas32.c4
-rw-r--r--src/mame/video/segaxbd.c6
-rw-r--r--src/mame/video/senjyo.c90
-rw-r--r--src/mame/video/seta.c9
-rw-r--r--src/mame/video/shadfrce.c56
-rw-r--r--src/mame/video/special.c (renamed from src/mess/video/special.c)0
-rw-r--r--src/mame/video/spectrum.c (renamed from src/mess/video/spectrum.c)0
-rw-r--r--src/mame/video/spy.c30
-rw-r--r--src/mame/video/ssystem3.c (renamed from src/mess/video/ssystem3.c)4
-rw-r--r--src/mame/video/starcrus.c2
-rw-r--r--src/mame/video/stic.c (renamed from src/mess/video/stic.c)0
-rw-r--r--src/mame/video/stic.h (renamed from src/mess/video/stic.h)0
-rw-r--r--src/mame/video/suna8.c261
-rw-r--r--src/mame/video/super80.c (renamed from src/mess/video/super80.c)0
-rw-r--r--src/mame/video/superqix.c9
-rw-r--r--src/mame/video/system1.c48
-rw-r--r--src/mame/video/taitoair.c32
-rw-r--r--src/mame/video/tank8.c18
-rw-r--r--src/mame/video/tc0100scn.c1
-rw-r--r--src/mame/video/tc0110pcr.c1
-rw-r--r--src/mame/video/tc0150rod.c1
-rw-r--r--src/mame/video/tc0180vcu.c1
-rw-r--r--src/mame/video/tc0280grd.c1
-rw-r--r--src/mame/video/tc0360pri.c1
-rw-r--r--src/mame/video/tc0480scp.c1
-rw-r--r--src/mame/video/tecmo_spr.c13
-rw-r--r--src/mame/video/tecmo_spr.h6
-rw-r--r--src/mame/video/thomson.c (renamed from src/mess/video/thomson.c)12
-rw-r--r--src/mame/video/thunderx.c4
-rw-r--r--src/mame/video/ti85.c (renamed from src/mess/video/ti85.c)0
-rw-r--r--src/mame/video/timex.c (renamed from src/mess/video/timex.c)0
-rw-r--r--src/mame/video/tmc1800.c (renamed from src/mess/video/tmc1800.c)0
-rw-r--r--src/mame/video/tmc600.c (renamed from src/mess/video/tmc600.c)0
-rw-r--r--src/mame/video/trs80.c (renamed from src/mess/video/trs80.c)0
-rw-r--r--src/mame/video/tutankhm.c32
-rw-r--r--src/mame/video/tx0.c (renamed from src/mess/video/tx0.c)2
-rw-r--r--src/mame/video/ultraman.c40
-rw-r--r--src/mame/video/ut88.c (renamed from src/mess/video/ut88.c)0
-rw-r--r--src/mame/video/uv201.c (renamed from src/mess/video/uv201.c)0
-rw-r--r--src/mame/video/uv201.h (renamed from src/mess/video/uv201.h)0
-rw-r--r--src/mame/video/v1050.c (renamed from src/mess/video/v1050.c)0
-rw-r--r--src/mame/video/vc4000.c (renamed from src/mess/video/vc4000.c)2
-rw-r--r--src/mame/video/vector06.c (renamed from src/mess/video/vector06.c)0
-rw-r--r--src/mame/video/vicdual.c2
-rw-r--r--src/mame/video/vsystem_spr.c6
-rw-r--r--src/mame/video/vtech2.c (renamed from src/mess/video/vtech2.c)0
-rw-r--r--src/mame/video/vtvideo.c (renamed from src/mess/video/vtvideo.c)0
-rw-r--r--src/mame/video/vtvideo.h (renamed from src/mess/video/vtvideo.h)0
-rw-r--r--src/mame/video/wswan_video.c (renamed from src/mess/video/wswan_video.c)0
-rw-r--r--src/mame/video/wswan_video.h (renamed from src/mess/video/wswan_video.h)0
-rw-r--r--src/mame/video/x68k.c (renamed from src/mess/video/x68k.c)0
-rw-r--r--src/mame/video/xxmissio.c9
-rw-r--r--src/mame/video/z88.c (renamed from src/mess/video/z88.c)0
-rw-r--r--src/mame/video/zx.c (renamed from src/mess/video/zx.c)0
-rw-r--r--src/mame/video/zx8301.c (renamed from src/mess/video/zx8301.c)0
-rw-r--r--src/mame/video/zx8301.h (renamed from src/mess/video/zx8301.h)0
-rw-r--r--src/mess/drivers/arcadia.c842
-rw-r--r--src/mess/drivers/bcs3.c528
-rw-r--r--src/mess/drivers/br8641.c64
-rw-r--r--src/mess/drivers/camplynx.c660
-rw-r--r--src/mess/drivers/daruma.c169
-rw-r--r--src/mess/drivers/eti660.c244
-rw-r--r--src/mess/drivers/i7000.c401
-rw-r--r--src/mess/drivers/mephisto.c566
-rw-r--r--src/mess/drivers/rainbow.c2465
-rw-r--r--src/mess/drivers/rambo.c227
-rw-r--r--src/mess/drivers/replicator.c751
-rw-r--r--src/mess/drivers/xbox.c224
-rw-r--r--src/mess/includes/ace.h80
-rw-r--r--src/mess/layout/4004clk.lay18
-rw-r--r--src/mess/layout/aim65.lay100
-rw-r--r--src/mess/layout/supercon.lay18
-rw-r--r--src/mess/layout/tb303.lay20
-rw-r--r--src/mess/machine/orao.c79
-rw-r--r--src/mess/machine/ti99/speech8.c163
-rw-r--r--src/mess/machine/ti99/speech8.h67
-rw-r--r--src/mess/video/pmd85.c69
-rw-r--r--src/osd/modules/debugger/osx/debugview.m3
-rw-r--r--src/osd/modules/debugger/osx/debugwindowhandler.m3
-rw-r--r--src/osd/modules/debugger/osx/pointsviewer.m4
-rw-r--r--src/osd/modules/debugger/win/debugviewinfo.c24
-rw-r--r--src/osd/modules/debugger/win/debugwininfo.c8
-rw-r--r--src/osd/modules/debugger/win/editwininfo.c4
-rw-r--r--src/osd/modules/netdev/pcap.c9
-rw-r--r--src/osd/modules/render/d3d/d3dhlsl.c2
-rw-r--r--src/osd/modules/render/drawbgfx.c6
-rw-r--r--src/osd/modules/render/drawogl.c3
-rw-r--r--src/osd/osdcomm.h2
-rw-r--r--src/osd/osdcore.h19
-rw-r--r--src/osd/osdmini/minifile.c28
-rw-r--r--src/osd/sdl/input.c7
-rw-r--r--src/osd/sdl/man/castool.12
-rw-r--r--src/osd/sdl/man/chdman.12
-rw-r--r--src/osd/sdl/man/floptool.12
-rw-r--r--src/osd/sdl/man/imgtool.12
-rw-r--r--src/osd/sdl/man/jedutil.12
-rw-r--r--src/osd/sdl/man/ldresample.12
-rw-r--r--src/osd/sdl/man/ldverify.12
-rw-r--r--src/osd/sdl/man/mame.62
-rw-r--r--src/osd/sdl/man/romcmp.12
-rw-r--r--src/osd/sdl/man/testkeys.12
-rw-r--r--src/osd/sdl/sdlfile.c19
-rw-r--r--src/osd/sdl/sdlfile.h1
-rw-r--r--src/osd/sdl/sdlptty_os2.c5
-rw-r--r--src/osd/sdl/sdlptty_unix.c124
-rw-r--r--src/osd/windows/input.c45
-rw-r--r--src/osd/windows/output.c8
-rw-r--r--src/osd/windows/window.c8
-rw-r--r--src/osd/windows/winfile.c8
-rw-r--r--src/osd/windows/winmain.c3
-rw-r--r--src/osd/windows/winmain.h2
-rw-r--r--src/osd/windows/winutil.c13
-rw-r--r--src/osd/windows/winutil.h1
-rw-r--r--src/tools/castool.c (renamed from src/mess/tools/castool/main.c)0
-rw-r--r--src/tools/floptool.c (renamed from src/mess/tools/floptool/main.c)0
-rw-r--r--src/tools/imgtool/charconv.c (renamed from src/mess/tools/imgtool/charconv.c)0
-rw-r--r--src/tools/imgtool/charconv.h (renamed from src/mess/tools/imgtool/charconv.h)0
-rw-r--r--src/tools/imgtool/filtbas.c (renamed from src/mess/tools/imgtool/filtbas.c)0
-rw-r--r--src/tools/imgtool/filteoln.c (renamed from src/mess/tools/imgtool/filteoln.c)0
-rw-r--r--src/tools/imgtool/filter.c (renamed from src/mess/tools/imgtool/filter.c)0
-rw-r--r--src/tools/imgtool/filter.h (renamed from src/mess/tools/imgtool/filter.h)0
-rw-r--r--src/tools/imgtool/formats/coco_dsk.c (renamed from src/mess/tools/imgtool/formats/coco_dsk.c)0
-rw-r--r--src/tools/imgtool/formats/coco_dsk.h (renamed from src/mess/tools/imgtool/formats/coco_dsk.h)0
-rw-r--r--src/tools/imgtool/formats/vt_dsk.c (renamed from src/mess/tools/imgtool/formats/vt_dsk.c)0
-rw-r--r--src/tools/imgtool/formats/vt_dsk.h (renamed from src/mess/tools/imgtool/formats/vt_dsk.h)0
-rw-r--r--src/tools/imgtool/iflopimg.c (renamed from src/mess/tools/imgtool/iflopimg.c)0
-rw-r--r--src/tools/imgtool/iflopimg.h (renamed from src/mess/tools/imgtool/iflopimg.h)0
-rw-r--r--src/tools/imgtool/imghd.c (renamed from src/mess/tools/imgtool/imghd.c)0
-rw-r--r--src/tools/imgtool/imghd.h (renamed from src/mess/tools/imgtool/imghd.h)0
-rw-r--r--src/tools/imgtool/imgterrs.c (renamed from src/mess/tools/imgtool/imgterrs.c)0
-rw-r--r--src/tools/imgtool/imgterrs.h (renamed from src/mess/tools/imgtool/imgterrs.h)0
-rw-r--r--src/tools/imgtool/imgtool.c (renamed from src/mess/tools/imgtool/imgtool.c)0
-rw-r--r--src/tools/imgtool/imgtool.h (renamed from src/mess/tools/imgtool/imgtool.h)0
-rw-r--r--src/tools/imgtool/library.c (renamed from src/mess/tools/imgtool/library.c)0
-rw-r--r--src/tools/imgtool/library.h (renamed from src/mess/tools/imgtool/library.h)0
-rw-r--r--src/tools/imgtool/main.c (renamed from src/mess/tools/imgtool/main.c)0
-rw-r--r--src/tools/imgtool/main.h (renamed from src/mess/tools/imgtool/main.h)0
-rw-r--r--src/tools/imgtool/modules.c (renamed from src/mess/tools/imgtool/modules.c)0
-rw-r--r--src/tools/imgtool/modules.h (renamed from src/mess/tools/imgtool/modules.h)0
-rw-r--r--src/tools/imgtool/modules/amiga.c (renamed from src/mess/tools/imgtool/modules/amiga.c)0
-rw-r--r--src/tools/imgtool/modules/bml3.c (renamed from src/mess/tools/imgtool/modules/bml3.c)0
-rw-r--r--src/tools/imgtool/modules/concept.c (renamed from src/mess/tools/imgtool/modules/concept.c)0
-rw-r--r--src/tools/imgtool/modules/cybiko.c (renamed from src/mess/tools/imgtool/modules/cybiko.c)0
-rw-r--r--src/tools/imgtool/modules/cybikoxt.c (renamed from src/mess/tools/imgtool/modules/cybikoxt.c)0
-rw-r--r--src/tools/imgtool/modules/fat.c (renamed from src/mess/tools/imgtool/modules/fat.c)0
-rw-r--r--src/tools/imgtool/modules/fat.h (renamed from src/mess/tools/imgtool/modules/fat.h)0
-rw-r--r--src/tools/imgtool/modules/hp48.c (renamed from src/mess/tools/imgtool/modules/hp48.c)0
-rw-r--r--src/tools/imgtool/modules/mac.c (renamed from src/mess/tools/imgtool/modules/mac.c)0
-rw-r--r--src/tools/imgtool/modules/macbin.c (renamed from src/mess/tools/imgtool/modules/macbin.c)0
-rw-r--r--src/tools/imgtool/modules/macutil.c (renamed from src/mess/tools/imgtool/modules/macutil.c)0
-rw-r--r--src/tools/imgtool/modules/macutil.h (renamed from src/mess/tools/imgtool/modules/macutil.h)0
-rw-r--r--src/tools/imgtool/modules/os9.c (renamed from src/mess/tools/imgtool/modules/os9.c)0
-rw-r--r--src/tools/imgtool/modules/pc_flop.c (renamed from src/mess/tools/imgtool/modules/pc_flop.c)0
-rw-r--r--src/tools/imgtool/modules/pc_hard.c (renamed from src/mess/tools/imgtool/modules/pc_hard.c)0
-rw-r--r--src/tools/imgtool/modules/prodos.c (renamed from src/mess/tools/imgtool/modules/prodos.c)0
-rw-r--r--src/tools/imgtool/modules/psion.c (renamed from src/mess/tools/imgtool/modules/psion.c)0
-rw-r--r--src/tools/imgtool/modules/rsdos.c (renamed from src/mess/tools/imgtool/modules/rsdos.c)0
-rw-r--r--src/tools/imgtool/modules/thomson.c (renamed from src/mess/tools/imgtool/modules/thomson.c)0
-rw-r--r--src/tools/imgtool/modules/ti99.c (renamed from src/mess/tools/imgtool/modules/ti99.c)0
-rw-r--r--src/tools/imgtool/modules/ti990hd.c (renamed from src/mess/tools/imgtool/modules/ti990hd.c)0
-rw-r--r--src/tools/imgtool/modules/vzdos.c (renamed from src/mess/tools/imgtool/modules/vzdos.c)0
-rw-r--r--src/tools/imgtool/stream.c (renamed from src/mess/tools/imgtool/stream.c)0
-rw-r--r--src/tools/imgtool/stream.h (renamed from src/mess/tools/imgtool/stream.h)0
-rw-r--r--src/version.c2
6745 files changed, 101495 insertions, 62044 deletions
diff --git a/src/build/file2str.py b/src/build/file2str.py
deleted file mode 100644
index 7417f338328..00000000000
--- a/src/build/file2str.py
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/python
-##
-## license:BSD-3-Clause
-## copyright-holders:Aaron Giles, Andrew Gardner
-
-from __future__ import with_statement
-
-import sys
-import os
-
-if len(sys.argv) < 4:
- print('Usage:')
- print(' file2str <source.lay> <output.h> <varname> [<type>]')
- print('')
- print('The default <type> is char, with an assumed NULL terminator')
- sys.exit(0)
-
-terminate = 1
-srcfile = sys.argv[1]
-dstfile = sys.argv[2]
-varname = sys.argv[3]
-
-if len(sys.argv) >= 5:
- type = sys.argv[4]
- terminate = 0
-else:
- type = 'char'
-
-try:
- myfile = open(srcfile, 'rb')
-except IOError:
- sys.stderr.write("Unable to open source file '%s'\n" % srcfile)
- sys.exit(-1)
-
-byteCount = os.path.getsize(srcfile)
-try:
- dst = open(dstfile,'w')
- dst.write('extern const %s %s[];\n' % ( type, varname ))
- dst.write('const %s %s[] =\n{\n\t' % ( type, varname))
- offs = 0
- with open(srcfile, "rb") as src:
- while True:
- chunk = src.read(16)
- if chunk:
- for b in chunk:
- # For Python 2.x compatibility.
- if isinstance(b, str):
- b = ord(b)
- dst.write('0x%02x' % b)
- offs += 1
- if offs != byteCount:
- dst.write(',')
- else:
- break
- if offs != byteCount:
- dst.write('\n\t')
- if terminate == 1:
- dst.write(',0x00')
- dst.write('\n};\n')
- dst.close()
-except IOError:
- sys.stderr.write("Unable to open output file '%s'\n" % dstfile)
- sys.exit(-1)
diff --git a/src/build/makedep.py b/src/build/makedep.py
deleted file mode 100644
index d877dfe100e..00000000000
--- a/src/build/makedep.py
+++ /dev/null
@@ -1,314 +0,0 @@
-#!/usr/bin/python
-##
-## license:BSD-3-Clause
-## copyright-holders:Miodrag Milanovic
-
-from __future__ import with_statement
-
-import sys
-## to ignore include of emu.h add it always to list
-
-files_included = ['src/emu/emu.h']
-
-include_dirs = ['src/emu/', 'src/mame/', 'src/mess/']
-
-mappings = dict()
-
-deps_files_included = [ ]
-
-deps_include_dirs = ['src/mame/', 'src/mess/']
-
-components = [ ]
-
-drivers = [ ]
-
-def file_exists(root, srcfile, folder, inc_dir):
- includes = [ folder ]
- includes.extend(inc_dir)
- for line in includes:
- try:
- fp = open(root + line + srcfile, 'rb')
- fp.close()
- return line + srcfile
- except IOError:
- pass
- return ''
-
-def add_c_if_exists(root, fullname):
- try:
- fp = open(root + fullname, 'rb')
- fp.close()
- deps_files_included.append(fullname)
- except IOError:
- pass
-
-def add_rest_if_exists(root, srcfile,folder):
- t = srcfile.rsplit('/', 2)
- if t[1]=='includes':
- t[2] = t[2].replace('.h','.c')
- t[1] = 'drivers'
- add_c_if_exists(root,"/".join(t))
- parse_file_for_deps(root, "/".join(t), folder)
- t[1] = 'machine'
- add_c_if_exists(root,"/".join(t))
- parse_file_for_deps(root, "/".join(t), folder)
- t[1] = 'video'
- add_c_if_exists(root,"/".join(t))
- parse_file_for_deps(root, "/".join(t), folder)
- t[1] = 'audio'
- add_c_if_exists(root,"/".join(t))
- parse_file_for_deps(root, "/".join(t), folder)
-
-def parse_file_for_deps(root, srcfile, folder):
- try:
- fp = open(root + srcfile, 'rb')
- except IOError:
- return 1
- in_comment = 0
- linenum = 0
- for line in fp.readlines():
- content = ''
- linenum+=1
- srcptr = 0
- while srcptr < len(line):
- c = line[srcptr]
- srcptr+=1
- if c==13 or c==10:
- if c==13 and line[srcptr]==10:
- srcptr+=1
- continue
- if c==' ' or c==9:
- continue
- if in_comment==1 and c=='*' and line[srcptr]=='/' :
- srcptr+=1
- in_comment = 0
- continue
- if in_comment:
- continue
- if c=='/' and line[srcptr]=='*' :
- srcptr+=1
- in_comment = 1
- continue
- if c=='/' and line[srcptr]=='/' :
- break
- content += c
- content = content.strip()
- if len(content)>0:
- if content.startswith('#include'):
- name = content[8:]
- name = name.replace('"','')
- fullname = file_exists(root, name, folder,deps_include_dirs)
- if fullname in deps_files_included:
- continue
- if fullname!='':
- deps_files_included.append(fullname)
- add_c_if_exists(root, fullname.replace('.h','.c'))
- add_rest_if_exists(root, fullname,folder)
- newfolder = fullname.rsplit('/', 1)[0] + '/'
- parse_file_for_deps(root, fullname, newfolder)
- continue
- fp.close()
- return 0
-
-def parse_file(root, srcfile, folder):
- try:
- fp = open(root + srcfile, 'rb')
- except IOError:
- return 1
- in_comment = 0
- linenum = 0
- for line in fp.readlines():
- content = ''
- linenum+=1
- srcptr = 0
- while srcptr < len(line):
- c = line[srcptr]
- srcptr+=1
- if c==13 or c==10:
- if c==13 and line[srcptr]==10:
- srcptr+=1
- continue
- if c==' ' or c==9:
- continue
- if in_comment==1 and c=='*' and line[srcptr]=='/' :
- srcptr+=1
- in_comment = 0
- continue
- if in_comment:
- continue
- if c=='/' and line[srcptr]=='*' :
- srcptr+=1
- in_comment = 1
- continue
- if c=='/' and line[srcptr]=='/' :
- break
- content += c
- content = content.strip()
- if len(content)>0:
- if content.startswith('#include'):
- name = content[8:]
- name = name.replace('"','')
- fullname = file_exists(root, name, folder,include_dirs)
- if fullname in files_included:
- continue
- if "src/emu/netlist/" in fullname:
- continue
- if fullname!='':
- if fullname in mappings.keys():
- if not(mappings[fullname] in components):
- components.append(mappings[fullname])
- files_included.append(fullname)
- newfolder = fullname.rsplit('/', 1)[0] + '/'
- parse_file(root, fullname, newfolder)
- if (fullname.endswith('.h')):
- parse_file(root, fullname.replace('.h','.c'), newfolder)
- continue
- fp.close()
- return 0
-
-def parse_file_for_drivers(root, srcfile):
- try:
- fp = open(root + srcfile, 'rb')
- except IOError:
- sys.stderr.write("Unable to open source file '%s'\n" % srcfile)
- return 1
- in_comment = 0
- linenum = 0
- for line in fp.readlines():
- content = ''
- linenum+=1
- srcptr = 0
- while srcptr < len(line):
- c = line[srcptr]
- srcptr+=1
- if c==13 or c==10:
- if c==13 and line[srcptr]==10:
- srcptr+=1
- continue
- if c==' ' or c==9:
- continue
- if in_comment==1 and c=='*' and line[srcptr]=='/' :
- srcptr+=1
- in_comment = 0
- continue
- if in_comment:
- continue
- if c=='/' and line[srcptr]=='*' :
- srcptr+=1
- in_comment = 1
- continue
- if c=='/' and line[srcptr]=='/' :
- break
- content += c
- content = content.strip()
- if len(content)>0:
- if content.startswith('COMP') or content.startswith('CONS') or content.startswith('GAME') or content.startswith('SYST') or content.startswith('GAMEL'):
- name = content[4:]
- drivers.append(name.rsplit(',', 14)[1])
- return 0
-
-def parse_lua_file(srcfile):
- try:
- fp = open(srcfile, 'rb')
- except IOError:
- sys.stderr.write("Unable to open source file '%s'\n" % srcfile)
- return 1
- for line in fp.readlines():
- content = line.strip()
- if len(content)>0:
- if content.startswith('--@'):
- name = content[3:]
- mappings[name.rsplit(',', 1)[0]] = name.rsplit(',', 1)[1]
- return 0
-
-if len(sys.argv) < 5:
- print('Usage:')
- print(' makedep <root> <source.c> <type> <target>')
- sys.exit(0)
-
-root = sys.argv[1] + '/'
-
-parse_lua_file(root +'scripts/src/bus.lua')
-parse_lua_file(root +'scripts/src/cpu.lua')
-parse_lua_file(root +'scripts/src/machine.lua')
-parse_lua_file(root +'scripts/src/sound.lua')
-parse_lua_file(root +'scripts/src/video.lua')
-
-for filename in sys.argv[2].rsplit(',') :
- deps_files_included.append(filename.replace('\\','/'))
- parse_file_for_deps(root,filename,'')
-
-for filename in deps_files_included:
- parse_file(root,filename,'')
-
-for filename in sys.argv[2].rsplit(',') :
- parse_file_for_drivers(root,filename)
-
-
-# display output
-if sys.argv[3]=='drivers':
- # add a reference to the ___empty driver
- drivers.append("___empty")
-
- # start with a header
- print('#include "emu.h"\n')
- print('#include "drivenum.h"\n')
-
- #output the list of externs first
- for drv in sorted(drivers):
- print("GAME_EXTERN(%s);" % drv)
- print("")
-
- # then output the array
- print("const game_driver * const driver_list::s_drivers_sorted[%d] =" % len(drivers))
- print("{")
- for drv in sorted(drivers):
- print("\t&GAME_NAME(%s)," % drv)
- print("};")
- print("")
-
- # also output a global count
- print("int driver_list::s_driver_count = %d;\n" % len(drivers))
-
-if sys.argv[3]=='target':
- for line in components:
- sys.stdout.write("%s\n" % line)
- sys.stdout.write('\n')
- sys.stdout.write('function createProjects_mame_%s(_target, _subtarget)\n' % sys.argv[4])
- sys.stdout.write(' project ("mame_%s")\n' % sys.argv[4])
- sys.stdout.write(' targetsubdir(_target .."_" .. _subtarget)\n')
- sys.stdout.write(' kind (LIBTYPE)\n')
- sys.stdout.write(' uuid (os.uuid("drv-mame-%s"))\n' % sys.argv[4])
- sys.stdout.write(' \n')
- sys.stdout.write(' options {\n')
- sys.stdout.write(' "ForceCPP",\n')
- sys.stdout.write(' }\n')
- sys.stdout.write(' \n')
- sys.stdout.write(' includedirs {\n')
- sys.stdout.write(' MAME_DIR .. "src/osd",\n')
- sys.stdout.write(' MAME_DIR .. "src/emu",\n')
- sys.stdout.write(' MAME_DIR .. "src/mame",\n')
- sys.stdout.write(' MAME_DIR .. "src/mess",\n')
- sys.stdout.write(' MAME_DIR .. "src/lib",\n')
- sys.stdout.write(' MAME_DIR .. "src/lib/util",\n')
- sys.stdout.write(' MAME_DIR .. "3rdparty",\n')
- sys.stdout.write(' GEN_DIR .. "mame/layout",\n')
- sys.stdout.write(' GEN_DIR .. "mess/layout",\n')
- sys.stdout.write(' }\n')
- sys.stdout.write(' if _OPTIONS["with-bundled-zlib"] then\n')
- sys.stdout.write(' includedirs {\n')
- sys.stdout.write(' MAME_DIR .. "3rdparty/zlib",\n')
- sys.stdout.write(' }\n')
- sys.stdout.write(' end\n')
- sys.stdout.write('\n')
- sys.stdout.write(' files{\n')
- for line in deps_files_included:
- sys.stdout.write(' MAME_DIR .. "%s",\n' % line)
- sys.stdout.write(' }\n')
- sys.stdout.write('end\n')
- sys.stdout.write('\n')
- sys.stdout.write('function linkProjects_mame_%s(_target, _subtarget)\n' % sys.argv[4])
- sys.stdout.write(' links {\n')
- sys.stdout.write(' "mame_%s",\n' % sys.argv[4])
- sys.stdout.write(' }\n')
- sys.stdout.write('end\n')
diff --git a/src/build/makelist.py b/src/build/makelist.py
deleted file mode 100644
index 1f94814bf88..00000000000
--- a/src/build/makelist.py
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/python
-##
-## license:BSD-3-Clause
-## copyright-holders:Aaron Giles, Andrew Gardner
-
-from __future__ import with_statement
-
-import sys
-
-drivlist = []
-
-def parse_file(srcfile):
- try:
- fp = open(srcfile, 'rb')
- except IOError:
- sys.stderr.write("Unable to open source file '%s'\n" % srcfile)
- return 1
- in_comment = 0
- linenum = 0
- for line in fp.readlines():
- drivname = ''
- linenum+=1
- srcptr = 0
- while srcptr < len(line):
- c = line[srcptr]
- srcptr+=1
- if c==13 or c==10:
- if c==13 and line[srcptr]==10:
- srcptr+=1
- continue
- if c==' ' or c==9:
- continue
- if in_comment==1 and c=='*' and line[srcptr]=='/' :
- srcptr+=1
- in_comment = 0
- continue
- if in_comment:
- continue
- if c=='/' and line[srcptr]=='*' :
- srcptr+=1
- in_comment = 1
- continue
- if c=='/' and line[srcptr]=='/' :
- break
- drivname += c
- drivname = drivname.strip()
- if len(drivname)>0:
- if drivname[0]=='#':
- sys.stderr.write("Importing drivers from '%s'\n" % drivname[1:])
- parse_file(drivname[1:])
- continue
- if not all(((c >='a' and c<='z') or (c>='0' and c<='9') or c=='_') for c in drivname):
- sys.stderr.write("%s:%d - Invalid character in driver \"%s\"\n" % (srcfile, linenum, drivname))
- return 1
- else:
- drivlist.append(drivname)
- return 0
-
-
-if len(sys.argv) < 2:
- print('Usage:')
- print(' makelist <source.lst>')
- sys.exit(0)
-
-if parse_file(sys.argv[1]) :
- sys.exit(1)
-
-# output a count
-if len(drivlist)==0 :
- sys.stderr.write("No drivers found\n")
- sys.exit(1)
-
-sys.stderr.write("%d drivers found\n" % len(drivlist))
-
-# add a reference to the ___empty driver
-drivlist.append("___empty")
-
-# start with a header
-print('#include "emu.h"\n')
-print('#include "drivenum.h"\n')
-
-#output the list of externs first
-for drv in sorted(drivlist):
- print("GAME_EXTERN(%s);" % drv)
-print("")
-
-# then output the array
-print("const game_driver * const driver_list::s_drivers_sorted[%d] =" % len(drivlist))
-print("{")
-for drv in sorted(drivlist):
- print("\t&GAME_NAME(%s)," % drv)
-print("};")
-print("")
-
-# also output a global count
-print("int driver_list::s_driver_count = %d;\n" % len(drivlist))
diff --git a/src/build/png.py b/src/build/png.py
deleted file mode 100644
index f096a1dbdf5..00000000000
--- a/src/build/png.py
+++ /dev/null
@@ -1,2783 +0,0 @@
-#!/usr/bin/env python
-
-# png.py - PNG encoder/decoder in pure Python
-#
-# Copyright (C) 2006 Johann C. Rocholl <johann@browsershots.org>
-# Portions Copyright (C) 2009 David Jones <drj@pobox.com>
-# And probably portions Copyright (C) 2006 Nicko van Someren <nicko@nicko.org>
-#
-# Original concept by Johann C. Rocholl.
-#
-# LICENCE (MIT)
-#
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this software and associated documentation files
-# (the "Software"), to deal in the Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, sublicense, and/or sell copies of the Software,
-# and to permit persons to whom the Software is furnished to do so,
-# subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-"""
-Pure Python PNG Reader/Writer
-
-This Python module implements support for PNG images (see PNG
-specification at http://www.w3.org/TR/2003/REC-PNG-20031110/ ). It reads
-and writes PNG files with all allowable bit depths
-(1/2/4/8/16/24/32/48/64 bits per pixel) and colour combinations:
-greyscale (1/2/4/8/16 bit); RGB, RGBA, LA (greyscale with alpha) with
-8/16 bits per channel; colour mapped images (1/2/4/8 bit).
-Adam7 interlacing is supported for reading and
-writing. A number of optional chunks can be specified (when writing)
-and understood (when reading): ``tRNS``, ``bKGD``, ``gAMA``.
-
-For help, type ``import png; help(png)`` in your python interpreter.
-
-A good place to start is the :class:`Reader` and :class:`Writer`
-classes.
-
-Requires Python 2.3. Limited support is available for Python 2.2, but
-not everything works. Best with Python 2.4 and higher. Installation is
-trivial, but see the ``README.txt`` file (with the source distribution)
-for details.
-
-This file can also be used as a command-line utility to convert
-`Netpbm <http://netpbm.sourceforge.net/>`_ PNM files to PNG, and the
-reverse conversion from PNG to PNM. The interface is similar to that
-of the ``pnmtopng`` program from Netpbm. Type ``python png.py --help``
-at the shell prompt for usage and a list of options.
-
-A note on spelling and terminology
-----------------------------------
-
-Generally British English spelling is used in the documentation. So
-that's "greyscale" and "colour". This not only matches the author's
-native language, it's also used by the PNG specification.
-
-The major colour models supported by PNG (and hence by PyPNG) are:
-greyscale, RGB, greyscale--alpha, RGB--alpha. These are sometimes
-referred to using the abbreviations: L, RGB, LA, RGBA. In this case
-each letter abbreviates a single channel: *L* is for Luminance or Luma
-or Lightness which is the channel used in greyscale images; *R*, *G*,
-*B* stand for Red, Green, Blue, the components of a colour image; *A*
-stands for Alpha, the opacity channel (used for transparency effects,
-but higher values are more opaque, so it makes sense to call it
-opacity).
-
-A note on formats
------------------
-
-When getting pixel data out of this module (reading) and presenting
-data to this module (writing) there are a number of ways the data could
-be represented as a Python value. Generally this module uses one of
-three formats called "flat row flat pixel", "boxed row flat pixel", and
-"boxed row boxed pixel". Basically the concern is whether each pixel
-and each row comes in its own little tuple (box), or not.
-
-Consider an image that is 3 pixels wide by 2 pixels high, and each pixel
-has RGB components:
-
-Boxed row flat pixel::
-
- list([R,G,B, R,G,B, R,G,B],
- [R,G,B, R,G,B, R,G,B])
-
-Each row appears as its own list, but the pixels are flattened so
-that three values for one pixel simply follow the three values for
-the previous pixel. This is the most common format used, because it
-provides a good compromise between space and convenience. PyPNG regards
-itself as at liberty to replace any sequence type with any sufficiently
-compatible other sequence type; in practice each row is an array (from
-the array module), and the outer list is sometimes an iterator rather
-than an explicit list (so that streaming is possible).
-
-Flat row flat pixel::
-
- [R,G,B, R,G,B, R,G,B,
- R,G,B, R,G,B, R,G,B]
-
-The entire image is one single giant sequence of colour values.
-Generally an array will be used (to save space), not a list.
-
-Boxed row boxed pixel::
-
- list([ (R,G,B), (R,G,B), (R,G,B) ],
- [ (R,G,B), (R,G,B), (R,G,B) ])
-
-Each row appears in its own list, but each pixel also appears in its own
-tuple. A serious memory burn in Python.
-
-In all cases the top row comes first, and for each row the pixels are
-ordered from left-to-right. Within a pixel the values appear in the
-order, R-G-B-A (or L-A for greyscale--alpha).
-
-There is a fourth format, mentioned because it is used internally,
-is close to what lies inside a PNG file itself, and has some support
-from the public API. This format is called packed. When packed,
-each row is a sequence of bytes (integers from 0 to 255), just as
-it is before PNG scanline filtering is applied. When the bit depth
-is 8 this is essentially the same as boxed row flat pixel; when the
-bit depth is less than 8, several pixels are packed into each byte;
-when the bit depth is 16 (the only value more than 8 that is supported
-by the PNG image format) each pixel value is decomposed into 2 bytes
-(and `packed` is a misnomer). This format is used by the
-:meth:`Writer.write_packed` method. It isn't usually a convenient
-format, but may be just right if the source data for the PNG image
-comes from something that uses a similar format (for example, 1-bit
-BMPs, or another PNG file).
-
-And now, my famous members
---------------------------
-"""
-
-# http://www.python.org/doc/2.2.3/whatsnew/node5.html
-from __future__ import generators
-
-__version__ = "0.0.17"
-
-from array import array
-try: # See :pyver:old
- import itertools
-except ImportError:
- pass
-import math
-# http://www.python.org/doc/2.4.4/lib/module-operator.html
-import operator
-import struct
-import sys
-import zlib
-# http://www.python.org/doc/2.4.4/lib/module-warnings.html
-import warnings
-try:
- # `cpngfilters` is a Cython module: it must be compiled by
- # Cython for this import to work.
- # If this import does work, then it overrides pure-python
- # filtering functions defined later in this file (see `class
- # pngfilters`).
- import cpngfilters as pngfilters
-except ImportError:
- pass
-
-
-__all__ = ['Image', 'Reader', 'Writer', 'write_chunks', 'from_array']
-
-
-# The PNG signature.
-# http://www.w3.org/TR/PNG/#5PNG-file-signature
-_signature = struct.pack('8B', 137, 80, 78, 71, 13, 10, 26, 10)
-
-_adam7 = ((0, 0, 8, 8),
- (4, 0, 8, 8),
- (0, 4, 4, 8),
- (2, 0, 4, 4),
- (0, 2, 2, 4),
- (1, 0, 2, 2),
- (0, 1, 1, 2))
-
-def group(s, n):
- # See http://www.python.org/doc/2.6/library/functions.html#zip
- return zip(*[iter(s)]*n)
-
-def isarray(x):
- """Same as ``isinstance(x, array)`` except on Python 2.2, where it
- always returns ``False``. This helps PyPNG work on Python 2.2.
- """
-
- try:
- return isinstance(x, array)
- except TypeError:
- # Because on Python 2.2 array.array is not a type.
- return False
-
-try:
- array.tobytes
-except AttributeError:
- try: # see :pyver:old
- array.tostring
- except AttributeError:
- def tostring(row):
- l = len(row)
- return struct.pack('%dB' % l, *row)
- else:
- def tostring(row):
- """Convert row of bytes to string. Expects `row` to be an
- ``array``.
- """
- return row.tostring()
-else:
- def tostring(row):
- """ Python3 definition, array.tostring() is deprecated in Python3
- """
- return row.tobytes()
-
-# Conditionally convert to bytes. Works on Python 2 and Python 3.
-try:
- bytes('', 'ascii')
- def strtobytes(x): return bytes(x, 'iso8859-1')
- def bytestostr(x): return str(x, 'iso8859-1')
-except (NameError, TypeError):
- # We get NameError when bytes() does not exist (most Python
- # 2.x versions), and TypeError when bytes() exists but is on
- # Python 2.x (when it is an alias for str() and takes at most
- # one argument).
- strtobytes = str
- bytestostr = str
-
-def interleave_planes(ipixels, apixels, ipsize, apsize):
- """
- Interleave (colour) planes, e.g. RGB + A = RGBA.
-
- Return an array of pixels consisting of the `ipsize` elements of
- data from each pixel in `ipixels` followed by the `apsize` elements
- of data from each pixel in `apixels`. Conventionally `ipixels`
- and `apixels` are byte arrays so the sizes are bytes, but it
- actually works with any arrays of the same type. The returned
- array is the same type as the input arrays which should be the
- same type as each other.
- """
-
- itotal = len(ipixels)
- atotal = len(apixels)
- newtotal = itotal + atotal
- newpsize = ipsize + apsize
- # Set up the output buffer
- # See http://www.python.org/doc/2.4.4/lib/module-array.html#l2h-1356
- out = array(ipixels.typecode)
- # It's annoying that there is no cheap way to set the array size :-(
- out.extend(ipixels)
- out.extend(apixels)
- # Interleave in the pixel data
- for i in range(ipsize):
- out[i:newtotal:newpsize] = ipixels[i:itotal:ipsize]
- for i in range(apsize):
- out[i+ipsize:newtotal:newpsize] = apixels[i:atotal:apsize]
- return out
-
-def check_palette(palette):
- """Check a palette argument (to the :class:`Writer` class)
- for validity. Returns the palette as a list if okay; raises an
- exception otherwise.
- """
-
- # None is the default and is allowed.
- if palette is None:
- return None
-
- p = list(palette)
- if not (0 < len(p) <= 256):
- raise ValueError("a palette must have between 1 and 256 entries")
- seen_triple = False
- for i,t in enumerate(p):
- if len(t) not in (3,4):
- raise ValueError(
- "palette entry %d: entries must be 3- or 4-tuples." % i)
- if len(t) == 3:
- seen_triple = True
- if seen_triple and len(t) == 4:
- raise ValueError(
- "palette entry %d: all 4-tuples must precede all 3-tuples" % i)
- for x in t:
- if int(x) != x or not(0 <= x <= 255):
- raise ValueError(
- "palette entry %d: values must be integer: 0 <= x <= 255" % i)
- return p
-
-def check_sizes(size, width, height):
- """Check that these arguments, in supplied, are consistent.
- Return a (width, height) pair.
- """
-
- if not size:
- return width, height
-
- if len(size) != 2:
- raise ValueError(
- "size argument should be a pair (width, height)")
- if width is not None and width != size[0]:
- raise ValueError(
- "size[0] (%r) and width (%r) should match when both are used."
- % (size[0], width))
- if height is not None and height != size[1]:
- raise ValueError(
- "size[1] (%r) and height (%r) should match when both are used."
- % (size[1], height))
- return size
-
-def check_color(c, greyscale, which):
- """Checks that a colour argument for transparent or
- background options is the right form. Returns the colour
- (which, if it's a bar integer, is "corrected" to a 1-tuple).
- """
-
- if c is None:
- return c
- if greyscale:
- try:
- len(c)
- except TypeError:
- c = (c,)
- if len(c) != 1:
- raise ValueError("%s for greyscale must be 1-tuple" %
- which)
- if not isinteger(c[0]):
- raise ValueError(
- "%s colour for greyscale must be integer" % which)
- else:
- if not (len(c) == 3 and
- isinteger(c[0]) and
- isinteger(c[1]) and
- isinteger(c[2])):
- raise ValueError(
- "%s colour must be a triple of integers" % which)
- return c
-
-class Error(Exception):
- def __str__(self):
- return self.__class__.__name__ + ': ' + ' '.join(self.args)
-
-class FormatError(Error):
- """Problem with input file format. In other words, PNG file does
- not conform to the specification in some way and is invalid.
- """
-
-class ChunkError(FormatError):
- pass
-
-
-class Writer:
- """
- PNG encoder in pure Python.
- """
-
- def __init__(self, width=None, height=None,
- size=None,
- greyscale=False,
- alpha=False,
- bitdepth=8,
- palette=None,
- transparent=None,
- background=None,
- gamma=None,
- compression=None,
- interlace=False,
- bytes_per_sample=None, # deprecated
- planes=None,
- colormap=None,
- maxval=None,
- chunk_limit=2**20,
- x_pixels_per_unit = None,
- y_pixels_per_unit = None,
- unit_is_meter = False):
- """
- Create a PNG encoder object.
-
- Arguments:
-
- width, height
- Image size in pixels, as two separate arguments.
- size
- Image size (w,h) in pixels, as single argument.
- greyscale
- Input data is greyscale, not RGB.
- alpha
- Input data has alpha channel (RGBA or LA).
- bitdepth
- Bit depth: from 1 to 16.
- palette
- Create a palette for a colour mapped image (colour type 3).
- transparent
- Specify a transparent colour (create a ``tRNS`` chunk).
- background
- Specify a default background colour (create a ``bKGD`` chunk).
- gamma
- Specify a gamma value (create a ``gAMA`` chunk).
- compression
- zlib compression level: 0 (none) to 9 (more compressed);
- default: -1 or None.
- interlace
- Create an interlaced image.
- chunk_limit
- Write multiple ``IDAT`` chunks to save memory.
- x_pixels_per_unit (pHYs chunk)
- Number of pixels a unit along the x axis
- y_pixels_per_unit (pHYs chunk)
- Number of pixels a unit along the y axis
- With x_pixel_unit, give the pixel size ratio
- unit_is_meter (pHYs chunk)
- Indicates if unit is meter or not
-
- The image size (in pixels) can be specified either by using the
- `width` and `height` arguments, or with the single `size`
- argument. If `size` is used it should be a pair (*width*,
- *height*).
-
- `greyscale` and `alpha` are booleans that specify whether
- an image is greyscale (or colour), and whether it has an
- alpha channel (or not).
-
- `bitdepth` specifies the bit depth of the source pixel values.
- Each source pixel value must be an integer between 0 and
- ``2**bitdepth-1``. For example, 8-bit images have values
- between 0 and 255. PNG only stores images with bit depths of
- 1,2,4,8, or 16. When `bitdepth` is not one of these values,
- the next highest valid bit depth is selected, and an ``sBIT``
- (significant bits) chunk is generated that specifies the
- original precision of the source image. In this case the
- supplied pixel values will be rescaled to fit the range of
- the selected bit depth.
-
- The details of which bit depth / colour model combinations the
- PNG file format supports directly, are somewhat arcane
- (refer to the PNG specification for full details). Briefly:
- "small" bit depths (1,2,4) are only allowed with greyscale and
- colour mapped images; colour mapped images cannot have bit depth
- 16.
-
- For colour mapped images (in other words, when the `palette`
- argument is specified) the `bitdepth` argument must match one of
- the valid PNG bit depths: 1, 2, 4, or 8. (It is valid to have a
- PNG image with a palette and an ``sBIT`` chunk, but the meaning
- is slightly different; it would be awkward to press the
- `bitdepth` argument into service for this.)
-
- The `palette` option, when specified, causes a colour mapped
- image to be created: the PNG colour type is set to 3; greyscale
- must not be set; alpha must not be set; transparent must not be
- set; the bit depth must be 1,2,4, or 8. When a colour mapped
- image is created, the pixel values are palette indexes and
- the `bitdepth` argument specifies the size of these indexes
- (not the size of the colour values in the palette).
-
- The palette argument value should be a sequence of 3- or
- 4-tuples. 3-tuples specify RGB palette entries; 4-tuples
- specify RGBA palette entries. If both 4-tuples and 3-tuples
- appear in the sequence then all the 4-tuples must come
- before all the 3-tuples. A ``PLTE`` chunk is created; if there
- are 4-tuples then a ``tRNS`` chunk is created as well. The
- ``PLTE`` chunk will contain all the RGB triples in the same
- sequence; the ``tRNS`` chunk will contain the alpha channel for
- all the 4-tuples, in the same sequence. Palette entries
- are always 8-bit.
-
- If specified, the `transparent` and `background` parameters must
- be a tuple with three integer values for red, green, blue, or
- a simple integer (or singleton tuple) for a greyscale image.
-
- If specified, the `gamma` parameter must be a positive number
- (generally, a float). A ``gAMA`` chunk will be created.
- Note that this will not change the values of the pixels as
- they appear in the PNG file, they are assumed to have already
- been converted appropriately for the gamma specified.
-
- The `compression` argument specifies the compression level to
- be used by the ``zlib`` module. Values from 1 to 9 specify
- compression, with 9 being "more compressed" (usually smaller
- and slower, but it doesn't always work out that way). 0 means
- no compression. -1 and ``None`` both mean that the default
- level of compession will be picked by the ``zlib`` module
- (which is generally acceptable).
-
- If `interlace` is true then an interlaced image is created
- (using PNG's so far only interace method, *Adam7*). This does
- not affect how the pixels should be presented to the encoder,
- rather it changes how they are arranged into the PNG file.
- On slow connexions interlaced images can be partially decoded
- by the browser to give a rough view of the image that is
- successively refined as more image data appears.
-
- .. note ::
-
- Enabling the `interlace` option requires the entire image
- to be processed in working memory.
-
- `chunk_limit` is used to limit the amount of memory used whilst
- compressing the image. In order to avoid using large amounts of
- memory, multiple ``IDAT`` chunks may be created.
- """
-
- # At the moment the `planes` argument is ignored;
- # its purpose is to act as a dummy so that
- # ``Writer(x, y, **info)`` works, where `info` is a dictionary
- # returned by Reader.read and friends.
- # Ditto for `colormap`.
-
- width, height = check_sizes(size, width, height)
- del size
-
- if width <= 0 or height <= 0:
- raise ValueError("width and height must be greater than zero")
- if not isinteger(width) or not isinteger(height):
- raise ValueError("width and height must be integers")
- # http://www.w3.org/TR/PNG/#7Integers-and-byte-order
- if width > 2**32-1 or height > 2**32-1:
- raise ValueError("width and height cannot exceed 2**32-1")
-
- if alpha and transparent is not None:
- raise ValueError(
- "transparent colour not allowed with alpha channel")
-
- if bytes_per_sample is not None:
- warnings.warn('please use bitdepth instead of bytes_per_sample',
- DeprecationWarning)
- if bytes_per_sample not in (0.125, 0.25, 0.5, 1, 2):
- raise ValueError(
- "bytes per sample must be .125, .25, .5, 1, or 2")
- bitdepth = int(8*bytes_per_sample)
- del bytes_per_sample
- if not isinteger(bitdepth) or bitdepth < 1 or 16 < bitdepth:
- raise ValueError("bitdepth (%r) must be a positive integer <= 16" %
- bitdepth)
-
- self.rescale = None
- palette = check_palette(palette)
- if palette:
- if bitdepth not in (1,2,4,8):
- raise ValueError("with palette, bitdepth must be 1, 2, 4, or 8")
- if transparent is not None:
- raise ValueError("transparent and palette not compatible")
- if alpha:
- raise ValueError("alpha and palette not compatible")
- if greyscale:
- raise ValueError("greyscale and palette not compatible")
- else:
- # No palette, check for sBIT chunk generation.
- if alpha or not greyscale:
- if bitdepth not in (8,16):
- targetbitdepth = (8,16)[bitdepth > 8]
- self.rescale = (bitdepth, targetbitdepth)
- bitdepth = targetbitdepth
- del targetbitdepth
- else:
- assert greyscale
- assert not alpha
- if bitdepth not in (1,2,4,8,16):
- if bitdepth > 8:
- targetbitdepth = 16
- elif bitdepth == 3:
- targetbitdepth = 4
- else:
- assert bitdepth in (5,6,7)
- targetbitdepth = 8
- self.rescale = (bitdepth, targetbitdepth)
- bitdepth = targetbitdepth
- del targetbitdepth
-
- if bitdepth < 8 and (alpha or not greyscale and not palette):
- raise ValueError(
- "bitdepth < 8 only permitted with greyscale or palette")
- if bitdepth > 8 and palette:
- raise ValueError(
- "bit depth must be 8 or less for images with palette")
-
- transparent = check_color(transparent, greyscale, 'transparent')
- background = check_color(background, greyscale, 'background')
-
- # It's important that the true boolean values (greyscale, alpha,
- # colormap, interlace) are converted to bool because Iverson's
- # convention is relied upon later on.
- self.width = width
- self.height = height
- self.transparent = transparent
- self.background = background
- self.gamma = gamma
- self.greyscale = bool(greyscale)
- self.alpha = bool(alpha)
- self.colormap = bool(palette)
- self.bitdepth = int(bitdepth)
- self.compression = compression
- self.chunk_limit = chunk_limit
- self.interlace = bool(interlace)
- self.palette = palette
- self.x_pixels_per_unit = x_pixels_per_unit
- self.y_pixels_per_unit = y_pixels_per_unit
- self.unit_is_meter = bool(unit_is_meter)
-
- self.color_type = 4*self.alpha + 2*(not greyscale) + 1*self.colormap
- assert self.color_type in (0,2,3,4,6)
-
- self.color_planes = (3,1)[self.greyscale or self.colormap]
- self.planes = self.color_planes + self.alpha
- # :todo: fix for bitdepth < 8
- self.psize = (self.bitdepth/8) * self.planes
-
- def make_palette(self):
- """Create the byte sequences for a ``PLTE`` and if necessary a
- ``tRNS`` chunk. Returned as a pair (*p*, *t*). *t* will be
- ``None`` if no ``tRNS`` chunk is necessary.
- """
-
- p = array('B')
- t = array('B')
-
- for x in self.palette:
- p.extend(x[0:3])
- if len(x) > 3:
- t.append(x[3])
- p = tostring(p)
- t = tostring(t)
- if t:
- return p,t
- return p,None
-
- def write(self, outfile, rows):
- """Write a PNG image to the output file. `rows` should be
- an iterable that yields each row in boxed row flat pixel
- format. The rows should be the rows of the original image,
- so there should be ``self.height`` rows of ``self.width *
- self.planes`` values. If `interlace` is specified (when
- creating the instance), then an interlaced PNG file will
- be written. Supply the rows in the normal image order;
- the interlacing is carried out internally.
-
- .. note ::
-
- Interlacing will require the entire image to be in working
- memory.
- """
-
- if self.interlace:
- fmt = 'BH'[self.bitdepth > 8]
- a = array(fmt, itertools.chain(*rows))
- return self.write_array(outfile, a)
-
- nrows = self.write_passes(outfile, rows)
- if nrows != self.height:
- raise ValueError(
- "rows supplied (%d) does not match height (%d)" %
- (nrows, self.height))
-
- def write_passes(self, outfile, rows, packed=False):
- """
- Write a PNG image to the output file.
-
- Most users are expected to find the :meth:`write` or
- :meth:`write_array` method more convenient.
-
- The rows should be given to this method in the order that
- they appear in the output file. For straightlaced images,
- this is the usual top to bottom ordering, but for interlaced
- images the rows should have already been interlaced before
- passing them to this function.
-
- `rows` should be an iterable that yields each row. When
- `packed` is ``False`` the rows should be in boxed row flat pixel
- format; when `packed` is ``True`` each row should be a packed
- sequence of bytes.
- """
-
- # http://www.w3.org/TR/PNG/#5PNG-file-signature
- outfile.write(_signature)
-
- # http://www.w3.org/TR/PNG/#11IHDR
- write_chunk(outfile, 'IHDR',
- struct.pack("!2I5B", self.width, self.height,
- self.bitdepth, self.color_type,
- 0, 0, self.interlace))
-
- # See :chunk:order
- # http://www.w3.org/TR/PNG/#11gAMA
- if self.gamma is not None:
- write_chunk(outfile, 'gAMA',
- struct.pack("!L", int(round(self.gamma*1e5))))
-
- # See :chunk:order
- # http://www.w3.org/TR/PNG/#11sBIT
- if self.rescale:
- write_chunk(outfile, 'sBIT',
- struct.pack('%dB' % self.planes,
- *[self.rescale[0]]*self.planes))
-
- # :chunk:order: Without a palette (PLTE chunk), ordering is
- # relatively relaxed. With one, gAMA chunk must precede PLTE
- # chunk which must precede tRNS and bKGD.
- # See http://www.w3.org/TR/PNG/#5ChunkOrdering
- if self.palette:
- p,t = self.make_palette()
- write_chunk(outfile, 'PLTE', p)
- if t:
- # tRNS chunk is optional. Only needed if palette entries
- # have alpha.
- write_chunk(outfile, 'tRNS', t)
-
- # http://www.w3.org/TR/PNG/#11tRNS
- if self.transparent is not None:
- if self.greyscale:
- write_chunk(outfile, 'tRNS',
- struct.pack("!1H", *self.transparent))
- else:
- write_chunk(outfile, 'tRNS',
- struct.pack("!3H", *self.transparent))
-
- # http://www.w3.org/TR/PNG/#11bKGD
- if self.background is not None:
- if self.greyscale:
- write_chunk(outfile, 'bKGD',
- struct.pack("!1H", *self.background))
- else:
- write_chunk(outfile, 'bKGD',
- struct.pack("!3H", *self.background))
-
- # http://www.w3.org/TR/PNG/#11pHYs
- if self.x_pixels_per_unit is not None and self.y_pixels_per_unit is not None:
- tup = (self.x_pixels_per_unit, self.y_pixels_per_unit, int(self.unit_is_meter))
- write_chunk(outfile, 'pHYs', struct.pack("!LLB",*tup))
-
- # http://www.w3.org/TR/PNG/#11IDAT
- if self.compression is not None:
- compressor = zlib.compressobj(self.compression)
- else:
- compressor = zlib.compressobj()
-
- # Choose an extend function based on the bitdepth. The extend
- # function packs/decomposes the pixel values into bytes and
- # stuffs them onto the data array.
- data = array('B')
- if self.bitdepth == 8 or packed:
- extend = data.extend
- elif self.bitdepth == 16:
- # Decompose into bytes
- def extend(sl):
- fmt = '!%dH' % len(sl)
- data.extend(array('B', struct.pack(fmt, *sl)))
- else:
- # Pack into bytes
- assert self.bitdepth < 8
- # samples per byte
- spb = int(8/self.bitdepth)
- def extend(sl):
- a = array('B', sl)
- # Adding padding bytes so we can group into a whole
- # number of spb-tuples.
- l = float(len(a))
- extra = math.ceil(l / float(spb))*spb - l
- a.extend([0]*int(extra))
- # Pack into bytes
- l = group(a, spb)
- l = map(lambda e: reduce(lambda x,y:
- (x << self.bitdepth) + y, e), l)
- data.extend(l)
- if self.rescale:
- oldextend = extend
- factor = \
- float(2**self.rescale[1]-1) / float(2**self.rescale[0]-1)
- def extend(sl):
- oldextend(map(lambda x: int(round(factor*x)), sl))
-
- # Build the first row, testing mostly to see if we need to
- # changed the extend function to cope with NumPy integer types
- # (they cause our ordinary definition of extend to fail, so we
- # wrap it). See
- # http://code.google.com/p/pypng/issues/detail?id=44
- enumrows = enumerate(rows)
- del rows
-
- # First row's filter type.
- data.append(0)
- # :todo: Certain exceptions in the call to ``.next()`` or the
- # following try would indicate no row data supplied.
- # Should catch.
- i,row = enumrows.next()
- try:
- # If this fails...
- extend(row)
- except:
- # ... try a version that converts the values to int first.
- # Not only does this work for the (slightly broken) NumPy
- # types, there are probably lots of other, unknown, "nearly"
- # int types it works for.
- def wrapmapint(f):
- return lambda sl: f(map(int, sl))
- extend = wrapmapint(extend)
- del wrapmapint
- extend(row)
-
- for i,row in enumrows:
- # Add "None" filter type. Currently, it's essential that
- # this filter type be used for every scanline as we do not
- # mark the first row of a reduced pass image; that means we
- # could accidentally compute the wrong filtered scanline if
- # we used "up", "average", or "paeth" on such a line.
- data.append(0)
- extend(row)
- if len(data) > self.chunk_limit:
- compressed = compressor.compress(tostring(data))
- if len(compressed):
- write_chunk(outfile, 'IDAT', compressed)
- # Because of our very witty definition of ``extend``,
- # above, we must re-use the same ``data`` object. Hence
- # we use ``del`` to empty this one, rather than create a
- # fresh one (which would be my natural FP instinct).
- del data[:]
- if len(data):
- compressed = compressor.compress(tostring(data))
- else:
- compressed = strtobytes('')
- flushed = compressor.flush()
- if len(compressed) or len(flushed):
- write_chunk(outfile, 'IDAT', compressed + flushed)
- # http://www.w3.org/TR/PNG/#11IEND
- write_chunk(outfile, 'IEND')
- return i+1
-
- def write_array(self, outfile, pixels):
- """
- Write an array in flat row flat pixel format as a PNG file on
- the output file. See also :meth:`write` method.
- """
-
- if self.interlace:
- self.write_passes(outfile, self.array_scanlines_interlace(pixels))
- else:
- self.write_passes(outfile, self.array_scanlines(pixels))
-
- def write_packed(self, outfile, rows):
- """
- Write PNG file to `outfile`. The pixel data comes from `rows`
- which should be in boxed row packed format. Each row should be
- a sequence of packed bytes.
-
- Technically, this method does work for interlaced images but it
- is best avoided. For interlaced images, the rows should be
- presented in the order that they appear in the file.
-
- This method should not be used when the source image bit depth
- is not one naturally supported by PNG; the bit depth should be
- 1, 2, 4, 8, or 16.
- """
-
- if self.rescale:
- raise Error("write_packed method not suitable for bit depth %d" %
- self.rescale[0])
- return self.write_passes(outfile, rows, packed=True)
-
- def convert_pnm(self, infile, outfile):
- """
- Convert a PNM file containing raw pixel data into a PNG file
- with the parameters set in the writer object. Works for
- (binary) PGM, PPM, and PAM formats.
- """
-
- if self.interlace:
- pixels = array('B')
- pixels.fromfile(infile,
- (self.bitdepth/8) * self.color_planes *
- self.width * self.height)
- self.write_passes(outfile, self.array_scanlines_interlace(pixels))
- else:
- self.write_passes(outfile, self.file_scanlines(infile))
-
- def convert_ppm_and_pgm(self, ppmfile, pgmfile, outfile):
- """
- Convert a PPM and PGM file containing raw pixel data into a
- PNG outfile with the parameters set in the writer object.
- """
- pixels = array('B')
- pixels.fromfile(ppmfile,
- (self.bitdepth/8) * self.color_planes *
- self.width * self.height)
- apixels = array('B')
- apixels.fromfile(pgmfile,
- (self.bitdepth/8) *
- self.width * self.height)
- pixels = interleave_planes(pixels, apixels,
- (self.bitdepth/8) * self.color_planes,
- (self.bitdepth/8))
- if self.interlace:
- self.write_passes(outfile, self.array_scanlines_interlace(pixels))
- else:
- self.write_passes(outfile, self.array_scanlines(pixels))
-
- def file_scanlines(self, infile):
- """
- Generates boxed rows in flat pixel format, from the input file
- `infile`. It assumes that the input file is in a "Netpbm-like"
- binary format, and is positioned at the beginning of the first
- pixel. The number of pixels to read is taken from the image
- dimensions (`width`, `height`, `planes`) and the number of bytes
- per value is implied by the image `bitdepth`.
- """
-
- # Values per row
- vpr = self.width * self.planes
- row_bytes = vpr
- if self.bitdepth > 8:
- assert self.bitdepth == 16
- row_bytes *= 2
- fmt = '>%dH' % vpr
- def line():
- return array('H', struct.unpack(fmt, infile.read(row_bytes)))
- else:
- def line():
- scanline = array('B', infile.read(row_bytes))
- return scanline
- for y in range(self.height):
- yield line()
-
- def array_scanlines(self, pixels):
- """
- Generates boxed rows (flat pixels) from flat rows (flat pixels)
- in an array.
- """
-
- # Values per row
- vpr = self.width * self.planes
- stop = 0
- for y in range(self.height):
- start = stop
- stop = start + vpr
- yield pixels[start:stop]
-
- def array_scanlines_interlace(self, pixels):
- """
- Generator for interlaced scanlines from an array. `pixels` is
- the full source image in flat row flat pixel format. The
- generator yields each scanline of the reduced passes in turn, in
- boxed row flat pixel format.
- """
-
- # http://www.w3.org/TR/PNG/#8InterlaceMethods
- # Array type.
- fmt = 'BH'[self.bitdepth > 8]
- # Value per row
- vpr = self.width * self.planes
- for xstart, ystart, xstep, ystep in _adam7:
- if xstart >= self.width:
- continue
- # Pixels per row (of reduced image)
- ppr = int(math.ceil((self.width-xstart)/float(xstep)))
- # number of values in reduced image row.
- row_len = ppr*self.planes
- for y in range(ystart, self.height, ystep):
- if xstep == 1:
- offset = y * vpr
- yield pixels[offset:offset+vpr]
- else:
- row = array(fmt)
- # There's no easier way to set the length of an array
- row.extend(pixels[0:row_len])
- offset = y * vpr + xstart * self.planes
- end_offset = (y+1) * vpr
- skip = self.planes * xstep
- for i in range(self.planes):
- row[i::self.planes] = \
- pixels[offset+i:end_offset:skip]
- yield row
-
-def write_chunk(outfile, tag, data=strtobytes('')):
- """
- Write a PNG chunk to the output file, including length and
- checksum.
- """
-
- # http://www.w3.org/TR/PNG/#5Chunk-layout
- outfile.write(struct.pack("!I", len(data)))
- tag = strtobytes(tag)
- outfile.write(tag)
- outfile.write(data)
- checksum = zlib.crc32(tag)
- checksum = zlib.crc32(data, checksum)
- checksum &= 2**32-1
- outfile.write(struct.pack("!I", checksum))
-
-def write_chunks(out, chunks):
- """Create a PNG file by writing out the chunks."""
-
- out.write(_signature)
- for chunk in chunks:
- write_chunk(out, *chunk)
-
-def filter_scanline(type, line, fo, prev=None):
- """Apply a scanline filter to a scanline. `type` specifies the
- filter type (0 to 4); `line` specifies the current (unfiltered)
- scanline as a sequence of bytes; `prev` specifies the previous
- (unfiltered) scanline as a sequence of bytes. `fo` specifies the
- filter offset; normally this is size of a pixel in bytes (the number
- of bytes per sample times the number of channels), but when this is
- < 1 (for bit depths < 8) then the filter offset is 1.
- """
-
- assert 0 <= type < 5
-
- # The output array. Which, pathetically, we extend one-byte at a
- # time (fortunately this is linear).
- out = array('B', [type])
-
- def sub():
- ai = -fo
- for x in line:
- if ai >= 0:
- x = (x - line[ai]) & 0xff
- out.append(x)
- ai += 1
- def up():
- for i,x in enumerate(line):
- x = (x - prev[i]) & 0xff
- out.append(x)
- def average():
- ai = -fo
- for i,x in enumerate(line):
- if ai >= 0:
- x = (x - ((line[ai] + prev[i]) >> 1)) & 0xff
- else:
- x = (x - (prev[i] >> 1)) & 0xff
- out.append(x)
- ai += 1
- def paeth():
- # http://www.w3.org/TR/PNG/#9Filter-type-4-Paeth
- ai = -fo # also used for ci
- for i,x in enumerate(line):
- a = 0
- b = prev[i]
- c = 0
-
- if ai >= 0:
- a = line[ai]
- c = prev[ai]
- p = a + b - c
- pa = abs(p - a)
- pb = abs(p - b)
- pc = abs(p - c)
- if pa <= pb and pa <= pc:
- Pr = a
- elif pb <= pc:
- Pr = b
- else:
- Pr = c
-
- x = (x - Pr) & 0xff
- out.append(x)
- ai += 1
-
- if not prev:
- # We're on the first line. Some of the filters can be reduced
- # to simpler cases which makes handling the line "off the top"
- # of the image simpler. "up" becomes "none"; "paeth" becomes
- # "left" (non-trivial, but true). "average" needs to be handled
- # specially.
- if type == 2: # "up"
- type = 0
- elif type == 3:
- prev = [0]*len(line)
- elif type == 4: # "paeth"
- type = 1
- if type == 0:
- out.extend(line)
- elif type == 1:
- sub()
- elif type == 2:
- up()
- elif type == 3:
- average()
- else: # type == 4
- paeth()
- return out
-
-
-def from_array(a, mode=None, info={}):
- """Create a PNG :class:`Image` object from a 2- or 3-dimensional
- array. One application of this function is easy PIL-style saving:
- ``png.from_array(pixels, 'L').save('foo.png')``.
-
- .. note :
-
- The use of the term *3-dimensional* is for marketing purposes
- only. It doesn't actually work. Please bear with us. Meanwhile
- enjoy the complimentary snacks (on request) and please use a
- 2-dimensional array.
-
- Unless they are specified using the *info* parameter, the PNG's
- height and width are taken from the array size. For a 3 dimensional
- array the first axis is the height; the second axis is the width;
- and the third axis is the channel number. Thus an RGB image that is
- 16 pixels high and 8 wide will use an array that is 16x8x3. For 2
- dimensional arrays the first axis is the height, but the second axis
- is ``width*channels``, so an RGB image that is 16 pixels high and 8
- wide will use a 2-dimensional array that is 16x24 (each row will be
- 8*3==24 sample values).
-
- *mode* is a string that specifies the image colour format in a
- PIL-style mode. It can be:
-
- ``'L'``
- greyscale (1 channel)
- ``'LA'``
- greyscale with alpha (2 channel)
- ``'RGB'``
- colour image (3 channel)
- ``'RGBA'``
- colour image with alpha (4 channel)
-
- The mode string can also specify the bit depth (overriding how this
- function normally derives the bit depth, see below). Appending
- ``';16'`` to the mode will cause the PNG to be 16 bits per channel;
- any decimal from 1 to 16 can be used to specify the bit depth.
-
- When a 2-dimensional array is used *mode* determines how many
- channels the image has, and so allows the width to be derived from
- the second array dimension.
-
- The array is expected to be a ``numpy`` array, but it can be any
- suitable Python sequence. For example, a list of lists can be used:
- ``png.from_array([[0, 255, 0], [255, 0, 255]], 'L')``. The exact
- rules are: ``len(a)`` gives the first dimension, height;
- ``len(a[0])`` gives the second dimension; ``len(a[0][0])`` gives the
- third dimension, unless an exception is raised in which case a
- 2-dimensional array is assumed. It's slightly more complicated than
- that because an iterator of rows can be used, and it all still
- works. Using an iterator allows data to be streamed efficiently.
-
- The bit depth of the PNG is normally taken from the array element's
- datatype (but if *mode* specifies a bitdepth then that is used
- instead). The array element's datatype is determined in a way which
- is supposed to work both for ``numpy`` arrays and for Python
- ``array.array`` objects. A 1 byte datatype will give a bit depth of
- 8, a 2 byte datatype will give a bit depth of 16. If the datatype
- does not have an implicit size, for example it is a plain Python
- list of lists, as above, then a default of 8 is used.
-
- The *info* parameter is a dictionary that can be used to specify
- metadata (in the same style as the arguments to the
- :class:``png.Writer`` class). For this function the keys that are
- useful are:
-
- height
- overrides the height derived from the array dimensions and allows
- *a* to be an iterable.
- width
- overrides the width derived from the array dimensions.
- bitdepth
- overrides the bit depth derived from the element datatype (but
- must match *mode* if that also specifies a bit depth).
-
- Generally anything specified in the
- *info* dictionary will override any implicit choices that this
- function would otherwise make, but must match any explicit ones.
- For example, if the *info* dictionary has a ``greyscale`` key then
- this must be true when mode is ``'L'`` or ``'LA'`` and false when
- mode is ``'RGB'`` or ``'RGBA'``.
- """
-
- # We abuse the *info* parameter by modifying it. Take a copy here.
- # (Also typechecks *info* to some extent).
- info = dict(info)
-
- # Syntax check mode string.
- bitdepth = None
- try:
- # Assign the 'L' or 'RGBA' part to `gotmode`.
- if mode.startswith('L'):
- gotmode = 'L'
- mode = mode[1:]
- elif mode.startswith('RGB'):
- gotmode = 'RGB'
- mode = mode[3:]
- else:
- raise Error()
- if mode.startswith('A'):
- gotmode += 'A'
- mode = mode[1:]
-
- # Skip any optional ';'
- while mode.startswith(';'):
- mode = mode[1:]
-
- # Parse optional bitdepth
- if mode:
- try:
- bitdepth = int(mode)
- except (TypeError, ValueError):
- raise Error()
- except Error:
- raise Error("mode string should be 'RGB' or 'L;16' or similar.")
- mode = gotmode
-
- # Get bitdepth from *mode* if possible.
- if bitdepth:
- if info.get('bitdepth') and bitdepth != info['bitdepth']:
- raise Error("mode bitdepth (%d) should match info bitdepth (%d)." %
- (bitdepth, info['bitdepth']))
- info['bitdepth'] = bitdepth
-
- # Fill in and/or check entries in *info*.
- # Dimensions.
- if 'size' in info:
- # Check width, height, size all match where used.
- for dimension,axis in [('width', 0), ('height', 1)]:
- if dimension in info:
- if info[dimension] != info['size'][axis]:
- raise Error(
- "info[%r] should match info['size'][%r]." %
- (dimension, axis))
- info['width'],info['height'] = info['size']
- if 'height' not in info:
- try:
- l = len(a)
- except TypeError:
- raise Error(
- "len(a) does not work, supply info['height'] instead.")
- info['height'] = l
- # Colour format.
- if 'greyscale' in info:
- if bool(info['greyscale']) != ('L' in mode):
- raise Error("info['greyscale'] should match mode.")
- info['greyscale'] = 'L' in mode
- if 'alpha' in info:
- if bool(info['alpha']) != ('A' in mode):
- raise Error("info['alpha'] should match mode.")
- info['alpha'] = 'A' in mode
-
- planes = len(mode)
- if 'planes' in info:
- if info['planes'] != planes:
- raise Error("info['planes'] should match mode.")
-
- # In order to work out whether we the array is 2D or 3D we need its
- # first row, which requires that we take a copy of its iterator.
- # We may also need the first row to derive width and bitdepth.
- a,t = itertools.tee(a)
- row = t.next()
- del t
- try:
- row[0][0]
- threed = True
- testelement = row[0]
- except (IndexError, TypeError):
- threed = False
- testelement = row
- if 'width' not in info:
- if threed:
- width = len(row)
- else:
- width = len(row) // planes
- info['width'] = width
-
- # Not implemented yet
- assert not threed
-
- if 'bitdepth' not in info:
- try:
- dtype = testelement.dtype
- # goto the "else:" clause. Sorry.
- except AttributeError:
- try:
- # Try a Python array.array.
- bitdepth = 8 * testelement.itemsize
- except AttributeError:
- # We can't determine it from the array element's
- # datatype, use a default of 8.
- bitdepth = 8
- else:
- # If we got here without exception, we now assume that
- # the array is a numpy array.
- if dtype.kind == 'b':
- bitdepth = 1
- else:
- bitdepth = 8 * dtype.itemsize
- info['bitdepth'] = bitdepth
-
- for thing in 'width height bitdepth greyscale alpha'.split():
- assert thing in info
- return Image(a, info)
-
-# So that refugee's from PIL feel more at home. Not documented.
-fromarray = from_array
-
-class Image:
- """A PNG image. You can create an :class:`Image` object from
- an array of pixels by calling :meth:`png.from_array`. It can be
- saved to disk with the :meth:`save` method.
- """
-
- def __init__(self, rows, info):
- """
- .. note ::
-
- The constructor is not public. Please do not call it.
- """
-
- self.rows = rows
- self.info = info
-
- def save(self, file):
- """Save the image to *file*. If *file* looks like an open file
- descriptor then it is used, otherwise it is treated as a
- filename and a fresh file is opened.
-
- In general, you can only call this method once; after it has
- been called the first time and the PNG image has been saved, the
- source data will have been streamed, and cannot be streamed
- again.
- """
-
- w = Writer(**self.info)
-
- try:
- file.write
- def close(): pass
- except AttributeError:
- file = open(file, 'wb')
- def close(): file.close()
-
- try:
- w.write(file, self.rows)
- finally:
- close()
-
-class _readable:
- """
- A simple file-like interface for strings and arrays.
- """
-
- def __init__(self, buf):
- self.buf = buf
- self.offset = 0
-
- def read(self, n):
- r = self.buf[self.offset:self.offset+n]
- if isarray(r):
- r = r.tostring()
- self.offset += n
- return r
-
-
-class Reader:
- """
- PNG decoder in pure Python.
- """
-
- def __init__(self, _guess=None, **kw):
- """
- Create a PNG decoder object.
-
- The constructor expects exactly one keyword argument. If you
- supply a positional argument instead, it will guess the input
- type. You can choose among the following keyword arguments:
-
- filename
- Name of input file (a PNG file).
- file
- A file-like object (object with a read() method).
- bytes
- ``array`` or ``string`` with PNG data.
-
- """
- if ((_guess is not None and len(kw) != 0) or
- (_guess is None and len(kw) != 1)):
- raise TypeError("Reader() takes exactly 1 argument")
-
- # Will be the first 8 bytes, later on. See validate_signature.
- self.signature = None
- self.transparent = None
- # A pair of (len,type) if a chunk has been read but its data and
- # checksum have not (in other words the file position is just
- # past the 4 bytes that specify the chunk type). See preamble
- # method for how this is used.
- self.atchunk = None
-
- if _guess is not None:
- if isarray(_guess):
- kw["bytes"] = _guess
- elif isinstance(_guess, str):
- kw["filename"] = _guess
- elif hasattr(_guess, 'read'):
- kw["file"] = _guess
-
- if "filename" in kw:
- self.file = open(kw["filename"], "rb")
- elif "file" in kw:
- self.file = kw["file"]
- elif "bytes" in kw:
- self.file = _readable(kw["bytes"])
- else:
- raise TypeError("expecting filename, file or bytes array")
-
-
- def chunk(self, seek=None, lenient=False):
- """
- Read the next PNG chunk from the input file; returns a
- (*type*,*data*) tuple. *type* is the chunk's type as a string
- (all PNG chunk types are 4 characters long). *data* is the
- chunk's data content, as a string.
-
- If the optional `seek` argument is
- specified then it will keep reading chunks until it either runs
- out of file or finds the type specified by the argument. Note
- that in general the order of chunks in PNGs is unspecified, so
- using `seek` can cause you to miss chunks.
-
- If the optional `lenient` argument evaluates to True,
- checksum failures will raise warnings rather than exceptions.
- """
-
- self.validate_signature()
-
- while True:
- # http://www.w3.org/TR/PNG/#5Chunk-layout
- if not self.atchunk:
- self.atchunk = self.chunklentype()
- length,type = self.atchunk
- self.atchunk = None
- data = self.file.read(length)
- if len(data) != length:
- raise ChunkError('Chunk %s too short for required %i octets.'
- % (type, length))
- checksum = self.file.read(4)
- if len(checksum) != 4:
- raise ChunkError('Chunk %s too short for checksum.' % type)
- if seek and type != seek:
- continue
- verify = zlib.crc32(strtobytes(type))
- verify = zlib.crc32(data, verify)
- # Whether the output from zlib.crc32 is signed or not varies
- # according to hideous implementation details, see
- # http://bugs.python.org/issue1202 .
- # We coerce it to be positive here (in a way which works on
- # Python 2.3 and older).
- verify &= 2**32 - 1
- verify = struct.pack('!I', verify)
- if checksum != verify:
- (a, ) = struct.unpack('!I', checksum)
- (b, ) = struct.unpack('!I', verify)
- message = "Checksum error in %s chunk: 0x%08X != 0x%08X." % (type, a, b)
- if lenient:
- warnings.warn(message, RuntimeWarning)
- else:
- raise ChunkError(message)
- return type, data
-
- def chunks(self):
- """Return an iterator that will yield each chunk as a
- (*chunktype*, *content*) pair.
- """
-
- while True:
- t,v = self.chunk()
- yield t,v
- if t == 'IEND':
- break
-
- def undo_filter(self, filter_type, scanline, previous):
- """Undo the filter for a scanline. `scanline` is a sequence of
- bytes that does not include the initial filter type byte.
- `previous` is decoded previous scanline (for straightlaced
- images this is the previous pixel row, but for interlaced
- images, it is the previous scanline in the reduced image, which
- in general is not the previous pixel row in the final image).
- When there is no previous scanline (the first row of a
- straightlaced image, or the first row in one of the passes in an
- interlaced image), then this argument should be ``None``.
-
- The scanline will have the effects of filtering removed, and the
- result will be returned as a fresh sequence of bytes.
- """
-
- # :todo: Would it be better to update scanline in place?
- # Yes, with the Cython extension making the undo_filter fast,
- # updating scanline inplace makes the code 3 times faster
- # (reading 50 images of 800x800 went from 40s to 16s)
- result = scanline
-
- if filter_type == 0:
- return result
-
- if filter_type not in (1,2,3,4):
- raise FormatError('Invalid PNG Filter Type.'
- ' See http://www.w3.org/TR/2003/REC-PNG-20031110/#9Filters .')
-
- # Filter unit. The stride from one pixel to the corresponding
- # byte from the previous pixel. Normally this is the pixel
- # size in bytes, but when this is smaller than 1, the previous
- # byte is used instead.
- fu = max(1, self.psize)
-
- # For the first line of a pass, synthesize a dummy previous
- # line. An alternative approach would be to observe that on the
- # first line 'up' is the same as 'null', 'paeth' is the same
- # as 'sub', with only 'average' requiring any special case.
- if not previous:
- previous = array('B', [0]*len(scanline))
-
- def sub():
- """Undo sub filter."""
-
- ai = 0
- # Loop starts at index fu. Observe that the initial part
- # of the result is already filled in correctly with
- # scanline.
- for i in range(fu, len(result)):
- x = scanline[i]
- a = result[ai]
- result[i] = (x + a) & 0xff
- ai += 1
-
- def up():
- """Undo up filter."""
-
- for i in range(len(result)):
- x = scanline[i]
- b = previous[i]
- result[i] = (x + b) & 0xff
-
- def average():
- """Undo average filter."""
-
- ai = -fu
- for i in range(len(result)):
- x = scanline[i]
- if ai < 0:
- a = 0
- else:
- a = result[ai]
- b = previous[i]
- result[i] = (x + ((a + b) >> 1)) & 0xff
- ai += 1
-
- def paeth():
- """Undo Paeth filter."""
-
- # Also used for ci.
- ai = -fu
- for i in range(len(result)):
- x = scanline[i]
- if ai < 0:
- a = c = 0
- else:
- a = result[ai]
- c = previous[ai]
- b = previous[i]
- p = a + b - c
- pa = abs(p - a)
- pb = abs(p - b)
- pc = abs(p - c)
- if pa <= pb and pa <= pc:
- pr = a
- elif pb <= pc:
- pr = b
- else:
- pr = c
- result[i] = (x + pr) & 0xff
- ai += 1
-
- # Call appropriate filter algorithm. Note that 0 has already
- # been dealt with.
- (None,
- pngfilters.undo_filter_sub,
- pngfilters.undo_filter_up,
- pngfilters.undo_filter_average,
- pngfilters.undo_filter_paeth)[filter_type](fu, scanline, previous, result)
- return result
-
- def deinterlace(self, raw):
- """
- Read raw pixel data, undo filters, deinterlace, and flatten.
- Return in flat row flat pixel format.
- """
-
- # Values per row (of the target image)
- vpr = self.width * self.planes
-
- # Make a result array, and make it big enough. Interleaving
- # writes to the output array randomly (well, not quite), so the
- # entire output array must be in memory.
- fmt = 'BH'[self.bitdepth > 8]
- a = array(fmt, [0]*vpr*self.height)
- source_offset = 0
-
- for xstart, ystart, xstep, ystep in _adam7:
- if xstart >= self.width:
- continue
- # The previous (reconstructed) scanline. None at the
- # beginning of a pass to indicate that there is no previous
- # line.
- recon = None
- # Pixels per row (reduced pass image)
- ppr = int(math.ceil((self.width-xstart)/float(xstep)))
- # Row size in bytes for this pass.
- row_size = int(math.ceil(self.psize * ppr))
- for y in range(ystart, self.height, ystep):
- filter_type = raw[source_offset]
- source_offset += 1
- scanline = raw[source_offset:source_offset+row_size]
- source_offset += row_size
- recon = self.undo_filter(filter_type, scanline, recon)
- # Convert so that there is one element per pixel value
- flat = self.serialtoflat(recon, ppr)
- if xstep == 1:
- assert xstart == 0
- offset = y * vpr
- a[offset:offset+vpr] = flat
- else:
- offset = y * vpr + xstart * self.planes
- end_offset = (y+1) * vpr
- skip = self.planes * xstep
- for i in range(self.planes):
- a[offset+i:end_offset:skip] = \
- flat[i::self.planes]
- return a
-
- def iterboxed(self, rows):
- """Iterator that yields each scanline in boxed row flat pixel
- format. `rows` should be an iterator that yields the bytes of
- each row in turn.
- """
-
- def asvalues(raw):
- """Convert a row of raw bytes into a flat row. Result will
- be a freshly allocated object, not shared with
- argument.
- """
-
- if self.bitdepth == 8:
- return array('B', raw)
- if self.bitdepth == 16:
- raw = tostring(raw)
- return array('H', struct.unpack('!%dH' % (len(raw)//2), raw))
- assert self.bitdepth < 8
- width = self.width
- # Samples per byte
- spb = 8//self.bitdepth
- out = array('B')
- mask = 2**self.bitdepth - 1
- shifts = map(self.bitdepth.__mul__, reversed(range(spb)))
- for o in raw:
- out.extend(map(lambda i: mask&(o>>i), shifts))
- return out[:width]
-
- return itertools.imap(asvalues, rows)
-
- def serialtoflat(self, bytes, width=None):
- """Convert serial format (byte stream) pixel data to flat row
- flat pixel.
- """
-
- if self.bitdepth == 8:
- return bytes
- if self.bitdepth == 16:
- bytes = tostring(bytes)
- return array('H',
- struct.unpack('!%dH' % (len(bytes)//2), bytes))
- assert self.bitdepth < 8
- if width is None:
- width = self.width
- # Samples per byte
- spb = 8//self.bitdepth
- out = array('B')
- mask = 2**self.bitdepth - 1
- shifts = map(self.bitdepth.__mul__, reversed(range(spb)))
- l = width
- for o in bytes:
- out.extend([(mask&(o>>s)) for s in shifts][:l])
- l -= spb
- if l <= 0:
- l = width
- return out
-
- def iterstraight(self, raw):
- """Iterator that undoes the effect of filtering, and yields
- each row in serialised format (as a sequence of bytes).
- Assumes input is straightlaced. `raw` should be an iterable
- that yields the raw bytes in chunks of arbitrary size.
- """
-
- # length of row, in bytes
- rb = self.row_bytes
- a = array('B')
- # The previous (reconstructed) scanline. None indicates first
- # line of image.
- recon = None
- for some in raw:
- a.extend(some)
- while len(a) >= rb + 1:
- filter_type = a[0]
- scanline = a[1:rb+1]
- del a[:rb+1]
- recon = self.undo_filter(filter_type, scanline, recon)
- yield recon
- if len(a) != 0:
- # :file:format We get here with a file format error:
- # when the available bytes (after decompressing) do not
- # pack into exact rows.
- raise FormatError(
- 'Wrong size for decompressed IDAT chunk.')
- assert len(a) == 0
-
- def validate_signature(self):
- """If signature (header) has not been read then read and
- validate it; otherwise do nothing.
- """
-
- if self.signature:
- return
- self.signature = self.file.read(8)
- if self.signature != _signature:
- raise FormatError("PNG file has invalid signature.")
-
- def preamble(self, lenient=False):
- """
- Extract the image metadata by reading the initial part of
- the PNG file up to the start of the ``IDAT`` chunk. All the
- chunks that precede the ``IDAT`` chunk are read and either
- processed for metadata or discarded.
-
- If the optional `lenient` argument evaluates to True, checksum
- failures will raise warnings rather than exceptions.
- """
-
- self.validate_signature()
-
- while True:
- if not self.atchunk:
- self.atchunk = self.chunklentype()
- if self.atchunk is None:
- raise FormatError(
- 'This PNG file has no IDAT chunks.')
- if self.atchunk[1] == 'IDAT':
- return
- self.process_chunk(lenient=lenient)
-
- def chunklentype(self):
- """Reads just enough of the input to determine the next
- chunk's length and type, returned as a (*length*, *type*) pair
- where *type* is a string. If there are no more chunks, ``None``
- is returned.
- """
-
- x = self.file.read(8)
- if not x:
- return None
- if len(x) != 8:
- raise FormatError(
- 'End of file whilst reading chunk length and type.')
- length,type = struct.unpack('!I4s', x)
- type = bytestostr(type)
- if length > 2**31-1:
- raise FormatError('Chunk %s is too large: %d.' % (type,length))
- return length,type
-
- def process_chunk(self, lenient=False):
- """Process the next chunk and its data. This only processes the
- following chunk types, all others are ignored: ``IHDR``,
- ``PLTE``, ``bKGD``, ``tRNS``, ``gAMA``, ``sBIT``, ``pHYs``.
-
- If the optional `lenient` argument evaluates to True,
- checksum failures will raise warnings rather than exceptions.
- """
-
- type, data = self.chunk(lenient=lenient)
- method = '_process_' + type
- m = getattr(self, method, None)
- if m:
- m(data)
-
- def _process_IHDR(self, data):
- # http://www.w3.org/TR/PNG/#11IHDR
- if len(data) != 13:
- raise FormatError('IHDR chunk has incorrect length.')
- (self.width, self.height, self.bitdepth, self.color_type,
- self.compression, self.filter,
- self.interlace) = struct.unpack("!2I5B", data)
-
- check_bitdepth_colortype(self.bitdepth, self.color_type)
-
- if self.compression != 0:
- raise Error("unknown compression method %d" % self.compression)
- if self.filter != 0:
- raise FormatError("Unknown filter method %d,"
- " see http://www.w3.org/TR/2003/REC-PNG-20031110/#9Filters ."
- % self.filter)
- if self.interlace not in (0,1):
- raise FormatError("Unknown interlace method %d,"
- " see http://www.w3.org/TR/2003/REC-PNG-20031110/#8InterlaceMethods ."
- % self.interlace)
-
- # Derived values
- # http://www.w3.org/TR/PNG/#6Colour-values
- colormap = bool(self.color_type & 1)
- greyscale = not (self.color_type & 2)
- alpha = bool(self.color_type & 4)
- color_planes = (3,1)[greyscale or colormap]
- planes = color_planes + alpha
-
- self.colormap = colormap
- self.greyscale = greyscale
- self.alpha = alpha
- self.color_planes = color_planes
- self.planes = planes
- self.psize = float(self.bitdepth)/float(8) * planes
- if int(self.psize) == self.psize:
- self.psize = int(self.psize)
- self.row_bytes = int(math.ceil(self.width * self.psize))
- # Stores PLTE chunk if present, and is used to check
- # chunk ordering constraints.
- self.plte = None
- # Stores tRNS chunk if present, and is used to check chunk
- # ordering constraints.
- self.trns = None
- # Stores sbit chunk if present.
- self.sbit = None
-
- def _process_PLTE(self, data):
- # http://www.w3.org/TR/PNG/#11PLTE
- if self.plte:
- warnings.warn("Multiple PLTE chunks present.")
- self.plte = data
- if len(data) % 3 != 0:
- raise FormatError(
- "PLTE chunk's length should be a multiple of 3.")
- if len(data) > (2**self.bitdepth)*3:
- raise FormatError("PLTE chunk is too long.")
- if len(data) == 0:
- raise FormatError("Empty PLTE is not allowed.")
-
- def _process_bKGD(self, data):
- try:
- if self.colormap:
- if not self.plte:
- warnings.warn(
- "PLTE chunk is required before bKGD chunk.")
- self.background = struct.unpack('B', data)
- else:
- self.background = struct.unpack("!%dH" % self.color_planes,
- data)
- except struct.error:
- raise FormatError("bKGD chunk has incorrect length.")
-
- def _process_tRNS(self, data):
- # http://www.w3.org/TR/PNG/#11tRNS
- self.trns = data
- if self.colormap:
- if not self.plte:
- warnings.warn("PLTE chunk is required before tRNS chunk.")
- else:
- if len(data) > len(self.plte)/3:
- # Was warning, but promoted to Error as it
- # would otherwise cause pain later on.
- raise FormatError("tRNS chunk is too long.")
- else:
- if self.alpha:
- raise FormatError(
- "tRNS chunk is not valid with colour type %d." %
- self.color_type)
- try:
- self.transparent = \
- struct.unpack("!%dH" % self.color_planes, data)
- except struct.error:
- raise FormatError("tRNS chunk has incorrect length.")
-
- def _process_gAMA(self, data):
- try:
- self.gamma = struct.unpack("!L", data)[0] / 100000.0
- except struct.error:
- raise FormatError("gAMA chunk has incorrect length.")
-
- def _process_sBIT(self, data):
- self.sbit = data
- if (self.colormap and len(data) != 3 or
- not self.colormap and len(data) != self.planes):
- raise FormatError("sBIT chunk has incorrect length.")
-
- def _process_pHYs(self, data):
- # http://www.w3.org/TR/PNG/#11pHYs
- self.phys = data
- fmt = "!LLB"
- if len(data) != struct.calcsize(fmt):
- raise FormatError("pHYs chunk has incorrect length.")
- self.x_pixels_per_unit, self.y_pixels_per_unit, unit = struct.unpack(fmt,data)
- self.unit_is_meter = bool(unit)
-
- def read(self, lenient=False):
- """
- Read the PNG file and decode it. Returns (`width`, `height`,
- `pixels`, `metadata`).
-
- May use excessive memory.
-
- `pixels` are returned in boxed row flat pixel format.
-
- If the optional `lenient` argument evaluates to True,
- checksum failures will raise warnings rather than exceptions.
- """
-
- def iteridat():
- """Iterator that yields all the ``IDAT`` chunks as strings."""
- while True:
- try:
- type, data = self.chunk(lenient=lenient)
- except ValueError, e:
- raise ChunkError(e.args[0])
- if type == 'IEND':
- # http://www.w3.org/TR/PNG/#11IEND
- break
- if type != 'IDAT':
- continue
- # type == 'IDAT'
- # http://www.w3.org/TR/PNG/#11IDAT
- if self.colormap and not self.plte:
- warnings.warn("PLTE chunk is required before IDAT chunk")
- yield data
-
- def iterdecomp(idat):
- """Iterator that yields decompressed strings. `idat` should
- be an iterator that yields the ``IDAT`` chunk data.
- """
-
- # Currently, with no max_length parameter to decompress,
- # this routine will do one yield per IDAT chunk: Not very
- # incremental.
- d = zlib.decompressobj()
- # Each IDAT chunk is passed to the decompressor, then any
- # remaining state is decompressed out.
- for data in idat:
- # :todo: add a max_length argument here to limit output
- # size.
- yield array('B', d.decompress(data))
- yield array('B', d.flush())
-
- self.preamble(lenient=lenient)
- raw = iterdecomp(iteridat())
-
- if self.interlace:
- raw = array('B', itertools.chain(*raw))
- arraycode = 'BH'[self.bitdepth>8]
- # Like :meth:`group` but producing an array.array object for
- # each row.
- pixels = itertools.imap(lambda *row: array(arraycode, row),
- *[iter(self.deinterlace(raw))]*self.width*self.planes)
- else:
- pixels = self.iterboxed(self.iterstraight(raw))
- meta = dict()
- for attr in 'greyscale alpha planes bitdepth interlace'.split():
- meta[attr] = getattr(self, attr)
- meta['size'] = (self.width, self.height)
- for attr in 'gamma transparent background'.split():
- a = getattr(self, attr, None)
- if a is not None:
- meta[attr] = a
- if self.plte:
- meta['palette'] = self.palette()
- return self.width, self.height, pixels, meta
-
-
- def read_flat(self):
- """
- Read a PNG file and decode it into flat row flat pixel format.
- Returns (*width*, *height*, *pixels*, *metadata*).
-
- May use excessive memory.
-
- `pixels` are returned in flat row flat pixel format.
-
- See also the :meth:`read` method which returns pixels in the
- more stream-friendly boxed row flat pixel format.
- """
-
- x, y, pixel, meta = self.read()
- arraycode = 'BH'[meta['bitdepth']>8]
- pixel = array(arraycode, itertools.chain(*pixel))
- return x, y, pixel, meta
-
- def palette(self, alpha='natural'):
- """Returns a palette that is a sequence of 3-tuples or 4-tuples,
- synthesizing it from the ``PLTE`` and ``tRNS`` chunks. These
- chunks should have already been processed (for example, by
- calling the :meth:`preamble` method). All the tuples are the
- same size: 3-tuples if there is no ``tRNS`` chunk, 4-tuples when
- there is a ``tRNS`` chunk. Assumes that the image is colour type
- 3 and therefore a ``PLTE`` chunk is required.
-
- If the `alpha` argument is ``'force'`` then an alpha channel is
- always added, forcing the result to be a sequence of 4-tuples.
- """
-
- if not self.plte:
- raise FormatError(
- "Required PLTE chunk is missing in colour type 3 image.")
- plte = group(array('B', self.plte), 3)
- if self.trns or alpha == 'force':
- trns = array('B', self.trns or '')
- trns.extend([255]*(len(plte)-len(trns)))
- plte = map(operator.add, plte, group(trns, 1))
- return plte
-
- def asDirect(self):
- """Returns the image data as a direct representation of an
- ``x * y * planes`` array. This method is intended to remove the
- need for callers to deal with palettes and transparency
- themselves. Images with a palette (colour type 3)
- are converted to RGB or RGBA; images with transparency (a
- ``tRNS`` chunk) are converted to LA or RGBA as appropriate.
- When returned in this format the pixel values represent the
- colour value directly without needing to refer to palettes or
- transparency information.
-
- Like the :meth:`read` method this method returns a 4-tuple:
-
- (*width*, *height*, *pixels*, *meta*)
-
- This method normally returns pixel values with the bit depth
- they have in the source image, but when the source PNG has an
- ``sBIT`` chunk it is inspected and can reduce the bit depth of
- the result pixels; pixel values will be reduced according to
- the bit depth specified in the ``sBIT`` chunk (PNG nerds should
- note a single result bit depth is used for all channels; the
- maximum of the ones specified in the ``sBIT`` chunk. An RGB565
- image will be rescaled to 6-bit RGB666).
-
- The *meta* dictionary that is returned reflects the `direct`
- format and not the original source image. For example, an RGB
- source image with a ``tRNS`` chunk to represent a transparent
- colour, will have ``planes=3`` and ``alpha=False`` for the
- source image, but the *meta* dictionary returned by this method
- will have ``planes=4`` and ``alpha=True`` because an alpha
- channel is synthesized and added.
-
- *pixels* is the pixel data in boxed row flat pixel format (just
- like the :meth:`read` method).
-
- All the other aspects of the image data are not changed.
- """
-
- self.preamble()
-
- # Simple case, no conversion necessary.
- if not self.colormap and not self.trns and not self.sbit:
- return self.read()
-
- x,y,pixels,meta = self.read()
-
- if self.colormap:
- meta['colormap'] = False
- meta['alpha'] = bool(self.trns)
- meta['bitdepth'] = 8
- meta['planes'] = 3 + bool(self.trns)
- plte = self.palette()
- def iterpal(pixels):
- for row in pixels:
- row = map(plte.__getitem__, row)
- yield array('B', itertools.chain(*row))
- pixels = iterpal(pixels)
- elif self.trns:
- # It would be nice if there was some reasonable way
- # of doing this without generating a whole load of
- # intermediate tuples. But tuples does seem like the
- # easiest way, with no other way clearly much simpler or
- # much faster. (Actually, the L to LA conversion could
- # perhaps go faster (all those 1-tuples!), but I still
- # wonder whether the code proliferation is worth it)
- it = self.transparent
- maxval = 2**meta['bitdepth']-1
- planes = meta['planes']
- meta['alpha'] = True
- meta['planes'] += 1
- typecode = 'BH'[meta['bitdepth']>8]
- def itertrns(pixels):
- for row in pixels:
- # For each row we group it into pixels, then form a
- # characterisation vector that says whether each
- # pixel is opaque or not. Then we convert
- # True/False to 0/maxval (by multiplication),
- # and add it as the extra channel.
- row = group(row, planes)
- opa = map(it.__ne__, row)
- opa = map(maxval.__mul__, opa)
- opa = zip(opa) # convert to 1-tuples
- yield array(typecode,
- itertools.chain(*map(operator.add, row, opa)))
- pixels = itertrns(pixels)
- targetbitdepth = None
- if self.sbit:
- sbit = struct.unpack('%dB' % len(self.sbit), self.sbit)
- targetbitdepth = max(sbit)
- if targetbitdepth > meta['bitdepth']:
- raise Error('sBIT chunk %r exceeds bitdepth %d' %
- (sbit,self.bitdepth))
- if min(sbit) <= 0:
- raise Error('sBIT chunk %r has a 0-entry' % sbit)
- if targetbitdepth == meta['bitdepth']:
- targetbitdepth = None
- if targetbitdepth:
- shift = meta['bitdepth'] - targetbitdepth
- meta['bitdepth'] = targetbitdepth
- def itershift(pixels):
- for row in pixels:
- yield map(shift.__rrshift__, row)
- pixels = itershift(pixels)
- return x,y,pixels,meta
-
- def asFloat(self, maxval=1.0):
- """Return image pixels as per :meth:`asDirect` method, but scale
- all pixel values to be floating point values between 0.0 and
- *maxval*.
- """
-
- x,y,pixels,info = self.asDirect()
- sourcemaxval = 2**info['bitdepth']-1
- del info['bitdepth']
- info['maxval'] = float(maxval)
- factor = float(maxval)/float(sourcemaxval)
- def iterfloat():
- for row in pixels:
- yield map(factor.__mul__, row)
- return x,y,iterfloat(),info
-
- def _as_rescale(self, get, targetbitdepth):
- """Helper used by :meth:`asRGB8` and :meth:`asRGBA8`."""
-
- width,height,pixels,meta = get()
- maxval = 2**meta['bitdepth'] - 1
- targetmaxval = 2**targetbitdepth - 1
- factor = float(targetmaxval) / float(maxval)
- meta['bitdepth'] = targetbitdepth
- def iterscale():
- for row in pixels:
- yield map(lambda x: int(round(x*factor)), row)
- if maxval == targetmaxval:
- return width, height, pixels, meta
- else:
- return width, height, iterscale(), meta
-
- def asRGB8(self):
- """Return the image data as an RGB pixels with 8-bits per
- sample. This is like the :meth:`asRGB` method except that
- this method additionally rescales the values so that they
- are all between 0 and 255 (8-bit). In the case where the
- source image has a bit depth < 8 the transformation preserves
- all the information; where the source image has bit depth
- > 8, then rescaling to 8-bit values loses precision. No
- dithering is performed. Like :meth:`asRGB`, an alpha channel
- in the source image will raise an exception.
-
- This function returns a 4-tuple:
- (*width*, *height*, *pixels*, *metadata*).
- *width*, *height*, *metadata* are as per the
- :meth:`read` method.
-
- *pixels* is the pixel data in boxed row flat pixel format.
- """
-
- return self._as_rescale(self.asRGB, 8)
-
- def asRGBA8(self):
- """Return the image data as RGBA pixels with 8-bits per
- sample. This method is similar to :meth:`asRGB8` and
- :meth:`asRGBA`: The result pixels have an alpha channel, *and*
- values are rescaled to the range 0 to 255. The alpha channel is
- synthesized if necessary (with a small speed penalty).
- """
-
- return self._as_rescale(self.asRGBA, 8)
-
- def asRGB(self):
- """Return image as RGB pixels. RGB colour images are passed
- through unchanged; greyscales are expanded into RGB
- triplets (there is a small speed overhead for doing this).
-
- An alpha channel in the source image will raise an
- exception.
-
- The return values are as for the :meth:`read` method
- except that the *metadata* reflect the returned pixels, not the
- source image. In particular, for this method
- ``metadata['greyscale']`` will be ``False``.
- """
-
- width,height,pixels,meta = self.asDirect()
- if meta['alpha']:
- raise Error("will not convert image with alpha channel to RGB")
- if not meta['greyscale']:
- return width,height,pixels,meta
- meta['greyscale'] = False
- typecode = 'BH'[meta['bitdepth'] > 8]
- def iterrgb():
- for row in pixels:
- a = array(typecode, [0]) * 3 * width
- for i in range(3):
- a[i::3] = row
- yield a
- return width,height,iterrgb(),meta
-
- def asRGBA(self):
- """Return image as RGBA pixels. Greyscales are expanded into
- RGB triplets; an alpha channel is synthesized if necessary.
- The return values are as for the :meth:`read` method
- except that the *metadata* reflect the returned pixels, not the
- source image. In particular, for this method
- ``metadata['greyscale']`` will be ``False``, and
- ``metadata['alpha']`` will be ``True``.
- """
-
- width,height,pixels,meta = self.asDirect()
- if meta['alpha'] and not meta['greyscale']:
- return width,height,pixels,meta
- typecode = 'BH'[meta['bitdepth'] > 8]
- maxval = 2**meta['bitdepth'] - 1
- maxbuffer = struct.pack('=' + typecode, maxval) * 4 * width
- def newarray():
- return array(typecode, maxbuffer)
-
- if meta['alpha'] and meta['greyscale']:
- # LA to RGBA
- def convert():
- for row in pixels:
- # Create a fresh target row, then copy L channel
- # into first three target channels, and A channel
- # into fourth channel.
- a = newarray()
- pngfilters.convert_la_to_rgba(row, a)
- yield a
- elif meta['greyscale']:
- # L to RGBA
- def convert():
- for row in pixels:
- a = newarray()
- pngfilters.convert_l_to_rgba(row, a)
- yield a
- else:
- assert not meta['alpha'] and not meta['greyscale']
- # RGB to RGBA
- def convert():
- for row in pixels:
- a = newarray()
- pngfilters.convert_rgb_to_rgba(row, a)
- yield a
- meta['alpha'] = True
- meta['greyscale'] = False
- return width,height,convert(),meta
-
-def check_bitdepth_colortype(bitdepth, colortype):
- """Check that `bitdepth` and `colortype` are both valid,
- and specified in a valid combination. Returns if valid,
- raise an Exception if not valid.
- """
-
- if bitdepth not in (1,2,4,8,16):
- raise FormatError("invalid bit depth %d" % bitdepth)
- if colortype not in (0,2,3,4,6):
- raise FormatError("invalid colour type %d" % colortype)
- # Check indexed (palettized) images have 8 or fewer bits
- # per pixel; check only indexed or greyscale images have
- # fewer than 8 bits per pixel.
- if colortype & 1 and bitdepth > 8:
- raise FormatError(
- "Indexed images (colour type %d) cannot"
- " have bitdepth > 8 (bit depth %d)."
- " See http://www.w3.org/TR/2003/REC-PNG-20031110/#table111 ."
- % (bitdepth, colortype))
- if bitdepth < 8 and colortype not in (0,3):
- raise FormatError("Illegal combination of bit depth (%d)"
- " and colour type (%d)."
- " See http://www.w3.org/TR/2003/REC-PNG-20031110/#table111 ."
- % (bitdepth, colortype))
-
-def isinteger(x):
- try:
- return int(x) == x
- except (TypeError, ValueError):
- return False
-
-
-# === Legacy Version Support ===
-
-# :pyver:old: PyPNG works on Python versions 2.3 and 2.2, but not
-# without some awkward problems. Really PyPNG works on Python 2.4 (and
-# above); it works on Pythons 2.3 and 2.2 by virtue of fixing up
-# problems here. It's a bit ugly (which is why it's hidden down here).
-#
-# Generally the strategy is one of pretending that we're running on
-# Python 2.4 (or above), and patching up the library support on earlier
-# versions so that it looks enough like Python 2.4. When it comes to
-# Python 2.2 there is one thing we cannot patch: extended slices
-# http://www.python.org/doc/2.3/whatsnew/section-slices.html.
-# Instead we simply declare that features that are implemented using
-# extended slices will not work on Python 2.2.
-#
-# In order to work on Python 2.3 we fix up a recurring annoyance involving
-# the array type. In Python 2.3 an array cannot be initialised with an
-# array, and it cannot be extended with a list (or other sequence).
-# Both of those are repeated issues in the code. Whilst I would not
-# normally tolerate this sort of behaviour, here we "shim" a replacement
-# for array into place (and hope no-one notices). You never read this.
-#
-# In an amusing case of warty hacks on top of warty hacks... the array
-# shimming we try and do only works on Python 2.3 and above (you can't
-# subclass array.array in Python 2.2). So to get it working on Python
-# 2.2 we go for something much simpler and (probably) way slower.
-try:
- array('B').extend([])
- array('B', array('B'))
-# :todo:(drj) Check that TypeError is correct for Python 2.3
-except TypeError:
- # Expect to get here on Python 2.3
- try:
- class _array_shim(array):
- true_array = array
- def __new__(cls, typecode, init=None):
- super_new = super(_array_shim, cls).__new__
- it = super_new(cls, typecode)
- if init is None:
- return it
- it.extend(init)
- return it
- def extend(self, extension):
- super_extend = super(_array_shim, self).extend
- if isinstance(extension, self.true_array):
- return super_extend(extension)
- if not isinstance(extension, (list, str)):
- # Convert to list. Allows iterators to work.
- extension = list(extension)
- return super_extend(self.true_array(self.typecode, extension))
- array = _array_shim
- except TypeError:
- # Expect to get here on Python 2.2
- def array(typecode, init=()):
- if type(init) == str:
- return map(ord, init)
- return list(init)
-
-# Further hacks to get it limping along on Python 2.2
-try:
- enumerate
-except NameError:
- def enumerate(seq):
- i=0
- for x in seq:
- yield i,x
- i += 1
-
-try:
- reversed
-except NameError:
- def reversed(l):
- l = list(l)
- l.reverse()
- for x in l:
- yield x
-
-try:
- itertools
-except NameError:
- class _dummy_itertools:
- pass
- itertools = _dummy_itertools()
- def _itertools_imap(f, seq):
- for x in seq:
- yield f(x)
- itertools.imap = _itertools_imap
- def _itertools_chain(*iterables):
- for it in iterables:
- for element in it:
- yield element
- itertools.chain = _itertools_chain
-
-
-# === Support for users without Cython ===
-
-try:
- pngfilters
-except NameError:
- class pngfilters(object):
- def undo_filter_sub(filter_unit, scanline, previous, result):
- """Undo sub filter."""
-
- ai = 0
- # Loops starts at index fu. Observe that the initial part
- # of the result is already filled in correctly with
- # scanline.
- for i in range(filter_unit, len(result)):
- x = scanline[i]
- a = result[ai]
- result[i] = (x + a) & 0xff
- ai += 1
- undo_filter_sub = staticmethod(undo_filter_sub)
-
- def undo_filter_up(filter_unit, scanline, previous, result):
- """Undo up filter."""
-
- for i in range(len(result)):
- x = scanline[i]
- b = previous[i]
- result[i] = (x + b) & 0xff
- undo_filter_up = staticmethod(undo_filter_up)
-
- def undo_filter_average(filter_unit, scanline, previous, result):
- """Undo up filter."""
-
- ai = -filter_unit
- for i in range(len(result)):
- x = scanline[i]
- if ai < 0:
- a = 0
- else:
- a = result[ai]
- b = previous[i]
- result[i] = (x + ((a + b) >> 1)) & 0xff
- ai += 1
- undo_filter_average = staticmethod(undo_filter_average)
-
- def undo_filter_paeth(filter_unit, scanline, previous, result):
- """Undo Paeth filter."""
-
- # Also used for ci.
- ai = -filter_unit
- for i in range(len(result)):
- x = scanline[i]
- if ai < 0:
- a = c = 0
- else:
- a = result[ai]
- c = previous[ai]
- b = previous[i]
- p = a + b - c
- pa = abs(p - a)
- pb = abs(p - b)
- pc = abs(p - c)
- if pa <= pb and pa <= pc:
- pr = a
- elif pb <= pc:
- pr = b
- else:
- pr = c
- result[i] = (x + pr) & 0xff
- ai += 1
- undo_filter_paeth = staticmethod(undo_filter_paeth)
-
- def convert_la_to_rgba(row, result):
- for i in range(3):
- result[i::4] = row[0::2]
- result[3::4] = row[1::2]
- convert_la_to_rgba = staticmethod(convert_la_to_rgba)
-
- def convert_l_to_rgba(row, result):
- """Convert a grayscale image to RGBA. This method assumes
- the alpha channel in result is already correctly
- initialized.
- """
- for i in range(3):
- result[i::4] = row
- convert_l_to_rgba = staticmethod(convert_l_to_rgba)
-
- def convert_rgb_to_rgba(row, result):
- """Convert an RGB image to RGBA. This method assumes the
- alpha channel in result is already correctly initialized.
- """
- for i in range(3):
- result[i::4] = row[i::3]
- convert_rgb_to_rgba = staticmethod(convert_rgb_to_rgba)
-
-
-# === Command Line Support ===
-
-def read_pam_header(infile):
- """
- Read (the rest of a) PAM header. `infile` should be positioned
- immediately after the initial 'P7' line (at the beginning of the
- second line). Returns are as for `read_pnm_header`.
- """
-
- # Unlike PBM, PGM, and PPM, we can read the header a line at a time.
- header = dict()
- while True:
- l = infile.readline().strip()
- if l == strtobytes('ENDHDR'):
- break
- if not l:
- raise EOFError('PAM ended prematurely')
- if l[0] == strtobytes('#'):
- continue
- l = l.split(None, 1)
- if l[0] not in header:
- header[l[0]] = l[1]
- else:
- header[l[0]] += strtobytes(' ') + l[1]
-
- required = ['WIDTH', 'HEIGHT', 'DEPTH', 'MAXVAL']
- required = [strtobytes(x) for x in required]
- WIDTH,HEIGHT,DEPTH,MAXVAL = required
- present = [x for x in required if x in header]
- if len(present) != len(required):
- raise Error('PAM file must specify WIDTH, HEIGHT, DEPTH, and MAXVAL')
- width = int(header[WIDTH])
- height = int(header[HEIGHT])
- depth = int(header[DEPTH])
- maxval = int(header[MAXVAL])
- if (width <= 0 or
- height <= 0 or
- depth <= 0 or
- maxval <= 0):
- raise Error(
- 'WIDTH, HEIGHT, DEPTH, MAXVAL must all be positive integers')
- return 'P7', width, height, depth, maxval
-
-def read_pnm_header(infile, supported=('P5','P6')):
- """
- Read a PNM header, returning (format,width,height,depth,maxval).
- `width` and `height` are in pixels. `depth` is the number of
- channels in the image; for PBM and PGM it is synthesized as 1, for
- PPM as 3; for PAM images it is read from the header. `maxval` is
- synthesized (as 1) for PBM images.
- """
-
- # Generally, see http://netpbm.sourceforge.net/doc/ppm.html
- # and http://netpbm.sourceforge.net/doc/pam.html
-
- supported = [strtobytes(x) for x in supported]
-
- # Technically 'P7' must be followed by a newline, so by using
- # rstrip() we are being liberal in what we accept. I think this
- # is acceptable.
- type = infile.read(3).rstrip()
- if type not in supported:
- raise NotImplementedError('file format %s not supported' % type)
- if type == strtobytes('P7'):
- # PAM header parsing is completely different.
- return read_pam_header(infile)
- # Expected number of tokens in header (3 for P4, 4 for P6)
- expected = 4
- pbm = ('P1', 'P4')
- if type in pbm:
- expected = 3
- header = [type]
-
- # We have to read the rest of the header byte by byte because the
- # final whitespace character (immediately following the MAXVAL in
- # the case of P6) may not be a newline. Of course all PNM files in
- # the wild use a newline at this point, so it's tempting to use
- # readline; but it would be wrong.
- def getc():
- c = infile.read(1)
- if not c:
- raise Error('premature EOF reading PNM header')
- return c
-
- c = getc()
- while True:
- # Skip whitespace that precedes a token.
- while c.isspace():
- c = getc()
- # Skip comments.
- while c == '#':
- while c not in '\n\r':
- c = getc()
- if not c.isdigit():
- raise Error('unexpected character %s found in header' % c)
- # According to the specification it is legal to have comments
- # that appear in the middle of a token.
- # This is bonkers; I've never seen it; and it's a bit awkward to
- # code good lexers in Python (no goto). So we break on such
- # cases.
- token = strtobytes('')
- while c.isdigit():
- token += c
- c = getc()
- # Slight hack. All "tokens" are decimal integers, so convert
- # them here.
- header.append(int(token))
- if len(header) == expected:
- break
- # Skip comments (again)
- while c == '#':
- while c not in '\n\r':
- c = getc()
- if not c.isspace():
- raise Error('expected header to end with whitespace, not %s' % c)
-
- if type in pbm:
- # synthesize a MAXVAL
- header.append(1)
- depth = (1,3)[type == strtobytes('P6')]
- return header[0], header[1], header[2], depth, header[3]
-
-def write_pnm(file, width, height, pixels, meta):
- """Write a Netpbm PNM/PAM file.
- """
-
- bitdepth = meta['bitdepth']
- maxval = 2**bitdepth - 1
- # Rudely, the number of image planes can be used to determine
- # whether we are L (PGM), LA (PAM), RGB (PPM), or RGBA (PAM).
- planes = meta['planes']
- # Can be an assert as long as we assume that pixels and meta came
- # from a PNG file.
- assert planes in (1,2,3,4)
- if planes in (1,3):
- if 1 == planes:
- # PGM
- # Could generate PBM if maxval is 1, but we don't (for one
- # thing, we'd have to convert the data, not just blat it
- # out).
- fmt = 'P5'
- else:
- # PPM
- fmt = 'P6'
- header = '%s %d %d %d\n' % (fmt, width, height, maxval)
- if planes in (2,4):
- # PAM
- # See http://netpbm.sourceforge.net/doc/pam.html
- if 2 == planes:
- tupltype = 'GRAYSCALE_ALPHA'
- else:
- tupltype = 'RGB_ALPHA'
- header = ('P7\nWIDTH %d\nHEIGHT %d\nDEPTH %d\nMAXVAL %d\n'
- 'TUPLTYPE %s\nENDHDR\n' %
- (width, height, planes, maxval, tupltype))
- file.write(header.encode('ascii'))
- # Values per row
- vpr = planes * width
- # struct format
- fmt = '>%d' % vpr
- if maxval > 0xff:
- fmt = fmt + 'H'
- else:
- fmt = fmt + 'B'
- for row in pixels:
- file.write(struct.pack(fmt, *row))
- file.flush()
-
-def color_triple(color):
- """
- Convert a command line colour value to a RGB triple of integers.
- FIXME: Somewhere we need support for greyscale backgrounds etc.
- """
- if color.startswith('#') and len(color) == 4:
- return (int(color[1], 16),
- int(color[2], 16),
- int(color[3], 16))
- if color.startswith('#') and len(color) == 7:
- return (int(color[1:3], 16),
- int(color[3:5], 16),
- int(color[5:7], 16))
- elif color.startswith('#') and len(color) == 13:
- return (int(color[1:5], 16),
- int(color[5:9], 16),
- int(color[9:13], 16))
-
-def _add_common_options(parser):
- """Call *parser.add_option* for each of the options that are
- common between this PNG--PNM conversion tool and the gen
- tool.
- """
- parser.add_option("-i", "--interlace",
- default=False, action="store_true",
- help="create an interlaced PNG file (Adam7)")
- parser.add_option("-t", "--transparent",
- action="store", type="string", metavar="#RRGGBB",
- help="mark the specified colour as transparent")
- parser.add_option("-b", "--background",
- action="store", type="string", metavar="#RRGGBB",
- help="save the specified background colour")
- parser.add_option("-g", "--gamma",
- action="store", type="float", metavar="value",
- help="save the specified gamma value")
- parser.add_option("-c", "--compression",
- action="store", type="int", metavar="level",
- help="zlib compression level (0-9)")
- return parser
-
-def _main(argv):
- """
- Run the PNG encoder with options from the command line.
- """
-
- # Parse command line arguments
- from optparse import OptionParser
- version = '%prog ' + __version__
- parser = OptionParser(version=version)
- parser.set_usage("%prog [options] [imagefile]")
- parser.add_option('-r', '--read-png', default=False,
- action='store_true',
- help='Read PNG, write PNM')
- parser.add_option("-a", "--alpha",
- action="store", type="string", metavar="pgmfile",
- help="alpha channel transparency (RGBA)")
- _add_common_options(parser)
-
- (options, args) = parser.parse_args(args=argv[1:])
-
- # Convert options
- if options.transparent is not None:
- options.transparent = color_triple(options.transparent)
- if options.background is not None:
- options.background = color_triple(options.background)
-
- # Prepare input and output files
- if len(args) == 0:
- infilename = '-'
- infile = sys.stdin
- elif len(args) == 1:
- infilename = args[0]
- infile = open(infilename, 'rb')
- else:
- parser.error("more than one input file")
- outfile = sys.stdout
- if sys.platform == "win32":
- import msvcrt, os
- msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
-
- if options.read_png:
- # Encode PNG to PPM
- png = Reader(file=infile)
- width,height,pixels,meta = png.asDirect()
- write_pnm(outfile, width, height, pixels, meta)
- else:
- # Encode PNM to PNG
- format, width, height, depth, maxval = \
- read_pnm_header(infile, ('P5','P6','P7'))
- # When it comes to the variety of input formats, we do something
- # rather rude. Observe that L, LA, RGB, RGBA are the 4 colour
- # types supported by PNG and that they correspond to 1, 2, 3, 4
- # channels respectively. So we use the number of channels in
- # the source image to determine which one we have. We do not
- # care about TUPLTYPE.
- greyscale = depth <= 2
- pamalpha = depth in (2,4)
- supported = map(lambda x: 2**x-1, range(1,17))
- try:
- mi = supported.index(maxval)
- except ValueError:
- raise NotImplementedError(
- 'your maxval (%s) not in supported list %s' %
- (maxval, str(supported)))
- bitdepth = mi+1
- writer = Writer(width, height,
- greyscale=greyscale,
- bitdepth=bitdepth,
- interlace=options.interlace,
- transparent=options.transparent,
- background=options.background,
- alpha=bool(pamalpha or options.alpha),
- gamma=options.gamma,
- compression=options.compression)
- if options.alpha:
- pgmfile = open(options.alpha, 'rb')
- format, awidth, aheight, adepth, amaxval = \
- read_pnm_header(pgmfile, 'P5')
- if amaxval != '255':
- raise NotImplementedError(
- 'maxval %s not supported for alpha channel' % amaxval)
- if (awidth, aheight) != (width, height):
- raise ValueError("alpha channel image size mismatch"
- " (%s has %sx%s but %s has %sx%s)"
- % (infilename, width, height,
- options.alpha, awidth, aheight))
- writer.convert_ppm_and_pgm(infile, pgmfile, outfile)
- else:
- writer.convert_pnm(infile, outfile)
-
-
-if __name__ == '__main__':
- try:
- _main(sys.argv)
- except Error, e:
- print >>sys.stderr, e
diff --git a/src/build/png2bdc.py b/src/build/png2bdc.py
deleted file mode 100644
index 58a5983ce97..00000000000
--- a/src/build/png2bdc.py
+++ /dev/null
@@ -1,364 +0,0 @@
-#!/usr/bin/env python
-##
-## license:BSD-3-Clause
-## copyright-holders:Aaron Giles, Andrew Gardner
-## ****************************************************************************
-##
-## png2bdc.c
-##
-## Super-simple PNG to BDC file generator
-##
-## ****************************************************************************
-##
-## Format of PNG data:
-##
-## Multiple rows of characters. A black pixel means "on". All other colors
-## mean "off". Each row looks like this:
-##
-## * 8888 *** *
-## * 4444 * * **
-## * 2222 * * *
-## * 1111 * * *
-## * * * *
-## ** *** ***
-## *
-## *
-##
-## ****** ****
-##
-## The column of pixels on the left-hand side (column 0) indicates the
-## character cell height. This column must be present on each row and
-## the height must be consistent for each row.
-##
-## Protruding one pixel into column 1 is the baseline indicator. There
-## should only be one row with a pixel in column 1 for each line, and
-## that pixel row index should be consistent for each row.
-##
-## In columns 2-5 are a 4-hex-digit starting character index number. This
-## is encoded as binary value. Each column is 4 pixels tall and represents
-## one binary digit. The character index number is the unicode character
-## number of the first character encoded in this row; subsequent
-## characters in the row are at increasing character indices.
-##
-## Starting in column 6 and beyond are the actual character bitmaps.
-## Below them, in the second row after the last row of the character,
-## is a solid line that indicates the width of the character, and also
-## where the character bitmap begins and ends.
-##
-## ***************************************************************************
-
-##
-## Python note:
-## This is a near-literal translation of the original C++ code. As such there
-## are some very non-pythonic things done throughout. The conversion was done
-## this way so as to insure compatibility as much as possible given the small
-## number of test cases.
-##
-
-import os
-import png
-import sys
-
-
-########################################
-## Helper classes
-########################################
-class RenderFontChar:
- """
- Contains information about a single character in a font.
- """
-
- def __init__(self):
- """
- """
- self.width = 0 # width from this character to the next
- self.xOffs = 0 # X offset from baseline to top,left of bitmap
- self.yOffs = 0 # Y offset from baseline to top,left of bitmap
- self.bmWidth = 0 # width of bitmap
- self.bmHeight = 0 # height of bitmap
- self.bitmap = None # pointer to the bitmap containing the raw data
-
-
-class RenderFont:
- """
- Contains information about a font
- """
-
- def __init__(self):
- self.height = 0 # height of the font, from ascent to descent
- self.yOffs = 0 # y offset from baseline to descent
- self.chars = list() # array of characters
- for i in range(0, 65536):
- self.chars.append(RenderFontChar())
-
-
-
-########################################
-## Helper functions
-########################################
-def pixelIsSet(value):
- return (value & 0xffffff) == 0
-
-
-def renderFontSaveCached(font, filename, hash32):
- """
- """
- fp = open(filename, "wb")
- if not fp:
- return 1
-
- # Write the header
- numChars = 0
- for c in font.chars:
- if c.width > 0:
- numChars += 1
-
- CACHED_CHAR_SIZE = 12
- CACHED_HEADER_SIZE = 16
-
- try:
- fp.write('f')
- fp.write('o')
- fp.write('n')
- fp.write('t')
- fp.write(chr(hash32 >> 24 & 0xff))
- fp.write(chr(hash32 >> 16 & 0xff))
- fp.write(chr(hash32 >> 8 & 0xff))
- fp.write(chr(hash32 >> 0 & 0xff))
- fp.write(chr(font.height >> 8 & 0xff))
- fp.write(chr(font.height >> 0 & 0xff))
- fp.write(chr(font.yOffs >> 8 & 0xff))
- fp.write(chr(font.yOffs >> 0 & 0xff))
- fp.write(chr(numChars >> 24 & 0xff))
- fp.write(chr(numChars >> 16 & 0xff))
- fp.write(chr(numChars >> 8 & 0xff))
- fp.write(chr(numChars >> 0 & 0xff))
-
- # Write a blank table at first (?)
- charTable = [0]*(numChars * CACHED_CHAR_SIZE)
- for i in range(numChars * CACHED_CHAR_SIZE):
- fp.write(chr(charTable[i]))
-
- # Loop over all characters
- tableIndex = 0
-
- for i in range(len(font.chars)):
- c = font.chars[i]
- if c.width == 0:
- continue
-
- if c.bitmap:
- dBuffer = list()
- accum = 0
- accbit = 7
-
- # Bit-encode the character data
- for y in range(0, c.bmHeight):
- src = None
- desty = y + font.height + font.yOffs - c.yOffs - c.bmHeight
- if desty >= 0 and desty < font.height:
- src = c.bitmap[desty]
- for x in range(0, c.bmWidth):
- if src is not None and src[x] != 0:
- accum |= 1 << accbit
- accbit -= 1
- if accbit+1 == 0:
- dBuffer.append(accum)
- accum = 0
- accbit = 7
-
- # Flush any extra
- if accbit != 7:
- dBuffer.append(accum)
-
- # Write the data
- for j in range(len(dBuffer)):
- fp.write(chr(dBuffer[j]))
-
- destIndex = tableIndex * CACHED_CHAR_SIZE
- charTable[destIndex + 0] = i >> 8 & 0xff
- charTable[destIndex + 1] = i >> 0 & 0xff
- charTable[destIndex + 2] = c.width >> 8 & 0xff
- charTable[destIndex + 3] = c.width >> 0 & 0xff
- charTable[destIndex + 4] = c.xOffs >> 8 & 0xff
- charTable[destIndex + 5] = c.xOffs >> 0 & 0xff
- charTable[destIndex + 6] = c.yOffs >> 8 & 0xff
- charTable[destIndex + 7] = c.yOffs >> 0 & 0xff
- charTable[destIndex + 8] = c.bmWidth >> 8 & 0xff
- charTable[destIndex + 9] = c.bmWidth >> 0 & 0xff
- charTable[destIndex + 10] = c.bmHeight >> 8 & 0xff
- charTable[destIndex + 11] = c.bmHeight >> 0 & 0xff
- tableIndex += 1
-
- # Seek back to the beginning and rewrite the table
- fp.seek(CACHED_HEADER_SIZE, 0)
- for i in range(numChars * CACHED_CHAR_SIZE):
- fp.write(chr(charTable[i]))
-
- fp.close()
- return 0
-
- except:
- return 1
-
-
-def bitmapToChars(pngObject, font):
- """
- Convert a bitmap to characters in the given font
- """
- # Just cache the bitmap into a list of lists since random access is paramount
- bitmap = list()
- width = pngObject.asRGBA8()[0]
- height = pngObject.asRGBA8()[1]
- rowGenerator = pngObject.asRGBA8()[2]
- for row in rowGenerator:
- cRow = list()
- irpd = iter(row)
- for r,g,b,a in zip(irpd, irpd, irpd, irpd):
- cRow.append(a << 24 | r << 16 | g << 8 | b)
- bitmap.append(cRow)
-
- rowStart = 0
- while rowStart < height:
- # Find the top of the row
- for i in range(rowStart, height):
- if pixelIsSet(bitmap[rowStart][0]):
- break
- rowStart += 1
- if rowStart >= height:
- break
-
- # Find the bottom of the row
- rowEnd = rowStart + 1
- for i in range(rowEnd, height):
- if not pixelIsSet(bitmap[rowEnd][0]):
- rowEnd -= 1
- break
- rowEnd += 1
-
- # Find the baseline
- baseline = rowStart
- for i in range(rowStart, rowEnd+1):
- if pixelIsSet(bitmap[baseline][1]):
- break
- baseline += 1
- if baseline > rowEnd:
- sys.stderr.write("No baseline found between rows %d-%d\n" % (rowStart, rowEnd))
- break
-
- # Set or confirm the height
- if font.height == 0:
- font.height = rowEnd - rowStart + 1
- font.yOffs = baseline - rowEnd
- else:
- if font.height != (rowEnd - rowStart + 1):
- sys.stderr.write("Inconsistent font height at rows %d-%d\n" % (rowStart, rowEnd))
- break
- if font.yOffs != (baseline - rowEnd):
- sys.stderr.write("Inconsistent baseline at rows %d-%d\n" % (rowStart, rowEnd))
- break
-
- # decode the starting character
- chStart = 0
- for x in range(0, 4):
- for y in range(0, 4):
- chStart = (chStart << 1) | pixelIsSet(bitmap[rowStart+y][2+x])
-
- # Print debug info
- # print("Row %d-%d, baseline %d, character start %X" % (rowStart, rowEnd, baseline, chStart))
-
- # scan the column to find characters
- colStart = 0
- while colStart < width:
- ch = RenderFontChar()
-
- # Find the start of the character
- for i in range(colStart, width):
- if pixelIsSet(bitmap[rowEnd+2][colStart]):
- break
- colStart += 1
- if colStart >= width:
- break
-
- # Find the end of the character
- colEnd = colStart + 1
- for i in range(colEnd, width):
- if not pixelIsSet(bitmap[rowEnd+2][colEnd]):
- colEnd -= 1
- break
- colEnd += 1
-
- # Skip char which code is already registered
- if ch.width <= 0:
- # Print debug info
- # print " Character %X - width = %d" % (chStart, colEnd - colStart + 1)
-
- # Plot the character
- ch.bitmap = list()
- for y in range(rowStart, rowEnd+1):
- ch.bitmap.append(list())
- for x in range(colStart, colEnd+1):
- if pixelIsSet(bitmap[y][x]):
- ch.bitmap[-1].append(0xffffffff)
- else:
- ch.bitmap[-1].append(0x00000000)
-
- # Set the character parameters
- ch.width = colEnd - colStart + 1
- ch.xOffs = 0
- ch.yOffs = font.yOffs
- ch.bmWidth = len(ch.bitmap[0])
- ch.bmHeight = len(ch.bitmap)
-
- # Insert the character into the list
- font.chars[chStart] = ch
-
- # Next character
- chStart += 1
- colStart = colEnd + 1
-
- # Next row
- rowStart = rowEnd + 1
-
- # Return non-zero if we errored
- return rowStart < height
-
-
-
-########################################
-## Main
-########################################
-def main():
- if len(sys.argv) < 3:
- sys.stderr.write("Usage:\n%s <input.png> [<input2.png> [...]] <output.bdc>\n" % sys.argv[0])
- return 1
- bdcName = sys.argv[-1]
-
- font = RenderFont()
- for i in range(1, len(sys.argv)-1):
- filename = sys.argv[i]
- if not os.path.exists(filename):
- sys.stderr.write("Error attempting to open PNG file.\n")
- return 1
-
- pngObject = png.Reader(filename)
- try:
- pngObject.validate_signature()
- except:
- sys.stderr.write("Error reading PNG file.\n")
- return 1
-
- error = bitmapToChars(pngObject, font)
- if error:
- return 1
-
- error = renderFontSaveCached(font, bdcName, 0)
- return error
-
-
-
-########################################
-## Program entry point
-########################################
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/src/build/verinfo.py b/src/build/verinfo.py
deleted file mode 100644
index a73d8ad2689..00000000000
--- a/src/build/verinfo.py
+++ /dev/null
@@ -1,170 +0,0 @@
-#!/usr/bin/python
-##
-## license:BSD-3-Clause
-## copyright-holders:Aaron Giles, Andrew Gardner
-
-from __future__ import with_statement
-
-import re
-import sys
-
-
-def parse_args():
- def usage():
- sys.stderr.write('Usage: verinfo.py [-b mame|mess|ume|ldplayer] [-r|-p] [-o <outfile>] <srcfile>\n')
- sys.exit(1)
-
- flags = True
- target = 'mame'
- format = 'rc'
- input = None
- output = None
- i = 1
- while i < len(sys.argv):
- if flags and (sys.argv[i] == '-r'):
- format = 'rc'
- elif flags and (sys.argv[i] == '-p'):
- format = 'plist'
- elif flags and (sys.argv[i] == '-b'):
- i += 1
- if (i >= len(sys.argv)):
- usage()
- else:
- target = sys.argv[i]
- elif flags and (sys.argv[i] == '-o'):
- i += 1
- if (i >= len(sys.argv)) or (output is not None):
- usage()
- else:
- output = sys.argv[i]
- elif flags and (sys.argv[i] == '--'):
- flags = False
- elif flags and sys.argv[i].startswith('-'):
- usage()
- elif input is not None:
- usage()
- else:
- input = sys.argv[i]
- i += 1
- if input is None:
- usage()
- return target, format, input, output
-
-
-def extract_version(input):
- pattern = re.compile('\s+BARE_BUILD_VERSION\s+"(([^."]+)\.([^."]+))"')
- for line in input.readlines():
- match = pattern.search(line)
- if match:
- return match.group(1), match.group(2), match.group(3)
- return None, None, None
-
-
-build, outfmt, srcfile, dstfile = parse_args()
-
-try:
- fp = open(srcfile, 'rU')
-except IOError:
- sys.stderr.write("Unable to open source file '%s'\n" % srcfile)
- sys.exit(1)
-
-version_string, version_major, version_minor = extract_version(fp)
-version_build = "0"
-version_subbuild = "0"
-if not version_string:
- sys.stderr.write("Unable to extract version from source file '%s'\n" % srcfile)
- sys.exit(1)
-fp.close()
-
-if dstfile is not None:
- try:
- fp = open(dstfile, 'w')
- except IOError:
- sys.stderr.write("Unable to open output file '%s'\n" % dstfile)
- sys.exit(1)
-else:
- fp = sys.stdout
-
-if build == "mess":
- # MESS
- author = "MESS Team"
- comments = "Multi Emulation Super System"
- company_name = "MESS Team"
- file_description = "Multi Emulation Super System"
- internal_name = "MESS"
- original_filename = "MESS"
- product_name = "MESS"
- bundle_identifier = "org.mamedev.mess"
-else:
- # MAME
- author = "Nicola Salmoria and the MAME Team"
- comments = "Multiple Arcade Machine Emulator"
- company_name = "MAME Team"
- file_description = "Multiple Arcade Machine Emulator"
- internal_name = "MAME" if build == "mame" else build
- original_filename = "MAME" if build == "mame" else build
- product_name = "MAME" if build == "mame" else build
- bundle_identifier = "org.mamedev." + build
-
-legal_copyright = "Copyright Nicola Salmoria and the MAME team"
-
-if outfmt == 'rc':
- fp.write('VS_VERSION_INFO VERSIONINFO\n')
- fp.write('\tFILEVERSION %s,%s,%s,%s\n' % (version_major, version_minor, version_build, version_subbuild))
- fp.write('\tPRODUCTVERSION %s,%s,%s,%s\n' % (version_major, version_minor, version_build, version_subbuild))
- fp.write('\tFILEFLAGSMASK 0x3fL\n')
- if version_build == 0:
- fp.write('\tFILEFLAGS 0x0L\n')
- else:
- fp.write('\tFILEFLAGS VS_FF_PRERELEASE\n')
- fp.write('\tFILEOS VOS_NT_WINDOWS32\n')
- fp.write('\tFILETYPE VFT_APP\n')
- fp.write('\tFILESUBTYPE VFT2_UNKNOWN\n')
- fp.write('BEGIN\n')
- fp.write('\tBLOCK "StringFileInfo"\n')
- fp.write('\tBEGIN\n')
- fp.write('#ifdef UNICODE\n')
- fp.write('\t\tBLOCK "040904b0"\n')
- fp.write('#else\n')
- fp.write('\t\tBLOCK "040904E4"\n')
- fp.write('#endif\n')
- fp.write('\t\tBEGIN\n')
- fp.write('\t\t\tVALUE "Author", "%s\\0"\n' % author)
- fp.write('\t\t\tVALUE "Comments", "%s\\0"\n' % comments)
- fp.write('\t\t\tVALUE "CompanyName", "%s\\0"\n' % company_name)
- fp.write('\t\t\tVALUE "FileDescription", "%s\\0"\n' % file_description)
- fp.write('\t\t\tVALUE "FileVersion", "%s, %s, %s, %s\\0"\n' % (version_major, version_minor, version_build, version_subbuild))
- fp.write('\t\t\tVALUE "InternalName", "%s\\0"\n' % internal_name)
- fp.write('\t\t\tVALUE "LegalCopyright", "%s\\0"\n' % legal_copyright)
- fp.write('\t\t\tVALUE "OriginalFilename", "%s\\0"\n' % original_filename)
- fp.write('\t\t\tVALUE "ProductName", "%s\\0"\n' % product_name)
- fp.write('\t\t\tVALUE "ProductVersion", "%s\\0"\n' % version_string)
- fp.write('\t\tEND\n')
- fp.write('\tEND\n')
- fp.write('\tBLOCK "VarFileInfo"\n')
- fp.write('\tBEGIN\n')
- fp.write('#ifdef UNICODE\n')
- fp.write('\t\tVALUE "Translation", 0x409, 1200\n')
- fp.write('#else\n')
- fp.write('\t\tVALUE "Translation", 0x409, 1252\n')
- fp.write('#endif\n')
- fp.write('\tEND\n')
- fp.write('END\n')
-elif outfmt == 'plist':
- fp.write('<?xml version="1.0" encoding="UTF-8"?>\n')
- fp.write('<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n')
- fp.write('<plist version="1.0">\n')
- fp.write('<dict>\n')
- fp.write('\t<key>CFBundleDisplayName</key>\n')
- fp.write('\t<string>%s</string>\n' % product_name)
- fp.write('\t<key>CFBundleIdentifier</key>\n')
- fp.write('\t<string>%s</string>\n' % bundle_identifier)
- fp.write('\t<key>CFBundleInfoDictionaryVersion</key>\n')
- fp.write('\t<string>6.0</string>\n')
- fp.write('\t<key>CFBundleName</key>\n')
- fp.write('\t<string>%s</string>\n' % product_name)
- fp.write('\t<key>CFBundleShortVersionString</key>\n')
- fp.write('\t<string>%s.%s.%s</string>\n' % (version_major, version_minor, version_build))
- fp.write('</dict>\n')
- fp.write('</plist>\n')
-fp.flush()
diff --git a/src/emu/bus/a1bus/a1bus.c b/src/devices/bus/a1bus/a1bus.c
index 7012d11a81b..7012d11a81b 100644
--- a/src/emu/bus/a1bus/a1bus.c
+++ b/src/devices/bus/a1bus/a1bus.c
diff --git a/src/emu/bus/a1bus/a1bus.h b/src/devices/bus/a1bus/a1bus.h
index ecdb440f948..ecdb440f948 100644
--- a/src/emu/bus/a1bus/a1bus.h
+++ b/src/devices/bus/a1bus/a1bus.h
diff --git a/src/emu/bus/a1bus/a1cassette.c b/src/devices/bus/a1bus/a1cassette.c
index daa79b15ce5..daa79b15ce5 100644
--- a/src/emu/bus/a1bus/a1cassette.c
+++ b/src/devices/bus/a1bus/a1cassette.c
diff --git a/src/emu/bus/a1bus/a1cassette.h b/src/devices/bus/a1bus/a1cassette.h
index e8d656c1c3a..e8d656c1c3a 100644
--- a/src/emu/bus/a1bus/a1cassette.h
+++ b/src/devices/bus/a1bus/a1cassette.h
diff --git a/src/emu/bus/a1bus/a1cffa.c b/src/devices/bus/a1bus/a1cffa.c
index f67470bb5db..f67470bb5db 100644
--- a/src/emu/bus/a1bus/a1cffa.c
+++ b/src/devices/bus/a1bus/a1cffa.c
diff --git a/src/emu/bus/a1bus/a1cffa.h b/src/devices/bus/a1bus/a1cffa.h
index a1dc4258cbc..a1dc4258cbc 100644
--- a/src/emu/bus/a1bus/a1cffa.h
+++ b/src/devices/bus/a1bus/a1cffa.h
diff --git a/src/emu/bus/a2bus/a2alfam2.c b/src/devices/bus/a2bus/a2alfam2.c
index 3a35c8ab253..3a35c8ab253 100644
--- a/src/emu/bus/a2bus/a2alfam2.c
+++ b/src/devices/bus/a2bus/a2alfam2.c
diff --git a/src/emu/bus/a2bus/a2alfam2.h b/src/devices/bus/a2bus/a2alfam2.h
index ab2ee9e38a4..ab2ee9e38a4 100644
--- a/src/emu/bus/a2bus/a2alfam2.h
+++ b/src/devices/bus/a2bus/a2alfam2.h
diff --git a/src/emu/bus/a2bus/a2applicard.c b/src/devices/bus/a2bus/a2applicard.c
index 6698ea4f68c..6698ea4f68c 100644
--- a/src/emu/bus/a2bus/a2applicard.c
+++ b/src/devices/bus/a2bus/a2applicard.c
diff --git a/src/emu/bus/a2bus/a2applicard.h b/src/devices/bus/a2bus/a2applicard.h
index b015d84fe6a..b015d84fe6a 100644
--- a/src/emu/bus/a2bus/a2applicard.h
+++ b/src/devices/bus/a2bus/a2applicard.h
diff --git a/src/emu/bus/a2bus/a2arcadebd.c b/src/devices/bus/a2bus/a2arcadebd.c
index dcad400f8b1..dcad400f8b1 100644
--- a/src/emu/bus/a2bus/a2arcadebd.c
+++ b/src/devices/bus/a2bus/a2arcadebd.c
diff --git a/src/emu/bus/a2bus/a2arcadebd.h b/src/devices/bus/a2bus/a2arcadebd.h
index ae39c51eac6..ae39c51eac6 100644
--- a/src/emu/bus/a2bus/a2arcadebd.h
+++ b/src/devices/bus/a2bus/a2arcadebd.h
diff --git a/src/emu/bus/a2bus/a2bus.c b/src/devices/bus/a2bus/a2bus.c
index cd2eab4eea7..cd2eab4eea7 100644
--- a/src/emu/bus/a2bus/a2bus.c
+++ b/src/devices/bus/a2bus/a2bus.c
diff --git a/src/emu/bus/a2bus/a2bus.h b/src/devices/bus/a2bus/a2bus.h
index 90ab602607d..90ab602607d 100644
--- a/src/emu/bus/a2bus/a2bus.h
+++ b/src/devices/bus/a2bus/a2bus.h
diff --git a/src/emu/bus/a2bus/a2cffa.c b/src/devices/bus/a2bus/a2cffa.c
index 6bde1195ac7..6bde1195ac7 100644
--- a/src/emu/bus/a2bus/a2cffa.c
+++ b/src/devices/bus/a2bus/a2cffa.c
diff --git a/src/emu/bus/a2bus/a2cffa.h b/src/devices/bus/a2bus/a2cffa.h
index a719861efa9..a719861efa9 100644
--- a/src/emu/bus/a2bus/a2cffa.h
+++ b/src/devices/bus/a2bus/a2cffa.h
diff --git a/src/emu/bus/a2bus/a2corvus.c b/src/devices/bus/a2bus/a2corvus.c
index d3de7fdfee0..d3de7fdfee0 100644
--- a/src/emu/bus/a2bus/a2corvus.c
+++ b/src/devices/bus/a2bus/a2corvus.c
diff --git a/src/emu/bus/a2bus/a2corvus.h b/src/devices/bus/a2bus/a2corvus.h
index 4c9ade900ab..4c9ade900ab 100644
--- a/src/emu/bus/a2bus/a2corvus.h
+++ b/src/devices/bus/a2bus/a2corvus.h
diff --git a/src/emu/bus/a2bus/a2diskii.c b/src/devices/bus/a2bus/a2diskii.c
index ad8a860a69f..ad8a860a69f 100644
--- a/src/emu/bus/a2bus/a2diskii.c
+++ b/src/devices/bus/a2bus/a2diskii.c
diff --git a/src/emu/bus/a2bus/a2diskii.h b/src/devices/bus/a2bus/a2diskii.h
index 15e47316fe7..15e47316fe7 100644
--- a/src/emu/bus/a2bus/a2diskii.h
+++ b/src/devices/bus/a2bus/a2diskii.h
diff --git a/src/emu/bus/a2bus/a2diskiing.c b/src/devices/bus/a2bus/a2diskiing.c
index de0f84c26db..de0f84c26db 100644
--- a/src/emu/bus/a2bus/a2diskiing.c
+++ b/src/devices/bus/a2bus/a2diskiing.c
diff --git a/src/emu/bus/a2bus/a2diskiing.h b/src/devices/bus/a2bus/a2diskiing.h
index 462731449bb..462731449bb 100644
--- a/src/emu/bus/a2bus/a2diskiing.h
+++ b/src/devices/bus/a2bus/a2diskiing.h
diff --git a/src/emu/bus/a2bus/a2dx1.c b/src/devices/bus/a2bus/a2dx1.c
index e3b4fcc3fc5..e3b4fcc3fc5 100644
--- a/src/emu/bus/a2bus/a2dx1.c
+++ b/src/devices/bus/a2bus/a2dx1.c
diff --git a/src/emu/bus/a2bus/a2dx1.h b/src/devices/bus/a2bus/a2dx1.h
index 99b9d98193a..99b9d98193a 100644
--- a/src/emu/bus/a2bus/a2dx1.h
+++ b/src/devices/bus/a2bus/a2dx1.h
diff --git a/src/emu/bus/a2bus/a2eauxslot.c b/src/devices/bus/a2bus/a2eauxslot.c
index 3f6d99ead9c..3f6d99ead9c 100644
--- a/src/emu/bus/a2bus/a2eauxslot.c
+++ b/src/devices/bus/a2bus/a2eauxslot.c
diff --git a/src/emu/bus/a2bus/a2eauxslot.h b/src/devices/bus/a2bus/a2eauxslot.h
index 47babc64bab..47babc64bab 100644
--- a/src/emu/bus/a2bus/a2eauxslot.h
+++ b/src/devices/bus/a2bus/a2eauxslot.h
diff --git a/src/emu/bus/a2bus/a2echoii.c b/src/devices/bus/a2bus/a2echoii.c
index e6be96b5d85..e6be96b5d85 100644
--- a/src/emu/bus/a2bus/a2echoii.c
+++ b/src/devices/bus/a2bus/a2echoii.c
diff --git a/src/emu/bus/a2bus/a2echoii.h b/src/devices/bus/a2bus/a2echoii.h
index 9413ce3a900..9413ce3a900 100644
--- a/src/emu/bus/a2bus/a2echoii.h
+++ b/src/devices/bus/a2bus/a2echoii.h
diff --git a/src/emu/bus/a2bus/a2eext80col.c b/src/devices/bus/a2bus/a2eext80col.c
index c3e9af48cac..c3e9af48cac 100644
--- a/src/emu/bus/a2bus/a2eext80col.c
+++ b/src/devices/bus/a2bus/a2eext80col.c
diff --git a/src/emu/bus/a2bus/a2eext80col.h b/src/devices/bus/a2bus/a2eext80col.h
index ba14f5f0ad3..ba14f5f0ad3 100644
--- a/src/emu/bus/a2bus/a2eext80col.h
+++ b/src/devices/bus/a2bus/a2eext80col.h
diff --git a/src/emu/bus/a2bus/a2eramworks3.c b/src/devices/bus/a2bus/a2eramworks3.c
index 17b7b2ceb0e..17b7b2ceb0e 100644
--- a/src/emu/bus/a2bus/a2eramworks3.c
+++ b/src/devices/bus/a2bus/a2eramworks3.c
diff --git a/src/emu/bus/a2bus/a2eramworks3.h b/src/devices/bus/a2bus/a2eramworks3.h
index 93b120bb59d..93b120bb59d 100644
--- a/src/emu/bus/a2bus/a2eramworks3.h
+++ b/src/devices/bus/a2bus/a2eramworks3.h
diff --git a/src/emu/bus/a2bus/a2estd80col.c b/src/devices/bus/a2bus/a2estd80col.c
index 706f32d6a55..706f32d6a55 100644
--- a/src/emu/bus/a2bus/a2estd80col.c
+++ b/src/devices/bus/a2bus/a2estd80col.c
diff --git a/src/emu/bus/a2bus/a2estd80col.h b/src/devices/bus/a2bus/a2estd80col.h
index bcab4bab704..bcab4bab704 100644
--- a/src/emu/bus/a2bus/a2estd80col.h
+++ b/src/devices/bus/a2bus/a2estd80col.h
diff --git a/src/emu/bus/a2bus/a2hsscsi.c b/src/devices/bus/a2bus/a2hsscsi.c
index a292eba7410..a292eba7410 100644
--- a/src/emu/bus/a2bus/a2hsscsi.c
+++ b/src/devices/bus/a2bus/a2hsscsi.c
diff --git a/src/emu/bus/a2bus/a2hsscsi.h b/src/devices/bus/a2bus/a2hsscsi.h
index 2deada2e051..2deada2e051 100644
--- a/src/emu/bus/a2bus/a2hsscsi.h
+++ b/src/devices/bus/a2bus/a2hsscsi.h
diff --git a/src/emu/bus/a2bus/a2lang.c b/src/devices/bus/a2bus/a2lang.c
index 9a0b21dca36..9a0b21dca36 100644
--- a/src/emu/bus/a2bus/a2lang.c
+++ b/src/devices/bus/a2bus/a2lang.c
diff --git a/src/emu/bus/a2bus/a2lang.h b/src/devices/bus/a2bus/a2lang.h
index b97ae92a5b1..b97ae92a5b1 100644
--- a/src/emu/bus/a2bus/a2lang.h
+++ b/src/devices/bus/a2bus/a2lang.h
diff --git a/src/emu/bus/a2bus/a2mcms.c b/src/devices/bus/a2bus/a2mcms.c
index e9bb29d1243..e9bb29d1243 100644
--- a/src/emu/bus/a2bus/a2mcms.c
+++ b/src/devices/bus/a2bus/a2mcms.c
diff --git a/src/emu/bus/a2bus/a2mcms.h b/src/devices/bus/a2bus/a2mcms.h
index 283d13be62c..283d13be62c 100644
--- a/src/emu/bus/a2bus/a2mcms.h
+++ b/src/devices/bus/a2bus/a2mcms.h
diff --git a/src/emu/bus/a2bus/a2memexp.c b/src/devices/bus/a2bus/a2memexp.c
index 210ba76a0d2..210ba76a0d2 100644
--- a/src/emu/bus/a2bus/a2memexp.c
+++ b/src/devices/bus/a2bus/a2memexp.c
diff --git a/src/emu/bus/a2bus/a2memexp.h b/src/devices/bus/a2bus/a2memexp.h
index e7167569c67..e7167569c67 100644
--- a/src/emu/bus/a2bus/a2memexp.h
+++ b/src/devices/bus/a2bus/a2memexp.h
diff --git a/src/emu/bus/a2bus/a2midi.c b/src/devices/bus/a2bus/a2midi.c
index 92dbff70520..92dbff70520 100644
--- a/src/emu/bus/a2bus/a2midi.c
+++ b/src/devices/bus/a2bus/a2midi.c
diff --git a/src/emu/bus/a2bus/a2midi.h b/src/devices/bus/a2bus/a2midi.h
index f7023eba570..f7023eba570 100644
--- a/src/emu/bus/a2bus/a2midi.h
+++ b/src/devices/bus/a2bus/a2midi.h
diff --git a/src/emu/bus/a2bus/a2mockingboard.c b/src/devices/bus/a2bus/a2mockingboard.c
index 9dd792f6e45..9dd792f6e45 100644
--- a/src/emu/bus/a2bus/a2mockingboard.c
+++ b/src/devices/bus/a2bus/a2mockingboard.c
diff --git a/src/emu/bus/a2bus/a2mockingboard.h b/src/devices/bus/a2bus/a2mockingboard.h
index eb297bc9605..eb297bc9605 100644
--- a/src/emu/bus/a2bus/a2mockingboard.h
+++ b/src/devices/bus/a2bus/a2mockingboard.h
diff --git a/src/emu/bus/a2bus/a2pic.c b/src/devices/bus/a2bus/a2pic.c
index daede92b119..daede92b119 100644
--- a/src/emu/bus/a2bus/a2pic.c
+++ b/src/devices/bus/a2bus/a2pic.c
diff --git a/src/emu/bus/a2bus/a2pic.h b/src/devices/bus/a2bus/a2pic.h
index 172ec603502..172ec603502 100644
--- a/src/emu/bus/a2bus/a2pic.h
+++ b/src/devices/bus/a2bus/a2pic.h
diff --git a/src/emu/bus/a2bus/a2sam.c b/src/devices/bus/a2bus/a2sam.c
index 7cdabc64b74..7cdabc64b74 100644
--- a/src/emu/bus/a2bus/a2sam.c
+++ b/src/devices/bus/a2bus/a2sam.c
diff --git a/src/emu/bus/a2bus/a2sam.h b/src/devices/bus/a2bus/a2sam.h
index 3c2076921ef..3c2076921ef 100644
--- a/src/emu/bus/a2bus/a2sam.h
+++ b/src/devices/bus/a2bus/a2sam.h
diff --git a/src/emu/bus/a2bus/a2scsi.c b/src/devices/bus/a2bus/a2scsi.c
index 5e9fc865718..5e9fc865718 100644
--- a/src/emu/bus/a2bus/a2scsi.c
+++ b/src/devices/bus/a2bus/a2scsi.c
diff --git a/src/emu/bus/a2bus/a2scsi.h b/src/devices/bus/a2bus/a2scsi.h
index 660a6d4c7b0..660a6d4c7b0 100644
--- a/src/emu/bus/a2bus/a2scsi.h
+++ b/src/devices/bus/a2bus/a2scsi.h
diff --git a/src/emu/bus/a2bus/a2softcard.c b/src/devices/bus/a2bus/a2softcard.c
index e7fe5cdff95..e7fe5cdff95 100644
--- a/src/emu/bus/a2bus/a2softcard.c
+++ b/src/devices/bus/a2bus/a2softcard.c
diff --git a/src/emu/bus/a2bus/a2softcard.h b/src/devices/bus/a2bus/a2softcard.h
index 5c1064479e2..5c1064479e2 100644
--- a/src/emu/bus/a2bus/a2softcard.h
+++ b/src/devices/bus/a2bus/a2softcard.h
diff --git a/src/emu/bus/a2bus/a2ssc.c b/src/devices/bus/a2bus/a2ssc.c
index 992ae8fa6c0..992ae8fa6c0 100644
--- a/src/emu/bus/a2bus/a2ssc.c
+++ b/src/devices/bus/a2bus/a2ssc.c
diff --git a/src/emu/bus/a2bus/a2ssc.h b/src/devices/bus/a2bus/a2ssc.h
index 8a19b0f49d2..8a19b0f49d2 100644
--- a/src/emu/bus/a2bus/a2ssc.h
+++ b/src/devices/bus/a2bus/a2ssc.h
diff --git a/src/emu/bus/a2bus/a2swyft.c b/src/devices/bus/a2bus/a2swyft.c
index 38be337e8ba..38be337e8ba 100644
--- a/src/emu/bus/a2bus/a2swyft.c
+++ b/src/devices/bus/a2bus/a2swyft.c
diff --git a/src/emu/bus/a2bus/a2swyft.h b/src/devices/bus/a2bus/a2swyft.h
index a7903f29de7..a7903f29de7 100644
--- a/src/emu/bus/a2bus/a2swyft.h
+++ b/src/devices/bus/a2bus/a2swyft.h
diff --git a/src/emu/bus/a2bus/a2themill.c b/src/devices/bus/a2bus/a2themill.c
index 4ea020ae434..4ea020ae434 100644
--- a/src/emu/bus/a2bus/a2themill.c
+++ b/src/devices/bus/a2bus/a2themill.c
diff --git a/src/emu/bus/a2bus/a2themill.h b/src/devices/bus/a2bus/a2themill.h
index 72ea1b47953..72ea1b47953 100644
--- a/src/emu/bus/a2bus/a2themill.h
+++ b/src/devices/bus/a2bus/a2themill.h
diff --git a/src/emu/bus/a2bus/a2thunderclock.c b/src/devices/bus/a2bus/a2thunderclock.c
index d16feb82448..d16feb82448 100644
--- a/src/emu/bus/a2bus/a2thunderclock.c
+++ b/src/devices/bus/a2bus/a2thunderclock.c
diff --git a/src/emu/bus/a2bus/a2thunderclock.h b/src/devices/bus/a2bus/a2thunderclock.h
index 23b9e66981c..23b9e66981c 100644
--- a/src/emu/bus/a2bus/a2thunderclock.h
+++ b/src/devices/bus/a2bus/a2thunderclock.h
diff --git a/src/emu/bus/a2bus/a2ultraterm.c b/src/devices/bus/a2bus/a2ultraterm.c
index 62969c36dee..62969c36dee 100644
--- a/src/emu/bus/a2bus/a2ultraterm.c
+++ b/src/devices/bus/a2bus/a2ultraterm.c
diff --git a/src/emu/bus/a2bus/a2ultraterm.h b/src/devices/bus/a2bus/a2ultraterm.h
index a9f9745f2cc..a9f9745f2cc 100644
--- a/src/emu/bus/a2bus/a2ultraterm.h
+++ b/src/devices/bus/a2bus/a2ultraterm.h
diff --git a/src/emu/bus/a2bus/a2videoterm.c b/src/devices/bus/a2bus/a2videoterm.c
index d29c00d2006..d29c00d2006 100644
--- a/src/emu/bus/a2bus/a2videoterm.c
+++ b/src/devices/bus/a2bus/a2videoterm.c
diff --git a/src/emu/bus/a2bus/a2videoterm.h b/src/devices/bus/a2bus/a2videoterm.h
index 3452430e4dc..3452430e4dc 100644
--- a/src/emu/bus/a2bus/a2videoterm.h
+++ b/src/devices/bus/a2bus/a2videoterm.h
diff --git a/src/emu/bus/a2bus/a2vulcan.c b/src/devices/bus/a2bus/a2vulcan.c
index ff155f25acd..ff155f25acd 100644
--- a/src/emu/bus/a2bus/a2vulcan.c
+++ b/src/devices/bus/a2bus/a2vulcan.c
diff --git a/src/emu/bus/a2bus/a2vulcan.h b/src/devices/bus/a2bus/a2vulcan.h
index bcd9f6fa3b6..bcd9f6fa3b6 100644
--- a/src/emu/bus/a2bus/a2vulcan.h
+++ b/src/devices/bus/a2bus/a2vulcan.h
diff --git a/src/emu/bus/a2bus/a2zipdrive.c b/src/devices/bus/a2bus/a2zipdrive.c
index da958262e34..da958262e34 100644
--- a/src/emu/bus/a2bus/a2zipdrive.c
+++ b/src/devices/bus/a2bus/a2zipdrive.c
diff --git a/src/emu/bus/a2bus/a2zipdrive.h b/src/devices/bus/a2bus/a2zipdrive.h
index 195ad987f25..195ad987f25 100644
--- a/src/emu/bus/a2bus/a2zipdrive.h
+++ b/src/devices/bus/a2bus/a2zipdrive.h
diff --git a/src/emu/bus/a2bus/corvfdc01.c b/src/devices/bus/a2bus/corvfdc01.c
index fc1adf2e269..fc1adf2e269 100644
--- a/src/emu/bus/a2bus/corvfdc01.c
+++ b/src/devices/bus/a2bus/corvfdc01.c
diff --git a/src/emu/bus/a2bus/corvfdc01.h b/src/devices/bus/a2bus/corvfdc01.h
index 2299f77cbd7..2299f77cbd7 100644
--- a/src/emu/bus/a2bus/corvfdc01.h
+++ b/src/devices/bus/a2bus/corvfdc01.h
diff --git a/src/emu/bus/a2bus/corvfdc02.c b/src/devices/bus/a2bus/corvfdc02.c
index eaad8725d1f..eaad8725d1f 100644
--- a/src/emu/bus/a2bus/corvfdc02.c
+++ b/src/devices/bus/a2bus/corvfdc02.c
diff --git a/src/emu/bus/a2bus/corvfdc02.h b/src/devices/bus/a2bus/corvfdc02.h
index 982c0486160..982c0486160 100644
--- a/src/emu/bus/a2bus/corvfdc02.h
+++ b/src/devices/bus/a2bus/corvfdc02.h
diff --git a/src/emu/bus/a2bus/ezcgi.c b/src/devices/bus/a2bus/ezcgi.c
index c943f3cd979..e85db228ad2 100644
--- a/src/emu/bus/a2bus/ezcgi.c
+++ b/src/devices/bus/a2bus/ezcgi.c
@@ -45,7 +45,7 @@ MACHINE_CONFIG_END
#define MSX2_VISIBLE_YBORDER_PIXELS 14 * 2
MACHINE_CONFIG_FRAGMENT( ezcgi9938 )
- MCFG_V9938_ADD(TMS_TAG, SCREEN_TAG, 0x30000) // 192K of VRAM
+ MCFG_V9938_ADD(TMS_TAG, SCREEN_TAG, 0x30000, XTAL_21_4772MHz) // 192K of VRAM / typical 9938 clock, not verified
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(a2bus_ezcgi_9938_device, tms_irq_w))
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
@@ -59,7 +59,7 @@ MACHINE_CONFIG_FRAGMENT( ezcgi9938 )
MACHINE_CONFIG_END
MACHINE_CONFIG_FRAGMENT( ezcgi9958 )
- MCFG_V9958_ADD(TMS_TAG, SCREEN_TAG, 0x30000) // 192K of VRAM
+ MCFG_V9958_ADD(TMS_TAG, SCREEN_TAG, 0x30000, XTAL_21_4772MHz) // 192K of VRAM / typcial 9938/9958 clock, not verified
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(a2bus_ezcgi_9958_device, tms_irq_w))
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
diff --git a/src/emu/bus/a2bus/ezcgi.h b/src/devices/bus/a2bus/ezcgi.h
index ef1e6e397de..ef1e6e397de 100644
--- a/src/emu/bus/a2bus/ezcgi.h
+++ b/src/devices/bus/a2bus/ezcgi.h
diff --git a/src/emu/bus/a2bus/laser128.c b/src/devices/bus/a2bus/laser128.c
index c64719ba7e5..c64719ba7e5 100644
--- a/src/emu/bus/a2bus/laser128.c
+++ b/src/devices/bus/a2bus/laser128.c
diff --git a/src/emu/bus/a2bus/laser128.h b/src/devices/bus/a2bus/laser128.h
index de754f3b368..de754f3b368 100644
--- a/src/emu/bus/a2bus/laser128.h
+++ b/src/devices/bus/a2bus/laser128.h
diff --git a/src/emu/bus/a2bus/mouse.c b/src/devices/bus/a2bus/mouse.c
index d044fbcdad2..d044fbcdad2 100644
--- a/src/emu/bus/a2bus/mouse.c
+++ b/src/devices/bus/a2bus/mouse.c
diff --git a/src/emu/bus/a2bus/mouse.h b/src/devices/bus/a2bus/mouse.h
index b6065897731..b6065897731 100644
--- a/src/emu/bus/a2bus/mouse.h
+++ b/src/devices/bus/a2bus/mouse.h
diff --git a/src/emu/bus/a2bus/ramcard128k.c b/src/devices/bus/a2bus/ramcard128k.c
index 3b05128e186..3b05128e186 100644
--- a/src/emu/bus/a2bus/ramcard128k.c
+++ b/src/devices/bus/a2bus/ramcard128k.c
diff --git a/src/emu/bus/a2bus/ramcard128k.h b/src/devices/bus/a2bus/ramcard128k.h
index 4d2eb0da497..4d2eb0da497 100644
--- a/src/emu/bus/a2bus/ramcard128k.h
+++ b/src/devices/bus/a2bus/ramcard128k.h
diff --git a/src/emu/bus/a2bus/ramcard16k.c b/src/devices/bus/a2bus/ramcard16k.c
index a25ba79423f..a25ba79423f 100644
--- a/src/emu/bus/a2bus/ramcard16k.c
+++ b/src/devices/bus/a2bus/ramcard16k.c
diff --git a/src/emu/bus/a2bus/ramcard16k.h b/src/devices/bus/a2bus/ramcard16k.h
index 1de1cdaa85c..1de1cdaa85c 100644
--- a/src/emu/bus/a2bus/ramcard16k.h
+++ b/src/devices/bus/a2bus/ramcard16k.h
diff --git a/src/emu/bus/a2bus/timemasterho.c b/src/devices/bus/a2bus/timemasterho.c
index 9b33d8fd511..9b33d8fd511 100644
--- a/src/emu/bus/a2bus/timemasterho.c
+++ b/src/devices/bus/a2bus/timemasterho.c
diff --git a/src/emu/bus/a2bus/timemasterho.h b/src/devices/bus/a2bus/timemasterho.h
index cf26d3cded8..cf26d3cded8 100644
--- a/src/emu/bus/a2bus/timemasterho.h
+++ b/src/devices/bus/a2bus/timemasterho.h
diff --git a/src/emu/bus/a7800/a78_carts.h b/src/devices/bus/a7800/a78_carts.h
index ebf66de8218..ebf66de8218 100644
--- a/src/emu/bus/a7800/a78_carts.h
+++ b/src/devices/bus/a7800/a78_carts.h
diff --git a/src/emu/bus/a7800/a78_slot.c b/src/devices/bus/a7800/a78_slot.c
index 6332492a6c2..6332492a6c2 100644
--- a/src/emu/bus/a7800/a78_slot.c
+++ b/src/devices/bus/a7800/a78_slot.c
diff --git a/src/emu/bus/a7800/a78_slot.h b/src/devices/bus/a7800/a78_slot.h
index ff41ae8a608..ff41ae8a608 100644
--- a/src/emu/bus/a7800/a78_slot.h
+++ b/src/devices/bus/a7800/a78_slot.h
diff --git a/src/emu/bus/a7800/cpuwiz.c b/src/devices/bus/a7800/cpuwiz.c
index 9185e49ac7c..9185e49ac7c 100644
--- a/src/emu/bus/a7800/cpuwiz.c
+++ b/src/devices/bus/a7800/cpuwiz.c
diff --git a/src/emu/bus/a7800/cpuwiz.h b/src/devices/bus/a7800/cpuwiz.h
index 75f980fbffd..75f980fbffd 100644
--- a/src/emu/bus/a7800/cpuwiz.h
+++ b/src/devices/bus/a7800/cpuwiz.h
diff --git a/src/emu/bus/a7800/hiscore.c b/src/devices/bus/a7800/hiscore.c
index cbdab10f02d..cbdab10f02d 100644
--- a/src/emu/bus/a7800/hiscore.c
+++ b/src/devices/bus/a7800/hiscore.c
diff --git a/src/emu/bus/a7800/hiscore.h b/src/devices/bus/a7800/hiscore.h
index 9677e72cdb0..9677e72cdb0 100644
--- a/src/emu/bus/a7800/hiscore.h
+++ b/src/devices/bus/a7800/hiscore.h
diff --git a/src/emu/bus/a7800/rom.c b/src/devices/bus/a7800/rom.c
index fa44813dba4..f642fcf611a 100644
--- a/src/emu/bus/a7800/rom.c
+++ b/src/devices/bus/a7800/rom.c
@@ -469,7 +469,7 @@ READ8_MEMBER(a78_rom_act_device::read_40xx)
WRITE8_MEMBER(a78_rom_act_device::write_40xx)
{
- if (offset >= 0xbf80 && offset <= 0xbf87)
+ if (offset >= 0xbf80 && offset <= 0xbf8f)
m_bank = offset & 7;
}
diff --git a/src/emu/bus/a7800/rom.h b/src/devices/bus/a7800/rom.h
index 0de17b2a952..0de17b2a952 100644
--- a/src/emu/bus/a7800/rom.h
+++ b/src/devices/bus/a7800/rom.h
diff --git a/src/emu/bus/a7800/xboard.c b/src/devices/bus/a7800/xboard.c
index 3c5eb3d0f24..3c5eb3d0f24 100644
--- a/src/emu/bus/a7800/xboard.c
+++ b/src/devices/bus/a7800/xboard.c
diff --git a/src/emu/bus/a7800/xboard.h b/src/devices/bus/a7800/xboard.h
index 44173e70390..44173e70390 100644
--- a/src/emu/bus/a7800/xboard.h
+++ b/src/devices/bus/a7800/xboard.h
diff --git a/src/emu/bus/a800/a800_carts.h b/src/devices/bus/a800/a800_carts.h
index 720b5e7f4f8..720b5e7f4f8 100644
--- a/src/emu/bus/a800/a800_carts.h
+++ b/src/devices/bus/a800/a800_carts.h
diff --git a/src/emu/bus/a800/a800_slot.c b/src/devices/bus/a800/a800_slot.c
index c378d869811..c378d869811 100644
--- a/src/emu/bus/a800/a800_slot.c
+++ b/src/devices/bus/a800/a800_slot.c
diff --git a/src/emu/bus/a800/a800_slot.h b/src/devices/bus/a800/a800_slot.h
index 8359b9c7178..8359b9c7178 100644
--- a/src/emu/bus/a800/a800_slot.h
+++ b/src/devices/bus/a800/a800_slot.h
diff --git a/src/emu/bus/a8sio/a8sio.c b/src/devices/bus/a800/a8sio.c
index fd64d077b50..fd64d077b50 100644
--- a/src/emu/bus/a8sio/a8sio.c
+++ b/src/devices/bus/a800/a8sio.c
diff --git a/src/emu/bus/a8sio/a8sio.h b/src/devices/bus/a800/a8sio.h
index 29e548946d4..29e548946d4 100644
--- a/src/emu/bus/a8sio/a8sio.h
+++ b/src/devices/bus/a800/a8sio.h
diff --git a/src/emu/bus/a8sio/cassette.c b/src/devices/bus/a800/cassette.c
index 45d33173bac..45d33173bac 100644
--- a/src/emu/bus/a8sio/cassette.c
+++ b/src/devices/bus/a800/cassette.c
diff --git a/src/emu/bus/a8sio/cassette.h b/src/devices/bus/a800/cassette.h
index d9b59568864..d9b59568864 100644
--- a/src/emu/bus/a8sio/cassette.h
+++ b/src/devices/bus/a800/cassette.h
diff --git a/src/emu/bus/a800/oss.c b/src/devices/bus/a800/oss.c
index 8f7ae76735f..8f7ae76735f 100644
--- a/src/emu/bus/a800/oss.c
+++ b/src/devices/bus/a800/oss.c
diff --git a/src/emu/bus/a800/oss.h b/src/devices/bus/a800/oss.h
index f781c8f5182..f781c8f5182 100644
--- a/src/emu/bus/a800/oss.h
+++ b/src/devices/bus/a800/oss.h
diff --git a/src/emu/bus/a800/rom.c b/src/devices/bus/a800/rom.c
index f52a489bcf0..f52a489bcf0 100644
--- a/src/emu/bus/a800/rom.c
+++ b/src/devices/bus/a800/rom.c
diff --git a/src/emu/bus/a800/rom.h b/src/devices/bus/a800/rom.h
index a1e6cde0925..a1e6cde0925 100644
--- a/src/emu/bus/a800/rom.h
+++ b/src/devices/bus/a800/rom.h
diff --git a/src/emu/bus/a800/sparta.c b/src/devices/bus/a800/sparta.c
index 8e6a439d669..8e6a439d669 100644
--- a/src/emu/bus/a800/sparta.c
+++ b/src/devices/bus/a800/sparta.c
diff --git a/src/emu/bus/a800/sparta.h b/src/devices/bus/a800/sparta.h
index 6b6cf9eb932..6b6cf9eb932 100644
--- a/src/emu/bus/a800/sparta.h
+++ b/src/devices/bus/a800/sparta.h
diff --git a/src/emu/bus/abcbus/abc890.c b/src/devices/bus/abcbus/abc890.c
index ecfc1abf4d2..ecfc1abf4d2 100644
--- a/src/emu/bus/abcbus/abc890.c
+++ b/src/devices/bus/abcbus/abc890.c
diff --git a/src/emu/bus/abcbus/abc890.h b/src/devices/bus/abcbus/abc890.h
index 3c878bfa95c..3c878bfa95c 100644
--- a/src/emu/bus/abcbus/abc890.h
+++ b/src/devices/bus/abcbus/abc890.h
diff --git a/src/emu/bus/abcbus/abcbus.c b/src/devices/bus/abcbus/abcbus.c
index b5491e4e101..b5491e4e101 100644
--- a/src/emu/bus/abcbus/abcbus.c
+++ b/src/devices/bus/abcbus/abcbus.c
diff --git a/src/emu/bus/abcbus/abcbus.h b/src/devices/bus/abcbus/abcbus.h
index cdfd436495d..cdfd436495d 100644
--- a/src/emu/bus/abcbus/abcbus.h
+++ b/src/devices/bus/abcbus/abcbus.h
diff --git a/src/emu/bus/abcbus/fd2.c b/src/devices/bus/abcbus/fd2.c
index 7faeefb97c4..7faeefb97c4 100644
--- a/src/emu/bus/abcbus/fd2.c
+++ b/src/devices/bus/abcbus/fd2.c
diff --git a/src/emu/bus/abcbus/fd2.h b/src/devices/bus/abcbus/fd2.h
index ef183e92843..ef183e92843 100644
--- a/src/emu/bus/abcbus/fd2.h
+++ b/src/devices/bus/abcbus/fd2.h
diff --git a/src/emu/bus/abcbus/hdc.c b/src/devices/bus/abcbus/hdc.c
index 628fbcb2d7d..628fbcb2d7d 100644
--- a/src/emu/bus/abcbus/hdc.c
+++ b/src/devices/bus/abcbus/hdc.c
diff --git a/src/emu/bus/abcbus/hdc.h b/src/devices/bus/abcbus/hdc.h
index cebe7619174..cebe7619174 100644
--- a/src/emu/bus/abcbus/hdc.h
+++ b/src/devices/bus/abcbus/hdc.h
diff --git a/src/emu/bus/abcbus/lux10828.c b/src/devices/bus/abcbus/lux10828.c
index 705a9e8035b..705a9e8035b 100644
--- a/src/emu/bus/abcbus/lux10828.c
+++ b/src/devices/bus/abcbus/lux10828.c
diff --git a/src/emu/bus/abcbus/lux10828.h b/src/devices/bus/abcbus/lux10828.h
index 3ffa18e9122..3ffa18e9122 100644
--- a/src/emu/bus/abcbus/lux10828.h
+++ b/src/devices/bus/abcbus/lux10828.h
diff --git a/src/emu/bus/abcbus/lux21046.c b/src/devices/bus/abcbus/lux21046.c
index 67396d81139..67396d81139 100644
--- a/src/emu/bus/abcbus/lux21046.c
+++ b/src/devices/bus/abcbus/lux21046.c
diff --git a/src/emu/bus/abcbus/lux21046.h b/src/devices/bus/abcbus/lux21046.h
index f670b9d5768..f670b9d5768 100644
--- a/src/emu/bus/abcbus/lux21046.h
+++ b/src/devices/bus/abcbus/lux21046.h
diff --git a/src/emu/bus/abcbus/lux21056.c b/src/devices/bus/abcbus/lux21056.c
index 375a5927c47..375a5927c47 100644
--- a/src/emu/bus/abcbus/lux21056.c
+++ b/src/devices/bus/abcbus/lux21056.c
diff --git a/src/emu/bus/abcbus/lux21056.h b/src/devices/bus/abcbus/lux21056.h
index 56d550155bf..56d550155bf 100644
--- a/src/emu/bus/abcbus/lux21056.h
+++ b/src/devices/bus/abcbus/lux21056.h
diff --git a/src/emu/bus/abcbus/lux4105.c b/src/devices/bus/abcbus/lux4105.c
index 52e0446d86a..52e0446d86a 100644
--- a/src/emu/bus/abcbus/lux4105.c
+++ b/src/devices/bus/abcbus/lux4105.c
diff --git a/src/emu/bus/abcbus/lux4105.h b/src/devices/bus/abcbus/lux4105.h
index 9d1aae90b4b..9d1aae90b4b 100644
--- a/src/emu/bus/abcbus/lux4105.h
+++ b/src/devices/bus/abcbus/lux4105.h
diff --git a/src/emu/bus/abcbus/memcard.c b/src/devices/bus/abcbus/memcard.c
index c7fbd2f3f31..c7fbd2f3f31 100644
--- a/src/emu/bus/abcbus/memcard.c
+++ b/src/devices/bus/abcbus/memcard.c
diff --git a/src/emu/bus/abcbus/memcard.h b/src/devices/bus/abcbus/memcard.h
index a3308c47f6f..a3308c47f6f 100644
--- a/src/emu/bus/abcbus/memcard.h
+++ b/src/devices/bus/abcbus/memcard.h
diff --git a/src/emu/bus/abcbus/ram.c b/src/devices/bus/abcbus/ram.c
index a91e29bd9c7..a91e29bd9c7 100644
--- a/src/emu/bus/abcbus/ram.c
+++ b/src/devices/bus/abcbus/ram.c
diff --git a/src/emu/bus/abcbus/ram.h b/src/devices/bus/abcbus/ram.h
index f7fbd351927..f7fbd351927 100644
--- a/src/emu/bus/abcbus/ram.h
+++ b/src/devices/bus/abcbus/ram.h
diff --git a/src/emu/bus/abcbus/sio.c b/src/devices/bus/abcbus/sio.c
index fe4d93ac2e7..fe4d93ac2e7 100644
--- a/src/emu/bus/abcbus/sio.c
+++ b/src/devices/bus/abcbus/sio.c
diff --git a/src/emu/bus/abcbus/sio.h b/src/devices/bus/abcbus/sio.h
index 6ad8b90df0e..6ad8b90df0e 100644
--- a/src/emu/bus/abcbus/sio.h
+++ b/src/devices/bus/abcbus/sio.h
diff --git a/src/emu/bus/abcbus/slutprov.c b/src/devices/bus/abcbus/slutprov.c
index bd1184c15c5..bd1184c15c5 100644
--- a/src/emu/bus/abcbus/slutprov.c
+++ b/src/devices/bus/abcbus/slutprov.c
diff --git a/src/emu/bus/abcbus/slutprov.h b/src/devices/bus/abcbus/slutprov.h
index 99d0f8bcc3a..99d0f8bcc3a 100644
--- a/src/emu/bus/abcbus/slutprov.h
+++ b/src/devices/bus/abcbus/slutprov.h
diff --git a/src/emu/bus/abcbus/turbo.c b/src/devices/bus/abcbus/turbo.c
index 55ac6a7fa3d..55ac6a7fa3d 100644
--- a/src/emu/bus/abcbus/turbo.c
+++ b/src/devices/bus/abcbus/turbo.c
diff --git a/src/emu/bus/abcbus/turbo.h b/src/devices/bus/abcbus/turbo.h
index c2242eca29e..c2242eca29e 100644
--- a/src/emu/bus/abcbus/turbo.h
+++ b/src/devices/bus/abcbus/turbo.h
diff --git a/src/emu/bus/abcbus/uni800.c b/src/devices/bus/abcbus/uni800.c
index 9d22dc0a6cd..9d22dc0a6cd 100644
--- a/src/emu/bus/abcbus/uni800.c
+++ b/src/devices/bus/abcbus/uni800.c
diff --git a/src/emu/bus/abcbus/uni800.h b/src/devices/bus/abcbus/uni800.h
index 37ed2e0917b..37ed2e0917b 100644
--- a/src/emu/bus/abcbus/uni800.h
+++ b/src/devices/bus/abcbus/uni800.h
diff --git a/src/emu/bus/abckb/abc77.c b/src/devices/bus/abckb/abc77.c
index c308cd8cf74..c308cd8cf74 100644
--- a/src/emu/bus/abckb/abc77.c
+++ b/src/devices/bus/abckb/abc77.c
diff --git a/src/emu/bus/abckb/abc77.h b/src/devices/bus/abckb/abc77.h
index 5ead0a32f96..5ead0a32f96 100644
--- a/src/emu/bus/abckb/abc77.h
+++ b/src/devices/bus/abckb/abc77.h
diff --git a/src/emu/bus/abckb/abc800kb.c b/src/devices/bus/abckb/abc800kb.c
index dd3cbbc7f51..dd3cbbc7f51 100644
--- a/src/emu/bus/abckb/abc800kb.c
+++ b/src/devices/bus/abckb/abc800kb.c
diff --git a/src/emu/bus/abckb/abc800kb.h b/src/devices/bus/abckb/abc800kb.h
index 52719062314..52719062314 100644
--- a/src/emu/bus/abckb/abc800kb.h
+++ b/src/devices/bus/abckb/abc800kb.h
diff --git a/src/emu/bus/abckb/abc99.c b/src/devices/bus/abckb/abc99.c
index 63a3f0154f0..63a3f0154f0 100644
--- a/src/emu/bus/abckb/abc99.c
+++ b/src/devices/bus/abckb/abc99.c
diff --git a/src/emu/bus/abckb/abc99.h b/src/devices/bus/abckb/abc99.h
index 366d9fa23ce..366d9fa23ce 100644
--- a/src/emu/bus/abckb/abc99.h
+++ b/src/devices/bus/abckb/abc99.h
diff --git a/src/emu/bus/abckb/abckb.c b/src/devices/bus/abckb/abckb.c
index dc9edd10bed..dc9edd10bed 100644
--- a/src/emu/bus/abckb/abckb.c
+++ b/src/devices/bus/abckb/abckb.c
diff --git a/src/emu/bus/abckb/abckb.h b/src/devices/bus/abckb/abckb.h
index 9b396f26983..9b396f26983 100644
--- a/src/emu/bus/abckb/abckb.h
+++ b/src/devices/bus/abckb/abckb.h
diff --git a/src/emu/bus/adam/adamlink.c b/src/devices/bus/adam/adamlink.c
index 1ae12b1156f..1ae12b1156f 100644
--- a/src/emu/bus/adam/adamlink.c
+++ b/src/devices/bus/adam/adamlink.c
diff --git a/src/emu/bus/adam/adamlink.h b/src/devices/bus/adam/adamlink.h
index acf1d2fa31a..acf1d2fa31a 100644
--- a/src/emu/bus/adam/adamlink.h
+++ b/src/devices/bus/adam/adamlink.h
diff --git a/src/emu/bus/adam/exp.c b/src/devices/bus/adam/exp.c
index 110a1299188..110a1299188 100644
--- a/src/emu/bus/adam/exp.c
+++ b/src/devices/bus/adam/exp.c
diff --git a/src/emu/bus/adam/exp.h b/src/devices/bus/adam/exp.h
index 7719c3f8d11..7719c3f8d11 100644
--- a/src/emu/bus/adam/exp.h
+++ b/src/devices/bus/adam/exp.h
diff --git a/src/emu/bus/adam/ide.c b/src/devices/bus/adam/ide.c
index 7ea8a8b24a2..7ea8a8b24a2 100644
--- a/src/emu/bus/adam/ide.c
+++ b/src/devices/bus/adam/ide.c
diff --git a/src/emu/bus/adam/ide.h b/src/devices/bus/adam/ide.h
index 35e26681bcd..35e26681bcd 100644
--- a/src/emu/bus/adam/ide.h
+++ b/src/devices/bus/adam/ide.h
diff --git a/src/emu/bus/adam/ram.c b/src/devices/bus/adam/ram.c
index 6852de8959a..6852de8959a 100644
--- a/src/emu/bus/adam/ram.c
+++ b/src/devices/bus/adam/ram.c
diff --git a/src/emu/bus/adam/ram.h b/src/devices/bus/adam/ram.h
index d6c5e470ee5..d6c5e470ee5 100644
--- a/src/emu/bus/adam/ram.h
+++ b/src/devices/bus/adam/ram.h
diff --git a/src/emu/bus/adamnet/adamnet.c b/src/devices/bus/adamnet/adamnet.c
index 9407b7fbaf2..9407b7fbaf2 100644
--- a/src/emu/bus/adamnet/adamnet.c
+++ b/src/devices/bus/adamnet/adamnet.c
diff --git a/src/emu/bus/adamnet/adamnet.h b/src/devices/bus/adamnet/adamnet.h
index 7bbf9105556..7bbf9105556 100644
--- a/src/emu/bus/adamnet/adamnet.h
+++ b/src/devices/bus/adamnet/adamnet.h
diff --git a/src/emu/bus/adamnet/ddp.c b/src/devices/bus/adamnet/ddp.c
index cca1617dd43..cca1617dd43 100644
--- a/src/emu/bus/adamnet/ddp.c
+++ b/src/devices/bus/adamnet/ddp.c
diff --git a/src/emu/bus/adamnet/ddp.h b/src/devices/bus/adamnet/ddp.h
index 07c2bf0c0c1..07c2bf0c0c1 100644
--- a/src/emu/bus/adamnet/ddp.h
+++ b/src/devices/bus/adamnet/ddp.h
diff --git a/src/emu/bus/adamnet/fdc.c b/src/devices/bus/adamnet/fdc.c
index afe93d74a29..afe93d74a29 100644
--- a/src/emu/bus/adamnet/fdc.c
+++ b/src/devices/bus/adamnet/fdc.c
diff --git a/src/emu/bus/adamnet/fdc.h b/src/devices/bus/adamnet/fdc.h
index fb519e1a5ba..fb519e1a5ba 100644
--- a/src/emu/bus/adamnet/fdc.h
+++ b/src/devices/bus/adamnet/fdc.h
diff --git a/src/emu/bus/adamnet/kb.c b/src/devices/bus/adamnet/kb.c
index a9cc31b8edf..a9cc31b8edf 100644
--- a/src/emu/bus/adamnet/kb.c
+++ b/src/devices/bus/adamnet/kb.c
diff --git a/src/emu/bus/adamnet/kb.h b/src/devices/bus/adamnet/kb.h
index 58bf9f07bc5..58bf9f07bc5 100644
--- a/src/emu/bus/adamnet/kb.h
+++ b/src/devices/bus/adamnet/kb.h
diff --git a/src/emu/bus/adamnet/printer.c b/src/devices/bus/adamnet/printer.c
index 7de2db87b2e..7de2db87b2e 100644
--- a/src/emu/bus/adamnet/printer.c
+++ b/src/devices/bus/adamnet/printer.c
diff --git a/src/emu/bus/adamnet/printer.h b/src/devices/bus/adamnet/printer.h
index 0a2fae5fac5..0a2fae5fac5 100644
--- a/src/emu/bus/adamnet/printer.h
+++ b/src/devices/bus/adamnet/printer.h
diff --git a/src/emu/bus/adamnet/spi.c b/src/devices/bus/adamnet/spi.c
index 7cfff9adfeb..7cfff9adfeb 100644
--- a/src/emu/bus/adamnet/spi.c
+++ b/src/devices/bus/adamnet/spi.c
diff --git a/src/emu/bus/adamnet/spi.h b/src/devices/bus/adamnet/spi.h
index 19a1d5c9866..19a1d5c9866 100644
--- a/src/emu/bus/adamnet/spi.h
+++ b/src/devices/bus/adamnet/spi.h
diff --git a/src/emu/bus/amiga/zorro/a2052.c b/src/devices/bus/amiga/zorro/a2052.c
index dc2727d2117..dc2727d2117 100644
--- a/src/emu/bus/amiga/zorro/a2052.c
+++ b/src/devices/bus/amiga/zorro/a2052.c
diff --git a/src/emu/bus/amiga/zorro/a2052.h b/src/devices/bus/amiga/zorro/a2052.h
index 9a189ec58c2..9a189ec58c2 100644
--- a/src/emu/bus/amiga/zorro/a2052.h
+++ b/src/devices/bus/amiga/zorro/a2052.h
diff --git a/src/emu/bus/amiga/zorro/a2232.c b/src/devices/bus/amiga/zorro/a2232.c
index 89e87d3588a..89e87d3588a 100644
--- a/src/emu/bus/amiga/zorro/a2232.c
+++ b/src/devices/bus/amiga/zorro/a2232.c
diff --git a/src/emu/bus/amiga/zorro/a2232.h b/src/devices/bus/amiga/zorro/a2232.h
index c0a6bea2d8f..c0a6bea2d8f 100644
--- a/src/emu/bus/amiga/zorro/a2232.h
+++ b/src/devices/bus/amiga/zorro/a2232.h
diff --git a/src/emu/bus/amiga/zorro/a590.c b/src/devices/bus/amiga/zorro/a590.c
index 1d66ba99f6e..1d66ba99f6e 100644
--- a/src/emu/bus/amiga/zorro/a590.c
+++ b/src/devices/bus/amiga/zorro/a590.c
diff --git a/src/emu/bus/amiga/zorro/a590.h b/src/devices/bus/amiga/zorro/a590.h
index 4c929f28b01..4c929f28b01 100644
--- a/src/emu/bus/amiga/zorro/a590.h
+++ b/src/devices/bus/amiga/zorro/a590.h
diff --git a/src/emu/bus/amiga/zorro/action_replay.c b/src/devices/bus/amiga/zorro/action_replay.c
index a5356114c2e..a5356114c2e 100644
--- a/src/emu/bus/amiga/zorro/action_replay.c
+++ b/src/devices/bus/amiga/zorro/action_replay.c
diff --git a/src/emu/bus/amiga/zorro/action_replay.h b/src/devices/bus/amiga/zorro/action_replay.h
index 1e47a9b36f0..1e47a9b36f0 100644
--- a/src/emu/bus/amiga/zorro/action_replay.h
+++ b/src/devices/bus/amiga/zorro/action_replay.h
diff --git a/src/emu/bus/amiga/zorro/buddha.c b/src/devices/bus/amiga/zorro/buddha.c
index 761162269d3..761162269d3 100644
--- a/src/emu/bus/amiga/zorro/buddha.c
+++ b/src/devices/bus/amiga/zorro/buddha.c
diff --git a/src/emu/bus/amiga/zorro/buddha.h b/src/devices/bus/amiga/zorro/buddha.h
index d1a41dcf635..d1a41dcf635 100644
--- a/src/emu/bus/amiga/zorro/buddha.h
+++ b/src/devices/bus/amiga/zorro/buddha.h
diff --git a/src/emu/bus/amiga/zorro/cards.c b/src/devices/bus/amiga/zorro/cards.c
index 5fc67353d17..5fc67353d17 100644
--- a/src/emu/bus/amiga/zorro/cards.c
+++ b/src/devices/bus/amiga/zorro/cards.c
diff --git a/src/emu/bus/amiga/zorro/cards.h b/src/devices/bus/amiga/zorro/cards.h
index 919c2c3c899..919c2c3c899 100644
--- a/src/emu/bus/amiga/zorro/cards.h
+++ b/src/devices/bus/amiga/zorro/cards.h
diff --git a/src/emu/bus/amiga/zorro/zorro.c b/src/devices/bus/amiga/zorro/zorro.c
index aec7f5e54f8..aec7f5e54f8 100644
--- a/src/emu/bus/amiga/zorro/zorro.c
+++ b/src/devices/bus/amiga/zorro/zorro.c
diff --git a/src/emu/bus/amiga/zorro/zorro.h b/src/devices/bus/amiga/zorro/zorro.h
index 4b61b644136..4b61b644136 100644
--- a/src/emu/bus/amiga/zorro/zorro.h
+++ b/src/devices/bus/amiga/zorro/zorro.h
diff --git a/src/emu/bus/apf/rom.c b/src/devices/bus/apf/rom.c
index 9eb83e4f12c..9eb83e4f12c 100644
--- a/src/emu/bus/apf/rom.c
+++ b/src/devices/bus/apf/rom.c
diff --git a/src/emu/bus/apf/rom.h b/src/devices/bus/apf/rom.h
index 7c377a0cc77..7c377a0cc77 100644
--- a/src/emu/bus/apf/rom.h
+++ b/src/devices/bus/apf/rom.h
diff --git a/src/emu/bus/apf/slot.c b/src/devices/bus/apf/slot.c
index 832e0cead45..832e0cead45 100644
--- a/src/emu/bus/apf/slot.c
+++ b/src/devices/bus/apf/slot.c
diff --git a/src/emu/bus/apf/slot.h b/src/devices/bus/apf/slot.h
index 73853dd6bdd..73853dd6bdd 100644
--- a/src/emu/bus/apf/slot.h
+++ b/src/devices/bus/apf/slot.h
diff --git a/src/emu/bus/apricot/cards.c b/src/devices/bus/apricot/cards.c
index 9a97adffca6..9a97adffca6 100644
--- a/src/emu/bus/apricot/cards.c
+++ b/src/devices/bus/apricot/cards.c
diff --git a/src/emu/bus/apricot/cards.h b/src/devices/bus/apricot/cards.h
index 67766d51a8e..67766d51a8e 100644
--- a/src/emu/bus/apricot/cards.h
+++ b/src/devices/bus/apricot/cards.h
diff --git a/src/emu/bus/apricot/expansion.c b/src/devices/bus/apricot/expansion.c
index 7fe2b2a721c..7fe2b2a721c 100644
--- a/src/emu/bus/apricot/expansion.c
+++ b/src/devices/bus/apricot/expansion.c
diff --git a/src/emu/bus/apricot/expansion.h b/src/devices/bus/apricot/expansion.h
index 38687db4399..38687db4399 100644
--- a/src/emu/bus/apricot/expansion.h
+++ b/src/devices/bus/apricot/expansion.h
diff --git a/src/emu/bus/apricot/ram.c b/src/devices/bus/apricot/ram.c
index 2221ae37227..2221ae37227 100644
--- a/src/emu/bus/apricot/ram.c
+++ b/src/devices/bus/apricot/ram.c
diff --git a/src/emu/bus/apricot/ram.h b/src/devices/bus/apricot/ram.h
index 20ac01f2867..20ac01f2867 100644
--- a/src/emu/bus/apricot/ram.h
+++ b/src/devices/bus/apricot/ram.h
diff --git a/src/emu/bus/arcadia/rom.c b/src/devices/bus/arcadia/rom.c
index 5a6186aa8de..5a6186aa8de 100644
--- a/src/emu/bus/arcadia/rom.c
+++ b/src/devices/bus/arcadia/rom.c
diff --git a/src/emu/bus/arcadia/rom.h b/src/devices/bus/arcadia/rom.h
index f070ac3aecd..f070ac3aecd 100644
--- a/src/emu/bus/arcadia/rom.h
+++ b/src/devices/bus/arcadia/rom.h
diff --git a/src/emu/bus/arcadia/slot.c b/src/devices/bus/arcadia/slot.c
index b93e7fd211c..b93e7fd211c 100644
--- a/src/emu/bus/arcadia/slot.c
+++ b/src/devices/bus/arcadia/slot.c
diff --git a/src/emu/bus/arcadia/slot.h b/src/devices/bus/arcadia/slot.h
index f1f3ca97f07..f1f3ca97f07 100644
--- a/src/emu/bus/arcadia/slot.h
+++ b/src/devices/bus/arcadia/slot.h
diff --git a/src/emu/bus/astrocde/exp.c b/src/devices/bus/astrocde/exp.c
index 28017230f0d..28017230f0d 100644
--- a/src/emu/bus/astrocde/exp.c
+++ b/src/devices/bus/astrocde/exp.c
diff --git a/src/emu/bus/astrocde/exp.h b/src/devices/bus/astrocde/exp.h
index e691a5b946a..e691a5b946a 100644
--- a/src/emu/bus/astrocde/exp.h
+++ b/src/devices/bus/astrocde/exp.h
diff --git a/src/emu/bus/astrocde/ram.c b/src/devices/bus/astrocde/ram.c
index 95ebb6816aa..95ebb6816aa 100644
--- a/src/emu/bus/astrocde/ram.c
+++ b/src/devices/bus/astrocde/ram.c
diff --git a/src/emu/bus/astrocde/ram.h b/src/devices/bus/astrocde/ram.h
index 9df04bdad0e..9df04bdad0e 100644
--- a/src/emu/bus/astrocde/ram.h
+++ b/src/devices/bus/astrocde/ram.h
diff --git a/src/emu/bus/astrocde/rom.c b/src/devices/bus/astrocde/rom.c
index d8067daa062..d8067daa062 100644
--- a/src/emu/bus/astrocde/rom.c
+++ b/src/devices/bus/astrocde/rom.c
diff --git a/src/emu/bus/astrocde/rom.h b/src/devices/bus/astrocde/rom.h
index e0b5647742a..e0b5647742a 100644
--- a/src/emu/bus/astrocde/rom.h
+++ b/src/devices/bus/astrocde/rom.h
diff --git a/src/emu/bus/astrocde/slot.c b/src/devices/bus/astrocde/slot.c
index 5345d90b7fb..5345d90b7fb 100644
--- a/src/emu/bus/astrocde/slot.c
+++ b/src/devices/bus/astrocde/slot.c
diff --git a/src/emu/bus/astrocde/slot.h b/src/devices/bus/astrocde/slot.h
index 738c32a6faa..738c32a6faa 100644
--- a/src/emu/bus/astrocde/slot.h
+++ b/src/devices/bus/astrocde/slot.h
diff --git a/src/emu/bus/bml3/bml3bus.c b/src/devices/bus/bml3/bml3bus.c
index 5839ea00196..5839ea00196 100644
--- a/src/emu/bus/bml3/bml3bus.c
+++ b/src/devices/bus/bml3/bml3bus.c
diff --git a/src/emu/bus/bml3/bml3bus.h b/src/devices/bus/bml3/bml3bus.h
index 63da81fd1fc..63da81fd1fc 100644
--- a/src/emu/bus/bml3/bml3bus.h
+++ b/src/devices/bus/bml3/bml3bus.h
diff --git a/src/emu/bus/bml3/bml3kanji.c b/src/devices/bus/bml3/bml3kanji.c
index f07e95c8bba..f07e95c8bba 100644
--- a/src/emu/bus/bml3/bml3kanji.c
+++ b/src/devices/bus/bml3/bml3kanji.c
diff --git a/src/emu/bus/bml3/bml3kanji.h b/src/devices/bus/bml3/bml3kanji.h
index e05a4fd96d2..e05a4fd96d2 100644
--- a/src/emu/bus/bml3/bml3kanji.h
+++ b/src/devices/bus/bml3/bml3kanji.h
diff --git a/src/emu/bus/bml3/bml3mp1802.c b/src/devices/bus/bml3/bml3mp1802.c
index 64db414fa21..64db414fa21 100644
--- a/src/emu/bus/bml3/bml3mp1802.c
+++ b/src/devices/bus/bml3/bml3mp1802.c
diff --git a/src/emu/bus/bml3/bml3mp1802.h b/src/devices/bus/bml3/bml3mp1802.h
index 0c4088c0d4f..0c4088c0d4f 100644
--- a/src/emu/bus/bml3/bml3mp1802.h
+++ b/src/devices/bus/bml3/bml3mp1802.h
diff --git a/src/emu/bus/bml3/bml3mp1805.c b/src/devices/bus/bml3/bml3mp1805.c
index f87e0604476..f87e0604476 100644
--- a/src/emu/bus/bml3/bml3mp1805.c
+++ b/src/devices/bus/bml3/bml3mp1805.c
diff --git a/src/emu/bus/bml3/bml3mp1805.h b/src/devices/bus/bml3/bml3mp1805.h
index ca819b4c061..ca819b4c061 100644
--- a/src/emu/bus/bml3/bml3mp1805.h
+++ b/src/devices/bus/bml3/bml3mp1805.h
diff --git a/src/emu/bus/bw2/exp.c b/src/devices/bus/bw2/exp.c
index b094283a862..b094283a862 100644
--- a/src/emu/bus/bw2/exp.c
+++ b/src/devices/bus/bw2/exp.c
diff --git a/src/emu/bus/bw2/exp.h b/src/devices/bus/bw2/exp.h
index 4d87f1d3ea1..4d87f1d3ea1 100644
--- a/src/emu/bus/bw2/exp.h
+++ b/src/devices/bus/bw2/exp.h
diff --git a/src/emu/bus/bw2/ramcard.c b/src/devices/bus/bw2/ramcard.c
index 16f5da689cc..16f5da689cc 100644
--- a/src/emu/bus/bw2/ramcard.c
+++ b/src/devices/bus/bw2/ramcard.c
diff --git a/src/emu/bus/bw2/ramcard.h b/src/devices/bus/bw2/ramcard.h
index 1d346370567..1d346370567 100644
--- a/src/emu/bus/bw2/ramcard.h
+++ b/src/devices/bus/bw2/ramcard.h
diff --git a/src/emu/bus/c64/16kb.c b/src/devices/bus/c64/16kb.c
index ff2ce6e3932..ff2ce6e3932 100644
--- a/src/emu/bus/c64/16kb.c
+++ b/src/devices/bus/c64/16kb.c
diff --git a/src/emu/bus/c64/16kb.h b/src/devices/bus/c64/16kb.h
index 6ebec5dca7e..6ebec5dca7e 100644
--- a/src/emu/bus/c64/16kb.h
+++ b/src/devices/bus/c64/16kb.h
diff --git a/src/emu/bus/c64/4dxh.c b/src/devices/bus/c64/4dxh.c
index 2dd54543203..2dd54543203 100644
--- a/src/emu/bus/c64/4dxh.c
+++ b/src/devices/bus/c64/4dxh.c
diff --git a/src/emu/bus/c64/4dxh.h b/src/devices/bus/c64/4dxh.h
index 3e99406ab89..3e99406ab89 100644
--- a/src/emu/bus/c64/4dxh.h
+++ b/src/devices/bus/c64/4dxh.h
diff --git a/src/emu/bus/c64/4ksa.c b/src/devices/bus/c64/4ksa.c
index 749053fde32..749053fde32 100644
--- a/src/emu/bus/c64/4ksa.c
+++ b/src/devices/bus/c64/4ksa.c
diff --git a/src/emu/bus/c64/4ksa.h b/src/devices/bus/c64/4ksa.h
index 8177922fb1e..8177922fb1e 100644
--- a/src/emu/bus/c64/4ksa.h
+++ b/src/devices/bus/c64/4ksa.h
diff --git a/src/emu/bus/c64/4tba.c b/src/devices/bus/c64/4tba.c
index 56266f5d916..56266f5d916 100644
--- a/src/emu/bus/c64/4tba.c
+++ b/src/devices/bus/c64/4tba.c
diff --git a/src/emu/bus/c64/4tba.h b/src/devices/bus/c64/4tba.h
index 5b4329b5463..5b4329b5463 100644
--- a/src/emu/bus/c64/4tba.h
+++ b/src/devices/bus/c64/4tba.h
diff --git a/src/emu/bus/c64/bn1541.c b/src/devices/bus/c64/bn1541.c
index 41e37f17fdd..41e37f17fdd 100644
--- a/src/emu/bus/c64/bn1541.c
+++ b/src/devices/bus/c64/bn1541.c
diff --git a/src/emu/bus/c64/bn1541.h b/src/devices/bus/c64/bn1541.h
index 3ad7aee1c87..3ad7aee1c87 100644
--- a/src/emu/bus/c64/bn1541.h
+++ b/src/devices/bus/c64/bn1541.h
diff --git a/src/emu/bus/c64/c128_comal80.c b/src/devices/bus/c64/c128_comal80.c
index 25accd52fa0..25accd52fa0 100644
--- a/src/emu/bus/c64/c128_comal80.c
+++ b/src/devices/bus/c64/c128_comal80.c
diff --git a/src/emu/bus/c64/c128_comal80.h b/src/devices/bus/c64/c128_comal80.h
index de7cfc862de..de7cfc862de 100644
--- a/src/emu/bus/c64/c128_comal80.h
+++ b/src/devices/bus/c64/c128_comal80.h
diff --git a/src/devices/bus/c64/c128_partner.c b/src/devices/bus/c64/c128_partner.c
new file mode 100644
index 00000000000..00f5a8e2cb9
--- /dev/null
+++ b/src/devices/bus/c64/c128_partner.c
@@ -0,0 +1,250 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ Timeworks PARTNER 128 cartridge emulation
+
+**********************************************************************/
+
+/*
+
+ PCB Layout
+ ----------
+
+ |---------------|
+ |LS74 SW * |
+ |LS09 LS273|
+ |LS139 RAM |
+ |LS133 |
+ | LS240 |
+ |LS33 ROM |
+ |LS09 |
+ |||||||||||||||
+
+ ROM - Toshiba TMM24128AP 16Kx8 EPROM (blank label)
+ RAM - Sony CXK5864PN-15L 8Kx8 SRAM
+ SW - push button switch
+ * - solder point for joystick port dongle
+
+*/
+
+#include "c128_partner.h"
+
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type C128_PARTNER = &device_creator<partner128_t>;
+
+
+//-------------------------------------------------
+// INPUT_PORTS( c128_partner )
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( partner128_t::nmi_w )
+{
+ if (state)
+ {
+ m_ls74_q1 = 1;
+ }
+}
+
+static INPUT_PORTS_START( c128_partner )
+ PORT_START("NMI")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Menu") PORT_CODE(KEYCODE_END) PORT_WRITE_LINE_DEVICE_MEMBER(DEVICE_SELF, partner128_t, nmi_w)
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor partner128_t::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( c128_partner );
+}
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// partner128_t - constructor
+//-------------------------------------------------
+
+partner128_t::partner128_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, C128_PARTNER, "PARTNER 128", tag, owner, clock, "c128_partner", __FILE__),
+ device_c64_expansion_card_interface(mconfig, *this),
+ //device_vcs_control_port_interface(mconfig, *this),
+ m_ram(*this, "ram"),
+ m_ram_a12_a7(0),
+ m_ls74_cd(0),
+ m_ls74_q1(0),
+ m_ls74_q2(0),
+ m_joyb2(0)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void partner128_t::device_start()
+{
+ // allocate memory
+ m_ram.allocate(0x2000);
+
+ // simulate the 16.7ms pulse from CIA1 PB2 that would arrive thru the joystick port dongle
+ t_joyb2 = timer_alloc();
+ t_joyb2->adjust(attotime::from_msec(16), 0, attotime::from_msec(16));
+
+ // state saving
+ save_item(NAME(m_ram_a12_a7));
+ save_item(NAME(m_ls74_cd));
+ save_item(NAME(m_ls74_q1));
+ save_item(NAME(m_ls74_q2));
+ save_item(NAME(m_joyb2));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void partner128_t::device_reset()
+{
+ m_ram_a12_a7 = 0;
+
+ m_ls74_cd = 0;
+ m_ls74_q1 = 0;
+ m_ls74_q2 = 0;
+
+ nmi_w(CLEAR_LINE);
+}
+
+
+//-------------------------------------------------
+// device_timer -
+//-------------------------------------------------
+
+void partner128_t::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ if (m_ls74_cd)
+ {
+ m_ls74_q2 = m_ls74_q1;
+
+ nmi_w(m_ls74_q2 ? ASSERT_LINE : CLEAR_LINE);
+ }
+}
+
+
+//-------------------------------------------------
+// c64_cd_r - cartridge data read
+//-------------------------------------------------
+
+UINT8 partner128_t::c64_cd_r(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2)
+{
+ if (!roml)
+ {
+ data = m_roml[offset & 0x3fff];
+ }
+
+ if (!io1)
+ {
+ if (BIT(offset, 7))
+ {
+ data = m_roml[offset & 0x3fff];
+
+ if (m_ls74_cd)
+ {
+ m_ls74_q1 = 0;
+ }
+ }
+ else
+ {
+ data = m_ram[(m_ram_a12_a7 << 7) | (offset & 0x7f)];
+ }
+ }
+
+ if (m_ls74_q2 && ((offset & 0xfffa) == 0xfffa))
+ {
+ // override the 8502 NMI/IRQ vectors with 0xdede
+ data = 0xde;
+ }
+
+ return data;
+}
+
+
+//-------------------------------------------------
+// c64_cd_w - cartridge data write
+//-------------------------------------------------
+
+void partner128_t::c64_cd_w(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2)
+{
+ if (!io1)
+ {
+ if (BIT(offset, 7))
+ {
+ /*
+
+ bit description
+
+ 0 RAM A7
+ 1 RAM A8
+ 2 RAM A9
+ 3 RAM A10
+ 4 RAM A11
+ 5 RAM A12
+ 6 LS74 1Cd,2Cd
+ 7 N/C
+
+ */
+
+ m_ram_a12_a7 = data & 0x3f;
+
+ m_ls74_cd = BIT(data, 6);
+
+ if (!m_ls74_cd)
+ {
+ m_ls74_q1 = 0;
+ m_ls74_q2 = 0;
+
+ nmi_w(CLEAR_LINE);
+ }
+ }
+ else
+ {
+ m_ram[(m_ram_a12_a7 << 7) | (offset & 0x7f)] = data;
+ }
+ }
+
+ if (sphi2 && ((offset & 0xfff0) == 0xd600))
+ {
+ m_ram[(m_ram_a12_a7 << 7) | (offset & 0x7f)] = data;
+ }
+}
+
+
+//-------------------------------------------------
+// vcs_joy_w - joystick write
+//-------------------------------------------------
+
+void partner128_t::vcs_joy_w(UINT8 data)
+{
+ int joyb2 = BIT(data, 2);
+
+ if (!m_joyb2 && joyb2 && m_ls74_cd)
+ {
+ m_ls74_q2 = m_ls74_q1;
+
+ nmi_w(m_ls74_q2 ? ASSERT_LINE : CLEAR_LINE);
+ }
+
+ m_joyb2 = joyb2;
+}
diff --git a/src/devices/bus/c64/c128_partner.h b/src/devices/bus/c64/c128_partner.h
new file mode 100644
index 00000000000..2210cdc7388
--- /dev/null
+++ b/src/devices/bus/c64/c128_partner.h
@@ -0,0 +1,68 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ Timeworks PARTNER 128 cartridge emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __C128_PARTNER__
+#define __C128_PARTNER__
+
+#include "emu.h"
+#include "bus/c64/exp.h"
+#include "bus/vcs_ctrl/ctrl.h"
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> partner128_t
+
+class partner128_t : public device_t,
+ public device_c64_expansion_card_interface
+ //public device_vcs_control_port_interface
+{
+public:
+ // construction/destruction
+ partner128_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual ioport_constructor device_input_ports() const;
+
+ DECLARE_WRITE_LINE_MEMBER( nmi_w );
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+ // device_c64_expansion_card_interface overrides
+ virtual UINT8 c64_cd_r(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2);
+ virtual void c64_cd_w(address_space &space, offs_t offset, UINT8 data, int sphi2, int ba, int roml, int romh, int io1, int io2);
+
+ // device_vcs_control_port_interface overrides
+ virtual void vcs_joy_w(UINT8 data);
+
+private:
+ optional_shared_ptr<UINT8> m_ram;
+
+ emu_timer *t_joyb2;
+ int m_ram_a12_a7;
+ int m_ls74_cd;
+ int m_ls74_q1;
+ int m_ls74_q2;
+ int m_joyb2;
+};
+
+
+// device type definition
+extern const device_type C128_PARTNER;
+
+
+#endif
diff --git a/src/emu/bus/c64/comal80.c b/src/devices/bus/c64/comal80.c
index ee8ffe0d6fd..ee8ffe0d6fd 100644
--- a/src/emu/bus/c64/comal80.c
+++ b/src/devices/bus/c64/comal80.c
diff --git a/src/emu/bus/c64/comal80.h b/src/devices/bus/c64/comal80.h
index 766b6ed10d7..766b6ed10d7 100644
--- a/src/emu/bus/c64/comal80.h
+++ b/src/devices/bus/c64/comal80.h
diff --git a/src/emu/bus/c64/cpm.c b/src/devices/bus/c64/cpm.c
index 1533ab9f93b..1533ab9f93b 100644
--- a/src/emu/bus/c64/cpm.c
+++ b/src/devices/bus/c64/cpm.c
diff --git a/src/emu/bus/c64/cpm.h b/src/devices/bus/c64/cpm.h
index 67e7495d027..67e7495d027 100644
--- a/src/emu/bus/c64/cpm.h
+++ b/src/devices/bus/c64/cpm.h
diff --git a/src/emu/bus/c64/currah_speech.c b/src/devices/bus/c64/currah_speech.c
index 8e73f0801f1..8e73f0801f1 100644
--- a/src/emu/bus/c64/currah_speech.c
+++ b/src/devices/bus/c64/currah_speech.c
diff --git a/src/emu/bus/c64/currah_speech.h b/src/devices/bus/c64/currah_speech.h
index db687704252..db687704252 100644
--- a/src/emu/bus/c64/currah_speech.h
+++ b/src/devices/bus/c64/currah_speech.h
diff --git a/src/emu/bus/c64/dela_ep256.c b/src/devices/bus/c64/dela_ep256.c
index b4708e13856..b4708e13856 100644
--- a/src/emu/bus/c64/dela_ep256.c
+++ b/src/devices/bus/c64/dela_ep256.c
diff --git a/src/emu/bus/c64/dela_ep256.h b/src/devices/bus/c64/dela_ep256.h
index 8cae8b25b25..8cae8b25b25 100644
--- a/src/emu/bus/c64/dela_ep256.h
+++ b/src/devices/bus/c64/dela_ep256.h
diff --git a/src/emu/bus/c64/dela_ep64.c b/src/devices/bus/c64/dela_ep64.c
index 006b915908f..006b915908f 100644
--- a/src/emu/bus/c64/dela_ep64.c
+++ b/src/devices/bus/c64/dela_ep64.c
diff --git a/src/emu/bus/c64/dela_ep64.h b/src/devices/bus/c64/dela_ep64.h
index 9ee3455aeba..9ee3455aeba 100644
--- a/src/emu/bus/c64/dela_ep64.h
+++ b/src/devices/bus/c64/dela_ep64.h
diff --git a/src/emu/bus/c64/dela_ep7x8.c b/src/devices/bus/c64/dela_ep7x8.c
index f79b3828fe5..f79b3828fe5 100644
--- a/src/emu/bus/c64/dela_ep7x8.c
+++ b/src/devices/bus/c64/dela_ep7x8.c
diff --git a/src/emu/bus/c64/dela_ep7x8.h b/src/devices/bus/c64/dela_ep7x8.h
index cf236fadc07..cf236fadc07 100644
--- a/src/emu/bus/c64/dela_ep7x8.h
+++ b/src/devices/bus/c64/dela_ep7x8.h
diff --git a/src/emu/bus/c64/dinamic.c b/src/devices/bus/c64/dinamic.c
index 812e0fcdc92..812e0fcdc92 100644
--- a/src/emu/bus/c64/dinamic.c
+++ b/src/devices/bus/c64/dinamic.c
diff --git a/src/emu/bus/c64/dinamic.h b/src/devices/bus/c64/dinamic.h
index 2f3ecc07302..2f3ecc07302 100644
--- a/src/emu/bus/c64/dinamic.h
+++ b/src/devices/bus/c64/dinamic.h
diff --git a/src/emu/bus/c64/dqbb.c b/src/devices/bus/c64/dqbb.c
index 7e30cdd1545..7e30cdd1545 100644
--- a/src/emu/bus/c64/dqbb.c
+++ b/src/devices/bus/c64/dqbb.c
diff --git a/src/emu/bus/c64/dqbb.h b/src/devices/bus/c64/dqbb.h
index 387be1f2203..387be1f2203 100644
--- a/src/emu/bus/c64/dqbb.h
+++ b/src/devices/bus/c64/dqbb.h
diff --git a/src/emu/bus/c64/easy_calc_result.c b/src/devices/bus/c64/easy_calc_result.c
index d6a4a6b4cf9..d6a4a6b4cf9 100644
--- a/src/emu/bus/c64/easy_calc_result.c
+++ b/src/devices/bus/c64/easy_calc_result.c
diff --git a/src/emu/bus/c64/easy_calc_result.h b/src/devices/bus/c64/easy_calc_result.h
index e0fe1e34ac8..e0fe1e34ac8 100644
--- a/src/emu/bus/c64/easy_calc_result.h
+++ b/src/devices/bus/c64/easy_calc_result.h
diff --git a/src/emu/bus/c64/easyflash.c b/src/devices/bus/c64/easyflash.c
index 0af06b0cc48..0af06b0cc48 100644
--- a/src/emu/bus/c64/easyflash.c
+++ b/src/devices/bus/c64/easyflash.c
diff --git a/src/emu/bus/c64/easyflash.h b/src/devices/bus/c64/easyflash.h
index 4dba6c1e5be..4dba6c1e5be 100644
--- a/src/emu/bus/c64/easyflash.h
+++ b/src/devices/bus/c64/easyflash.h
diff --git a/src/emu/bus/c64/epyx_fast_load.c b/src/devices/bus/c64/epyx_fast_load.c
index 7b0dfeb5934..7b0dfeb5934 100644
--- a/src/emu/bus/c64/epyx_fast_load.c
+++ b/src/devices/bus/c64/epyx_fast_load.c
diff --git a/src/emu/bus/c64/epyx_fast_load.h b/src/devices/bus/c64/epyx_fast_load.h
index f0f30c5ccc6..f0f30c5ccc6 100644
--- a/src/emu/bus/c64/epyx_fast_load.h
+++ b/src/devices/bus/c64/epyx_fast_load.h
diff --git a/src/emu/bus/c64/exos.c b/src/devices/bus/c64/exos.c
index 0b0ce6c8257..0b0ce6c8257 100644
--- a/src/emu/bus/c64/exos.c
+++ b/src/devices/bus/c64/exos.c
diff --git a/src/emu/bus/c64/exos.h b/src/devices/bus/c64/exos.h
index 1fffb003c86..1fffb003c86 100644
--- a/src/emu/bus/c64/exos.h
+++ b/src/devices/bus/c64/exos.h
diff --git a/src/emu/bus/c64/exp.c b/src/devices/bus/c64/exp.c
index 16b3746e8c7..a1c449d180e 100644
--- a/src/emu/bus/c64/exp.c
+++ b/src/devices/bus/c64/exp.c
@@ -308,6 +308,7 @@ int c64_expansion_slot_device::exrom_r(offs_t offset, int sphi2, int ba, int rw,
// slot devices
#include "16kb.h"
#include "c128_comal80.h"
+#include "c128_partner.h"
#include "comal80.h"
#include "cpm.h"
#include "currah_speech.h"
@@ -420,6 +421,7 @@ SLOT_INTERFACE_START( c64_expansion_cards )
SLOT_INTERFACE_INTERNAL("ocean", C64_OCEAN)
SLOT_INTERFACE_INTERNAL("pagefox", C64_PAGEFOX)
SLOT_INTERFACE_INTERNAL("partner", C64_PARTNER)
+ SLOT_INTERFACE_INTERNAL("partner128", C128_PARTNER)
SLOT_INTERFACE_INTERNAL("prophet64", C64_PROPHET64)
SLOT_INTERFACE_INTERNAL("ps64", C64_PS64)
SLOT_INTERFACE_INTERNAL("rex", C64_REX)
diff --git a/src/emu/bus/c64/exp.h b/src/devices/bus/c64/exp.h
index 8ece3920e82..8ece3920e82 100644
--- a/src/emu/bus/c64/exp.h
+++ b/src/devices/bus/c64/exp.h
diff --git a/src/emu/bus/c64/fcc.c b/src/devices/bus/c64/fcc.c
index 0757ae94e76..0757ae94e76 100644
--- a/src/emu/bus/c64/fcc.c
+++ b/src/devices/bus/c64/fcc.c
diff --git a/src/emu/bus/c64/fcc.h b/src/devices/bus/c64/fcc.h
index 0727e3ebec4..0727e3ebec4 100644
--- a/src/emu/bus/c64/fcc.h
+++ b/src/devices/bus/c64/fcc.h
diff --git a/src/emu/bus/c64/final.c b/src/devices/bus/c64/final.c
index 8e29c886a16..8e29c886a16 100644
--- a/src/emu/bus/c64/final.c
+++ b/src/devices/bus/c64/final.c
diff --git a/src/emu/bus/c64/final.h b/src/devices/bus/c64/final.h
index 44ce29e3fee..44ce29e3fee 100644
--- a/src/emu/bus/c64/final.h
+++ b/src/devices/bus/c64/final.h
diff --git a/src/emu/bus/c64/final3.c b/src/devices/bus/c64/final3.c
index 20f969bcbe7..20f969bcbe7 100644
--- a/src/emu/bus/c64/final3.c
+++ b/src/devices/bus/c64/final3.c
diff --git a/src/emu/bus/c64/final3.h b/src/devices/bus/c64/final3.h
index 766e40a942b..766e40a942b 100644
--- a/src/emu/bus/c64/final3.h
+++ b/src/devices/bus/c64/final3.h
diff --git a/src/emu/bus/c64/fun_play.c b/src/devices/bus/c64/fun_play.c
index 69aa80288bc..69aa80288bc 100644
--- a/src/emu/bus/c64/fun_play.c
+++ b/src/devices/bus/c64/fun_play.c
diff --git a/src/emu/bus/c64/fun_play.h b/src/devices/bus/c64/fun_play.h
index 6ea38b0ac7f..6ea38b0ac7f 100644
--- a/src/emu/bus/c64/fun_play.h
+++ b/src/devices/bus/c64/fun_play.h
diff --git a/src/emu/bus/c64/geocable.c b/src/devices/bus/c64/geocable.c
index 3b6acc54d2a..3b6acc54d2a 100644
--- a/src/emu/bus/c64/geocable.c
+++ b/src/devices/bus/c64/geocable.c
diff --git a/src/emu/bus/c64/geocable.h b/src/devices/bus/c64/geocable.h
index 16d7b831d7a..16d7b831d7a 100644
--- a/src/emu/bus/c64/geocable.h
+++ b/src/devices/bus/c64/geocable.h
diff --git a/src/emu/bus/c64/georam.c b/src/devices/bus/c64/georam.c
index d3c30bf029e..d3c30bf029e 100644
--- a/src/emu/bus/c64/georam.c
+++ b/src/devices/bus/c64/georam.c
diff --git a/src/emu/bus/c64/georam.h b/src/devices/bus/c64/georam.h
index 7415b911dc2..7415b911dc2 100644
--- a/src/emu/bus/c64/georam.h
+++ b/src/devices/bus/c64/georam.h
diff --git a/src/emu/bus/c64/ide64.c b/src/devices/bus/c64/ide64.c
index c327b694fd5..c327b694fd5 100644
--- a/src/emu/bus/c64/ide64.c
+++ b/src/devices/bus/c64/ide64.c
diff --git a/src/emu/bus/c64/ide64.h b/src/devices/bus/c64/ide64.h
index c87cbf41479..c87cbf41479 100644
--- a/src/emu/bus/c64/ide64.h
+++ b/src/devices/bus/c64/ide64.h
diff --git a/src/emu/bus/c64/ieee488.c b/src/devices/bus/c64/ieee488.c
index 4b41417b42d..4b41417b42d 100644
--- a/src/emu/bus/c64/ieee488.c
+++ b/src/devices/bus/c64/ieee488.c
diff --git a/src/emu/bus/c64/ieee488.h b/src/devices/bus/c64/ieee488.h
index 9e8b2ee8e4d..9e8b2ee8e4d 100644
--- a/src/emu/bus/c64/ieee488.h
+++ b/src/devices/bus/c64/ieee488.h
diff --git a/src/emu/bus/c64/kingsoft.c b/src/devices/bus/c64/kingsoft.c
index 215670ae78e..215670ae78e 100644
--- a/src/emu/bus/c64/kingsoft.c
+++ b/src/devices/bus/c64/kingsoft.c
diff --git a/src/emu/bus/c64/kingsoft.h b/src/devices/bus/c64/kingsoft.h
index d6ca889b5fa..d6ca889b5fa 100644
--- a/src/emu/bus/c64/kingsoft.h
+++ b/src/devices/bus/c64/kingsoft.h
diff --git a/src/emu/bus/c64/mach5.c b/src/devices/bus/c64/mach5.c
index dea893ca627..dea893ca627 100644
--- a/src/emu/bus/c64/mach5.c
+++ b/src/devices/bus/c64/mach5.c
diff --git a/src/emu/bus/c64/mach5.h b/src/devices/bus/c64/mach5.h
index b3e448e77b4..b3e448e77b4 100644
--- a/src/emu/bus/c64/mach5.h
+++ b/src/devices/bus/c64/mach5.h
diff --git a/src/emu/bus/c64/magic_desk.c b/src/devices/bus/c64/magic_desk.c
index 7c050abb315..7c050abb315 100644
--- a/src/emu/bus/c64/magic_desk.c
+++ b/src/devices/bus/c64/magic_desk.c
diff --git a/src/emu/bus/c64/magic_desk.h b/src/devices/bus/c64/magic_desk.h
index a1db772cb2c..a1db772cb2c 100644
--- a/src/emu/bus/c64/magic_desk.h
+++ b/src/devices/bus/c64/magic_desk.h
diff --git a/src/emu/bus/c64/magic_formel.c b/src/devices/bus/c64/magic_formel.c
index 22faa6cbc9b..22faa6cbc9b 100644
--- a/src/emu/bus/c64/magic_formel.c
+++ b/src/devices/bus/c64/magic_formel.c
diff --git a/src/emu/bus/c64/magic_formel.h b/src/devices/bus/c64/magic_formel.h
index 251fbbb0c90..251fbbb0c90 100644
--- a/src/emu/bus/c64/magic_formel.h
+++ b/src/devices/bus/c64/magic_formel.h
diff --git a/src/emu/bus/c64/magic_voice.c b/src/devices/bus/c64/magic_voice.c
index c23c87052e4..c23c87052e4 100644
--- a/src/emu/bus/c64/magic_voice.c
+++ b/src/devices/bus/c64/magic_voice.c
diff --git a/src/emu/bus/c64/magic_voice.h b/src/devices/bus/c64/magic_voice.h
index ef385a5a502..ef385a5a502 100644
--- a/src/emu/bus/c64/magic_voice.h
+++ b/src/devices/bus/c64/magic_voice.h
diff --git a/src/emu/bus/c64/midi_maplin.c b/src/devices/bus/c64/midi_maplin.c
index 7a143391129..7a143391129 100644
--- a/src/emu/bus/c64/midi_maplin.c
+++ b/src/devices/bus/c64/midi_maplin.c
diff --git a/src/emu/bus/c64/midi_maplin.h b/src/devices/bus/c64/midi_maplin.h
index 95f447f122e..95f447f122e 100644
--- a/src/emu/bus/c64/midi_maplin.h
+++ b/src/devices/bus/c64/midi_maplin.h
diff --git a/src/emu/bus/c64/midi_namesoft.c b/src/devices/bus/c64/midi_namesoft.c
index cd1553b6187..cd1553b6187 100644
--- a/src/emu/bus/c64/midi_namesoft.c
+++ b/src/devices/bus/c64/midi_namesoft.c
diff --git a/src/emu/bus/c64/midi_namesoft.h b/src/devices/bus/c64/midi_namesoft.h
index bc91dbd8f86..bc91dbd8f86 100644
--- a/src/emu/bus/c64/midi_namesoft.h
+++ b/src/devices/bus/c64/midi_namesoft.h
diff --git a/src/emu/bus/c64/midi_passport.c b/src/devices/bus/c64/midi_passport.c
index 2948503f675..2948503f675 100644
--- a/src/emu/bus/c64/midi_passport.c
+++ b/src/devices/bus/c64/midi_passport.c
diff --git a/src/emu/bus/c64/midi_passport.h b/src/devices/bus/c64/midi_passport.h
index e60331cd727..e60331cd727 100644
--- a/src/emu/bus/c64/midi_passport.h
+++ b/src/devices/bus/c64/midi_passport.h
diff --git a/src/emu/bus/c64/midi_sci.c b/src/devices/bus/c64/midi_sci.c
index 40e2c56cbfc..40e2c56cbfc 100644
--- a/src/emu/bus/c64/midi_sci.c
+++ b/src/devices/bus/c64/midi_sci.c
diff --git a/src/emu/bus/c64/midi_sci.h b/src/devices/bus/c64/midi_sci.h
index 0401f3a82a1..0401f3a82a1 100644
--- a/src/emu/bus/c64/midi_sci.h
+++ b/src/devices/bus/c64/midi_sci.h
diff --git a/src/emu/bus/c64/midi_siel.c b/src/devices/bus/c64/midi_siel.c
index cce956a1427..cce956a1427 100644
--- a/src/emu/bus/c64/midi_siel.c
+++ b/src/devices/bus/c64/midi_siel.c
diff --git a/src/emu/bus/c64/midi_siel.h b/src/devices/bus/c64/midi_siel.h
index f566489259e..f566489259e 100644
--- a/src/emu/bus/c64/midi_siel.h
+++ b/src/devices/bus/c64/midi_siel.h
diff --git a/src/emu/bus/c64/mikro_assembler.c b/src/devices/bus/c64/mikro_assembler.c
index 2578d4ae5b4..2578d4ae5b4 100644
--- a/src/emu/bus/c64/mikro_assembler.c
+++ b/src/devices/bus/c64/mikro_assembler.c
diff --git a/src/emu/bus/c64/mikro_assembler.h b/src/devices/bus/c64/mikro_assembler.h
index 15c4e06279d..15c4e06279d 100644
--- a/src/emu/bus/c64/mikro_assembler.h
+++ b/src/devices/bus/c64/mikro_assembler.h
diff --git a/src/emu/bus/c64/multiscreen.c b/src/devices/bus/c64/multiscreen.c
index 0edb8b90c1c..0edb8b90c1c 100644
--- a/src/emu/bus/c64/multiscreen.c
+++ b/src/devices/bus/c64/multiscreen.c
diff --git a/src/emu/bus/c64/multiscreen.h b/src/devices/bus/c64/multiscreen.h
index 08d570f8308..08d570f8308 100644
--- a/src/emu/bus/c64/multiscreen.h
+++ b/src/devices/bus/c64/multiscreen.h
diff --git a/src/emu/bus/c64/music64.c b/src/devices/bus/c64/music64.c
index 723acad7fa7..723acad7fa7 100644
--- a/src/emu/bus/c64/music64.c
+++ b/src/devices/bus/c64/music64.c
diff --git a/src/emu/bus/c64/music64.h b/src/devices/bus/c64/music64.h
index bd1cfe2774b..bd1cfe2774b 100644
--- a/src/emu/bus/c64/music64.h
+++ b/src/devices/bus/c64/music64.h
diff --git a/src/emu/bus/c64/neoram.c b/src/devices/bus/c64/neoram.c
index 2b885c86f55..2b885c86f55 100644
--- a/src/emu/bus/c64/neoram.c
+++ b/src/devices/bus/c64/neoram.c
diff --git a/src/emu/bus/c64/neoram.h b/src/devices/bus/c64/neoram.h
index 0011e942a53..0011e942a53 100644
--- a/src/emu/bus/c64/neoram.h
+++ b/src/devices/bus/c64/neoram.h
diff --git a/src/emu/bus/c64/ocean.c b/src/devices/bus/c64/ocean.c
index 496651a1b25..496651a1b25 100644
--- a/src/emu/bus/c64/ocean.c
+++ b/src/devices/bus/c64/ocean.c
diff --git a/src/emu/bus/c64/ocean.h b/src/devices/bus/c64/ocean.h
index 6a44f6a4ace..6a44f6a4ace 100644
--- a/src/emu/bus/c64/ocean.h
+++ b/src/devices/bus/c64/ocean.h
diff --git a/src/emu/bus/c64/pagefox.c b/src/devices/bus/c64/pagefox.c
index 8f163f41692..8f163f41692 100644
--- a/src/emu/bus/c64/pagefox.c
+++ b/src/devices/bus/c64/pagefox.c
diff --git a/src/emu/bus/c64/pagefox.h b/src/devices/bus/c64/pagefox.h
index d9c71206e10..d9c71206e10 100644
--- a/src/emu/bus/c64/pagefox.h
+++ b/src/devices/bus/c64/pagefox.h
diff --git a/src/emu/bus/c64/partner.c b/src/devices/bus/c64/partner.c
index 4feb8022b08..4feb8022b08 100644
--- a/src/emu/bus/c64/partner.c
+++ b/src/devices/bus/c64/partner.c
diff --git a/src/emu/bus/c64/partner.h b/src/devices/bus/c64/partner.h
index bfa2abb314b..bfa2abb314b 100644
--- a/src/emu/bus/c64/partner.h
+++ b/src/devices/bus/c64/partner.h
diff --git a/src/emu/bus/c64/prophet64.c b/src/devices/bus/c64/prophet64.c
index bd61247eed3..bd61247eed3 100644
--- a/src/emu/bus/c64/prophet64.c
+++ b/src/devices/bus/c64/prophet64.c
diff --git a/src/emu/bus/c64/prophet64.h b/src/devices/bus/c64/prophet64.h
index d9ee926de3c..d9ee926de3c 100644
--- a/src/emu/bus/c64/prophet64.h
+++ b/src/devices/bus/c64/prophet64.h
diff --git a/src/emu/bus/c64/ps64.c b/src/devices/bus/c64/ps64.c
index af9ea9d2402..af9ea9d2402 100644
--- a/src/emu/bus/c64/ps64.c
+++ b/src/devices/bus/c64/ps64.c
diff --git a/src/emu/bus/c64/ps64.h b/src/devices/bus/c64/ps64.h
index 6c7a183c487..6c7a183c487 100644
--- a/src/emu/bus/c64/ps64.h
+++ b/src/devices/bus/c64/ps64.h
diff --git a/src/emu/bus/c64/reu.c b/src/devices/bus/c64/reu.c
index bc83c9554d2..bc83c9554d2 100644
--- a/src/emu/bus/c64/reu.c
+++ b/src/devices/bus/c64/reu.c
diff --git a/src/emu/bus/c64/reu.h b/src/devices/bus/c64/reu.h
index d3df7f4d1d9..d3df7f4d1d9 100644
--- a/src/emu/bus/c64/reu.h
+++ b/src/devices/bus/c64/reu.h
diff --git a/src/emu/bus/c64/rex.c b/src/devices/bus/c64/rex.c
index 5a4a0abaf78..5a4a0abaf78 100644
--- a/src/emu/bus/c64/rex.c
+++ b/src/devices/bus/c64/rex.c
diff --git a/src/emu/bus/c64/rex.h b/src/devices/bus/c64/rex.h
index d94b720f22d..d94b720f22d 100644
--- a/src/emu/bus/c64/rex.h
+++ b/src/devices/bus/c64/rex.h
diff --git a/src/emu/bus/c64/rex_ep256.c b/src/devices/bus/c64/rex_ep256.c
index ef87cf9dc6f..ef87cf9dc6f 100644
--- a/src/emu/bus/c64/rex_ep256.c
+++ b/src/devices/bus/c64/rex_ep256.c
diff --git a/src/emu/bus/c64/rex_ep256.h b/src/devices/bus/c64/rex_ep256.h
index 140e8402ce3..140e8402ce3 100644
--- a/src/emu/bus/c64/rex_ep256.h
+++ b/src/devices/bus/c64/rex_ep256.h
diff --git a/src/emu/bus/c64/ross.c b/src/devices/bus/c64/ross.c
index a610d8c987c..a610d8c987c 100644
--- a/src/emu/bus/c64/ross.c
+++ b/src/devices/bus/c64/ross.c
diff --git a/src/emu/bus/c64/ross.h b/src/devices/bus/c64/ross.h
index 0cb4d1f36b5..0cb4d1f36b5 100644
--- a/src/emu/bus/c64/ross.h
+++ b/src/devices/bus/c64/ross.h
diff --git a/src/emu/bus/c64/sfx_sound_expander.c b/src/devices/bus/c64/sfx_sound_expander.c
index 8c3f7291620..8c3f7291620 100644
--- a/src/emu/bus/c64/sfx_sound_expander.c
+++ b/src/devices/bus/c64/sfx_sound_expander.c
diff --git a/src/emu/bus/c64/sfx_sound_expander.h b/src/devices/bus/c64/sfx_sound_expander.h
index d7a0d229b45..d7a0d229b45 100644
--- a/src/emu/bus/c64/sfx_sound_expander.h
+++ b/src/devices/bus/c64/sfx_sound_expander.h
diff --git a/src/emu/bus/c64/silverrock.c b/src/devices/bus/c64/silverrock.c
index 9e9ce421a6c..9e9ce421a6c 100644
--- a/src/emu/bus/c64/silverrock.c
+++ b/src/devices/bus/c64/silverrock.c
diff --git a/src/emu/bus/c64/silverrock.h b/src/devices/bus/c64/silverrock.h
index 65e20f1ccf6..65e20f1ccf6 100644
--- a/src/emu/bus/c64/silverrock.h
+++ b/src/devices/bus/c64/silverrock.h
diff --git a/src/emu/bus/c64/simons_basic.c b/src/devices/bus/c64/simons_basic.c
index 01baf228189..01baf228189 100644
--- a/src/emu/bus/c64/simons_basic.c
+++ b/src/devices/bus/c64/simons_basic.c
diff --git a/src/emu/bus/c64/simons_basic.h b/src/devices/bus/c64/simons_basic.h
index 3ebff2b672a..3ebff2b672a 100644
--- a/src/emu/bus/c64/simons_basic.h
+++ b/src/devices/bus/c64/simons_basic.h
diff --git a/src/emu/bus/c64/stardos.c b/src/devices/bus/c64/stardos.c
index 4c92982c695..4c92982c695 100644
--- a/src/emu/bus/c64/stardos.c
+++ b/src/devices/bus/c64/stardos.c
diff --git a/src/emu/bus/c64/stardos.h b/src/devices/bus/c64/stardos.h
index a1cbe520afb..a1cbe520afb 100644
--- a/src/emu/bus/c64/stardos.h
+++ b/src/devices/bus/c64/stardos.h
diff --git a/src/emu/bus/c64/std.c b/src/devices/bus/c64/std.c
index 6fa3abfef1d..6fa3abfef1d 100644
--- a/src/emu/bus/c64/std.c
+++ b/src/devices/bus/c64/std.c
diff --git a/src/emu/bus/c64/std.h b/src/devices/bus/c64/std.h
index c726e901025..c726e901025 100644
--- a/src/emu/bus/c64/std.h
+++ b/src/devices/bus/c64/std.h
diff --git a/src/emu/bus/c64/structured_basic.c b/src/devices/bus/c64/structured_basic.c
index 404d1b9d753..404d1b9d753 100644
--- a/src/emu/bus/c64/structured_basic.c
+++ b/src/devices/bus/c64/structured_basic.c
diff --git a/src/emu/bus/c64/structured_basic.h b/src/devices/bus/c64/structured_basic.h
index 18465113d94..18465113d94 100644
--- a/src/emu/bus/c64/structured_basic.h
+++ b/src/devices/bus/c64/structured_basic.h
diff --git a/src/emu/bus/c64/super_explode.c b/src/devices/bus/c64/super_explode.c
index d58923fa97e..d58923fa97e 100644
--- a/src/emu/bus/c64/super_explode.c
+++ b/src/devices/bus/c64/super_explode.c
diff --git a/src/emu/bus/c64/super_explode.h b/src/devices/bus/c64/super_explode.h
index d33b4047725..d33b4047725 100644
--- a/src/emu/bus/c64/super_explode.h
+++ b/src/devices/bus/c64/super_explode.h
diff --git a/src/emu/bus/c64/super_games.c b/src/devices/bus/c64/super_games.c
index 0e15485993b..0e15485993b 100644
--- a/src/emu/bus/c64/super_games.c
+++ b/src/devices/bus/c64/super_games.c
diff --git a/src/emu/bus/c64/super_games.h b/src/devices/bus/c64/super_games.h
index 689fe7c79b9..689fe7c79b9 100644
--- a/src/emu/bus/c64/super_games.h
+++ b/src/devices/bus/c64/super_games.h
diff --git a/src/emu/bus/c64/supercpu.c b/src/devices/bus/c64/supercpu.c
index cb8a28e2198..cb8a28e2198 100644
--- a/src/emu/bus/c64/supercpu.c
+++ b/src/devices/bus/c64/supercpu.c
diff --git a/src/emu/bus/c64/supercpu.h b/src/devices/bus/c64/supercpu.h
index 857f6feb47f..857f6feb47f 100644
--- a/src/emu/bus/c64/supercpu.h
+++ b/src/devices/bus/c64/supercpu.h
diff --git a/src/emu/bus/c64/sw8k.c b/src/devices/bus/c64/sw8k.c
index 9b0cce8c55d..9b0cce8c55d 100644
--- a/src/emu/bus/c64/sw8k.c
+++ b/src/devices/bus/c64/sw8k.c
diff --git a/src/emu/bus/c64/sw8k.h b/src/devices/bus/c64/sw8k.h
index 0838baf68a7..0838baf68a7 100644
--- a/src/emu/bus/c64/sw8k.h
+++ b/src/devices/bus/c64/sw8k.h
diff --git a/src/emu/bus/c64/swiftlink.c b/src/devices/bus/c64/swiftlink.c
index 19e4ea5161a..19e4ea5161a 100644
--- a/src/emu/bus/c64/swiftlink.c
+++ b/src/devices/bus/c64/swiftlink.c
diff --git a/src/emu/bus/c64/swiftlink.h b/src/devices/bus/c64/swiftlink.h
index 713bafbb289..713bafbb289 100644
--- a/src/emu/bus/c64/swiftlink.h
+++ b/src/devices/bus/c64/swiftlink.h
diff --git a/src/emu/bus/c64/system3.c b/src/devices/bus/c64/system3.c
index b14ca7ecc87..b14ca7ecc87 100644
--- a/src/emu/bus/c64/system3.c
+++ b/src/devices/bus/c64/system3.c
diff --git a/src/emu/bus/c64/system3.h b/src/devices/bus/c64/system3.h
index c6adc33c880..c6adc33c880 100644
--- a/src/emu/bus/c64/system3.h
+++ b/src/devices/bus/c64/system3.h
diff --git a/src/emu/bus/c64/tdos.c b/src/devices/bus/c64/tdos.c
index e472ab7e1db..e472ab7e1db 100644
--- a/src/emu/bus/c64/tdos.c
+++ b/src/devices/bus/c64/tdos.c
diff --git a/src/emu/bus/c64/tdos.h b/src/devices/bus/c64/tdos.h
index 93e3823d180..93e3823d180 100644
--- a/src/emu/bus/c64/tdos.h
+++ b/src/devices/bus/c64/tdos.h
diff --git a/src/emu/bus/c64/turbo232.c b/src/devices/bus/c64/turbo232.c
index 8fe00f65fd1..8fe00f65fd1 100644
--- a/src/emu/bus/c64/turbo232.c
+++ b/src/devices/bus/c64/turbo232.c
diff --git a/src/emu/bus/c64/turbo232.h b/src/devices/bus/c64/turbo232.h
index b8ff5a17c8c..b8ff5a17c8c 100644
--- a/src/emu/bus/c64/turbo232.h
+++ b/src/devices/bus/c64/turbo232.h
diff --git a/src/emu/bus/c64/user.c b/src/devices/bus/c64/user.c
index 54e8bc560d2..54e8bc560d2 100644
--- a/src/emu/bus/c64/user.c
+++ b/src/devices/bus/c64/user.c
diff --git a/src/emu/bus/c64/user.h b/src/devices/bus/c64/user.h
index 52aed6eb972..52aed6eb972 100644
--- a/src/emu/bus/c64/user.h
+++ b/src/devices/bus/c64/user.h
diff --git a/src/emu/bus/c64/vizastar.c b/src/devices/bus/c64/vizastar.c
index d635ffec656..d635ffec656 100644
--- a/src/emu/bus/c64/vizastar.c
+++ b/src/devices/bus/c64/vizastar.c
diff --git a/src/emu/bus/c64/vizastar.h b/src/devices/bus/c64/vizastar.h
index 0b01f4424a7..0b01f4424a7 100644
--- a/src/emu/bus/c64/vizastar.h
+++ b/src/devices/bus/c64/vizastar.h
diff --git a/src/emu/bus/c64/vw64.c b/src/devices/bus/c64/vw64.c
index fdc21ff4a05..fdc21ff4a05 100644
--- a/src/emu/bus/c64/vw64.c
+++ b/src/devices/bus/c64/vw64.c
diff --git a/src/emu/bus/c64/vw64.h b/src/devices/bus/c64/vw64.h
index fac67142a1a..fac67142a1a 100644
--- a/src/emu/bus/c64/vw64.h
+++ b/src/devices/bus/c64/vw64.h
diff --git a/src/emu/bus/c64/warp_speed.c b/src/devices/bus/c64/warp_speed.c
index d625fa5ea7d..d625fa5ea7d 100644
--- a/src/emu/bus/c64/warp_speed.c
+++ b/src/devices/bus/c64/warp_speed.c
diff --git a/src/emu/bus/c64/warp_speed.h b/src/devices/bus/c64/warp_speed.h
index e115c7be256..e115c7be256 100644
--- a/src/emu/bus/c64/warp_speed.h
+++ b/src/devices/bus/c64/warp_speed.h
diff --git a/src/emu/bus/c64/westermann.c b/src/devices/bus/c64/westermann.c
index 6a758428a1f..6a758428a1f 100644
--- a/src/emu/bus/c64/westermann.c
+++ b/src/devices/bus/c64/westermann.c
diff --git a/src/emu/bus/c64/westermann.h b/src/devices/bus/c64/westermann.h
index 9ea1d0d605c..9ea1d0d605c 100644
--- a/src/emu/bus/c64/westermann.h
+++ b/src/devices/bus/c64/westermann.h
diff --git a/src/emu/bus/c64/xl80.c b/src/devices/bus/c64/xl80.c
index c1f7fe0f1dd..c1f7fe0f1dd 100644
--- a/src/emu/bus/c64/xl80.c
+++ b/src/devices/bus/c64/xl80.c
diff --git a/src/emu/bus/c64/xl80.h b/src/devices/bus/c64/xl80.h
index 38a90baf6b1..38a90baf6b1 100644
--- a/src/emu/bus/c64/xl80.h
+++ b/src/devices/bus/c64/xl80.h
diff --git a/src/emu/bus/c64/zaxxon.c b/src/devices/bus/c64/zaxxon.c
index 22ce1f35ce9..22ce1f35ce9 100644
--- a/src/emu/bus/c64/zaxxon.c
+++ b/src/devices/bus/c64/zaxxon.c
diff --git a/src/emu/bus/c64/zaxxon.h b/src/devices/bus/c64/zaxxon.h
index b5740605ef0..b5740605ef0 100644
--- a/src/emu/bus/c64/zaxxon.h
+++ b/src/devices/bus/c64/zaxxon.h
diff --git a/src/emu/bus/cbm2/24k.c b/src/devices/bus/cbm2/24k.c
index a31c58a7aaf..a31c58a7aaf 100644
--- a/src/emu/bus/cbm2/24k.c
+++ b/src/devices/bus/cbm2/24k.c
diff --git a/src/emu/bus/cbm2/24k.h b/src/devices/bus/cbm2/24k.h
index 80dbc52046b..80dbc52046b 100644
--- a/src/emu/bus/cbm2/24k.h
+++ b/src/devices/bus/cbm2/24k.h
diff --git a/src/emu/bus/cbm2/exp.c b/src/devices/bus/cbm2/exp.c
index f45dbc2caca..f45dbc2caca 100644
--- a/src/emu/bus/cbm2/exp.c
+++ b/src/devices/bus/cbm2/exp.c
diff --git a/src/emu/bus/cbm2/exp.h b/src/devices/bus/cbm2/exp.h
index 338e4ad1cda..338e4ad1cda 100644
--- a/src/emu/bus/cbm2/exp.h
+++ b/src/devices/bus/cbm2/exp.h
diff --git a/src/emu/bus/cbm2/hrg.c b/src/devices/bus/cbm2/hrg.c
index cb489ec359f..cb489ec359f 100644
--- a/src/emu/bus/cbm2/hrg.c
+++ b/src/devices/bus/cbm2/hrg.c
diff --git a/src/emu/bus/cbm2/hrg.h b/src/devices/bus/cbm2/hrg.h
index 91892274fc1..91892274fc1 100644
--- a/src/emu/bus/cbm2/hrg.h
+++ b/src/devices/bus/cbm2/hrg.h
diff --git a/src/emu/bus/cbm2/std.c b/src/devices/bus/cbm2/std.c
index e6e697927dc..e6e697927dc 100644
--- a/src/emu/bus/cbm2/std.c
+++ b/src/devices/bus/cbm2/std.c
diff --git a/src/emu/bus/cbm2/std.h b/src/devices/bus/cbm2/std.h
index 8dee67b9c11..8dee67b9c11 100644
--- a/src/emu/bus/cbm2/std.h
+++ b/src/devices/bus/cbm2/std.h
diff --git a/src/emu/bus/cbm2/user.c b/src/devices/bus/cbm2/user.c
index 6383f39b061..6383f39b061 100644
--- a/src/emu/bus/cbm2/user.c
+++ b/src/devices/bus/cbm2/user.c
diff --git a/src/emu/bus/cbm2/user.h b/src/devices/bus/cbm2/user.h
index 7952517ed05..7952517ed05 100644
--- a/src/emu/bus/cbm2/user.h
+++ b/src/devices/bus/cbm2/user.h
diff --git a/src/devices/bus/cbmiec/c1526.c b/src/devices/bus/cbmiec/c1526.c
new file mode 100644
index 00000000000..da2cf7197c0
--- /dev/null
+++ b/src/devices/bus/cbmiec/c1526.c
@@ -0,0 +1,269 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ Commodore 1526/MPS-802/4023 Printer emulation
+
+**********************************************************************/
+
+#include "c1526.h"
+
+
+
+//**************************************************************************
+// MACROS / CONSTANTS
+//**************************************************************************
+
+#define M6504_TAG "u7d"
+
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type C1526 = &device_creator<c1526_t>;
+const device_type MPS802 = &device_creator<c1526_t>;
+const device_type C4023 = &device_creator<c4023_t>;
+
+
+//-------------------------------------------------
+// ROM( c1526 )
+//-------------------------------------------------
+
+ROM_START( c1526 )
+ ROM_REGION( 0x2000, M6504_TAG, 0 )
+ ROM_SYSTEM_BIOS( 0, "r05", "Revision 5" )
+ ROMX_LOAD( "325341-05.u8d", 0x0000, 0x2000, CRC(3ef63c59) SHA1(a71be83a476d2777d33dddb0103c036a047975ba), ROM_BIOS(1) )
+ ROM_SYSTEM_BIOS( 1, "r07c", "Revision 7c" )
+ ROMX_LOAD( "325341-08.u8d", 0x0000, 0x2000, CRC(38f85b4a) SHA1(25880091979b21fdaf713b53ef2f1cb8063a3505), ROM_BIOS(2) )
+ ROM_SYSTEM_BIOS( 2, "r07b", "Revision 7b (Swe/Fin)" )
+ ROMX_LOAD( "cbm 1526 vers. 1.0 skand.gen.u8d", 0x0000, 0x2000, CRC(21051f69) SHA1(7e622fc39985ebe9333d2b546b3c85fd6ab17a53), ROM_BIOS(3) )
+ ROM_SYSTEM_BIOS( 3, "grafik", "MPS802 GrafikROM II v60.12" )
+ ROMX_LOAD( "mps802 grafikrom ii v60.12.u8d", 0x0000, 0x2000, CRC(9f5e6b18) SHA1(8b7f620a8f85e250b142d72b812a67fd0e292d68), ROM_BIOS(4) )
+ROM_END
+
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const rom_entry *c1526_t::device_rom_region() const
+{
+ return ROM_NAME( c1526 );
+}
+
+
+//-------------------------------------------------
+// ROM( c4023 )
+//-------------------------------------------------
+
+ROM_START( c4023 )
+ ROM_REGION( 0x2000, M6504_TAG, 0 )
+ ROM_LOAD( "325360-03.u8d", 0x0000, 0x2000, CRC(c6bb0977) SHA1(7a8c43d2e205f58d83709c04bc7795602a892ddd) )
+ROM_END
+
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const rom_entry *c4023_t::device_rom_region() const
+{
+ return ROM_NAME( c4023 );
+}
+
+
+//-------------------------------------------------
+// ADDRESS_MAP( c1526_mem )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( c1526_mem, AS_PROGRAM, 8, c1526_base_t )
+ AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION(M6504_TAG, 0)
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
+// MACHINE_DRIVER( c1526 )
+//-------------------------------------------------
+
+static MACHINE_CONFIG_FRAGMENT( c1526 )
+ MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_4MHz/4)
+ MCFG_CPU_PROGRAM_MAP(c1526_mem)
+MACHINE_CONFIG_END
+
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor c1526_t::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( c1526 );
+}
+
+
+//-------------------------------------------------
+// MACHINE_DRIVER( c4023 )
+//-------------------------------------------------
+
+static MACHINE_CONFIG_FRAGMENT( c4023 )
+ MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_4MHz/4)
+ MCFG_CPU_PROGRAM_MAP(c1526_mem)
+MACHINE_CONFIG_END
+
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor c4023_t::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( c4023 );
+}
+
+
+//-------------------------------------------------
+// INPUT_PORTS( c1526 )
+//-------------------------------------------------
+
+static INPUT_PORTS_START( c1526 )
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor c1526_t::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( c1526 );
+}
+
+
+//-------------------------------------------------
+// INPUT_PORTS( c4023 )
+//-------------------------------------------------
+
+static INPUT_PORTS_START( c4023 )
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor c4023_t::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( c4023 );
+}
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// c1526_base_t - constructor
+//-------------------------------------------------
+
+c1526_base_t:: c1526_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
+ device_t(mconfig, type, name, tag, owner, clock, shortname, source)
+{
+}
+
+
+//-------------------------------------------------
+// c1526_t - constructor
+//-------------------------------------------------
+
+c1526_t::c1526_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ c1526_base_t(mconfig, C1526, "1526", tag, owner, clock, "c1526", __FILE__),
+ device_cbm_iec_interface(mconfig, *this)
+{
+}
+
+
+//-------------------------------------------------
+// c4023_t - constructor
+//-------------------------------------------------
+
+c4023_t::c4023_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ c1526_base_t(mconfig, C4023, "4023", tag, owner, clock, "c4023", __FILE__),
+ device_ieee488_interface(mconfig, *this)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void c1526_base_t::device_start()
+{
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void c1526_base_t::device_reset()
+{
+}
+
+
+//-------------------------------------------------
+// cbm_iec_atn -
+//-------------------------------------------------
+
+void c1526_t::cbm_iec_atn(int state)
+{
+}
+
+
+//-------------------------------------------------
+// cbm_iec_data -
+//-------------------------------------------------
+
+void c1526_t::cbm_iec_data(int state)
+{
+}
+
+
+//-------------------------------------------------
+// cbm_iec_reset -
+//-------------------------------------------------
+
+void c1526_t::cbm_iec_reset(int state)
+{
+ if (!state)
+ {
+ device_reset();
+ }
+}
+
+
+//-------------------------------------------------
+// ieee488_atn_w -
+//-------------------------------------------------
+
+void c4023_t::ieee488_atn(int state)
+{
+}
+
+
+//-------------------------------------------------
+// ieee488_ifc_w -
+//-------------------------------------------------
+
+void c4023_t::ieee488_ifc(int state)
+{
+ if (!state)
+ {
+ device_reset();
+ }
+}
diff --git a/src/devices/bus/cbmiec/c1526.h b/src/devices/bus/cbmiec/c1526.h
new file mode 100644
index 00000000000..c6389bf4662
--- /dev/null
+++ b/src/devices/bus/cbmiec/c1526.h
@@ -0,0 +1,90 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ Commodore 1526/MPS-802/4023 Printer emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __C1526__
+#define __C1526__
+
+#include "emu.h"
+#include "cbmiec.h"
+#include "bus/ieee488/ieee488.h"
+#include "cpu/m6502/m6504.h"
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> c1526_base_t
+
+class c1526_base_t : public device_t
+{
+public:
+ // construction/destruction
+ c1526_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+};
+
+
+// ======================> c1526_t
+
+class c1526_t : public c1526_base_t,
+ public device_cbm_iec_interface
+{
+public:
+ // construction/destruction
+ c1526_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual ioport_constructor device_input_ports() const;
+ virtual const rom_entry *device_rom_region() const;
+
+protected:
+ // device_cbm_iec_interface overrides
+ void cbm_iec_atn(int state);
+ void cbm_iec_data(int state);
+ void cbm_iec_reset(int state);
+};
+
+
+// ======================> c4023_t
+
+class c4023_t : public c1526_base_t,
+ public device_ieee488_interface
+{
+public:
+ // construction/destruction
+ c4023_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual ioport_constructor device_input_ports() const;
+ virtual const rom_entry *device_rom_region() const;
+
+protected:
+ // device_ieee488_interface overrides
+ virtual void ieee488_atn(int state);
+ virtual void ieee488_ifc(int state);
+};
+
+
+// device type definition
+extern const device_type C1526;
+extern const device_type MPS802;
+extern const device_type C4023;
+
+
+
+#endif
diff --git a/src/emu/bus/cbmiec/c1541.c b/src/devices/bus/cbmiec/c1541.c
index 054c6e27120..054c6e27120 100644
--- a/src/emu/bus/cbmiec/c1541.c
+++ b/src/devices/bus/cbmiec/c1541.c
diff --git a/src/emu/bus/cbmiec/c1541.h b/src/devices/bus/cbmiec/c1541.h
index 7195b93293e..7195b93293e 100644
--- a/src/emu/bus/cbmiec/c1541.h
+++ b/src/devices/bus/cbmiec/c1541.h
diff --git a/src/emu/bus/cbmiec/c1571.c b/src/devices/bus/cbmiec/c1571.c
index a08e88fb696..a08e88fb696 100644
--- a/src/emu/bus/cbmiec/c1571.c
+++ b/src/devices/bus/cbmiec/c1571.c
diff --git a/src/emu/bus/cbmiec/c1571.h b/src/devices/bus/cbmiec/c1571.h
index 6a938b73291..6a938b73291 100644
--- a/src/emu/bus/cbmiec/c1571.h
+++ b/src/devices/bus/cbmiec/c1571.h
diff --git a/src/emu/bus/cbmiec/c1581.c b/src/devices/bus/cbmiec/c1581.c
index 33bc082241e..33bc082241e 100644
--- a/src/emu/bus/cbmiec/c1581.c
+++ b/src/devices/bus/cbmiec/c1581.c
diff --git a/src/emu/bus/cbmiec/c1581.h b/src/devices/bus/cbmiec/c1581.h
index 4a2ac6a28a5..4a2ac6a28a5 100644
--- a/src/emu/bus/cbmiec/c1581.h
+++ b/src/devices/bus/cbmiec/c1581.h
diff --git a/src/emu/bus/cbmiec/c64_nl10.c b/src/devices/bus/cbmiec/c64_nl10.c
index 970baa2f941..970baa2f941 100644
--- a/src/emu/bus/cbmiec/c64_nl10.c
+++ b/src/devices/bus/cbmiec/c64_nl10.c
diff --git a/src/emu/bus/cbmiec/c64_nl10.h b/src/devices/bus/cbmiec/c64_nl10.h
index f0ceafd3f2d..f0ceafd3f2d 100644
--- a/src/emu/bus/cbmiec/c64_nl10.h
+++ b/src/devices/bus/cbmiec/c64_nl10.h
diff --git a/src/emu/bus/cbmiec/cbmiec.c b/src/devices/bus/cbmiec/cbmiec.c
index f7b89521fa0..f546d2ac649 100644
--- a/src/emu/bus/cbmiec/cbmiec.c
+++ b/src/devices/bus/cbmiec/cbmiec.c
@@ -492,6 +492,9 @@ int cbm_iec_device::get_signal(int signal)
#include "fd2000.h"
#include "interpod.h"
#include "serialbox.h"
+#include "vic1515.h"
+#include "vic1520.h"
+#include "c1526.h"
SLOT_INTERFACE_START( cbm_iec_devices )
SLOT_INTERFACE("c1540", C1540)
@@ -516,4 +519,8 @@ SLOT_INTERFACE_START( cbm_iec_devices )
SLOT_INTERFACE("serialbox", SERIAL_BOX)
SLOT_INTERFACE("diag264", DIAG264_SERIAL_LOOPBACK)
SLOT_INTERFACE("nl10", C64_NL10_INTERFACE)
+ SLOT_INTERFACE("vic1515", VIC1515)
+ SLOT_INTERFACE("vic1520", VIC1520)
+ SLOT_INTERFACE("c1526", C1526)
+ SLOT_INTERFACE("mps802", MPS802)
SLOT_INTERFACE_END
diff --git a/src/emu/bus/cbmiec/cbmiec.h b/src/devices/bus/cbmiec/cbmiec.h
index 627e3dc203f..627e3dc203f 100644
--- a/src/emu/bus/cbmiec/cbmiec.h
+++ b/src/devices/bus/cbmiec/cbmiec.h
diff --git a/src/emu/bus/cbmiec/cmdhd.c b/src/devices/bus/cbmiec/cmdhd.c
index d3025700fa7..d3025700fa7 100644
--- a/src/emu/bus/cbmiec/cmdhd.c
+++ b/src/devices/bus/cbmiec/cmdhd.c
diff --git a/src/emu/bus/cbmiec/cmdhd.h b/src/devices/bus/cbmiec/cmdhd.h
index f71c0ad2741..f71c0ad2741 100644
--- a/src/emu/bus/cbmiec/cmdhd.h
+++ b/src/devices/bus/cbmiec/cmdhd.h
diff --git a/src/emu/bus/cbmiec/diag264_lb_iec.c b/src/devices/bus/cbmiec/diag264_lb_iec.c
index d9c2e5ed303..d9c2e5ed303 100644
--- a/src/emu/bus/cbmiec/diag264_lb_iec.c
+++ b/src/devices/bus/cbmiec/diag264_lb_iec.c
diff --git a/src/emu/bus/cbmiec/diag264_lb_iec.h b/src/devices/bus/cbmiec/diag264_lb_iec.h
index ac963ec231e..ac963ec231e 100644
--- a/src/emu/bus/cbmiec/diag264_lb_iec.h
+++ b/src/devices/bus/cbmiec/diag264_lb_iec.h
diff --git a/src/emu/bus/cbmiec/fd2000.c b/src/devices/bus/cbmiec/fd2000.c
index d31b9d97507..d31b9d97507 100644
--- a/src/emu/bus/cbmiec/fd2000.c
+++ b/src/devices/bus/cbmiec/fd2000.c
diff --git a/src/emu/bus/cbmiec/fd2000.h b/src/devices/bus/cbmiec/fd2000.h
index 00ff81a038d..00ff81a038d 100644
--- a/src/emu/bus/cbmiec/fd2000.h
+++ b/src/devices/bus/cbmiec/fd2000.h
diff --git a/src/emu/bus/cbmiec/interpod.c b/src/devices/bus/cbmiec/interpod.c
index 0326210bb54..0326210bb54 100644
--- a/src/emu/bus/cbmiec/interpod.c
+++ b/src/devices/bus/cbmiec/interpod.c
diff --git a/src/emu/bus/cbmiec/interpod.h b/src/devices/bus/cbmiec/interpod.h
index fbbe194cca6..fbbe194cca6 100644
--- a/src/emu/bus/cbmiec/interpod.h
+++ b/src/devices/bus/cbmiec/interpod.h
diff --git a/src/emu/bus/cbmiec/serialbox.c b/src/devices/bus/cbmiec/serialbox.c
index c3b653cb030..c3b653cb030 100644
--- a/src/emu/bus/cbmiec/serialbox.c
+++ b/src/devices/bus/cbmiec/serialbox.c
diff --git a/src/emu/bus/cbmiec/serialbox.h b/src/devices/bus/cbmiec/serialbox.h
index f045fd05dfb..f045fd05dfb 100644
--- a/src/emu/bus/cbmiec/serialbox.h
+++ b/src/devices/bus/cbmiec/serialbox.h
diff --git a/src/devices/bus/cbmiec/vic1515.c b/src/devices/bus/cbmiec/vic1515.c
new file mode 100644
index 00000000000..61f19761d7a
--- /dev/null
+++ b/src/devices/bus/cbmiec/vic1515.c
@@ -0,0 +1,164 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ Commodore VIC-1515 Printer emulation
+
+**********************************************************************/
+
+#include "vic1515.h"
+
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type VIC1515 = &device_creator<vic1515_t>;
+
+
+//-------------------------------------------------
+// ROM( vic1515 )
+//-------------------------------------------------
+
+ROM_START( vic1515 )
+ ROM_REGION( 0x1000, "rom", 0 )
+ ROM_LOAD( "805-5.p4", 0x0000, 0x1000, CRC(05a99a5a) SHA1(035c23dc83923eea34feea260445356a909fbd98) )
+ROM_END
+
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const rom_entry *vic1515_t::device_rom_region() const
+{
+ return ROM_NAME( vic1515 );
+}
+
+
+//-------------------------------------------------
+// ADDRESS_MAP( vic1515_mem )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( vic1515_mem, AS_PROGRAM, 8, vic1515_t )
+ AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("rom", 0)
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
+// ADDRESS_MAP( vic1515_io )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( vic1515_io, AS_IO, 8, vic1515_t )
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
+// MACHINE_DRIVER( vic1515 )
+//-------------------------------------------------
+
+static MACHINE_CONFIG_FRAGMENT( vic1515 )
+ MCFG_CPU_ADD("maincpu", I8039, XTAL_6MHz)
+ MCFG_CPU_PROGRAM_MAP(vic1515_mem)
+ MCFG_CPU_IO_MAP(vic1515_io)
+MACHINE_CONFIG_END
+
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor vic1515_t::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( vic1515 );
+}
+
+
+//-------------------------------------------------
+// INPUT_PORTS( vic1515 )
+//-------------------------------------------------
+
+static INPUT_PORTS_START( vic1515 )
+ PORT_START("ADDRESS")
+ PORT_DIPNAME( 0x03, 0x00, "Device Address" )
+ PORT_DIPSETTING( 0x00, "4" )
+ PORT_DIPSETTING( 0x01, "5" )
+ PORT_DIPSETTING( 0x02, "T" )
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor vic1515_t::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( vic1515 );
+}
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// vic1515_t - constructor
+//-------------------------------------------------
+
+vic1515_t::vic1515_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, VIC1515, "VIC-1515", tag, owner, clock, "vic1515", __FILE__),
+ device_cbm_iec_interface(mconfig, *this)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void vic1515_t::device_start()
+{
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void vic1515_t::device_reset()
+{
+}
+
+
+//-------------------------------------------------
+// cbm_iec_atn -
+//-------------------------------------------------
+
+void vic1515_t::cbm_iec_atn(int state)
+{
+}
+
+
+//-------------------------------------------------
+// cbm_iec_data -
+//-------------------------------------------------
+
+void vic1515_t::cbm_iec_data(int state)
+{
+}
+
+
+//-------------------------------------------------
+// cbm_iec_reset -
+//-------------------------------------------------
+
+void vic1515_t::cbm_iec_reset(int state)
+{
+ if (!state)
+ {
+ device_reset();
+ }
+}
diff --git a/src/devices/bus/cbmiec/vic1515.h b/src/devices/bus/cbmiec/vic1515.h
new file mode 100644
index 00000000000..cd3d4554994
--- /dev/null
+++ b/src/devices/bus/cbmiec/vic1515.h
@@ -0,0 +1,55 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ Commodore VIC-1515 Printer emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __VIC1515__
+#define __VIC1515__
+
+#include "emu.h"
+#include "cbmiec.h"
+#include "cpu/mcs48/mcs48.h"
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> vic1515_t
+
+class vic1515_t : public device_t,
+ public device_cbm_iec_interface
+{
+public:
+ // construction/destruction
+ vic1515_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual const rom_entry *device_rom_region() const;
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual ioport_constructor device_input_ports() const;
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ // device_cbm_iec_interface overrides
+ void cbm_iec_atn(int state);
+ void cbm_iec_data(int state);
+ void cbm_iec_reset(int state);
+};
+
+
+// device type definition
+extern const device_type VIC1515;
+
+
+
+#endif
diff --git a/src/devices/bus/cbmiec/vic1520.c b/src/devices/bus/cbmiec/vic1520.c
new file mode 100644
index 00000000000..55cd372f385
--- /dev/null
+++ b/src/devices/bus/cbmiec/vic1520.c
@@ -0,0 +1,192 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ Commodore VIC-1520 Plotter emulation
+
+**********************************************************************/
+
+/*
+PA0 ATN
+PA1 _CLK
+PA5 ATTN ACK
+PA6 NRFD
+PA7 _DATA IN
+
+PB0 IEEE SELECT
+PB1 IEEE SELECT
+PB2 IEEE SELECT
+PB4 LED
+PB5 REMOVE
+PB6 CHANGE
+PB7 FEED
+
+PC0 _DN
+PC1 _UP
+PC7 COLOR SENSOR SW
+
+PD0 X MOTOR COM A
+PD1 X MOTOR COM B
+PD2 X MOTOR COM C
+PD3 X MOTOR COM D
+PD4 Y MOTOR COM A
+PD5 Y MOTOR COM B
+PD6 Y MOTOR COM C
+PD7 Y MOTOR COM D
+*/
+
+#include "vic1520.h"
+
+
+
+//**************************************************************************
+// MACROS / CONSTANTS
+//**************************************************************************
+
+#define M6500_1_TAG "u1"
+
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type VIC1520 = &device_creator<vic1520_t>;
+
+
+//-------------------------------------------------
+// ROM( vic1520 )
+//-------------------------------------------------
+
+ROM_START( vic1520 )
+ ROM_REGION( 0x800, M6500_1_TAG, 0 )
+ ROM_SYSTEM_BIOS( 0, "r01", "325340-01" )
+ ROMX_LOAD( "325340-01.u1", 0x000, 0x800, CRC(3757da6f) SHA1(8ab43603f74b0f269bbe890d1939a9ae31307eb1), ROM_BIOS(1) )
+ ROM_SYSTEM_BIOS( 1, "r03", "325340-03" )
+ ROMX_LOAD( "325340-03.u1", 0x000, 0x800, CRC(f72ea2b6) SHA1(74c15b2cc1f7632bffa37439609cbdb50b82ea92), ROM_BIOS(2) )
+ROM_END
+
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const rom_entry *vic1520_t::device_rom_region() const
+{
+ return ROM_NAME( vic1520 );
+}
+
+
+//-------------------------------------------------
+// ADDRESS_MAP( vic1520_mem )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( vic1520_mem, AS_PROGRAM, 8, vic1520_t )
+ ADDRESS_MAP_GLOBAL_MASK(0xfff)
+ AM_RANGE(0x000, 0x03f) AM_RAM
+ AM_RANGE(0x800, 0xfff) AM_ROM AM_REGION(M6500_1_TAG, 0)
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
+// MACHINE_DRIVER( vic1520 )
+//-------------------------------------------------
+
+static MACHINE_CONFIG_FRAGMENT( vic1520 )
+ MCFG_CPU_ADD(M6500_1_TAG, M6502, XTAL_2MHz) // M6500/1
+ MCFG_CPU_PROGRAM_MAP(vic1520_mem)
+MACHINE_CONFIG_END
+
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor vic1520_t::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( vic1520 );
+}
+
+
+//-------------------------------------------------
+// INPUT_PORTS( vic1520 )
+//-------------------------------------------------
+
+static INPUT_PORTS_START( vic1520 )
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor vic1520_t::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( vic1520 );
+}
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// vic1520_t - constructor
+//-------------------------------------------------
+
+vic1520_t::vic1520_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, VIC1520, "VIC-1520", tag, owner, clock, "vic1520", __FILE__),
+ device_cbm_iec_interface(mconfig, *this)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void vic1520_t::device_start()
+{
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void vic1520_t::device_reset()
+{
+}
+
+
+//-------------------------------------------------
+// cbm_iec_atn -
+//-------------------------------------------------
+
+void vic1520_t::cbm_iec_atn(int state)
+{
+}
+
+
+//-------------------------------------------------
+// cbm_iec_data -
+//-------------------------------------------------
+
+void vic1520_t::cbm_iec_data(int state)
+{
+}
+
+
+//-------------------------------------------------
+// cbm_iec_reset -
+//-------------------------------------------------
+
+void vic1520_t::cbm_iec_reset(int state)
+{
+ if (!state)
+ {
+ device_reset();
+ }
+}
diff --git a/src/devices/bus/cbmiec/vic1520.h b/src/devices/bus/cbmiec/vic1520.h
new file mode 100644
index 00000000000..4169164d0ae
--- /dev/null
+++ b/src/devices/bus/cbmiec/vic1520.h
@@ -0,0 +1,55 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ Commodore VIC-1520 Plotter emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __VIC1520__
+#define __VIC1520__
+
+#include "emu.h"
+#include "cbmiec.h"
+#include "cpu/m6502/m6502.h"
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> vic1520_t
+
+class vic1520_t : public device_t,
+ public device_cbm_iec_interface
+{
+public:
+ // construction/destruction
+ vic1520_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual const rom_entry *device_rom_region() const;
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual ioport_constructor device_input_ports() const;
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ // device_cbm_iec_interface overrides
+ void cbm_iec_atn(int state);
+ void cbm_iec_data(int state);
+ void cbm_iec_reset(int state);
+};
+
+
+// device type definition
+extern const device_type VIC1520;
+
+
+
+#endif
diff --git a/src/emu/bus/centronics/comxpl80.c b/src/devices/bus/centronics/comxpl80.c
index 6c3fa83a8d7..6c3fa83a8d7 100644
--- a/src/emu/bus/centronics/comxpl80.c
+++ b/src/devices/bus/centronics/comxpl80.c
diff --git a/src/emu/bus/centronics/comxpl80.h b/src/devices/bus/centronics/comxpl80.h
index 4a943459c09..4a943459c09 100644
--- a/src/emu/bus/centronics/comxpl80.h
+++ b/src/devices/bus/centronics/comxpl80.h
diff --git a/src/emu/bus/centronics/covox.c b/src/devices/bus/centronics/covox.c
index 6cf0f6c02e9..6cf0f6c02e9 100644
--- a/src/emu/bus/centronics/covox.c
+++ b/src/devices/bus/centronics/covox.c
diff --git a/src/emu/bus/centronics/covox.h b/src/devices/bus/centronics/covox.h
index c4d3d3ea94a..c4d3d3ea94a 100644
--- a/src/emu/bus/centronics/covox.h
+++ b/src/devices/bus/centronics/covox.h
diff --git a/src/emu/bus/centronics/ctronics.c b/src/devices/bus/centronics/ctronics.c
index c27affa41ea..89850abaf17 100644
--- a/src/emu/bus/centronics/ctronics.c
+++ b/src/devices/bus/centronics/ctronics.c
@@ -117,6 +117,7 @@ device_centronics_peripheral_interface::~device_centronics_peripheral_interface(
#include "epson_ex800.h"
#include "epson_lx800.h"
#include "epson_lx810l.h"
+#include "nec_p72.h"
#include "printer.h"
#include "covox.h"
@@ -126,6 +127,7 @@ SLOT_INTERFACE_START(centronics_devices)
SLOT_INTERFACE("lx800", EPSON_LX800)
SLOT_INTERFACE("lx810l", EPSON_LX810L)
SLOT_INTERFACE("ap2000", EPSON_AP2000)
+ SLOT_INTERFACE("p72", NEC_P72)
SLOT_INTERFACE("printer", CENTRONICS_PRINTER)
SLOT_INTERFACE("covox", CENTRONICS_COVOX)
SLOT_INTERFACE("covox_stereo", CENTRONICS_COVOX_STEREO)
diff --git a/src/emu/bus/centronics/ctronics.h b/src/devices/bus/centronics/ctronics.h
index 1235179fdf6..1235179fdf6 100644
--- a/src/emu/bus/centronics/ctronics.h
+++ b/src/devices/bus/centronics/ctronics.h
diff --git a/src/emu/bus/centronics/digiblst.c b/src/devices/bus/centronics/digiblst.c
index 9fdbfd5c279..9fdbfd5c279 100644
--- a/src/emu/bus/centronics/digiblst.c
+++ b/src/devices/bus/centronics/digiblst.c
diff --git a/src/emu/bus/centronics/digiblst.h b/src/devices/bus/centronics/digiblst.h
index 340e5cd0f4c..340e5cd0f4c 100644
--- a/src/emu/bus/centronics/digiblst.h
+++ b/src/devices/bus/centronics/digiblst.h
diff --git a/src/emu/bus/centronics/dsjoy.c b/src/devices/bus/centronics/dsjoy.c
index de9b1138ec8..de9b1138ec8 100644
--- a/src/emu/bus/centronics/dsjoy.c
+++ b/src/devices/bus/centronics/dsjoy.c
diff --git a/src/emu/bus/centronics/dsjoy.h b/src/devices/bus/centronics/dsjoy.h
index a6eec3668ad..a6eec3668ad 100644
--- a/src/emu/bus/centronics/dsjoy.h
+++ b/src/devices/bus/centronics/dsjoy.h
diff --git a/src/emu/bus/centronics/epson_ex800.c b/src/devices/bus/centronics/epson_ex800.c
index 9555284c711..9555284c711 100644
--- a/src/emu/bus/centronics/epson_ex800.c
+++ b/src/devices/bus/centronics/epson_ex800.c
diff --git a/src/emu/bus/centronics/epson_ex800.h b/src/devices/bus/centronics/epson_ex800.h
index 274eac50bf0..274eac50bf0 100644
--- a/src/emu/bus/centronics/epson_ex800.h
+++ b/src/devices/bus/centronics/epson_ex800.h
diff --git a/src/emu/bus/centronics/epson_lx800.c b/src/devices/bus/centronics/epson_lx800.c
index cfcffb7329c..cfcffb7329c 100644
--- a/src/emu/bus/centronics/epson_lx800.c
+++ b/src/devices/bus/centronics/epson_lx800.c
diff --git a/src/emu/bus/centronics/epson_lx800.h b/src/devices/bus/centronics/epson_lx800.h
index 591d75cbcf3..591d75cbcf3 100644
--- a/src/emu/bus/centronics/epson_lx800.h
+++ b/src/devices/bus/centronics/epson_lx800.h
diff --git a/src/emu/bus/centronics/epson_lx810l.c b/src/devices/bus/centronics/epson_lx810l.c
index eed6401875f..167ec22488e 100644
--- a/src/emu/bus/centronics/epson_lx810l.c
+++ b/src/devices/bus/centronics/epson_lx810l.c
@@ -2,7 +2,7 @@
// copyright-holders:Ramiro Polla, Felipe Sanches
/*
* Epson LX-810L dot matrix printer emulation
-
+ *
* IC list:
* uPD7810HG (cpu)
* E05A30 (gate array)
@@ -12,9 +12,7 @@
* uPC494C (pulse width modulation control)
*
* Devices boot and enter main input loop. Data is received through the
- * centronics bus and printed as expected. The actual paper output is
- * still not implemented, though. Look at the output from the fire signal
- * (epson_lx810l_t::co0_w()) to see what's actually being printed.
+ * centronics bus and printed as expected in a separate screen.
*
* It is possible to run the printers' self test with this procedure:
* - Turn on device;
@@ -22,12 +20,9 @@
* - Reset device;
* - Toggle Line Feed button again;
* - Press Online button (press 'O');
- * - Press Online button again;
*
- * The printer's carriage will seek home, it will pull in paper for a while,
- * and it will start printing some test data. The Online LED will blink at
- * each line. Look at the output from the fire signal to see what's actually
- * being printed (epson_lx810l_t::co0_w()).
+ * The printer's carriage will seek home and it will start printing
+ * some test data. The Online LED will blink at each line.
*/
#include "epson_lx810l.h"
@@ -139,9 +134,17 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx810l )
MCFG_DEFAULT_LAYOUT(layout_lx800)
+ /* video hardware (simulates paper) */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(PAPER_WIDTH, PAPER_HEIGHT)
+ MCFG_SCREEN_VISIBLE_AREA(0, PAPER_WIDTH-1, 0, PAPER_HEIGHT-1)
+ MCFG_SCREEN_UPDATE_DRIVER(epson_lx810l_t, screen_update_lx810l)
+
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_DAC_ADD("dac")
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* gate array */
@@ -160,19 +163,12 @@ static MACHINE_CONFIG_FRAGMENT( epson_lx810l )
MCFG_EEPROM_SERIAL_93C06_ADD("eeprom")
/* steppers */
- //should this have MCFG_STEPPER_MAX_STEPS(200*2) ? code shows 200 steps...
MCFG_STEPPER_ADD("pf_stepper")
MCFG_STEPPER_REEL_TYPE(NOT_A_REEL)
- MCFG_STEPPER_START_INDEX(16)
- MCFG_STEPPER_END_INDEX(24)
- MCFG_STEPPER_INDEX_PATTERN(0x00)
- MCFG_STEPPER_INIT_PHASE(0)
+ MCFG_STEPPER_INIT_PHASE(4)
MCFG_STEPPER_ADD("cr_stepper")
MCFG_STEPPER_REEL_TYPE(NOT_A_REEL)
- MCFG_STEPPER_START_INDEX(16)
- MCFG_STEPPER_END_INDEX(24)
- MCFG_STEPPER_INDEX_PATTERN(0x00)
MCFG_STEPPER_INIT_PHASE(2)
MACHINE_CONFIG_END
@@ -296,14 +292,15 @@ epson_lx810l_t::epson_lx810l_t(const machine_config &mconfig, const char *tag, d
m_pf_stepper(*this, "pf_stepper"),
m_cr_stepper(*this, "cr_stepper"),
m_eeprom(*this, "eeprom"),
- m_speaker(*this, "speaker"),
+ m_dac(*this, "dac"),
m_e05a30(*this, "e05a30"),
+ m_screen(*this, "screen"),
m_93c06_clk(0),
m_93c06_cs(0),
m_printhead(0),
- m_pf_pos_abs(200),
- m_cr_pos_abs(200),
- m_real_cr_pos(200),
+ m_pf_pos_abs(1),
+ m_cr_pos_abs(1),
+ m_real_cr_pos(1),
m_real_cr_steps(0),
m_real_cr_dir(0)
{
@@ -316,14 +313,15 @@ epson_lx810l_t::epson_lx810l_t(const machine_config &mconfig, device_type type,
m_pf_stepper(*this, "pf_stepper"),
m_cr_stepper(*this, "cr_stepper"),
m_eeprom(*this, "eeprom"),
- m_speaker(*this, "speaker"),
+ m_dac(*this, "dac"),
m_e05a30(*this, "e05a30"),
+ m_screen(*this, "screen"),
m_93c06_clk(0),
m_93c06_cs(0),
m_printhead(0),
- m_pf_pos_abs(200),
- m_cr_pos_abs(200),
- m_real_cr_pos(200),
+ m_pf_pos_abs(1),
+ m_cr_pos_abs(1),
+ m_real_cr_pos(1),
m_real_cr_steps(0),
m_real_cr_dir(0)
{
@@ -343,6 +341,8 @@ epson_ap2000_t::epson_ap2000_t(const machine_config &mconfig, const char *tag, d
void epson_lx810l_t::device_start()
{
+ machine().first_screen()->register_screen_bitmap(m_bitmap);
+ m_bitmap.fill(0xffffff); /* Start with a clean white piece of paper */
}
@@ -352,7 +352,7 @@ void epson_lx810l_t::device_start()
void epson_lx810l_t::device_reset()
{
- m_speaker->level_w(0);
+ m_dac->write_unsigned8(0);
}
@@ -517,8 +517,14 @@ WRITE16_MEMBER( epson_lx810l_t::printhead )
WRITE8_MEMBER( epson_lx810l_t::pf_stepper )
{
- m_pf_stepper->update(data);
- m_pf_pos_abs = 200 - m_pf_stepper->get_absolute_position();
+ int changed = m_pf_stepper->update(data);
+ m_pf_pos_abs = -m_pf_stepper->get_absolute_position();
+
+ /* clear last line of paper */
+ if (changed > 0) {
+ void *line = m_bitmap.raw_pixptr(bitmap_line(9), 0);
+ memset(line, 0xff, m_bitmap.width() * 4);
+ }
LX810LLOG("%s: %s(%02x); abs %d\n", machine().describe_context(), __func__, data, m_pf_pos_abs);
}
@@ -528,7 +534,7 @@ WRITE8_MEMBER( epson_lx810l_t::cr_stepper )
int m_cr_pos_abs_prev = m_cr_pos_abs;
m_cr_stepper->update(data);
- m_cr_pos_abs = 200 - m_cr_stepper->get_absolute_position();
+ m_cr_pos_abs = -m_cr_stepper->get_absolute_position();
if (m_cr_pos_abs > m_cr_pos_abs_prev) {
/* going right */
@@ -552,13 +558,27 @@ WRITE_LINE_MEMBER( epson_lx810l_t::e05a30_ready )
/***************************************************************************
+ Video hardware (simulates paper)
+***************************************************************************/
+
+UINT32 epson_lx810l_t::screen_update_lx810l(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+{
+ int scrolly = -bitmap_line(9);
+ copyscrollbitmap(bitmap, m_bitmap, 0, NULL, 1, &scrolly, cliprect);
+
+ /* draw "printhead" */
+ bitmap.plot_box(m_real_cr_pos + CR_OFFSET - 10, PAPER_HEIGHT - 36, 20, 36, 0x888888);
+
+ return 0;
+}
+
+
+/***************************************************************************
Extended Timer Output
***************************************************************************/
WRITE_LINE_MEMBER( epson_lx810l_t::co0_w )
{
- /* TODO Draw the dots on the paper using this information. */
-
/* Printhead is being fired on !state. */
if (!state) {
/* The firmware expects a 300 microseconds delay between the fire
@@ -572,13 +592,19 @@ WRITE_LINE_MEMBER( epson_lx810l_t::co0_w )
* lines which are being printed in different directions is
* noticeably off in the 20+ years old printer used for testing =).
*/
- LX810LLOG("FIRE0 %d %d %04x\n", m_pf_pos_abs, m_real_cr_pos, m_printhead);
+ if (m_real_cr_pos < m_bitmap.width()) {
+ for (int i = 0; i < 9; i++) {
+ unsigned int y = bitmap_line(i);
+ if ((m_printhead & (1<<(8-i))) != 0)
+ m_bitmap.pix32(y, m_real_cr_pos + CR_OFFSET) = 0x000000;
+ }
+ }
}
}
WRITE_LINE_MEMBER( epson_lx810l_t::co1_w )
{
- m_speaker->level_w(state);
+ m_dac->write_unsigned8(0 - !state);
}
diff --git a/src/emu/bus/centronics/epson_lx810l.h b/src/devices/bus/centronics/epson_lx810l.h
index 71bcc68db6a..4d1b54f0c63 100644
--- a/src/emu/bus/centronics/epson_lx810l.h
+++ b/src/devices/bus/centronics/epson_lx810l.h
@@ -16,9 +16,19 @@
#include "machine/e05a30.h"
#include "machine/eepromser.h"
#include "machine/steppers.h"
-#include "sound/speaker.h"
+#include "sound/dac.h"
+/* The printer starts printing at x offset 44 and stops printing at x
+ * offset 1009, giving a total of 965 printable pixels. Supposedly, the
+ * border at the far right would be at x offset 1053. I've chosen the
+ * width for the paper as 1024, since it's a nicer number than 1053, so
+ * an offset must be used to centralize the pixels.
+ */
+#define CR_OFFSET (-14)
+#define PAPER_WIDTH 1024
+#define PAPER_HEIGHT 576
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -91,6 +101,11 @@ public:
/* Panel buttons */
DECLARE_INPUT_CHANGED_MEMBER(online_sw);
+ /* Video hardware (simulates paper) */
+ UINT32 screen_update_lx810l(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+#define uabs(x) ((x) > 0 ? (x) : -(x))
+ unsigned int bitmap_line(int i) { return ((uabs(m_pf_pos_abs) / 6) + i) % m_bitmap.height(); }
+
protected:
// device-level overrides
virtual void device_start();
@@ -102,8 +117,9 @@ private:
required_device<stepper_device> m_pf_stepper;
required_device<stepper_device> m_cr_stepper;
required_device<eeprom_serial_93cxx_device> m_eeprom;
- required_device<speaker_sound_device> m_speaker;
+ required_device<dac_device> m_dac;
required_device<e05a30_device> m_e05a30;
+ required_device<screen_device> m_screen;
int m_93c06_clk;
int m_93c06_cs;
@@ -114,6 +130,7 @@ private:
int m_real_cr_steps;
int m_real_cr_dir; /* 1 is going right, -1 is going left */
UINT8 m_fakemem;
+ bitmap_rgb32 m_bitmap;
enum {
TIMER_CR
diff --git a/src/devices/bus/centronics/nec_p72.c b/src/devices/bus/centronics/nec_p72.c
new file mode 100644
index 00000000000..8ef53e54513
--- /dev/null
+++ b/src/devices/bus/centronics/nec_p72.c
@@ -0,0 +1,94 @@
+// license:BSD-3-Clause
+// copyright-holders:Ramiro Polla
+
+#include "nec_p72.h"
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type NEC_P72 = &device_creator<nec_p72_t>;
+
+
+//-------------------------------------------------
+// ROM( p72 )
+//-------------------------------------------------
+
+ROM_START( p72 )
+ ROM_REGION(0x100000, "maincpu", 0)
+ ROM_LOAD("p72.2c", 0x000000, 0x100000, CRC(2bc6846f) SHA1(10430f1d3b73ad413d77053515d9d53831a1341b))
+ROM_END
+
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const rom_entry *nec_p72_t::device_rom_region() const
+{
+ return ROM_NAME( p72 );
+}
+
+
+//-------------------------------------------------
+// ADDRESS_MAP( p72_mem )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( p72_mem, AS_PROGRAM, 8, nec_p72_t )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM /* 1Mbit firmware */
+ AM_RANGE(0x100000, 0x1fffff) AM_RAM /* 1Mbit external RAM */ /* TODO might be 2x1Mbit */
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
+// MACHINE_DRIVER( nec_p72 )
+//-------------------------------------------------
+
+static MACHINE_CONFIG_FRAGMENT( nec_p72 )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", V33, XTAL_16MHz/2) /* TODO it's actually a V40 */
+ MCFG_CPU_PROGRAM_MAP(p72_mem)
+
+MACHINE_CONFIG_END
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor nec_p72_t::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( nec_p72 );
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void nec_p72_t::device_start()
+{
+}
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// nec_p72_t - constructor
+//-------------------------------------------------
+
+nec_p72_t::nec_p72_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, NEC_P72, "NEC PinWrite P72", tag, owner, clock, "p72", __FILE__),
+ device_centronics_peripheral_interface(mconfig, *this),
+ m_maincpu(*this, "maincpu")
+{
+}
+
+nec_p72_t::nec_p72_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
+ device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+ device_centronics_peripheral_interface(mconfig, *this),
+ m_maincpu(*this, "maincpu")
+{
+}
diff --git a/src/devices/bus/centronics/nec_p72.h b/src/devices/bus/centronics/nec_p72.h
new file mode 100644
index 00000000000..07335577ed4
--- /dev/null
+++ b/src/devices/bus/centronics/nec_p72.h
@@ -0,0 +1,45 @@
+// license:BSD-3-Clause
+// copyright-holders:Ramiro Polla
+
+#pragma once
+
+#ifndef __NEC_P72__
+#define __NEC_P72__
+
+#include "emu.h"
+#include "ctronics.h"
+#include "cpu/nec/nec.h"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> nec_p72_t
+
+class nec_p72_t : public device_t,
+ public device_centronics_peripheral_interface
+{
+public:
+ // construction/destruction
+ nec_p72_t(const machine_config &mconfig, const char *tag,
+ device_t *owner, UINT32 clock);
+ nec_p72_t(const machine_config &mconfig, device_type type,
+ const char *name, const char *tag, device_t *owner,
+ UINT32 clock, const char *shortname, const char *source);
+
+ // optional information overrides
+ virtual const rom_entry *device_rom_region() const;
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+
+private:
+ required_device<cpu_device> m_maincpu;
+};
+
+// device type definition
+extern const device_type NEC_P72;
+
+#endif
diff --git a/src/emu/bus/centronics/printer.c b/src/devices/bus/centronics/printer.c
index 8d338dc2cbb..8aa924f23d2 100644
--- a/src/emu/bus/centronics/printer.c
+++ b/src/devices/bus/centronics/printer.c
@@ -99,6 +99,7 @@ void centronics_printer_device::device_reset()
output_busy(m_busy);
output_fault(1);
output_ack(1);
+ output_select(1);
}
/*-------------------------------------------------
diff --git a/src/emu/bus/centronics/printer.h b/src/devices/bus/centronics/printer.h
index 7f10fd7e4c2..7f10fd7e4c2 100644
--- a/src/emu/bus/centronics/printer.h
+++ b/src/devices/bus/centronics/printer.h
diff --git a/src/emu/bus/cgenie/expansion/carts.c b/src/devices/bus/cgenie/expansion/carts.c
index f4b23a5cf9d..f4b23a5cf9d 100644
--- a/src/emu/bus/cgenie/expansion/carts.c
+++ b/src/devices/bus/cgenie/expansion/carts.c
diff --git a/src/emu/bus/cgenie/expansion/carts.h b/src/devices/bus/cgenie/expansion/carts.h
index 45bf66a4c90..45bf66a4c90 100644
--- a/src/emu/bus/cgenie/expansion/carts.h
+++ b/src/devices/bus/cgenie/expansion/carts.h
diff --git a/src/emu/bus/cgenie/expansion/expansion.c b/src/devices/bus/cgenie/expansion/expansion.c
index 88a89a32cce..88a89a32cce 100644
--- a/src/emu/bus/cgenie/expansion/expansion.c
+++ b/src/devices/bus/cgenie/expansion/expansion.c
diff --git a/src/emu/bus/cgenie/expansion/expansion.h b/src/devices/bus/cgenie/expansion/expansion.h
index 311da3afa6d..311da3afa6d 100644
--- a/src/emu/bus/cgenie/expansion/expansion.h
+++ b/src/devices/bus/cgenie/expansion/expansion.h
diff --git a/src/emu/bus/cgenie/expansion/floppy.c b/src/devices/bus/cgenie/expansion/floppy.c
index 6941ae33ad3..6941ae33ad3 100644
--- a/src/emu/bus/cgenie/expansion/floppy.c
+++ b/src/devices/bus/cgenie/expansion/floppy.c
diff --git a/src/emu/bus/cgenie/expansion/floppy.h b/src/devices/bus/cgenie/expansion/floppy.h
index 67926ba9954..67926ba9954 100644
--- a/src/emu/bus/cgenie/expansion/floppy.h
+++ b/src/devices/bus/cgenie/expansion/floppy.h
diff --git a/src/emu/bus/cgenie/parallel/carts.c b/src/devices/bus/cgenie/parallel/carts.c
index 61a6380117f..61a6380117f 100644
--- a/src/emu/bus/cgenie/parallel/carts.c
+++ b/src/devices/bus/cgenie/parallel/carts.c
diff --git a/src/emu/bus/cgenie/parallel/carts.h b/src/devices/bus/cgenie/parallel/carts.h
index 29c092b9d0a..29c092b9d0a 100644
--- a/src/emu/bus/cgenie/parallel/carts.h
+++ b/src/devices/bus/cgenie/parallel/carts.h
diff --git a/src/emu/bus/cgenie/parallel/joystick.c b/src/devices/bus/cgenie/parallel/joystick.c
index de520ba0669..de520ba0669 100644
--- a/src/emu/bus/cgenie/parallel/joystick.c
+++ b/src/devices/bus/cgenie/parallel/joystick.c
diff --git a/src/emu/bus/cgenie/parallel/joystick.h b/src/devices/bus/cgenie/parallel/joystick.h
index 28be43b00e6..28be43b00e6 100644
--- a/src/emu/bus/cgenie/parallel/joystick.h
+++ b/src/devices/bus/cgenie/parallel/joystick.h
diff --git a/src/emu/bus/cgenie/parallel/parallel.c b/src/devices/bus/cgenie/parallel/parallel.c
index e948af9c00a..e948af9c00a 100644
--- a/src/emu/bus/cgenie/parallel/parallel.c
+++ b/src/devices/bus/cgenie/parallel/parallel.c
diff --git a/src/emu/bus/cgenie/parallel/parallel.h b/src/devices/bus/cgenie/parallel/parallel.h
index 4976e5caaf9..4976e5caaf9 100644
--- a/src/emu/bus/cgenie/parallel/parallel.h
+++ b/src/devices/bus/cgenie/parallel/parallel.h
diff --git a/src/emu/bus/cgenie/parallel/printer.c b/src/devices/bus/cgenie/parallel/printer.c
index f9963844dd5..f9963844dd5 100644
--- a/src/emu/bus/cgenie/parallel/printer.c
+++ b/src/devices/bus/cgenie/parallel/printer.c
diff --git a/src/emu/bus/cgenie/parallel/printer.h b/src/devices/bus/cgenie/parallel/printer.h
index 52479c73d5c..52479c73d5c 100644
--- a/src/emu/bus/cgenie/parallel/printer.h
+++ b/src/devices/bus/cgenie/parallel/printer.h
diff --git a/src/emu/bus/chanf/rom.c b/src/devices/bus/chanf/rom.c
index 12beebafa4b..12beebafa4b 100644
--- a/src/emu/bus/chanf/rom.c
+++ b/src/devices/bus/chanf/rom.c
diff --git a/src/emu/bus/chanf/rom.h b/src/devices/bus/chanf/rom.h
index 5a13e38b2df..5a13e38b2df 100644
--- a/src/emu/bus/chanf/rom.h
+++ b/src/devices/bus/chanf/rom.h
diff --git a/src/emu/bus/chanf/slot.c b/src/devices/bus/chanf/slot.c
index 3bb58417a9c..3bb58417a9c 100644
--- a/src/emu/bus/chanf/slot.c
+++ b/src/devices/bus/chanf/slot.c
diff --git a/src/emu/bus/chanf/slot.h b/src/devices/bus/chanf/slot.h
index 98276b81b9f..98276b81b9f 100644
--- a/src/emu/bus/chanf/slot.h
+++ b/src/devices/bus/chanf/slot.h
diff --git a/src/emu/bus/coco/coco_232.c b/src/devices/bus/coco/coco_232.c
index a1b9c673c4b..a1b9c673c4b 100644
--- a/src/emu/bus/coco/coco_232.c
+++ b/src/devices/bus/coco/coco_232.c
diff --git a/src/emu/bus/coco/coco_232.h b/src/devices/bus/coco/coco_232.h
index 362e4928de6..362e4928de6 100644
--- a/src/emu/bus/coco/coco_232.h
+++ b/src/devices/bus/coco/coco_232.h
diff --git a/src/emu/bus/coco/coco_dwsock.c b/src/devices/bus/coco/coco_dwsock.c
index 0c8ee07bd42..0c8ee07bd42 100644
--- a/src/emu/bus/coco/coco_dwsock.c
+++ b/src/devices/bus/coco/coco_dwsock.c
diff --git a/src/emu/bus/coco/coco_dwsock.h b/src/devices/bus/coco/coco_dwsock.h
index 21b0ceb2170..21b0ceb2170 100644
--- a/src/emu/bus/coco/coco_dwsock.h
+++ b/src/devices/bus/coco/coco_dwsock.h
diff --git a/src/emu/bus/coco/coco_fdc.c b/src/devices/bus/coco/coco_fdc.c
index bf165df42f5..bf165df42f5 100644
--- a/src/emu/bus/coco/coco_fdc.c
+++ b/src/devices/bus/coco/coco_fdc.c
diff --git a/src/emu/bus/coco/coco_fdc.h b/src/devices/bus/coco/coco_fdc.h
index 8773a48bea4..8773a48bea4 100644
--- a/src/emu/bus/coco/coco_fdc.h
+++ b/src/devices/bus/coco/coco_fdc.h
diff --git a/src/emu/bus/coco/coco_multi.c b/src/devices/bus/coco/coco_multi.c
index 0e488c582d8..0e488c582d8 100644
--- a/src/emu/bus/coco/coco_multi.c
+++ b/src/devices/bus/coco/coco_multi.c
diff --git a/src/emu/bus/coco/coco_multi.h b/src/devices/bus/coco/coco_multi.h
index 6c894b6377d..6c894b6377d 100644
--- a/src/emu/bus/coco/coco_multi.h
+++ b/src/devices/bus/coco/coco_multi.h
diff --git a/src/emu/bus/coco/coco_orch90.c b/src/devices/bus/coco/coco_orch90.c
index 83f2acaee54..83f2acaee54 100644
--- a/src/emu/bus/coco/coco_orch90.c
+++ b/src/devices/bus/coco/coco_orch90.c
diff --git a/src/emu/bus/coco/coco_orch90.h b/src/devices/bus/coco/coco_orch90.h
index d96c99a911a..d96c99a911a 100644
--- a/src/emu/bus/coco/coco_orch90.h
+++ b/src/devices/bus/coco/coco_orch90.h
diff --git a/src/emu/bus/coco/coco_pak.c b/src/devices/bus/coco/coco_pak.c
index 72729f156a4..72729f156a4 100644
--- a/src/emu/bus/coco/coco_pak.c
+++ b/src/devices/bus/coco/coco_pak.c
diff --git a/src/emu/bus/coco/coco_pak.h b/src/devices/bus/coco/coco_pak.h
index 50df99ea4d5..50df99ea4d5 100644
--- a/src/emu/bus/coco/coco_pak.h
+++ b/src/devices/bus/coco/coco_pak.h
diff --git a/src/emu/bus/coco/cococart.c b/src/devices/bus/coco/cococart.c
index 11687681810..11687681810 100644
--- a/src/emu/bus/coco/cococart.c
+++ b/src/devices/bus/coco/cococart.c
diff --git a/src/emu/bus/coco/cococart.h b/src/devices/bus/coco/cococart.h
index a583935b5a2..a583935b5a2 100644
--- a/src/emu/bus/coco/cococart.h
+++ b/src/devices/bus/coco/cococart.h
diff --git a/src/emu/bus/coleco/ctrl.c b/src/devices/bus/coleco/ctrl.c
index 575276ee231..575276ee231 100644
--- a/src/emu/bus/coleco/ctrl.c
+++ b/src/devices/bus/coleco/ctrl.c
diff --git a/src/emu/bus/coleco/ctrl.h b/src/devices/bus/coleco/ctrl.h
index dc45d18c1aa..dc45d18c1aa 100644
--- a/src/emu/bus/coleco/ctrl.h
+++ b/src/devices/bus/coleco/ctrl.h
diff --git a/src/emu/bus/coleco/exp.c b/src/devices/bus/coleco/exp.c
index e8be5dfe15d..c981406017e 100644
--- a/src/emu/bus/coleco/exp.c
+++ b/src/devices/bus/coleco/exp.c
@@ -114,6 +114,15 @@ bool colecovision_cartridge_slot_device::call_softlist_load(software_list_device
void colecovision_cartridge_slot_device::get_default_card_software(std::string &result)
{
+ if (open_image_file(mconfig().options()))
+ {
+ UINT32 length = core_fsize(m_file);
+ if (length == 0x100000 || length == 0x200000)
+ {
+ software_get_default_slot(result, "xin1");
+ return;
+ }
+ }
software_get_default_slot(result, "standard");
}
@@ -138,8 +147,10 @@ UINT8 colecovision_cartridge_slot_device::bd_r(address_space &space, offs_t offs
//-------------------------------------------------
#include "std.h"
+#include "xin1.h"
SLOT_INTERFACE_START( colecovision_cartridges )
// the following need ROMs from the software list
SLOT_INTERFACE_INTERNAL("standard", COLECOVISION_STANDARD)
+ SLOT_INTERFACE_INTERNAL("xin1", COLECOVISION_XIN1)
SLOT_INTERFACE_END
diff --git a/src/emu/bus/coleco/exp.h b/src/devices/bus/coleco/exp.h
index 882bb04b659..882bb04b659 100644
--- a/src/emu/bus/coleco/exp.h
+++ b/src/devices/bus/coleco/exp.h
diff --git a/src/emu/bus/coleco/hand.c b/src/devices/bus/coleco/hand.c
index 058f06a3711..058f06a3711 100644
--- a/src/emu/bus/coleco/hand.c
+++ b/src/devices/bus/coleco/hand.c
diff --git a/src/emu/bus/coleco/hand.h b/src/devices/bus/coleco/hand.h
index d57ea3ea212..d57ea3ea212 100644
--- a/src/emu/bus/coleco/hand.h
+++ b/src/devices/bus/coleco/hand.h
diff --git a/src/emu/bus/coleco/sac.c b/src/devices/bus/coleco/sac.c
index 42ef14ca909..42ef14ca909 100644
--- a/src/emu/bus/coleco/sac.c
+++ b/src/devices/bus/coleco/sac.c
diff --git a/src/emu/bus/coleco/sac.h b/src/devices/bus/coleco/sac.h
index b4bf3b09111..b4bf3b09111 100644
--- a/src/emu/bus/coleco/sac.h
+++ b/src/devices/bus/coleco/sac.h
diff --git a/src/emu/bus/coleco/std.c b/src/devices/bus/coleco/std.c
index f66a0463eae..f66a0463eae 100644
--- a/src/emu/bus/coleco/std.c
+++ b/src/devices/bus/coleco/std.c
diff --git a/src/emu/bus/coleco/std.h b/src/devices/bus/coleco/std.h
index ee0a6e24e9a..ee0a6e24e9a 100644
--- a/src/emu/bus/coleco/std.h
+++ b/src/devices/bus/coleco/std.h
diff --git a/src/devices/bus/coleco/xin1.c b/src/devices/bus/coleco/xin1.c
new file mode 100644
index 00000000000..e46b65eeadd
--- /dev/null
+++ b/src/devices/bus/coleco/xin1.c
@@ -0,0 +1,71 @@
+// license:BSD-3-Clause
+// copyright-holders:Wilbert Pol
+/**********************************************************************
+
+ ColecoVision X-in-1 cartridge emulation
+
+**********************************************************************/
+
+#include "xin1.h"
+
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type COLECOVISION_XIN1 = &device_creator<colecovision_xin1_cartridge_device>;
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// colecovision_xin1_cartridge_device - constructor
+//-------------------------------------------------
+
+colecovision_xin1_cartridge_device::colecovision_xin1_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, COLECOVISION_XIN1, "ColecoVision X-in-1 cartridge", tag, owner, clock, "colecovision_xin1", __FILE__),
+ device_colecovision_cartridge_interface(mconfig, *this),
+ m_current_offset(0)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void colecovision_xin1_cartridge_device::device_start()
+{
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void colecovision_xin1_cartridge_device::device_reset()
+{
+ m_current_offset = m_rom_size - 0x8000;
+}
+
+
+//-------------------------------------------------
+// read - cartridge data read
+//-------------------------------------------------
+
+UINT8 colecovision_xin1_cartridge_device::bd_r(address_space &space, offs_t offset, UINT8 data, int _8000, int _a000, int _c000, int _e000)
+{
+ if (!_8000 || !_a000 || !_c000 || !_e000)
+ {
+ data = m_rom[m_current_offset + offset];
+ if (!_e000 && offset >= 0x7fc0) {
+ m_current_offset = (0x8000 * (offset - 0x7fc0)) % m_rom_size;
+ }
+ }
+
+ return data;
+}
diff --git a/src/devices/bus/coleco/xin1.h b/src/devices/bus/coleco/xin1.h
new file mode 100644
index 00000000000..79a940c646f
--- /dev/null
+++ b/src/devices/bus/coleco/xin1.h
@@ -0,0 +1,48 @@
+// license:BSD-3-Clause
+// copyright-holders:Wilbert Pol
+/**********************************************************************
+
+ ColecoVision X-in-1 cartridge emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __COLECOVISION_XIN1_CARTRIDGE__
+#define __COLECOVISION_XIN1_CARTRIDGE__
+
+#include "exp.h"
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> colecovision_xin1_cartridge_device
+
+class colecovision_xin1_cartridge_device : public device_t,
+ public device_colecovision_cartridge_interface
+{
+public:
+ // construction/destruction
+ colecovision_xin1_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ // device_colecovision_expansion_card_interface overrides
+ virtual UINT8 bd_r(address_space &space, offs_t offset, UINT8 data, int _8000, int _a000, int _c000, int _e000);
+
+private:
+ UINT32 m_current_offset;
+};
+
+
+// device type definition
+extern const device_type COLECOVISION_XIN1;
+
+
+#endif
diff --git a/src/emu/bus/compucolor/floppy.c b/src/devices/bus/compucolor/floppy.c
index 7fa7e678dc2..7fa7e678dc2 100644
--- a/src/emu/bus/compucolor/floppy.c
+++ b/src/devices/bus/compucolor/floppy.c
diff --git a/src/emu/bus/compucolor/floppy.h b/src/devices/bus/compucolor/floppy.h
index f229e96c3a9..f229e96c3a9 100644
--- a/src/emu/bus/compucolor/floppy.h
+++ b/src/devices/bus/compucolor/floppy.h
diff --git a/src/emu/bus/comx35/clm.c b/src/devices/bus/comx35/clm.c
index b9cc57b836f..b9cc57b836f 100644
--- a/src/emu/bus/comx35/clm.c
+++ b/src/devices/bus/comx35/clm.c
diff --git a/src/emu/bus/comx35/clm.h b/src/devices/bus/comx35/clm.h
index c64e57956bd..c64e57956bd 100644
--- a/src/emu/bus/comx35/clm.h
+++ b/src/devices/bus/comx35/clm.h
diff --git a/src/emu/bus/comx35/eprom.c b/src/devices/bus/comx35/eprom.c
index 56be84b4902..56be84b4902 100644
--- a/src/emu/bus/comx35/eprom.c
+++ b/src/devices/bus/comx35/eprom.c
diff --git a/src/emu/bus/comx35/eprom.h b/src/devices/bus/comx35/eprom.h
index f3b03f42367..f3b03f42367 100644
--- a/src/emu/bus/comx35/eprom.h
+++ b/src/devices/bus/comx35/eprom.h
diff --git a/src/emu/bus/comx35/exp.c b/src/devices/bus/comx35/exp.c
index b0ff7aa77c3..b0ff7aa77c3 100644
--- a/src/emu/bus/comx35/exp.c
+++ b/src/devices/bus/comx35/exp.c
diff --git a/src/emu/bus/comx35/exp.h b/src/devices/bus/comx35/exp.h
index df4f7fffb68..df4f7fffb68 100644
--- a/src/emu/bus/comx35/exp.h
+++ b/src/devices/bus/comx35/exp.h
diff --git a/src/emu/bus/comx35/expbox.c b/src/devices/bus/comx35/expbox.c
index 7e4e9799e29..7e4e9799e29 100644
--- a/src/emu/bus/comx35/expbox.c
+++ b/src/devices/bus/comx35/expbox.c
diff --git a/src/emu/bus/comx35/expbox.h b/src/devices/bus/comx35/expbox.h
index 6863f2c1339..6863f2c1339 100644
--- a/src/emu/bus/comx35/expbox.h
+++ b/src/devices/bus/comx35/expbox.h
diff --git a/src/emu/bus/comx35/fdc.c b/src/devices/bus/comx35/fdc.c
index 0c83d5bed29..0c83d5bed29 100644
--- a/src/emu/bus/comx35/fdc.c
+++ b/src/devices/bus/comx35/fdc.c
diff --git a/src/emu/bus/comx35/fdc.h b/src/devices/bus/comx35/fdc.h
index ce1a71c46a2..ce1a71c46a2 100644
--- a/src/emu/bus/comx35/fdc.h
+++ b/src/devices/bus/comx35/fdc.h
diff --git a/src/emu/bus/comx35/joycard.c b/src/devices/bus/comx35/joycard.c
index 2408693f1b8..2408693f1b8 100644
--- a/src/emu/bus/comx35/joycard.c
+++ b/src/devices/bus/comx35/joycard.c
diff --git a/src/emu/bus/comx35/joycard.h b/src/devices/bus/comx35/joycard.h
index be7bd63e528..be7bd63e528 100644
--- a/src/emu/bus/comx35/joycard.h
+++ b/src/devices/bus/comx35/joycard.h
diff --git a/src/emu/bus/comx35/printer.c b/src/devices/bus/comx35/printer.c
index 2f36fffd9bd..2f36fffd9bd 100644
--- a/src/emu/bus/comx35/printer.c
+++ b/src/devices/bus/comx35/printer.c
diff --git a/src/emu/bus/comx35/printer.h b/src/devices/bus/comx35/printer.h
index f67997b19ea..f67997b19ea 100644
--- a/src/emu/bus/comx35/printer.h
+++ b/src/devices/bus/comx35/printer.h
diff --git a/src/emu/bus/comx35/ram.c b/src/devices/bus/comx35/ram.c
index 0a2caafa1da..0a2caafa1da 100644
--- a/src/emu/bus/comx35/ram.c
+++ b/src/devices/bus/comx35/ram.c
diff --git a/src/emu/bus/comx35/ram.h b/src/devices/bus/comx35/ram.h
index 3618d6e2b4b..3618d6e2b4b 100644
--- a/src/emu/bus/comx35/ram.h
+++ b/src/devices/bus/comx35/ram.h
diff --git a/src/emu/bus/comx35/thermal.c b/src/devices/bus/comx35/thermal.c
index e74b62978d6..e74b62978d6 100644
--- a/src/emu/bus/comx35/thermal.c
+++ b/src/devices/bus/comx35/thermal.c
diff --git a/src/emu/bus/comx35/thermal.h b/src/devices/bus/comx35/thermal.h
index 8314039301c..8314039301c 100644
--- a/src/emu/bus/comx35/thermal.h
+++ b/src/devices/bus/comx35/thermal.h
diff --git a/src/emu/bus/cpc/amdrum.c b/src/devices/bus/cpc/amdrum.c
index 8bf9fa8ad34..8bf9fa8ad34 100644
--- a/src/emu/bus/cpc/amdrum.c
+++ b/src/devices/bus/cpc/amdrum.c
diff --git a/src/emu/bus/cpc/amdrum.h b/src/devices/bus/cpc/amdrum.h
index 5040e7d4457..5040e7d4457 100644
--- a/src/emu/bus/cpc/amdrum.h
+++ b/src/devices/bus/cpc/amdrum.h
diff --git a/src/emu/bus/cpc/brunword4.c b/src/devices/bus/cpc/brunword4.c
index cd3ab420349..cd3ab420349 100644
--- a/src/emu/bus/cpc/brunword4.c
+++ b/src/devices/bus/cpc/brunword4.c
diff --git a/src/emu/bus/cpc/brunword4.h b/src/devices/bus/cpc/brunword4.h
index 8b66afaefae..8b66afaefae 100644
--- a/src/emu/bus/cpc/brunword4.h
+++ b/src/devices/bus/cpc/brunword4.h
diff --git a/src/emu/bus/cpc/cpc_pds.c b/src/devices/bus/cpc/cpc_pds.c
index b1453d9338b..b1453d9338b 100644
--- a/src/emu/bus/cpc/cpc_pds.c
+++ b/src/devices/bus/cpc/cpc_pds.c
diff --git a/src/emu/bus/cpc/cpc_pds.h b/src/devices/bus/cpc/cpc_pds.h
index 12100e8acbe..12100e8acbe 100644
--- a/src/emu/bus/cpc/cpc_pds.h
+++ b/src/devices/bus/cpc/cpc_pds.h
diff --git a/src/emu/bus/cpc/cpc_rom.c b/src/devices/bus/cpc/cpc_rom.c
index 36ccb82e867..36ccb82e867 100644
--- a/src/emu/bus/cpc/cpc_rom.c
+++ b/src/devices/bus/cpc/cpc_rom.c
diff --git a/src/emu/bus/cpc/cpc_rom.h b/src/devices/bus/cpc/cpc_rom.h
index 06908b14539..06908b14539 100644
--- a/src/emu/bus/cpc/cpc_rom.h
+++ b/src/devices/bus/cpc/cpc_rom.h
diff --git a/src/emu/bus/cpc/cpc_rs232.c b/src/devices/bus/cpc/cpc_rs232.c
index 8dba63da31c..8dba63da31c 100644
--- a/src/emu/bus/cpc/cpc_rs232.c
+++ b/src/devices/bus/cpc/cpc_rs232.c
diff --git a/src/emu/bus/cpc/cpc_rs232.h b/src/devices/bus/cpc/cpc_rs232.h
index b11960c01f9..b11960c01f9 100644
--- a/src/emu/bus/cpc/cpc_rs232.h
+++ b/src/devices/bus/cpc/cpc_rs232.h
diff --git a/src/emu/bus/cpc/cpc_ssa1.c b/src/devices/bus/cpc/cpc_ssa1.c
index 0c638b5cf37..0c638b5cf37 100644
--- a/src/emu/bus/cpc/cpc_ssa1.c
+++ b/src/devices/bus/cpc/cpc_ssa1.c
diff --git a/src/emu/bus/cpc/cpc_ssa1.h b/src/devices/bus/cpc/cpc_ssa1.h
index 32c311f5b65..32c311f5b65 100644
--- a/src/emu/bus/cpc/cpc_ssa1.h
+++ b/src/devices/bus/cpc/cpc_ssa1.h
diff --git a/src/emu/bus/cpc/cpcexp.c b/src/devices/bus/cpc/cpcexp.c
index a6d8d77db16..a6d8d77db16 100644
--- a/src/emu/bus/cpc/cpcexp.c
+++ b/src/devices/bus/cpc/cpcexp.c
diff --git a/src/emu/bus/cpc/cpcexp.h b/src/devices/bus/cpc/cpcexp.h
index 57ebba1e063..1a61dc2b409 100644
--- a/src/emu/bus/cpc/cpcexp.h
+++ b/src/devices/bus/cpc/cpcexp.h
@@ -31,6 +31,16 @@
* RAMDIS 45 46 CURSOR
* L.PEN 47 48 _EXP
* GND 49 50 CLOCK
+ *
+ * Aleste 520EX expansion port is 62-pin. Same as the CPC above, except that pin 40 is not connected, plus the following:
+ *
+ * MAP14 A26 B26 MAP15
+ * MAP16 A27 B27 MAP17
+ * MAP18 A28 B28 MAPBLK
+ * _INTA A29 B29 _DISP
+ * Agnd A30 B30 _CPU
+ * Aucc A31 B31 HIGH
+ *
*/
#pragma once
diff --git a/src/emu/bus/cpc/ddi1.c b/src/devices/bus/cpc/ddi1.c
index b2440021310..2f9eef38a77 100644
--- a/src/emu/bus/cpc/ddi1.c
+++ b/src/devices/bus/cpc/ddi1.c
@@ -23,7 +23,7 @@ SLOT_INTERFACE_END
//-------------------------------------------------
ROM_START( cpc_ddi1 )
- ROM_REGION( 0x4000, "exp_rom", 0 )
+ ROM_REGION( 0x4000, "disc_rom", 0 )
ROM_LOAD("cpcados.rom", 0x0000, 0x4000, CRC(1fe22ecd) SHA1(39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb))
ROM_END
@@ -80,6 +80,7 @@ void cpc_ddi1_device::device_start()
space.install_write_handler(0xfa7e,0xfa7f,0,0,write8_delegate(FUNC(cpc_ddi1_device::motor_w),this));
space.install_readwrite_handler(0xfb7e,0xfb7f,0,0,read8_delegate(FUNC(cpc_ddi1_device::fdc_r),this),write8_delegate(FUNC(cpc_ddi1_device::fdc_w),this));
+ space.install_write_handler(0xdf00,0xdfff,0,0,write8_delegate(FUNC(cpc_ddi1_device::rombank_w),this));
}
//-------------------------------------------------
@@ -88,6 +89,7 @@ void cpc_ddi1_device::device_start()
void cpc_ddi1_device::device_reset()
{
+ m_rom_active = false;
}
WRITE8_MEMBER(cpc_ddi1_device::motor_w)
@@ -125,7 +127,7 @@ WRITE8_MEMBER(cpc_ddi1_device::fdc_w)
READ8_MEMBER(cpc_ddi1_device::fdc_r)
{
UINT8 data = 0xff;
-
+
switch(offset)
{
case 0x00:
@@ -138,3 +140,21 @@ READ8_MEMBER(cpc_ddi1_device::fdc_r)
return data;
}
+WRITE8_MEMBER(cpc_ddi1_device::rombank_w)
+{
+ if(data == 0x07)
+ m_rom_active = true;
+ else
+ m_rom_active = false;
+ m_slot->rom_select(space,0,data);
+}
+
+void cpc_ddi1_device::set_mapping()
+{
+ if(m_rom_active)
+ {
+ UINT8* ROM = memregion("disc_rom")->base();
+ membank(":bank7")->set_base(ROM);
+ membank(":bank8")->set_base(ROM+0x2000);
+ }
+}
diff --git a/src/emu/bus/cpc/ddi1.h b/src/devices/bus/cpc/ddi1.h
index 8f813e8c09a..fe78153c543 100644
--- a/src/emu/bus/cpc/ddi1.h
+++ b/src/devices/bus/cpc/ddi1.h
@@ -25,10 +25,12 @@ public:
// optional information overrides
virtual const rom_entry *device_rom_region() const;
virtual machine_config_constructor device_mconfig_additions() const;
+ virtual void set_mapping();
DECLARE_WRITE8_MEMBER(motor_w);
DECLARE_WRITE8_MEMBER(fdc_w);
DECLARE_READ8_MEMBER(fdc_r);
+ DECLARE_WRITE8_MEMBER(rombank_w);
protected:
// device-level overrides
virtual void device_start();
@@ -39,6 +41,8 @@ private:
required_device<upd765_family_device> m_fdc;
required_device<floppy_connector> m_connector;
+
+ bool m_rom_active;
};
// device type definition
diff --git a/src/emu/bus/cpc/hd20.c b/src/devices/bus/cpc/hd20.c
index a6cb2772719..a6cb2772719 100644
--- a/src/emu/bus/cpc/hd20.c
+++ b/src/devices/bus/cpc/hd20.c
diff --git a/src/emu/bus/cpc/hd20.h b/src/devices/bus/cpc/hd20.h
index 0926e6bd5be..0926e6bd5be 100644
--- a/src/emu/bus/cpc/hd20.h
+++ b/src/devices/bus/cpc/hd20.h
diff --git a/src/devices/bus/cpc/magicsound.c b/src/devices/bus/cpc/magicsound.c
new file mode 100644
index 00000000000..16e4f7d51b8
--- /dev/null
+++ b/src/devices/bus/cpc/magicsound.c
@@ -0,0 +1,189 @@
+// license:BSD-3-Clause
+// copyright-holders:Barry Rodewald
+/*
+ * magicsound.c
+ *
+ * Magic Sound Board for the Aleste 520EX
+ *
+ */
+
+#include "emu.h"
+#include "magicsound.h"
+#include "includes/amstrad.h"
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type AL_MAGICSOUND = &device_creator<al_magicsound_device>;
+
+
+static MACHINE_CONFIG_FRAGMENT( al_magicsound )
+ MCFG_DEVICE_ADD( "dmac", AM9517A, XTAL_4MHz ) // CLK from expansion port
+ // According to the schematics, the TC pin (EOP on western chips) is connected to NMI on the expansion port.
+ // NMIs seem to occur too quickly when this is active, so either EOP is not triggered at the correct time, or
+ // the K1810WT37 is different to the i8237/AM9517A
+ //MCFG_I8237_OUT_EOP_CB(DEVWRITELINE("^", cpc_expansion_slot_device, nmi_w)) // MCFG_DEVCB_INVERT
+ MCFG_I8237_OUT_HREQ_CB(DEVWRITELINE("dmac", am9517a_device, hack_w))
+ MCFG_I8237_IN_MEMR_CB(READ8(al_magicsound_device,dma_read_byte))
+ MCFG_I8237_OUT_IOW_0_CB(WRITE8(al_magicsound_device,dma_write_byte))
+ MCFG_I8237_OUT_IOW_1_CB(WRITE8(al_magicsound_device,dma_write_byte))
+ MCFG_I8237_OUT_IOW_2_CB(WRITE8(al_magicsound_device,dma_write_byte))
+ MCFG_I8237_OUT_IOW_3_CB(WRITE8(al_magicsound_device,dma_write_byte))
+ MCFG_I8237_OUT_DACK_0_CB(WRITELINE(al_magicsound_device, dack0_w))
+ MCFG_I8237_OUT_DACK_1_CB(WRITELINE(al_magicsound_device, dack1_w))
+ MCFG_I8237_OUT_DACK_2_CB(WRITELINE(al_magicsound_device, dack2_w))
+ MCFG_I8237_OUT_DACK_3_CB(WRITELINE(al_magicsound_device, dack3_w))
+
+ // Timing does not seem to be correct.
+ // According to the schematics, the clock is from the clock pin on the expansion port (4MHz), and
+ // passes through an inverter to each CLK pin on both timers. This seems to be too fast.
+ // Timer outputs to SAM0/1/2/3 are sample clocks for each sound channel, D/A0 is the low bit of the channel select.
+ MCFG_DEVICE_ADD("timer1", PIT8254, 0)
+ MCFG_PIT8253_CLK0(XTAL_4MHz)
+ MCFG_PIT8253_OUT0_HANDLER(WRITELINE(al_magicsound_device,sam0_w))
+ MCFG_PIT8253_CLK1(XTAL_4MHz)
+ MCFG_PIT8253_OUT1_HANDLER(WRITELINE(al_magicsound_device,sam1_w))
+ MCFG_PIT8253_CLK2(XTAL_4MHz)
+ MCFG_PIT8253_OUT2_HANDLER(WRITELINE(al_magicsound_device,sam2_w))
+
+ MCFG_DEVICE_ADD("timer2", PIT8254, 0)
+ MCFG_PIT8253_CLK0(XTAL_4MHz)
+ MCFG_PIT8253_OUT0_HANDLER(WRITELINE(al_magicsound_device,sam3_w))
+ MCFG_PIT8253_CLK1(XTAL_4MHz)
+ MCFG_PIT8253_OUT1_HANDLER(WRITELINE(al_magicsound_device,da0_w))
+ MCFG_PIT8253_CLK2(XTAL_4MHz)
+
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_DAC_ADD("dac1")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ // no pass-through(?)
+MACHINE_CONFIG_END
+
+machine_config_constructor al_magicsound_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( al_magicsound );
+}
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+al_magicsound_device::al_magicsound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, AL_MAGICSOUND, "Magic Sound Board", tag, owner, clock, "al_magicsound", __FILE__),
+ device_cpc_expansion_card_interface(mconfig, *this),
+ m_dac1(*this,"dac1"),
+ m_dmac(*this,"dmac"),
+ m_timer1(*this,"timer1"),
+ m_timer2(*this,"timer2")
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void al_magicsound_device::device_start()
+{
+ device_t* cpu = machine().device("maincpu");
+ address_space& space = cpu->memory().space(AS_IO);
+ m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner());
+
+ space.install_readwrite_handler(0xf8d0,0xf8df,0,0,read8_delegate(FUNC(al_magicsound_device::dmac_r),this),write8_delegate(FUNC(al_magicsound_device::dmac_w),this));
+ space.install_write_handler(0xf9d0,0xf9df,0,0,write8_delegate(FUNC(al_magicsound_device::timer_w),this));
+ space.install_write_handler(0xfad0,0xfadf,0,0,write8_delegate(FUNC(al_magicsound_device::volume_w),this));
+ space.install_write_handler(0xfbd0,0xfbdf,0,0,write8_delegate(FUNC(al_magicsound_device::mapper_w),this));
+
+ m_ramptr = machine().device<ram_device>(":" RAM_TAG);
+
+ for(int x=0;x<4;x++)
+ {
+ save_item(NAME(m_output[x]),x);
+ }
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void al_magicsound_device::device_reset()
+{
+ m_current_channel = -1;
+ m_current_output = 0;
+ set_timer_gate(false);
+}
+
+READ8_MEMBER(al_magicsound_device::dmac_r)
+{
+ return m_dmac->read(space,offset);
+}
+
+WRITE8_MEMBER(al_magicsound_device::dmac_w)
+{
+ m_dmac->write(space,offset,data);
+}
+
+WRITE8_MEMBER(al_magicsound_device::timer_w)
+{
+ // can both PITs be selected at the same time?
+ if(offset & 0x08)
+ m_timer1->write(space,offset & 0x03,data);
+ if(offset & 0x04)
+ m_timer2->write(space,offset & 0x03,data);
+}
+
+WRITE8_MEMBER(al_magicsound_device::volume_w)
+{
+ m_volume[offset & 0x03] = data & 0x3f;
+}
+
+WRITE8_MEMBER(al_magicsound_device::mapper_w)
+{
+ UINT8 channel = (offset & 0x0c) >> 2;
+ UINT8 page = offset & 0x03;
+ m_page[channel][page] = (~(data) & 0x3f) * 0x4000;
+ set_timer_gate(true);
+}
+
+WRITE_LINE_MEMBER(al_magicsound_device::da0_w)
+{
+ m_dac1->write_unsigned8(m_output[m_current_output++]);
+ if(m_current_output > 3)
+ m_current_output = 0;
+}
+
+WRITE_LINE_MEMBER(al_magicsound_device::dack0_w) { m_dack[0] = state; }
+WRITE_LINE_MEMBER(al_magicsound_device::dack1_w) { m_dack[1] = state; }
+WRITE_LINE_MEMBER(al_magicsound_device::dack2_w) { m_dack[2] = state; }
+WRITE_LINE_MEMBER(al_magicsound_device::dack3_w) { m_dack[3] = state; }
+
+WRITE_LINE_MEMBER(al_magicsound_device::sam0_w) { m_current_channel = 0; if(m_dack[0] && state) m_dmac->dreq0_w(1); }
+WRITE_LINE_MEMBER(al_magicsound_device::sam1_w) { m_current_channel = 1; if(m_dack[1] && state) m_dmac->dreq1_w(1); }
+WRITE_LINE_MEMBER(al_magicsound_device::sam2_w) { m_current_channel = 2; if(m_dack[2] && state) m_dmac->dreq2_w(1); }
+WRITE_LINE_MEMBER(al_magicsound_device::sam3_w) { m_current_channel = 3; if(m_dack[3] && state) m_dmac->dreq3_w(1); }
+
+READ8_MEMBER(al_magicsound_device::dma_read_byte)
+{
+ UINT8 ret = 0xff;
+ UINT8 page = (offset & 0xc000) >> 14;
+
+ if(m_current_channel != -1)
+ ret = m_ramptr->read(m_page[m_current_channel][page] + (offset & 0x3fff));
+ return ret;
+}
+
+WRITE8_MEMBER(al_magicsound_device::dma_write_byte)
+{
+ m_output[m_current_channel] = data;
+}
+
+void al_magicsound_device::set_timer_gate(bool state)
+{
+ m_timer1->write_gate0(state);
+ m_timer1->write_gate1(state);
+ m_timer1->write_gate2(state);
+ m_timer2->write_gate0(state);
+ m_timer2->write_gate1(state);
+ m_timer2->write_gate2(state);
+}
diff --git a/src/devices/bus/cpc/magicsound.h b/src/devices/bus/cpc/magicsound.h
new file mode 100644
index 00000000000..588ead99b40
--- /dev/null
+++ b/src/devices/bus/cpc/magicsound.h
@@ -0,0 +1,91 @@
+// license:BSD-3-Clause
+// copyright-holders:Barry Rodewald
+/*
+ * magicsound.h
+ *
+ * Magic Sound Board for the Aleste 520EX
+ *
+ * DMA-based 4-channel sound board
+ *
+ * 1x K1810WT37 DMA controller (i8237/AM9517A)
+ * 2x K1810WT54 programmable timers (i8254)
+ * 1x K1118PA1 DAC (MC10318)
+ *
+ * I/O Ports:
+ * FxDx: selects the board
+ * F8Dx: DMA controller (R/w)
+ * F9Dx: PIT timers (A2 active for channels 0-2, A3 active for channels 3-5) (W/O)
+ * FADx: Volume control (A1-A0 = channel) (W/O, 6-bit)
+ * FBDx: Mapper (A1-A0 = mapper page number, A3-A2 = channel, D5-D0 = inverted page number) (W/O)
+ *
+ * Further info available here: http://cpcwiki.eu/index.php/Magic_Sound_Board
+ *
+ */
+
+#ifndef MAGICSOUND_H_
+#define MAGICSOUND_H_
+
+#include "emu.h"
+#include "cpcexp.h"
+#include "sound/dmadac.h"
+#include "sound/dac.h"
+#include "machine/am9517a.h"
+#include "machine/pit8253.h"
+#include "machine/ram.h"
+
+class al_magicsound_device : public device_t,
+ public device_cpc_expansion_card_interface
+{
+public:
+ // construction/destruction
+ al_magicsound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ DECLARE_READ8_MEMBER(dmac_r);
+ DECLARE_WRITE8_MEMBER(dmac_w);
+ DECLARE_WRITE8_MEMBER(timer_w);
+ DECLARE_WRITE8_MEMBER(volume_w);
+ DECLARE_WRITE8_MEMBER(mapper_w);
+ DECLARE_WRITE_LINE_MEMBER(da0_w);
+ DECLARE_READ8_MEMBER(dma_read_byte);
+ DECLARE_WRITE8_MEMBER(dma_write_byte);
+ DECLARE_WRITE_LINE_MEMBER(dack0_w);
+ DECLARE_WRITE_LINE_MEMBER(dack1_w);
+ DECLARE_WRITE_LINE_MEMBER(dack2_w);
+ DECLARE_WRITE_LINE_MEMBER(dack3_w);
+ DECLARE_WRITE_LINE_MEMBER(sam0_w);
+ DECLARE_WRITE_LINE_MEMBER(sam1_w);
+ DECLARE_WRITE_LINE_MEMBER(sam2_w);
+ DECLARE_WRITE_LINE_MEMBER(sam3_w);
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ cpc_expansion_slot_device *m_slot;
+
+ required_device<dac_device> m_dac1;
+ required_device<am9517a_device> m_dmac;
+ required_device<pit8254_device> m_timer1;
+ required_device<pit8254_device> m_timer2;
+
+ void set_timer_gate(bool state);
+
+ UINT8 m_volume[4];
+ UINT32 m_page[4][4];
+ UINT8 m_output[4];
+ bool m_dack[4];
+ INT8 m_current_channel;
+ ram_device* m_ramptr;
+ UINT8 m_current_output;
+};
+
+// device type definition
+extern const device_type AL_MAGICSOUND;
+
+
+#endif /* MAGICSOUND_H_ */
diff --git a/src/emu/bus/cpc/mface2.c b/src/devices/bus/cpc/mface2.c
index 122f97fe46a..122f97fe46a 100644
--- a/src/emu/bus/cpc/mface2.c
+++ b/src/devices/bus/cpc/mface2.c
diff --git a/src/emu/bus/cpc/mface2.h b/src/devices/bus/cpc/mface2.h
index 56eb017b208..56eb017b208 100644
--- a/src/emu/bus/cpc/mface2.h
+++ b/src/devices/bus/cpc/mface2.h
diff --git a/src/emu/bus/cpc/playcity.c b/src/devices/bus/cpc/playcity.c
index 9686ce952f7..9686ce952f7 100644
--- a/src/emu/bus/cpc/playcity.c
+++ b/src/devices/bus/cpc/playcity.c
diff --git a/src/emu/bus/cpc/playcity.h b/src/devices/bus/cpc/playcity.h
index d7abaa08c33..d7abaa08c33 100644
--- a/src/emu/bus/cpc/playcity.h
+++ b/src/devices/bus/cpc/playcity.h
diff --git a/src/emu/bus/cpc/smartwatch.c b/src/devices/bus/cpc/smartwatch.c
index 75cc3bb8a89..75cc3bb8a89 100644
--- a/src/emu/bus/cpc/smartwatch.c
+++ b/src/devices/bus/cpc/smartwatch.c
diff --git a/src/emu/bus/cpc/smartwatch.h b/src/devices/bus/cpc/smartwatch.h
index 3a4655f4304..3a4655f4304 100644
--- a/src/emu/bus/cpc/smartwatch.h
+++ b/src/devices/bus/cpc/smartwatch.h
diff --git a/src/emu/bus/cpc/symbfac2.c b/src/devices/bus/cpc/symbfac2.c
index 7fd8e756d5c..7fd8e756d5c 100644
--- a/src/emu/bus/cpc/symbfac2.c
+++ b/src/devices/bus/cpc/symbfac2.c
diff --git a/src/emu/bus/cpc/symbfac2.h b/src/devices/bus/cpc/symbfac2.h
index 2392dbf7bd0..2392dbf7bd0 100644
--- a/src/emu/bus/cpc/symbfac2.h
+++ b/src/devices/bus/cpc/symbfac2.h
diff --git a/src/emu/bus/crvision/rom.c b/src/devices/bus/crvision/rom.c
index 875a2b40fbc..875a2b40fbc 100644
--- a/src/emu/bus/crvision/rom.c
+++ b/src/devices/bus/crvision/rom.c
diff --git a/src/emu/bus/crvision/rom.h b/src/devices/bus/crvision/rom.h
index 2d8330f0d1e..2d8330f0d1e 100644
--- a/src/emu/bus/crvision/rom.h
+++ b/src/devices/bus/crvision/rom.h
diff --git a/src/emu/bus/crvision/slot.c b/src/devices/bus/crvision/slot.c
index af3bce0a016..af3bce0a016 100644
--- a/src/emu/bus/crvision/slot.c
+++ b/src/devices/bus/crvision/slot.c
diff --git a/src/emu/bus/crvision/slot.h b/src/devices/bus/crvision/slot.h
index 006f1522d40..006f1522d40 100644
--- a/src/emu/bus/crvision/slot.h
+++ b/src/devices/bus/crvision/slot.h
diff --git a/src/emu/bus/dmv/dmvbus.c b/src/devices/bus/dmv/dmvbus.c
index 7e1a45779c9..7e1a45779c9 100644
--- a/src/emu/bus/dmv/dmvbus.c
+++ b/src/devices/bus/dmv/dmvbus.c
diff --git a/src/emu/bus/dmv/dmvbus.h b/src/devices/bus/dmv/dmvbus.h
index 7043423dc1a..7043423dc1a 100644
--- a/src/emu/bus/dmv/dmvbus.h
+++ b/src/devices/bus/dmv/dmvbus.h
diff --git a/src/emu/bus/dmv/k210.c b/src/devices/bus/dmv/k210.c
index 0b0e86fb27a..0b0e86fb27a 100644
--- a/src/emu/bus/dmv/k210.c
+++ b/src/devices/bus/dmv/k210.c
diff --git a/src/emu/bus/dmv/k210.h b/src/devices/bus/dmv/k210.h
index 705e1afe978..705e1afe978 100644
--- a/src/emu/bus/dmv/k210.h
+++ b/src/devices/bus/dmv/k210.h
diff --git a/src/emu/bus/dmv/k220.c b/src/devices/bus/dmv/k220.c
index 432f0359716..de6092f3d71 100644
--- a/src/emu/bus/dmv/k220.c
+++ b/src/devices/bus/dmv/k220.c
@@ -63,8 +63,13 @@
ROM_START( dmv_k220 )
ROM_REGION(0x4000, "rom", 0)
- ROM_LOAD( "ncr_32563_diagnostics_rom.bin", 0x0000, 0x2000, CRC(57445768) SHA1(59b615437444789bf10ba6768cd3c43a69c7ed7b))
- ROM_LOAD( "ncr_32564_diagnostics_rom.bin", 0x2000, 0x2000, CRC(172e0c60) SHA1(eedae538636009a5b86fc78e50a03c72eeb0e73b))
+ ROM_SYSTEM_BIOS(0, "v4", "V 04.00")
+ ROMX_LOAD("34014.u17", 0x0000, 0x2000, CRC(552c2247) SHA1(7babd264ead2e04afe624c3035f211279c203f41), ROM_BIOS(1))
+ ROMX_LOAD("34015.u18", 0x2000, 0x2000, CRC(d714f2d8) SHA1(1a7095401d63951ba9189bc3e384c26996113815), ROM_BIOS(1))
+
+ ROM_SYSTEM_BIOS(1, "v2", "V 02.00")
+ ROMX_LOAD("32563.u17", 0x0000, 0x2000, CRC(57445768) SHA1(59b615437444789bf10ba6768cd3c43a69c7ed7b), ROM_BIOS(2))
+ ROMX_LOAD("32564.u18", 0x2000, 0x2000, CRC(172e0c60) SHA1(eedae538636009a5b86fc78e50a03c72eeb0e73b), ROM_BIOS(2))
ROM_REGION(0x0080, "prom", 0)
ROM_LOAD( "u11.bin", 0x0000, 0x0080, NO_DUMP) // used for address decoding
@@ -199,7 +204,7 @@ bool dmv_k220_device::read(offs_t offset, UINT8 &data)
}
else if ((m_portc & 0x02) && offset >= 0xf000 && offset < 0xf800)
{
- data = m_ram->base()[offset];
+ data = m_ram->base()[offset & 0x7ff];
return true;
}
@@ -219,7 +224,7 @@ bool dmv_k220_device::write(offs_t offset, UINT8 data)
}
else if ((m_portc & 0x02) && offset >= 0xf000 && offset < 0xf800)
{
- m_ram->base()[offset] = data;
+ m_ram->base()[offset & 0x7ff] = data;
return true;
}
diff --git a/src/emu/bus/dmv/k220.h b/src/devices/bus/dmv/k220.h
index 0465d3de706..0465d3de706 100644
--- a/src/emu/bus/dmv/k220.h
+++ b/src/devices/bus/dmv/k220.h
diff --git a/src/emu/bus/dmv/k230.c b/src/devices/bus/dmv/k230.c
index 4ce6a97f807..4ce6a97f807 100644
--- a/src/emu/bus/dmv/k230.c
+++ b/src/devices/bus/dmv/k230.c
diff --git a/src/emu/bus/dmv/k230.h b/src/devices/bus/dmv/k230.h
index 6c658f2d2c3..6c658f2d2c3 100644
--- a/src/emu/bus/dmv/k230.h
+++ b/src/devices/bus/dmv/k230.h
diff --git a/src/emu/bus/dmv/k233.c b/src/devices/bus/dmv/k233.c
index 859b8b7f8f8..859b8b7f8f8 100644
--- a/src/emu/bus/dmv/k233.c
+++ b/src/devices/bus/dmv/k233.c
diff --git a/src/emu/bus/dmv/k233.h b/src/devices/bus/dmv/k233.h
index 5aeb5b6c782..5aeb5b6c782 100644
--- a/src/emu/bus/dmv/k233.h
+++ b/src/devices/bus/dmv/k233.h
diff --git a/src/emu/bus/dmv/k801.c b/src/devices/bus/dmv/k801.c
index b091d117088..b091d117088 100644
--- a/src/emu/bus/dmv/k801.c
+++ b/src/devices/bus/dmv/k801.c
diff --git a/src/emu/bus/dmv/k801.h b/src/devices/bus/dmv/k801.h
index 9ad8489a4c2..9ad8489a4c2 100644
--- a/src/emu/bus/dmv/k801.h
+++ b/src/devices/bus/dmv/k801.h
diff --git a/src/emu/bus/dmv/k803.c b/src/devices/bus/dmv/k803.c
index 7f748cc4806..7f748cc4806 100644
--- a/src/emu/bus/dmv/k803.c
+++ b/src/devices/bus/dmv/k803.c
diff --git a/src/emu/bus/dmv/k803.h b/src/devices/bus/dmv/k803.h
index 51fd9eaaa9c..51fd9eaaa9c 100644
--- a/src/emu/bus/dmv/k803.h
+++ b/src/devices/bus/dmv/k803.h
diff --git a/src/emu/bus/dmv/k806.c b/src/devices/bus/dmv/k806.c
index 612940f01c1..612940f01c1 100644
--- a/src/emu/bus/dmv/k806.c
+++ b/src/devices/bus/dmv/k806.c
diff --git a/src/emu/bus/dmv/k806.h b/src/devices/bus/dmv/k806.h
index a1cf7c7b145..a1cf7c7b145 100644
--- a/src/emu/bus/dmv/k806.h
+++ b/src/devices/bus/dmv/k806.h
diff --git a/src/emu/bus/dmv/ram.c b/src/devices/bus/dmv/ram.c
index 32039302b14..32039302b14 100644
--- a/src/emu/bus/dmv/ram.c
+++ b/src/devices/bus/dmv/ram.c
diff --git a/src/emu/bus/dmv/ram.h b/src/devices/bus/dmv/ram.h
index ac841932532..ac841932532 100644
--- a/src/emu/bus/dmv/ram.h
+++ b/src/devices/bus/dmv/ram.h
diff --git a/src/emu/bus/ecbbus/ecbbus.c b/src/devices/bus/ecbbus/ecbbus.c
index b3c5fa54ab1..b3c5fa54ab1 100644
--- a/src/emu/bus/ecbbus/ecbbus.c
+++ b/src/devices/bus/ecbbus/ecbbus.c
diff --git a/src/emu/bus/ecbbus/ecbbus.h b/src/devices/bus/ecbbus/ecbbus.h
index c04a0245596..c04a0245596 100644
--- a/src/emu/bus/ecbbus/ecbbus.h
+++ b/src/devices/bus/ecbbus/ecbbus.h
diff --git a/src/emu/bus/ecbbus/grip.c b/src/devices/bus/ecbbus/grip.c
index f2db25938d8..f2db25938d8 100644
--- a/src/emu/bus/ecbbus/grip.c
+++ b/src/devices/bus/ecbbus/grip.c
diff --git a/src/emu/bus/ecbbus/grip.h b/src/devices/bus/ecbbus/grip.h
index 9c4f098d2b9..9c4f098d2b9 100644
--- a/src/emu/bus/ecbbus/grip.h
+++ b/src/devices/bus/ecbbus/grip.h
diff --git a/src/emu/bus/econet/e01.c b/src/devices/bus/econet/e01.c
index bcb9b4b6bae..bcb9b4b6bae 100644
--- a/src/emu/bus/econet/e01.c
+++ b/src/devices/bus/econet/e01.c
diff --git a/src/emu/bus/econet/e01.h b/src/devices/bus/econet/e01.h
index dc8708ef78d..dc8708ef78d 100644
--- a/src/emu/bus/econet/e01.h
+++ b/src/devices/bus/econet/e01.h
diff --git a/src/emu/bus/econet/econet.c b/src/devices/bus/econet/econet.c
index 94b0bb77786..94b0bb77786 100644
--- a/src/emu/bus/econet/econet.c
+++ b/src/devices/bus/econet/econet.c
diff --git a/src/emu/bus/econet/econet.h b/src/devices/bus/econet/econet.h
index e072c7bb43b..e072c7bb43b 100644
--- a/src/emu/bus/econet/econet.h
+++ b/src/devices/bus/econet/econet.h
diff --git a/src/emu/bus/ep64/exdos.c b/src/devices/bus/ep64/exdos.c
index f0813ff8d7e..f0813ff8d7e 100644
--- a/src/emu/bus/ep64/exdos.c
+++ b/src/devices/bus/ep64/exdos.c
diff --git a/src/emu/bus/ep64/exdos.h b/src/devices/bus/ep64/exdos.h
index 2ac9f5bca85..2ac9f5bca85 100644
--- a/src/emu/bus/ep64/exdos.h
+++ b/src/devices/bus/ep64/exdos.h
diff --git a/src/emu/bus/ep64/exp.c b/src/devices/bus/ep64/exp.c
index 55747d8b0ea..55747d8b0ea 100644
--- a/src/emu/bus/ep64/exp.c
+++ b/src/devices/bus/ep64/exp.c
diff --git a/src/emu/bus/ep64/exp.h b/src/devices/bus/ep64/exp.h
index cbd7b4394a1..cbd7b4394a1 100644
--- a/src/emu/bus/ep64/exp.h
+++ b/src/devices/bus/ep64/exp.h
diff --git a/src/emu/bus/epson_sio/epson_sio.c b/src/devices/bus/epson_sio/epson_sio.c
index b281d076f82..b281d076f82 100644
--- a/src/emu/bus/epson_sio/epson_sio.c
+++ b/src/devices/bus/epson_sio/epson_sio.c
diff --git a/src/emu/bus/epson_sio/epson_sio.h b/src/devices/bus/epson_sio/epson_sio.h
index 828d64a3eae..828d64a3eae 100644
--- a/src/emu/bus/epson_sio/epson_sio.h
+++ b/src/devices/bus/epson_sio/epson_sio.h
diff --git a/src/emu/bus/epson_sio/pf10.c b/src/devices/bus/epson_sio/pf10.c
index e3b6651e2b9..e3b6651e2b9 100644
--- a/src/emu/bus/epson_sio/pf10.c
+++ b/src/devices/bus/epson_sio/pf10.c
diff --git a/src/emu/bus/epson_sio/pf10.h b/src/devices/bus/epson_sio/pf10.h
index dd937ff0526..dd937ff0526 100644
--- a/src/emu/bus/epson_sio/pf10.h
+++ b/src/devices/bus/epson_sio/pf10.h
diff --git a/src/emu/bus/epson_sio/tf20.c b/src/devices/bus/epson_sio/tf20.c
index 084ca861be0..084ca861be0 100644
--- a/src/emu/bus/epson_sio/tf20.c
+++ b/src/devices/bus/epson_sio/tf20.c
diff --git a/src/emu/bus/epson_sio/tf20.h b/src/devices/bus/epson_sio/tf20.h
index a51848ffc38..a51848ffc38 100644
--- a/src/emu/bus/epson_sio/tf20.h
+++ b/src/devices/bus/epson_sio/tf20.h
diff --git a/src/emu/bus/gameboy/gb_slot.c b/src/devices/bus/gameboy/gb_slot.c
index 922dc91cce2..922dc91cce2 100644
--- a/src/emu/bus/gameboy/gb_slot.c
+++ b/src/devices/bus/gameboy/gb_slot.c
diff --git a/src/emu/bus/gameboy/gb_slot.h b/src/devices/bus/gameboy/gb_slot.h
index 711037a0da8..711037a0da8 100644
--- a/src/emu/bus/gameboy/gb_slot.h
+++ b/src/devices/bus/gameboy/gb_slot.h
diff --git a/src/emu/bus/gameboy/mbc.c b/src/devices/bus/gameboy/mbc.c
index 4c0a81459b6..4c0a81459b6 100644
--- a/src/emu/bus/gameboy/mbc.c
+++ b/src/devices/bus/gameboy/mbc.c
diff --git a/src/emu/bus/gameboy/mbc.h b/src/devices/bus/gameboy/mbc.h
index 3ad27d2cdee..3ad27d2cdee 100644
--- a/src/emu/bus/gameboy/mbc.h
+++ b/src/devices/bus/gameboy/mbc.h
diff --git a/src/emu/bus/gameboy/rom.c b/src/devices/bus/gameboy/rom.c
index 2be759adf1b..2be759adf1b 100644
--- a/src/emu/bus/gameboy/rom.c
+++ b/src/devices/bus/gameboy/rom.c
diff --git a/src/emu/bus/gameboy/rom.h b/src/devices/bus/gameboy/rom.h
index 3bd27a362c8..3bd27a362c8 100644
--- a/src/emu/bus/gameboy/rom.h
+++ b/src/devices/bus/gameboy/rom.h
diff --git a/src/emu/bus/gamegear/ggext.c b/src/devices/bus/gamegear/ggext.c
index 7419ec1d45a..7419ec1d45a 100644
--- a/src/emu/bus/gamegear/ggext.c
+++ b/src/devices/bus/gamegear/ggext.c
diff --git a/src/emu/bus/gamegear/ggext.h b/src/devices/bus/gamegear/ggext.h
index a3110dea711..a3110dea711 100644
--- a/src/emu/bus/gamegear/ggext.h
+++ b/src/devices/bus/gamegear/ggext.h
diff --git a/src/emu/bus/gamegear/smsctrladp.c b/src/devices/bus/gamegear/smsctrladp.c
index 54b9139b433..54b9139b433 100644
--- a/src/emu/bus/gamegear/smsctrladp.c
+++ b/src/devices/bus/gamegear/smsctrladp.c
diff --git a/src/emu/bus/gamegear/smsctrladp.h b/src/devices/bus/gamegear/smsctrladp.h
index 76c629f4dd8..76c629f4dd8 100644
--- a/src/emu/bus/gamegear/smsctrladp.h
+++ b/src/devices/bus/gamegear/smsctrladp.h
diff --git a/src/emu/bus/gba/gba_slot.c b/src/devices/bus/gba/gba_slot.c
index 8844acbccb5..8844acbccb5 100644
--- a/src/emu/bus/gba/gba_slot.c
+++ b/src/devices/bus/gba/gba_slot.c
diff --git a/src/emu/bus/gba/gba_slot.h b/src/devices/bus/gba/gba_slot.h
index 05181d29d4c..05181d29d4c 100644
--- a/src/emu/bus/gba/gba_slot.h
+++ b/src/devices/bus/gba/gba_slot.h
diff --git a/src/emu/bus/gba/rom.c b/src/devices/bus/gba/rom.c
index 3b7f775e7cf..3b7f775e7cf 100644
--- a/src/emu/bus/gba/rom.c
+++ b/src/devices/bus/gba/rom.c
diff --git a/src/emu/bus/gba/rom.h b/src/devices/bus/gba/rom.h
index e008c318b7c..e008c318b7c 100644
--- a/src/emu/bus/gba/rom.h
+++ b/src/devices/bus/gba/rom.h
diff --git a/src/emu/bus/generic/carts.c b/src/devices/bus/generic/carts.c
index 23a079289c9..23a079289c9 100644
--- a/src/emu/bus/generic/carts.c
+++ b/src/devices/bus/generic/carts.c
diff --git a/src/emu/bus/generic/carts.h b/src/devices/bus/generic/carts.h
index fdd354314ed..fdd354314ed 100644
--- a/src/emu/bus/generic/carts.h
+++ b/src/devices/bus/generic/carts.h
diff --git a/src/emu/bus/generic/ram.c b/src/devices/bus/generic/ram.c
index 3767ddae724..3767ddae724 100644
--- a/src/emu/bus/generic/ram.c
+++ b/src/devices/bus/generic/ram.c
diff --git a/src/emu/bus/generic/ram.h b/src/devices/bus/generic/ram.h
index ac3cfdbb113..ac3cfdbb113 100644
--- a/src/emu/bus/generic/ram.h
+++ b/src/devices/bus/generic/ram.h
diff --git a/src/emu/bus/generic/rom.c b/src/devices/bus/generic/rom.c
index a816040e229..a816040e229 100644
--- a/src/emu/bus/generic/rom.c
+++ b/src/devices/bus/generic/rom.c
diff --git a/src/emu/bus/generic/rom.h b/src/devices/bus/generic/rom.h
index f6c9da14341..f6c9da14341 100644
--- a/src/emu/bus/generic/rom.h
+++ b/src/devices/bus/generic/rom.h
diff --git a/src/emu/bus/generic/slot.c b/src/devices/bus/generic/slot.c
index f88740cc048..f88740cc048 100644
--- a/src/emu/bus/generic/slot.c
+++ b/src/devices/bus/generic/slot.c
diff --git a/src/emu/bus/generic/slot.h b/src/devices/bus/generic/slot.h
index 7c8725e89a7..7c8725e89a7 100644
--- a/src/emu/bus/generic/slot.h
+++ b/src/devices/bus/generic/slot.h
diff --git a/src/emu/bus/ieee488/c2031.c b/src/devices/bus/ieee488/c2031.c
index b26c27c2ff6..b26c27c2ff6 100644
--- a/src/emu/bus/ieee488/c2031.c
+++ b/src/devices/bus/ieee488/c2031.c
diff --git a/src/emu/bus/ieee488/c2031.h b/src/devices/bus/ieee488/c2031.h
index 8423a8c1c95..8423a8c1c95 100644
--- a/src/emu/bus/ieee488/c2031.h
+++ b/src/devices/bus/ieee488/c2031.h
diff --git a/src/emu/bus/ieee488/c2040.c b/src/devices/bus/ieee488/c2040.c
index 8ce2856e371..8ce2856e371 100644
--- a/src/emu/bus/ieee488/c2040.c
+++ b/src/devices/bus/ieee488/c2040.c
diff --git a/src/emu/bus/ieee488/c2040.h b/src/devices/bus/ieee488/c2040.h
index 1618a46599f..1618a46599f 100644
--- a/src/emu/bus/ieee488/c2040.h
+++ b/src/devices/bus/ieee488/c2040.h
diff --git a/src/emu/bus/ieee488/c2040fdc.c b/src/devices/bus/ieee488/c2040fdc.c
index 4dfccbde366..4dfccbde366 100644
--- a/src/emu/bus/ieee488/c2040fdc.c
+++ b/src/devices/bus/ieee488/c2040fdc.c
diff --git a/src/emu/bus/ieee488/c2040fdc.h b/src/devices/bus/ieee488/c2040fdc.h
index 178e81240a2..178e81240a2 100644
--- a/src/emu/bus/ieee488/c2040fdc.h
+++ b/src/devices/bus/ieee488/c2040fdc.h
diff --git a/src/emu/bus/ieee488/c8050.c b/src/devices/bus/ieee488/c8050.c
index e60386db689..e60386db689 100644
--- a/src/emu/bus/ieee488/c8050.c
+++ b/src/devices/bus/ieee488/c8050.c
diff --git a/src/emu/bus/ieee488/c8050.h b/src/devices/bus/ieee488/c8050.h
index 3d5904dd6cb..3d5904dd6cb 100644
--- a/src/emu/bus/ieee488/c8050.h
+++ b/src/devices/bus/ieee488/c8050.h
diff --git a/src/emu/bus/ieee488/c8050fdc.c b/src/devices/bus/ieee488/c8050fdc.c
index 02bceb80328..02bceb80328 100644
--- a/src/emu/bus/ieee488/c8050fdc.c
+++ b/src/devices/bus/ieee488/c8050fdc.c
diff --git a/src/emu/bus/ieee488/c8050fdc.h b/src/devices/bus/ieee488/c8050fdc.h
index 8228c9660d0..8228c9660d0 100644
--- a/src/emu/bus/ieee488/c8050fdc.h
+++ b/src/devices/bus/ieee488/c8050fdc.h
diff --git a/src/emu/bus/ieee488/c8280.c b/src/devices/bus/ieee488/c8280.c
index 1dd1c679c5d..1dd1c679c5d 100644
--- a/src/emu/bus/ieee488/c8280.c
+++ b/src/devices/bus/ieee488/c8280.c
diff --git a/src/emu/bus/ieee488/c8280.h b/src/devices/bus/ieee488/c8280.h
index 076edcd736c..076edcd736c 100644
--- a/src/emu/bus/ieee488/c8280.h
+++ b/src/devices/bus/ieee488/c8280.h
diff --git a/src/emu/bus/ieee488/d9060.c b/src/devices/bus/ieee488/d9060.c
index f21653efb09..f21653efb09 100644
--- a/src/emu/bus/ieee488/d9060.c
+++ b/src/devices/bus/ieee488/d9060.c
diff --git a/src/emu/bus/ieee488/d9060.h b/src/devices/bus/ieee488/d9060.h
index 7efc20006cf..7efc20006cf 100644
--- a/src/emu/bus/ieee488/d9060.h
+++ b/src/devices/bus/ieee488/d9060.h
diff --git a/src/emu/bus/ieee488/hardbox.c b/src/devices/bus/ieee488/hardbox.c
index 4a2a0c16dae..5da15513579 100644
--- a/src/emu/bus/ieee488/hardbox.c
+++ b/src/devices/bus/ieee488/hardbox.c
@@ -18,7 +18,7 @@
Start the pet8032 emulator with the HardBox attached as device 9,
with the new CHD and the utilities floppy mounted:
- $ mess pet8032 -ieee9 hardbox \
+ $ mame pet8032 -ieee9 hardbox \
-hard1 /path/to/corvus20mb.chd \
-flop1 /path/to/hardbox-utils.d80
@@ -85,7 +85,7 @@ ROM_START( hardbox )
Disassembling the ROMs showed that v2.3 and v2.4 are for Corvus Systems drives but v3.1 is
for Sunol Systems drives. Both types use the Corvus flat cable interface but there may be
some programming differences, e.g. the v3.1 firmware for Sunol does not have the park heads
- routine in the Corvus versions. MESS emulates a Corvus drive so we default to the last
+ routine in the Corvus versions. MAME emulates a Corvus drive so we default to the last
known HardBox firmware for Corvus (v2.4). */
ROM_END
diff --git a/src/emu/bus/ieee488/hardbox.h b/src/devices/bus/ieee488/hardbox.h
index 77cbd23fb07..77cbd23fb07 100644
--- a/src/emu/bus/ieee488/hardbox.h
+++ b/src/devices/bus/ieee488/hardbox.h
diff --git a/src/emu/bus/ieee488/ieee488.c b/src/devices/bus/ieee488/ieee488.c
index 16b8dda4f98..f3d61fa539a 100644
--- a/src/emu/bus/ieee488/ieee488.c
+++ b/src/devices/bus/ieee488/ieee488.c
@@ -368,6 +368,7 @@ UINT8 ieee488_device::get_data()
//-------------------------------------------------
// slot devices
+#include "bus/cbmiec/c1526.h"
#include "c2031.h"
#include "c2040.h"
#include "c8050.h"
@@ -391,4 +392,5 @@ SLOT_INTERFACE_START( cbm_ieee488_devices )
SLOT_INTERFACE("softbox", SOFTBOX)
SLOT_INTERFACE("hardbox", HARDBOX)
SLOT_INTERFACE("shark", SHARK)
+ SLOT_INTERFACE("c4023", C4023)
SLOT_INTERFACE_END
diff --git a/src/emu/bus/ieee488/ieee488.h b/src/devices/bus/ieee488/ieee488.h
index 3a6c53966f1..3a6c53966f1 100644
--- a/src/emu/bus/ieee488/ieee488.h
+++ b/src/devices/bus/ieee488/ieee488.h
diff --git a/src/emu/bus/ieee488/shark.c b/src/devices/bus/ieee488/shark.c
index 47582aa42b8..47582aa42b8 100644
--- a/src/emu/bus/ieee488/shark.c
+++ b/src/devices/bus/ieee488/shark.c
diff --git a/src/emu/bus/ieee488/shark.h b/src/devices/bus/ieee488/shark.h
index d5e2f1fe1f8..d5e2f1fe1f8 100644
--- a/src/emu/bus/ieee488/shark.h
+++ b/src/devices/bus/ieee488/shark.h
diff --git a/src/emu/bus/ieee488/softbox.c b/src/devices/bus/ieee488/softbox.c
index 7f1dfe64b9d..a42de1e5011 100644
--- a/src/emu/bus/ieee488/softbox.c
+++ b/src/devices/bus/ieee488/softbox.c
@@ -10,7 +10,7 @@
This is an emulation of the SoftBox as a PET/CBM peripheral, where
the PET is used as a terminal over IEEE-488. For the standalone
mode where an RS-232 terminal is used, and also information on
- how to set up the Corvus drive, see: src/mess/drivers/softbox.c.
+ how to set up the Corvus drive, see: src/mame/drivers/softbox.c.
*/
diff --git a/src/emu/bus/ieee488/softbox.h b/src/devices/bus/ieee488/softbox.h
index 97e729fcc8d..97e729fcc8d 100644
--- a/src/emu/bus/ieee488/softbox.h
+++ b/src/devices/bus/ieee488/softbox.h
diff --git a/src/emu/bus/imi7000/imi5000h.c b/src/devices/bus/imi7000/imi5000h.c
index ff57b942f17..ff57b942f17 100644
--- a/src/emu/bus/imi7000/imi5000h.c
+++ b/src/devices/bus/imi7000/imi5000h.c
diff --git a/src/emu/bus/imi7000/imi5000h.h b/src/devices/bus/imi7000/imi5000h.h
index 2577293ae20..2577293ae20 100644
--- a/src/emu/bus/imi7000/imi5000h.h
+++ b/src/devices/bus/imi7000/imi5000h.h
diff --git a/src/emu/bus/imi7000/imi7000.c b/src/devices/bus/imi7000/imi7000.c
index b67c980c466..b67c980c466 100644
--- a/src/emu/bus/imi7000/imi7000.c
+++ b/src/devices/bus/imi7000/imi7000.c
diff --git a/src/emu/bus/imi7000/imi7000.h b/src/devices/bus/imi7000/imi7000.h
index 257ad0c562c..257ad0c562c 100644
--- a/src/emu/bus/imi7000/imi7000.h
+++ b/src/devices/bus/imi7000/imi7000.h
diff --git a/src/emu/bus/intv/ecs.c b/src/devices/bus/intv/ecs.c
index f9d140bb62d..f9d140bb62d 100644
--- a/src/emu/bus/intv/ecs.c
+++ b/src/devices/bus/intv/ecs.c
diff --git a/src/emu/bus/intv/ecs.h b/src/devices/bus/intv/ecs.h
index 8148459fc22..8148459fc22 100644
--- a/src/emu/bus/intv/ecs.h
+++ b/src/devices/bus/intv/ecs.h
diff --git a/src/emu/bus/intv/rom.c b/src/devices/bus/intv/rom.c
index 74b5664a6fc..74b5664a6fc 100644
--- a/src/emu/bus/intv/rom.c
+++ b/src/devices/bus/intv/rom.c
diff --git a/src/emu/bus/intv/rom.h b/src/devices/bus/intv/rom.h
index 15a66e10817..15a66e10817 100644
--- a/src/emu/bus/intv/rom.h
+++ b/src/devices/bus/intv/rom.h
diff --git a/src/emu/bus/intv/slot.c b/src/devices/bus/intv/slot.c
index 6b48f976e7f..6b48f976e7f 100644
--- a/src/emu/bus/intv/slot.c
+++ b/src/devices/bus/intv/slot.c
diff --git a/src/emu/bus/intv/slot.h b/src/devices/bus/intv/slot.h
index 2b5269edb8b..2b5269edb8b 100644
--- a/src/emu/bus/intv/slot.h
+++ b/src/devices/bus/intv/slot.h
diff --git a/src/emu/bus/intv/voice.c b/src/devices/bus/intv/voice.c
index 2ec50862d0d..2ec50862d0d 100644
--- a/src/emu/bus/intv/voice.c
+++ b/src/devices/bus/intv/voice.c
diff --git a/src/emu/bus/intv/voice.h b/src/devices/bus/intv/voice.h
index 412d3de7760..412d3de7760 100644
--- a/src/emu/bus/intv/voice.h
+++ b/src/devices/bus/intv/voice.h
diff --git a/src/emu/bus/iq151/disc2.c b/src/devices/bus/iq151/disc2.c
index 795813b30bb..795813b30bb 100644
--- a/src/emu/bus/iq151/disc2.c
+++ b/src/devices/bus/iq151/disc2.c
diff --git a/src/emu/bus/iq151/disc2.h b/src/devices/bus/iq151/disc2.h
index 1f35778429a..1f35778429a 100644
--- a/src/emu/bus/iq151/disc2.h
+++ b/src/devices/bus/iq151/disc2.h
diff --git a/src/emu/bus/iq151/grafik.c b/src/devices/bus/iq151/grafik.c
index e1a9aac6254..e1a9aac6254 100644
--- a/src/emu/bus/iq151/grafik.c
+++ b/src/devices/bus/iq151/grafik.c
diff --git a/src/emu/bus/iq151/grafik.h b/src/devices/bus/iq151/grafik.h
index c93c534e72d..c93c534e72d 100644
--- a/src/emu/bus/iq151/grafik.h
+++ b/src/devices/bus/iq151/grafik.h
diff --git a/src/emu/bus/iq151/iq151.c b/src/devices/bus/iq151/iq151.c
index 842602aceb8..842602aceb8 100644
--- a/src/emu/bus/iq151/iq151.c
+++ b/src/devices/bus/iq151/iq151.c
diff --git a/src/emu/bus/iq151/iq151.h b/src/devices/bus/iq151/iq151.h
index 4b9c5db9887..4b9c5db9887 100644
--- a/src/emu/bus/iq151/iq151.h
+++ b/src/devices/bus/iq151/iq151.h
diff --git a/src/emu/bus/iq151/minigraf.c b/src/devices/bus/iq151/minigraf.c
index 1cec65a47d1..1cec65a47d1 100644
--- a/src/emu/bus/iq151/minigraf.c
+++ b/src/devices/bus/iq151/minigraf.c
diff --git a/src/emu/bus/iq151/minigraf.h b/src/devices/bus/iq151/minigraf.h
index 6226d0ffa2d..6226d0ffa2d 100644
--- a/src/emu/bus/iq151/minigraf.h
+++ b/src/devices/bus/iq151/minigraf.h
diff --git a/src/emu/bus/iq151/ms151a.c b/src/devices/bus/iq151/ms151a.c
index 67909362f8e..67909362f8e 100644
--- a/src/emu/bus/iq151/ms151a.c
+++ b/src/devices/bus/iq151/ms151a.c
diff --git a/src/emu/bus/iq151/ms151a.h b/src/devices/bus/iq151/ms151a.h
index cbba64981c5..cbba64981c5 100644
--- a/src/emu/bus/iq151/ms151a.h
+++ b/src/devices/bus/iq151/ms151a.h
diff --git a/src/emu/bus/iq151/rom.c b/src/devices/bus/iq151/rom.c
index 4505732486c..4505732486c 100644
--- a/src/emu/bus/iq151/rom.c
+++ b/src/devices/bus/iq151/rom.c
diff --git a/src/emu/bus/iq151/rom.h b/src/devices/bus/iq151/rom.h
index da1f72bcec4..da1f72bcec4 100644
--- a/src/emu/bus/iq151/rom.h
+++ b/src/devices/bus/iq151/rom.h
diff --git a/src/emu/bus/iq151/staper.c b/src/devices/bus/iq151/staper.c
index 49079c74b3c..49079c74b3c 100644
--- a/src/emu/bus/iq151/staper.c
+++ b/src/devices/bus/iq151/staper.c
diff --git a/src/emu/bus/iq151/staper.h b/src/devices/bus/iq151/staper.h
index e8aa6639d4e..e8aa6639d4e 100644
--- a/src/emu/bus/iq151/staper.h
+++ b/src/devices/bus/iq151/staper.h
diff --git a/src/emu/bus/iq151/video32.c b/src/devices/bus/iq151/video32.c
index 24ee5d1438b..24ee5d1438b 100644
--- a/src/emu/bus/iq151/video32.c
+++ b/src/devices/bus/iq151/video32.c
diff --git a/src/emu/bus/iq151/video32.h b/src/devices/bus/iq151/video32.h
index f813ca6edb2..f813ca6edb2 100644
--- a/src/emu/bus/iq151/video32.h
+++ b/src/devices/bus/iq151/video32.h
diff --git a/src/emu/bus/iq151/video64.c b/src/devices/bus/iq151/video64.c
index c6751adfe3d..c6751adfe3d 100644
--- a/src/emu/bus/iq151/video64.c
+++ b/src/devices/bus/iq151/video64.c
diff --git a/src/emu/bus/iq151/video64.h b/src/devices/bus/iq151/video64.h
index 36487711acf..36487711acf 100644
--- a/src/emu/bus/iq151/video64.h
+++ b/src/devices/bus/iq151/video64.h
diff --git a/src/emu/bus/isa/3c503.c b/src/devices/bus/isa/3c503.c
index 84af1d2db32..84af1d2db32 100644
--- a/src/emu/bus/isa/3c503.c
+++ b/src/devices/bus/isa/3c503.c
diff --git a/src/emu/bus/isa/3c503.h b/src/devices/bus/isa/3c503.h
index ad5da16dac8..ad5da16dac8 100644
--- a/src/emu/bus/isa/3c503.h
+++ b/src/devices/bus/isa/3c503.h
diff --git a/src/emu/bus/isa/3c505.c b/src/devices/bus/isa/3c505.c
index 98328c41683..98328c41683 100644
--- a/src/emu/bus/isa/3c505.c
+++ b/src/devices/bus/isa/3c505.c
diff --git a/src/emu/bus/isa/3c505.h b/src/devices/bus/isa/3c505.h
index 929089628ef..929089628ef 100644
--- a/src/emu/bus/isa/3c505.h
+++ b/src/devices/bus/isa/3c505.h
diff --git a/src/emu/bus/isa/adlib.c b/src/devices/bus/isa/adlib.c
index 42e2afd9604..42e2afd9604 100644
--- a/src/emu/bus/isa/adlib.c
+++ b/src/devices/bus/isa/adlib.c
diff --git a/src/emu/bus/isa/adlib.h b/src/devices/bus/isa/adlib.h
index 873b60a7ad1..873b60a7ad1 100644
--- a/src/emu/bus/isa/adlib.h
+++ b/src/devices/bus/isa/adlib.h
diff --git a/src/emu/bus/isa/aga.c b/src/devices/bus/isa/aga.c
index 1d321533391..1d321533391 100644
--- a/src/emu/bus/isa/aga.c
+++ b/src/devices/bus/isa/aga.c
diff --git a/src/emu/bus/isa/aga.h b/src/devices/bus/isa/aga.h
index 1526fade3a6..1526fade3a6 100644
--- a/src/emu/bus/isa/aga.h
+++ b/src/devices/bus/isa/aga.h
diff --git a/src/emu/bus/isa/aha1542.c b/src/devices/bus/isa/aha1542.c
index cc557c47eaa..cc557c47eaa 100644
--- a/src/emu/bus/isa/aha1542.c
+++ b/src/devices/bus/isa/aha1542.c
diff --git a/src/emu/bus/isa/aha1542.h b/src/devices/bus/isa/aha1542.h
index 035a9ebdd46..035a9ebdd46 100644
--- a/src/emu/bus/isa/aha1542.h
+++ b/src/devices/bus/isa/aha1542.h
diff --git a/src/emu/bus/isa/cga.c b/src/devices/bus/isa/cga.c
index 6041df5f9ce..6041df5f9ce 100644
--- a/src/emu/bus/isa/cga.c
+++ b/src/devices/bus/isa/cga.c
diff --git a/src/emu/bus/isa/cga.h b/src/devices/bus/isa/cga.h
index d6dcb791bf3..d6dcb791bf3 100644
--- a/src/emu/bus/isa/cga.h
+++ b/src/devices/bus/isa/cga.h
diff --git a/src/emu/bus/isa/com.c b/src/devices/bus/isa/com.c
index 6d4873009a4..6d4873009a4 100644
--- a/src/emu/bus/isa/com.c
+++ b/src/devices/bus/isa/com.c
diff --git a/src/emu/bus/isa/com.h b/src/devices/bus/isa/com.h
index ff48980dc12..ff48980dc12 100644
--- a/src/emu/bus/isa/com.h
+++ b/src/devices/bus/isa/com.h
diff --git a/src/emu/bus/isa/dectalk.c b/src/devices/bus/isa/dectalk.c
index 5cd014b7b6e..5cd014b7b6e 100644
--- a/src/emu/bus/isa/dectalk.c
+++ b/src/devices/bus/isa/dectalk.c
diff --git a/src/emu/bus/isa/dectalk.h b/src/devices/bus/isa/dectalk.h
index 029d41e8263..029d41e8263 100644
--- a/src/emu/bus/isa/dectalk.h
+++ b/src/devices/bus/isa/dectalk.h
diff --git a/src/emu/bus/isa/ega.c b/src/devices/bus/isa/ega.c
index 4da4ead2c6d..4da4ead2c6d 100644
--- a/src/emu/bus/isa/ega.c
+++ b/src/devices/bus/isa/ega.c
diff --git a/src/emu/bus/isa/ega.h b/src/devices/bus/isa/ega.h
index dc449e81ee7..dc449e81ee7 100644
--- a/src/emu/bus/isa/ega.h
+++ b/src/devices/bus/isa/ega.h
diff --git a/src/emu/bus/isa/fdc.c b/src/devices/bus/isa/fdc.c
index a7698784a26..a7698784a26 100644
--- a/src/emu/bus/isa/fdc.c
+++ b/src/devices/bus/isa/fdc.c
diff --git a/src/emu/bus/isa/fdc.h b/src/devices/bus/isa/fdc.h
index 2c929259c9c..2c929259c9c 100644
--- a/src/emu/bus/isa/fdc.h
+++ b/src/devices/bus/isa/fdc.h
diff --git a/src/emu/bus/isa/finalchs.c b/src/devices/bus/isa/finalchs.c
index 212a05cad87..212a05cad87 100644
--- a/src/emu/bus/isa/finalchs.c
+++ b/src/devices/bus/isa/finalchs.c
diff --git a/src/emu/bus/isa/finalchs.h b/src/devices/bus/isa/finalchs.h
index ec1d05e1f43..ec1d05e1f43 100644
--- a/src/emu/bus/isa/finalchs.h
+++ b/src/devices/bus/isa/finalchs.h
diff --git a/src/emu/bus/isa/gblaster.c b/src/devices/bus/isa/gblaster.c
index 6ee9600cdb6..22cb5edd328 100644
--- a/src/emu/bus/isa/gblaster.c
+++ b/src/devices/bus/isa/gblaster.c
@@ -19,11 +19,13 @@
jumperable? normally 0x220
*/
static MACHINE_CONFIG_FRAGMENT( game_blaster_config )
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SAA1099_ADD("saa1099.1", 7159000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_SAA1099_ADD("saa1099.2", 7159000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+ MCFG_SAA1099_ADD("saa1099.1", 7159090)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
+ MCFG_SAA1099_ADD("saa1099.2", 7159090)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
MACHINE_CONFIG_END
READ8_MEMBER( isa8_gblaster_device::saa1099_16_r )
diff --git a/src/emu/bus/isa/gblaster.h b/src/devices/bus/isa/gblaster.h
index b2625e98975..b2625e98975 100644
--- a/src/emu/bus/isa/gblaster.h
+++ b/src/devices/bus/isa/gblaster.h
diff --git a/src/emu/bus/isa/gus.c b/src/devices/bus/isa/gus.c
index f9cba907c81..ad7d034a183 100644
--- a/src/emu/bus/isa/gus.c
+++ b/src/devices/bus/isa/gus.c
@@ -1438,7 +1438,7 @@ READ8_MEMBER(isa16_gus_device::joy_r)
data = ioport("gus_joy")->read() | 0x0f;
{
- delta = ((new_time - m_joy_time) * 256 * 1000).seconds;
+ delta = ((new_time - m_joy_time) * 256 * 1000).seconds();
if (ioport("gus_joy_1")->read() < delta) data &= ~0x01;
if (ioport("gus_joy_2")->read() < delta) data &= ~0x02;
diff --git a/src/emu/bus/isa/gus.h b/src/devices/bus/isa/gus.h
index 60d03cf0262..60d03cf0262 100644
--- a/src/emu/bus/isa/gus.h
+++ b/src/devices/bus/isa/gus.h
diff --git a/src/emu/bus/isa/hdc.c b/src/devices/bus/isa/hdc.c
index 45b6bc334dd..45b6bc334dd 100644
--- a/src/emu/bus/isa/hdc.c
+++ b/src/devices/bus/isa/hdc.c
diff --git a/src/emu/bus/isa/hdc.h b/src/devices/bus/isa/hdc.h
index 21a47707e69..21a47707e69 100644
--- a/src/emu/bus/isa/hdc.h
+++ b/src/devices/bus/isa/hdc.h
diff --git a/src/emu/bus/isa/ibm_mfc.c b/src/devices/bus/isa/ibm_mfc.c
index 293162aa70a..293162aa70a 100644
--- a/src/emu/bus/isa/ibm_mfc.c
+++ b/src/devices/bus/isa/ibm_mfc.c
diff --git a/src/emu/bus/isa/ibm_mfc.h b/src/devices/bus/isa/ibm_mfc.h
index 51bcace8bd8..51bcace8bd8 100644
--- a/src/emu/bus/isa/ibm_mfc.h
+++ b/src/devices/bus/isa/ibm_mfc.h
diff --git a/src/emu/bus/isa/ide.c b/src/devices/bus/isa/ide.c
index 9215572bb19..9215572bb19 100644
--- a/src/emu/bus/isa/ide.c
+++ b/src/devices/bus/isa/ide.c
diff --git a/src/emu/bus/isa/ide.h b/src/devices/bus/isa/ide.h
index 290eee2a153..290eee2a153 100644
--- a/src/emu/bus/isa/ide.h
+++ b/src/devices/bus/isa/ide.h
diff --git a/src/emu/bus/isa/isa.c b/src/devices/bus/isa/isa.c
index 5b8b213580e..5b8b213580e 100644
--- a/src/emu/bus/isa/isa.c
+++ b/src/devices/bus/isa/isa.c
diff --git a/src/emu/bus/isa/isa.h b/src/devices/bus/isa/isa.h
index e851cebe8af..e851cebe8af 100644
--- a/src/emu/bus/isa/isa.h
+++ b/src/devices/bus/isa/isa.h
diff --git a/src/emu/bus/isa/isa_cards.c b/src/devices/bus/isa/isa_cards.c
index 8835fc00ec6..a9ab1b9dc8f 100644
--- a/src/emu/bus/isa/isa_cards.c
+++ b/src/devices/bus/isa/isa_cards.c
@@ -18,6 +18,7 @@ SLOT_INTERFACE_START( pc_isa8_cards )
SLOT_INTERFACE("aga", ISA8_AGA)
SLOT_INTERFACE("aga_pc200", ISA8_AGA_PC200)
SLOT_INTERFACE("ega", ISA8_EGA)
+ SLOT_INTERFACE("pgc", ISA8_PGC)
SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
SLOT_INTERFACE("com", ISA8_COM)
@@ -55,6 +56,7 @@ SLOT_INTERFACE_START( pc_isa16_cards )
SLOT_INTERFACE("cga", ISA8_CGA)
SLOT_INTERFACE("wyse700", ISA8_WYSE700)
SLOT_INTERFACE("ega", ISA8_EGA)
+ SLOT_INTERFACE("pgc", ISA8_PGC)
SLOT_INTERFACE("vga", ISA8_VGA)
SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
SLOT_INTERFACE("num9rev",ISA8_NUM_9_REV)
diff --git a/src/emu/bus/isa/isa_cards.h b/src/devices/bus/isa/isa_cards.h
index 731d0d901fa..5133d4772d4 100644
--- a/src/emu/bus/isa/isa_cards.h
+++ b/src/devices/bus/isa/isa_cards.h
@@ -18,6 +18,7 @@
#include "cga.h"
#include "aga.h"
#include "ega.h"
+#include "pgc.h"
#include "vga.h"
#include "vga_ati.h"
#include "svga_cirrus.h"
diff --git a/src/emu/bus/isa/lpt.c b/src/devices/bus/isa/lpt.c
index 28219c8a988..28219c8a988 100644
--- a/src/emu/bus/isa/lpt.c
+++ b/src/devices/bus/isa/lpt.c
diff --git a/src/emu/bus/isa/lpt.h b/src/devices/bus/isa/lpt.h
index 4f73b68c5d5..4f73b68c5d5 100644
--- a/src/emu/bus/isa/lpt.h
+++ b/src/devices/bus/isa/lpt.h
diff --git a/src/emu/bus/isa/mach32.c b/src/devices/bus/isa/mach32.c
index 46121451182..46121451182 100644
--- a/src/emu/bus/isa/mach32.c
+++ b/src/devices/bus/isa/mach32.c
diff --git a/src/emu/bus/isa/mach32.h b/src/devices/bus/isa/mach32.h
index 340ca31a8bb..340ca31a8bb 100644
--- a/src/emu/bus/isa/mach32.h
+++ b/src/devices/bus/isa/mach32.h
diff --git a/src/emu/bus/isa/mc1502_fdc.c b/src/devices/bus/isa/mc1502_fdc.c
index ada13d1d4ec..ada13d1d4ec 100644
--- a/src/emu/bus/isa/mc1502_fdc.c
+++ b/src/devices/bus/isa/mc1502_fdc.c
diff --git a/src/emu/bus/isa/mc1502_fdc.h b/src/devices/bus/isa/mc1502_fdc.h
index 344b4df9ff0..344b4df9ff0 100644
--- a/src/emu/bus/isa/mc1502_fdc.h
+++ b/src/devices/bus/isa/mc1502_fdc.h
diff --git a/src/emu/bus/isa/mc1502_rom.c b/src/devices/bus/isa/mc1502_rom.c
index 9a12c5ec712..9a12c5ec712 100644
--- a/src/emu/bus/isa/mc1502_rom.c
+++ b/src/devices/bus/isa/mc1502_rom.c
diff --git a/src/emu/bus/isa/mc1502_rom.h b/src/devices/bus/isa/mc1502_rom.h
index 9e426d93ab3..9e426d93ab3 100644
--- a/src/emu/bus/isa/mc1502_rom.h
+++ b/src/devices/bus/isa/mc1502_rom.h
diff --git a/src/emu/bus/isa/mda.c b/src/devices/bus/isa/mda.c
index 1d8991cab7a..1d8991cab7a 100644
--- a/src/emu/bus/isa/mda.c
+++ b/src/devices/bus/isa/mda.c
diff --git a/src/emu/bus/isa/mda.h b/src/devices/bus/isa/mda.h
index 8c62520308b..8c62520308b 100644
--- a/src/emu/bus/isa/mda.h
+++ b/src/devices/bus/isa/mda.h
diff --git a/src/emu/bus/isa/mpu401.c b/src/devices/bus/isa/mpu401.c
index 420a753b750..420a753b750 100644
--- a/src/emu/bus/isa/mpu401.c
+++ b/src/devices/bus/isa/mpu401.c
diff --git a/src/emu/bus/isa/mpu401.h b/src/devices/bus/isa/mpu401.h
index b31bb3a2308..b31bb3a2308 100644
--- a/src/emu/bus/isa/mpu401.h
+++ b/src/devices/bus/isa/mpu401.h
diff --git a/src/emu/bus/isa/mufdc.c b/src/devices/bus/isa/mufdc.c
index 0a983dc7a2e..0a983dc7a2e 100644
--- a/src/emu/bus/isa/mufdc.c
+++ b/src/devices/bus/isa/mufdc.c
diff --git a/src/emu/bus/isa/mufdc.h b/src/devices/bus/isa/mufdc.h
index bf33d8f4a6d..bf33d8f4a6d 100644
--- a/src/emu/bus/isa/mufdc.h
+++ b/src/devices/bus/isa/mufdc.h
diff --git a/src/emu/bus/isa/ne1000.c b/src/devices/bus/isa/ne1000.c
index a62d5e71f8f..a62d5e71f8f 100644
--- a/src/emu/bus/isa/ne1000.c
+++ b/src/devices/bus/isa/ne1000.c
diff --git a/src/emu/bus/isa/ne1000.h b/src/devices/bus/isa/ne1000.h
index c246c70d02f..c246c70d02f 100644
--- a/src/emu/bus/isa/ne1000.h
+++ b/src/devices/bus/isa/ne1000.h
diff --git a/src/emu/bus/isa/ne2000.c b/src/devices/bus/isa/ne2000.c
index b635f8e736c..b635f8e736c 100644
--- a/src/emu/bus/isa/ne2000.c
+++ b/src/devices/bus/isa/ne2000.c
diff --git a/src/emu/bus/isa/ne2000.h b/src/devices/bus/isa/ne2000.h
index 76a271dadc0..76a271dadc0 100644
--- a/src/emu/bus/isa/ne2000.h
+++ b/src/devices/bus/isa/ne2000.h
diff --git a/src/emu/bus/isa/num9rev.c b/src/devices/bus/isa/num9rev.c
index 8e2216654fd..8e2216654fd 100644
--- a/src/emu/bus/isa/num9rev.c
+++ b/src/devices/bus/isa/num9rev.c
diff --git a/src/emu/bus/isa/num9rev.h b/src/devices/bus/isa/num9rev.h
index 44011ddb9af..44011ddb9af 100644
--- a/src/emu/bus/isa/num9rev.h
+++ b/src/devices/bus/isa/num9rev.h
diff --git a/src/emu/bus/isa/omti8621.c b/src/devices/bus/isa/omti8621.c
index 96b1214ff85..96b1214ff85 100644
--- a/src/emu/bus/isa/omti8621.c
+++ b/src/devices/bus/isa/omti8621.c
diff --git a/src/emu/bus/isa/omti8621.h b/src/devices/bus/isa/omti8621.h
index 1a49a8e3993..1a49a8e3993 100644
--- a/src/emu/bus/isa/omti8621.h
+++ b/src/devices/bus/isa/omti8621.h
diff --git a/src/emu/bus/isa/p1_fdc.c b/src/devices/bus/isa/p1_fdc.c
index 4ba01ed47da..4ba01ed47da 100644
--- a/src/emu/bus/isa/p1_fdc.c
+++ b/src/devices/bus/isa/p1_fdc.c
diff --git a/src/emu/bus/isa/p1_fdc.h b/src/devices/bus/isa/p1_fdc.h
index 810f7e4cba0..810f7e4cba0 100644
--- a/src/emu/bus/isa/p1_fdc.h
+++ b/src/devices/bus/isa/p1_fdc.h
diff --git a/src/emu/bus/isa/p1_hdc.c b/src/devices/bus/isa/p1_hdc.c
index eb8d68524eb..eb8d68524eb 100644
--- a/src/emu/bus/isa/p1_hdc.c
+++ b/src/devices/bus/isa/p1_hdc.c
diff --git a/src/emu/bus/isa/p1_hdc.h b/src/devices/bus/isa/p1_hdc.h
index f1a844b5edc..f1a844b5edc 100644
--- a/src/emu/bus/isa/p1_hdc.h
+++ b/src/devices/bus/isa/p1_hdc.h
diff --git a/src/emu/bus/isa/p1_rom.c b/src/devices/bus/isa/p1_rom.c
index bd078972a04..bd078972a04 100644
--- a/src/emu/bus/isa/p1_rom.c
+++ b/src/devices/bus/isa/p1_rom.c
diff --git a/src/emu/bus/isa/p1_rom.h b/src/devices/bus/isa/p1_rom.h
index 7b5ddd79150..7b5ddd79150 100644
--- a/src/emu/bus/isa/p1_rom.h
+++ b/src/devices/bus/isa/p1_rom.h
diff --git a/src/emu/bus/isa/pc1640_iga.c b/src/devices/bus/isa/pc1640_iga.c
index 127d90560b5..127d90560b5 100644
--- a/src/emu/bus/isa/pc1640_iga.c
+++ b/src/devices/bus/isa/pc1640_iga.c
diff --git a/src/emu/bus/isa/pc1640_iga.h b/src/devices/bus/isa/pc1640_iga.h
index 3bb632528d4..3bb632528d4 100644
--- a/src/emu/bus/isa/pc1640_iga.h
+++ b/src/devices/bus/isa/pc1640_iga.h
diff --git a/src/emu/bus/isa/pds.c b/src/devices/bus/isa/pds.c
index 235e0acdd02..235e0acdd02 100644
--- a/src/emu/bus/isa/pds.c
+++ b/src/devices/bus/isa/pds.c
diff --git a/src/emu/bus/isa/pds.h b/src/devices/bus/isa/pds.h
index d9d255cb19c..d9d255cb19c 100644
--- a/src/emu/bus/isa/pds.h
+++ b/src/devices/bus/isa/pds.h
diff --git a/src/devices/bus/isa/pgc.c b/src/devices/bus/isa/pgc.c
new file mode 100644
index 00000000000..01ef4668b58
--- /dev/null
+++ b/src/devices/bus/isa/pgc.c
@@ -0,0 +1,365 @@
+// license:BSD-3-Clause
+// copyright-holders:Sergey Svishchev
+
+/***************************************************************************
+
+ IBM Professional Graphics Controller (PGC), skeleton driver.
+
+ Designed for IBM by Vermont Microsystems. References:
+
+ IBM Options and Adapters manual
+ http://www.minuszerodegrees.net/oa/OA%20-%20IBM%20Professional%20Graphics%20Controller.pdf
+ http://bitsavers.org/pdf/ibm/pc/cards/Technical_Reference_Options_and_Adapters_Volume_3.pdf
+ IBM Systems Journal white paper
+ http://wayback.archive.org/web/20061015235146/http://www.research.ibm.com/journal/sj/241/ibmsj2401D.pdf
+ John Elliott's page
+ http://www.seasip.info/VintagePC/pgc.html
+
+ To do:
+ - decode memory map
+ - various VRAM write modes
+ - what's up with irq 3 (= vblank irq)? (causes soft reset)
+ - "test pin of the microprocessor samples the hsync pulse"
+ - CGA emulator
+ - bus state handling?
+ - VRAM address translator ROM?
+
+***************************************************************************/
+
+#include "emu.h"
+
+#include "pgc.h"
+
+#define VERBOSE_PGC 1
+
+#define DBG_LOG(N,M,A) \
+ do { \
+ if(VERBOSE_PGC>=N) \
+ { \
+ if( M ) \
+ logerror("%11.6f at %s: %-24s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
+ logerror A; \
+ } \
+ } while (0)
+
+#define PGC_SCREEN_NAME "pgc_screen"
+
+#define PGC_TOTAL_HORZ 820
+#define PGC_DISP_HORZ 640
+#define PGC_HORZ_START 80
+
+#define PGC_TOTAL_VERT 508
+#define PGC_DISP_VERT 480
+#define PGC_VERT_START 10
+
+/*
+ Prototypes
+*/
+
+ROM_START( pgc )
+ ROM_REGION(0x100000, "maincpu", 0)
+ ROM_DEFAULT_BIOS("1985")
+
+ ROM_SYSTEM_BIOS(0, "1984", "1984 firmware, P/N 6137322/3")
+ ROMX_LOAD("ibm_6137323_pgc_card_27256.bin", 0x00000, 0x8000, CRC(f564f342) SHA1(c5ef17fd1569043cb59f61faf828ea8b0ee95526), ROM_BIOS(1))
+ ROMX_LOAD("ibm_6137322_pgc_card_27256.bin", 0x08000, 0x8000, CRC(5e6cc82f) SHA1(45b3ffb5a9c51986862f8d47b3e03dcaaf4073d5), ROM_BIOS(1))
+
+ ROM_SYSTEM_BIOS(1, "1985", "1985 firmware, P/N 59X7354/5")
+ ROMX_LOAD("pgc_u44.bin", 0x00000, 0x8000, CRC(71280241) SHA1(7042ccd4ebd03f576a256a433b8aa38d1b4fefa8), ROM_BIOS(2))
+ ROMX_LOAD("pgc_u43.bin", 0x08000, 0x8000, CRC(923f5ea3) SHA1(2b2a55d64b20d3a613b00c51443105aa03eca5d6), ROM_BIOS(2))
+
+ ROM_REGION(0x800, "commarea", ROMREGION_ERASE00)
+
+ ROM_REGION(0x1000, "chargen", 0)
+ ROM_LOAD("pgc_u27.bin", 0x0000, 0x1000, CRC(6be256cc) SHA1(deb1195886268dcddce10459911e020f7a9f74f7))
+ROM_END
+
+static INPUT_PORTS_START( pgc )
+ PORT_START("DSW")
+/*
+ PORT_DIPNAME( 0x01, 0x00, "CGA emulator")
+ PORT_DIPSETTING( 0x00, DEF_STR(No) )
+ PORT_DIPSETTING( 0x01, DEF_STR(Yes) )
+*/
+ PORT_DIPNAME( 0x02, 0x00, "Communication area")
+ PORT_DIPSETTING( 0x00, "C6000" )
+ PORT_DIPSETTING( 0x02, "C6400" )
+INPUT_PORTS_END
+
+/*
+write only
+ 30000 LUT WR O L
+ 30001 LUT WR I L
+ 32000 MODE WT L
+ 32001 NIBBLE WT L
+ 3200A ??
+ 34000 FUNCTION WT L
+ 34001 STARTADD WT L
+ 36001 CURSOR WT L
+
+read only
+ 38000 LUT RD O L
+ 38001 LUT RD I L
+ 3C001 INIT L/INIT H
+*/
+
+static ADDRESS_MAP_START( pgc_map, AS_PROGRAM, 8, isa8_pgc_device )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x00000, 0x07fff) AM_ROM
+ AM_RANGE(0x08000, 0x0ffff) AM_ROM AM_REGION("maincpu", 0x8000)
+ AM_RANGE(0x10000, 0x1001f) AM_READWRITE(stateparam_r, stateparam_w)
+// AM_RANGE(0x18000, 0x18fff) AM_RAM // ??
+ AM_RANGE(0x28000, 0x287ff) AM_RAM AM_REGION("commarea", 0) AM_MIRROR(0x800)
+ AM_RANGE(0x3c000, 0x3c001) AM_READ(init_r)
+// AM_RANGE(0x3e000, 0x3efff) AM_RAM // ??
+ AM_RANGE(0xf8000, 0xfffff) AM_ROM AM_REGION("maincpu", 0x8000)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( pgc_io, AS_IO, 8, isa8_pgc_device )
+ ADDRESS_MAP_UNMAP_HIGH
+ADDRESS_MAP_END
+
+static const gfx_layout pgc_charlayout =
+{
+ 8, 16, /* 8x16 pixels */
+ 256, /* 256 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ /* y offsets */
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
+ 8*16 /* every char takes 10 bytes */
+};
+
+static GFXDECODE_START( pgc )
+ GFXDECODE_REVERSEBITS("chargen", 0, pgc_charlayout, 0, 1)
+GFXDECODE_END
+
+MACHINE_CONFIG_FRAGMENT( pcvideo_pgc )
+ MCFG_CPU_ADD("maincpu", I8088, XTAL_24MHz/3)
+ MCFG_CPU_PROGRAM_MAP(pgc_map)
+ MCFG_CPU_IO_MAP(pgc_io)
+#if 0
+ MCFG_CPU_VBLANK_INT_DRIVER(PGC_SCREEN_NAME, isa8_pgc_device, vblank_irq)
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(isa8_pgc_device, irq_callback)
+#endif
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", isa8_pgc_device, scanline_callback,
+ attotime::from_hz(60*PGC_TOTAL_VERT))
+ MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL_50MHz/(2*PGC_HORZ_START)))
+
+ MCFG_SCREEN_ADD(PGC_SCREEN_NAME, RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_50MHz/2,
+ PGC_TOTAL_HORZ, PGC_HORZ_START, PGC_HORZ_START+PGC_DISP_HORZ,
+ PGC_TOTAL_VERT, PGC_VERT_START, PGC_VERT_START+PGC_DISP_VERT)
+ MCFG_SCREEN_UPDATE_DRIVER(isa8_pgc_device, screen_update)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", pgc)
+ MCFG_PALETTE_ADD( "palette", 256 )
+MACHINE_CONFIG_END
+
+//**************************************************************************
+// GLOBAL VARIABLES
+//**************************************************************************
+
+const device_type ISA8_PGC = &device_creator<isa8_pgc_device>;
+
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor isa8_pgc_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( pcvideo_pgc );
+}
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const rom_entry *isa8_pgc_device::device_rom_region() const
+{
+ return ROM_NAME( pgc );
+}
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor isa8_pgc_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( pgc );
+}
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// isa8_pgc_device - constructor
+//-------------------------------------------------
+
+isa8_pgc_device::isa8_pgc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, ISA8_PGC, "IBM Professional Graphics Controller", tag, owner, clock, "isa_ibm_pgc", __FILE__),
+ device_isa8_card_interface(mconfig, *this),
+ m_cpu(*this, "maincpu"),
+ m_screen(*this, PGC_SCREEN_NAME),
+ m_palette(*this, "palette")
+{
+}
+
+isa8_pgc_device::isa8_pgc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
+ device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ device_isa8_card_interface(mconfig, *this),
+ m_cpu(*this, "maincpu"),
+ m_screen(*this, PGC_SCREEN_NAME),
+ m_palette(*this, "palette")
+{
+}
+
+void isa8_pgc_device::device_start()
+{
+ address_space &space = m_cpu->space( AS_PROGRAM );
+ int width = PGC_DISP_HORZ;
+ int height = PGC_DISP_VERT;
+
+ if (m_palette != NULL && !m_palette->started())
+ throw device_missing_dependencies();
+
+ set_isa_device();
+
+ for (int i = 0; i < 256; i++ )
+ {
+ m_palette->set_pen_color( i, 0, 0, 0 );
+ }
+
+ m_bitmap = auto_bitmap_ind16_alloc(machine(), width, height);
+ m_bitmap->fill(0);
+
+ m_vram = auto_alloc_array(machine(), UINT8, 0x78000);
+ space.install_readwrite_bank(0x80000, 0xf7fff, "vram");
+ membank("vram")->set_base(m_vram);
+
+ m_eram = auto_alloc_array(machine(), UINT8, 0x8000);
+
+ machine().add_notifier(MACHINE_NOTIFY_RESET, machine_notify_delegate(FUNC(isa8_pgc_device::reset_common), this));
+}
+
+void isa8_pgc_device::reset_common()
+{
+ address_space &space = m_cpu->space( AS_PROGRAM );
+
+ space.unmap_readwrite(0xf8000, 0xfffff);
+ space.install_rom(0xf8000, 0xfffff, memregion("maincpu")->base() + 0x8000);
+}
+
+void isa8_pgc_device::device_reset()
+{
+ memset(m_stateparam, 0, sizeof(m_stateparam));
+ memset(m_lut, 0, sizeof(m_lut));
+
+ m_commarea = memregion("commarea")->base();
+ if (BIT(ioport("DSW")->read(), 1))
+ m_isa->install_bank(0xc6400, 0xc67ff, 0, 0, "commarea", m_commarea);
+ else
+ m_isa->install_bank(0xc6000, 0xc63ff, 0, 0, "commarea", m_commarea);
+}
+
+//
+
+INTERRUPT_GEN_MEMBER(isa8_pgc_device::vblank_irq)
+{
+ DBG_LOG(2,"irq",("vblank_irq\n"));
+ m_cpu->set_input_line(0, ASSERT_LINE);
+}
+
+IRQ_CALLBACK_MEMBER(isa8_pgc_device::irq_callback)
+{
+ DBG_LOG(2,"irq",("irq_callback\n"));
+ m_cpu->set_input_line(0, CLEAR_LINE);
+ return 3;
+}
+
+// memory handlers
+
+READ8_MEMBER( isa8_pgc_device::stateparam_r ) {
+ UINT8 ret;
+
+ ret = m_stateparam[offset >> 1];
+ if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0)
+ {
+ DBG_LOG(1,"stateparam",("R @ %02x == %02x\n", offset, ret));
+ }
+ return ret;
+}
+
+WRITE8_MEMBER( isa8_pgc_device::stateparam_w ) {
+ if ((machine().debug_flags & DEBUG_FLAG_ENABLED) != 0)
+ {
+ DBG_LOG(1,"stateparam",("W @ %02x <- %02x\n", offset, data));
+ }
+ m_stateparam[offset >> 1] = data;
+}
+
+WRITE8_MEMBER( isa8_pgc_device::lut_w ) {
+ UINT8 o = (offset >> 1) * 3;
+
+ if (offset & 1) {
+ m_lut[o + 2] = (data & 15) << 4;
+ m_palette->set_pen_color( offset >> 1, m_lut[o], m_lut[o + 1], m_lut[o + 2] );
+ DBG_LOG(1,"lut",("W @ %02X <- %d %d %d\n",
+ offset >> 1, m_lut[o], m_lut[o + 1], m_lut[o + 2] ));
+ } else {
+ m_lut[o ] = data & 0xf0;
+ m_lut[o + 1] = (data & 15) << 4;
+ }
+}
+
+READ8_MEMBER( isa8_pgc_device::init_r ) {
+ DBG_LOG(1,"INIT",("unmapping ROM\n"));
+ space.unmap_read(0xf8000, 0xfffff);
+
+ DBG_LOG(1,"INIT",("mapping emulator RAM\n"));
+ space.install_readwrite_bank(0xf8000, 0xfffff, "eram");
+ membank("eram")->set_base(m_eram);
+
+ DBG_LOG(1,"INIT",("mapping LUT\n"));
+ space.install_write_handler(0xf8400, 0xf85ff,
+ write8_delegate(FUNC(isa8_pgc_device::lut_w), this));
+
+ return 0; // XXX ignored
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(isa8_pgc_device::scanline_callback)
+{
+ UINT16 x, y = m_screen->vpos();
+ UINT16 *p;
+ UINT8 *v;
+
+ // XXX hpos shifts every frame -- fix
+ if (y == 0) DBG_LOG(2,"scanline_cb",
+ ("frame %d x %.4d y %.3d\n",
+ (int) m_screen->frame_number(), m_screen->hpos(), y));
+
+ if (y < PGC_VERT_START) return;
+ y -= PGC_VERT_START;
+ if (y >= PGC_DISP_VERT) return;
+
+ // XXX address translation happens in hardware
+ v = &m_vram[y * 1024];
+ p = &m_bitmap->pix16(y, 0);
+
+ for (x = 0; x < PGC_DISP_HORZ; x++) {
+ *p++ = *v++;
+ }
+}
+
+UINT32 isa8_pgc_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ copybitmap(bitmap, *m_bitmap, 0, 0, PGC_HORZ_START, PGC_VERT_START, cliprect);
+ return 0;
+}
diff --git a/src/devices/bus/isa/pgc.h b/src/devices/bus/isa/pgc.h
new file mode 100644
index 00000000000..9e5361bf105
--- /dev/null
+++ b/src/devices/bus/isa/pgc.h
@@ -0,0 +1,69 @@
+// license:BSD-3-Clause
+// copyright-holders:Sergey Svishchev
+
+#pragma once
+
+#ifndef __ISA_PGC_H__
+#define __ISA_PGC_H__
+
+#include "emu.h"
+
+#include "cpu/i86/i86.h"
+#include "isa.h"
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> isa8_pgc_device
+
+class isa8_pgc_device :
+ public device_t,
+ public device_isa8_card_interface
+{
+public:
+ // construction/destruction
+ isa8_pgc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ isa8_pgc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual const rom_entry *device_rom_region() const;
+ virtual ioport_constructor device_input_ports() const;
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ TIMER_DEVICE_CALLBACK_MEMBER( scanline_callback );
+ INTERRUPT_GEN_MEMBER(vblank_irq);
+ IRQ_CALLBACK_MEMBER(irq_callback);
+
+ DECLARE_WRITE8_MEMBER( stateparam_w );
+ DECLARE_READ8_MEMBER( stateparam_r );
+ DECLARE_WRITE8_MEMBER( lut_w );
+ DECLARE_READ8_MEMBER( init_r );
+
+ void reset_common();
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ required_device<i8088_cpu_device> m_cpu;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+
+ UINT8 *m_commarea;
+ UINT8 *m_vram;
+ UINT8 *m_eram;
+ UINT8 m_stateparam[16];
+ UINT8 m_lut[256*3];
+ bitmap_ind16 *m_bitmap;
+};
+
+
+// device type definition
+extern const device_type ISA8_PGC;
+
+#endif /* __ISA_PGC_H__ */
diff --git a/src/emu/bus/isa/s3virge.c b/src/devices/bus/isa/s3virge.c
index 965e47e50f0..965e47e50f0 100644
--- a/src/emu/bus/isa/s3virge.c
+++ b/src/devices/bus/isa/s3virge.c
diff --git a/src/emu/bus/isa/s3virge.h b/src/devices/bus/isa/s3virge.h
index 44bed38689f..44bed38689f 100644
--- a/src/emu/bus/isa/s3virge.h
+++ b/src/devices/bus/isa/s3virge.h
diff --git a/src/emu/bus/isa/sb16.c b/src/devices/bus/isa/sb16.c
index b39195c9557..b39195c9557 100644
--- a/src/emu/bus/isa/sb16.c
+++ b/src/devices/bus/isa/sb16.c
diff --git a/src/emu/bus/isa/sb16.h b/src/devices/bus/isa/sb16.h
index 0236f97ea3f..0236f97ea3f 100644
--- a/src/emu/bus/isa/sb16.h
+++ b/src/devices/bus/isa/sb16.h
diff --git a/src/emu/bus/isa/sblaster.c b/src/devices/bus/isa/sblaster.c
index 9b02d91b5c4..15b7191af29 100644
--- a/src/emu/bus/isa/sblaster.c
+++ b/src/devices/bus/isa/sblaster.c
@@ -66,10 +66,10 @@ static MACHINE_CONFIG_FRAGMENT( sblaster1_0_config )
MCFG_SOUND_ADD("ym3812", YM3812, ym3812_StdClock)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 3.00)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 3.00)
- MCFG_SAA1099_ADD("saa1099.1", 7159000)
+ MCFG_SAA1099_ADD("saa1099.1", 7159090)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
- MCFG_SAA1099_ADD("saa1099.2", 7159000)
+ MCFG_SAA1099_ADD("saa1099.2", 7159090)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
diff --git a/src/emu/bus/isa/sblaster.h b/src/devices/bus/isa/sblaster.h
index fc8be653fd1..fc8be653fd1 100644
--- a/src/emu/bus/isa/sblaster.h
+++ b/src/devices/bus/isa/sblaster.h
diff --git a/src/emu/bus/isa/sc499.c b/src/devices/bus/isa/sc499.c
index ea6969afe1a..ea6969afe1a 100644
--- a/src/emu/bus/isa/sc499.c
+++ b/src/devices/bus/isa/sc499.c
diff --git a/src/emu/bus/isa/sc499.h b/src/devices/bus/isa/sc499.h
index a83b61564b8..a83b61564b8 100644
--- a/src/emu/bus/isa/sc499.h
+++ b/src/devices/bus/isa/sc499.h
diff --git a/src/emu/bus/isa/side116.c b/src/devices/bus/isa/side116.c
index 2de8254ffe4..2de8254ffe4 100644
--- a/src/emu/bus/isa/side116.c
+++ b/src/devices/bus/isa/side116.c
diff --git a/src/emu/bus/isa/side116.h b/src/devices/bus/isa/side116.h
index 43c7a003810..43c7a003810 100644
--- a/src/emu/bus/isa/side116.h
+++ b/src/devices/bus/isa/side116.h
diff --git a/src/emu/bus/isa/ssi2001.c b/src/devices/bus/isa/ssi2001.c
index 4a77e870190..4a77e870190 100644
--- a/src/emu/bus/isa/ssi2001.c
+++ b/src/devices/bus/isa/ssi2001.c
diff --git a/src/emu/bus/isa/ssi2001.h b/src/devices/bus/isa/ssi2001.h
index 589adac9f0b..589adac9f0b 100644
--- a/src/emu/bus/isa/ssi2001.h
+++ b/src/devices/bus/isa/ssi2001.h
diff --git a/src/emu/bus/isa/stereo_fx.c b/src/devices/bus/isa/stereo_fx.c
index 4c1f3a37a80..4c1f3a37a80 100644
--- a/src/emu/bus/isa/stereo_fx.c
+++ b/src/devices/bus/isa/stereo_fx.c
diff --git a/src/emu/bus/isa/stereo_fx.h b/src/devices/bus/isa/stereo_fx.h
index d82367cfff9..d82367cfff9 100644
--- a/src/emu/bus/isa/stereo_fx.h
+++ b/src/devices/bus/isa/stereo_fx.h
diff --git a/src/emu/bus/isa/svga_cirrus.c b/src/devices/bus/isa/svga_cirrus.c
index bf6ff8842e0..bf6ff8842e0 100644
--- a/src/emu/bus/isa/svga_cirrus.c
+++ b/src/devices/bus/isa/svga_cirrus.c
diff --git a/src/emu/bus/isa/svga_cirrus.h b/src/devices/bus/isa/svga_cirrus.h
index 5259590bf7e..5259590bf7e 100644
--- a/src/emu/bus/isa/svga_cirrus.h
+++ b/src/devices/bus/isa/svga_cirrus.h
diff --git a/src/emu/bus/isa/svga_s3.c b/src/devices/bus/isa/svga_s3.c
index 01ac8d3053a..01ac8d3053a 100644
--- a/src/emu/bus/isa/svga_s3.c
+++ b/src/devices/bus/isa/svga_s3.c
diff --git a/src/emu/bus/isa/svga_s3.h b/src/devices/bus/isa/svga_s3.h
index 5e62d941fa3..5e62d941fa3 100644
--- a/src/emu/bus/isa/svga_s3.h
+++ b/src/devices/bus/isa/svga_s3.h
diff --git a/src/emu/bus/isa/svga_trident.c b/src/devices/bus/isa/svga_trident.c
index affbf97a6a5..affbf97a6a5 100644
--- a/src/emu/bus/isa/svga_trident.c
+++ b/src/devices/bus/isa/svga_trident.c
diff --git a/src/emu/bus/isa/svga_trident.h b/src/devices/bus/isa/svga_trident.h
index d5dde48d531..d5dde48d531 100644
--- a/src/emu/bus/isa/svga_trident.h
+++ b/src/devices/bus/isa/svga_trident.h
diff --git a/src/emu/bus/isa/svga_tseng.c b/src/devices/bus/isa/svga_tseng.c
index d1be1f4ec9b..d1be1f4ec9b 100644
--- a/src/emu/bus/isa/svga_tseng.c
+++ b/src/devices/bus/isa/svga_tseng.c
diff --git a/src/emu/bus/isa/svga_tseng.h b/src/devices/bus/isa/svga_tseng.h
index 23700089f0e..23700089f0e 100644
--- a/src/emu/bus/isa/svga_tseng.h
+++ b/src/devices/bus/isa/svga_tseng.h
diff --git a/src/emu/bus/isa/trident.c b/src/devices/bus/isa/trident.c
index 03f646139be..03f646139be 100644
--- a/src/emu/bus/isa/trident.c
+++ b/src/devices/bus/isa/trident.c
diff --git a/src/emu/bus/isa/trident.h b/src/devices/bus/isa/trident.h
index e8c03a5254b..e8c03a5254b 100644
--- a/src/emu/bus/isa/trident.h
+++ b/src/devices/bus/isa/trident.h
diff --git a/src/emu/bus/isa/vga.c b/src/devices/bus/isa/vga.c
index 8b52309b31f..8b52309b31f 100644
--- a/src/emu/bus/isa/vga.c
+++ b/src/devices/bus/isa/vga.c
diff --git a/src/emu/bus/isa/vga.h b/src/devices/bus/isa/vga.h
index 4317592b33b..4317592b33b 100644
--- a/src/emu/bus/isa/vga.h
+++ b/src/devices/bus/isa/vga.h
diff --git a/src/emu/bus/isa/vga_ati.c b/src/devices/bus/isa/vga_ati.c
index dc6c9930ed2..dc6c9930ed2 100644
--- a/src/emu/bus/isa/vga_ati.c
+++ b/src/devices/bus/isa/vga_ati.c
diff --git a/src/emu/bus/isa/vga_ati.h b/src/devices/bus/isa/vga_ati.h
index 94c5167f1d5..94c5167f1d5 100644
--- a/src/emu/bus/isa/vga_ati.h
+++ b/src/devices/bus/isa/vga_ati.h
diff --git a/src/emu/bus/isa/wd1002a_wx1.c b/src/devices/bus/isa/wd1002a_wx1.c
index 29df9cec729..29df9cec729 100644
--- a/src/emu/bus/isa/wd1002a_wx1.c
+++ b/src/devices/bus/isa/wd1002a_wx1.c
diff --git a/src/emu/bus/isa/wd1002a_wx1.h b/src/devices/bus/isa/wd1002a_wx1.h
index d328fb0f16b..d328fb0f16b 100644
--- a/src/emu/bus/isa/wd1002a_wx1.h
+++ b/src/devices/bus/isa/wd1002a_wx1.h
diff --git a/src/emu/bus/isa/wdxt_gen.c b/src/devices/bus/isa/wdxt_gen.c
index abd262cd918..abd262cd918 100644
--- a/src/emu/bus/isa/wdxt_gen.c
+++ b/src/devices/bus/isa/wdxt_gen.c
diff --git a/src/emu/bus/isa/wdxt_gen.h b/src/devices/bus/isa/wdxt_gen.h
index dae157cba89..dae157cba89 100644
--- a/src/emu/bus/isa/wdxt_gen.h
+++ b/src/devices/bus/isa/wdxt_gen.h
diff --git a/src/emu/bus/isa/xsu_cards.c b/src/devices/bus/isa/xsu_cards.c
index 1a24062a9d1..1a24062a9d1 100644
--- a/src/emu/bus/isa/xsu_cards.c
+++ b/src/devices/bus/isa/xsu_cards.c
diff --git a/src/emu/bus/isa/xsu_cards.h b/src/devices/bus/isa/xsu_cards.h
index 8ddd30f173d..8ddd30f173d 100644
--- a/src/emu/bus/isa/xsu_cards.h
+++ b/src/devices/bus/isa/xsu_cards.h
diff --git a/src/emu/bus/isa/xtide.c b/src/devices/bus/isa/xtide.c
index bde729cc012..bde729cc012 100644
--- a/src/emu/bus/isa/xtide.c
+++ b/src/devices/bus/isa/xtide.c
diff --git a/src/emu/bus/isa/xtide.h b/src/devices/bus/isa/xtide.h
index 762be607ea3..762be607ea3 100644
--- a/src/emu/bus/isa/xtide.h
+++ b/src/devices/bus/isa/xtide.h
diff --git a/src/emu/bus/isbx/compis_fdc.c b/src/devices/bus/isbx/compis_fdc.c
index 2718f57c78f..2718f57c78f 100644
--- a/src/emu/bus/isbx/compis_fdc.c
+++ b/src/devices/bus/isbx/compis_fdc.c
diff --git a/src/emu/bus/isbx/compis_fdc.h b/src/devices/bus/isbx/compis_fdc.h
index 3ccd294a9f8..3ccd294a9f8 100644
--- a/src/emu/bus/isbx/compis_fdc.h
+++ b/src/devices/bus/isbx/compis_fdc.h
diff --git a/src/emu/bus/isbx/isbc_218a.c b/src/devices/bus/isbx/isbc_218a.c
index 319fb66a38a..319fb66a38a 100644
--- a/src/emu/bus/isbx/isbc_218a.c
+++ b/src/devices/bus/isbx/isbc_218a.c
diff --git a/src/emu/bus/isbx/isbc_218a.h b/src/devices/bus/isbx/isbc_218a.h
index 8718c012696..8718c012696 100644
--- a/src/emu/bus/isbx/isbc_218a.h
+++ b/src/devices/bus/isbx/isbc_218a.h
diff --git a/src/emu/bus/isbx/isbx.c b/src/devices/bus/isbx/isbx.c
index 09b7d84b6fd..09b7d84b6fd 100644
--- a/src/emu/bus/isbx/isbx.c
+++ b/src/devices/bus/isbx/isbx.c
diff --git a/src/emu/bus/isbx/isbx.h b/src/devices/bus/isbx/isbx.h
index 5124b4fde60..5124b4fde60 100644
--- a/src/emu/bus/isbx/isbx.h
+++ b/src/devices/bus/isbx/isbx.h
diff --git a/src/emu/bus/kc/d002.c b/src/devices/bus/kc/d002.c
index db93fbf582c..db93fbf582c 100644
--- a/src/emu/bus/kc/d002.c
+++ b/src/devices/bus/kc/d002.c
diff --git a/src/emu/bus/kc/d002.h b/src/devices/bus/kc/d002.h
index 0f9ebe5f07e..0f9ebe5f07e 100644
--- a/src/emu/bus/kc/d002.h
+++ b/src/devices/bus/kc/d002.h
diff --git a/src/emu/bus/kc/d004.c b/src/devices/bus/kc/d004.c
index de615403d69..de615403d69 100644
--- a/src/emu/bus/kc/d004.c
+++ b/src/devices/bus/kc/d004.c
diff --git a/src/emu/bus/kc/d004.h b/src/devices/bus/kc/d004.h
index 79f45cba03a..79f45cba03a 100644
--- a/src/emu/bus/kc/d004.h
+++ b/src/devices/bus/kc/d004.h
diff --git a/src/emu/bus/kc/kc.c b/src/devices/bus/kc/kc.c
index 5ecc1b196b6..5ecc1b196b6 100644
--- a/src/emu/bus/kc/kc.c
+++ b/src/devices/bus/kc/kc.c
diff --git a/src/emu/bus/kc/kc.h b/src/devices/bus/kc/kc.h
index def77ffd955..def77ffd955 100644
--- a/src/emu/bus/kc/kc.h
+++ b/src/devices/bus/kc/kc.h
diff --git a/src/emu/bus/kc/ram.c b/src/devices/bus/kc/ram.c
index 1d747f4e53c..1d747f4e53c 100644
--- a/src/emu/bus/kc/ram.c
+++ b/src/devices/bus/kc/ram.c
diff --git a/src/emu/bus/kc/ram.h b/src/devices/bus/kc/ram.h
index 02eca67c909..02eca67c909 100644
--- a/src/emu/bus/kc/ram.h
+++ b/src/devices/bus/kc/ram.h
diff --git a/src/emu/bus/kc/rom.c b/src/devices/bus/kc/rom.c
index 3a80207dd7b..3a80207dd7b 100644
--- a/src/emu/bus/kc/rom.c
+++ b/src/devices/bus/kc/rom.c
diff --git a/src/emu/bus/kc/rom.h b/src/devices/bus/kc/rom.h
index 9cfa06eefab..9cfa06eefab 100644
--- a/src/emu/bus/kc/rom.h
+++ b/src/devices/bus/kc/rom.h
diff --git a/src/emu/bus/lpci/cirrus.c b/src/devices/bus/lpci/cirrus.c
index 61cea36a3e9..61cea36a3e9 100644
--- a/src/emu/bus/lpci/cirrus.c
+++ b/src/devices/bus/lpci/cirrus.c
diff --git a/src/emu/bus/lpci/cirrus.h b/src/devices/bus/lpci/cirrus.h
index 4de5fc32d74..4de5fc32d74 100644
--- a/src/emu/bus/lpci/cirrus.h
+++ b/src/devices/bus/lpci/cirrus.h
diff --git a/src/emu/bus/lpci/i82371ab.c b/src/devices/bus/lpci/i82371ab.c
index 9f5a9de2edd..9f5a9de2edd 100644
--- a/src/emu/bus/lpci/i82371ab.c
+++ b/src/devices/bus/lpci/i82371ab.c
diff --git a/src/emu/bus/lpci/i82371ab.h b/src/devices/bus/lpci/i82371ab.h
index a905404e14c..a905404e14c 100644
--- a/src/emu/bus/lpci/i82371ab.h
+++ b/src/devices/bus/lpci/i82371ab.h
diff --git a/src/emu/bus/lpci/i82371sb.c b/src/devices/bus/lpci/i82371sb.c
index de9cbc365e7..de9cbc365e7 100644
--- a/src/emu/bus/lpci/i82371sb.c
+++ b/src/devices/bus/lpci/i82371sb.c
diff --git a/src/emu/bus/lpci/i82371sb.h b/src/devices/bus/lpci/i82371sb.h
index b8cac08edb9..b8cac08edb9 100644
--- a/src/emu/bus/lpci/i82371sb.h
+++ b/src/devices/bus/lpci/i82371sb.h
diff --git a/src/emu/bus/lpci/i82439tx.c b/src/devices/bus/lpci/i82439tx.c
index 108302045d9..108302045d9 100644
--- a/src/emu/bus/lpci/i82439tx.c
+++ b/src/devices/bus/lpci/i82439tx.c
diff --git a/src/emu/bus/lpci/i82439tx.h b/src/devices/bus/lpci/i82439tx.h
index d6ac36a372e..d6ac36a372e 100644
--- a/src/emu/bus/lpci/i82439tx.h
+++ b/src/devices/bus/lpci/i82439tx.h
diff --git a/src/emu/bus/lpci/mpc105.c b/src/devices/bus/lpci/mpc105.c
index cd1c88c9f88..cd1c88c9f88 100644
--- a/src/emu/bus/lpci/mpc105.c
+++ b/src/devices/bus/lpci/mpc105.c
diff --git a/src/emu/bus/lpci/mpc105.h b/src/devices/bus/lpci/mpc105.h
index 404a891d446..404a891d446 100644
--- a/src/emu/bus/lpci/mpc105.h
+++ b/src/devices/bus/lpci/mpc105.h
diff --git a/src/emu/bus/lpci/northbridge.c b/src/devices/bus/lpci/northbridge.c
index ec5a0a8582a..ec5a0a8582a 100644
--- a/src/emu/bus/lpci/northbridge.c
+++ b/src/devices/bus/lpci/northbridge.c
diff --git a/src/emu/bus/lpci/northbridge.h b/src/devices/bus/lpci/northbridge.h
index f52f690ada2..f52f690ada2 100644
--- a/src/emu/bus/lpci/northbridge.h
+++ b/src/devices/bus/lpci/northbridge.h
diff --git a/src/emu/bus/lpci/pci.c b/src/devices/bus/lpci/pci.c
index 13baf9e66a3..13baf9e66a3 100644
--- a/src/emu/bus/lpci/pci.c
+++ b/src/devices/bus/lpci/pci.c
diff --git a/src/emu/bus/lpci/pci.h b/src/devices/bus/lpci/pci.h
index 87433ebdd6f..87433ebdd6f 100644
--- a/src/emu/bus/lpci/pci.h
+++ b/src/devices/bus/lpci/pci.h
diff --git a/src/emu/bus/lpci/southbridge.c b/src/devices/bus/lpci/southbridge.c
index b051d29a73a..b051d29a73a 100644
--- a/src/emu/bus/lpci/southbridge.c
+++ b/src/devices/bus/lpci/southbridge.c
diff --git a/src/emu/bus/lpci/southbridge.h b/src/devices/bus/lpci/southbridge.h
index aaf8bc973e3..aaf8bc973e3 100644
--- a/src/emu/bus/lpci/southbridge.h
+++ b/src/devices/bus/lpci/southbridge.h
diff --git a/src/devices/bus/lpci/vt82c505.c b/src/devices/bus/lpci/vt82c505.c
new file mode 100644
index 00000000000..15ba12b403b
--- /dev/null
+++ b/src/devices/bus/lpci/vt82c505.c
@@ -0,0 +1,96 @@
+// license:BSD-3-Clause
+// copyright-holders:Barry Rodewald
+/*
+
+ VIA VT82C505 ISA/VL PCI bridge
+
+*/
+
+#include "emu.h"
+#include "vt82c505.h"
+
+
+/***************************************************************************
+ IMPLEMENTATION
+***************************************************************************/
+
+const device_type VT82C505 = &device_creator<vt82c505_device>;
+
+
+vt82c505_device::vt82c505_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, VT82C505, "VIA VT82C505 PCI bridge", tag, owner, clock, "vt82c505", __FILE__),
+ pci_device_interface( mconfig, *this )
+{
+}
+
+
+UINT32 vt82c505_device::pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask)
+{
+ UINT32 result = 0;
+
+ if (function != 0)
+ return result;
+
+ switch (offset)
+ {
+ case 0x00: // vendor/device ID
+ result = 0x05051106;
+ break;
+ case 0x04: // command / status
+ result = 0x00000007;
+ break;
+ case 0x80: // DIP switch / revision, memory size, buffer control, VLB interface timing
+ result = 0x00000100;
+ break;
+ }
+ logerror("%s: PCI read func %i, offset %02x, result %08x\n",tag(),function,offset,result);
+
+ return result;
+}
+
+void vt82c505_device::pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask)
+{
+ if (function != 0)
+ return;
+
+ switch(offset)
+ {
+ case 0x84:
+ if(ACCESSING_BITS_0_7) // RX87: memory window 1 A31:24
+ {
+ m_window_addr[0] = (m_window_addr[0] & 0xff00) | (data & 0x000000ff);
+ logerror("%s: memory window #1 A31:24 set: %04x\n",tag(),m_window_addr[0]);
+ }
+ break;
+ case 0x88:
+ if(ACCESSING_BITS_24_31) // RX88: memory window 1 A23:16
+ {
+ m_window_addr[0] = (m_window_addr[0] & 0x00ff) | ((data & 0xff000000) >> 24);
+ logerror("%s: memory window #1 A23:16 set: %04x\n",tag(),m_window_addr[0]);
+ }
+ if(ACCESSING_BITS_16_23) // RX89: memory window 1 attributes
+ {
+ m_window_attr[0] = ((data & 0x00ff0000) >> 16);
+ logerror("%s: memory window #1 attributes set: %02x\n",tag(),m_window_attr[0]);
+ }
+ break;
+ }
+ logerror("%s: PCI write func %i, offset %02x, data %08x\n",tag(),function,offset,data);
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void vt82c505_device::device_start()
+{
+ /* setup save states */
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void vt82c505_device::device_reset()
+{
+}
diff --git a/src/devices/bus/lpci/vt82c505.h b/src/devices/bus/lpci/vt82c505.h
new file mode 100644
index 00000000000..8021077081f
--- /dev/null
+++ b/src/devices/bus/lpci/vt82c505.h
@@ -0,0 +1,38 @@
+// license:BSD-3-Clause
+// copyright-holders:Barry Rodewald
+/*
+
+ VIA VT82C505 PCI bridge
+
+*/
+
+#ifndef __VT82C505_H__
+#define __VT82C505_H__
+
+#include "pci.h"
+
+class vt82c505_device : public device_t,
+ public pci_device_interface
+{
+public:
+ // construction/destruction
+ vt82c505_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ virtual UINT32 pci_read(pci_bus_device *pcibus, int function, int offset, UINT32 mem_mask);
+ virtual void pci_write(pci_bus_device *pcibus, int function, int offset, UINT32 data, UINT32 mem_mask);
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ UINT16 m_window_addr[3];
+ UINT8 m_window_attr[3];
+};
+
+// device type definition
+extern const device_type VT82C505;
+
+
+#endif /* __VT82C505_H__ */
diff --git a/src/emu/bus/macpds/macpds.c b/src/devices/bus/macpds/macpds.c
index 0a2cf2477e9..0a2cf2477e9 100644
--- a/src/emu/bus/macpds/macpds.c
+++ b/src/devices/bus/macpds/macpds.c
diff --git a/src/emu/bus/macpds/macpds.h b/src/devices/bus/macpds/macpds.h
index 90c136e73bb..90c136e73bb 100644
--- a/src/emu/bus/macpds/macpds.h
+++ b/src/devices/bus/macpds/macpds.h
diff --git a/src/emu/bus/macpds/pds_tpdfpd.c b/src/devices/bus/macpds/pds_tpdfpd.c
index a9e7c36c067..a9e7c36c067 100644
--- a/src/emu/bus/macpds/pds_tpdfpd.c
+++ b/src/devices/bus/macpds/pds_tpdfpd.c
diff --git a/src/emu/bus/macpds/pds_tpdfpd.h b/src/devices/bus/macpds/pds_tpdfpd.h
index 126af9887a1..126af9887a1 100644
--- a/src/emu/bus/macpds/pds_tpdfpd.h
+++ b/src/devices/bus/macpds/pds_tpdfpd.h
diff --git a/src/emu/bus/megadrive/eeprom.c b/src/devices/bus/megadrive/eeprom.c
index e0a72f3a939..e0a72f3a939 100644
--- a/src/emu/bus/megadrive/eeprom.c
+++ b/src/devices/bus/megadrive/eeprom.c
diff --git a/src/emu/bus/megadrive/eeprom.h b/src/devices/bus/megadrive/eeprom.h
index a7916e628bf..a7916e628bf 100644
--- a/src/emu/bus/megadrive/eeprom.h
+++ b/src/devices/bus/megadrive/eeprom.h
diff --git a/src/emu/bus/megadrive/ggenie.c b/src/devices/bus/megadrive/ggenie.c
index 1c75febc54b..1c75febc54b 100644
--- a/src/emu/bus/megadrive/ggenie.c
+++ b/src/devices/bus/megadrive/ggenie.c
diff --git a/src/emu/bus/megadrive/ggenie.h b/src/devices/bus/megadrive/ggenie.h
index 010ace73441..010ace73441 100644
--- a/src/emu/bus/megadrive/ggenie.h
+++ b/src/devices/bus/megadrive/ggenie.h
diff --git a/src/emu/bus/megadrive/jcart.c b/src/devices/bus/megadrive/jcart.c
index 6e45c2481f6..6e45c2481f6 100644
--- a/src/emu/bus/megadrive/jcart.c
+++ b/src/devices/bus/megadrive/jcart.c
diff --git a/src/emu/bus/megadrive/jcart.h b/src/devices/bus/megadrive/jcart.h
index c59f3af7572..c59f3af7572 100644
--- a/src/emu/bus/megadrive/jcart.h
+++ b/src/devices/bus/megadrive/jcart.h
diff --git a/src/emu/bus/megadrive/md_carts.c b/src/devices/bus/megadrive/md_carts.c
index 698060c6014..698060c6014 100644
--- a/src/emu/bus/megadrive/md_carts.c
+++ b/src/devices/bus/megadrive/md_carts.c
diff --git a/src/emu/bus/megadrive/md_carts.h b/src/devices/bus/megadrive/md_carts.h
index b9ab25d146b..b9ab25d146b 100644
--- a/src/emu/bus/megadrive/md_carts.h
+++ b/src/devices/bus/megadrive/md_carts.h
diff --git a/src/emu/bus/megadrive/md_slot.c b/src/devices/bus/megadrive/md_slot.c
index 6caa7df817f..6caa7df817f 100644
--- a/src/emu/bus/megadrive/md_slot.c
+++ b/src/devices/bus/megadrive/md_slot.c
diff --git a/src/emu/bus/megadrive/md_slot.h b/src/devices/bus/megadrive/md_slot.h
index e7cf7e43c3b..e7cf7e43c3b 100644
--- a/src/emu/bus/megadrive/md_slot.h
+++ b/src/devices/bus/megadrive/md_slot.h
diff --git a/src/emu/bus/megadrive/rom.c b/src/devices/bus/megadrive/rom.c
index bc81477cc09..bc81477cc09 100644
--- a/src/emu/bus/megadrive/rom.c
+++ b/src/devices/bus/megadrive/rom.c
diff --git a/src/emu/bus/megadrive/rom.h b/src/devices/bus/megadrive/rom.h
index 1ecc693606e..1ecc693606e 100644
--- a/src/emu/bus/megadrive/rom.h
+++ b/src/devices/bus/megadrive/rom.h
diff --git a/src/emu/bus/megadrive/sk.c b/src/devices/bus/megadrive/sk.c
index 8c10826f685..8c10826f685 100644
--- a/src/emu/bus/megadrive/sk.c
+++ b/src/devices/bus/megadrive/sk.c
diff --git a/src/emu/bus/megadrive/sk.h b/src/devices/bus/megadrive/sk.h
index 4ad52056066..4ad52056066 100644
--- a/src/emu/bus/megadrive/sk.h
+++ b/src/devices/bus/megadrive/sk.h
diff --git a/src/emu/bus/megadrive/stm95.c b/src/devices/bus/megadrive/stm95.c
index 67c367425a6..67c367425a6 100644
--- a/src/emu/bus/megadrive/stm95.c
+++ b/src/devices/bus/megadrive/stm95.c
diff --git a/src/emu/bus/megadrive/stm95.h b/src/devices/bus/megadrive/stm95.h
index 39e40770019..39e40770019 100644
--- a/src/emu/bus/megadrive/stm95.h
+++ b/src/devices/bus/megadrive/stm95.h
diff --git a/src/emu/bus/megadrive/svp.c b/src/devices/bus/megadrive/svp.c
index 324c5302a33..324c5302a33 100644
--- a/src/emu/bus/megadrive/svp.c
+++ b/src/devices/bus/megadrive/svp.c
diff --git a/src/emu/bus/megadrive/svp.h b/src/devices/bus/megadrive/svp.h
index 0f128240a86..0f128240a86 100644
--- a/src/emu/bus/megadrive/svp.h
+++ b/src/devices/bus/megadrive/svp.h
diff --git a/src/emu/bus/midi/midi.c b/src/devices/bus/midi/midi.c
index 3c77b4ca227..3c77b4ca227 100644
--- a/src/emu/bus/midi/midi.c
+++ b/src/devices/bus/midi/midi.c
diff --git a/src/emu/bus/midi/midi.h b/src/devices/bus/midi/midi.h
index 2013e625f91..2013e625f91 100644
--- a/src/emu/bus/midi/midi.h
+++ b/src/devices/bus/midi/midi.h
diff --git a/src/emu/bus/midi/midiinport.c b/src/devices/bus/midi/midiinport.c
index 13632219c03..13632219c03 100644
--- a/src/emu/bus/midi/midiinport.c
+++ b/src/devices/bus/midi/midiinport.c
diff --git a/src/emu/bus/midi/midiinport.h b/src/devices/bus/midi/midiinport.h
index 5c95257f0e5..5c95257f0e5 100644
--- a/src/emu/bus/midi/midiinport.h
+++ b/src/devices/bus/midi/midiinport.h
diff --git a/src/emu/bus/midi/midioutport.c b/src/devices/bus/midi/midioutport.c
index 6ba39d6ee57..6ba39d6ee57 100644
--- a/src/emu/bus/midi/midioutport.c
+++ b/src/devices/bus/midi/midioutport.c
diff --git a/src/emu/bus/midi/midioutport.h b/src/devices/bus/midi/midioutport.h
index 3c0de35cb08..3c0de35cb08 100644
--- a/src/emu/bus/midi/midioutport.h
+++ b/src/devices/bus/midi/midioutport.h
diff --git a/src/emu/bus/msx_cart/arc.c b/src/devices/bus/msx_cart/arc.c
index a64f321af14..a64f321af14 100644
--- a/src/emu/bus/msx_cart/arc.c
+++ b/src/devices/bus/msx_cart/arc.c
diff --git a/src/emu/bus/msx_cart/arc.h b/src/devices/bus/msx_cart/arc.h
index 57e96c5a925..57e96c5a925 100644
--- a/src/emu/bus/msx_cart/arc.h
+++ b/src/devices/bus/msx_cart/arc.h
diff --git a/src/emu/bus/msx_cart/ascii.c b/src/devices/bus/msx_cart/ascii.c
index 7b911794eea..cb3aebf0d4d 100644
--- a/src/emu/bus/msx_cart/ascii.c
+++ b/src/devices/bus/msx_cart/ascii.c
@@ -8,6 +8,7 @@ const device_type MSX_CART_ASCII8 = &device_creator<msx_cart_ascii8>;
const device_type MSX_CART_ASCII16 = &device_creator<msx_cart_ascii16>;
const device_type MSX_CART_ASCII8_SRAM = &device_creator<msx_cart_ascii8_sram>;
const device_type MSX_CART_ASCII16_SRAM = &device_creator<msx_cart_ascii16_sram>;
+const device_type MSX_CART_MSXWRITE = &device_creator<msx_cart_msxwrite>;
msx_cart_ascii8::msx_cart_ascii8(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
@@ -441,3 +442,94 @@ WRITE8_MEMBER(msx_cart_ascii16_sram::write_cart)
}
}
}
+
+
+
+msx_cart_msxwrite::msx_cart_msxwrite(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, MSX_CART_MSXWRITE, "MSX Cartridge - MSXWRITE", tag, owner, clock, "msx_cart_msxwrite", __FILE__)
+ , msx_cart_interface(mconfig, *this)
+ , m_bank_mask(0)
+{
+ for (int i = 0; i < 2; i++)
+ {
+ m_selected_bank[i] = 0;
+ m_bank_base[i] = NULL;
+ }
+}
+
+
+void msx_cart_msxwrite::device_start()
+{
+ save_item(NAME(m_selected_bank));
+
+ machine().save().register_postload(save_prepost_delegate(FUNC(msx_cart_msxwrite::restore_banks), this));
+}
+
+
+void msx_cart_msxwrite::restore_banks()
+{
+ for (int i = 0; i < 2; i++)
+ {
+ m_bank_base[i] = get_rom_base() + (m_selected_bank[i] & m_bank_mask) * 0x4000;
+ }
+}
+
+
+void msx_cart_msxwrite::device_reset()
+{
+ for (int i = 0; i < 2; i++)
+ {
+ m_selected_bank[i] = 0;
+ }
+}
+
+
+void msx_cart_msxwrite::initialize_cartridge()
+{
+ UINT32 size = get_rom_size();
+
+ if ( size > 256 * 0x4000 )
+ {
+ fatalerror("msxwrite: ROM is too big\n");
+ }
+
+ UINT16 banks = size / 0x4000;
+
+ if (size != banks * 0x4000 || (~(banks - 1) % banks))
+ {
+ fatalerror("msxwrite: Invalid ROM size\n");
+ }
+
+ m_bank_mask = banks - 1;
+
+ restore_banks();
+}
+
+
+READ8_MEMBER(msx_cart_msxwrite::read_cart)
+{
+ if ( offset >= 0x4000 && offset < 0xC000 )
+ {
+ return m_bank_base[offset >> 15][offset & 0x3fff];
+ }
+ return 0xff;
+}
+
+
+WRITE8_MEMBER(msx_cart_msxwrite::write_cart)
+{
+ // The rom writes to 6fff and 7fff for banking, unknown whether
+ // other locations also trigger banking.
+ switch (offset)
+ {
+ case 0x6fff:
+ m_selected_bank[0] = data;
+ m_bank_base[0] = get_rom_base() + (m_selected_bank[0] & m_bank_mask) * 0x4000;
+ break;
+
+ case 0x7fff:
+ m_selected_bank[1] = data;
+ m_bank_base[1] = get_rom_base() + (m_selected_bank[1] & m_bank_mask) * 0x4000;
+ break;
+ }
+}
diff --git a/src/emu/bus/msx_cart/ascii.h b/src/devices/bus/msx_cart/ascii.h
index 46545b31ec8..e23ce939e31 100644
--- a/src/emu/bus/msx_cart/ascii.h
+++ b/src/devices/bus/msx_cart/ascii.h
@@ -10,6 +10,7 @@ extern const device_type MSX_CART_ASCII8;
extern const device_type MSX_CART_ASCII16;
extern const device_type MSX_CART_ASCII8_SRAM;
extern const device_type MSX_CART_ASCII16_SRAM;
+extern const device_type MSX_CART_MSXWRITE;
class msx_cart_ascii8 : public device_t
@@ -114,4 +115,27 @@ private:
};
+class msx_cart_msxwrite : public device_t
+ , public msx_cart_interface
+{
+public:
+ msx_cart_msxwrite(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual void initialize_cartridge();
+
+ virtual DECLARE_READ8_MEMBER(read_cart);
+ virtual DECLARE_WRITE8_MEMBER(write_cart);
+
+ void restore_banks();
+
+private:
+ UINT8 m_bank_mask;
+ UINT8 m_selected_bank[2];
+ UINT8 *m_bank_base[2];
+};
+
#endif
diff --git a/src/emu/bus/msx_cart/bm_012.c b/src/devices/bus/msx_cart/bm_012.c
index 89430da93f2..89430da93f2 100644
--- a/src/emu/bus/msx_cart/bm_012.c
+++ b/src/devices/bus/msx_cart/bm_012.c
diff --git a/src/emu/bus/msx_cart/bm_012.h b/src/devices/bus/msx_cart/bm_012.h
index ce0ad337777..ce0ad337777 100644
--- a/src/emu/bus/msx_cart/bm_012.h
+++ b/src/devices/bus/msx_cart/bm_012.h
diff --git a/src/emu/bus/msx_cart/cartridge.c b/src/devices/bus/msx_cart/cartridge.c
index 9415ab2f3c0..7f990101a08 100644
--- a/src/emu/bus/msx_cart/cartridge.c
+++ b/src/devices/bus/msx_cart/cartridge.c
@@ -10,6 +10,7 @@
#include "disk.h"
#include "dooly.h"
#include "fmpac.h"
+#include "fs_sr022.h"
#include "halnote.h"
#include "hfox.h"
#include "holy_quran.h"
@@ -39,12 +40,14 @@ SLOT_INTERFACE_START(msx_cart)
SLOT_INTERFACE_INTERNAL("rtype", MSX_CART_RTYPE)
SLOT_INTERFACE_INTERNAL("majutsushi", MSX_CART_MAJUTSUSHI)
SLOT_INTERFACE_INTERNAL("fmpac", MSX_CART_FMPAC)
+ SLOT_INTERFACE_INTERNAL("fs_sr022", MSX_CART_FS_SR022)
SLOT_INTERFACE_INTERNAL("superloderunner", MSX_CART_SUPERLODERUNNER)
SLOT_INTERFACE_INTERNAL("synthesizer", MSX_CART_SYNTHESIZER)
SLOT_INTERFACE_INTERNAL("cross_blaim", MSX_CART_CROSSBLAIM)
SLOT_INTERFACE_INTERNAL("korean_80in1", MSX_CART_KOREAN_80IN1)
SLOT_INTERFACE_INTERNAL("korean_90in1", MSX_CART_KOREAN_90IN1)
SLOT_INTERFACE_INTERNAL("korean_126in1", MSX_CART_KOREAN_126IN1)
+ SLOT_INTERFACE_INTERNAL("msxwrite", MSX_CART_MSXWRITE)
SLOT_INTERFACE_INTERNAL("sound_snatcher", MSX_CART_SOUND_SNATCHER)
SLOT_INTERFACE_INTERNAL("sound_sdsnatch", MSX_CART_SOUND_SDSNATCHER)
SLOT_INTERFACE_INTERNAL("msxaud_hxmu900", MSX_CART_MSX_AUDIO_HXMU900)
diff --git a/src/emu/bus/msx_cart/cartridge.h b/src/devices/bus/msx_cart/cartridge.h
index 6deb2140dea..6deb2140dea 100644
--- a/src/emu/bus/msx_cart/cartridge.h
+++ b/src/devices/bus/msx_cart/cartridge.h
diff --git a/src/emu/bus/msx_cart/crossblaim.c b/src/devices/bus/msx_cart/crossblaim.c
index 2b2edece1f3..2b2edece1f3 100644
--- a/src/emu/bus/msx_cart/crossblaim.c
+++ b/src/devices/bus/msx_cart/crossblaim.c
diff --git a/src/emu/bus/msx_cart/crossblaim.h b/src/devices/bus/msx_cart/crossblaim.h
index b94a3cc6e59..b94a3cc6e59 100644
--- a/src/emu/bus/msx_cart/crossblaim.h
+++ b/src/devices/bus/msx_cart/crossblaim.h
diff --git a/src/emu/bus/msx_cart/disk.c b/src/devices/bus/msx_cart/disk.c
index 64bc061ba35..64bc061ba35 100644
--- a/src/emu/bus/msx_cart/disk.c
+++ b/src/devices/bus/msx_cart/disk.c
diff --git a/src/emu/bus/msx_cart/disk.h b/src/devices/bus/msx_cart/disk.h
index efe48e28255..efe48e28255 100644
--- a/src/emu/bus/msx_cart/disk.h
+++ b/src/devices/bus/msx_cart/disk.h
diff --git a/src/emu/bus/msx_cart/dooly.c b/src/devices/bus/msx_cart/dooly.c
index 95f2748b04a..95f2748b04a 100644
--- a/src/emu/bus/msx_cart/dooly.c
+++ b/src/devices/bus/msx_cart/dooly.c
diff --git a/src/emu/bus/msx_cart/dooly.h b/src/devices/bus/msx_cart/dooly.h
index 45ba9343fd4..45ba9343fd4 100644
--- a/src/emu/bus/msx_cart/dooly.h
+++ b/src/devices/bus/msx_cart/dooly.h
diff --git a/src/emu/bus/msx_cart/fmpac.c b/src/devices/bus/msx_cart/fmpac.c
index c4222094c1a..c4222094c1a 100644
--- a/src/emu/bus/msx_cart/fmpac.c
+++ b/src/devices/bus/msx_cart/fmpac.c
diff --git a/src/emu/bus/msx_cart/fmpac.h b/src/devices/bus/msx_cart/fmpac.h
index 610f3b99038..610f3b99038 100644
--- a/src/emu/bus/msx_cart/fmpac.h
+++ b/src/devices/bus/msx_cart/fmpac.h
diff --git a/src/devices/bus/msx_cart/fs_sr022.c b/src/devices/bus/msx_cart/fs_sr022.c
new file mode 100644
index 00000000000..c3aee7b9b81
--- /dev/null
+++ b/src/devices/bus/msx_cart/fs_sr022.c
@@ -0,0 +1,71 @@
+// license:BSD-3-Clause
+// copyright-holders:Wilbert Pol
+#include "emu.h"
+#include "fs_sr022.h"
+
+
+const device_type MSX_CART_FS_SR022 = &device_creator<msx_cart_fs_sr022>;
+
+
+msx_cart_fs_sr022::msx_cart_fs_sr022(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, MSX_CART_FS_SR022, "MSX Cartridge - FS-SR022", tag, owner, clock, "msx_cart_fs_sr022", __FILE__)
+ , msx_cart_interface(mconfig, *this)
+ , m_bunsetsu_rom(NULL)
+ , m_bunsetsu_address(0)
+{
+}
+
+
+void msx_cart_fs_sr022::device_start()
+{
+ save_item(NAME(m_bunsetsu_address));
+}
+
+
+void msx_cart_fs_sr022::device_reset()
+{
+ m_bunsetsu_address = 0;
+}
+
+
+void msx_cart_fs_sr022::initialize_cartridge()
+{
+ if (get_rom_size() != 0x40000)
+ {
+ fatalerror("fs_sr022: Invalid ROM size\n");
+ }
+ m_bunsetsu_rom = get_rom_base() + 0x20000;
+}
+
+
+READ8_MEMBER(msx_cart_fs_sr022::read_cart)
+{
+ if (offset >= 0x4000 && offset < 0xc000)
+ {
+ if (offset == 0xbfff) {
+ return m_bunsetsu_rom[m_bunsetsu_address++ & 0x1ffff];
+ }
+
+ return get_rom_base()[offset - 0x4000];
+ }
+ return 0xff;
+}
+
+
+WRITE8_MEMBER(msx_cart_fs_sr022::write_cart)
+{
+ switch (offset)
+ {
+ case 0xbffc:
+ m_bunsetsu_address = (m_bunsetsu_address & 0xffff00) | data;
+ break;
+
+ case 0xbffd:
+ m_bunsetsu_address = (m_bunsetsu_address & 0xff00ff) | (data << 8);
+ break;
+
+ case 0xbffe:
+ m_bunsetsu_address = (m_bunsetsu_address & 0x00ffff) | (data << 16);
+ break;
+ }
+}
diff --git a/src/devices/bus/msx_cart/fs_sr022.h b/src/devices/bus/msx_cart/fs_sr022.h
new file mode 100644
index 00000000000..edae6296beb
--- /dev/null
+++ b/src/devices/bus/msx_cart/fs_sr022.h
@@ -0,0 +1,33 @@
+// license:BSD-3-Clause
+// copyright-holders:Wilbert Pol
+#ifndef __MSX_CART_FS_SR022_H
+#define __MSX_CART_FS_SR022_H
+
+#include "bus/msx_cart/cartridge.h"
+
+
+extern const device_type MSX_CART_FS_SR022;
+
+
+class msx_cart_fs_sr022 : public device_t
+ , public msx_cart_interface
+{
+public:
+ msx_cart_fs_sr022(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ virtual void initialize_cartridge();
+
+ virtual DECLARE_READ8_MEMBER(read_cart);
+ virtual DECLARE_WRITE8_MEMBER(write_cart);
+
+private:
+ const UINT8 *m_bunsetsu_rom;
+ UINT32 m_bunsetsu_address;
+};
+
+
+#endif
diff --git a/src/emu/bus/msx_cart/halnote.c b/src/devices/bus/msx_cart/halnote.c
index 35b0582b241..35b0582b241 100644
--- a/src/emu/bus/msx_cart/halnote.c
+++ b/src/devices/bus/msx_cart/halnote.c
diff --git a/src/emu/bus/msx_cart/halnote.h b/src/devices/bus/msx_cart/halnote.h
index 8020219a77d..8020219a77d 100644
--- a/src/emu/bus/msx_cart/halnote.h
+++ b/src/devices/bus/msx_cart/halnote.h
diff --git a/src/emu/bus/msx_cart/hfox.c b/src/devices/bus/msx_cart/hfox.c
index 8cf349c403d..8cf349c403d 100644
--- a/src/emu/bus/msx_cart/hfox.c
+++ b/src/devices/bus/msx_cart/hfox.c
diff --git a/src/emu/bus/msx_cart/hfox.h b/src/devices/bus/msx_cart/hfox.h
index c3a17d365c5..c3a17d365c5 100644
--- a/src/emu/bus/msx_cart/hfox.h
+++ b/src/devices/bus/msx_cart/hfox.h
diff --git a/src/emu/bus/msx_cart/holy_quran.c b/src/devices/bus/msx_cart/holy_quran.c
index cb9d0b850a7..cb9d0b850a7 100644
--- a/src/emu/bus/msx_cart/holy_quran.c
+++ b/src/devices/bus/msx_cart/holy_quran.c
diff --git a/src/emu/bus/msx_cart/holy_quran.h b/src/devices/bus/msx_cart/holy_quran.h
index e6c949f1eac..e6c949f1eac 100644
--- a/src/emu/bus/msx_cart/holy_quran.h
+++ b/src/devices/bus/msx_cart/holy_quran.h
diff --git a/src/emu/bus/msx_cart/konami.c b/src/devices/bus/msx_cart/konami.c
index 66045d4b39d..c0beb8da357 100644
--- a/src/emu/bus/msx_cart/konami.c
+++ b/src/devices/bus/msx_cart/konami.c
@@ -88,7 +88,7 @@ READ8_MEMBER(msx_cart_konami::read_cart)
WRITE8_MEMBER(msx_cart_konami::write_cart)
{
- switch (offset)
+ switch (offset & 0xe000)
{
case 0x4000:
m_selected_bank[0] = data;
diff --git a/src/emu/bus/msx_cart/konami.h b/src/devices/bus/msx_cart/konami.h
index 1fd982610e8..1fd982610e8 100644
--- a/src/emu/bus/msx_cart/konami.h
+++ b/src/devices/bus/msx_cart/konami.h
diff --git a/src/emu/bus/msx_cart/korean.c b/src/devices/bus/msx_cart/korean.c
index 58cdd0d5985..58cdd0d5985 100644
--- a/src/emu/bus/msx_cart/korean.c
+++ b/src/devices/bus/msx_cart/korean.c
diff --git a/src/emu/bus/msx_cart/korean.h b/src/devices/bus/msx_cart/korean.h
index 83dc84680f1..83dc84680f1 100644
--- a/src/emu/bus/msx_cart/korean.h
+++ b/src/devices/bus/msx_cart/korean.h
diff --git a/src/emu/bus/msx_cart/majutsushi.c b/src/devices/bus/msx_cart/majutsushi.c
index 6c9c16e7319..6c9c16e7319 100644
--- a/src/emu/bus/msx_cart/majutsushi.c
+++ b/src/devices/bus/msx_cart/majutsushi.c
diff --git a/src/emu/bus/msx_cart/majutsushi.h b/src/devices/bus/msx_cart/majutsushi.h
index aadbc8a8b5d..aadbc8a8b5d 100644
--- a/src/emu/bus/msx_cart/majutsushi.h
+++ b/src/devices/bus/msx_cart/majutsushi.h
diff --git a/src/emu/bus/msx_cart/moonsound.c b/src/devices/bus/msx_cart/moonsound.c
index b8601335917..cdae9385815 100644
--- a/src/emu/bus/msx_cart/moonsound.c
+++ b/src/devices/bus/msx_cart/moonsound.c
@@ -5,7 +5,6 @@
TODO:
- Properly hook up correct SRAM sizes for different moonsound compatible
cartridges. (Original moonsound has 128KB SRAM)
-- Fix FM support (ymf262 support needs to be added to ymf278b).
**********************************************************************************/
@@ -21,7 +20,7 @@ const device_type MSX_CART_MOONSOUND = &device_creator<msx_cart_moonsound>;
msx_cart_moonsound::msx_cart_moonsound(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, MSX_CART_MOONSOUND, "MSX Cartridge - MoonSound", tag, owner, clock, "msx_cart_moonsound", __FILE__)
+ : device_t(mconfig, MSX_CART_MOONSOUND, "MSX Cartridge - MoonSound", tag, owner, clock, "msx_moonsound", __FILE__)
, msx_cart_interface(mconfig, *this)
, m_ymf278b(*this, "ymf278b")
{
@@ -42,6 +41,10 @@ static MACHINE_CONFIG_FRAGMENT( moonsound )
MCFG_YMF278B_IRQ_HANDLER(WRITELINE(msx_cart_moonsound,irq_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
+ MCFG_SOUND_ROUTE(2, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(3, "rspeaker", 0.40)
+ MCFG_SOUND_ROUTE(4, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(5, "rspeaker", 0.40)
MACHINE_CONFIG_END
@@ -121,4 +124,3 @@ READ8_MEMBER(msx_cart_moonsound::read_c0)
LOG(("moonsound: read 0xc0\n"));
return 0x00;
}
-
diff --git a/src/emu/bus/msx_cart/moonsound.h b/src/devices/bus/msx_cart/moonsound.h
index 930fedb363c..e09aa0e58d2 100644
--- a/src/emu/bus/msx_cart/moonsound.h
+++ b/src/devices/bus/msx_cart/moonsound.h
@@ -31,7 +31,6 @@ public:
private:
required_device<ymf278b_device> m_ymf278b;
-
};
diff --git a/src/emu/bus/msx_cart/msx_audio.c b/src/devices/bus/msx_cart/msx_audio.c
index 640dbc02b07..640dbc02b07 100644
--- a/src/emu/bus/msx_cart/msx_audio.c
+++ b/src/devices/bus/msx_cart/msx_audio.c
diff --git a/src/emu/bus/msx_cart/msx_audio.h b/src/devices/bus/msx_cart/msx_audio.h
index f62462e29a5..f62462e29a5 100644
--- a/src/emu/bus/msx_cart/msx_audio.h
+++ b/src/devices/bus/msx_cart/msx_audio.h
diff --git a/src/emu/bus/msx_cart/msx_audio_kb.c b/src/devices/bus/msx_cart/msx_audio_kb.c
index eb6ca123c39..eb6ca123c39 100644
--- a/src/emu/bus/msx_cart/msx_audio_kb.c
+++ b/src/devices/bus/msx_cart/msx_audio_kb.c
diff --git a/src/emu/bus/msx_cart/msx_audio_kb.h b/src/devices/bus/msx_cart/msx_audio_kb.h
index db09bf64dd9..db09bf64dd9 100644
--- a/src/emu/bus/msx_cart/msx_audio_kb.h
+++ b/src/devices/bus/msx_cart/msx_audio_kb.h
diff --git a/src/emu/bus/msx_cart/msxdos2.c b/src/devices/bus/msx_cart/msxdos2.c
index b3c127a10cb..b3c127a10cb 100644
--- a/src/emu/bus/msx_cart/msxdos2.c
+++ b/src/devices/bus/msx_cart/msxdos2.c
diff --git a/src/emu/bus/msx_cart/msxdos2.h b/src/devices/bus/msx_cart/msxdos2.h
index 1209b102372..1209b102372 100644
--- a/src/emu/bus/msx_cart/msxdos2.h
+++ b/src/devices/bus/msx_cart/msxdos2.h
diff --git a/src/emu/bus/msx_cart/nomapper.c b/src/devices/bus/msx_cart/nomapper.c
index 922649d5c1f..922649d5c1f 100644
--- a/src/emu/bus/msx_cart/nomapper.c
+++ b/src/devices/bus/msx_cart/nomapper.c
diff --git a/src/emu/bus/msx_cart/nomapper.h b/src/devices/bus/msx_cart/nomapper.h
index b0c197d2545..b0c197d2545 100644
--- a/src/emu/bus/msx_cart/nomapper.h
+++ b/src/devices/bus/msx_cart/nomapper.h
diff --git a/src/emu/bus/msx_cart/rtype.c b/src/devices/bus/msx_cart/rtype.c
index e09a57894d7..e09a57894d7 100644
--- a/src/emu/bus/msx_cart/rtype.c
+++ b/src/devices/bus/msx_cart/rtype.c
diff --git a/src/emu/bus/msx_cart/rtype.h b/src/devices/bus/msx_cart/rtype.h
index e6bfec30de8..e6bfec30de8 100644
--- a/src/emu/bus/msx_cart/rtype.h
+++ b/src/devices/bus/msx_cart/rtype.h
diff --git a/src/emu/bus/msx_cart/super_swangi.c b/src/devices/bus/msx_cart/super_swangi.c
index 61dffe0d567..61dffe0d567 100644
--- a/src/emu/bus/msx_cart/super_swangi.c
+++ b/src/devices/bus/msx_cart/super_swangi.c
diff --git a/src/emu/bus/msx_cart/super_swangi.h b/src/devices/bus/msx_cart/super_swangi.h
index a71bf7fe250..a71bf7fe250 100644
--- a/src/emu/bus/msx_cart/super_swangi.h
+++ b/src/devices/bus/msx_cart/super_swangi.h
diff --git a/src/emu/bus/msx_cart/superloderunner.c b/src/devices/bus/msx_cart/superloderunner.c
index c8bd6f6c973..c8bd6f6c973 100644
--- a/src/emu/bus/msx_cart/superloderunner.c
+++ b/src/devices/bus/msx_cart/superloderunner.c
diff --git a/src/emu/bus/msx_cart/superloderunner.h b/src/devices/bus/msx_cart/superloderunner.h
index f3737081b98..f3737081b98 100644
--- a/src/emu/bus/msx_cart/superloderunner.h
+++ b/src/devices/bus/msx_cart/superloderunner.h
diff --git a/src/emu/bus/msx_cart/yamaha.c b/src/devices/bus/msx_cart/yamaha.c
index b78ec43fb9f..b78ec43fb9f 100644
--- a/src/emu/bus/msx_cart/yamaha.c
+++ b/src/devices/bus/msx_cart/yamaha.c
diff --git a/src/emu/bus/msx_cart/yamaha.h b/src/devices/bus/msx_cart/yamaha.h
index c186ad52e16..c186ad52e16 100644
--- a/src/emu/bus/msx_cart/yamaha.h
+++ b/src/devices/bus/msx_cart/yamaha.h
diff --git a/src/emu/bus/msx_slot/bunsetsu.c b/src/devices/bus/msx_slot/bunsetsu.c
index b8c1e7b4471..b8c1e7b4471 100644
--- a/src/emu/bus/msx_slot/bunsetsu.c
+++ b/src/devices/bus/msx_slot/bunsetsu.c
diff --git a/src/emu/bus/msx_slot/bunsetsu.h b/src/devices/bus/msx_slot/bunsetsu.h
index 4da57dc565b..4da57dc565b 100644
--- a/src/emu/bus/msx_slot/bunsetsu.h
+++ b/src/devices/bus/msx_slot/bunsetsu.h
diff --git a/src/emu/bus/msx_slot/cartridge.c b/src/devices/bus/msx_slot/cartridge.c
index a7d79be1a51..a7d79be1a51 100644
--- a/src/emu/bus/msx_slot/cartridge.c
+++ b/src/devices/bus/msx_slot/cartridge.c
diff --git a/src/emu/bus/msx_slot/cartridge.h b/src/devices/bus/msx_slot/cartridge.h
index 865faad0f0f..865faad0f0f 100644
--- a/src/emu/bus/msx_slot/cartridge.h
+++ b/src/devices/bus/msx_slot/cartridge.h
diff --git a/src/emu/bus/msx_slot/disk.c b/src/devices/bus/msx_slot/disk.c
index 799f05b9337..799f05b9337 100644
--- a/src/emu/bus/msx_slot/disk.c
+++ b/src/devices/bus/msx_slot/disk.c
diff --git a/src/emu/bus/msx_slot/disk.h b/src/devices/bus/msx_slot/disk.h
index 34de73f69e9..34de73f69e9 100644
--- a/src/emu/bus/msx_slot/disk.h
+++ b/src/devices/bus/msx_slot/disk.h
diff --git a/src/emu/bus/msx_slot/fs4600.c b/src/devices/bus/msx_slot/fs4600.c
index f6ad2b8c892..f6ad2b8c892 100644
--- a/src/emu/bus/msx_slot/fs4600.c
+++ b/src/devices/bus/msx_slot/fs4600.c
diff --git a/src/emu/bus/msx_slot/fs4600.h b/src/devices/bus/msx_slot/fs4600.h
index c383ba49e30..c383ba49e30 100644
--- a/src/emu/bus/msx_slot/fs4600.h
+++ b/src/devices/bus/msx_slot/fs4600.h
diff --git a/src/emu/bus/msx_slot/music.c b/src/devices/bus/msx_slot/music.c
index 5c7d0905427..5c7d0905427 100644
--- a/src/emu/bus/msx_slot/music.c
+++ b/src/devices/bus/msx_slot/music.c
diff --git a/src/emu/bus/msx_slot/music.h b/src/devices/bus/msx_slot/music.h
index 8cbefb4bc0c..8cbefb4bc0c 100644
--- a/src/emu/bus/msx_slot/music.h
+++ b/src/devices/bus/msx_slot/music.h
diff --git a/src/emu/bus/msx_slot/panasonic08.c b/src/devices/bus/msx_slot/panasonic08.c
index df78f76a27b..df78f76a27b 100644
--- a/src/emu/bus/msx_slot/panasonic08.c
+++ b/src/devices/bus/msx_slot/panasonic08.c
diff --git a/src/emu/bus/msx_slot/panasonic08.h b/src/devices/bus/msx_slot/panasonic08.h
index c9be040678f..c9be040678f 100644
--- a/src/emu/bus/msx_slot/panasonic08.h
+++ b/src/devices/bus/msx_slot/panasonic08.h
diff --git a/src/emu/bus/msx_slot/ram.c b/src/devices/bus/msx_slot/ram.c
index cb07422358a..cb07422358a 100644
--- a/src/emu/bus/msx_slot/ram.c
+++ b/src/devices/bus/msx_slot/ram.c
diff --git a/src/emu/bus/msx_slot/ram.h b/src/devices/bus/msx_slot/ram.h
index 1b85ee8ac5d..1b85ee8ac5d 100644
--- a/src/emu/bus/msx_slot/ram.h
+++ b/src/devices/bus/msx_slot/ram.h
diff --git a/src/emu/bus/msx_slot/ram_mm.c b/src/devices/bus/msx_slot/ram_mm.c
index 4d70fff80bc..4d70fff80bc 100644
--- a/src/emu/bus/msx_slot/ram_mm.c
+++ b/src/devices/bus/msx_slot/ram_mm.c
diff --git a/src/emu/bus/msx_slot/ram_mm.h b/src/devices/bus/msx_slot/ram_mm.h
index 59eb7f18e89..59eb7f18e89 100644
--- a/src/emu/bus/msx_slot/ram_mm.h
+++ b/src/devices/bus/msx_slot/ram_mm.h
diff --git a/src/emu/bus/msx_slot/rom.c b/src/devices/bus/msx_slot/rom.c
index 609201f60d1..609201f60d1 100644
--- a/src/emu/bus/msx_slot/rom.c
+++ b/src/devices/bus/msx_slot/rom.c
diff --git a/src/emu/bus/msx_slot/rom.h b/src/devices/bus/msx_slot/rom.h
index 6317d28f3c0..6317d28f3c0 100644
--- a/src/emu/bus/msx_slot/rom.h
+++ b/src/devices/bus/msx_slot/rom.h
diff --git a/src/emu/bus/msx_slot/slot.c b/src/devices/bus/msx_slot/slot.c
index db8e8f89ae7..db8e8f89ae7 100644
--- a/src/emu/bus/msx_slot/slot.c
+++ b/src/devices/bus/msx_slot/slot.c
diff --git a/src/emu/bus/msx_slot/slot.h b/src/devices/bus/msx_slot/slot.h
index fe5a540a19e..fe5a540a19e 100644
--- a/src/emu/bus/msx_slot/slot.h
+++ b/src/devices/bus/msx_slot/slot.h
diff --git a/src/emu/bus/msx_slot/sony08.c b/src/devices/bus/msx_slot/sony08.c
index 66a5f733e2d..66a5f733e2d 100644
--- a/src/emu/bus/msx_slot/sony08.c
+++ b/src/devices/bus/msx_slot/sony08.c
diff --git a/src/emu/bus/msx_slot/sony08.h b/src/devices/bus/msx_slot/sony08.h
index 28798f9bc06..28798f9bc06 100644
--- a/src/emu/bus/msx_slot/sony08.h
+++ b/src/devices/bus/msx_slot/sony08.h
diff --git a/src/emu/bus/nasbus/avc.c b/src/devices/bus/nasbus/avc.c
index 35b86e09420..8960a19573f 100644
--- a/src/emu/bus/nasbus/avc.c
+++ b/src/devices/bus/nasbus/avc.c
@@ -25,6 +25,8 @@ static MACHINE_CONFIG_FRAGMENT( nascom_avc )
MCFG_SCREEN_RAW_PARAMS(16250000, 1024, 0, 768, 320, 0, 256)
MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update)
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
+
MCFG_MC6845_ADD("mc6845", MC6845, "screen", XTAL_16MHz / 8)
MCFG_MC6845_SHOW_BORDER_AREA(false)
MCFG_MC6845_CHAR_WIDTH(6)
@@ -36,18 +38,6 @@ machine_config_constructor nascom_avc_device::device_mconfig_additions() const
return MACHINE_CONFIG_NAME( nascom_avc );
}
-const rgb_t nascom_avc_device::m_palette[] =
-{
- rgb_t::black,
- rgb_t(0xff, 0x00, 0x00),
- rgb_t(0x00, 0xff, 0x00),
- rgb_t(0xff, 0xff, 0x00),
- rgb_t(0x00, 0x00, 0xff),
- rgb_t(0xff, 0x00, 0xff),
- rgb_t(0x00, 0xff, 0xff),
- rgb_t::white,
-};
-
//**************************************************************************
// LIVE DEVICE
@@ -61,6 +51,7 @@ nascom_avc_device::nascom_avc_device(const machine_config &mconfig, const char *
device_t(mconfig, NASCOM_AVC, "Nascom Advanced Video Card", tag, owner, clock, "nascom_avc", __FILE__),
device_nasbus_card_interface(mconfig, *this),
m_crtc(*this, "mc6845"),
+ m_palette(*this, "palette"),
m_control(0x80)
{
}
@@ -130,7 +121,7 @@ MC6845_UPDATE_ROW( nascom_avc_device::crtc_update_row )
}
// plot the pixel
- bitmap.pix32(y, x) = m_palette[(b << 2) | (g << 1) | (r << 0)];
+ bitmap.pix32(y, x) = m_palette->pen_color((b << 2) | (g << 1) | (r << 0));
}
}
diff --git a/src/emu/bus/nasbus/avc.h b/src/devices/bus/nasbus/avc.h
index bcd22b09050..754781fc70e 100644
--- a/src/emu/bus/nasbus/avc.h
+++ b/src/devices/bus/nasbus/avc.h
@@ -41,14 +41,13 @@ protected:
private:
required_device<mc6845_device> m_crtc;
+ required_device<palette_device> m_palette;
std::vector<UINT8> m_r_ram;
std::vector<UINT8> m_g_ram;
std::vector<UINT8> m_b_ram;
UINT8 m_control;
-
- static const rgb_t m_palette[];
};
// device type definition
diff --git a/src/emu/bus/nasbus/cards.c b/src/devices/bus/nasbus/cards.c
index 913c17d8759..913c17d8759 100644
--- a/src/emu/bus/nasbus/cards.c
+++ b/src/devices/bus/nasbus/cards.c
diff --git a/src/emu/bus/nasbus/cards.h b/src/devices/bus/nasbus/cards.h
index f0e5fac912b..f0e5fac912b 100644
--- a/src/emu/bus/nasbus/cards.h
+++ b/src/devices/bus/nasbus/cards.h
diff --git a/src/emu/bus/nasbus/floppy.c b/src/devices/bus/nasbus/floppy.c
index cf68765a0ae..cf68765a0ae 100644
--- a/src/emu/bus/nasbus/floppy.c
+++ b/src/devices/bus/nasbus/floppy.c
diff --git a/src/emu/bus/nasbus/floppy.h b/src/devices/bus/nasbus/floppy.h
index 9315bb92df1..9315bb92df1 100644
--- a/src/emu/bus/nasbus/floppy.h
+++ b/src/devices/bus/nasbus/floppy.h
diff --git a/src/emu/bus/nasbus/nasbus.c b/src/devices/bus/nasbus/nasbus.c
index 739ef9decdf..739ef9decdf 100644
--- a/src/emu/bus/nasbus/nasbus.c
+++ b/src/devices/bus/nasbus/nasbus.c
diff --git a/src/emu/bus/nasbus/nasbus.h b/src/devices/bus/nasbus/nasbus.h
index f7766bc0426..f7766bc0426 100644
--- a/src/emu/bus/nasbus/nasbus.h
+++ b/src/devices/bus/nasbus/nasbus.h
diff --git a/src/emu/bus/neogeo/banked_cart.c b/src/devices/bus/neogeo/banked_cart.c
index 9d0e1f06cad..9d0e1f06cad 100644
--- a/src/emu/bus/neogeo/banked_cart.c
+++ b/src/devices/bus/neogeo/banked_cart.c
diff --git a/src/emu/bus/neogeo/banked_cart.h b/src/devices/bus/neogeo/banked_cart.h
index f81b8f5b9c9..f81b8f5b9c9 100644
--- a/src/emu/bus/neogeo/banked_cart.h
+++ b/src/devices/bus/neogeo/banked_cart.h
diff --git a/src/emu/bus/neogeo/bootleg_cart.c b/src/devices/bus/neogeo/bootleg_cart.c
index 45a4563f88d..45a4563f88d 100644
--- a/src/emu/bus/neogeo/bootleg_cart.c
+++ b/src/devices/bus/neogeo/bootleg_cart.c
diff --git a/src/emu/bus/neogeo/bootleg_cart.h b/src/devices/bus/neogeo/bootleg_cart.h
index a3932c25df8..a3932c25df8 100644
--- a/src/emu/bus/neogeo/bootleg_cart.h
+++ b/src/devices/bus/neogeo/bootleg_cart.h
diff --git a/src/emu/bus/neogeo/bootleg_hybrid_cart.c b/src/devices/bus/neogeo/bootleg_hybrid_cart.c
index 5d677c8cc74..5d677c8cc74 100644
--- a/src/emu/bus/neogeo/bootleg_hybrid_cart.c
+++ b/src/devices/bus/neogeo/bootleg_hybrid_cart.c
diff --git a/src/emu/bus/neogeo/bootleg_hybrid_cart.h b/src/devices/bus/neogeo/bootleg_hybrid_cart.h
index ace1886e840..ace1886e840 100644
--- a/src/emu/bus/neogeo/bootleg_hybrid_cart.h
+++ b/src/devices/bus/neogeo/bootleg_hybrid_cart.h
diff --git a/src/emu/bus/neogeo/bootleg_prot.c b/src/devices/bus/neogeo/bootleg_prot.c
index aa5ad7da084..aa5ad7da084 100644
--- a/src/emu/bus/neogeo/bootleg_prot.c
+++ b/src/devices/bus/neogeo/bootleg_prot.c
diff --git a/src/emu/bus/neogeo/bootleg_prot.h b/src/devices/bus/neogeo/bootleg_prot.h
index 6ad1f257845..6ad1f257845 100644
--- a/src/emu/bus/neogeo/bootleg_prot.h
+++ b/src/devices/bus/neogeo/bootleg_prot.h
diff --git a/src/emu/bus/neogeo/cmc_cart.c b/src/devices/bus/neogeo/cmc_cart.c
index c528366b717..c528366b717 100644
--- a/src/emu/bus/neogeo/cmc_cart.c
+++ b/src/devices/bus/neogeo/cmc_cart.c
diff --git a/src/emu/bus/neogeo/cmc_cart.h b/src/devices/bus/neogeo/cmc_cart.h
index 2e07e29c93f..2e07e29c93f 100644
--- a/src/emu/bus/neogeo/cmc_cart.h
+++ b/src/devices/bus/neogeo/cmc_cart.h
diff --git a/src/emu/bus/neogeo/cmc_prot.c b/src/devices/bus/neogeo/cmc_prot.c
index f4ccc1ecada..f4ccc1ecada 100644
--- a/src/emu/bus/neogeo/cmc_prot.c
+++ b/src/devices/bus/neogeo/cmc_prot.c
diff --git a/src/emu/bus/neogeo/cmc_prot.h b/src/devices/bus/neogeo/cmc_prot.h
index 8660c3bf3ed..8660c3bf3ed 100644
--- a/src/emu/bus/neogeo/cmc_prot.h
+++ b/src/devices/bus/neogeo/cmc_prot.h
diff --git a/src/emu/bus/neogeo/fatfury2_cart.c b/src/devices/bus/neogeo/fatfury2_cart.c
index 047ca79a2eb..047ca79a2eb 100644
--- a/src/emu/bus/neogeo/fatfury2_cart.c
+++ b/src/devices/bus/neogeo/fatfury2_cart.c
diff --git a/src/emu/bus/neogeo/fatfury2_cart.h b/src/devices/bus/neogeo/fatfury2_cart.h
index 1356d130bf9..1356d130bf9 100644
--- a/src/emu/bus/neogeo/fatfury2_cart.h
+++ b/src/devices/bus/neogeo/fatfury2_cart.h
diff --git a/src/emu/bus/neogeo/fatfury2_prot.c b/src/devices/bus/neogeo/fatfury2_prot.c
index 07e483dbc44..07e483dbc44 100644
--- a/src/emu/bus/neogeo/fatfury2_prot.c
+++ b/src/devices/bus/neogeo/fatfury2_prot.c
diff --git a/src/emu/bus/neogeo/fatfury2_prot.h b/src/devices/bus/neogeo/fatfury2_prot.h
index 2abe9c92da6..2abe9c92da6 100644
--- a/src/emu/bus/neogeo/fatfury2_prot.h
+++ b/src/devices/bus/neogeo/fatfury2_prot.h
diff --git a/src/emu/bus/neogeo/kof2002_cart.c b/src/devices/bus/neogeo/kof2002_cart.c
index 9726bd34b4b..9726bd34b4b 100644
--- a/src/emu/bus/neogeo/kof2002_cart.c
+++ b/src/devices/bus/neogeo/kof2002_cart.c
diff --git a/src/emu/bus/neogeo/kof2002_cart.h b/src/devices/bus/neogeo/kof2002_cart.h
index 7d995c88adc..7d995c88adc 100644
--- a/src/emu/bus/neogeo/kof2002_cart.h
+++ b/src/devices/bus/neogeo/kof2002_cart.h
diff --git a/src/emu/bus/neogeo/kof2002_prot.c b/src/devices/bus/neogeo/kof2002_prot.c
index f234602a0c2..f234602a0c2 100644
--- a/src/emu/bus/neogeo/kof2002_prot.c
+++ b/src/devices/bus/neogeo/kof2002_prot.c
diff --git a/src/emu/bus/neogeo/kof2002_prot.h b/src/devices/bus/neogeo/kof2002_prot.h
index b0abde55809..b0abde55809 100644
--- a/src/emu/bus/neogeo/kof2002_prot.h
+++ b/src/devices/bus/neogeo/kof2002_prot.h
diff --git a/src/emu/bus/neogeo/kof98_cart.c b/src/devices/bus/neogeo/kof98_cart.c
index 6314522e4ff..6314522e4ff 100644
--- a/src/emu/bus/neogeo/kof98_cart.c
+++ b/src/devices/bus/neogeo/kof98_cart.c
diff --git a/src/emu/bus/neogeo/kof98_cart.h b/src/devices/bus/neogeo/kof98_cart.h
index f0054d8c4bd..f0054d8c4bd 100644
--- a/src/emu/bus/neogeo/kof98_cart.h
+++ b/src/devices/bus/neogeo/kof98_cart.h
diff --git a/src/emu/bus/neogeo/kof98_prot.c b/src/devices/bus/neogeo/kof98_prot.c
index fefe7c190d3..fefe7c190d3 100644
--- a/src/emu/bus/neogeo/kof98_prot.c
+++ b/src/devices/bus/neogeo/kof98_prot.c
diff --git a/src/emu/bus/neogeo/kof98_prot.h b/src/devices/bus/neogeo/kof98_prot.h
index bdd634cbb04..bdd634cbb04 100644
--- a/src/emu/bus/neogeo/kof98_prot.h
+++ b/src/devices/bus/neogeo/kof98_prot.h
diff --git a/src/emu/bus/neogeo/kog_prot.c b/src/devices/bus/neogeo/kog_prot.c
index d3caaff3e15..d3caaff3e15 100644
--- a/src/emu/bus/neogeo/kog_prot.c
+++ b/src/devices/bus/neogeo/kog_prot.c
diff --git a/src/emu/bus/neogeo/kog_prot.h b/src/devices/bus/neogeo/kog_prot.h
index c14b6d919d0..c14b6d919d0 100644
--- a/src/emu/bus/neogeo/kog_prot.h
+++ b/src/devices/bus/neogeo/kog_prot.h
diff --git a/src/emu/bus/neogeo/mslugx_cart.c b/src/devices/bus/neogeo/mslugx_cart.c
index d6bd6388864..d6bd6388864 100644
--- a/src/emu/bus/neogeo/mslugx_cart.c
+++ b/src/devices/bus/neogeo/mslugx_cart.c
diff --git a/src/emu/bus/neogeo/mslugx_cart.h b/src/devices/bus/neogeo/mslugx_cart.h
index 70d25d2338a..70d25d2338a 100644
--- a/src/emu/bus/neogeo/mslugx_cart.h
+++ b/src/devices/bus/neogeo/mslugx_cart.h
diff --git a/src/emu/bus/neogeo/mslugx_prot.c b/src/devices/bus/neogeo/mslugx_prot.c
index 567f308414c..567f308414c 100644
--- a/src/emu/bus/neogeo/mslugx_prot.c
+++ b/src/devices/bus/neogeo/mslugx_prot.c
diff --git a/src/emu/bus/neogeo/mslugx_prot.h b/src/devices/bus/neogeo/mslugx_prot.h
index dabd8425503..dabd8425503 100644
--- a/src/emu/bus/neogeo/mslugx_prot.h
+++ b/src/devices/bus/neogeo/mslugx_prot.h
diff --git a/src/emu/bus/neogeo/neogeo_carts.c b/src/devices/bus/neogeo/neogeo_carts.c
index 8f9d62037b4..8f9d62037b4 100644
--- a/src/emu/bus/neogeo/neogeo_carts.c
+++ b/src/devices/bus/neogeo/neogeo_carts.c
diff --git a/src/emu/bus/neogeo/neogeo_carts.h b/src/devices/bus/neogeo/neogeo_carts.h
index f6925b96e98..f6925b96e98 100644
--- a/src/emu/bus/neogeo/neogeo_carts.h
+++ b/src/devices/bus/neogeo/neogeo_carts.h
diff --git a/src/emu/bus/neogeo/neogeo_helper.c b/src/devices/bus/neogeo/neogeo_helper.c
index fdbd9ba7203..fdbd9ba7203 100644
--- a/src/emu/bus/neogeo/neogeo_helper.c
+++ b/src/devices/bus/neogeo/neogeo_helper.c
diff --git a/src/emu/bus/neogeo/neogeo_helper.h b/src/devices/bus/neogeo/neogeo_helper.h
index 3d125f7fd62..3d125f7fd62 100644
--- a/src/emu/bus/neogeo/neogeo_helper.h
+++ b/src/devices/bus/neogeo/neogeo_helper.h
diff --git a/src/emu/bus/neogeo/neogeo_intf.c b/src/devices/bus/neogeo/neogeo_intf.c
index 92f7ba5be19..92f7ba5be19 100644
--- a/src/emu/bus/neogeo/neogeo_intf.c
+++ b/src/devices/bus/neogeo/neogeo_intf.c
diff --git a/src/emu/bus/neogeo/neogeo_intf.h b/src/devices/bus/neogeo/neogeo_intf.h
index 5c6947ff52d..5c6947ff52d 100644
--- a/src/emu/bus/neogeo/neogeo_intf.h
+++ b/src/devices/bus/neogeo/neogeo_intf.h
diff --git a/src/emu/bus/neogeo/neogeo_slot.c b/src/devices/bus/neogeo/neogeo_slot.c
index 0c8fa80887e..0c8fa80887e 100644
--- a/src/emu/bus/neogeo/neogeo_slot.c
+++ b/src/devices/bus/neogeo/neogeo_slot.c
diff --git a/src/emu/bus/neogeo/neogeo_slot.h b/src/devices/bus/neogeo/neogeo_slot.h
index 3020a7045a9..3020a7045a9 100644
--- a/src/emu/bus/neogeo/neogeo_slot.h
+++ b/src/devices/bus/neogeo/neogeo_slot.h
diff --git a/src/emu/bus/neogeo/pcm2_cart.c b/src/devices/bus/neogeo/pcm2_cart.c
index 04eede0ebe9..04eede0ebe9 100644
--- a/src/emu/bus/neogeo/pcm2_cart.c
+++ b/src/devices/bus/neogeo/pcm2_cart.c
diff --git a/src/emu/bus/neogeo/pcm2_cart.h b/src/devices/bus/neogeo/pcm2_cart.h
index 5cbb31656fc..5cbb31656fc 100644
--- a/src/emu/bus/neogeo/pcm2_cart.h
+++ b/src/devices/bus/neogeo/pcm2_cart.h
diff --git a/src/emu/bus/neogeo/pcm2_prot.c b/src/devices/bus/neogeo/pcm2_prot.c
index 6ee156712e9..6ee156712e9 100644
--- a/src/emu/bus/neogeo/pcm2_prot.c
+++ b/src/devices/bus/neogeo/pcm2_prot.c
diff --git a/src/emu/bus/neogeo/pcm2_prot.h b/src/devices/bus/neogeo/pcm2_prot.h
index 7920b745970..7920b745970 100644
--- a/src/emu/bus/neogeo/pcm2_prot.h
+++ b/src/devices/bus/neogeo/pcm2_prot.h
diff --git a/src/emu/bus/neogeo/pvc_cart.c b/src/devices/bus/neogeo/pvc_cart.c
index ee587724b7f..ee587724b7f 100644
--- a/src/emu/bus/neogeo/pvc_cart.c
+++ b/src/devices/bus/neogeo/pvc_cart.c
diff --git a/src/emu/bus/neogeo/pvc_cart.h b/src/devices/bus/neogeo/pvc_cart.h
index e3e409081c4..e3e409081c4 100644
--- a/src/emu/bus/neogeo/pvc_cart.h
+++ b/src/devices/bus/neogeo/pvc_cart.h
diff --git a/src/emu/bus/neogeo/pvc_prot.c b/src/devices/bus/neogeo/pvc_prot.c
index 95b8cfeb770..95b8cfeb770 100644
--- a/src/emu/bus/neogeo/pvc_prot.c
+++ b/src/devices/bus/neogeo/pvc_prot.c
diff --git a/src/emu/bus/neogeo/pvc_prot.h b/src/devices/bus/neogeo/pvc_prot.h
index 794783cc4dd..794783cc4dd 100644
--- a/src/emu/bus/neogeo/pvc_prot.h
+++ b/src/devices/bus/neogeo/pvc_prot.h
diff --git a/src/emu/bus/neogeo/rom.c b/src/devices/bus/neogeo/rom.c
index 085e68edec2..085e68edec2 100644
--- a/src/emu/bus/neogeo/rom.c
+++ b/src/devices/bus/neogeo/rom.c
diff --git a/src/emu/bus/neogeo/rom.h b/src/devices/bus/neogeo/rom.h
index 9394a7ec5bd..9394a7ec5bd 100644
--- a/src/emu/bus/neogeo/rom.h
+++ b/src/devices/bus/neogeo/rom.h
diff --git a/src/emu/bus/neogeo/sbp_prot.c b/src/devices/bus/neogeo/sbp_prot.c
index a286bbbb88e..a286bbbb88e 100644
--- a/src/emu/bus/neogeo/sbp_prot.c
+++ b/src/devices/bus/neogeo/sbp_prot.c
diff --git a/src/emu/bus/neogeo/sbp_prot.h b/src/devices/bus/neogeo/sbp_prot.h
index 7aa5ebb67da..7aa5ebb67da 100644
--- a/src/emu/bus/neogeo/sbp_prot.h
+++ b/src/devices/bus/neogeo/sbp_prot.h
diff --git a/src/emu/bus/neogeo/sma_cart.c b/src/devices/bus/neogeo/sma_cart.c
index 61e07b962f3..61e07b962f3 100644
--- a/src/emu/bus/neogeo/sma_cart.c
+++ b/src/devices/bus/neogeo/sma_cart.c
diff --git a/src/emu/bus/neogeo/sma_cart.h b/src/devices/bus/neogeo/sma_cart.h
index d0b0fb64432..d0b0fb64432 100644
--- a/src/emu/bus/neogeo/sma_cart.h
+++ b/src/devices/bus/neogeo/sma_cart.h
diff --git a/src/emu/bus/neogeo/sma_prot.c b/src/devices/bus/neogeo/sma_prot.c
index 5fe723375a0..5fe723375a0 100644
--- a/src/emu/bus/neogeo/sma_prot.c
+++ b/src/devices/bus/neogeo/sma_prot.c
diff --git a/src/emu/bus/neogeo/sma_prot.h b/src/devices/bus/neogeo/sma_prot.h
index 271e1248f4d..271e1248f4d 100644
--- a/src/emu/bus/neogeo/sma_prot.h
+++ b/src/devices/bus/neogeo/sma_prot.h
diff --git a/src/emu/bus/nes/2a03pur.c b/src/devices/bus/nes/2a03pur.c
index d7c807b63f2..d7c807b63f2 100644
--- a/src/emu/bus/nes/2a03pur.c
+++ b/src/devices/bus/nes/2a03pur.c
diff --git a/src/emu/bus/nes/2a03pur.h b/src/devices/bus/nes/2a03pur.h
index c0d80f67bd1..c0d80f67bd1 100644
--- a/src/emu/bus/nes/2a03pur.h
+++ b/src/devices/bus/nes/2a03pur.h
diff --git a/src/emu/bus/nes/act53.c b/src/devices/bus/nes/act53.c
index a09244b3a85..a09244b3a85 100644
--- a/src/emu/bus/nes/act53.c
+++ b/src/devices/bus/nes/act53.c
diff --git a/src/emu/bus/nes/act53.h b/src/devices/bus/nes/act53.h
index c870d600102..c870d600102 100644
--- a/src/emu/bus/nes/act53.h
+++ b/src/devices/bus/nes/act53.h
diff --git a/src/emu/bus/nes/aladdin.c b/src/devices/bus/nes/aladdin.c
index 67749cbe12d..67749cbe12d 100644
--- a/src/emu/bus/nes/aladdin.c
+++ b/src/devices/bus/nes/aladdin.c
diff --git a/src/emu/bus/nes/aladdin.h b/src/devices/bus/nes/aladdin.h
index 18bcf988a1b..18bcf988a1b 100644
--- a/src/emu/bus/nes/aladdin.h
+++ b/src/devices/bus/nes/aladdin.h
diff --git a/src/emu/bus/nes/ave.c b/src/devices/bus/nes/ave.c
index bc24f1294a5..bc24f1294a5 100644
--- a/src/emu/bus/nes/ave.c
+++ b/src/devices/bus/nes/ave.c
diff --git a/src/emu/bus/nes/ave.h b/src/devices/bus/nes/ave.h
index 9d35c3eb623..9d35c3eb623 100644
--- a/src/emu/bus/nes/ave.h
+++ b/src/devices/bus/nes/ave.h
diff --git a/src/emu/bus/nes/bandai.c b/src/devices/bus/nes/bandai.c
index 4aa54055969..4aa54055969 100644
--- a/src/emu/bus/nes/bandai.c
+++ b/src/devices/bus/nes/bandai.c
diff --git a/src/emu/bus/nes/bandai.h b/src/devices/bus/nes/bandai.h
index ae19589be37..ae19589be37 100644
--- a/src/emu/bus/nes/bandai.h
+++ b/src/devices/bus/nes/bandai.h
diff --git a/src/emu/bus/nes/benshieng.c b/src/devices/bus/nes/benshieng.c
index b96c75e6297..b96c75e6297 100644
--- a/src/emu/bus/nes/benshieng.c
+++ b/src/devices/bus/nes/benshieng.c
diff --git a/src/emu/bus/nes/benshieng.h b/src/devices/bus/nes/benshieng.h
index 2a042a432e4..2a042a432e4 100644
--- a/src/emu/bus/nes/benshieng.h
+++ b/src/devices/bus/nes/benshieng.h
diff --git a/src/emu/bus/nes/bootleg.c b/src/devices/bus/nes/bootleg.c
index 23b13b51711..23b13b51711 100644
--- a/src/emu/bus/nes/bootleg.c
+++ b/src/devices/bus/nes/bootleg.c
diff --git a/src/emu/bus/nes/bootleg.h b/src/devices/bus/nes/bootleg.h
index d261ba23c31..d261ba23c31 100644
--- a/src/emu/bus/nes/bootleg.h
+++ b/src/devices/bus/nes/bootleg.h
diff --git a/src/emu/bus/nes/camerica.c b/src/devices/bus/nes/camerica.c
index 61c41dd7867..61c41dd7867 100644
--- a/src/emu/bus/nes/camerica.c
+++ b/src/devices/bus/nes/camerica.c
diff --git a/src/emu/bus/nes/camerica.h b/src/devices/bus/nes/camerica.h
index 7c91bda1f91..7c91bda1f91 100644
--- a/src/emu/bus/nes/camerica.h
+++ b/src/devices/bus/nes/camerica.h
diff --git a/src/emu/bus/nes/cne.c b/src/devices/bus/nes/cne.c
index 76dc0a999f2..76dc0a999f2 100644
--- a/src/emu/bus/nes/cne.c
+++ b/src/devices/bus/nes/cne.c
diff --git a/src/emu/bus/nes/cne.h b/src/devices/bus/nes/cne.h
index d00ef06f5cc..d00ef06f5cc 100644
--- a/src/emu/bus/nes/cne.h
+++ b/src/devices/bus/nes/cne.h
diff --git a/src/emu/bus/nes/cony.c b/src/devices/bus/nes/cony.c
index a64063ebc8a..a64063ebc8a 100644
--- a/src/emu/bus/nes/cony.c
+++ b/src/devices/bus/nes/cony.c
diff --git a/src/emu/bus/nes/cony.h b/src/devices/bus/nes/cony.h
index e97cfdee81d..e97cfdee81d 100644
--- a/src/emu/bus/nes/cony.h
+++ b/src/devices/bus/nes/cony.h
diff --git a/src/emu/bus/nes/datach.c b/src/devices/bus/nes/datach.c
index 1bf562976ed..1bf562976ed 100644
--- a/src/emu/bus/nes/datach.c
+++ b/src/devices/bus/nes/datach.c
diff --git a/src/emu/bus/nes/datach.h b/src/devices/bus/nes/datach.h
index b804c079a6f..b804c079a6f 100644
--- a/src/emu/bus/nes/datach.h
+++ b/src/devices/bus/nes/datach.h
diff --git a/src/emu/bus/nes/discrete.c b/src/devices/bus/nes/discrete.c
index e0109a84d94..e0109a84d94 100644
--- a/src/emu/bus/nes/discrete.c
+++ b/src/devices/bus/nes/discrete.c
diff --git a/src/emu/bus/nes/discrete.h b/src/devices/bus/nes/discrete.h
index 1fb615c38f2..1fb615c38f2 100644
--- a/src/emu/bus/nes/discrete.h
+++ b/src/devices/bus/nes/discrete.h
diff --git a/src/emu/bus/nes/disksys.c b/src/devices/bus/nes/disksys.c
index 45cb275e9de..45cb275e9de 100644
--- a/src/emu/bus/nes/disksys.c
+++ b/src/devices/bus/nes/disksys.c
diff --git a/src/emu/bus/nes/disksys.h b/src/devices/bus/nes/disksys.h
index dcb2bd75c0c..dcb2bd75c0c 100644
--- a/src/emu/bus/nes/disksys.h
+++ b/src/devices/bus/nes/disksys.h
diff --git a/src/emu/bus/nes/event.c b/src/devices/bus/nes/event.c
index 4059b107a24..4059b107a24 100644
--- a/src/emu/bus/nes/event.c
+++ b/src/devices/bus/nes/event.c
diff --git a/src/emu/bus/nes/event.h b/src/devices/bus/nes/event.h
index 31076cec074..31076cec074 100644
--- a/src/emu/bus/nes/event.h
+++ b/src/devices/bus/nes/event.h
diff --git a/src/emu/bus/nes/ggenie.c b/src/devices/bus/nes/ggenie.c
index f9320a5fbee..f9320a5fbee 100644
--- a/src/emu/bus/nes/ggenie.c
+++ b/src/devices/bus/nes/ggenie.c
diff --git a/src/emu/bus/nes/ggenie.h b/src/devices/bus/nes/ggenie.h
index e4620e59e09..e4620e59e09 100644
--- a/src/emu/bus/nes/ggenie.h
+++ b/src/devices/bus/nes/ggenie.h
diff --git a/src/emu/bus/nes/henggedianzi.c b/src/devices/bus/nes/henggedianzi.c
index 5cda60e6938..5cda60e6938 100644
--- a/src/emu/bus/nes/henggedianzi.c
+++ b/src/devices/bus/nes/henggedianzi.c
diff --git a/src/emu/bus/nes/henggedianzi.h b/src/devices/bus/nes/henggedianzi.h
index a229ddbda4a..a229ddbda4a 100644
--- a/src/emu/bus/nes/henggedianzi.h
+++ b/src/devices/bus/nes/henggedianzi.h
diff --git a/src/emu/bus/nes/hes.c b/src/devices/bus/nes/hes.c
index ddfda0590d8..ddfda0590d8 100644
--- a/src/emu/bus/nes/hes.c
+++ b/src/devices/bus/nes/hes.c
diff --git a/src/emu/bus/nes/hes.h b/src/devices/bus/nes/hes.h
index 6a895a8ec1e..6a895a8ec1e 100644
--- a/src/emu/bus/nes/hes.h
+++ b/src/devices/bus/nes/hes.h
diff --git a/src/emu/bus/nes/hosenkan.c b/src/devices/bus/nes/hosenkan.c
index fae439ac903..fae439ac903 100644
--- a/src/emu/bus/nes/hosenkan.c
+++ b/src/devices/bus/nes/hosenkan.c
diff --git a/src/emu/bus/nes/hosenkan.h b/src/devices/bus/nes/hosenkan.h
index f775a513adb..f775a513adb 100644
--- a/src/emu/bus/nes/hosenkan.h
+++ b/src/devices/bus/nes/hosenkan.h
diff --git a/src/emu/bus/nes/irem.c b/src/devices/bus/nes/irem.c
index 43f5bab1d7d..43f5bab1d7d 100644
--- a/src/emu/bus/nes/irem.c
+++ b/src/devices/bus/nes/irem.c
diff --git a/src/emu/bus/nes/irem.h b/src/devices/bus/nes/irem.h
index 5c7924b4e7d..5c7924b4e7d 100644
--- a/src/emu/bus/nes/irem.h
+++ b/src/devices/bus/nes/irem.h
diff --git a/src/emu/bus/nes/jaleco.c b/src/devices/bus/nes/jaleco.c
index 28df5250118..28df5250118 100644
--- a/src/emu/bus/nes/jaleco.c
+++ b/src/devices/bus/nes/jaleco.c
diff --git a/src/emu/bus/nes/jaleco.h b/src/devices/bus/nes/jaleco.h
index facea12b75f..facea12b75f 100644
--- a/src/emu/bus/nes/jaleco.h
+++ b/src/devices/bus/nes/jaleco.h
diff --git a/src/emu/bus/nes/jy.c b/src/devices/bus/nes/jy.c
index 31358e2ab16..31358e2ab16 100644
--- a/src/emu/bus/nes/jy.c
+++ b/src/devices/bus/nes/jy.c
diff --git a/src/emu/bus/nes/jy.h b/src/devices/bus/nes/jy.h
index f2441654d57..f2441654d57 100644
--- a/src/emu/bus/nes/jy.h
+++ b/src/devices/bus/nes/jy.h
diff --git a/src/emu/bus/nes/kaiser.c b/src/devices/bus/nes/kaiser.c
index 1c7d7bced0a..1c7d7bced0a 100644
--- a/src/emu/bus/nes/kaiser.c
+++ b/src/devices/bus/nes/kaiser.c
diff --git a/src/emu/bus/nes/kaiser.h b/src/devices/bus/nes/kaiser.h
index b00f410ba05..b00f410ba05 100644
--- a/src/emu/bus/nes/kaiser.h
+++ b/src/devices/bus/nes/kaiser.h
diff --git a/src/emu/bus/nes/karastudio.c b/src/devices/bus/nes/karastudio.c
index 002bdf6eea3..002bdf6eea3 100644
--- a/src/emu/bus/nes/karastudio.c
+++ b/src/devices/bus/nes/karastudio.c
diff --git a/src/emu/bus/nes/karastudio.h b/src/devices/bus/nes/karastudio.h
index b0b671e0034..b0b671e0034 100644
--- a/src/emu/bus/nes/karastudio.h
+++ b/src/devices/bus/nes/karastudio.h
diff --git a/src/emu/bus/nes/konami.c b/src/devices/bus/nes/konami.c
index 4cd4f1fd872..4cd4f1fd872 100644
--- a/src/emu/bus/nes/konami.c
+++ b/src/devices/bus/nes/konami.c
diff --git a/src/emu/bus/nes/konami.h b/src/devices/bus/nes/konami.h
index 0ecece270fd..0ecece270fd 100644
--- a/src/emu/bus/nes/konami.h
+++ b/src/devices/bus/nes/konami.h
diff --git a/src/emu/bus/nes/legacy.c b/src/devices/bus/nes/legacy.c
index 3a452fd2f39..3a452fd2f39 100644
--- a/src/emu/bus/nes/legacy.c
+++ b/src/devices/bus/nes/legacy.c
diff --git a/src/emu/bus/nes/legacy.h b/src/devices/bus/nes/legacy.h
index 4b4667ab61b..4b4667ab61b 100644
--- a/src/emu/bus/nes/legacy.h
+++ b/src/devices/bus/nes/legacy.h
diff --git a/src/emu/bus/nes/mmc1.c b/src/devices/bus/nes/mmc1.c
index ff31250ee19..ff31250ee19 100644
--- a/src/emu/bus/nes/mmc1.c
+++ b/src/devices/bus/nes/mmc1.c
diff --git a/src/emu/bus/nes/mmc1.h b/src/devices/bus/nes/mmc1.h
index 05e25c46818..05e25c46818 100644
--- a/src/emu/bus/nes/mmc1.h
+++ b/src/devices/bus/nes/mmc1.h
diff --git a/src/emu/bus/nes/mmc2.c b/src/devices/bus/nes/mmc2.c
index b9ef5402a00..b9ef5402a00 100644
--- a/src/emu/bus/nes/mmc2.c
+++ b/src/devices/bus/nes/mmc2.c
diff --git a/src/emu/bus/nes/mmc2.h b/src/devices/bus/nes/mmc2.h
index 205fcf7a1d4..205fcf7a1d4 100644
--- a/src/emu/bus/nes/mmc2.h
+++ b/src/devices/bus/nes/mmc2.h
diff --git a/src/emu/bus/nes/mmc3.c b/src/devices/bus/nes/mmc3.c
index 8e81fac286f..8e81fac286f 100644
--- a/src/emu/bus/nes/mmc3.c
+++ b/src/devices/bus/nes/mmc3.c
diff --git a/src/emu/bus/nes/mmc3.h b/src/devices/bus/nes/mmc3.h
index ace03588bb4..ace03588bb4 100644
--- a/src/emu/bus/nes/mmc3.h
+++ b/src/devices/bus/nes/mmc3.h
diff --git a/src/emu/bus/nes/mmc3_clones.c b/src/devices/bus/nes/mmc3_clones.c
index 4a806d0fde2..4a806d0fde2 100644
--- a/src/emu/bus/nes/mmc3_clones.c
+++ b/src/devices/bus/nes/mmc3_clones.c
diff --git a/src/emu/bus/nes/mmc3_clones.h b/src/devices/bus/nes/mmc3_clones.h
index 9445395889d..9445395889d 100644
--- a/src/emu/bus/nes/mmc3_clones.h
+++ b/src/devices/bus/nes/mmc3_clones.h
diff --git a/src/emu/bus/nes/mmc5.c b/src/devices/bus/nes/mmc5.c
index 26149c48e50..26149c48e50 100644
--- a/src/emu/bus/nes/mmc5.c
+++ b/src/devices/bus/nes/mmc5.c
diff --git a/src/emu/bus/nes/mmc5.h b/src/devices/bus/nes/mmc5.h
index 46fe19af7a8..46fe19af7a8 100644
--- a/src/emu/bus/nes/mmc5.h
+++ b/src/devices/bus/nes/mmc5.h
diff --git a/src/emu/bus/nes/multigame.c b/src/devices/bus/nes/multigame.c
index ba65c3d0e7c..ba65c3d0e7c 100644
--- a/src/emu/bus/nes/multigame.c
+++ b/src/devices/bus/nes/multigame.c
diff --git a/src/emu/bus/nes/multigame.h b/src/devices/bus/nes/multigame.h
index dbc824dfd54..dbc824dfd54 100644
--- a/src/emu/bus/nes/multigame.h
+++ b/src/devices/bus/nes/multigame.h
diff --git a/src/emu/bus/nes/namcot.c b/src/devices/bus/nes/namcot.c
index 236effc4a24..236effc4a24 100644
--- a/src/emu/bus/nes/namcot.c
+++ b/src/devices/bus/nes/namcot.c
diff --git a/src/emu/bus/nes/namcot.h b/src/devices/bus/nes/namcot.h
index 268347068b9..268347068b9 100644
--- a/src/emu/bus/nes/namcot.h
+++ b/src/devices/bus/nes/namcot.h
diff --git a/src/emu/bus/nes/nanjing.c b/src/devices/bus/nes/nanjing.c
index 4d0fc022520..4d0fc022520 100644
--- a/src/emu/bus/nes/nanjing.c
+++ b/src/devices/bus/nes/nanjing.c
diff --git a/src/emu/bus/nes/nanjing.h b/src/devices/bus/nes/nanjing.h
index 40fb8c2e714..40fb8c2e714 100644
--- a/src/emu/bus/nes/nanjing.h
+++ b/src/devices/bus/nes/nanjing.h
diff --git a/src/emu/bus/nes/nes_carts.c b/src/devices/bus/nes/nes_carts.c
index 6acac2fc6e7..6acac2fc6e7 100644
--- a/src/emu/bus/nes/nes_carts.c
+++ b/src/devices/bus/nes/nes_carts.c
diff --git a/src/emu/bus/nes/nes_carts.h b/src/devices/bus/nes/nes_carts.h
index 144d7aa0a8e..144d7aa0a8e 100644
--- a/src/emu/bus/nes/nes_carts.h
+++ b/src/devices/bus/nes/nes_carts.h
diff --git a/src/emu/bus/nes/nes_ines.inc b/src/devices/bus/nes/nes_ines.inc
index ceb9581b82f..ceb9581b82f 100644
--- a/src/emu/bus/nes/nes_ines.inc
+++ b/src/devices/bus/nes/nes_ines.inc
diff --git a/src/emu/bus/nes/nes_pcb.inc b/src/devices/bus/nes/nes_pcb.inc
index 57cdf3d498c..57cdf3d498c 100644
--- a/src/emu/bus/nes/nes_pcb.inc
+++ b/src/devices/bus/nes/nes_pcb.inc
diff --git a/src/emu/bus/nes/nes_slot.c b/src/devices/bus/nes/nes_slot.c
index ec1b1f5f4af..ec1b1f5f4af 100644
--- a/src/emu/bus/nes/nes_slot.c
+++ b/src/devices/bus/nes/nes_slot.c
diff --git a/src/emu/bus/nes/nes_slot.h b/src/devices/bus/nes/nes_slot.h
index f959465af33..f959465af33 100644
--- a/src/emu/bus/nes/nes_slot.h
+++ b/src/devices/bus/nes/nes_slot.h
diff --git a/src/emu/bus/nes/nes_unif.inc b/src/devices/bus/nes/nes_unif.inc
index b501c590159..b501c590159 100644
--- a/src/emu/bus/nes/nes_unif.inc
+++ b/src/devices/bus/nes/nes_unif.inc
diff --git a/src/emu/bus/nes/ntdec.c b/src/devices/bus/nes/ntdec.c
index 4dd7e56a842..4dd7e56a842 100644
--- a/src/emu/bus/nes/ntdec.c
+++ b/src/devices/bus/nes/ntdec.c
diff --git a/src/emu/bus/nes/ntdec.h b/src/devices/bus/nes/ntdec.h
index 00712eecf1c..00712eecf1c 100644
--- a/src/emu/bus/nes/ntdec.h
+++ b/src/devices/bus/nes/ntdec.h
diff --git a/src/emu/bus/nes/nxrom.c b/src/devices/bus/nes/nxrom.c
index 431d384e7f1..431d384e7f1 100644
--- a/src/emu/bus/nes/nxrom.c
+++ b/src/devices/bus/nes/nxrom.c
diff --git a/src/emu/bus/nes/nxrom.h b/src/devices/bus/nes/nxrom.h
index fe105be0189..fe105be0189 100644
--- a/src/emu/bus/nes/nxrom.h
+++ b/src/devices/bus/nes/nxrom.h
diff --git a/src/emu/bus/nes/pirate.c b/src/devices/bus/nes/pirate.c
index 557831ed144..557831ed144 100644
--- a/src/emu/bus/nes/pirate.c
+++ b/src/devices/bus/nes/pirate.c
diff --git a/src/emu/bus/nes/pirate.h b/src/devices/bus/nes/pirate.h
index f11c53ced0d..f11c53ced0d 100644
--- a/src/emu/bus/nes/pirate.h
+++ b/src/devices/bus/nes/pirate.h
diff --git a/src/emu/bus/nes/pt554.c b/src/devices/bus/nes/pt554.c
index 4f6e843d8d1..4f6e843d8d1 100644
--- a/src/emu/bus/nes/pt554.c
+++ b/src/devices/bus/nes/pt554.c
diff --git a/src/emu/bus/nes/pt554.h b/src/devices/bus/nes/pt554.h
index 0d0bd7b60f4..0d0bd7b60f4 100644
--- a/src/emu/bus/nes/pt554.h
+++ b/src/devices/bus/nes/pt554.h
diff --git a/src/emu/bus/nes/racermate.c b/src/devices/bus/nes/racermate.c
index 6989c2254cb..6989c2254cb 100644
--- a/src/emu/bus/nes/racermate.c
+++ b/src/devices/bus/nes/racermate.c
diff --git a/src/emu/bus/nes/racermate.h b/src/devices/bus/nes/racermate.h
index 209c2f56601..209c2f56601 100644
--- a/src/emu/bus/nes/racermate.h
+++ b/src/devices/bus/nes/racermate.h
diff --git a/src/emu/bus/nes/rcm.c b/src/devices/bus/nes/rcm.c
index 28ec6e8277e..28ec6e8277e 100644
--- a/src/emu/bus/nes/rcm.c
+++ b/src/devices/bus/nes/rcm.c
diff --git a/src/emu/bus/nes/rcm.h b/src/devices/bus/nes/rcm.h
index 4a5c05b6aa9..4a5c05b6aa9 100644
--- a/src/emu/bus/nes/rcm.h
+++ b/src/devices/bus/nes/rcm.h
diff --git a/src/emu/bus/nes/rexsoft.c b/src/devices/bus/nes/rexsoft.c
index c0e261dc5fa..c0e261dc5fa 100644
--- a/src/emu/bus/nes/rexsoft.c
+++ b/src/devices/bus/nes/rexsoft.c
diff --git a/src/emu/bus/nes/rexsoft.h b/src/devices/bus/nes/rexsoft.h
index 81527759574..81527759574 100644
--- a/src/emu/bus/nes/rexsoft.h
+++ b/src/devices/bus/nes/rexsoft.h
diff --git a/src/emu/bus/nes/sachen.c b/src/devices/bus/nes/sachen.c
index 87edbc6a700..87edbc6a700 100644
--- a/src/emu/bus/nes/sachen.c
+++ b/src/devices/bus/nes/sachen.c
diff --git a/src/emu/bus/nes/sachen.h b/src/devices/bus/nes/sachen.h
index d6604578d3a..d6604578d3a 100644
--- a/src/emu/bus/nes/sachen.h
+++ b/src/devices/bus/nes/sachen.h
diff --git a/src/emu/bus/nes/somari.c b/src/devices/bus/nes/somari.c
index 634aad58b68..634aad58b68 100644
--- a/src/emu/bus/nes/somari.c
+++ b/src/devices/bus/nes/somari.c
diff --git a/src/emu/bus/nes/somari.h b/src/devices/bus/nes/somari.h
index 726df0a4926..726df0a4926 100644
--- a/src/emu/bus/nes/somari.h
+++ b/src/devices/bus/nes/somari.h
diff --git a/src/emu/bus/nes/sunsoft.c b/src/devices/bus/nes/sunsoft.c
index 48d95c05727..48d95c05727 100644
--- a/src/emu/bus/nes/sunsoft.c
+++ b/src/devices/bus/nes/sunsoft.c
diff --git a/src/emu/bus/nes/sunsoft.h b/src/devices/bus/nes/sunsoft.h
index 53ea24adeae..53ea24adeae 100644
--- a/src/emu/bus/nes/sunsoft.h
+++ b/src/devices/bus/nes/sunsoft.h
diff --git a/src/emu/bus/nes/sunsoft_dcs.c b/src/devices/bus/nes/sunsoft_dcs.c
index c7de9fd3040..c7de9fd3040 100644
--- a/src/emu/bus/nes/sunsoft_dcs.c
+++ b/src/devices/bus/nes/sunsoft_dcs.c
diff --git a/src/emu/bus/nes/sunsoft_dcs.h b/src/devices/bus/nes/sunsoft_dcs.h
index 67fcaf83b1e..67fcaf83b1e 100644
--- a/src/emu/bus/nes/sunsoft_dcs.h
+++ b/src/devices/bus/nes/sunsoft_dcs.h
diff --git a/src/emu/bus/nes/taito.c b/src/devices/bus/nes/taito.c
index 2338d91ee25..2338d91ee25 100644
--- a/src/emu/bus/nes/taito.c
+++ b/src/devices/bus/nes/taito.c
diff --git a/src/emu/bus/nes/taito.h b/src/devices/bus/nes/taito.h
index 9f2b57ca512..9f2b57ca512 100644
--- a/src/emu/bus/nes/taito.h
+++ b/src/devices/bus/nes/taito.h
diff --git a/src/emu/bus/nes/tengen.c b/src/devices/bus/nes/tengen.c
index 555b0da3f35..555b0da3f35 100644
--- a/src/emu/bus/nes/tengen.c
+++ b/src/devices/bus/nes/tengen.c
diff --git a/src/emu/bus/nes/tengen.h b/src/devices/bus/nes/tengen.h
index 8732e6e1321..8732e6e1321 100644
--- a/src/emu/bus/nes/tengen.h
+++ b/src/devices/bus/nes/tengen.h
diff --git a/src/emu/bus/nes/txc.c b/src/devices/bus/nes/txc.c
index ae36ece75ee..ae36ece75ee 100644
--- a/src/emu/bus/nes/txc.c
+++ b/src/devices/bus/nes/txc.c
diff --git a/src/emu/bus/nes/txc.h b/src/devices/bus/nes/txc.h
index e71e6fde249..e71e6fde249 100644
--- a/src/emu/bus/nes/txc.h
+++ b/src/devices/bus/nes/txc.h
diff --git a/src/emu/bus/nes/waixing.c b/src/devices/bus/nes/waixing.c
index 8a223a8e295..8a223a8e295 100644
--- a/src/emu/bus/nes/waixing.c
+++ b/src/devices/bus/nes/waixing.c
diff --git a/src/emu/bus/nes/waixing.h b/src/devices/bus/nes/waixing.h
index 42220c5523d..42220c5523d 100644
--- a/src/emu/bus/nes/waixing.h
+++ b/src/devices/bus/nes/waixing.h
diff --git a/src/emu/bus/nes_ctrl/4score.c b/src/devices/bus/nes_ctrl/4score.c
index 867af2669b1..867af2669b1 100644
--- a/src/emu/bus/nes_ctrl/4score.c
+++ b/src/devices/bus/nes_ctrl/4score.c
diff --git a/src/emu/bus/nes_ctrl/4score.h b/src/devices/bus/nes_ctrl/4score.h
index f4f17174957..f4f17174957 100644
--- a/src/emu/bus/nes_ctrl/4score.h
+++ b/src/devices/bus/nes_ctrl/4score.h
diff --git a/src/emu/bus/nes_ctrl/arkpaddle.c b/src/devices/bus/nes_ctrl/arkpaddle.c
index 897c35da000..897c35da000 100644
--- a/src/emu/bus/nes_ctrl/arkpaddle.c
+++ b/src/devices/bus/nes_ctrl/arkpaddle.c
diff --git a/src/emu/bus/nes_ctrl/arkpaddle.h b/src/devices/bus/nes_ctrl/arkpaddle.h
index 84fe327b7d4..84fe327b7d4 100644
--- a/src/emu/bus/nes_ctrl/arkpaddle.h
+++ b/src/devices/bus/nes_ctrl/arkpaddle.h
diff --git a/src/emu/bus/nes_ctrl/bcbattle.c b/src/devices/bus/nes_ctrl/bcbattle.c
index 96b0a5bda86..96b0a5bda86 100644
--- a/src/emu/bus/nes_ctrl/bcbattle.c
+++ b/src/devices/bus/nes_ctrl/bcbattle.c
diff --git a/src/emu/bus/nes_ctrl/bcbattle.h b/src/devices/bus/nes_ctrl/bcbattle.h
index c68d0bc669b..c68d0bc669b 100644
--- a/src/emu/bus/nes_ctrl/bcbattle.h
+++ b/src/devices/bus/nes_ctrl/bcbattle.h
diff --git a/src/emu/bus/nes_ctrl/ctrl.c b/src/devices/bus/nes_ctrl/ctrl.c
index d128b1cfb5e..d128b1cfb5e 100644
--- a/src/emu/bus/nes_ctrl/ctrl.c
+++ b/src/devices/bus/nes_ctrl/ctrl.c
diff --git a/src/emu/bus/nes_ctrl/ctrl.h b/src/devices/bus/nes_ctrl/ctrl.h
index 1c682c0491b..1c682c0491b 100644
--- a/src/emu/bus/nes_ctrl/ctrl.h
+++ b/src/devices/bus/nes_ctrl/ctrl.h
diff --git a/src/emu/bus/nes_ctrl/fckeybrd.c b/src/devices/bus/nes_ctrl/fckeybrd.c
index 946fb072e53..946fb072e53 100644
--- a/src/emu/bus/nes_ctrl/fckeybrd.c
+++ b/src/devices/bus/nes_ctrl/fckeybrd.c
diff --git a/src/emu/bus/nes_ctrl/fckeybrd.h b/src/devices/bus/nes_ctrl/fckeybrd.h
index 594c3bcae8e..594c3bcae8e 100644
--- a/src/emu/bus/nes_ctrl/fckeybrd.h
+++ b/src/devices/bus/nes_ctrl/fckeybrd.h
diff --git a/src/emu/bus/nes_ctrl/ftrainer.c b/src/devices/bus/nes_ctrl/ftrainer.c
index 491cc59539e..491cc59539e 100644
--- a/src/emu/bus/nes_ctrl/ftrainer.c
+++ b/src/devices/bus/nes_ctrl/ftrainer.c
diff --git a/src/emu/bus/nes_ctrl/ftrainer.h b/src/devices/bus/nes_ctrl/ftrainer.h
index bc546295c8f..bc546295c8f 100644
--- a/src/emu/bus/nes_ctrl/ftrainer.h
+++ b/src/devices/bus/nes_ctrl/ftrainer.h
diff --git a/src/emu/bus/nes_ctrl/hori.c b/src/devices/bus/nes_ctrl/hori.c
index cecf1f05dbc..cecf1f05dbc 100644
--- a/src/emu/bus/nes_ctrl/hori.c
+++ b/src/devices/bus/nes_ctrl/hori.c
diff --git a/src/emu/bus/nes_ctrl/hori.h b/src/devices/bus/nes_ctrl/hori.h
index 8df4fd892ee..8df4fd892ee 100644
--- a/src/emu/bus/nes_ctrl/hori.h
+++ b/src/devices/bus/nes_ctrl/hori.h
diff --git a/src/emu/bus/nes_ctrl/joypad.c b/src/devices/bus/nes_ctrl/joypad.c
index efe17fb8a62..efe17fb8a62 100644
--- a/src/emu/bus/nes_ctrl/joypad.c
+++ b/src/devices/bus/nes_ctrl/joypad.c
diff --git a/src/emu/bus/nes_ctrl/joypad.h b/src/devices/bus/nes_ctrl/joypad.h
index 87966386e8d..87966386e8d 100644
--- a/src/emu/bus/nes_ctrl/joypad.h
+++ b/src/devices/bus/nes_ctrl/joypad.h
diff --git a/src/emu/bus/nes_ctrl/konamihs.c b/src/devices/bus/nes_ctrl/konamihs.c
index 33be8576788..33be8576788 100644
--- a/src/emu/bus/nes_ctrl/konamihs.c
+++ b/src/devices/bus/nes_ctrl/konamihs.c
diff --git a/src/emu/bus/nes_ctrl/konamihs.h b/src/devices/bus/nes_ctrl/konamihs.h
index d2ec5b92b2a..d2ec5b92b2a 100644
--- a/src/emu/bus/nes_ctrl/konamihs.h
+++ b/src/devices/bus/nes_ctrl/konamihs.h
diff --git a/src/emu/bus/nes_ctrl/miracle.c b/src/devices/bus/nes_ctrl/miracle.c
index bcfc6fbadac..bcfc6fbadac 100644
--- a/src/emu/bus/nes_ctrl/miracle.c
+++ b/src/devices/bus/nes_ctrl/miracle.c
diff --git a/src/emu/bus/nes_ctrl/miracle.h b/src/devices/bus/nes_ctrl/miracle.h
index ee68cf7f357..ee68cf7f357 100644
--- a/src/emu/bus/nes_ctrl/miracle.h
+++ b/src/devices/bus/nes_ctrl/miracle.h
diff --git a/src/emu/bus/nes_ctrl/mjpanel.c b/src/devices/bus/nes_ctrl/mjpanel.c
index cb37aeb1c2a..cb37aeb1c2a 100644
--- a/src/emu/bus/nes_ctrl/mjpanel.c
+++ b/src/devices/bus/nes_ctrl/mjpanel.c
diff --git a/src/emu/bus/nes_ctrl/mjpanel.h b/src/devices/bus/nes_ctrl/mjpanel.h
index e48ee792a80..e48ee792a80 100644
--- a/src/emu/bus/nes_ctrl/mjpanel.h
+++ b/src/devices/bus/nes_ctrl/mjpanel.h
diff --git a/src/emu/bus/nes_ctrl/pachinko.c b/src/devices/bus/nes_ctrl/pachinko.c
index 8c61cf00c14..8c61cf00c14 100644
--- a/src/emu/bus/nes_ctrl/pachinko.c
+++ b/src/devices/bus/nes_ctrl/pachinko.c
diff --git a/src/emu/bus/nes_ctrl/pachinko.h b/src/devices/bus/nes_ctrl/pachinko.h
index 8d01ce6983d..8d01ce6983d 100644
--- a/src/emu/bus/nes_ctrl/pachinko.h
+++ b/src/devices/bus/nes_ctrl/pachinko.h
diff --git a/src/emu/bus/nes_ctrl/partytap.c b/src/devices/bus/nes_ctrl/partytap.c
index 3338a443423..3338a443423 100644
--- a/src/emu/bus/nes_ctrl/partytap.c
+++ b/src/devices/bus/nes_ctrl/partytap.c
diff --git a/src/emu/bus/nes_ctrl/partytap.h b/src/devices/bus/nes_ctrl/partytap.h
index 3fc29c19445..3fc29c19445 100644
--- a/src/emu/bus/nes_ctrl/partytap.h
+++ b/src/devices/bus/nes_ctrl/partytap.h
diff --git a/src/emu/bus/nes_ctrl/powerpad.c b/src/devices/bus/nes_ctrl/powerpad.c
index 569695d97ca..569695d97ca 100644
--- a/src/emu/bus/nes_ctrl/powerpad.c
+++ b/src/devices/bus/nes_ctrl/powerpad.c
diff --git a/src/emu/bus/nes_ctrl/powerpad.h b/src/devices/bus/nes_ctrl/powerpad.h
index 47463a9055c..47463a9055c 100644
--- a/src/emu/bus/nes_ctrl/powerpad.h
+++ b/src/devices/bus/nes_ctrl/powerpad.h
diff --git a/src/emu/bus/nes_ctrl/suborkey.c b/src/devices/bus/nes_ctrl/suborkey.c
index 8c6e6be7b3c..8c6e6be7b3c 100644
--- a/src/emu/bus/nes_ctrl/suborkey.c
+++ b/src/devices/bus/nes_ctrl/suborkey.c
diff --git a/src/emu/bus/nes_ctrl/suborkey.h b/src/devices/bus/nes_ctrl/suborkey.h
index 21f804da6f0..21f804da6f0 100644
--- a/src/emu/bus/nes_ctrl/suborkey.h
+++ b/src/devices/bus/nes_ctrl/suborkey.h
diff --git a/src/emu/bus/nes_ctrl/zapper.c b/src/devices/bus/nes_ctrl/zapper.c
index 422b9664f5e..422b9664f5e 100644
--- a/src/emu/bus/nes_ctrl/zapper.c
+++ b/src/devices/bus/nes_ctrl/zapper.c
diff --git a/src/emu/bus/nes_ctrl/zapper.h b/src/devices/bus/nes_ctrl/zapper.h
index ca4b1eb40fd..ca4b1eb40fd 100644
--- a/src/emu/bus/nes_ctrl/zapper.h
+++ b/src/devices/bus/nes_ctrl/zapper.h
diff --git a/src/emu/bus/nubus/nubus.c b/src/devices/bus/nubus/nubus.c
index 5d6548289ec..5d6548289ec 100644
--- a/src/emu/bus/nubus/nubus.c
+++ b/src/devices/bus/nubus/nubus.c
diff --git a/src/emu/bus/nubus/nubus.h b/src/devices/bus/nubus/nubus.h
index 72bee5f7b84..72bee5f7b84 100644
--- a/src/emu/bus/nubus/nubus.h
+++ b/src/devices/bus/nubus/nubus.h
diff --git a/src/emu/bus/nubus/nubus_48gc.c b/src/devices/bus/nubus/nubus_48gc.c
index 213cf0a0753..213cf0a0753 100644
--- a/src/emu/bus/nubus/nubus_48gc.c
+++ b/src/devices/bus/nubus/nubus_48gc.c
diff --git a/src/emu/bus/nubus/nubus_48gc.h b/src/devices/bus/nubus/nubus_48gc.h
index 85384ace70f..85384ace70f 100644
--- a/src/emu/bus/nubus/nubus_48gc.h
+++ b/src/devices/bus/nubus/nubus_48gc.h
diff --git a/src/emu/bus/nubus/nubus_asntmc3b.c b/src/devices/bus/nubus/nubus_asntmc3b.c
index 1d911055e11..1d911055e11 100644
--- a/src/emu/bus/nubus/nubus_asntmc3b.c
+++ b/src/devices/bus/nubus/nubus_asntmc3b.c
diff --git a/src/emu/bus/nubus/nubus_asntmc3b.h b/src/devices/bus/nubus/nubus_asntmc3b.h
index fd5851a61df..fd5851a61df 100644
--- a/src/emu/bus/nubus/nubus_asntmc3b.h
+++ b/src/devices/bus/nubus/nubus_asntmc3b.h
diff --git a/src/emu/bus/nubus/nubus_cb264.c b/src/devices/bus/nubus/nubus_cb264.c
index 2e4febed481..2e4febed481 100644
--- a/src/emu/bus/nubus/nubus_cb264.c
+++ b/src/devices/bus/nubus/nubus_cb264.c
diff --git a/src/emu/bus/nubus/nubus_cb264.h b/src/devices/bus/nubus/nubus_cb264.h
index 633bf0f4962..633bf0f4962 100644
--- a/src/emu/bus/nubus/nubus_cb264.h
+++ b/src/devices/bus/nubus/nubus_cb264.h
diff --git a/src/emu/bus/nubus/nubus_image.c b/src/devices/bus/nubus/nubus_image.c
index 6b929c98270..6b929c98270 100644
--- a/src/emu/bus/nubus/nubus_image.c
+++ b/src/devices/bus/nubus/nubus_image.c
diff --git a/src/emu/bus/nubus/nubus_image.h b/src/devices/bus/nubus/nubus_image.h
index cbd68d1ae51..cbd68d1ae51 100644
--- a/src/emu/bus/nubus/nubus_image.h
+++ b/src/devices/bus/nubus/nubus_image.h
diff --git a/src/emu/bus/nubus/nubus_m2hires.c b/src/devices/bus/nubus/nubus_m2hires.c
index 7a2d1a8ffdf..7a2d1a8ffdf 100644
--- a/src/emu/bus/nubus/nubus_m2hires.c
+++ b/src/devices/bus/nubus/nubus_m2hires.c
diff --git a/src/emu/bus/nubus/nubus_m2hires.h b/src/devices/bus/nubus/nubus_m2hires.h
index b47db82b0a6..b47db82b0a6 100644
--- a/src/emu/bus/nubus/nubus_m2hires.h
+++ b/src/devices/bus/nubus/nubus_m2hires.h
diff --git a/src/emu/bus/nubus/nubus_m2video.c b/src/devices/bus/nubus/nubus_m2video.c
index edf0b90abbb..edf0b90abbb 100644
--- a/src/emu/bus/nubus/nubus_m2video.c
+++ b/src/devices/bus/nubus/nubus_m2video.c
diff --git a/src/emu/bus/nubus/nubus_m2video.h b/src/devices/bus/nubus/nubus_m2video.h
index 211482c4c97..211482c4c97 100644
--- a/src/emu/bus/nubus/nubus_m2video.h
+++ b/src/devices/bus/nubus/nubus_m2video.h
diff --git a/src/emu/bus/nubus/nubus_radiustpd.c b/src/devices/bus/nubus/nubus_radiustpd.c
index 3b30fc4a384..3b30fc4a384 100644
--- a/src/emu/bus/nubus/nubus_radiustpd.c
+++ b/src/devices/bus/nubus/nubus_radiustpd.c
diff --git a/src/emu/bus/nubus/nubus_radiustpd.h b/src/devices/bus/nubus/nubus_radiustpd.h
index eb12fdaf0ae..eb12fdaf0ae 100644
--- a/src/emu/bus/nubus/nubus_radiustpd.h
+++ b/src/devices/bus/nubus/nubus_radiustpd.h
diff --git a/src/emu/bus/nubus/nubus_spec8.c b/src/devices/bus/nubus/nubus_spec8.c
index b72fc2d676f..b72fc2d676f 100644
--- a/src/emu/bus/nubus/nubus_spec8.c
+++ b/src/devices/bus/nubus/nubus_spec8.c
diff --git a/src/emu/bus/nubus/nubus_spec8.h b/src/devices/bus/nubus/nubus_spec8.h
index ed04f1598e8..ed04f1598e8 100644
--- a/src/emu/bus/nubus/nubus_spec8.h
+++ b/src/devices/bus/nubus/nubus_spec8.h
diff --git a/src/emu/bus/nubus/nubus_specpdq.c b/src/devices/bus/nubus/nubus_specpdq.c
index 9971454feac..9971454feac 100644
--- a/src/emu/bus/nubus/nubus_specpdq.c
+++ b/src/devices/bus/nubus/nubus_specpdq.c
diff --git a/src/emu/bus/nubus/nubus_specpdq.h b/src/devices/bus/nubus/nubus_specpdq.h
index fb956743197..fb956743197 100644
--- a/src/emu/bus/nubus/nubus_specpdq.h
+++ b/src/devices/bus/nubus/nubus_specpdq.h
diff --git a/src/emu/bus/nubus/nubus_vikbw.c b/src/devices/bus/nubus/nubus_vikbw.c
index 52e30c0ca92..52e30c0ca92 100644
--- a/src/emu/bus/nubus/nubus_vikbw.c
+++ b/src/devices/bus/nubus/nubus_vikbw.c
diff --git a/src/emu/bus/nubus/nubus_vikbw.h b/src/devices/bus/nubus/nubus_vikbw.h
index 8ddc5aaf50f..8ddc5aaf50f 100644
--- a/src/emu/bus/nubus/nubus_vikbw.h
+++ b/src/devices/bus/nubus/nubus_vikbw.h
diff --git a/src/emu/bus/nubus/nubus_wsportrait.c b/src/devices/bus/nubus/nubus_wsportrait.c
index 3f00160ba40..3f00160ba40 100644
--- a/src/emu/bus/nubus/nubus_wsportrait.c
+++ b/src/devices/bus/nubus/nubus_wsportrait.c
diff --git a/src/emu/bus/nubus/nubus_wsportrait.h b/src/devices/bus/nubus/nubus_wsportrait.h
index a677daea6cc..a677daea6cc 100644
--- a/src/emu/bus/nubus/nubus_wsportrait.h
+++ b/src/devices/bus/nubus/nubus_wsportrait.h
diff --git a/src/emu/bus/nubus/pds30_30hr.c b/src/devices/bus/nubus/pds30_30hr.c
index 1d1af85f5ba..1d1af85f5ba 100644
--- a/src/emu/bus/nubus/pds30_30hr.c
+++ b/src/devices/bus/nubus/pds30_30hr.c
diff --git a/src/emu/bus/nubus/pds30_30hr.h b/src/devices/bus/nubus/pds30_30hr.h
index 9366a555285..9366a555285 100644
--- a/src/emu/bus/nubus/pds30_30hr.h
+++ b/src/devices/bus/nubus/pds30_30hr.h
diff --git a/src/emu/bus/nubus/pds30_cb264.c b/src/devices/bus/nubus/pds30_cb264.c
index 21eafd10935..21eafd10935 100644
--- a/src/emu/bus/nubus/pds30_cb264.c
+++ b/src/devices/bus/nubus/pds30_cb264.c
diff --git a/src/emu/bus/nubus/pds30_cb264.h b/src/devices/bus/nubus/pds30_cb264.h
index d1f7839ab45..d1f7839ab45 100644
--- a/src/emu/bus/nubus/pds30_cb264.h
+++ b/src/devices/bus/nubus/pds30_cb264.h
diff --git a/src/emu/bus/nubus/pds30_mc30.c b/src/devices/bus/nubus/pds30_mc30.c
index ddc063bbb8f..ddc063bbb8f 100644
--- a/src/emu/bus/nubus/pds30_mc30.c
+++ b/src/devices/bus/nubus/pds30_mc30.c
diff --git a/src/emu/bus/nubus/pds30_mc30.h b/src/devices/bus/nubus/pds30_mc30.h
index b7b7276df9f..b7b7276df9f 100644
--- a/src/emu/bus/nubus/pds30_mc30.h
+++ b/src/devices/bus/nubus/pds30_mc30.h
diff --git a/src/emu/bus/nubus/pds30_procolor816.c b/src/devices/bus/nubus/pds30_procolor816.c
index 4150a2c91b0..4150a2c91b0 100644
--- a/src/emu/bus/nubus/pds30_procolor816.c
+++ b/src/devices/bus/nubus/pds30_procolor816.c
diff --git a/src/emu/bus/nubus/pds30_procolor816.h b/src/devices/bus/nubus/pds30_procolor816.h
index 65bf9d9e76f..65bf9d9e76f 100644
--- a/src/emu/bus/nubus/pds30_procolor816.h
+++ b/src/devices/bus/nubus/pds30_procolor816.h
diff --git a/src/emu/bus/nubus/pds30_sigmalview.c b/src/devices/bus/nubus/pds30_sigmalview.c
index 32028fd6824..32028fd6824 100644
--- a/src/emu/bus/nubus/pds30_sigmalview.c
+++ b/src/devices/bus/nubus/pds30_sigmalview.c
diff --git a/src/emu/bus/nubus/pds30_sigmalview.h b/src/devices/bus/nubus/pds30_sigmalview.h
index 62530e412b1..62530e412b1 100644
--- a/src/emu/bus/nubus/pds30_sigmalview.h
+++ b/src/devices/bus/nubus/pds30_sigmalview.h
diff --git a/src/emu/bus/odyssey2/chess.c b/src/devices/bus/odyssey2/chess.c
index 8885733923c..8885733923c 100644
--- a/src/emu/bus/odyssey2/chess.c
+++ b/src/devices/bus/odyssey2/chess.c
diff --git a/src/emu/bus/odyssey2/chess.h b/src/devices/bus/odyssey2/chess.h
index 8604c317924..8604c317924 100644
--- a/src/emu/bus/odyssey2/chess.h
+++ b/src/devices/bus/odyssey2/chess.h
diff --git a/src/emu/bus/odyssey2/rom.c b/src/devices/bus/odyssey2/rom.c
index 2e364e59b9c..2e364e59b9c 100644
--- a/src/emu/bus/odyssey2/rom.c
+++ b/src/devices/bus/odyssey2/rom.c
diff --git a/src/emu/bus/odyssey2/rom.h b/src/devices/bus/odyssey2/rom.h
index 18bfa63c4b4..18bfa63c4b4 100644
--- a/src/emu/bus/odyssey2/rom.h
+++ b/src/devices/bus/odyssey2/rom.h
diff --git a/src/emu/bus/odyssey2/slot.c b/src/devices/bus/odyssey2/slot.c
index 72262afe7ac..72262afe7ac 100644
--- a/src/emu/bus/odyssey2/slot.c
+++ b/src/devices/bus/odyssey2/slot.c
diff --git a/src/emu/bus/odyssey2/slot.h b/src/devices/bus/odyssey2/slot.h
index a5cebb9ed0d..a5cebb9ed0d 100644
--- a/src/emu/bus/odyssey2/slot.h
+++ b/src/devices/bus/odyssey2/slot.h
diff --git a/src/emu/bus/odyssey2/voice.c b/src/devices/bus/odyssey2/voice.c
index e94b3bd1432..e94b3bd1432 100644
--- a/src/emu/bus/odyssey2/voice.c
+++ b/src/devices/bus/odyssey2/voice.c
diff --git a/src/emu/bus/odyssey2/voice.h b/src/devices/bus/odyssey2/voice.h
index 71fb77b067c..71fb77b067c 100644
--- a/src/emu/bus/odyssey2/voice.h
+++ b/src/devices/bus/odyssey2/voice.h
diff --git a/src/emu/bus/oricext/jasmin.c b/src/devices/bus/oricext/jasmin.c
index c8fd1d81081..c8fd1d81081 100644
--- a/src/emu/bus/oricext/jasmin.c
+++ b/src/devices/bus/oricext/jasmin.c
diff --git a/src/emu/bus/oricext/jasmin.h b/src/devices/bus/oricext/jasmin.h
index 8dae60eedbf..8dae60eedbf 100644
--- a/src/emu/bus/oricext/jasmin.h
+++ b/src/devices/bus/oricext/jasmin.h
diff --git a/src/emu/bus/oricext/microdisc.c b/src/devices/bus/oricext/microdisc.c
index c66adfa555a..c66adfa555a 100644
--- a/src/emu/bus/oricext/microdisc.c
+++ b/src/devices/bus/oricext/microdisc.c
diff --git a/src/emu/bus/oricext/microdisc.h b/src/devices/bus/oricext/microdisc.h
index bf790c4af52..bf790c4af52 100644
--- a/src/emu/bus/oricext/microdisc.h
+++ b/src/devices/bus/oricext/microdisc.h
diff --git a/src/emu/bus/oricext/oricext.c b/src/devices/bus/oricext/oricext.c
index e13b5c5f245..e13b5c5f245 100644
--- a/src/emu/bus/oricext/oricext.c
+++ b/src/devices/bus/oricext/oricext.c
diff --git a/src/emu/bus/oricext/oricext.h b/src/devices/bus/oricext/oricext.h
index 4eeb7766aea..4eeb7766aea 100644
--- a/src/emu/bus/oricext/oricext.h
+++ b/src/devices/bus/oricext/oricext.h
diff --git a/src/emu/bus/pc_joy/pc_joy.c b/src/devices/bus/pc_joy/pc_joy.c
index a8059c2f6da..99c3f5c1957 100644
--- a/src/emu/bus/pc_joy/pc_joy.c
+++ b/src/devices/bus/pc_joy/pc_joy.c
@@ -21,7 +21,7 @@ pc_joy_device::pc_joy_device(const machine_config &mconfig, const char *tag, dev
READ8_MEMBER ( pc_joy_device::joy_port_r )
{
- int delta = ((machine().time() - m_stime) * 256 * 1000).seconds;
+ int delta = ((machine().time() - m_stime) * 256 * 1000).seconds();
if(!m_dev)
return 0xf0;
diff --git a/src/emu/bus/pc_joy/pc_joy.h b/src/devices/bus/pc_joy/pc_joy.h
index f67e74ff003..f67e74ff003 100644
--- a/src/emu/bus/pc_joy/pc_joy.h
+++ b/src/devices/bus/pc_joy/pc_joy.h
diff --git a/src/emu/bus/pc_joy/pc_joy_sw.c b/src/devices/bus/pc_joy/pc_joy_sw.c
index ebfb1af785b..ebfb1af785b 100644
--- a/src/emu/bus/pc_joy/pc_joy_sw.c
+++ b/src/devices/bus/pc_joy/pc_joy_sw.c
diff --git a/src/emu/bus/pc_joy/pc_joy_sw.h b/src/devices/bus/pc_joy/pc_joy_sw.h
index 12506ef1f1b..12506ef1f1b 100644
--- a/src/emu/bus/pc_joy/pc_joy_sw.h
+++ b/src/devices/bus/pc_joy/pc_joy_sw.h
diff --git a/src/emu/bus/pc_kbd/ec1841.c b/src/devices/bus/pc_kbd/ec1841.c
index 54c4d6b3a97..54c4d6b3a97 100644
--- a/src/emu/bus/pc_kbd/ec1841.c
+++ b/src/devices/bus/pc_kbd/ec1841.c
diff --git a/src/emu/bus/pc_kbd/ec1841.h b/src/devices/bus/pc_kbd/ec1841.h
index 20c8e74a5d6..20c8e74a5d6 100644
--- a/src/emu/bus/pc_kbd/ec1841.h
+++ b/src/devices/bus/pc_kbd/ec1841.h
diff --git a/src/devices/bus/pc_kbd/iskr1030.c b/src/devices/bus/pc_kbd/iskr1030.c
new file mode 100644
index 00000000000..581f30b5a77
--- /dev/null
+++ b/src/devices/bus/pc_kbd/iskr1030.c
@@ -0,0 +1,500 @@
+// license:BSD-3-Clause
+// copyright-holders:Sergey Svishchev
+/**********************************************************************
+
+ Iskra-1030 and -1031 XX-key keyboard emulation
+
+*********************************************************************/
+
+#include "iskr1030.h"
+
+#define VERBOSE_DBG 1 /* general debug messages */
+
+#define DBG_LOG(N,M,A) \
+ do { \
+ if(VERBOSE_DBG>=N) \
+ { \
+ logerror("%11.6f at %s: ",machine().time().as_double(),machine().describe_context()); \
+ logerror A; \
+ } \
+ } while (0)
+
+
+
+//**************************************************************************
+// MACROS / CONSTANTS
+//**************************************************************************
+
+#define I8048_TAG "i8048"
+
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type PC_KBD_ISKR_1030 = &device_creator<iskr_1030_keyboard_device>;
+
+
+//-------------------------------------------------
+// ROM( iskr_1030_keyboard )
+//-------------------------------------------------
+
+ROM_START( iskr_1030_keyboard )
+ ROM_REGION( 0x800, I8048_TAG, 0 )
+ ROM_LOAD( "i1030.bin", 0x000, 0x800, CRC(7cac9c4b) SHA1(03959d3350e012ebfe61cee9c062b6c1fdd8766e) )
+ROM_END
+
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const rom_entry *iskr_1030_keyboard_device::device_rom_region() const
+{
+ return ROM_NAME( iskr_1030_keyboard );
+}
+
+
+//-------------------------------------------------
+// ADDRESS_MAP( kb_io )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( iskr_1030_keyboard_io, AS_IO, 8, iskr_1030_keyboard_device )
+ AM_RANGE(0x00, 0xFF) AM_READWRITE(ram_r, ram_w)
+ AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w)
+ AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w)
+ AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r)
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
+// MACHINE_DRIVER( iskr_1030_keyboard )
+//-------------------------------------------------
+
+static MACHINE_CONFIG_FRAGMENT( iskr_1030_keyboard )
+ MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_5MHz)
+ MCFG_CPU_IO_MAP(iskr_1030_keyboard_io)
+MACHINE_CONFIG_END
+
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor iskr_1030_keyboard_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( iskr_1030_keyboard );
+}
+
+
+//-------------------------------------------------
+// INPUT_PORTS( iskr_1030_keyboard )
+//-------------------------------------------------
+
+INPUT_PORTS_START( iskr_1030_keyboard )
+ PORT_START("MD00")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD01")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD02")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD03")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD04")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD05")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD06")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD07")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD08")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD09")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD10")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD11")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD12")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD13")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD14")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD15")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD16")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD17")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD18")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD19")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD20")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD21")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD22")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+
+ PORT_START("MD23")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD )
+INPUT_PORTS_END
+
+
+//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor iskr_1030_keyboard_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( iskr_1030_keyboard );
+}
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// iskr_1030_keyboard_device - constructor
+//-------------------------------------------------
+
+iskr_1030_keyboard_device::iskr_1030_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, PC_KBD_ISKR_1030, "Iskra-1030 Keyboard", tag, owner, clock, "kb_iskr1030", __FILE__),
+ device_pc_kbd_interface(mconfig, *this),
+ m_maincpu(*this, I8048_TAG),
+ m_md00(*this, "MD00"),
+ m_md01(*this, "MD01"),
+ m_md02(*this, "MD02"),
+ m_md03(*this, "MD03"),
+ m_md04(*this, "MD04"),
+ m_md05(*this, "MD05"),
+ m_md06(*this, "MD06"),
+ m_md07(*this, "MD07"),
+ m_md08(*this, "MD08"),
+ m_md09(*this, "MD09"),
+ m_md10(*this, "MD10"),
+ m_md11(*this, "MD11"),
+ m_md12(*this, "MD12"),
+ m_md13(*this, "MD13"),
+ m_md14(*this, "MD14"),
+ m_md15(*this, "MD15"),
+ m_md16(*this, "MD16"),
+ m_md17(*this, "MD17"),
+ m_md18(*this, "MD18"),
+ m_md19(*this, "MD19"),
+ m_md20(*this, "MD20"),
+ m_md21(*this, "MD21"),
+ m_md22(*this, "MD22"),
+ m_md23(*this, "MD23"),
+ m_p1(0),
+ m_p2(0),
+ m_q(0)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void iskr_1030_keyboard_device::device_start()
+{
+ set_pc_kbdc_device();
+
+ m_ram.resize(0x100);
+ save_item(NAME(m_ram));
+
+ save_item(NAME(m_bus));
+ save_item(NAME(m_p1));
+ save_item(NAME(m_p2));
+ save_item(NAME(m_q));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void iskr_1030_keyboard_device::device_reset()
+{
+}
+
+
+//-------------------------------------------------
+// clock_write -
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( iskr_1030_keyboard_device::clock_write )
+{
+ DBG_LOG(1,0,( "%s: clock write %d\n", tag(), state));
+ m_maincpu->set_input_line(MCS48_INPUT_IRQ, state ? CLEAR_LINE : ASSERT_LINE);
+}
+
+
+//-------------------------------------------------
+// data_write -
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( iskr_1030_keyboard_device::data_write )
+{
+ DBG_LOG(1,0,( "%s: data write %d\n", tag(), state));
+}
+
+
+//-------------------------------------------------
+// t1_r -
+//-------------------------------------------------
+
+READ8_MEMBER( iskr_1030_keyboard_device::t1_r )
+{
+ UINT8 data = data_signal();
+ UINT8 bias = m_p1 & 15;
+
+ if (!BIT(m_p1, 7)) {
+ DBG_LOG(2,0,( "%s: t1_r (l) %d\n", tag(), data));
+ return data;
+ }
+
+ if (bias) {
+ DBG_LOG(2,0,( "%s: t1_r (b) %d\n", tag(), bias));
+ return 1;
+ }
+
+ data = 0;
+ switch (m_bus >> 2)
+ {
+ case 0<<1: data = m_md00->read(); break;
+ case 1<<1: data = m_md01->read(); break;
+ case 2<<1: data = m_md02->read(); break;
+ case 3<<1: data = m_md03->read(); break;
+ case 4<<1: data = m_md04->read(); break;
+ case 5<<1: data = m_md05->read(); break;
+ case 6<<1: data = m_md06->read(); break;
+ case 7<<1: data = m_md07->read(); break;
+ case 8<<1: data = m_md08->read(); break;
+ case 9<<1: data = m_md09->read(); break;
+ case 10<<1: data = m_md10->read(); break;
+ case 11<<1: data = m_md11->read(); break;
+ case (0<<1)+1: data = m_md12->read(); break;
+ case (1<<1)+1: data = m_md13->read(); break;
+ case (2<<1)+1: data = m_md14->read(); break;
+ case (3<<1)+1: data = m_md15->read(); break;
+ case (4<<1)+1: data = m_md16->read(); break;
+ case (5<<1)+1: data = m_md17->read(); break;
+ case (6<<1)+1: data = m_md18->read(); break;
+ case (7<<1)+1: data = m_md19->read(); break;
+ case (8<<1)+1: data = m_md20->read(); break;
+ case (9<<1)+1: data = m_md21->read(); break;
+ case (10<<1)+1: data = m_md22->read(); break;
+ case (11<<1)+1: data = m_md23->read(); break;
+ }
+ data = BIT(data, m_bus&3);
+
+ DBG_LOG(2,0,( "%s: t1_r (k r%d c%d) %d\n", tag(), m_bus&3, m_bus>>2, data));
+ return data;
+}
+
+
+//-------------------------------------------------
+// ram_w -
+//-------------------------------------------------
+
+WRITE8_MEMBER( iskr_1030_keyboard_device::ram_w )
+{
+ DBG_LOG(2,0,( "%s: ram_w[%02x] <- %02x\n", tag(), offset, data));
+
+ m_bus = offset;
+ m_ram[offset] = data;
+}
+
+
+//-------------------------------------------------
+// ram_r -
+//-------------------------------------------------
+
+READ8_MEMBER( iskr_1030_keyboard_device::ram_r )
+{
+ DBG_LOG(2,0,( "%s: ram_r[%02x] = %02x\n", tag(), offset, m_ram[offset]));
+
+ return m_ram[offset];
+}
+
+
+//-------------------------------------------------
+// p1_r -
+//-------------------------------------------------
+
+READ8_MEMBER( iskr_1030_keyboard_device::p1_r )
+{
+ /*
+ bit description
+
+ 0 -REQ IN
+ 1 DATA IN
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ */
+
+ UINT8 data = 0;
+
+ DBG_LOG(1,0,( "%s: p1_r %02x\n", tag(), data));
+
+ return data;
+}
+
+
+//-------------------------------------------------
+// p2_w -
+//-------------------------------------------------
+
+WRITE8_MEMBER( iskr_1030_keyboard_device::p2_w )
+{
+ /*
+ bit description
+
+ 0 ...
+ 1 ...
+ 2 ...
+ 3 (not connected)
+ 4 SPEAKER
+ 5 LED RUS/LAT
+ 6 LED NLK
+ 7 LED CLK
+ */
+ DBG_LOG(1,0,( "%s: p2_w %02x\n", tag(), data));
+
+ m_p2 = data;
+}
+
+
+//-------------------------------------------------
+// p1_w - OK
+//-------------------------------------------------
+
+WRITE8_MEMBER( iskr_1030_keyboard_device::p1_w )
+{
+ /*
+ bit description
+
+ 0 XXX
+ 1 XXX
+ 2 XXX
+ 3 XXX
+ 4 CLOCK out
+ 5 DATA out
+ 6 XXX
+ 7 POLL GATE
+ */
+
+ m_p1 = data;
+
+ DBG_LOG(1,0,( "%s: p1_w %02x (c %d d %d bias %d)\n", tag(), data, BIT(data, 4), BIT(data, 5), data&15));
+
+ m_pc_kbdc->data_write_from_kb(BIT(data, 5));
+ m_pc_kbdc->clock_write_from_kb(BIT(data, 4));
+}
diff --git a/src/emu/bus/pc_kbd/iskr1030.h b/src/devices/bus/pc_kbd/iskr1030.h
index 37ae7953662..40957295b52 100644
--- a/src/emu/bus/pc_kbd/iskr1030.h
+++ b/src/devices/bus/pc_kbd/iskr1030.h
@@ -36,10 +36,11 @@ public:
virtual machine_config_constructor device_mconfig_additions() const;
virtual ioport_constructor device_input_ports() const;
+ DECLARE_READ8_MEMBER( ram_r );
+ DECLARE_WRITE8_MEMBER( ram_w );
DECLARE_READ8_MEMBER( p1_r );
DECLARE_WRITE8_MEMBER( p1_w );
DECLARE_WRITE8_MEMBER( p2_w );
- DECLARE_READ8_MEMBER( t0_r );
DECLARE_READ8_MEMBER( t1_r );
protected:
@@ -69,7 +70,17 @@ private:
required_ioport m_md13;
required_ioport m_md14;
required_ioport m_md15;
-
+ required_ioport m_md16;
+ required_ioport m_md17;
+ required_ioport m_md18;
+ required_ioport m_md19;
+ required_ioport m_md20;
+ required_ioport m_md21;
+ required_ioport m_md22;
+ required_ioport m_md23;
+
+ dynamic_buffer m_ram;
+ UINT8 m_bus;
UINT8 m_p1;
UINT8 m_p2;
int m_q;
diff --git a/src/emu/bus/pc_kbd/keyboards.c b/src/devices/bus/pc_kbd/keyboards.c
index c9bc4c33acd..c9bc4c33acd 100644
--- a/src/emu/bus/pc_kbd/keyboards.c
+++ b/src/devices/bus/pc_kbd/keyboards.c
diff --git a/src/emu/bus/pc_kbd/keyboards.h b/src/devices/bus/pc_kbd/keyboards.h
index cd88f8b1096..cd88f8b1096 100644
--- a/src/emu/bus/pc_kbd/keyboards.h
+++ b/src/devices/bus/pc_kbd/keyboards.h
diff --git a/src/emu/bus/pc_kbd/keytro.c b/src/devices/bus/pc_kbd/keytro.c
index 01fbaf6852b..01fbaf6852b 100644
--- a/src/emu/bus/pc_kbd/keytro.c
+++ b/src/devices/bus/pc_kbd/keytro.c
diff --git a/src/emu/bus/pc_kbd/keytro.h b/src/devices/bus/pc_kbd/keytro.h
index 4a41b9bb4f5..4a41b9bb4f5 100644
--- a/src/emu/bus/pc_kbd/keytro.h
+++ b/src/devices/bus/pc_kbd/keytro.h
diff --git a/src/emu/bus/pc_kbd/msnat.c b/src/devices/bus/pc_kbd/msnat.c
index 201ff864fb2..201ff864fb2 100644
--- a/src/emu/bus/pc_kbd/msnat.c
+++ b/src/devices/bus/pc_kbd/msnat.c
diff --git a/src/emu/bus/pc_kbd/msnat.h b/src/devices/bus/pc_kbd/msnat.h
index 6ed13a35b8e..6ed13a35b8e 100644
--- a/src/emu/bus/pc_kbd/msnat.h
+++ b/src/devices/bus/pc_kbd/msnat.h
diff --git a/src/emu/bus/pc_kbd/pc83.c b/src/devices/bus/pc_kbd/pc83.c
index ef979eef530..ef979eef530 100644
--- a/src/emu/bus/pc_kbd/pc83.c
+++ b/src/devices/bus/pc_kbd/pc83.c
diff --git a/src/emu/bus/pc_kbd/pc83.h b/src/devices/bus/pc_kbd/pc83.h
index 5ee259253ff..5ee259253ff 100644
--- a/src/emu/bus/pc_kbd/pc83.h
+++ b/src/devices/bus/pc_kbd/pc83.h
diff --git a/src/emu/bus/pc_kbd/pc_kbdc.c b/src/devices/bus/pc_kbd/pc_kbdc.c
index 296dbbef547..296dbbef547 100644
--- a/src/emu/bus/pc_kbd/pc_kbdc.c
+++ b/src/devices/bus/pc_kbd/pc_kbdc.c
diff --git a/src/emu/bus/pc_kbd/pc_kbdc.h b/src/devices/bus/pc_kbd/pc_kbdc.h
index 76b82de023f..76b82de023f 100644
--- a/src/emu/bus/pc_kbd/pc_kbdc.h
+++ b/src/devices/bus/pc_kbd/pc_kbdc.h
diff --git a/src/emu/bus/pc_kbd/pcat84.c b/src/devices/bus/pc_kbd/pcat84.c
index 471333e9d18..471333e9d18 100644
--- a/src/emu/bus/pc_kbd/pcat84.c
+++ b/src/devices/bus/pc_kbd/pcat84.c
diff --git a/src/emu/bus/pc_kbd/pcat84.h b/src/devices/bus/pc_kbd/pcat84.h
index 06f58c84738..06f58c84738 100644
--- a/src/emu/bus/pc_kbd/pcat84.h
+++ b/src/devices/bus/pc_kbd/pcat84.h
diff --git a/src/emu/bus/pc_kbd/pcxt83.c b/src/devices/bus/pc_kbd/pcxt83.c
index dfbc5616b73..dfbc5616b73 100644
--- a/src/emu/bus/pc_kbd/pcxt83.c
+++ b/src/devices/bus/pc_kbd/pcxt83.c
diff --git a/src/emu/bus/pc_kbd/pcxt83.h b/src/devices/bus/pc_kbd/pcxt83.h
index cec03f8bc92..cec03f8bc92 100644
--- a/src/emu/bus/pc_kbd/pcxt83.h
+++ b/src/devices/bus/pc_kbd/pcxt83.h
diff --git a/src/emu/bus/pce/pce_rom.c b/src/devices/bus/pce/pce_rom.c
index 8829e7823d0..8829e7823d0 100644
--- a/src/emu/bus/pce/pce_rom.c
+++ b/src/devices/bus/pce/pce_rom.c
diff --git a/src/emu/bus/pce/pce_rom.h b/src/devices/bus/pce/pce_rom.h
index 3f6b9efcd47..3f6b9efcd47 100644
--- a/src/emu/bus/pce/pce_rom.h
+++ b/src/devices/bus/pce/pce_rom.h
diff --git a/src/emu/bus/pce/pce_slot.c b/src/devices/bus/pce/pce_slot.c
index bc124852c0c..bc124852c0c 100644
--- a/src/emu/bus/pce/pce_slot.c
+++ b/src/devices/bus/pce/pce_slot.c
diff --git a/src/emu/bus/pce/pce_slot.h b/src/devices/bus/pce/pce_slot.h
index e6968518b49..e6968518b49 100644
--- a/src/emu/bus/pce/pce_slot.h
+++ b/src/devices/bus/pce/pce_slot.h
diff --git a/src/emu/bus/pet/64k.c b/src/devices/bus/pet/64k.c
index 4bc9c01d596..4bc9c01d596 100644
--- a/src/emu/bus/pet/64k.c
+++ b/src/devices/bus/pet/64k.c
diff --git a/src/emu/bus/pet/64k.h b/src/devices/bus/pet/64k.h
index 6a7511357ad..6a7511357ad 100644
--- a/src/emu/bus/pet/64k.h
+++ b/src/devices/bus/pet/64k.h
diff --git a/src/emu/bus/pet/c2n.c b/src/devices/bus/pet/c2n.c
index aab392e9ffb..aab392e9ffb 100644
--- a/src/emu/bus/pet/c2n.c
+++ b/src/devices/bus/pet/c2n.c
diff --git a/src/emu/bus/pet/c2n.h b/src/devices/bus/pet/c2n.h
index a8e09d57c00..a8e09d57c00 100644
--- a/src/emu/bus/pet/c2n.h
+++ b/src/devices/bus/pet/c2n.h
diff --git a/src/emu/bus/pet/cass.c b/src/devices/bus/pet/cass.c
index f425478e5a2..f425478e5a2 100644
--- a/src/emu/bus/pet/cass.c
+++ b/src/devices/bus/pet/cass.c
diff --git a/src/emu/bus/pet/cass.h b/src/devices/bus/pet/cass.h
index b4c2da0738b..b4c2da0738b 100644
--- a/src/emu/bus/pet/cass.h
+++ b/src/devices/bus/pet/cass.h
diff --git a/src/emu/bus/pet/cb2snd.c b/src/devices/bus/pet/cb2snd.c
index d89ef26268c..d89ef26268c 100644
--- a/src/emu/bus/pet/cb2snd.c
+++ b/src/devices/bus/pet/cb2snd.c
diff --git a/src/emu/bus/pet/cb2snd.h b/src/devices/bus/pet/cb2snd.h
index 77d5f93979a..77d5f93979a 100644
--- a/src/emu/bus/pet/cb2snd.h
+++ b/src/devices/bus/pet/cb2snd.h
diff --git a/src/emu/bus/pet/diag.c b/src/devices/bus/pet/diag.c
index 7cd73c6fff0..7cd73c6fff0 100644
--- a/src/emu/bus/pet/diag.c
+++ b/src/devices/bus/pet/diag.c
diff --git a/src/emu/bus/pet/diag.h b/src/devices/bus/pet/diag.h
index 2f8d094ef01..2f8d094ef01 100644
--- a/src/emu/bus/pet/diag.h
+++ b/src/devices/bus/pet/diag.h
diff --git a/src/emu/bus/pet/diag264_lb_tape.c b/src/devices/bus/pet/diag264_lb_tape.c
index 0c3bfb87d74..0c3bfb87d74 100644
--- a/src/emu/bus/pet/diag264_lb_tape.c
+++ b/src/devices/bus/pet/diag264_lb_tape.c
diff --git a/src/emu/bus/pet/diag264_lb_tape.h b/src/devices/bus/pet/diag264_lb_tape.h
index 4d37e32ec94..4d37e32ec94 100644
--- a/src/emu/bus/pet/diag264_lb_tape.h
+++ b/src/devices/bus/pet/diag264_lb_tape.h
diff --git a/src/emu/bus/pet/exp.c b/src/devices/bus/pet/exp.c
index e550c2cf80f..e550c2cf80f 100644
--- a/src/emu/bus/pet/exp.c
+++ b/src/devices/bus/pet/exp.c
diff --git a/src/emu/bus/pet/exp.h b/src/devices/bus/pet/exp.h
index ed583333c60..ed583333c60 100644
--- a/src/emu/bus/pet/exp.h
+++ b/src/devices/bus/pet/exp.h
diff --git a/src/emu/bus/pet/hsg.c b/src/devices/bus/pet/hsg.c
index 5f2d7d1df9d..5f2d7d1df9d 100644
--- a/src/emu/bus/pet/hsg.c
+++ b/src/devices/bus/pet/hsg.c
diff --git a/src/emu/bus/pet/hsg.h b/src/devices/bus/pet/hsg.h
index 40345894063..40345894063 100644
--- a/src/emu/bus/pet/hsg.h
+++ b/src/devices/bus/pet/hsg.h
diff --git a/src/emu/bus/pet/petuja.c b/src/devices/bus/pet/petuja.c
index 4bc335e7dab..4bc335e7dab 100644
--- a/src/emu/bus/pet/petuja.c
+++ b/src/devices/bus/pet/petuja.c
diff --git a/src/emu/bus/pet/petuja.h b/src/devices/bus/pet/petuja.h
index f923b3dccda..f923b3dccda 100644
--- a/src/emu/bus/pet/petuja.h
+++ b/src/devices/bus/pet/petuja.h
diff --git a/src/emu/bus/pet/superpet.c b/src/devices/bus/pet/superpet.c
index 35a80c2e298..35a80c2e298 100644
--- a/src/emu/bus/pet/superpet.c
+++ b/src/devices/bus/pet/superpet.c
diff --git a/src/emu/bus/pet/superpet.h b/src/devices/bus/pet/superpet.h
index 2cf1c011c6e..2cf1c011c6e 100644
--- a/src/emu/bus/pet/superpet.h
+++ b/src/devices/bus/pet/superpet.h
diff --git a/src/emu/bus/pet/user.c b/src/devices/bus/pet/user.c
index b543777df63..b543777df63 100644
--- a/src/emu/bus/pet/user.c
+++ b/src/devices/bus/pet/user.c
diff --git a/src/emu/bus/pet/user.h b/src/devices/bus/pet/user.h
index 9c6e6d8bd3e..9c6e6d8bd3e 100644
--- a/src/emu/bus/pet/user.h
+++ b/src/devices/bus/pet/user.h
diff --git a/src/emu/bus/plus4/c1551.c b/src/devices/bus/plus4/c1551.c
index 5439eaf1fd5..5439eaf1fd5 100644
--- a/src/emu/bus/plus4/c1551.c
+++ b/src/devices/bus/plus4/c1551.c
diff --git a/src/emu/bus/plus4/c1551.h b/src/devices/bus/plus4/c1551.h
index e31ec0afdd5..e31ec0afdd5 100644
--- a/src/emu/bus/plus4/c1551.h
+++ b/src/devices/bus/plus4/c1551.h
diff --git a/src/emu/bus/plus4/diag264_lb_user.c b/src/devices/bus/plus4/diag264_lb_user.c
index 10d93e462e6..10d93e462e6 100644
--- a/src/emu/bus/plus4/diag264_lb_user.c
+++ b/src/devices/bus/plus4/diag264_lb_user.c
diff --git a/src/emu/bus/plus4/diag264_lb_user.h b/src/devices/bus/plus4/diag264_lb_user.h
index 25e0766d064..25e0766d064 100644
--- a/src/emu/bus/plus4/diag264_lb_user.h
+++ b/src/devices/bus/plus4/diag264_lb_user.h
diff --git a/src/emu/bus/plus4/exp.c b/src/devices/bus/plus4/exp.c
index 801470cbf30..801470cbf30 100644
--- a/src/emu/bus/plus4/exp.c
+++ b/src/devices/bus/plus4/exp.c
diff --git a/src/emu/bus/plus4/exp.h b/src/devices/bus/plus4/exp.h
index 0bd8e963cc6..0bd8e963cc6 100644
--- a/src/emu/bus/plus4/exp.h
+++ b/src/devices/bus/plus4/exp.h
diff --git a/src/emu/bus/plus4/sid.c b/src/devices/bus/plus4/sid.c
index 57515474824..57515474824 100644
--- a/src/emu/bus/plus4/sid.c
+++ b/src/devices/bus/plus4/sid.c
diff --git a/src/emu/bus/plus4/sid.h b/src/devices/bus/plus4/sid.h
index 63a7040416f..63a7040416f 100644
--- a/src/emu/bus/plus4/sid.h
+++ b/src/devices/bus/plus4/sid.h
diff --git a/src/emu/bus/plus4/std.c b/src/devices/bus/plus4/std.c
index 8627f99cc30..8627f99cc30 100644
--- a/src/emu/bus/plus4/std.c
+++ b/src/devices/bus/plus4/std.c
diff --git a/src/emu/bus/plus4/std.h b/src/devices/bus/plus4/std.h
index 3949240b037..3949240b037 100644
--- a/src/emu/bus/plus4/std.h
+++ b/src/devices/bus/plus4/std.h
diff --git a/src/emu/bus/plus4/user.c b/src/devices/bus/plus4/user.c
index 7c9c6ed24b5..7c9c6ed24b5 100644
--- a/src/emu/bus/plus4/user.c
+++ b/src/devices/bus/plus4/user.c
diff --git a/src/emu/bus/plus4/user.h b/src/devices/bus/plus4/user.h
index abf4a909ccb..abf4a909ccb 100644
--- a/src/emu/bus/plus4/user.h
+++ b/src/devices/bus/plus4/user.h
diff --git a/src/emu/bus/psx/analogue.c b/src/devices/bus/psx/analogue.c
index f9896dcd2e5..f9896dcd2e5 100644
--- a/src/emu/bus/psx/analogue.c
+++ b/src/devices/bus/psx/analogue.c
diff --git a/src/emu/bus/psx/analogue.h b/src/devices/bus/psx/analogue.h
index dad5490f944..dad5490f944 100644
--- a/src/emu/bus/psx/analogue.h
+++ b/src/devices/bus/psx/analogue.h
diff --git a/src/emu/bus/psx/ctlrport.c b/src/devices/bus/psx/ctlrport.c
index 09099cb5481..09099cb5481 100644
--- a/src/emu/bus/psx/ctlrport.c
+++ b/src/devices/bus/psx/ctlrport.c
diff --git a/src/emu/bus/psx/ctlrport.h b/src/devices/bus/psx/ctlrport.h
index 2e7a35d2d9d..2e7a35d2d9d 100644
--- a/src/emu/bus/psx/ctlrport.h
+++ b/src/devices/bus/psx/ctlrport.h
diff --git a/src/emu/bus/psx/memcard.c b/src/devices/bus/psx/memcard.c
index c0461a3efac..c0461a3efac 100644
--- a/src/emu/bus/psx/memcard.c
+++ b/src/devices/bus/psx/memcard.c
diff --git a/src/emu/bus/psx/memcard.h b/src/devices/bus/psx/memcard.h
index 85b8d2fa4fd..85b8d2fa4fd 100644
--- a/src/emu/bus/psx/memcard.h
+++ b/src/devices/bus/psx/memcard.h
diff --git a/src/emu/bus/psx/multitap.c b/src/devices/bus/psx/multitap.c
index 67a794b1f58..67a794b1f58 100644
--- a/src/emu/bus/psx/multitap.c
+++ b/src/devices/bus/psx/multitap.c
diff --git a/src/emu/bus/psx/multitap.h b/src/devices/bus/psx/multitap.h
index f968d4e4dc6..f968d4e4dc6 100644
--- a/src/emu/bus/psx/multitap.h
+++ b/src/devices/bus/psx/multitap.h
diff --git a/src/emu/bus/ql/cst_q_plus4.c b/src/devices/bus/ql/cst_q_plus4.c
index 76f5a046566..76f5a046566 100644
--- a/src/emu/bus/ql/cst_q_plus4.c
+++ b/src/devices/bus/ql/cst_q_plus4.c
diff --git a/src/emu/bus/ql/cst_q_plus4.h b/src/devices/bus/ql/cst_q_plus4.h
index 3fa37a71bcc..3fa37a71bcc 100644
--- a/src/emu/bus/ql/cst_q_plus4.h
+++ b/src/devices/bus/ql/cst_q_plus4.h
diff --git a/src/emu/bus/ql/cst_qdisc.c b/src/devices/bus/ql/cst_qdisc.c
index f9fdcf26e04..f9fdcf26e04 100644
--- a/src/emu/bus/ql/cst_qdisc.c
+++ b/src/devices/bus/ql/cst_qdisc.c
diff --git a/src/emu/bus/ql/cst_qdisc.h b/src/devices/bus/ql/cst_qdisc.h
index a4f50cb7ccb..a4f50cb7ccb 100644
--- a/src/emu/bus/ql/cst_qdisc.h
+++ b/src/devices/bus/ql/cst_qdisc.h
diff --git a/src/emu/bus/ql/cumana_fdi.c b/src/devices/bus/ql/cumana_fdi.c
index 91259f0db43..91259f0db43 100644
--- a/src/emu/bus/ql/cumana_fdi.c
+++ b/src/devices/bus/ql/cumana_fdi.c
diff --git a/src/emu/bus/ql/cumana_fdi.h b/src/devices/bus/ql/cumana_fdi.h
index b3249e76cdf..b3249e76cdf 100644
--- a/src/emu/bus/ql/cumana_fdi.h
+++ b/src/devices/bus/ql/cumana_fdi.h
diff --git a/src/emu/bus/ql/exp.c b/src/devices/bus/ql/exp.c
index 4276f941811..4276f941811 100644
--- a/src/emu/bus/ql/exp.c
+++ b/src/devices/bus/ql/exp.c
diff --git a/src/emu/bus/ql/exp.h b/src/devices/bus/ql/exp.h
index c9f84c793e9..c9f84c793e9 100644
--- a/src/emu/bus/ql/exp.h
+++ b/src/devices/bus/ql/exp.h
diff --git a/src/emu/bus/ql/kempston_di.c b/src/devices/bus/ql/kempston_di.c
index c69c129e2e9..c69c129e2e9 100644
--- a/src/emu/bus/ql/kempston_di.c
+++ b/src/devices/bus/ql/kempston_di.c
diff --git a/src/emu/bus/ql/kempston_di.h b/src/devices/bus/ql/kempston_di.h
index 0920fe2430d..0920fe2430d 100644
--- a/src/emu/bus/ql/kempston_di.h
+++ b/src/devices/bus/ql/kempston_di.h
diff --git a/src/emu/bus/ql/miracle_gold_card.c b/src/devices/bus/ql/miracle_gold_card.c
index 3e25f43e0a6..3e25f43e0a6 100644
--- a/src/emu/bus/ql/miracle_gold_card.c
+++ b/src/devices/bus/ql/miracle_gold_card.c
diff --git a/src/emu/bus/ql/miracle_gold_card.h b/src/devices/bus/ql/miracle_gold_card.h
index 36c358984a3..36c358984a3 100644
--- a/src/emu/bus/ql/miracle_gold_card.h
+++ b/src/devices/bus/ql/miracle_gold_card.h
diff --git a/src/emu/bus/ql/miracle_hd.c b/src/devices/bus/ql/miracle_hd.c
index b181fc48918..b181fc48918 100644
--- a/src/emu/bus/ql/miracle_hd.c
+++ b/src/devices/bus/ql/miracle_hd.c
diff --git a/src/emu/bus/ql/miracle_hd.h b/src/devices/bus/ql/miracle_hd.h
index 43ef817475a..43ef817475a 100644
--- a/src/emu/bus/ql/miracle_hd.h
+++ b/src/devices/bus/ql/miracle_hd.h
diff --git a/src/emu/bus/ql/mp_fdi.c b/src/devices/bus/ql/mp_fdi.c
index d23542ab8f4..d23542ab8f4 100644
--- a/src/emu/bus/ql/mp_fdi.c
+++ b/src/devices/bus/ql/mp_fdi.c
diff --git a/src/emu/bus/ql/mp_fdi.h b/src/devices/bus/ql/mp_fdi.h
index 5f0d3e9fd0f..5f0d3e9fd0f 100644
--- a/src/emu/bus/ql/mp_fdi.h
+++ b/src/devices/bus/ql/mp_fdi.h
diff --git a/src/emu/bus/ql/opd_basic_master.c b/src/devices/bus/ql/opd_basic_master.c
index fa20bf4f5eb..fa20bf4f5eb 100644
--- a/src/emu/bus/ql/opd_basic_master.c
+++ b/src/devices/bus/ql/opd_basic_master.c
diff --git a/src/emu/bus/ql/opd_basic_master.h b/src/devices/bus/ql/opd_basic_master.h
index 4a9b2b7e043..4a9b2b7e043 100644
--- a/src/emu/bus/ql/opd_basic_master.h
+++ b/src/devices/bus/ql/opd_basic_master.h
diff --git a/src/emu/bus/ql/pcml_qdisk.c b/src/devices/bus/ql/pcml_qdisk.c
index b5d534f68d7..b5d534f68d7 100644
--- a/src/emu/bus/ql/pcml_qdisk.c
+++ b/src/devices/bus/ql/pcml_qdisk.c
diff --git a/src/emu/bus/ql/pcml_qdisk.h b/src/devices/bus/ql/pcml_qdisk.h
index e59d101d9c4..e59d101d9c4 100644
--- a/src/emu/bus/ql/pcml_qdisk.h
+++ b/src/devices/bus/ql/pcml_qdisk.h
diff --git a/src/emu/bus/ql/qubide.c b/src/devices/bus/ql/qubide.c
index 7af6c6d6694..7af6c6d6694 100644
--- a/src/emu/bus/ql/qubide.c
+++ b/src/devices/bus/ql/qubide.c
diff --git a/src/emu/bus/ql/qubide.h b/src/devices/bus/ql/qubide.h
index 8c93c68cae6..8c93c68cae6 100644
--- a/src/emu/bus/ql/qubide.h
+++ b/src/devices/bus/ql/qubide.h
diff --git a/src/emu/bus/ql/rom.c b/src/devices/bus/ql/rom.c
index 13d72619e8b..13d72619e8b 100644
--- a/src/emu/bus/ql/rom.c
+++ b/src/devices/bus/ql/rom.c
diff --git a/src/emu/bus/ql/rom.h b/src/devices/bus/ql/rom.h
index a8b82d0dc57..a8b82d0dc57 100644
--- a/src/emu/bus/ql/rom.h
+++ b/src/devices/bus/ql/rom.h
diff --git a/src/emu/bus/ql/sandy_superdisk.c b/src/devices/bus/ql/sandy_superdisk.c
index cf334d6db67..cf334d6db67 100644
--- a/src/emu/bus/ql/sandy_superdisk.c
+++ b/src/devices/bus/ql/sandy_superdisk.c
diff --git a/src/emu/bus/ql/sandy_superdisk.h b/src/devices/bus/ql/sandy_superdisk.h
index 350ba709c72..350ba709c72 100644
--- a/src/emu/bus/ql/sandy_superdisk.h
+++ b/src/devices/bus/ql/sandy_superdisk.h
diff --git a/src/emu/bus/ql/sandy_superqboard.c b/src/devices/bus/ql/sandy_superqboard.c
index 3e5558302db..3e5558302db 100644
--- a/src/emu/bus/ql/sandy_superqboard.c
+++ b/src/devices/bus/ql/sandy_superqboard.c
diff --git a/src/emu/bus/ql/sandy_superqboard.h b/src/devices/bus/ql/sandy_superqboard.h
index 07bcd60a137..07bcd60a137 100644
--- a/src/emu/bus/ql/sandy_superqboard.h
+++ b/src/devices/bus/ql/sandy_superqboard.h
diff --git a/src/emu/bus/ql/std.c b/src/devices/bus/ql/std.c
index 11132954104..11132954104 100644
--- a/src/emu/bus/ql/std.c
+++ b/src/devices/bus/ql/std.c
diff --git a/src/emu/bus/ql/std.h b/src/devices/bus/ql/std.h
index 70b1328d79c..70b1328d79c 100644
--- a/src/emu/bus/ql/std.h
+++ b/src/devices/bus/ql/std.h
diff --git a/src/emu/bus/ql/trumpcard.c b/src/devices/bus/ql/trumpcard.c
index fa77ed23d53..fa77ed23d53 100644
--- a/src/emu/bus/ql/trumpcard.c
+++ b/src/devices/bus/ql/trumpcard.c
diff --git a/src/emu/bus/ql/trumpcard.h b/src/devices/bus/ql/trumpcard.h
index 4c303aafd3e..4c303aafd3e 100644
--- a/src/emu/bus/ql/trumpcard.h
+++ b/src/devices/bus/ql/trumpcard.h
diff --git a/src/emu/bus/rs232/keyboard.c b/src/devices/bus/rs232/keyboard.c
index f30d8476d56..f30d8476d56 100644
--- a/src/emu/bus/rs232/keyboard.c
+++ b/src/devices/bus/rs232/keyboard.c
diff --git a/src/emu/bus/rs232/keyboard.h b/src/devices/bus/rs232/keyboard.h
index d2f12663d90..d2f12663d90 100644
--- a/src/emu/bus/rs232/keyboard.h
+++ b/src/devices/bus/rs232/keyboard.h
diff --git a/src/emu/bus/rs232/loopback.c b/src/devices/bus/rs232/loopback.c
index 20c75e4099d..20c75e4099d 100644
--- a/src/emu/bus/rs232/loopback.c
+++ b/src/devices/bus/rs232/loopback.c
diff --git a/src/emu/bus/rs232/loopback.h b/src/devices/bus/rs232/loopback.h
index 3027fe167f3..3027fe167f3 100644
--- a/src/emu/bus/rs232/loopback.h
+++ b/src/devices/bus/rs232/loopback.h
diff --git a/src/emu/bus/rs232/null_modem.c b/src/devices/bus/rs232/null_modem.c
index 16fc4215c9a..16fc4215c9a 100644
--- a/src/emu/bus/rs232/null_modem.c
+++ b/src/devices/bus/rs232/null_modem.c
diff --git a/src/emu/bus/rs232/null_modem.h b/src/devices/bus/rs232/null_modem.h
index e985cafdda3..e985cafdda3 100644
--- a/src/emu/bus/rs232/null_modem.h
+++ b/src/devices/bus/rs232/null_modem.h
diff --git a/src/emu/bus/rs232/printer.c b/src/devices/bus/rs232/printer.c
index e8734ad6de6..e8734ad6de6 100644
--- a/src/emu/bus/rs232/printer.c
+++ b/src/devices/bus/rs232/printer.c
diff --git a/src/emu/bus/rs232/printer.h b/src/devices/bus/rs232/printer.h
index ba36eef04eb..ba36eef04eb 100644
--- a/src/emu/bus/rs232/printer.h
+++ b/src/devices/bus/rs232/printer.h
diff --git a/src/devices/bus/rs232/pty.c b/src/devices/bus/rs232/pty.c
new file mode 100644
index 00000000000..bc673318e2a
--- /dev/null
+++ b/src/devices/bus/rs232/pty.c
@@ -0,0 +1,138 @@
+// license:BSD-3-Clause
+// copyright-holders:F. Ulivi
+//
+#include <stdio.h>
+#include "pty.h"
+
+static const int TIMER_POLL = 1;
+
+pseudo_terminal_device::pseudo_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, PSEUDO_TERMINAL, "Pseudo terminal", tag, owner, clock, "pseudo_terminal", __FILE__),
+ device_serial_interface(mconfig, *this),
+ device_rs232_port_interface(mconfig, *this),
+ device_pty_interface(mconfig, *this),
+ m_rs232_txbaud(*this, "RS232_TXBAUD"),
+ m_rs232_rxbaud(*this, "RS232_RXBAUD"),
+ m_rs232_startbits(*this, "RS232_STARTBITS"),
+ m_rs232_databits(*this, "RS232_DATABITS"),
+ m_rs232_parity(*this, "RS232_PARITY"),
+ m_rs232_stopbits(*this, "RS232_STOPBITS"),
+ m_input_count(0),
+ m_input_index(0)
+{
+}
+
+WRITE_LINE_MEMBER(pseudo_terminal_device::update_serial)
+{
+ int startbits = convert_startbits(m_rs232_startbits->read());
+ int databits = convert_databits(m_rs232_databits->read());
+ parity_t parity = convert_parity(m_rs232_parity->read());
+ stop_bits_t stopbits = convert_stopbits(m_rs232_stopbits->read());
+
+ set_data_frame(startbits, databits, parity, stopbits);
+
+ int txbaud = convert_baud(m_rs232_txbaud->read());
+ set_tra_rate(txbaud);
+
+ int rxbaud = convert_baud(m_rs232_rxbaud->read());
+ set_rcv_rate(rxbaud);
+
+ output_rxd(1);
+
+ // TODO: make this configurable
+ output_dcd(0);
+ output_dsr(0);
+ output_cts(0);
+}
+
+static INPUT_PORTS_START(pseudo_terminal)
+ MCFG_RS232_BAUD("RS232_TXBAUD", RS232_BAUD_9600, "TX Baud", pseudo_terminal_device, update_serial)
+ MCFG_RS232_BAUD("RS232_RXBAUD", RS232_BAUD_9600, "RX Baud", pseudo_terminal_device, update_serial)
+ MCFG_RS232_STARTBITS("RS232_STARTBITS", RS232_STARTBITS_1, "Start Bits", pseudo_terminal_device, update_serial)
+ MCFG_RS232_DATABITS("RS232_DATABITS", RS232_DATABITS_8, "Data Bits", pseudo_terminal_device, update_serial)
+ MCFG_RS232_PARITY("RS232_PARITY", RS232_PARITY_NONE, "Parity", pseudo_terminal_device, update_serial)
+ MCFG_RS232_STOPBITS("RS232_STOPBITS", RS232_STOPBITS_1, "Stop Bits", pseudo_terminal_device, update_serial)
+INPUT_PORTS_END
+
+ioport_constructor pseudo_terminal_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME(pseudo_terminal);
+}
+
+void pseudo_terminal_device::device_start()
+{
+ m_timer_poll = timer_alloc(TIMER_POLL);
+
+ open();
+}
+
+void pseudo_terminal_device::device_stop()
+{
+ close();
+}
+
+void pseudo_terminal_device::device_reset()
+{
+ update_serial(0);
+ queue();
+}
+
+void pseudo_terminal_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch (id)
+ {
+ case TIMER_POLL:
+ queue();
+ break;
+
+ default:
+ device_serial_interface::device_timer(timer, id, param, ptr);
+ }
+}
+
+void pseudo_terminal_device::tra_callback()
+{
+ output_rxd(transmit_register_get_data_bit());
+}
+
+void pseudo_terminal_device::tra_complete()
+{
+ queue();
+}
+
+void pseudo_terminal_device::rcv_complete()
+{
+ receive_register_extract();
+ write(get_received_char());
+}
+
+void pseudo_terminal_device::queue(void)
+{
+ if (is_transmit_register_empty())
+ {
+ if (m_input_index == m_input_count)
+ {
+ m_input_index = 0;
+ int tmp = read(m_input_buffer , sizeof(m_input_buffer));
+ if (tmp > 0) {
+ m_input_count = tmp;
+ } else {
+ m_input_count = 0;
+ }
+ }
+
+ if (m_input_count != 0)
+ {
+ transmit_register_setup(m_input_buffer[ m_input_index++ ]);
+
+ m_timer_poll->adjust(attotime::never);
+ }
+ else
+ {
+ int txbaud = convert_baud(m_rs232_txbaud->read());
+ m_timer_poll->adjust(attotime::from_hz(txbaud));
+ }
+ }
+}
+
+const device_type PSEUDO_TERMINAL = &device_creator<pseudo_terminal_device>;
diff --git a/src/devices/bus/rs232/pty.h b/src/devices/bus/rs232/pty.h
new file mode 100644
index 00000000000..1f4ddbce754
--- /dev/null
+++ b/src/devices/bus/rs232/pty.h
@@ -0,0 +1,52 @@
+// license:BSD-3-Clause
+// copyright-holders:F. Ulivi
+//
+#ifndef _RS232_PTY_H_
+#define _RS232_PTY_H_
+
+#include "rs232.h"
+
+class pseudo_terminal_device : public device_t,
+ public device_serial_interface,
+ public device_rs232_port_interface,
+ public device_pty_interface
+{
+public:
+ pseudo_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ virtual DECLARE_WRITE_LINE_MEMBER( input_txd ) {
+ device_serial_interface::rx_w(state);
+ }
+
+ DECLARE_WRITE_LINE_MEMBER(update_serial);
+
+protected:
+ virtual ioport_constructor device_input_ports() const;
+ virtual void device_start();
+ virtual void device_stop();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+ virtual void tra_callback();
+ virtual void tra_complete();
+ virtual void rcv_complete();
+
+private:
+ required_ioport m_rs232_txbaud;
+ required_ioport m_rs232_rxbaud;
+ required_ioport m_rs232_startbits;
+ required_ioport m_rs232_databits;
+ required_ioport m_rs232_parity;
+ required_ioport m_rs232_stopbits;
+
+ UINT8 m_input_buffer[ 1024 ];
+ UINT32 m_input_count;
+ UINT32 m_input_index;
+ emu_timer *m_timer_poll;
+
+ void queue(void);
+};
+
+extern const device_type PSEUDO_TERMINAL;
+
+#endif /* _RS232_PTY_H_ */
diff --git a/src/emu/bus/rs232/rs232.c b/src/devices/bus/rs232/rs232.c
index acc1af5dea3..cb2d1771a6e 100644
--- a/src/emu/bus/rs232/rs232.c
+++ b/src/devices/bus/rs232/rs232.c
@@ -103,6 +103,7 @@ device_rs232_port_interface::~device_rs232_port_interface()
#include "null_modem.h"
#include "printer.h"
#include "terminal.h"
+#include "pty.h"
SLOT_INTERFACE_START( default_rs232_devices )
SLOT_INTERFACE("keyboard", SERIAL_KEYBOARD)
@@ -110,4 +111,5 @@ SLOT_INTERFACE_START( default_rs232_devices )
SLOT_INTERFACE("null_modem", NULL_MODEM)
SLOT_INTERFACE("printer", SERIAL_PRINTER)
SLOT_INTERFACE("terminal", SERIAL_TERMINAL)
+ SLOT_INTERFACE("pty", PSEUDO_TERMINAL)
SLOT_INTERFACE_END
diff --git a/src/emu/bus/rs232/rs232.h b/src/devices/bus/rs232/rs232.h
index 6be21fcb639..6be21fcb639 100644
--- a/src/emu/bus/rs232/rs232.h
+++ b/src/devices/bus/rs232/rs232.h
diff --git a/src/emu/bus/rs232/ser_mouse.c b/src/devices/bus/rs232/ser_mouse.c
index cb2d4d12b50..cb2d4d12b50 100644
--- a/src/emu/bus/rs232/ser_mouse.c
+++ b/src/devices/bus/rs232/ser_mouse.c
diff --git a/src/emu/bus/rs232/ser_mouse.h b/src/devices/bus/rs232/ser_mouse.h
index ccc4cdbbdae..ccc4cdbbdae 100644
--- a/src/emu/bus/rs232/ser_mouse.h
+++ b/src/devices/bus/rs232/ser_mouse.h
diff --git a/src/emu/bus/rs232/terminal.c b/src/devices/bus/rs232/terminal.c
index a8b8db63e36..a8b8db63e36 100644
--- a/src/emu/bus/rs232/terminal.c
+++ b/src/devices/bus/rs232/terminal.c
diff --git a/src/emu/bus/rs232/terminal.h b/src/devices/bus/rs232/terminal.h
index d2c92be9920..d2c92be9920 100644
--- a/src/emu/bus/rs232/terminal.h
+++ b/src/devices/bus/rs232/terminal.h
diff --git a/src/emu/bus/rs232/xvd701.c b/src/devices/bus/rs232/xvd701.c
index 47c960e55af..47c960e55af 100644
--- a/src/emu/bus/rs232/xvd701.c
+++ b/src/devices/bus/rs232/xvd701.c
diff --git a/src/emu/bus/rs232/xvd701.h b/src/devices/bus/rs232/xvd701.h
index e25f91fd662..e25f91fd662 100644
--- a/src/emu/bus/rs232/xvd701.h
+++ b/src/devices/bus/rs232/xvd701.h
diff --git a/src/emu/bus/s100/dj2db.c b/src/devices/bus/s100/dj2db.c
index f32d32e3eb2..f32d32e3eb2 100644
--- a/src/emu/bus/s100/dj2db.c
+++ b/src/devices/bus/s100/dj2db.c
diff --git a/src/emu/bus/s100/dj2db.h b/src/devices/bus/s100/dj2db.h
index 460a45ff3dc..460a45ff3dc 100644
--- a/src/emu/bus/s100/dj2db.h
+++ b/src/devices/bus/s100/dj2db.h
diff --git a/src/emu/bus/s100/djdma.c b/src/devices/bus/s100/djdma.c
index c0d93aed2f5..c0d93aed2f5 100644
--- a/src/emu/bus/s100/djdma.c
+++ b/src/devices/bus/s100/djdma.c
diff --git a/src/emu/bus/s100/djdma.h b/src/devices/bus/s100/djdma.h
index b5b54c972c4..b5b54c972c4 100644
--- a/src/emu/bus/s100/djdma.h
+++ b/src/devices/bus/s100/djdma.h
diff --git a/src/emu/bus/s100/mm65k16s.c b/src/devices/bus/s100/mm65k16s.c
index 22240dd789a..22240dd789a 100644
--- a/src/emu/bus/s100/mm65k16s.c
+++ b/src/devices/bus/s100/mm65k16s.c
diff --git a/src/emu/bus/s100/mm65k16s.h b/src/devices/bus/s100/mm65k16s.h
index 35d9cbc21c5..35d9cbc21c5 100644
--- a/src/emu/bus/s100/mm65k16s.h
+++ b/src/devices/bus/s100/mm65k16s.h
diff --git a/src/emu/bus/s100/nsmdsa.c b/src/devices/bus/s100/nsmdsa.c
index 91fb4f46135..91fb4f46135 100644
--- a/src/emu/bus/s100/nsmdsa.c
+++ b/src/devices/bus/s100/nsmdsa.c
diff --git a/src/emu/bus/s100/nsmdsa.h b/src/devices/bus/s100/nsmdsa.h
index 88a2f330391..88a2f330391 100644
--- a/src/emu/bus/s100/nsmdsa.h
+++ b/src/devices/bus/s100/nsmdsa.h
diff --git a/src/emu/bus/s100/nsmdsad.c b/src/devices/bus/s100/nsmdsad.c
index d1a06407c6d..d1a06407c6d 100644
--- a/src/emu/bus/s100/nsmdsad.c
+++ b/src/devices/bus/s100/nsmdsad.c
diff --git a/src/emu/bus/s100/nsmdsad.h b/src/devices/bus/s100/nsmdsad.h
index 1c156590ba1..1c156590ba1 100644
--- a/src/emu/bus/s100/nsmdsad.h
+++ b/src/devices/bus/s100/nsmdsad.h
diff --git a/src/emu/bus/s100/s100.c b/src/devices/bus/s100/s100.c
index aee9ecbccf6..aee9ecbccf6 100644
--- a/src/emu/bus/s100/s100.c
+++ b/src/devices/bus/s100/s100.c
diff --git a/src/emu/bus/s100/s100.h b/src/devices/bus/s100/s100.h
index 9d622b573b6..9d622b573b6 100644
--- a/src/emu/bus/s100/s100.h
+++ b/src/devices/bus/s100/s100.h
diff --git a/src/emu/bus/s100/wunderbus.c b/src/devices/bus/s100/wunderbus.c
index 4b269a80e93..4b269a80e93 100644
--- a/src/emu/bus/s100/wunderbus.c
+++ b/src/devices/bus/s100/wunderbus.c
diff --git a/src/emu/bus/s100/wunderbus.h b/src/devices/bus/s100/wunderbus.h
index 9b51f9afaee..9b51f9afaee 100644
--- a/src/emu/bus/s100/wunderbus.h
+++ b/src/devices/bus/s100/wunderbus.h
diff --git a/src/emu/bus/saturn/bram.c b/src/devices/bus/saturn/bram.c
index 28d0aba2945..28d0aba2945 100644
--- a/src/emu/bus/saturn/bram.c
+++ b/src/devices/bus/saturn/bram.c
diff --git a/src/emu/bus/saturn/bram.h b/src/devices/bus/saturn/bram.h
index c4402431caf..c4402431caf 100644
--- a/src/emu/bus/saturn/bram.h
+++ b/src/devices/bus/saturn/bram.h
diff --git a/src/emu/bus/saturn/dram.c b/src/devices/bus/saturn/dram.c
index d1078fcc722..d1078fcc722 100644
--- a/src/emu/bus/saturn/dram.c
+++ b/src/devices/bus/saturn/dram.c
diff --git a/src/emu/bus/saturn/dram.h b/src/devices/bus/saturn/dram.h
index 53bf97d8468..53bf97d8468 100644
--- a/src/emu/bus/saturn/dram.h
+++ b/src/devices/bus/saturn/dram.h
diff --git a/src/emu/bus/saturn/rom.c b/src/devices/bus/saturn/rom.c
index 7b8068735a1..7b8068735a1 100644
--- a/src/emu/bus/saturn/rom.c
+++ b/src/devices/bus/saturn/rom.c
diff --git a/src/emu/bus/saturn/rom.h b/src/devices/bus/saturn/rom.h
index 021526bcce4..021526bcce4 100644
--- a/src/emu/bus/saturn/rom.h
+++ b/src/devices/bus/saturn/rom.h
diff --git a/src/emu/bus/saturn/sat_slot.c b/src/devices/bus/saturn/sat_slot.c
index aa3a563f68d..aa3a563f68d 100644
--- a/src/emu/bus/saturn/sat_slot.c
+++ b/src/devices/bus/saturn/sat_slot.c
diff --git a/src/emu/bus/saturn/sat_slot.h b/src/devices/bus/saturn/sat_slot.h
index 13b46c23374..13b46c23374 100644
--- a/src/emu/bus/saturn/sat_slot.h
+++ b/src/devices/bus/saturn/sat_slot.h
diff --git a/src/emu/bus/scsi/acb4070.c b/src/devices/bus/scsi/acb4070.c
index 1503272b55c..1503272b55c 100644
--- a/src/emu/bus/scsi/acb4070.c
+++ b/src/devices/bus/scsi/acb4070.c
diff --git a/src/emu/bus/scsi/acb4070.h b/src/devices/bus/scsi/acb4070.h
index e396c6eb58f..e396c6eb58f 100644
--- a/src/emu/bus/scsi/acb4070.h
+++ b/src/devices/bus/scsi/acb4070.h
diff --git a/src/emu/bus/scsi/cdu76s.c b/src/devices/bus/scsi/cdu76s.c
index bb6a70390ed..bb6a70390ed 100644
--- a/src/emu/bus/scsi/cdu76s.c
+++ b/src/devices/bus/scsi/cdu76s.c
diff --git a/src/emu/bus/scsi/cdu76s.h b/src/devices/bus/scsi/cdu76s.h
index a0997ea6c05..a0997ea6c05 100644
--- a/src/emu/bus/scsi/cdu76s.h
+++ b/src/devices/bus/scsi/cdu76s.h
diff --git a/src/emu/bus/scsi/d9060hd.c b/src/devices/bus/scsi/d9060hd.c
index 3d212582a39..3d212582a39 100644
--- a/src/emu/bus/scsi/d9060hd.c
+++ b/src/devices/bus/scsi/d9060hd.c
diff --git a/src/emu/bus/scsi/d9060hd.h b/src/devices/bus/scsi/d9060hd.h
index f3fa504cf81..f3fa504cf81 100644
--- a/src/emu/bus/scsi/d9060hd.h
+++ b/src/devices/bus/scsi/d9060hd.h
diff --git a/src/devices/bus/scsi/omti5100.c b/src/devices/bus/scsi/omti5100.c
new file mode 100644
index 00000000000..9dd436f4acb
--- /dev/null
+++ b/src/devices/bus/scsi/omti5100.c
@@ -0,0 +1,187 @@
+// license:BSD-3-Clause
+// copyright-holders:smf
+#include "omti5100.h"
+
+#define OMTI_STATUS_SEEK_FAIL 0x02
+#define OMTI_STATUS_NOT_READY 0x04
+#define OMTI_CHECK_TRACK_FORMAT 0x05
+#define OMTI_FORMAT_TRACK 0x06
+#define OMTI_READ_DATA_BUFFER 0xec
+#define OMTI_ASSIGN_DISK_PARAM 0xc2
+
+const device_type OMTI5100 = &device_creator<omti5100_device>;
+
+#if 0
+ROM_START( omti5100 )
+ ROM_REGION(0x1000, "mcu", 0) // Hitachi Z8
+ ROM_LOAD("100240-N.7a", 0x0000, 0x1000, CRC(d227d6cb) SHA1(3d6140764d3d043428c941826370ebf1597c63bd))
+ROM_END
+
+const rom_entry *omti5100_device::device_rom_region() const
+{
+ return ROM_NAME( omti5100 );
+}
+#endif
+
+omti5100_device::omti5100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : scsihd_device(mconfig, OMTI5100, "OMTI 5100", tag, owner, clock, "omti5100", __FILE__),
+ m_image0(*this, "image0"),
+ m_image1(*this, "image1")
+{
+}
+
+void omti5100_device::device_start()
+{
+ if(!m_image0->get_hard_disk_file())
+ m_image = m_image1;
+ m_image = m_image0;
+ scsihle_device::device_start();
+}
+
+void omti5100_device::ExecCommand()
+{
+ int drive = (command[1] >> 5) & 1;
+ hard_disk_file *image = (drive ? m_image1 : m_image0)->get_hard_disk_file();
+ if(!image)
+ {
+ if(command[0] == T10SPC_CMD_REQUEST_SENSE)
+ return scsihd_device::ExecCommand();
+
+ m_phase = SCSI_PHASE_STATUS;
+ m_status_code = SCSI_STATUS_CODE_CHECK_CONDITION;
+ m_sense_asc = OMTI_STATUS_NOT_READY;
+ m_transfer_length = 0;
+ return;
+ }
+ hard_disk_info *info = hard_disk_get_info(image);
+ switch(command[0])
+ {
+ case OMTI_READ_DATA_BUFFER:
+ m_phase = SCSI_PHASE_DATAIN;
+ m_status_code = SCSI_STATUS_CODE_GOOD;
+ m_transfer_length = 512;
+ break;
+ case OMTI_ASSIGN_DISK_PARAM:
+ m_phase = SCSI_PHASE_DATAOUT;
+ m_status_code = SCSI_STATUS_CODE_GOOD;
+ m_transfer_length = 10;
+ break;
+ case OMTI_CHECK_TRACK_FORMAT:
+ m_phase = SCSI_PHASE_STATUS;
+ m_status_code = SCSI_STATUS_CODE_GOOD;
+ m_transfer_length = 0;
+ break;
+
+ case T10SBC_CMD_READ_6:
+ {
+ int track = ((command[1]&0x1f)<<16 | command[2]<<8 | command[3]) / (m_param[drive].sectors ? m_param[drive].sectors : 1);
+ int heads = m_param[drive].heads ? m_param[drive].heads : 1;
+ if(((track % heads) > info->heads) || (track >= (info->cylinders * heads)))
+ {
+ m_phase = SCSI_PHASE_STATUS;
+ m_status_code = SCSI_STATUS_CODE_CHECK_CONDITION;
+ m_sense_asc = OMTI_STATUS_SEEK_FAIL;
+ m_transfer_length = 0;
+ }
+ else
+ {
+ SetDevice(image);
+ scsihd_device::ExecCommand();
+ }
+ break;
+ }
+ case OMTI_FORMAT_TRACK:
+ {
+ int track = ((command[1]&0x1f)<<16 | command[2]<<8 | command[3]) / m_param[drive].sectors;
+ if(((track % m_param[drive].heads) <= info->heads) && (track < (info->cylinders * m_param[drive].heads)))
+ {
+ dynamic_buffer sector(info->sectorbytes);
+ memset(&sector[0], 0xe5, info->sectorbytes);
+ m_phase = SCSI_PHASE_STATUS;
+ m_status_code = SCSI_STATUS_CODE_GOOD;
+ m_transfer_length = 0;
+ for(int i = 0; i < info->sectors; i++)
+ hard_disk_write(image, track * info->sectors + i, &sector[0]);
+ }
+ else
+ {
+ m_phase = SCSI_PHASE_STATUS;
+ m_status_code = SCSI_STATUS_CODE_CHECK_CONDITION;
+ m_sense_asc = OMTI_STATUS_SEEK_FAIL;
+ m_transfer_length = 0;
+ }
+ break;
+ }
+ default:
+ SetDevice(image);
+ scsihd_device::ExecCommand();
+ break;
+ }
+}
+
+void omti5100_device::ReadData( UINT8 *data, int dataLength )
+{
+ switch( command[ 0 ] )
+ {
+ case OMTI_READ_DATA_BUFFER:
+ data[0] = '5';
+ data[1] = '1';
+ data[2] = '0';
+ data[3] = '0';
+ break;
+
+ default:
+ scsihd_device::ReadData( data, dataLength );
+ break;
+ }
+}
+
+void omti5100_device::WriteData( UINT8 *data, int dataLength )
+{
+ switch( command[ 0 ] )
+ {
+ case OMTI_ASSIGN_DISK_PARAM:
+ {
+ int drive = ((command[1] >> 5) & 1);
+ hard_disk_file *image = (drive ? m_image1 : m_image0)->get_hard_disk_file();
+ m_param[drive].heads = data[3] + 1;
+ m_param[drive].cylinders = ((data[4] << 8) | data[5]) + 1;
+ if(!data[8] && image)
+ {
+ switch(hard_disk_get_info(image)->sectorbytes)
+ {
+ case 128:
+ m_param[drive].sectors = 53;
+ break;
+ case 256:
+ m_param[drive].sectors = 32;
+ break;
+ case 512:
+ m_param[drive].sectors = 18; // XXX: check this!
+ break;
+ case 1024:
+ m_param[drive].sectors = 9;
+ break;
+ }
+ }
+ else
+ m_param[drive].sectors = data[8] + 1;
+ break;
+ }
+
+ default:
+ scsihd_device::WriteData( data, dataLength );
+ break;
+ }
+}
+
+static MACHINE_CONFIG_FRAGMENT( omti5100 )
+ MCFG_HARDDISK_ADD("image0")
+ MCFG_HARDDISK_ADD("image1")
+MACHINE_CONFIG_END
+
+
+machine_config_constructor omti5100_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( omti5100 );
+}
diff --git a/src/emu/bus/scsi/omti5100.h b/src/devices/bus/scsi/omti5100.h
index 9c9e1e5444c..f07be338226 100644
--- a/src/emu/bus/scsi/omti5100.h
+++ b/src/devices/bus/scsi/omti5100.h
@@ -18,11 +18,13 @@ public:
virtual void ExecCommand();
virtual void ReadData( UINT8 *data, int dataLength );
+ virtual void WriteData( UINT8 *data, int dataLength );
void device_start();
private:
required_device<harddisk_image_device> m_image0;
required_device<harddisk_image_device> m_image1;
+ hard_disk_info m_param[2];
};
extern const device_type OMTI5100;
diff --git a/src/emu/bus/scsi/pc9801_sasi.c b/src/devices/bus/scsi/pc9801_sasi.c
index 619f9f074da..619f9f074da 100644
--- a/src/emu/bus/scsi/pc9801_sasi.c
+++ b/src/devices/bus/scsi/pc9801_sasi.c
diff --git a/src/emu/bus/scsi/pc9801_sasi.h b/src/devices/bus/scsi/pc9801_sasi.h
index 44ef5f5e0cc..44ef5f5e0cc 100644
--- a/src/emu/bus/scsi/pc9801_sasi.h
+++ b/src/devices/bus/scsi/pc9801_sasi.h
diff --git a/src/emu/bus/scsi/s1410.c b/src/devices/bus/scsi/s1410.c
index 59b964ce4f2..59b964ce4f2 100644
--- a/src/emu/bus/scsi/s1410.c
+++ b/src/devices/bus/scsi/s1410.c
diff --git a/src/emu/bus/scsi/s1410.h b/src/devices/bus/scsi/s1410.h
index b7834f56c88..b7834f56c88 100644
--- a/src/emu/bus/scsi/s1410.h
+++ b/src/devices/bus/scsi/s1410.h
diff --git a/src/emu/bus/scsi/sa1403d.c b/src/devices/bus/scsi/sa1403d.c
index 1abe47e0805..1abe47e0805 100644
--- a/src/emu/bus/scsi/sa1403d.c
+++ b/src/devices/bus/scsi/sa1403d.c
diff --git a/src/emu/bus/scsi/sa1403d.h b/src/devices/bus/scsi/sa1403d.h
index 5f92ff11240..5f92ff11240 100644
--- a/src/emu/bus/scsi/sa1403d.h
+++ b/src/devices/bus/scsi/sa1403d.h
diff --git a/src/emu/bus/scsi/scsi.c b/src/devices/bus/scsi/scsi.c
index 7eac8fc7631..7eac8fc7631 100644
--- a/src/emu/bus/scsi/scsi.c
+++ b/src/devices/bus/scsi/scsi.c
diff --git a/src/emu/bus/scsi/scsi.h b/src/devices/bus/scsi/scsi.h
index dd8c88635ed..dd8c88635ed 100644
--- a/src/emu/bus/scsi/scsi.h
+++ b/src/devices/bus/scsi/scsi.h
diff --git a/src/emu/bus/scsi/scsicd.c b/src/devices/bus/scsi/scsicd.c
index 9ee7d92668f..9ee7d92668f 100644
--- a/src/emu/bus/scsi/scsicd.c
+++ b/src/devices/bus/scsi/scsicd.c
diff --git a/src/emu/bus/scsi/scsicd.h b/src/devices/bus/scsi/scsicd.h
index c7667ee3321..c7667ee3321 100644
--- a/src/emu/bus/scsi/scsicd.h
+++ b/src/devices/bus/scsi/scsicd.h
diff --git a/src/emu/bus/scsi/scsihd.c b/src/devices/bus/scsi/scsihd.c
index 8774310d0b3..8774310d0b3 100644
--- a/src/emu/bus/scsi/scsihd.c
+++ b/src/devices/bus/scsi/scsihd.c
diff --git a/src/emu/bus/scsi/scsihd.h b/src/devices/bus/scsi/scsihd.h
index db151095847..db151095847 100644
--- a/src/emu/bus/scsi/scsihd.h
+++ b/src/devices/bus/scsi/scsihd.h
diff --git a/src/emu/bus/scsi/scsihle.c b/src/devices/bus/scsi/scsihle.c
index 033e1f66bae..57a1759db07 100644
--- a/src/emu/bus/scsi/scsihle.c
+++ b/src/devices/bus/scsi/scsihle.c
@@ -183,6 +183,10 @@ void scsihle_device::scsibus_read_data()
void scsihle_device::scsibus_write_data()
{
+ data_last = (bytes_left >= m_sector_bytes) ? m_sector_bytes : bytes_left;
+
+ LOG(2,"SCSIBUS:scsibus_write_data bytes_left=%04X, data_last=%04X\n",bytes_left,data_last);
+
if (data_last > 0)
{
WriteData(buffer, data_last);
diff --git a/src/emu/bus/scsi/scsihle.h b/src/devices/bus/scsi/scsihle.h
index 5f638149ffd..5f638149ffd 100644
--- a/src/emu/bus/scsi/scsihle.h
+++ b/src/devices/bus/scsi/scsihle.h
diff --git a/src/emu/bus/scv/rom.c b/src/devices/bus/scv/rom.c
index ce71249d453..ce71249d453 100644
--- a/src/emu/bus/scv/rom.c
+++ b/src/devices/bus/scv/rom.c
diff --git a/src/emu/bus/scv/rom.h b/src/devices/bus/scv/rom.h
index 412f72acfef..412f72acfef 100644
--- a/src/emu/bus/scv/rom.h
+++ b/src/devices/bus/scv/rom.h
diff --git a/src/emu/bus/scv/slot.c b/src/devices/bus/scv/slot.c
index 12ecf7c4db9..12ecf7c4db9 100644
--- a/src/emu/bus/scv/slot.c
+++ b/src/devices/bus/scv/slot.c
diff --git a/src/emu/bus/scv/slot.h b/src/devices/bus/scv/slot.h
index dea4af488fb..dea4af488fb 100644
--- a/src/emu/bus/scv/slot.h
+++ b/src/devices/bus/scv/slot.h
diff --git a/src/emu/bus/sega8/ccatch.c b/src/devices/bus/sega8/ccatch.c
index ec42d1304b4..ec42d1304b4 100644
--- a/src/emu/bus/sega8/ccatch.c
+++ b/src/devices/bus/sega8/ccatch.c
diff --git a/src/emu/bus/sega8/ccatch.h b/src/devices/bus/sega8/ccatch.h
index ece120c0a57..ece120c0a57 100644
--- a/src/emu/bus/sega8/ccatch.h
+++ b/src/devices/bus/sega8/ccatch.h
diff --git a/src/emu/bus/sega8/mgear.c b/src/devices/bus/sega8/mgear.c
index 250eb58e13a..250eb58e13a 100644
--- a/src/emu/bus/sega8/mgear.c
+++ b/src/devices/bus/sega8/mgear.c
diff --git a/src/emu/bus/sega8/mgear.h b/src/devices/bus/sega8/mgear.h
index 2e4afa40466..2e4afa40466 100644
--- a/src/emu/bus/sega8/mgear.h
+++ b/src/devices/bus/sega8/mgear.h
diff --git a/src/emu/bus/sega8/rom.c b/src/devices/bus/sega8/rom.c
index 3770560806d..3770560806d 100644
--- a/src/emu/bus/sega8/rom.c
+++ b/src/devices/bus/sega8/rom.c
diff --git a/src/emu/bus/sega8/rom.h b/src/devices/bus/sega8/rom.h
index c04a149fdc9..c04a149fdc9 100644
--- a/src/emu/bus/sega8/rom.h
+++ b/src/devices/bus/sega8/rom.h
diff --git a/src/emu/bus/sega8/sega8_slot.c b/src/devices/bus/sega8/sega8_slot.c
index ac696a0ac95..ac696a0ac95 100644
--- a/src/emu/bus/sega8/sega8_slot.c
+++ b/src/devices/bus/sega8/sega8_slot.c
diff --git a/src/emu/bus/sega8/sega8_slot.h b/src/devices/bus/sega8/sega8_slot.h
index ac0fdd406cd..ac0fdd406cd 100644
--- a/src/emu/bus/sega8/sega8_slot.h
+++ b/src/devices/bus/sega8/sega8_slot.h
diff --git a/src/emu/bus/sms_ctrl/graphic.c b/src/devices/bus/sms_ctrl/graphic.c
index 31d211e30a8..31d211e30a8 100644
--- a/src/emu/bus/sms_ctrl/graphic.c
+++ b/src/devices/bus/sms_ctrl/graphic.c
diff --git a/src/emu/bus/sms_ctrl/graphic.h b/src/devices/bus/sms_ctrl/graphic.h
index 852a6f7a71b..852a6f7a71b 100644
--- a/src/emu/bus/sms_ctrl/graphic.h
+++ b/src/devices/bus/sms_ctrl/graphic.h
diff --git a/src/emu/bus/sms_ctrl/joypad.c b/src/devices/bus/sms_ctrl/joypad.c
index b2537453c6a..b2537453c6a 100644
--- a/src/emu/bus/sms_ctrl/joypad.c
+++ b/src/devices/bus/sms_ctrl/joypad.c
diff --git a/src/emu/bus/sms_ctrl/joypad.h b/src/devices/bus/sms_ctrl/joypad.h
index ed7b1141b03..ed7b1141b03 100644
--- a/src/emu/bus/sms_ctrl/joypad.h
+++ b/src/devices/bus/sms_ctrl/joypad.h
diff --git a/src/emu/bus/sms_ctrl/lphaser.c b/src/devices/bus/sms_ctrl/lphaser.c
index 32998115887..32998115887 100644
--- a/src/emu/bus/sms_ctrl/lphaser.c
+++ b/src/devices/bus/sms_ctrl/lphaser.c
diff --git a/src/emu/bus/sms_ctrl/lphaser.h b/src/devices/bus/sms_ctrl/lphaser.h
index ed0687a9f6e..ed0687a9f6e 100644
--- a/src/emu/bus/sms_ctrl/lphaser.h
+++ b/src/devices/bus/sms_ctrl/lphaser.h
diff --git a/src/emu/bus/sms_ctrl/multitap.c b/src/devices/bus/sms_ctrl/multitap.c
index fd098b82c18..fd098b82c18 100644
--- a/src/emu/bus/sms_ctrl/multitap.c
+++ b/src/devices/bus/sms_ctrl/multitap.c
diff --git a/src/emu/bus/sms_ctrl/multitap.h b/src/devices/bus/sms_ctrl/multitap.h
index 9fc8de8b745..9fc8de8b745 100644
--- a/src/emu/bus/sms_ctrl/multitap.h
+++ b/src/devices/bus/sms_ctrl/multitap.h
diff --git a/src/emu/bus/sms_ctrl/paddle.c b/src/devices/bus/sms_ctrl/paddle.c
index e2418f38345..e2418f38345 100644
--- a/src/emu/bus/sms_ctrl/paddle.c
+++ b/src/devices/bus/sms_ctrl/paddle.c
diff --git a/src/emu/bus/sms_ctrl/paddle.h b/src/devices/bus/sms_ctrl/paddle.h
index 984b5a87082..984b5a87082 100644
--- a/src/emu/bus/sms_ctrl/paddle.h
+++ b/src/devices/bus/sms_ctrl/paddle.h
diff --git a/src/emu/bus/sms_ctrl/rfu.c b/src/devices/bus/sms_ctrl/rfu.c
index 3da326aa378..3da326aa378 100644
--- a/src/emu/bus/sms_ctrl/rfu.c
+++ b/src/devices/bus/sms_ctrl/rfu.c
diff --git a/src/emu/bus/sms_ctrl/rfu.h b/src/devices/bus/sms_ctrl/rfu.h
index a27ef0aca02..a27ef0aca02 100644
--- a/src/emu/bus/sms_ctrl/rfu.h
+++ b/src/devices/bus/sms_ctrl/rfu.h
diff --git a/src/emu/bus/sms_ctrl/smsctrl.c b/src/devices/bus/sms_ctrl/smsctrl.c
index 59536ef0f38..59536ef0f38 100644
--- a/src/emu/bus/sms_ctrl/smsctrl.c
+++ b/src/devices/bus/sms_ctrl/smsctrl.c
diff --git a/src/emu/bus/sms_ctrl/smsctrl.h b/src/devices/bus/sms_ctrl/smsctrl.h
index 950e620c99b..950e620c99b 100644
--- a/src/emu/bus/sms_ctrl/smsctrl.h
+++ b/src/devices/bus/sms_ctrl/smsctrl.h
diff --git a/src/emu/bus/sms_ctrl/sports.c b/src/devices/bus/sms_ctrl/sports.c
index f5bc15e170b..4050159beb1 100644
--- a/src/emu/bus/sms_ctrl/sports.c
+++ b/src/devices/bus/sms_ctrl/sports.c
@@ -6,6 +6,22 @@
**********************************************************************/
+// The games designed for the US model of the Sports Pad controller use the
+// TH line of the controller port as output, to select which nibble, of the
+// two axis bytes, will be read at a time. The Japanese cartridge Sports Pad
+// Soccer uses a different mode, because the Sega Mark III lacks TH output, so
+// there is a different Sports Pad model released in Japan (see sportsjp.c).
+
+// It was discovered that games designed for the Paddle Controller, released
+// in Japan, switch to a mode incompatible with the original Paddle when
+// detect the system region as Export. Similar to how the US model of the
+// Sports Pad works, that mode uses the TH line as output to select which
+// nibble of the X axis will be read. So, on an Export console version, paddle
+// games are somewhat playable with the US Sport Pad model, though it needs to
+// be used inverted and the trackball needs to be moved slowly, else the
+// software for the paddle think it's moving backward.
+// See http://mametesters.org/view.php?id=5872 for discussion.
+
#include "sports.h"
@@ -16,32 +32,33 @@
const device_type SMS_SPORTS_PAD = &device_creator<sms_sports_pad_device>;
-
+// time interval not verified
#define SPORTS_PAD_INTERVAL attotime::from_hz(XTAL_53_693175MHz/15/512)
-CUSTOM_INPUT_MEMBER( sms_sports_pad_device::dir_pins_r )
+void sms_sports_pad_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- UINT8 data = 0;
-
- switch (m_read_state)
+ switch (id)
{
- case 0:
- data = m_sports_x->read() >> 4;
- break;
- case 1:
- data = m_sports_x->read();
- break;
- case 2:
- data = m_sports_y->read() >> 4;
- break;
- case 3:
- data = m_sports_y->read();
+ case TIMER_SPORTSPAD:
+ // values for x and y axis need to be resetted for Sports Pad games, but
+ // are not resetted for paddle games, so it was assumed the reset occurs
+ // only when this timer fires after the read state reached maximum value.
+ if (m_read_state == 3)
+ {
+ m_x_axis_reset_value = m_sports_x->read();
+ m_y_axis_reset_value = m_sports_y->read();
+ }
+ else
+ {
+ // set to maximum value, so it wraps to 0 at next increment
+ m_read_state = 3;
+ }
+
break;
+ default:
+ assert_always(FALSE, "Unknown id in sms_sports_pad_device::device_timer");
}
-
- // The returned value is inverted due to IP_ACTIVE_LOW mapping.
- return ~(data & 0x0f);
}
@@ -53,18 +70,34 @@ CUSTOM_INPUT_MEMBER( sms_sports_pad_device::th_pin_r )
INPUT_CHANGED_MEMBER( sms_sports_pad_device::th_pin_w )
{
- attotime cur_time = machine().time();
+ m_read_state = (m_read_state + 1) & 3;
+ m_sportspad_timer->adjust(m_interval);
+ m_last_data = newval;
+}
- if (cur_time - m_last_time > m_interval)
- {
- m_read_state = 0;
- }
- else
+
+CUSTOM_INPUT_MEMBER( sms_sports_pad_device::dir_pins_r )
+{
+ UINT8 data = 0;
+
+ switch (m_read_state)
{
- m_read_state = (m_read_state + 1) & 3;
+ case 0:
+ data = (m_sports_x->read() - m_x_axis_reset_value) >> 4;
+ break;
+ case 1:
+ data = (m_sports_x->read() - m_x_axis_reset_value);
+ break;
+ case 2:
+ data = (m_sports_y->read() - m_y_axis_reset_value) >> 4;
+ break;
+ case 3:
+ data = (m_sports_y->read() - m_y_axis_reset_value);
+ break;
}
- m_last_time = cur_time;
- m_last_data = newval;
+
+ // The returned value is inverted due to IP_ACTIVE_LOW mapping.
+ return ~(data & 0x0f);
}
@@ -84,10 +117,10 @@ static INPUT_PORTS_START( sms_sports_pad )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) // TR (Button 2)
PORT_START("SPORTS_X") /* Sports Pad X axis */
- PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(40) PORT_RESET PORT_REVERSE
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(50) PORT_KEYDELTA(40) PORT_REVERSE
PORT_START("SPORTS_Y") /* Sports Pad Y axis */
- PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(40) PORT_RESET PORT_REVERSE
+ PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(50) PORT_KEYDELTA(40) PORT_REVERSE
INPUT_PORTS_END
@@ -119,6 +152,8 @@ sms_sports_pad_device::sms_sports_pad_device(const machine_config &mconfig, cons
m_sports_y(*this, "SPORTS_Y"),
m_read_state(0),
m_last_data(0),
+ m_x_axis_reset_value(0x80), // value 0x80 helps when start playing paddle games.
+ m_y_axis_reset_value(0x80),
m_interval(SPORTS_PAD_INTERVAL)
{
}
@@ -130,11 +165,12 @@ sms_sports_pad_device::sms_sports_pad_device(const machine_config &mconfig, cons
void sms_sports_pad_device::device_start()
{
- m_last_time = machine().time();
+ m_sportspad_timer = timer_alloc(TIMER_SPORTSPAD);
save_item(NAME(m_read_state));
save_item(NAME(m_last_data));
- save_item(NAME(m_last_time));
+ save_item(NAME(m_x_axis_reset_value));
+ save_item(NAME(m_y_axis_reset_value));
}
diff --git a/src/emu/bus/sms_ctrl/sports.h b/src/devices/bus/sms_ctrl/sports.h
index b0efde2abe8..f303b140a5b 100644
--- a/src/emu/bus/sms_ctrl/sports.h
+++ b/src/devices/bus/sms_ctrl/sports.h
@@ -53,8 +53,13 @@ private:
UINT8 m_read_state;
UINT8 m_last_data;
+ UINT8 m_x_axis_reset_value;
+ UINT8 m_y_axis_reset_value;
const attotime m_interval;
- attotime m_last_time;
+ emu_timer *m_sportspad_timer;
+ static const device_timer_id TIMER_SPORTSPAD = 0;
+
+ void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
};
diff --git a/src/emu/bus/sms_ctrl/sportsjp.c b/src/devices/bus/sms_ctrl/sportsjp.c
index d431f0a6816..d431f0a6816 100644
--- a/src/emu/bus/sms_ctrl/sportsjp.c
+++ b/src/devices/bus/sms_ctrl/sportsjp.c
diff --git a/src/emu/bus/sms_ctrl/sportsjp.h b/src/devices/bus/sms_ctrl/sportsjp.h
index 082546221e6..082546221e6 100644
--- a/src/emu/bus/sms_ctrl/sportsjp.h
+++ b/src/devices/bus/sms_ctrl/sportsjp.h
diff --git a/src/emu/bus/sms_exp/gender.c b/src/devices/bus/sms_exp/gender.c
index 4ef55b1ffe5..4ef55b1ffe5 100644
--- a/src/emu/bus/sms_exp/gender.c
+++ b/src/devices/bus/sms_exp/gender.c
diff --git a/src/emu/bus/sms_exp/gender.h b/src/devices/bus/sms_exp/gender.h
index 2b8503da968..2b8503da968 100644
--- a/src/emu/bus/sms_exp/gender.h
+++ b/src/devices/bus/sms_exp/gender.h
diff --git a/src/emu/bus/sms_exp/smsexp.c b/src/devices/bus/sms_exp/smsexp.c
index 9b26999a94b..9b26999a94b 100644
--- a/src/emu/bus/sms_exp/smsexp.c
+++ b/src/devices/bus/sms_exp/smsexp.c
diff --git a/src/emu/bus/sms_exp/smsexp.h b/src/devices/bus/sms_exp/smsexp.h
index 58d1a33228d..58d1a33228d 100644
--- a/src/emu/bus/sms_exp/smsexp.h
+++ b/src/devices/bus/sms_exp/smsexp.h
diff --git a/src/emu/bus/snes/bsx.c b/src/devices/bus/snes/bsx.c
index 08fa68dc082..08fa68dc082 100644
--- a/src/emu/bus/snes/bsx.c
+++ b/src/devices/bus/snes/bsx.c
diff --git a/src/emu/bus/snes/bsx.h b/src/devices/bus/snes/bsx.h
index a91e713560d..a91e713560d 100644
--- a/src/emu/bus/snes/bsx.h
+++ b/src/devices/bus/snes/bsx.h
diff --git a/src/emu/bus/snes/event.c b/src/devices/bus/snes/event.c
index ebd203adaad..ebd203adaad 100644
--- a/src/emu/bus/snes/event.c
+++ b/src/devices/bus/snes/event.c
diff --git a/src/emu/bus/snes/event.h b/src/devices/bus/snes/event.h
index 1bd3e0c97e0..1bd3e0c97e0 100644
--- a/src/emu/bus/snes/event.h
+++ b/src/devices/bus/snes/event.h
diff --git a/src/emu/bus/snes/rom.c b/src/devices/bus/snes/rom.c
index 9e77da8dda5..9e77da8dda5 100644
--- a/src/emu/bus/snes/rom.c
+++ b/src/devices/bus/snes/rom.c
diff --git a/src/emu/bus/snes/rom.h b/src/devices/bus/snes/rom.h
index bdcbd8ed92c..bdcbd8ed92c 100644
--- a/src/emu/bus/snes/rom.h
+++ b/src/devices/bus/snes/rom.h
diff --git a/src/emu/bus/snes/rom21.c b/src/devices/bus/snes/rom21.c
index 09630b7e393..09630b7e393 100644
--- a/src/emu/bus/snes/rom21.c
+++ b/src/devices/bus/snes/rom21.c
diff --git a/src/emu/bus/snes/rom21.h b/src/devices/bus/snes/rom21.h
index a70d9fdc6c8..a70d9fdc6c8 100644
--- a/src/emu/bus/snes/rom21.h
+++ b/src/devices/bus/snes/rom21.h
diff --git a/src/emu/bus/snes/sa1.c b/src/devices/bus/snes/sa1.c
index 6da031f21b2..6da031f21b2 100644
--- a/src/emu/bus/snes/sa1.c
+++ b/src/devices/bus/snes/sa1.c
diff --git a/src/emu/bus/snes/sa1.h b/src/devices/bus/snes/sa1.h
index d388303f9f9..d388303f9f9 100644
--- a/src/emu/bus/snes/sa1.h
+++ b/src/devices/bus/snes/sa1.h
diff --git a/src/emu/bus/snes/sdd1.c b/src/devices/bus/snes/sdd1.c
index fe7b2c762ec..0b47d84f3c0 100644
--- a/src/emu/bus/snes/sdd1.c
+++ b/src/devices/bus/snes/sdd1.c
@@ -5,7 +5,7 @@
S-DD1 add-on chip emulation (for SNES/SFC)
Based on Andreas Naive Public Domain code.
- Code ported by MooglyGuy and updated to slots by Fabio Priuli.
+ Code ported by Ryan Holtz and updated to slots by Fabio Priuli.
***********************************************************************************************************/
diff --git a/src/emu/bus/snes/sdd1.h b/src/devices/bus/snes/sdd1.h
index cef80512694..cef80512694 100644
--- a/src/emu/bus/snes/sdd1.h
+++ b/src/devices/bus/snes/sdd1.h
diff --git a/src/emu/bus/snes/sfx.c b/src/devices/bus/snes/sfx.c
index 9fce31d00db..9fce31d00db 100644
--- a/src/emu/bus/snes/sfx.c
+++ b/src/devices/bus/snes/sfx.c
diff --git a/src/emu/bus/snes/sfx.h b/src/devices/bus/snes/sfx.h
index 04a2313fd92..04a2313fd92 100644
--- a/src/emu/bus/snes/sfx.h
+++ b/src/devices/bus/snes/sfx.h
diff --git a/src/emu/bus/snes/sgb.c b/src/devices/bus/snes/sgb.c
index 93edb4aeb50..93edb4aeb50 100644
--- a/src/emu/bus/snes/sgb.c
+++ b/src/devices/bus/snes/sgb.c
diff --git a/src/emu/bus/snes/sgb.h b/src/devices/bus/snes/sgb.h
index 01bfd6ea887..01bfd6ea887 100644
--- a/src/emu/bus/snes/sgb.h
+++ b/src/devices/bus/snes/sgb.h
diff --git a/src/emu/bus/snes/snes_carts.c b/src/devices/bus/snes/snes_carts.c
index 478dd6af83c..478dd6af83c 100644
--- a/src/emu/bus/snes/snes_carts.c
+++ b/src/devices/bus/snes/snes_carts.c
diff --git a/src/emu/bus/snes/snes_carts.h b/src/devices/bus/snes/snes_carts.h
index 11eab07a315..11eab07a315 100644
--- a/src/emu/bus/snes/snes_carts.h
+++ b/src/devices/bus/snes/snes_carts.h
diff --git a/src/emu/bus/snes/snes_slot.c b/src/devices/bus/snes/snes_slot.c
index d44325d728f..d44325d728f 100644
--- a/src/emu/bus/snes/snes_slot.c
+++ b/src/devices/bus/snes/snes_slot.c
diff --git a/src/emu/bus/snes/snes_slot.h b/src/devices/bus/snes/snes_slot.h
index a6fa076810f..a6fa076810f 100644
--- a/src/emu/bus/snes/snes_slot.h
+++ b/src/devices/bus/snes/snes_slot.h
diff --git a/src/emu/bus/snes/spc7110.c b/src/devices/bus/snes/spc7110.c
index 6124ddec6d1..6124ddec6d1 100644
--- a/src/emu/bus/snes/spc7110.c
+++ b/src/devices/bus/snes/spc7110.c
diff --git a/src/emu/bus/snes/spc7110.h b/src/devices/bus/snes/spc7110.h
index 128c3ecc5a8..128c3ecc5a8 100644
--- a/src/emu/bus/snes/spc7110.h
+++ b/src/devices/bus/snes/spc7110.h
diff --git a/src/emu/bus/snes/sufami.c b/src/devices/bus/snes/sufami.c
index 2cf4de90d6c..2cf4de90d6c 100644
--- a/src/emu/bus/snes/sufami.c
+++ b/src/devices/bus/snes/sufami.c
diff --git a/src/emu/bus/snes/sufami.h b/src/devices/bus/snes/sufami.h
index c56f566777f..c56f566777f 100644
--- a/src/emu/bus/snes/sufami.h
+++ b/src/devices/bus/snes/sufami.h
diff --git a/src/emu/bus/snes/upd.c b/src/devices/bus/snes/upd.c
index 056f462e2fa..056f462e2fa 100644
--- a/src/emu/bus/snes/upd.c
+++ b/src/devices/bus/snes/upd.c
diff --git a/src/emu/bus/snes/upd.h b/src/devices/bus/snes/upd.h
index 28fdf077f11..28fdf077f11 100644
--- a/src/emu/bus/snes/upd.h
+++ b/src/devices/bus/snes/upd.h
diff --git a/src/emu/bus/snes_ctrl/bcbattle.c b/src/devices/bus/snes_ctrl/bcbattle.c
index 5d332c4885e..5d332c4885e 100644
--- a/src/emu/bus/snes_ctrl/bcbattle.c
+++ b/src/devices/bus/snes_ctrl/bcbattle.c
diff --git a/src/emu/bus/snes_ctrl/bcbattle.h b/src/devices/bus/snes_ctrl/bcbattle.h
index 120c289c894..120c289c894 100644
--- a/src/emu/bus/snes_ctrl/bcbattle.h
+++ b/src/devices/bus/snes_ctrl/bcbattle.h
diff --git a/src/emu/bus/snes_ctrl/ctrl.c b/src/devices/bus/snes_ctrl/ctrl.c
index ccd05ec8cf9..ccd05ec8cf9 100644
--- a/src/emu/bus/snes_ctrl/ctrl.c
+++ b/src/devices/bus/snes_ctrl/ctrl.c
diff --git a/src/emu/bus/snes_ctrl/ctrl.h b/src/devices/bus/snes_ctrl/ctrl.h
index d2ef092e4e7..d2ef092e4e7 100644
--- a/src/emu/bus/snes_ctrl/ctrl.h
+++ b/src/devices/bus/snes_ctrl/ctrl.h
diff --git a/src/emu/bus/snes_ctrl/joypad.c b/src/devices/bus/snes_ctrl/joypad.c
index 6c638a321b8..6c638a321b8 100644
--- a/src/emu/bus/snes_ctrl/joypad.c
+++ b/src/devices/bus/snes_ctrl/joypad.c
diff --git a/src/emu/bus/snes_ctrl/joypad.h b/src/devices/bus/snes_ctrl/joypad.h
index 2133f396d0f..2133f396d0f 100644
--- a/src/emu/bus/snes_ctrl/joypad.h
+++ b/src/devices/bus/snes_ctrl/joypad.h
diff --git a/src/emu/bus/snes_ctrl/miracle.c b/src/devices/bus/snes_ctrl/miracle.c
index d0dfddb71ff..d0dfddb71ff 100644
--- a/src/emu/bus/snes_ctrl/miracle.c
+++ b/src/devices/bus/snes_ctrl/miracle.c
diff --git a/src/emu/bus/snes_ctrl/miracle.h b/src/devices/bus/snes_ctrl/miracle.h
index 2a814050593..2a814050593 100644
--- a/src/emu/bus/snes_ctrl/miracle.h
+++ b/src/devices/bus/snes_ctrl/miracle.h
diff --git a/src/emu/bus/snes_ctrl/mouse.c b/src/devices/bus/snes_ctrl/mouse.c
index 535b68d02bb..535b68d02bb 100644
--- a/src/emu/bus/snes_ctrl/mouse.c
+++ b/src/devices/bus/snes_ctrl/mouse.c
diff --git a/src/emu/bus/snes_ctrl/mouse.h b/src/devices/bus/snes_ctrl/mouse.h
index 56608e40992..56608e40992 100644
--- a/src/emu/bus/snes_ctrl/mouse.h
+++ b/src/devices/bus/snes_ctrl/mouse.h
diff --git a/src/emu/bus/snes_ctrl/multitap.c b/src/devices/bus/snes_ctrl/multitap.c
index 7b5ad87bfbc..7b5ad87bfbc 100644
--- a/src/emu/bus/snes_ctrl/multitap.c
+++ b/src/devices/bus/snes_ctrl/multitap.c
diff --git a/src/emu/bus/snes_ctrl/multitap.h b/src/devices/bus/snes_ctrl/multitap.h
index 1720fe6280e..1720fe6280e 100644
--- a/src/emu/bus/snes_ctrl/multitap.h
+++ b/src/devices/bus/snes_ctrl/multitap.h
diff --git a/src/emu/bus/snes_ctrl/pachinko.c b/src/devices/bus/snes_ctrl/pachinko.c
index 724c4bccbd9..724c4bccbd9 100644
--- a/src/emu/bus/snes_ctrl/pachinko.c
+++ b/src/devices/bus/snes_ctrl/pachinko.c
diff --git a/src/emu/bus/snes_ctrl/pachinko.h b/src/devices/bus/snes_ctrl/pachinko.h
index ae47adc40b4..ae47adc40b4 100644
--- a/src/emu/bus/snes_ctrl/pachinko.h
+++ b/src/devices/bus/snes_ctrl/pachinko.h
diff --git a/src/emu/bus/snes_ctrl/sscope.c b/src/devices/bus/snes_ctrl/sscope.c
index 72c81e84328..72c81e84328 100644
--- a/src/emu/bus/snes_ctrl/sscope.c
+++ b/src/devices/bus/snes_ctrl/sscope.c
diff --git a/src/emu/bus/snes_ctrl/sscope.h b/src/devices/bus/snes_ctrl/sscope.h
index a207a29d9a6..a207a29d9a6 100644
--- a/src/emu/bus/snes_ctrl/sscope.h
+++ b/src/devices/bus/snes_ctrl/sscope.h
diff --git a/src/emu/bus/snes_ctrl/twintap.c b/src/devices/bus/snes_ctrl/twintap.c
index 0755e14ef74..0755e14ef74 100644
--- a/src/emu/bus/snes_ctrl/twintap.c
+++ b/src/devices/bus/snes_ctrl/twintap.c
diff --git a/src/emu/bus/snes_ctrl/twintap.h b/src/devices/bus/snes_ctrl/twintap.h
index 4474ec1e6da..4474ec1e6da 100644
--- a/src/emu/bus/snes_ctrl/twintap.h
+++ b/src/devices/bus/snes_ctrl/twintap.h
diff --git a/src/emu/bus/spc1000/exp.c b/src/devices/bus/spc1000/exp.c
index 7a63161096e..7a63161096e 100644
--- a/src/emu/bus/spc1000/exp.c
+++ b/src/devices/bus/spc1000/exp.c
diff --git a/src/emu/bus/spc1000/exp.h b/src/devices/bus/spc1000/exp.h
index 3607f021a0e..3607f021a0e 100644
--- a/src/emu/bus/spc1000/exp.h
+++ b/src/devices/bus/spc1000/exp.h
diff --git a/src/emu/bus/spc1000/fdd.c b/src/devices/bus/spc1000/fdd.c
index 9089dae5829..9089dae5829 100644
--- a/src/emu/bus/spc1000/fdd.c
+++ b/src/devices/bus/spc1000/fdd.c
diff --git a/src/emu/bus/spc1000/fdd.h b/src/devices/bus/spc1000/fdd.h
index 4d384e2ee44..4d384e2ee44 100644
--- a/src/emu/bus/spc1000/fdd.h
+++ b/src/devices/bus/spc1000/fdd.h
diff --git a/src/emu/bus/spc1000/vdp.c b/src/devices/bus/spc1000/vdp.c
index 7824e9fccb4..7824e9fccb4 100644
--- a/src/emu/bus/spc1000/vdp.c
+++ b/src/devices/bus/spc1000/vdp.c
diff --git a/src/emu/bus/spc1000/vdp.h b/src/devices/bus/spc1000/vdp.h
index d7311f8c104..d7311f8c104 100644
--- a/src/emu/bus/spc1000/vdp.h
+++ b/src/devices/bus/spc1000/vdp.h
diff --git a/src/emu/bus/ti99_peb/bwg.c b/src/devices/bus/ti99_peb/bwg.c
index d5504ff2283..55a1150f972 100644
--- a/src/emu/bus/ti99_peb/bwg.c
+++ b/src/devices/bus/ti99_peb/bwg.c
@@ -670,9 +670,13 @@ MACHINE_CONFIG_FRAGMENT( bwg_fdc )
MCFG_MM58274C_DAY1(0) // sunday
MCFG_FLOPPY_DRIVE_ADD("0", bwg_floppies, "525dd", snug_bwg_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("1", bwg_floppies, "525dd", snug_bwg_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("2", bwg_floppies, NULL, snug_bwg_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("3", bwg_floppies, NULL, snug_bwg_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MACHINE_CONFIG_END
ROM_START( bwg_fdc )
diff --git a/src/emu/bus/ti99_peb/bwg.h b/src/devices/bus/ti99_peb/bwg.h
index a1012e06257..a1012e06257 100644
--- a/src/emu/bus/ti99_peb/bwg.h
+++ b/src/devices/bus/ti99_peb/bwg.h
diff --git a/src/emu/bus/ti99_peb/evpc.c b/src/devices/bus/ti99_peb/evpc.c
index 57b16fb9466..57b16fb9466 100644
--- a/src/emu/bus/ti99_peb/evpc.c
+++ b/src/devices/bus/ti99_peb/evpc.c
diff --git a/src/emu/bus/ti99_peb/evpc.h b/src/devices/bus/ti99_peb/evpc.h
index 86ec224246e..86ec224246e 100644
--- a/src/emu/bus/ti99_peb/evpc.h
+++ b/src/devices/bus/ti99_peb/evpc.h
diff --git a/src/emu/bus/ti99_peb/hfdc.c b/src/devices/bus/ti99_peb/hfdc.c
index ed73221837a..62f31b7d141 100644
--- a/src/emu/bus/ti99_peb/hfdc.c
+++ b/src/devices/bus/ti99_peb/hfdc.c
@@ -57,7 +57,7 @@
#include "emu.h"
#include "peribox.h"
#include "hfdc.h"
-#include "machine/ti99_hd.h"
+#include "formats/mfm_hd.h"
#include "formats/ti99_dsk.h" // Format
#define BUFFER "ram"
@@ -350,10 +350,11 @@ WRITE8_MEMBER( myarc_hfdc_device::write )
7 6 5 4 3 2 1 0
+-----+-----+-----+-----+-----+-----+-----+-----+
- | 0 | 0 | 0 | 0 | 0 | MON | DIP | IRQ |
+ | 0 | 0 | 0 | 0 | WAIT| MON*| DIP | IRQ |
+-----+-----+-----+-----+-----+-----+-----+-----+
- MON = Motor on
+ WAIT = Wait for WDS1 to become ready
+ MON* = Motor on
DIP = DMA in progress
IRQ = Interrupt request
---
@@ -375,7 +376,8 @@ READ8Z_MEMBER(myarc_hfdc_device::crureadz)
reply = 0;
if (m_irq == ASSERT_LINE) reply |= 0x01;
if (m_dip == ASSERT_LINE) reply |= 0x02;
- if (m_motor_running) reply |= 0x04;
+ if (!m_motor_running) reply |= 0x04;
+ if (m_wait_for_hd1) reply |= 0x08;
}
*value = reply;
}
@@ -888,6 +890,7 @@ void myarc_hfdc_device::device_reset()
}
m_cru_base = ioport("CRUHFDC")->read();
+ m_wait_for_hd1 = ioport("WAITHD1")->read();
// Resetting values
m_rom_page = 0;
@@ -956,6 +959,11 @@ void myarc_hfdc_device::device_config_complete()
the drives 1 to 4 are renamed to DSK5-DSK8 (see [1] p. 7).
*/
INPUT_PORTS_START( ti99_hfdc )
+ PORT_START( "WAITHD1" )
+ PORT_DIPNAME( 0x01, 0x00, "HFDC Wait for HD1" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( On ) )
+
PORT_START( "CRUHFDC" )
PORT_DIPNAME( 0x1f00, 0x1100, "HFDC CRU base" )
PORT_DIPSETTING( 0x1000, "1000" )
@@ -1011,7 +1019,7 @@ static SLOT_INTERFACE_START( hfdc_floppies )
SLOT_INTERFACE_END
static SLOT_INTERFACE_START( hfdc_harddisks )
- SLOT_INTERFACE( "generic", MFMHD_GENERIC ) // Generic high-level emulation
+ SLOT_INTERFACE( "generic", MFMHD_GENERIC ) // Generic hard disk (self-adapting to image)
SLOT_INTERFACE( "st213", MFMHD_ST213 ) // Seagate ST-213 (10 MB)
SLOT_INTERFACE( "st225", MFMHD_ST225 ) // Seagate ST-225 (20 MB)
SLOT_INTERFACE( "st251", MFMHD_ST251 ) // Seagate ST-251 (40 MB)
@@ -1019,22 +1027,26 @@ SLOT_INTERFACE_END
MACHINE_CONFIG_FRAGMENT( ti99_hfdc )
MCFG_DEVICE_ADD(FDC_TAG, HDC9234, 0)
- MCFG_HDC9234_INTRQ_CALLBACK(WRITELINE(myarc_hfdc_device, intrq_w))
- MCFG_HDC9234_DIP_CALLBACK(WRITELINE(myarc_hfdc_device, dip_w))
- MCFG_HDC9234_AUXBUS_OUT_CALLBACK(WRITE8(myarc_hfdc_device, auxbus_out))
- MCFG_HDC9234_DMARQ_CALLBACK(WRITELINE(myarc_hfdc_device, dmarq_w))
- MCFG_HDC9234_DMA_IN_CALLBACK(READ8(myarc_hfdc_device, read_buffer))
- MCFG_HDC9234_DMA_OUT_CALLBACK(WRITE8(myarc_hfdc_device, write_buffer))
+ MCFG_HDC92X4_INTRQ_CALLBACK(WRITELINE(myarc_hfdc_device, intrq_w))
+ MCFG_HDC92X4_DIP_CALLBACK(WRITELINE(myarc_hfdc_device, dip_w))
+ MCFG_HDC92X4_AUXBUS_OUT_CALLBACK(WRITE8(myarc_hfdc_device, auxbus_out))
+ MCFG_HDC92X4_DMARQ_CALLBACK(WRITELINE(myarc_hfdc_device, dmarq_w))
+ MCFG_HDC92X4_DMA_IN_CALLBACK(READ8(myarc_hfdc_device, read_buffer))
+ MCFG_HDC92X4_DMA_OUT_CALLBACK(WRITE8(myarc_hfdc_device, write_buffer))
MCFG_FLOPPY_DRIVE_ADD("f1", hfdc_floppies, "525dd", myarc_hfdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("f2", hfdc_floppies, "525dd", myarc_hfdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("f3", hfdc_floppies, NULL, myarc_hfdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("f4", hfdc_floppies, NULL, myarc_hfdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
// NB: Hard disks don't go without image (other than floppy drives)
- MCFG_MFM_HARDDISK_CONN_ADD("h1", hfdc_harddisks, NULL, MFM_BYTE, 3000, 20, MFMHD_TI99_FORMAT)
- MCFG_MFM_HARDDISK_CONN_ADD("h2", hfdc_harddisks, NULL, MFM_BYTE, 2000, 20, MFMHD_TI99_FORMAT)
- MCFG_MFM_HARDDISK_CONN_ADD("h3", hfdc_harddisks, NULL, MFM_BYTE, 2000, 20, MFMHD_TI99_FORMAT)
+ MCFG_MFM_HARDDISK_CONN_ADD("h1", hfdc_harddisks, NULL, MFM_BYTE, 3000, 20, MFMHD_GEN_FORMAT)
+ MCFG_MFM_HARDDISK_CONN_ADD("h2", hfdc_harddisks, NULL, MFM_BYTE, 2000, 20, MFMHD_GEN_FORMAT)
+ MCFG_MFM_HARDDISK_CONN_ADD("h3", hfdc_harddisks, NULL, MFM_BYTE, 2000, 20, MFMHD_GEN_FORMAT)
MCFG_DEVICE_ADD(CLOCK_TAG, MM58274C, 0)
MCFG_MM58274C_MODE24(1) // 24 hour
diff --git a/src/emu/bus/ti99_peb/hfdc.h b/src/devices/bus/ti99_peb/hfdc.h
index d27a9f4c8bc..a49e6062c44 100644
--- a/src/emu/bus/ti99_peb/hfdc.h
+++ b/src/devices/bus/ti99_peb/hfdc.h
@@ -17,9 +17,10 @@
#define __HFDC__
#include "imagedev/floppy.h"
+#include "imagedev/mfmhd.h"
+
#include "machine/mm58274c.h"
-#include "machine/hdc9234.h"
-#include "machine/ti99_hd.h"
+#include "machine/hdc92x4.h"
extern const device_type TI99_HFDC;
@@ -141,6 +142,9 @@ private:
// DMA in progress
bool m_dma_in_progress;
+ // Wait for HD. This was an addition in later cards.
+ bool m_wait_for_hd1;
+
// Device Service Routine ROM (firmware)
UINT8* m_dsrrom;
diff --git a/src/emu/bus/ti99_peb/horizon.c b/src/devices/bus/ti99_peb/horizon.c
index 36bf35cbd18..36bf35cbd18 100644
--- a/src/emu/bus/ti99_peb/horizon.c
+++ b/src/devices/bus/ti99_peb/horizon.c
diff --git a/src/emu/bus/ti99_peb/horizon.h b/src/devices/bus/ti99_peb/horizon.h
index f1241c001ad..f1241c001ad 100644
--- a/src/emu/bus/ti99_peb/horizon.h
+++ b/src/devices/bus/ti99_peb/horizon.h
diff --git a/src/emu/bus/ti99_peb/hsgpl.c b/src/devices/bus/ti99_peb/hsgpl.c
index 7a7f09d5311..8cfe1c9ede7 100644
--- a/src/emu/bus/ti99_peb/hsgpl.c
+++ b/src/devices/bus/ti99_peb/hsgpl.c
@@ -476,7 +476,7 @@ void snug_high_speed_gpl_device::cartspace_write(address_space& space, offs_t of
{
logerror("%s: invalid write %04x <- %02x\n", tag(), offset, data);
// feeprom is normally written to using GPL ports, and I don't know
- // writing through >6000 page is enabled
+ // whether writing through >6000 page is enabled
/*
at29c040a_w(feeprom_rom6, 1 + 2*offset + 0x2000*hsgpl.cur_bank + 0x8000*port, data);
at29c040a_w(feeprom_rom6, 2*offset + 0x2000*hsgpl.cur_bank + 0x8000*port, data >> 8);
@@ -640,10 +640,10 @@ void snug_high_speed_gpl_device::device_reset()
void snug_high_speed_gpl_device::device_config_complete(void)
{
- m_dsr_eeprom = subdevice<at29040a_device>(DSR_EEPROM);
- m_rom6_eeprom = subdevice<at29040a_device>(ROM6_EEPROM);
- m_grom_a_eeprom = subdevice<at29040a_device>(GROM_A_EEPROM);
- m_grom_b_eeprom = subdevice<at29040a_device>(GROM_B_EEPROM);
+ m_dsr_eeprom = subdevice<at29c040a_device>(DSR_EEPROM);
+ m_rom6_eeprom = subdevice<at29c040a_device>(ROM6_EEPROM);
+ m_grom_a_eeprom = subdevice<at29c040a_device>(GROM_A_EEPROM);
+ m_grom_b_eeprom = subdevice<at29c040a_device>(GROM_B_EEPROM);
}
void snug_high_speed_gpl_device::device_stop()
@@ -661,10 +661,10 @@ INPUT_PORTS_START( ti99_hsgpl)
INPUT_PORTS_END
MACHINE_CONFIG_FRAGMENT( ti99_hsgpl )
- MCFG_AT29040A_ADD( DSR_EEPROM )
- MCFG_AT29040A_ADD( GROM_B_EEPROM )
- MCFG_AT29040A_ADD( GROM_A_EEPROM )
- MCFG_AT29040A_ADD( ROM6_EEPROM )
+ MCFG_AT29C040A_ADD( DSR_EEPROM )
+ MCFG_AT29C040A_ADD( GROM_B_EEPROM )
+ MCFG_AT29C040A_ADD( GROM_A_EEPROM )
+ MCFG_AT29C040A_ADD( ROM6_EEPROM )
MACHINE_CONFIG_END
machine_config_constructor snug_high_speed_gpl_device::device_mconfig_additions() const
diff --git a/src/emu/bus/ti99_peb/hsgpl.h b/src/devices/bus/ti99_peb/hsgpl.h
index a662b69c8e2..bb87cc77a38 100644
--- a/src/emu/bus/ti99_peb/hsgpl.h
+++ b/src/devices/bus/ti99_peb/hsgpl.h
@@ -18,7 +18,7 @@
#include "emu.h"
#include "peribox.h"
-#include "machine/at29040a.h"
+#include "machine/at29x.h"
extern const device_type TI99_HSGPL;
@@ -42,10 +42,10 @@ protected:
virtual machine_config_constructor device_mconfig_additions() const;
private:
- at29040a_device* m_dsr_eeprom;
- at29040a_device* m_rom6_eeprom;
- at29040a_device* m_grom_a_eeprom;
- at29040a_device* m_grom_b_eeprom;
+ at29c040a_device* m_dsr_eeprom;
+ at29c040a_device* m_rom6_eeprom;
+ at29c040a_device* m_grom_a_eeprom;
+ at29c040a_device* m_grom_b_eeprom;
UINT8* m_ram6_memory;
UINT8* m_gram_memory;
diff --git a/src/emu/bus/ti99_peb/memex.c b/src/devices/bus/ti99_peb/memex.c
index 66c3a571838..66c3a571838 100644
--- a/src/emu/bus/ti99_peb/memex.c
+++ b/src/devices/bus/ti99_peb/memex.c
diff --git a/src/emu/bus/ti99_peb/memex.h b/src/devices/bus/ti99_peb/memex.h
index bccc4da161c..bccc4da161c 100644
--- a/src/emu/bus/ti99_peb/memex.h
+++ b/src/devices/bus/ti99_peb/memex.h
diff --git a/src/emu/bus/ti99_peb/myarcmem.c b/src/devices/bus/ti99_peb/myarcmem.c
index caeeb9504df..caeeb9504df 100644
--- a/src/emu/bus/ti99_peb/myarcmem.c
+++ b/src/devices/bus/ti99_peb/myarcmem.c
diff --git a/src/emu/bus/ti99_peb/myarcmem.h b/src/devices/bus/ti99_peb/myarcmem.h
index a28c4d989b2..a28c4d989b2 100644
--- a/src/emu/bus/ti99_peb/myarcmem.h
+++ b/src/devices/bus/ti99_peb/myarcmem.h
diff --git a/src/emu/bus/ti99_peb/pcode.c b/src/devices/bus/ti99_peb/pcode.c
index eb12a20a8e8..eb12a20a8e8 100644
--- a/src/emu/bus/ti99_peb/pcode.c
+++ b/src/devices/bus/ti99_peb/pcode.c
diff --git a/src/emu/bus/ti99_peb/pcode.h b/src/devices/bus/ti99_peb/pcode.h
index 10f86debca8..4630d127f13 100644
--- a/src/emu/bus/ti99_peb/pcode.h
+++ b/src/devices/bus/ti99_peb/pcode.h
@@ -17,7 +17,7 @@
#include "emu.h"
#include "peribox.h"
-#include "machine/ti99/grom.h"
+#include "bus/ti99x/grom.h"
extern const device_type TI99_P_CODE;
diff --git a/src/emu/bus/ti99_peb/peribox.c b/src/devices/bus/ti99_peb/peribox.c
index 9d5024e7fa6..9d5024e7fa6 100644
--- a/src/emu/bus/ti99_peb/peribox.c
+++ b/src/devices/bus/ti99_peb/peribox.c
diff --git a/src/emu/bus/ti99_peb/peribox.h b/src/devices/bus/ti99_peb/peribox.h
index 85c8bfcbdbc..7e48726f75c 100644
--- a/src/emu/bus/ti99_peb/peribox.h
+++ b/src/devices/bus/ti99_peb/peribox.h
@@ -14,7 +14,7 @@
#ifndef __PBOX__
#define __PBOX__
-#include "machine/ti99/ti99defs.h"
+#include "bus/ti99x/ti99defs.h"
extern const device_type PERIBOX;
extern const device_type PERIBOX_SLOT;
diff --git a/src/emu/bus/ti99_peb/samsmem.c b/src/devices/bus/ti99_peb/samsmem.c
index 7a8db384ffd..7a8db384ffd 100644
--- a/src/emu/bus/ti99_peb/samsmem.c
+++ b/src/devices/bus/ti99_peb/samsmem.c
diff --git a/src/emu/bus/ti99_peb/samsmem.h b/src/devices/bus/ti99_peb/samsmem.h
index 0dd5e959755..0dd5e959755 100644
--- a/src/emu/bus/ti99_peb/samsmem.h
+++ b/src/devices/bus/ti99_peb/samsmem.h
diff --git a/src/emu/bus/ti99_peb/spchsyn.c b/src/devices/bus/ti99_peb/spchsyn.c
index 70be9ee3db6..70be9ee3db6 100644
--- a/src/emu/bus/ti99_peb/spchsyn.c
+++ b/src/devices/bus/ti99_peb/spchsyn.c
diff --git a/src/emu/bus/ti99_peb/spchsyn.h b/src/devices/bus/ti99_peb/spchsyn.h
index 0984cf4de2e..0984cf4de2e 100644
--- a/src/emu/bus/ti99_peb/spchsyn.h
+++ b/src/devices/bus/ti99_peb/spchsyn.h
diff --git a/src/emu/bus/ti99_peb/ti_32kmem.c b/src/devices/bus/ti99_peb/ti_32kmem.c
index 49ce105b89c..49ce105b89c 100644
--- a/src/emu/bus/ti99_peb/ti_32kmem.c
+++ b/src/devices/bus/ti99_peb/ti_32kmem.c
diff --git a/src/emu/bus/ti99_peb/ti_32kmem.h b/src/devices/bus/ti99_peb/ti_32kmem.h
index 5e0e1f2c5cf..5e0e1f2c5cf 100644
--- a/src/emu/bus/ti99_peb/ti_32kmem.h
+++ b/src/devices/bus/ti99_peb/ti_32kmem.h
diff --git a/src/emu/bus/ti99_peb/ti_fdc.c b/src/devices/bus/ti99_peb/ti_fdc.c
index 610832e2539..e43a1be2475 100644
--- a/src/emu/bus/ti99_peb/ti_fdc.c
+++ b/src/devices/bus/ti99_peb/ti_fdc.c
@@ -407,8 +407,11 @@ MACHINE_CONFIG_FRAGMENT( ti_fdc )
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(ti_fdc_device, fdc_irq_w))
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(ti_fdc_device, fdc_drq_w))
MCFG_FLOPPY_DRIVE_ADD("0", tifdc_floppies, "525dd", ti_fdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("1", tifdc_floppies, "525dd", ti_fdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("2", tifdc_floppies, NULL, ti_fdc_device::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MACHINE_CONFIG_END
ROM_START( ti_fdc )
diff --git a/src/emu/bus/ti99_peb/ti_fdc.h b/src/devices/bus/ti99_peb/ti_fdc.h
index 9fedb1c2590..9fedb1c2590 100644
--- a/src/emu/bus/ti99_peb/ti_fdc.h
+++ b/src/devices/bus/ti99_peb/ti_fdc.h
diff --git a/src/emu/bus/ti99_peb/ti_rs232.c b/src/devices/bus/ti99_peb/ti_rs232.c
index 3f1bf2761ec..9f3706cece1 100644
--- a/src/emu/bus/ti99_peb/ti_rs232.c
+++ b/src/devices/bus/ti99_peb/ti_rs232.c
@@ -230,13 +230,13 @@ bool ti_pio_attached_device::call_load()
{
ti_rs232_pio_device* card = static_cast<ti_rs232_pio_device*>(owner());
- /* tell whether the image is readable */
+ // tell whether the image is readable
card->m_pio_readable = !has_been_created();
- /* tell whether the image is writable */
+ // tell whether the image is writable
card->m_pio_writable = !is_readonly();
if (card->m_pio_write && card->m_pio_writable)
- card->m_pio_handshakein = false; /* receiver ready */
+ card->m_pio_handshakein = false; // receiver ready
else
card->m_pio_handshakein = true;
@@ -1025,6 +1025,9 @@ void ti_rs232_pio_device::device_start()
// Prepare the receive buffers
m_recvbuf[0] = global_alloc_array(UINT8, 512);
m_recvbuf[1] = global_alloc_array(UINT8, 512);
+ m_pio_write = true; // required for call_load of pio_attached_device
+ m_pio_writable = false;
+ m_pio_handshakein = false;
}
void ti_rs232_pio_device::device_stop()
@@ -1038,14 +1041,12 @@ void ti_rs232_pio_device::device_reset()
m_pio_direction_in = false;
m_pio_handshakeout = false;
m_pio_spareout = false;
- m_pio_writable = false;
m_flag0 = false;
set_bit(0, CTS, 0);
set_bit(1, CTS, 0);
m_led = false;
- m_pio_write = true;
m_recv_mode[0] = RECV_MODE_NORMAL;
m_recv_mode[1] = RECV_MODE_NORMAL;
diff --git a/src/emu/bus/ti99_peb/ti_rs232.h b/src/devices/bus/ti99_peb/ti_rs232.h
index 7c75e208d65..7c75e208d65 100644
--- a/src/emu/bus/ti99_peb/ti_rs232.h
+++ b/src/devices/bus/ti99_peb/ti_rs232.h
diff --git a/src/emu/bus/ti99_peb/tn_ide.c b/src/devices/bus/ti99_peb/tn_ide.c
index c073f3443a7..10e69ace518 100644
--- a/src/emu/bus/ti99_peb/tn_ide.c
+++ b/src/devices/bus/ti99_peb/tn_ide.c
@@ -31,7 +31,6 @@
#include "peribox.h"
#include "machine/ataintf.h"
#include "tn_ide.h"
-#include "machine/ti99_hd.h"
#define CRU_BASE 0x1000
diff --git a/src/emu/bus/ti99_peb/tn_ide.h b/src/devices/bus/ti99_peb/tn_ide.h
index bb9371e4cfb..bb9371e4cfb 100644
--- a/src/emu/bus/ti99_peb/tn_ide.h
+++ b/src/devices/bus/ti99_peb/tn_ide.h
diff --git a/src/emu/bus/ti99_peb/tn_usbsm.c b/src/devices/bus/ti99_peb/tn_usbsm.c
index f3a911af0f2..f3a911af0f2 100644
--- a/src/emu/bus/ti99_peb/tn_usbsm.c
+++ b/src/devices/bus/ti99_peb/tn_usbsm.c
diff --git a/src/emu/bus/ti99_peb/tn_usbsm.h b/src/devices/bus/ti99_peb/tn_usbsm.h
index 951565b0367..951565b0367 100644
--- a/src/emu/bus/ti99_peb/tn_usbsm.h
+++ b/src/devices/bus/ti99_peb/tn_usbsm.h
diff --git a/src/mess/machine/ti99/990_dk.c b/src/devices/bus/ti99x/990_dk.c
index 5eb8ea58892..5eb8ea58892 100644
--- a/src/mess/machine/ti99/990_dk.c
+++ b/src/devices/bus/ti99x/990_dk.c
diff --git a/src/mess/machine/ti99/990_dk.h b/src/devices/bus/ti99x/990_dk.h
index 2f83660ae75..2f83660ae75 100644
--- a/src/mess/machine/ti99/990_dk.h
+++ b/src/devices/bus/ti99x/990_dk.h
diff --git a/src/mess/machine/ti99/990_hd.c b/src/devices/bus/ti99x/990_hd.c
index fa0cd00646b..fa0cd00646b 100644
--- a/src/mess/machine/ti99/990_hd.c
+++ b/src/devices/bus/ti99x/990_hd.c
diff --git a/src/mess/machine/ti99/990_hd.h b/src/devices/bus/ti99x/990_hd.h
index 4c5e85f928d..4c5e85f928d 100644
--- a/src/mess/machine/ti99/990_hd.h
+++ b/src/devices/bus/ti99x/990_hd.h
diff --git a/src/mess/machine/ti99/990_tap.c b/src/devices/bus/ti99x/990_tap.c
index 20ca2333f7b..20ca2333f7b 100644
--- a/src/mess/machine/ti99/990_tap.c
+++ b/src/devices/bus/ti99x/990_tap.c
diff --git a/src/mess/machine/ti99/990_tap.h b/src/devices/bus/ti99x/990_tap.h
index 09e2e30da0a..09e2e30da0a 100644
--- a/src/mess/machine/ti99/990_tap.h
+++ b/src/devices/bus/ti99x/990_tap.h
diff --git a/src/mess/machine/ti99/mapper8.c b/src/devices/bus/ti99x/998board.c
index c8c5d293660..987cac6de54 100644
--- a/src/mess/machine/ti99/mapper8.c
+++ b/src/devices/bus/ti99x/998board.c
@@ -193,15 +193,15 @@
***************************************************************************/
-#include "mapper8.h"
+#include "998board.h"
#define TRACE_CRU 0
#define TRACE_MEM 0
#define TRACE_MAP 0
#define TRACE_CONFIG 0
#define TRACE_OSO 0
-
-#define LOG logerror
+#define TRACE_SPEECH 0
+#define TRACE_DETAIL 0
mainboard8_device::mainboard8_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: bus8z_device(mconfig, MAINBOARD8, "TI-99/8 Main board", tag, owner, clock, "ti998_mainboard", __FILE__),
@@ -218,7 +218,7 @@ mainboard8_device::mainboard8_device(const machine_config &mconfig, const char *
READ8Z_MEMBER(mainboard8_device::crureadz)
{
- if (TRACE_CRU) LOG("mainboard_998: read CRU %04x ignored\n", offset);
+ if (TRACE_CRU) logerror("%s: read CRU %04x ignored\n", tag(), offset);
// Nothing here.
}
@@ -236,10 +236,10 @@ WRITE8_MEMBER(mainboard8_device::cruwrite)
case 0:
// Turn on/off the internal DSR
m_dsr_selected = (data!=0);
- if (TRACE_CRU) LOG("mainboard_998: DSR select = %d\n", data);
+ if (TRACE_CRU) logerror("%s: DSR select = %d\n", tag(), data);
break;
case 1:
- if (TRACE_CRU) LOG("mainboard_998: System reset by CRU request\n");
+ if (TRACE_CRU) logerror("%s: System reset by CRU request\n", tag());
machine().schedule_soft_reset();
break;
}
@@ -254,10 +254,10 @@ WRITE8_MEMBER(mainboard8_device::cruwrite)
case 0:
// Turn on/off the Hexbus DSR
m_hexbus_selected = (data!=0);
- if (TRACE_CRU) LOG("mainboard_998: Hexbus select = %d\n", data);
+ if (TRACE_CRU) logerror("%s: Hexbus select = %d\n", tag(), data);
break;
default:
- if (TRACE_CRU) LOG("mainboard_998: Set CRU>%04x (Hexbus) to %d\n",offset,data);
+ if (TRACE_CRU) logerror("%s: Set CRU>%04x (Hexbus) to %d\n", tag(), offset,data);
break;
}
return;
@@ -265,14 +265,14 @@ WRITE8_MEMBER(mainboard8_device::cruwrite)
if ((offset & 0xff00)>=0x0100)
{
- if (TRACE_CRU) LOG("mainboard_998: Set CRU>%04x (unknown) to %d\n",offset,data);
+ if (TRACE_CRU) logerror("%s: Set CRU>%04x (unknown) to %d\n", tag(), offset,data);
return;
}
}
void mainboard8_device::CRUS_set(bool state)
{
- if (TRACE_CRU) LOG("mainboard_998: set CRUS=%d\n", state);
+ if (TRACE_CRU) logerror("%s: set CRUS=%d\n", tag(), state);
m_CRUS = state;
}
@@ -281,7 +281,7 @@ void mainboard8_device::CRUS_set(bool state)
*/
void mainboard8_device::PTGE_set(bool state)
{
- if (TRACE_CRU) LOG("mainboard_998: set PTGEN=%d\n", state? 1:0);
+ if (TRACE_CRU) logerror("%s: set PTGEN=%d\n", tag(), state? 1:0);
m_PTGE = state;
}
@@ -296,7 +296,7 @@ READ8_MEMBER( mainboard8_device::readm )
{
UINT8 value = 0;
bool found = false;
- if (TRACE_MEM) LOG("mainboard_998: read from %04x\n", offset);
+ if (TRACE_MEM) logerror("%s: read from %04x\n", tag(), offset);
found = access_logical_r(space, offset, &value, mem_mask);
m_waitcount = 2;
@@ -365,7 +365,7 @@ READ8Z_MEMBER( mainboard8_device::readz )
{
// Starts at 0x4000 in the image
*value = m_rom1[0x4000 | (offset & 0x1fff)];
- if (TRACE_MEM) LOG("mainboard_998: (intDSR) %04x -> %02x\n", offset, *value);
+ if (TRACE_MEM) logerror("%s: (intDSR) %04x -> %02x\n", tag(), offset, *value);
}
else
{
@@ -379,7 +379,7 @@ READ8Z_MEMBER( mainboard8_device::readz )
{
// Starts at 0x6000 in the image
*value = m_rom1[0x6000 | (offset & 0x1fff)];
- if (TRACE_MEM) LOG("mainboard_998: (HexDSR) %04x -> %02x\n", offset, *value);
+ if (TRACE_MEM) logerror("%s: (HexDSR) %04x -> %02x\n", tag(), offset, *value);
}
}
}
@@ -388,7 +388,7 @@ READ8Z_MEMBER( mainboard8_device::readz )
{
if (((offset & 0xfff0)==0xf870 && m_CRUS==false)||(((offset & 0xfff0)==0x8810 && m_CRUS==true)))
{
- if (TRACE_MEM) LOG("mainboard_998: read access to mapper ignored: %04x\n", offset);
+ if (TRACE_MEM) logerror("%s: read access to mapper ignored: %04x\n", tag(), offset);
}
}
}
@@ -410,18 +410,18 @@ WRITE8_MEMBER( mainboard8_device::write )
}
else
{
- LOG("mainboard_998: Write access to Hexbus DSR address %06x ignored\n", offset);
+ logerror("%s: Write access to Hexbus DSR address %06x ignored\n", tag(), offset);
}
}
else
{
if (m_dsr_selected)
{
- LOG("mainboard_998: Write access to internal DSR address %06x ignored\n", offset);
+ logerror("%s: Write access to internal DSR address %06x ignored\n", tag(), offset);
}
else
{
- LOG("mainboard_998: Write access to unmapped DSR space at address %06x ignored\n", offset);
+ logerror("%s: Write access to unmapped DSR space at address %06x ignored\n", tag(), offset);
}
}
}
@@ -449,7 +449,7 @@ void mainboard8_device::mapwrite(int offset, UINT8 data)
int bankindx = (data & 0x0e)>>1;
if (data & 1)
{
- if (TRACE_MAP) LOG("mainboard_998: load mapper from SRAM, bank %d\n", bankindx);
+ if (TRACE_MAP) logerror("%s: load mapper from SRAM, bank %d\n", tag(), bankindx);
// Load from SRAM
// In reality the CPU is put on HOLD during this transfer
for (int i=0; i < 16; i++)
@@ -457,12 +457,12 @@ void mainboard8_device::mapwrite(int offset, UINT8 data)
int ptr = (bankindx << 6);
m_pas_offset[i] = (m_sram[(i<<2) + ptr] << 24) | (m_sram[(i<<2)+ ptr+1] << 16)
| (m_sram[(i<<2) + ptr+2] << 8) | (m_sram[(i<<2) + ptr+3]);
- if (TRACE_MAP) LOG("mainboard_998: load %d=%08x\n", i, m_pas_offset[i]);
+ if (TRACE_MAP) logerror("%s: load %d=%08x\n", tag(), i, m_pas_offset[i]);
}
}
else
{
- if (TRACE_MAP) LOG("mainboard_998: store mapper to SRAM, bank %d\n", bankindx);
+ if (TRACE_MAP) logerror("%s: store mapper to SRAM, bank %d\n", tag(), bankindx);
// Store in SRAM
for (int i=0; i < 16; i++)
{
@@ -471,7 +471,7 @@ void mainboard8_device::mapwrite(int offset, UINT8 data)
m_sram[(i<<2) + ptr +1] = (m_pas_offset[i] >> 16)& 0xff;
m_sram[(i<<2) + ptr +2] = (m_pas_offset[i] >> 8)& 0xff;
m_sram[(i<<2) + ptr +3] = (m_pas_offset[i])& 0xff;
- if (TRACE_MAP) LOG("mainboard_998: save %d=%08x\n", i, m_pas_offset[i]);
+ if (TRACE_MAP) logerror("%s: save %d=%08x\n", tag(), i, m_pas_offset[i]);
}
}
}
@@ -487,10 +487,10 @@ bool mainboard8_device::access_logical_r(address_space& space, offs_t offset, UI
logically_addressed_device *ldev = m_logcomp.first();
bus8z_device *bdev = NULL;
- if (TRACE_MEM) LOG("mainboard_998: offset=%04x; CRUS=%d, PTGEN=%d\n", offset, m_CRUS? 1:0, m_PTGE? 0:1);
+ if (TRACE_MEM) logerror("%s: offset=%04x; CRUS=%d, PTGEN=%d\n", tag(), offset, m_CRUS? 1:0, m_PTGE? 0:1);
while (ldev != NULL)
{
- if (TRACE_MEM) LOG("mainboard_998: checking node=%s\n", ldev->m_config->name);
+ if (TRACE_MEM) logerror("%s: checking node=%s\n", tag(), ldev->m_config->name);
// Check the mode
if (((ldev->m_config->mode == NATIVE) && (m_CRUS==false))
|| ((ldev->m_config->mode == TI99EM) && (m_CRUS==true))
@@ -502,21 +502,21 @@ bool mainboard8_device::access_logical_r(address_space& space, offs_t offset, UI
{
case MAP8_SRAM:
*value = m_sram[offset & ~ldev->m_config->address_mask];
- if (TRACE_MEM) LOG("mainboard_998: (SRAM) %04x -> %02x\n", offset, *value);
+ if (TRACE_MEM) logerror("%s: (SRAM) %04x -> %02x\n", tag(), offset, *value);
break;
case MAP8_ROM0:
// Starts at 0000
*value = m_rom0[offset & ~ldev->m_config->address_mask];
- if (TRACE_MEM) LOG("mainboard_998: (ROM0) %04x -> %02x\n", offset, *value);
+ if (TRACE_MEM) logerror("%s: (ROM0) %04x -> %02x\n", tag(), offset, *value);
break;
case MAP8_DEV:
// device
bdev = static_cast<bus8z_device*>(ldev->m_device);
bdev->readz(space, offset, value, mem_mask);
- if (TRACE_MEM) LOG("mainboard_998: (dev %s) %04x -> %02x\n", ldev->m_config->name, offset, *value);
+ if (TRACE_MEM) logerror("%s: (dev %s) %04x -> %02x\n", tag(), ldev->m_config->name, offset, *value);
break;
default:
- if (TRACE_MEM) LOG("mainboard_998: Invalid kind for read access: %d\n", ldev->m_kind);
+ if (TRACE_MEM) logerror("%s: Invalid kind for read access: %d\n", tag(), ldev->m_kind);
}
found = true;
if (ldev->m_config->stop==STOP) break;
@@ -546,19 +546,19 @@ bool mainboard8_device::access_logical_w(address_space& space, offs_t offset, UI
{
case MAP8_SRAM:
m_sram[offset & ~ldev->m_config->address_mask] = data;
- if (TRACE_MEM) LOG("mainboard_998: (SRAM) %04x <- %02x\n", offset, data);
+ if (TRACE_MEM) logerror("%s: (SRAM) %04x <- %02x\n", tag(), offset, data);
break;
case MAP8_ROM0:
- if (TRACE_MEM) LOG("mainboard_998: (ROM0) %04x <- %02x (ignored)\n", offset, data);
+ if (TRACE_MEM) logerror("%s: (ROM0) %04x <- %02x (ignored)\n", tag(), offset, data);
break;
case MAP8_DEV:
// device
bdev = static_cast<bus8z_device*>(ldev->m_device);
bdev->write(space, offset, data, mem_mask);
- if (TRACE_MEM) LOG("mainboard_998: (dev %s) %04x <- %02x\n", ldev->m_config->name, offset, data);
+ if (TRACE_MEM) logerror("%s: (dev %s) %04x <- %02x\n", tag(), ldev->m_config->name, offset, data);
break;
default:
- if (TRACE_MEM) LOG("mainboard_998: Invalid kind for write access: %d\n", ldev->m_kind);
+ if (TRACE_MEM) logerror("%s: Invalid kind for write access: %d\n", tag(), ldev->m_kind);
}
found = true;
if (ldev->m_config->stop==STOP) break;
@@ -583,34 +583,34 @@ void mainboard8_device::access_physical_r( address_space& space, offs_t pas_addr
{
case MAP8_DRAM:
*value = m_dram[pas_address & ~pdev->m_config->address_mask];
- if (TRACE_MEM) LOG("mainboard_998: (DRAM) %06x -> %02x\n", pas_address, *value);
+ if (TRACE_MEM) logerror("%s: (DRAM) %06x -> %02x\n", tag(), pas_address, *value);
break;
case MAP8_ROM1A0:
// Starts at 0000 in the image, 8K
*value = m_rom1[pas_address & 0x1fff];
- if (TRACE_MEM) LOG("mainboard_998: (ROM) %06x -> %02x\n", pas_address, *value);
+ if (TRACE_MEM) logerror("%s: (ROM) %06x -> %02x\n", tag(), pas_address, *value);
break;
case MAP8_ROM1C0:
// Starts at 2000 in the image, 8K
*value = m_rom1[0x2000 | (pas_address & 0x1fff)];
- if (TRACE_MEM) LOG("mainboard_998: (ROM) %06x -> %02x\n", pas_address, *value);
+ if (TRACE_MEM) logerror("%s: (ROM) %06x -> %02x\n", tag(), pas_address, *value);
break;
case MAP8_PCODE:
*value = m_pcode[pas_address & 0x3fff];
- if (TRACE_MEM) LOG("mainboard_998: (PCDOE) %06x -> %02x\n", pas_address, *value);
+ if (TRACE_MEM) logerror("%s: (PCODE) %06x -> %02x\n", tag(), pas_address, *value);
break;
case MAP8_INTS:
// Interrupt sense
- LOG("mainboard_998: ILSENSE not implemented.\n");
+ logerror("%s: ILSENSE not implemented.\n", tag());
break;
case MAP8_DEV:
// devices
bdev = static_cast<bus8z_device*>(pdev->m_device);
bdev->readz(space, pas_address, value, mem_mask);
- if (TRACE_MEM) LOG("mainboard_998: (dev %s) %06x -> %02x\n", pdev->m_config->name, pas_address, *value);
+ if (TRACE_MEM) logerror("%s: (dev %s) %06x -> %02x\n", tag(), pdev->m_config->name, pas_address, *value);
break;
default:
- LOG("mainboard_998: Invalid kind for physical read access: %d\n", pdev->m_kind);
+ logerror("%s: Invalid kind for physical read access: %d\n", tag(), pdev->m_kind);
}
if (pdev->m_config->stop==STOP) break;
}
@@ -631,27 +631,27 @@ void mainboard8_device::access_physical_w( address_space& space, offs_t pas_addr
{
case MAP8_DRAM:
m_dram[pas_address & ~pdev->m_config->address_mask] = data;
- if (TRACE_MEM) LOG("mainboard_998: (DRAM) %06x <- %02x\n", pas_address, data);
+ if (TRACE_MEM) logerror("%s: (DRAM) %06x <- %02x\n", tag(), pas_address, data);
break;
case MAP8_ROM1A0:
case MAP8_ROM1C0:
- if (TRACE_MEM) LOG("mainboard_998: (ROM1) %06x <- %02x (ignored)\n", pas_address, data);
+ if (TRACE_MEM) logerror("%s: (ROM1) %06x <- %02x (ignored)\n", tag(), pas_address, data);
break;
case MAP8_PCODE:
- if (TRACE_MEM) LOG("mainboard_998: (PCODE) %06x <- %02x (ignored)\n", pas_address, data);
+ if (TRACE_MEM) logerror("%s: (PCODE) %06x <- %02x (ignored)\n", tag(), pas_address, data);
break;
case MAP8_INTS:
// Interrupt sense
- LOG("ti99_8: write to ilsense ignored\n");
+ logerror("%s: write to ilsense ignored\n", tag());
break;
case MAP8_DEV:
// devices
bdev = static_cast<bus8z_device*>(pdev->m_device);
- if (TRACE_MEM) LOG("mainboard_998: (dev %s) %06x <- %02x\n", pdev->m_config->name, pas_address, data);
+ if (TRACE_MEM) logerror("%s: (dev %s) %06x <- %02x\n", tag(), pdev->m_config->name, pas_address, data);
bdev->write(space, pas_address, data, mem_mask);
break;
default:
- LOG("mainboard_998: Invalid kind for physical write access: %d\n", pdev->m_kind);
+ logerror("%s: Invalid kind for physical write access: %d\n", tag(), pdev->m_kind);
}
if (pdev->m_config->stop==STOP) break;
}
@@ -684,7 +684,7 @@ void mainboard8_device::clock_in(int clock)
*/
void mainboard8_device::device_start()
{
- LOG("ti99_8: Starting mapper\n");
+ logerror("%s: Starting mapper\n", tag());
// String values of the pseudo constants, used in the configuration.
const char *const pseudodev[7] = { SRAMNAME, ROM0NAME, ROM1A0NAME, ROM1C0NAME, DRAMNAME, PCODENAME, INTSNAME };
@@ -737,24 +737,24 @@ void mainboard8_device::device_start()
{
logically_addressed_device *ad = new logically_addressed_device(kind, (device_t*)dev, entry[i]);
m_logcomp.append(*ad);
- if (TRACE_CONFIG) LOG("mainboard_998: Device %s mounted into logical address space.\n", entry[i].name);
+ if (TRACE_CONFIG) logerror("%s: Device %s mounted into logical address space.\n", tag(), entry[i].name);
}
else
{
physically_addressed_device *ad = new physically_addressed_device(kind, (device_t*)dev, entry[i]);
m_physcomp.append(*ad);
- if (TRACE_CONFIG) LOG("mainboard_998: Device %s mounted into physical address space.\n", entry[i].name);
+ if (TRACE_CONFIG) logerror("%s: Device %s mounted into physical address space.\n", tag(), entry[i].name);
}
}
else
{
- if (TRACE_CONFIG) LOG("mainboard_998: Device %s not found.\n", entry[i].name);
+ if (TRACE_CONFIG) logerror("%s: Device %s not found.\n", tag(), entry[i].name);
}
}
}
}
- if (TRACE_CONFIG) LOG("Mapper logical device count = %d\n", m_logcomp.count());
- if (TRACE_CONFIG) LOG("Mapper physical device count = %d\n", m_physcomp.count());
+ if (TRACE_CONFIG) logerror("%s: Mapper logical device count = %d\n", tag(), m_logcomp.count());
+ if (TRACE_CONFIG) logerror("%s: Mapper physical device count = %d\n", tag(), m_physcomp.count());
m_dsr_selected = false;
m_CRUS = true;
@@ -861,7 +861,6 @@ enum
ti998_oso_device::ti998_oso_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, OSO, "OSO Hexbus interface", tag, owner, clock, "ti998_oso", __FILE__)
{
- if (TRACE_OSO) LOG("ti998/oso: Creating OSO\n");
}
READ8_MEMBER( ti998_oso_device::read )
@@ -872,23 +871,23 @@ READ8_MEMBER( ti998_oso_device::read )
{
case 0:
// read 5FF8: read data register
- if (TRACE_OSO) LOG("ti998/oso: Read data register = %02x\n", value);
+ if (TRACE_OSO) logerror("%s: Read data register = %02x\n", tag(), value);
value = m_data;
break;
case 1:
// read 5FFA: read status register
value = m_status;
- if (TRACE_OSO) LOG("ti998/oso: Read status %02x\n", value);
+ if (TRACE_OSO) logerror("%s: Read status %02x\n", tag(), value);
break;
case 2:
// read 5FFC: read control register
value = m_control;
- if (TRACE_OSO) LOG("ti998/oso: Read control register = %02x\n", value);
+ if (TRACE_OSO) logerror("%s: Read control register = %02x\n", tag(), value);
break;
case 3:
// read 5FFE: read transmit register
value = m_xmit;
- if (TRACE_OSO) LOG("ti998/oso: Read transmit register = %02x\n", value);
+ if (TRACE_OSO) logerror("%s: Read transmit register = %02x\n", tag(), value);
break;
}
return value;
@@ -901,7 +900,7 @@ WRITE8_MEMBER( ti998_oso_device::write )
{
case 0:
// write 5FF8: write transmit register
- if (TRACE_OSO) LOG("ti998/oso: Write transmit register %02x\n", data);
+ if (TRACE_OSO) logerror("%s: Write transmit register %02x\n", tag(), data);
m_xmit = data;
// We set the status register directly in order to prevent lock-ups
// until we have a complete Hexbus implementation
@@ -909,12 +908,12 @@ WRITE8_MEMBER( ti998_oso_device::write )
break;
case 1:
// write 5FFA: write control register
- if (TRACE_OSO) LOG("ti998/oso: Write control register %02x\n", data);
+ if (TRACE_OSO) logerror("%s: Write control register %02x\n", tag(), data);
m_control = data;
break;
default:
// write 5FFC, 5FFE: undefined
- if (TRACE_OSO) LOG("ti998/oso: Invalid write on %04x: %02x\n", (offset<<1) | 0x5ff0, data);
+ if (TRACE_OSO) logerror("%s: Invalid write on %04x: %02x\n", tag(), (offset<<1) | 0x5ff0, data);
break;
}
}
@@ -925,3 +924,153 @@ void ti998_oso_device::device_start()
}
const device_type OSO = &device_creator<ti998_oso_device>;
+
+
+// ========================================================================
+
+/****************************************************************************
+
+ TI-99/8 Speech synthesizer subsystem
+
+ The TI-99/8 contains a speech synthesizer inside the console, so we cannot
+ reuse the spchsyn implementation of the P-Box speech synthesizer.
+ Accordingly, this is not a ti_expansion_card_device.
+
+ For comments on real timing see ti99/spchsyn.c
+
+ Note that before the REAL_TIMING can be used we must first establish
+ the set_address logic in 998board.
+
+*****************************************************************************/
+
+#define TMS5220_ADDRESS_MASK 0x3FFFFUL /* 18-bit mask for tms5220 address */
+#define SPEECHSYN_TAG "speechsyn"
+#define REAL_TIMING 0
+
+ti998_spsyn_device::ti998_spsyn_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+: bus8z_device(mconfig, SPEECH8, "TI-99/8 Onboard Speech synthesizer", tag, owner, clock, "ti998_speech", __FILE__),
+ m_ready(*this)
+{
+}
+
+/*
+ Memory read
+*/
+#if REAL_TIMING
+// ====== This is the version with real timing =======
+READ8Z_MEMBER( ti998_spsyn_device::readz )
+{
+ m_vsp->wsq_w(TRUE);
+ m_vsp->rsq_w(FALSE);
+ *value = m_vsp->read(offset) & 0xff;
+ if (TRACE_SPEECH) logerror("%s: read value = %02x\n", tag(), *value);
+}
+
+/*
+ Memory write
+*/
+WRITE8_MEMBER( ti998_spsyn_device::write )
+{
+ m_vsp->rsq_w(m_vsp, TRUE);
+ m_vsp->wsq_w(m_vsp, FALSE);
+ if (TRACE_SPEECH) logerror("%s: write value = %02x\n", tag(), data);
+ m_vsp->write(offset, data);
+}
+
+#else
+// ====== This is the version without real timing =======
+
+READ8Z_MEMBER( ti998_spsyn_device::readz )
+{
+ machine().device("maincpu")->execute().adjust_icount(-(18+3)); /* this is just a minimum, it can be more */
+ *value = m_vsp->status_r(space, offset, 0xff) & 0xff;
+ if (TRACE_SPEECH) logerror("%s: read value = %02x\n", tag(), *value);
+}
+
+/*
+ Memory write
+*/
+WRITE8_MEMBER( ti998_spsyn_device::write )
+{
+ machine().device("maincpu")->execute().adjust_icount(-(54+3)); /* this is just an approx. minimum, it can be much more */
+
+ /* RN: the stupid design of the tms5220 core means that ready is cleared */
+ /* when there are 15 bytes in FIFO. It should be 16. Of course, if */
+ /* it were the case, we would need to store the value on the bus, */
+ /* which would be more complex. */
+ if (!m_vsp->readyq_r())
+ {
+ attotime time_to_ready = attotime::from_double(m_vsp->time_to_ready());
+ int cycles_to_ready = machine().device<cpu_device>("maincpu")->attotime_to_cycles(time_to_ready);
+ if (TRACE_SPEECH && TRACE_DETAIL) logerror("%s: time to ready: %f -> %d\n", tag(), time_to_ready.as_double(), (int) cycles_to_ready);
+
+ machine().device("maincpu")->execute().adjust_icount(-cycles_to_ready);
+ machine().scheduler().timer_set(attotime::zero, FUNC_NULL);
+ }
+ if (TRACE_SPEECH) logerror("%s: write value = %02x\n", tag(), data);
+ m_vsp->data_w(space, offset, data);
+}
+#endif
+
+/**************************************************************************/
+
+WRITE_LINE_MEMBER( ti998_spsyn_device::speech8_ready )
+{
+ // The TMS5200 implementation uses TRUE/FALSE, not ASSERT/CLEAR semantics
+ m_ready((state==0)? ASSERT_LINE : CLEAR_LINE);
+ if (TRACE_SPEECH) logerror("%s: READY = %d\n", tag(), (state==0));
+
+#if REAL_TIMING
+ // Need to do that here (see explanations in spchsyn.c)
+ if (state==0)
+ {
+ m_vsp->rsq_w(TRUE);
+ m_vsp->wsq_w(TRUE);
+ }
+#endif
+}
+
+void ti998_spsyn_device::device_start()
+{
+ m_ready.resolve_safe();
+ m_vsp = subdevice<tms5220_device>(SPEECHSYN_TAG);
+ speechrom_device* mem = subdevice<speechrom_device>("vsm");
+ mem->set_reverse_bit_order(true);
+}
+
+void ti998_spsyn_device::device_reset()
+{
+ if (TRACE_SPEECH) logerror("%s: reset\n", tag());
+}
+
+// Unlike the TI-99/4A, the 99/8 uses the CD2501ECD
+// The CD2501ECD is a tms5200/cd2501e with the rate control from the tms5220c added in.
+// (it's probably actually a tms5220c die with the cd2501e/tms5200 lpc rom masked onto it)
+MACHINE_CONFIG_FRAGMENT( ti998_speech )
+ MCFG_DEVICE_ADD("vsm", SPEECHROM, 0)
+
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD(SPEECHSYN_TAG, CD2501ECD, 640000L)
+ MCFG_TMS52XX_READYQ_HANDLER(WRITELINE(ti998_spsyn_device, speech8_ready))
+ MCFG_TMS52XX_SPEECHROM("vsm")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+/* Verified on a real machine: TI-99/8 uses the same speech rom contents
+ as the TI speech synthesizer. */
+ROM_START( ti998_speech )
+ ROM_REGION(0x8000, "vsm", 0)
+ ROM_LOAD("cd2325a.vsm", 0x0000, 0x4000, CRC(1f58b571) SHA1(0ef4f178716b575a1c0c970c56af8a8d97561ffe))
+ ROM_LOAD("cd2326a.vsm", 0x4000, 0x4000, CRC(65d00401) SHA1(a367242c2c96cebf0e2bf21862f3f6734b2b3020))
+ROM_END
+
+machine_config_constructor ti998_spsyn_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( ti998_speech );
+}
+
+const rom_entry *ti998_spsyn_device::device_rom_region() const
+{
+ return ROM_NAME( ti998_speech );
+}
+const device_type SPEECH8 = &device_creator<ti998_spsyn_device>;
diff --git a/src/mess/machine/ti99/mapper8.h b/src/devices/bus/ti99x/998board.h
index 4683a0d150e..87332491b97 100644
--- a/src/mess/machine/ti99/mapper8.h
+++ b/src/devices/bus/ti99x/998board.h
@@ -2,13 +2,14 @@
// copyright-holders:Michael Zapf
/****************************************************************************
- TI-99/8 Address decoder and mapper
+ TI-99/8 main board logic
- See mapper8.c for documentation
+ This component implements the address decoder and mapper logic from the
+ TI-99/8 console.
- Michael Zapf
+ See 998board.c for documentation
- February 2012: Rewritten as class
+ Michael Zapf
*****************************************************************************/
@@ -17,11 +18,14 @@
#include "emu.h"
#include "ti99defs.h"
+#include "sound/tms5220.h"
extern const device_type MAINBOARD8;
extern const device_type OSO;
+extern const device_type SPEECH8;
#define OSO_TAG "oso"
+#define SPEECHSYN_TAG "speechsyn"
#define NATIVE 0
#define TI99EM 1
@@ -132,6 +136,53 @@ private:
UINT8 m_xmit;
};
+/*
+ Speech support
+*/
+#define MCFG_SPEECH8_READY_CALLBACK(_write) \
+ devcb = &ti998_spsyn_device::set_ready_wr_callback(*device, DEVCB_##_write);
+
+class ti998_spsyn_device : public bus8z_device
+{
+public:
+ ti998_spsyn_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ template<class _Object> static devcb_base &set_ready_wr_callback(device_t &device, _Object object) { return downcast<ti998_spsyn_device &>(device).m_ready.set_callback(object); }
+
+ DECLARE_READ8Z_MEMBER(readz);
+ DECLARE_WRITE8_MEMBER(write);
+
+ DECLARE_READ8Z_MEMBER(crureadz) { };
+ DECLARE_WRITE8_MEMBER(cruwrite) { };
+
+ DECLARE_WRITE_LINE_MEMBER( speech8_ready );
+
+ DECLARE_READ8_MEMBER( spchrom_read );
+ DECLARE_WRITE8_MEMBER( spchrom_load_address );
+ DECLARE_WRITE8_MEMBER( spchrom_read_and_branch );
+
+protected:
+ virtual void device_start();
+ virtual void device_reset(void);
+ virtual const rom_entry *device_rom_region() const;
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+private:
+ tms5220_device *m_vsp;
+// UINT8 *m_speechrom; // pointer to speech ROM data
+// int m_load_pointer; // which 4-bit nibble will be affected by load address
+// int m_rombits_count; // current bit position in ROM
+// UINT32 m_sprom_address; // 18 bit pointer in ROM
+// UINT32 m_sprom_length; // length of data pointed by speechrom_data, from 0 to 2^18
+
+ // Ready line to the CPU
+ devcb_write_line m_ready;
+};
+
+#define MCFG_TISPEECH8_ADD(_tag, _conf) \
+ MCFG_DEVICE_ADD(_tag, TI99_SPEECH8, 0) \
+ MCFG_DEVICE_CONFIG(_conf)
+
/*
Main class
diff --git a/src/mess/machine/ti99/datamux.c b/src/devices/bus/ti99x/datamux.c
index a18b448f354..c9db97f1788 100644
--- a/src/mess/machine/ti99/datamux.c
+++ b/src/devices/bus/ti99x/datamux.c
@@ -470,7 +470,7 @@ void ti99_datamux_device::device_reset(void)
INPUT_PORTS_START( datamux )
PORT_START( "RAM" ) /* config */
- PORT_CONFNAME( 0x01, 0x01, "Console 32 KiB RAM upgrade (16 bit)" )
+ PORT_CONFNAME( 0x01, 0x00, "Console 32 KiB RAM upgrade (16 bit)" )
PORT_CONFSETTING( 0x00, DEF_STR( Off ) )
PORT_CONFSETTING( 0x01, DEF_STR( On ) )
diff --git a/src/mess/machine/ti99/datamux.h b/src/devices/bus/ti99x/datamux.h
index 7bc52972602..7bc52972602 100644
--- a/src/mess/machine/ti99/datamux.h
+++ b/src/devices/bus/ti99x/datamux.h
diff --git a/src/mess/machine/ti99/genboard.c b/src/devices/bus/ti99x/genboard.c
index 76c5695f178..0c021bd0234 100644
--- a/src/mess/machine/ti99/genboard.c
+++ b/src/devices/bus/ti99x/genboard.c
@@ -168,17 +168,42 @@
Waitstate behavior (Nov 2013)
Almost perfect. Only video read access from code in DRAM is too fast by one WS
+ ==========================
+ PFM expansion
+ ==========================
+ The "Programmable Flash Memory expansion" is a replacement for the boot
+ EPROM.
+
+ PFM: Original version, 128 KiB
+ PFM+: Expansion of the original version, piggybacked, adds another 128KiB
+ PFM512: Using an AT29C040 (not A), 512 KiB
+
+ The PFM is visible as four banks in memory pages 0xF0 - 0xFF.
+
+ Bank switching is done by four 9901 pins:
+
+ 0028: LSB of bank number
+ 003A: MSB of bank number
+
+ Bank 0 is the boot code, while banks 1-3 can be used as flash drives
Michael Zapf, October 2011
February 2012: rewritten as class, restructured
+ Aug 2015: PFM added
***************************************************************************/
#include "genboard.h"
-#define VERBOSE 1
-#define LOG logerror
+#define TRACE_READ 0
+#define TRACE_WRITE 0
+#define TRACE_DETAIL 0
+#define TRACE_KEYBOARD 0
+#define TRACE_CLOCK 0
+#define TRACE_LINES 0
+#define TRACE_SETTING 1
+#define TRACE_PFM 0
geneve_mapper_device::geneve_mapper_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, GENEVE_MAPPER, "Geneve Gate Array", tag, owner, clock, "geneve_mapper", __FILE__),
@@ -187,23 +212,30 @@ geneve_mapper_device::geneve_mapper_device(const machine_config &mconfig, const
m_eprom = NULL;
}
-INPUT_CHANGED_MEMBER( geneve_mapper_device::gm_changed )
+INPUT_CHANGED_MEMBER( geneve_mapper_device::settings_changed )
{
int number = (int)((UINT64)param&0x03);
int value = newval;
- if (number==1)
+ switch (number)
{
+ case 1:
// Turbo switch. May be changed at any time.
- if (VERBOSE>0) LOG("genboard: Setting turbo flag to %d\n", value);
+ if (TRACE_SETTING) logerror("%s: Setting turbo flag to %d\n", tag(), value);
m_turbo = (value!=0);
- }
- else
- {
+ break;
+ case 2:
// TIMode switch. Causes reset when changed.
- if (VERBOSE>0) LOG("genboard: Setting timode flag to %d\n", value);
+ if (TRACE_SETTING) logerror("%s: Setting timode flag to %d\n", tag(), value);
m_timode = (value!=0);
machine().schedule_hard_reset();
+ break;
+ case 3:
+ // Used when switching the boot ROMs during runtime, especially the PFM
+ set_boot_rom(value);
+ break;
+ default:
+ logerror("%s: Unknown setting %d ignored\n", tag(), number);
}
}
@@ -294,7 +326,7 @@ void geneve_mapper_device::set_wait(int min)
m_waitcount = min + 1;
if (m_waitcount > 1)
{
- if (VERBOSE>7) LOG("genboard: Pulling down READY line for %d cycles\n", min);
+ if (TRACE_LINES) logerror("%s: Pulling down READY line for %d cycles\n", tag(), min);
m_ready(CLEAR_LINE);
m_ready_asserted = false;
}
@@ -306,6 +338,71 @@ void geneve_mapper_device::set_ext_wait(int min)
m_ext_waitcount = min;
}
+void geneve_mapper_device::set_boot_rom(int selection)
+{
+ switch (selection)
+ {
+ case GENEVE_098:
+ logerror("%s: Using 0.98 boot eprom\n", tag());
+ m_eprom = machine().root_device().memregion("maincpu")->base() + 0x4000;
+ m_pfm_mode = 0;
+ break;
+ case GENEVE_100:
+ logerror("%s: Using 1.00 boot eprom\n", tag());
+ m_eprom = machine().root_device().memregion("maincpu")->base();
+ m_pfm_mode = 0;
+ break;
+ case GENEVE_PFM512:
+ logerror("%s: Using PFM512 (AT29C040)\n", tag());
+ m_pfm_mode = 1;
+ break;
+ case GENEVE_PFM512A:
+ logerror("%s: Using PFM512A (AT29C040A)\n", tag());
+ m_pfm_mode = 2;
+ break;
+ default:
+ logerror("%s: Unknown boot ROM selection\n", tag());
+ }
+}
+
+void geneve_mapper_device::set_geneve_mode(bool geneve)
+{
+ if (TRACE_SETTING) logerror("%s: Setting Geneve mode = %d\n", tag(), geneve);
+ m_geneve_mode = geneve;
+}
+
+void geneve_mapper_device::set_direct_mode(bool direct)
+{
+ if (TRACE_SETTING) logerror("%s: Setting direct mode = %d\n", tag(), direct);
+ m_direct_mode = direct;
+}
+
+void geneve_mapper_device::set_cartridge_size(int size)
+{
+ if (TRACE_SETTING) logerror("%s: Setting cartridge size to %d\n", tag(), size);
+ m_cartridge_size = size;
+}
+
+void geneve_mapper_device::set_cartridge_writable(int base, bool write)
+{
+ if (TRACE_SETTING) logerror("%s: Cartridge %04x space writable = %d\n", tag(), base, write);
+ if (base==0x6000) m_cartridge6_writable = write;
+ else m_cartridge7_writable = write;
+}
+
+void geneve_mapper_device::set_video_waitstates(bool wait)
+{
+ if (TRACE_SETTING) logerror("%s: Setting video waitstates = %d\n", tag(), wait);
+ m_video_waitstates = wait;
+}
+
+void geneve_mapper_device::set_extra_waitstates(bool wait)
+{
+ if (TRACE_SETTING) logerror("%s: Setting extra waitstates = %d\n", tag(), wait);
+ m_extra_waitstates = wait;
+}
+
+
/************************************************************************
Called by the address map
************************************************************************/
@@ -347,7 +444,6 @@ enum
READ8_MEMBER( geneve_mapper_device::readm )
{
UINT8 value = 0;
- assert (m_eprom!=NULL);
decdata *dec;
decdata debug;
@@ -371,7 +467,7 @@ READ8_MEMBER( geneve_mapper_device::readm )
{
case MLGVIDEO:
m_video->readz(space, dec->offset, &value, 0xff);
- if (VERBOSE>7) LOG("genboard: Read video %04x -> %02x\n", dec->offset, value);
+ if (TRACE_READ) logerror("%s: Read video %04x -> %02x\n", tag(), dec->offset, value);
// Video wait states are created *after* the access
// Accordingly, they have no effect when execution is in onchip RAM
if (m_video_waitstates) set_ext_wait(15);
@@ -380,13 +476,13 @@ READ8_MEMBER( geneve_mapper_device::readm )
case MLGMAPPER:
// mapper
value = m_map[dec->offset];
- if (VERBOSE>7) LOG("genboard: read mapper %04x -> %02x\n", dec->offset, value);
+ if (TRACE_READ) logerror("%s: read mapper %04x -> %02x\n", tag(), dec->offset, value);
break;
case MLGKEY:
// key
if (!space.debugger_access()) value = m_keyboard->get_recent_key();
- if (VERBOSE>7) LOG("genboard: Read keyboard -> %02x\n", value);
+ if (TRACE_READ) logerror("%s: Read keyboard -> %02x\n", tag(), value);
break;
case MLGCLOCK:
@@ -394,19 +490,19 @@ READ8_MEMBER( geneve_mapper_device::readm )
// tests on the real machine showed that
// upper nibble is 0xf (probably because of the location at 0xf130?)
value = m_clock->read(space, dec->offset) | 0xf0;
- if (VERBOSE>7) LOG("genboard: Read clock %04x -> %02x\n", dec->offset, value);
+ if (TRACE_READ) logerror("%s: Read clock %04x -> %02x\n", tag(), dec->offset, value);
break;
case MLTMAPPER:
// mapper
value = m_map[dec->offset];
- if (VERBOSE>7) LOG("genboard: Read mapper %04x -> %02x\n", dec->offset, value);
+ if (TRACE_READ) logerror("%s: Read mapper %04x -> %02x\n", tag(), dec->offset, value);
break;
case MLTKEY:
// key
if (!space.debugger_access()) value = m_keyboard->get_recent_key();
- if (VERBOSE>7) LOG("genboard: Read keyboard -> %02x\n", value);
+ if (TRACE_READ) logerror("%s: Read keyboard -> %02x\n", tag(), value);
break;
case MLTCLOCK:
@@ -420,7 +516,7 @@ READ8_MEMBER( geneve_mapper_device::readm )
// value floating around.
value = m_clock->read(space, dec->offset);
value |= (dec->offset==0x000f)? 0x20 : 0x10;
- if (VERBOSE>7) LOG("genboard: Read clock %04x -> %02x\n", dec->offset, value);
+ if (TRACE_READ) logerror("%s: Read clock %04x -> %02x\n", tag(), dec->offset, value);
break;
case MLTVIDEO:
@@ -428,7 +524,7 @@ READ8_MEMBER( geneve_mapper_device::readm )
// ++++ ++-- ---- ---+
// 1000 1000 0000 00x0
m_video->readz(space, dec->offset, &value, 0xff);
- if (VERBOSE>7) LOG("genboard: Read video %04x -> %02x\n", dec->offset, value);
+ if (TRACE_READ) logerror("%s: Read video %04x -> %02x\n", tag(), dec->offset, value);
// See above
if (m_video_waitstates) set_ext_wait(15);
break;
@@ -439,7 +535,7 @@ READ8_MEMBER( geneve_mapper_device::readm )
// 1001 0000 0000 0000
// We need to add the address prefix bits
m_peribox->readz(space, dec->offset, &value, 0xff);
- if (VERBOSE>7) LOG("genboard: Read speech -> %02x\n", value);
+ if (TRACE_READ) logerror("%s: Read speech -> %02x\n", tag(), value);
break;
case MLTGROM:
@@ -447,7 +543,7 @@ READ8_MEMBER( geneve_mapper_device::readm )
// ++++ ++-- ---- ---+
// 1001 1000 0000 00x0
if (!space.debugger_access()) value = read_grom(space, dec->offset, 0xff);
- if (VERBOSE>7) LOG("genboard: Read GROM %04x -> %02x\n", dec->offset, value);
+ if (TRACE_READ) logerror("%s: Read GROM %04x -> %02x\n", tag(), dec->offset, value);
break;
case MLGSOUND:
@@ -460,20 +556,25 @@ READ8_MEMBER( geneve_mapper_device::readm )
// DRAM.
value = m_dram[dec->physaddr];
// LOG("dram read physaddr = %06x logaddr = %04x value = %02x\n", dec->physaddr, dec->offset, value);
- if (VERBOSE>7) LOG("genboard: Read DRAM %04x (%06x) -> %02x\n", dec->offset, dec->physaddr, value);
+ if (TRACE_READ) logerror("%s: Read DRAM %04x (%06x) -> %02x\n", tag(), dec->offset, dec->physaddr, value);
break;
case MPGEXP:
// On-board memory expansion for standard Geneve (never used)
- if (VERBOSE>7) LOG("genboard: Read unmapped area %06x\n", dec->physaddr);
+ if (TRACE_READ) logerror("%s: Read unmapped area %06x\n", tag(), dec->physaddr);
value = 0;
break;
case MPGEPROM:
// 1 111. ..xx xxxx xxxx xxxx on-board eprom (16K)
// mirrored for f0, f2, f4, ...; f1, f3, f5, ...
- value = m_eprom[dec->physaddr];
- if (VERBOSE>7) LOG("genboard: Read EPROM %04x (%06x) -> %02x\n", dec->offset, dec->physaddr, value);
+ if (m_pfm_mode == 0)
+ {
+ value = m_eprom[dec->physaddr & 0x003fff];
+ if (TRACE_READ) logerror("%s: Read EPROM %04x (%06x) -> %02x\n", tag(), dec->offset, dec->physaddr, value);
+ }
+ else value = read_from_pfm(space, dec->physaddr, 0xff);
+
break;
case MPGSRAM:
@@ -484,7 +585,7 @@ READ8_MEMBER( geneve_mapper_device::readm )
else value = 0;
// Return in any case
// LOG("sram read physaddr = %06x logaddr = %04x value = %02x\n", dec->physaddr, dec->offset, value);
- if (VERBOSE>7) LOG("genboard: Read SRAM %04x (%06x) -> %02x\n", dec->offset, dec->physaddr, value);
+ if (TRACE_READ) logerror("%s: Read SRAM %04x (%06x) -> %02x\n", tag(), dec->offset, dec->physaddr, value);
break;
case MPGBOX:
@@ -493,7 +594,7 @@ READ8_MEMBER( geneve_mapper_device::readm )
// 0x000000-0x1fffff for the GenMod.(AME,AMD,AMC,AMB,AMA,A0 ...,A15)
m_peribox->readz(space, dec->physaddr, &value, 0xff);
- if (VERBOSE>7) LOG("genboard: Read P-Box %04x (%06x) -> %02x\n", dec->offset, dec->physaddr, value);
+ if (TRACE_READ) logerror("%s: Read P-Box %04x (%06x) -> %02x\n", tag(), dec->offset, dec->physaddr, value);
break;
case MPGMDRAM:
@@ -504,7 +605,12 @@ READ8_MEMBER( geneve_mapper_device::readm )
case MPGMEPROM:
// 1 111. ..xx xxxx xxxx xxxx on-board eprom (16K)
// mirrored for f0, f2, f4, ...; f1, f3, f5, ...
- value = m_eprom[dec->physaddr];
+ if (m_pfm_mode == 0)
+ {
+ value = m_eprom[dec->physaddr & 0x003fff];
+ if (TRACE_READ) logerror("%s: Read EPROM %04x (%06x) -> %02x\n", tag(), dec->offset, dec->physaddr, value);
+ }
+ else value = read_from_pfm(space, dec->physaddr, 0xff);
break;
case MPGMBOX:
@@ -541,7 +647,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem )
// ++++ ++++ ++++ ---+
// 1111 0001 0000 .cc0
m_video->write(space, dec->offset, data, 0xff);
- if (VERBOSE>7) LOG("genboard: Write video %04x <- %02x\n", offset, data);
+ if (TRACE_WRITE) logerror("%s: Write video %04x <- %02x\n", tag(), offset, data);
// See above
if (m_video_waitstates) set_ext_wait(15);
break;
@@ -549,33 +655,33 @@ WRITE8_MEMBER( geneve_mapper_device::writem )
case MLGMAPPER:
// mapper
m_map[dec->offset] = data;
- if (VERBOSE>7) LOG("genboard: Write mapper %04x <- %02x\n", offset, data);
+ if (TRACE_WRITE) logerror("%s: Write mapper %04x <- %02x\n", tag(), offset, data);
break;
case MLGCLOCK:
// clock
// ++++ ++++ ++++ ----
m_clock->write(space, dec->offset, data);
- if (VERBOSE>7) LOG("genboard: Write clock %04x <- %02x\n", offset, data);
+ if (TRACE_WRITE) logerror("%s: Write clock %04x <- %02x\n", tag(), offset, data);
break;
case MLGSOUND:
// sound
// ++++ ++++ ++++ ---+
m_sound->write(space, 0, data, 0xff);
- if (VERBOSE>7) LOG("genboard: Write sound <- %02x\n", data);
+ if (TRACE_WRITE) logerror("%s: Write sound <- %02x\n", tag(), data);
break;
case MLTMAPPER:
// mapper
m_map[dec->offset] = data;
- if (VERBOSE>7) LOG("genboard: Write mapper %04x <- %02x\n", offset, data);
+ if (TRACE_WRITE) logerror("%s: Write mapper %04x <- %02x\n", tag(), offset, data);
break;
case MLTCLOCK:
// clock
m_clock->write(space, dec->offset, data);
- if (VERBOSE>7) LOG("genboard: Write clock %04x <- %02x\n", offset, data);
+ if (TRACE_WRITE) logerror("%s: Write clock %04x <- %02x\n", tag(), offset, data);
break;
case MLTVIDEO:
@@ -584,7 +690,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem )
// 1000 1100 0000 00c0
// Initialize waitstate timer
m_video->write(space, dec->offset, data, 0xff);
- if (VERBOSE>7) LOG("genboard: Write video %04x <- %02x\n", offset, data);
+ if (TRACE_WRITE) logerror("%s: Write video %04x <- %02x\n", tag(), offset, data);
// See above
if (m_video_waitstates) set_ext_wait(15);
break;
@@ -595,7 +701,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem )
// 1001 0100 0000 0000
// We need to add the address prefix bits
m_peribox->write(space, dec->offset, data, 0xff);
- if (VERBOSE>7) LOG("genboard: Write speech <- %02x\n", data);
+ if (TRACE_WRITE) logerror("%s: Write speech <- %02x\n", tag(), data);
break;
case MLTGROM:
@@ -603,7 +709,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem )
// ++++ ++-- ---- ---+
// 1001 1100 0000 00c0
write_grom(space, dec->offset, data, 0xff);
- if (VERBOSE>7) LOG("genboard: Write GROM %04x <- %02x\n", offset, data);
+ if (TRACE_WRITE) logerror("%s: Write GROM %04x <- %02x\n", tag(), offset, data);
break;
case MLTSOUND:
@@ -611,7 +717,7 @@ WRITE8_MEMBER( geneve_mapper_device::writem )
// ++++ ++-- ---- ---+
// 1000 0100 0000 0000
m_sound->write(space, 0, data, 0xff);
- if (VERBOSE>7) LOG("genboard: Write sound <- %02x\n", data);
+ if (TRACE_WRITE) logerror("%s: Write sound <- %02x\n", tag(), data);
break;
case MLTKEY:
@@ -621,19 +727,21 @@ WRITE8_MEMBER( geneve_mapper_device::writem )
case MPGDRAM:
// DRAM write. One wait state. (only for normal Geneve)
m_dram[dec->physaddr] = data;
- if (VERBOSE>7) LOG("genboard: Write DRAM %04x (%06x) <- %02x\n", offset, dec->physaddr, data);
+ if (TRACE_WRITE) logerror("%s: Write DRAM %04x (%06x) <- %02x\n", tag(), offset, dec->physaddr, data);
break;
case MPGEXP:
// On-board memory expansion for standard Geneve (never used)
- if (VERBOSE>7) LOG("genboard: Write unmapped area %06x\n", dec->physaddr);
+ if (TRACE_WRITE) logerror("%s: Write unmapped area %06x\n", tag(), dec->physaddr);
break;
case MPGEPROM:
// 1 111. ..xx xxxx xxxx xxxx on-board eprom (16K)
// mirrored for f0, f2, f4, ...; f1, f3, f5, ...
- // Ignore EPROM write
- if (VERBOSE>7) LOG("genboard: Write EPROM %04x (%06x) <- %02x, ignored\n", offset, dec->physaddr, data);
+ // Ignore EPROM write (unless PFM)
+ if (m_pfm_mode != 0) write_to_pfm(space, dec->physaddr, data, 0xff);
+ else
+ logerror("%s: Write EPROM %04x (%06x) <- %02x, ignored\n", tag(), offset, dec->physaddr, data);
break;
case MPGSRAM:
@@ -641,12 +749,12 @@ WRITE8_MEMBER( geneve_mapper_device::writem )
{
m_sram[dec->physaddr & ~m_sram_mask] = data;
}
- if (VERBOSE>7) LOG("genboard: Write SRAM %04x (%06x) <- %02x\n", offset, dec->physaddr, data);
+ if (TRACE_WRITE) logerror("%s: Write SRAM %04x (%06x) <- %02x\n", tag(), offset, dec->physaddr, data);
break;
case MPGBOX:
dec->physaddr = (dec->physaddr & 0x0007ffff); // 19 bit address
- if (VERBOSE>7) LOG("genboard: Write P-Box %04x (%06x) <- %02x\n", offset, dec->physaddr, data);
+ if (TRACE_WRITE) logerror("%s: Write P-Box %04x (%06x) <- %02x\n", tag(), offset, dec->physaddr, data);
m_peribox->write(space, dec->physaddr, data, 0xff);
break;
@@ -659,6 +767,9 @@ WRITE8_MEMBER( geneve_mapper_device::writem )
// 1 111. ..xx xxxx xxxx xxxx on-board eprom (16K)
// mirrored for f0, f2, f4, ...; f1, f3, f5, ...
// Ignore EPROM write
+ if (m_pfm_mode != 0) write_to_pfm(space, dec->physaddr, data, 0xff);
+ else
+ logerror("%s: Write EPROM %04x (%06x) <- %02x, ignored\n", tag(), offset, dec->physaddr, data);
break;
case MPGMBOX:
@@ -784,7 +895,7 @@ void geneve_mapper_device::decode(address_space& space, offs_t offset, bool read
// Determine physical address
if (m_direct_mode)
{
- dec->physaddr = 0x1e0000; // points to boot eprom
+ dec->physaddr = 0x1f0000; // points to boot eprom (page F8)
}
else
{
@@ -822,9 +933,8 @@ void geneve_mapper_device::decode(address_space& space, offs_t offset, bool read
if ((dec->physaddr & 0x1e0000)==0x1e0000)
{
// 1 111. ..xx xxxx xxxx xxxx on-board eprom (16K)
- // mirrored for f0, f2, f4, ...; f1, f3, f5, ...
+ // mirrored for f0, f2, f4, ...; f1, f3, f5, ... unless using PFM
dec->function = MPGEPROM;
- dec->physaddr = dec->physaddr & 0x003fff;
set_wait(0);
return;
}
@@ -862,9 +972,8 @@ void geneve_mapper_device::decode(address_space& space, offs_t offset, bool read
if ((dec->physaddr & 0x1e0000)==0x1e0000)
{
// 1 111. ..xx xxxx xxxx xxxx on-board eprom (16K)
- // mirrored for f0, f2, f4, ...; f1, f3, f5, ...
+ // mirrored for f0, f2, f4, ...; f1, f3, f5, ... unless using PFM
dec->function = MPGMEPROM;
- dec->physaddr = dec->physaddr & 0x003fff;
set_wait(0);
return;
}
@@ -983,7 +1092,7 @@ void geneve_mapper_device::decode(address_space& space, offs_t offset, bool read
if (m_cartridge_size==0x4000)
{
m_cartridge_secondpage = ((dec->offset & 0x0002)!=0);
- if (VERBOSE>7) LOG("genboard: Set cartridge page %02x\n", m_cartridge_secondpage);
+ if (TRACE_WRITE) logerror("%s: Set cartridge page %02x\n", tag(), m_cartridge_secondpage);
set_wait(1);
return;
}
@@ -993,7 +1102,7 @@ void geneve_mapper_device::decode(address_space& space, offs_t offset, bool read
if ((((dec->offset & 0x1000)==0x0000) && !m_cartridge6_writable)
|| (((dec->offset & 0x1000)==0x1000) && !m_cartridge7_writable))
{
- if (VERBOSE>0) LOG("genboard: Writing to protected cartridge space %04x ignored\n", dec->offset);
+ logerror("%s: Writing to protected cartridge space %04x ignored\n", tag(), dec->offset);
return;
}
else
@@ -1049,7 +1158,7 @@ void geneve_mapper_device::decode(address_space& space, offs_t offset, bool read
{
// GenMod mode
if ((dec->physaddr & 0x1e0000)==0x1e0000)
- { // EPROM, ignore
+ { // EPROM, ignore (unless PFM)
dec->function = MPGMEPROM;
set_wait(0);
return;
@@ -1073,13 +1182,61 @@ void geneve_mapper_device::decode(address_space& space, offs_t offset, bool read
}
/*
+ Read from PFM.
+*/
+READ8_MEMBER( geneve_mapper_device::read_from_pfm )
+{
+ UINT8 value = 0;
+ if (!m_pfm_output_enable) return 0;
+
+ int address = (offset & 0x01ffff) | (m_pfm_bank<<17);
+
+ switch (m_pfm_mode)
+ {
+ case 1:
+ value = m_pfm512->read(space, address, mem_mask);
+ break;
+ case 2:
+ value = m_pfm512a->read(space, address, mem_mask);
+ break;
+ default:
+ logerror("%s: Illegal mode for reading PFM: %d\n", tag(), m_pfm_mode);
+ return 0;
+ }
+
+ if (TRACE_PFM) logerror("%s: Reading from PFM at address %05x -> %02x\n", tag(), address, value);
+ return value;
+}
+
+WRITE8_MEMBER( geneve_mapper_device::write_to_pfm )
+{
+ // Nota bene: The PFM must be write protected on startup, or the RESET
+ // of the 9995 will attempt to write the return vector into the flash EEPROM
+ int address = (offset & 0x01ffff) | (m_pfm_bank<<17);
+ if (TRACE_PFM) logerror("%s: Writing to PFM at address %05x <- %02x\n", tag(), address, data);
+
+ switch (m_pfm_mode)
+ {
+ case 1:
+ m_pfm512->write(space, address, data, mem_mask);
+ break;
+ case 2:
+ m_pfm512a->write(space, address, data, mem_mask);
+ break;
+ default:
+ logerror("%s: Illegal mode for writing to PFM: %d\n", tag(), m_pfm_mode);
+ }
+}
+
+
+/*
Accept the address passed over the address bus and decode it appropriately.
This decoding will later be used in the READ/WRITE member functions. Also,
we initiate wait state creation here.
*/
SETOFFSET_MEMBER( geneve_mapper_device::setoffset )
{
- if (VERBOSE>7) LOG("genboard: setoffset = %04x\n", offset);
+ if (TRACE_DETAIL) logerror("%s: setoffset = %04x\n", tag(), offset);
m_debug_no_ws = false;
decode(space, offset, m_read_mode, &m_decoded);
}
@@ -1108,14 +1265,14 @@ WRITE_LINE_MEMBER( geneve_mapper_device::clock_in )
m_waitcount--;
if (m_waitcount == 0)
{
- if (VERBOSE>5) LOG("genboard: clock, READY asserted\n");
+ if (TRACE_CLOCK) logerror("%s: clock, READY asserted\n", tag());
m_ready(ASSERT_LINE);
m_ready_asserted = true;
}
- else
- {
- if (VERBOSE>5) LOG("genboard: clock\n");
- }
+ else
+ {
+ if (TRACE_CLOCK) logerror("%s: clock\n", tag());
+ }
}
else
{
@@ -1124,13 +1281,13 @@ WRITE_LINE_MEMBER( geneve_mapper_device::clock_in )
m_ext_waitcount--;
if (m_ext_waitcount == 0)
{
- if (VERBOSE>5) LOG("genboard: clock, READY asserted after video\n");
+ if (TRACE_CLOCK) logerror("%s: clock, READY asserted after video\n", tag());
m_ready(ASSERT_LINE);
m_ready_asserted = true;
}
else
{
- if (VERBOSE>5) LOG("genboard: vclock, ew=%d\n", m_ext_waitcount);
+ if (TRACE_CLOCK) logerror("%s: vclock, ew=%d\n", tag(), m_ext_waitcount);
}
}
}
@@ -1142,7 +1299,7 @@ WRITE_LINE_MEMBER( geneve_mapper_device::clock_in )
// Do we have video wait states? In that case, clear the line again
if ((m_waitcount == 0) && (m_ext_waitcount > 0) && m_ready_asserted)
{
- if (VERBOSE>5) LOG("genboard: clock, READY cleared for video\n");
+ if (TRACE_CLOCK) logerror("%s: clock, READY cleared for video\n", tag());
m_ready(CLEAR_LINE);
m_ready_asserted = false;
}
@@ -1155,14 +1312,39 @@ WRITE_LINE_MEMBER( geneve_mapper_device::clock_in )
WRITE_LINE_MEMBER( geneve_mapper_device::dbin_in )
{
m_read_mode = (state==ASSERT_LINE);
- if (VERBOSE>7) LOG("genboard: dbin = %02x\n", m_read_mode? 1:0);
+ if (TRACE_DETAIL) logerror("%s: dbin = %02x\n", tag(), m_read_mode? 1:0);
+}
+
+/*
+ PFM expansion: Setting the bank.
+*/
+WRITE_LINE_MEMBER( geneve_mapper_device::pfm_select_lsb )
+{
+ if (state==ASSERT_LINE) m_pfm_bank |= 1;
+ else m_pfm_bank &= 0xfe;
+ if (TRACE_PFM) logerror("%s: Setting bank (l) = %d\n", tag(), m_pfm_bank);
+}
+
+WRITE_LINE_MEMBER( geneve_mapper_device::pfm_select_msb )
+{
+ if (state==ASSERT_LINE) m_pfm_bank |= 2;
+ else m_pfm_bank &= 0xfd;
+ if (TRACE_PFM) logerror("%s: Setting bank (u) = %d\n", tag(), m_pfm_bank);
+}
+
+WRITE_LINE_MEMBER( geneve_mapper_device::pfm_output_enable )
+{
+ // Negative logic
+ m_pfm_output_enable = (state==CLEAR_LINE);
+ if (TRACE_PFM) logerror("%s: PFM output %s\n", tag(), m_pfm_output_enable? "enable" : "disable");
}
-/*** DEVICE LIFECYCLE FUNCTIONS ***/
+//====================================================================
+// Common device lifecycle
+//====================================================================
void geneve_mapper_device::device_start()
{
- if (VERBOSE>0) LOG("genboard: Starting Geneve mapper\n");
// Get pointers
m_peribox = machine().device<bus8z_device>(PERIBOX_TAG);
m_keyboard = machine().device<geneve_keyboard_device>(GKEYBOARD_TAG);
@@ -1170,6 +1352,10 @@ void geneve_mapper_device::device_start()
m_sound = machine().device<bus8z_device>(TISOUND_TAG);
m_clock = machine().device<mm58274c_device>(GCLOCK_TAG);
+ // PFM expansion
+ m_pfm512 = machine().device<at29c040_device>(PFM512_TAG);
+ m_pfm512a = machine().device<at29c040a_device>(PFM512A_TAG);
+
m_ready.resolve();
m_sram = machine().root_device().memregion(SRAM_TAG)->base();
@@ -1182,8 +1368,6 @@ void geneve_mapper_device::device_start()
void geneve_mapper_device::device_reset()
{
- if (VERBOSE>1) LOG("genboard: Resetting mapper\n");
-
m_extra_waitstates = false;
m_video_waitstates = true;
m_read_mode = false;
@@ -1198,33 +1382,25 @@ void geneve_mapper_device::device_reset()
m_cartridge6_writable = false;
m_cartridge7_writable = false;
m_grom_address = 0;
+ m_pfm_bank = 0;
+ m_pfm_output_enable = true;
// Clear map
for (int i=0; i < 8; i++) m_map[i] = 0;
m_genmod = false;
- if (machine().root_device().ioport("MODE")->read()==0)
- {
- switch (machine().root_device().ioport("BOOTROM")->read())
- {
- case GENEVE_098:
- if (VERBOSE>0) LOG("genboard: Using 0.98 boot eprom\n");
- m_eprom = machine().root_device().memregion("maincpu")->base() + 0x4000;
- break;
- case GENEVE_100:
- if (VERBOSE>0) LOG("genboard: Using 1.00 boot eprom\n");
- m_eprom = machine().root_device().memregion("maincpu")->base();
- break;
- }
- }
- else
+ // Check which boot EPROM we are using (or PFM)
+ set_boot_rom(machine().root_device().ioport("BOOTROM")->read());
+
+ // Check for GenMod. We assume that GenMod can be combined with PFM.
+ if (machine().root_device().ioport("MODE")->read()!=0)
{
- if (VERBOSE>0) LOG("genboard: Using GenMod modification\n");
+ logerror("%s: Using GenMod modification\n", tag());
m_eprom = machine().root_device().memregion("maincpu")->base() + 0x8000;
if (m_eprom[0] != 0xf0)
{
- fatalerror("genboard: GenMod boot rom missing.\n");
+ fatalerror("genboard: GenMod boot ROM missing\n");
}
m_genmod = true;
m_turbo = ((machine().root_device().ioport("GENMODDIPS")->read() & GM_TURBO)!=0);
@@ -1301,7 +1477,7 @@ void geneve_keyboard_device::post_in_key_queue(int keycode)
m_key_queue[(m_key_queue_head + m_key_queue_length) % KEYQUEUESIZE] = keycode;
m_key_queue_length++;
- if (VERBOSE>5) LOG("genboard: posting keycode %02x\n", keycode);
+ if (TRACE_KEYBOARD) logerror("%s: Posting keycode %02x\n", tag(), keycode);
}
void geneve_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
@@ -1316,7 +1492,7 @@ void geneve_keyboard_device::poll()
int i, j;
int keycode;
int pressed;
- if (VERBOSE>7) LOG("genboard: poll keyboard\n");
+ if (TRACE_KEYBOARD) logerror("%s: Poll keyboard\n", tag());
if (m_key_reset) return;
/* Poll keyboard */
@@ -1522,7 +1698,7 @@ void geneve_keyboard_device::signal_when_key_available()
// buffer clear is disabled, and key queue is not empty. */
if ((!m_key_reset) && (m_keyboard_clock) && (m_keep_keybuf) && (m_key_queue_length != 0))
{
- if (VERBOSE>6) LOG("genboard: signalling key available\n");
+ if (TRACE_KEYBOARD) logerror("%s: Signalling key available\n", tag());
m_interrupt(ASSERT_LINE);
m_key_in_buffer = true;
}
@@ -1532,7 +1708,7 @@ WRITE_LINE_MEMBER( geneve_keyboard_device::clock_control )
{
bool rising_edge = (!m_keyboard_clock && (state==ASSERT_LINE));
m_keyboard_clock = (state==ASSERT_LINE);
- if (VERBOSE>5) LOG("genboard: keyboard clock_control state=%d\n", m_keyboard_clock);
+ if (TRACE_KEYBOARD) logerror("%s: Keyboard clock_control state=%d\n", tag(), m_keyboard_clock);
if (rising_edge)
signal_when_key_available();
}
@@ -1582,7 +1758,6 @@ WRITE_LINE_MEMBER( geneve_keyboard_device::reset_line )
void geneve_keyboard_device::device_start()
{
- if (VERBOSE>2) LOG("genboard: Keyboard started\n");
m_timer = timer_alloc(0);
m_interrupt.resolve();
}
diff --git a/src/mess/machine/ti99/genboard.h b/src/devices/bus/ti99x/genboard.h
index 7728552aea8..d9905ba9168 100644
--- a/src/mess/machine/ti99/genboard.h
+++ b/src/devices/bus/ti99x/genboard.h
@@ -18,6 +18,7 @@
#include "machine/mm58274c.h"
#include "video/v9938.h"
#include "cpu/tms9900/tms9995.h"
+#include "machine/at29x.h"
extern const device_type GENEVE_MOUSE;
extern const device_type GENEVE_KEYBOARD;
@@ -109,25 +110,27 @@ class geneve_mapper_device : public device_t
{
public:
geneve_mapper_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- inline void set_geneve_mode(bool geneve) { m_geneve_mode = geneve; }
- inline void set_direct_mode(bool direct) { m_direct_mode = direct; }
- inline void set_cartridge_size(int size) { m_cartridge_size = size; }
- inline void set_cartridge_writable(int base, bool write)
- {
- if (base==0x6000) m_cartridge6_writable = write;
- else m_cartridge7_writable = write;
- }
- inline void set_video_waitstates(bool wait) { m_video_waitstates = wait; }
- inline void set_extra_waitstates(bool wait) { m_extra_waitstates = wait; }
+ void set_geneve_mode(bool geneve);
+ void set_direct_mode(bool direct);
+ void set_cartridge_size(int size);
+ void set_cartridge_writable(int base, bool write);
+ void set_video_waitstates(bool wait);
+ void set_extra_waitstates(bool wait);
DECLARE_READ8_MEMBER( readm );
DECLARE_WRITE8_MEMBER( writem );
DECLARE_SETOFFSET_MEMBER( setoffset );
- DECLARE_INPUT_CHANGED_MEMBER( gm_changed );
+ DECLARE_INPUT_CHANGED_MEMBER( settings_changed );
DECLARE_WRITE_LINE_MEMBER( clock_in );
DECLARE_WRITE_LINE_MEMBER( dbin_in );
+
+ // PFM support
+ DECLARE_WRITE_LINE_MEMBER( pfm_select_lsb );
+ DECLARE_WRITE_LINE_MEMBER( pfm_select_msb );
+ DECLARE_WRITE_LINE_MEMBER( pfm_output_enable );
+
template<class _Object> static devcb_base &static_set_ready_callback(device_t &device, _Object object) { return downcast<geneve_mapper_device &>(device).m_ready.set_callback(object); }
protected:
@@ -177,6 +180,15 @@ private:
bool m_genmod;
bool m_timode;
+ // PFM mod (0 = none, 1 = AT29C040, 2 = AT29C040A)
+ DECLARE_READ8_MEMBER( read_from_pfm );
+ DECLARE_WRITE8_MEMBER( write_to_pfm );
+ void set_boot_rom(int selection);
+ int m_pfm_mode;
+ int m_pfm_bank;
+ bool m_pfm_output_enable;
+
+ // SRAM access
int m_sram_mask;
int m_sram_val;
@@ -190,6 +202,8 @@ private:
// Devices
mm58274c_device* m_clock;
tms9995_device* m_cpu;
+ at29c040_device* m_pfm512;
+ at29c040a_device* m_pfm512a;
geneve_keyboard_device* m_keyboard;
bus8z_device* m_video;
diff --git a/src/mess/machine/ti99/grom.c b/src/devices/bus/ti99x/grom.c
index 3c20eeb35d7..3c20eeb35d7 100644
--- a/src/mess/machine/ti99/grom.c
+++ b/src/devices/bus/ti99x/grom.c
diff --git a/src/mess/machine/ti99/grom.h b/src/devices/bus/ti99x/grom.h
index 19a9a973b81..19a9a973b81 100644
--- a/src/mess/machine/ti99/grom.h
+++ b/src/devices/bus/ti99x/grom.h
diff --git a/src/mess/machine/ti99/gromport.c b/src/devices/bus/ti99x/gromport.c
index 427dc929b8a..2119a93c348 100644
--- a/src/mess/machine/ti99/gromport.c
+++ b/src/devices/bus/ti99x/gromport.c
@@ -112,8 +112,14 @@
***************************************************************************/
#include "gromport.h"
-#define VERBOSE 1
-#define LOG logerror
+#define TRACE_RPK 0
+#define TRACE_CHANGE 0
+#define TRACE_ILLWRITE 0
+#define TRACE_CONFIG 0
+#define TRACE_READ 0
+#define TRACE_GROM 0
+#define TRACE_GKRACKER 0
+#define TRACE_CRU 0
#define GROM3_TAG "grom3"
#define GROM4_TAG "grom4"
@@ -123,7 +129,6 @@
#define CARTGROM_TAG "grom_contents"
#define CARTROM_TAG "rom_contents"
-#define CARTROM2_TAG "rom2_contents"
#define GKRACKER_ROM_TAG "gkracker_rom"
#define GKRACKER_NVRAM_TAG "gkracker_nvram"
@@ -407,8 +412,8 @@ multi_conn_device::multi_conn_device(const machine_config &mconfig, const char *
*/
void multi_conn_device::set_slot(int slotnumber)
{
- if (VERBOSE>7)
- if (m_active_slot != slotnumber) LOG("multi_conn_device: Setting cartslot to %d\n", slotnumber);
+ if (TRACE_CHANGE)
+ if (m_active_slot != slotnumber) logerror("%s: Setting cartslot to %d\n", tag(), slotnumber);
if (m_fixed_slot==AUTO)
m_active_slot = slotnumber;
@@ -432,14 +437,14 @@ int multi_conn_device::get_active_slot(bool changebase, offs_t offset)
void multi_conn_device::insert(int index, ti99_cartridge_device* cart)
{
- if (VERBOSE>3) LOG("multi_conn_device: insert slot %d\n", index);
+ if (TRACE_CHANGE) logerror("%s: Insert slot %d\n", tag(), index);
m_cartridge[index] = cart;
m_gromport->cartridge_inserted();
}
void multi_conn_device::remove(int index)
{
- if (VERBOSE>3) LOG("multi_conn_device: remove slot %d\n", index);
+ if (TRACE_CHANGE) logerror("%s: Remove slot %d\n", tag(), index);
m_cartridge[index] = NULL;
}
@@ -494,7 +499,7 @@ WRITE8_MEMBER(multi_conn_device::write)
{
if (slot < NUMBER_OF_CARTRIDGE_SLOTS && m_cartridge[slot] != NULL)
{
- // LOG("try it on slot %d\n", slot);
+ // logerror("%s: try it on slot %d\n", tag(), slot);
m_cartridge[slot]->write(space, offset, data, mem_mask);
}
}
@@ -798,7 +803,7 @@ READ8Z_MEMBER(gkracker_device::readz)
}
}
}
- if (VERBOSE>8) LOG("gkracker_device: read %04x -> %02x\n", offset, *value);
+ if (TRACE_READ) logerror("%s: Read %04x -> %02x\n", tag(), offset, *value);
}
WRITE8_MEMBER(gkracker_device::write)
@@ -820,7 +825,7 @@ WRITE8_MEMBER(gkracker_device::write)
// Accept low address byte (second write)
m_grom_address = (m_grom_address & 0xff00) | data;
m_waddr_LSB = false;
- if (VERBOSE>8) LOG("gkracker_device: set grom address %04x\n", m_grom_address);
+ if (TRACE_GROM) logerror("%s: Set grom address %04x\n", tag(), m_grom_address);
}
else
{
@@ -832,7 +837,7 @@ WRITE8_MEMBER(gkracker_device::write)
else
{
// Write data byte to GRAM area.
- if (VERBOSE>7) LOG("gkracker_device: gwrite %04x(%04x) <- %02x\n", offset, m_grom_address, data);
+ if (TRACE_GROM) logerror("%s: gwrite %04x(%04x) <- %02x\n", tag(), offset, m_grom_address, data);
// According to manual:
// Writing to GRAM 0: switch 2 set to GRAM 0 + Write protect switch (4) in 1 or 2 position
@@ -871,7 +876,7 @@ WRITE8_MEMBER(gkracker_device::write)
{
// Write to the RAM space of the GRAM Kracker
// (only if no cartridge is present)
- if (VERBOSE>7) LOG("gkracker_device: write %04x <- %02x\n", offset, data);
+ if (TRACE_GROM) logerror("%s: write %04x <- %02x\n", tag(), offset, data);
if (m_cartridge == NULL)
{
if (m_gk_switch[1] == GK_OFF) return; // just don't do anything
@@ -908,13 +913,13 @@ WRITE8_MEMBER( gkracker_device::cruwrite )
INPUT_CHANGED_MEMBER( gkracker_device::gk_changed )
{
- if (VERBOSE>7) LOG("gkracker_device: input changed %d - %d\n", (int)((UINT64)param & 0x07), newval);
+ if (TRACE_GKRACKER) logerror("%s: Input changed %d - %d\n", tag(), (int)((UINT64)param & 0x07), newval);
m_gk_switch[(UINT64)param & 0x07] = newval;
}
void gkracker_device::insert(int index, ti99_cartridge_device* cart)
{
- if (VERBOSE>3) LOG("gkracker_device: insert cartridge\n");
+ if (TRACE_CHANGE) logerror("%s: Insert cartridge\n", tag());
m_cartridge = cart;
// Switch 1 has a third location for resetting. We do the reset by default
// here. It can be turned off in the configuration.
@@ -923,7 +928,7 @@ void gkracker_device::insert(int index, ti99_cartridge_device* cart)
void gkracker_device::remove(int index)
{
- if (VERBOSE>3) LOG("gkracker_device: remove cartridge\n");
+ if (TRACE_CHANGE) logerror("%s: Remove cartridge\n", tag());
m_cartridge = NULL;
}
@@ -946,7 +951,7 @@ void gkracker_device::gk_install_menu(const char* menutext, int len, int ptr, in
*/
void gkracker_device::nvram_default()
{
- if (VERBOSE>3) LOG("gkracker_device: Creating default NVRAM\n");
+ if (TRACE_GKRACKER) logerror("%s: Creating default NVRAM\n", tag());
memset(m_ram_ptr, 0, 81920);
m_ram_ptr[0x6000] = 0xaa;
@@ -970,7 +975,7 @@ void gkracker_device::nvram_default()
void gkracker_device::nvram_read(emu_file &file)
{
int readsize = file.read(m_ram_ptr, 81920);
- if (VERBOSE>3) LOG("gkracker_device: reading NVRAM\n");
+ if (TRACE_GKRACKER) logerror("%s: Reading NVRAM\n", tag());
// If we increased the size, fill the remaining parts with 0
if (readsize < 81920)
{
@@ -980,7 +985,7 @@ void gkracker_device::nvram_read(emu_file &file)
void gkracker_device::nvram_write(emu_file &file)
{
- if (VERBOSE>3) LOG("gkracker_device: writing NVRAM\n");
+ if (TRACE_GKRACKER) logerror("%s: Writing NVRAM\n", tag());
file.write(m_ram_ptr, 81920);
}
@@ -1080,6 +1085,8 @@ enum
PCB_SUPER,
PCB_MBX,
PCB_PAGED379I,
+ PCB_PAGED378,
+ PCB_PAGED377,
PCB_PAGEDCRU,
PCB_GROMEMU
};
@@ -1092,6 +1099,8 @@ static const pcb_type pcbdefs[] =
{ PCB_SUPER, "super" },
{ PCB_MBX, "mbx" },
{ PCB_PAGED379I, "paged379i" },
+ { PCB_PAGED378, "paged378" },
+ { PCB_PAGED377, "paged377" },
{ PCB_PAGEDCRU, "pagedcru" },
{ PCB_GROMEMU, "gromemu" },
{ 0, NULL}
@@ -1123,15 +1132,14 @@ void ti99_cartridge_device::prepare_cartridge()
int rom2_length;
UINT8* grom_ptr;
+ UINT8* rom_ptr;
memory_region *regg;
memory_region *regr;
- memory_region *regr2;
// Initialize some values.
m_pcb->m_rom_page = 0;
m_pcb->m_rom_ptr = NULL;
- m_pcb->m_rom2_ptr = NULL;
m_pcb->m_ram_size = 0;
m_pcb->m_ram_ptr = NULL;
m_pcb->m_ram_page = 0;
@@ -1139,7 +1147,7 @@ void ti99_cartridge_device::prepare_cartridge()
for (int i=0; i < 5; i++) m_pcb->m_grom[i] = NULL;
m_pcb->m_grom_size = m_softlist? get_software_region_length("grom_socket") : m_rpk->get_resource_length("grom_socket");
- if (VERBOSE>6) LOG("gromport: grom_socket.size=0x%04x\n", m_pcb->m_grom_size);
+ if (TRACE_CONFIG) logerror("%s: grom_socket.size=0x%04x\n", tag(), m_pcb->m_grom_size);
if (m_pcb->m_grom_size > 0)
{
@@ -1160,22 +1168,22 @@ void ti99_cartridge_device::prepare_cartridge()
m_pcb->m_rom_size = m_softlist? get_software_region_length("rom_socket") : m_rpk->get_resource_length("rom_socket");
if (m_pcb->m_rom_size > 0)
{
- if (VERBOSE>6) LOG("gromport: rom_socket.size=0x%04x\n", m_pcb->m_rom_size);
+ if (TRACE_CONFIG) logerror("%s: rom_socket.size=0x%04x\n", tag(), m_pcb->m_rom_size);
regr = memregion(CARTROM_TAG);
- m_pcb->m_rom_ptr = m_softlist? get_software_region("rom_socket") : m_rpk->get_contents_of_socket("rom_socket");
- memcpy(regr->base(), m_pcb->m_rom_ptr, m_pcb->m_rom_size);
+ rom_ptr = m_softlist? get_software_region("rom_socket") : m_rpk->get_contents_of_socket("rom_socket");
+ memcpy(regr->base(), rom_ptr, m_pcb->m_rom_size);
// Set both pointers to the same region for now
- m_pcb->m_rom_ptr = m_pcb->m_rom2_ptr = regr->base();
+ m_pcb->m_rom_ptr = regr->base();
}
rom2_length = m_softlist? get_software_region_length("rom2_socket") : m_rpk->get_resource_length("rom2_socket");
if (rom2_length > 0)
{
// sizes do not differ between rom and rom2
- regr2 = memregion(CARTROM2_TAG);
- m_pcb->m_rom2_ptr = m_softlist? get_software_region("rom2_socket") : m_rpk->get_contents_of_socket("rom2_socket");
- memcpy(regr2->base(), m_pcb->m_rom2_ptr, rom2_length);
- m_pcb->m_rom2_ptr = regr2->base();
+ // We use the large cartrom space for the second bank as well
+ regr = memregion(CARTROM_TAG);
+ rom_ptr = m_softlist? get_software_region("rom2_socket") : m_rpk->get_contents_of_socket("rom2_socket");
+ memcpy(regr->base() + 0x2000, rom_ptr, rom2_length);
}
// NVRAM cartridges are not supported by softlists (we need to find a way to load the nvram contents first)
@@ -1227,11 +1235,11 @@ bool ti99_cartridge_device::call_load()
{
// File name is in m_basename
// return true = error
- if (VERBOSE>8) LOG("cartridge_device: loading %s in slot %s\n", m_basename.c_str(), tag());
+ if (TRACE_CHANGE) logerror("%s: Loading %s in slot %s\n", tag(), m_basename.c_str(), tag());
if (m_softlist)
{
- if (VERBOSE>7) LOG("using softlists\n");
+ if (TRACE_CONFIG) logerror("%s: Using softlists\n", tag());
int i = 0;
const char* pcb = get_feature("pcb");
do
@@ -1243,7 +1251,7 @@ bool ti99_cartridge_device::call_load()
}
i++;
} while (sw_pcbdefs[i].id != 0);
- if (VERBOSE>5) LOG("gromport.cartridge_device: Cartridge type is %s (%d)\n", pcb, m_pcbtype);
+ if (TRACE_CONFIG) logerror("%s: Cartridge type is %s (%d)\n", tag(), pcb, m_pcbtype);
}
else
{
@@ -1255,7 +1263,7 @@ bool ti99_cartridge_device::call_load()
}
catch (rpk_exception& err)
{
- LOG("gromport.cartridge_device: Failed to load cartridge '%s': %s\n", basename(), err.to_string());
+ logerror("%s: Failed to load cartridge '%s': %s\n", tag(), basename(), err.to_string());
m_rpk = NULL;
m_err = IMAGE_ERROR_INVALIDIMAGE;
return true;
@@ -1265,41 +1273,50 @@ bool ti99_cartridge_device::call_load()
switch (m_pcbtype)
{
case PCB_STANDARD:
- if (VERBOSE>6) LOG("gromport.cartridge_device: standard PCB\n");
+ if (TRACE_CONFIG) logerror("%s: Standard PCB\n", tag());
m_pcb = new ti99_standard_cartridge();
break;
case PCB_PAGED:
- if (VERBOSE>6) LOG("gromport.cartridge_device: paged PCB\n");
+ if (TRACE_CONFIG) logerror("%s: Paged PCB\n", tag());
m_pcb = new ti99_paged_cartridge();
break;
case PCB_MINIMEM:
- if (VERBOSE>6) LOG("gromport.cartridge_device: minimem PCB\n");
+ if (TRACE_CONFIG) logerror("%s: Minimem PCB\n", tag());
m_pcb = new ti99_minimem_cartridge();
break;
case PCB_SUPER:
- if (VERBOSE>6) LOG("gromport.cartridge_device: superspace PCB\n");
+ if (TRACE_CONFIG) logerror("%s: Superspace PCB\n", tag());
m_pcb = new ti99_super_cartridge();
break;
case PCB_MBX:
- if (VERBOSE>6) LOG("gromport.cartridge_device: MBX PCB\n");
+ if (TRACE_CONFIG) logerror("%s: MBX PCB\n", tag());
m_pcb = new ti99_mbx_cartridge();
break;
case PCB_PAGED379I:
- if (VERBOSE>6) LOG("gromport.cartridge_device: Paged379i PCB\n");
+ if (TRACE_CONFIG) logerror("%s: Paged379i PCB\n", tag());
m_pcb = new ti99_paged379i_cartridge();
break;
+ case PCB_PAGED378:
+ if (TRACE_CONFIG) logerror("%s: Paged378 PCB\n", tag());
+ m_pcb = new ti99_paged378_cartridge();
+ break;
+ case PCB_PAGED377:
+ if (TRACE_CONFIG) logerror("%s: Paged377 PCB\n", tag());
+ m_pcb = new ti99_paged377_cartridge();
+ break;
case PCB_PAGEDCRU:
- if (VERBOSE>6) LOG("gromport.cartridge_device: PagedCRU PCB\n");
+ if (TRACE_CONFIG) logerror("%s: PagedCRU PCB\n", tag());
m_pcb = new ti99_pagedcru_cartridge();
break;
case PCB_GROMEMU:
- if (VERBOSE>6) LOG("gromport.cartridge_device: GromEmulation PCB\n");
+ if (TRACE_CONFIG) logerror("%s: Grom Emulation PCB\n", tag());
m_pcb = new ti99_gromemu_cartridge();
break;
}
prepare_cartridge();
m_pcb->set_cartridge(this);
+ m_pcb->set_tag(tag());
m_slot = get_index_from_tagname();
m_connector->insert(m_slot, this);
return false;
@@ -1307,7 +1324,7 @@ bool ti99_cartridge_device::call_load()
void ti99_cartridge_device::call_unload()
{
- if (VERBOSE>7) LOG("ti99_cartridge_device: unload\n");
+ if (TRACE_CHANGE) logerror("%s: Unload\n", tag());
if (m_rpk != NULL)
{
m_rpk->close(); // will write NVRAM contents
@@ -1326,7 +1343,7 @@ void ti99_cartridge_device::set_slot(int i)
bool ti99_cartridge_device::call_softlist_load(software_list_device &swlist, const char *swname, const rom_entry *start_entry)
{
- if (VERBOSE>8) LOG("ti99_cartridge_device: swlist = %s, swname = %s\n", swlist.list_name(), swname);
+ if (TRACE_CONFIG) logerror("%s: swlist = %s, swname = %s\n", tag(), swlist.list_name(), swname);
load_software_part_region(*this, swlist, swname, start_entry);
m_softlist = true;
m_rpk = NULL;
@@ -1409,13 +1426,12 @@ machine_config_constructor ti99_cartridge_device::device_mconfig_additions() con
/*
Memory area for one cartridge. For most cartridges we only need 8 KiB for
- ROM contents, but cartridges of the "paged379i" type have up to 128 KiB
+ ROM contents, but cartridges of the "paged377" type have up to 2 MiB
organised as selectable banks, so we must be sure there is enough space.
*/
ROM_START( cartridge_memory )
ROM_REGION(0xa000, CARTGROM_TAG, ROMREGION_ERASE00)
- ROM_REGION(0x20000, CARTROM_TAG, ROMREGION_ERASE00)
- ROM_REGION(0x2000, CARTROM2_TAG, ROMREGION_ERASE00)
+ ROM_REGION(0x200000, CARTROM_TAG, ROMREGION_ERASE00)
ROM_END
const rom_entry *ti99_cartridge_device::device_rom_region() const
@@ -1486,19 +1502,19 @@ READ8Z_MEMBER(ti99_cartridge_pcb::readz)
// For TI-99/8 we should plan for 16K cartridges. However, none was ever produced.
// Well, forget about that.
*value = m_rom_ptr[offset & 0x1fff];
- // LOG("read cartridge rom space %04x = %02x\n", offset, *value);
+ // logerror("%s: read cartridge rom space %04x = %02x\n", tag(), offset, *value);
}
}
}
WRITE8_MEMBER(ti99_cartridge_pcb::write)
{
- // LOG("write standard\n");
+ // logerror("%s: write standard\n", tag());
if ((offset & grom_mask())==grom_base())
gromwrite(space, offset, data, mem_mask);
else
{
- if (VERBOSE>5) LOG("cartridge_pcb_device: Cannot write to ROM space at %04x\n", offset);
+ if (TRACE_ILLWRITE) logerror("%s: Cannot write to ROM space at %04x\n", tag(), offset);
}
}
@@ -1530,20 +1546,13 @@ READ8Z_MEMBER(ti99_paged_cartridge::readz)
gromreadz(space, offset, value, mem_mask);
else
{
- if (m_rom_page==0)
- {
- *value = m_rom_ptr[offset & 0x1fff];
- }
- else
- {
- *value = m_rom2_ptr[offset & 0x1fff];
- }
+ *value = m_rom_ptr[(offset & 0x1fff) | (m_rom_page << 13)];
}
}
WRITE8_MEMBER(ti99_paged_cartridge::write)
{
- // LOG("write standard\n");
+ // logerror("%s: write standard\n", tag());
if ((offset & grom_mask())==grom_base())
gromwrite(space, offset, data, mem_mask);
@@ -1584,7 +1593,7 @@ READ8Z_MEMBER(ti99_minimem_cartridge::readz)
/* Write function for the minimem cartridge. */
WRITE8_MEMBER(ti99_minimem_cartridge::write)
{
- // LOG("write standard\n");
+ // logerror("%s: write standard\n", tag());
if ((offset & grom_mask())==grom_base())
gromwrite(space, offset, data, mem_mask);
@@ -1592,7 +1601,7 @@ WRITE8_MEMBER(ti99_minimem_cartridge::write)
{
if ((offset & 0x1000)==0x0000)
{
- if (VERBOSE>1) LOG("ti99: gromport: Write access to cartridge ROM at address %04x ignored", offset);
+ if (TRACE_ILLWRITE) logerror("%s: Write access to cartridge ROM at address %04x ignored", tag(), offset);
}
else
{
@@ -1674,7 +1683,7 @@ READ8Z_MEMBER(ti99_super_cartridge::crureadz)
if ((offset & 0xfff0) == 0x0800)
{
- if (VERBOSE>2) LOG("ti99_super_cartridge: CRU accessed at %04x\n", offset);
+ if (TRACE_CRU) logerror("%s: CRU accessed at %04x\n", tag(), offset);
UINT8 val = 0x02 << (m_ram_page << 1);
*value = (val >> ((offset - 0x0800)>>1)) & 0xff;
}
@@ -1684,7 +1693,7 @@ WRITE8_MEMBER(ti99_super_cartridge::cruwrite)
{
if ((offset & 0xfff0) == 0x0800)
{
- if (VERBOSE>2) LOG("ti99_super_cartridge: CRU accessed at %04x\n", offset);
+ if (TRACE_CRU) logerror("%s: CRU accessed at %04x\n", tag(), offset);
if (data != 0)
m_ram_page = (offset-0x0802)>>2;
}
@@ -1824,6 +1833,64 @@ WRITE8_MEMBER(ti99_paged379i_cartridge::write)
}
/*****************************************************************************
+ Cartridge type: paged378
+ This type is intended for high-capacity cartridges of up to 512 KiB
+ plus GROM space of 120KiB (not supported yet)
+
+ Due to its huge GROM space it is also called the "UberGROM"
+
+ The cartridge may also be used without GROM.
+
+ The selection scheme is much simpler than in the 379i type.
+
+******************************************************************************/
+
+/* Read function for the paged378 cartridge. */
+READ8Z_MEMBER(ti99_paged378_cartridge::readz)
+{
+ if ((offset & 0xe000)==0x6000)
+ *value = m_rom_ptr[(m_rom_page<<13) | (offset & 0x1fff)];
+}
+
+/* Write function for the paged378 cartridge. Only used to set the bank. */
+WRITE8_MEMBER(ti99_paged378_cartridge::write)
+{
+ // Bits: 0110 0000 0bbb bbbx
+ // x = don't care, bbbb = bank
+ if ((offset & 0xff80)==0x6000)
+ {
+ // Set bank
+ m_rom_page = ((offset >> 1)&0x003f);
+ }
+}
+
+/*****************************************************************************
+ Cartridge type: paged377
+ This type is intended for high-capacity cartridges of up to 2 MiB
+
+ The paged379i cartrige does not have any GROMs.
+******************************************************************************/
+
+/* Read function for the paged377 cartridge. */
+READ8Z_MEMBER(ti99_paged377_cartridge::readz)
+{
+ if ((offset & 0xe000)==0x6000)
+ *value = m_rom_ptr[(m_rom_page<<13) | (offset & 0x1fff)];
+}
+
+/* Write function for the paged377 cartridge. Only used to set the bank. */
+WRITE8_MEMBER(ti99_paged377_cartridge::write)
+{
+ // Bits: 0110 000b bbbb bbbx
+ // x = don't care, bbbb = bank
+ if ((offset & 0xfe00)==0x6000)
+ {
+ // Set bank
+ m_rom_page = ((offset >> 1)&0x00ff);
+ }
+}
+
+/*****************************************************************************
Cartridge type: pagedcru
This cartridge consists of one 16 KiB, 32 KiB, or 64 KiB EEPROM which is
organised in 2, 4, or 8 pages of 8 KiB each. We assume there is only one
@@ -1933,20 +2000,13 @@ READ8Z_MEMBER(ti99_gromemu_cartridge::readz)
}
if (m_rom_ptr == NULL) return;
- if (m_rom_page==0)
- {
- *value = m_rom_ptr[offset & 0x1fff];
- }
- else
- {
- *value = m_rom2_ptr[offset & 0x1fff];
- }
+ *value = m_rom_ptr[(offset & 0x1fff) | (m_rom_page << 13)];
}
}
WRITE8_MEMBER(ti99_gromemu_cartridge::write)
{
- // LOG("write standard\n");
+ // logerror("%s: write standard\n", tag());
if ((offset & grom_mask())==grom_base())
gromemuwrite(space, offset, data, mem_mask);
@@ -1991,7 +2051,7 @@ WRITE8_MEMBER(ti99_gromemu_cartridge::gromemuwrite)
// Accept low address byte (second write)
m_grom_address = (m_grom_address & 0xff00) | data;
m_waddr_LSB = false;
- if (VERBOSE>8) LOG("ti99_gromemu_cartridge: set grom address %04x\n", m_grom_address);
+ if (TRACE_GROM) logerror("%s: Set grom address %04x\n", tag(), m_grom_address);
}
else
{
@@ -2001,7 +2061,7 @@ WRITE8_MEMBER(ti99_gromemu_cartridge::gromemuwrite)
}
}
else {
- if (VERBOSE>2) LOG("ti99_gromemu_cartridge: ignoring write to GROM area at address %04x\n", m_grom_address);
+ if (TRACE_ILLWRITE) logerror("%s: Ignoring write to GROM area at address %04x\n", tag(), m_grom_address);
}
}
@@ -2070,7 +2130,7 @@ rpk::rpk(emu_options& options, const char* sysname)
rpk::~rpk()
{
- if (VERBOSE>6) LOG("rpk: Destroy RPK\n");
+ if (TRACE_RPK) logerror("gromport/RPK: Destroy RPK\n");
}
/*
@@ -2178,7 +2238,7 @@ rpk_socket* rpk_reader::load_rom_resource(zip_file* zip, xml_data_node* rom_reso
file = xml_get_attribute_string(rom_resource_node, "file", NULL);
if (file == NULL) throw rpk_exception(RPK_INVALID_LAYOUT, "<rom> must have a 'file' attribute");
- if (VERBOSE>6) LOG("gromport/RPK: Loading ROM contents for socket '%s' from file %s\n", socketname, file);
+ if (TRACE_RPK) logerror("gromport/RPK: Loading ROM contents for socket '%s' from file %s\n", socketname, file);
// check for crc
crcstr = xml_get_attribute_string(rom_resource_node, "crc", NULL);
@@ -2266,7 +2326,7 @@ rpk_socket* rpk_reader::load_ram_resource(emu_options &options, xml_data_node* r
contents = global_alloc_array_clear(UINT8, length);
if (contents==NULL) throw rpk_exception(RPK_OUT_OF_MEMORY);
- if (VERBOSE>6) LOG("gromport/RPK: Allocating RAM buffer (%d bytes) for socket '%s'\n", length, socketname);
+ if (TRACE_RPK) logerror("gromport/RPK: Allocating RAM buffer (%d bytes) for socket '%s'\n", length, socketname);
ram_pname = NULL;
@@ -2288,7 +2348,7 @@ rpk_socket* rpk_reader::load_ram_resource(emu_options &options, xml_data_node* r
std::string ram_pathname = std::string(system_name).append(PATH_SEPARATOR).append(ram_filename);
ram_pname = core_strdup(ram_pathname.c_str());
// load, and fill rest with 00
- if (VERBOSE>6) LOG("gromport/RPK: Loading NVRAM contents from '%s'\n", ram_pname);
+ if (TRACE_RPK) logerror("gromport/RPK: Loading NVRAM contents from '%s'\n", ram_pname);
image_battery_load_by_name(options, ram_pname, contents, length, 0x00);
}
}
@@ -2378,7 +2438,7 @@ rpk* rpk_reader::open(emu_options &options, const char *filename, const char *sy
// We'll try to find the PCB type on the provided type list.
pcb_type = xml_get_attribute_string(pcb_node, "type", NULL);
if (pcb_type==NULL) throw rpk_exception(RPK_INVALID_LAYOUT, "<pcb> must have a 'type' attribute");
- if (VERBOSE>6) LOG("gromport/RPK: Cartridge says it has PCB type '%s'\n", pcb_type);
+ if (TRACE_RPK) logerror("gromport/RPK: Cartridge says it has PCB type '%s'\n", pcb_type);
i=0;
do
diff --git a/src/mess/machine/ti99/gromport.h b/src/devices/bus/ti99x/gromport.h
index 367b68ba2b6..a6c0c1c3c8f 100644
--- a/src/mess/machine/ti99/gromport.h
+++ b/src/devices/bus/ti99x/gromport.h
@@ -282,6 +282,8 @@ protected:
void set_cartridge(ti99_cartridge_device *cart);
UINT16 grom_base();
UINT16 grom_mask();
+ const char* tag() { return m_tag; }
+ void set_tag(const char* tag) { m_tag = tag; }
ti99_cartridge_device* m_cart;
ti99_grom_device* m_grom[5];
@@ -290,12 +292,12 @@ protected:
int m_ram_size;
UINT8* m_rom_ptr;
- UINT8* m_rom2_ptr;
UINT8* m_ram_ptr;
int m_rom_page; // for some cartridge types
UINT8* m_grom_ptr; // for gromemu
int m_grom_address; // for gromemu
int m_ram_page; // for super
+ const char* m_tag;
private:
};
@@ -361,6 +363,30 @@ private:
int get_paged379i_bank(int rompage);
};
+/********************** Paged 378 ************************************/
+
+class ti99_paged378_cartridge : public ti99_cartridge_pcb
+{
+public:
+ ~ti99_paged378_cartridge() { };
+ DECLARE_READ8Z_MEMBER(readz);
+ DECLARE_WRITE8_MEMBER(write);
+private:
+ int get_paged378_bank(int rompage);
+};
+
+/********************** Paged 377 ************************************/
+
+class ti99_paged377_cartridge : public ti99_cartridge_pcb
+{
+public:
+ ~ti99_paged377_cartridge() { };
+ DECLARE_READ8Z_MEMBER(readz);
+ DECLARE_WRITE8_MEMBER(write);
+private:
+ int get_paged377_bank(int rompage);
+};
+
/********************** Paged CRU ************************************/
class ti99_pagedcru_cartridge : public ti99_cartridge_pcb
diff --git a/src/mess/machine/ti99/handset.c b/src/devices/bus/ti99x/handset.c
index 4b41ea0bd06..4b41ea0bd06 100644
--- a/src/mess/machine/ti99/handset.c
+++ b/src/devices/bus/ti99x/handset.c
diff --git a/src/mess/machine/ti99/handset.h b/src/devices/bus/ti99x/handset.h
index ccecd741034..ccecd741034 100644
--- a/src/mess/machine/ti99/handset.h
+++ b/src/devices/bus/ti99x/handset.h
diff --git a/src/mess/machine/ti99/joyport.c b/src/devices/bus/ti99x/joyport.c
index d49345e0b0a..d49345e0b0a 100644
--- a/src/mess/machine/ti99/joyport.c
+++ b/src/devices/bus/ti99x/joyport.c
diff --git a/src/mess/machine/ti99/joyport.h b/src/devices/bus/ti99x/joyport.h
index 6d19148fad7..6d19148fad7 100644
--- a/src/mess/machine/ti99/joyport.h
+++ b/src/devices/bus/ti99x/joyport.h
diff --git a/src/mess/machine/ti99/mecmouse.c b/src/devices/bus/ti99x/mecmouse.c
index 6afcec642d4..6afcec642d4 100644
--- a/src/mess/machine/ti99/mecmouse.c
+++ b/src/devices/bus/ti99x/mecmouse.c
diff --git a/src/mess/machine/ti99/mecmouse.h b/src/devices/bus/ti99x/mecmouse.h
index 8a915b681ab..8a915b681ab 100644
--- a/src/mess/machine/ti99/mecmouse.h
+++ b/src/devices/bus/ti99x/mecmouse.h
diff --git a/src/mess/machine/ti99/ti99defs.h b/src/devices/bus/ti99x/ti99defs.h
index fbb7c73645c..543b5ad04ba 100644
--- a/src/mess/machine/ti99/ti99defs.h
+++ b/src/devices/bus/ti99x/ti99defs.h
@@ -51,6 +51,8 @@
#define GMAPPER_TAG "gmapper"
#define GMOUSE_TAG "gmouse"
#define GCLOCK_TAG "mm58274c"
+#define PFM512_TAG "pfm512"
+#define PFM512A_TAG "pfm512a"
#define READ16Z_MEMBER(name) void name(ATTR_UNUSED address_space &space, ATTR_UNUSED offs_t offset, ATTR_UNUSED UINT16 *value, ATTR_UNUSED UINT16 mem_mask)
#define DECLARE_READ16Z_MEMBER(name) void name(ATTR_UNUSED address_space &space, ATTR_UNUSED offs_t offset, ATTR_UNUSED UINT16 *value, ATTR_UNUSED UINT16 mem_mask = 0xffff)
@@ -106,7 +108,9 @@ enum
enum
{
GENEVE_098 = 0,
- GENEVE_100 = 1
+ GENEVE_100,
+ GENEVE_PFM512,
+ GENEVE_PFM512A
};
#endif
diff --git a/src/mess/machine/ti99/videowrp.c b/src/devices/bus/ti99x/videowrp.c
index d42349947f8..d42349947f8 100644
--- a/src/mess/machine/ti99/videowrp.c
+++ b/src/devices/bus/ti99x/videowrp.c
diff --git a/src/mess/machine/ti99/videowrp.h b/src/devices/bus/ti99x/videowrp.h
index 3de151e92ff..c38a8e7f152 100644
--- a/src/mess/machine/ti99/videowrp.h
+++ b/src/devices/bus/ti99x/videowrp.h
@@ -165,7 +165,7 @@ protected:
#define MCFG_TI_V9938_ADD(_tag, _rate, _screen, _blank, _x, _y, _class, _int) \
MCFG_DEVICE_ADD(_tag, V9938VIDEO, 0) \
- MCFG_V9938_ADD(VDP_TAG, _screen, 0x20000) \
+ MCFG_V9938_ADD(VDP_TAG, _screen, 0x20000, XTAL_21_4772MHz) /* typical 9938 clock, not verified */ \
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(_class, _int)) \
MCFG_SCREEN_ADD(_screen, RASTER) \
MCFG_SCREEN_REFRESH_RATE(_rate) \
diff --git a/src/devices/bus/tiki100/8088.c b/src/devices/bus/tiki100/8088.c
new file mode 100644
index 00000000000..1065c856340
--- /dev/null
+++ b/src/devices/bus/tiki100/8088.c
@@ -0,0 +1,176 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ TIKI-100 8/16 8088/8087 expansion card emulation
+
+**********************************************************************/
+
+#include "8088.h"
+
+
+
+//**************************************************************************
+// MACROS/CONSTANTS
+//**************************************************************************
+
+#define I8088_TAG "u3"
+
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type TIKI100_8088 = &device_creator<tiki100_8088_t>;
+
+
+//-------------------------------------------------
+// ROM( tiki100_8088 )
+//-------------------------------------------------
+
+ROM_START( tiki100_8088 )
+ ROM_REGION( 0x1000, I8088_TAG, 0 )
+ ROM_LOAD( "boot 1.0.u3", 0x0000, 0x1000, CRC(436974aa) SHA1(837087b3ab982d047e4f15799fef3daa37dd6c01) )
+
+ ROM_REGION( 0x100, "u26", 0 )
+ ROM_LOAD( "53ls140.u26", 0x000, 0x100, CRC(fc5902e1) SHA1(afb9cb54ab6fc449e7544ddb3cbebc3770c4f937) )
+ROM_END
+
+
+//-------------------------------------------------
+// rom_region - device-specific ROM region
+//-------------------------------------------------
+
+const rom_entry *tiki100_8088_t::device_rom_region() const
+{
+ return ROM_NAME( tiki100_8088 );
+}
+
+
+static ADDRESS_MAP_START( i8088_mem, AS_PROGRAM, 8, tiki100_8088_t )
+ AM_RANGE(0x00000, 0xbffff) AM_RAM
+ AM_RANGE(0xc0000, 0xcffff) AM_DEVREADWRITE(":" TIKI100_BUS_TAG, tiki100_bus_t, exin_mrq_r, exin_mrq_w)
+ AM_RANGE(0xff000, 0xfffff) AM_ROM AM_REGION(I8088_TAG, 0)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( i8088_io, AS_IO, 8, tiki100_8088_t )
+ AM_RANGE(0x7f, 0x7f) AM_READWRITE(read, write)
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
+// MACHINE_CONFIG_FRAGMENT( tiki100_8088 )
+//-------------------------------------------------
+
+static MACHINE_CONFIG_FRAGMENT( tiki100_8088 )
+ MCFG_CPU_ADD(I8088_TAG, I8088, 6000000)
+ MCFG_CPU_PROGRAM_MAP(i8088_mem)
+ MCFG_CPU_IO_MAP(i8088_io)
+MACHINE_CONFIG_END
+
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor tiki100_8088_t::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( tiki100_8088 );
+}
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// tiki100_8088_t - constructor
+//-------------------------------------------------
+
+tiki100_8088_t::tiki100_8088_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, TIKI100_8088, "TIKI-100 8/16", tag, owner, clock, "tiki100_8088", __FILE__),
+ device_tiki100bus_card_interface(mconfig, *this),
+ m_maincpu(*this, I8088_TAG),
+ m_data(0)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void tiki100_8088_t::device_start()
+{
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void tiki100_8088_t::device_reset()
+{
+ m_maincpu->reset();
+
+ m_data = 0;
+}
+
+
+//-------------------------------------------------
+// tiki100bus_iorq_r - I/O read
+//-------------------------------------------------
+
+UINT8 tiki100_8088_t::iorq_r(address_space &space, offs_t offset, UINT8 data)
+{
+ if ((offset & 0xff) == 0x7f)
+ {
+ data = m_data;
+ }
+
+ return data;
+}
+
+
+//-------------------------------------------------
+// tiki100bus_iorq_w - I/O write
+//-------------------------------------------------
+
+void tiki100_8088_t::iorq_w(address_space &space, offs_t offset, UINT8 data)
+{
+ if ((offset & 0xff) == 0x7f)
+ {
+ m_data = data & 0x0f;
+
+ if (BIT(data, 5))
+ {
+ device_reset();
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// read -
+//-------------------------------------------------
+
+READ8_MEMBER( tiki100_8088_t::read )
+{
+ return m_busak << 4 | m_data;
+}
+
+
+//-------------------------------------------------
+// write -
+//-------------------------------------------------
+
+WRITE8_MEMBER( tiki100_8088_t::write )
+{
+ m_data = data & 0x0f;
+
+ m_bus->busrq_w(BIT(data, 4));
+}
diff --git a/src/devices/bus/tiki100/8088.h b/src/devices/bus/tiki100/8088.h
new file mode 100644
index 00000000000..2700866a169
--- /dev/null
+++ b/src/devices/bus/tiki100/8088.h
@@ -0,0 +1,60 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ TIKI-100 8/16 8088/8087 expansion card emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __TIKI100_8088__
+#define __TIKI100_8088__
+
+#include "emu.h"
+#include "bus/tiki100/exp.h"
+#include "cpu/i86/i86.h"
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> tiki100_8088_t
+
+class tiki100_8088_t : public device_t,
+ public device_tiki100bus_card_interface
+{
+public:
+ // construction/destruction
+ tiki100_8088_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual const rom_entry *device_rom_region() const;
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ DECLARE_READ8_MEMBER( read );
+ DECLARE_WRITE8_MEMBER( write );
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ // device_tiki100bus_card_interface overrides
+ virtual UINT8 iorq_r(address_space &space, offs_t offset, UINT8 data);
+ virtual void iorq_w(address_space &space, offs_t offset, UINT8 data);
+
+private:
+ required_device<i8088_cpu_device> m_maincpu;
+
+ UINT8 m_data;
+};
+
+
+// device type definition
+extern const device_type TIKI100_8088;
+
+
+#endif
diff --git a/src/devices/bus/tiki100/exp.c b/src/devices/bus/tiki100/exp.c
new file mode 100644
index 00000000000..3122ff5fc31
--- /dev/null
+++ b/src/devices/bus/tiki100/exp.c
@@ -0,0 +1,207 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ TIKI-100 expansion bus emulation
+
+**********************************************************************/
+
+#include "exp.h"
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type TIKI100_BUS = &device_creator<tiki100_bus_t>;
+const device_type TIKI100_BUS_SLOT = &device_creator<tiki100_bus_slot_t>;
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// tiki100_bus_slot_t - constructor
+//-------------------------------------------------
+
+tiki100_bus_slot_t::tiki100_bus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, TIKI100_BUS_SLOT, "TIKI-100 expansion bus slot", tag, owner, clock, "tiki100bus_slot", __FILE__),
+ device_slot_interface(mconfig, *this),
+ device_z80daisy_interface(mconfig, *this)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void tiki100_bus_slot_t::device_start()
+{
+ m_bus = machine().device<tiki100_bus_t>(TIKI100_BUS_TAG);
+ device_tiki100bus_card_interface *dev = dynamic_cast<device_tiki100bus_card_interface *>(get_card_device());
+ if (dev)
+ {
+ m_bus->add_card(dev);
+ m_card = dev;
+ }
+}
+
+
+//-------------------------------------------------
+// tiki100_bus_t - constructor
+//-------------------------------------------------
+
+tiki100_bus_t::tiki100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, TIKI100_BUS, "TIKI-100 expansion bus", tag, owner, clock, "tiki100bus", __FILE__),
+ m_irq_cb(*this),
+ m_nmi_cb(*this),
+ m_busrq_cb(*this),
+ m_in_mrq_cb(*this),
+ m_out_mrq_cb(*this)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void tiki100_bus_t::device_start()
+{
+ // resolve callbacks
+ m_irq_cb.resolve_safe();
+ m_nmi_cb.resolve_safe();
+ m_busrq_cb.resolve_safe();
+ m_in_mrq_cb.resolve();
+ m_out_mrq_cb.resolve();
+}
+
+
+//-------------------------------------------------
+// add_card - add card
+//-------------------------------------------------
+
+void tiki100_bus_t::add_card(device_tiki100bus_card_interface *card)
+{
+ m_device_list.append(*card);
+
+ card->m_bus = this;
+}
+
+
+//-------------------------------------------------
+// mrq_r - memory read
+//-------------------------------------------------
+
+UINT8 tiki100_bus_t::mrq_r(address_space &space, offs_t offset, UINT8 data, bool &mdis)
+{
+ device_tiki100bus_card_interface *entry = m_device_list.first();
+
+ while (entry)
+ {
+ data &= entry->mrq_r(space, offset, data, mdis);
+ entry = entry->next();
+ }
+
+ return data;
+}
+
+
+//-------------------------------------------------
+// mrq_w - memory write
+//-------------------------------------------------
+
+WRITE8_MEMBER( tiki100_bus_t::mrq_w )
+{
+ device_tiki100bus_card_interface *entry = m_device_list.first();
+
+ while (entry)
+ {
+ entry->mrq_w(space, offset, data);
+ entry = entry->next();
+ }
+}
+
+
+//-------------------------------------------------
+// iorq_r - I/O read
+//-------------------------------------------------
+
+UINT8 tiki100_bus_t::iorq_r(address_space &space, offs_t offset, UINT8 data)
+{
+ device_tiki100bus_card_interface *entry = m_device_list.first();
+
+ while (entry)
+ {
+ data &= entry->iorq_r(space, offset, data);
+ entry = entry->next();
+ }
+
+ return data;
+}
+
+
+//-------------------------------------------------
+// iorq_w - I/O write
+//-------------------------------------------------
+
+WRITE8_MEMBER( tiki100_bus_t::iorq_w )
+{
+ device_tiki100bus_card_interface *entry = m_device_list.first();
+
+ while (entry)
+ {
+ entry->iorq_w(space, offset, data);
+ entry = entry->next();
+ }
+}
+
+
+//-------------------------------------------------
+// busak_w - bus acknowledge write
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( tiki100_bus_t::busak_w )
+{
+ device_tiki100bus_card_interface *entry = m_device_list.first();
+
+ while (entry)
+ {
+ entry->busak_w(state);
+ entry = entry->next();
+ }
+}
+
+
+
+//**************************************************************************
+// DEVICE TIKI-100 BUS CARD INTERFACE
+//**************************************************************************
+
+//-------------------------------------------------
+// device_tiki100bus_card_interface - constructor
+//-------------------------------------------------
+
+device_tiki100bus_card_interface::device_tiki100bus_card_interface(const machine_config &mconfig, device_t &device) :
+ device_slot_card_interface(mconfig, device),
+ m_busak(CLEAR_LINE)
+{
+ m_slot = dynamic_cast<tiki100_bus_slot_t *>(device.owner());
+}
+
+
+//-------------------------------------------------
+// SLOT_INTERFACE( tiki100_cards )
+//-------------------------------------------------
+
+// slot devices
+#include "8088.h"
+#include "hdc.h"
+
+SLOT_INTERFACE_START( tiki100_cards )
+ SLOT_INTERFACE("8088", TIKI100_8088)
+ SLOT_INTERFACE("hdc", TIKI100_HDC)
+SLOT_INTERFACE_END
diff --git a/src/devices/bus/tiki100/exp.h b/src/devices/bus/tiki100/exp.h
new file mode 100644
index 00000000000..fc25c522c79
--- /dev/null
+++ b/src/devices/bus/tiki100/exp.h
@@ -0,0 +1,193 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ TIKI-100 expansion bus emulation
+
+**********************************************************************
+
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __TIKI100_BUS__
+#define __TIKI100_BUS__
+
+#include "emu.h"
+#include "cpu/z80/z80daisy.h"
+
+
+
+//**************************************************************************
+// CONSTANTS
+//**************************************************************************
+
+#define TIKI100_BUS_TAG "tiki100bus"
+
+
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_TIKI100_BUS_ADD() \
+ MCFG_DEVICE_ADD(TIKI100_BUS_TAG, TIKI100_BUS, 0)
+
+#define MCFG_TIKI100_BUS_SLOT_ADD(_tag, _def_slot) \
+ MCFG_DEVICE_ADD(_tag, TIKI100_BUS_SLOT, 0) \
+ MCFG_DEVICE_SLOT_INTERFACE(tiki100_cards, _def_slot, false)
+
+
+#define MCFG_TIKI100_BUS_IRQ_CALLBACK(_write) \
+ devcb = &tiki100_bus_t::set_irq_wr_callback(*device, DEVCB_##_write);
+
+#define MCFG_TIKI100_BUS_NMI_CALLBACK(_write) \
+ devcb = &tiki100_bus_t::set_nmi_wr_callback(*device, DEVCB_##_write);
+
+#define MCFG_TIKI100_BUS_BUSRQ_CALLBACK(_write) \
+ devcb = &tiki100_bus_t::set_busrq_wr_callback(*device, DEVCB_##_write);
+
+#define MCFG_TIKI100_BUS_IN_MREQ_CALLBACK(_read) \
+ devcb = &tiki100_bus_t::set_mrq_rd_callback(*device, DEVCB_##_read);
+
+#define MCFG_TIKI100_BUS_OUT_MREQ_CALLBACK(_write) \
+ devcb = &tiki100_bus_t::set_mrq_wr_callback(*device, DEVCB_##_write);
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> tiki100_bus_slot_t
+
+class tiki100_bus_t;
+class tiki100_bus_slot_t;
+
+
+// ======================> device_tiki100bus_card_interface
+
+class device_tiki100bus_card_interface : public device_slot_card_interface
+{
+ friend class tiki100_bus_t;
+
+public:
+ // construction/destruction
+ device_tiki100bus_card_interface(const machine_config &mconfig, device_t &device);
+ virtual ~device_tiki100bus_card_interface() { }
+
+ device_tiki100bus_card_interface *next() const { return m_next; }
+
+ // memory access
+ virtual UINT8 mrq_r(address_space &space, offs_t offset, UINT8 data, bool &mdis) { mdis = 1; return data; };
+ virtual void mrq_w(address_space &space, offs_t offset, UINT8 data) { };
+
+ // I/O access
+ virtual UINT8 iorq_r(address_space &space, offs_t offset, UINT8 data) { return data; };
+ virtual void iorq_w(address_space &space, offs_t offset, UINT8 data) { };
+
+ virtual void busak_w(int state) { m_busak = state; };
+
+ // Z80 daisy chain
+ virtual int z80daisy_irq_state() { return 0; }
+ virtual int z80daisy_irq_ack() { return 0; }
+ virtual void z80daisy_irq_reti() { }
+
+ tiki100_bus_t *m_bus;
+ tiki100_bus_slot_t *m_slot;
+ int m_busak;
+
+ device_tiki100bus_card_interface *m_next;
+};
+
+
+// ======================> tiki100_bus_slot_t
+
+class tiki100_bus_slot_t : public device_t,
+ public device_slot_interface,
+ public device_z80daisy_interface
+{
+public:
+ // construction/destruction
+ tiki100_bus_slot_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+
+protected:
+ // device_z80daisy_interface overrides
+ virtual int z80daisy_irq_state() { return get_card_device() ? m_card->z80daisy_irq_state() : 0; }
+ virtual int z80daisy_irq_ack() { return get_card_device() ? m_card->z80daisy_irq_ack() : 0; }
+ virtual void z80daisy_irq_reti() { if (get_card_device()) m_card->z80daisy_irq_reti(); }
+
+private:
+ // configuration
+ tiki100_bus_t *m_bus;
+ device_tiki100bus_card_interface *m_card;
+};
+
+
+// device type definition
+extern const device_type TIKI100_BUS_SLOT;
+
+
+// ======================> tiki100_bus_t
+
+class tiki100_bus_t : public device_t
+{
+public:
+ // construction/destruction
+ tiki100_bus_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ ~tiki100_bus_t() { m_device_list.detach_all(); }
+
+ template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_irq_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_nmi_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_nmi_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_busrq_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_busrq_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_mrq_rd_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_in_mrq_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_mrq_wr_callback(device_t &device, _Object object) { return downcast<tiki100_bus_t &>(device).m_out_mrq_cb.set_callback(object); }
+
+ void add_card(device_tiki100bus_card_interface *card);
+
+ // computer interface
+ UINT8 mrq_r(address_space &space, offs_t offset, UINT8 data, bool &mdis);
+ DECLARE_WRITE8_MEMBER( mrq_w );
+
+ UINT8 iorq_r(address_space &space, offs_t offset, UINT8 data);
+ DECLARE_WRITE8_MEMBER( iorq_w );
+
+ DECLARE_WRITE_LINE_MEMBER( busak_w );
+
+ // peripheral interface
+ DECLARE_WRITE_LINE_MEMBER( irq_w ) { m_irq_cb(state); }
+ DECLARE_WRITE_LINE_MEMBER( nmi_w ) { m_nmi_cb(state); }
+ DECLARE_WRITE_LINE_MEMBER( busrq_w ) { m_busrq_cb(state); }
+ DECLARE_READ8_MEMBER( exin_mrq_r ) { return m_in_mrq_cb(offset); }
+ DECLARE_WRITE8_MEMBER( exin_mrq_w ) { m_out_mrq_cb(offset, data); }
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+
+private:
+ devcb_write_line m_irq_cb;
+ devcb_write_line m_nmi_cb;
+ devcb_write_line m_busrq_cb;
+ devcb_read8 m_in_mrq_cb;
+ devcb_write8 m_out_mrq_cb;
+
+ simple_list<device_tiki100bus_card_interface> m_device_list;
+};
+
+
+// device type definition
+extern const device_type TIKI100_BUS;
+
+
+
+
+SLOT_INTERFACE_EXTERN( tiki100_cards );
+
+
+
+#endif
diff --git a/src/devices/bus/tiki100/hdc.c b/src/devices/bus/tiki100/hdc.c
new file mode 100644
index 00000000000..2b978635ead
--- /dev/null
+++ b/src/devices/bus/tiki100/hdc.c
@@ -0,0 +1,118 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ TIKI-100 Winchester controller card emulation
+
+**********************************************************************/
+
+#include "hdc.h"
+
+
+
+//**************************************************************************
+// MACROS/CONSTANTS
+//**************************************************************************
+
+#define WD1010_TAG "hdc"
+
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+const device_type TIKI100_HDC = &device_creator<tiki100_hdc_t>;
+
+
+//-------------------------------------------------
+// MACHINE_CONFIG_FRAGMENT( tiki100_hdc )
+//-------------------------------------------------
+
+static MACHINE_CONFIG_FRAGMENT( tiki100_hdc )
+ MCFG_DEVICE_ADD(WD1010_TAG, WD2010, 5000000)
+ //MCFG_WD2010_OUT_INTRQ_CB()
+ MCFG_WD2010_IN_DRDY_CB(VCC)
+ MCFG_WD2010_IN_INDEX_CB(VCC)
+ MCFG_WD2010_IN_WF_CB(VCC)
+ MCFG_WD2010_IN_TK000_CB(VCC)
+ MCFG_WD2010_IN_SC_CB(VCC)
+
+ MCFG_HARDDISK_ADD("hard0")
+ MCFG_HARDDISK_ADD("hard1")
+MACHINE_CONFIG_END
+
+
+//-------------------------------------------------
+// machine_config_additions - device-specific
+// machine configurations
+//-------------------------------------------------
+
+machine_config_constructor tiki100_hdc_t::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( tiki100_hdc );
+}
+
+
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// tiki100_hdc_t - constructor
+//-------------------------------------------------
+
+tiki100_hdc_t::tiki100_hdc_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t(mconfig, TIKI100_HDC, "TIKI-100 Winchester controller", tag, owner, clock, "tiki100_hdc", __FILE__),
+ device_tiki100bus_card_interface(mconfig, *this),
+ m_hdc(*this, WD1010_TAG)
+{
+}
+
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void tiki100_hdc_t::device_start()
+{
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void tiki100_hdc_t::device_reset()
+{
+ m_hdc->reset();
+}
+
+
+//-------------------------------------------------
+// tiki100bus_iorq_r - I/O read
+//-------------------------------------------------
+
+UINT8 tiki100_hdc_t::iorq_r(address_space &space, offs_t offset, UINT8 data)
+{
+ if ((offset & 0xf8) == 0x20)
+ {
+ data = m_hdc->read(space, offset & 0x07);
+ }
+
+ return data;
+}
+
+
+//-------------------------------------------------
+// tiki100bus_iorq_w - I/O write
+//-------------------------------------------------
+
+void tiki100_hdc_t::iorq_w(address_space &space, offs_t offset, UINT8 data)
+{
+ if ((offset & 0xf8) == 0x20)
+ {
+ m_hdc->write(space, offset, data);
+ }
+}
diff --git a/src/devices/bus/tiki100/hdc.h b/src/devices/bus/tiki100/hdc.h
new file mode 100644
index 00000000000..d06342fc66c
--- /dev/null
+++ b/src/devices/bus/tiki100/hdc.h
@@ -0,0 +1,55 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder
+/**********************************************************************
+
+ TIKI-100 Winchester controller card emulation
+
+**********************************************************************/
+
+#pragma once
+
+#ifndef __TIKI100_HDC__
+#define __TIKI100_HDC__
+
+#include "emu.h"
+#include "bus/tiki100/exp.h"
+#include "imagedev/harddriv.h"
+#include "machine/wd2010.h"
+
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> tiki100_hdc_t
+
+class tiki100_hdc_t : public device_t,
+ public device_tiki100bus_card_interface
+{
+public:
+ // construction/destruction
+ tiki100_hdc_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+ // device_tiki100bus_card_interface overrides
+ virtual UINT8 iorq_r(address_space &space, offs_t offset, UINT8 data);
+ virtual void iorq_w(address_space &space, offs_t offset, UINT8 data);
+
+private:
+ required_device<wd2010_device> m_hdc;
+};
+
+
+// device type definition
+extern const device_type TIKI100_HDC;
+
+
+#endif
diff --git a/src/emu/bus/tvc/hbf.c b/src/devices/bus/tvc/hbf.c
index 760226a2cfb..760226a2cfb 100644
--- a/src/emu/bus/tvc/hbf.c
+++ b/src/devices/bus/tvc/hbf.c
diff --git a/src/emu/bus/tvc/hbf.h b/src/devices/bus/tvc/hbf.h
index 6a321ae5599..6a321ae5599 100644
--- a/src/emu/bus/tvc/hbf.h
+++ b/src/devices/bus/tvc/hbf.h
diff --git a/src/emu/bus/tvc/tvc.c b/src/devices/bus/tvc/tvc.c
index 54ea47c9149..54ea47c9149 100644
--- a/src/emu/bus/tvc/tvc.c
+++ b/src/devices/bus/tvc/tvc.c
diff --git a/src/emu/bus/tvc/tvc.h b/src/devices/bus/tvc/tvc.h
index 181806f8195..181806f8195 100644
--- a/src/emu/bus/tvc/tvc.h
+++ b/src/devices/bus/tvc/tvc.h
diff --git a/src/emu/bus/vboy/rom.c b/src/devices/bus/vboy/rom.c
index 587be158610..587be158610 100644
--- a/src/emu/bus/vboy/rom.c
+++ b/src/devices/bus/vboy/rom.c
diff --git a/src/emu/bus/vboy/rom.h b/src/devices/bus/vboy/rom.h
index 0f26468892b..0f26468892b 100644
--- a/src/emu/bus/vboy/rom.h
+++ b/src/devices/bus/vboy/rom.h
diff --git a/src/emu/bus/vboy/slot.c b/src/devices/bus/vboy/slot.c
index da00aeaca04..da00aeaca04 100644
--- a/src/emu/bus/vboy/slot.c
+++ b/src/devices/bus/vboy/slot.c
diff --git a/src/emu/bus/vboy/slot.h b/src/devices/bus/vboy/slot.h
index e865eece213..e865eece213 100644
--- a/src/emu/bus/vboy/slot.h
+++ b/src/devices/bus/vboy/slot.h
diff --git a/src/emu/bus/vc4000/rom.c b/src/devices/bus/vc4000/rom.c
index 5c8ebf5c7bb..5c8ebf5c7bb 100644
--- a/src/emu/bus/vc4000/rom.c
+++ b/src/devices/bus/vc4000/rom.c
diff --git a/src/emu/bus/vc4000/rom.h b/src/devices/bus/vc4000/rom.h
index ae4502f57a2..ae4502f57a2 100644
--- a/src/emu/bus/vc4000/rom.h
+++ b/src/devices/bus/vc4000/rom.h
diff --git a/src/emu/bus/vc4000/slot.c b/src/devices/bus/vc4000/slot.c
index 2c353ef90b6..2c353ef90b6 100644
--- a/src/emu/bus/vc4000/slot.c
+++ b/src/devices/bus/vc4000/slot.c
diff --git a/src/emu/bus/vc4000/slot.h b/src/devices/bus/vc4000/slot.h
index 62cf4655f89..62cf4655f89 100644
--- a/src/emu/bus/vc4000/slot.h
+++ b/src/devices/bus/vc4000/slot.h
diff --git a/src/emu/bus/vcs/compumat.c b/src/devices/bus/vcs/compumat.c
index 4fc7d9cba5b..4fc7d9cba5b 100644
--- a/src/emu/bus/vcs/compumat.c
+++ b/src/devices/bus/vcs/compumat.c
diff --git a/src/emu/bus/vcs/compumat.h b/src/devices/bus/vcs/compumat.h
index 80f1df069fd..80f1df069fd 100644
--- a/src/emu/bus/vcs/compumat.h
+++ b/src/devices/bus/vcs/compumat.h
diff --git a/src/emu/bus/vcs/dpc.c b/src/devices/bus/vcs/dpc.c
index f0787b6bcb4..f0787b6bcb4 100644
--- a/src/emu/bus/vcs/dpc.c
+++ b/src/devices/bus/vcs/dpc.c
diff --git a/src/emu/bus/vcs/dpc.h b/src/devices/bus/vcs/dpc.h
index 9e04ddb2e67..9e04ddb2e67 100644
--- a/src/emu/bus/vcs/dpc.h
+++ b/src/devices/bus/vcs/dpc.h
diff --git a/src/emu/bus/vcs/rom.c b/src/devices/bus/vcs/rom.c
index b689db7094e..b689db7094e 100755
--- a/src/emu/bus/vcs/rom.c
+++ b/src/devices/bus/vcs/rom.c
diff --git a/src/emu/bus/vcs/rom.h b/src/devices/bus/vcs/rom.h
index 2d7b73586be..2d7b73586be 100755
--- a/src/emu/bus/vcs/rom.h
+++ b/src/devices/bus/vcs/rom.h
diff --git a/src/emu/bus/vcs/scharger.c b/src/devices/bus/vcs/scharger.c
index a3d90391ce9..a3d90391ce9 100644
--- a/src/emu/bus/vcs/scharger.c
+++ b/src/devices/bus/vcs/scharger.c
diff --git a/src/emu/bus/vcs/scharger.h b/src/devices/bus/vcs/scharger.h
index d2f669b0bbd..d2f669b0bbd 100644
--- a/src/emu/bus/vcs/scharger.h
+++ b/src/devices/bus/vcs/scharger.h
diff --git a/src/emu/bus/vcs/vcs_slot.c b/src/devices/bus/vcs/vcs_slot.c
index d04f45a195e..d04f45a195e 100755
--- a/src/emu/bus/vcs/vcs_slot.c
+++ b/src/devices/bus/vcs/vcs_slot.c
diff --git a/src/emu/bus/vcs/vcs_slot.h b/src/devices/bus/vcs/vcs_slot.h
index 9b087988d80..9b087988d80 100755
--- a/src/emu/bus/vcs/vcs_slot.h
+++ b/src/devices/bus/vcs/vcs_slot.h
diff --git a/src/emu/bus/vcs_ctrl/ctrl.c b/src/devices/bus/vcs_ctrl/ctrl.c
index 07afbb93cb1..07afbb93cb1 100644
--- a/src/emu/bus/vcs_ctrl/ctrl.c
+++ b/src/devices/bus/vcs_ctrl/ctrl.c
diff --git a/src/emu/bus/vcs_ctrl/ctrl.h b/src/devices/bus/vcs_ctrl/ctrl.h
index 50f817a2a01..50f817a2a01 100644
--- a/src/emu/bus/vcs_ctrl/ctrl.h
+++ b/src/devices/bus/vcs_ctrl/ctrl.h
diff --git a/src/emu/bus/vcs_ctrl/joybooster.c b/src/devices/bus/vcs_ctrl/joybooster.c
index e1fbfec7c90..e1fbfec7c90 100644
--- a/src/emu/bus/vcs_ctrl/joybooster.c
+++ b/src/devices/bus/vcs_ctrl/joybooster.c
diff --git a/src/emu/bus/vcs_ctrl/joybooster.h b/src/devices/bus/vcs_ctrl/joybooster.h
index 3b08f8b9577..3b08f8b9577 100644
--- a/src/emu/bus/vcs_ctrl/joybooster.h
+++ b/src/devices/bus/vcs_ctrl/joybooster.h
diff --git a/src/emu/bus/vcs_ctrl/joystick.c b/src/devices/bus/vcs_ctrl/joystick.c
index f1539eabeef..f1539eabeef 100644
--- a/src/emu/bus/vcs_ctrl/joystick.c
+++ b/src/devices/bus/vcs_ctrl/joystick.c
diff --git a/src/emu/bus/vcs_ctrl/joystick.h b/src/devices/bus/vcs_ctrl/joystick.h
index 9e4d6eebed5..9e4d6eebed5 100644
--- a/src/emu/bus/vcs_ctrl/joystick.h
+++ b/src/devices/bus/vcs_ctrl/joystick.h
diff --git a/src/emu/bus/vcs_ctrl/keypad.c b/src/devices/bus/vcs_ctrl/keypad.c
index 0ef8b6b4db3..0ef8b6b4db3 100644
--- a/src/emu/bus/vcs_ctrl/keypad.c
+++ b/src/devices/bus/vcs_ctrl/keypad.c
diff --git a/src/emu/bus/vcs_ctrl/keypad.h b/src/devices/bus/vcs_ctrl/keypad.h
index 8c1cc25dbee..8c1cc25dbee 100644
--- a/src/emu/bus/vcs_ctrl/keypad.h
+++ b/src/devices/bus/vcs_ctrl/keypad.h
diff --git a/src/emu/bus/vcs_ctrl/lightpen.c b/src/devices/bus/vcs_ctrl/lightpen.c
index 8531930b2a1..8531930b2a1 100644
--- a/src/emu/bus/vcs_ctrl/lightpen.c
+++ b/src/devices/bus/vcs_ctrl/lightpen.c
diff --git a/src/emu/bus/vcs_ctrl/lightpen.h b/src/devices/bus/vcs_ctrl/lightpen.h
index 61849e789ad..61849e789ad 100644
--- a/src/emu/bus/vcs_ctrl/lightpen.h
+++ b/src/devices/bus/vcs_ctrl/lightpen.h
diff --git a/src/emu/bus/vcs_ctrl/paddles.c b/src/devices/bus/vcs_ctrl/paddles.c
index b8a4f4a6de5..b8a4f4a6de5 100644
--- a/src/emu/bus/vcs_ctrl/paddles.c
+++ b/src/devices/bus/vcs_ctrl/paddles.c
diff --git a/src/emu/bus/vcs_ctrl/paddles.h b/src/devices/bus/vcs_ctrl/paddles.h
index 90e8dc910ab..90e8dc910ab 100644
--- a/src/emu/bus/vcs_ctrl/paddles.h
+++ b/src/devices/bus/vcs_ctrl/paddles.h
diff --git a/src/emu/bus/vcs_ctrl/wheel.c b/src/devices/bus/vcs_ctrl/wheel.c
index 9d1f3009596..9d1f3009596 100644
--- a/src/emu/bus/vcs_ctrl/wheel.c
+++ b/src/devices/bus/vcs_ctrl/wheel.c
diff --git a/src/emu/bus/vcs_ctrl/wheel.h b/src/devices/bus/vcs_ctrl/wheel.h
index 5ae4fc8a9d7..5ae4fc8a9d7 100644
--- a/src/emu/bus/vcs_ctrl/wheel.h
+++ b/src/devices/bus/vcs_ctrl/wheel.h
diff --git a/src/emu/bus/vectrex/rom.c b/src/devices/bus/vectrex/rom.c
index 866fd741f9a..866fd741f9a 100644
--- a/src/emu/bus/vectrex/rom.c
+++ b/src/devices/bus/vectrex/rom.c
diff --git a/src/emu/bus/vectrex/rom.h b/src/devices/bus/vectrex/rom.h
index eac8ef812f3..eac8ef812f3 100644
--- a/src/emu/bus/vectrex/rom.h
+++ b/src/devices/bus/vectrex/rom.h
diff --git a/src/emu/bus/vectrex/slot.c b/src/devices/bus/vectrex/slot.c
index 932248c22ce..932248c22ce 100644
--- a/src/emu/bus/vectrex/slot.c
+++ b/src/devices/bus/vectrex/slot.c
diff --git a/src/emu/bus/vectrex/slot.h b/src/devices/bus/vectrex/slot.h
index e2f5d3cdbe5..e2f5d3cdbe5 100644
--- a/src/emu/bus/vectrex/slot.h
+++ b/src/devices/bus/vectrex/slot.h
diff --git a/src/emu/bus/vic10/exp.c b/src/devices/bus/vic10/exp.c
index c6d7a43c6bb..c6d7a43c6bb 100644
--- a/src/emu/bus/vic10/exp.c
+++ b/src/devices/bus/vic10/exp.c
diff --git a/src/emu/bus/vic10/exp.h b/src/devices/bus/vic10/exp.h
index 26e5f6c1e45..26e5f6c1e45 100644
--- a/src/emu/bus/vic10/exp.h
+++ b/src/devices/bus/vic10/exp.h
diff --git a/src/emu/bus/vic10/std.c b/src/devices/bus/vic10/std.c
index a0cd1aa67cf..a0cd1aa67cf 100644
--- a/src/emu/bus/vic10/std.c
+++ b/src/devices/bus/vic10/std.c
diff --git a/src/emu/bus/vic10/std.h b/src/devices/bus/vic10/std.h
index cdbaef140de..cdbaef140de 100644
--- a/src/emu/bus/vic10/std.h
+++ b/src/devices/bus/vic10/std.h
diff --git a/src/emu/bus/vic20/4cga.c b/src/devices/bus/vic20/4cga.c
index 67901823065..67901823065 100644
--- a/src/emu/bus/vic20/4cga.c
+++ b/src/devices/bus/vic20/4cga.c
diff --git a/src/emu/bus/vic20/4cga.h b/src/devices/bus/vic20/4cga.h
index b852c5e0958..b852c5e0958 100644
--- a/src/emu/bus/vic20/4cga.h
+++ b/src/devices/bus/vic20/4cga.h
diff --git a/src/emu/bus/vic20/exp.c b/src/devices/bus/vic20/exp.c
index bab88756ff5..bab88756ff5 100644
--- a/src/emu/bus/vic20/exp.c
+++ b/src/devices/bus/vic20/exp.c
diff --git a/src/emu/bus/vic20/exp.h b/src/devices/bus/vic20/exp.h
index 8dfd840fa22..8dfd840fa22 100644
--- a/src/emu/bus/vic20/exp.h
+++ b/src/devices/bus/vic20/exp.h
diff --git a/src/emu/bus/vic20/fe3.c b/src/devices/bus/vic20/fe3.c
index 6b9cc319cd4..6b9cc319cd4 100644
--- a/src/emu/bus/vic20/fe3.c
+++ b/src/devices/bus/vic20/fe3.c
diff --git a/src/emu/bus/vic20/fe3.h b/src/devices/bus/vic20/fe3.h
index f42ae0e2f94..f42ae0e2f94 100644
--- a/src/emu/bus/vic20/fe3.h
+++ b/src/devices/bus/vic20/fe3.h
diff --git a/src/emu/bus/vic20/megacart.c b/src/devices/bus/vic20/megacart.c
index e92e1dbbc55..e92e1dbbc55 100644
--- a/src/emu/bus/vic20/megacart.c
+++ b/src/devices/bus/vic20/megacart.c
diff --git a/src/emu/bus/vic20/megacart.h b/src/devices/bus/vic20/megacart.h
index 5e9f82b10bf..5e9f82b10bf 100644
--- a/src/emu/bus/vic20/megacart.h
+++ b/src/devices/bus/vic20/megacart.h
diff --git a/src/emu/bus/vic20/std.c b/src/devices/bus/vic20/std.c
index 4757470b093..4757470b093 100644
--- a/src/emu/bus/vic20/std.c
+++ b/src/devices/bus/vic20/std.c
diff --git a/src/emu/bus/vic20/std.h b/src/devices/bus/vic20/std.h
index e7a70d338e5..e7a70d338e5 100644
--- a/src/emu/bus/vic20/std.h
+++ b/src/devices/bus/vic20/std.h
diff --git a/src/emu/bus/vic20/user.c b/src/devices/bus/vic20/user.c
index f810cddc46e..f810cddc46e 100644
--- a/src/emu/bus/vic20/user.c
+++ b/src/devices/bus/vic20/user.c
diff --git a/src/emu/bus/vic20/user.h b/src/devices/bus/vic20/user.h
index 2273a744917..2273a744917 100644
--- a/src/emu/bus/vic20/user.h
+++ b/src/devices/bus/vic20/user.h
diff --git a/src/emu/bus/vic20/vic1010.c b/src/devices/bus/vic20/vic1010.c
index 98fd3552afa..98fd3552afa 100644
--- a/src/emu/bus/vic20/vic1010.c
+++ b/src/devices/bus/vic20/vic1010.c
diff --git a/src/emu/bus/vic20/vic1010.h b/src/devices/bus/vic20/vic1010.h
index 56f194635b8..56f194635b8 100644
--- a/src/emu/bus/vic20/vic1010.h
+++ b/src/devices/bus/vic20/vic1010.h
diff --git a/src/emu/bus/vic20/vic1011.c b/src/devices/bus/vic20/vic1011.c
index 402a44f41df..402a44f41df 100644
--- a/src/emu/bus/vic20/vic1011.c
+++ b/src/devices/bus/vic20/vic1011.c
diff --git a/src/emu/bus/vic20/vic1011.h b/src/devices/bus/vic20/vic1011.h
index 9ec16e5fd2a..9ec16e5fd2a 100644
--- a/src/emu/bus/vic20/vic1011.h
+++ b/src/devices/bus/vic20/vic1011.h
diff --git a/src/emu/bus/vic20/vic1110.c b/src/devices/bus/vic20/vic1110.c
index c8d9acb1398..c8d9acb1398 100644
--- a/src/emu/bus/vic20/vic1110.c
+++ b/src/devices/bus/vic20/vic1110.c
diff --git a/src/emu/bus/vic20/vic1110.h b/src/devices/bus/vic20/vic1110.h
index 4b6aecebd5a..4b6aecebd5a 100644
--- a/src/emu/bus/vic20/vic1110.h
+++ b/src/devices/bus/vic20/vic1110.h
diff --git a/src/emu/bus/vic20/vic1111.c b/src/devices/bus/vic20/vic1111.c
index 770d5639d8f..770d5639d8f 100644
--- a/src/emu/bus/vic20/vic1111.c
+++ b/src/devices/bus/vic20/vic1111.c
diff --git a/src/emu/bus/vic20/vic1111.h b/src/devices/bus/vic20/vic1111.h
index e20dc4a8e2d..e20dc4a8e2d 100644
--- a/src/emu/bus/vic20/vic1111.h
+++ b/src/devices/bus/vic20/vic1111.h
diff --git a/src/emu/bus/vic20/vic1112.c b/src/devices/bus/vic20/vic1112.c
index 482f7f01b03..482f7f01b03 100644
--- a/src/emu/bus/vic20/vic1112.c
+++ b/src/devices/bus/vic20/vic1112.c
diff --git a/src/emu/bus/vic20/vic1112.h b/src/devices/bus/vic20/vic1112.h
index 6149866c020..6149866c020 100644
--- a/src/emu/bus/vic20/vic1112.h
+++ b/src/devices/bus/vic20/vic1112.h
diff --git a/src/emu/bus/vic20/vic1210.c b/src/devices/bus/vic20/vic1210.c
index 5acb518cd08..5acb518cd08 100644
--- a/src/emu/bus/vic20/vic1210.c
+++ b/src/devices/bus/vic20/vic1210.c
diff --git a/src/emu/bus/vic20/vic1210.h b/src/devices/bus/vic20/vic1210.h
index 904336dd6c0..904336dd6c0 100644
--- a/src/emu/bus/vic20/vic1210.h
+++ b/src/devices/bus/vic20/vic1210.h
diff --git a/src/emu/bus/vidbrain/exp.c b/src/devices/bus/vidbrain/exp.c
index e3634283efa..e3634283efa 100644
--- a/src/emu/bus/vidbrain/exp.c
+++ b/src/devices/bus/vidbrain/exp.c
diff --git a/src/emu/bus/vidbrain/exp.h b/src/devices/bus/vidbrain/exp.h
index 8e6064dbc94..8e6064dbc94 100644
--- a/src/emu/bus/vidbrain/exp.h
+++ b/src/devices/bus/vidbrain/exp.h
diff --git a/src/emu/bus/vidbrain/money_minder.c b/src/devices/bus/vidbrain/money_minder.c
index f5fa70bd868..f5fa70bd868 100644
--- a/src/emu/bus/vidbrain/money_minder.c
+++ b/src/devices/bus/vidbrain/money_minder.c
diff --git a/src/emu/bus/vidbrain/money_minder.h b/src/devices/bus/vidbrain/money_minder.h
index 9cdd6c8f4e6..9cdd6c8f4e6 100644
--- a/src/emu/bus/vidbrain/money_minder.h
+++ b/src/devices/bus/vidbrain/money_minder.h
diff --git a/src/emu/bus/vidbrain/std.c b/src/devices/bus/vidbrain/std.c
index f56f5fd9d9f..f56f5fd9d9f 100644
--- a/src/emu/bus/vidbrain/std.c
+++ b/src/devices/bus/vidbrain/std.c
diff --git a/src/emu/bus/vidbrain/std.h b/src/devices/bus/vidbrain/std.h
index 74e9b4096e8..74e9b4096e8 100644
--- a/src/emu/bus/vidbrain/std.h
+++ b/src/devices/bus/vidbrain/std.h
diff --git a/src/emu/bus/vidbrain/timeshare.c b/src/devices/bus/vidbrain/timeshare.c
index 196bf66db2e..196bf66db2e 100644
--- a/src/emu/bus/vidbrain/timeshare.c
+++ b/src/devices/bus/vidbrain/timeshare.c
diff --git a/src/emu/bus/vidbrain/timeshare.h b/src/devices/bus/vidbrain/timeshare.h
index 6f57c04d32f..6f57c04d32f 100644
--- a/src/emu/bus/vidbrain/timeshare.h
+++ b/src/devices/bus/vidbrain/timeshare.h
diff --git a/src/emu/bus/vip/byteio.c b/src/devices/bus/vip/byteio.c
index bdebad76dba..bdebad76dba 100644
--- a/src/emu/bus/vip/byteio.c
+++ b/src/devices/bus/vip/byteio.c
diff --git a/src/emu/bus/vip/byteio.h b/src/devices/bus/vip/byteio.h
index fd696975c7c..fd696975c7c 100644
--- a/src/emu/bus/vip/byteio.h
+++ b/src/devices/bus/vip/byteio.h
diff --git a/src/emu/bus/vip/exp.c b/src/devices/bus/vip/exp.c
index 4d83df7119a..4d83df7119a 100644
--- a/src/emu/bus/vip/exp.c
+++ b/src/devices/bus/vip/exp.c
diff --git a/src/emu/bus/vip/exp.h b/src/devices/bus/vip/exp.h
index 37a33482db8..37a33482db8 100644
--- a/src/emu/bus/vip/exp.h
+++ b/src/devices/bus/vip/exp.h
diff --git a/src/emu/bus/vip/vp550.c b/src/devices/bus/vip/vp550.c
index c5f4ed201e4..c5f4ed201e4 100644
--- a/src/emu/bus/vip/vp550.c
+++ b/src/devices/bus/vip/vp550.c
diff --git a/src/emu/bus/vip/vp550.h b/src/devices/bus/vip/vp550.h
index 1045871b5d7..1045871b5d7 100644
--- a/src/emu/bus/vip/vp550.h
+++ b/src/devices/bus/vip/vp550.h
diff --git a/src/emu/bus/vip/vp570.c b/src/devices/bus/vip/vp570.c
index 42ec4119c21..42ec4119c21 100644
--- a/src/emu/bus/vip/vp570.c
+++ b/src/devices/bus/vip/vp570.c
diff --git a/src/emu/bus/vip/vp570.h b/src/devices/bus/vip/vp570.h
index 2a382a064f5..2a382a064f5 100644
--- a/src/emu/bus/vip/vp570.h
+++ b/src/devices/bus/vip/vp570.h
diff --git a/src/emu/bus/vip/vp575.c b/src/devices/bus/vip/vp575.c
index c7801e9c414..c7801e9c414 100644
--- a/src/emu/bus/vip/vp575.c
+++ b/src/devices/bus/vip/vp575.c
diff --git a/src/emu/bus/vip/vp575.h b/src/devices/bus/vip/vp575.h
index 83ea31fd277..83ea31fd277 100644
--- a/src/emu/bus/vip/vp575.h
+++ b/src/devices/bus/vip/vp575.h
diff --git a/src/emu/bus/vip/vp585.c b/src/devices/bus/vip/vp585.c
index dd51edebcff..dd51edebcff 100644
--- a/src/emu/bus/vip/vp585.c
+++ b/src/devices/bus/vip/vp585.c
diff --git a/src/emu/bus/vip/vp585.h b/src/devices/bus/vip/vp585.h
index 2bda8647c57..2bda8647c57 100644
--- a/src/emu/bus/vip/vp585.h
+++ b/src/devices/bus/vip/vp585.h
diff --git a/src/emu/bus/vip/vp590.c b/src/devices/bus/vip/vp590.c
index e4a045388dd..e4a045388dd 100644
--- a/src/emu/bus/vip/vp590.c
+++ b/src/devices/bus/vip/vp590.c
diff --git a/src/emu/bus/vip/vp590.h b/src/devices/bus/vip/vp590.h
index e4be2ab48fa..e4be2ab48fa 100644
--- a/src/emu/bus/vip/vp590.h
+++ b/src/devices/bus/vip/vp590.h
diff --git a/src/emu/bus/vip/vp595.c b/src/devices/bus/vip/vp595.c
index d2ed10de18d..d2ed10de18d 100644
--- a/src/emu/bus/vip/vp595.c
+++ b/src/devices/bus/vip/vp595.c
diff --git a/src/emu/bus/vip/vp595.h b/src/devices/bus/vip/vp595.h
index bd7bcdbdbe7..bd7bcdbdbe7 100644
--- a/src/emu/bus/vip/vp595.h
+++ b/src/devices/bus/vip/vp595.h
diff --git a/src/emu/bus/vip/vp620.c b/src/devices/bus/vip/vp620.c
index 42a00b37444..42a00b37444 100644
--- a/src/emu/bus/vip/vp620.c
+++ b/src/devices/bus/vip/vp620.c
diff --git a/src/emu/bus/vip/vp620.h b/src/devices/bus/vip/vp620.h
index 67400cd2304..67400cd2304 100644
--- a/src/emu/bus/vip/vp620.h
+++ b/src/devices/bus/vip/vp620.h
diff --git a/src/emu/bus/vip/vp700.c b/src/devices/bus/vip/vp700.c
index 7d9b32536a7..7d9b32536a7 100644
--- a/src/emu/bus/vip/vp700.c
+++ b/src/devices/bus/vip/vp700.c
diff --git a/src/emu/bus/vip/vp700.h b/src/devices/bus/vip/vp700.h
index 8f521199d76..8f521199d76 100644
--- a/src/emu/bus/vip/vp700.h
+++ b/src/devices/bus/vip/vp700.h
diff --git a/src/emu/bus/vtech/ioexp/carts.c b/src/devices/bus/vtech/ioexp/carts.c
index 5bdd6aca63f..5bdd6aca63f 100644
--- a/src/emu/bus/vtech/ioexp/carts.c
+++ b/src/devices/bus/vtech/ioexp/carts.c
diff --git a/src/emu/bus/vtech/ioexp/carts.h b/src/devices/bus/vtech/ioexp/carts.h
index ef9125b5e7b..ef9125b5e7b 100644
--- a/src/emu/bus/vtech/ioexp/carts.h
+++ b/src/devices/bus/vtech/ioexp/carts.h
diff --git a/src/emu/bus/vtech/ioexp/ioexp.c b/src/devices/bus/vtech/ioexp/ioexp.c
index 3028ffd5226..3028ffd5226 100644
--- a/src/emu/bus/vtech/ioexp/ioexp.c
+++ b/src/devices/bus/vtech/ioexp/ioexp.c
diff --git a/src/emu/bus/vtech/ioexp/ioexp.h b/src/devices/bus/vtech/ioexp/ioexp.h
index 7948a9ae932..7948a9ae932 100644
--- a/src/emu/bus/vtech/ioexp/ioexp.h
+++ b/src/devices/bus/vtech/ioexp/ioexp.h
diff --git a/src/emu/bus/vtech/ioexp/joystick.c b/src/devices/bus/vtech/ioexp/joystick.c
index 38e9732d17a..38e9732d17a 100644
--- a/src/emu/bus/vtech/ioexp/joystick.c
+++ b/src/devices/bus/vtech/ioexp/joystick.c
diff --git a/src/emu/bus/vtech/ioexp/joystick.h b/src/devices/bus/vtech/ioexp/joystick.h
index 7c6612fc3fc..7c6612fc3fc 100644
--- a/src/emu/bus/vtech/ioexp/joystick.h
+++ b/src/devices/bus/vtech/ioexp/joystick.h
diff --git a/src/emu/bus/vtech/ioexp/printer.c b/src/devices/bus/vtech/ioexp/printer.c
index a122c9fa2c7..a122c9fa2c7 100644
--- a/src/emu/bus/vtech/ioexp/printer.c
+++ b/src/devices/bus/vtech/ioexp/printer.c
diff --git a/src/emu/bus/vtech/ioexp/printer.h b/src/devices/bus/vtech/ioexp/printer.h
index ddf2ce9726c..ddf2ce9726c 100644
--- a/src/emu/bus/vtech/ioexp/printer.h
+++ b/src/devices/bus/vtech/ioexp/printer.h
diff --git a/src/emu/bus/vtech/memexp/carts.c b/src/devices/bus/vtech/memexp/carts.c
index dc40d0e8a57..dc40d0e8a57 100644
--- a/src/emu/bus/vtech/memexp/carts.c
+++ b/src/devices/bus/vtech/memexp/carts.c
diff --git a/src/emu/bus/vtech/memexp/carts.h b/src/devices/bus/vtech/memexp/carts.h
index a1e86987a31..a1e86987a31 100644
--- a/src/emu/bus/vtech/memexp/carts.h
+++ b/src/devices/bus/vtech/memexp/carts.h
diff --git a/src/emu/bus/vtech/memexp/floppy.c b/src/devices/bus/vtech/memexp/floppy.c
index ef169703035..ef169703035 100644
--- a/src/emu/bus/vtech/memexp/floppy.c
+++ b/src/devices/bus/vtech/memexp/floppy.c
diff --git a/src/emu/bus/vtech/memexp/floppy.h b/src/devices/bus/vtech/memexp/floppy.h
index 91c332332c1..91c332332c1 100644
--- a/src/emu/bus/vtech/memexp/floppy.h
+++ b/src/devices/bus/vtech/memexp/floppy.h
diff --git a/src/emu/bus/vtech/memexp/memexp.c b/src/devices/bus/vtech/memexp/memexp.c
index d41b2d073b7..d41b2d073b7 100644
--- a/src/emu/bus/vtech/memexp/memexp.c
+++ b/src/devices/bus/vtech/memexp/memexp.c
diff --git a/src/emu/bus/vtech/memexp/memexp.h b/src/devices/bus/vtech/memexp/memexp.h
index d0de2049b5b..d0de2049b5b 100644
--- a/src/emu/bus/vtech/memexp/memexp.h
+++ b/src/devices/bus/vtech/memexp/memexp.h
diff --git a/src/emu/bus/vtech/memexp/memory.c b/src/devices/bus/vtech/memexp/memory.c
index 5b4b9d71701..5b4b9d71701 100644
--- a/src/emu/bus/vtech/memexp/memory.c
+++ b/src/devices/bus/vtech/memexp/memory.c
diff --git a/src/emu/bus/vtech/memexp/memory.h b/src/devices/bus/vtech/memexp/memory.h
index e45d65c83fe..e45d65c83fe 100644
--- a/src/emu/bus/vtech/memexp/memory.h
+++ b/src/devices/bus/vtech/memexp/memory.h
diff --git a/src/emu/bus/vtech/memexp/rs232.c b/src/devices/bus/vtech/memexp/rs232.c
index bd74662c9f5..bd74662c9f5 100644
--- a/src/emu/bus/vtech/memexp/rs232.c
+++ b/src/devices/bus/vtech/memexp/rs232.c
diff --git a/src/emu/bus/vtech/memexp/rs232.h b/src/devices/bus/vtech/memexp/rs232.h
index c89133e5a33..c89133e5a33 100644
--- a/src/emu/bus/vtech/memexp/rs232.h
+++ b/src/devices/bus/vtech/memexp/rs232.h
diff --git a/src/emu/bus/vtech/memexp/wordpro.c b/src/devices/bus/vtech/memexp/wordpro.c
index 1a038bcf0ac..1a038bcf0ac 100644
--- a/src/emu/bus/vtech/memexp/wordpro.c
+++ b/src/devices/bus/vtech/memexp/wordpro.c
diff --git a/src/emu/bus/vtech/memexp/wordpro.h b/src/devices/bus/vtech/memexp/wordpro.h
index 8626787f16e..8626787f16e 100644
--- a/src/emu/bus/vtech/memexp/wordpro.h
+++ b/src/devices/bus/vtech/memexp/wordpro.h
diff --git a/src/emu/bus/wangpc/emb.c b/src/devices/bus/wangpc/emb.c
index e53b8ea2308..e53b8ea2308 100644
--- a/src/emu/bus/wangpc/emb.c
+++ b/src/devices/bus/wangpc/emb.c
diff --git a/src/emu/bus/wangpc/emb.h b/src/devices/bus/wangpc/emb.h
index 169cb68a428..169cb68a428 100644
--- a/src/emu/bus/wangpc/emb.h
+++ b/src/devices/bus/wangpc/emb.h
diff --git a/src/emu/bus/wangpc/lic.c b/src/devices/bus/wangpc/lic.c
index cebc359a942..cebc359a942 100644
--- a/src/emu/bus/wangpc/lic.c
+++ b/src/devices/bus/wangpc/lic.c
diff --git a/src/emu/bus/wangpc/lic.h b/src/devices/bus/wangpc/lic.h
index 5fb1d792bcd..5fb1d792bcd 100644
--- a/src/emu/bus/wangpc/lic.h
+++ b/src/devices/bus/wangpc/lic.h
diff --git a/src/emu/bus/wangpc/lvc.c b/src/devices/bus/wangpc/lvc.c
index fb0ef5e9325..fb0ef5e9325 100644
--- a/src/emu/bus/wangpc/lvc.c
+++ b/src/devices/bus/wangpc/lvc.c
diff --git a/src/emu/bus/wangpc/lvc.h b/src/devices/bus/wangpc/lvc.h
index 9f758f24c06..9f758f24c06 100644
--- a/src/emu/bus/wangpc/lvc.h
+++ b/src/devices/bus/wangpc/lvc.h
diff --git a/src/emu/bus/wangpc/mcc.c b/src/devices/bus/wangpc/mcc.c
index 35a664201b9..35a664201b9 100644
--- a/src/emu/bus/wangpc/mcc.c
+++ b/src/devices/bus/wangpc/mcc.c
diff --git a/src/emu/bus/wangpc/mcc.h b/src/devices/bus/wangpc/mcc.h
index a87be116251..a87be116251 100644
--- a/src/emu/bus/wangpc/mcc.h
+++ b/src/devices/bus/wangpc/mcc.h
diff --git a/src/emu/bus/wangpc/mvc.c b/src/devices/bus/wangpc/mvc.c
index 9a2e74a0f4a..9a2e74a0f4a 100644
--- a/src/emu/bus/wangpc/mvc.c
+++ b/src/devices/bus/wangpc/mvc.c
diff --git a/src/emu/bus/wangpc/mvc.h b/src/devices/bus/wangpc/mvc.h
index 6521aee33a4..6521aee33a4 100644
--- a/src/emu/bus/wangpc/mvc.h
+++ b/src/devices/bus/wangpc/mvc.h
diff --git a/src/emu/bus/wangpc/rtc.c b/src/devices/bus/wangpc/rtc.c
index 2f2ea7a073f..2f2ea7a073f 100644
--- a/src/emu/bus/wangpc/rtc.c
+++ b/src/devices/bus/wangpc/rtc.c
diff --git a/src/emu/bus/wangpc/rtc.h b/src/devices/bus/wangpc/rtc.h
index 1162c743f23..1162c743f23 100644
--- a/src/emu/bus/wangpc/rtc.h
+++ b/src/devices/bus/wangpc/rtc.h
diff --git a/src/emu/bus/wangpc/tig.c b/src/devices/bus/wangpc/tig.c
index a2b7214c054..a2b7214c054 100644
--- a/src/emu/bus/wangpc/tig.c
+++ b/src/devices/bus/wangpc/tig.c
diff --git a/src/emu/bus/wangpc/tig.h b/src/devices/bus/wangpc/tig.h
index 66b29c0ad3d..66b29c0ad3d 100644
--- a/src/emu/bus/wangpc/tig.h
+++ b/src/devices/bus/wangpc/tig.h
diff --git a/src/emu/bus/wangpc/wangpc.c b/src/devices/bus/wangpc/wangpc.c
index d5773f8e283..d5773f8e283 100644
--- a/src/emu/bus/wangpc/wangpc.c
+++ b/src/devices/bus/wangpc/wangpc.c
diff --git a/src/emu/bus/wangpc/wangpc.h b/src/devices/bus/wangpc/wangpc.h
index 2870a4e4ec5..2870a4e4ec5 100644
--- a/src/emu/bus/wangpc/wangpc.h
+++ b/src/devices/bus/wangpc/wangpc.h
diff --git a/src/emu/bus/wangpc/wdc.c b/src/devices/bus/wangpc/wdc.c
index 4e4e8fb92bc..4e4e8fb92bc 100644
--- a/src/emu/bus/wangpc/wdc.c
+++ b/src/devices/bus/wangpc/wdc.c
diff --git a/src/emu/bus/wangpc/wdc.h b/src/devices/bus/wangpc/wdc.h
index 156dc4c10a9..156dc4c10a9 100644
--- a/src/emu/bus/wangpc/wdc.h
+++ b/src/devices/bus/wangpc/wdc.h
diff --git a/src/emu/bus/wswan/rom.c b/src/devices/bus/wswan/rom.c
index de57f954b8c..de57f954b8c 100644
--- a/src/emu/bus/wswan/rom.c
+++ b/src/devices/bus/wswan/rom.c
diff --git a/src/emu/bus/wswan/rom.h b/src/devices/bus/wswan/rom.h
index e3ac0134c84..e3ac0134c84 100644
--- a/src/emu/bus/wswan/rom.h
+++ b/src/devices/bus/wswan/rom.h
diff --git a/src/emu/bus/wswan/slot.c b/src/devices/bus/wswan/slot.c
index 8da5f6e694d..8da5f6e694d 100644
--- a/src/emu/bus/wswan/slot.c
+++ b/src/devices/bus/wswan/slot.c
diff --git a/src/emu/bus/wswan/slot.h b/src/devices/bus/wswan/slot.h
index 87ac47a2a97..87ac47a2a97 100644
--- a/src/emu/bus/wswan/slot.h
+++ b/src/devices/bus/wswan/slot.h
diff --git a/src/emu/bus/x68k/x68k_neptunex.c b/src/devices/bus/x68k/x68k_neptunex.c
index affb3ead65c..affb3ead65c 100644
--- a/src/emu/bus/x68k/x68k_neptunex.c
+++ b/src/devices/bus/x68k/x68k_neptunex.c
diff --git a/src/emu/bus/x68k/x68k_neptunex.h b/src/devices/bus/x68k/x68k_neptunex.h
index ad6f1b9560c..ad6f1b9560c 100644
--- a/src/emu/bus/x68k/x68k_neptunex.h
+++ b/src/devices/bus/x68k/x68k_neptunex.h
diff --git a/src/emu/bus/x68k/x68k_scsiext.c b/src/devices/bus/x68k/x68k_scsiext.c
index b3490cda74d..b3490cda74d 100644
--- a/src/emu/bus/x68k/x68k_scsiext.c
+++ b/src/devices/bus/x68k/x68k_scsiext.c
diff --git a/src/emu/bus/x68k/x68k_scsiext.h b/src/devices/bus/x68k/x68k_scsiext.h
index 93f6fa24b79..93f6fa24b79 100644
--- a/src/emu/bus/x68k/x68k_scsiext.h
+++ b/src/devices/bus/x68k/x68k_scsiext.h
diff --git a/src/emu/bus/x68k/x68kexp.c b/src/devices/bus/x68k/x68kexp.c
index 3aaf03bdd3a..3aaf03bdd3a 100644
--- a/src/emu/bus/x68k/x68kexp.c
+++ b/src/devices/bus/x68k/x68kexp.c
diff --git a/src/emu/bus/x68k/x68kexp.h b/src/devices/bus/x68k/x68kexp.h
index 9a016b7ebbe..9a016b7ebbe 100644
--- a/src/emu/bus/x68k/x68kexp.h
+++ b/src/devices/bus/x68k/x68kexp.h
diff --git a/src/emu/bus/z88/flash.c b/src/devices/bus/z88/flash.c
index 0793f126c18..0793f126c18 100644
--- a/src/emu/bus/z88/flash.c
+++ b/src/devices/bus/z88/flash.c
diff --git a/src/emu/bus/z88/flash.h b/src/devices/bus/z88/flash.h
index 8ea09040e39..8ea09040e39 100644
--- a/src/emu/bus/z88/flash.h
+++ b/src/devices/bus/z88/flash.h
diff --git a/src/emu/bus/z88/ram.c b/src/devices/bus/z88/ram.c
index d35f3d81ccd..d35f3d81ccd 100644
--- a/src/emu/bus/z88/ram.c
+++ b/src/devices/bus/z88/ram.c
diff --git a/src/emu/bus/z88/ram.h b/src/devices/bus/z88/ram.h
index 0f8dc4a4ff7..0f8dc4a4ff7 100644
--- a/src/emu/bus/z88/ram.h
+++ b/src/devices/bus/z88/ram.h
diff --git a/src/emu/bus/z88/rom.c b/src/devices/bus/z88/rom.c
index 4ebdef5fc85..4ebdef5fc85 100644
--- a/src/emu/bus/z88/rom.c
+++ b/src/devices/bus/z88/rom.c
diff --git a/src/emu/bus/z88/rom.h b/src/devices/bus/z88/rom.h
index 41cdbc4a771..41cdbc4a771 100644
--- a/src/emu/bus/z88/rom.h
+++ b/src/devices/bus/z88/rom.h
diff --git a/src/emu/bus/z88/z88.c b/src/devices/bus/z88/z88.c
index b1c13865fb7..b1c13865fb7 100644
--- a/src/emu/bus/z88/z88.c
+++ b/src/devices/bus/z88/z88.c
diff --git a/src/emu/bus/z88/z88.h b/src/devices/bus/z88/z88.h
index bcba1671941..bcba1671941 100644
--- a/src/emu/bus/z88/z88.h
+++ b/src/devices/bus/z88/z88.h
diff --git a/src/emu/cpu/8x300/8x300.c b/src/devices/cpu/8x300/8x300.c
index bf6a5148ca5..bf6a5148ca5 100644
--- a/src/emu/cpu/8x300/8x300.c
+++ b/src/devices/cpu/8x300/8x300.c
diff --git a/src/emu/cpu/8x300/8x300.h b/src/devices/cpu/8x300/8x300.h
index 274f161c889..274f161c889 100644
--- a/src/emu/cpu/8x300/8x300.h
+++ b/src/devices/cpu/8x300/8x300.h
diff --git a/src/emu/cpu/8x300/8x300dasm.c b/src/devices/cpu/8x300/8x300dasm.c
index e35b2b7cb41..e35b2b7cb41 100644
--- a/src/emu/cpu/8x300/8x300dasm.c
+++ b/src/devices/cpu/8x300/8x300dasm.c
diff --git a/src/emu/cpu/adsp2100/2100dasm.c b/src/devices/cpu/adsp2100/2100dasm.c
index 47d8ad8e800..47d8ad8e800 100644
--- a/src/emu/cpu/adsp2100/2100dasm.c
+++ b/src/devices/cpu/adsp2100/2100dasm.c
diff --git a/src/emu/cpu/adsp2100/2100ops.inc b/src/devices/cpu/adsp2100/2100ops.inc
index 31cae1ae59b..31cae1ae59b 100644
--- a/src/emu/cpu/adsp2100/2100ops.inc
+++ b/src/devices/cpu/adsp2100/2100ops.inc
diff --git a/src/emu/cpu/adsp2100/adsp2100.c b/src/devices/cpu/adsp2100/adsp2100.c
index 8142a6a7a34..8142a6a7a34 100644
--- a/src/emu/cpu/adsp2100/adsp2100.c
+++ b/src/devices/cpu/adsp2100/adsp2100.c
diff --git a/src/emu/cpu/adsp2100/adsp2100.h b/src/devices/cpu/adsp2100/adsp2100.h
index 4b84d6e1b2a..4b84d6e1b2a 100644
--- a/src/emu/cpu/adsp2100/adsp2100.h
+++ b/src/devices/cpu/adsp2100/adsp2100.h
diff --git a/src/emu/cpu/alph8201/8201dasm.c b/src/devices/cpu/alph8201/8201dasm.c
index c22a4316ea4..c22a4316ea4 100644
--- a/src/emu/cpu/alph8201/8201dasm.c
+++ b/src/devices/cpu/alph8201/8201dasm.c
diff --git a/src/emu/cpu/alph8201/alph8201.c b/src/devices/cpu/alph8201/alph8201.c
index e575f149d34..e575f149d34 100644
--- a/src/emu/cpu/alph8201/alph8201.c
+++ b/src/devices/cpu/alph8201/alph8201.c
diff --git a/src/emu/cpu/alph8201/alph8201.h b/src/devices/cpu/alph8201/alph8201.h
index 16555803988..16555803988 100644
--- a/src/emu/cpu/alph8201/alph8201.h
+++ b/src/devices/cpu/alph8201/alph8201.h
diff --git a/src/emu/cpu/alto2/a2curt.c b/src/devices/cpu/alto2/a2curt.c
index c5d9353f768..c5d9353f768 100644
--- a/src/emu/cpu/alto2/a2curt.c
+++ b/src/devices/cpu/alto2/a2curt.c
diff --git a/src/emu/cpu/alto2/a2curt.h b/src/devices/cpu/alto2/a2curt.h
index cdfc6a22973..cdfc6a22973 100644
--- a/src/emu/cpu/alto2/a2curt.h
+++ b/src/devices/cpu/alto2/a2curt.h
diff --git a/src/emu/cpu/alto2/a2dht.c b/src/devices/cpu/alto2/a2dht.c
index 3b70d371259..3b70d371259 100644
--- a/src/emu/cpu/alto2/a2dht.c
+++ b/src/devices/cpu/alto2/a2dht.c
diff --git a/src/emu/cpu/alto2/a2dht.h b/src/devices/cpu/alto2/a2dht.h
index 9ff7acc17f4..9ff7acc17f4 100644
--- a/src/emu/cpu/alto2/a2dht.h
+++ b/src/devices/cpu/alto2/a2dht.h
diff --git a/src/emu/cpu/alto2/a2disk.c b/src/devices/cpu/alto2/a2disk.c
index 1a8736962bb..1a8736962bb 100644
--- a/src/emu/cpu/alto2/a2disk.c
+++ b/src/devices/cpu/alto2/a2disk.c
diff --git a/src/emu/cpu/alto2/a2disk.h b/src/devices/cpu/alto2/a2disk.h
index 5fd994f654e..5fd994f654e 100644
--- a/src/emu/cpu/alto2/a2disk.h
+++ b/src/devices/cpu/alto2/a2disk.h
diff --git a/src/emu/cpu/alto2/a2disp.c b/src/devices/cpu/alto2/a2disp.c
index 3f902431efa..3f902431efa 100644
--- a/src/emu/cpu/alto2/a2disp.c
+++ b/src/devices/cpu/alto2/a2disp.c
diff --git a/src/emu/cpu/alto2/a2disp.h b/src/devices/cpu/alto2/a2disp.h
index 80454eb4896..80454eb4896 100644
--- a/src/emu/cpu/alto2/a2disp.h
+++ b/src/devices/cpu/alto2/a2disp.h
diff --git a/src/emu/cpu/alto2/a2dvt.c b/src/devices/cpu/alto2/a2dvt.c
index acb51d92e7c..acb51d92e7c 100644
--- a/src/emu/cpu/alto2/a2dvt.c
+++ b/src/devices/cpu/alto2/a2dvt.c
diff --git a/src/emu/cpu/alto2/a2dvt.h b/src/devices/cpu/alto2/a2dvt.h
index 3b73ac7bf7e..3b73ac7bf7e 100644
--- a/src/emu/cpu/alto2/a2dvt.h
+++ b/src/devices/cpu/alto2/a2dvt.h
diff --git a/src/emu/cpu/alto2/a2dwt.c b/src/devices/cpu/alto2/a2dwt.c
index 19831e3fd46..19831e3fd46 100644
--- a/src/emu/cpu/alto2/a2dwt.c
+++ b/src/devices/cpu/alto2/a2dwt.c
diff --git a/src/emu/cpu/alto2/a2dwt.h b/src/devices/cpu/alto2/a2dwt.h
index 74c6c94939b..74c6c94939b 100644
--- a/src/emu/cpu/alto2/a2dwt.h
+++ b/src/devices/cpu/alto2/a2dwt.h
diff --git a/src/emu/cpu/alto2/a2emu.c b/src/devices/cpu/alto2/a2emu.c
index fd30fa1d0f8..fd30fa1d0f8 100644
--- a/src/emu/cpu/alto2/a2emu.c
+++ b/src/devices/cpu/alto2/a2emu.c
diff --git a/src/emu/cpu/alto2/a2emu.h b/src/devices/cpu/alto2/a2emu.h
index 344c7ff2c71..344c7ff2c71 100644
--- a/src/emu/cpu/alto2/a2emu.h
+++ b/src/devices/cpu/alto2/a2emu.h
diff --git a/src/emu/cpu/alto2/a2ether.c b/src/devices/cpu/alto2/a2ether.c
index 32d8a716f49..32d8a716f49 100644
--- a/src/emu/cpu/alto2/a2ether.c
+++ b/src/devices/cpu/alto2/a2ether.c
diff --git a/src/emu/cpu/alto2/a2ether.h b/src/devices/cpu/alto2/a2ether.h
index 6bdbd24ce3e..6bdbd24ce3e 100644
--- a/src/emu/cpu/alto2/a2ether.h
+++ b/src/devices/cpu/alto2/a2ether.h
diff --git a/src/emu/cpu/alto2/a2hw.c b/src/devices/cpu/alto2/a2hw.c
index cc8a77c3f54..cc8a77c3f54 100644
--- a/src/emu/cpu/alto2/a2hw.c
+++ b/src/devices/cpu/alto2/a2hw.c
diff --git a/src/emu/cpu/alto2/a2hw.h b/src/devices/cpu/alto2/a2hw.h
index 49d20ff5e30..49d20ff5e30 100644
--- a/src/emu/cpu/alto2/a2hw.h
+++ b/src/devices/cpu/alto2/a2hw.h
diff --git a/src/emu/cpu/alto2/a2jkff.h b/src/devices/cpu/alto2/a2jkff.h
index 687313607b1..687313607b1 100644
--- a/src/emu/cpu/alto2/a2jkff.h
+++ b/src/devices/cpu/alto2/a2jkff.h
diff --git a/src/emu/cpu/alto2/a2kbd.c b/src/devices/cpu/alto2/a2kbd.c
index fa1bb5f9596..fa1bb5f9596 100644
--- a/src/emu/cpu/alto2/a2kbd.c
+++ b/src/devices/cpu/alto2/a2kbd.c
diff --git a/src/emu/cpu/alto2/a2kbd.h b/src/devices/cpu/alto2/a2kbd.h
index b7bf6607ee2..b7bf6607ee2 100644
--- a/src/emu/cpu/alto2/a2kbd.h
+++ b/src/devices/cpu/alto2/a2kbd.h
diff --git a/src/emu/cpu/alto2/a2ksec.c b/src/devices/cpu/alto2/a2ksec.c
index b6ca5359dc6..b6ca5359dc6 100644
--- a/src/emu/cpu/alto2/a2ksec.c
+++ b/src/devices/cpu/alto2/a2ksec.c
diff --git a/src/emu/cpu/alto2/a2ksec.h b/src/devices/cpu/alto2/a2ksec.h
index 96c2530a2a5..96c2530a2a5 100644
--- a/src/emu/cpu/alto2/a2ksec.h
+++ b/src/devices/cpu/alto2/a2ksec.h
diff --git a/src/emu/cpu/alto2/a2kwd.c b/src/devices/cpu/alto2/a2kwd.c
index 1eb060258a8..1eb060258a8 100644
--- a/src/emu/cpu/alto2/a2kwd.c
+++ b/src/devices/cpu/alto2/a2kwd.c
diff --git a/src/emu/cpu/alto2/a2kwd.h b/src/devices/cpu/alto2/a2kwd.h
index 678408501d2..678408501d2 100644
--- a/src/emu/cpu/alto2/a2kwd.h
+++ b/src/devices/cpu/alto2/a2kwd.h
diff --git a/src/emu/cpu/alto2/a2mem.c b/src/devices/cpu/alto2/a2mem.c
index b84653ebdd9..b84653ebdd9 100644
--- a/src/emu/cpu/alto2/a2mem.c
+++ b/src/devices/cpu/alto2/a2mem.c
diff --git a/src/emu/cpu/alto2/a2mem.h b/src/devices/cpu/alto2/a2mem.h
index c450693a22b..c450693a22b 100644
--- a/src/emu/cpu/alto2/a2mem.h
+++ b/src/devices/cpu/alto2/a2mem.h
diff --git a/src/emu/cpu/alto2/a2mouse.c b/src/devices/cpu/alto2/a2mouse.c
index 0844d45de6d..0844d45de6d 100644
--- a/src/emu/cpu/alto2/a2mouse.c
+++ b/src/devices/cpu/alto2/a2mouse.c
diff --git a/src/emu/cpu/alto2/a2mouse.h b/src/devices/cpu/alto2/a2mouse.h
index 29d5e88ca5b..29d5e88ca5b 100644
--- a/src/emu/cpu/alto2/a2mouse.h
+++ b/src/devices/cpu/alto2/a2mouse.h
diff --git a/src/emu/cpu/alto2/a2mrt.c b/src/devices/cpu/alto2/a2mrt.c
index c57cd85728f..c57cd85728f 100644
--- a/src/emu/cpu/alto2/a2mrt.c
+++ b/src/devices/cpu/alto2/a2mrt.c
diff --git a/src/emu/cpu/alto2/a2mrt.h b/src/devices/cpu/alto2/a2mrt.h
index 20b00724fc9..20b00724fc9 100644
--- a/src/emu/cpu/alto2/a2mrt.h
+++ b/src/devices/cpu/alto2/a2mrt.h
diff --git a/src/emu/cpu/alto2/a2part.c b/src/devices/cpu/alto2/a2part.c
index ecf9da51ea5..ecf9da51ea5 100644
--- a/src/emu/cpu/alto2/a2part.c
+++ b/src/devices/cpu/alto2/a2part.c
diff --git a/src/emu/cpu/alto2/a2part.h b/src/devices/cpu/alto2/a2part.h
index 0bc8583bbbc..0bc8583bbbc 100644
--- a/src/emu/cpu/alto2/a2part.h
+++ b/src/devices/cpu/alto2/a2part.h
diff --git a/src/emu/cpu/alto2/a2ram.c b/src/devices/cpu/alto2/a2ram.c
index 92986996270..92986996270 100644
--- a/src/emu/cpu/alto2/a2ram.c
+++ b/src/devices/cpu/alto2/a2ram.c
diff --git a/src/emu/cpu/alto2/a2ram.h b/src/devices/cpu/alto2/a2ram.h
index 0077ded7a99..0077ded7a99 100644
--- a/src/emu/cpu/alto2/a2ram.h
+++ b/src/devices/cpu/alto2/a2ram.h
diff --git a/src/emu/cpu/alto2/a2roms.c b/src/devices/cpu/alto2/a2roms.c
index 1b859aa07aa..1b859aa07aa 100644
--- a/src/emu/cpu/alto2/a2roms.c
+++ b/src/devices/cpu/alto2/a2roms.c
diff --git a/src/emu/cpu/alto2/a2roms.h b/src/devices/cpu/alto2/a2roms.h
index abd218344c9..abd218344c9 100644
--- a/src/emu/cpu/alto2/a2roms.h
+++ b/src/devices/cpu/alto2/a2roms.h
diff --git a/src/emu/cpu/alto2/alto2cpu.c b/src/devices/cpu/alto2/alto2cpu.c
index 9c62096b5dd..9c62096b5dd 100644
--- a/src/emu/cpu/alto2/alto2cpu.c
+++ b/src/devices/cpu/alto2/alto2cpu.c
diff --git a/src/emu/cpu/alto2/alto2cpu.h b/src/devices/cpu/alto2/alto2cpu.h
index 1e2640e6ac0..1e2640e6ac0 100644
--- a/src/emu/cpu/alto2/alto2cpu.h
+++ b/src/devices/cpu/alto2/alto2cpu.h
diff --git a/src/emu/cpu/alto2/alto2dsm.c b/src/devices/cpu/alto2/alto2dsm.c
index 121ab50b398..121ab50b398 100644
--- a/src/emu/cpu/alto2/alto2dsm.c
+++ b/src/devices/cpu/alto2/alto2dsm.c
diff --git a/src/emu/cpu/am29000/am29000.c b/src/devices/cpu/am29000/am29000.c
index 27924fa163f..27924fa163f 100644
--- a/src/emu/cpu/am29000/am29000.c
+++ b/src/devices/cpu/am29000/am29000.c
diff --git a/src/emu/cpu/am29000/am29000.h b/src/devices/cpu/am29000/am29000.h
index c47d87fd7ce..c47d87fd7ce 100644
--- a/src/emu/cpu/am29000/am29000.h
+++ b/src/devices/cpu/am29000/am29000.h
diff --git a/src/emu/cpu/am29000/am29dasm.c b/src/devices/cpu/am29000/am29dasm.c
index bd8c6712fd2..bd8c6712fd2 100644
--- a/src/emu/cpu/am29000/am29dasm.c
+++ b/src/devices/cpu/am29000/am29dasm.c
diff --git a/src/emu/cpu/am29000/am29ops.h b/src/devices/cpu/am29000/am29ops.h
index bd3602391e6..bd3602391e6 100644
--- a/src/emu/cpu/am29000/am29ops.h
+++ b/src/devices/cpu/am29000/am29ops.h
diff --git a/src/emu/cpu/amis2000/amis2000.c b/src/devices/cpu/amis2000/amis2000.c
index 3082b09f14b..3082b09f14b 100644
--- a/src/emu/cpu/amis2000/amis2000.c
+++ b/src/devices/cpu/amis2000/amis2000.c
diff --git a/src/emu/cpu/amis2000/amis2000.h b/src/devices/cpu/amis2000/amis2000.h
index d04127eec16..d04127eec16 100644
--- a/src/emu/cpu/amis2000/amis2000.h
+++ b/src/devices/cpu/amis2000/amis2000.h
diff --git a/src/emu/cpu/amis2000/amis2000d.c b/src/devices/cpu/amis2000/amis2000d.c
index 27077170402..27077170402 100644
--- a/src/emu/cpu/amis2000/amis2000d.c
+++ b/src/devices/cpu/amis2000/amis2000d.c
diff --git a/src/emu/cpu/amis2000/amis2000op.c b/src/devices/cpu/amis2000/amis2000op.c
index 02f23ebed0a..02f23ebed0a 100644
--- a/src/emu/cpu/amis2000/amis2000op.c
+++ b/src/devices/cpu/amis2000/amis2000op.c
diff --git a/src/emu/cpu/apexc/apexc.c b/src/devices/cpu/apexc/apexc.c
index 77e5c919f44..77e5c919f44 100644
--- a/src/emu/cpu/apexc/apexc.c
+++ b/src/devices/cpu/apexc/apexc.c
diff --git a/src/emu/cpu/apexc/apexc.h b/src/devices/cpu/apexc/apexc.h
index 538d903ab44..538d903ab44 100644
--- a/src/emu/cpu/apexc/apexc.h
+++ b/src/devices/cpu/apexc/apexc.h
diff --git a/src/emu/cpu/apexc/apexcdsm.c b/src/devices/cpu/apexc/apexcdsm.c
index 81effc58b0e..81effc58b0e 100644
--- a/src/emu/cpu/apexc/apexcdsm.c
+++ b/src/devices/cpu/apexc/apexcdsm.c
diff --git a/src/emu/cpu/arc/arc.c b/src/devices/cpu/arc/arc.c
index 2fe40ae9bd6..2fe40ae9bd6 100644
--- a/src/emu/cpu/arc/arc.c
+++ b/src/devices/cpu/arc/arc.c
diff --git a/src/emu/cpu/arc/arc.h b/src/devices/cpu/arc/arc.h
index 80ed03280bc..80ed03280bc 100644
--- a/src/emu/cpu/arc/arc.h
+++ b/src/devices/cpu/arc/arc.h
diff --git a/src/emu/cpu/arc/arcdasm.c b/src/devices/cpu/arc/arcdasm.c
index 7a525d6cb61..7a525d6cb61 100644
--- a/src/emu/cpu/arc/arcdasm.c
+++ b/src/devices/cpu/arc/arcdasm.c
diff --git a/src/emu/cpu/arcompact/arcompact.c b/src/devices/cpu/arcompact/arcompact.c
index dca1bf9fd91..dca1bf9fd91 100644
--- a/src/emu/cpu/arcompact/arcompact.c
+++ b/src/devices/cpu/arcompact/arcompact.c
diff --git a/src/emu/cpu/arcompact/arcompact.h b/src/devices/cpu/arcompact/arcompact.h
index 09f1cf708c2..09f1cf708c2 100644
--- a/src/emu/cpu/arcompact/arcompact.h
+++ b/src/devices/cpu/arcompact/arcompact.h
diff --git a/src/emu/cpu/arcompact/arcompact_common.c b/src/devices/cpu/arcompact/arcompact_common.c
index f9b74683461..f9b74683461 100644
--- a/src/emu/cpu/arcompact/arcompact_common.c
+++ b/src/devices/cpu/arcompact/arcompact_common.c
diff --git a/src/emu/cpu/arcompact/arcompact_common.h b/src/devices/cpu/arcompact/arcompact_common.h
index 86259ba2972..86259ba2972 100644
--- a/src/emu/cpu/arcompact/arcompact_common.h
+++ b/src/devices/cpu/arcompact/arcompact_common.h
diff --git a/src/emu/cpu/arcompact/arcompact_execute.c b/src/devices/cpu/arcompact/arcompact_execute.c
index ae241987190..ae241987190 100644
--- a/src/emu/cpu/arcompact/arcompact_execute.c
+++ b/src/devices/cpu/arcompact/arcompact_execute.c
diff --git a/src/devices/cpu/arcompact/arcompact_make.py b/src/devices/cpu/arcompact/arcompact_make.py
new file mode 100644
index 00000000000..080fd72b426
--- /dev/null
+++ b/src/devices/cpu/arcompact/arcompact_make.py
@@ -0,0 +1,434 @@
+#!/usr/bin/python
+
+from __future__ import print_function
+import sys
+
+def EmitGroup04_Handle_NZ_Flags(f, funcname, opname):
+ print(" if (result & 0x80000000) { STATUS32_SET_N; }", file=f)
+ print(" else { STATUS32_CLEAR_N; }", file=f)
+ print(" if (result == 0x00000000) { STATUS32_SET_Z; }", file=f)
+ print(" else { STATUS32_CLEAR_Z; }", file=f)
+
+def EmitGroup04_Handle_NZC_LSR1_Flags(f, funcname, opname):
+ print(" if (result & 0x80000000) { STATUS32_SET_N; }", file=f)
+ print(" else { STATUS32_CLEAR_N; }", file=f)
+ print(" if (result == 0x00000000) { STATUS32_SET_Z; }", file=f)
+ print(" else { STATUS32_CLEAR_Z; }", file=f)
+ print(" if (c == 0x00000001) { STATUS32_SET_C; }", file=f)
+ print(" else { STATUS32_CLEAR_C; }", file=f)
+
+def EmitGroup04_Handle_NZCV_ADD_Flags(f, funcname, opname):
+ print(" if (result & 0x80000000) { STATUS32_SET_N; }", file=f)
+ print(" else { STATUS32_CLEAR_N; }", file=f)
+ print(" if (result == 0x00000000) { STATUS32_SET_Z; }", file=f)
+ print(" else { STATUS32_CLEAR_Z; }", file=f)
+ print(" if ((b & 0x80000000) == (c & 0x80000000))", file=f)
+ print(" {", file=f)
+ print(" if ((result & 0x80000000) != (b & 0x80000000))", file=f)
+ print(" {", file=f)
+ print(" STATUS32_SET_V;", file=f)
+ print(" }", file=f)
+ print(" else", file=f)
+ print(" {", file=f)
+ print(" STATUS32_CLEAR_V;", file=f)
+ print(" }", file=f)
+ print(" }", file=f)
+ print(" if (b < c)", file=f)
+ print(" {", file=f)
+ print(" STATUS32_SET_C;", file=f)
+ print(" }", file=f)
+ print(" else", file=f)
+ print(" {", file=f)
+ print(" STATUS32_CLEAR_C;", file=f)
+ print(" }", file=f)
+
+
+def EmitGroup04_no_Flags(f, funcname, opname):
+ print(" // no flag changes", file=f)
+
+def EmitGroup04_unsupported_Flags(f, funcname, opname):
+ print(" arcompact_fatal(\"arcompact_handle%s (%s) (F set)\\n\"); // not yet supported" % (funcname, opname), file=f)
+
+def EmitGroup04_Flaghandler(f,funcname, opname, flagcondition, flaghandler):
+ if flagcondition == -1:
+ print(" if (F)", file=f)
+ print(" {", file=f)
+ flaghandler(f, funcname, opname)
+ print(" }", file=f)
+ elif flagcondition == 0:
+ print(" if (0)", file=f)
+ print(" {", file=f)
+ flaghandler(f, funcname, opname)
+ print(" }", file=f)
+ elif flagcondition == 1:
+ print(" if (1)", file=f)
+ print(" {", file=f)
+ flaghandler(f, funcname, opname)
+ print(" }", file=f)
+
+def EmitGroup04_u5fragment(f,funcname, opname, opexecute, opwrite, opwrite_alt, ignore_a, breg_is_dst_only, flagcondition, flaghandler):
+ print(" int size = 4;", file=f)
+
+ if breg_is_dst_only == 0:
+ print(" UINT32 limm = 0;", file=f)
+
+ print("/* int got_limm = 0; */", file=f)
+ print(" ", file=f)
+ print(" COMMON32_GET_breg;", file=f)
+
+ if flagcondition == -1:
+ print(" COMMON32_GET_F;", file=f)
+
+ print(" COMMON32_GET_u6;", file=f)
+
+ if ignore_a == 0:
+ print(" COMMON32_GET_areg;", file=f)
+ elif ignore_a == 1:
+ print(" //COMMON32_GET_areg; // areg is reserved / not used", file=f)
+ elif ignore_a == 2:
+ print(" //COMMON32_GET_areg; // areg bits already used as opcode select", file=f)
+ elif ignore_a == 3:
+ print(" //COMMON32_GET_areg; // areg bits already used as condition code select", file=f)
+ print(" ", file=f)
+
+ print(" UINT32 c;", file=f)
+ if breg_is_dst_only == 0:
+ print(" UINT32 b;", file=f)
+ print(" ", file=f)
+ print(" /* is having b as LIMM valid here? LIMM vs. fixed u6 value makes no sense */", file=f)
+ print(" if (breg == LIMM_REG)", file=f)
+ print(" {", file=f)
+ print(" GET_LIMM_32;", file=f)
+ print(" size = 8;", file=f)
+ print("/* got_limm = 1; */", file=f)
+ print(" b = limm;", file=f)
+ print(" }", file=f)
+ print(" else", file=f)
+ print(" {", file=f)
+ print(" b = m_regs[breg];", file=f)
+ print(" }", file=f)
+
+ print(" ", file=f)
+ print(" c = u;", file=f)
+ print(" ", file=f)
+ print(" /* todo: if areg = LIMM then there is no result (but since that register can never be read, I guess it doesn't matter if we store it there anyway?) */", file=f)
+
+def EmitGroup04(f,funcname, opname, opexecute, opwrite, opwrite_alt, ignore_a, breg_is_dst_only, flagcondition, flaghandler):
+ # the mode 0x00 handler
+ print("ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s_p00(OPS_32)" % funcname, file=f)
+ print("{", file=f)
+ print(" int size = 4;", file=f)
+
+ print(" UINT32 limm = 0;", file=f)
+
+ print(" int got_limm = 0;", file=f)
+ print(" ", file=f)
+ print(" COMMON32_GET_breg;", file=f)
+
+ if flagcondition == -1:
+ print(" COMMON32_GET_F;", file=f)
+
+ print(" COMMON32_GET_creg;", file=f)
+
+ if ignore_a == 0:
+ print(" COMMON32_GET_areg;", file=f)
+ elif ignore_a == 1:
+ print(" //COMMON32_GET_areg; // areg is reserved / not used", file=f)
+ elif ignore_a == 2:
+ print(" //COMMON32_GET_areg; // areg bits already used as opcode select", file=f)
+
+ print(" ", file=f)
+
+ print(" UINT32 c;", file=f)
+ if breg_is_dst_only == 0:
+ print(" UINT32 b;", file=f)
+ print(" ", file=f)
+ print(" if (breg == LIMM_REG)", file=f)
+ print(" {", file=f)
+ print(" GET_LIMM_32;", file=f)
+ print(" size = 8;", file=f)
+ print(" got_limm = 1;", file=f)
+ print(" b = limm;", file=f)
+ print(" }", file=f)
+ print(" else", file=f)
+ print(" {", file=f)
+ print(" b = m_regs[breg];", file=f)
+ print(" }", file=f)
+
+ print(" ", file=f)
+ print(" if (creg == LIMM_REG)", file=f)
+ print(" {", file=f)
+ print(" if (!got_limm)", file=f)
+ print(" {", file=f)
+ print(" GET_LIMM_32;", file=f)
+ print(" size = 8;", file=f)
+ print(" }", file=f)
+ print(" c = limm;", file=f)
+ print(" }", file=f)
+ print(" else", file=f)
+ print(" {", file=f)
+ print(" c = m_regs[creg];", file=f)
+ print(" }", file=f)
+ print(" /* todo: is the limm, limm syntax valid? (it's pointless.) */", file=f)
+ print(" /* todo: if areg = LIMM then there is no result (but since that register can never be read, I guess it doesn't matter if we store it there anyway?) */", file=f)
+ print(" %s" % opexecute, file=f)
+ print(" %s" % opwrite, file=f)
+ print(" ", file=f)
+ EmitGroup04_Flaghandler(f,funcname,opname,flagcondition,flaghandler)
+ print(" return m_pc + (size >> 0);", file=f)
+ print("}", file=f)
+ print("", file=f)
+ print("", file=f)
+ # the mode 0x01 handler
+ print("ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s_p01(OPS_32)" % funcname, file=f)
+ print("{", file=f)
+ EmitGroup04_u5fragment(f,funcname, opname, opexecute, opwrite, opwrite_alt, ignore_a, breg_is_dst_only, flagcondition, flaghandler)
+ print(" %s" % opexecute, file=f)
+ print(" %s" % opwrite, file=f)
+ print(" ", file=f)
+ EmitGroup04_Flaghandler(f,funcname,opname,flagcondition,flaghandler)
+ print(" return m_pc + (size >> 0);", file=f)
+ print("}", file=f)
+ print("", file=f)
+ print("", file=f)
+ # the mode 0x10 handler
+ print("ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s_p10(OPS_32)" % funcname, file=f)
+ if ignore_a == 2:
+ print("{", file=f)
+ print(" int size = 4;", file=f)
+ print(" arcompact_fatal(\"illegal arcompact_handle%s_p10 (ares bits already used as opcode select, can't be used as s12) (%s)\\n\");" % (funcname, opname), file=f)
+ print(" return m_pc + (size >> 0);", file=f)
+ print("}", file=f)
+ else:
+ print("{", file=f)
+ print(" int size = 4;", file=f)
+ if breg_is_dst_only == 0:
+ print(" UINT32 limm = 0;", file=f)
+
+ print("/* int got_limm = 0; */", file=f)
+ print(" ", file=f)
+ print(" COMMON32_GET_breg;", file=f)
+
+ if flagcondition == -1:
+ print(" COMMON32_GET_F;", file=f)
+
+ print(" COMMON32_GET_s12;", file=f)
+
+ # areg can't be used here, it's used for s12 bits
+
+ print(" ", file=f)
+ print(" UINT32 c;", file=f)
+ if breg_is_dst_only == 0:
+ print(" UINT32 b;", file=f)
+ print(" ", file=f)
+ print(" /* is having b as LIMM valid here? LIMM vs. fixed u6 value makes no sense */", file=f)
+ print(" if (breg == LIMM_REG)", file=f)
+ print(" {", file=f)
+ print(" GET_LIMM_32;", file=f)
+ print(" size = 8;", file=f)
+ print("/* got_limm = 1; */", file=f)
+ print(" b = limm;", file=f)
+ print(" }", file=f)
+ print(" else", file=f)
+ print(" {", file=f)
+ print(" b = m_regs[breg];", file=f)
+ print(" }", file=f)
+
+ print(" ", file=f)
+ print(" c = (UINT32)S;", file=f)
+ print(" ", file=f)
+ print(" /* todo: if areg = LIMM then there is no result (but since that register can never be read, I guess it doesn't matter if we store it there anyway?) */", file=f)
+ print(" %s" % opexecute, file=f)
+ print(" %s" % opwrite_alt, file=f)
+ print(" ", file=f)
+ EmitGroup04_Flaghandler(f,funcname,opname,flagcondition,flaghandler)
+ print(" return m_pc + (size >> 0);", file=f)
+ print("}", file=f)
+ print("", file=f)
+ print("", file=f)
+ # the mode 0x11 m0 handler
+ print("ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s_p11_m0(OPS_32)" % funcname, file=f)
+ if ignore_a == 2:
+ print("{", file=f)
+ print(" int size = 4;", file=f)
+ print(" arcompact_fatal(\"illegal arcompact_handle%s_p11_m0 (ares bits already used as opcode select, can't be used as Q condition) (%s)\\n\");" % (funcname, opname), file=f)
+ print(" return m_pc + (size >> 0);", file=f)
+ print("}", file=f)
+ else:
+ print("{", file=f)
+ print(" int size = 4;", file=f)
+ print(" arcompact_fatal(\"arcompact_handle%s_p11_m0 (%s)\\n\");" % (funcname, opname), file=f)
+ print(" return m_pc + (size >> 0);", file=f)
+ print("}", file=f)
+ print("", file=f)
+ print("", file=f)
+ # the mode 0x11 m1 handler
+ print("ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s_p11_m1(OPS_32)" % funcname, file=f)
+ if ignore_a == 2:
+ print("{", file=f)
+ print(" int size = 4;", file=f)
+ print(" arcompact_fatal(\"illegal arcompact_handle%s_p11_m1 (ares bits already used as opcode select, can't be used as Q condition) (%s)\\n\");" % (funcname, opname), file=f)
+ print(" return m_pc + (size >> 0);", file=f)
+ print("}", file=f)
+ else:
+ print("{", file=f)
+ EmitGroup04_u5fragment(f,funcname, opname, opexecute, opwrite, opwrite_alt, 3, breg_is_dst_only, flagcondition, flaghandler)
+ print(" COMMON32_GET_CONDITION;", file=f)
+ print(" if (!check_condition(condition))", file=f)
+ print(" return m_pc + (size>>0);", file=f)
+ print("", file=f)
+ print(" %s" % opexecute, file=f)
+ print(" %s" % opwrite_alt, file=f)
+ print(" ", file=f)
+ EmitGroup04_Flaghandler(f,funcname,opname,flagcondition,flaghandler)
+ print(" return m_pc + (size >> 0);", file=f)
+ print("}", file=f)
+ print("", file=f)
+ print("", file=f)
+
+
+# xxx_S c, b, u3 format opcodes (note c is destination)
+def EmitGroup0d(f,funcname, opname, opexecute, opwrite):
+ print("ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s(OPS_16)" % funcname, file=f)
+ print("{", file=f)
+ print(" int u, breg, creg;", file=f)
+ print("", file=f)
+ print(" COMMON16_GET_u3;", file=f)
+ print(" COMMON16_GET_breg;", file=f)
+ print(" COMMON16_GET_creg;", file=f)
+ print("", file=f)
+ print(" REG_16BIT_RANGE(breg);", file=f)
+ print(" REG_16BIT_RANGE(creg);", file=f)
+ print("", file=f)
+ print(" %s" % opexecute, file=f)
+ print(" %s" % opwrite, file=f)
+ print("", file=f)
+ print(" return m_pc + (2 >> 0);", file=f)
+ print("}", file=f)
+ print("", file=f)
+ print("", file=f)
+
+
+# xxx_S b <- b,c format opcodes
+def EmitGroup0f(f,funcname, opname, opexecute, opwrite):
+ print("ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s(OPS_16)"% funcname, file=f)
+ print("{", file=f)
+ print(" int breg, creg;", file=f)
+ print("", file=f)
+ print(" COMMON16_GET_breg;", file=f)
+ print(" COMMON16_GET_creg;", file=f)
+ print("", file=f)
+ print(" REG_16BIT_RANGE(breg);", file=f)
+ print(" REG_16BIT_RANGE(creg);", file=f)
+ print("", file=f)
+ print(" %s" % opexecute, file=f)
+ print(" %s" % opwrite, file=f)
+ print("", file=f)
+ print(" return m_pc + (2 >> 0);", file=f)
+ print("}", file=f)
+ print("", file=f)
+ print("", file=f)
+
+
+# xxx_S b, b, u5 format opcodes
+def EmitGroup17(f,funcname, opname, opexecute):
+ print("ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s(OPS_16)" % funcname, file=f)
+ print("{", file=f)
+ print(" int breg, u;", file=f)
+ print(" ", file=f)
+ print(" COMMON16_GET_breg;", file=f)
+ print(" COMMON16_GET_u5;", file=f)
+ print(" ", file=f)
+ print(" REG_16BIT_RANGE(breg);", file=f)
+ print(" ", file=f)
+ print(" %s" % opexecute, file=f)
+ print(" ", file=f)
+ print(" return m_pc + (2 >> 0);", file=f)
+ print("}", file=f)
+ print("", file=f)
+ print("", file=f)
+
+
+
+try:
+ f = open(sys.argv[1], "w")
+except Exception:
+ err = sys.exc_info()[1]
+ sys.stderr.write("cannot write file %s [%s]\n" % (sys.argv[1], err))
+ sys.exit(1)
+
+
+EmitGroup04(f, "04_00", "ADD", "UINT32 result = b + c;", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_Handle_NZCV_ADD_Flags )
+
+EmitGroup04(f, "04_02", "SUB", "UINT32 result = b - c;", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+
+EmitGroup04(f, "04_04", "AND", "UINT32 result = b & c;", "if (areg != LIMM_REG) { m_regs[areg] = result; }", "if (breg != LIMM_REG) { m_regs[breg] = result; }", 0,0, -1, EmitGroup04_Handle_NZ_Flags )
+EmitGroup04(f, "04_05", "OR", "UINT32 result = b | c;", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+EmitGroup04(f, "04_06", "BIC", "UINT32 result = b & (~c);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+EmitGroup04(f, "04_07", "XOR", "UINT32 result = b ^ c;", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+
+EmitGroup04(f, "04_0a", "MOV", "UINT32 result = c;", "m_regs[breg] = result;", "m_regs[breg] = result;", 1,1, -1, EmitGroup04_Handle_NZ_Flags ) # special case, result always goes to breg
+
+EmitGroup04(f, "04_0e", "RSUB", "UINT32 result = c - b;", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+EmitGroup04(f, "04_0f", "BSET", "UINT32 result = b | (1 << (c & 0x1f));", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+
+EmitGroup04(f, "04_13", "BMSK", "UINT32 result = b & ((1<<(c+1))-1);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+
+
+EmitGroup04(f, "04_14", "ADD1", "UINT32 result = b + (c << 1);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+EmitGroup04(f, "04_15", "ADD2", "UINT32 result = b + (c << 2);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+EmitGroup04(f, "04_16", "ADD3", "UINT32 result = b + (c << 3);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+EmitGroup04(f, "04_17", "SUB1", "UINT32 result = b - (c << 1);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+EmitGroup04(f, "04_18", "SUB2", "UINT32 result = b - (c << 2);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+EmitGroup04(f, "04_19", "SUB3", "UINT32 result = b - (c << 3);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+
+EmitGroup04(f, "04_2a", "LR", "m_regs[breg] = READAUX(c);", "", "", 1,1, -1, EmitGroup04_no_Flags ) # this can't be conditional (todo)
+EmitGroup04(f, "04_2b", "SR", "WRITEAUX(c,b);", "", "", 1,0, -1, EmitGroup04_no_Flags ) # this can't be conditional (todo)
+
+
+
+EmitGroup04(f, "05_00", "ASL", "UINT32 result = b << (c&0x1f);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+EmitGroup04(f, "05_01", "LSR", "UINT32 result = b >> (c&0x1f);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
+
+# the 04_2f subgroup uses the same encoding, but the areg is already used as sub-opcode select, so any modes relying on areg bits for other reasons (sign, condition) (modes 10, 11m0, 11m1) are illegal. the destination is also breg not areg
+EmitGroup04(f, "04_2f_02", "LSR1", "UINT32 result = c >> 1;", "m_regs[breg] = result;","", 2,1, -1, EmitGroup04_Handle_NZC_LSR1_Flags ) # no alt handler (invalid path)
+EmitGroup04(f, "04_2f_03", "ROR", "int shift = 1; UINT32 mask = (1 << (shift)) - 1; mask <<= (32-shift); UINT32 result = ((c >> shift) & ~mask) | ((c << (32-shift)) & mask);", "m_regs[breg] = result;","", 2,1, -1, EmitGroup04_Handle_NZC_LSR1_Flags )
+
+
+EmitGroup04(f, "04_2f_07", "EXTB", "UINT32 result = c & 0x000000ff;", "m_regs[breg] = result;","", 2,1, -1, EmitGroup04_unsupported_Flags ) # ^
+EmitGroup04(f, "04_2f_08", "EXTW", "UINT32 result = c & 0x0000ffff;", "m_regs[breg] = result;","", 2,1, -1, EmitGroup04_unsupported_Flags ) # ^
+
+# xxx_S c, b, u3 format opcodes (note c is destination)
+EmitGroup0d(f, "0d_00", "ADD_S", "UINT32 result = m_regs[breg] + u;", "m_regs[creg] = result;" )
+EmitGroup0d(f, "0d_01", "SUB_S", "UINT32 result = m_regs[breg] - u;", "m_regs[creg] = result;" )
+EmitGroup0d(f, "0d_02", "ASL_S", "UINT32 result = m_regs[breg] << u;", "m_regs[creg] = result;" )
+
+# xxx_S b <- b,c format opcodes (or in some cases xxx_S b,c)
+EmitGroup0f(f, "0f_02", "SUB_S", "UINT32 result = m_regs[breg] - m_regs[creg];", "m_regs[breg] = result;" )
+EmitGroup0f(f, "0f_04", "AND_S", "UINT32 result = m_regs[breg] & m_regs[creg];", "m_regs[breg] = result;" )
+EmitGroup0f(f, "0f_05", "OR_S", "UINT32 result = m_regs[breg] | m_regs[creg];", "m_regs[breg] = result;" )
+EmitGroup0f(f, "0f_07", "XOR_S", "UINT32 result = m_regs[breg] ^ m_regs[creg];", "m_regs[breg] = result;" )
+EmitGroup0f(f, "0f_0f", "EXTB_S","UINT32 result = m_regs[creg] & 0x000000ff;", "m_regs[breg] = result;" )
+EmitGroup0f(f, "0f_10", "EXTW_S","UINT32 result = m_regs[creg] & 0x0000ffff;", "m_regs[breg] = result;" )
+EmitGroup0f(f, "0f_13", "NEG_S"," UINT32 result = 0 - m_regs[creg];", "m_regs[breg] = result;" )
+
+EmitGroup0f(f, "0f_14", "ADD1_S"," UINT32 result = m_regs[breg] + (m_regs[creg] <<1);", "m_regs[breg] = result;" )
+EmitGroup0f(f, "0f_15", "ADD2_S"," UINT32 result = m_regs[breg] + (m_regs[creg] <<2);", "m_regs[breg] = result;" )
+EmitGroup0f(f, "0f_16", "ADD3_S"," UINT32 result = m_regs[breg] + (m_regs[creg] <<3);", "m_regs[breg] = result;" )
+
+EmitGroup0f(f, "0f_19", "LSR_S", "UINT32 result = m_regs[breg] >> (m_regs[creg]&0x1f);","m_regs[breg] = result;" )
+EmitGroup0f(f, "0f_1b", "ASL1_S","UINT32 result = m_regs[creg] << 1;", "m_regs[breg] = result;" )
+
+
+# xxx_S b, b, u5 format opcodes
+EmitGroup17(f, "17_00", "ASL_S", "m_regs[breg] = m_regs[breg] << (u&0x1f);" )
+EmitGroup17(f, "17_01", "LSR_S", "m_regs[breg] = m_regs[breg] >> (u&0x1f);" )
+EmitGroup17(f, "17_02", "ASR_S", "INT32 temp = (INT32)m_regs[breg]; m_regs[breg] = temp >> (u&0x1f); // treat it as a signed value, so sign extension occurs during shift" )
+EmitGroup17(f, "17_03", "SUB_S", "m_regs[breg] = m_regs[breg] - u;" )
+EmitGroup17(f, "17_04", "BSET_S", "m_regs[breg] = m_regs[breg] | (1 << (u & 0x1f));" )
+
+EmitGroup17(f, "17_06", "BMSK_S", "m_regs[breg] = m_regs[breg] | ((1 << (u + 1)) - 1);" )
+
+
+
+
diff --git a/src/emu/cpu/arcompact/arcompactdasm.c b/src/devices/cpu/arcompact/arcompactdasm.c
index 0b917a05d56..0b917a05d56 100644
--- a/src/emu/cpu/arcompact/arcompactdasm.c
+++ b/src/devices/cpu/arcompact/arcompactdasm.c
diff --git a/src/emu/cpu/arcompact/arcompactdasm_dispatch.c b/src/devices/cpu/arcompact/arcompactdasm_dispatch.c
index ddd809b84bc..ddd809b84bc 100644
--- a/src/emu/cpu/arcompact/arcompactdasm_dispatch.c
+++ b/src/devices/cpu/arcompact/arcompactdasm_dispatch.c
diff --git a/src/emu/cpu/arcompact/arcompactdasm_dispatch.h b/src/devices/cpu/arcompact/arcompactdasm_dispatch.h
index 40cb06f2d6b..40cb06f2d6b 100644
--- a/src/emu/cpu/arcompact/arcompactdasm_dispatch.h
+++ b/src/devices/cpu/arcompact/arcompactdasm_dispatch.h
diff --git a/src/emu/cpu/arcompact/arcompactdasm_ops.c b/src/devices/cpu/arcompact/arcompactdasm_ops.c
index eeac8cac2f8..eeac8cac2f8 100644
--- a/src/emu/cpu/arcompact/arcompactdasm_ops.c
+++ b/src/devices/cpu/arcompact/arcompactdasm_ops.c
diff --git a/src/emu/cpu/arcompact/arcompactdasm_ops.h b/src/devices/cpu/arcompact/arcompactdasm_ops.h
index a2d09d83441..a2d09d83441 100644
--- a/src/emu/cpu/arcompact/arcompactdasm_ops.h
+++ b/src/devices/cpu/arcompact/arcompactdasm_ops.h
diff --git a/src/emu/cpu/arm/arm.c b/src/devices/cpu/arm/arm.c
index 8d9b420486d..8d9b420486d 100644
--- a/src/emu/cpu/arm/arm.c
+++ b/src/devices/cpu/arm/arm.c
diff --git a/src/emu/cpu/arm/arm.h b/src/devices/cpu/arm/arm.h
index 824ac1b69db..824ac1b69db 100644
--- a/src/emu/cpu/arm/arm.h
+++ b/src/devices/cpu/arm/arm.h
diff --git a/src/emu/cpu/arm/armdasm.c b/src/devices/cpu/arm/armdasm.c
index 83860b22aff..83860b22aff 100644
--- a/src/emu/cpu/arm/armdasm.c
+++ b/src/devices/cpu/arm/armdasm.c
diff --git a/src/emu/cpu/arm7/arm7.c b/src/devices/cpu/arm7/arm7.c
index 346dcb1020d..346dcb1020d 100644
--- a/src/emu/cpu/arm7/arm7.c
+++ b/src/devices/cpu/arm7/arm7.c
diff --git a/src/emu/cpu/arm7/arm7.h b/src/devices/cpu/arm7/arm7.h
index 9b98151494f..9b98151494f 100644
--- a/src/emu/cpu/arm7/arm7.h
+++ b/src/devices/cpu/arm7/arm7.h
diff --git a/src/emu/cpu/arm7/arm7core.h b/src/devices/cpu/arm7/arm7core.h
index 2bdd15d7ba3..2bdd15d7ba3 100644
--- a/src/emu/cpu/arm7/arm7core.h
+++ b/src/devices/cpu/arm7/arm7core.h
diff --git a/src/emu/cpu/arm7/arm7core.inc b/src/devices/cpu/arm7/arm7core.inc
index 736d42b0262..736d42b0262 100644
--- a/src/emu/cpu/arm7/arm7core.inc
+++ b/src/devices/cpu/arm7/arm7core.inc
diff --git a/src/emu/cpu/arm7/arm7dasm.c b/src/devices/cpu/arm7/arm7dasm.c
index b749d3624a2..b749d3624a2 100644
--- a/src/emu/cpu/arm7/arm7dasm.c
+++ b/src/devices/cpu/arm7/arm7dasm.c
diff --git a/src/emu/cpu/arm7/arm7drc.inc b/src/devices/cpu/arm7/arm7drc.inc
index d31eee5a632..d31eee5a632 100644
--- a/src/emu/cpu/arm7/arm7drc.inc
+++ b/src/devices/cpu/arm7/arm7drc.inc
diff --git a/src/emu/cpu/arm7/arm7help.h b/src/devices/cpu/arm7/arm7help.h
index 5625318b942..5625318b942 100644
--- a/src/emu/cpu/arm7/arm7help.h
+++ b/src/devices/cpu/arm7/arm7help.h
diff --git a/src/emu/cpu/arm7/arm7ops.c b/src/devices/cpu/arm7/arm7ops.c
index 9b96ca9054c..9b96ca9054c 100644
--- a/src/emu/cpu/arm7/arm7ops.c
+++ b/src/devices/cpu/arm7/arm7ops.c
diff --git a/src/emu/cpu/arm7/arm7tdrc.inc b/src/devices/cpu/arm7/arm7tdrc.inc
index ee0573a32e7..ee0573a32e7 100644
--- a/src/emu/cpu/arm7/arm7tdrc.inc
+++ b/src/devices/cpu/arm7/arm7tdrc.inc
diff --git a/src/emu/cpu/arm7/arm7thmb.c b/src/devices/cpu/arm7/arm7thmb.c
index 3dfd46094aa..3dfd46094aa 100644
--- a/src/emu/cpu/arm7/arm7thmb.c
+++ b/src/devices/cpu/arm7/arm7thmb.c
diff --git a/src/emu/cpu/asap/asap.c b/src/devices/cpu/asap/asap.c
index 21133e46975..21133e46975 100644
--- a/src/emu/cpu/asap/asap.c
+++ b/src/devices/cpu/asap/asap.c
diff --git a/src/emu/cpu/asap/asap.h b/src/devices/cpu/asap/asap.h
index 6cac9ee4c36..6cac9ee4c36 100644
--- a/src/emu/cpu/asap/asap.h
+++ b/src/devices/cpu/asap/asap.h
diff --git a/src/emu/cpu/asap/asapdasm.c b/src/devices/cpu/asap/asapdasm.c
index eb16985da1b..eb16985da1b 100644
--- a/src/emu/cpu/asap/asapdasm.c
+++ b/src/devices/cpu/asap/asapdasm.c
diff --git a/src/emu/cpu/avr8/avr8.c b/src/devices/cpu/avr8/avr8.c
index 0f15c655cb4..ebd880af285 100644
--- a/src/emu/cpu/avr8/avr8.c
+++ b/src/devices/cpu/avr8/avr8.c
@@ -40,20 +40,20 @@
- Fixed V and C flags in SBIW opcode
30 Oct. 2012
- - Added FMUL, FMULS, FMULSU opcodes [MooglyGuy]
- - Fixed incorrect flag calculation in ROR opcode [MooglyGuy]
- - Fixed incorrect bit testing in SBIC/SBIS opcodes [MooglyGuy]
+ - Added FMUL, FMULS, FMULSU opcodes [Ryan Holtz]
+ - Fixed incorrect flag calculation in ROR opcode [Ryan Holtz]
+ - Fixed incorrect bit testing in SBIC/SBIS opcodes [Ryan Holtz]
25 Oct. 2012
- - Added MULS, ANDI, STI Z+, LD -Z, LD -Y, LD -X, LD Y+q, LD Z+q, SWAP, ASR, ROR and SBIS opcodes [MooglyGuy]
- - Corrected cycle counts for LD and ST opcodes [MooglyGuy]
+ - Added MULS, ANDI, STI Z+, LD -Z, LD -Y, LD -X, LD Y+q, LD Z+q, SWAP, ASR, ROR and SBIS opcodes [Ryan Holtz]
+ - Corrected cycle counts for LD and ST opcodes [Ryan Holtz]
- Moved opcycles init into inner while loop, fixes 2-cycle and 3-cycle opcodes effectively forcing
- all subsequent 1-cycle opcodes to be 2 or 3 cycles [MooglyGuy]
- - Fixed register behavior in MULSU, LD -Z, and LD -Y opcodes [MooglyGuy]
+ all subsequent 1-cycle opcodes to be 2 or 3 cycles [Ryan Holtz]
+ - Fixed register behavior in MULSU, LD -Z, and LD -Y opcodes [Ryan Holtz]
18 Oct. 2012
- - Added OR, SBCI, ORI, ST Y+, ADIQ opcodes [MooglyGuy]
- - Fixed COM, NEG, LSR opcodes [MooglyGuy]
+ - Added OR, SBCI, ORI, ST Y+, ADIQ opcodes [Ryan Holtz]
+ - Fixed COM, NEG, LSR opcodes [Ryan Holtz]
*/
diff --git a/src/emu/cpu/avr8/avr8.h b/src/devices/cpu/avr8/avr8.h
index 3b3cbd8f6a0..fb9433ff824 100644
--- a/src/emu/cpu/avr8/avr8.h
+++ b/src/devices/cpu/avr8/avr8.h
@@ -20,20 +20,20 @@
- Fixed V and C flags in SBIW opcode
30 Oct. 2012
- - Added FMUL, FMULS, FMULSU opcodes [MooglyGuy]
- - Fixed incorrect flag calculation in ROR opcode [MooglyGuy]
- - Fixed incorrect bit testing in SBIC/SBIS opcodes [MooglyGuy]
+ - Added FMUL, FMULS, FMULSU opcodes [Ryan Holtz]
+ - Fixed incorrect flag calculation in ROR opcode [Ryan Holtz]
+ - Fixed incorrect bit testing in SBIC/SBIS opcodes [Ryan Holtz]
25 Oct. 2012
- - Added MULS, ANDI, STI Z+, LD -Z, LD -Y, LD -X, LD Y+q, LD Z+q, SWAP, ASR, ROR and SBIS opcodes [MooglyGuy]
- - Corrected cycle counts for LD and ST opcodes [MooglyGuy]
+ - Added MULS, ANDI, STI Z+, LD -Z, LD -Y, LD -X, LD Y+q, LD Z+q, SWAP, ASR, ROR and SBIS opcodes [Ryan Holtz]
+ - Corrected cycle counts for LD and ST opcodes [Ryan Holtz]
- Moved opcycles init into inner while loop, fixes 2-cycle and 3-cycle opcodes effectively forcing
- all subsequent 1-cycle opcodes to be 2 or 3 cycles [MooglyGuy]
- - Fixed register behavior in MULSU, LD -Z, and LD -Y opcodes [MooglyGuy]
+ all subsequent 1-cycle opcodes to be 2 or 3 cycles [Ryan Holtz]
+ - Fixed register behavior in MULSU, LD -Z, and LD -Y opcodes [Ryan Holtz]
18 Oct. 2012
- - Added OR, SBCI, ORI, ST Y+, ADIQ opcodes [MooglyGuy]
- - Fixed COM, NEG, LSR opcodes [MooglyGuy]
+ - Added OR, SBCI, ORI, ST Y+, ADIQ opcodes [Ryan Holtz]
+ - Fixed COM, NEG, LSR opcodes [Ryan Holtz]
*/
diff --git a/src/emu/cpu/avr8/avr8dasm.c b/src/devices/cpu/avr8/avr8dasm.c
index 30f62779c8d..62d5808d16c 100644
--- a/src/emu/cpu/avr8/avr8dasm.c
+++ b/src/devices/cpu/avr8/avr8dasm.c
@@ -3,7 +3,7 @@
/*
Atmel 8-bit AVR disassembler
- Written by MooglyGuy
+ Written by Ryan Holtz
*/
#include "emu.h"
diff --git a/src/emu/cpu/ccpu/ccpu.c b/src/devices/cpu/ccpu/ccpu.c
index e8893580f0c..e8893580f0c 100644
--- a/src/emu/cpu/ccpu/ccpu.c
+++ b/src/devices/cpu/ccpu/ccpu.c
diff --git a/src/emu/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h
index 96a0fac344a..96a0fac344a 100644
--- a/src/emu/cpu/ccpu/ccpu.h
+++ b/src/devices/cpu/ccpu/ccpu.h
diff --git a/src/emu/cpu/ccpu/ccpudasm.c b/src/devices/cpu/ccpu/ccpudasm.c
index e1f54d1ec00..e1f54d1ec00 100644
--- a/src/emu/cpu/ccpu/ccpudasm.c
+++ b/src/devices/cpu/ccpu/ccpudasm.c
diff --git a/src/emu/cpu/cop400/cop400.c b/src/devices/cpu/cop400/cop400.c
index eca60705b2c..eca60705b2c 100644
--- a/src/emu/cpu/cop400/cop400.c
+++ b/src/devices/cpu/cop400/cop400.c
diff --git a/src/emu/cpu/cop400/cop400.h b/src/devices/cpu/cop400/cop400.h
index aba03516d39..aba03516d39 100644
--- a/src/emu/cpu/cop400/cop400.h
+++ b/src/devices/cpu/cop400/cop400.h
diff --git a/src/emu/cpu/cop400/cop400op.inc b/src/devices/cpu/cop400/cop400op.inc
index 1f1bf1bfade..1f1bf1bfade 100644
--- a/src/emu/cpu/cop400/cop400op.inc
+++ b/src/devices/cpu/cop400/cop400op.inc
diff --git a/src/emu/cpu/cop400/cop410ds.c b/src/devices/cpu/cop400/cop410ds.c
index 638653151d0..638653151d0 100644
--- a/src/emu/cpu/cop400/cop410ds.c
+++ b/src/devices/cpu/cop400/cop410ds.c
diff --git a/src/emu/cpu/cop400/cop420ds.c b/src/devices/cpu/cop400/cop420ds.c
index 007b9afc8c6..007b9afc8c6 100644
--- a/src/emu/cpu/cop400/cop420ds.c
+++ b/src/devices/cpu/cop400/cop420ds.c
diff --git a/src/emu/cpu/cop400/cop440ds.c b/src/devices/cpu/cop400/cop440ds.c
index 4af02d3c481..4af02d3c481 100644
--- a/src/emu/cpu/cop400/cop440ds.c
+++ b/src/devices/cpu/cop400/cop440ds.c
diff --git a/src/emu/cpu/cosmac/cosdasm.c b/src/devices/cpu/cosmac/cosdasm.c
index f8f41e2c4ce..f8f41e2c4ce 100644
--- a/src/emu/cpu/cosmac/cosdasm.c
+++ b/src/devices/cpu/cosmac/cosdasm.c
diff --git a/src/emu/cpu/cosmac/cosmac.c b/src/devices/cpu/cosmac/cosmac.c
index f011e37a47a..f011e37a47a 100644
--- a/src/emu/cpu/cosmac/cosmac.c
+++ b/src/devices/cpu/cosmac/cosmac.c
diff --git a/src/emu/cpu/cosmac/cosmac.h b/src/devices/cpu/cosmac/cosmac.h
index c80a8e9ab6c..c80a8e9ab6c 100644
--- a/src/emu/cpu/cosmac/cosmac.h
+++ b/src/devices/cpu/cosmac/cosmac.h
diff --git a/src/emu/cpu/cp1610/1610dasm.c b/src/devices/cpu/cp1610/1610dasm.c
index 0035e9b78a5..0035e9b78a5 100644
--- a/src/emu/cpu/cp1610/1610dasm.c
+++ b/src/devices/cpu/cp1610/1610dasm.c
diff --git a/src/emu/cpu/cp1610/cp1610.c b/src/devices/cpu/cp1610/cp1610.c
index fd6fd5eceb7..fd6fd5eceb7 100644
--- a/src/emu/cpu/cp1610/cp1610.c
+++ b/src/devices/cpu/cp1610/cp1610.c
diff --git a/src/emu/cpu/cp1610/cp1610.h b/src/devices/cpu/cp1610/cp1610.h
index d3d7c9a78a4..d3d7c9a78a4 100644
--- a/src/emu/cpu/cp1610/cp1610.h
+++ b/src/devices/cpu/cp1610/cp1610.h
diff --git a/src/emu/cpu/cubeqcpu/cubedasm.c b/src/devices/cpu/cubeqcpu/cubedasm.c
index 81d7d95c088..81d7d95c088 100644
--- a/src/emu/cpu/cubeqcpu/cubedasm.c
+++ b/src/devices/cpu/cubeqcpu/cubedasm.c
diff --git a/src/emu/cpu/cubeqcpu/cubeqcpu.c b/src/devices/cpu/cubeqcpu/cubeqcpu.c
index 2a1678396c2..2a1678396c2 100644
--- a/src/emu/cpu/cubeqcpu/cubeqcpu.c
+++ b/src/devices/cpu/cubeqcpu/cubeqcpu.c
diff --git a/src/emu/cpu/cubeqcpu/cubeqcpu.h b/src/devices/cpu/cubeqcpu/cubeqcpu.h
index 4befd97d662..4befd97d662 100644
--- a/src/emu/cpu/cubeqcpu/cubeqcpu.h
+++ b/src/devices/cpu/cubeqcpu/cubeqcpu.h
diff --git a/src/emu/cpu/drcbec.c b/src/devices/cpu/drcbec.c
index d3e1538c1ba..d3e1538c1ba 100644
--- a/src/emu/cpu/drcbec.c
+++ b/src/devices/cpu/drcbec.c
diff --git a/src/emu/cpu/drcbec.h b/src/devices/cpu/drcbec.h
index 720d70f9a87..720d70f9a87 100644
--- a/src/emu/cpu/drcbec.h
+++ b/src/devices/cpu/drcbec.h
diff --git a/src/emu/cpu/drcbeut.c b/src/devices/cpu/drcbeut.c
index 4df863c8fb5..4df863c8fb5 100644
--- a/src/emu/cpu/drcbeut.c
+++ b/src/devices/cpu/drcbeut.c
diff --git a/src/emu/cpu/drcbeut.h b/src/devices/cpu/drcbeut.h
index 8987edb49c2..8987edb49c2 100644
--- a/src/emu/cpu/drcbeut.h
+++ b/src/devices/cpu/drcbeut.h
diff --git a/src/emu/cpu/drcbex64.c b/src/devices/cpu/drcbex64.c
index 64f2dd89bf0..64f2dd89bf0 100644
--- a/src/emu/cpu/drcbex64.c
+++ b/src/devices/cpu/drcbex64.c
diff --git a/src/emu/cpu/drcbex64.h b/src/devices/cpu/drcbex64.h
index 6b6cf729b64..6b6cf729b64 100644
--- a/src/emu/cpu/drcbex64.h
+++ b/src/devices/cpu/drcbex64.h
diff --git a/src/emu/cpu/drcbex86.c b/src/devices/cpu/drcbex86.c
index b52ece2b0cc..b52ece2b0cc 100644
--- a/src/emu/cpu/drcbex86.c
+++ b/src/devices/cpu/drcbex86.c
diff --git a/src/emu/cpu/drcbex86.h b/src/devices/cpu/drcbex86.h
index 3c3af63d0d0..3c3af63d0d0 100644
--- a/src/emu/cpu/drcbex86.h
+++ b/src/devices/cpu/drcbex86.h
diff --git a/src/emu/cpu/drccache.c b/src/devices/cpu/drccache.c
index 74a0116aa97..74a0116aa97 100644
--- a/src/emu/cpu/drccache.c
+++ b/src/devices/cpu/drccache.c
diff --git a/src/emu/cpu/drccache.h b/src/devices/cpu/drccache.h
index cf5a41e41dd..cf5a41e41dd 100644
--- a/src/emu/cpu/drccache.h
+++ b/src/devices/cpu/drccache.h
diff --git a/src/emu/cpu/drcfe.c b/src/devices/cpu/drcfe.c
index f3746b22dc0..f3746b22dc0 100644
--- a/src/emu/cpu/drcfe.c
+++ b/src/devices/cpu/drcfe.c
diff --git a/src/emu/cpu/drcfe.h b/src/devices/cpu/drcfe.h
index 67c67067221..67c67067221 100644
--- a/src/emu/cpu/drcfe.h
+++ b/src/devices/cpu/drcfe.h
diff --git a/src/emu/cpu/drcuml.c b/src/devices/cpu/drcuml.c
index b7e3c3e0045..b7e3c3e0045 100644
--- a/src/emu/cpu/drcuml.c
+++ b/src/devices/cpu/drcuml.c
diff --git a/src/emu/cpu/drcuml.h b/src/devices/cpu/drcuml.h
index 10652a224cc..10652a224cc 100644
--- a/src/emu/cpu/drcuml.h
+++ b/src/devices/cpu/drcuml.h
diff --git a/src/emu/cpu/drcumlsh.h b/src/devices/cpu/drcumlsh.h
index d14c1321d9e..d14c1321d9e 100644
--- a/src/emu/cpu/drcumlsh.h
+++ b/src/devices/cpu/drcumlsh.h
diff --git a/src/emu/cpu/dsp16/dsp16.c b/src/devices/cpu/dsp16/dsp16.c
index 9f1de0c79f6..9f1de0c79f6 100644
--- a/src/emu/cpu/dsp16/dsp16.c
+++ b/src/devices/cpu/dsp16/dsp16.c
diff --git a/src/emu/cpu/dsp16/dsp16.h b/src/devices/cpu/dsp16/dsp16.h
index 195cdcb5943..195cdcb5943 100644
--- a/src/emu/cpu/dsp16/dsp16.h
+++ b/src/devices/cpu/dsp16/dsp16.h
diff --git a/src/emu/cpu/dsp16/dsp16dis.c b/src/devices/cpu/dsp16/dsp16dis.c
index 2e144df03af..2e144df03af 100644
--- a/src/emu/cpu/dsp16/dsp16dis.c
+++ b/src/devices/cpu/dsp16/dsp16dis.c
diff --git a/src/emu/cpu/dsp16/dsp16ops.inc b/src/devices/cpu/dsp16/dsp16ops.inc
index d63fe9d3f99..d63fe9d3f99 100644
--- a/src/emu/cpu/dsp16/dsp16ops.inc
+++ b/src/devices/cpu/dsp16/dsp16ops.inc
diff --git a/src/emu/cpu/dsp32/dsp32.c b/src/devices/cpu/dsp32/dsp32.c
index 21de1f18a74..21de1f18a74 100644
--- a/src/emu/cpu/dsp32/dsp32.c
+++ b/src/devices/cpu/dsp32/dsp32.c
diff --git a/src/emu/cpu/dsp32/dsp32.h b/src/devices/cpu/dsp32/dsp32.h
index 1ef1642f6c2..1ef1642f6c2 100644
--- a/src/emu/cpu/dsp32/dsp32.h
+++ b/src/devices/cpu/dsp32/dsp32.h
diff --git a/src/emu/cpu/dsp32/dsp32dis.c b/src/devices/cpu/dsp32/dsp32dis.c
index 25f43e30761..25f43e30761 100644
--- a/src/emu/cpu/dsp32/dsp32dis.c
+++ b/src/devices/cpu/dsp32/dsp32dis.c
diff --git a/src/emu/cpu/dsp32/dsp32ops.inc b/src/devices/cpu/dsp32/dsp32ops.inc
index 09844f6ee4f..09844f6ee4f 100644
--- a/src/emu/cpu/dsp32/dsp32ops.inc
+++ b/src/devices/cpu/dsp32/dsp32ops.inc
diff --git a/src/emu/cpu/dsp56k/dsp56def.h b/src/devices/cpu/dsp56k/dsp56def.h
index 14fe208dbb8..14fe208dbb8 100644
--- a/src/emu/cpu/dsp56k/dsp56def.h
+++ b/src/devices/cpu/dsp56k/dsp56def.h
diff --git a/src/emu/cpu/dsp56k/dsp56dsm.c b/src/devices/cpu/dsp56k/dsp56dsm.c
index 283f712ecda..283f712ecda 100644
--- a/src/emu/cpu/dsp56k/dsp56dsm.c
+++ b/src/devices/cpu/dsp56k/dsp56dsm.c
diff --git a/src/emu/cpu/dsp56k/dsp56k.c b/src/devices/cpu/dsp56k/dsp56k.c
index 9e151019c7e..9e151019c7e 100644
--- a/src/emu/cpu/dsp56k/dsp56k.c
+++ b/src/devices/cpu/dsp56k/dsp56k.c
diff --git a/src/emu/cpu/dsp56k/dsp56k.h b/src/devices/cpu/dsp56k/dsp56k.h
index fc461dbcb16..fc461dbcb16 100644
--- a/src/emu/cpu/dsp56k/dsp56k.h
+++ b/src/devices/cpu/dsp56k/dsp56k.h
diff --git a/src/emu/cpu/dsp56k/dsp56mem.c b/src/devices/cpu/dsp56k/dsp56mem.c
index 6ec2251df64..6ec2251df64 100644
--- a/src/emu/cpu/dsp56k/dsp56mem.c
+++ b/src/devices/cpu/dsp56k/dsp56mem.c
diff --git a/src/emu/cpu/dsp56k/dsp56mem.h b/src/devices/cpu/dsp56k/dsp56mem.h
index 93ab74ede42..93ab74ede42 100644
--- a/src/emu/cpu/dsp56k/dsp56mem.h
+++ b/src/devices/cpu/dsp56k/dsp56mem.h
diff --git a/src/emu/cpu/dsp56k/dsp56ops.inc b/src/devices/cpu/dsp56k/dsp56ops.inc
index f00d1cc84b4..f00d1cc84b4 100644
--- a/src/emu/cpu/dsp56k/dsp56ops.inc
+++ b/src/devices/cpu/dsp56k/dsp56ops.inc
diff --git a/src/emu/cpu/dsp56k/dsp56pcu.c b/src/devices/cpu/dsp56k/dsp56pcu.c
index 7ec53891e4c..7ec53891e4c 100644
--- a/src/emu/cpu/dsp56k/dsp56pcu.c
+++ b/src/devices/cpu/dsp56k/dsp56pcu.c
diff --git a/src/emu/cpu/dsp56k/dsp56pcu.h b/src/devices/cpu/dsp56k/dsp56pcu.h
index 7463ac11d35..7463ac11d35 100644
--- a/src/emu/cpu/dsp56k/dsp56pcu.h
+++ b/src/devices/cpu/dsp56k/dsp56pcu.h
diff --git a/src/emu/cpu/dsp56k/inst.c b/src/devices/cpu/dsp56k/inst.c
index d01bbdbcf04..d01bbdbcf04 100644
--- a/src/emu/cpu/dsp56k/inst.c
+++ b/src/devices/cpu/dsp56k/inst.c
diff --git a/src/emu/cpu/dsp56k/inst.h b/src/devices/cpu/dsp56k/inst.h
index b83508a7df2..b83508a7df2 100644
--- a/src/emu/cpu/dsp56k/inst.h
+++ b/src/devices/cpu/dsp56k/inst.h
diff --git a/src/emu/cpu/dsp56k/opcode.c b/src/devices/cpu/dsp56k/opcode.c
index dd71d852650..dd71d852650 100644
--- a/src/emu/cpu/dsp56k/opcode.c
+++ b/src/devices/cpu/dsp56k/opcode.c
diff --git a/src/emu/cpu/dsp56k/opcode.h b/src/devices/cpu/dsp56k/opcode.h
index 66423716ffb..66423716ffb 100644
--- a/src/emu/cpu/dsp56k/opcode.h
+++ b/src/devices/cpu/dsp56k/opcode.h
diff --git a/src/emu/cpu/dsp56k/pmove.c b/src/devices/cpu/dsp56k/pmove.c
index dce702d094b..dce702d094b 100644
--- a/src/emu/cpu/dsp56k/pmove.c
+++ b/src/devices/cpu/dsp56k/pmove.c
diff --git a/src/emu/cpu/dsp56k/pmove.h b/src/devices/cpu/dsp56k/pmove.h
index 8e30a534073..8e30a534073 100644
--- a/src/emu/cpu/dsp56k/pmove.h
+++ b/src/devices/cpu/dsp56k/pmove.h
diff --git a/src/emu/cpu/dsp56k/tables.c b/src/devices/cpu/dsp56k/tables.c
index 5837580409e..5837580409e 100644
--- a/src/emu/cpu/dsp56k/tables.c
+++ b/src/devices/cpu/dsp56k/tables.c
diff --git a/src/emu/cpu/dsp56k/tables.h b/src/devices/cpu/dsp56k/tables.h
index f0bb88f21d8..f0bb88f21d8 100644
--- a/src/emu/cpu/dsp56k/tables.h
+++ b/src/devices/cpu/dsp56k/tables.h
diff --git a/src/emu/cpu/e0c6200/e0c6200.c b/src/devices/cpu/e0c6200/e0c6200.c
index e0b6a2eb8d2..e0b6a2eb8d2 100644
--- a/src/emu/cpu/e0c6200/e0c6200.c
+++ b/src/devices/cpu/e0c6200/e0c6200.c
diff --git a/src/emu/cpu/e0c6200/e0c6200.h b/src/devices/cpu/e0c6200/e0c6200.h
index 430cc36f6f8..430cc36f6f8 100644
--- a/src/emu/cpu/e0c6200/e0c6200.h
+++ b/src/devices/cpu/e0c6200/e0c6200.h
diff --git a/src/emu/cpu/e0c6200/e0c6200d.c b/src/devices/cpu/e0c6200/e0c6200d.c
index 4fc0599ac24..4fc0599ac24 100644
--- a/src/emu/cpu/e0c6200/e0c6200d.c
+++ b/src/devices/cpu/e0c6200/e0c6200d.c
diff --git a/src/emu/cpu/e0c6200/e0c6200op.inc b/src/devices/cpu/e0c6200/e0c6200op.inc
index 09fc07b3c70..09fc07b3c70 100644
--- a/src/emu/cpu/e0c6200/e0c6200op.inc
+++ b/src/devices/cpu/e0c6200/e0c6200op.inc
diff --git a/src/emu/cpu/e0c6200/e0c6s46.c b/src/devices/cpu/e0c6200/e0c6s46.c
index be131a1e5dc..be131a1e5dc 100644
--- a/src/emu/cpu/e0c6200/e0c6s46.c
+++ b/src/devices/cpu/e0c6200/e0c6s46.c
diff --git a/src/emu/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h
index 0b5f1e8bee3..0b5f1e8bee3 100644
--- a/src/emu/cpu/e0c6200/e0c6s46.h
+++ b/src/devices/cpu/e0c6200/e0c6s46.h
diff --git a/src/emu/cpu/e132xs/32xsdasm.c b/src/devices/cpu/e132xs/32xsdasm.c
index f5e9885b220..f5e9885b220 100644
--- a/src/emu/cpu/e132xs/32xsdasm.c
+++ b/src/devices/cpu/e132xs/32xsdasm.c
diff --git a/src/emu/cpu/e132xs/e132xs.c b/src/devices/cpu/e132xs/e132xs.c
index fb156aae200..f714f6f8a6b 100644
--- a/src/emu/cpu/e132xs/e132xs.c
+++ b/src/devices/cpu/e132xs/e132xs.c
@@ -95,13 +95,13 @@
- Added generic registers decode function
- Some other little fixes.
- MooglyGuy 29/03/2004
+ Ryan Holtz 29/03/2004
- Changed MOVI to use unsigned values instead of signed, correcting
an ugly glitch when loading 32-bit immediates.
Pierpaolo Prazzoli
- Same fix in get_const
- MooglyGuy - 02/27/04
+ Ryan Holtz - 02/27/04
- Fixed delayed branching
- const_val for CALL should always have bit 0 clear
@@ -133,7 +133,7 @@
(From the doc: A Call, Trap or Software instruction increments the FP and sets FL
to 6, thus creating a new stack frame with the length of 6 registers).
- MooglyGuy - 10/25/03
+ Ryan Holtz - 10/25/03
- Fixed CALL enough that it at least jumps to the right address, no word
yet as to whether or not it's working enough to return.
- Added get_lrconst() to get the const value for the CALL operand, since
@@ -152,7 +152,7 @@
Apparently no matter what the current frame pointer is they'll always use
local_regs[0] through local_regs[15].
- MooglyGuy - 08/20/03
+ Ryan Holtz - 08/20/03
- Added H flag support for MOV and MOVI
- Changed init routine to set S flag on boot. Apparently the CPU defaults to
supervisor mode as opposed to user mode when it powers on, as shown by the
@@ -164,18 +164,18 @@
(movd, divu, divs, ldxx1, ldxx2, stxx1, stxx2, mulu, muls, set, mul
call, chk)
- MooglyGuy - 08/17/03
+ Ryan Holtz - 08/17/03
- Working on support for H flag, nothing quite done yet
- Added trap Range Error for CHK PC, PC
- Fixed relative jumps, they have to be taken from the opcode following the
- jump minstead of the jump opcode itself.
+ jump instead of the jump opcode itself.
Pierpaolo Prazzoli - 08/17/03
- Fixed get_pcrel() when OP & 0x80 is set.
- Decremented PC by 2 also in MOV, ADD, ADDI, SUM, SUB and added the check if
D_BIT is not set. (when pc is changed they are implicit branch)
- MooglyGuy - 08/17/03
+ Ryan Holtz - 08/17/03
- Implemented a crude hack to set FL in the SR to 6, since according to the docs
that's supposed to happen each time a trap occurs, apparently including when
the processor starts up. The 3rd opcode executed in vamphalf checks to see if
@@ -191,7 +191,7 @@
a few bytes. While it does indeed branch to valid code, I highly doubt that
this is the desired effect. Check for signed/unsigned relative branch, maybe?
- MooglyGuy - 08/16/03
+ Ryan Holtz - 08/16/03
- Fixed the debugger at least somewhat so that it displays hex instead of decimal,
and so that it disassembles opcodes properly.
- Fixed hyperstone_execute() to increment PC *after* executing the opcode instead of
diff --git a/src/emu/cpu/e132xs/e132xs.h b/src/devices/cpu/e132xs/e132xs.h
index c8f43641ff5..c8f43641ff5 100644
--- a/src/emu/cpu/e132xs/e132xs.h
+++ b/src/devices/cpu/e132xs/e132xs.h
diff --git a/src/emu/cpu/e132xs/e132xsop.inc b/src/devices/cpu/e132xs/e132xsop.inc
index e37ef914246..e37ef914246 100644
--- a/src/emu/cpu/e132xs/e132xsop.inc
+++ b/src/devices/cpu/e132xs/e132xsop.inc
diff --git a/src/emu/cpu/es5510/es5510.c b/src/devices/cpu/es5510/es5510.c
index 77b88b5d861..77b88b5d861 100644
--- a/src/emu/cpu/es5510/es5510.c
+++ b/src/devices/cpu/es5510/es5510.c
diff --git a/src/emu/cpu/es5510/es5510.h b/src/devices/cpu/es5510/es5510.h
index b3e12cba119..b3e12cba119 100644
--- a/src/emu/cpu/es5510/es5510.h
+++ b/src/devices/cpu/es5510/es5510.h
diff --git a/src/emu/cpu/esrip/esrip.c b/src/devices/cpu/esrip/esrip.c
index fa7ab139b08..fa7ab139b08 100644
--- a/src/emu/cpu/esrip/esrip.c
+++ b/src/devices/cpu/esrip/esrip.c
diff --git a/src/emu/cpu/esrip/esrip.h b/src/devices/cpu/esrip/esrip.h
index ecfba10975d..ecfba10975d 100644
--- a/src/emu/cpu/esrip/esrip.h
+++ b/src/devices/cpu/esrip/esrip.h
diff --git a/src/emu/cpu/esrip/esripdsm.c b/src/devices/cpu/esrip/esripdsm.c
index 8e5a01ae792..8e5a01ae792 100644
--- a/src/emu/cpu/esrip/esripdsm.c
+++ b/src/devices/cpu/esrip/esripdsm.c
diff --git a/src/emu/cpu/f8/f8.c b/src/devices/cpu/f8/f8.c
index 182638543d7..182638543d7 100644
--- a/src/emu/cpu/f8/f8.c
+++ b/src/devices/cpu/f8/f8.c
diff --git a/src/emu/cpu/f8/f8.h b/src/devices/cpu/f8/f8.h
index a478cf137b1..a478cf137b1 100644
--- a/src/emu/cpu/f8/f8.h
+++ b/src/devices/cpu/f8/f8.h
diff --git a/src/emu/cpu/f8/f8dasm.c b/src/devices/cpu/f8/f8dasm.c
index 03e3d3065ea..03e3d3065ea 100644
--- a/src/emu/cpu/f8/f8dasm.c
+++ b/src/devices/cpu/f8/f8dasm.c
diff --git a/src/emu/cpu/g65816/g65816.c b/src/devices/cpu/g65816/g65816.c
index 03e7320eb89..03e7320eb89 100644
--- a/src/emu/cpu/g65816/g65816.c
+++ b/src/devices/cpu/g65816/g65816.c
diff --git a/src/emu/cpu/g65816/g65816.h b/src/devices/cpu/g65816/g65816.h
index 19b76fb3d31..19b76fb3d31 100644
--- a/src/emu/cpu/g65816/g65816.h
+++ b/src/devices/cpu/g65816/g65816.h
diff --git a/src/emu/cpu/g65816/g65816cm.h b/src/devices/cpu/g65816/g65816cm.h
index 7cfbcdf2cfb..7cfbcdf2cfb 100644
--- a/src/emu/cpu/g65816/g65816cm.h
+++ b/src/devices/cpu/g65816/g65816cm.h
diff --git a/src/emu/cpu/g65816/g65816ds.c b/src/devices/cpu/g65816/g65816ds.c
index 17af208a822..17af208a822 100644
--- a/src/emu/cpu/g65816/g65816ds.c
+++ b/src/devices/cpu/g65816/g65816ds.c
diff --git a/src/emu/cpu/g65816/g65816ds.h b/src/devices/cpu/g65816/g65816ds.h
index 58b47752ca5..58b47752ca5 100644
--- a/src/emu/cpu/g65816/g65816ds.h
+++ b/src/devices/cpu/g65816/g65816ds.h
diff --git a/src/emu/cpu/g65816/g65816o0.c b/src/devices/cpu/g65816/g65816o0.c
index 5829325bd37..5829325bd37 100644
--- a/src/emu/cpu/g65816/g65816o0.c
+++ b/src/devices/cpu/g65816/g65816o0.c
diff --git a/src/emu/cpu/g65816/g65816o1.c b/src/devices/cpu/g65816/g65816o1.c
index 4b277c9abf2..4b277c9abf2 100644
--- a/src/emu/cpu/g65816/g65816o1.c
+++ b/src/devices/cpu/g65816/g65816o1.c
diff --git a/src/emu/cpu/g65816/g65816o2.c b/src/devices/cpu/g65816/g65816o2.c
index 63a8157e961..63a8157e961 100644
--- a/src/emu/cpu/g65816/g65816o2.c
+++ b/src/devices/cpu/g65816/g65816o2.c
diff --git a/src/emu/cpu/g65816/g65816o3.c b/src/devices/cpu/g65816/g65816o3.c
index 24cdebf05b6..24cdebf05b6 100644
--- a/src/emu/cpu/g65816/g65816o3.c
+++ b/src/devices/cpu/g65816/g65816o3.c
diff --git a/src/emu/cpu/g65816/g65816o4.c b/src/devices/cpu/g65816/g65816o4.c
index 60262c859fb..60262c859fb 100644
--- a/src/emu/cpu/g65816/g65816o4.c
+++ b/src/devices/cpu/g65816/g65816o4.c
diff --git a/src/emu/cpu/g65816/g65816op.h b/src/devices/cpu/g65816/g65816op.h
index 81f887b3e12..81f887b3e12 100644
--- a/src/emu/cpu/g65816/g65816op.h
+++ b/src/devices/cpu/g65816/g65816op.h
diff --git a/src/emu/cpu/h6280/6280dasm.c b/src/devices/cpu/h6280/6280dasm.c
index 7dbafd939c4..4a9923ae0dc 100644
--- a/src/emu/cpu/h6280/6280dasm.c
+++ b/src/devices/cpu/h6280/6280dasm.c
@@ -18,6 +18,11 @@
******************************************************************************/
+#ifdef __OS2__
+/* To avoid name clash of _brk */
+#define __STRICT_ANSI__
+#endif
+
#include "emu.h"
#define RDOP(addr) (oprom[addr - pc])
diff --git a/src/emu/cpu/h6280/h6280.c b/src/devices/cpu/h6280/h6280.c
index f92e0520a12..f92e0520a12 100644
--- a/src/emu/cpu/h6280/h6280.c
+++ b/src/devices/cpu/h6280/h6280.c
diff --git a/src/emu/cpu/h6280/h6280.h b/src/devices/cpu/h6280/h6280.h
index dccf221abf7..dccf221abf7 100644
--- a/src/emu/cpu/h6280/h6280.h
+++ b/src/devices/cpu/h6280/h6280.h
diff --git a/src/emu/cpu/h8/h8.c b/src/devices/cpu/h8/h8.c
index 9084c0b76fa..9084c0b76fa 100644
--- a/src/emu/cpu/h8/h8.c
+++ b/src/devices/cpu/h8/h8.c
diff --git a/src/emu/cpu/h8/h8.h b/src/devices/cpu/h8/h8.h
index b1880c23b4d..b1880c23b4d 100644
--- a/src/emu/cpu/h8/h8.h
+++ b/src/devices/cpu/h8/h8.h
diff --git a/src/emu/cpu/h8/h8.lst b/src/devices/cpu/h8/h8.lst
index 3ec1f46fbe4..3ec1f46fbe4 100644
--- a/src/emu/cpu/h8/h8.lst
+++ b/src/devices/cpu/h8/h8.lst
diff --git a/src/emu/cpu/h8/h83002.c b/src/devices/cpu/h8/h83002.c
index 451454dca40..451454dca40 100644
--- a/src/emu/cpu/h8/h83002.c
+++ b/src/devices/cpu/h8/h83002.c
diff --git a/src/emu/cpu/h8/h83002.h b/src/devices/cpu/h8/h83002.h
index c6b9612fc9c..c6b9612fc9c 100644
--- a/src/emu/cpu/h8/h83002.h
+++ b/src/devices/cpu/h8/h83002.h
diff --git a/src/emu/cpu/h8/h83006.c b/src/devices/cpu/h8/h83006.c
index 2e203a84dbb..2e203a84dbb 100644
--- a/src/emu/cpu/h8/h83006.c
+++ b/src/devices/cpu/h8/h83006.c
diff --git a/src/emu/cpu/h8/h83006.h b/src/devices/cpu/h8/h83006.h
index 3dcd1690f93..3dcd1690f93 100644
--- a/src/emu/cpu/h8/h83006.h
+++ b/src/devices/cpu/h8/h83006.h
diff --git a/src/emu/cpu/h8/h83008.c b/src/devices/cpu/h8/h83008.c
index c919008667d..c919008667d 100644
--- a/src/emu/cpu/h8/h83008.c
+++ b/src/devices/cpu/h8/h83008.c
diff --git a/src/emu/cpu/h8/h83008.h b/src/devices/cpu/h8/h83008.h
index 8a26d62ed69..8a26d62ed69 100644
--- a/src/emu/cpu/h8/h83008.h
+++ b/src/devices/cpu/h8/h83008.h
diff --git a/src/emu/cpu/h8/h83048.c b/src/devices/cpu/h8/h83048.c
index 8254f5a6c22..8254f5a6c22 100644
--- a/src/emu/cpu/h8/h83048.c
+++ b/src/devices/cpu/h8/h83048.c
diff --git a/src/emu/cpu/h8/h83048.h b/src/devices/cpu/h8/h83048.h
index ecb3ed573d5..ecb3ed573d5 100644
--- a/src/emu/cpu/h8/h83048.h
+++ b/src/devices/cpu/h8/h83048.h
diff --git a/src/emu/cpu/h8/h83337.c b/src/devices/cpu/h8/h83337.c
index 00a353e4347..00a353e4347 100644
--- a/src/emu/cpu/h8/h83337.c
+++ b/src/devices/cpu/h8/h83337.c
diff --git a/src/emu/cpu/h8/h83337.h b/src/devices/cpu/h8/h83337.h
index b01580733da..b01580733da 100644
--- a/src/emu/cpu/h8/h83337.h
+++ b/src/devices/cpu/h8/h83337.h
diff --git a/src/emu/cpu/h8/h8_adc.c b/src/devices/cpu/h8/h8_adc.c
index b1f02f83ca7..b1f02f83ca7 100644
--- a/src/emu/cpu/h8/h8_adc.c
+++ b/src/devices/cpu/h8/h8_adc.c
diff --git a/src/emu/cpu/h8/h8_adc.h b/src/devices/cpu/h8/h8_adc.h
index 5a7a5f67cbb..5a7a5f67cbb 100644
--- a/src/emu/cpu/h8/h8_adc.h
+++ b/src/devices/cpu/h8/h8_adc.h
diff --git a/src/emu/cpu/h8/h8_intc.c b/src/devices/cpu/h8/h8_intc.c
index e88476fc05c..e88476fc05c 100644
--- a/src/emu/cpu/h8/h8_intc.c
+++ b/src/devices/cpu/h8/h8_intc.c
diff --git a/src/emu/cpu/h8/h8_intc.h b/src/devices/cpu/h8/h8_intc.h
index b255f80684f..b255f80684f 100644
--- a/src/emu/cpu/h8/h8_intc.h
+++ b/src/devices/cpu/h8/h8_intc.h
diff --git a/src/emu/cpu/h8/h8_port.c b/src/devices/cpu/h8/h8_port.c
index 0f289edc7a3..0f289edc7a3 100644
--- a/src/emu/cpu/h8/h8_port.c
+++ b/src/devices/cpu/h8/h8_port.c
diff --git a/src/emu/cpu/h8/h8_port.h b/src/devices/cpu/h8/h8_port.h
index 2ac35b5b48a..2ac35b5b48a 100644
--- a/src/emu/cpu/h8/h8_port.h
+++ b/src/devices/cpu/h8/h8_port.h
diff --git a/src/emu/cpu/h8/h8_sci.c b/src/devices/cpu/h8/h8_sci.c
index 758e09141f2..758e09141f2 100644
--- a/src/emu/cpu/h8/h8_sci.c
+++ b/src/devices/cpu/h8/h8_sci.c
diff --git a/src/emu/cpu/h8/h8_sci.h b/src/devices/cpu/h8/h8_sci.h
index 7e93f14dc14..7e93f14dc14 100644
--- a/src/emu/cpu/h8/h8_sci.h
+++ b/src/devices/cpu/h8/h8_sci.h
diff --git a/src/emu/cpu/h8/h8_timer16.c b/src/devices/cpu/h8/h8_timer16.c
index 2498d3bf743..5714985dd84 100644
--- a/src/emu/cpu/h8/h8_timer16.c
+++ b/src/devices/cpu/h8/h8_timer16.c
@@ -164,7 +164,7 @@ void h8_timer16_channel_device::device_start()
{
intc = owner()->siblingdevice<h8_intc_device>(intc_tag);
channel_active = false;
- clock_type = DIV_1;
+ device_reset();
save_item(NAME(tgr_clearing));
save_item(NAME(tcr));
diff --git a/src/emu/cpu/h8/h8_timer16.h b/src/devices/cpu/h8/h8_timer16.h
index e187999625e..e187999625e 100644
--- a/src/emu/cpu/h8/h8_timer16.h
+++ b/src/devices/cpu/h8/h8_timer16.h
diff --git a/src/emu/cpu/h8/h8_timer8.c b/src/devices/cpu/h8/h8_timer8.c
index b652f091c07..b652f091c07 100644
--- a/src/emu/cpu/h8/h8_timer8.c
+++ b/src/devices/cpu/h8/h8_timer8.c
diff --git a/src/emu/cpu/h8/h8_timer8.h b/src/devices/cpu/h8/h8_timer8.h
index d58677097e5..d58677097e5 100644
--- a/src/emu/cpu/h8/h8_timer8.h
+++ b/src/devices/cpu/h8/h8_timer8.h
diff --git a/src/emu/cpu/h8/h8h.c b/src/devices/cpu/h8/h8h.c
index 89615fadad5..89615fadad5 100644
--- a/src/emu/cpu/h8/h8h.c
+++ b/src/devices/cpu/h8/h8h.c
diff --git a/src/emu/cpu/h8/h8h.h b/src/devices/cpu/h8/h8h.h
index 2fb500b77f8..2fb500b77f8 100644
--- a/src/emu/cpu/h8/h8h.h
+++ b/src/devices/cpu/h8/h8h.h
diff --git a/src/emu/cpu/h8/h8make.py b/src/devices/cpu/h8/h8make.py
index 4cd435df373..929b5d14c4e 100644
--- a/src/emu/cpu/h8/h8make.py
+++ b/src/devices/cpu/h8/h8make.py
@@ -1,5 +1,7 @@
#!/usr/bin/python
+from __future__ import print_function
+
USAGE = """
Usage:
%s h8.lst <type> h8.inc (type = o/h/s20/s26)
@@ -45,45 +47,45 @@ def has_eat(ins):
return False
def save_full_one(f, t, name, source):
- print >>f, "void %s::%s_full()" % (t, name)
- print >>f, "{"
+ print("void %s::%s_full()" % (t, name), file=f)
+ print("{", file=f)
substate = 1
for line in source:
if has_memory(line):
- print >>f, "\tif(icount <= bcount) { inst_substate = %d; return; }" % substate
- print >>f, line
+ print("\tif(icount <= bcount) { inst_substate = %d; return; }" % substate, file=f)
+ print(line, file=f)
substate += 1
elif has_eat(line):
- print >>f, "\tif(icount) icount = bcount; inst_substate = %d; return;" % substate
+ print("\tif(icount) icount = bcount; inst_substate = %d; return;" % substate, file=f)
substate += 1
else:
- print >>f, line
- print >>f, "}"
- print >>f
+ print(line, file=f)
+ print("}", file=f)
+ print("", file=f)
def save_partial_one(f, t, name, source):
- print >>f, "void %s::%s_partial()" % (t, name)
- print >>f, "{"
- print >>f, "switch(inst_substate) {"
- print >>f, "case 0:"
+ print("void %s::%s_partial()" % (t, name), file=f)
+ print("{", file=f)
+ print("switch(inst_substate) {", file=f)
+ print("case 0:", file=f)
substate = 1
for line in source:
if has_memory(line):
- print >>f, "\tif(icount <= bcount) { inst_substate = %d; return; }" % substate
- print >>f, "case %d:;" % substate
- print >>f, line
+ print("\tif(icount <= bcount) { inst_substate = %d; return; }" % substate, file=f)
+ print("case %d:;" % substate, file=f)
+ print(line, file=f)
substate += 1
elif has_eat(line):
- print >>f, "\tif(icount) icount = bcount; inst_substate = %d; return;" % substate
- print >>f, "case %d:;" % substate
+ print("\tif(icount) icount = bcount; inst_substate = %d; return;" % substate, file=f)
+ print("case %d:;" % substate, file=f)
substate += 1
else:
- print >>f, line
- print >>f, "\tbreak;"
- print >>f, "}"
- print >>f, "\tinst_substate = 0;"
- print >>f, "}"
- print >>f
+ print(line, file=f)
+ print("\tbreak;", file=f)
+ print("}", file=f)
+ print("\tinst_substate = 0;", file=f)
+ print("}", file=f)
+ print("", file=f)
class Hash:
def __init__(self, premask):
@@ -185,7 +187,7 @@ class Opcode:
else:
flags = "%d" % size
- print >>f, "\t{ %d, 0x%08x, 0x%08x, 0x%04x, 0x%04x, \"%s\", DASM_%s, DASM_%s, %s }, // %s" % ( slot, val, mask, val2, mask2, self.name, self.am1 if self.am1 != "-" else "none", self.am2 if self.am2 != "-" else "none", flags, "needed" if self.needed else "inherited")
+ print("\t{ %d, 0x%08x, 0x%08x, 0x%04x, 0x%04x, \"%s\", DASM_%s, DASM_%s, %s }, // %s" % ( slot, val, mask, val2, mask2, self.name, self.am1 if self.am1 != "-" else "none", self.am2 if self.am2 != "-" else "none", flags, "needed" if self.needed else "inherited"), file=f)
class Special:
def __init__(self, val, name, otype, dtype):
@@ -244,7 +246,7 @@ class DispatchStep:
return True
def source(self):
- start = self.pos / 2
+ start = self.pos // 2
end = start + self.skip
s = []
for i in range(start, end+1):
@@ -345,13 +347,13 @@ class OpcodeList:
h = self.get(d.id)
def save_dasm(self, f, dname):
- print >>f, "const %s::disasm_entry %s::disasm_entries[] = {" % (dname, dname)
+ print("const %s::disasm_entry %s::disasm_entries[] = {" % (dname, dname), file=f)
for opc in self.opcode_info:
if opc.enabled:
opc.save_dasm(f)
- print >>f, "\t{ 0, 0, 0, 0, 0, \"illegal\", 0, 0, 2 },"
- print >>f, "};"
- print >>f
+ print("\t{ 0, 0, 0, 0, 0, \"illegal\", 0, 0, 2 },", file=f)
+ print("};", file=f)
+ print("", file=f)
def save_opcodes(self, f, t):
for opc in self.opcode_info:
@@ -370,24 +372,24 @@ class OpcodeList:
save_partial_one(f, t, "dispatch_" + dsp.name, dsp.source())
def save_exec(self, f, t, dtype, v):
- print >>f, "void %s::do_exec_%s()" % (t, v)
- print >>f, "{"
- print >>f, "\tswitch(inst_state >> 16) {"
+ print("void %s::do_exec_%s()" % (t, v), file=f)
+ print("{", file=f)
+ print("\tswitch(inst_state >> 16) {", file=f)
for i in range(0, len(self.dispatch_info)+2):
if i == 1:
- print >>f, "\tcase 0x01: {"
- print >>f, "\t\tswitch(inst_state & 0xffff) {"
+ print("\tcase 0x01: {", file=f)
+ print("\t\tswitch(inst_state & 0xffff) {", file=f)
for sta in self.states_info:
if sta.enabled:
- print >>f, "\t\tcase 0x%02x: state_%s_%s(); break;" % (sta.val & 0xffff, sta.name, v)
- print >>f, "\t\t}"
- print >>f, "\t\tbreak;"
- print >>f, "\t}"
+ print("\t\tcase 0x%02x: state_%s_%s(); break;" % (sta.val & 0xffff, sta.name, v), file=f)
+ print("\t\t}", file=f)
+ print("\t\tbreak;", file=f)
+ print("\t}", file=f)
else:
if i == 0 or self.dispatch_info[i-2].enabled:
- print >>f, "\tcase 0x%02x: {" % i
+ print("\tcase 0x%02x: {" % i, file=f)
h = self.get(i)
- print >>f, "\t\tswitch((inst_state >> 8) & 0x%02x) {" % h.mask
+ print("\t\tswitch((inst_state >> 8) & 0x%02x) {" % h.mask, file=f)
for val, h2 in sorted(h.d.items()):
if h2.enabled:
fmask = h2.premask | (h.mask ^ 0xff)
@@ -398,16 +400,16 @@ class OpcodeList:
s += 1
while s & fmask:
s += s & fmask
- print >>f, "\t\t%s{" % c
+ print("\t\t%s{" % c, file=f)
if h2.mask == 0x00:
n = h2.d[0]
if n.is_dispatch():
- print >>f, "\t\t\tdispatch_%s_%s();" % (n.name, v)
+ print("\t\t\tdispatch_%s_%s();" % (n.name, v), file=f)
else:
- print >>f, "\t\t\t%s_%s();" % (n.function_name(), v)
- print >>f, "\t\t\tbreak;"
+ print("\t\t\t%s_%s();" % (n.function_name(), v), file=f)
+ print("\t\t\tbreak;", file=f)
else:
- print >>f, "\t\t\tswitch(inst_state & 0x%02x) {" % h2.mask
+ print("\t\t\tswitch(inst_state & 0x%02x) {" % h2.mask, file=f)
if i == 0:
mpos = 1
else:
@@ -427,23 +429,23 @@ class OpcodeList:
while s & fmask:
s += s & fmask
if n.is_dispatch():
- print >>f, "\t\t\t%sdispatch_%s_%s(); break;" % (c, n.name, v)
+ print("\t\t\t%sdispatch_%s_%s(); break;" % (c, n.name, v), file=f)
else:
- print >>f, "\t\t\t%s%s_%s(); break;" % (c, n.function_name(), v)
- print >>f, "\t\t\tdefault: illegal(); break;"
- print >>f, "\t\t\t}"
- print >>f, "\t\t\tbreak;"
- print >>f, "\t\t}"
- print >>f, "\t\tdefault: illegal(); break;"
- print >>f, "\t\t}"
- print >>f, "\t\tbreak;"
- print >>f, "\t}"
- print >>f, "\t}"
- print >>f, "}"
+ print("\t\t\t%s%s_%s(); break;" % (c, n.function_name(), v), file=f)
+ print("\t\t\tdefault: illegal(); break;", file=f)
+ print("\t\t\t}", file=f)
+ print("\t\t\tbreak;", file=f)
+ print("\t\t}", file=f)
+ print("\t\tdefault: illegal(); break;", file=f)
+ print("\t\t}", file=f)
+ print("\t\tbreak;", file=f)
+ print("\t}", file=f)
+ print("\t}", file=f)
+ print("}", file=f)
def main(argv):
if len(argv) != 4:
- print USAGE % argv[0]
+ print(USAGE % argv[0])
return 1
dtype = name_to_type(argv[2])
diff --git a/src/emu/cpu/h8/h8s2000.c b/src/devices/cpu/h8/h8s2000.c
index 4686e718666..4686e718666 100644
--- a/src/emu/cpu/h8/h8s2000.c
+++ b/src/devices/cpu/h8/h8s2000.c
diff --git a/src/emu/cpu/h8/h8s2000.h b/src/devices/cpu/h8/h8s2000.h
index 8b0c7ef1f7f..8b0c7ef1f7f 100644
--- a/src/emu/cpu/h8/h8s2000.h
+++ b/src/devices/cpu/h8/h8s2000.h
diff --git a/src/emu/cpu/h8/h8s2245.c b/src/devices/cpu/h8/h8s2245.c
index ca0e4b54c74..ca0e4b54c74 100644
--- a/src/emu/cpu/h8/h8s2245.c
+++ b/src/devices/cpu/h8/h8s2245.c
diff --git a/src/emu/cpu/h8/h8s2245.h b/src/devices/cpu/h8/h8s2245.h
index 257c1d0f35a..257c1d0f35a 100644
--- a/src/emu/cpu/h8/h8s2245.h
+++ b/src/devices/cpu/h8/h8s2245.h
diff --git a/src/emu/cpu/h8/h8s2320.c b/src/devices/cpu/h8/h8s2320.c
index d168ade1060..d168ade1060 100644
--- a/src/emu/cpu/h8/h8s2320.c
+++ b/src/devices/cpu/h8/h8s2320.c
diff --git a/src/emu/cpu/h8/h8s2320.h b/src/devices/cpu/h8/h8s2320.h
index f3ff765daf6..f3ff765daf6 100644
--- a/src/emu/cpu/h8/h8s2320.h
+++ b/src/devices/cpu/h8/h8s2320.h
diff --git a/src/emu/cpu/h8/h8s2357.c b/src/devices/cpu/h8/h8s2357.c
index 56248a29c3a..56248a29c3a 100644
--- a/src/emu/cpu/h8/h8s2357.c
+++ b/src/devices/cpu/h8/h8s2357.c
diff --git a/src/emu/cpu/h8/h8s2357.h b/src/devices/cpu/h8/h8s2357.h
index 042207fc67e..042207fc67e 100644
--- a/src/emu/cpu/h8/h8s2357.h
+++ b/src/devices/cpu/h8/h8s2357.h
diff --git a/src/emu/cpu/h8/h8s2600.c b/src/devices/cpu/h8/h8s2600.c
index a72cf591a19..a72cf591a19 100644
--- a/src/emu/cpu/h8/h8s2600.c
+++ b/src/devices/cpu/h8/h8s2600.c
diff --git a/src/emu/cpu/h8/h8s2600.h b/src/devices/cpu/h8/h8s2600.h
index 5f224361734..5f224361734 100644
--- a/src/emu/cpu/h8/h8s2600.h
+++ b/src/devices/cpu/h8/h8s2600.h
diff --git a/src/emu/cpu/h8/h8s2655.c b/src/devices/cpu/h8/h8s2655.c
index cedce054d48..cedce054d48 100644
--- a/src/emu/cpu/h8/h8s2655.c
+++ b/src/devices/cpu/h8/h8s2655.c
diff --git a/src/emu/cpu/h8/h8s2655.h b/src/devices/cpu/h8/h8s2655.h
index 89b76187bd1..89b76187bd1 100644
--- a/src/emu/cpu/h8/h8s2655.h
+++ b/src/devices/cpu/h8/h8s2655.h
diff --git a/src/emu/cpu/hcd62121/hcd62121.c b/src/devices/cpu/hcd62121/hcd62121.c
index f45ebdbe03d..f45ebdbe03d 100644
--- a/src/emu/cpu/hcd62121/hcd62121.c
+++ b/src/devices/cpu/hcd62121/hcd62121.c
diff --git a/src/emu/cpu/hcd62121/hcd62121.h b/src/devices/cpu/hcd62121/hcd62121.h
index feaa1bf6533..feaa1bf6533 100644
--- a/src/emu/cpu/hcd62121/hcd62121.h
+++ b/src/devices/cpu/hcd62121/hcd62121.h
diff --git a/src/emu/cpu/hcd62121/hcd62121_ops.h b/src/devices/cpu/hcd62121/hcd62121_ops.h
index 7ede44b3105..7ede44b3105 100644
--- a/src/emu/cpu/hcd62121/hcd62121_ops.h
+++ b/src/devices/cpu/hcd62121/hcd62121_ops.h
diff --git a/src/emu/cpu/hcd62121/hcd62121d.c b/src/devices/cpu/hcd62121/hcd62121d.c
index 2283c0682af..2283c0682af 100644
--- a/src/emu/cpu/hcd62121/hcd62121d.c
+++ b/src/devices/cpu/hcd62121/hcd62121d.c
diff --git a/src/emu/cpu/hd61700/hd61700.c b/src/devices/cpu/hd61700/hd61700.c
index 9e8276c6bc0..9e8276c6bc0 100644
--- a/src/emu/cpu/hd61700/hd61700.c
+++ b/src/devices/cpu/hd61700/hd61700.c
diff --git a/src/emu/cpu/hd61700/hd61700.h b/src/devices/cpu/hd61700/hd61700.h
index d903b8ecff7..d903b8ecff7 100644
--- a/src/emu/cpu/hd61700/hd61700.h
+++ b/src/devices/cpu/hd61700/hd61700.h
diff --git a/src/emu/cpu/hd61700/hd61700d.c b/src/devices/cpu/hd61700/hd61700d.c
index 719fade4f49..719fade4f49 100644
--- a/src/emu/cpu/hd61700/hd61700d.c
+++ b/src/devices/cpu/hd61700/hd61700d.c
diff --git a/src/emu/cpu/hmcs40/hmcs40.c b/src/devices/cpu/hmcs40/hmcs40.c
index d76385cf2ba..d76385cf2ba 100644
--- a/src/emu/cpu/hmcs40/hmcs40.c
+++ b/src/devices/cpu/hmcs40/hmcs40.c
diff --git a/src/emu/cpu/hmcs40/hmcs40.h b/src/devices/cpu/hmcs40/hmcs40.h
index c7862ec76b5..c7862ec76b5 100644
--- a/src/emu/cpu/hmcs40/hmcs40.h
+++ b/src/devices/cpu/hmcs40/hmcs40.h
diff --git a/src/emu/cpu/hmcs40/hmcs40d.c b/src/devices/cpu/hmcs40/hmcs40d.c
index b63ba1fde4d..b63ba1fde4d 100644
--- a/src/emu/cpu/hmcs40/hmcs40d.c
+++ b/src/devices/cpu/hmcs40/hmcs40d.c
diff --git a/src/emu/cpu/hmcs40/hmcs40op.c b/src/devices/cpu/hmcs40/hmcs40op.c
index f6faab90360..f6faab90360 100644
--- a/src/emu/cpu/hmcs40/hmcs40op.c
+++ b/src/devices/cpu/hmcs40/hmcs40op.c
diff --git a/src/devices/cpu/hphybrid/hphybrid.c b/src/devices/cpu/hphybrid/hphybrid.c
new file mode 100644
index 00000000000..027a37e03ed
--- /dev/null
+++ b/src/devices/cpu/hphybrid/hphybrid.c
@@ -0,0 +1,961 @@
+// license:BSD-3-Clause
+// copyright-holders:F. Ulivi
+
+#include "emu.h"
+#include "debugger.h"
+#include "hphybrid.h"
+
+enum {
+ HPHYBRID_A,
+ HPHYBRID_B,
+ HPHYBRID_C,
+ HPHYBRID_D,
+ HPHYBRID_P,
+ HPHYBRID_R,
+ HPHYBRID_IV,
+ HPHYBRID_PA,
+ HPHYBRID_DMAPA,
+ HPHYBRID_DMAMA,
+ HPHYBRID_DMAC,
+ HPHYBRID_I
+};
+
+#define BIT_MASK(n) (1U << (n))
+
+// Macros to clear/set single bits
+#define BIT_CLR(w , n) ((w) &= ~BIT_MASK(n))
+#define BIT_SET(w , n) ((w) |= BIT_MASK(n))
+
+// Bits in m_flags
+#define HPHYBRID_C_BIT 0 // Carry/extend
+#define HPHYBRID_O_BIT 1 // Overflow
+#define HPHYBRID_CB_BIT 2 // Cb
+#define HPHYBRID_DB_BIT 3 // Db
+#define HPHYBRID_INTEN_BIT 4 // Interrupt enable
+#define HPHYBRID_DMAEN_BIT 5 // DMA enable
+#define HPHYBRID_DMADIR_BIT 6 // DMA direction (1 = OUT)
+#define HPHYBRID_HALT_BIT 7 // Halt flag
+#define HPHYBRID_IRH_BIT 8 // IRH requested
+#define HPHYBRID_IRL_BIT 9 // IRL requested
+#define HPHYBRID_IRH_SVC_BIT 10 // IRH in service
+#define HPHYBRID_IRL_SVC_BIT 11 // IRL in service
+#define HPHYBRID_DMAR_BIT 12 // DMA request
+
+#define HPHYBRID_IV_MASK 0xfff0 // IV mask
+
+#define CURRENT_PA (m_reg_PA[ 0 ])
+
+#define HP_RESET_ADDR 0x0020
+
+const device_type HP_5061_3011 = &device_creator<hp_5061_3011_cpu_device>;
+
+WRITE_LINE_MEMBER(hp_hybrid_cpu_device::dmar_w)
+{
+ if (state) {
+ BIT_SET(m_flags , HPHYBRID_DMAR_BIT);
+ } else {
+ BIT_CLR(m_flags , HPHYBRID_DMAR_BIT);
+ }
+}
+
+hp_hybrid_cpu_device::hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname)
+: cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
+ m_program_config("program", ENDIANNESS_BIG, 16, 16, -1),
+ m_io_config("io", ENDIANNESS_BIG, 16, 6, -1)
+{
+}
+
+void hp_hybrid_cpu_device::device_start()
+{
+ m_reg_A = 0;
+ m_reg_B = 0;
+ m_reg_P = HP_RESET_ADDR;
+ m_reg_R = 0;
+ m_reg_C = 0;
+ m_reg_D = 0;
+ m_reg_IV = 0;
+ m_reg_PA[ 0 ] = 0;
+ m_reg_PA[ 1 ] = 0;
+ m_reg_PA[ 2 ] = 0;
+ m_flags = 0;
+ m_dmapa = 0;
+ m_dmama = 0;
+ m_dmac = 0;
+ m_reg_I = 0;
+
+ {
+ state_add(HPHYBRID_A, "A", m_reg_A);
+ state_add(HPHYBRID_B, "B", m_reg_B);
+ state_add(HPHYBRID_C, "C", m_reg_C);
+ state_add(HPHYBRID_D, "D", m_reg_D);
+ state_add(HPHYBRID_P, "P", m_reg_P);
+ state_add(STATE_GENPC, "GENPC", m_reg_P).noshow();
+ state_add(HPHYBRID_R, "R", m_reg_R);
+ state_add(STATE_GENSP, "GENSP", m_reg_R).noshow();
+ state_add(HPHYBRID_IV, "IV", m_reg_IV);
+ state_add(HPHYBRID_PA, "PA", m_reg_PA[ 0 ]);
+ state_add(STATE_GENFLAGS, "GENFLAGS", m_flags).noshow().formatstr("%9s");
+ state_add(HPHYBRID_DMAPA , "DMAPA" , m_dmapa).noshow();
+ state_add(HPHYBRID_DMAMA , "DMAMA" , m_dmama).noshow();
+ state_add(HPHYBRID_DMAC , "DMAC" , m_dmac).noshow();
+ state_add(HPHYBRID_I , "I" , m_reg_I).noshow();
+ }
+
+ m_program = &space(AS_PROGRAM);
+ m_direct = &m_program->direct();
+ m_io = &space(AS_IO);
+
+ save_item(NAME(m_reg_A));
+ save_item(NAME(m_reg_B));
+ save_item(NAME(m_reg_C));
+ save_item(NAME(m_reg_D));
+ save_item(NAME(m_reg_P));
+ save_item(NAME(m_reg_R));
+ save_item(NAME(m_reg_IV));
+ save_item(NAME(m_reg_PA[0]));
+ save_item(NAME(m_reg_PA[1]));
+ save_item(NAME(m_reg_PA[2]));
+ save_item(NAME(m_flags));
+ save_item(NAME(m_dmapa));
+ save_item(NAME(m_dmama));
+ save_item(NAME(m_dmac));
+ save_item(NAME(m_reg_I));
+
+ m_icountptr = &m_icount;
+}
+
+void hp_hybrid_cpu_device::device_reset()
+{
+ m_reg_P = HP_RESET_ADDR;
+ m_reg_I = RM(m_reg_P);
+ m_flags = 0;
+}
+
+void hp_hybrid_cpu_device::execute_run()
+{
+ do {
+ if (BIT(m_flags , HPHYBRID_DMAEN_BIT) && BIT(m_flags , HPHYBRID_DMAR_BIT)) {
+ handle_dma();
+ } else {
+ debugger_instruction_hook(this, m_reg_P);
+
+ // Check for interrupts
+ check_for_interrupts();
+
+ m_reg_I = execute_one(m_reg_I);
+ }
+ } while (m_icount > 0);
+}
+
+void hp_hybrid_cpu_device::execute_set_input(int inputnum, int state)
+{
+ if (inputnum < HPHYBRID_INT_LVLS) {
+ if (state) {
+ BIT_SET(m_flags , HPHYBRID_IRH_BIT + inputnum);
+ } else {
+ BIT_CLR(m_flags , HPHYBRID_IRH_BIT + inputnum);
+ }
+ }
+}
+
+/**
+ * Execute 1 instruction
+ *
+ * @param opcode Opcode to be executed
+ *
+ * @return Next opcode to be executed
+ */
+UINT16 hp_hybrid_cpu_device::execute_one(UINT16 opcode)
+{
+ if ((opcode & 0x7fe0) == 0x7000) {
+ // EXE
+ m_icount -= 8;
+ return RM(opcode & 0x1f);
+ } else {
+ m_reg_P = execute_one_sub(opcode);
+ return RM(m_reg_P);
+ }
+}
+
+/**
+ * Execute 1 instruction (except EXE)
+ *
+ * @param opcode Opcode to be executed (no EXE instructions)
+ *
+ * @return new value of P register
+ */
+UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode)
+{
+ UINT16 ea;
+ UINT16 tmp;
+
+ switch (opcode & 0x7800) {
+ case 0x0000:
+ // LDA
+ m_icount -= 13;
+ m_reg_A = RM(get_ea(opcode));
+ break;
+
+ case 0x0800:
+ // LDB
+ m_icount -= 13;
+ m_reg_B = RM(get_ea(opcode));
+ break;
+
+ case 0x1000:
+ // CPA
+ m_icount -= 16;
+ if (m_reg_A != RM(get_ea(opcode))) {
+ // Skip next instruction
+ return m_reg_P + 2;
+ }
+ break;
+
+ case 0x1800:
+ // CPB
+ m_icount -= 16;
+ if (m_reg_B != RM(get_ea(opcode))) {
+ // Skip next instruction
+ return m_reg_P + 2;
+ }
+ break;
+
+ case 0x2000:
+ // ADA
+ m_icount -= 13;
+ do_add(m_reg_A , RM(get_ea(opcode)));
+ break;
+
+ case 0x2800:
+ // ADB
+ m_icount -= 13;
+ do_add(m_reg_B , RM(get_ea(opcode)));
+ break;
+
+ case 0x3000:
+ // STA
+ m_icount -= 13;
+ WM(get_ea(opcode) , m_reg_A);
+ break;
+
+ case 0x3800:
+ // STB
+ m_icount -= 13;
+ WM(get_ea(opcode) , m_reg_B);
+ break;
+
+ case 0x4000:
+ // JSM
+ m_icount -= 17;
+ WM(++m_reg_R , m_reg_P);
+ return get_ea(opcode);
+
+ case 0x4800:
+ // ISZ
+ m_icount -= 19;
+ ea = get_ea(opcode);
+ tmp = RM(ea) + 1;
+ WM(ea , tmp);
+ if (tmp == 0) {
+ // Skip next instruction
+ return m_reg_P + 2;
+ }
+ break;
+
+ case 0x5000:
+ // AND
+ m_icount -= 13;
+ m_reg_A &= RM(get_ea(opcode));
+ break;
+
+ case 0x5800:
+ // DSZ
+ m_icount -= 19;
+ ea = get_ea(opcode);
+ tmp = RM(ea) - 1;
+ WM(ea , tmp);
+ if (tmp == 0) {
+ // Skip next instruction
+ return m_reg_P + 2;
+ }
+ break;
+
+ case 0x6000:
+ // IOR
+ m_icount -= 13;
+ m_reg_A |= RM(get_ea(opcode));
+ break;
+
+ case 0x6800:
+ // JMP
+ m_icount -= 8;
+ return get_ea(opcode);
+
+ default:
+ switch (opcode & 0xfec0) {
+ case 0x7400:
+ // RZA
+ // SZA
+ m_icount -= 14;
+ return get_skip_addr(opcode , m_reg_A == 0);
+
+ case 0x7440:
+ // RIA
+ // SIA
+ m_icount -= 14;
+ return get_skip_addr(opcode , m_reg_A++ == 0);
+
+ case 0x7480:
+ // SFS
+ // SFC
+ m_icount -= 14;
+ // TODO: read flag bit
+ return get_skip_addr(opcode , true);
+
+ case 0x7C00:
+ // RZB
+ // SZB
+ m_icount -= 14;
+ return get_skip_addr(opcode , m_reg_B == 0);
+
+ case 0x7C40:
+ // RIB
+ // SIB
+ m_icount -= 14;
+ return get_skip_addr(opcode , m_reg_B++ == 0);
+
+ case 0x7c80:
+ // SSS
+ // SSC
+ m_icount -= 14;
+ // TODO: read status bit
+ return get_skip_addr(opcode , true);
+
+ case 0x7cc0:
+ // SHS
+ // SHC
+ m_icount -= 14;
+ return get_skip_addr(opcode , !BIT(m_flags , HPHYBRID_HALT_BIT));
+
+ default:
+ switch (opcode & 0xfe00) {
+ case 0x7600:
+ // SLA
+ // RLA
+ m_icount -= 14;
+ return get_skip_addr_sc(opcode , m_reg_A , 0);
+
+ case 0x7e00:
+ // SLB
+ // RLB
+ m_icount -= 14;
+ return get_skip_addr_sc(opcode , m_reg_B , 0);
+
+ case 0xf400:
+ // SAP
+ // SAM
+ m_icount -= 14;
+ return get_skip_addr_sc(opcode , m_reg_A , 15);
+
+ case 0xf600:
+ // SOC
+ // SOS
+ m_icount -= 14;
+ return get_skip_addr_sc(opcode , m_flags , HPHYBRID_O_BIT);
+
+ case 0xfc00:
+ // SBP
+ // SBM
+ m_icount -= 14;
+ return get_skip_addr_sc(opcode , m_reg_B , 15);
+
+ case 0xfe00:
+ // SEC
+ // SES
+ m_icount -= 14;
+ return get_skip_addr_sc(opcode , m_flags , HPHYBRID_C_BIT);
+
+ default:
+ switch (opcode & 0xfff0) {
+ case 0xf100:
+ // AAR
+ tmp = (opcode & 0xf) + 1;
+ m_icount -= (9 + tmp);
+ // A shift by 16 positions is equivalent to a shift by 15
+ tmp = tmp > 15 ? 15 : tmp;
+ m_reg_A = ((m_reg_A ^ 0x8000) >> tmp) - (0x8000 >> tmp);
+ break;
+
+ case 0xf900:
+ // ABR
+ tmp = (opcode & 0xf) + 1;
+ m_icount -= (9 + tmp);
+ tmp = tmp > 15 ? 15 : tmp;
+ m_reg_B = ((m_reg_B ^ 0x8000) >> tmp) - (0x8000 >> tmp);
+ break;
+
+ case 0xf140:
+ // SAR
+ tmp = (opcode & 0xf) + 1;
+ m_icount -= (9 + tmp);
+ m_reg_A >>= tmp;
+ break;
+
+ case 0xf940:
+ // SBR
+ tmp = (opcode & 0xf) + 1;
+ m_icount -= (9 + tmp);
+ m_reg_B >>= tmp;
+ break;
+
+ case 0xf180:
+ // SAL
+ tmp = (opcode & 0xf) + 1;
+ m_icount -= (9 + tmp);
+ m_reg_A <<= tmp;
+ break;
+
+ case 0xf980:
+ // SBL
+ tmp = (opcode & 0xf) + 1;
+ m_icount -= (9 + tmp);
+ m_reg_B <<= tmp;
+ break;
+
+ case 0xf1c0:
+ // RAR
+ tmp = (opcode & 0xf) + 1;
+ m_icount -= (9 + tmp);
+ m_reg_A = (m_reg_A >> tmp) | (m_reg_A << (16 - tmp));
+ break;
+
+ case 0xf9c0:
+ // RBR
+ tmp = (opcode & 0xf) + 1;
+ m_icount -= (9 + tmp);
+ m_reg_B = (m_reg_B >> tmp) | (m_reg_B << (16 - tmp));
+ break;
+
+ default:
+ if ((opcode & 0xf760) == 0x7160) {
+ // Place/withdraw instructions
+ m_icount -= 23;
+ do_pw(opcode);
+ } else if ((opcode & 0xff80) == 0xf080) {
+ // RET
+ m_icount -= 16;
+ if (BIT(opcode , 6)) {
+ // Pop PA stack
+ if (BIT(m_flags , HPHYBRID_IRH_SVC_BIT)) {
+ BIT_CLR(m_flags , HPHYBRID_IRH_SVC_BIT);
+ memmove(&m_reg_PA[ 0 ] , &m_reg_PA[ 1 ] , HPHYBRID_INT_LVLS);
+ } else if (BIT(m_flags , HPHYBRID_IRL_SVC_BIT)) {
+ BIT_CLR(m_flags , HPHYBRID_IRL_SVC_BIT);
+ memmove(&m_reg_PA[ 0 ] , &m_reg_PA[ 1 ] , HPHYBRID_INT_LVLS);
+ }
+ }
+ tmp = RM(m_reg_R--) + (opcode & 0x1f);
+ return BIT(opcode , 5) ? tmp - 0x20 : tmp;
+ } else {
+ switch (opcode) {
+ case 0x7100:
+ // SDO
+ m_icount -= 12;
+ BIT_SET(m_flags , HPHYBRID_DMADIR_BIT);
+ break;
+
+ case 0x7108:
+ // SDI
+ m_icount -= 12;
+ BIT_CLR(m_flags , HPHYBRID_DMADIR_BIT);
+ break;
+
+ case 0x7110:
+ // EIR
+ m_icount -= 12;
+ BIT_SET(m_flags , HPHYBRID_INTEN_BIT);
+ break;
+
+ case 0x7118:
+ // DIR
+ m_icount -= 12;
+ BIT_CLR(m_flags , HPHYBRID_INTEN_BIT);
+ break;
+
+ case 0x7120:
+ // DMA
+ m_icount -= 12;
+ BIT_SET(m_flags , HPHYBRID_DMAEN_BIT);
+ break;
+
+ case 0x7138:
+ // DDR
+ m_icount -= 12;
+ BIT_CLR(m_flags , HPHYBRID_DMAEN_BIT);
+ break;
+
+ case 0x7140:
+ // DBL
+ m_icount -= 12;
+ BIT_CLR(m_flags , HPHYBRID_DB_BIT);
+ break;
+
+ case 0x7148:
+ // CBL
+ m_icount -= 12;
+ BIT_CLR(m_flags , HPHYBRID_CB_BIT);
+ break;
+
+ case 0x7150:
+ // DBU
+ m_icount -= 12;
+ BIT_SET(m_flags , HPHYBRID_DB_BIT);
+ break;
+
+ case 0x7158:
+ // CBU
+ m_icount -= 12;
+ BIT_SET(m_flags , HPHYBRID_CB_BIT);
+ break;
+
+ case 0xf020:
+ // TCA
+ m_icount -= 9;
+ m_reg_A = ~m_reg_A;
+ do_add(m_reg_A , 1);
+ break;
+
+ case 0xf060:
+ // CMA
+ m_icount -= 9;
+ m_reg_A = ~m_reg_A;
+ break;
+
+ case 0xf820:
+ // TCB
+ m_icount -= 9;
+ m_reg_B = ~m_reg_B;
+ do_add(m_reg_B , 1);
+ break;
+
+ case 0xf860:
+ // CMB
+ m_icount -= 9;
+ m_reg_B = ~m_reg_B;
+ break;
+
+ default:
+ // Unrecognized instructions: NOP
+ // Execution time is fictional
+ m_icount -= 6;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ return m_reg_P + 1;
+}
+
+void hp_hybrid_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
+{
+ if (entry.index() == STATE_GENFLAGS) {
+ strprintf(str, "%s %s %c %c",
+ BIT(m_flags , HPHYBRID_DB_BIT) ? "Db":"..",
+ BIT(m_flags , HPHYBRID_CB_BIT) ? "Cb":"..",
+ BIT(m_flags , HPHYBRID_O_BIT) ? 'O':'.',
+ BIT(m_flags , HPHYBRID_C_BIT) ? 'E':'.');
+ }
+}
+
+offs_t hp_hybrid_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
+{
+ extern CPU_DISASSEMBLE(hp_hybrid);
+ return CPU_DISASSEMBLE_NAME(hp_hybrid)(this, buffer, pc, oprom, opram, options);
+}
+
+UINT16 hp_hybrid_cpu_device::get_ea(UINT16 opcode)
+{
+ UINT16 base;
+ UINT16 off;
+
+ if (BIT(opcode , 10)) {
+ // Current page
+ base = m_reg_P;
+ } else {
+ // Base page
+ base = 0;
+ }
+
+ off = opcode & 0x3ff;
+ if (off & 0x200) {
+ off -= 0x400;
+ }
+
+ base += off;
+
+ if (BIT(opcode , 15)) {
+ // Indirect addressing
+ m_icount -= 6;
+ return RM(base);
+ } else {
+ // Direct addressing
+ return base;
+ }
+}
+
+void hp_hybrid_cpu_device::do_add(UINT16& addend1 , UINT16 addend2)
+{
+ UINT32 tmp = addend1 + addend2;
+
+ if (BIT(tmp , 16)) {
+ // Carry
+ BIT_SET(m_flags , HPHYBRID_C_BIT);
+ }
+
+ if (BIT((tmp ^ addend1) & (tmp ^ addend2) , 15)) {
+ // Overflow
+ BIT_SET(m_flags , HPHYBRID_O_BIT);
+ }
+
+ addend1 = (UINT16)tmp;
+}
+
+UINT16 hp_hybrid_cpu_device::get_skip_addr(UINT16 opcode , bool condition) const
+{
+ bool skip_val = BIT(opcode , 8) != 0;
+
+ if (condition == skip_val) {
+ UINT16 off = opcode & 0x1f;
+
+ if (BIT(opcode , 5)) {
+ off -= 0x20;
+ }
+ return m_reg_P + off;
+ } else {
+ return m_reg_P + 1;
+ }
+}
+
+UINT16 hp_hybrid_cpu_device::get_skip_addr_sc(UINT16 opcode , UINT16& v , unsigned n)
+{
+ bool val = BIT(v , n);
+
+ if (BIT(opcode , 7)) {
+ if (BIT(opcode , 6)) {
+ BIT_SET(v , n);
+ } else {
+ BIT_CLR(v , n);
+ }
+ }
+
+ return get_skip_addr(opcode , val);
+}
+
+void hp_hybrid_cpu_device::do_pw(UINT16 opcode)
+{
+ UINT16 tmp;
+ UINT16 reg_addr = opcode & 7;
+ UINT16 *ptr_reg;
+ UINT16 b_mask;
+
+ if (BIT(opcode , 3)) {
+ ptr_reg = &m_reg_D;
+ b_mask = BIT_MASK(HPHYBRID_DB_BIT);
+ } else {
+ ptr_reg = &m_reg_C;
+ b_mask = BIT_MASK(HPHYBRID_CB_BIT);
+ }
+
+ if (BIT(opcode , 4)) {
+ // Withdraw
+ if (BIT(opcode , 11)) {
+ // Byte
+ UINT32 tmp_addr = (UINT32)(*ptr_reg);
+ if (m_flags & b_mask) {
+ tmp_addr |= 0x10000;
+ }
+ tmp = RM((UINT16)(tmp_addr >> 1));
+ if (BIT(tmp_addr , 0)) {
+ tmp &= 0xff;
+ } else {
+ tmp >>= 8;
+ }
+ } else {
+ // Word
+ tmp = RM(*ptr_reg);
+ }
+ WM(reg_addr , tmp);
+
+ if (BIT(opcode , 7)) {
+ // Post-decrement
+ if ((*ptr_reg)-- == 0) {
+ m_flags ^= b_mask;
+ }
+ } else {
+ // Post-increment
+ if (++(*ptr_reg) == 0) {
+ m_flags ^= b_mask;
+ }
+ }
+ } else {
+ // Place
+ if (BIT(opcode , 7)) {
+ // Pre-decrement
+ if ((*ptr_reg)-- == 0) {
+ m_flags ^= b_mask;
+ }
+ } else {
+ // Pre-increment
+ if (++(*ptr_reg) == 0) {
+ m_flags ^= b_mask;
+ }
+ }
+ tmp = RM(reg_addr);
+ if (BIT(opcode , 11)) {
+ // Byte
+ UINT32 tmp_addr = (UINT32)(*ptr_reg);
+ if (m_flags & b_mask) {
+ tmp_addr |= 0x10000;
+ }
+ WMB(tmp_addr , (UINT8)tmp);
+ } else {
+ // Word
+ WM(*ptr_reg , tmp);
+ }
+ }
+}
+
+void hp_hybrid_cpu_device::check_for_interrupts(void)
+{
+ if (!BIT(m_flags , HPHYBRID_INTEN_BIT) || BIT(m_flags , HPHYBRID_IRH_SVC_BIT)) {
+ return;
+ }
+
+ int irqline;
+
+ if (BIT(m_flags , HPHYBRID_IRH_BIT)) {
+ // Service high-level interrupt
+ BIT_SET(m_flags , HPHYBRID_IRH_SVC_BIT);
+ irqline = HPHYBRID_IRH;
+ } else if (BIT(m_flags , HPHYBRID_IRL_BIT) && !BIT(m_flags , HPHYBRID_IRL_SVC_BIT)) {
+ // Service low-level interrupt
+ BIT_SET(m_flags , HPHYBRID_IRL_SVC_BIT);
+ irqline = HPHYBRID_IRL;
+ } else {
+ return;
+ }
+
+ // Get interrupt vector in low byte
+ UINT8 vector = (UINT8)standard_irq_callback(irqline);
+ UINT8 new_PA;
+
+ // Get highest numbered 1
+ // Don't know what happens if vector is 0, here we assume bit 7 = 1
+ if (vector == 0) {
+ new_PA = 7;
+ } else {
+ for (new_PA = 7; new_PA && !BIT(vector , 7); new_PA--, vector <<= 1) {
+ }
+ }
+ if (irqline == HPHYBRID_IRH) {
+ BIT_SET(new_PA , 3);
+ }
+
+ // Push PA stack
+ memmove(&m_reg_PA[ 1 ] , &m_reg_PA[ 0 ] , HPHYBRID_INT_LVLS);
+
+ CURRENT_PA = new_PA;
+
+ // Is this correct? Patent @ pg 210 suggests that the whole interrupt recognition sequence
+ // lasts for 32 cycles (6 are already accounted for in get_ea for one indirection)
+ m_icount -= 26;
+
+ // Do a double-indirect JSM IV,I instruction
+ WM(++m_reg_R , m_reg_P);
+ m_reg_P = RM(get_ea(0xc008));
+ m_reg_I = RM(m_reg_P);
+}
+
+void hp_hybrid_cpu_device::handle_dma(void)
+{
+ // Patent hints at the fact that terminal count is detected by bit 15 of dmac being 1 after decrementing
+ bool tc = BIT(--m_dmac , 15) != 0;
+ UINT16 tmp;
+
+ if (BIT(m_flags , HPHYBRID_DMADIR_BIT)) {
+ // "Outward" DMA: memory -> peripheral
+ tmp = RM(m_dmama++);
+ WIO(m_dmapa , tc ? 2 : 0 , tmp);
+ m_icount -= 10;
+ } else {
+ // "Inward" DMA: peripheral -> memory
+ tmp = RIO(m_dmapa , tc ? 2 : 0);
+ WM(m_dmama++ , tmp);
+ m_icount -= 9;
+ }
+
+ // This is the one of the biggest question marks: is the DMA automatically disabled on TC?
+ // Here we assume it is. After all it would make no difference because there is no way
+ // to read the DMA enable flag back, so each time the DMA is needed it has to be enabled again.
+ if (tc) {
+ BIT_CLR(m_flags , HPHYBRID_DMAEN_BIT);
+ }
+}
+
+UINT16 hp_hybrid_cpu_device::RM(UINT16 addr)
+{
+ UINT16 tmp;
+
+ if (addr <= HP_REG_LAST_ADDR) {
+ // Memory mapped registers
+ switch (addr) {
+ case HP_REG_A_ADDR:
+ return m_reg_A;
+
+ case HP_REG_B_ADDR:
+ return m_reg_B;
+
+ case HP_REG_P_ADDR:
+ return m_reg_P;
+
+ case HP_REG_R_ADDR:
+ return m_reg_R;
+
+ case HP_REG_R4_ADDR:
+ case HP_REG_R5_ADDR:
+ case HP_REG_R6_ADDR:
+ case HP_REG_R7_ADDR:
+ return RIO(CURRENT_PA , addr - HP_REG_R4_ADDR);
+
+ case HP_REG_IV_ADDR:
+ // Correct?
+ if (!BIT(m_flags , HPHYBRID_IRH_SVC_BIT) && !BIT(m_flags , HPHYBRID_IRL_SVC_BIT)) {
+ return m_reg_IV;
+ } else {
+ return m_reg_IV | CURRENT_PA;
+ }
+
+ case HP_REG_PA_ADDR:
+ return CURRENT_PA;
+
+ case HP_REG_DMAPA_ADDR:
+ tmp = m_dmapa & HP_REG_PA_MASK;
+ if (BIT(m_flags , HPHYBRID_CB_BIT)) {
+ BIT_SET(tmp , 15);
+ }
+ if (BIT(m_flags , HPHYBRID_DB_BIT)) {
+ BIT_SET(tmp , 14);
+ }
+ return tmp;
+
+ case HP_REG_DMAMA_ADDR:
+ return m_dmama;
+
+ case HP_REG_DMAC_ADDR:
+ return m_dmac;
+
+ case HP_REG_C_ADDR:
+ return m_reg_C;
+
+ case HP_REG_D_ADDR:
+ return m_reg_D;
+
+ default:
+ // Unknown registers are returned as 0
+ return 0;
+ }
+ } else {
+ return m_direct->read_word((offs_t)addr << 1);
+ }
+}
+
+void hp_hybrid_cpu_device::WM(UINT16 addr , UINT16 v)
+{
+ if (addr <= HP_REG_LAST_ADDR) {
+ // Memory mapped registers
+ switch (addr) {
+ case HP_REG_A_ADDR:
+ m_reg_A = v;
+ break;
+
+ case HP_REG_B_ADDR:
+ m_reg_B = v;
+ break;
+
+ case HP_REG_P_ADDR:
+ m_reg_P = v;
+ break;
+
+ case HP_REG_R_ADDR:
+ m_reg_R = v;
+ break;
+
+ case HP_REG_R4_ADDR:
+ case HP_REG_R5_ADDR:
+ case HP_REG_R6_ADDR:
+ case HP_REG_R7_ADDR:
+ WIO(CURRENT_PA , addr - HP_REG_R4_ADDR , v);
+ break;
+
+ case HP_REG_IV_ADDR:
+ m_reg_IV = v & HP_REG_IV_MASK;
+ break;
+
+ case HP_REG_PA_ADDR:
+ CURRENT_PA = v & HP_REG_PA_MASK;
+ break;
+
+ case HP_REG_DMAPA_ADDR:
+ m_dmapa = v & HP_REG_PA_MASK;
+ break;
+
+ case HP_REG_DMAMA_ADDR:
+ m_dmama = v;
+ break;
+
+ case HP_REG_DMAC_ADDR:
+ m_dmac = v;
+ break;
+
+ case HP_REG_C_ADDR:
+ m_reg_C = v;
+ break;
+
+ case HP_REG_D_ADDR:
+ m_reg_D = v;
+ break;
+
+ default:
+ // Unknown registers are silently discarded
+ break;
+ }
+ } else {
+ m_program->write_word((offs_t)addr << 1 , v);
+ }
+}
+
+void hp_hybrid_cpu_device::WMB(UINT32 addr , UINT8 v)
+{
+ if (addr <= (HP_REG_LAST_ADDR * 2 + 1)) {
+ // Cannot write bytes to registers
+ } else {
+ m_program->write_byte(addr , v);
+ }
+}
+
+UINT16 hp_hybrid_cpu_device::RIO(UINT8 pa , UINT8 ic)
+{
+ return m_io->read_word(HP_MAKE_IOADDR(pa, ic) << 1);
+}
+
+void hp_hybrid_cpu_device::WIO(UINT8 pa , UINT8 ic , UINT16 v)
+{
+ m_io->write_word(HP_MAKE_IOADDR(pa, ic) << 1 , v);
+}
+
+hp_5061_3011_cpu_device::hp_5061_3011_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+: hp_hybrid_cpu_device(mconfig, HP_5061_3011, "HP_5061_3011", tag, owner, clock, "5061-3011")
+{
+}
diff --git a/src/emu/cpu/hphybrid/hphybrid.h b/src/devices/cpu/hphybrid/hphybrid.h
index 5ef9f927d0e..7683cce28b6 100644
--- a/src/emu/cpu/hphybrid/hphybrid.h
+++ b/src/devices/cpu/hphybrid/hphybrid.h
@@ -65,7 +65,7 @@
class hp_hybrid_cpu_device : public cpu_device
{
public:
- DECLARE_WRITE_LINE_MEMBER(dmar_w);
+ DECLARE_WRITE_LINE_MEMBER(dmar_w);
protected:
hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname);
@@ -126,7 +126,7 @@ private:
UINT16 get_skip_addr_sc(UINT16 opcode , UINT16& v , unsigned n);
void do_pw(UINT16 opcode);
void check_for_interrupts(void);
- void handle_dma(void);
+ void handle_dma(void);
UINT16 RM(UINT16 addr);
void WM(UINT16 addr , UINT16 v);
diff --git a/src/emu/cpu/hphybrid/hphybrid_dasm.c b/src/devices/cpu/hphybrid/hphybrid_dasm.c
index e9eddf49a96..e9eddf49a96 100644
--- a/src/emu/cpu/hphybrid/hphybrid_dasm.c
+++ b/src/devices/cpu/hphybrid/hphybrid_dasm.c
diff --git a/src/emu/cpu/i386/cycles.h b/src/devices/cpu/i386/cycles.h
index a04e54da8e0..a04e54da8e0 100644
--- a/src/emu/cpu/i386/cycles.h
+++ b/src/devices/cpu/i386/cycles.h
diff --git a/src/emu/cpu/i386/i386.c b/src/devices/cpu/i386/i386.c
index 9f6b218ed9e..9f6b218ed9e 100644
--- a/src/emu/cpu/i386/i386.c
+++ b/src/devices/cpu/i386/i386.c
diff --git a/src/emu/cpu/i386/i386.h b/src/devices/cpu/i386/i386.h
index 237001be9ac..237001be9ac 100644
--- a/src/emu/cpu/i386/i386.h
+++ b/src/devices/cpu/i386/i386.h
diff --git a/src/emu/cpu/i386/i386dasm.c b/src/devices/cpu/i386/i386dasm.c
index 18e5557b4b5..18e5557b4b5 100644
--- a/src/emu/cpu/i386/i386dasm.c
+++ b/src/devices/cpu/i386/i386dasm.c
diff --git a/src/emu/cpu/i386/i386op16.inc b/src/devices/cpu/i386/i386op16.inc
index 9456f8931b2..9456f8931b2 100644
--- a/src/emu/cpu/i386/i386op16.inc
+++ b/src/devices/cpu/i386/i386op16.inc
diff --git a/src/emu/cpu/i386/i386op32.inc b/src/devices/cpu/i386/i386op32.inc
index 96b3baddb1c..96b3baddb1c 100644
--- a/src/emu/cpu/i386/i386op32.inc
+++ b/src/devices/cpu/i386/i386op32.inc
diff --git a/src/emu/cpu/i386/i386ops.h b/src/devices/cpu/i386/i386ops.h
index 2760b9cf410..2760b9cf410 100644
--- a/src/emu/cpu/i386/i386ops.h
+++ b/src/devices/cpu/i386/i386ops.h
diff --git a/src/emu/cpu/i386/i386ops.inc b/src/devices/cpu/i386/i386ops.inc
index 291c493233b..291c493233b 100644
--- a/src/emu/cpu/i386/i386ops.inc
+++ b/src/devices/cpu/i386/i386ops.inc
diff --git a/src/emu/cpu/i386/i386priv.h b/src/devices/cpu/i386/i386priv.h
index c1f6ecea94c..c1f6ecea94c 100644
--- a/src/emu/cpu/i386/i386priv.h
+++ b/src/devices/cpu/i386/i386priv.h
diff --git a/src/emu/cpu/i386/i486ops.inc b/src/devices/cpu/i386/i486ops.inc
index d22f6c079c3..d22f6c079c3 100644
--- a/src/emu/cpu/i386/i486ops.inc
+++ b/src/devices/cpu/i386/i486ops.inc
diff --git a/src/emu/cpu/i386/pentops.inc b/src/devices/cpu/i386/pentops.inc
index 34dad95afda..34dad95afda 100644
--- a/src/emu/cpu/i386/pentops.inc
+++ b/src/devices/cpu/i386/pentops.inc
diff --git a/src/emu/cpu/i386/x87ops.inc b/src/devices/cpu/i386/x87ops.inc
index 9306a7a5727..9306a7a5727 100644
--- a/src/emu/cpu/i386/x87ops.inc
+++ b/src/devices/cpu/i386/x87ops.inc
diff --git a/src/emu/cpu/i4004/4004dasm.c b/src/devices/cpu/i4004/4004dasm.c
index 2e76c14b3b5..2e76c14b3b5 100644
--- a/src/emu/cpu/i4004/4004dasm.c
+++ b/src/devices/cpu/i4004/4004dasm.c
diff --git a/src/emu/cpu/i4004/i4004.c b/src/devices/cpu/i4004/i4004.c
index c6e65cb27ee..c6e65cb27ee 100644
--- a/src/emu/cpu/i4004/i4004.c
+++ b/src/devices/cpu/i4004/i4004.c
diff --git a/src/emu/cpu/i4004/i4004.h b/src/devices/cpu/i4004/i4004.h
index 956218f3723..956218f3723 100644
--- a/src/emu/cpu/i4004/i4004.h
+++ b/src/devices/cpu/i4004/i4004.h
diff --git a/src/emu/cpu/i8008/8008dasm.c b/src/devices/cpu/i8008/8008dasm.c
index d5f1e082d5e..d5f1e082d5e 100644
--- a/src/emu/cpu/i8008/8008dasm.c
+++ b/src/devices/cpu/i8008/8008dasm.c
diff --git a/src/emu/cpu/i8008/i8008.c b/src/devices/cpu/i8008/i8008.c
index 9527185339a..9527185339a 100644
--- a/src/emu/cpu/i8008/i8008.c
+++ b/src/devices/cpu/i8008/i8008.c
diff --git a/src/emu/cpu/i8008/i8008.h b/src/devices/cpu/i8008/i8008.h
index c9cbecce7aa..c9cbecce7aa 100644
--- a/src/emu/cpu/i8008/i8008.h
+++ b/src/devices/cpu/i8008/i8008.h
diff --git a/src/emu/cpu/i8085/8085dasm.c b/src/devices/cpu/i8085/8085dasm.c
index e68bdfac337..e68bdfac337 100644
--- a/src/emu/cpu/i8085/8085dasm.c
+++ b/src/devices/cpu/i8085/8085dasm.c
diff --git a/src/emu/cpu/i8085/i8085.c b/src/devices/cpu/i8085/i8085.c
index 3e278f64d6c..3e278f64d6c 100644
--- a/src/emu/cpu/i8085/i8085.c
+++ b/src/devices/cpu/i8085/i8085.c
diff --git a/src/emu/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h
index a0e8f5d8d3a..a0e8f5d8d3a 100644
--- a/src/emu/cpu/i8085/i8085.h
+++ b/src/devices/cpu/i8085/i8085.h
diff --git a/src/emu/cpu/i8085/i8085cpu.h b/src/devices/cpu/i8085/i8085cpu.h
index 5ccecf3cd95..5ccecf3cd95 100644
--- a/src/emu/cpu/i8085/i8085cpu.h
+++ b/src/devices/cpu/i8085/i8085cpu.h
diff --git a/src/emu/cpu/i8089/i8089.c b/src/devices/cpu/i8089/i8089.c
index b81869bda1d..b81869bda1d 100644
--- a/src/emu/cpu/i8089/i8089.c
+++ b/src/devices/cpu/i8089/i8089.c
diff --git a/src/emu/cpu/i8089/i8089.h b/src/devices/cpu/i8089/i8089.h
index f40607bdc7c..f40607bdc7c 100644
--- a/src/emu/cpu/i8089/i8089.h
+++ b/src/devices/cpu/i8089/i8089.h
diff --git a/src/emu/cpu/i8089/i8089_channel.c b/src/devices/cpu/i8089/i8089_channel.c
index fe7666ac17c..fe7666ac17c 100644
--- a/src/emu/cpu/i8089/i8089_channel.c
+++ b/src/devices/cpu/i8089/i8089_channel.c
diff --git a/src/emu/cpu/i8089/i8089_channel.h b/src/devices/cpu/i8089/i8089_channel.h
index 7c1f5a6e445..7c1f5a6e445 100644
--- a/src/emu/cpu/i8089/i8089_channel.h
+++ b/src/devices/cpu/i8089/i8089_channel.h
diff --git a/src/emu/cpu/i8089/i8089_dasm.c b/src/devices/cpu/i8089/i8089_dasm.c
index d1f62621f3c..d1f62621f3c 100644
--- a/src/emu/cpu/i8089/i8089_dasm.c
+++ b/src/devices/cpu/i8089/i8089_dasm.c
diff --git a/src/emu/cpu/i8089/i8089_ops.c b/src/devices/cpu/i8089/i8089_ops.c
index 09c8f5cd037..09c8f5cd037 100644
--- a/src/emu/cpu/i8089/i8089_ops.c
+++ b/src/devices/cpu/i8089/i8089_ops.c
diff --git a/src/emu/cpu/i86/i186.c b/src/devices/cpu/i86/i186.c
index 072d70a95bb..072d70a95bb 100644
--- a/src/emu/cpu/i86/i186.c
+++ b/src/devices/cpu/i86/i186.c
diff --git a/src/emu/cpu/i86/i186.h b/src/devices/cpu/i86/i186.h
index af7302e729a..af7302e729a 100644
--- a/src/emu/cpu/i86/i186.h
+++ b/src/devices/cpu/i86/i186.h
diff --git a/src/emu/cpu/i86/i286.c b/src/devices/cpu/i86/i286.c
index e6314b9cf83..e6314b9cf83 100644
--- a/src/emu/cpu/i86/i286.c
+++ b/src/devices/cpu/i86/i286.c
diff --git a/src/emu/cpu/i86/i286.h b/src/devices/cpu/i86/i286.h
index 64a0355bf6b..64a0355bf6b 100644
--- a/src/emu/cpu/i86/i286.h
+++ b/src/devices/cpu/i86/i286.h
diff --git a/src/emu/cpu/i86/i86.c b/src/devices/cpu/i86/i86.c
index 9c8d5a75465..9c8d5a75465 100644
--- a/src/emu/cpu/i86/i86.c
+++ b/src/devices/cpu/i86/i86.c
diff --git a/src/emu/cpu/i86/i86.h b/src/devices/cpu/i86/i86.h
index 6e48fecd71e..6e48fecd71e 100644
--- a/src/emu/cpu/i86/i86.h
+++ b/src/devices/cpu/i86/i86.h
diff --git a/src/emu/cpu/i86/i86.txt b/src/devices/cpu/i86/i86.txt
index 39b54d6a8d0..39b54d6a8d0 100644
--- a/src/emu/cpu/i86/i86.txt
+++ b/src/devices/cpu/i86/i86.txt
diff --git a/src/emu/cpu/i86/i86inline.h b/src/devices/cpu/i86/i86inline.h
index d848e336e35..d848e336e35 100644
--- a/src/emu/cpu/i86/i86inline.h
+++ b/src/devices/cpu/i86/i86inline.h
diff --git a/src/emu/cpu/i860/i860.c b/src/devices/cpu/i860/i860.c
index 5023fa65c60..5023fa65c60 100644
--- a/src/emu/cpu/i860/i860.c
+++ b/src/devices/cpu/i860/i860.c
diff --git a/src/emu/cpu/i860/i860.h b/src/devices/cpu/i860/i860.h
index 1079d46b479..1079d46b479 100644
--- a/src/emu/cpu/i860/i860.h
+++ b/src/devices/cpu/i860/i860.h
diff --git a/src/emu/cpu/i860/i860dasm.c b/src/devices/cpu/i860/i860dasm.c
index 60c83a5fec0..60c83a5fec0 100644
--- a/src/emu/cpu/i860/i860dasm.c
+++ b/src/devices/cpu/i860/i860dasm.c
diff --git a/src/emu/cpu/i860/i860dec.inc b/src/devices/cpu/i860/i860dec.inc
index d0943c9e5a6..d0943c9e5a6 100644
--- a/src/emu/cpu/i860/i860dec.inc
+++ b/src/devices/cpu/i860/i860dec.inc
diff --git a/src/emu/cpu/i860/i860dis.c b/src/devices/cpu/i860/i860dis.c
index 1c72a9f474d..1c72a9f474d 100644
--- a/src/emu/cpu/i860/i860dis.c
+++ b/src/devices/cpu/i860/i860dis.c
diff --git a/src/emu/cpu/i960/i960.c b/src/devices/cpu/i960/i960.c
index 8b00a58d4c6..8b00a58d4c6 100644
--- a/src/emu/cpu/i960/i960.c
+++ b/src/devices/cpu/i960/i960.c
diff --git a/src/emu/cpu/i960/i960.h b/src/devices/cpu/i960/i960.h
index 7251a091fd0..7251a091fd0 100644
--- a/src/emu/cpu/i960/i960.h
+++ b/src/devices/cpu/i960/i960.h
diff --git a/src/emu/cpu/i960/i960dis.c b/src/devices/cpu/i960/i960dis.c
index 8e1a4c00431..8e1a4c00431 100644
--- a/src/emu/cpu/i960/i960dis.c
+++ b/src/devices/cpu/i960/i960dis.c
diff --git a/src/emu/cpu/i960/i960dis.h b/src/devices/cpu/i960/i960dis.h
index 6ad878ee119..6ad878ee119 100644
--- a/src/emu/cpu/i960/i960dis.h
+++ b/src/devices/cpu/i960/i960dis.h
diff --git a/src/emu/cpu/ie15/ie15.c b/src/devices/cpu/ie15/ie15.c
index cae9bc8db1d..cae9bc8db1d 100644
--- a/src/emu/cpu/ie15/ie15.c
+++ b/src/devices/cpu/ie15/ie15.c
diff --git a/src/emu/cpu/ie15/ie15.h b/src/devices/cpu/ie15/ie15.h
index 8aaaa5a81ab..8aaaa5a81ab 100644
--- a/src/emu/cpu/ie15/ie15.h
+++ b/src/devices/cpu/ie15/ie15.h
diff --git a/src/emu/cpu/ie15/ie15dasm.c b/src/devices/cpu/ie15/ie15dasm.c
index 3f21fb977e0..3f21fb977e0 100644
--- a/src/emu/cpu/ie15/ie15dasm.c
+++ b/src/devices/cpu/ie15/ie15dasm.c
diff --git a/src/emu/cpu/jaguar/jagdasm.c b/src/devices/cpu/jaguar/jagdasm.c
index e5e9cd70882..e5e9cd70882 100644
--- a/src/emu/cpu/jaguar/jagdasm.c
+++ b/src/devices/cpu/jaguar/jagdasm.c
diff --git a/src/emu/cpu/jaguar/jaguar.c b/src/devices/cpu/jaguar/jaguar.c
index 976ab4f5983..976ab4f5983 100644
--- a/src/emu/cpu/jaguar/jaguar.c
+++ b/src/devices/cpu/jaguar/jaguar.c
diff --git a/src/emu/cpu/jaguar/jaguar.h b/src/devices/cpu/jaguar/jaguar.h
index 5139158861b..5139158861b 100644
--- a/src/emu/cpu/jaguar/jaguar.h
+++ b/src/devices/cpu/jaguar/jaguar.h
diff --git a/src/emu/cpu/lc8670/lc8670.c b/src/devices/cpu/lc8670/lc8670.c
index 96bcfaa0348..9abb2121a66 100644
--- a/src/emu/cpu/lc8670/lc8670.c
+++ b/src/devices/cpu/lc8670/lc8670.c
@@ -105,9 +105,9 @@ const device_type LC8670 = &device_creator<lc8670_cpu_device>;
#define GET_AC BIT(REG_PSW,6)
#define GET_OV BIT(REG_PSW,2)
#define GET_P BIT(REG_PSW,0)
-#define SET_CY(v) { if (v) REG_PSW |= FLAG_CY; else REG_PSW &= ~FLAG_CY; } while(0)
-#define SET_AC(v) { if (v) REG_PSW |= FLAG_AC; else REG_PSW &= ~FLAG_AC; } while(0)
-#define SET_OV(v) { if (v) REG_PSW |= FLAG_OV; else REG_PSW &= ~FLAG_OV; } while(0)
+#define SET_CY(v) do { if (v) REG_PSW |= FLAG_CY; else REG_PSW &= ~FLAG_CY; } while(0)
+#define SET_AC(v) do { if (v) REG_PSW |= FLAG_AC; else REG_PSW &= ~FLAG_AC; } while(0)
+#define SET_OV(v) do { if (v) REG_PSW |= FLAG_OV; else REG_PSW &= ~FLAG_OV; } while(0)
#define CHECK_P() check_p_flag()
// CPU state
diff --git a/src/emu/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h
index e2668c1bacd..e2668c1bacd 100644
--- a/src/emu/cpu/lc8670/lc8670.h
+++ b/src/devices/cpu/lc8670/lc8670.h
diff --git a/src/emu/cpu/lc8670/lc8670dsm.c b/src/devices/cpu/lc8670/lc8670dsm.c
index 45985ea6e5f..45985ea6e5f 100644
--- a/src/emu/cpu/lc8670/lc8670dsm.c
+++ b/src/devices/cpu/lc8670/lc8670dsm.c
diff --git a/src/emu/cpu/lh5801/5801dasm.c b/src/devices/cpu/lh5801/5801dasm.c
index b622bda9de6..b622bda9de6 100644
--- a/src/emu/cpu/lh5801/5801dasm.c
+++ b/src/devices/cpu/lh5801/5801dasm.c
diff --git a/src/emu/cpu/lh5801/5801tbl.inc b/src/devices/cpu/lh5801/5801tbl.inc
index 98a8d7b1d02..98a8d7b1d02 100644
--- a/src/emu/cpu/lh5801/5801tbl.inc
+++ b/src/devices/cpu/lh5801/5801tbl.inc
diff --git a/src/emu/cpu/lh5801/lh5801.c b/src/devices/cpu/lh5801/lh5801.c
index 0287e0d0859..0287e0d0859 100644
--- a/src/emu/cpu/lh5801/lh5801.c
+++ b/src/devices/cpu/lh5801/lh5801.c
diff --git a/src/emu/cpu/lh5801/lh5801.h b/src/devices/cpu/lh5801/lh5801.h
index e5c6aa74690..e5c6aa74690 100644
--- a/src/emu/cpu/lh5801/lh5801.h
+++ b/src/devices/cpu/lh5801/lh5801.h
diff --git a/src/emu/cpu/lr35902/lr35902.c b/src/devices/cpu/lr35902/lr35902.c
index 02cb785e1ff..02cb785e1ff 100644
--- a/src/emu/cpu/lr35902/lr35902.c
+++ b/src/devices/cpu/lr35902/lr35902.c
diff --git a/src/emu/cpu/lr35902/lr35902.h b/src/devices/cpu/lr35902/lr35902.h
index 509f06e77f5..509f06e77f5 100644
--- a/src/emu/cpu/lr35902/lr35902.h
+++ b/src/devices/cpu/lr35902/lr35902.h
diff --git a/src/emu/cpu/lr35902/lr35902d.c b/src/devices/cpu/lr35902/lr35902d.c
index cf6d61bd7d6..cf6d61bd7d6 100644
--- a/src/emu/cpu/lr35902/lr35902d.c
+++ b/src/devices/cpu/lr35902/lr35902d.c
diff --git a/src/emu/cpu/lr35902/opc_cb.inc b/src/devices/cpu/lr35902/opc_cb.inc
index ace58d019e7..ace58d019e7 100644
--- a/src/emu/cpu/lr35902/opc_cb.inc
+++ b/src/devices/cpu/lr35902/opc_cb.inc
diff --git a/src/emu/cpu/lr35902/opc_main.inc b/src/devices/cpu/lr35902/opc_main.inc
index c551bb3d351..c551bb3d351 100644
--- a/src/emu/cpu/lr35902/opc_main.inc
+++ b/src/devices/cpu/lr35902/opc_main.inc
diff --git a/src/emu/cpu/m37710/m37710.c b/src/devices/cpu/m37710/m37710.c
index 26a2accfe76..26a2accfe76 100644
--- a/src/emu/cpu/m37710/m37710.c
+++ b/src/devices/cpu/m37710/m37710.c
diff --git a/src/emu/cpu/m37710/m37710.h b/src/devices/cpu/m37710/m37710.h
index 3bcc57ae68d..3bcc57ae68d 100644
--- a/src/emu/cpu/m37710/m37710.h
+++ b/src/devices/cpu/m37710/m37710.h
diff --git a/src/emu/cpu/m37710/m37710cm.h b/src/devices/cpu/m37710/m37710cm.h
index aa691b2e9aa..aa691b2e9aa 100644
--- a/src/emu/cpu/m37710/m37710cm.h
+++ b/src/devices/cpu/m37710/m37710cm.h
diff --git a/src/emu/cpu/m37710/m37710il.h b/src/devices/cpu/m37710/m37710il.h
index ffc1aed0a7a..ffc1aed0a7a 100644
--- a/src/emu/cpu/m37710/m37710il.h
+++ b/src/devices/cpu/m37710/m37710il.h
diff --git a/src/emu/cpu/m37710/m37710o0.c b/src/devices/cpu/m37710/m37710o0.c
index 6fdd9b2a01f..6fdd9b2a01f 100644
--- a/src/emu/cpu/m37710/m37710o0.c
+++ b/src/devices/cpu/m37710/m37710o0.c
diff --git a/src/emu/cpu/m37710/m37710o1.c b/src/devices/cpu/m37710/m37710o1.c
index d8de494a6ce..d8de494a6ce 100644
--- a/src/emu/cpu/m37710/m37710o1.c
+++ b/src/devices/cpu/m37710/m37710o1.c
diff --git a/src/emu/cpu/m37710/m37710o2.c b/src/devices/cpu/m37710/m37710o2.c
index d92556b3207..d92556b3207 100644
--- a/src/emu/cpu/m37710/m37710o2.c
+++ b/src/devices/cpu/m37710/m37710o2.c
diff --git a/src/emu/cpu/m37710/m37710o3.c b/src/devices/cpu/m37710/m37710o3.c
index 16e2084ec4a..16e2084ec4a 100644
--- a/src/emu/cpu/m37710/m37710o3.c
+++ b/src/devices/cpu/m37710/m37710o3.c
diff --git a/src/emu/cpu/m37710/m37710op.h b/src/devices/cpu/m37710/m37710op.h
index 03e29580323..03e29580323 100644
--- a/src/emu/cpu/m37710/m37710op.h
+++ b/src/devices/cpu/m37710/m37710op.h
diff --git a/src/emu/cpu/m37710/m7700ds.c b/src/devices/cpu/m37710/m7700ds.c
index f6b77932b1e..f6b77932b1e 100644
--- a/src/emu/cpu/m37710/m7700ds.c
+++ b/src/devices/cpu/m37710/m7700ds.c
diff --git a/src/emu/cpu/m37710/m7700ds.h b/src/devices/cpu/m37710/m7700ds.h
index c0af0846b72..c0af0846b72 100644
--- a/src/emu/cpu/m37710/m7700ds.h
+++ b/src/devices/cpu/m37710/m7700ds.h
diff --git a/src/emu/cpu/m6502/ddeco16.lst b/src/devices/cpu/m6502/ddeco16.lst
index b57f2614cf0..b57f2614cf0 100644
--- a/src/emu/cpu/m6502/ddeco16.lst
+++ b/src/devices/cpu/m6502/ddeco16.lst
diff --git a/src/emu/cpu/m6502/deco16.c b/src/devices/cpu/m6502/deco16.c
index a500b287d7a..a500b287d7a 100644
--- a/src/emu/cpu/m6502/deco16.c
+++ b/src/devices/cpu/m6502/deco16.c
diff --git a/src/emu/cpu/m6502/deco16.h b/src/devices/cpu/m6502/deco16.h
index d82087477f7..d82087477f7 100644
--- a/src/emu/cpu/m6502/deco16.h
+++ b/src/devices/cpu/m6502/deco16.h
diff --git a/src/emu/cpu/m6502/dm4510.lst b/src/devices/cpu/m6502/dm4510.lst
index 6de7627ebc7..6de7627ebc7 100644
--- a/src/emu/cpu/m6502/dm4510.lst
+++ b/src/devices/cpu/m6502/dm4510.lst
diff --git a/src/emu/cpu/m6502/dm6502.lst b/src/devices/cpu/m6502/dm6502.lst
index 335cae3d2e7..335cae3d2e7 100644
--- a/src/emu/cpu/m6502/dm6502.lst
+++ b/src/devices/cpu/m6502/dm6502.lst
diff --git a/src/emu/cpu/m6502/dm6509.lst b/src/devices/cpu/m6502/dm6509.lst
index 644aa6c79d6..644aa6c79d6 100644
--- a/src/emu/cpu/m6502/dm6509.lst
+++ b/src/devices/cpu/m6502/dm6509.lst
diff --git a/src/emu/cpu/m6502/dm6510.lst b/src/devices/cpu/m6502/dm6510.lst
index dbc8bd88d57..dbc8bd88d57 100644
--- a/src/emu/cpu/m6502/dm6510.lst
+++ b/src/devices/cpu/m6502/dm6510.lst
diff --git a/src/emu/cpu/m6502/dm65c02.lst b/src/devices/cpu/m6502/dm65c02.lst
index 4b0cd1f2db4..4b0cd1f2db4 100644
--- a/src/emu/cpu/m6502/dm65c02.lst
+++ b/src/devices/cpu/m6502/dm65c02.lst
diff --git a/src/emu/cpu/m6502/dm65ce02.lst b/src/devices/cpu/m6502/dm65ce02.lst
index b2fafe67203..b2fafe67203 100644
--- a/src/emu/cpu/m6502/dm65ce02.lst
+++ b/src/devices/cpu/m6502/dm65ce02.lst
diff --git a/src/emu/cpu/m6502/dm740.lst b/src/devices/cpu/m6502/dm740.lst
index c11f0826cd5..c11f0826cd5 100644
--- a/src/emu/cpu/m6502/dm740.lst
+++ b/src/devices/cpu/m6502/dm740.lst
diff --git a/src/emu/cpu/m6502/dn2a03.lst b/src/devices/cpu/m6502/dn2a03.lst
index 7f0a5d4a9cb..7f0a5d4a9cb 100644
--- a/src/emu/cpu/m6502/dn2a03.lst
+++ b/src/devices/cpu/m6502/dn2a03.lst
diff --git a/src/emu/cpu/m6502/dr65c02.lst b/src/devices/cpu/m6502/dr65c02.lst
index fa4a97bda56..fa4a97bda56 100644
--- a/src/emu/cpu/m6502/dr65c02.lst
+++ b/src/devices/cpu/m6502/dr65c02.lst
diff --git a/src/emu/cpu/m6502/m3745x.c b/src/devices/cpu/m6502/m3745x.c
index 79aa2a95a83..79aa2a95a83 100644
--- a/src/emu/cpu/m6502/m3745x.c
+++ b/src/devices/cpu/m6502/m3745x.c
diff --git a/src/emu/cpu/m6502/m3745x.h b/src/devices/cpu/m6502/m3745x.h
index d7d24c80880..d7d24c80880 100644
--- a/src/emu/cpu/m6502/m3745x.h
+++ b/src/devices/cpu/m6502/m3745x.h
diff --git a/src/emu/cpu/m6502/m4510.c b/src/devices/cpu/m6502/m4510.c
index 2a7eb10ee1e..2a7eb10ee1e 100644
--- a/src/emu/cpu/m6502/m4510.c
+++ b/src/devices/cpu/m6502/m4510.c
diff --git a/src/emu/cpu/m6502/m4510.h b/src/devices/cpu/m6502/m4510.h
index 492572fddb6..492572fddb6 100644
--- a/src/emu/cpu/m6502/m4510.h
+++ b/src/devices/cpu/m6502/m4510.h
diff --git a/src/emu/cpu/m6502/m5074x.c b/src/devices/cpu/m6502/m5074x.c
index dc499b912c0..dc499b912c0 100644
--- a/src/emu/cpu/m6502/m5074x.c
+++ b/src/devices/cpu/m6502/m5074x.c
diff --git a/src/emu/cpu/m6502/m5074x.h b/src/devices/cpu/m6502/m5074x.h
index 10f0aa06df5..10f0aa06df5 100644
--- a/src/emu/cpu/m6502/m5074x.h
+++ b/src/devices/cpu/m6502/m5074x.h
diff --git a/src/emu/cpu/m6502/m6502.c b/src/devices/cpu/m6502/m6502.c
index 01b2b8f0f98..01b2b8f0f98 100644
--- a/src/emu/cpu/m6502/m6502.c
+++ b/src/devices/cpu/m6502/m6502.c
diff --git a/src/emu/cpu/m6502/m6502.h b/src/devices/cpu/m6502/m6502.h
index 33b13f3afb6..33b13f3afb6 100644
--- a/src/emu/cpu/m6502/m6502.h
+++ b/src/devices/cpu/m6502/m6502.h
diff --git a/src/emu/cpu/m6502/m6502.txt b/src/devices/cpu/m6502/m6502.txt
index d92af7ec146..d92af7ec146 100644
--- a/src/emu/cpu/m6502/m6502.txt
+++ b/src/devices/cpu/m6502/m6502.txt
diff --git a/src/emu/cpu/m6502/m6502make.py b/src/devices/cpu/m6502/m6502make.py
index 591d01268ca..4ac62e90ce9 100755
--- a/src/emu/cpu/m6502/m6502make.py
+++ b/src/devices/cpu/m6502/m6502make.py
@@ -1,5 +1,7 @@
#!/usr/bin/python
+from __future__ import print_function
+
USAGE = """
Usage:
%s device_name {opc.lst|-} disp.lst device.inc
@@ -52,7 +54,7 @@ def load_disp(fname):
def emit(f, text):
"""write string to file"""
- print >>f, text,
+ print(text, file=f)
FULL_PROLOG="""\
void %(device)s::%(opcode)s_full()
@@ -252,7 +254,7 @@ def main(argv):
if len(argv) != 5:
- print USAGE % argv[0]
+ print(USAGE % argv[0])
return 1
device_name = argv[1]
diff --git a/src/emu/cpu/m6502/m6504.c b/src/devices/cpu/m6502/m6504.c
index f2ae2c4b6d9..f2ae2c4b6d9 100644
--- a/src/emu/cpu/m6502/m6504.c
+++ b/src/devices/cpu/m6502/m6504.c
diff --git a/src/emu/cpu/m6502/m6504.h b/src/devices/cpu/m6502/m6504.h
index f272b059333..f272b059333 100644
--- a/src/emu/cpu/m6502/m6504.h
+++ b/src/devices/cpu/m6502/m6504.h
diff --git a/src/emu/cpu/m6502/m6509.c b/src/devices/cpu/m6502/m6509.c
index 77af9e8f1f7..77af9e8f1f7 100644
--- a/src/emu/cpu/m6502/m6509.c
+++ b/src/devices/cpu/m6502/m6509.c
diff --git a/src/emu/cpu/m6502/m6509.h b/src/devices/cpu/m6502/m6509.h
index 2bfee01981a..2bfee01981a 100644
--- a/src/emu/cpu/m6502/m6509.h
+++ b/src/devices/cpu/m6502/m6509.h
diff --git a/src/emu/cpu/m6502/m6510.c b/src/devices/cpu/m6502/m6510.c
index 10e57fb27b8..10e57fb27b8 100644
--- a/src/emu/cpu/m6502/m6510.c
+++ b/src/devices/cpu/m6502/m6510.c
diff --git a/src/emu/cpu/m6502/m6510.h b/src/devices/cpu/m6502/m6510.h
index 86aaa60ffaa..86aaa60ffaa 100644
--- a/src/emu/cpu/m6502/m6510.h
+++ b/src/devices/cpu/m6502/m6510.h
diff --git a/src/emu/cpu/m6502/m6510t.c b/src/devices/cpu/m6502/m6510t.c
index 7e8a34c6f20..7e8a34c6f20 100644
--- a/src/emu/cpu/m6502/m6510t.c
+++ b/src/devices/cpu/m6502/m6510t.c
diff --git a/src/emu/cpu/m6502/m6510t.h b/src/devices/cpu/m6502/m6510t.h
index f580ed6aef3..f580ed6aef3 100644
--- a/src/emu/cpu/m6502/m6510t.h
+++ b/src/devices/cpu/m6502/m6510t.h
diff --git a/src/emu/cpu/m6502/m65c02.c b/src/devices/cpu/m6502/m65c02.c
index 4f02de6471c..4f02de6471c 100644
--- a/src/emu/cpu/m6502/m65c02.c
+++ b/src/devices/cpu/m6502/m65c02.c
diff --git a/src/emu/cpu/m6502/m65c02.h b/src/devices/cpu/m6502/m65c02.h
index 5eda5593fee..5eda5593fee 100644
--- a/src/emu/cpu/m6502/m65c02.h
+++ b/src/devices/cpu/m6502/m65c02.h
diff --git a/src/emu/cpu/m6502/m65ce02.c b/src/devices/cpu/m6502/m65ce02.c
index 97ad2c4b535..97ad2c4b535 100644
--- a/src/emu/cpu/m6502/m65ce02.c
+++ b/src/devices/cpu/m6502/m65ce02.c
diff --git a/src/emu/cpu/m6502/m65ce02.h b/src/devices/cpu/m6502/m65ce02.h
index f8e03867d82..f8e03867d82 100644
--- a/src/emu/cpu/m6502/m65ce02.h
+++ b/src/devices/cpu/m6502/m65ce02.h
diff --git a/src/emu/cpu/m6502/m65sc02.c b/src/devices/cpu/m6502/m65sc02.c
index f61bc63cf7f..f61bc63cf7f 100644
--- a/src/emu/cpu/m6502/m65sc02.c
+++ b/src/devices/cpu/m6502/m65sc02.c
diff --git a/src/emu/cpu/m6502/m65sc02.h b/src/devices/cpu/m6502/m65sc02.h
index f754fc3de89..f754fc3de89 100644
--- a/src/emu/cpu/m6502/m65sc02.h
+++ b/src/devices/cpu/m6502/m65sc02.h
diff --git a/src/emu/cpu/m6502/m740.c b/src/devices/cpu/m6502/m740.c
index 5e011ba3561..5e011ba3561 100644
--- a/src/emu/cpu/m6502/m740.c
+++ b/src/devices/cpu/m6502/m740.c
diff --git a/src/emu/cpu/m6502/m740.h b/src/devices/cpu/m6502/m740.h
index 728fea5a074..728fea5a074 100644
--- a/src/emu/cpu/m6502/m740.h
+++ b/src/devices/cpu/m6502/m740.h
diff --git a/src/emu/cpu/m6502/m7501.c b/src/devices/cpu/m6502/m7501.c
index 83bc290a172..83bc290a172 100644
--- a/src/emu/cpu/m6502/m7501.c
+++ b/src/devices/cpu/m6502/m7501.c
diff --git a/src/emu/cpu/m6502/m7501.h b/src/devices/cpu/m6502/m7501.h
index 7ded4caffe2..7ded4caffe2 100644
--- a/src/emu/cpu/m6502/m7501.h
+++ b/src/devices/cpu/m6502/m7501.h
diff --git a/src/emu/cpu/m6502/m8502.c b/src/devices/cpu/m6502/m8502.c
index a967d03d74c..a967d03d74c 100644
--- a/src/emu/cpu/m6502/m8502.c
+++ b/src/devices/cpu/m6502/m8502.c
diff --git a/src/emu/cpu/m6502/m8502.h b/src/devices/cpu/m6502/m8502.h
index 1969ba6ffad..1969ba6ffad 100644
--- a/src/emu/cpu/m6502/m8502.h
+++ b/src/devices/cpu/m6502/m8502.h
diff --git a/src/emu/cpu/m6502/n2a03.c b/src/devices/cpu/m6502/n2a03.c
index b3b2cb31808..b3b2cb31808 100644
--- a/src/emu/cpu/m6502/n2a03.c
+++ b/src/devices/cpu/m6502/n2a03.c
diff --git a/src/emu/cpu/m6502/n2a03.h b/src/devices/cpu/m6502/n2a03.h
index 6d56a42e9b7..6d56a42e9b7 100644
--- a/src/emu/cpu/m6502/n2a03.h
+++ b/src/devices/cpu/m6502/n2a03.h
diff --git a/src/emu/cpu/m6502/odeco16.lst b/src/devices/cpu/m6502/odeco16.lst
index 6cea2fa7282..6cea2fa7282 100644
--- a/src/emu/cpu/m6502/odeco16.lst
+++ b/src/devices/cpu/m6502/odeco16.lst
diff --git a/src/emu/cpu/m6502/om4510.lst b/src/devices/cpu/m6502/om4510.lst
index fbe49491fac..fbe49491fac 100644
--- a/src/emu/cpu/m6502/om4510.lst
+++ b/src/devices/cpu/m6502/om4510.lst
diff --git a/src/emu/cpu/m6502/om6502.lst b/src/devices/cpu/m6502/om6502.lst
index 24c560c02fa..24c560c02fa 100644
--- a/src/emu/cpu/m6502/om6502.lst
+++ b/src/devices/cpu/m6502/om6502.lst
diff --git a/src/emu/cpu/m6502/om6509.lst b/src/devices/cpu/m6502/om6509.lst
index 4595827b1d7..4595827b1d7 100644
--- a/src/emu/cpu/m6502/om6509.lst
+++ b/src/devices/cpu/m6502/om6509.lst
diff --git a/src/emu/cpu/m6502/om6510.lst b/src/devices/cpu/m6502/om6510.lst
index e08a5229111..e08a5229111 100644
--- a/src/emu/cpu/m6502/om6510.lst
+++ b/src/devices/cpu/m6502/om6510.lst
diff --git a/src/emu/cpu/m6502/om65c02.lst b/src/devices/cpu/m6502/om65c02.lst
index d64ddcdc409..d64ddcdc409 100644
--- a/src/emu/cpu/m6502/om65c02.lst
+++ b/src/devices/cpu/m6502/om65c02.lst
diff --git a/src/emu/cpu/m6502/om65ce02.lst b/src/devices/cpu/m6502/om65ce02.lst
index 049097fded8..049097fded8 100644
--- a/src/emu/cpu/m6502/om65ce02.lst
+++ b/src/devices/cpu/m6502/om65ce02.lst
diff --git a/src/emu/cpu/m6502/om740.lst b/src/devices/cpu/m6502/om740.lst
index 9f17dc639bf..9f17dc639bf 100644
--- a/src/emu/cpu/m6502/om740.lst
+++ b/src/devices/cpu/m6502/om740.lst
diff --git a/src/emu/cpu/m6502/on2a03.lst b/src/devices/cpu/m6502/on2a03.lst
index 7d8a72c8d62..7d8a72c8d62 100644
--- a/src/emu/cpu/m6502/on2a03.lst
+++ b/src/devices/cpu/m6502/on2a03.lst
diff --git a/src/emu/cpu/m6502/r65c02.c b/src/devices/cpu/m6502/r65c02.c
index 3101ffd0341..3101ffd0341 100644
--- a/src/emu/cpu/m6502/r65c02.c
+++ b/src/devices/cpu/m6502/r65c02.c
diff --git a/src/emu/cpu/m6502/r65c02.h b/src/devices/cpu/m6502/r65c02.h
index ed3f65f40ad..ed3f65f40ad 100644
--- a/src/emu/cpu/m6502/r65c02.h
+++ b/src/devices/cpu/m6502/r65c02.h
diff --git a/src/emu/cpu/m6800/6800dasm.c b/src/devices/cpu/m6800/6800dasm.c
index 49f908013cd..49f908013cd 100644
--- a/src/emu/cpu/m6800/6800dasm.c
+++ b/src/devices/cpu/m6800/6800dasm.c
diff --git a/src/emu/cpu/m6800/6800ops.inc b/src/devices/cpu/m6800/6800ops.inc
index cf0360c7538..cf0360c7538 100644
--- a/src/emu/cpu/m6800/6800ops.inc
+++ b/src/devices/cpu/m6800/6800ops.inc
diff --git a/src/emu/cpu/m6800/6800tbl.inc b/src/devices/cpu/m6800/6800tbl.inc
index 38376dadd59..38376dadd59 100644
--- a/src/emu/cpu/m6800/6800tbl.inc
+++ b/src/devices/cpu/m6800/6800tbl.inc
diff --git a/src/emu/cpu/m6800/m6800.c b/src/devices/cpu/m6800/m6800.c
index 46a7cc4a99a..46a7cc4a99a 100644
--- a/src/emu/cpu/m6800/m6800.c
+++ b/src/devices/cpu/m6800/m6800.c
diff --git a/src/emu/cpu/m6800/m6800.h b/src/devices/cpu/m6800/m6800.h
index af02be492d8..af02be492d8 100644
--- a/src/emu/cpu/m6800/m6800.h
+++ b/src/devices/cpu/m6800/m6800.h
diff --git a/src/emu/cpu/m68000/m68000.h b/src/devices/cpu/m68000/m68000.h
index 5279ad655ec..5279ad655ec 100644
--- a/src/emu/cpu/m68000/m68000.h
+++ b/src/devices/cpu/m68000/m68000.h
diff --git a/src/emu/cpu/m68000/m68k_in.c b/src/devices/cpu/m68000/m68k_in.c
index 74b136a0012..9bdc9558a83 100644
--- a/src/emu/cpu/m68000/m68k_in.c
+++ b/src/devices/cpu/m68000/m68k_in.c
@@ -91,7 +91,6 @@ M68KMAKE_PROTOTYPE_HEADER
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
M68KMAKE_PROTOTYPE_FOOTER
-
/* Build the opcode handler table */
void m68ki_build_opcode_table(void);
@@ -2490,7 +2489,7 @@ M68KMAKE_OP(bfchg, 32, ., .)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
@@ -2581,7 +2580,7 @@ M68KMAKE_OP(bfclr, 32, ., .)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
@@ -2959,7 +2958,7 @@ M68KMAKE_OP(bfins, 32, ., .)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
insert_byte = MASK_OUT_ABOVE_8(insert_base);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
@@ -3022,7 +3021,6 @@ M68KMAKE_OP(bfset, 32, ., .)
UINT32 mask_byte = 0;
UINT32 ea = M68KMAKE_GET_EA_AY_8;
-
if(BIT_B(word2))
offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
if(BIT_5(word2))
@@ -3038,7 +3036,6 @@ M68KMAKE_OP(bfset, 32, ., .)
}
width = ((width-1) & 31) + 1;
-
mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask_long = mask_base >> offset;
@@ -3052,7 +3049,7 @@ M68KMAKE_OP(bfset, 32, ., .)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
@@ -3139,7 +3136,7 @@ M68KMAKE_OP(bftst, 32, ., .)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
}
@@ -8174,7 +8171,7 @@ M68KMAKE_OP(pack, 16, mm, ax7)
ea_src = EA_AY_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
+ m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -8191,7 +8188,7 @@ M68KMAKE_OP(pack, 16, mm, ay7)
ea_src = EA_A7_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
- m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
+ m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -8207,7 +8204,7 @@ M68KMAKE_OP(pack, 16, mm, axy7)
ea_src = EA_A7_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
+ m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -8224,7 +8221,7 @@ M68KMAKE_OP(pack, 16, mm, .)
ea_src = EA_AY_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
- m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
+ m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -10446,9 +10443,9 @@ M68KMAKE_OP(unpk, 16, mm, ax7)
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_A7_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
- ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
+ ea_dst = EA_A7_PD_8(mc68kcpu);
+ m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -10465,9 +10462,9 @@ M68KMAKE_OP(unpk, 16, mm, ay7)
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_AX_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
- ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
+ ea_dst = EA_AX_PD_8(mc68kcpu);
+ m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -10483,9 +10480,9 @@ M68KMAKE_OP(unpk, 16, mm, axy7)
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_A7_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
- ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
+ ea_dst = EA_A7_PD_8(mc68kcpu);
+ m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -10502,9 +10499,9 @@ M68KMAKE_OP(unpk, 16, mm, .)
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_AX_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
- ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
+ ea_dst = EA_AX_PD_8(mc68kcpu);
+ m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
diff --git a/src/emu/cpu/m68000/m68kcpu.c b/src/devices/cpu/m68000/m68kcpu.c
index b925594825d..bc5e7bc9b3d 100644
--- a/src/emu/cpu/m68000/m68kcpu.c
+++ b/src/devices/cpu/m68000/m68kcpu.c
@@ -2336,8 +2336,8 @@ const device_type M68K = &device_creator<m68000_base_device>;
m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: cpu_device(mconfig, M68K, "M68K", tag, owner, clock, "m68k", __FILE__),
- m_program_config("program", ENDIANNESS_BIG, 16, 24),
- m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, 16, 24)
+ m_program_config("program", ENDIANNESS_BIG, 16, 24),
+ m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, 16, 24)
{
clear_all();
}
@@ -2348,8 +2348,8 @@ m68000_base_device::m68000_base_device(const machine_config &mconfig, const char
m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, UINT32 clock,
const device_type type, UINT32 prg_data_width, UINT32 prg_address_bits, address_map_constructor internal_map, const char *shortname, const char *source)
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_program_config("program", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, internal_map),
- m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, internal_map)
+ m_program_config("program", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, internal_map),
+ m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, internal_map)
{
clear_all();
}
@@ -2358,8 +2358,8 @@ m68000_base_device::m68000_base_device(const machine_config &mconfig, const char
m68000_base_device::m68000_base_device(const machine_config &mconfig, const char *name, const char *tag, device_t *owner, UINT32 clock,
const device_type type, UINT32 prg_data_width, UINT32 prg_address_bits, const char *shortname, const char *source)
: cpu_device(mconfig, type, name, tag, owner, clock, shortname, source),
- m_program_config("program", ENDIANNESS_BIG, prg_data_width, prg_address_bits),
- m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits)
+ m_program_config("program", ENDIANNESS_BIG, prg_data_width, prg_address_bits),
+ m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits)
{
clear_all();
}
diff --git a/src/emu/cpu/m68000/m68kcpu.h b/src/devices/cpu/m68000/m68kcpu.h
index 2c30bf78a98..2c30bf78a98 100644
--- a/src/emu/cpu/m68000/m68kcpu.h
+++ b/src/devices/cpu/m68000/m68kcpu.h
diff --git a/src/emu/cpu/m68000/m68kdasm.c b/src/devices/cpu/m68000/m68kdasm.c
index e82d5c7111a..e82d5c7111a 100644
--- a/src/emu/cpu/m68000/m68kdasm.c
+++ b/src/devices/cpu/m68000/m68kdasm.c
diff --git a/src/emu/cpu/m68000/m68kfpu.inc b/src/devices/cpu/m68000/m68kfpu.inc
index 217a418a006..32d0179e6c2 100644
--- a/src/emu/cpu/m68000/m68kfpu.inc
+++ b/src/devices/cpu/m68000/m68kfpu.inc
@@ -988,6 +988,12 @@ static void WRITE_EA_32(m68000_base_device *m68k, int ea, UINT32 data)
{
switch (reg)
{
+ case 0: // (xxx).W
+ {
+ UINT32 ea = OPER_I_16(m68k);
+ m68ki_write_32(m68k, ea, data);
+ break;
+ }
case 1: // (xxx).L
{
UINT32 d1 = OPER_I_16(m68k);
diff --git a/src/emu/cpu/m68000/m68kmake.c b/src/devices/cpu/m68000/m68kmake.c
index 6a3642c4b1d..6a3642c4b1d 100644
--- a/src/emu/cpu/m68000/m68kmake.c
+++ b/src/devices/cpu/m68000/m68kmake.c
diff --git a/src/emu/cpu/m68000/m68kmmu.h b/src/devices/cpu/m68000/m68kmmu.h
index 342fc8ea981..342fc8ea981 100644
--- a/src/emu/cpu/m68000/m68kmmu.h
+++ b/src/devices/cpu/m68000/m68kmmu.h
diff --git a/src/emu/cpu/m68000/m68kops.c b/src/devices/cpu/m68000/m68kops.c
index f0962a93ef8..b0eeec4fad3 100644
--- a/src/emu/cpu/m68000/m68kops.c
+++ b/src/devices/cpu/m68000/m68kops.c
@@ -1,5 +1,3 @@
-// license:BSD-3-Clause
-// copyright-holders:Karl Stenerud
#include "emu.h"
#include "m68kcpu.h"
extern void m68040_fpu_op0(m68000_base_device *m68k);
@@ -5346,7 +5344,7 @@ void m68000_base_device_ops::m68k_op_bfchg_32_ai(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
@@ -5400,7 +5398,7 @@ void m68000_base_device_ops::m68k_op_bfchg_32_di(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
@@ -5454,7 +5452,7 @@ void m68000_base_device_ops::m68k_op_bfchg_32_ix(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
@@ -5508,7 +5506,7 @@ void m68000_base_device_ops::m68k_op_bfchg_32_aw(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
@@ -5562,7 +5560,7 @@ void m68000_base_device_ops::m68k_op_bfchg_32_al(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte ^ mask_byte);
@@ -5653,7 +5651,7 @@ void m68000_base_device_ops::m68k_op_bfclr_32_ai(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
@@ -5707,7 +5705,7 @@ void m68000_base_device_ops::m68k_op_bfclr_32_di(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
@@ -5761,7 +5759,7 @@ void m68000_base_device_ops::m68k_op_bfclr_32_ix(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
@@ -5815,7 +5813,7 @@ void m68000_base_device_ops::m68k_op_bfclr_32_aw(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
@@ -5869,7 +5867,7 @@ void m68000_base_device_ops::m68k_op_bfclr_32_al(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte & ~mask_byte);
@@ -7177,7 +7175,7 @@ void m68000_base_device_ops::m68k_op_bfins_32_ai(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
insert_byte = MASK_OUT_ABOVE_8(insert_base);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
@@ -7253,7 +7251,7 @@ void m68000_base_device_ops::m68k_op_bfins_32_di(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
insert_byte = MASK_OUT_ABOVE_8(insert_base);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
@@ -7329,7 +7327,7 @@ void m68000_base_device_ops::m68k_op_bfins_32_ix(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
insert_byte = MASK_OUT_ABOVE_8(insert_base);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
@@ -7405,7 +7403,7 @@ void m68000_base_device_ops::m68k_op_bfins_32_aw(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
insert_byte = MASK_OUT_ABOVE_8(insert_base);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
@@ -7481,7 +7479,7 @@ void m68000_base_device_ops::m68k_op_bfins_32_al(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
insert_byte = MASK_OUT_ABOVE_8(insert_base);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
@@ -7544,7 +7542,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_ai(m68000_base_device* mc68kcpu)
UINT32 mask_byte = 0;
UINT32 ea = EA_AY_AI_8(mc68kcpu);
-
if(BIT_B(word2))
offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
if(BIT_5(word2))
@@ -7560,7 +7557,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_ai(m68000_base_device* mc68kcpu)
}
width = ((width-1) & 31) + 1;
-
mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask_long = mask_base >> offset;
@@ -7574,7 +7570,7 @@ void m68000_base_device_ops::m68k_op_bfset_32_ai(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
@@ -7599,7 +7595,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_di(m68000_base_device* mc68kcpu)
UINT32 mask_byte = 0;
UINT32 ea = EA_AY_DI_8(mc68kcpu);
-
if(BIT_B(word2))
offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
if(BIT_5(word2))
@@ -7615,7 +7610,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_di(m68000_base_device* mc68kcpu)
}
width = ((width-1) & 31) + 1;
-
mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask_long = mask_base >> offset;
@@ -7629,7 +7623,7 @@ void m68000_base_device_ops::m68k_op_bfset_32_di(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
@@ -7654,7 +7648,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_ix(m68000_base_device* mc68kcpu)
UINT32 mask_byte = 0;
UINT32 ea = EA_AY_IX_8(mc68kcpu);
-
if(BIT_B(word2))
offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
if(BIT_5(word2))
@@ -7670,7 +7663,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_ix(m68000_base_device* mc68kcpu)
}
width = ((width-1) & 31) + 1;
-
mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask_long = mask_base >> offset;
@@ -7684,7 +7676,7 @@ void m68000_base_device_ops::m68k_op_bfset_32_ix(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
@@ -7709,7 +7701,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_aw(m68000_base_device* mc68kcpu)
UINT32 mask_byte = 0;
UINT32 ea = EA_AW_8(mc68kcpu);
-
if(BIT_B(word2))
offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
if(BIT_5(word2))
@@ -7725,7 +7716,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_aw(m68000_base_device* mc68kcpu)
}
width = ((width-1) & 31) + 1;
-
mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask_long = mask_base >> offset;
@@ -7739,7 +7729,7 @@ void m68000_base_device_ops::m68k_op_bfset_32_aw(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
@@ -7764,7 +7754,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_al(m68000_base_device* mc68kcpu)
UINT32 mask_byte = 0;
UINT32 ea = EA_AL_8(mc68kcpu);
-
if(BIT_B(word2))
offset = MAKE_INT_32(REG_D(mc68kcpu)[offset&7]);
if(BIT_5(word2))
@@ -7780,7 +7769,6 @@ void m68000_base_device_ops::m68k_op_bfset_32_al(m68000_base_device* mc68kcpu)
}
width = ((width-1) & 31) + 1;
-
mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));
mask_long = mask_base >> offset;
@@ -7794,7 +7782,7 @@ void m68000_base_device_ops::m68k_op_bfset_32_al(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
m68ki_write_8((mc68kcpu), ea+4, data_byte | mask_byte);
@@ -7881,7 +7869,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_ai(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
}
@@ -7932,7 +7920,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_di(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
}
@@ -7983,7 +7971,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_ix(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
}
@@ -8034,7 +8022,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_aw(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
}
@@ -8085,7 +8073,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_al(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
}
@@ -8136,7 +8124,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_pcdi(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
}
@@ -8187,7 +8175,7 @@ void m68000_base_device_ops::m68k_op_bftst_32_pcix(m68000_base_device* mc68kcpu)
if((width + offset) > 32)
{
- mask_byte = MASK_OUT_ABOVE_8(mask_base);
+ mask_byte = MASK_OUT_ABOVE_8(mask_base) << (8-offset);
data_byte = m68ki_read_8((mc68kcpu), ea+4);
(mc68kcpu)->not_z_flag |= (data_byte & mask_byte);
}
@@ -26403,7 +26391,7 @@ void m68000_base_device_ops::m68k_op_pack_16_mm_ax7(m68000_base_device* mc68kcpu
ea_src = EA_AY_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
+ m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -26420,7 +26408,7 @@ void m68000_base_device_ops::m68k_op_pack_16_mm_ay7(m68000_base_device* mc68kcpu
ea_src = EA_A7_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
- m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
+ m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -26436,7 +26424,7 @@ void m68000_base_device_ops::m68k_op_pack_16_mm_axy7(m68000_base_device* mc68kcp
ea_src = EA_A7_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
- m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
+ m68ki_write_8((mc68kcpu), EA_A7_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -26453,7 +26441,7 @@ void m68000_base_device_ops::m68k_op_pack_16_mm(m68000_base_device* mc68kcpu)
ea_src = EA_AY_PD_8(mc68kcpu);
src = ((src << 8) | m68ki_read_8((mc68kcpu), ea_src)) + OPER_I_16(mc68kcpu);
- m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 4) & 0x00f0) | (src & 0x000f));
+ m68ki_write_8((mc68kcpu), EA_AX_PD_8(mc68kcpu), ((src >> 8) & 0x000f) | ((src<<4) & 0x00f0));
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -32668,9 +32656,9 @@ void m68000_base_device_ops::m68k_op_unpk_16_mm_ax7(m68000_base_device* mc68kcpu
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_A7_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
- ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
+ ea_dst = EA_A7_PD_8(mc68kcpu);
+ m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -32687,9 +32675,9 @@ void m68000_base_device_ops::m68k_op_unpk_16_mm_ay7(m68000_base_device* mc68kcpu
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_AX_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
- ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
+ ea_dst = EA_AX_PD_8(mc68kcpu);
+ m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -32705,9 +32693,9 @@ void m68000_base_device_ops::m68k_op_unpk_16_mm_axy7(m68000_base_device* mc68kcp
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_A7_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
- ea_dst = EA_A7_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
+ ea_dst = EA_A7_PD_8(mc68kcpu);
+ m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
@@ -32724,9 +32712,9 @@ void m68000_base_device_ops::m68k_op_unpk_16_mm(m68000_base_device* mc68kcpu)
src = (((src << 4) & 0x0f00) | (src & 0x000f)) + OPER_I_16(mc68kcpu);
ea_dst = EA_AX_PD_8(mc68kcpu);
- m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
- ea_dst = EA_AX_PD_8(mc68kcpu);
m68ki_write_8((mc68kcpu), ea_dst, src & 0xff);
+ ea_dst = EA_AX_PD_8(mc68kcpu);
+ m68ki_write_8((mc68kcpu), ea_dst, (src >> 8) & 0xff);
return;
}
m68ki_exception_illegal(mc68kcpu);
diff --git a/src/emu/cpu/m68000/m68kops.h b/src/devices/cpu/m68000/m68kops.h
index 3f936f646f2..3f936f646f2 100644
--- a/src/emu/cpu/m68000/m68kops.h
+++ b/src/devices/cpu/m68000/m68kops.h
diff --git a/src/emu/cpu/m68000/makefile b/src/devices/cpu/m68000/makefile
index 12b29fa267a..12b29fa267a 100644
--- a/src/emu/cpu/m68000/makefile
+++ b/src/devices/cpu/m68000/makefile
diff --git a/src/emu/cpu/m6805/6805dasm.c b/src/devices/cpu/m6805/6805dasm.c
index 9471d976924..9471d976924 100644
--- a/src/emu/cpu/m6805/6805dasm.c
+++ b/src/devices/cpu/m6805/6805dasm.c
diff --git a/src/emu/cpu/m6805/6805ops.inc b/src/devices/cpu/m6805/6805ops.inc
index 713be5e0d7b..713be5e0d7b 100644
--- a/src/emu/cpu/m6805/6805ops.inc
+++ b/src/devices/cpu/m6805/6805ops.inc
diff --git a/src/emu/cpu/m6805/m6805.c b/src/devices/cpu/m6805/m6805.c
index b7fc47c8dfc..b7fc47c8dfc 100644
--- a/src/emu/cpu/m6805/m6805.c
+++ b/src/devices/cpu/m6805/m6805.c
diff --git a/src/emu/cpu/m6805/m6805.h b/src/devices/cpu/m6805/m6805.h
index 26bccefbd15..26bccefbd15 100644
--- a/src/emu/cpu/m6805/m6805.h
+++ b/src/devices/cpu/m6805/m6805.h
diff --git a/src/emu/cpu/m6809/6309dasm.c b/src/devices/cpu/m6809/6309dasm.c
index d39f03796e2..d39f03796e2 100644
--- a/src/emu/cpu/m6809/6309dasm.c
+++ b/src/devices/cpu/m6809/6309dasm.c
diff --git a/src/emu/cpu/m6809/6809dasm.c b/src/devices/cpu/m6809/6809dasm.c
index 192dda3b484..192dda3b484 100644
--- a/src/emu/cpu/m6809/6809dasm.c
+++ b/src/devices/cpu/m6809/6809dasm.c
diff --git a/src/emu/cpu/m6809/base6x09.ops b/src/devices/cpu/m6809/base6x09.ops
index 334521eb385..334521eb385 100644
--- a/src/emu/cpu/m6809/base6x09.ops
+++ b/src/devices/cpu/m6809/base6x09.ops
diff --git a/src/emu/cpu/m6809/hd6309.c b/src/devices/cpu/m6809/hd6309.c
index 5b270d26c90..5b270d26c90 100644
--- a/src/emu/cpu/m6809/hd6309.c
+++ b/src/devices/cpu/m6809/hd6309.c
diff --git a/src/emu/cpu/m6809/hd6309.h b/src/devices/cpu/m6809/hd6309.h
index 15da7a6cc8d..15da7a6cc8d 100644
--- a/src/emu/cpu/m6809/hd6309.h
+++ b/src/devices/cpu/m6809/hd6309.h
diff --git a/src/emu/cpu/m6809/hd6309.ops b/src/devices/cpu/m6809/hd6309.ops
index 6da3a904d2b..6da3a904d2b 100644
--- a/src/emu/cpu/m6809/hd6309.ops
+++ b/src/devices/cpu/m6809/hd6309.ops
diff --git a/src/emu/cpu/m6809/knmidasm.c b/src/devices/cpu/m6809/knmidasm.c
index 5c325e81718..5c325e81718 100644
--- a/src/emu/cpu/m6809/knmidasm.c
+++ b/src/devices/cpu/m6809/knmidasm.c
diff --git a/src/emu/cpu/m6809/konami.c b/src/devices/cpu/m6809/konami.c
index 8dc2bf3ab78..8dc2bf3ab78 100644
--- a/src/emu/cpu/m6809/konami.c
+++ b/src/devices/cpu/m6809/konami.c
diff --git a/src/emu/cpu/m6809/konami.h b/src/devices/cpu/m6809/konami.h
index dfc5c741497..dfc5c741497 100644
--- a/src/emu/cpu/m6809/konami.h
+++ b/src/devices/cpu/m6809/konami.h
diff --git a/src/emu/cpu/m6809/konami.ops b/src/devices/cpu/m6809/konami.ops
index e2246f85b71..e2246f85b71 100644
--- a/src/emu/cpu/m6809/konami.ops
+++ b/src/devices/cpu/m6809/konami.ops
diff --git a/src/emu/cpu/m6809/m6809.c b/src/devices/cpu/m6809/m6809.c
index d69b0417453..d69b0417453 100644
--- a/src/emu/cpu/m6809/m6809.c
+++ b/src/devices/cpu/m6809/m6809.c
diff --git a/src/emu/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h
index 595585cd098..595585cd098 100644
--- a/src/emu/cpu/m6809/m6809.h
+++ b/src/devices/cpu/m6809/m6809.h
diff --git a/src/emu/cpu/m6809/m6809.ops b/src/devices/cpu/m6809/m6809.ops
index 96b9f6c11a7..96b9f6c11a7 100644
--- a/src/emu/cpu/m6809/m6809.ops
+++ b/src/devices/cpu/m6809/m6809.ops
diff --git a/src/emu/cpu/m6809/m6809inl.h b/src/devices/cpu/m6809/m6809inl.h
index 8fd1cfe330d..8fd1cfe330d 100644
--- a/src/emu/cpu/m6809/m6809inl.h
+++ b/src/devices/cpu/m6809/m6809inl.h
diff --git a/src/emu/cpu/m6809/m6809make.py b/src/devices/cpu/m6809/m6809make.py
index 28e018f8b2d..28e018f8b2d 100644
--- a/src/emu/cpu/m6809/m6809make.py
+++ b/src/devices/cpu/m6809/m6809make.py
diff --git a/src/emu/cpu/mb86233/mb86233.c b/src/devices/cpu/mb86233/mb86233.c
index 0ad34296064..0ad34296064 100644
--- a/src/emu/cpu/mb86233/mb86233.c
+++ b/src/devices/cpu/mb86233/mb86233.c
diff --git a/src/emu/cpu/mb86233/mb86233.h b/src/devices/cpu/mb86233/mb86233.h
index a52f419e66d..a52f419e66d 100644
--- a/src/emu/cpu/mb86233/mb86233.h
+++ b/src/devices/cpu/mb86233/mb86233.h
diff --git a/src/emu/cpu/mb86233/mb86233d.c b/src/devices/cpu/mb86233/mb86233d.c
index 6e27c3b4d06..6e27c3b4d06 100644
--- a/src/emu/cpu/mb86233/mb86233d.c
+++ b/src/devices/cpu/mb86233/mb86233d.c
diff --git a/src/emu/cpu/mb86235/mb86235.c b/src/devices/cpu/mb86235/mb86235.c
index c68a66e4e7b..c68a66e4e7b 100644
--- a/src/emu/cpu/mb86235/mb86235.c
+++ b/src/devices/cpu/mb86235/mb86235.c
diff --git a/src/emu/cpu/mb86235/mb86235.h b/src/devices/cpu/mb86235/mb86235.h
index f7fc4e51bf1..f7fc4e51bf1 100644
--- a/src/emu/cpu/mb86235/mb86235.h
+++ b/src/devices/cpu/mb86235/mb86235.h
diff --git a/src/emu/cpu/mb86235/mb86235d.c b/src/devices/cpu/mb86235/mb86235d.c
index e77da1a0cad..e77da1a0cad 100644
--- a/src/emu/cpu/mb86235/mb86235d.c
+++ b/src/devices/cpu/mb86235/mb86235d.c
diff --git a/src/emu/cpu/mb88xx/mb88dasm.c b/src/devices/cpu/mb88xx/mb88dasm.c
index 49bf547ccd4..49bf547ccd4 100644
--- a/src/emu/cpu/mb88xx/mb88dasm.c
+++ b/src/devices/cpu/mb88xx/mb88dasm.c
diff --git a/src/emu/cpu/mb88xx/mb88xx.c b/src/devices/cpu/mb88xx/mb88xx.c
index 0508bfad1d4..0508bfad1d4 100644
--- a/src/emu/cpu/mb88xx/mb88xx.c
+++ b/src/devices/cpu/mb88xx/mb88xx.c
diff --git a/src/emu/cpu/mb88xx/mb88xx.h b/src/devices/cpu/mb88xx/mb88xx.h
index 3603d9dfc91..3603d9dfc91 100644
--- a/src/emu/cpu/mb88xx/mb88xx.h
+++ b/src/devices/cpu/mb88xx/mb88xx.h
diff --git a/src/emu/cpu/mc68hc11/hc11dasm.c b/src/devices/cpu/mc68hc11/hc11dasm.c
index eed3df13c5e..eed3df13c5e 100644
--- a/src/emu/cpu/mc68hc11/hc11dasm.c
+++ b/src/devices/cpu/mc68hc11/hc11dasm.c
diff --git a/src/emu/cpu/mc68hc11/hc11ops.h b/src/devices/cpu/mc68hc11/hc11ops.h
index 2eafc2850a2..2eafc2850a2 100644
--- a/src/emu/cpu/mc68hc11/hc11ops.h
+++ b/src/devices/cpu/mc68hc11/hc11ops.h
diff --git a/src/emu/cpu/mc68hc11/hc11ops.inc b/src/devices/cpu/mc68hc11/hc11ops.inc
index cb71a839c2f..cb71a839c2f 100644
--- a/src/emu/cpu/mc68hc11/hc11ops.inc
+++ b/src/devices/cpu/mc68hc11/hc11ops.inc
diff --git a/src/emu/cpu/mc68hc11/mc68hc11.c b/src/devices/cpu/mc68hc11/mc68hc11.c
index f05d9126334..f05d9126334 100644
--- a/src/emu/cpu/mc68hc11/mc68hc11.c
+++ b/src/devices/cpu/mc68hc11/mc68hc11.c
diff --git a/src/emu/cpu/mc68hc11/mc68hc11.h b/src/devices/cpu/mc68hc11/mc68hc11.h
index 6098cebdfe4..6098cebdfe4 100644
--- a/src/emu/cpu/mc68hc11/mc68hc11.h
+++ b/src/devices/cpu/mc68hc11/mc68hc11.h
diff --git a/src/emu/cpu/mcs48/mcs48.c b/src/devices/cpu/mcs48/mcs48.c
index a24cf72f0d6..a24cf72f0d6 100644
--- a/src/emu/cpu/mcs48/mcs48.c
+++ b/src/devices/cpu/mcs48/mcs48.c
diff --git a/src/emu/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h
index a8184bcbd34..a8184bcbd34 100644
--- a/src/emu/cpu/mcs48/mcs48.h
+++ b/src/devices/cpu/mcs48/mcs48.h
diff --git a/src/emu/cpu/mcs48/mcs48dsm.c b/src/devices/cpu/mcs48/mcs48dsm.c
index 9e2a080430c..9e2a080430c 100644
--- a/src/emu/cpu/mcs48/mcs48dsm.c
+++ b/src/devices/cpu/mcs48/mcs48dsm.c
diff --git a/src/emu/cpu/mcs51/mcs51.c b/src/devices/cpu/mcs51/mcs51.c
index 3b791f2b78c..3b791f2b78c 100644
--- a/src/emu/cpu/mcs51/mcs51.c
+++ b/src/devices/cpu/mcs51/mcs51.c
diff --git a/src/emu/cpu/mcs51/mcs51.h b/src/devices/cpu/mcs51/mcs51.h
index e8effbbd950..e8effbbd950 100644
--- a/src/emu/cpu/mcs51/mcs51.h
+++ b/src/devices/cpu/mcs51/mcs51.h
diff --git a/src/emu/cpu/mcs51/mcs51dasm.c b/src/devices/cpu/mcs51/mcs51dasm.c
index 9c0758c4e35..9c0758c4e35 100644
--- a/src/emu/cpu/mcs51/mcs51dasm.c
+++ b/src/devices/cpu/mcs51/mcs51dasm.c
diff --git a/src/emu/cpu/mcs51/mcs51ops.inc b/src/devices/cpu/mcs51/mcs51ops.inc
index e60cc3505eb..e60cc3505eb 100644
--- a/src/emu/cpu/mcs51/mcs51ops.inc
+++ b/src/devices/cpu/mcs51/mcs51ops.inc
diff --git a/src/emu/cpu/mcs96/i8x9x.c b/src/devices/cpu/mcs96/i8x9x.c
index 1170aa4fa1a..1170aa4fa1a 100644
--- a/src/emu/cpu/mcs96/i8x9x.c
+++ b/src/devices/cpu/mcs96/i8x9x.c
diff --git a/src/emu/cpu/mcs96/i8x9x.h b/src/devices/cpu/mcs96/i8x9x.h
index 3f700fd6e9d..3f700fd6e9d 100644
--- a/src/emu/cpu/mcs96/i8x9x.h
+++ b/src/devices/cpu/mcs96/i8x9x.h
diff --git a/src/emu/cpu/mcs96/i8xc196.c b/src/devices/cpu/mcs96/i8xc196.c
index 19553280de2..19553280de2 100644
--- a/src/emu/cpu/mcs96/i8xc196.c
+++ b/src/devices/cpu/mcs96/i8xc196.c
diff --git a/src/emu/cpu/mcs96/i8xc196.h b/src/devices/cpu/mcs96/i8xc196.h
index 299f6c9128d..299f6c9128d 100644
--- a/src/emu/cpu/mcs96/i8xc196.h
+++ b/src/devices/cpu/mcs96/i8xc196.h
diff --git a/src/emu/cpu/mcs96/mcs96.c b/src/devices/cpu/mcs96/mcs96.c
index 4c4cf849b88..4c4cf849b88 100644
--- a/src/emu/cpu/mcs96/mcs96.c
+++ b/src/devices/cpu/mcs96/mcs96.c
diff --git a/src/emu/cpu/mcs96/mcs96.h b/src/devices/cpu/mcs96/mcs96.h
index 31e90d137ca..31e90d137ca 100644
--- a/src/emu/cpu/mcs96/mcs96.h
+++ b/src/devices/cpu/mcs96/mcs96.h
diff --git a/src/emu/cpu/mcs96/mcs96make.py b/src/devices/cpu/mcs96/mcs96make.py
index 8381e63dc2f..72d8f36cfa6 100644
--- a/src/emu/cpu/mcs96/mcs96make.py
+++ b/src/devices/cpu/mcs96/mcs96make.py
@@ -1,5 +1,7 @@
#!/usr/bin/python
+from __future__ import print_function
+
USAGE = """
Usage:
%s mcs96ops.lst mcs96.inc
@@ -7,12 +9,12 @@ Usage:
import sys
def save_full_one(f, t, name, source):
- print >>f, "void %s_device::%s_full()" % (t, name)
- print >>f, "{"
+ print("void %s_device::%s_full()" % (t, name), file=f)
+ print("{", file=f)
for line in source:
- print >>f, line
- print >>f, "}"
- print >>f
+ print(line, file=f)
+ print("}", file=f)
+ print("", file=f)
class Opcode:
def __init__(self, rng, name, amode, is_196, ea):
@@ -113,7 +115,7 @@ class OpcodeList:
self.opcode_per_id[i] = inf
def save_dasm(self, f, t):
- print >>f, "const %s_device::disasm_entry %s_device::disasm_entries[0x100] = {" % (t, t)
+ print("const %s_device::disasm_entry %s_device::disasm_entries[0x100] = {" % (t, t), file=f)
for i in range(0, 0x100):
if i in self.opcode_per_id:
opc = self.opcode_per_id[i]
@@ -126,11 +128,11 @@ class OpcodeList:
flags = "DASMFLAG_STEP_OUT"
else:
flags = "0"
- print >>f, "\t{ \"%s\", %s, DASM_%s, %s }," % (opc.name, alt, opc.amode, flags)
+ print("\t{ \"%s\", %s, DASM_%s, %s }," % (opc.name, alt, opc.amode, flags), file=f)
else:
- print >>f, "\t{ \"???\", NULL, DASM_none, 0 },"
- print >>f, "};"
- print >>f
+ print("\t{ \"???\", NULL, DASM_none, 0 },", file=f)
+ print("};", file=f)
+ print("", file=f)
def save_opcodes(self, f, t):
pf = ""
@@ -146,9 +148,9 @@ class OpcodeList:
save_full_one(f, t, "fetch_noirq", self.fetch_noirq.source)
def save_exec(self, f, t):
- print >>f, "void %s_device::do_exec_full()" % t
- print >>f, "{"
- print >>f, "\tswitch(inst_state) {"
+ print("void %s_device::do_exec_full()" % t, file=f)
+ print("{", file=f)
+ print("\tswitch(inst_state) {", file=f)
for i in range(0x000, 0x200):
opc = None
if i >= 0x100 and i-0x100+0xfe00 in self.opcode_per_id:
@@ -159,15 +161,15 @@ class OpcodeList:
nm = opc.name + "_" + opc.amode
if opc.is_196:
nm += "_196"
- print >>f, "\tcase 0x%03x: %s_full(); break;" % (i, nm)
- print >>f, "\tcase 0x200: fetch_full(); break;"
- print >>f, "\tcase 0x201: fetch_noirq_full(); break;"
- print >>f, "\t}"
- print >>f, "}"
+ print("\tcase 0x%03x: %s_full(); break;" % (i, nm), file=f)
+ print("\tcase 0x200: fetch_full(); break;", file=f)
+ print("\tcase 0x201: fetch_noirq_full(); break;", file=f)
+ print("\t}", file=f)
+ print("}", file=f)
def main(argv):
if len(argv) != 4:
- print USAGE % argv[0]
+ print(USAGE % argv[0])
return 1
t = argv[1]
diff --git a/src/emu/cpu/mcs96/mcs96ops.lst b/src/devices/cpu/mcs96/mcs96ops.lst
index 7ccedf358da..7ccedf358da 100644
--- a/src/emu/cpu/mcs96/mcs96ops.lst
+++ b/src/devices/cpu/mcs96/mcs96ops.lst
diff --git a/src/emu/cpu/melps4/m58846.c b/src/devices/cpu/melps4/m58846.c
index 4d892d38307..4d892d38307 100644
--- a/src/emu/cpu/melps4/m58846.c
+++ b/src/devices/cpu/melps4/m58846.c
diff --git a/src/emu/cpu/melps4/m58846.h b/src/devices/cpu/melps4/m58846.h
index 25d850b455e..25d850b455e 100644
--- a/src/emu/cpu/melps4/m58846.h
+++ b/src/devices/cpu/melps4/m58846.h
diff --git a/src/emu/cpu/melps4/melps4.c b/src/devices/cpu/melps4/melps4.c
index b7390eaccf5..b7390eaccf5 100644
--- a/src/emu/cpu/melps4/melps4.c
+++ b/src/devices/cpu/melps4/melps4.c
diff --git a/src/emu/cpu/melps4/melps4.h b/src/devices/cpu/melps4/melps4.h
index 329ea035b13..329ea035b13 100644
--- a/src/emu/cpu/melps4/melps4.h
+++ b/src/devices/cpu/melps4/melps4.h
diff --git a/src/emu/cpu/melps4/melps4d.c b/src/devices/cpu/melps4/melps4d.c
index 4c2ca2fd9d4..4c2ca2fd9d4 100644
--- a/src/emu/cpu/melps4/melps4d.c
+++ b/src/devices/cpu/melps4/melps4d.c
diff --git a/src/emu/cpu/melps4/melps4op.c b/src/devices/cpu/melps4/melps4op.c
index 4f77764a66b..4f77764a66b 100644
--- a/src/emu/cpu/melps4/melps4op.c
+++ b/src/devices/cpu/melps4/melps4op.c
diff --git a/src/emu/cpu/minx/minx.c b/src/devices/cpu/minx/minx.c
index e822fbd9ecc..e822fbd9ecc 100644
--- a/src/emu/cpu/minx/minx.c
+++ b/src/devices/cpu/minx/minx.c
diff --git a/src/emu/cpu/minx/minx.h b/src/devices/cpu/minx/minx.h
index 836b76026cc..836b76026cc 100644
--- a/src/emu/cpu/minx/minx.h
+++ b/src/devices/cpu/minx/minx.h
diff --git a/src/emu/cpu/minx/minxd.c b/src/devices/cpu/minx/minxd.c
index 58789942409..58789942409 100644
--- a/src/emu/cpu/minx/minxd.c
+++ b/src/devices/cpu/minx/minxd.c
diff --git a/src/emu/cpu/minx/minxfunc.h b/src/devices/cpu/minx/minxfunc.h
index 45478bc6667..45478bc6667 100644
--- a/src/emu/cpu/minx/minxfunc.h
+++ b/src/devices/cpu/minx/minxfunc.h
diff --git a/src/emu/cpu/minx/minxopce.h b/src/devices/cpu/minx/minxopce.h
index ec0198273e3..ec0198273e3 100644
--- a/src/emu/cpu/minx/minxopce.h
+++ b/src/devices/cpu/minx/minxopce.h
diff --git a/src/emu/cpu/minx/minxopcf.h b/src/devices/cpu/minx/minxopcf.h
index f81d991304a..f81d991304a 100644
--- a/src/emu/cpu/minx/minxopcf.h
+++ b/src/devices/cpu/minx/minxopcf.h
diff --git a/src/emu/cpu/minx/minxops.h b/src/devices/cpu/minx/minxops.h
index b19e733deb2..b19e733deb2 100644
--- a/src/emu/cpu/minx/minxops.h
+++ b/src/devices/cpu/minx/minxops.h
diff --git a/src/emu/cpu/mips/mips3.c b/src/devices/cpu/mips/mips3.c
index ce8466b2b21..907adfb2926 100644
--- a/src/emu/cpu/mips/mips3.c
+++ b/src/devices/cpu/mips/mips3.c
@@ -95,8 +95,6 @@ static const UINT8 fpmode_source[4] =
uml::ROUND_FLOOR
};
-
-
/***************************************************************************
MEMORY ACCESSORS
***************************************************************************/
@@ -130,6 +128,7 @@ mips3_device::mips3_device(const machine_config &mconfig, device_type type, cons
, m_ppc(0)
, m_nextpc(0)
, m_pcbase(0)
+ , m_delayslot(false)
, m_op(0)
, m_interrupt_cycles(0)
, m_ll_value(0)
@@ -255,8 +254,9 @@ void mips3_device::generate_exception(int exception, int backup)
}
/* if we were in a branch delay slot, adjust */
- if (m_nextpc != ~0)
+ if ((m_nextpc != ~0) || (m_delayslot))
{
+ m_delayslot = false;
m_nextpc = ~0;
m_core->cpr[0][COP0_EPC] -= 4;
CAUSE |= 0x80000000;
@@ -1517,7 +1517,7 @@ void mips3_device::handle_cop0(UINT32 op)
break;
case 0x10: /* RFE */ invalid_instruction(op); break;
- case 0x18: /* ERET */ logerror("ERET\n"); m_core->pc = m_core->cpr[0][COP0_EPC]; SR &= ~SR_EXL; check_irqs(); m_lld_value ^= 0xffffffff; m_ll_value ^= 0xffffffff; break;
+ case 0x18: /* ERET logerror("ERET\n"); */ m_core->pc = m_core->cpr[0][COP0_EPC]; SR &= ~SR_EXL; check_irqs(); m_lld_value ^= 0xffffffff; m_ll_value ^= 0xffffffff; break;
case 0x20: /* WAIT */ break;
default: invalid_instruction(op); break;
}
@@ -2767,12 +2767,16 @@ void mips3_device::execute_run()
/* adjust for next PC */
if (m_nextpc != ~0)
{
+ /* Exceptions need to be able to see delayslot, since nextpc gets cleared before instruction execution */
+ m_delayslot = true;
m_core->pc = m_nextpc;
m_nextpc = ~0;
}
else
+ {
+ m_delayslot = false;
m_core->pc += 4;
-
+ }
/* parse the instruction */
const int switch_val = (op >> 26) & 0x3f;
@@ -2845,11 +2849,23 @@ void mips3_device::execute_run()
case 0x2e: /* SWR */ (this->*m_swr)(op); break;
case 0x2f: /* CACHE */ /* effective no-op */ break;
case 0x30: /* LL */ if (RWORD(SIMMVAL+RSVAL32, &temp) && RTREG) RTVAL64 = (UINT32)temp; m_ll_value = RTVAL32; break;
- case 0x31: /* LWC1 */ if (RWORD(SIMMVAL+RSVAL32, &temp)) set_cop1_reg32(RTREG, temp); break;
+ case 0x31: /* LWC1 */
+ if (!(SR & SR_COP1))
+ {
+ m_badcop_value = 1;
+ generate_exception(EXCEPTION_BADCOP, 1);
+ }
+ if (RWORD(SIMMVAL+RSVAL32, &temp)) set_cop1_reg32(RTREG, temp); break;
case 0x32: /* LWC2 */ if (RWORD(SIMMVAL+RSVAL32, &temp)) set_cop2_reg(RTREG, temp); break;
case 0x33: /* PREF */ /* effective no-op */ break;
case 0x34: /* LLD */ if (RDOUBLE(SIMMVAL+RSVAL32, &temp64) && RTREG) RTVAL64 = temp64; m_lld_value = temp64; break;
- case 0x35: /* LDC1 */ if (RDOUBLE(SIMMVAL+RSVAL32, &temp64)) set_cop1_reg64(RTREG, temp64); break;
+ case 0x35: /* LDC1 */
+ if (!(SR & SR_COP1))
+ {
+ m_badcop_value = 1;
+ generate_exception(EXCEPTION_BADCOP, 1);
+ }
+ if (RDOUBLE(SIMMVAL+RSVAL32, &temp64)) set_cop1_reg64(RTREG, temp64); break;
case 0x36: /* LDC2 */ if (RDOUBLE(SIMMVAL+RSVAL32, &temp64)) set_cop2_reg(RTREG, temp64); break;
case 0x37: /* LD */ if (RDOUBLE(SIMMVAL+RSVAL32, &temp64) && RTREG) RTVAL64 = temp64; break;
case 0x38: /* SC */ if (RWORD(SIMMVAL+RSVAL32, &temp) && RTREG)
@@ -2865,7 +2881,13 @@ void mips3_device::execute_run()
}
}
break;
- case 0x39: /* SWC1 */ WWORD(SIMMVAL+RSVAL32, get_cop1_reg32(RTREG)); break;
+ case 0x39: /* SWC1 */
+ if (!(SR & SR_COP1))
+ {
+ m_badcop_value = 1;
+ generate_exception(EXCEPTION_BADCOP, 1);
+ }
+ WWORD(SIMMVAL+RSVAL32, get_cop1_reg32(RTREG)); break;
case 0x3a: /* SWC2 */ WWORD(SIMMVAL+RSVAL32, get_cop2_reg(RTREG)); break;
case 0x3b: /* SWC3 */ invalid_instruction(op); break;
case 0x3c: /* SCD */ if (RDOUBLE(SIMMVAL+RSVAL32, &temp64) && RTREG)
@@ -2881,11 +2903,19 @@ void mips3_device::execute_run()
}
}
break;
- case 0x3d: /* SDC1 */ WDOUBLE(SIMMVAL+RSVAL32, get_cop1_reg64(RTREG)); break;
+ case 0x3d: /* SDC1 */
+ if (!(SR & SR_COP1))
+ {
+ m_badcop_value = 1;
+ generate_exception(EXCEPTION_BADCOP, 1);
+ }
+ WDOUBLE(SIMMVAL+RSVAL32, get_cop1_reg64(RTREG)); break;
case 0x3e: /* SDC2 */ WDOUBLE(SIMMVAL+RSVAL32, get_cop2_reg(RTREG)); break;
case 0x3f: /* SD */ WDOUBLE(SIMMVAL+RSVAL32, RTVAL64); break;
default: /* ??? */ invalid_instruction(op); break;
}
+ /* Clear this flag once instruction execution is finished, will interfere with interrupt exceptions otherwise */
+ m_delayslot = false;
m_core->icount--;
} while (m_core->icount > 0 || m_nextpc != ~0);
diff --git a/src/emu/cpu/mips/mips3.h b/src/devices/cpu/mips/mips3.h
index b8d9330cffb..4ae8398dac0 100644
--- a/src/emu/cpu/mips/mips3.h
+++ b/src/devices/cpu/mips/mips3.h
@@ -366,6 +366,7 @@ private:
UINT32 m_nextpc;
UINT32 m_pcbase;
UINT8 m_cf[4][8];
+ bool m_delayslot;
int m_op;
int m_interrupt_cycles;
UINT32 m_ll_value;
diff --git a/src/emu/cpu/mips/mips3com.c b/src/devices/cpu/mips/mips3com.c
index 0409014eeba..0409014eeba 100644
--- a/src/emu/cpu/mips/mips3com.c
+++ b/src/devices/cpu/mips/mips3com.c
diff --git a/src/emu/cpu/mips/mips3com.h b/src/devices/cpu/mips/mips3com.h
index 86d7f0c7a05..86d7f0c7a05 100644
--- a/src/emu/cpu/mips/mips3com.h
+++ b/src/devices/cpu/mips/mips3com.h
diff --git a/src/emu/cpu/mips/mips3drc.c b/src/devices/cpu/mips/mips3drc.c
index 22af8e16063..22af8e16063 100644
--- a/src/emu/cpu/mips/mips3drc.c
+++ b/src/devices/cpu/mips/mips3drc.c
diff --git a/src/emu/cpu/mips/mips3dsm.c b/src/devices/cpu/mips/mips3dsm.c
index be8440aff24..d453a17f1c0 100644
--- a/src/emu/cpu/mips/mips3dsm.c
+++ b/src/devices/cpu/mips/mips3dsm.c
@@ -30,6 +30,13 @@ static const char *const reg[32] =
};
#endif
+static const char *const cacheop[32] =
+{
+ "I_Invd", "D_WBInvd", "Unknown 2", "Unknown 3", "I_IndexLoadTag", "D_IndexLoadTag", "Unknown 6", "Unknown 7",
+ "I_IndexStoreTag", "D_IndexStoreTag", "Unknown 10", "Unknown 11", "Unknown 12", "D_CreateDirtyExcl", "Unknown 14", "Unknown 15",
+ "I_HitInvalid", "D_HitInvalid", "Unknown 18", "Unknown 19", "I_Fill", "D_HitWBInvalid", "Unknown 22", "Unknown 23",
+ "I_HitWB", "D_HitWB", "Unknown 26", "Unknown 27", "Unknown 28", "Unknown 29", "Unknown 30", "Unknown 31"
+};
static const char *const cpreg[4][32] =
@@ -503,7 +510,7 @@ unsigned dasmmips3(char *buffer, unsigned pc, UINT32 op)
case 0x2c: sprintf(buffer, "sdl %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
case 0x2d: sprintf(buffer, "sdr %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
case 0x2e: sprintf(buffer, "swr %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
- case 0x2f: sprintf(buffer, "cache %s(%s)", reg[rs], signed_16bit(op)); break;
+ case 0x2f: sprintf(buffer, "cache %s,%s(%s)", cacheop[rt], reg[rs], signed_16bit(op)); break;
case 0x30: sprintf(buffer, "ll %s,%s(%s)", reg[rt], signed_16bit(op), reg[rs]); break;
case 0x31: sprintf(buffer, "lwc1 %s,%s(%s)", cpreg[1][rt], signed_16bit(op), reg[rs]); break;
case 0x32: sprintf(buffer, "lwc2 %s,%s(%s)", cpreg[2][rt], signed_16bit(op), reg[rs]); break;
diff --git a/src/emu/cpu/mips/mips3fe.c b/src/devices/cpu/mips/mips3fe.c
index 42055c39e24..42055c39e24 100644
--- a/src/emu/cpu/mips/mips3fe.c
+++ b/src/devices/cpu/mips/mips3fe.c
diff --git a/src/emu/cpu/mips/mips3fe.h b/src/devices/cpu/mips/mips3fe.h
index 15e90c922e0..15e90c922e0 100644
--- a/src/emu/cpu/mips/mips3fe.h
+++ b/src/devices/cpu/mips/mips3fe.h
diff --git a/src/emu/cpu/mips/r3000.c b/src/devices/cpu/mips/r3000.c
index 1b64e05799c..1b64e05799c 100644
--- a/src/emu/cpu/mips/r3000.c
+++ b/src/devices/cpu/mips/r3000.c
diff --git a/src/emu/cpu/mips/r3000.h b/src/devices/cpu/mips/r3000.h
index a29ea5cd163..a29ea5cd163 100644
--- a/src/emu/cpu/mips/r3000.h
+++ b/src/devices/cpu/mips/r3000.h
diff --git a/src/emu/cpu/mips/r3kdasm.c b/src/devices/cpu/mips/r3kdasm.c
index 78521a9679f..78521a9679f 100644
--- a/src/emu/cpu/mips/r3kdasm.c
+++ b/src/devices/cpu/mips/r3kdasm.c
diff --git a/src/emu/cpu/mn10200/mn10200.c b/src/devices/cpu/mn10200/mn10200.c
index bf00be5b984..bf00be5b984 100644
--- a/src/emu/cpu/mn10200/mn10200.c
+++ b/src/devices/cpu/mn10200/mn10200.c
diff --git a/src/emu/cpu/mn10200/mn10200.h b/src/devices/cpu/mn10200/mn10200.h
index 59be253f852..59be253f852 100644
--- a/src/emu/cpu/mn10200/mn10200.h
+++ b/src/devices/cpu/mn10200/mn10200.h
diff --git a/src/emu/cpu/mn10200/mn102dis.c b/src/devices/cpu/mn10200/mn102dis.c
index c3b09b0ed93..c3b09b0ed93 100644
--- a/src/emu/cpu/mn10200/mn102dis.c
+++ b/src/devices/cpu/mn10200/mn102dis.c
diff --git a/src/emu/cpu/nec/nec.c b/src/devices/cpu/nec/nec.c
index 6c53cfa677a..6c53cfa677a 100644
--- a/src/emu/cpu/nec/nec.c
+++ b/src/devices/cpu/nec/nec.c
diff --git a/src/emu/cpu/nec/nec.h b/src/devices/cpu/nec/nec.h
index 2e881591426..2e881591426 100644
--- a/src/emu/cpu/nec/nec.h
+++ b/src/devices/cpu/nec/nec.h
diff --git a/src/emu/cpu/nec/necdasm.c b/src/devices/cpu/nec/necdasm.c
index 726ada18247..726ada18247 100644
--- a/src/emu/cpu/nec/necdasm.c
+++ b/src/devices/cpu/nec/necdasm.c
diff --git a/src/emu/cpu/nec/necea.h b/src/devices/cpu/nec/necea.h
index 2633637304a..2633637304a 100644
--- a/src/emu/cpu/nec/necea.h
+++ b/src/devices/cpu/nec/necea.h
diff --git a/src/emu/cpu/nec/necinstr.h b/src/devices/cpu/nec/necinstr.h
index 6dd8d52aa49..6dd8d52aa49 100644
--- a/src/emu/cpu/nec/necinstr.h
+++ b/src/devices/cpu/nec/necinstr.h
diff --git a/src/emu/cpu/nec/necinstr.inc b/src/devices/cpu/nec/necinstr.inc
index 1630bf5c82f..1630bf5c82f 100644
--- a/src/emu/cpu/nec/necinstr.inc
+++ b/src/devices/cpu/nec/necinstr.inc
diff --git a/src/emu/cpu/nec/necmacro.h b/src/devices/cpu/nec/necmacro.h
index a6091f34eba..a6091f34eba 100644
--- a/src/emu/cpu/nec/necmacro.h
+++ b/src/devices/cpu/nec/necmacro.h
diff --git a/src/emu/cpu/nec/necmodrm.h b/src/devices/cpu/nec/necmodrm.h
index 8afc0240a78..8afc0240a78 100644
--- a/src/emu/cpu/nec/necmodrm.h
+++ b/src/devices/cpu/nec/necmodrm.h
diff --git a/src/emu/cpu/nec/necpriv.h b/src/devices/cpu/nec/necpriv.h
index bee9426cf8d..bee9426cf8d 100644
--- a/src/emu/cpu/nec/necpriv.h
+++ b/src/devices/cpu/nec/necpriv.h
diff --git a/src/emu/cpu/nec/v25.c b/src/devices/cpu/nec/v25.c
index 384043c8f9c..384043c8f9c 100644
--- a/src/emu/cpu/nec/v25.c
+++ b/src/devices/cpu/nec/v25.c
diff --git a/src/emu/cpu/nec/v25.h b/src/devices/cpu/nec/v25.h
index 41d55cc4fb8..41d55cc4fb8 100644
--- a/src/emu/cpu/nec/v25.h
+++ b/src/devices/cpu/nec/v25.h
diff --git a/src/emu/cpu/nec/v25instr.h b/src/devices/cpu/nec/v25instr.h
index 5d878f24f2b..5d878f24f2b 100644
--- a/src/emu/cpu/nec/v25instr.h
+++ b/src/devices/cpu/nec/v25instr.h
diff --git a/src/emu/cpu/nec/v25instr.inc b/src/devices/cpu/nec/v25instr.inc
index bd11b0626a8..bd11b0626a8 100644
--- a/src/emu/cpu/nec/v25instr.inc
+++ b/src/devices/cpu/nec/v25instr.inc
diff --git a/src/emu/cpu/nec/v25priv.h b/src/devices/cpu/nec/v25priv.h
index 19e8fcb7171..19e8fcb7171 100644
--- a/src/emu/cpu/nec/v25priv.h
+++ b/src/devices/cpu/nec/v25priv.h
diff --git a/src/emu/cpu/nec/v25sfr.c b/src/devices/cpu/nec/v25sfr.c
index 7e8afc8b39c..7e8afc8b39c 100644
--- a/src/emu/cpu/nec/v25sfr.c
+++ b/src/devices/cpu/nec/v25sfr.c
diff --git a/src/emu/cpu/nec/v53.c b/src/devices/cpu/nec/v53.c
index 43969a0a78c..daf1f806e48 100644
--- a/src/emu/cpu/nec/v53.c
+++ b/src/devices/cpu/nec/v53.c
@@ -18,112 +18,112 @@ const device_type V53A =&device_creator<v53a_device>;
WRITE8_MEMBER(v53_base_device::BSEL_w)
{
- printf("v53: BSEL_w %02x\n", data);
+ //printf("v53: BSEL_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::BADR_w)
{
- printf("v53: BADR_w %02x\n", data);
+ //printf("v53: BADR_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::BRC_w)
{
- printf("v53: BRC_w %02x\n", data);
+ //printf("v53: BRC_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::WMB0_w)
{
- printf("v53: WMB0_w %02x\n", data);
+ //printf("v53: WMB0_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::WCY1_w)
{
- printf("v53: WCY1_w %02x\n", data);
+ //printf("v53: WCY1_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::WCY0_w)
{
- printf("v53: WCY0_w %02x\n", data);
+ //printf("v53: WCY0_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::WAC_w)
{
- printf("v53: WAC_w %02x\n", data);
+ //printf("v53: WAC_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::TCKS_w)
{
- printf("v53: TCKS_w %02x\n", data);
+ //printf("v53: TCKS_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::SBCR_w)
{
- printf("v53: SBCR_w %02x\n", data);
+ //printf("v53: SBCR_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::REFC_w)
{
- printf("v53: REFC_w %02x\n", data);
+ //printf("v53: REFC_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::WMB1_w)
{
- printf("v53: WMB1_w %02x\n", data);
+ //printf("v53: WMB1_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::WCY2_w)
{
- printf("v53: WCY2_w %02x\n", data);
+ //printf("v53: WCY2_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::WCY3_w)
{
- printf("v53: WCY3_w %02x\n", data);
+ //printf("v53: WCY3_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::WCY4_w)
{
- printf("v53: WCY4_w %02x\n", data);
+ //printf("v53: WCY4_w %02x\n", data);
}
WRITE8_MEMBER(v53_base_device::SULA_w)
{
- printf("v53: SULA_w %02x\n", data);
+ //printf("v53: SULA_w %02x\n", data);
m_SULA = data;
install_peripheral_io();
}
WRITE8_MEMBER(v53_base_device::TULA_w)
{
- printf("v53: TULA_w %02x\n", data);
+ //printf("v53: TULA_w %02x\n", data);
m_TULA = data;
install_peripheral_io();
}
WRITE8_MEMBER(v53_base_device::IULA_w)
{
- printf("v53: IULA_w %02x\n", data);
+ //printf("v53: IULA_w %02x\n", data);
m_IULA = data;
install_peripheral_io();
}
WRITE8_MEMBER(v53_base_device::DULA_w)
{
- printf("v53: DULA_w %02x\n", data);
+ //printf("v53: DULA_w %02x\n", data);
m_DULA = data;
install_peripheral_io();
}
WRITE8_MEMBER(v53_base_device::OPHA_w)
{
- printf("v53: OPHA_w %02x\n", data);
+ //printf("v53: OPHA_w %02x\n", data);
m_OPHA = data;
install_peripheral_io();
}
WRITE8_MEMBER(v53_base_device::OPSEL_w)
{
- printf("v53: OPSEL_w %02x\n", data);
+ //printf("v53: OPSEL_w %02x\n", data);
m_OPSEL = data;
install_peripheral_io();
}
@@ -139,7 +139,7 @@ WRITE8_MEMBER(v53_base_device::SCTL_w)
// bit 1: uPD71037 DMA mode enable (otherwise in uPD71071 mode)
// bit 0: Onboard pripheral I/O maps to 8-bit boundaries? (otherwise 16-bit)
- printf("v53: SCTL_w %02x\n", data);
+ //printf("v53: SCTL_w %02x\n", data);
m_SCTL = data;
install_peripheral_io();
}
@@ -311,14 +311,14 @@ void v53_base_device::install_peripheral_io()
READ8_MEMBER(v53_base_device::scu_simk_r)
{
- printf("v53: scu_simk_r\n");
+ //printf("v53: scu_simk_r\n");
return m_simk;
}
WRITE8_MEMBER(v53_base_device::scu_simk_w)
{
m_simk = data;
- printf("v53: scu_simk_w %02x\n", data);
+ //printf("v53: scu_simk_w %02x\n", data);
}
@@ -350,7 +350,7 @@ WRITE_LINE_MEMBER(v53_base_device::dreq0_w)
}
else
{
- printf("v53: dreq0 not in 71071mode\n");
+ //printf("v53: dreq0 not in 71071mode\n");
}
}
@@ -362,7 +362,7 @@ WRITE_LINE_MEMBER(v53_base_device::dreq1_w)
}
else
{
- printf("v53: dreq1 not in 71071mode\n");
+ //printf("v53: dreq1 not in 71071mode\n");
}
}
@@ -374,7 +374,7 @@ WRITE_LINE_MEMBER(v53_base_device::dreq2_w)
}
else
{
- printf("v53: dreq2 not in 71071mode\n");
+ //printf("v53: dreq2 not in 71071mode\n");
}
}
@@ -386,7 +386,7 @@ WRITE_LINE_MEMBER(v53_base_device::dreq3_w)
}
else
{
- printf("v53: dreq3 not in 71071mode\n");
+ //printf("v53: dreq3 not in 71071mode\n");
}
}
@@ -398,7 +398,7 @@ WRITE_LINE_MEMBER(v53_base_device::hack_w)
}
else
{
- printf("v53: hack_w not in 71071mode\n");
+ //printf("v53: hack_w not in 71071mode\n");
}
}
diff --git a/src/emu/cpu/nec/v53.h b/src/devices/cpu/nec/v53.h
index 796f620fd40..796f620fd40 100644
--- a/src/emu/cpu/nec/v53.h
+++ b/src/devices/cpu/nec/v53.h
diff --git a/src/emu/cpu/pdp1/pdp1.c b/src/devices/cpu/pdp1/pdp1.c
index bb7beee4128..bb7beee4128 100644
--- a/src/emu/cpu/pdp1/pdp1.c
+++ b/src/devices/cpu/pdp1/pdp1.c
diff --git a/src/emu/cpu/pdp1/pdp1.h b/src/devices/cpu/pdp1/pdp1.h
index f4d1281aa07..f4d1281aa07 100644
--- a/src/emu/cpu/pdp1/pdp1.h
+++ b/src/devices/cpu/pdp1/pdp1.h
diff --git a/src/emu/cpu/pdp1/pdp1dasm.c b/src/devices/cpu/pdp1/pdp1dasm.c
index c8682ca1491..c8682ca1491 100644
--- a/src/emu/cpu/pdp1/pdp1dasm.c
+++ b/src/devices/cpu/pdp1/pdp1dasm.c
diff --git a/src/emu/cpu/pdp1/tx0.c b/src/devices/cpu/pdp1/tx0.c
index 03c8441d88f..03c8441d88f 100644
--- a/src/emu/cpu/pdp1/tx0.c
+++ b/src/devices/cpu/pdp1/tx0.c
diff --git a/src/emu/cpu/pdp1/tx0.h b/src/devices/cpu/pdp1/tx0.h
index e88172bc8ff..e88172bc8ff 100644
--- a/src/emu/cpu/pdp1/tx0.h
+++ b/src/devices/cpu/pdp1/tx0.h
diff --git a/src/emu/cpu/pdp1/tx0dasm.c b/src/devices/cpu/pdp1/tx0dasm.c
index 3d8a1daf9e1..3d8a1daf9e1 100644
--- a/src/emu/cpu/pdp1/tx0dasm.c
+++ b/src/devices/cpu/pdp1/tx0dasm.c
diff --git a/src/devices/cpu/pdp8/pdp8.c b/src/devices/cpu/pdp8/pdp8.c
new file mode 100644
index 00000000000..1ed24effe12
--- /dev/null
+++ b/src/devices/cpu/pdp8/pdp8.c
@@ -0,0 +1,249 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+/*
+ First-gen DEC PDP-8 emulator skeleton
+
+ Written by Ryan Holtz
+*/
+
+#include "emu.h"
+#include "debugger.h"
+#include "pdp8.h"
+
+CPU_DISASSEMBLE( pdp8 );
+
+#define OP ((op >> 011) & 07)
+
+#define MR_IND ((op >> 010) & 01)
+#define MR_PAGE ((op >> 07) & 01)
+#define MR_ADDR (op & 0177)
+
+#define IOT_DEVICE ((op >> 03) & 077)
+#define IOT_IOP1 (op & 01)
+#define IOT_IOP2 ((op >> 01) & 01)
+#define IOT_IOP4 ((op >> 02) & 01)
+
+#define OPR_GROUP ((op >> 010) & 01)
+#define OPR_CLA ((op >> 07) & 01)
+#define OPR_CLL ((op >> 06) & 01)
+#define OPR_CMA ((op >> 05) & 01)
+#define OPR_CML ((op >> 04) & 01)
+#define OPR_ROR ((op >> 03) & 01)
+#define OPR_ROL ((op >> 02) & 01)
+#define OPR_ROT2 ((op >> 01) & 01)
+#define OPR_IAC (op & 01)
+
+#define OPR_SMA OPR_CLL
+#define OPR_SZA OPR_CMA
+#define OPR_SNL OPR_CML
+#define OPR_REVSKIP OPR_ROR
+#define OPR_OSR OPR_ROL
+#define OPR_HLT OPR_ROT2
+
+#define OPR_GROUP_MASK 0401
+#define OPR_GROUP1_VAL 0000
+#define OPR_GROUP2_VAL 0400
+
+const device_type PDP8CPU = &device_creator<pdp8_device>;
+
+//-------------------------------------------------
+// pdp8_device - constructor
+//-------------------------------------------------
+
+pdp8_device::pdp8_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : cpu_device(mconfig, PDP8CPU, "PDP8CPU", tag, owner, clock, "pdp8_cpu", __FILE__),
+ m_program_config("program", ENDIANNESS_BIG, 12, 12),
+ m_pc(0),
+ m_ac(0),
+ m_mb(0),
+ m_ma(0),
+ m_sr(0),
+ m_l(0),
+ m_ir(0),
+ m_halt(true),
+ m_icount(0)
+{
+ // Allocate & setup
+}
+
+
+void pdp8_device::device_start()
+{
+ m_program = &space(AS_PROGRAM);
+
+ // register our state for the debugger
+ std::string tempstr;
+ state_add(STATE_GENPC, "GENPC", m_pc).noshow();
+ state_add(STATE_GENFLAGS, "GENFLAGS", m_l).callimport().callexport().formatstr("%1s").noshow();
+ state_add(PDP8_PC, "PC", m_pc).mask(0xfff);
+ state_add(PDP8_AC, "AC", m_ac).mask(0xfff);
+ state_add(PDP8_MB, "MB", m_mb).mask(0xfff);
+ state_add(PDP8_MA, "MA", m_ma).mask(0xfff);
+ state_add(PDP8_SR, "SR", m_sr).mask(0xfff);
+ state_add(PDP8_L, "L", m_l).mask(0xf);
+ state_add(PDP8_IR, "IR", m_ir).mask(0xff);
+ state_add(PDP8_HALT, "HLT", m_halt).mask(0xf);
+
+ // setup regtable
+ save_item(NAME(m_pc));
+ save_item(NAME(m_ac));
+ save_item(NAME(m_mb));
+ save_item(NAME(m_ma));
+ save_item(NAME(m_sr));
+ save_item(NAME(m_l));
+ save_item(NAME(m_ir));
+ save_item(NAME(m_halt));
+
+ // set our instruction counter
+ m_icountptr = &m_icount;
+}
+
+void pdp8_device::device_stop()
+{
+}
+
+void pdp8_device::device_reset()
+{
+ m_pc = 0;
+ m_ac = 0;
+ m_mb = 0;
+ m_ma = 0;
+ m_sr = 0;
+ m_l = 0;
+ m_ir = 0;
+ m_halt = true;
+}
+
+
+//-------------------------------------------------
+// memory_space_config - return the configuration
+// of the specified address space, or NULL if
+// the space doesn't exist
+//-------------------------------------------------
+
+const address_space_config *pdp8_device::memory_space_config(address_spacenum spacenum) const
+{
+ if (spacenum == AS_PROGRAM)
+ {
+ return &m_program_config;
+ }
+ return NULL;
+}
+
+
+//-------------------------------------------------
+// state_string_export - export state as a string
+// for the debugger
+//-------------------------------------------------
+
+void pdp8_device::state_string_export(const device_state_entry &entry, std::string &str)
+{
+ switch (entry.index())
+ {
+ case STATE_GENFLAGS:
+ strprintf(str, "%c", m_halt ? 'H' : '.');
+ break;
+ }
+}
+
+
+//-------------------------------------------------
+// disasm_min_opcode_bytes - return the length
+// of the shortest instruction, in bytes
+//-------------------------------------------------
+
+UINT32 pdp8_device::disasm_min_opcode_bytes() const
+{
+ return 2;
+}
+
+
+//-------------------------------------------------
+// disasm_max_opcode_bytes - return the length
+// of the longest instruction, in bytes
+//-------------------------------------------------
+
+UINT32 pdp8_device::disasm_max_opcode_bytes() const
+{
+ return 2;
+}
+
+
+//-------------------------------------------------
+// disasm_disassemble - call the disassembly
+// helper function
+//-------------------------------------------------
+
+offs_t pdp8_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
+{
+ extern CPU_DISASSEMBLE( pdp8 );
+ return CPU_DISASSEMBLE_NAME(pdp8)(this, buffer, pc, oprom, opram, options);
+}
+
+
+//**************************************************************************
+// CORE EXECUTION LOOP
+//**************************************************************************
+
+//-------------------------------------------------
+// execute_min_cycles - return minimum number of
+// cycles it takes for one instruction to execute
+//-------------------------------------------------
+
+UINT32 pdp8_device::execute_min_cycles() const
+{
+ return 1; // TODO
+}
+
+
+//-------------------------------------------------
+// execute_max_cycles - return maximum number of
+// cycles it takes for one instruction to execute
+//-------------------------------------------------
+
+UINT32 pdp8_device::execute_max_cycles() const
+{
+ return 3; // TODO
+}
+
+
+//-------------------------------------------------
+// execute_input_lines - return the number of
+// input/interrupt lines
+//-------------------------------------------------
+
+UINT32 pdp8_device::execute_input_lines() const
+{
+ return 0; // TODO
+}
+
+
+//-------------------------------------------------
+// execute_set_input - set the state of an input
+// line during execution
+//-------------------------------------------------
+
+void pdp8_device::execute_set_input(int inputnum, int state)
+{
+ // TODO
+}
+
+
+//-------------------------------------------------
+// execute_run - execute a timeslice's worth of
+// opcodes
+//-------------------------------------------------
+
+void pdp8_device::execute_run()
+{
+ while (m_icount > 0)
+ {
+ m_pc &= 07777;
+
+ debugger_instruction_hook(this, m_pc);
+
+ UINT16 op = m_program->read_word(m_pc);
+
+ --m_icount;
+ }
+}
diff --git a/src/devices/cpu/pdp8/pdp8.h b/src/devices/cpu/pdp8/pdp8.h
new file mode 100644
index 00000000000..2569edd2d8f
--- /dev/null
+++ b/src/devices/cpu/pdp8/pdp8.h
@@ -0,0 +1,113 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+/*
+ First-gen DEC PDP-8 CPU emulator
+
+ Written by Ryan Holtz
+*/
+
+#pragma once
+
+#ifndef __PDP8_H__
+#define __PDP8_H__
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> pdp8_device
+
+// Used by core CPU interface
+class pdp8_device : public cpu_device
+{
+public:
+ // construction/destruction
+ pdp8_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_stop();
+
+ // device_execute_interface overrides
+ virtual UINT32 execute_min_cycles() const;
+ virtual UINT32 execute_max_cycles() const;
+ virtual UINT32 execute_input_lines() const;
+ virtual void execute_run();
+ virtual void execute_set_input(int inputnum, int state);
+
+ // device_memory_interface overrides
+ virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;
+
+ // device_disasm_interface overrides
+ virtual UINT32 disasm_min_opcode_bytes() const;
+ virtual UINT32 disasm_max_opcode_bytes() const;
+ virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
+
+ // device_state_interface overrides
+ virtual void state_string_export(const device_state_entry &entry, std::string &str);
+
+ // address spaces
+ const address_space_config m_program_config;
+
+ enum state
+ {
+ FETCH,
+ DEFER,
+ EXECUTE,
+ WORD_COUNT,
+ CURRENT_ADDR,
+ BREAK
+ }
+
+ enum opcode
+ {
+ AND = 0,
+ TAD,
+ ISZ,
+ DCA,
+ JMS,
+ JMP,
+ IOT,
+ OPR
+ }
+private:
+ // CPU registers
+ UINT16 m_pc;
+ UINT16 m_ac;
+ UINT16 m_mb;
+ UINT16 m_ma;
+ UINT16 m_sr;
+ UINT8 m_l;
+ UINT8 m_ir;
+ bool m_halt;
+
+ // other internal states
+ int m_icount;
+
+ // address spaces
+ address_space *m_program;
+};
+
+// device type definition
+extern const device_type PDP8CPU;
+
+/***************************************************************************
+ REGISTER ENUMERATION
+***************************************************************************/
+
+enum
+{
+ PDP8_PC = 1,
+ PDP8_AC,
+ PDP8_MB,
+ PDP8_MA,
+ PDP8_SR,
+ PDP8_L,
+ PDP8_IR,
+ PDP8_HALT
+};
+
+CPU_DISASSEMBLE( pdp8 );
+
+#endif /* __PDP8_H__ */
diff --git a/src/devices/cpu/pdp8/pdp8dasm.c b/src/devices/cpu/pdp8/pdp8dasm.c
new file mode 100644
index 00000000000..01dc3621ffa
--- /dev/null
+++ b/src/devices/cpu/pdp8/pdp8dasm.c
@@ -0,0 +1,174 @@
+// license:BSD-3-Clause
+// copyright-holders:Ryan Holtz
+/*
+ First-gen DEC PDP-8 disassembler
+
+ Written by Ryan Holtz
+*/
+
+#include "emu.h"
+
+static char *output;
+
+offs_t pdp8_dasm_one(char *buffer, offs_t pc, UINT16 op)
+{
+ UINT8 opcode = (op >> 011) & 07;
+ UINT16 current_page = pc & 07600;
+ UINT16 zero_addr = op & 0177;
+ UINT16 current_addr = current_page | zero_addr;
+ bool indirect = (op & 0400) ? true : false;
+ bool zero_page = (op & 0200) ? false : true;
+
+ output = buffer;
+
+ switch (opcode)
+ {
+ case 0:
+ output += sprintf(buffer, "AND %c %05o", indirect ? 'I' : ' ', zero_page ? zero_addr : current_addr);
+ break;
+ case 1:
+ output += sprintf(buffer, "TAD %c %05o", indirect ? 'I' : ' ', zero_page ? zero_addr : current_addr);
+ break;
+ case 2:
+ output += sprintf(buffer, "ISZ %c %05o", indirect ? 'I' : ' ', zero_page ? zero_addr : current_addr);
+ break;
+ case 3:
+ output += sprintf(buffer, "DCA %c %05o", indirect ? 'I' : ' ', zero_page ? zero_addr : current_addr);
+ break;
+ case 4:
+ output += sprintf(buffer, "JMS %c %05o", indirect ? 'I' : ' ', zero_page ? zero_addr : current_addr);
+ break;
+ case 5:
+ output += sprintf(buffer, "JMP %c %05o", indirect ? 'I' : ' ', zero_page ? zero_addr : current_addr);
+ break;
+ case 6:
+ output += sprintf(buffer, "IOT %03o %01o", (op >> 03) & 077, op & 07);
+ break;
+ case 7:
+ {
+ bool group2 = ((op & 0401) == 0400);
+ if (!group2)
+ {
+ if (!(op & 0377))
+ {
+ output += sprintf(buffer, "NOP ");
+ }
+ else
+ {
+ if (op & 0200)
+ {
+ output += sprintf(buffer, "CLA ");
+ }
+ if (op & 0100)
+ {
+ output += sprintf(buffer, "CLL ");
+ }
+ if (op & 040)
+ {
+ output += sprintf(buffer, "CMA ");
+ }
+ if (op & 020)
+ {
+ output += sprintf(buffer, "CML ");
+ }
+ if (op & 01)
+ {
+ output += sprintf(buffer, "IAC ");
+ }
+ if (op & 010)
+ {
+ if (op & 02)
+ {
+ output += sprintf(buffer, "RTR ");
+ }
+ else
+ {
+ output += sprintf(buffer, "RAR ");
+ }
+ }
+ if (op & 04)
+ {
+ if (op & 02)
+ {
+ output += sprintf(buffer, "RTL ");
+ }
+ else
+ {
+ output += sprintf(buffer, "RAL ");
+ }
+ }
+ }
+ }
+ else
+ {
+ if (!(op & 0377))
+ {
+ output += sprintf(buffer, "NOP ");
+ }
+ else
+ {
+ if (op & 010)
+ {
+ if (!(op & 0160))
+ {
+ output += sprintf(buffer, "SKP ");
+ }
+ else
+ {
+ if (op & 0100)
+ {
+ output += sprintf(buffer, "SPA ");
+ }
+ if (op & 040)
+ {
+ output += sprintf(buffer, "SNA ");
+ }
+ if (op & 020)
+ {
+ output += sprintf(buffer, "SZL ");
+ }
+ }
+ }
+ else
+ {
+ if (op & 0100)
+ {
+ output += sprintf(buffer, "SMA ");
+ }
+ if (op & 040)
+ {
+ output += sprintf(buffer, "SZA ");
+ }
+ if (op & 020)
+ {
+ output += sprintf(buffer, "SNL ");
+ }
+ }
+ if (op & 0200)
+ {
+ output += sprintf(buffer, "CLA ");
+ }
+ if (op & 04)
+ {
+ output += sprintf(buffer, "OSR ");
+ }
+ if (op & 02)
+ {
+ output += sprintf(buffer, "HLT ");
+ }
+ }
+ }
+ }
+ }
+
+ return 2 | DASMFLAG_SUPPORTED;
+}
+
+/*****************************************************************************/
+
+CPU_DISASSEMBLE( pdp8 )
+{
+ UINT16 op = (*(UINT8 *)(opram + 0) << 8) |
+ (*(UINT8 *)(opram + 1) << 0);
+ return pdp8_dasm_one(buffer, pc, op);
+}
diff --git a/src/emu/cpu/pic16c5x/16c5xdsm.c b/src/devices/cpu/pic16c5x/16c5xdsm.c
index 45ff3154ec1..45ff3154ec1 100644
--- a/src/emu/cpu/pic16c5x/16c5xdsm.c
+++ b/src/devices/cpu/pic16c5x/16c5xdsm.c
diff --git a/src/emu/cpu/pic16c5x/dis16c5x.c b/src/devices/cpu/pic16c5x/dis16c5x.c
index 5b108310b5f..5b108310b5f 100644
--- a/src/emu/cpu/pic16c5x/dis16c5x.c
+++ b/src/devices/cpu/pic16c5x/dis16c5x.c
diff --git a/src/emu/cpu/pic16c5x/pic16c5x.c b/src/devices/cpu/pic16c5x/pic16c5x.c
index 3acd46944f7..3acd46944f7 100644
--- a/src/emu/cpu/pic16c5x/pic16c5x.c
+++ b/src/devices/cpu/pic16c5x/pic16c5x.c
diff --git a/src/emu/cpu/pic16c5x/pic16c5x.h b/src/devices/cpu/pic16c5x/pic16c5x.h
index 5f45ca3bf33..5f45ca3bf33 100644
--- a/src/emu/cpu/pic16c5x/pic16c5x.h
+++ b/src/devices/cpu/pic16c5x/pic16c5x.h
diff --git a/src/emu/cpu/pic16c62x/16c62xdsm.c b/src/devices/cpu/pic16c62x/16c62xdsm.c
index 5bdd824dc16..5bdd824dc16 100644
--- a/src/emu/cpu/pic16c62x/16c62xdsm.c
+++ b/src/devices/cpu/pic16c62x/16c62xdsm.c
diff --git a/src/emu/cpu/pic16c62x/dis16c62x.c b/src/devices/cpu/pic16c62x/dis16c62x.c
index c87acd87018..c87acd87018 100644
--- a/src/emu/cpu/pic16c62x/dis16c62x.c
+++ b/src/devices/cpu/pic16c62x/dis16c62x.c
diff --git a/src/emu/cpu/pic16c62x/pic16c62x.c b/src/devices/cpu/pic16c62x/pic16c62x.c
index 2a38bcd5f93..2a38bcd5f93 100644
--- a/src/emu/cpu/pic16c62x/pic16c62x.c
+++ b/src/devices/cpu/pic16c62x/pic16c62x.c
diff --git a/src/emu/cpu/pic16c62x/pic16c62x.h b/src/devices/cpu/pic16c62x/pic16c62x.h
index f7ac6fd43ae..f7ac6fd43ae 100644
--- a/src/emu/cpu/pic16c62x/pic16c62x.h
+++ b/src/devices/cpu/pic16c62x/pic16c62x.h
diff --git a/src/emu/cpu/powerpc/drc_ops.c b/src/devices/cpu/powerpc/drc_ops.c
index cfe3614fb5a..cfe3614fb5a 100644
--- a/src/emu/cpu/powerpc/drc_ops.c
+++ b/src/devices/cpu/powerpc/drc_ops.c
diff --git a/src/emu/cpu/powerpc/drc_ops.h b/src/devices/cpu/powerpc/drc_ops.h
index 792cdd6260a..792cdd6260a 100644
--- a/src/emu/cpu/powerpc/drc_ops.h
+++ b/src/devices/cpu/powerpc/drc_ops.h
diff --git a/src/emu/cpu/powerpc/ppc.c b/src/devices/cpu/powerpc/ppc.c
index cb85522177d..cb85522177d 100644
--- a/src/emu/cpu/powerpc/ppc.c
+++ b/src/devices/cpu/powerpc/ppc.c
diff --git a/src/emu/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h
index 73bcb0b470b..73bcb0b470b 100644
--- a/src/emu/cpu/powerpc/ppc.h
+++ b/src/devices/cpu/powerpc/ppc.h
diff --git a/src/emu/cpu/powerpc/ppc403.inc b/src/devices/cpu/powerpc/ppc403.inc
index 054c2657142..054c2657142 100644
--- a/src/emu/cpu/powerpc/ppc403.inc
+++ b/src/devices/cpu/powerpc/ppc403.inc
diff --git a/src/emu/cpu/powerpc/ppc602.inc b/src/devices/cpu/powerpc/ppc602.inc
index 6b1998201f7..6b1998201f7 100644
--- a/src/emu/cpu/powerpc/ppc602.inc
+++ b/src/devices/cpu/powerpc/ppc602.inc
diff --git a/src/emu/cpu/powerpc/ppc603.inc b/src/devices/cpu/powerpc/ppc603.inc
index 114728d19ce..114728d19ce 100644
--- a/src/emu/cpu/powerpc/ppc603.inc
+++ b/src/devices/cpu/powerpc/ppc603.inc
diff --git a/src/emu/cpu/powerpc/ppc_dasm.c b/src/devices/cpu/powerpc/ppc_dasm.c
index d80f800c89b..d80f800c89b 100644
--- a/src/emu/cpu/powerpc/ppc_dasm.c
+++ b/src/devices/cpu/powerpc/ppc_dasm.c
diff --git a/src/emu/cpu/powerpc/ppc_mem.inc b/src/devices/cpu/powerpc/ppc_mem.inc
index 0f8851e4c5c..0f8851e4c5c 100644
--- a/src/emu/cpu/powerpc/ppc_mem.inc
+++ b/src/devices/cpu/powerpc/ppc_mem.inc
diff --git a/src/emu/cpu/powerpc/ppc_ops.h b/src/devices/cpu/powerpc/ppc_ops.h
index b44e92a016b..b44e92a016b 100644
--- a/src/emu/cpu/powerpc/ppc_ops.h
+++ b/src/devices/cpu/powerpc/ppc_ops.h
diff --git a/src/emu/cpu/powerpc/ppc_ops.inc b/src/devices/cpu/powerpc/ppc_ops.inc
index 86ccd8e2225..86ccd8e2225 100644
--- a/src/emu/cpu/powerpc/ppc_ops.inc
+++ b/src/devices/cpu/powerpc/ppc_ops.inc
diff --git a/src/emu/cpu/powerpc/ppccom.c b/src/devices/cpu/powerpc/ppccom.c
index 6f91b4a96e8..a98872029ec 100644
--- a/src/emu/cpu/powerpc/ppccom.c
+++ b/src/devices/cpu/powerpc/ppccom.c
@@ -2650,7 +2650,7 @@ void ppc_device::ppc4xx_spu_timer_reset()
attotime charperiod = clockperiod * (divisor * 16 * bpc);
m_spu.timer->adjust(charperiod, 0, charperiod);
if (PRINTF_SPU)
- printf("ppc4xx_spu_timer_reset: baud rate = %.0f\n", ATTOSECONDS_TO_HZ(charperiod.attoseconds) * bpc);
+ printf("ppc4xx_spu_timer_reset: baud rate = %.0f\n", ATTOSECONDS_TO_HZ(charperiod.attoseconds()) * bpc);
}
/* otherwise, disable the timer */
diff --git a/src/emu/cpu/powerpc/ppccom.h b/src/devices/cpu/powerpc/ppccom.h
index b978aa4101b..b978aa4101b 100644
--- a/src/emu/cpu/powerpc/ppccom.h
+++ b/src/devices/cpu/powerpc/ppccom.h
diff --git a/src/emu/cpu/powerpc/ppcdrc.c b/src/devices/cpu/powerpc/ppcdrc.c
index 088eab855aa..088eab855aa 100644
--- a/src/emu/cpu/powerpc/ppcdrc.c
+++ b/src/devices/cpu/powerpc/ppcdrc.c
diff --git a/src/emu/cpu/powerpc/ppcfe.c b/src/devices/cpu/powerpc/ppcfe.c
index 8ba5a90eb4e..8ba5a90eb4e 100644
--- a/src/emu/cpu/powerpc/ppcfe.c
+++ b/src/devices/cpu/powerpc/ppcfe.c
diff --git a/src/emu/cpu/powerpc/ppcfe.h b/src/devices/cpu/powerpc/ppcfe.h
index 5ba2f53dbb1..5ba2f53dbb1 100644
--- a/src/emu/cpu/powerpc/ppcfe.h
+++ b/src/devices/cpu/powerpc/ppcfe.h
diff --git a/src/emu/cpu/pps4/pps4.c b/src/devices/cpu/pps4/pps4.c
index 5be986f2c3d..5be986f2c3d 100644
--- a/src/emu/cpu/pps4/pps4.c
+++ b/src/devices/cpu/pps4/pps4.c
diff --git a/src/emu/cpu/pps4/pps4.h b/src/devices/cpu/pps4/pps4.h
index 8c115745cbb..8c115745cbb 100644
--- a/src/emu/cpu/pps4/pps4.h
+++ b/src/devices/cpu/pps4/pps4.h
diff --git a/src/emu/cpu/pps4/pps4dasm.c b/src/devices/cpu/pps4/pps4dasm.c
index 4ee5079ee91..4ee5079ee91 100644
--- a/src/emu/cpu/pps4/pps4dasm.c
+++ b/src/devices/cpu/pps4/pps4dasm.c
diff --git a/src/emu/cpu/psx/dismips.c b/src/devices/cpu/psx/dismips.c
index 76f67fba2cf..76f67fba2cf 100644
--- a/src/emu/cpu/psx/dismips.c
+++ b/src/devices/cpu/psx/dismips.c
diff --git a/src/emu/cpu/psx/dismips.mak b/src/devices/cpu/psx/dismips.mak
index 306d6f53788..306d6f53788 100644
--- a/src/emu/cpu/psx/dismips.mak
+++ b/src/devices/cpu/psx/dismips.mak
diff --git a/src/emu/cpu/psx/dma.c b/src/devices/cpu/psx/dma.c
index 5f3386a188e..5f3386a188e 100644
--- a/src/emu/cpu/psx/dma.c
+++ b/src/devices/cpu/psx/dma.c
diff --git a/src/emu/cpu/psx/dma.h b/src/devices/cpu/psx/dma.h
index 3e99583ca60..3e99583ca60 100644
--- a/src/emu/cpu/psx/dma.h
+++ b/src/devices/cpu/psx/dma.h
diff --git a/src/emu/cpu/psx/gte.c b/src/devices/cpu/psx/gte.c
index ce50afba6a4..ce50afba6a4 100644
--- a/src/emu/cpu/psx/gte.c
+++ b/src/devices/cpu/psx/gte.c
diff --git a/src/emu/cpu/psx/gte.h b/src/devices/cpu/psx/gte.h
index 3fc7075a81d..3fc7075a81d 100644
--- a/src/emu/cpu/psx/gte.h
+++ b/src/devices/cpu/psx/gte.h
diff --git a/src/emu/cpu/psx/irq.c b/src/devices/cpu/psx/irq.c
index 51b55cd2639..51b55cd2639 100644
--- a/src/emu/cpu/psx/irq.c
+++ b/src/devices/cpu/psx/irq.c
diff --git a/src/emu/cpu/psx/irq.h b/src/devices/cpu/psx/irq.h
index 041aa90f26c..041aa90f26c 100644
--- a/src/emu/cpu/psx/irq.h
+++ b/src/devices/cpu/psx/irq.h
diff --git a/src/emu/cpu/psx/mdec.c b/src/devices/cpu/psx/mdec.c
index 57c6b3393b4..57c6b3393b4 100644
--- a/src/emu/cpu/psx/mdec.c
+++ b/src/devices/cpu/psx/mdec.c
diff --git a/src/emu/cpu/psx/mdec.h b/src/devices/cpu/psx/mdec.h
index 097f43c0d5d..097f43c0d5d 100644
--- a/src/emu/cpu/psx/mdec.h
+++ b/src/devices/cpu/psx/mdec.h
diff --git a/src/emu/cpu/psx/psx.c b/src/devices/cpu/psx/psx.c
index a60a1204b9f..a262c9bd42c 100644
--- a/src/emu/cpu/psx/psx.c
+++ b/src/devices/cpu/psx/psx.c
@@ -1417,7 +1417,7 @@ void psxcpu_device::update_rom_config()
}
}
- if( window_size < max_window_size )
+ if( window_size < max_window_size && !m_disable_rom_berr)
{
m_program->install_readwrite_handler( 0x1fc00000 + window_size, 0x1fffffff, read32_delegate( FUNC( psxcpu_device::berr_r ), this ), write32_delegate( FUNC( psxcpu_device::berr_w ), this ) );
m_program->install_readwrite_handler( 0x9fc00000 + window_size, 0x9fffffff, read32_delegate( FUNC( psxcpu_device::berr_r ), this ), write32_delegate( FUNC( psxcpu_device::berr_w ), this ) );
@@ -1756,6 +1756,7 @@ psxcpu_device::psxcpu_device( const machine_config &mconfig, device_type type, c
m_cd_write_handler( *this ),
m_ram( *this, "ram" )
{
+ m_disable_rom_berr = false;
}
cxd8530aq_device::cxd8530aq_device( const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock )
@@ -3374,6 +3375,11 @@ WRITE8_MEMBER( psxcpu_device::cd_w )
m_cd_write_handler( space, offset, data, mem_mask );
}
+void psxcpu_device::set_disable_rom_berr(bool mode)
+{
+ m_disable_rom_berr = mode;
+}
+
static MACHINE_CONFIG_FRAGMENT( psx )
MCFG_DEVICE_ADD( "irq", PSX_IRQ, 0 )
MCFG_PSX_IRQ_HANDLER( INPUTLINE( DEVICE_SELF, PSXCPU_IRQ0 ) )
diff --git a/src/emu/cpu/psx/psx.h b/src/devices/cpu/psx/psx.h
index 4f5895bf4e9..21b6d8adc55 100644
--- a/src/emu/cpu/psx/psx.h
+++ b/src/devices/cpu/psx/psx.h
@@ -128,6 +128,8 @@ enum
devcb = &psxcpu_device::set_cd_read_handler(*device, DEVCB_##_devcb);
#define MCFG_PSX_CD_WRITE_HANDLER(_devcb) \
devcb = &psxcpu_device::set_cd_write_handler(*device, DEVCB_##_devcb);
+#define MCFG_PSX_DISABLE_ROM_BERR \
+ downcast<psxcpu_device *>(device)->set_disable_rom_berr(true);
//**************************************************************************
// TYPE DEFINITIONS
@@ -196,6 +198,7 @@ public:
DECLARE_READ32_MEMBER( com_delay_r );
static psxcpu_device *getcpu( device_t &device, const char *cputag );
+ void set_disable_rom_berr(bool mode);
protected:
psxcpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
@@ -346,6 +349,7 @@ protected:
devcb_write8 m_cd_write_handler;
required_device<ram_device> m_ram;
memory_region *m_rom;
+ bool m_disable_rom_berr;
private:
// disassembler interface
diff --git a/src/emu/cpu/psx/psxdasm.c b/src/devices/cpu/psx/psxdasm.c
index dabb4da9413..dabb4da9413 100644
--- a/src/emu/cpu/psx/psxdasm.c
+++ b/src/devices/cpu/psx/psxdasm.c
diff --git a/src/emu/cpu/psx/rcnt.c b/src/devices/cpu/psx/rcnt.c
index 31d3eb468e9..31d3eb468e9 100644
--- a/src/emu/cpu/psx/rcnt.c
+++ b/src/devices/cpu/psx/rcnt.c
diff --git a/src/emu/cpu/psx/rcnt.h b/src/devices/cpu/psx/rcnt.h
index 4cdae90276a..4cdae90276a 100644
--- a/src/emu/cpu/psx/rcnt.h
+++ b/src/devices/cpu/psx/rcnt.h
diff --git a/src/emu/cpu/psx/sio.c b/src/devices/cpu/psx/sio.c
index abf3c4b8bf1..abf3c4b8bf1 100644
--- a/src/emu/cpu/psx/sio.c
+++ b/src/devices/cpu/psx/sio.c
diff --git a/src/emu/cpu/psx/sio.h b/src/devices/cpu/psx/sio.h
index ebae81d5a93..ebae81d5a93 100644
--- a/src/emu/cpu/psx/sio.h
+++ b/src/devices/cpu/psx/sio.h
diff --git a/src/emu/cpu/rsp/clamp.h b/src/devices/cpu/rsp/clamp.h
index 5b69b746a7d..5b69b746a7d 100644
--- a/src/emu/cpu/rsp/clamp.h
+++ b/src/devices/cpu/rsp/clamp.h
diff --git a/src/emu/cpu/rsp/rsp.c b/src/devices/cpu/rsp/rsp.c
index edea79ac688..6419282a598 100644
--- a/src/emu/cpu/rsp/rsp.c
+++ b/src/devices/cpu/rsp/rsp.c
@@ -801,9 +801,9 @@ void rsp_device::execute_run()
m_rsp_state->icount = MIN(m_rsp_state->icount, 0);
}
/*m_cop2->dump(op);
- if (((op >> 26) & 0x3f) == 0x3a)
- {
- m_cop2->dump_dmem();
- }*/
+ if (((op >> 26) & 0x3f) == 0x3a)
+ {
+ m_cop2->dump_dmem();
+ }*/
}
}
diff --git a/src/emu/cpu/rsp/rsp.h b/src/devices/cpu/rsp/rsp.h
index 6bc588c2f01..6bc588c2f01 100644
--- a/src/emu/cpu/rsp/rsp.h
+++ b/src/devices/cpu/rsp/rsp.h
diff --git a/src/emu/cpu/rsp/rsp_dasm.c b/src/devices/cpu/rsp/rsp_dasm.c
index 2f455567588..bf56b240652 100644
--- a/src/emu/cpu/rsp/rsp_dasm.c
+++ b/src/devices/cpu/rsp/rsp_dasm.c
@@ -8,12 +8,21 @@
#include "emu.h"
+/*static const char *const reg[32] =
+{
+ "0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
+ "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
+ "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
+ "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31"
+};
+*/
+
static const char *const reg[32] =
{
- "0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
- "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
- "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
- "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31"
+ "$0", "$at", "$v0", "$v1", "$a0", "$a1", "$a2", "$a3",
+ "$t0", "$t1", "$t2", "$t3", "$t4", "$t5", "$t6", "$t7",
+ "$s0", "$s1", "$s2", "$s3", "$s4", "$s5", "$s6", "$s7",
+ "$t8", "$t9", "$k0", "$k1", "$gp", "$sp", "$fp", "$ra"
};
static const char *const vreg[32] =
diff --git a/src/emu/cpu/rsp/rspcp2.c b/src/devices/cpu/rsp/rspcp2.c
index cde6f3b5be8..ab6afed4cbc 100644
--- a/src/emu/cpu/rsp/rspcp2.c
+++ b/src/devices/cpu/rsp/rspcp2.c
@@ -206,9 +206,9 @@ const rsp_cop2::vec_helpers_t rsp_cop2::m_vec_helpers = {
{ 0xffff, 0xffff, 0x0000, 0x0000 }, // L
{ 0xffff, 0xffff, 0xffff, 0xffff } // D
},
- { // word_reverse
- 0x0203, 0x0001, 0x0607, 0x0405, 0x0a0b, 0x0809, 0x0e0f, 0x0c0d
- }
+ { // word_reverse
+ 0x0203, 0x0001, 0x0607, 0x0405, 0x0a0b, 0x0809, 0x0e0f, 0x0c0d
+ }
};
#if !(defined(__SSSE3__) || defined(_MSC_VER))
@@ -322,7 +322,7 @@ void rsp_cop2::vec_load_group1(UINT32 addr, UINT32 element, UINT16 *regp, rsp_ve
dqm = _mm_shuffle_epi8(dqm, ekey);
#endif
- // Align the data to the DQM so we can mask it in.
+ // Align the data to the DQM so we can mask it in.
#if !(defined(__SSSE3__) || defined(_MSC_VER))
data = sse2_pshufb(data, m_vec_helpers.ror_b2l_keys[ror & 0xF]);
#else
@@ -330,7 +330,7 @@ void rsp_cop2::vec_load_group1(UINT32 addr, UINT32 element, UINT16 *regp, rsp_ve
data = _mm_shuffle_epi8(data, ekey);
#endif
- // Mask and mux in the data.
+ // Mask and mux in the data.
#if (defined(__SSE4_1__) || defined(_MSC_VER))
reg = _mm_blendv_epi8(reg, data, dqm);
#else
@@ -377,7 +377,7 @@ void rsp_cop2::vec_load_group2(UINT32 addr, UINT32 element, UINT16 *regp, rsp_ve
}
// "Unpack" the data.
- rsp_vec_t zero = _mm_setzero_si128();
+ rsp_vec_t zero = _mm_setzero_si128();
data = _mm_unpacklo_epi8(zero, data);
if (request_type != RSP_MEM_REQUEST_PACK)
@@ -385,10 +385,10 @@ void rsp_cop2::vec_load_group2(UINT32 addr, UINT32 element, UINT16 *regp, rsp_ve
data = _mm_srli_epi16(data, 1);
}
- data = _mm_shufflehi_epi16(data, _MM_SHUFFLE(0, 1, 2, 3));
- data = _mm_shufflelo_epi16(data, _MM_SHUFFLE(0, 1, 2, 3));
+ data = _mm_shufflehi_epi16(data, _MM_SHUFFLE(0, 1, 2, 3));
+ data = _mm_shufflelo_epi16(data, _MM_SHUFFLE(0, 1, 2, 3));
- _mm_store_si128((rsp_vec_t *) regp, data);
+ _mm_store_si128((rsp_vec_t *) regp, data);
}
//
@@ -403,7 +403,7 @@ void rsp_cop2::vec_load_group4(UINT32 addr, UINT32 element, UINT16 *regp, rsp_ve
{
UINT32 aligned_addr = addr & 0xFF0;
UINT32 offset = addr & 0xF;
- static UINT32 call_count = 0;
+ static UINT32 call_count = 0;
rsp_vec_t data = _mm_load_si128((rsp_vec_t *) (m_rsp.get_dmem() + aligned_addr));
@@ -439,7 +439,7 @@ void rsp_cop2::vec_load_group4(UINT32 addr, UINT32 element, UINT16 *regp, rsp_ve
_mm_store_si128((rsp_vec_t *) regp, data);
- call_count++;
+ call_count++;
}
//
@@ -542,7 +542,7 @@ void rsp_cop2::vec_store_group2(UINT32 addr, UINT32 element, UINT16 *regp, rsp_v
reg = _mm_shuffle_epi8(reg, dkey);
#endif
- // TODO: Always store in 8-byte chunks to emulate wraparound.
+ // TODO: Always store in 8-byte chunks to emulate wraparound.
_mm_storel_epi64((rsp_vec_t *) (m_rsp.get_dmem() + addr), reg);
}
@@ -574,7 +574,7 @@ void rsp_cop2::vec_store_group4(UINT32 addr, UINT32 element, UINT16 *regp, rsp_v
reg = _mm_shuffle_epi8(reg, ekey);
#endif
- // Mask and mux out the data, write.
+ // Mask and mux out the data, write.
#if (defined(__SSE4_1__) || defined(_MSC_VER))
data = _mm_blendv_epi8(data, reg, dqm);
#else
@@ -702,10 +702,10 @@ rsp_cop2::rsp_cop2(rsp_device &rsp, running_machine &machine)
memset(m_vflag, 0, sizeof(m_vflag));
memset(m_accum, 0, sizeof(m_accum));
#if USE_SIMD
- memset(&m_acc, 0, sizeof(m_acc));
- memset(&m_flags, 0, sizeof(aligned_rsp_2vect_t) * 3);
- m_div_out = 0;
- m_div_in = 0;
+ memset(&m_acc, 0, sizeof(m_acc));
+ memset(&m_flags, 0, sizeof(aligned_rsp_2vect_t) * 3);
+ m_div_out = 0;
+ m_div_in = 0;
#endif
m_rspcop2_state = (internal_rspcop2_state *)rsp.m_cache.alloc_near(sizeof(internal_rspcop2_state));
}
@@ -877,7 +877,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
//
// Load 1 byte to vector byte index
- //printf("LBV ");
+ //printf("LBV ");
#if USE_SIMD
vec_lbdlsv_sbdlsv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -896,7 +896,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
//
// Loads 2 bytes starting from vector byte index
- //printf("LSV ");
+ //printf("LSV ");
#if USE_SIMD
vec_lbdlsv_sbdlsv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -922,7 +922,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
//
// Loads 4 bytes starting from vector byte index
- //printf("LLV ");
+ //printf("LLV ");
#if USE_SIMD
vec_lbdlsv_sbdlsv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -948,7 +948,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
//
// Loads 8 bytes starting from vector byte index
- //printf("LDV ");
+ //printf("LDV ");
#if USE_SIMD
vec_lbdlsv_sbdlsv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -974,7 +974,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
//
// Loads up to 16 bytes starting from vector byte index
- //printf("LQV ");
+ //printf("LQV ");
#if USE_SIMD
vec_lqrv_sqrv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1001,7 +1001,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
//
// Stores up to 16 bytes starting from right side until 16-byte boundary
- //printf("LRV ");
+ //printf("LRV ");
#if USE_SIMD
vec_lqrv_sqrv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1029,7 +1029,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
//
// Loads a byte as the upper 8 bits of each element
- //printf("LPV ");
+ //printf("LPV ");
#if USE_SIMD
vec_lfhpuv_sfhpuv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1052,7 +1052,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
//
// Loads a byte as the bits 14-7 of each element
- //printf("LUV ");
+ //printf("LUV ");
#if USE_SIMD
vec_lfhpuv_sfhpuv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1075,7 +1075,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
//
// Loads a byte as the bits 14-7 of each element, with 2-byte stride
- //printf("LHV ");
+ //printf("LHV ");
#if USE_SIMD
vec_lfhpuv_sfhpuv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1098,7 +1098,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
//
// Loads a byte as the bits 14-7 of upper or lower quad, with 4-byte stride
- //printf("LFV ");
+ //printf("LFV ");
#if USE_SIMD
vec_lfhpuv_sfhpuv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1127,7 +1127,7 @@ void rsp_cop2::handle_lwc2(UINT32 op)
// Loads the full 128-bit vector starting from vector byte index and wrapping to index 0
// after byte index 15
- //printf("LWV ");
+ //printf("LWV ");
#if USE_SIMD
#else
ea = (base) ? m_rsp.m_rsp_state->r[base] + (offset * 16) : (offset * 16);
@@ -1154,15 +1154,15 @@ void rsp_cop2::handle_lwc2(UINT32 op)
// FIXME: has a small problem with odd indices
- //printf("LTV ");
+ //printf("LTV ");
#if 0
#else
- INT32 index = (op >> 7) & 0xf;
- INT32 offset = (op & 0x7f);
- if (offset & 0x40)
- offset |= 0xffffffc0;
+ INT32 index = (op >> 7) & 0xf;
+ INT32 offset = (op & 0x7f);
+ if (offset & 0x40)
+ offset |= 0xffffffc0;
- INT32 vs = (op >> 16) & 0x1f;
+ INT32 vs = (op >> 16) & 0x1f;
INT32 ve = vs + 8;
if (ve > 32)
ve = 32;
@@ -1225,7 +1225,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
//
// Stores 1 byte from vector byte index
- //printf("SBV ");
+ //printf("SBV ");
#if USE_SIMD
vec_lbdlsv_sbdlsv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1244,7 +1244,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
//
// Stores 2 bytes starting from vector byte index
- //printf("SSV ");
+ //printf("SSV ");
#if USE_SIMD
vec_lbdlsv_sbdlsv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1270,7 +1270,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
//
// Stores 4 bytes starting from vector byte index
- //printf("SLV ");
+ //printf("SLV ");
#if USE_SIMD
vec_lbdlsv_sbdlsv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1296,7 +1296,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
//
// Stores 8 bytes starting from vector byte index
- //printf("SDV ");
+ //printf("SDV ");
#if USE_SIMD
vec_lbdlsv_sbdlsv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1322,7 +1322,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
//
// Stores up to 16 bytes starting from vector byte index until 16-byte boundary
- //printf("SQV ");
+ //printf("SQV ");
#if USE_SIMD
vec_lqrv_sqrv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1348,7 +1348,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
//
// Stores up to 16 bytes starting from right side until 16-byte boundary
- //printf("SRV ");
+ //printf("SRV ");
#if USE_SIMD
vec_lqrv_sqrv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1377,7 +1377,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
//
// Stores upper 8 bits of each element
- //printf("SPV ");
+ //printf("SPV ");
#if USE_SIMD
vec_lfhpuv_sfhpuv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1409,7 +1409,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
//
// Stores bits 14-7 of each element
- //printf("SUV ");
+ //printf("SUV ");
#if USE_SIMD
vec_lfhpuv_sfhpuv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1441,7 +1441,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
//
// Stores bits 14-7 of each element, with 2-byte stride
- //printf("SHV ");
+ //printf("SHV ");
#if USE_SIMD
vec_lfhpuv_sfhpuv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1470,7 +1470,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
// FIXME: only works for index 0 and index 8
- //printf("SFV ");
+ //printf("SFV ");
#if USE_SIMD
vec_lfhpuv_sfhpuv(op, m_rsp.m_rsp_state->r[base]);
#else
@@ -1500,7 +1500,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
// Stores the full 128-bit vector starting from vector byte index and wrapping to index 0
// after byte index 15
- //printf("SWV ");
+ //printf("SWV ");
#if USE_SIMD
#else
ea = (base) ? m_rsp.m_rsp_state->r[base] + (offset * 16) : (offset * 16);
@@ -1528,13 +1528,13 @@ void rsp_cop2::handle_swc2(UINT32 op)
//
// Stores one element from maximum of 8 vectors, while incrementing element index
- //printf("STV ");
+ //printf("STV ");
#if 0
#else
- INT32 index = (op >> 7) & 0xf;
- INT32 offset = (op & 0x7f);
- if (offset & 0x40)
- offset |= 0xffffffc0;
+ INT32 index = (op >> 7) & 0xf;
+ INT32 offset = (op & 0x7f);
+ if (offset & 0x40)
+ offset |= 0xffffffc0;
INT32 vs = (op >> 16) & 0x1f;
INT32 ve = vs + 8;
@@ -1548,7 +1548,7 @@ void rsp_cop2::handle_swc2(UINT32 op)
INT32 eaoffset = (ea & 0xf) + (element * 2);
ea &= ~0xf;
- for (INT32 i = vs; i < ve; i++)
+ for (INT32 i = vs; i < ve; i++)
{
m_rsp.WRITE16(ea + (eaoffset & 0xf), VREG_S(i, element & 0x7));
eaoffset += 2;
@@ -1654,7 +1654,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Multiplies signed integer by signed integer * 2
- //printf("MULF ");
+ //printf("MULF ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -1706,7 +1706,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// ------------------------------------------------------
//
- //printf("MULU ");
+ //printf("MULU ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -1762,7 +1762,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// Stores the higher 16 bits of the 32-bit result to accumulator
// The low slice of accumulator is stored into destination element
- //printf("MUDL ");
+ //printf("MUDL ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -1809,7 +1809,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// The result is stored into accumulator
// The middle slice of accumulator is stored into destination element
- //printf("MUDM ");
+ //printf("MUDM ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -1857,7 +1857,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// The result is stored into accumulator
// The low slice of accumulator is stored into destination element
- //printf("MUDN ");
+ //printf("MUDN ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo = read_acc_lo(acc);
@@ -1902,7 +1902,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// The result is stored into highest 32 bits of accumulator, the low slice is zero
// The highest 32 bits of accumulator is saturated into destination element
- //printf("MUDH ");
+ //printf("MUDH ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -1950,7 +1950,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// Multiplies signed integer by signed integer * 2
// The result is added to accumulator
- //printf("MACF ");
+ //printf("MACF ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -2001,7 +2001,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// ------------------------------------------------------
//
- //printf("MACU ");
+ //printf("MACU ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -2071,7 +2071,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// Adds the higher 16 bits of the 32-bit result to accumulator
// The low slice of accumulator is stored into destination element
- //printf("MADL ");
+ //printf("MADL ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -2120,7 +2120,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// The result is added into accumulator
// The middle slice of accumulator is stored into destination element
- //printf("MADM ");
+ //printf("MADM ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -2171,7 +2171,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// The result is added into accumulator
// The low slice of accumulator is stored into destination element
- //printf("MADN ");
+ //printf("MADN ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -2225,7 +2225,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// The result is added into highest 32 bits of accumulator, the low slice is zero
// The highest 32 bits of accumulator is saturated into destination element
- //printf("MADH ");
+ //printf("MADH ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t acc_lo, acc_mid, acc_hi;
@@ -2275,7 +2275,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// TODO: check VS2REG == VDREG
- //printf("ADD ");
+ //printf("ADD ");
#if USE_SIMD
rsp_vec_t acc_lo;
UINT16 *acc = m_acc.s;
@@ -2321,7 +2321,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// TODO: check VS2REG == VDREG
- //printf("SUB ");
+ //printf("SUB ");
#if USE_SIMD
rsp_vec_t acc_lo;
UINT16 *acc = m_acc.s;
@@ -2367,7 +2367,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// Changes the sign of source register 2 if source register 1 is negative and stores
// the result to destination register
- //printf("ABS ");
+ //printf("ABS ");
#if USE_SIMD
rsp_vec_t acc_lo;
UINT16 *acc = m_acc.s;
@@ -2423,7 +2423,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// TODO: check VS2REG = VDREG
- //printf("ADDC ");
+ //printf("ADDC ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t sn;
@@ -2471,7 +2471,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// TODO: check VS2REG = VDREG
- //printf("SUBC ");
+ //printf("SUBC ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t eq, sn;
@@ -2521,7 +2521,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Stores high, middle or low slice of accumulator to destination vector
- //printf("SAW ");
+ //printf("SAW ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
switch (EL)
@@ -2586,7 +2586,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// Sets compare flags if elements in VS1 are less than VS2
// Moves the element in VS2 to destination vector
- //printf("LT ");
+ //printf("LT ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t le;
@@ -2655,7 +2655,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// Sets compare flags if elements in VS1 are equal with VS2
// Moves the element in VS2 to destination vector
- //printf("EQ ");
+ //printf("EQ ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t le;
@@ -2712,7 +2712,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// Sets compare flags if elements in VS1 are not equal with VS2
// Moves the element in VS2 to destination vector
- //printf("NE ");
+ //printf("NE ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t le;
@@ -2770,7 +2770,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
// Sets compare flags if elements in VS1 are greater or equal with VS2
// Moves the element in VS2 to destination vector
- //printf("GE ");
+ //printf("GE ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t le;
@@ -2827,7 +2827,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Vector clip low
- //printf("CL ");
+ //printf("CL ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
@@ -2944,7 +2944,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Vector clip high
- //printf("CH ");
+ //printf("CH ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t ge, le, sign, eq, vce;
@@ -3047,7 +3047,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Vector clip reverse
- //printf("CR ");
+ //printf("CR ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t ge, le;
@@ -3125,7 +3125,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Merges two vectors according to compare flags
- //printf("MRG ");
+ //printf("MRG ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
rsp_vec_t le = read_vcc_lo(m_flags[RSP_VCC].s);
@@ -3166,7 +3166,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Bitwise AND of two vector registers
- //printf("AND ");
+ //printf("AND ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
@@ -3196,7 +3196,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Bitwise NOT AND of two vector registers
- //printf("NAND ");
+ //printf("NAND ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
@@ -3226,7 +3226,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Bitwise OR of two vector registers
- //printf("OR ");
+ //printf("OR ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
@@ -3256,7 +3256,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Bitwise NOT OR of two vector registers
- //printf("NOR ");
+ //printf("NOR ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
@@ -3286,7 +3286,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Bitwise XOR of two vector registers
- //printf("XOR ");
+ //printf("XOR ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
@@ -3316,7 +3316,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Bitwise NOT XOR of two vector registers
- //printf("NXOR ");
+ //printf("NXOR ");
#if USE_SIMD
UINT16 *acc = m_acc.s;
@@ -3347,7 +3347,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Calculates reciprocal
- //printf("RCP ");
+ //printf("RCP ");
#if USE_SIMD
write_acc_lo(m_acc.s, vec_load_and_shuffle_operand(m_v[VS2REG].s, EL));
@@ -3418,7 +3418,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Calculates reciprocal low part
- //printf("RCPL ");
+ //printf("RCPL ");
#if USE_SIMD
write_acc_lo(m_acc.s, vec_load_and_shuffle_operand(m_v[VS2REG].s, EL));
@@ -3505,7 +3505,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Calculates reciprocal high part
- //printf("RCPH ");
+ //printf("RCPH ");
#if USE_SIMD
write_acc_lo(m_acc.s, vec_load_and_shuffle_operand(m_v[VS2REG].s, EL));
@@ -3537,7 +3537,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Moves element from vector to destination vector
- //printf("MOV ");
+ //printf("MOV ");
#if USE_SIMD
write_acc_lo(m_acc.s, vec_load_and_shuffle_operand(m_v[VS2REG].s, EL));
m_v[VDREG].v = vec_vmov(VS2REG, EL, VDREG, VS1REG);
@@ -3561,7 +3561,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Calculates reciprocal square-root
- //printf("RSQ ");
+ //printf("RSQ ");
#if USE_SIMD
write_acc_lo(m_acc.s, vec_load_and_shuffle_operand(m_v[VS2REG].s, EL));
@@ -3633,7 +3633,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Calculates reciprocal square-root low part
- //printf("RSQL ");
+ //printf("RSQL ");
#if USE_SIMD
write_acc_lo(m_acc.s, vec_load_and_shuffle_operand(m_v[VS2REG].s, EL));
@@ -3723,7 +3723,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Calculates reciprocal square-root high part
- //printf("RSQH ");
+ //printf("RSQH ");
#if USE_SIMD
write_acc_lo(m_acc.s, vec_load_and_shuffle_operand(m_v[VS2REG].s, EL));
@@ -3754,7 +3754,7 @@ void rsp_cop2::handle_vector_ops(UINT32 op)
//
// Vector null instruction
- //printf("NOP ");
+ //printf("NOP ");
break;
}
@@ -3777,7 +3777,7 @@ void rsp_cop2::handle_cop2(UINT32 op)
// | 010010 | 00000 | TTTTT | DDDDD | IIII | 0000000 |
// ---------------------------------------------------
//
- //printf("MFC2 ");
+ //printf("MFC2 ");
int el = (op >> 7) & 0xf;
UINT16 b1 = VREG_B(RDREG, (el+0) & 0xf);
UINT16 b2 = VREG_B(RDREG, (el+1) & 0xf);
@@ -3792,15 +3792,15 @@ void rsp_cop2::handle_cop2(UINT32 op)
// | 010010 | 00010 | TTTTT | DDDDD | 00000000000 |
// ------------------------------------------------
//
- //printf("CFC2 ");
+ //printf("CFC2 ");
if (RTREG)
{
#if USE_SIMD
- INT32 src = RDREG & 3;
- if (src == 3) {
- src = 2;
- }
- RTVAL = get_flags(m_flags[src].s);
+ INT32 src = RDREG & 3;
+ if (src == 3) {
+ src = 2;
+ }
+ RTVAL = get_flags(m_flags[src].s);
#else
switch(RDREG)
{
@@ -3865,7 +3865,7 @@ void rsp_cop2::handle_cop2(UINT32 op)
// | 010010 | 00100 | TTTTT | DDDDD | IIII | 0000000 |
// ---------------------------------------------------
//
- //printf("MTC2 ");
+ //printf("MTC2 ");
int el = (op >> 7) & 0xf;
W_VREG_B(RDREG, (el+0) & 0xf, (RTVAL >> 8) & 0xff);
W_VREG_B(RDREG, (el+1) & 0xf, (RTVAL >> 0) & 0xff);
@@ -3966,7 +3966,7 @@ void rsp_cop2::handle_cop2(UINT32 op)
case 0x10: case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17:
case 0x18: case 0x19: case 0x1a: case 0x1b: case 0x1c: case 0x1d: case 0x1e: case 0x1f:
{
- //printf("V");
+ //printf("V");
handle_vector_ops(op);
break;
}
@@ -4185,38 +4185,38 @@ void rsp_cop2::dump(UINT32 op)
}
#if USE_SIMD
- printf("acc_h: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_acc.s[0], m_acc.s[1], m_acc.s[2], m_acc.s[3], m_acc.s[4], m_acc.s[5], m_acc.s[6], m_acc.s[7]);
- printf("acc_m: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_acc.s[8], m_acc.s[9], m_acc.s[10], m_acc.s[11], m_acc.s[12], m_acc.s[13], m_acc.s[14], m_acc.s[15]);
- printf("acc_l: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_acc.s[16], m_acc.s[17], m_acc.s[18], m_acc.s[19], m_acc.s[20], m_acc.s[21], m_acc.s[22], m_acc.s[23]);
- printf("vcc_hi: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_flags[RSP_VCC].s[0], m_flags[RSP_VCC].s[1], m_flags[RSP_VCC].s[2], m_flags[RSP_VCC].s[3], m_flags[RSP_VCC].s[4], m_flags[RSP_VCC].s[5], m_flags[RSP_VCC].s[6], m_flags[RSP_VCC].s[7]);
- printf("vcc_lo: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_flags[RSP_VCC].s[8], m_flags[RSP_VCC].s[9], m_flags[RSP_VCC].s[10], m_flags[RSP_VCC].s[11], m_flags[RSP_VCC].s[12], m_flags[RSP_VCC].s[13], m_flags[RSP_VCC].s[14], m_flags[RSP_VCC].s[15]);
- printf("vco_hi: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_flags[RSP_VCO].s[0], m_flags[RSP_VCO].s[1], m_flags[RSP_VCO].s[2], m_flags[RSP_VCO].s[3], m_flags[RSP_VCO].s[4], m_flags[RSP_VCO].s[5], m_flags[RSP_VCO].s[6], m_flags[RSP_VCO].s[7]);
- printf("vco_lo: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_flags[RSP_VCO].s[8], m_flags[RSP_VCO].s[9], m_flags[RSP_VCO].s[10], m_flags[RSP_VCO].s[11], m_flags[RSP_VCO].s[12], m_flags[RSP_VCO].s[13], m_flags[RSP_VCO].s[14], m_flags[RSP_VCO].s[15]);
- printf("vce: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_flags[RSP_VCE].s[0], m_flags[RSP_VCE].s[1], m_flags[RSP_VCE].s[2], m_flags[RSP_VCE].s[3], m_flags[RSP_VCE].s[4], m_flags[RSP_VCE].s[5], m_flags[RSP_VCE].s[6], m_flags[RSP_VCE].s[7]);
+ printf("acc_h: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_acc.s[0], m_acc.s[1], m_acc.s[2], m_acc.s[3], m_acc.s[4], m_acc.s[5], m_acc.s[6], m_acc.s[7]);
+ printf("acc_m: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_acc.s[8], m_acc.s[9], m_acc.s[10], m_acc.s[11], m_acc.s[12], m_acc.s[13], m_acc.s[14], m_acc.s[15]);
+ printf("acc_l: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_acc.s[16], m_acc.s[17], m_acc.s[18], m_acc.s[19], m_acc.s[20], m_acc.s[21], m_acc.s[22], m_acc.s[23]);
+ printf("vcc_hi: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_flags[RSP_VCC].s[0], m_flags[RSP_VCC].s[1], m_flags[RSP_VCC].s[2], m_flags[RSP_VCC].s[3], m_flags[RSP_VCC].s[4], m_flags[RSP_VCC].s[5], m_flags[RSP_VCC].s[6], m_flags[RSP_VCC].s[7]);
+ printf("vcc_lo: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_flags[RSP_VCC].s[8], m_flags[RSP_VCC].s[9], m_flags[RSP_VCC].s[10], m_flags[RSP_VCC].s[11], m_flags[RSP_VCC].s[12], m_flags[RSP_VCC].s[13], m_flags[RSP_VCC].s[14], m_flags[RSP_VCC].s[15]);
+ printf("vco_hi: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_flags[RSP_VCO].s[0], m_flags[RSP_VCO].s[1], m_flags[RSP_VCO].s[2], m_flags[RSP_VCO].s[3], m_flags[RSP_VCO].s[4], m_flags[RSP_VCO].s[5], m_flags[RSP_VCO].s[6], m_flags[RSP_VCO].s[7]);
+ printf("vco_lo: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_flags[RSP_VCO].s[8], m_flags[RSP_VCO].s[9], m_flags[RSP_VCO].s[10], m_flags[RSP_VCO].s[11], m_flags[RSP_VCO].s[12], m_flags[RSP_VCO].s[13], m_flags[RSP_VCO].s[14], m_flags[RSP_VCO].s[15]);
+ printf("vce: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_flags[RSP_VCE].s[0], m_flags[RSP_VCE].s[1], m_flags[RSP_VCE].s[2], m_flags[RSP_VCE].s[3], m_flags[RSP_VCE].s[4], m_flags[RSP_VCE].s[5], m_flags[RSP_VCE].s[6], m_flags[RSP_VCE].s[7]);
#else
- printf("acc_h: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", ACCUM_H(0), ACCUM_H(1), ACCUM_H(2), ACCUM_H(3), ACCUM_H(4), ACCUM_H(5), ACCUM_H(6), ACCUM_H(7));
- printf("acc_m: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", ACCUM_M(0), ACCUM_M(1), ACCUM_M(2), ACCUM_M(3), ACCUM_M(4), ACCUM_M(5), ACCUM_M(6), ACCUM_M(7));
- printf("acc_l: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", ACCUM_L(0), ACCUM_L(1), ACCUM_L(2), ACCUM_L(3), ACCUM_L(4), ACCUM_L(5), ACCUM_L(6), ACCUM_L(7));
- printf("vcc_hi: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_vflag[4][0], m_vflag[4][1], m_vflag[4][2], m_vflag[4][3], m_vflag[4][4], m_vflag[4][5], m_vflag[4][6], m_vflag[4][7]);
- printf("vcc_lo: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_vflag[1][0], m_vflag[1][1], m_vflag[1][2], m_vflag[1][3], m_vflag[1][4], m_vflag[1][5], m_vflag[1][6], m_vflag[1][7]);
- printf("vco_hi: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_vflag[3][0], m_vflag[3][1], m_vflag[3][2], m_vflag[3][3], m_vflag[3][4], m_vflag[3][5], m_vflag[3][6], m_vflag[3][7]);
- printf("vco_lo: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_vflag[0][0], m_vflag[0][1], m_vflag[0][2], m_vflag[0][3], m_vflag[0][4], m_vflag[0][5], m_vflag[0][6], m_vflag[0][7]);
- printf("vce: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_vflag[2][0], m_vflag[2][1], m_vflag[2][2], m_vflag[2][3], m_vflag[2][4], m_vflag[2][5], m_vflag[2][6], m_vflag[2][7]);
+ printf("acc_h: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", ACCUM_H(0), ACCUM_H(1), ACCUM_H(2), ACCUM_H(3), ACCUM_H(4), ACCUM_H(5), ACCUM_H(6), ACCUM_H(7));
+ printf("acc_m: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", ACCUM_M(0), ACCUM_M(1), ACCUM_M(2), ACCUM_M(3), ACCUM_M(4), ACCUM_M(5), ACCUM_M(6), ACCUM_M(7));
+ printf("acc_l: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", ACCUM_L(0), ACCUM_L(1), ACCUM_L(2), ACCUM_L(3), ACCUM_L(4), ACCUM_L(5), ACCUM_L(6), ACCUM_L(7));
+ printf("vcc_hi: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_vflag[4][0], m_vflag[4][1], m_vflag[4][2], m_vflag[4][3], m_vflag[4][4], m_vflag[4][5], m_vflag[4][6], m_vflag[4][7]);
+ printf("vcc_lo: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_vflag[1][0], m_vflag[1][1], m_vflag[1][2], m_vflag[1][3], m_vflag[1][4], m_vflag[1][5], m_vflag[1][6], m_vflag[1][7]);
+ printf("vco_hi: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_vflag[3][0], m_vflag[3][1], m_vflag[3][2], m_vflag[3][3], m_vflag[3][4], m_vflag[3][5], m_vflag[3][6], m_vflag[3][7]);
+ printf("vco_lo: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_vflag[0][0], m_vflag[0][1], m_vflag[0][2], m_vflag[0][3], m_vflag[0][4], m_vflag[0][5], m_vflag[0][6], m_vflag[0][7]);
+ printf("vce: %04x|%04x|%04x|%04x|%04x|%04x|%04x|%04x\n", m_vflag[2][0], m_vflag[2][1], m_vflag[2][2], m_vflag[2][3], m_vflag[2][4], m_vflag[2][5], m_vflag[2][6], m_vflag[2][7]);
#endif
}
void rsp_cop2::dump_dmem()
{
- UINT8* dmem = m_rsp.get_dmem();
- printf("\n");
- for (int i = 0; i < 0x1000; i += 32)
- {
- printf("%04x: ", i);
- for (int j = 0; j < 32; j++)
- {
- printf("%02x ", dmem[i + j]);
- }
- printf("\n");
- }
- printf("\n");
-} \ No newline at end of file
+ UINT8* dmem = m_rsp.get_dmem();
+ printf("\n");
+ for (int i = 0; i < 0x1000; i += 32)
+ {
+ printf("%04x: ", i);
+ for (int j = 0; j < 32; j++)
+ {
+ printf("%02x ", dmem[i + j]);
+ }
+ printf("\n");
+ }
+ printf("\n");
+}
diff --git a/src/emu/cpu/rsp/rspcp2.h b/src/devices/cpu/rsp/rspcp2.h
index c5e01218def..909b0ae4172 100644
--- a/src/emu/cpu/rsp/rspcp2.h
+++ b/src/devices/cpu/rsp/rspcp2.h
@@ -17,21 +17,28 @@
#include "rsp.h"
#include "rspdiv.h"
-#define SIMD_OFF (1)
+#define SIMD_OFF (1)
#if (defined(__SSE2__) || defined(__SSE3__) || defined(__SSSE3__) || defined(__SSE4_1__) || defined(__SSE4_2__))
-#define SSE_AVAILABLE (1)
+#define SSE_AVAILABLE (1)
#else
-#define SSE_AVAILABLE (0)
+#define SSE_AVAILABLE (0)
#endif
#if (SSE_AVAILABLE || defined(_MSC_VER)) && defined(PTR64) && !SIMD_OFF
-#define USE_SIMD (1)
+#define USE_SIMD (1)
#else
-#define USE_SIMD (0)
+#define USE_SIMD (0)
#endif
#if USE_SIMD
+
+#ifdef _MSC_VER
+#define __align16 __declspec(align(16))
+#else
+#define __align16 __attribute__((aligned(16)))
+#endif
+
#if (defined(__SSE4_2__) || defined(_MSC_VER))
#include <nmmintrin.h>
#elif (defined(__SSE4_1__) || defined(_MSC_VER))
@@ -160,8 +167,8 @@ public:
void log_instruction_execution();
virtual void cfunc_unimplemented_opcode() { }
- void dump(UINT32 op);
- void dump_dmem();
+ void dump(UINT32 op);
+ void dump_dmem();
protected:
virtual int generate_vector_opcode(drcuml_block *block, rsp_device::compiler_state *compiler, const opcode_desc *desc) { return TRUE; }
@@ -181,7 +188,7 @@ protected:
UINT32 m_vres[8]; /* used for temporary vector results */
#if USE_SIMD
- __declspec(align(16)) VECTOR_REG m_v[32];
+ __align16 VECTOR_REG m_v[32];
#else
VECTOR_REG m_v[32];
#endif
@@ -232,9 +239,9 @@ protected:
UINT16 s[24];
};
- __declspec(align(16)) aligned_rsp_1vect_t m_vdqm;
- __declspec(align(16)) aligned_rsp_2vect_t m_flags[3];
- __declspec(align(16)) aligned_rsp_3vect_t m_acc;
+ __align16 aligned_rsp_1vect_t m_vdqm;
+ __align16 aligned_rsp_2vect_t m_flags[3];
+ __align16 aligned_rsp_3vect_t m_acc;
UINT32 m_dp_flag;
typedef struct
@@ -335,7 +342,7 @@ protected:
static inline INT16 get_flags(const UINT16 *flags)
{
- return _mm_movemask_epi8(_mm_packs_epi16(_mm_load_si128((rsp_vec_t*) (flags + (sizeof(rsp_vec_t) >> 1))), _mm_load_si128((rsp_vec_t*) flags)));
+ return _mm_movemask_epi8(_mm_packs_epi16(_mm_load_si128((rsp_vec_t*) (flags + (sizeof(rsp_vec_t) >> 1))), _mm_load_si128((rsp_vec_t*) flags)));
}
static inline rsp_vec_t vec_zero()
@@ -382,8 +389,8 @@ private:
void handle_swc2(UINT32 op);
void handle_vector_ops(UINT32 op);
- UINT32 m_div_in;
- UINT32 m_div_out;
+ UINT32 m_div_in;
+ UINT32 m_div_out;
};
#endif /* __RSPCP2_H__ */
diff --git a/src/emu/cpu/rsp/rspcp2d.c b/src/devices/cpu/rsp/rspcp2d.c
index d7844be717c..da23d00df0d 100644
--- a/src/emu/cpu/rsp/rspcp2d.c
+++ b/src/devices/cpu/rsp/rspcp2d.c
@@ -5,7 +5,7 @@
rspcp2d.c
Universal machine language-based Nintendo/SGI RSP COP2 emulator.
- Written by Harmony of the MESS team.
+ Written by Ryan Holtz
***************************************************************************/
diff --git a/src/emu/cpu/rsp/rspcp2d.h b/src/devices/cpu/rsp/rspcp2d.h
index 831773d5c66..831773d5c66 100644
--- a/src/emu/cpu/rsp/rspcp2d.h
+++ b/src/devices/cpu/rsp/rspcp2d.h
diff --git a/src/emu/cpu/rsp/rspdiv.h b/src/devices/cpu/rsp/rspdiv.h
index 67e4afacd01..67e4afacd01 100644
--- a/src/emu/cpu/rsp/rspdiv.h
+++ b/src/devices/cpu/rsp/rspdiv.h
diff --git a/src/emu/cpu/rsp/rspdrc.c b/src/devices/cpu/rsp/rspdrc.c
index ae719af5959..fc8710d5afd 100644
--- a/src/emu/cpu/rsp/rspdrc.c
+++ b/src/devices/cpu/rsp/rspdrc.c
@@ -5,7 +5,7 @@
rspdrc.c
Universal machine language-based Nintendo/SGI RSP emulator.
- Written by Harmony of the MESS team.
+ Written by Ryan Holtz
SIMD versions of vector multiplication opcodes provided by Marathon Man
of the CEN64 team.
diff --git a/src/emu/cpu/rsp/rspfe.c b/src/devices/cpu/rsp/rspfe.c
index 7a80fb6347b..7a80fb6347b 100644
--- a/src/emu/cpu/rsp/rspfe.c
+++ b/src/devices/cpu/rsp/rspfe.c
diff --git a/src/emu/cpu/rsp/rspfe.h b/src/devices/cpu/rsp/rspfe.h
index bdfd7a83fb7..bdfd7a83fb7 100644
--- a/src/emu/cpu/rsp/rspfe.h
+++ b/src/devices/cpu/rsp/rspfe.h
diff --git a/src/emu/cpu/rsp/vabs.h b/src/devices/cpu/rsp/vabs.h
index 273841b9610..273841b9610 100644
--- a/src/emu/cpu/rsp/vabs.h
+++ b/src/devices/cpu/rsp/vabs.h
diff --git a/src/emu/cpu/rsp/vadd.h b/src/devices/cpu/rsp/vadd.h
index 33b21fd7312..16009e53287 100644
--- a/src/emu/cpu/rsp/vadd.h
+++ b/src/devices/cpu/rsp/vadd.h
@@ -14,4 +14,3 @@ inline rsp_vec_t vec_vadd(rsp_vec_t vs, rsp_vec_t vt, rsp_vec_t carry, rsp_vec_t
minimum = _mm_subs_epi16(minimum, carry);
return _mm_adds_epi16(minimum, maximum);
}
-
diff --git a/src/emu/cpu/rsp/vaddc.h b/src/devices/cpu/rsp/vaddc.h
index 0ebd30cbd31..0ebd30cbd31 100644
--- a/src/emu/cpu/rsp/vaddc.h
+++ b/src/devices/cpu/rsp/vaddc.h
diff --git a/src/emu/cpu/rsp/vand.h b/src/devices/cpu/rsp/vand.h
index 4349227fdd3..4349227fdd3 100644
--- a/src/emu/cpu/rsp/vand.h
+++ b/src/devices/cpu/rsp/vand.h
diff --git a/src/emu/cpu/rsp/vch.h b/src/devices/cpu/rsp/vch.h
index 6abac437a2c..6abac437a2c 100644
--- a/src/emu/cpu/rsp/vch.h
+++ b/src/devices/cpu/rsp/vch.h
diff --git a/src/emu/cpu/rsp/vcl.h b/src/devices/cpu/rsp/vcl.h
index e82a7fde162..e09a13d5a8e 100644
--- a/src/emu/cpu/rsp/vcl.h
+++ b/src/devices/cpu/rsp/vcl.h
@@ -46,7 +46,7 @@ inline rsp_vec_t vec_vcl(rsp_vec_t vs, rsp_vec_t vt, rsp_vec_t zero, rsp_vec_t *
*ge = _mm_or_si128(ge_eq, *ge);
#endif
- // Mux the result based on the value of sign.
+ // Mux the result based on the value of sign.
#if (defined(__SSE4_1__) || defined(_MSC_VER))
rsp_vec_t mux_mask = _mm_blendv_epi8(*ge, *le, sign);
#else
diff --git a/src/emu/cpu/rsp/vcmp.h b/src/devices/cpu/rsp/vcmp.h
index 7ae4dc4c444..7ae4dc4c444 100644
--- a/src/emu/cpu/rsp/vcmp.h
+++ b/src/devices/cpu/rsp/vcmp.h
diff --git a/src/emu/cpu/rsp/vcr.h b/src/devices/cpu/rsp/vcr.h
index 78f78c66244..78f78c66244 100644
--- a/src/emu/cpu/rsp/vcr.h
+++ b/src/devices/cpu/rsp/vcr.h
diff --git a/src/emu/cpu/rsp/vdivh.h b/src/devices/cpu/rsp/vdivh.h
index 286aa8a3ca7..286aa8a3ca7 100644
--- a/src/emu/cpu/rsp/vdivh.h
+++ b/src/devices/cpu/rsp/vdivh.h
diff --git a/src/emu/cpu/rsp/vldst.h b/src/devices/cpu/rsp/vldst.h
index 4a38af029d4..4a38af029d4 100644
--- a/src/emu/cpu/rsp/vldst.h
+++ b/src/devices/cpu/rsp/vldst.h
diff --git a/src/emu/cpu/rsp/vmac.h b/src/devices/cpu/rsp/vmac.h
index ecf921a261c..ecf921a261c 100644
--- a/src/emu/cpu/rsp/vmac.h
+++ b/src/devices/cpu/rsp/vmac.h
diff --git a/src/emu/cpu/rsp/vmov.h b/src/devices/cpu/rsp/vmov.h
index 10a7b1df85f..10a7b1df85f 100644
--- a/src/emu/cpu/rsp/vmov.h
+++ b/src/devices/cpu/rsp/vmov.h
diff --git a/src/emu/cpu/rsp/vmrg.h b/src/devices/cpu/rsp/vmrg.h
index ab9be63ef16..ab9be63ef16 100644
--- a/src/emu/cpu/rsp/vmrg.h
+++ b/src/devices/cpu/rsp/vmrg.h
diff --git a/src/emu/cpu/rsp/vmudh.h b/src/devices/cpu/rsp/vmudh.h
index 6ae77e2ef7e..71c3a38f4fb 100644
--- a/src/emu/cpu/rsp/vmudh.h
+++ b/src/devices/cpu/rsp/vmudh.h
@@ -8,4 +8,3 @@ inline rsp_vec_t rsp_vmudh(rsp_vec_t vs, rsp_vec_t vt, rsp_vec_t *acc_md, rsp_ve
return sclamp_acc_to_mid(*acc_md, *acc_hi);
}
-
diff --git a/src/emu/cpu/rsp/vmul.h b/src/devices/cpu/rsp/vmul.h
index c8bfc1bbb14..c8bfc1bbb14 100644
--- a/src/emu/cpu/rsp/vmul.h
+++ b/src/devices/cpu/rsp/vmul.h
diff --git a/src/emu/cpu/rsp/vmulh.h b/src/devices/cpu/rsp/vmulh.h
index 61140f4744c..aaccf9d41b3 100644
--- a/src/emu/cpu/rsp/vmulh.h
+++ b/src/devices/cpu/rsp/vmulh.h
@@ -28,4 +28,3 @@ inline rsp_vec_t vec_vmadh_vmudh(UINT32 iw, rsp_vec_t vs, rsp_vec_t vt, rsp_vec_
return sclamp_acc_to_mid(*acc_md, *acc_hi);
}
-
diff --git a/src/emu/cpu/rsp/vmull.h b/src/devices/cpu/rsp/vmull.h
index 2052d537aa8..2052d537aa8 100644
--- a/src/emu/cpu/rsp/vmull.h
+++ b/src/devices/cpu/rsp/vmull.h
diff --git a/src/emu/cpu/rsp/vmulm.h b/src/devices/cpu/rsp/vmulm.h
index 0319a2f6dcc..0319a2f6dcc 100644
--- a/src/emu/cpu/rsp/vmulm.h
+++ b/src/devices/cpu/rsp/vmulm.h
diff --git a/src/emu/cpu/rsp/vmuln.h b/src/devices/cpu/rsp/vmuln.h
index b9e012622fc..b9e012622fc 100644
--- a/src/emu/cpu/rsp/vmuln.h
+++ b/src/devices/cpu/rsp/vmuln.h
diff --git a/src/emu/cpu/rsp/vor.h b/src/devices/cpu/rsp/vor.h
index 9f946df7ca9..9f946df7ca9 100644
--- a/src/emu/cpu/rsp/vor.h
+++ b/src/devices/cpu/rsp/vor.h
diff --git a/src/emu/cpu/rsp/vrcpsq.h b/src/devices/cpu/rsp/vrcpsq.h
index 2e2434863e9..930d8237853 100644
--- a/src/emu/cpu/rsp/vrcpsq.h
+++ b/src/devices/cpu/rsp/vrcpsq.h
@@ -26,7 +26,7 @@ inline rsp_vec_t vec_vrcp_vrsq(UINT32 iw, INT32 dp, UINT32 src, UINT32 e, UINT32
}
else if (input == -32768)
{
- result = 0xffff0000;
+ result = 0xffff0000;
}
else // Main case: compute the reciprocal.
{
diff --git a/src/emu/cpu/rsp/vrsq.h b/src/devices/cpu/rsp/vrsq.h
index 140e46dcd01..f657bc42554 100644
--- a/src/emu/cpu/rsp/vrsq.h
+++ b/src/devices/cpu/rsp/vrsq.h
@@ -26,7 +26,7 @@ rsp_vec_t vec_vrsq(INT32 dp, UINT32 src, UINT32 e, UINT32 dest, UINT32 de)
}
else if (input == -32768)
{
- result = 0xffff0000;
+ result = 0xffff0000;
}
else // Main case: compute the reciprocal.
{
diff --git a/src/emu/cpu/rsp/vsub.h b/src/devices/cpu/rsp/vsub.h
index c3df93627c8..c3df93627c8 100644
--- a/src/emu/cpu/rsp/vsub.h
+++ b/src/devices/cpu/rsp/vsub.h
diff --git a/src/emu/cpu/rsp/vsubc.h b/src/devices/cpu/rsp/vsubc.h
index 8632b9462d9..8632b9462d9 100644
--- a/src/emu/cpu/rsp/vsubc.h
+++ b/src/devices/cpu/rsp/vsubc.h
diff --git a/src/emu/cpu/rsp/vxor.h b/src/devices/cpu/rsp/vxor.h
index b11e1b96bc1..b11e1b96bc1 100644
--- a/src/emu/cpu/rsp/vxor.h
+++ b/src/devices/cpu/rsp/vxor.h
diff --git a/src/emu/cpu/s2650/2650dasm.c b/src/devices/cpu/s2650/2650dasm.c
index 6a6f9b1a00c..6a6f9b1a00c 100644
--- a/src/emu/cpu/s2650/2650dasm.c
+++ b/src/devices/cpu/s2650/2650dasm.c
diff --git a/src/emu/cpu/s2650/s2650.c b/src/devices/cpu/s2650/s2650.c
index a67bc2ce5fe..a67bc2ce5fe 100644
--- a/src/emu/cpu/s2650/s2650.c
+++ b/src/devices/cpu/s2650/s2650.c
diff --git a/src/emu/cpu/s2650/s2650.h b/src/devices/cpu/s2650/s2650.h
index e9a0a01c3b9..e9a0a01c3b9 100644
--- a/src/emu/cpu/s2650/s2650.h
+++ b/src/devices/cpu/s2650/s2650.h
diff --git a/src/emu/cpu/s2650/s2650cpu.h b/src/devices/cpu/s2650/s2650cpu.h
index c4ff88f7aff..c4ff88f7aff 100644
--- a/src/emu/cpu/s2650/s2650cpu.h
+++ b/src/devices/cpu/s2650/s2650cpu.h
diff --git a/src/emu/cpu/saturn/satops.inc b/src/devices/cpu/saturn/satops.inc
index 8f7420584e3..8f7420584e3 100644
--- a/src/emu/cpu/saturn/satops.inc
+++ b/src/devices/cpu/saturn/satops.inc
diff --git a/src/emu/cpu/saturn/sattable.inc b/src/devices/cpu/saturn/sattable.inc
index f8b5398973c..f8b5398973c 100644
--- a/src/emu/cpu/saturn/sattable.inc
+++ b/src/devices/cpu/saturn/sattable.inc
diff --git a/src/emu/cpu/saturn/saturn.c b/src/devices/cpu/saturn/saturn.c
index 1d94a3a9ceb..1d94a3a9ceb 100644
--- a/src/emu/cpu/saturn/saturn.c
+++ b/src/devices/cpu/saturn/saturn.c
diff --git a/src/emu/cpu/saturn/saturn.h b/src/devices/cpu/saturn/saturn.h
index 836f832cbf6..836f832cbf6 100644
--- a/src/emu/cpu/saturn/saturn.h
+++ b/src/devices/cpu/saturn/saturn.h
diff --git a/src/emu/cpu/saturn/saturnds.c b/src/devices/cpu/saturn/saturnds.c
index 1dc6eb3d622..1dc6eb3d622 100644
--- a/src/emu/cpu/saturn/saturnds.c
+++ b/src/devices/cpu/saturn/saturnds.c
diff --git a/src/emu/cpu/sc61860/readpc.c b/src/devices/cpu/sc61860/readpc.c
index 46afbbf8a3e..46afbbf8a3e 100644
--- a/src/emu/cpu/sc61860/readpc.c
+++ b/src/devices/cpu/sc61860/readpc.c
diff --git a/src/emu/cpu/sc61860/sc61860.c b/src/devices/cpu/sc61860/sc61860.c
index a36c02a658a..a36c02a658a 100644
--- a/src/emu/cpu/sc61860/sc61860.c
+++ b/src/devices/cpu/sc61860/sc61860.c
diff --git a/src/emu/cpu/sc61860/sc61860.h b/src/devices/cpu/sc61860/sc61860.h
index e34197f83f9..e34197f83f9 100644
--- a/src/emu/cpu/sc61860/sc61860.h
+++ b/src/devices/cpu/sc61860/sc61860.h
diff --git a/src/emu/cpu/sc61860/scdasm.c b/src/devices/cpu/sc61860/scdasm.c
index 047ba7fae30..047ba7fae30 100644
--- a/src/emu/cpu/sc61860/scdasm.c
+++ b/src/devices/cpu/sc61860/scdasm.c
diff --git a/src/emu/cpu/sc61860/scops.inc b/src/devices/cpu/sc61860/scops.inc
index 7bc5b05c987..7bc5b05c987 100644
--- a/src/emu/cpu/sc61860/scops.inc
+++ b/src/devices/cpu/sc61860/scops.inc
diff --git a/src/emu/cpu/sc61860/sctable.inc b/src/devices/cpu/sc61860/sctable.inc
index 2e16dc51033..2e16dc51033 100644
--- a/src/emu/cpu/sc61860/sctable.inc
+++ b/src/devices/cpu/sc61860/sctable.inc
diff --git a/src/emu/cpu/scmp/scmp.c b/src/devices/cpu/scmp/scmp.c
index edd8502c1c5..edd8502c1c5 100644
--- a/src/emu/cpu/scmp/scmp.c
+++ b/src/devices/cpu/scmp/scmp.c
diff --git a/src/emu/cpu/scmp/scmp.h b/src/devices/cpu/scmp/scmp.h
index 86590f93546..86590f93546 100644
--- a/src/emu/cpu/scmp/scmp.h
+++ b/src/devices/cpu/scmp/scmp.h
diff --git a/src/emu/cpu/scmp/scmpdasm.c b/src/devices/cpu/scmp/scmpdasm.c
index f8bcc491ce4..f8bcc491ce4 100644
--- a/src/emu/cpu/scmp/scmpdasm.c
+++ b/src/devices/cpu/scmp/scmpdasm.c
diff --git a/src/emu/cpu/score/score.c b/src/devices/cpu/score/score.c
index a8e3dd210fc..a8e3dd210fc 100644
--- a/src/emu/cpu/score/score.c
+++ b/src/devices/cpu/score/score.c
diff --git a/src/emu/cpu/score/score.h b/src/devices/cpu/score/score.h
index e2c6dc15fef..e2c6dc15fef 100644
--- a/src/emu/cpu/score/score.h
+++ b/src/devices/cpu/score/score.h
diff --git a/src/emu/cpu/score/scoredsm.c b/src/devices/cpu/score/scoredsm.c
index faac8140e51..faac8140e51 100644
--- a/src/emu/cpu/score/scoredsm.c
+++ b/src/devices/cpu/score/scoredsm.c
diff --git a/src/emu/cpu/score/scorem.h b/src/devices/cpu/score/scorem.h
index 0f809e817fe..0f809e817fe 100644
--- a/src/emu/cpu/score/scorem.h
+++ b/src/devices/cpu/score/scorem.h
diff --git a/src/emu/cpu/scudsp/scudsp.c b/src/devices/cpu/scudsp/scudsp.c
index 14d1565caa2..14d1565caa2 100644
--- a/src/emu/cpu/scudsp/scudsp.c
+++ b/src/devices/cpu/scudsp/scudsp.c
diff --git a/src/emu/cpu/scudsp/scudsp.h b/src/devices/cpu/scudsp/scudsp.h
index ac46450a9d4..ac46450a9d4 100644
--- a/src/emu/cpu/scudsp/scudsp.h
+++ b/src/devices/cpu/scudsp/scudsp.h
diff --git a/src/emu/cpu/scudsp/scudspdasm.c b/src/devices/cpu/scudsp/scudspdasm.c
index d5e79a2cbd7..d5e79a2cbd7 100644
--- a/src/emu/cpu/scudsp/scudspdasm.c
+++ b/src/devices/cpu/scudsp/scudspdasm.c
diff --git a/src/emu/cpu/se3208/se3208.c b/src/devices/cpu/se3208/se3208.c
index 98a87335d33..98a87335d33 100644
--- a/src/emu/cpu/se3208/se3208.c
+++ b/src/devices/cpu/se3208/se3208.c
diff --git a/src/emu/cpu/se3208/se3208.h b/src/devices/cpu/se3208/se3208.h
index 696d53affa8..696d53affa8 100644
--- a/src/emu/cpu/se3208/se3208.h
+++ b/src/devices/cpu/se3208/se3208.h
diff --git a/src/emu/cpu/se3208/se3208dis.c b/src/devices/cpu/se3208/se3208dis.c
index 9de811f846a..9de811f846a 100644
--- a/src/emu/cpu/se3208/se3208dis.c
+++ b/src/devices/cpu/se3208/se3208dis.c
diff --git a/src/emu/cpu/sh2/sh2.c b/src/devices/cpu/sh2/sh2.c
index b2ea57f60d4..629d447323e 100644
--- a/src/emu/cpu/sh2/sh2.c
+++ b/src/devices/cpu/sh2/sh2.c
@@ -143,11 +143,11 @@ READ32_MEMBER(sh2_device::sh2_internal_a5)
static ADDRESS_MAP_START( sh7604_map, AS_PROGRAM, 32, sh2_device )
AM_RANGE(0x40000000, 0xbfffffff) AM_READ(sh2_internal_a5)
-/*!
+/*!
@todo: cps3boot breaks with this enabled. Needs customization ...
*/
-// AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM // cache data array
-// AM_RANGE(0xffffff88, 0xffffff8b) AM_READWRITE(dma_dtcr0_r,dma_dtcr0_w)
+// AM_RANGE(0xc0000000, 0xc0000fff) AM_RAM // cache data array
+// AM_RANGE(0xffffff88, 0xffffff8b) AM_READWRITE(dma_dtcr0_r,dma_dtcr0_w)
AM_RANGE(0xe0000000, 0xe00001ff) AM_MIRROR(0x1ffffe00) AM_READWRITE(sh7604_r, sh7604_w)
ADDRESS_MAP_END
@@ -159,14 +159,14 @@ static ADDRESS_MAP_START( sh7021_map, AS_PROGRAM, 32, sh2a_device )
AM_RANGE(0x05ffff48, 0x05ffff4b) AM_READWRITE16(dma_tcr0_r, dma_tcr0_w,0x0000ffff)
AM_RANGE(0x05ffff4c, 0x05ffff4f) AM_READWRITE16(dma_chcr0_r, dma_chcr0_w, 0x0000ffff)
// fall-back
- AM_RANGE(0x05fffe00, 0x05ffffff) AM_READWRITE16(sh7021_r,sh7021_w,0xffffffff) // SH-7032H internal i/o
-// AM_RANGE(0x07000000, 0x070003ff) AM_RAM AM_SHARE("oram")// on-chip RAM, actually at 0xf000000 (1 kb)
-// AM_RANGE(0x0f000000, 0x0f0003ff) AM_RAM AM_SHARE("oram")// on-chip RAM, actually at 0xf000000 (1 kb)
+ AM_RANGE(0x05fffe00, 0x05ffffff) AM_READWRITE16(sh7021_r,sh7021_w,0xffffffff) // SH-7032H internal i/o
+// AM_RANGE(0x07000000, 0x070003ff) AM_RAM AM_SHARE("oram")// on-chip RAM, actually at 0xf000000 (1 kb)
+// AM_RANGE(0x0f000000, 0x0f0003ff) AM_RAM AM_SHARE("oram")// on-chip RAM, actually at 0xf000000 (1 kb)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sh7032_map, AS_PROGRAM, 32, sh1_device )
// fall-back
- AM_RANGE(0x05fffe00, 0x05ffffff) AM_READWRITE16(sh7032_r,sh7032_w,0xffffffff) // SH-7032H internal i/o
+ AM_RANGE(0x05fffe00, 0x05ffffff) AM_READWRITE16(sh7032_r,sh7032_w,0xffffffff) // SH-7032H internal i/o
ADDRESS_MAP_END
sh2_device::sh2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
@@ -300,7 +300,7 @@ void sh2_device::WB(offs_t A, UINT8 V)
m_program->write_byte(A & AM,V);
return;
}
-
+
m_program->write_byte(A,V);
}
@@ -311,7 +311,7 @@ void sh2_device::WW(offs_t A, UINT16 V)
m_program->write_word(A & AM,V);
return;
}
-
+
m_program->write_word(A,V);
}
@@ -322,7 +322,7 @@ void sh2_device::WL(offs_t A, UINT32 V)
m_program->write_dword(A & AM,V);
return;
}
-
+
/* 0x20000000 no Cache */
/* 0x00000000 read thru Cache if CE bit is 1 */
m_program->write_dword(A,V);
diff --git a/src/emu/cpu/sh2/sh2.h b/src/devices/cpu/sh2/sh2.h
index c53b6baad59..9724c1f51b0 100644
--- a/src/emu/cpu/sh2/sh2.h
+++ b/src/devices/cpu/sh2/sh2.h
@@ -513,17 +513,17 @@ public:
DECLARE_READ16_MEMBER(sh7021_r);
DECLARE_WRITE16_MEMBER(sh7021_w);
void sh7032_dma_exec(int ch);
-
+
private:
UINT16 m_sh7021_regs[0x200];
struct
{
- UINT32 sar; /**< Source Address Register */
- UINT32 dar; /**< Destination Address Register */
- UINT16 tcr; /**< Transfer Count Register */
- UINT16 chcr; /**< Channel Control Register */
+ UINT32 sar; /**< Source Address Register */
+ UINT32 dar; /**< Destination Address Register */
+ UINT16 tcr; /**< Transfer Count Register */
+ UINT16 chcr; /**< Channel Control Register */
} m_dma[4];
- UINT16 m_dmaor; /**< DMA Operation Register (status flags) */
+ UINT16 m_dmaor; /**< DMA Operation Register (status flags) */
};
diff --git a/src/emu/cpu/sh2/sh2comn.c b/src/devices/cpu/sh2/sh2comn.c
index f6883649ee9..1080203494f 100644
--- a/src/emu/cpu/sh2/sh2comn.c
+++ b/src/devices/cpu/sh2/sh2comn.c
@@ -13,6 +13,14 @@
#include "sh2.h"
#include "sh2comn.h"
+
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
+
#define VERBOSE 0
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
@@ -887,47 +895,47 @@ void sh2_device::sh2_exception(const char *message, int irqline)
/*
SH-7021 on-chip device
*/
-
+
void sh2a_device::sh7032_dma_exec(int ch)
{
const short dma_word_size[4] = { 0, +1, -1, 0 };
- UINT8 rs = (m_dma[ch].chcr >> 8) & 0xf; /**< Resource Select bits */
+ UINT8 rs = (m_dma[ch].chcr >> 8) & 0xf; /**< Resource Select bits */
if(rs != 0xc) // Auto-Request
{
logerror("Warning: SH7032 DMA enables non auto-request transfer\n");
return;
}
-
+
// channel enable & master enable
if((m_dma[ch].chcr & 1) == 0 || (m_dmaor & 1) == 0)
return;
-
+
printf("%08x %08x %04x\n",m_dma[ch].sar,m_dma[ch].dar,m_dma[ch].chcr);
- UINT8 dm = (m_dma[ch].chcr >> 14) & 3; /**< Destination Address Mode bits */
- UINT8 sm = (m_dma[ch].chcr >> 12) & 3; /**< Source Address Mode bits */
- bool ts = (m_dma[ch].chcr & 8); /**< Transfer Size bit */
+ UINT8 dm = (m_dma[ch].chcr >> 14) & 3; /**< Destination Address Mode bits */
+ UINT8 sm = (m_dma[ch].chcr >> 12) & 3; /**< Source Address Mode bits */
+ bool ts = (m_dma[ch].chcr & 8); /**< Transfer Size bit */
int src_word_size = dma_word_size[sm] * ((ts == true) ? 2 : 1);
int dst_word_size = dma_word_size[dm] * ((ts == true) ? 2 : 1);
UINT32 src_addr = m_dma[ch].sar;
- UINT32 dst_addr = m_dma[ch].dar;
+ UINT32 dst_addr = m_dma[ch].dar;
UINT32 size_index = m_dma[ch].tcr;
if(size_index == 0)
size_index = 0x10000;
-
+
if(ts == false)
logerror("SH7032: DMA byte mode check\n");
-
+
for(int index = size_index;index>-1;index--)
{
if(ts == true)
m_program->write_word(dst_addr,m_program->read_word(src_addr));
else
m_program->write_byte(dst_addr,m_program->read_byte(src_addr));
-
+
src_addr += src_word_size;
dst_addr += dst_word_size;
}
-
+
m_dma[ch].chcr &= ~1; /**< @todo non-instant DMA */
printf("%02x %02x %02x %1d\n",sm,dm,rs,ts);
}
@@ -1014,3 +1022,6 @@ WRITE16_MEMBER(sh2a_device::sh7021_w)
{
COMBINE_DATA(&m_sh7021_regs[offset]);
}
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/cpu/sh2/sh2comn.h b/src/devices/cpu/sh2/sh2comn.h
index 79d06547462..79d06547462 100644
--- a/src/emu/cpu/sh2/sh2comn.h
+++ b/src/devices/cpu/sh2/sh2comn.h
diff --git a/src/emu/cpu/sh2/sh2dasm.c b/src/devices/cpu/sh2/sh2dasm.c
index e37611b9d28..e37611b9d28 100644
--- a/src/emu/cpu/sh2/sh2dasm.c
+++ b/src/devices/cpu/sh2/sh2dasm.c
diff --git a/src/emu/cpu/sh2/sh2drc.c b/src/devices/cpu/sh2/sh2drc.c
index 4069f3287c7..4069f3287c7 100644
--- a/src/emu/cpu/sh2/sh2drc.c
+++ b/src/devices/cpu/sh2/sh2drc.c
diff --git a/src/emu/cpu/sh2/sh2fe.c b/src/devices/cpu/sh2/sh2fe.c
index 8ea8ccb82d3..8ea8ccb82d3 100644
--- a/src/emu/cpu/sh2/sh2fe.c
+++ b/src/devices/cpu/sh2/sh2fe.c
diff --git a/src/emu/cpu/sh4/sh3comn.c b/src/devices/cpu/sh4/sh3comn.c
index 1fcacaa9165..1fcacaa9165 100644
--- a/src/emu/cpu/sh4/sh3comn.c
+++ b/src/devices/cpu/sh4/sh3comn.c
diff --git a/src/emu/cpu/sh4/sh3comn.h b/src/devices/cpu/sh4/sh3comn.h
index 8aa68c27b26..8aa68c27b26 100644
--- a/src/emu/cpu/sh4/sh3comn.h
+++ b/src/devices/cpu/sh4/sh3comn.h
diff --git a/src/emu/cpu/sh4/sh4.c b/src/devices/cpu/sh4/sh4.c
index e0835b1f9c0..e0835b1f9c0 100644
--- a/src/emu/cpu/sh4/sh4.c
+++ b/src/devices/cpu/sh4/sh4.c
diff --git a/src/emu/cpu/sh4/sh4.h b/src/devices/cpu/sh4/sh4.h
index 2078d1e6435..2078d1e6435 100644
--- a/src/emu/cpu/sh4/sh4.h
+++ b/src/devices/cpu/sh4/sh4.h
diff --git a/src/emu/cpu/sh4/sh4comn.c b/src/devices/cpu/sh4/sh4comn.c
index 5052622e2d4..5052622e2d4 100644
--- a/src/emu/cpu/sh4/sh4comn.c
+++ b/src/devices/cpu/sh4/sh4comn.c
diff --git a/src/emu/cpu/sh4/sh4comn.h b/src/devices/cpu/sh4/sh4comn.h
index 3aaec85692f..3aaec85692f 100644
--- a/src/emu/cpu/sh4/sh4comn.h
+++ b/src/devices/cpu/sh4/sh4comn.h
diff --git a/src/emu/cpu/sh4/sh4dasm.c b/src/devices/cpu/sh4/sh4dasm.c
index cba1bea7bd5..cba1bea7bd5 100644
--- a/src/emu/cpu/sh4/sh4dasm.c
+++ b/src/devices/cpu/sh4/sh4dasm.c
diff --git a/src/emu/cpu/sh4/sh4dmac.c b/src/devices/cpu/sh4/sh4dmac.c
index 6d3fef194ba..6d3fef194ba 100644
--- a/src/emu/cpu/sh4/sh4dmac.c
+++ b/src/devices/cpu/sh4/sh4dmac.c
diff --git a/src/emu/cpu/sh4/sh4dmac.h b/src/devices/cpu/sh4/sh4dmac.h
index 60148653c2b..60148653c2b 100644
--- a/src/emu/cpu/sh4/sh4dmac.h
+++ b/src/devices/cpu/sh4/sh4dmac.h
diff --git a/src/emu/cpu/sh4/sh4regs.h b/src/devices/cpu/sh4/sh4regs.h
index 384f062858e..384f062858e 100644
--- a/src/emu/cpu/sh4/sh4regs.h
+++ b/src/devices/cpu/sh4/sh4regs.h
diff --git a/src/emu/cpu/sh4/sh4tmu.c b/src/devices/cpu/sh4/sh4tmu.c
index 89b59ac42ee..89b59ac42ee 100644
--- a/src/emu/cpu/sh4/sh4tmu.c
+++ b/src/devices/cpu/sh4/sh4tmu.c
diff --git a/src/emu/cpu/sh4/sh4tmu.h b/src/devices/cpu/sh4/sh4tmu.h
index 7bbad37a0c1..7bbad37a0c1 100644
--- a/src/emu/cpu/sh4/sh4tmu.h
+++ b/src/devices/cpu/sh4/sh4tmu.h
diff --git a/src/emu/cpu/sharc/compute.inc b/src/devices/cpu/sharc/compute.inc
index 880b368ad1f..880b368ad1f 100644
--- a/src/emu/cpu/sharc/compute.inc
+++ b/src/devices/cpu/sharc/compute.inc
diff --git a/src/emu/cpu/sharc/sharc.c b/src/devices/cpu/sharc/sharc.c
index 702f36ebe4c..702f36ebe4c 100644
--- a/src/emu/cpu/sharc/sharc.c
+++ b/src/devices/cpu/sharc/sharc.c
diff --git a/src/emu/cpu/sharc/sharc.h b/src/devices/cpu/sharc/sharc.h
index 52f6d91ecd9..52f6d91ecd9 100644
--- a/src/emu/cpu/sharc/sharc.h
+++ b/src/devices/cpu/sharc/sharc.h
diff --git a/src/emu/cpu/sharc/sharcdma.inc b/src/devices/cpu/sharc/sharcdma.inc
index eacede6fb5b..eacede6fb5b 100644
--- a/src/emu/cpu/sharc/sharcdma.inc
+++ b/src/devices/cpu/sharc/sharcdma.inc
diff --git a/src/emu/cpu/sharc/sharcdsm.c b/src/devices/cpu/sharc/sharcdsm.c
index c498dcb78e5..c498dcb78e5 100644
--- a/src/emu/cpu/sharc/sharcdsm.c
+++ b/src/devices/cpu/sharc/sharcdsm.c
diff --git a/src/emu/cpu/sharc/sharcdsm.h b/src/devices/cpu/sharc/sharcdsm.h
index 8407b73cb50..8407b73cb50 100644
--- a/src/emu/cpu/sharc/sharcdsm.h
+++ b/src/devices/cpu/sharc/sharcdsm.h
diff --git a/src/emu/cpu/sharc/sharcmem.inc b/src/devices/cpu/sharc/sharcmem.inc
index 3427e0346b8..3427e0346b8 100644
--- a/src/emu/cpu/sharc/sharcmem.inc
+++ b/src/devices/cpu/sharc/sharcmem.inc
diff --git a/src/emu/cpu/sharc/sharcops.h b/src/devices/cpu/sharc/sharcops.h
index 42c305d8d10..42c305d8d10 100644
--- a/src/emu/cpu/sharc/sharcops.h
+++ b/src/devices/cpu/sharc/sharcops.h
diff --git a/src/emu/cpu/sharc/sharcops.inc b/src/devices/cpu/sharc/sharcops.inc
index f36454f1805..f36454f1805 100644
--- a/src/emu/cpu/sharc/sharcops.inc
+++ b/src/devices/cpu/sharc/sharcops.inc
diff --git a/src/emu/cpu/sm510/sm510.c b/src/devices/cpu/sm510/sm510.c
index 09029709849..ef4f704590b 100644
--- a/src/emu/cpu/sm510/sm510.c
+++ b/src/devices/cpu/sm510/sm510.c
@@ -6,14 +6,14 @@
- SM510: 2.7Kx8 ROM, 128x4 RAM(32x4 for LCD)
- SM511: 4Kx8 ROM, 128x4 RAM(32x4 for LCD), melody controller
- SM512: 4Kx8 ROM, 128x4 RAM(48x4 for LCD), melody controller
-
+
Other chips that may be in the same family, investigate more when one of
them needs to get emulated: SM500, SM530/31, SM4A, SM3903, ..
References:
- 1990 Sharp Microcomputers Data Book
- 1996 Sharp Microcomputer Databook
-
+
TODO:
- proper support for LFSR program counter in debugger
- callback for lcd screen as MAME bitmap (when needed)
@@ -146,12 +146,12 @@ void sm510_base_device::device_reset()
m_op = m_prev_op = 0;
do_branch(3, 7, 0);
m_prev_pc = m_pc;
-
+
// lcd is on (Bp on, BC off, bs(y) off)
m_bp = true;
m_bc = false;
m_y = 0;
-
+
m_r = 0;
m_write_r(0, 0, 0xff);
m_melody_rd &= ~1;
@@ -168,11 +168,11 @@ inline UINT16 sm510_base_device::get_lcd_row(int column, UINT8* ram)
// output 0 if lcd blackpate/bleeder is off, or in case row doesn't exist
if (ram == NULL || m_bc || !m_bp)
return 0;
-
+
UINT16 rowdata = 0;
for (int i = 0; i < 0x10; i++)
rowdata |= (ram[i] >> column & 1) << i;
-
+
return rowdata;
}
@@ -185,12 +185,12 @@ TIMER_CALLBACK_MEMBER(sm510_base_device::lcd_timer_cb)
m_write_sega(h | SM510_PORT_SEGA, get_lcd_row(h, m_lcd_ram_a), 0xffff);
m_write_segb(h | SM510_PORT_SEGB, get_lcd_row(h, m_lcd_ram_b), 0xffff);
m_write_segc(h | SM510_PORT_SEGC, get_lcd_row(h, m_lcd_ram_c), 0xffff);
-
+
// bs output from L/X and Y regs
UINT8 bs = (m_l >> h & 1) | ((m_x*2) >> h & 2);
m_write_segbs(h | SM510_PORT_SEGBS, (m_bc || !m_bp) ? 0 : bs, 0xffff);
}
-
+
// schedule next timeout
m_lcd_timer->adjust(attotime::from_ticks(0x200, unscaled_clock()));
}
@@ -222,10 +222,10 @@ void sm510_base_device::clock_melody()
0, 0, 8, 8, 9, 9, 10,10,11,12,12,13,14,15, 8*2, 8*2,
0, 0, 8, 9, 9, 10,10,11,11,12,13,14,14,15, 8*2, 9*2
};
-
+
UINT8 cmd = m_melody_rom[m_melody_address] & 0x3f;
UINT8 out = 0;
-
+
// clock duty cycle if tone is active
if ((cmd & 0xf) > 1)
{
@@ -245,7 +245,7 @@ void sm510_base_device::clock_melody()
// rest tell signal
m_melody_rd |= 2;
}
-
+
// clock time base on F8(d7)
if ((m_div & 0x7f) == 0)
{
@@ -255,7 +255,7 @@ void sm510_base_device::clock_melody()
if (m_melody_step_count == 0)
m_melody_address++;
}
-
+
// output to R pin
if (out != m_r)
{
@@ -293,7 +293,7 @@ bool sm510_base_device::wake_me_up()
// after waking up, but we leave it unchanged
m_halt = false;
do_branch(1, 0, 0);
-
+
standard_irq_callback(0);
return true;
}
@@ -305,7 +305,7 @@ void sm510_base_device::execute_set_input(int line, int state)
{
if (line != SM510_INPUT_LINE_K)
return;
-
+
// set K input lines active state
m_k_active = (state != 0);
}
@@ -317,7 +317,7 @@ TIMER_CALLBACK_MEMBER(sm510_base_device::div_timer_cb)
// 1S signal on overflow(falling edge of f1)
if (m_div == 0)
m_1s = true;
-
+
clock_melody();
}
diff --git a/src/emu/cpu/sm510/sm510.h b/src/devices/cpu/sm510/sm510.h
index b50cea20957..8dd7446b884 100644
--- a/src/emu/cpu/sm510/sm510.h
+++ b/src/devices/cpu/sm510/sm510.h
@@ -134,7 +134,7 @@ protected:
int m_stack_levels;
UINT16 m_stack[2];
int m_icount;
-
+
UINT8 m_acc;
UINT8 m_bl;
UINT8 m_bm;
@@ -177,7 +177,7 @@ protected:
bool wake_me_up();
void init_divider();
TIMER_CALLBACK_MEMBER(div_timer_cb);
-
+
// other i/o handlers
devcb_read8 m_read_k;
devcb_read_line m_read_ba;
@@ -251,12 +251,12 @@ protected:
void op_rm();
void op_sm();
-
+
void op_pre();
void op_sme();
void op_rme();
void op_tmel();
-
+
void op_skip();
void op_cend();
void op_idiv();
@@ -274,7 +274,7 @@ protected:
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
virtual void execute_one();
virtual void get_opcode_param();
-
+
virtual void update_w_latch() { m_write_s(0, m_w, 0xff); } // W is connected directly to S
};
diff --git a/src/emu/cpu/sm510/sm510core.c b/src/devices/cpu/sm510/sm510core.c
index bf1449804c3..bf1449804c3 100644
--- a/src/emu/cpu/sm510/sm510core.c
+++ b/src/devices/cpu/sm510/sm510core.c
diff --git a/src/emu/cpu/sm510/sm510d.c b/src/devices/cpu/sm510/sm510d.c
index fec8bc44bbd..70e6b2c8ed6 100644
--- a/src/emu/cpu/sm510/sm510d.c
+++ b/src/devices/cpu/sm510/sm510d.c
@@ -103,7 +103,7 @@ static offs_t sm510_common_disasm(const UINT8 *lut_mnemonic, const UINT8 *lut_ex
param = oprom[s_next_pc[pc & 0x3f]];
len++;
}
-
+
// extended opcode
bool is_extended = (instr == mEXT);
if (is_extended)
@@ -131,12 +131,12 @@ static offs_t sm510_common_disasm(const UINT8 *lut_mnemonic, const UINT8 *lut_ex
UINT16 address = (param << 4 & 0xc00) | (mask << 6 & 0x3c0) | (param & 0x03f);
dst += sprintf(dst, "$%03X", address);
}
-
+
// show param offset
if (bits >= 8)
dst += sprintf(dst, " [$%03X]", pc + s_next_pc[pc & 0x3f]);
}
-
+
return len | s_flags[instr] | DASMFLAG_SUPPORTED;
}
@@ -210,6 +210,6 @@ CPU_DISASSEMBLE(sm511)
UINT8 ext[0x100];
memset(ext, 0, 0x100);
memcpy(ext + 0x30, sm511_extended, 0x10);
-
+
return sm510_common_disasm(sm511_mnemonic, ext, buffer, pc, oprom, opram);
}
diff --git a/src/emu/cpu/sm510/sm510op.c b/src/devices/cpu/sm510/sm510op.c
index bb0f4975511..cf99cbc5ae4 100644
--- a/src/emu/cpu/sm510/sm510op.c
+++ b/src/devices/cpu/sm510/sm510op.c
@@ -57,12 +57,12 @@ inline UINT8 sm510_base_device::bitmask(UINT16 param)
void sm510_base_device::op_lb()
{
// LB x: load BM/BL with 4-bit immediate value (partial)
-
+
// SM510 WIP..
// bm and bl(low) are probably ok!
m_bm = (m_bm & 4) | (m_op & 3);
m_bl = (m_op >> 2 & 3);
-
+
// bl(high) is still unclear, official doc is confusing
UINT8 hi = 0;
switch (m_bl)
diff --git a/src/emu/cpu/sm510/sm511core.c b/src/devices/cpu/sm510/sm511core.c
index d5dcf94cc7c..2347721ff90 100644
--- a/src/emu/cpu/sm510/sm511core.c
+++ b/src/devices/cpu/sm510/sm511core.c
@@ -102,7 +102,7 @@ void sm511_device::execute_one()
switch (m_op)
{
case 0x00: op_rot(); break;
-// case 0x01: op_xxx(); break; // ?
+// case 0x01: op_xxx(); break; // ?
case 0x02: op_sbm(); break;
case 0x03: op_atpl(); break;
case 0x08: op_add(); break;
@@ -119,7 +119,7 @@ void sm511_device::execute_one()
case 0x5a: op_ta0(); break;
case 0x5b: op_tabl(); break;
case 0x5c: op_atx(); break;
-// case 0x5d: op_cend(); break;
+// case 0x5d: op_cend(); break;
case 0x5e: op_tal(); break;
case 0x5f: op_lbl(); break;
@@ -127,14 +127,14 @@ void sm511_device::execute_one()
case 0x62: op_wr(); break;
case 0x63: op_ws(); break;
case 0x64: op_incb(); break;
-// case 0x65: op_idiv(); break;
+// case 0x65: op_idiv(); break;
case 0x66: op_rc(); break;
case 0x67: op_sc(); break;
case 0x6c: op_decb(); break;
case 0x6d: op_ptw(); break;
case 0x6e: op_rtn0(); break;
case 0x6f: op_rtn1(); break;
-
+
// extended opcodes
case 0x60:
m_op = m_op << 8 | m_param;
diff --git a/src/emu/cpu/sm8500/sm8500.c b/src/devices/cpu/sm8500/sm8500.c
index 6159d8a45fa..6159d8a45fa 100644
--- a/src/emu/cpu/sm8500/sm8500.c
+++ b/src/devices/cpu/sm8500/sm8500.c
diff --git a/src/emu/cpu/sm8500/sm8500.h b/src/devices/cpu/sm8500/sm8500.h
index 7cd7df8f6f4..7cd7df8f6f4 100644
--- a/src/emu/cpu/sm8500/sm8500.h
+++ b/src/devices/cpu/sm8500/sm8500.h
diff --git a/src/emu/cpu/sm8500/sm8500d.c b/src/devices/cpu/sm8500/sm8500d.c
index 06b37795d54..06b37795d54 100644
--- a/src/emu/cpu/sm8500/sm8500d.c
+++ b/src/devices/cpu/sm8500/sm8500d.c
diff --git a/src/emu/cpu/sm8500/sm85ops.h b/src/devices/cpu/sm8500/sm85ops.h
index dacfa02482d..dacfa02482d 100644
--- a/src/emu/cpu/sm8500/sm85ops.h
+++ b/src/devices/cpu/sm8500/sm85ops.h
diff --git a/src/emu/cpu/spc700/spc700.c b/src/devices/cpu/spc700/spc700.c
index a21ab8bc27f..a21ab8bc27f 100644
--- a/src/emu/cpu/spc700/spc700.c
+++ b/src/devices/cpu/spc700/spc700.c
diff --git a/src/emu/cpu/spc700/spc700.h b/src/devices/cpu/spc700/spc700.h
index 7177e2a6534..7177e2a6534 100644
--- a/src/emu/cpu/spc700/spc700.h
+++ b/src/devices/cpu/spc700/spc700.h
diff --git a/src/emu/cpu/spc700/spc700ds.c b/src/devices/cpu/spc700/spc700ds.c
index ef5fbd4fe91..ef5fbd4fe91 100644
--- a/src/emu/cpu/spc700/spc700ds.c
+++ b/src/devices/cpu/spc700/spc700ds.c
diff --git a/src/emu/cpu/spc700/spc700ds.h b/src/devices/cpu/spc700/spc700ds.h
index e2135526363..e2135526363 100644
--- a/src/emu/cpu/spc700/spc700ds.h
+++ b/src/devices/cpu/spc700/spc700ds.h
diff --git a/src/emu/cpu/ssem/ssem.c b/src/devices/cpu/ssem/ssem.c
index f5622e5fb38..aae760aa26d 100644
--- a/src/emu/cpu/ssem/ssem.c
+++ b/src/devices/cpu/ssem/ssem.c
@@ -3,7 +3,7 @@
/*
Manchester Small-Scale Experimental Machine (SSEM) emulator
- Written by MooglyGuy
+ Written by Ryan Holtz
*/
#include "emu.h"
diff --git a/src/emu/cpu/ssem/ssem.h b/src/devices/cpu/ssem/ssem.h
index cfcb0e5dc11..79bed8616be 100644
--- a/src/emu/cpu/ssem/ssem.h
+++ b/src/devices/cpu/ssem/ssem.h
@@ -3,7 +3,7 @@
/*
Manchester Small-Scale Experimental Machine (SSEM) emulator
- Written by MooglyGuy
+ Written by Ryan Holtz
*/
#pragma once
diff --git a/src/emu/cpu/ssem/ssemdasm.c b/src/devices/cpu/ssem/ssemdasm.c
index 0a10e4dbe12..7b8a6a47a7b 100644
--- a/src/emu/cpu/ssem/ssemdasm.c
+++ b/src/devices/cpu/ssem/ssemdasm.c
@@ -3,7 +3,7 @@
/*
Manchester Small-Scale Experimental Machine (SSEM) disassembler
- Written by MooglyGuy
+ Written by Ryan Holtz
*/
#include "emu.h"
diff --git a/src/emu/cpu/ssp1601/ssp1601.c b/src/devices/cpu/ssp1601/ssp1601.c
index fb15aa3d84e..fb15aa3d84e 100644
--- a/src/emu/cpu/ssp1601/ssp1601.c
+++ b/src/devices/cpu/ssp1601/ssp1601.c
diff --git a/src/emu/cpu/ssp1601/ssp1601.h b/src/devices/cpu/ssp1601/ssp1601.h
index ef400cac42b..ef400cac42b 100644
--- a/src/emu/cpu/ssp1601/ssp1601.h
+++ b/src/devices/cpu/ssp1601/ssp1601.h
diff --git a/src/emu/cpu/ssp1601/ssp1601d.c b/src/devices/cpu/ssp1601/ssp1601d.c
index c147cbd8534..c147cbd8534 100644
--- a/src/emu/cpu/ssp1601/ssp1601d.c
+++ b/src/devices/cpu/ssp1601/ssp1601d.c
diff --git a/src/emu/cpu/superfx/sfx_dasm.c b/src/devices/cpu/superfx/sfx_dasm.c
index e76e37ee003..e76e37ee003 100644
--- a/src/emu/cpu/superfx/sfx_dasm.c
+++ b/src/devices/cpu/superfx/sfx_dasm.c
diff --git a/src/emu/cpu/superfx/superfx.c b/src/devices/cpu/superfx/superfx.c
index b59be533acd..b59be533acd 100644
--- a/src/emu/cpu/superfx/superfx.c
+++ b/src/devices/cpu/superfx/superfx.c
diff --git a/src/emu/cpu/superfx/superfx.h b/src/devices/cpu/superfx/superfx.h
index 8c3a8b3d2bd..8c3a8b3d2bd 100644
--- a/src/emu/cpu/superfx/superfx.h
+++ b/src/devices/cpu/superfx/superfx.h
diff --git a/src/emu/cpu/t11/t11.c b/src/devices/cpu/t11/t11.c
index 211bbd1f071..4a012ec0505 100644
--- a/src/emu/cpu/t11/t11.c
+++ b/src/devices/cpu/t11/t11.c
@@ -36,8 +36,24 @@
const device_type T11 = &device_creator<t11_device>;
+const device_type K1801VM2 = &device_creator<k1801vm2_device>;
+k1801vm2_device::k1801vm2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : t11_device(mconfig, K1801VM2, "K1801VM2", tag, owner, clock, "k1801vm2", __FILE__)
+{
+}
+
+t11_device::t11_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
+ , m_program_config("program", ENDIANNESS_LITTLE, 16, 16, 0)
+ , c_initial_mode(0)
+{
+ m_is_octal = true;
+ memset(m_reg, 0x00, sizeof(m_reg));
+ memset(&m_psw, 0x00, sizeof(m_psw));
+}
+
t11_device::t11_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: cpu_device(mconfig, T11, "T11", tag, owner, clock, "t11", __FILE__)
, m_program_config("program", ENDIANNESS_LITTLE, 16, 16, 0)
@@ -294,6 +310,26 @@ void t11_device::state_string_export(const device_state_entry &entry, std::strin
}
}
+void k1801vm2_device::state_string_export(const device_state_entry &entry, std::string &str)
+{
+ switch (entry.index())
+ {
+ case STATE_GENFLAGS:
+ strprintf(str, "%c%c%c%c%c%c%c%c%c",
+ m_psw.b.l & 0x100 ? 'H':'.',
+ m_psw.b.l & 0x80 ? 'P':'.',
+ m_psw.b.l & 0x40 ? '?':'.',
+ m_psw.b.l & 0x20 ? '?':'.',
+ m_psw.b.l & 0x10 ? 'T':'.',
+ m_psw.b.l & 0x08 ? 'N':'.',
+ m_psw.b.l & 0x04 ? 'Z':'.',
+ m_psw.b.l & 0x02 ? 'V':'.',
+ m_psw.b.l & 0x01 ? 'C':'.'
+ );
+ break;
+ }
+}
+
/*************************************
*
@@ -326,6 +362,13 @@ void t11_device::device_reset()
m_wait_state = 0;
}
+void k1801vm2_device::device_reset()
+{
+ t11_device::device_reset();
+
+ PC = RWORD(c_initial_mode);
+ PSW = RWORD(c_initial_mode+2);
+}
/*************************************
diff --git a/src/emu/cpu/t11/t11.h b/src/devices/cpu/t11/t11.h
index d5c8c38fb56..45c4ca86c5f 100644
--- a/src/emu/cpu/t11/t11.h
+++ b/src/devices/cpu/t11/t11.h
@@ -37,6 +37,7 @@ class t11_device : public cpu_device
public:
// construction/destruction
t11_device(const machine_config &mconfig, const char *_tag, device_t *_owner, UINT32 _clock);
+ t11_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
// static configuration helpers
static void set_initial_mode(device_t &device, const UINT16 mode) { downcast<t11_device &>(device).c_initial_mode = mode; }
@@ -65,7 +66,7 @@ protected:
virtual UINT32 disasm_max_opcode_bytes() const { return 6; }
virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
-private:
+protected:
address_space_config m_program_config;
UINT16 c_initial_mode;
@@ -1133,8 +1134,23 @@ private:
void sub_ixd_ixd(UINT16 op);
};
+class k1801vm2_device : public t11_device
+{
+public:
+ // construction/destruction
+ k1801vm2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ // device-level overrides
+ virtual void device_reset();
+
+ // device_state_interface overrides
+ void state_string_export(const device_state_entry &entry, std::string &str);
+};
+
extern const device_type T11;
+extern const device_type K1801VM2;
#endif /* __T11_H__ */
diff --git a/src/emu/cpu/t11/t11dasm.c b/src/devices/cpu/t11/t11dasm.c
index 0bb9da4e7ea..0bb9da4e7ea 100644
--- a/src/emu/cpu/t11/t11dasm.c
+++ b/src/devices/cpu/t11/t11dasm.c
diff --git a/src/emu/cpu/t11/t11ops.inc b/src/devices/cpu/t11/t11ops.inc
index 223159a9357..223159a9357 100644
--- a/src/emu/cpu/t11/t11ops.inc
+++ b/src/devices/cpu/t11/t11ops.inc
diff --git a/src/emu/cpu/t11/t11table.inc b/src/devices/cpu/t11/t11table.inc
index 14a5ec825f1..14a5ec825f1 100644
--- a/src/emu/cpu/t11/t11table.inc
+++ b/src/devices/cpu/t11/t11table.inc
diff --git a/src/emu/cpu/tlcs90/tlcs90.c b/src/devices/cpu/tlcs90/tlcs90.c
index 1e3d5dde80a..1e3d5dde80a 100644
--- a/src/emu/cpu/tlcs90/tlcs90.c
+++ b/src/devices/cpu/tlcs90/tlcs90.c
diff --git a/src/emu/cpu/tlcs90/tlcs90.h b/src/devices/cpu/tlcs90/tlcs90.h
index 5e379cb4425..5e379cb4425 100644
--- a/src/emu/cpu/tlcs90/tlcs90.h
+++ b/src/devices/cpu/tlcs90/tlcs90.h
diff --git a/src/emu/cpu/tlcs900/900tbl.inc b/src/devices/cpu/tlcs900/900tbl.inc
index 2e66f1cf6c9..2e66f1cf6c9 100644
--- a/src/emu/cpu/tlcs900/900tbl.inc
+++ b/src/devices/cpu/tlcs900/900tbl.inc
diff --git a/src/emu/cpu/tlcs900/dasm900.c b/src/devices/cpu/tlcs900/dasm900.c
index 7231a2f4759..7231a2f4759 100644
--- a/src/emu/cpu/tlcs900/dasm900.c
+++ b/src/devices/cpu/tlcs900/dasm900.c
diff --git a/src/emu/cpu/tlcs900/tlcs900.c b/src/devices/cpu/tlcs900/tlcs900.c
index c11dc9c08a9..c11dc9c08a9 100644
--- a/src/emu/cpu/tlcs900/tlcs900.c
+++ b/src/devices/cpu/tlcs900/tlcs900.c
diff --git a/src/emu/cpu/tlcs900/tlcs900.h b/src/devices/cpu/tlcs900/tlcs900.h
index e8235ae5cb5..e8235ae5cb5 100644
--- a/src/emu/cpu/tlcs900/tlcs900.h
+++ b/src/devices/cpu/tlcs900/tlcs900.h
diff --git a/src/emu/cpu/tms0980/tms0980.c b/src/devices/cpu/tms0980/tms0980.c
index 8275f09d815..e487564ef23 100644
--- a/src/emu/cpu/tms0980/tms0980.c
+++ b/src/devices/cpu/tms0980/tms0980.c
@@ -169,6 +169,13 @@ const device_type TMS1670 = &device_creator<tms1670_cpu_device>; // high voltage
// - 16-term output PLA and segment PLA above the RAM (rotate opla 90 degrees)
const device_type TMS0980 = &device_creator<tms0980_cpu_device>; // 28-pin DIP, 9 R pins
+// TMS1980 is a TMS0980 with a TMS1x00 style opla
+// - RAM, ROM, and main instructions PLA is exactly the same as TMS0980
+// - one of the microinstructions redirects to a RSTR instruction, like on TMS0270
+// - 32-term output PLA above the RAM, 7 bits! (rotate opla 270 degrees)
+const device_type TMS1980 = &device_creator<tms1980_cpu_device>; // 28-pin DIP, 7 O pins, ? R pins, high voltage
+// TMS0260 is same?
+
// TMS0970 is a stripped-down version of the TMS0980, itself acting more like a TMS1000
// - RAM and ROM is exactly the same as TMS1000
// - main instructions PLA at the top half, to the right of the midline
@@ -184,7 +191,6 @@ const device_type TMS1990 = &device_creator<tms1990_cpu_device>; // 28-pin DIP,
// - 48-term output PLA above the RAM (rotate opla 90 degrees)
const device_type TMS0270 = &device_creator<tms0270_cpu_device>; // 40-pin DIP, 16 O pins, 8+ R pins (some R pins are internally hooked up to support more I/O)
// newer TMS0270 chips (eg. Speak & Math) have 42 pins
-// TMS0260 is similar? except opla is 32 instead of 48 terms
// internal memory maps
@@ -309,6 +315,10 @@ tms0980_cpu_device::tms0980_cpu_device(const machine_config &mconfig, device_typ
: tms0970_cpu_device(mconfig, type, name, tag, owner, clock, o_pins, r_pins, pc_bits, byte_bits, x_bits, prgwidth, program, datawidth, data, shortname, source)
{ }
+tms1980_cpu_device::tms1980_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : tms0980_cpu_device(mconfig, TMS1980, "TMS1980", tag, owner, clock, 7, 11, 7, 9, 4, 12, ADDRESS_MAP_NAME(program_11bit_9), 8, ADDRESS_MAP_NAME(data_64x9_as4), "tms1980", __FILE__)
+{ }
+
tms0270_cpu_device::tms0270_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: tms0980_cpu_device(mconfig, TMS0270, "TMS0270", tag, owner, clock, 16, 16, 7, 9, 4, 12, ADDRESS_MAP_NAME(program_11bit_9), 8, ADDRESS_MAP_NAME(data_64x9_as4), "tms0270", __FILE__)
@@ -387,6 +397,23 @@ machine_config_constructor tms0980_cpu_device::device_mconfig_additions() const
}
+static MACHINE_CONFIG_FRAGMENT(tms1980)
+
+ // main opcodes PLA, microinstructions PLA, output PLA
+ MCFG_PLA_ADD("ipla", 9, 22, 24)
+ MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_ADD("mpla", 6, 21, 64)
+ MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+ MCFG_PLA_ADD("opla", 5, 7, 32)
+ MCFG_PLA_FILEFORMAT(PLA_FMT_BERKELEY)
+MACHINE_CONFIG_END
+
+machine_config_constructor tms1980_cpu_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME(tms1980);
+}
+
+
static MACHINE_CONFIG_FRAGMENT(tms0270)
// main opcodes PLA, microinstructions PLA, output PLA
@@ -441,8 +468,8 @@ void tms1xxx_cpu_device::state_string_export(const device_state_entry &entry, st
enum
{
- TMS0980_PC=1, TMS0980_SR, TMS0980_PA, TMS0980_PB,
- TMS0980_A, TMS0980_X, TMS0980_Y, TMS0980_STATUS
+ TMS1XXX_PC=1, TMS1XXX_SR, TMS1XXX_PA, TMS1XXX_PB,
+ TMS1XXX_A, TMS1XXX_X, TMS1XXX_Y, TMS1XXX_STATUS
};
void tms1xxx_cpu_device::device_start()
@@ -538,14 +565,14 @@ void tms1xxx_cpu_device::device_start()
save_item(NAME(m_subcycle));
// register state for debugger
- state_add(TMS0980_PC, "PC", m_pc ).formatstr("%02X");
- state_add(TMS0980_SR, "SR", m_sr ).formatstr("%01X");
- state_add(TMS0980_PA, "PA", m_pa ).formatstr("%01X");
- state_add(TMS0980_PB, "PB", m_pb ).formatstr("%01X");
- state_add(TMS0980_A, "A", m_a ).formatstr("%01X");
- state_add(TMS0980_X, "X", m_x ).formatstr("%01X");
- state_add(TMS0980_Y, "Y", m_y ).formatstr("%01X");
- state_add(TMS0980_STATUS, "STATUS", m_status).formatstr("%01X");
+ state_add(TMS1XXX_PC, "PC", m_pc ).formatstr("%02X");
+ state_add(TMS1XXX_SR, "SR", m_sr ).formatstr("%01X");
+ state_add(TMS1XXX_PA, "PA", m_pa ).formatstr("%01X");
+ state_add(TMS1XXX_PB, "PB", m_pb ).formatstr("%01X");
+ state_add(TMS1XXX_A, "A", m_a ).formatstr("%01X");
+ state_add(TMS1XXX_X, "X", m_x ).formatstr("%01X");
+ state_add(TMS1XXX_Y, "Y", m_y ).formatstr("%01X");
+ state_add(TMS1XXX_STATUS, "STATUS", m_status).formatstr("%01X");
state_add(STATE_GENPC, "curpc", m_rom_address).formatstr("%03X").noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_sr).formatstr("%8s").noshow();
@@ -735,7 +762,7 @@ UINT32 tms0980_cpu_device::decode_micro(UINT8 sel)
UINT32 mask = m_mpla->read(sel);
mask ^= 0x43fc3; // invert active-negative
- // M_RSTR is specific to TMS02x0, it redirects to F_RSTR
+ // M_RSTR is specific to TMS02x0/TMS1980, it redirects to F_RSTR
// M_UNK1 is specific to TMS0270, unknown yet
// _______ ______ _____ _____ _____ _____ ______ _____ ______ _____ _____
const UINT32 md[22] = { M_NDMTP, M_DMTP, M_AUTY, M_AUTA, M_CKM, M_SSE, M_CKP, M_YTP, M_MTP, M_ATN, M_NATN, M_MTN, M_15TN, M_CKN, M_NE, M_C8, M_SSS, M_CME, M_CIN, M_STO, M_RSTR, M_UNK1 };
@@ -844,16 +871,11 @@ void tms0980_cpu_device::read_opcode()
else
m_micro = m_micro_decode[m_opcode];
- next_pc();
-}
-
-void tms0270_cpu_device::read_opcode()
-{
- tms0980_cpu_device::read_opcode();
-
- // RSTR is on the mpla
+ // TMS02x0/TMS1980: RSTR is on the mpla
if (m_micro & M_RSTR)
m_fixed |= F_RSTR;
+
+ next_pc();
}
@@ -1278,6 +1300,15 @@ void tms1xxx_cpu_device::op_sbl()
}
+// TMS1980-specific
+
+void tms1980_cpu_device::op_tdo()
+{
+ // TDO: transfer accumulator and status(not status_latch!) to O-output
+ write_o_output(m_status << 4 | m_a);
+}
+
+
// TMS0270-specific
void tms0270_cpu_device::op_setr()
diff --git a/src/emu/cpu/tms0980/tms0980.h b/src/devices/cpu/tms0980/tms0980.h
index fb9c3690fdd..7101a614e2f 100644
--- a/src/emu/cpu/tms0980/tms0980.h
+++ b/src/devices/cpu/tms0980/tms0980.h
@@ -405,6 +405,22 @@ protected:
UINT32 decode_micro(UINT8 sel);
};
+class tms1980_cpu_device : public tms0980_cpu_device
+{
+public:
+ tms1980_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ // overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ virtual void write_o_output(UINT8 index) { tms1xxx_cpu_device::write_o_output(index); }
+ virtual UINT8 read_k_input() { return tms1xxx_cpu_device::read_k_input(); }
+
+ virtual void op_setr() { tms1xxx_cpu_device::op_setr(); }
+ virtual void op_tdo();
+};
+
class tms0270_cpu_device : public tms0980_cpu_device
{
@@ -426,7 +442,6 @@ protected:
virtual void write_o_output(UINT8 index) { tms1xxx_cpu_device::write_o_output(index); }
virtual UINT8 read_k_input();
virtual void dynamic_output();
- virtual void read_opcode();
virtual void op_setr();
virtual void op_rstr();
@@ -466,6 +481,7 @@ extern const device_type TMS1670;
extern const device_type TMS0970;
extern const device_type TMS1990;
extern const device_type TMS0980;
+extern const device_type TMS1980;
extern const device_type TMS0270;
diff --git a/src/emu/cpu/tms0980/tms0980d.c b/src/devices/cpu/tms0980/tms0980d.c
index ea72ba9be2e..ea72ba9be2e 100644
--- a/src/emu/cpu/tms0980/tms0980d.c
+++ b/src/devices/cpu/tms0980/tms0980d.c
diff --git a/src/emu/cpu/tms32010/32010dsm.c b/src/devices/cpu/tms32010/32010dsm.c
index a4c0fd5294c..a4c0fd5294c 100644
--- a/src/emu/cpu/tms32010/32010dsm.c
+++ b/src/devices/cpu/tms32010/32010dsm.c
diff --git a/src/emu/cpu/tms32010/dis32010.c b/src/devices/cpu/tms32010/dis32010.c
index adc18d7c34d..adc18d7c34d 100644
--- a/src/emu/cpu/tms32010/dis32010.c
+++ b/src/devices/cpu/tms32010/dis32010.c
diff --git a/src/emu/cpu/tms32010/tms32010.c b/src/devices/cpu/tms32010/tms32010.c
index e6264d3f1dd..e6264d3f1dd 100644
--- a/src/emu/cpu/tms32010/tms32010.c
+++ b/src/devices/cpu/tms32010/tms32010.c
diff --git a/src/emu/cpu/tms32010/tms32010.h b/src/devices/cpu/tms32010/tms32010.h
index 6059d1efa57..6059d1efa57 100644
--- a/src/emu/cpu/tms32010/tms32010.h
+++ b/src/devices/cpu/tms32010/tms32010.h
diff --git a/src/emu/cpu/tms32025/32025dsm.c b/src/devices/cpu/tms32025/32025dsm.c
index d266c468d65..d266c468d65 100644
--- a/src/emu/cpu/tms32025/32025dsm.c
+++ b/src/devices/cpu/tms32025/32025dsm.c
diff --git a/src/emu/cpu/tms32025/dis32025.c b/src/devices/cpu/tms32025/dis32025.c
index 212c5339627..212c5339627 100644
--- a/src/emu/cpu/tms32025/dis32025.c
+++ b/src/devices/cpu/tms32025/dis32025.c
diff --git a/src/emu/cpu/tms32025/tms32025.c b/src/devices/cpu/tms32025/tms32025.c
index 9acc4a31f8c..9acc4a31f8c 100644
--- a/src/emu/cpu/tms32025/tms32025.c
+++ b/src/devices/cpu/tms32025/tms32025.c
diff --git a/src/emu/cpu/tms32025/tms32025.h b/src/devices/cpu/tms32025/tms32025.h
index 5992012d08e..5992012d08e 100644
--- a/src/emu/cpu/tms32025/tms32025.h
+++ b/src/devices/cpu/tms32025/tms32025.h
diff --git a/src/emu/cpu/tms32031/32031ops.c b/src/devices/cpu/tms32031/32031ops.c
index 1475c5f8839..1475c5f8839 100644
--- a/src/emu/cpu/tms32031/32031ops.c
+++ b/src/devices/cpu/tms32031/32031ops.c
diff --git a/src/emu/cpu/tms32031/dis32031.c b/src/devices/cpu/tms32031/dis32031.c
index bc2bd737318..bc2bd737318 100644
--- a/src/emu/cpu/tms32031/dis32031.c
+++ b/src/devices/cpu/tms32031/dis32031.c
diff --git a/src/emu/cpu/tms32031/tms32031.c b/src/devices/cpu/tms32031/tms32031.c
index 1d8096ce959..1d8096ce959 100644
--- a/src/emu/cpu/tms32031/tms32031.c
+++ b/src/devices/cpu/tms32031/tms32031.c
diff --git a/src/emu/cpu/tms32031/tms32031.h b/src/devices/cpu/tms32031/tms32031.h
index e55fcc2d3b4..e55fcc2d3b4 100644
--- a/src/emu/cpu/tms32031/tms32031.h
+++ b/src/devices/cpu/tms32031/tms32031.h
diff --git a/src/emu/cpu/tms32051/32051ops.c b/src/devices/cpu/tms32051/32051ops.c
index 527c7366394..527c7366394 100644
--- a/src/emu/cpu/tms32051/32051ops.c
+++ b/src/devices/cpu/tms32051/32051ops.c
diff --git a/src/emu/cpu/tms32051/32051ops.h b/src/devices/cpu/tms32051/32051ops.h
index f0a1d7d3d25..f0a1d7d3d25 100644
--- a/src/emu/cpu/tms32051/32051ops.h
+++ b/src/devices/cpu/tms32051/32051ops.h
diff --git a/src/emu/cpu/tms32051/dis32051.c b/src/devices/cpu/tms32051/dis32051.c
index 6f3c4ea2156..6f3c4ea2156 100644
--- a/src/emu/cpu/tms32051/dis32051.c
+++ b/src/devices/cpu/tms32051/dis32051.c
diff --git a/src/emu/cpu/tms32051/tms32051.c b/src/devices/cpu/tms32051/tms32051.c
index 01a5a414022..01a5a414022 100644
--- a/src/emu/cpu/tms32051/tms32051.c
+++ b/src/devices/cpu/tms32051/tms32051.c
diff --git a/src/emu/cpu/tms32051/tms32051.h b/src/devices/cpu/tms32051/tms32051.h
index 43c1008d79c..43c1008d79c 100644
--- a/src/emu/cpu/tms32051/tms32051.h
+++ b/src/devices/cpu/tms32051/tms32051.h
diff --git a/src/emu/cpu/tms32082/dis_mp.c b/src/devices/cpu/tms32082/dis_mp.c
index 1b89eb88129..1b89eb88129 100644
--- a/src/emu/cpu/tms32082/dis_mp.c
+++ b/src/devices/cpu/tms32082/dis_mp.c
diff --git a/src/emu/cpu/tms32082/dis_pp.c b/src/devices/cpu/tms32082/dis_pp.c
index 54f8a6d7004..54f8a6d7004 100644
--- a/src/emu/cpu/tms32082/dis_pp.c
+++ b/src/devices/cpu/tms32082/dis_pp.c
diff --git a/src/emu/cpu/tms32082/mp_ops.c b/src/devices/cpu/tms32082/mp_ops.c
index eb59ca228f1..79c0b401392 100644
--- a/src/emu/cpu/tms32082/mp_ops.c
+++ b/src/devices/cpu/tms32082/mp_ops.c
@@ -465,6 +465,17 @@ void tms32082_mp_device::execute_short_imm()
break;
}
+ case 0x12: // and.tf
+ {
+ int rd = OP_RD();
+ int rs = OP_RS();
+ UINT32 imm = OP_UIMM15();
+
+ if (rd)
+ m_reg[rd] = ~m_reg[rs] & imm;
+ break;
+ }
+
case 0x14: // and.ft
{
int rd = OP_RD();
@@ -681,6 +692,19 @@ void tms32082_mp_device::execute_short_imm()
break;
}
+ case 0x45: // jsr.a
+ {
+ int link = OP_LINK();
+ int base = OP_BASE();
+ INT32 offset = OP_SIMM15();
+
+ if (link)
+ m_reg[link] = m_fetchpc;
+
+ m_fetchpc = m_reg[base] + offset;
+ break;
+ }
+
case 0x48: // bbz
{
int bitnum = OP_BITNUM() ^ 0x1f;
@@ -888,6 +912,38 @@ void tms32082_mp_device::execute_reg_long_imm()
break;
}
+ case 0x1a: // shift.es
+ {
+ int r = (m_ir & (1 << 10));
+ int inv = (m_ir & (1 << 11));
+ int rot = m_reg[OP_ROTATE()];
+ int end = OP_ENDMASK();
+ UINT32 source = m_reg[OP_RS()];
+ int rd = OP_RD();
+
+ UINT32 endmask = end ? SHIFT_MASK[end ? end : 32] : m_reg[OP_ROTATE()+1];
+ if (inv) endmask = ~endmask;
+
+ int shift = r ? 32-rot : rot;
+ UINT32 shiftmask = SHIFT_MASK[shift ? shift : 32];
+ UINT32 compmask = endmask & shiftmask;
+
+ UINT32 res = 0;
+ if (r) // right
+ {
+ res = ROTATE_R(source, rot) & compmask;
+ res = SIGN_EXTEND(res, rot);
+ }
+ else // left
+ {
+ res = ROTATE_L(source, rot) & compmask;
+ }
+
+ if (rd)
+ m_reg[rd] = res;
+ break;
+ }
+
case 0x1c: // shift.iz
{
int r = (m_ir & (1 << 10));
@@ -965,6 +1021,17 @@ void tms32082_mp_device::execute_reg_long_imm()
break;
}
+ case 0x3a:
+ case 0x3b: // or.ft
+ {
+ int rd = OP_RD();
+ int rs = OP_RS();
+
+ if (rd)
+ m_reg[rd] = m_reg[rs] | ~(has_imm ? imm32 : m_reg[OP_SRC1()]);
+ break;
+ }
+
case 0x40:
case 0x41:
case 0x48:
diff --git a/src/emu/cpu/tms32082/tms32082.c b/src/devices/cpu/tms32082/tms32082.c
index 56d97713b45..6ce5a2e2c80 100644
--- a/src/emu/cpu/tms32082/tms32082.c
+++ b/src/devices/cpu/tms32082/tms32082.c
@@ -197,6 +197,9 @@ void tms32082_mp_device::device_start()
state_add(MP_IE, "ie", m_ie).formatstr("%08X");
state_add(MP_INTPEN, "intpen", m_intpen).formatstr("%08X");
+ state_add(MP_TCOUNT, "tcount", m_tcount).formatstr("%08X");
+ state_add(MP_TSCALE, "tscale", m_tscale).formatstr("%08X");
+
state_add(STATE_GENPC, "curpc", m_pc).noshow();
m_program = &space(AS_PROGRAM);
@@ -283,6 +286,55 @@ void tms32082_mp_device::processor_command(UINT32 command)
{
// simulate PP behavior for now...
m_program->write_dword(0x00000084, 3);
+
+ UINT32 num = m_program->read_dword(0x90);
+
+ printf("PP num %d\n", num);
+
+ /*
+ UINT32 ra = 0x1000280;
+
+ printf("FIFO push:\n");
+
+ for (int i=0; i < num; i++)
+ {
+ printf("Entry %d:\n", i);
+ for (int k=0; k < 6; k++)
+ {
+ for (int l=0; l < 4; l++)
+ {
+ UINT32 dd = m_program->read_dword(ra);
+ ra += 4;
+
+ printf("%08X(%f) ", dd, u2f(dd));
+ }
+ printf("\n");
+ }
+ printf("\n");
+ }
+ */
+
+ UINT32 ra = 0x1000280;
+
+ int oldnum = m_program->read_dword(0x600ffffc);
+ UINT32 rb = 0x60000000 + (oldnum * 0x60);
+
+ for (int i=0; i < num; i++)
+ {
+ for (int k=0; k < 24; k++)
+ {
+ UINT32 dd = m_program->read_dword(ra);
+ ra += 4;
+
+ m_program->write_dword(rb, dd);
+ rb += 4;
+ }
+ }
+ m_program->write_dword(0x600ffffc, oldnum+num);
+
+ m_program->write_dword(0x00000090, 0);
+ m_program->write_dword(0x00000094, num);
+
}
}
// PP1
@@ -315,6 +367,9 @@ UINT32 tms32082_mp_device::read_creg(int reg)
case 0xa: // PPERROR
return 0xe0000;
+ case 0xe: // TCOUNT
+ return m_tcount;
+
case 0x4000: // IN0P
return m_in0p;
@@ -358,6 +413,10 @@ void tms32082_mp_device::write_creg(int reg, UINT32 data)
printf("IE = %08X\n", data);
break;
+ case 0xe: // TCOUNT
+ m_tcount = data;
+ break;
+
case 0x4000: // IN0P
m_in0p = data;
break;
@@ -453,6 +512,13 @@ void tms32082_mp_device::execute_run()
m_ir = fetch();
execute();
+ m_tcount--;
+ if (m_tcount < 0)
+ {
+ // TODO: timer interrupt
+ m_tcount = m_tscale;
+ }
+
m_icount--;
};
diff --git a/src/emu/cpu/tms32082/tms32082.h b/src/devices/cpu/tms32082/tms32082.h
index c08fffa3640..494f1580504 100644
--- a/src/emu/cpu/tms32082/tms32082.h
+++ b/src/devices/cpu/tms32082/tms32082.h
@@ -55,7 +55,9 @@ public:
MP_IN1P,
MP_OUTP,
MP_IE,
- MP_INTPEN
+ MP_INTPEN,
+ MP_TCOUNT,
+ MP_TSCALE
};
enum
@@ -127,6 +129,9 @@ protected:
UINT32 m_epc;
UINT32 m_eip;
+ UINT32 m_tcount;
+ UINT32 m_tscale;
+
UINT32 m_param_ram[0x800];
int m_icount;
diff --git a/src/emu/cpu/tms34010/34010dsm.c b/src/devices/cpu/tms34010/34010dsm.c
index 15136885da4..15136885da4 100644
--- a/src/emu/cpu/tms34010/34010dsm.c
+++ b/src/devices/cpu/tms34010/34010dsm.c
diff --git a/src/emu/cpu/tms34010/34010fld.c b/src/devices/cpu/tms34010/34010fld.c
index ca05039dac0..ca05039dac0 100644
--- a/src/emu/cpu/tms34010/34010fld.c
+++ b/src/devices/cpu/tms34010/34010fld.c
diff --git a/src/emu/cpu/tms34010/34010gfx.c b/src/devices/cpu/tms34010/34010gfx.c
index 15394269a77..15394269a77 100644
--- a/src/emu/cpu/tms34010/34010gfx.c
+++ b/src/devices/cpu/tms34010/34010gfx.c
diff --git a/src/emu/cpu/tms34010/34010ops.c b/src/devices/cpu/tms34010/34010ops.c
index 6674d7a1faa..6674d7a1faa 100644
--- a/src/emu/cpu/tms34010/34010ops.c
+++ b/src/devices/cpu/tms34010/34010ops.c
diff --git a/src/emu/cpu/tms34010/34010ops.h b/src/devices/cpu/tms34010/34010ops.h
index 6dad233c034..6dad233c034 100644
--- a/src/emu/cpu/tms34010/34010ops.h
+++ b/src/devices/cpu/tms34010/34010ops.h
diff --git a/src/emu/cpu/tms34010/34010tbl.c b/src/devices/cpu/tms34010/34010tbl.c
index 2cef83dcb9c..2cef83dcb9c 100644
--- a/src/emu/cpu/tms34010/34010tbl.c
+++ b/src/devices/cpu/tms34010/34010tbl.c
diff --git a/src/emu/cpu/tms34010/dis34010.c b/src/devices/cpu/tms34010/dis34010.c
index 19e3338a7d2..19e3338a7d2 100644
--- a/src/emu/cpu/tms34010/dis34010.c
+++ b/src/devices/cpu/tms34010/dis34010.c
diff --git a/src/emu/cpu/tms34010/makefile b/src/devices/cpu/tms34010/makefile
index 9d2d0cedba9..9d2d0cedba9 100644
--- a/src/emu/cpu/tms34010/makefile
+++ b/src/devices/cpu/tms34010/makefile
diff --git a/src/emu/cpu/tms34010/tms34010.c b/src/devices/cpu/tms34010/tms34010.c
index 4faf2967bc8..4faf2967bc8 100644
--- a/src/emu/cpu/tms34010/tms34010.c
+++ b/src/devices/cpu/tms34010/tms34010.c
diff --git a/src/emu/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h
index 70d453cda6e..70d453cda6e 100644
--- a/src/emu/cpu/tms34010/tms34010.h
+++ b/src/devices/cpu/tms34010/tms34010.h
diff --git a/src/emu/cpu/tms57002/57002dsm.c b/src/devices/cpu/tms57002/57002dsm.c
index 960054806fc..960054806fc 100644
--- a/src/emu/cpu/tms57002/57002dsm.c
+++ b/src/devices/cpu/tms57002/57002dsm.c
diff --git a/src/emu/cpu/tms57002/tms57002.c b/src/devices/cpu/tms57002/tms57002.c
index fb55dfa916c..fb55dfa916c 100644
--- a/src/emu/cpu/tms57002/tms57002.c
+++ b/src/devices/cpu/tms57002/tms57002.c
diff --git a/src/emu/cpu/tms57002/tms57002.h b/src/devices/cpu/tms57002/tms57002.h
index cd450ab578b..cd450ab578b 100644
--- a/src/emu/cpu/tms57002/tms57002.h
+++ b/src/devices/cpu/tms57002/tms57002.h
diff --git a/src/emu/cpu/tms57002/tms57kdec.c b/src/devices/cpu/tms57002/tms57kdec.c
index b71d0695141..b71d0695141 100644
--- a/src/emu/cpu/tms57002/tms57kdec.c
+++ b/src/devices/cpu/tms57002/tms57kdec.c
diff --git a/src/emu/cpu/tms57002/tmsinstr.lst b/src/devices/cpu/tms57002/tmsinstr.lst
index bcae2967949..bcae2967949 100644
--- a/src/emu/cpu/tms57002/tmsinstr.lst
+++ b/src/devices/cpu/tms57002/tmsinstr.lst
diff --git a/src/emu/cpu/tms57002/tmsmake.py b/src/devices/cpu/tms57002/tmsmake.py
index c822599e7d2..c822599e7d2 100755
--- a/src/emu/cpu/tms57002/tmsmake.py
+++ b/src/devices/cpu/tms57002/tmsmake.py
diff --git a/src/emu/cpu/tms7000/7000dasm.c b/src/devices/cpu/tms7000/7000dasm.c
index e265ef1db7e..e265ef1db7e 100644
--- a/src/emu/cpu/tms7000/7000dasm.c
+++ b/src/devices/cpu/tms7000/7000dasm.c
diff --git a/src/emu/cpu/tms7000/tms7000.c b/src/devices/cpu/tms7000/tms7000.c
index 99451e30d6b..99451e30d6b 100644
--- a/src/emu/cpu/tms7000/tms7000.c
+++ b/src/devices/cpu/tms7000/tms7000.c
diff --git a/src/emu/cpu/tms7000/tms7000.h b/src/devices/cpu/tms7000/tms7000.h
index 92effc0d079..92effc0d079 100644
--- a/src/emu/cpu/tms7000/tms7000.h
+++ b/src/devices/cpu/tms7000/tms7000.h
diff --git a/src/emu/cpu/tms7000/tms70op.inc b/src/devices/cpu/tms7000/tms70op.inc
index f1aeef7be3c..f1aeef7be3c 100644
--- a/src/emu/cpu/tms7000/tms70op.inc
+++ b/src/devices/cpu/tms7000/tms70op.inc
diff --git a/src/emu/cpu/tms9900/9900dasm.c b/src/devices/cpu/tms9900/9900dasm.c
index 7b3153e6c4c..7b3153e6c4c 100644
--- a/src/emu/cpu/tms9900/9900dasm.c
+++ b/src/devices/cpu/tms9900/9900dasm.c
diff --git a/src/emu/cpu/tms9900/99xxcore.h b/src/devices/cpu/tms9900/99xxcore.h
index cb94fac286f..cb94fac286f 100644
--- a/src/emu/cpu/tms9900/99xxcore.h
+++ b/src/devices/cpu/tms9900/99xxcore.h
diff --git a/src/emu/cpu/tms9900/ti990_10.c b/src/devices/cpu/tms9900/ti990_10.c
index b6cd8d32d41..b6cd8d32d41 100644
--- a/src/emu/cpu/tms9900/ti990_10.c
+++ b/src/devices/cpu/tms9900/ti990_10.c
diff --git a/src/emu/cpu/tms9900/ti990_10.h b/src/devices/cpu/tms9900/ti990_10.h
index f1d4e20ce3a..f1d4e20ce3a 100644
--- a/src/emu/cpu/tms9900/ti990_10.h
+++ b/src/devices/cpu/tms9900/ti990_10.h
diff --git a/src/emu/cpu/tms9900/tms9900.c b/src/devices/cpu/tms9900/tms9900.c
index 0029d9cf392..0029d9cf392 100644
--- a/src/emu/cpu/tms9900/tms9900.c
+++ b/src/devices/cpu/tms9900/tms9900.c
diff --git a/src/emu/cpu/tms9900/tms9900.h b/src/devices/cpu/tms9900/tms9900.h
index 8e7f19042c6..8e7f19042c6 100644
--- a/src/emu/cpu/tms9900/tms9900.h
+++ b/src/devices/cpu/tms9900/tms9900.h
diff --git a/src/emu/cpu/tms9900/tms9980a.c b/src/devices/cpu/tms9900/tms9980a.c
index 054a293a403..054a293a403 100644
--- a/src/emu/cpu/tms9900/tms9980a.c
+++ b/src/devices/cpu/tms9900/tms9980a.c
diff --git a/src/emu/cpu/tms9900/tms9980a.h b/src/devices/cpu/tms9900/tms9980a.h
index 82492d6073a..82492d6073a 100644
--- a/src/emu/cpu/tms9900/tms9980a.h
+++ b/src/devices/cpu/tms9900/tms9980a.h
diff --git a/src/emu/cpu/tms9900/tms9995.c b/src/devices/cpu/tms9900/tms9995.c
index d561a0550c9..ae9248fd82d 100644
--- a/src/emu/cpu/tms9900/tms9995.c
+++ b/src/devices/cpu/tms9900/tms9995.c
@@ -1412,7 +1412,7 @@ void tms9995_device::decode(UINT16 inst)
if (decoded == NULL)
{
// not found
- logerror("tms9995: Unknown opcode %04x, will trigger MID\n", inst);
+ logerror("tms9995: Undefined opcode %04x at logical address %04x, will trigger MID\n", inst, PC);
m_decoded[dindex].IR = 0;
m_decoded[dindex].command = MID;
}
diff --git a/src/emu/cpu/tms9900/tms9995.h b/src/devices/cpu/tms9900/tms9995.h
index 81e2e560505..81e2e560505 100644
--- a/src/emu/cpu/tms9900/tms9995.h
+++ b/src/devices/cpu/tms9900/tms9995.h
diff --git a/src/emu/cpu/tms9900/tms99com.h b/src/devices/cpu/tms9900/tms99com.h
index 3a1aeeb57ee..3a1aeeb57ee 100644
--- a/src/emu/cpu/tms9900/tms99com.h
+++ b/src/devices/cpu/tms9900/tms99com.h
diff --git a/src/emu/cpu/ucom4/ucom4.c b/src/devices/cpu/ucom4/ucom4.c
index d480b04fce5..0c6bd280358 100644
--- a/src/emu/cpu/ucom4/ucom4.c
+++ b/src/devices/cpu/ucom4/ucom4.c
@@ -12,6 +12,11 @@
TODO:
- what happens with uCOM-43 opcodes on an uCOM-44/45 MCU?
- what's the data after the ROM data for? (eg. 2000-2047, official ROM size is 2000)
+ - is DPh internally 3-bit or 4-bit? (currently assume 4-bit, it could have effect
+ on specific uCOM-43 exchange opcodes)
+ - RAM access from 0x50-0x7f on data_96x4
+ - invalid port accesses via DPl
+ - documentation is conflicting if IRQ is level or edge triggered
*/
@@ -21,6 +26,7 @@
// uCOM-43 products: 2000x8 ROM, RAM size custom, supports full instruction set
const device_type NEC_D553 = &device_creator<upd553_cpu_device>; // 42-pin PMOS, 35 pins for I/O, Open Drain output, 96x4 RAM
+const device_type NEC_D557L = &device_creator<upd557l_cpu_device>; // 28-pin PMOS, 21 pins for I/O, Open Drain output, 96x4 RAM
const device_type NEC_D650 = &device_creator<upd650_cpu_device>; // 42-pin CMOS, 35 pins for I/O, push-pull output, 96x4 RAM
// uCOM-44 products: 1000x8 ROM, 64x4 RAM, does not support external interrupt
@@ -56,6 +62,10 @@ upd553_cpu_device::upd553_cpu_device(const machine_config &mconfig, const char *
: ucom4_cpu_device(mconfig, NEC_D553, "uPD553", tag, owner, clock, NEC_UCOM43, 3 /* stack levels */, 11 /* prg width */, ADDRESS_MAP_NAME(program_2k), 7 /* data width */, ADDRESS_MAP_NAME(data_96x4), "upd553", __FILE__)
{ }
+upd557l_cpu_device::upd557l_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : ucom4_cpu_device(mconfig, NEC_D557L, "uPD557L", tag, owner, clock, NEC_UCOM43, 3, 11, ADDRESS_MAP_NAME(program_2k), 7, ADDRESS_MAP_NAME(data_96x4), "upd557l", __FILE__)
+{ }
+
upd650_cpu_device::upd650_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: ucom4_cpu_device(mconfig, NEC_D650, "uPD650", tag, owner, clock, NEC_UCOM43, 3, 11, ADDRESS_MAP_NAME(program_2k), 7, ADDRESS_MAP_NAME(data_96x4), "upd650", __FILE__)
{ }
@@ -116,10 +126,10 @@ void ucom4_cpu_device::device_start()
m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ucom4_cpu_device::simple_timer_cb), this));
// resolve callbacks
- m_read_a.resolve_safe(0xf);
- m_read_b.resolve_safe(0xf);
- m_read_c.resolve_safe(0xf);
- m_read_d.resolve_safe(0xf);
+ m_read_a.resolve_safe(0);
+ m_read_b.resolve_safe(0);
+ m_read_c.resolve_safe(0);
+ m_read_d.resolve_safe(0);
m_write_c.resolve_safe();
m_write_d.resolve_safe();
@@ -203,6 +213,90 @@ void ucom4_cpu_device::device_reset()
//-------------------------------------------------
+// i/o handling
+//-------------------------------------------------
+
+// default:
+// A,B are inputs, C,D are input/output, E,F,G,H,I are output
+
+UINT8 ucom4_cpu_device::input_r(int index)
+{
+ index &= 0xf;
+ UINT8 inp = 0;
+
+ switch (index)
+ {
+ case NEC_UCOM4_PORTA: inp = m_read_a(index, 0xff); break;
+ case NEC_UCOM4_PORTB: inp = m_read_b(index, 0xff); break;
+ case NEC_UCOM4_PORTC: inp = m_read_c(index, 0xff) | m_port_out[index]; break;
+ case NEC_UCOM4_PORTD: inp = m_read_d(index, 0xff) | m_port_out[index]; break;
+
+ default:
+ logerror("%s read from unknown port %c at $%03X\n", tag(), 'A' + index, m_prev_pc);
+ break;
+ }
+
+ return inp & 0xf;
+}
+
+void ucom4_cpu_device::output_w(int index, UINT8 data)
+{
+ index &= 0xf;
+ data &= 0xf;
+
+ switch (index)
+ {
+ case NEC_UCOM4_PORTC: m_write_c(index, data, 0xff); break;
+ case NEC_UCOM4_PORTD: m_write_d(index, data, 0xff); break;
+ case NEC_UCOM4_PORTE: m_write_e(index, data, 0xff); break;
+ case NEC_UCOM4_PORTF: m_write_f(index, data, 0xff); break;
+ case NEC_UCOM4_PORTG: m_write_g(index, data, 0xff); break;
+ case NEC_UCOM4_PORTH: m_write_h(index, data, 0xff); break;
+ case NEC_UCOM4_PORTI: m_write_i(index, data & 7, 0xff); break;
+
+ default:
+ logerror("%s write to unknown port %c = $%X at $%03X\n", tag(), 'A' + index, data, m_prev_pc);
+ break;
+ }
+
+ m_port_out[index] = data;
+}
+
+// uPD557L:
+// ports B,H,I are stripped, port G is reduced to 1 pin
+
+UINT8 upd557l_cpu_device::input_r(int index)
+{
+ index &= 0xf;
+
+ if (index == NEC_UCOM4_PORTB)
+ logerror("%s read from unknown port %c at $%03X\n", tag(), 'A' + index, m_prev_pc);
+ else
+ return ucom4_cpu_device::input_r(index);
+
+ return 0;
+}
+
+void upd557l_cpu_device::output_w(int index, UINT8 data)
+{
+ index &= 0xf;
+ data &= 0xf;
+
+ if (index == NEC_UCOM4_PORTH || index == NEC_UCOM4_PORTI)
+ logerror("%s write to unknown port %c = $%X at $%03X\n", tag(), 'A' + index, data, m_prev_pc);
+ else
+ {
+ // only G0 for port G
+ if (index == NEC_UCOM4_PORTG)
+ data &= 1;
+
+ ucom4_cpu_device::output_w(index, data);
+ }
+}
+
+
+
+//-------------------------------------------------
// interrupt
//-------------------------------------------------
diff --git a/src/emu/cpu/ucom4/ucom4.h b/src/devices/cpu/ucom4/ucom4.h
index e6165bcde28..9b0651b6703 100644
--- a/src/emu/cpu/ucom4/ucom4.h
+++ b/src/devices/cpu/ucom4/ucom4.h
@@ -207,6 +207,9 @@ protected:
devcb_write8 m_write_h;
devcb_write8 m_write_i;
+ virtual UINT8 input_r(int index);
+ virtual void output_w(int index, UINT8 data);
+
// misc internal helpers
void increment_pc();
void fetch_arg();
@@ -216,8 +219,6 @@ protected:
void ram_w(UINT8 data);
void pop_stack();
void push_stack();
- UINT8 input_r(int index);
- void output_w(int index, UINT8 data);
bool check_op_43();
TIMER_CALLBACK_MEMBER( simple_timer_cb );
@@ -318,6 +319,17 @@ public:
};
+class upd557l_cpu_device : public ucom4_cpu_device
+{
+public:
+ upd557l_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+protected:
+ virtual UINT8 input_r(int index);
+ virtual void output_w(int index, UINT8 data);
+};
+
+
class upd650_cpu_device : public ucom4_cpu_device
{
public:
@@ -334,6 +346,7 @@ public:
extern const device_type NEC_D553;
+extern const device_type NEC_D557L;
extern const device_type NEC_D650;
extern const device_type NEC_D552;
diff --git a/src/emu/cpu/ucom4/ucom4d.c b/src/devices/cpu/ucom4/ucom4d.c
index 14adfefbc79..14adfefbc79 100644
--- a/src/emu/cpu/ucom4/ucom4d.c
+++ b/src/devices/cpu/ucom4/ucom4d.c
diff --git a/src/emu/cpu/ucom4/ucom4op.c b/src/devices/cpu/ucom4/ucom4op.c
index 11475ee254d..a9c5c0fe892 100644
--- a/src/emu/cpu/ucom4/ucom4op.c
+++ b/src/devices/cpu/ucom4/ucom4op.c
@@ -34,48 +34,9 @@ void ucom4_cpu_device::push_stack()
m_stack[0] = m_pc;
}
-UINT8 ucom4_cpu_device::input_r(int index)
-{
- index &= 0xf;
- UINT8 inp = 0xf;
-
- switch (index)
- {
- case NEC_UCOM4_PORTA: inp = m_read_a(index, 0xff); break;
- case NEC_UCOM4_PORTB: inp = m_read_b(index, 0xff); break;
- case NEC_UCOM4_PORTC: inp = m_read_c(index, 0xff); break;
- case NEC_UCOM4_PORTD: inp = m_read_d(index, 0xff); break;
-
- default:
- logerror("%s read from unknown port %c at $%03X\n", tag(), 'A' + index, m_prev_pc);
- break;
- }
-
- return inp & 0xf;
-}
-
-void ucom4_cpu_device::output_w(int index, UINT8 data)
-{
- index &= 0xf;
- data &= 0xf;
- switch (index)
- {
- case NEC_UCOM4_PORTC: m_write_c(index, data, 0xff); break;
- case NEC_UCOM4_PORTD: m_write_d(index, data, 0xff); break;
- case NEC_UCOM4_PORTE: m_write_e(index, data, 0xff); break;
- case NEC_UCOM4_PORTF: m_write_f(index, data, 0xff); break;
- case NEC_UCOM4_PORTG: m_write_g(index, data, 0xff); break;
- case NEC_UCOM4_PORTH: m_write_h(index, data, 0xff); break;
- case NEC_UCOM4_PORTI: m_write_i(index, data & 7, 0xff); break;
- default:
- logerror("%s write to unknown port %c = $%X at $%03X\n", tag(), 'A' + index, data & 0xf, m_prev_pc);
- break;
- }
-
- m_port_out[index] = data;
-}
+// basic instruction set
void ucom4_cpu_device::op_illegal()
{
@@ -83,9 +44,6 @@ void ucom4_cpu_device::op_illegal()
}
-
-// basic instruction set
-
// Load
void ucom4_cpu_device::op_li()
diff --git a/src/emu/cpu/uml.c b/src/devices/cpu/uml.c
index f7b0584431f..f7b0584431f 100644
--- a/src/emu/cpu/uml.c
+++ b/src/devices/cpu/uml.c
diff --git a/src/emu/cpu/uml.h b/src/devices/cpu/uml.h
index 96960bd910e..96960bd910e 100644
--- a/src/emu/cpu/uml.h
+++ b/src/devices/cpu/uml.h
diff --git a/src/emu/cpu/unsp/unsp.c b/src/devices/cpu/unsp/unsp.c
index 5b3d89ca822..717ddb2a0de 100644
--- a/src/emu/cpu/unsp/unsp.c
+++ b/src/devices/cpu/unsp/unsp.c
@@ -4,7 +4,7 @@
*
* SunPlus u'nSP core
*
-* by Harmony
+* by Ryan Holtz
*
\**************************/
diff --git a/src/emu/cpu/unsp/unsp.h b/src/devices/cpu/unsp/unsp.h
index 8d1ca02dd7e..219b1f6b9b0 100644
--- a/src/emu/cpu/unsp/unsp.h
+++ b/src/devices/cpu/unsp/unsp.h
@@ -4,7 +4,7 @@
*
* SunPlus u'nSP emulator
*
-* by Harmony
+* by Ryan Holtz
*
\**************************/
diff --git a/src/emu/cpu/unsp/unspdasm.c b/src/devices/cpu/unsp/unspdasm.c
index 19399dbf157..f755a3fcf5a 100644
--- a/src/emu/cpu/unsp/unspdasm.c
+++ b/src/devices/cpu/unsp/unspdasm.c
@@ -4,7 +4,7 @@
*
* SunPlus u'nSP disassembler
*
-* by Harmony
+* by Ryan Holtz
*
\**************************/
diff --git a/src/emu/cpu/upd7725/dasm7725.c b/src/devices/cpu/upd7725/dasm7725.c
index 987002412ac..987002412ac 100644
--- a/src/emu/cpu/upd7725/dasm7725.c
+++ b/src/devices/cpu/upd7725/dasm7725.c
diff --git a/src/emu/cpu/upd7725/upd7725.c b/src/devices/cpu/upd7725/upd7725.c
index d422eae21b0..d422eae21b0 100644
--- a/src/emu/cpu/upd7725/upd7725.c
+++ b/src/devices/cpu/upd7725/upd7725.c
diff --git a/src/emu/cpu/upd7725/upd7725.h b/src/devices/cpu/upd7725/upd7725.h
index d10094073c3..d10094073c3 100644
--- a/src/emu/cpu/upd7725/upd7725.h
+++ b/src/devices/cpu/upd7725/upd7725.h
diff --git a/src/emu/cpu/upd7810/upd7810.c b/src/devices/cpu/upd7810/upd7810.c
index f22ccb07b4f..f22ccb07b4f 100644
--- a/src/emu/cpu/upd7810/upd7810.c
+++ b/src/devices/cpu/upd7810/upd7810.c
diff --git a/src/emu/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h
index cdea4f376b8..cdea4f376b8 100644
--- a/src/emu/cpu/upd7810/upd7810.h
+++ b/src/devices/cpu/upd7810/upd7810.h
diff --git a/src/emu/cpu/upd7810/upd7810_dasm.c b/src/devices/cpu/upd7810/upd7810_dasm.c
index 63e7291ff5e..63e7291ff5e 100644
--- a/src/emu/cpu/upd7810/upd7810_dasm.c
+++ b/src/devices/cpu/upd7810/upd7810_dasm.c
diff --git a/src/emu/cpu/upd7810/upd7810_macros.h b/src/devices/cpu/upd7810/upd7810_macros.h
index 27783fb5d9a..27783fb5d9a 100644
--- a/src/emu/cpu/upd7810/upd7810_macros.h
+++ b/src/devices/cpu/upd7810/upd7810_macros.h
diff --git a/src/emu/cpu/upd7810/upd7810_opcodes.c b/src/devices/cpu/upd7810/upd7810_opcodes.c
index ab4589222c1..ab4589222c1 100644
--- a/src/emu/cpu/upd7810/upd7810_opcodes.c
+++ b/src/devices/cpu/upd7810/upd7810_opcodes.c
diff --git a/src/emu/cpu/upd7810/upd7810_table.c b/src/devices/cpu/upd7810/upd7810_table.c
index f150af4fc2f..f150af4fc2f 100644
--- a/src/emu/cpu/upd7810/upd7810_table.c
+++ b/src/devices/cpu/upd7810/upd7810_table.c
diff --git a/src/emu/cpu/v30mz/v30mz.c b/src/devices/cpu/v30mz/v30mz.c
index 3bc7c28236a..3bc7c28236a 100644
--- a/src/emu/cpu/v30mz/v30mz.c
+++ b/src/devices/cpu/v30mz/v30mz.c
diff --git a/src/emu/cpu/v30mz/v30mz.h b/src/devices/cpu/v30mz/v30mz.h
index 35f6ca7dbe8..35f6ca7dbe8 100644
--- a/src/emu/cpu/v30mz/v30mz.h
+++ b/src/devices/cpu/v30mz/v30mz.h
diff --git a/src/emu/cpu/v60/am.inc b/src/devices/cpu/v60/am.inc
index aa9c9687c8e..aa9c9687c8e 100644
--- a/src/emu/cpu/v60/am.inc
+++ b/src/devices/cpu/v60/am.inc
diff --git a/src/emu/cpu/v60/am1.inc b/src/devices/cpu/v60/am1.inc
index cc5e0f4a1fd..cc5e0f4a1fd 100644
--- a/src/emu/cpu/v60/am1.inc
+++ b/src/devices/cpu/v60/am1.inc
diff --git a/src/emu/cpu/v60/am2.inc b/src/devices/cpu/v60/am2.inc
index 2b01d324979..2b01d324979 100644
--- a/src/emu/cpu/v60/am2.inc
+++ b/src/devices/cpu/v60/am2.inc
diff --git a/src/emu/cpu/v60/am3.inc b/src/devices/cpu/v60/am3.inc
index 93af406f266..93af406f266 100644
--- a/src/emu/cpu/v60/am3.inc
+++ b/src/devices/cpu/v60/am3.inc
diff --git a/src/emu/cpu/v60/op12.inc b/src/devices/cpu/v60/op12.inc
index 319e9995595..319e9995595 100644
--- a/src/emu/cpu/v60/op12.inc
+++ b/src/devices/cpu/v60/op12.inc
diff --git a/src/emu/cpu/v60/op2.inc b/src/devices/cpu/v60/op2.inc
index 98a8612f345..98a8612f345 100644
--- a/src/emu/cpu/v60/op2.inc
+++ b/src/devices/cpu/v60/op2.inc
diff --git a/src/emu/cpu/v60/op3.inc b/src/devices/cpu/v60/op3.inc
index 0f014d40909..0f014d40909 100644
--- a/src/emu/cpu/v60/op3.inc
+++ b/src/devices/cpu/v60/op3.inc
diff --git a/src/emu/cpu/v60/op4.inc b/src/devices/cpu/v60/op4.inc
index ca5b4cef4c6..ca5b4cef4c6 100644
--- a/src/emu/cpu/v60/op4.inc
+++ b/src/devices/cpu/v60/op4.inc
diff --git a/src/emu/cpu/v60/op5.inc b/src/devices/cpu/v60/op5.inc
index be6084eb6e1..be6084eb6e1 100644
--- a/src/emu/cpu/v60/op5.inc
+++ b/src/devices/cpu/v60/op5.inc
diff --git a/src/emu/cpu/v60/op6.inc b/src/devices/cpu/v60/op6.inc
index 087680534f9..087680534f9 100644
--- a/src/emu/cpu/v60/op6.inc
+++ b/src/devices/cpu/v60/op6.inc
diff --git a/src/emu/cpu/v60/op7a.inc b/src/devices/cpu/v60/op7a.inc
index 67a7b0fb82c..67a7b0fb82c 100644
--- a/src/emu/cpu/v60/op7a.inc
+++ b/src/devices/cpu/v60/op7a.inc
diff --git a/src/emu/cpu/v60/optable.inc b/src/devices/cpu/v60/optable.inc
index 87de19686bc..87de19686bc 100644
--- a/src/emu/cpu/v60/optable.inc
+++ b/src/devices/cpu/v60/optable.inc
diff --git a/src/emu/cpu/v60/v60.c b/src/devices/cpu/v60/v60.c
index 38b17139fb7..2a770739e25 100644
--- a/src/emu/cpu/v60/v60.c
+++ b/src/devices/cpu/v60/v60.c
@@ -8,6 +8,71 @@
// Emulation for the NEC V60 (uPD70615) and V70 (uPD70632) CPUs
//
+/*
+Taken from the NEC Semiconductor Selection Guide Guide Book (Oct. 1995):
+
+uPD70615 (V60)
+Features:
+- Virtual memory (paging method)
+- Level protection architecture - 4-level hierarchical protection function
+ for system multi-programming.
+- Abundant general registers - Thirty two 32-bit general registers for
+ optimizing compiler
+- Refined instruction set - 2-address method: Arbitrary addressing mode
+ can be used independently for source operand and destination operand.
+- Abundant address modes and data types - Auto increment/decrement mode
+ for string process, and memory indirect addressing for pointer operation
+- High cost-to performance chip
+- No multiprocessor system - no FRM function for increasing system
+ reliability using two or more processors.
+- No V20/V30 simulation mode
+Address bus: 24 bits
+Data bus: 16 bits
+Memory space: 4G bytes
+Operating frequency: 16 MHz
+Package: 120-pin QFP
+
+uPD70616 (V60)
+Features:
+- Virtual memory (paging method)
+- Level protection architecture - 4-level hierarchical protection function
+ for system multi-programming.
+- Abundant general registers - Thirty two 32-bit general registers for
+ optimizing compiler
+- Refined instruction set - 2-address method: Arbitrary addressing mode
+ can be used independently for source operand and destination operand.
+- Abundant address modes and data types - Auto increment/decrement mode
+ for string process, and memory indirect addressing for pointer operation
+- Multiprocessor system - FRM function for increasing system reliability
+ using two or more processors.
+- V20/V30 simulation mode
+Address bus: 24 bits
+Data bus: 16 bits
+Memory space: 4G bytes
+Operating frequency: 16 MHz
+Package: 68-pin PGA
+
+uPD70632 (V70)
+Features:
+- Virtual memory (paging method)
+- Level protection architecture - 4-level hierarchical protection function
+ for system multi-programming.
+- Abundant general registers - Thirty two 32-bit general registers for
+ optimizing compiler
+- Refined instruction set - 2-address method: Arbitrary addressing mode
+ can be used independently for source operand and destination operand.
+- Abundant address modes and data types - Auto increment/decrement mode
+ for string process, and memory indirect addressing for pointer operation
+- Multiprocessor system - FRM function for increasing system reliability
+ using two or more processors.
+- V20/V30 simulation mode
+Address bus: 32 bits
+Data bus: 32 bits
+Memory space: 4G bytes
+Operating frequency: 20 MHz
+Package: 132-pin PGA, 200-pin QFP
+*/
+
#include "emu.h"
#include "debugger.h"
#include "v60.h"
diff --git a/src/emu/cpu/v60/v60.h b/src/devices/cpu/v60/v60.h
index 28cba0b15c9..28cba0b15c9 100644
--- a/src/emu/cpu/v60/v60.h
+++ b/src/devices/cpu/v60/v60.h
diff --git a/src/emu/cpu/v60/v60d.c b/src/devices/cpu/v60/v60d.c
index a32268fc2b4..a32268fc2b4 100644
--- a/src/emu/cpu/v60/v60d.c
+++ b/src/devices/cpu/v60/v60d.c
diff --git a/src/emu/cpu/v810/v810.c b/src/devices/cpu/v810/v810.c
index 9e6db000949..fa41ce71986 100644
--- a/src/emu/cpu/v810/v810.c
+++ b/src/devices/cpu/v810/v810.c
@@ -636,7 +636,7 @@ UINT32 v810_device::opRETI(UINT32 op)
UINT32 v810_device::opHALT(UINT32 op)
{
- printf("V810: HALT @ %X",PC-2);
+ printf("V810: HALT @ %X\n",PC-2);
return clkIF;
}
diff --git a/src/emu/cpu/v810/v810.h b/src/devices/cpu/v810/v810.h
index c5fcf163147..c5fcf163147 100644
--- a/src/emu/cpu/v810/v810.h
+++ b/src/devices/cpu/v810/v810.h
diff --git a/src/emu/cpu/v810/v810dasm.c b/src/devices/cpu/v810/v810dasm.c
index 2f541cc73c4..2f541cc73c4 100644
--- a/src/emu/cpu/v810/v810dasm.c
+++ b/src/devices/cpu/v810/v810dasm.c
diff --git a/src/emu/cpu/vtlb.c b/src/devices/cpu/vtlb.c
index f5a488100f7..f5a488100f7 100644
--- a/src/emu/cpu/vtlb.c
+++ b/src/devices/cpu/vtlb.c
diff --git a/src/emu/cpu/vtlb.h b/src/devices/cpu/vtlb.h
index f63a0ac50f6..f63a0ac50f6 100644
--- a/src/emu/cpu/vtlb.h
+++ b/src/devices/cpu/vtlb.h
diff --git a/src/emu/cpu/x86emit.h b/src/devices/cpu/x86emit.h
index 45e1c456737..45e1c456737 100644
--- a/src/emu/cpu/x86emit.h
+++ b/src/devices/cpu/x86emit.h
diff --git a/src/emu/cpu/x86log.c b/src/devices/cpu/x86log.c
index 4c311310d96..4c311310d96 100644
--- a/src/emu/cpu/x86log.c
+++ b/src/devices/cpu/x86log.c
diff --git a/src/emu/cpu/x86log.h b/src/devices/cpu/x86log.h
index 68ca2ec5257..68ca2ec5257 100644
--- a/src/emu/cpu/x86log.h
+++ b/src/devices/cpu/x86log.h
diff --git a/src/emu/cpu/z180/z180.c b/src/devices/cpu/z180/z180.c
index 134e67dfb72..134e67dfb72 100644
--- a/src/emu/cpu/z180/z180.c
+++ b/src/devices/cpu/z180/z180.c
diff --git a/src/emu/cpu/z180/z180.h b/src/devices/cpu/z180/z180.h
index 7529280b95a..7529280b95a 100644
--- a/src/emu/cpu/z180/z180.h
+++ b/src/devices/cpu/z180/z180.h
diff --git a/src/emu/cpu/z180/z180cb.inc b/src/devices/cpu/z180/z180cb.inc
index 3a58725024e..3a58725024e 100644
--- a/src/emu/cpu/z180/z180cb.inc
+++ b/src/devices/cpu/z180/z180cb.inc
diff --git a/src/emu/cpu/z180/z180dasm.c b/src/devices/cpu/z180/z180dasm.c
index 5c83ed212b2..5c83ed212b2 100644
--- a/src/emu/cpu/z180/z180dasm.c
+++ b/src/devices/cpu/z180/z180dasm.c
diff --git a/src/emu/cpu/z180/z180dd.inc b/src/devices/cpu/z180/z180dd.inc
index bd2a9fc7137..bd2a9fc7137 100644
--- a/src/emu/cpu/z180/z180dd.inc
+++ b/src/devices/cpu/z180/z180dd.inc
diff --git a/src/emu/cpu/z180/z180ed.inc b/src/devices/cpu/z180/z180ed.inc
index 91520228f87..91520228f87 100644
--- a/src/emu/cpu/z180/z180ed.inc
+++ b/src/devices/cpu/z180/z180ed.inc
diff --git a/src/emu/cpu/z180/z180fd.inc b/src/devices/cpu/z180/z180fd.inc
index 66697a9b997..66697a9b997 100644
--- a/src/emu/cpu/z180/z180fd.inc
+++ b/src/devices/cpu/z180/z180fd.inc
diff --git a/src/emu/cpu/z180/z180op.inc b/src/devices/cpu/z180/z180op.inc
index b3005629a78..b3005629a78 100644
--- a/src/emu/cpu/z180/z180op.inc
+++ b/src/devices/cpu/z180/z180op.inc
diff --git a/src/emu/cpu/z180/z180ops.h b/src/devices/cpu/z180/z180ops.h
index 36f06a6847f..36f06a6847f 100644
--- a/src/emu/cpu/z180/z180ops.h
+++ b/src/devices/cpu/z180/z180ops.h
diff --git a/src/emu/cpu/z180/z180tbl.h b/src/devices/cpu/z180/z180tbl.h
index 4884992a5e3..4884992a5e3 100644
--- a/src/emu/cpu/z180/z180tbl.h
+++ b/src/devices/cpu/z180/z180tbl.h
diff --git a/src/emu/cpu/z180/z180xy.inc b/src/devices/cpu/z180/z180xy.inc
index e8976079dfd..e8976079dfd 100644
--- a/src/emu/cpu/z180/z180xy.inc
+++ b/src/devices/cpu/z180/z180xy.inc
diff --git a/src/emu/cpu/z8/z8.c b/src/devices/cpu/z8/z8.c
index 7db38eaf500..7db38eaf500 100644
--- a/src/emu/cpu/z8/z8.c
+++ b/src/devices/cpu/z8/z8.c
diff --git a/src/emu/cpu/z8/z8.h b/src/devices/cpu/z8/z8.h
index 3ab30695bd6..3ab30695bd6 100644
--- a/src/emu/cpu/z8/z8.h
+++ b/src/devices/cpu/z8/z8.h
diff --git a/src/emu/cpu/z8/z8dasm.c b/src/devices/cpu/z8/z8dasm.c
index 3801ca5c34b..3801ca5c34b 100644
--- a/src/emu/cpu/z8/z8dasm.c
+++ b/src/devices/cpu/z8/z8dasm.c
diff --git a/src/emu/cpu/z8/z8ops.inc b/src/devices/cpu/z8/z8ops.inc
index 4c522791b8e..4c522791b8e 100644
--- a/src/emu/cpu/z8/z8ops.inc
+++ b/src/devices/cpu/z8/z8ops.inc
diff --git a/src/emu/cpu/z80/kl5c80a12.c b/src/devices/cpu/z80/kl5c80a12.c
index 500b68d567b..500b68d567b 100644
--- a/src/emu/cpu/z80/kl5c80a12.c
+++ b/src/devices/cpu/z80/kl5c80a12.c
diff --git a/src/emu/cpu/z80/kl5c80a12.h b/src/devices/cpu/z80/kl5c80a12.h
index 3e5e35a460b..3e5e35a460b 100644
--- a/src/emu/cpu/z80/kl5c80a12.h
+++ b/src/devices/cpu/z80/kl5c80a12.h
diff --git a/src/emu/cpu/z80/tmpz84c011.c b/src/devices/cpu/z80/tmpz84c011.c
index 428dd924c71..428dd924c71 100644
--- a/src/emu/cpu/z80/tmpz84c011.c
+++ b/src/devices/cpu/z80/tmpz84c011.c
diff --git a/src/emu/cpu/z80/tmpz84c011.h b/src/devices/cpu/z80/tmpz84c011.h
index 1a5bdd83a85..1a5bdd83a85 100644
--- a/src/emu/cpu/z80/tmpz84c011.h
+++ b/src/devices/cpu/z80/tmpz84c011.h
diff --git a/src/emu/cpu/z80/tmpz84c015.c b/src/devices/cpu/z80/tmpz84c015.c
index 1677358e059..1677358e059 100644
--- a/src/emu/cpu/z80/tmpz84c015.c
+++ b/src/devices/cpu/z80/tmpz84c015.c
diff --git a/src/emu/cpu/z80/tmpz84c015.h b/src/devices/cpu/z80/tmpz84c015.h
index 225a658edc3..225a658edc3 100644
--- a/src/emu/cpu/z80/tmpz84c015.h
+++ b/src/devices/cpu/z80/tmpz84c015.h
diff --git a/src/emu/cpu/z80/z80.c b/src/devices/cpu/z80/z80.c
index 2b5e2e877f7..2b5e2e877f7 100644
--- a/src/emu/cpu/z80/z80.c
+++ b/src/devices/cpu/z80/z80.c
diff --git a/src/emu/cpu/z80/z80.h b/src/devices/cpu/z80/z80.h
index e424c4f9937..e424c4f9937 100644
--- a/src/emu/cpu/z80/z80.h
+++ b/src/devices/cpu/z80/z80.h
diff --git a/src/emu/cpu/z80/z80daisy.c b/src/devices/cpu/z80/z80daisy.c
index c1b0a5454c3..c1b0a5454c3 100644
--- a/src/emu/cpu/z80/z80daisy.c
+++ b/src/devices/cpu/z80/z80daisy.c
diff --git a/src/emu/cpu/z80/z80daisy.h b/src/devices/cpu/z80/z80daisy.h
index b4651649a20..b4651649a20 100644
--- a/src/emu/cpu/z80/z80daisy.h
+++ b/src/devices/cpu/z80/z80daisy.h
diff --git a/src/emu/cpu/z80/z80dasm.c b/src/devices/cpu/z80/z80dasm.c
index ebb965db26e..ebb965db26e 100644
--- a/src/emu/cpu/z80/z80dasm.c
+++ b/src/devices/cpu/z80/z80dasm.c
diff --git a/src/emu/cpu/z8000/8000dasm.c b/src/devices/cpu/z8000/8000dasm.c
index 91a4849da41..91a4849da41 100644
--- a/src/emu/cpu/z8000/8000dasm.c
+++ b/src/devices/cpu/z8000/8000dasm.c
diff --git a/src/emu/cpu/z8000/makedab.c b/src/devices/cpu/z8000/makedab.c
index 57668f3af85..57668f3af85 100644
--- a/src/emu/cpu/z8000/makedab.c
+++ b/src/devices/cpu/z8000/makedab.c
diff --git a/src/emu/cpu/z8000/z8000.c b/src/devices/cpu/z8000/z8000.c
index 76ff93c76b8..76ff93c76b8 100644
--- a/src/emu/cpu/z8000/z8000.c
+++ b/src/devices/cpu/z8000/z8000.c
diff --git a/src/emu/cpu/z8000/z8000.h b/src/devices/cpu/z8000/z8000.h
index 4437e0399ab..4437e0399ab 100644
--- a/src/emu/cpu/z8000/z8000.h
+++ b/src/devices/cpu/z8000/z8000.h
diff --git a/src/emu/cpu/z8000/z8000cpu.h b/src/devices/cpu/z8000/z8000cpu.h
index 1a3f9e52b0f..1a3f9e52b0f 100644
--- a/src/emu/cpu/z8000/z8000cpu.h
+++ b/src/devices/cpu/z8000/z8000cpu.h
diff --git a/src/emu/cpu/z8000/z8000dab.h b/src/devices/cpu/z8000/z8000dab.h
index 44280993803..44280993803 100644
--- a/src/emu/cpu/z8000/z8000dab.h
+++ b/src/devices/cpu/z8000/z8000dab.h
diff --git a/src/emu/cpu/z8000/z8000ops.inc b/src/devices/cpu/z8000/z8000ops.inc
index c9d0b365783..c9d0b365783 100644
--- a/src/emu/cpu/z8000/z8000ops.inc
+++ b/src/devices/cpu/z8000/z8000ops.inc
diff --git a/src/emu/cpu/z8000/z8000tbl.inc b/src/devices/cpu/z8000/z8000tbl.inc
index e4959706858..e4959706858 100644
--- a/src/emu/cpu/z8000/z8000tbl.inc
+++ b/src/devices/cpu/z8000/z8000tbl.inc
diff --git a/src/emu/imagedev/bitbngr.c b/src/devices/imagedev/bitbngr.c
index 9577d9e1efd..9577d9e1efd 100644
--- a/src/emu/imagedev/bitbngr.c
+++ b/src/devices/imagedev/bitbngr.c
diff --git a/src/emu/imagedev/bitbngr.h b/src/devices/imagedev/bitbngr.h
index 4c3b3e5b9d1..4c3b3e5b9d1 100644
--- a/src/emu/imagedev/bitbngr.h
+++ b/src/devices/imagedev/bitbngr.h
diff --git a/src/emu/imagedev/cassette.c b/src/devices/imagedev/cassette.c
index 4721a486b62..4721a486b62 100644
--- a/src/emu/imagedev/cassette.c
+++ b/src/devices/imagedev/cassette.c
diff --git a/src/emu/imagedev/cassette.h b/src/devices/imagedev/cassette.h
index 188670922cc..188670922cc 100644
--- a/src/emu/imagedev/cassette.h
+++ b/src/devices/imagedev/cassette.h
diff --git a/src/emu/imagedev/chd_cd.c b/src/devices/imagedev/chd_cd.c
index b506ebfa784..b506ebfa784 100644
--- a/src/emu/imagedev/chd_cd.c
+++ b/src/devices/imagedev/chd_cd.c
diff --git a/src/emu/imagedev/chd_cd.h b/src/devices/imagedev/chd_cd.h
index 5bdd7e4122a..5bdd7e4122a 100644
--- a/src/emu/imagedev/chd_cd.h
+++ b/src/devices/imagedev/chd_cd.h
diff --git a/src/emu/imagedev/diablo.c b/src/devices/imagedev/diablo.c
index d7d499ec523..d7d499ec523 100644
--- a/src/emu/imagedev/diablo.c
+++ b/src/devices/imagedev/diablo.c
diff --git a/src/emu/imagedev/diablo.h b/src/devices/imagedev/diablo.h
index 11e0ffe091c..11e0ffe091c 100644
--- a/src/emu/imagedev/diablo.h
+++ b/src/devices/imagedev/diablo.h
diff --git a/src/emu/imagedev/flopdrv.c b/src/devices/imagedev/flopdrv.c
index 8fafd466dae..8fafd466dae 100644
--- a/src/emu/imagedev/flopdrv.c
+++ b/src/devices/imagedev/flopdrv.c
diff --git a/src/emu/imagedev/flopdrv.h b/src/devices/imagedev/flopdrv.h
index e2511ca9a50..e2511ca9a50 100644
--- a/src/emu/imagedev/flopdrv.h
+++ b/src/devices/imagedev/flopdrv.h
diff --git a/src/emu/imagedev/floppy.c b/src/devices/imagedev/floppy.c
index 8fea5c24566..384f050e4f6 100644
--- a/src/emu/imagedev/floppy.c
+++ b/src/devices/imagedev/floppy.c
@@ -20,6 +20,8 @@
// Show step operation
#define TRACE_STEP 0
+#define FLOPSND_TAG "floppysound"
+
// device type definition
const device_type FLOPPY_CONNECTOR = &device_creator<floppy_connector>;
@@ -123,7 +125,8 @@ const floppy_format_type floppy_image_device::default_floppy_formats[] = {
floppy_connector::floppy_connector(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
device_t(mconfig, FLOPPY_CONNECTOR, "Floppy drive connector abstraction", tag, owner, clock, "floppy_connector", __FILE__),
- device_slot_interface(mconfig, *this)
+ device_slot_interface(mconfig, *this),
+ m_enable_sound(false)
{
}
@@ -144,7 +147,10 @@ void floppy_connector::device_config_complete()
{
floppy_image_device *dev = dynamic_cast<floppy_image_device *>(get_card_device());
if(dev)
+ {
dev->set_formats(formats);
+ dev->enable_sound(m_enable_sound);
+ }
}
floppy_image_device *floppy_connector::get_device()
@@ -161,7 +167,8 @@ floppy_image_device::floppy_image_device(const machine_config &mconfig, device_t
device_image_interface(mconfig, *this),
device_slot_card_interface(mconfig, *this),
image(NULL),
- fif_list(NULL)
+ fif_list(NULL),
+ m_make_sound(false)
{
extension_list[0] = '\0';
m_err = IMAGE_ERROR_INVALIDIMAGE;
@@ -262,7 +269,7 @@ void floppy_image_device::setup_write(floppy_image_format_t *_output_format)
void floppy_image_device::commit_image()
{
image_dirty = false;
- if(!output_format)
+ if(!output_format || !output_format->supports_save())
return;
io_generic io;
// Do _not_ remove this cast otherwise the pointer will be incorrect when used by the ioprocs.
@@ -304,12 +311,20 @@ void floppy_image_device::device_start()
setup_characteristics();
+ if (m_make_sound) m_sound_out = subdevice<floppy_sound_device>(FLOPSND_TAG);
+
save_item(NAME(cyl));
save_item(NAME(subcyl));
}
void floppy_image_device::device_reset()
{
+ if (m_make_sound)
+ {
+ // Have we loaded all samples? Otherwise mute the floppy.
+ m_make_sound = m_sound_out->samples_loaded();
+ }
+
revolution_start_time = attotime::never;
revolution_count = 0;
mon = 1;
@@ -358,6 +373,7 @@ floppy_image_format_t *floppy_image_device::identify(std::string filename)
bool floppy_image_device::call_load()
{
io_generic io;
+
// Do _not_ remove this cast otherwise the pointer will be incorrect when used by the ioprocs.
io.file = (device_image_interface *)this;
io.procs = &image_ioprocs;
@@ -490,6 +506,8 @@ void floppy_image_device::mon_w(int state)
cur_ready_cb(this, ready);
}
}
+
+ if (m_make_sound) m_sound_out->motor(state==0);
}
attotime floppy_image_device::time_next_index()
@@ -573,7 +591,11 @@ void floppy_image_device::stp_w(int state)
if ( cyl < tracks-1 ) cyl++;
}
if(ocyl != cyl)
+ {
if (TRACE_STEP) logerror("%s: track %d\n", tag(), cyl);
+ // Do we want a stepper sound?
+ if (m_make_sound) m_sound_out->step();
+ }
/* Update disk detection if applicable */
if (exists())
{
@@ -1032,6 +1054,231 @@ void ui_menu_control_floppy_image::handle()
}
}
+//===================================================================
+// Floppy sound
+//
+// In order to enable floppy sound you must add the line
+// MCFG_FLOPPY_DRIVE_SOUND(true)
+// after MCFG_FLOPPY_DRIVE_ADD
+// and you must put audio samples (44100Hz, mono) with names as
+// shown in floppy_sample_names into the directory samples/floppy
+// Sound will be disabled when these samples are missing.
+//
+// MZ, Aug 2015
+//===================================================================
+
+floppy_sound_device::floppy_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : samples_device(mconfig, FLOPPYSOUND, "Floppy sound", tag, owner, clock, "flopsnd", __FILE__)
+{
+ m_loaded = false;
+}
+
+void floppy_sound_device::register_for_save_states()
+{
+ save_item(NAME(m_is525));
+ save_item(NAME(m_sampleindex_motor_start));
+ save_item(NAME(m_sampleindex_motor_loop));
+ save_item(NAME(m_sampleindex_motor_end));
+ save_item(NAME(m_samplesize_motor_start));
+ save_item(NAME(m_samplesize_motor_loop));
+ save_item(NAME(m_samplesize_motor_end));
+ save_item(NAME(m_samplepos_motor));
+ save_item(NAME(m_motor_playback_state));
+ save_item(NAME(m_motor_on));
+ save_item(NAME(m_step_samples));
+ save_item(NAME(m_sampleindex_step1));
+ save_item(NAME(m_samplesize_step));
+ save_item(NAME(m_samplepos_step));
+ save_item(NAME(m_step_playback_state));
+}
+
+void floppy_sound_device::device_start()
+{
+ // Sample playback phases
+ m_motor_playback_state = 0; // 0 == currently not playing, 1 == playing startup sample, 2 == playing the loop, 3 == playing loop for the last time, 4 == playing the spin down sample
+ m_step_playback_state = 0; // 0 == currently not playing, > 0 = playing one of the step samples from start to end
+
+ m_motor_on = false;
+ m_is525 = strstr(tag(), "525") != NULL;
+ if (m_is525)
+ {
+ m_sampleindex_motor_start = 2;
+ m_sampleindex_motor_loop = 3;
+ m_sampleindex_motor_end = 4;
+ m_step_samples = 5;
+ m_sampleindex_step1 = 5;
+ }
+ else
+ {
+ m_sampleindex_motor_start = 0;
+ m_sampleindex_motor_loop = 0;
+ m_sampleindex_motor_end = 0;
+ m_step_samples = 1;
+ m_sampleindex_step1 = 1;
+ }
+ m_samplepos_motor = 0;
+ m_samplepos_step = 0;
+ m_samplesize_motor_start = 0;
+ m_samplesize_motor_loop = 0;
+ m_samplesize_motor_end = 0;
+ for (int i = 0; i < MAX_STEP_SAMPLES; ++i) m_samplesize_step[i] = 0;
+
+ // Read audio samples. The samples are stored in the list m_samples.
+ m_loaded = load_samples();
+
+ // If we don't have all samples, don't allocate a stream or access sample data.
+ if (m_loaded)
+ {
+ m_sound = machine().sound().stream_alloc(*this, 0, 1, clock()); // per-floppy stream
+
+ // Get the sample lengths from the sample_t
+ m_samplesize_motor_start = m_sample[m_sampleindex_motor_start].data.size();
+ m_samplesize_motor_loop = m_sample[m_sampleindex_motor_loop].data.size();
+ m_samplesize_motor_end = m_sample[m_sampleindex_motor_end].data.size();
+ for (int i = 0; i < m_step_samples; ++i) m_samplesize_step[i] = m_sample[m_sampleindex_step1 + i].data.size();
+ }
+
+ register_for_save_states();
+}
+
+void floppy_sound_device::motor(bool state)
+{
+ if (!m_loaded) return;
+ m_sound->update(); // required
+ if ((!m_motor_playback_state || m_motor_playback_state > 2) && state) // motor was either off or already spinning down
+ {
+ m_samplepos_motor = 0;
+ m_motor_playback_state = 1; // (re)start the motor sound
+ }
+ else if (m_motor_playback_state == 2 && !state) m_motor_playback_state = 3; // go to spin down sound when loop is finished
+ m_motor_on = state;
+}
+
+// Activate the step sound.
+void floppy_sound_device::step()
+{
+ if (!m_loaded) return;
+ m_sound->update(); // required
+ if (m_step_playback_state == 0)
+ {
+ m_step_playback_state = machine().rand() % m_step_samples + 1; // play one of the floppy drive step samples
+ m_samplepos_step = 0; // restart step sound
+ }
+}
+
+//-------------------------------------------------
+// sound_stream_update - update the sound stream
+//-------------------------------------------------
+
+void floppy_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
+{
+ // We are using only one stream, unlike the parent class
+ // Also, there is no need for interpolation, as we only expect
+ // one sample rate of 44100 for all samples
+
+ INT16 out = 0;
+ stream_sample_t *samplebuffer = outputs[0];
+
+ while (samples-- > 0)
+ {
+ out = 0;
+
+ // make sure we are spinning the motor if stepping is going on!
+ if (m_motor_playback_state == 0 && m_step_playback_state > 0)
+ {
+ m_samplepos_motor = 0;
+ m_motor_playback_state = 2;
+ }
+
+ // Motor sound
+ if (m_motor_playback_state > 0)
+ {
+ switch (m_motor_playback_state)
+ {
+ case 1:
+ out = m_sample[m_sampleindex_motor_start].data[m_samplepos_motor++];
+ if (m_samplepos_motor >= m_samplesize_motor_start)
+ {
+ m_samplepos_motor = 0;
+ m_motor_playback_state = 2; // move to looping sound
+ }
+ break;
+ case 2:
+ out = m_sample[m_sampleindex_motor_loop].data[m_samplepos_motor++];
+ if (m_samplepos_motor >= m_samplesize_motor_loop)
+ {
+ m_samplepos_motor = 0; // continue loop, unless...
+ if (!m_motor_on) m_motor_playback_state = 4; // motor was turned off already (during spin-up maybe) -> spin down
+ }
+ break;
+ case 3:
+ out = m_sample[m_sampleindex_motor_loop].data[m_samplepos_motor++];
+ if (m_samplepos_motor >= m_samplesize_motor_loop)
+ {
+ m_samplepos_motor = 0;
+ m_motor_playback_state = 4; // move to spin down sound
+ }
+ break;
+ case 4:
+ out = m_sample[m_sampleindex_motor_end].data[m_samplepos_motor++];
+ if (m_samplepos_motor >= m_samplesize_motor_end)
+ {
+ m_samplepos_motor = 0;
+ m_motor_playback_state = !m_motor_on ? 0 : 1; // stop or restart motor sound
+ }
+ break;
+ }
+ }
+
+ // Stepper sound
+ if (m_step_playback_state > 0)
+ {
+ // Mix it into the stream value
+ out += m_sample[m_sampleindex_step1 + m_step_playback_state - 1].data[m_samplepos_step++];
+ if (m_samplepos_step >= m_samplesize_step[m_step_playback_state - 1])
+ {
+ m_samplepos_step = 0;
+ m_step_playback_state = 0;
+ }
+ }
+
+ // Write to the stream buffer
+ *(samplebuffer++) = out;
+ }
+}
+
+static const char *const floppy_sample_names[] =
+{
+ "*floppy",
+ "floppy_35_motor",
+ "floppy_35_step",
+ "floppy_525_motor_start",
+ "floppy_525_motor_loop",
+ "floppy_525_motor_end",
+ "floppy_525_step1",
+ "floppy_525_step2",
+ "floppy_525_step3",
+ "floppy_525_step4",
+ "floppy_525_step5",
+ 0
+};
+
+#define FLOPSPK "flopsndout"
+
+MACHINE_CONFIG_FRAGMENT( floppy_img )
+ MCFG_SPEAKER_STANDARD_MONO(FLOPSPK)
+ MCFG_SOUND_ADD(FLOPSND_TAG, FLOPPYSOUND, 44100)
+ MCFG_SAMPLES_NAMES(floppy_sample_names)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, FLOPSPK, 0.5)
+MACHINE_CONFIG_END
+
+machine_config_constructor floppy_image_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( floppy_img );
+}
+
+const device_type FLOPPYSOUND = &device_creator<floppy_sound_device>;
+
//**************************************************************************
// GENERIC FLOPPY DRIVE DEFINITIONS
diff --git a/src/emu/imagedev/floppy.h b/src/devices/imagedev/floppy.h
index 5b230ae9e49..a57b2c7b72e 100644
--- a/src/emu/imagedev/floppy.h
+++ b/src/devices/imagedev/floppy.h
@@ -20,12 +20,16 @@
#include "formats/cqm_dsk.h"
#include "formats/dsk_dsk.h"
#include "ui/imgcntrl.h"
+#include "sound/samples.h"
#define MCFG_FLOPPY_DRIVE_ADD(_tag, _slot_intf, _def_slot, _formats) \
MCFG_DEVICE_ADD(_tag, FLOPPY_CONNECTOR, 0) \
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
static_cast<floppy_connector *>(device)->set_formats(_formats);
+#define MCFG_FLOPPY_DRIVE_SOUND(_doit) \
+ static_cast<floppy_connector *>(device)->enable_sound(_doit);
+
#define DECLARE_FLOPPY_FORMATS(_name) \
static const floppy_format_type _name []
@@ -44,6 +48,7 @@
FLOPPY_DSK_FORMAT, \
NULL };
+class floppy_sound_device;
/***************************************************************************
TYPE DEFINITIONS
@@ -129,6 +134,9 @@ public:
static const floppy_format_type default_floppy_formats[];
+ // Enable sound
+ void enable_sound(bool doit) { m_make_sound = doit; }
+
protected:
// device-level overrides
virtual void device_config_complete();
@@ -136,6 +144,8 @@ protected:
virtual void device_reset();
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+ virtual machine_config_constructor device_mconfig_additions() const;
+
virtual void setup_characteristics() = 0;
floppy_image_format_t *input_format;
@@ -187,6 +197,10 @@ protected:
void write_zone(UINT32 *buf, int &cells, int &index, UINT32 spos, UINT32 epos, UINT32 mg);
void commit_image();
attotime get_next_index_time(std::vector<UINT32> &buf, int index, int delta, attotime base);
+
+ // Sound
+ bool m_make_sound;
+ floppy_sound_device* m_sound_out;
};
class ui_menu_control_floppy_image : public ui_menu_control_device_image {
@@ -249,6 +263,52 @@ DECLARE_FLOPPY_IMAGE_DEVICE(teac_fd_55f, "floppy_5_25")
DECLARE_FLOPPY_IMAGE_DEVICE(teac_fd_55g, "floppy_5_25")
DECLARE_FLOPPY_IMAGE_DEVICE(alps_3255190x, "floppy_5_25")
+extern const device_type FLOPPYSOUND;
+
+
+/*
+ Floppy drive sound
+*/
+
+#define MAX_STEP_SAMPLES 5
+
+class floppy_sound_device : public samples_device
+{
+public:
+ floppy_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ void motor(bool on);
+ void step();
+ bool samples_loaded() { return m_loaded; }
+ void register_for_save_states();
+
+protected:
+ void device_start();
+
+private:
+ // device_sound_interface overrides
+ void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
+
+ sound_stream* m_sound;
+ bool m_loaded;
+ bool m_is525; // true if this is a 5.25" floppy drive
+
+ int m_sampleindex_motor_start;
+ int m_sampleindex_motor_loop;
+ int m_sampleindex_motor_end;
+ int m_samplesize_motor_start;
+ int m_samplesize_motor_loop;
+ int m_samplesize_motor_end;
+ int m_samplepos_motor;
+ int m_motor_playback_state;
+ bool m_motor_on;
+
+ int m_step_samples;
+ int m_sampleindex_step1;
+ int m_samplesize_step[MAX_STEP_SAMPLES];
+ int m_samplepos_step;
+ int m_step_playback_state;
+};
+
class floppy_connector: public device_t,
public device_slot_interface
@@ -259,6 +319,7 @@ public:
void set_formats(const floppy_format_type *formats);
floppy_image_device *get_device();
+ void enable_sound(bool doit) { m_enable_sound = doit; }
protected:
virtual void device_start();
@@ -266,6 +327,7 @@ protected:
private:
const floppy_format_type *formats;
+ bool m_enable_sound;
};
diff --git a/src/emu/imagedev/harddriv.c b/src/devices/imagedev/harddriv.c
index bc39d53e4b3..bc39d53e4b3 100644
--- a/src/emu/imagedev/harddriv.c
+++ b/src/devices/imagedev/harddriv.c
diff --git a/src/emu/imagedev/harddriv.h b/src/devices/imagedev/harddriv.h
index f72dc0553f1..f72dc0553f1 100644
--- a/src/emu/imagedev/harddriv.h
+++ b/src/devices/imagedev/harddriv.h
diff --git a/src/emu/machine/ti99_hd.c b/src/devices/imagedev/mfmhd.c
index f6f3344f94a..cfcdbed0353 100644
--- a/src/emu/machine/ti99_hd.c
+++ b/src/devices/imagedev/mfmhd.c
@@ -2,37 +2,286 @@
// copyright-holders:Michael Zapf
/*************************************************************************
- Hard disk emulation
+ MFM Hard disk emulation
+ -----------------------
+
+ This is a low-level emulation of a hard disk drive. Unlike high-level
+ emulations which just deliver the data bytes, this implementation
+ considers all bytes on a track, including gaps, CRC, interleave, and more.
+
+ The actual data are stored on a CHD file, however, only as a sequence
+ of sector contents. The other metadata (like gap information, interleave)
+ are stored as metadata information in the CHD.
+
+ To provide the desired low-level emulation grade, the tracks must be
+ reconstructed from the sector contents in the CHD. This is done in
+ the call_load method.
+
+ Usually, more than one sector of a track is read, so when a track is
+ reconstructed, the track image is retained for later accesses.
+
+ This implementation also features a LRU cache for the track images,
+ implemented by the class mfmhd_trackimage_cache, also contained in this
+ source file. The LRU cache stores the most recently accessed track images.
+ When lines must be evicted, they are stored back into the CHD file. This
+ is done in the call_unload method. Beside the sector contents, call_unload
+ also saves track layout metadata which have been detected during usage.
+
+ The architecture can be imagined like this:
+
+ [host system] ---- [controller] --- [harddisk] --- [track cache]
+ |
+ [format] ---- [CHD]
+
+ Encodings
+ ---------
+ The goal of this implementation is to provide an emulation that is very
+ close to the original, similar to the grade achieved for the floppy
+ emulation. This means that the track image does not contain a byte
+ sequence but a sequence of MFM cell values. Unlike the floppy emulation,
+ we do not define the cells by time intervals but simply by a sequence of
+ bits which represent the MFM cell contents; this is also due to the fact
+ that the cell rate is more than 10 times higher than with floppy media.
+
+ There are four options for encodings which differ by overhead and
+ emulation precision.
+
+ - MFM_BITS: MFM cells are transferred bit by bit for reading and writing
+ - MFM_BYTE: MFM cells are transferred in clusters of 16 cells, thus
+ encoding a full data byte (with 8 clock bits interleaved)
+ - SEPARATED: 16 bits are transferred in one go, with the 8 clock bits in the
+ first byte, and the 8 data bits in the second byte
+ - SEPARATED_SIMPLE: Similar to SEPARATED, but instead of the clock bits,
+ 0x00 is used for normal data, and 0xff is used for marks.
+
+ Following the specification of MFM, the data byte 0x67 is encoded as follows:
+
+ MFM_BITS / MFM_BYTE: 1001010010010101 = 0x9495
+ SEPARATED: 10001000 01100111 = 0x8867
+ SEPARATED_SIMPLE: 00000000 01100111 = 0x0067
+
+ The ID Address Mark (0xA1) is encoded this way:
+
+ MFM_BITS / MFM_BYTE: 0100010010001001 = 0x4489
+ SEPARATED: 00001010 10100001 = 0x0AA1
+ SEPARATED_SIMPLE: 11111111 10100001 = 0xFFA1
+
+ If the CPU load by the emulation is already very high, the
+ SEPARATED(_SIMPLE) options are recommended. The MFM_BITS option is closest
+ to the real processing, but causes a high load. MFM_BYTE is a good
+ compromise between speed and precision.
+
+
+ Drive definition
+ ----------------
+ Hard disk drives are defined by subclassing mfm_harddisk_device, as can
+ be seen for the offered Seagate drive implementations.
+
+ The following parameters must be set in the constructor of the subclass:
+
+ - Number of physical cylinders. These can be more than the number of
+ cylinders that are used for data. Some drives have cylinders near the
+ spindle that are used as park positions.
+
+ - Number of cylinders used for data. This is the number of the highest
+ cylinder plus 1 (counting from 0).
+
+ - Landing zone: Cylinder number where the head is parked. Should be higher
+ than the number of usable cylinders.
+
+ - Heads: Number of heads.
+
+ - Time for one cylinder seek step in milliseconds: This is the time the
+ drive heads need to step one cylinder inwards or outwards. This time
+ includes the settling time.
+
+ - Maximum seek time in milliseconds: This is the time the drive needs to
+ seek from cylinder 0 to the maximum cylinder. This time includes the
+ settling time and is typically far less than the one cylinder time
+ multiplied by the number of cylinders, because the settling time only
+ occurs once. These delay values are calculated in call_load.
+
+ If the number of physical cylinders is set to 0, the cylinder and head
+ count in taken from the metadata of the mounted CHD file. This allows for
+ using all kinds of CHD images that can be handled by the controller,
+ without having to define a proper drive for them.
+
+ The predefined drives are
+
+ ST-213: Seagate hard disk drive, 10 MB capacity
+ ST-225: Seagate hard disk drive, 20 MB capacity
+ ST-251: Seagate hard disk drive, 40 MB capacity
+
+ generic: Hard disk with 0 physical cylinders, which can be used for
+ all CHDs that can be handled by the controller.
+
+ The ST-xxx drives require to mount a CHD that exactly matches their
+ geometry.
+
+
+ Track image cache
+ -----------------
+ Since the reconstruction of the track takes some time, and we don't want
+ to create unnecessary effort, track images (sector contents plus all
+ preambles and gaps encoded as selected) are kept in a cache. Whenever a
+ track shall be read, the cache is consulted first to retrieve a copy.
+ If no recent copy is available, the track is loaded from the CHD, set up
+ by the format implementation (see lib/formats/mfm_hd.c). The least
+ recently used track is evicted from the cache and written back to the CHD
+ (also by means of the format implementation).
+
+ When the emulation is stopped, all cache lines are evicted and written back.
+ If the emulation is killed before, cache contents may possibly not be
+ written back, so changes may be lost. To alleviate this issue, the cache
+ writes back one line every 5 seconds so that changes are automatically
+ committed after some time.
+
+ This cache is not related to caches on real hard drives. It is a pure
+ emulation artifact, intended to keep conversion efforts as low as possible.
+
+
+ Interface
+ ---------
+ There are three outgoing lines, used as callbacks to the controller:
+ - READY: asserted when the drive has completed its spinup.
+ - INDEX: asserted when the index hole passes by. Unlike the floppy
+ implementation, this hard disk implementation produces a
+ zero-length pulse (assert/clear). This must be considered for
+ the controller emulation.
+ - SEEK COMPLETE: asserted when the read/write heads have settled over the
+ target cylinder. This line is important for controller that want
+ to employ buffered steps.
+
+ There are two data transfer methods:
+
+ - read(attotime &from_when, const attotime &limit, UINT16 &data)
+
+ Delivers the MFM cells at the given point in time. The cells are returned
+ in the data parameter. The behavior depends on the chosen encoding:
+
+ MFM_BITS: data contains 0x0000 or 0x0001
+ MFM_BYTE: data contains a set of 16 consecutive cells at the given time
+ SEPARATED: data contains the clock bits in the MSB, the data bits in the LSB
+ SEPARATED_SIMPLE: data contains 0x00 or 0xFF in the MSB (normal or mark)
+ and the data bits in the LSB.
+
+ When the limit is exceeded, the method returns true, otherwise false.
+
+ - write(attotime &from_when, const attotime &limit, UINT16 cdata, bool wpcom=false, bool reduced_wc=false)
+
+ Writes the MFM cells at the given point in time. cdata contains the
+ cells according to the encoding (see above). The controller also has
+ to set wpcom to true to indicate write precompensation, and reduced_wc
+ to true to indicate a reduced write current; otherwise, these settings
+ are assumed to be false. The wpcom and rwc settings do not affect the
+ recording of the data bytes in this emulation, but the drive will store
+ the cylinder with the lowest number where wpcom (or rwc) occured and
+ store this in the CHD.
+
+ These methods are used to move and select the heads:
+
+ - step_w(line_state line)
+ - direction_in_w(line_state line)
+ - headsel_w(int head)
+
+ Some status lines:
+
+ - ready_r
+ - seek_complete_r
+ - trk00_r
+
+ These reflect the values that are also passed by the callback routines
+ listed above and can be used for a polling scheme. Track00 is not available
+ as a callback. It indicates whether track 0 has been reached.
+
+
+ Configuration
+ -------------
+ For a working example please refer to emu/bus/ti99_peb/hfdc.c.
+
+ According to the MAME/MESS concept of slot devices, the settings are
+ passed over the slot to the slot device, in this case, the hard disk drive.
+
+ This means that when we add a slot (the connector), we also have to
+ pass the desired parameters for the drive.
+
+ MCFG_MFM_HARDDISK_CONN_ADD(_tag, _slot_intf, _def_slot, _enc, _spinupms, _cache, _format)
+
+ Specific parameters:
+
+ _enc: Select an encoding from the values as listed above.
+ _spinupms: Number of milliseconds until the drive announces READY. Many
+ drives like the included Seagate drives require a pretty long
+ powerup time (10-20 seconds). In some computer systems, the
+ user is therefore asked to turn on the drive first so that
+ on first access by the system, the drive may have completed
+ its powerup. In MAME/MESS we cannot turn on components earlier,
+ thus we do not define the spinup time inside the drive
+ implementation but at this point.
+ _cache: Number of tracks to be stored in the LRU track cache
+ _format: Format to be used for the drive. Must be a subclass of
+ mfmhd_image_format_t, for example, mfmhd_generic_format. The format
+ is specified by its format creator identifier (e.g. MFMHD_GEN_FORMAT).
+
+ Metadata
+ --------
+ We have three sets of metadata information. The first one is the
+ declaration of cylinders, heads, sectors, and sector size. It is stored
+ by the tag GDDD in the CHD.
+ The second is the declaration of interleave, skew, write precompensation,
+ and reduced write current.
+
+ Write precompensation is a modification of the timing used for the inner
+ cylinders. Although write precompensation (wpcom for short) can be applied
+ at every write operation, it is usually only used starting from some
+ cylinder, going towards the spindle, applied to the whole tracks.
+ The value defined here is the first cylinder where wpcom is applied.
+ Reduced write current (rwc) is a modification of the electrical current
+ used for writing data. The value defined here is the first cylinder where
+ rwc is applied.
+
+ Both wpcom and rwc have an effect on the physical device, but this is not
+ emulated. For that reason we store the information as additional metadata
+ inside the CHD. It is not relevant for the functionality of the emulated
+ hard disk. The write operations
+
+ When wpcom or rwc are not used, their value is defined to be -1.
+
+ Interleave affects the order how sectors are arranged on the track; skew
+ is the number of sectors that the sector sequence is shifted on the
+ next cylinder (cylinder skew) or head (head skew). These values are used
+ to compensate for the delay that occurs when the read/write heads are moved
+ from one cylinder to the next, or switched from one head to the next.
+
+ These parameters are stored by the tag GDDI on the CHD.
+
+ The third set refers to the specification of gaps and sync fields on the
+ track. These values may change only on first use (when undefined) or when
+ the hard disk is reformatted with a different controller or driver. These
+ parameters are also stored by the GDDI tag as a second record.
+
Michael Zapf
- April 2010
- February 2012: Rewritten as class
- April 2015: Rewritten with deeper emulation detail
+ August 2015
References:
[1] ST225 OEM Manual, Seagate
**************************************************************************/
-// TODO: Define format by a file
-// Save interleave in CHD
-
#include "emu.h"
#include "formats/imageutl.h"
#include "harddisk.h"
-
-#include "ti99_hd.h"
+#include "mfmhd.h"
#define TRACE_STEPS 0
#define TRACE_SIGNALS 0
#define TRACE_READ 0
#define TRACE_WRITE 0
#define TRACE_CACHE 0
-#define TRACE_RWTRACK 0
#define TRACE_BITS 0
#define TRACE_DETAIL 0
#define TRACE_TIMING 0
-#define TRACE_IMAGE 0
#define TRACE_STATE 1
#define TRACE_CONFIG 1
@@ -51,15 +300,11 @@ enum
STEP_SETTLE
};
-#define TRACKSLOTS 5
-
-#define OFFLIMIT -1
-
std::string mfm_harddisk_device::tts(const attotime &t)
{
char buf[256];
- int nsec = t.attoseconds / ATTOSECONDS_PER_NANOSECOND;
- sprintf(buf, "%4d.%03d,%03d,%03d", int(t.seconds), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
+ int nsec = t.attoseconds() / ATTOSECONDS_PER_NANOSECOND;
+ sprintf(buf, "%4d.%03d,%03d,%03d", int(t.seconds()), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
return buf;
}
@@ -68,19 +313,19 @@ mfm_harddisk_device::mfm_harddisk_device(const machine_config &mconfig, device_t
device_slot_card_interface(mconfig, *this)
{
m_spinupms = 10000;
- m_cachelines = TRACKSLOTS;
+ m_cachelines = 5;
m_max_cylinders = 0;
m_phys_cylinders = 0; // We will get this value for generic drives from the image
m_max_heads = 0;
m_cell_size = 100;
m_rpm = 3600; // MFM drives have a revolution rate of 3600 rpm (i.e. 60/sec)
- m_trackimage_size = (int)((60000000000L / (m_rpm * m_cell_size)) / 16 + 1);
+ m_trackimage_size = (int)((60000000000ULL / (m_rpm * m_cell_size)) / 16 + 1);
m_cache = NULL;
// We will calculate default values from the time specs later.
m_seeknext_time = 0;
m_maxseek_time = 0;
m_actual_cylinders = 0;
- m_park_pos = 0;
+ m_landing_zone = 0;
m_interleave = 0;
}
@@ -98,7 +343,7 @@ void mfm_harddisk_device::device_start()
m_rev_time = attotime::from_hz(m_rpm/60);
m_index_timer->adjust(attotime::from_hz(m_rpm/60), 0, attotime::from_hz(m_rpm/60));
- m_current_cylinder = m_park_pos; // Park position
+ m_current_cylinder = m_landing_zone; // Park position
m_spinup_timer->adjust(attotime::from_msec(m_spinupms));
m_cache = global_alloc(mfmhd_trackimage_cache);
@@ -131,6 +376,12 @@ void mfm_harddisk_device::device_stop()
bool mfm_harddisk_device::call_load()
{
bool loaded = harddisk_image_device::call_load();
+
+ std::string devtag(tag());
+ devtag += ":format";
+
+ m_format->set_tag(devtag);
+
if (loaded==IMAGE_INIT_PASS)
{
std::string metadata;
@@ -153,35 +404,81 @@ bool mfm_harddisk_device::call_load()
if (TRACE_CONFIG) logerror("%s: CHD metadata: %s\n", tag(), metadata.c_str());
// Parse the metadata
- int imagecyls;
- int imageheads;
- int imagesecpt;
- int imagesecsz;
+ mfmhd_layout_params param;
+ param.encoding = m_encoding;
+ if (TRACE_CONFIG) logerror("%s: Set encoding to %d\n", tag(), m_encoding);
- if (sscanf(metadata.c_str(), HARD_DISK_METADATA_FORMAT, &imagecyls, &imageheads, &imagesecpt, &imagesecsz) != 4)
+ if (sscanf(metadata.c_str(), HARD_DISK_METADATA_FORMAT, &param.cylinders, &param.heads, &param.sectors_per_track, &param.sector_size) != 4)
{
logerror("%s: Invalid CHD metadata\n", tag());
return IMAGE_INIT_FAIL;
}
- if (TRACE_CONFIG) logerror("%s: CHD image has geometry cyl=%d, head=%d, sect=%d, size=%d\n", tag(), imagecyls, imageheads, imagesecpt, imagesecsz);
+ if (TRACE_CONFIG) logerror("%s: CHD image has geometry cyl=%d, head=%d, sect=%d, size=%d\n", tag(), param.cylinders, param.heads, param.sectors_per_track, param.sector_size);
+
+ if (m_max_cylinders != 0 && (param.cylinders != m_max_cylinders || param.heads != m_max_heads))
+ {
+ throw emu_fatalerror("Image geometry does not fit this kind of hard drive: drive=(%d,%d), image=(%d,%d)", m_max_cylinders, m_max_heads, param.cylinders, param.heads);
+ }
+
+ // MDM format specs
+ param.interleave = 0;
+ param.cylskew = 0;
+ param.headskew = 0;
+ param.write_precomp_cylinder = -1;
+ param.reduced_wcurr_cylinder = -1;
+
+ state = chdfile->read_metadata(MFM_HARD_DISK_METADATA_TAG, 0, metadata);
+ if (state != CHDERR_NONE)
+ {
+ logerror("%s: Failed to read CHD sector arrangement/recording specs, applying defaults\n", tag());
+ }
+ else
+ {
+ sscanf(metadata.c_str(), MFMHD_REC_METADATA_FORMAT, &param.interleave, &param.cylskew, &param.headskew, &param.write_precomp_cylinder, &param.reduced_wcurr_cylinder);
+ }
+
+ if (!param.sane_rec())
+ {
+ if (TRACE_CONFIG) logerror("%s: Sector arrangement/recording specs have invalid values, applying defaults\n", tag());
+ param.reset_rec();
+ }
+ else
+ if (TRACE_CONFIG) logerror("%s: MFM HD rec specs: interleave=%d, cylskew=%d, headskew=%d, wpcom=%d, rwc=%d\n",
+ tag(), param.interleave, param.cylskew, param.headskew, param.write_precomp_cylinder, param.reduced_wcurr_cylinder);
- if (m_max_cylinders != 0 && (imagecyls != m_max_cylinders || imageheads != m_max_heads))
+ state = chdfile->read_metadata(MFM_HARD_DISK_METADATA_TAG, 1, metadata);
+ if (state != CHDERR_NONE)
{
- throw emu_fatalerror("Image geometry does not fit this kind of hard drive: drive=(%d,%d), image=(%d,%d)", m_max_cylinders, m_max_heads, imagecyls, imageheads);
+ logerror("%s: Failed to read CHD track gap specs, applying defaults\n", tag());
+ }
+ else
+ {
+ sscanf(metadata.c_str(), MFMHD_GAP_METADATA_FORMAT, &param.gap1, &param.gap2, &param.gap3, &param.sync, &param.headerlen, &param.ecctype);
}
- m_cache->init(chdfile, tag(), m_trackimage_size, imagecyls, imageheads, imagesecpt, m_cachelines, m_encoding, m_format);
+ if (!param.sane_gap())
+ {
+ if (TRACE_CONFIG) logerror("%s: MFM HD gap specs have invalid values, applying defaults\n", tag());
+ param.reset_gap();
+ }
+ else
+ if (TRACE_CONFIG) logerror("%s: MFM HD gap specs: gap1=%d, gap2=%d, gap3=%d, sync=%d, headerlen=%d, ecctype=%d\n",
+ tag(), param.gap1, param.gap2, param.gap3, param.sync, param.headerlen, param.ecctype);
+
+ m_format->set_layout_params(param);
+
+ m_cache->init(this, m_trackimage_size, m_cachelines);
// Head timing
// We assume that the real times are 80% of the max times
// The single-step time includes the settle time, so does the max time
// From that we calculate the actual cylinder-by-cylinder time and the settle time
- m_actual_cylinders = m_cache->get_cylinders();
- if (m_phys_cylinders == 0) m_phys_cylinders = m_actual_cylinders+1;
+ m_actual_cylinders = param.cylinders;
- m_park_pos = m_phys_cylinders-1;
+ if (m_phys_cylinders == 0) m_phys_cylinders = m_actual_cylinders+1;
+ if (m_landing_zone == 0) m_landing_zone = m_phys_cylinders-1;
float realnext = (m_seeknext_time==0)? 10 : (m_seeknext_time * 0.8);
float realmax = (m_maxseek_time==0)? (m_actual_cylinders * 0.2) : (m_maxseek_time * 0.8);
@@ -192,8 +489,7 @@ bool mfm_harddisk_device::call_load()
m_settle_time = attotime::from_usec((int)settle_us);
m_step_time = attotime::from_usec((int)step_us);
- m_current_cylinder = m_park_pos;
- m_interleave = m_format->get_interleave();
+ m_current_cylinder = m_landing_zone;
}
else
{
@@ -202,19 +498,48 @@ bool mfm_harddisk_device::call_load()
return loaded;
}
+const char *MFMHD_REC_METADATA_FORMAT = "IL:%d,CSKEW:%d,HSKEW:%d,WPCOM:%d,RWC:%d";
+const char *MFMHD_GAP_METADATA_FORMAT = "GAP1:%d,GAP2:%d,GAP3:%d,SYNC:%d,HLEN:%d,ECC:%d";
+
void mfm_harddisk_device::call_unload()
{
+ mfmhd_layout_params* params = m_format->get_current_params();
+ mfmhd_layout_params* oldparams = m_format->get_initial_params();
+
if (m_cache!=NULL)
{
m_cache->cleanup();
- if (m_interleave != m_format->get_interleave())
+ if (m_format->save_param(MFMHD_IL) && !params->equals_rec(oldparams))
{
- logerror("%s: Interleave changed from %d to %d; committing to CHD\n", tag(), m_interleave, m_format->get_interleave());
+ logerror("%s: MFM HD sector arrangement and recording specs have changed; updating CHD metadata\n", tag());
+ chd_file* chdfile = get_chd_file();
+ std::string metadata;
+
+ strprintf(metadata, MFMHD_REC_METADATA_FORMAT, params->interleave, params->cylskew, params->headskew, params->write_precomp_cylinder, params->reduced_wcurr_cylinder);
+
+ chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 0, metadata, 0);
+ if (err != CHDERR_NONE)
+ {
+ logerror("%s: Failed to save MFM HD sector arrangement/recording specs to CHD\n", tag());
+ }
}
- }
- // TODO: If interleave changed, commit that to CHD
+ if (m_format->save_param(MFMHD_GAP1) && !params->equals_gap(oldparams))
+ {
+ logerror("%s: MFM HD track gap specs have changed; updating CHD metadata\n", tag());
+ chd_file* chdfile = get_chd_file();
+ std::string metadata;
+
+ strprintf(metadata, MFMHD_GAP_METADATA_FORMAT, params->gap1, params->gap2, params->gap3, params->sync, params->headerlen, params->ecctype);
+
+ chd_error err = chdfile->write_metadata(MFM_HARD_DISK_METADATA_TAG, 1, metadata, 0);
+ if (err != CHDERR_NONE)
+ {
+ logerror("%s: Failed to save MFM HD track gap specs to CHD\n", tag());
+ }
+ }
+ }
harddisk_image_device::call_unload();
}
@@ -294,6 +619,11 @@ void mfm_harddisk_device::device_timer(emu_timer &timer, device_timer_id id, int
m_seek_timer->adjust(m_settle_time);
if (TRACE_STEPS && TRACE_DETAIL) logerror("%s: Arrived at target cylinder %d, settling ...\n", tag(), m_current_cylinder);
}
+ else
+ {
+ // need to move the head again
+ head_move();
+ }
break;
case STEP_SETTLE:
// Do we have new step pulses?
@@ -502,7 +832,7 @@ bool mfm_harddisk_device::read(attotime &from_when, const attotime &limit, UINT1
Returns true if the time limit will be exceeded before writing the bit or complete byte.
*/
-bool mfm_harddisk_device::write(attotime &from_when, const attotime &limit, UINT16 cdata)
+bool mfm_harddisk_device::write(attotime &from_when, const attotime &limit, UINT16 cdata, bool wpcom, bool reduced_wc)
{
UINT16* track = m_cache->get_trackimage(m_current_cylinder, m_current_head);
@@ -533,10 +863,40 @@ bool mfm_harddisk_device::write(attotime &from_when, const attotime &limit, UINT
track[bytepos] = cdata;
}
- if (TRACE_WRITE) if ((bitpos&0x0f)==0) logerror("%s: Wrote data=%04x (c=%d,h=%d) at position %04x\n", tag(), track[bytepos], m_current_cylinder, m_current_head, bytepos);
+ // Update our cylinders for reduced write current and write precompensation.
+ // We assume that write precompensation and reduced write current occur
+ // at some cylinder and continue up to the innermost cylinder.
+ mfmhd_layout_params* params = m_format->get_current_params();
+
+ if (reduced_wc && (params->reduced_wcurr_cylinder == -1 || m_current_cylinder < params->reduced_wcurr_cylinder))
+ params->reduced_wcurr_cylinder = m_current_cylinder;
+
+ if (wpcom && (params->write_precomp_cylinder == -1 || m_current_cylinder < params->write_precomp_cylinder))
+ params->write_precomp_cylinder = m_current_cylinder;
+
+ if (TRACE_WRITE) if ((bitpos&0x0f)==0) logerror("%s: Wrote data=%04x (c=%d,h=%d) at position %04x, wpcom=%d, rwc=%d\n", tag(), track[bytepos], m_current_cylinder, m_current_head, bytepos, wpcom, reduced_wc);
return false;
}
+chd_error mfm_harddisk_device::load_track(UINT16* data, int cylinder, int head)
+{
+ chd_error state = m_format->load(m_chd, data, m_trackimage_size, cylinder, head);
+ return state;
+}
+
+void mfm_harddisk_device::write_track(UINT16* data, int cylinder, int head)
+{
+ m_format->save(m_chd, data, m_trackimage_size, cylinder, head);
+}
+
+int mfm_harddisk_device::get_actual_heads()
+{
+ return m_format->get_current_params()->heads;
+}
+
+/*
+ The generic HD takes any kind of CHD HD image and magically creates enough heads and cylinders.
+*/
mfm_hd_generic_device::mfm_hd_generic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: mfm_harddisk_device(mconfig, MFMHD_GENERIC, "Generic MFM hard disk", tag, owner, clock, "mfm_harddisk", __FILE__)
{
@@ -552,7 +912,7 @@ mfm_hd_st213_device::mfm_hd_st213_device(const machine_config &mconfig, const ch
{
m_phys_cylinders = 670;
m_max_cylinders = 615; // 0..614
- m_park_pos = 620;
+ m_landing_zone = 620;
m_max_heads = 2;
m_seeknext_time = 20; // time for one step including settle time
m_maxseek_time = 150;
@@ -565,7 +925,7 @@ mfm_hd_st225_device::mfm_hd_st225_device(const machine_config &mconfig, const ch
{
m_phys_cylinders = 670;
m_max_cylinders = 615;
- m_park_pos = 620;
+ m_landing_zone = 620;
m_max_heads = 4;
m_seeknext_time = 20;
m_maxseek_time = 150;
@@ -578,7 +938,7 @@ mfm_hd_st251_device::mfm_hd_st251_device(const machine_config &mconfig, const ch
{
m_phys_cylinders = 821;
m_max_cylinders = 820;
- m_park_pos = 820;
+ m_landing_zone = 820;
m_max_heads = 6;
m_seeknext_time = 8;
m_maxseek_time = 70;
@@ -595,14 +955,12 @@ const device_type MFMHD_ST251 = &device_creator<mfm_hd_st251_device>;
mfmhd_trackimage_cache::mfmhd_trackimage_cache():
m_tracks(NULL)
{
- m_current_crc = 0;
- m_tracksize = 0;
}
mfmhd_trackimage_cache::~mfmhd_trackimage_cache()
{
mfmhd_trackimage* current = m_tracks;
- if (TRACE_CACHE) logerror("%s: MFM HD cache destroy\n", tag());
+ if (TRACE_CACHE) logerror("%s: MFM HD cache destroy\n", m_mfmhd->tag());
while (current != NULL)
{
@@ -621,8 +979,7 @@ void mfmhd_trackimage_cache::write_back_one()
{
if (current->dirty)
{
- // write_track(m_chd, current->encdata, m_tracksize, current->cylinder, current->head);
- m_format->save(tag(), m_chd, current->encdata, m_encoding, m_tracksize, current->cylinder, current->head, m_cylinders, m_heads, m_sectors_per_track);
+ m_mfmhd->write_track(current->encdata, current->cylinder, current->head);
current->dirty = false;
break;
}
@@ -634,16 +991,15 @@ void mfmhd_trackimage_cache::write_back_one()
void mfmhd_trackimage_cache::cleanup()
{
mfmhd_trackimage* current = m_tracks;
- if (TRACE_CACHE) logerror("%s: MFM HD cache cleanup\n", tag());
+ if (TRACE_CACHE) logerror("%s: MFM HD cache cleanup\n", m_mfmhd->tag());
// Still dirty?
while (current != NULL)
{
- if (TRACE_CACHE) logerror("%s: MFM HD cache: evict line cylinder=%d head=%d\n", tag(), current->cylinder, current->head);
+ if (TRACE_CACHE) logerror("%s: MFM HD cache: evict line cylinder=%d head=%d\n", m_mfmhd->tag(), current->cylinder, current->head);
if (current->dirty)
{
- // write_track(m_chd, current->encdata, m_tracksize, current->cylinder, current->head);
- m_format->save(tag(), m_chd, current->encdata, m_encoding, m_tracksize, current->cylinder, current->head, m_cylinders, m_heads, m_sectors_per_track);
+ m_mfmhd->write_track(current->encdata, current->cylinder, current->head);
current->dirty = false;
}
mfmhd_trackimage* currenttmp = current->next;
@@ -665,48 +1021,39 @@ const char *encnames[] = { "MFM_BITS","MFM_BYTE","SEPARATE","SSIMPLE " };
/*
Initialize the cache by loading the first <trackslots> tracks.
*/
-void mfmhd_trackimage_cache::init(chd_file* chdfile, const char* dtag, int tracksize, int imagecyl, int imageheads, int imagesecpt, int trackslots, mfmhd_enc_t encoding, mfmhd_image_format_t* format)
+void mfmhd_trackimage_cache::init(mfm_harddisk_device* mfmhd, int tracksize, int trackslots)
{
- m_encoding = encoding;
- m_tagdev = dtag;
+ if (TRACE_CACHE) logerror("%s: MFM HD cache init; cache size is %d tracks\n", mfmhd->tag(), trackslots);
- if (TRACE_CACHE) logerror("%s: MFM HD cache init; using encoding %s; cache size is %d tracks\n", m_tagdev, encnames[encoding], trackslots);
chd_error state = CHDERR_NONE;
+
mfmhd_trackimage* previous = NULL;
mfmhd_trackimage* current = NULL;
- std::string metadata;
- m_tracksize = tracksize;
- m_chd = chdfile;
- m_format = format;
- m_cylinders = imagecyl;
- m_heads = imageheads;
- m_sectors_per_track = imagesecpt;
+ m_mfmhd = mfmhd;
// Load some tracks into the cache
int track = 0;
int head = 0;
int cylinder = 0;
+
while (track < trackslots)
{
- if (TRACE_CACHE && TRACE_DETAIL) logerror("%s: MFM HD allocate cache slot\n", tag());
+ if (TRACE_CACHE && TRACE_DETAIL) logerror("%s: MFM HD allocate cache slot\n", mfmhd->tag());
previous = current;
current = global_alloc(mfmhd_trackimage);
current->encdata = global_alloc_array(UINT16, tracksize);
// Load the first tracks into the slots
- // state = load_track(m_chd, current->encdata, m_tracksize, cylinder, head);
-
- state = m_format->load(tag(), m_chd, current->encdata, m_encoding, m_tracksize, cylinder, head, m_cylinders, m_heads, m_sectors_per_track);
+ state = m_mfmhd->load_track(current->encdata, cylinder, head);
+ if (state != CHDERR_NONE) throw emu_fatalerror("Cannot load (c=%d,h=%d) from hard disk", cylinder, head);
current->dirty = false;
current->cylinder = cylinder;
current->head = head;
- if (state != CHDERR_NONE) throw emu_fatalerror("Cannot load (c=%d,h=%d) from hard disk", cylinder, head);
-
// We will read all heads per cylinder first, then go to the next cylinder.
- if (++head >= m_heads)
+ if (++head >= mfmhd->get_actual_heads())
{
head = 0;
cylinder++;
@@ -771,17 +1118,15 @@ UINT16* mfmhd_trackimage_cache::get_trackimage(int cylinder, int head)
// previous points to the second to last element
current = previous->next;
- if (TRACE_CACHE) logerror("%s: MFM HD cache: evict line (c=%d,h=%d)\n", tag(), current->cylinder, current->head);
+ if (TRACE_CACHE) logerror("%s: MFM HD cache: evict line (c=%d,h=%d)\n", m_mfmhd->tag(), current->cylinder, current->head);
if (current->dirty)
{
- // write_track(m_chd, current->encdata, m_tracksize, current->cylinder, current->head);
- m_format->save(tag(), m_chd, current->encdata, m_encoding, m_tracksize, current->cylinder, current->head, m_cylinders, m_heads, m_sectors_per_track);
+ m_mfmhd->write_track(current->encdata, current->cylinder, current->head);
current->dirty = false;
}
- // state = load_track(m_chd, current->encdata, m_tracksize, cylinder, head);
- state = m_format->load(tag(), m_chd, current->encdata, m_encoding, m_tracksize, cylinder, head, m_cylinders, m_heads, m_sectors_per_track);
+ state = m_mfmhd->load_track(current->encdata, cylinder, head);
current->dirty = false;
current->cylinder = cylinder;
@@ -829,466 +1174,3 @@ void mfm_harddisk_connector::device_config_complete()
}
const device_type MFM_HD_CONNECTOR = &device_creator<mfm_harddisk_connector>;
-
-// ================================================================
-
-mfmhd_image_format_t::mfmhd_image_format_t()
-{
-};
-
-mfmhd_image_format_t::~mfmhd_image_format_t()
-{
-};
-
-void mfmhd_image_format_t::mfm_encode(UINT16* trackimage, int& position, UINT8 byte, int count)
-{
- mfm_encode_mask(trackimage, position, byte, count, 0x00);
-}
-
-void mfmhd_image_format_t::mfm_encode_a1(UINT16* trackimage, int& position)
-{
- m_current_crc = 0xffff;
- mfm_encode_mask(trackimage, position, 0xa1, 1, 0x04);
- // 0x443b; CRC for A1
-}
-
-void mfmhd_image_format_t::mfm_encode_mask(UINT16* trackimage, int& position, UINT8 byte, int count, int mask)
-{
- UINT16 encclock = 0;
- UINT16 encdata = 0;
- UINT8 thisbyte = byte;
- bool mark = (mask != 0x00);
-
- m_current_crc = ccitt_crc16_one(m_current_crc, byte);
-
- for (int i=0; i < 8; i++)
- {
- encdata <<= 1;
- encclock <<= 1;
-
- if (m_encoding == MFM_BITS || m_encoding == MFM_BYTE)
- {
- // skip one position for later interleaving
- encdata <<= 1;
- encclock <<= 1;
- }
-
- if (thisbyte & 0x80)
- {
- // Encoding 1 => 01
- encdata |= 1;
- m_lastbit = true;
- }
- else
- {
- // Encoding 0 => x0
- // If the bit in the mask is set, suppress the clock bit
- // Also, if we use the simplified encoding, don't set the clock bits
- if (m_lastbit == false && m_encoding != SEPARATED_SIMPLE && (mask & 0x80) == 0) encclock |= 1;
- m_lastbit = false;
- }
- mask <<= 1;
- // For simplified encoding, set all clock bits to indicate a mark
- if (m_encoding == SEPARATED_SIMPLE && mark) encclock |= 1;
- thisbyte <<= 1;
- }
-
- if (m_encoding == MFM_BITS || m_encoding == MFM_BYTE)
- encclock <<= 1;
- else
- encclock <<= 8;
-
- trackimage[position++] = (encclock | encdata);
-
- // When we write the byte multiple times, check whether the next encoding
- // differs from the previous because of the last bit
-
- if (m_encoding == MFM_BITS || m_encoding == MFM_BYTE)
- {
- encclock &= 0x7fff;
- if ((byte & 0x80)==0 && m_lastbit==false) encclock |= 0x8000;
- }
-
- for (int j=1; j < count; j++)
- {
- trackimage[position++] = (encclock | encdata);
- m_current_crc = ccitt_crc16_one(m_current_crc, byte);
- }
-}
-
-UINT8 mfmhd_image_format_t::mfm_decode(UINT16 raw)
-{
- unsigned int value = 0;
-
- for (int i=0; i < 8; i++)
- {
- value <<= 1;
-
- value |= (raw & 0x4000);
- raw <<= 2;
- }
- return (value >> 14) & 0xff;
-}
-
-/*
- For debugging. Outputs the byte array in a xxd-like way.
-*/
-void mfmhd_image_format_t::showtrack(UINT16* enctrack, int length)
-{
- for (int i=0; i < length; i+=16)
- {
- logerror("%07x: ", i);
- for (int j=0; j < 16; j++)
- {
- logerror("%04x ", enctrack[i+j]);
- }
- logerror(" ");
- logerror("\n");
- }
-}
-
-// ======================================================================
-// TI-99-specific format
-// ======================================================================
-
-const mfmhd_format_type MFMHD_TI99_FORMAT = &mfmhd_image_format_creator<ti99_mfmhd_format>;
-
-enum
-{
- SEARCH_A1=0,
- FOUND_A1,
- DAM_FOUND,
- CHECK_CRC
-};
-
-
-/*
- Calculate the ident byte from the cylinder. The specification does not
- define idents beyond cylinder 1023, but formatting programs seem to
- continue with 0xfd for cylinders between 1024 and 2047.
-*/
-UINT8 ti99_mfmhd_format::cylinder_to_ident(int cylinder)
-{
- if (cylinder < 256) return 0xfe;
- if (cylinder < 512) return 0xff;
- if (cylinder < 768) return 0xfc;
- return 0xfd;
-}
-
-/*
- Returns the linear sector number, given the CHS data.
-
- C,H,S
- | 0,0,0 | 0,0,1 | 0,0,2 | ...
- | 0,1,0 | 0,1,1 | 0,1,2 | ...
- ...
- | 1,0,0 | ...
- ...
-*/
-int ti99_mfmhd_format::chs_to_lba(int cylinder, int head, int sector)
-{
- if ((cylinder < m_cylinders) && (head < m_heads) && (sector < m_sectors_per_track))
- {
- return (cylinder * m_heads + head) * m_sectors_per_track + sector;
- }
- else return -1;
-}
-
-chd_error ti99_mfmhd_format::load(const char* tagdev, chd_file* chdfile, UINT16* trackimage, mfmhd_enc_t encoding, int tracksize, int cylinder, int head, int cylcnt, int headcnt, int sect_per_track)
-{
- chd_error state = CHDERR_NONE;
-
- int sectorcount = 32;
- int size = 256;
- int interleave = 4;
-
- m_encoding = encoding;
- m_cylinders = cylcnt;
- m_heads = headcnt;
- m_sectors_per_track = sect_per_track;
- m_tagdev = tagdev;
-
- UINT8 sector_content[1024];
-
- if (TRACE_RWTRACK) logerror("%s: MFM HD cache: load track (c=%d,h=%d) from CHD\n", tag(), cylinder, head);
-
- m_lastbit = false;
- int position = 0; // will be incremented by each encode call
-
- // According to MDM5 formatting:
- // gap0=16 gap1=16 gap2=3 gap3=22 sync=13 count=32 size=2
-
- // HFDC manual: When using the hard disk format, the values for GAP0 and GAP1 must
- // both be set to the same number and loaded in the appropriate registers.
-
- // Gap 1
- mfm_encode(trackimage, position, 0x4e, 16);
-
- int sec_il_start = 0;
- int sec_number = 0;
- int identfield = 0;
- int cylfield = 0;
- int headfield = 0;
- int sizefield = (size >> 7)-1;
-
- // Round up
- int delta = (sectorcount + interleave-1) / interleave;
-
- if (TRACE_DETAIL) logerror("%s: cyl=%d head=%d: sector sequence = ", tag(), cylinder, head);
- for (int sector = 0; sector < sectorcount; sector++)
- {
- if (TRACE_DETAIL) logerror("%02d ", sec_number);
-
- // Sync gap
- mfm_encode(trackimage, position, 0x00, 13);
-
- // Write IDAM
- mfm_encode_a1(trackimage, position);
-
- // Write header
- identfield = cylinder_to_ident(cylinder);
- cylfield = cylinder & 0xff;
- headfield = ((cylinder & 0x700)>>4) | (head&0x0f);
-
- mfm_encode(trackimage, position, identfield);
- mfm_encode(trackimage, position, cylfield);
- mfm_encode(trackimage, position, headfield);
- mfm_encode(trackimage, position, sec_number);
- mfm_encode(trackimage, position, sizefield);
- // logerror("%s: Created header (%02x,%02x,%02x,%02x)\n", tag(), identfield, cylfield, headfield, sector);
-
- // Write CRC for header.
- int crc = m_current_crc;
- mfm_encode(trackimage, position, (crc >> 8) & 0xff);
- mfm_encode(trackimage, position, crc & 0xff);
-
- // Gap 2
- mfm_encode(trackimage, position, 0x4e, 3);
-
- // Sync
- mfm_encode(trackimage, position, 0x00, 13);
-
- // Write DAM
- mfm_encode_a1(trackimage, position);
- mfm_encode(trackimage, position, 0xfb);
-
- // Get sector content from CHD
- int lbaposition = chs_to_lba(cylinder, head, sec_number);
- if (lbaposition>=0)
- {
- chd_error state = chdfile->read_units(lbaposition, sector_content);
- if (state != CHDERR_NONE) break;
- }
- else
- {
- logerror("%s: Invalid CHS data (%d,%d,%d); not loading from CHD\n", tag(), cylinder, head, sector);
- }
-
- for (int i=0; i < size; i++)
- mfm_encode(trackimage, position, sector_content[i]);
-
- // Write CRC for content.
- crc = m_current_crc;
- mfm_encode(trackimage, position, (crc >> 8) & 0xff);
- mfm_encode(trackimage, position, crc & 0xff);
-
- // Gap 3
- mfm_encode(trackimage, position, 0x00, 3);
- mfm_encode(trackimage, position, 0x4e, 19);
-
- // Calculate next sector number
- sec_number += delta;
- if (sec_number >= sectorcount) sec_number = ++sec_il_start;
- }
- if (TRACE_DETAIL) logerror("\n");
-
- // Gap 4
- if (state == CHDERR_NONE)
- {
- // Fill the rest with 0x4e
- mfm_encode(trackimage, position, 0x4e, tracksize-position);
- if (TRACE_IMAGE)
- {
- showtrack(trackimage, tracksize);
- }
- }
- return state;
-}
-
-chd_error ti99_mfmhd_format::save(const char* tagdev, chd_file* chdfile, UINT16* trackimage, mfmhd_enc_t encoding, int tracksize, int current_cylinder, int current_head, int cylcnt, int headcnt, int sect_per_track)
-{
- if (TRACE_CACHE) logerror("%s: MFM HD cache: write back (c=%d,h=%d) to CHD\n", tag(), current_cylinder, current_head);
-
- UINT8 buffer[1024]; // for header or sector content
-
- int bytepos = 0;
- int state = SEARCH_A1;
- int count = 0;
- int pos = 0;
- UINT16 crc = 0;
- UINT8 byte;
- bool search_header = true;
-
- int ident = 0;
- int cylinder = 0;
- int head = 0;
- int sector = 0;
-
- int headerpos = 0;
-
- int calc_interleave = 0;
- int interleave_prec = -1;
- bool check_interleave = true;
-
- chd_error chdstate = CHDERR_NONE;
-
- m_encoding = encoding;
- m_cylinders = cylcnt;
- m_heads = headcnt;
- m_sectors_per_track = sect_per_track;
- m_tagdev = tagdev;
-
- if (TRACE_IMAGE)
- {
- for (int i=0; i < tracksize; i++)
- {
- if ((i % 16)==0) logerror("\n%04x: ", i);
- logerror("%02x ", (m_encoding==MFM_BITS || m_encoding==MFM_BYTE)? mfm_decode(trackimage[i]) : (trackimage[i]&0xff));
- }
- logerror("\n");
- }
-
- // We have to go through the bytes of the track and save a sector as soon as one shows up
- while (bytepos < tracksize)
- {
- switch (state)
- {
- case SEARCH_A1:
- if (((m_encoding==MFM_BITS || m_encoding==MFM_BYTE) && trackimage[bytepos]==0x4489)
- || (m_encoding==SEPARATED && trackimage[bytepos]==0x0aa1)
- || (m_encoding==SEPARATED_SIMPLE && trackimage[bytepos]==0xffa1))
- {
- state = FOUND_A1;
- count = search_header? 7 : 259;
- crc = 0x443b; // init value with a1
- pos = 0;
- }
- bytepos++;
- break;
-
- case FOUND_A1:
- // read next values into array
- if (m_encoding==MFM_BITS || m_encoding==MFM_BYTE)
- {
- byte = mfm_decode(trackimage[bytepos]);
- }
- else byte = (trackimage[bytepos] & 0xff);
-
- crc = ccitt_crc16_one(crc, byte);
- // logerror("%s: MFM HD: Byte = %02x, CRC=%04x\n", tag(), byte, crc);
-
- // Put byte into buffer
- // but not the data mark and the CRC
- if (search_header || (count > 2 && count < 259)) buffer[pos++] = byte;
-
- if (--count == 0)
- {
- if (crc==0)
- {
- if (search_header)
- {
- // Found a header
- ident = buffer[0];
- // Highest three bits are in the head field
- cylinder = buffer[1] | ((buffer[2]&0x70)<<4);
- head = buffer[2] & 0x0f;
- sector = buffer[3];
- int identexp = cylinder_to_ident(cylinder);
-
- if (identexp != ident)
- {
- logerror("%s: MFM HD: Field error; ident = %02x (expected %02x) for sector chs=(%d,%d,%d)\n", tag(), ident, identexp, cylinder, head, sector);
- }
-
- if (cylinder != current_cylinder)
- {
- logerror("%s: MFM HD: Sector header of sector %d defines cylinder = %02x (should be %02x)\n", tag(), sector, cylinder, current_cylinder);
- }
-
- if (head != current_head)
- {
- logerror("%s: MFM HD: Sector header of sector %d defines head = %02x (should be %02x)\n", tag(), sector, head, current_head);
- }
-
- // Count the sectors for the interleave
- if (check_interleave)
- {
- if (interleave_prec == -1) interleave_prec = sector;
- else
- {
- if (sector == interleave_prec+1) check_interleave = false;
- calc_interleave++;
- }
- }
-
- if (calc_interleave == 0) calc_interleave = sector - buffer[3];
- // size = buffer[4];
- search_header = false;
- if (TRACE_DETAIL) logerror("%s: MFM HD: Found sector chs=(%d,%d,%d)\n", tag(), cylinder, head, sector);
- headerpos = pos;
- }
- else
- {
- // Sector contents
- // Write the sectors to the CHD
- int lbaposition = chs_to_lba(cylinder, head, sector);
- if (lbaposition>=0)
- {
- if (TRACE_DETAIL) logerror("%s: MFM HD: Writing sector chs=(%d,%d,%d) to CHD\n", tag(), current_cylinder, current_head, sector);
- chdstate = chdfile->write_units(chs_to_lba(current_cylinder, current_head, sector), buffer);
-
- if (chdstate != CHDERR_NONE)
- {
- logerror("%s: MFM HD: Write error while writing sector chs=(%d,%d,%d)\n", tag(), cylinder, head, sector);
- }
- }
- else
- {
- logerror("%s: Invalid CHS data in track image: (%d,%d,%d); not saving to CHD\n", tag(), cylinder, head, sector);
- }
-
- search_header = true;
- }
- }
- else
- {
- logerror("%s: MFM HD: CRC error in %s of (%d,%d,%d)\n", tag(), search_header? "header" : "data", cylinder, head, sector);
- search_header = true;
- }
- // search next A1
- state = SEARCH_A1;
-
- if (!search_header && (pos - headerpos) > 30)
- {
- logerror("%s: MFM HD: Error; missing DAM; searching next header\n", tag());
- search_header = true;
- }
- }
- bytepos++;
- break;
- }
- }
-
- if (check_interleave == false)
- {
- // Successfully determined the interleave
- m_interleave = calc_interleave;
- }
-
- if (TRACE_CACHE)
- {
- logerror("%s: MFM HD cache: write back complete (c=%d,h=%d), interleave = %d\n", tag(), current_cylinder, current_head, m_interleave);
- }
-
- return chdstate;
-}
diff --git a/src/emu/machine/ti99_hd.h b/src/devices/imagedev/mfmhd.h
index b004ea7cafb..c15b892423d 100644
--- a/src/emu/machine/ti99_hd.h
+++ b/src/devices/imagedev/mfmhd.h
@@ -2,43 +2,23 @@
// copyright-holders:Michael Zapf
/****************************************************************************
- Hard disk support
- See ti99_hd.c for documentation
+ MFM hard disk emulation
- Michael Zapf
+ See mfmhd.c for documentation
- February 2012: Rewritten as class
+ Michael Zapf
+ August 2015
*****************************************************************************/
-#ifndef __TI99_HD__
-#define __TI99_HD__
+#ifndef __MFMHD__
+#define __MFMHD__
#include "emu.h"
#include "imagedev/harddriv.h"
+#include "formats/mfm_hd.h"
-/*
- Determine how data are passed from the hard disk to the controller. We
- allow for different degrees of hardware emulation.
-*/
-enum mfmhd_enc_t
-{
- MFM_BITS, // One bit at a time
- MFM_BYTE, // One data byte with interleaved clock bits
- SEPARATED, // 8 clock bits (most sig byte), one data byte (least sig byte)
- SEPARATED_SIMPLE // MSB: 00/FF (standard / mark) clock, LSB: one data byte
-};
-
-class mfmhd_image_format_t;
-
-// Pointer to its alloc function
-typedef mfmhd_image_format_t *(*mfmhd_format_type)();
-
-template<class _FormatClass>
-mfmhd_image_format_t *mfmhd_image_format_creator()
-{
- return new _FormatClass();
-}
+class mfm_harddisk_device;
class mfmhd_trackimage
{
@@ -55,31 +35,15 @@ class mfmhd_trackimage_cache
public:
mfmhd_trackimage_cache();
~mfmhd_trackimage_cache();
- void init(chd_file* chdfile, const char* tag, int tracksize, int imagecyls, int imageheads, int imagesecpt, int trackslots, mfmhd_enc_t encoding, mfmhd_image_format_t* format);
+ void init(mfm_harddisk_device* mfmhd, int tracksize, int trackslots);
UINT16* get_trackimage(int cylinder, int head);
void mark_current_as_dirty();
void cleanup();
void write_back_one();
- int get_cylinders() { return m_cylinders; }
private:
- chd_file* m_chd;
-
- const char* m_tagdev;
- mfmhd_trackimage* m_tracks;
- mfmhd_enc_t m_encoding;
- mfmhd_image_format_t* m_format;
-
- bool m_lastbit;
- int m_current_crc;
- int m_cylinders;
- int m_heads;
- int m_sectors_per_track;
- int m_sectorsize;
- int m_tracksize;
-
- void showtrack(UINT16* enctrack, int length);
- const char* tag() { return m_tagdev; }
+ mfm_harddisk_device* m_mfmhd;
+ mfmhd_trackimage* m_tracks;
};
class mfm_harddisk_device : public harddisk_image_device,
@@ -110,14 +74,11 @@ public:
line_state seek_complete_r() { return m_seek_complete? ASSERT_LINE : CLEAR_LINE; } ;
line_state trk00_r() { return m_current_cylinder==0? ASSERT_LINE : CLEAR_LINE; }
- // Common routine for read/write
- bool find_position(attotime &from_when, const attotime &limit, int &bytepos, int &bitpos);
-
// Data output towards controller
bool read(attotime &from_when, const attotime &limit, UINT16 &data);
// Data input from controller
- bool write(attotime &from_when, const attotime &limit, UINT16 data);
+ bool write(attotime &from_when, const attotime &limit, UINT16 cdata, bool wpcom=false, bool reduced_wc=false);
// Step
void step_w(line_state line);
@@ -129,9 +90,16 @@ public:
bool call_load();
void call_unload();
- // Tells us the time when the track ends (next index pulse)
+ // Tells us the time when the track ends (next index pulse). Needed by the controller.
attotime track_end_time();
+ // Access the tracks on the image. Used as a callback from the cache.
+ chd_error load_track(UINT16* data, int cylinder, int head);
+ void write_track(UINT16* data, int cylinder, int head);
+
+ // Delivers the number of heads according to the loaded image
+ int get_actual_heads();
+
protected:
void device_start();
void device_stop();
@@ -149,7 +117,10 @@ protected:
int m_phys_cylinders;
int m_actual_cylinders; // after reading the CHD
int m_max_heads;
- int m_park_pos;
+ int m_landing_zone;
+ int m_precomp_cyl;
+ int m_redwc_cyl;
+
int m_maxseek_time;
int m_seeknext_time;
@@ -185,6 +156,9 @@ private:
void prepare_track(int cylinder, int head);
void head_move();
void recalibrate();
+
+ // Common routine for read/write
+ bool find_position(attotime &from_when, const attotime &limit, int &bytepos, int &bitpos);
};
/*
@@ -261,7 +235,7 @@ extern const device_type MFM_HD_CONNECTOR;
_tag = Tag of the connector
_slot_intf = Selection of hard drives
_def_slot = Default hard drive
- _enc = Encoding (see comments in ti99_hd.c)
+ _enc = Encoding (see comments in mfm_hd.c)
_spinupms = Spinup time in milliseconds (some configurations assume that the
user has turned on the hard disk before turning on the system. We cannot
emulate this, so we allow for shorter times)
@@ -273,53 +247,4 @@ extern const device_type MFM_HD_CONNECTOR;
static_cast<mfm_harddisk_connector *>(device)->configure(_enc, _spinupms, _cache, _format);
-/*
- Hard disk format
-*/
-class mfmhd_image_format_t
-{
-public:
- mfmhd_image_format_t();
- virtual ~mfmhd_image_format_t();
-
- // Load the image.
- virtual chd_error load(const char* tagdev, chd_file* chdfile, UINT16* trackimage, mfmhd_enc_t encoding, int tracksize, int cylinder, int head, int cylcnt, int headcnt, int sect_per_track) = 0;
-
- // Save the image.
- virtual chd_error save(const char* tagdev, chd_file* chdfile, UINT16* trackimage, mfmhd_enc_t encoding, int tracksize, int cylinder, int head, int cylcnt, int headcnt, int sect_per_track) = 0;
-
- // Return the recent interleave of the image
- int get_interleave() { return m_interleave; }
-
-protected:
- bool m_lastbit;
- int m_current_crc;
- mfmhd_enc_t m_encoding;
- const char* m_tagdev;
- int m_cylinders;
- int m_heads;
- int m_sectors_per_track;
- int m_interleave;
-
- void mfm_encode(UINT16* trackimage, int& position, UINT8 byte, int count=1);
- void mfm_encode_a1(UINT16* trackimage, int& position);
- void mfm_encode_mask(UINT16* trackimage, int& position, UINT8 byte, int count, int mask);
- UINT8 mfm_decode(UINT16 raw);
- const char* tag() { return m_tagdev; }
- void showtrack(UINT16* enctrack, int length);
-};
-
-class ti99_mfmhd_format : public mfmhd_image_format_t
-{
-public:
- ti99_mfmhd_format() {};
- chd_error load(const char* tagdev, chd_file* chdfile, UINT16* trackimage, mfmhd_enc_t encoding, int tracksize, int cylinder, int head, int cylcnt, int headcnt, int sect_per_track);
- chd_error save(const char* tagdev, chd_file* chdfile, UINT16* trackimage, mfmhd_enc_t encoding, int tracksize, int cylinder, int head, int cylcnt, int headcnt, int sect_per_track);
-private:
- UINT8 cylinder_to_ident(int cylinder);
- int chs_to_lba(int cylinder, int head, int sector);
-};
-
-extern const mfmhd_format_type MFMHD_TI99_FORMAT;
-
#endif
diff --git a/src/emu/imagedev/midiin.c b/src/devices/imagedev/midiin.c
index e412409aa38..e412409aa38 100644
--- a/src/emu/imagedev/midiin.c
+++ b/src/devices/imagedev/midiin.c
diff --git a/src/emu/imagedev/midiin.h b/src/devices/imagedev/midiin.h
index d8cc99eb0aa..d8cc99eb0aa 100644
--- a/src/emu/imagedev/midiin.h
+++ b/src/devices/imagedev/midiin.h
diff --git a/src/emu/imagedev/midiout.c b/src/devices/imagedev/midiout.c
index 97ecb36ab89..97ecb36ab89 100644
--- a/src/emu/imagedev/midiout.c
+++ b/src/devices/imagedev/midiout.c
diff --git a/src/emu/imagedev/midiout.h b/src/devices/imagedev/midiout.h
index 5ac4d7c3ed4..5ac4d7c3ed4 100644
--- a/src/emu/imagedev/midiout.h
+++ b/src/devices/imagedev/midiout.h
diff --git a/src/emu/imagedev/printer.c b/src/devices/imagedev/printer.c
index aedfecbeddd..aedfecbeddd 100644
--- a/src/emu/imagedev/printer.c
+++ b/src/devices/imagedev/printer.c
diff --git a/src/emu/imagedev/printer.h b/src/devices/imagedev/printer.h
index 8e6ca051fdc..8e6ca051fdc 100644
--- a/src/emu/imagedev/printer.h
+++ b/src/devices/imagedev/printer.h
diff --git a/src/emu/imagedev/snapquik.c b/src/devices/imagedev/snapquik.c
index 02fc2fa241e..02fc2fa241e 100644
--- a/src/emu/imagedev/snapquik.c
+++ b/src/devices/imagedev/snapquik.c
diff --git a/src/emu/imagedev/snapquik.h b/src/devices/imagedev/snapquik.h
index a9e186ba2bd..a9e186ba2bd 100644
--- a/src/emu/imagedev/snapquik.h
+++ b/src/devices/imagedev/snapquik.h
diff --git a/src/emu/machine/40105.c b/src/devices/machine/40105.c
index e2f059dfed0..e2f059dfed0 100644
--- a/src/emu/machine/40105.c
+++ b/src/devices/machine/40105.c
diff --git a/src/emu/machine/40105.h b/src/devices/machine/40105.h
index bc632c8cdca..bc632c8cdca 100644
--- a/src/emu/machine/40105.h
+++ b/src/devices/machine/40105.h
diff --git a/src/emu/machine/53c7xx.c b/src/devices/machine/53c7xx.c
index f2aad1ad75b..f2aad1ad75b 100644
--- a/src/emu/machine/53c7xx.c
+++ b/src/devices/machine/53c7xx.c
diff --git a/src/emu/machine/53c7xx.h b/src/devices/machine/53c7xx.h
index 937bd9d16a0..937bd9d16a0 100644
--- a/src/emu/machine/53c7xx.h
+++ b/src/devices/machine/53c7xx.h
diff --git a/src/emu/machine/53c810.c b/src/devices/machine/53c810.c
index a2a22f0fac0..a2a22f0fac0 100644
--- a/src/emu/machine/53c810.c
+++ b/src/devices/machine/53c810.c
diff --git a/src/emu/machine/53c810.h b/src/devices/machine/53c810.h
index f55c3cdbfb1..f55c3cdbfb1 100644
--- a/src/emu/machine/53c810.h
+++ b/src/devices/machine/53c810.h
diff --git a/src/emu/machine/64h156.c b/src/devices/machine/64h156.c
index 508034169dd..508034169dd 100644
--- a/src/emu/machine/64h156.c
+++ b/src/devices/machine/64h156.c
diff --git a/src/emu/machine/64h156.h b/src/devices/machine/64h156.h
index d21ce389dd0..d21ce389dd0 100644
--- a/src/emu/machine/64h156.h
+++ b/src/devices/machine/64h156.h
diff --git a/src/emu/machine/6522via.c b/src/devices/machine/6522via.c
index 56a35e19040..56a35e19040 100644
--- a/src/emu/machine/6522via.c
+++ b/src/devices/machine/6522via.c
diff --git a/src/emu/machine/6522via.h b/src/devices/machine/6522via.h
index 0b882ee7195..0b882ee7195 100644
--- a/src/emu/machine/6522via.h
+++ b/src/devices/machine/6522via.h
diff --git a/src/emu/machine/6525tpi.c b/src/devices/machine/6525tpi.c
index 038440e29d3..038440e29d3 100644
--- a/src/emu/machine/6525tpi.c
+++ b/src/devices/machine/6525tpi.c
diff --git a/src/emu/machine/6525tpi.h b/src/devices/machine/6525tpi.h
index 5a2e07d12dd..5a2e07d12dd 100644
--- a/src/emu/machine/6525tpi.h
+++ b/src/devices/machine/6525tpi.h
diff --git a/src/emu/machine/6532riot.c b/src/devices/machine/6532riot.c
index 98bb8c2dacc..98bb8c2dacc 100644
--- a/src/emu/machine/6532riot.c
+++ b/src/devices/machine/6532riot.c
diff --git a/src/emu/machine/6532riot.h b/src/devices/machine/6532riot.h
index 2825f31dc9d..2825f31dc9d 100644
--- a/src/emu/machine/6532riot.h
+++ b/src/devices/machine/6532riot.h
diff --git a/src/emu/machine/6821pia.c b/src/devices/machine/6821pia.c
index 3fbf6477fa9..3fbf6477fa9 100644
--- a/src/emu/machine/6821pia.c
+++ b/src/devices/machine/6821pia.c
diff --git a/src/emu/machine/6821pia.h b/src/devices/machine/6821pia.h
index cc686114feb..cc686114feb 100644
--- a/src/emu/machine/6821pia.h
+++ b/src/devices/machine/6821pia.h
diff --git a/src/devices/machine/68230pit.c b/src/devices/machine/68230pit.c
new file mode 100644
index 00000000000..d0acaf6ae45
--- /dev/null
+++ b/src/devices/machine/68230pit.c
@@ -0,0 +1,265 @@
+// license:BSD-3-Clause
+// copyright-holders:Joakim Larsson Edstr??m
+/**********************************************************************
+*
+* Motorola MC68230 PI/T Parallell Interface and Timer
+*
+* Revisions
+* 2015-07-15 JLE initial
+*
+* Todo
+* - Add clock and timers
+* - Add all missing registers
+* - Add configuration
+**********************************************************************/
+
+#include "68230pit.h"
+
+#define LOG(x) /* x */
+
+//**************************************************************************
+// DEVICE TYPE DEFINITIONS
+//**************************************************************************
+
+const device_type PIT68230 = &device_creator<pit68230_device>;
+
+//-------------------------------------------------
+// pit68230_device - constructors
+//-------------------------------------------------
+pit68230_device::pit68230_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source)
+ : device_t (mconfig, type, name, tag, owner, clock, shortname, source),
+ device_execute_interface (mconfig, *this)
+ , m_icount (0)
+ , m_write_pa (*this)
+ , m_write_h2 (*this)
+{
+}
+
+
+pit68230_device::pit68230_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t (mconfig, PIT68230, "PIT68230", tag, owner, clock, "pit68230", __FILE__),
+ device_execute_interface (mconfig, *this)
+ , m_icount (0)
+ , m_write_pa (*this)
+ , m_write_h2 (*this)
+{
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+void pit68230_device::device_start ()
+{
+ LOG (logerror ("PIT68230 device started\n"));
+ m_icountptr = &m_icount;
+
+ // resolve callbacks
+ m_write_pa.resolve_safe ();
+ m_write_h2.resolve_safe ();
+}
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+void pit68230_device::device_reset ()
+{
+ LOG (logerror ("PIT68230 device reseted\n"));
+ m_pgcr = 0;
+ m_psrr = 0;
+ m_paddr = 0;
+ m_pbddr = 0;
+ m_pcddr = 0;
+ m_pacr = 0; m_write_h2 (m_pacr);
+ m_pbcr = 0;
+ m_padr = 0; m_write_pa ((offs_t)0, m_padr); // TODO: check PADDR
+ m_pbdr = 0;
+ m_psr = 0;
+}
+
+//-------------------------------------------------
+// device_timer - handler timer events
+//-------------------------------------------------
+void pit68230_device::device_timer (emu_timer &timer, device_timer_id id, INT32 param, void *ptr)
+{
+}
+
+void pit68230_device::h1_set (UINT8 state)
+{
+ LOG (logerror ("h1_set %d @ m_psr %2x => ", state, m_psr));
+ if (state) m_psr |= 1; else m_psr &= ~1;
+ LOG (logerror ("%02x %lld\n", m_psr, machine ().firstcpu->total_cycles ()));
+}
+
+void pit68230_device::portb_setbit (UINT8 bit, UINT8 state)
+{
+ LOG (logerror ("portb_setbit %d/%d @ m_pbdr %2x => ", bit, state, m_pbdr));
+ if (state) m_pbdr |= (1 << bit); else m_pbdr &= ~(1 << bit);
+ LOG (logerror ("%02x %lld\n", m_pbdr, machine ().firstcpu->total_cycles ()));
+}
+
+//-------------------------------------------------
+// execute_run -
+//-------------------------------------------------
+void pit68230_device::execute_run ()
+{
+ do {
+ synchronize ();
+
+ m_icount--;
+ } while (m_icount > 0);
+}
+
+LOG (static INT32 ow_cnt = 0)
+LOG (static INT32 ow_data = 0)
+LOG (static INT32 ow_ofs = 0)
+
+WRITE8_MEMBER (pit68230_device::write){
+ switch (offset) {
+ case PIT_68230_PGCR:
+ m_pgcr = data;
+ break;
+
+ case PIT_68230_PSRR:
+ m_psrr = data;
+ break;
+
+ case PIT_68230_PADDR:
+ m_paddr = data;
+ break;
+
+ case PIT_68230_PBDDR:
+ m_pbddr = data;
+ break;
+
+ case PIT_68230_PCDDR:
+ m_pcddr = data;
+ break;
+
+ case PIT_68230_PACR:
+ m_pacr = data;
+ // callbacks
+ /*PACR in Mode 0
+ * 5 43 H2 Control in Submode 00 && 01
+ * ------------------------------------
+ * 0 XX Input pin - edge-sensitive status input, H2S is set on an asserted edge.
+ * 1 00 Output pin - negated, H2S is always clear.
+ * 1 01 Output pin - asserted, H2S is always clear.
+ * 1 10 Output pin - interlocked input handshake protocol, H2S is always clear.
+ * 1 11 Output pin - pulsed input handshake protocol, H2S is always clear.
+ *
+ * 5 43 H2 Control in Submode 1x
+ * ------------------------------------
+ * 0 XX Input pin - edge-sensitive status input, H2S is set on an asserted edge.
+ * 1 X0 Output pin - negated, H2S is always cleared.
+ * 1 X1 Output pin - asserted, H2S is always cleared.
+ */
+ m_write_h2 (m_pacr & 0x08 ? 1 : 0); // TODO: Check mode and submodes
+ break;
+
+ case PIT_68230_PBCR:
+ m_pbcr = data;
+ break;
+
+ case PIT_68230_PADR:
+ m_padr = data;
+ // callbacks
+ m_write_pa ((offs_t)0, m_padr); // TODO: check PADDR
+ break;
+
+ case PIT_68230_PSR:
+ m_psr = data;
+ break;
+
+ default:
+ LOG (logerror ("unhandled register %02x", offset));
+ }
+
+ LOG (if (offset != ow_ofs || data != ow_data || ow_cnt >= 1000) {
+ logerror ("\npit68230_device::write: previous identical operation performed %02x times\n", ow_cnt);
+ ow_cnt = 0;
+ ow_data = data;
+ ow_ofs = offset;
+ logerror ("pit68230_device::write: offset=%02x data=%02x %lld\n", ow_ofs, ow_data, machine ().firstcpu->total_cycles ());
+ }
+ else
+ ow_cnt++; )
+}
+
+LOG (static INT32 or_cnt = 0)
+LOG (static INT32 or_data = 0)
+LOG (static INT32 or_ofs = 0)
+
+READ8_MEMBER (pit68230_device::read){
+ UINT8 data = 0;
+
+ switch (offset) {
+ case PIT_68230_PGCR:
+ data = m_pgcr;
+ break;
+
+ case PIT_68230_PSRR:
+ data = m_psrr;
+ break;
+
+ case PIT_68230_PADDR:
+ data = m_paddr;
+ break;
+
+ case PIT_68230_PBDDR:
+ data = m_pbddr;
+ break;
+
+ case PIT_68230_PCDDR:
+ data = m_pcddr;
+ break;
+
+ case PIT_68230_PACR:
+ data = m_pacr;
+ break;
+
+ case PIT_68230_PBCR:
+ data = m_pbcr;
+ break;
+
+ case PIT_68230_PADR:
+ data = m_padr;
+ break;
+
+ case PIT_68230_PBDR:
+ /* 4.6.2. PORT B DATA REGISTER (PBDR). The port B data register is a holding
+ * register for moving data to and from port B pins. The port B data direction
+ * register determines whether each pin is an input (zero) or an output (one).
+ * This register is readable and writable at all times. Depending on the chosen
+ * mode/submode, reading or writing may affect the double-buffered handshake
+ * mechanism. The port B data register is not affected by the assertion of the
+ * RESET pin. PB0-PB7 sits on pins 17-24 on a 48 pin DIP package */
+ data = m_pbdr;
+ break;
+
+ case PIT_68230_PSR:
+ /* 4.8. PORT STATUS REGISTER (PSR) The port status register contains information about
+ * handshake pin activity. Bits 7-4 show the instantaneous level of the respective handshake
+ * pin, and are independent of the handshake pin sense bits in the port general control
+ * register. Bits 3-0 are the respective status bits referred to throughout this document.
+ * Their interpretation depends on the programmed mode/submode of the PI/T. For bits
+ * 3-0 a one is the active or asserted state. */
+ data = m_psr;
+ break;
+
+ default:
+ LOG (logerror ("unhandled register %02x", offset));
+ data = 0;
+ }
+
+ LOG (if (offset != or_ofs || data != or_data || or_cnt >= 1000) {
+ logerror ("\npit68230_device::read: previous identical operation performed %02x times\n", or_cnt);
+ or_cnt = 0;
+ or_data = data;
+ or_ofs = offset;
+ logerror ("pit68230_device::read: offset=%02x data=%02x %lld\n", or_ofs, or_data, machine ().firstcpu->total_cycles ());
+ }
+ else
+ or_cnt++; )
+
+ return data;
+}
diff --git a/src/devices/machine/68230pit.h b/src/devices/machine/68230pit.h
new file mode 100644
index 00000000000..b78dbc887aa
--- /dev/null
+++ b/src/devices/machine/68230pit.h
@@ -0,0 +1,131 @@
+// license:BSD-3-Clause
+// copyright-holders:Joakim Larsson Edstr??m
+/**********************************************************************
+*
+* Motorola MC68230 PI/T Parallell Interface and Timer
+*
+* _____ _____
+* D5 1 |* \_/ | 48 D4
+* D6 2 | | 47 D3
+* D7 3 | | 46 D2
+* PA0 4 | | 45 D1
+* PA1 5 | | 44 D0
+* PA2 6 | | 43 R/W*
+* PA3 7 | | 42 DTACK*
+* PA4 8 | | 41 CS*
+* PA5 9 | | 40 CLK
+* PA6 10 | | 39 RESET*
+* PA7 11 | | 38 VSS
+* Vcc 12 | TS68230 | 37 PC7/TIACK*
+* H1 13 | SC87845 | 36 PC6/PIACK*
+* H2 14 | | 35 PC5/PIRQ*
+* H3 15 | | 34 PC4/DMAREQ*
+* H4 16 | | 33 PC3/TOUT
+* PB0 17 | | 32 PC2/TIN
+* PB1 18 | | 31 PC1
+* PB2 19 | | 30 PC0
+* PB3 20 | | 29 RS1
+* PB4 21 | | 28 RS2
+* PB5 22 | | 27 RS3
+* PB6 23 | | 26 RS4
+* PB7 24 |_____________| 25 RS5
+*
+**********************************************************************/
+
+#pragma once
+
+#ifndef __68230PIT_H__
+#define __68230PIT_H__
+
+#include "emu.h"
+
+//**************************************************************************
+// INTERFACE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_PIT68230_PA_OUTPUT_CALLBACK(_write) \
+ devcb = &pit68230_device::set_pa_wr_callback (*device, DEVCB_ ## _write);
+
+#define MCFG_PIT68230_PB_OUTPUT_CALLBACK(_write) \
+ devcb = &pit68230_device::set_pb_wr_callback (*device, DEVCB_ ## _write);
+
+#define MCFG_PIT68230_H2_CALLBACK(_write) \
+ devcb = &pit68230_device::set_h2_wr_callback (*device, DEVCB_ ## _write);
+
+/*-----------------------------------------------------------------------
+ * Registers RS1-RS5 R/W Description
+ * -------------------------------------------------------------------------*/
+#define PIT_68230_PGCR 0x00 /* RW Port General Control register */
+#define PIT_68230_PSRR 0x01 /* RW Port Service Request register */
+#define PIT_68230_PADDR 0x02 /* RW Port A Data Direction register */
+#define PIT_68230_PBDDR 0x03 /* RW Port B Data Direction register */
+#define PIT_68230_PCDDR 0x04 /* RW Port C Data Direction register */
+#define PIT_68230_PIVR 0x05 /* RW Port Interrupt vector register */
+#define PIT_68230_PACR 0x06 /* RW Port A Control register */
+#define PIT_68230_PBCR 0x07 /* RW Port B Control register */
+#define PIT_68230_PADR 0x08 /* RW Port A Data register */
+#define PIT_68230_PBDR 0x09 /* RW Port B Data register */
+#define PIT_68230_PAAR 0x0a /* RO Port A Alternate register */
+#define PIT_68230_PBAR 0x0b /* RO Port B Alternate register */
+#define PIT_68230_PCDR 0x0c /* RW Port C Data register */
+#define PIT_68230_PSR 0x0d /* RW Port Status register */
+#define PIT_68230_TCR 0x10 /* RW Timer Control Register */
+#define PIT_68230_TIVR 0x11 /* RW Timer Interrupt Vector Register */
+#define PIT_68230_CPRH 0x13 /* RW Counter Preload Register High */
+#define PIT_68230_CPRM 0x14 /* RW Counter Preload Register Middle */
+#define PIT_68230_CPRL 0x15 /* RW Counter Preload Register Low */
+#define PIT_68230_CNTRH 0x17 /* RO Counter Register High */
+#define PIT_68230_CNTRM 0x18 /* RO Counter Register Middle */
+#define PIT_68230_CNTRL 0x19 /* RO Counter Register Low */
+#define PIT_68230_TSR 0x1A /* RW Timer Status Register */
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+class pit68230_device : public device_t, public device_execute_interface
+{
+public:
+// construction/destruction
+pit68230_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source);
+pit68230_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+template<class _Object> static devcb_base &set_pa_wr_callback (device_t &device, _Object object)
+{
+ return downcast<pit68230_device &>(device).m_write_pa.set_callback (object);
+}
+template<class _Object> static devcb_base &set_h2_wr_callback (device_t &device, _Object object)
+{
+ return downcast<pit68230_device &>(device).m_write_h2.set_callback (object);
+}
+
+DECLARE_WRITE8_MEMBER (write);
+DECLARE_READ8_MEMBER (read);
+
+void h1_set (UINT8 state);
+void portb_setbit (UINT8 bit, UINT8 state);
+
+protected:
+// device-level overrides
+virtual void device_start ();
+virtual void device_reset ();
+virtual void device_timer (emu_timer &timer, device_timer_id id, int param, void *ptr);
+virtual void execute_run ();
+int m_icount;
+devcb_write8 m_write_pa;
+devcb_write_line m_write_h2;
+
+// peripheral ports
+UINT8 m_pgcr; // Port General Control register
+UINT8 m_psrr; // Port Service Request register
+UINT8 m_paddr; // Port A Data Direction register
+UINT8 m_pbddr; // Port B Data Direction register
+UINT8 m_pcddr; // Port C Data Direction register
+UINT8 m_pacr; // Port A Control register
+UINT8 m_pbcr; // Port B Control register
+UINT8 m_padr; // Port A Data register
+UINT8 m_pbdr; // Port B Data register
+UINT8 m_psr; // Port Status Register
+};
+
+// device type definition
+extern const device_type PIT68230;
+#endif /* __68230PIT_H__ */
diff --git a/src/emu/machine/68307.c b/src/devices/machine/68307.c
index 320c701acc7..320c701acc7 100644
--- a/src/emu/machine/68307.c
+++ b/src/devices/machine/68307.c
diff --git a/src/emu/machine/68307.h b/src/devices/machine/68307.h
index 57b09b639ca..57b09b639ca 100644
--- a/src/emu/machine/68307.h
+++ b/src/devices/machine/68307.h
diff --git a/src/emu/machine/68307bus.c b/src/devices/machine/68307bus.c
index c9af37df775..c9af37df775 100644
--- a/src/emu/machine/68307bus.c
+++ b/src/devices/machine/68307bus.c
diff --git a/src/emu/machine/68307bus.h b/src/devices/machine/68307bus.h
index 5131ad4c9c5..5131ad4c9c5 100644
--- a/src/emu/machine/68307bus.h
+++ b/src/devices/machine/68307bus.h
diff --git a/src/emu/machine/68307sim.c b/src/devices/machine/68307sim.c
index 3709c346fbf..3709c346fbf 100644
--- a/src/emu/machine/68307sim.c
+++ b/src/devices/machine/68307sim.c
diff --git a/src/emu/machine/68307sim.h b/src/devices/machine/68307sim.h
index 59b33bee1e7..59b33bee1e7 100644
--- a/src/emu/machine/68307sim.h
+++ b/src/devices/machine/68307sim.h
diff --git a/src/emu/machine/68307tmu.c b/src/devices/machine/68307tmu.c
index 23a67ada9ad..23a67ada9ad 100644
--- a/src/emu/machine/68307tmu.c
+++ b/src/devices/machine/68307tmu.c
diff --git a/src/emu/machine/68307tmu.h b/src/devices/machine/68307tmu.h
index 2c62858b66d..2c62858b66d 100644
--- a/src/emu/machine/68307tmu.h
+++ b/src/devices/machine/68307tmu.h
diff --git a/src/emu/machine/68340.c b/src/devices/machine/68340.c
index 752a7be4592..752a7be4592 100644
--- a/src/emu/machine/68340.c
+++ b/src/devices/machine/68340.c
diff --git a/src/emu/machine/68340.h b/src/devices/machine/68340.h
index 6f1260ae1cb..6f1260ae1cb 100644
--- a/src/emu/machine/68340.h
+++ b/src/devices/machine/68340.h
diff --git a/src/emu/machine/68340dma.c b/src/devices/machine/68340dma.c
index 9ee0ae5114e..9ee0ae5114e 100644
--- a/src/emu/machine/68340dma.c
+++ b/src/devices/machine/68340dma.c
diff --git a/src/emu/machine/68340dma.h b/src/devices/machine/68340dma.h
index 56d8228fa2d..56d8228fa2d 100644
--- a/src/emu/machine/68340dma.h
+++ b/src/devices/machine/68340dma.h
diff --git a/src/emu/machine/68340ser.c b/src/devices/machine/68340ser.c
index 9e4118ec92e..9e4118ec92e 100644
--- a/src/emu/machine/68340ser.c
+++ b/src/devices/machine/68340ser.c
diff --git a/src/emu/machine/68340ser.h b/src/devices/machine/68340ser.h
index 0fda812ff0a..0fda812ff0a 100644
--- a/src/emu/machine/68340ser.h
+++ b/src/devices/machine/68340ser.h
diff --git a/src/emu/machine/68340sim.c b/src/devices/machine/68340sim.c
index 88e56d78763..88e56d78763 100644
--- a/src/emu/machine/68340sim.c
+++ b/src/devices/machine/68340sim.c
diff --git a/src/emu/machine/68340sim.h b/src/devices/machine/68340sim.h
index 493fa9805ce..493fa9805ce 100644
--- a/src/emu/machine/68340sim.h
+++ b/src/devices/machine/68340sim.h
diff --git a/src/emu/machine/68340tmu.c b/src/devices/machine/68340tmu.c
index f8109214ba0..f8109214ba0 100644
--- a/src/emu/machine/68340tmu.c
+++ b/src/devices/machine/68340tmu.c
diff --git a/src/emu/machine/68340tmu.h b/src/devices/machine/68340tmu.h
index a892e2792d8..a892e2792d8 100644
--- a/src/emu/machine/68340tmu.h
+++ b/src/devices/machine/68340tmu.h
diff --git a/src/emu/machine/6840ptm.c b/src/devices/machine/6840ptm.c
index 239498f681c..239498f681c 100644
--- a/src/emu/machine/6840ptm.c
+++ b/src/devices/machine/6840ptm.c
diff --git a/src/emu/machine/6840ptm.h b/src/devices/machine/6840ptm.h
index d00577d62d0..d00577d62d0 100644
--- a/src/emu/machine/6840ptm.h
+++ b/src/devices/machine/6840ptm.h
diff --git a/src/emu/machine/6850acia.c b/src/devices/machine/6850acia.c
index 7c1fcc85178..7c1fcc85178 100644
--- a/src/emu/machine/6850acia.c
+++ b/src/devices/machine/6850acia.c
diff --git a/src/emu/machine/6850acia.h b/src/devices/machine/6850acia.h
index 8bb1a3891bd..8bb1a3891bd 100644
--- a/src/emu/machine/6850acia.h
+++ b/src/devices/machine/6850acia.h
diff --git a/src/emu/machine/68561mpcc.c b/src/devices/machine/68561mpcc.c
index 1b8a8895fed..1b8a8895fed 100644
--- a/src/emu/machine/68561mpcc.c
+++ b/src/devices/machine/68561mpcc.c
diff --git a/src/emu/machine/68561mpcc.h b/src/devices/machine/68561mpcc.h
index df036282f1c..df036282f1c 100644
--- a/src/emu/machine/68561mpcc.h
+++ b/src/devices/machine/68561mpcc.h
diff --git a/src/emu/machine/7200fifo.c b/src/devices/machine/7200fifo.c
index ee44eada962..ee44eada962 100644
--- a/src/emu/machine/7200fifo.c
+++ b/src/devices/machine/7200fifo.c
diff --git a/src/emu/machine/7200fifo.h b/src/devices/machine/7200fifo.h
index 0f5c28e7048..0f5c28e7048 100644
--- a/src/emu/machine/7200fifo.h
+++ b/src/devices/machine/7200fifo.h
diff --git a/src/emu/machine/74123.c b/src/devices/machine/74123.c
index f88b71dfab8..f88b71dfab8 100644
--- a/src/emu/machine/74123.c
+++ b/src/devices/machine/74123.c
diff --git a/src/emu/machine/74123.h b/src/devices/machine/74123.h
index 93325bdbeb1..93325bdbeb1 100644
--- a/src/emu/machine/74123.h
+++ b/src/devices/machine/74123.h
diff --git a/src/emu/machine/74145.c b/src/devices/machine/74145.c
index f85439398de..f85439398de 100644
--- a/src/emu/machine/74145.c
+++ b/src/devices/machine/74145.c
diff --git a/src/emu/machine/74145.h b/src/devices/machine/74145.h
index 9b047207f1b..9b047207f1b 100644
--- a/src/emu/machine/74145.h
+++ b/src/devices/machine/74145.h
diff --git a/src/emu/machine/74148.c b/src/devices/machine/74148.c
index 02d1be3927a..02d1be3927a 100644
--- a/src/emu/machine/74148.c
+++ b/src/devices/machine/74148.c
diff --git a/src/emu/machine/74148.h b/src/devices/machine/74148.h
index 294869de12f..294869de12f 100644
--- a/src/emu/machine/74148.h
+++ b/src/devices/machine/74148.h
diff --git a/src/emu/machine/74153.c b/src/devices/machine/74153.c
index e38194f5d6e..e38194f5d6e 100644
--- a/src/emu/machine/74153.c
+++ b/src/devices/machine/74153.c
diff --git a/src/emu/machine/74153.h b/src/devices/machine/74153.h
index bfd9967e0e4..bfd9967e0e4 100644
--- a/src/emu/machine/74153.h
+++ b/src/devices/machine/74153.h
diff --git a/src/emu/machine/74181.c b/src/devices/machine/74181.c
index dee894446ea..dee894446ea 100644
--- a/src/emu/machine/74181.c
+++ b/src/devices/machine/74181.c
diff --git a/src/emu/machine/74181.h b/src/devices/machine/74181.h
index 5aeb64768f7..5aeb64768f7 100644
--- a/src/emu/machine/74181.h
+++ b/src/devices/machine/74181.h
diff --git a/src/emu/machine/7474.c b/src/devices/machine/7474.c
index 1b6ce95033d..1b6ce95033d 100644
--- a/src/emu/machine/7474.c
+++ b/src/devices/machine/7474.c
diff --git a/src/emu/machine/7474.h b/src/devices/machine/7474.h
index 9373e41d7d3..9373e41d7d3 100644
--- a/src/emu/machine/7474.h
+++ b/src/devices/machine/7474.h
diff --git a/src/emu/machine/8042kbdc.c b/src/devices/machine/8042kbdc.c
index a1d36a41b43..a1d36a41b43 100644
--- a/src/emu/machine/8042kbdc.c
+++ b/src/devices/machine/8042kbdc.c
diff --git a/src/emu/machine/8042kbdc.h b/src/devices/machine/8042kbdc.h
index b8d9c4e22fd..b8d9c4e22fd 100644
--- a/src/emu/machine/8042kbdc.h
+++ b/src/devices/machine/8042kbdc.h
diff --git a/src/emu/machine/8530scc.c b/src/devices/machine/8530scc.c
index 8180d01f869..8ca86e173f6 100644
--- a/src/emu/machine/8530scc.c
+++ b/src/devices/machine/8530scc.c
@@ -26,7 +26,7 @@ const device_type SCC8530 = &device_creator<scc8530_t>;
***************************************************************************/
scc8530_t::scc8530_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
- device_t(mconfig, SCC8530, "Zilog 8530 SCC", tag, owner, clock, "scc8530", __FILE__),
+ device_t(mconfig, SCC8530, "Zilog 8530 SCC (Legacy)", tag, owner, clock, "scc8530l", __FILE__),
intrq_cb(*this)
{
}
diff --git a/src/emu/machine/8530scc.h b/src/devices/machine/8530scc.h
index af4cef88e1e..af4cef88e1e 100644
--- a/src/emu/machine/8530scc.h
+++ b/src/devices/machine/8530scc.h
diff --git a/src/emu/machine/aakart.c b/src/devices/machine/aakart.c
index 762a1a2f8b9..762a1a2f8b9 100644
--- a/src/emu/machine/aakart.c
+++ b/src/devices/machine/aakart.c
diff --git a/src/emu/machine/aakart.h b/src/devices/machine/aakart.h
index bd59a54838a..bd59a54838a 100644
--- a/src/emu/machine/aakart.h
+++ b/src/devices/machine/aakart.h
diff --git a/src/emu/machine/adc0808.c b/src/devices/machine/adc0808.c
index dc173cc178e..dc173cc178e 100644
--- a/src/emu/machine/adc0808.c
+++ b/src/devices/machine/adc0808.c
diff --git a/src/emu/machine/adc0808.h b/src/devices/machine/adc0808.h
index a7d1c3eb6c5..a7d1c3eb6c5 100644
--- a/src/emu/machine/adc0808.h
+++ b/src/devices/machine/adc0808.h
diff --git a/src/emu/machine/adc083x.c b/src/devices/machine/adc083x.c
index 4f1b11cebf0..4f1b11cebf0 100644
--- a/src/emu/machine/adc083x.c
+++ b/src/devices/machine/adc083x.c
diff --git a/src/emu/machine/adc083x.h b/src/devices/machine/adc083x.h
index 60050506f81..60050506f81 100644
--- a/src/emu/machine/adc083x.h
+++ b/src/devices/machine/adc083x.h
diff --git a/src/emu/machine/adc1038.c b/src/devices/machine/adc1038.c
index 46b2d7c8e76..46b2d7c8e76 100644
--- a/src/emu/machine/adc1038.c
+++ b/src/devices/machine/adc1038.c
diff --git a/src/emu/machine/adc1038.h b/src/devices/machine/adc1038.h
index 1d6b0f890bc..1d6b0f890bc 100644
--- a/src/emu/machine/adc1038.h
+++ b/src/devices/machine/adc1038.h
diff --git a/src/emu/machine/adc1213x.c b/src/devices/machine/adc1213x.c
index f6104f273e3..f6104f273e3 100644
--- a/src/emu/machine/adc1213x.c
+++ b/src/devices/machine/adc1213x.c
diff --git a/src/emu/machine/adc1213x.h b/src/devices/machine/adc1213x.h
index 3f2f0dbc63c..3f2f0dbc63c 100644
--- a/src/emu/machine/adc1213x.h
+++ b/src/devices/machine/adc1213x.h
diff --git a/src/emu/machine/aicartc.c b/src/devices/machine/aicartc.c
index dc6dba7c2e6..dc6dba7c2e6 100644
--- a/src/emu/machine/aicartc.c
+++ b/src/devices/machine/aicartc.c
diff --git a/src/emu/machine/aicartc.h b/src/devices/machine/aicartc.h
index 1b877a604ff..1b877a604ff 100644
--- a/src/emu/machine/aicartc.h
+++ b/src/devices/machine/aicartc.h
diff --git a/src/emu/machine/akiko.c b/src/devices/machine/akiko.c
index 99acef43cab..99acef43cab 100644
--- a/src/emu/machine/akiko.c
+++ b/src/devices/machine/akiko.c
diff --git a/src/emu/machine/akiko.h b/src/devices/machine/akiko.h
index 9be2ac08185..9be2ac08185 100644
--- a/src/emu/machine/akiko.h
+++ b/src/devices/machine/akiko.h
diff --git a/src/emu/machine/am53cf96.c b/src/devices/machine/am53cf96.c
index 595a38f985b..595a38f985b 100644
--- a/src/emu/machine/am53cf96.c
+++ b/src/devices/machine/am53cf96.c
diff --git a/src/emu/machine/am53cf96.h b/src/devices/machine/am53cf96.h
index 8fda3ee0e5b..8fda3ee0e5b 100644
--- a/src/emu/machine/am53cf96.h
+++ b/src/devices/machine/am53cf96.h
diff --git a/src/emu/machine/am9517a.c b/src/devices/machine/am9517a.c
index 469da3d167f..469da3d167f 100644
--- a/src/emu/machine/am9517a.c
+++ b/src/devices/machine/am9517a.c
diff --git a/src/emu/machine/am9517a.h b/src/devices/machine/am9517a.h
index 817cf5ce9df..817cf5ce9df 100644
--- a/src/emu/machine/am9517a.h
+++ b/src/devices/machine/am9517a.h
diff --git a/src/emu/machine/amigafdc.c b/src/devices/machine/amigafdc.c
index 0be33c07ec9..0be33c07ec9 100644
--- a/src/emu/machine/amigafdc.c
+++ b/src/devices/machine/amigafdc.c
diff --git a/src/emu/machine/amigafdc.h b/src/devices/machine/amigafdc.h
index 77727d51a88..77727d51a88 100644
--- a/src/emu/machine/amigafdc.h
+++ b/src/devices/machine/amigafdc.h
diff --git a/src/emu/machine/at28c16.c b/src/devices/machine/at28c16.c
index e50049d9cbc..e50049d9cbc 100644
--- a/src/emu/machine/at28c16.c
+++ b/src/devices/machine/at28c16.c
diff --git a/src/emu/machine/at28c16.h b/src/devices/machine/at28c16.h
index f8f71011347..f8f71011347 100644
--- a/src/emu/machine/at28c16.h
+++ b/src/devices/machine/at28c16.h
diff --git a/src/devices/machine/at29x.c b/src/devices/machine/at29x.c
new file mode 100644
index 00000000000..440645b4c00
--- /dev/null
+++ b/src/devices/machine/at29x.c
@@ -0,0 +1,525 @@
+// license:BSD-3-Clause
+// copyright-holders:Michael Zapf
+/*
+ ATMEL AT29 family of Flash EEPROM
+
+ References:
+ [1] ATMEL: 4-megabit (512K x 8) 5-volt Only 256-byte sector Flash Memory
+ [2] ATMEL: Programming Atmel's AT29 Flash Family
+
+
+ AT29 family
+
+ Device Memory ID Sectors Sector Size Write Cycle Time Comments
+ ------------------------------------------------------------------------------------------
+ AT29C256 32K x 8 DC 512 64 bytes 10 ms
+ AT29LV256 32K x 8 BC 512 64 bytes 20 ms
+ AT29C257 32K x 8 DC 512 64 bytes 10 ms
+ AT29C512 64K x 8 5D 512 128 bytes 10 ms
+ AT29LV512 64K x 8 3D 512 128 bytes 20 ms
+ AT29C010A 128K x 8 D5 1024 128 bytes 10 ms
+ AT29LV010A 128K x 8 35 1024 128 bytes 20 ms
+ AT29BV010A 128K x 8 35 1024 128 bytes 20 ms
+ AT29C1024 64K x 16 25 512 128 words 10 ms
+ AT29LV1024 64K x 16 26 512 128 words 20 ms
+ AT29C020 256K x 8 DA 1024 256 bytes 10 ms
+ AT29LV020 256K x 8 BA 1024 256 bytes 20 ms
+ AT29BV020 256K x 8 BA 1024 256 bytes 20 ms
+ AT29C040 512K x 8 5B 1024 512 bytes 10 ms Use AT29C040A for new designs
+ AT29LV040 512K x 8 3B 1024 512 bytes 20 ms Use AT29LV040A for new designs
+ AT29BV040 512K x 8 3B 1024 512 bytes 20 ms Use AT29BV040A for new designs
+ AT29C040A 512K x 8 A4 2048 256 bytes 10 ms
+ AT29LV040A 512K x 8 C4 2048 256 bytes 20 ms
+ AT29BV040A 512K x 8 C4 2048 256 bytes 20 ms
+
+ TODO: Implement remaining variants
+
+ MZ, Aug 2015
+*/
+
+#include "at29x.h"
+
+#define TRACE_PRG 0
+#define TRACE_READ 0
+#define TRACE_WRITE 0
+#define TRACE_CONFIG 0
+#define TRACE_STATE 0
+
+enum
+{
+ PRGTIMER = 1
+};
+
+/*
+ Constructor for all variants
+*/
+
+at29x_device::at29x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ device_nvram_interface(mconfig, *this),
+ m_memory_size(0), // bytes
+ m_word_width(8),
+ m_device_id(0),
+ m_sector_size(0),
+ m_cycle_time(10), // ms
+ m_boot_block_size(16*1024),
+ m_version(0)
+{
+}
+
+/*
+ Constructor for AT29C020
+*/
+at29c020_device::at29c020_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : at29x_device(mconfig, AT29C020, "ATMEL 29C020 256K x 8 FEEPROM", tag, owner, clock, "at29c020", __FILE__)
+{
+ m_memory_size = 256*1024;
+ m_device_id = 0xda;
+ m_sector_size = 256;
+}
+
+/*
+ Constructor for AT29C040
+*/
+at29c040_device::at29c040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : at29x_device(mconfig, AT29C040, "ATMEL 29C040 512K x 8 FEEPROM", tag, owner, clock, "at29c040", __FILE__)
+{
+ m_memory_size = 512*1024;
+ m_device_id = 0x5b;
+ m_sector_size = 512;
+}
+
+/*
+ Constructor for AT29C040A
+*/
+at29c040a_device::at29c040a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : at29x_device(mconfig, AT29C040A, "ATMEL 29C040A 512K x 8 FEEPROM", tag, owner, clock, "at29c040a", __FILE__)
+{
+ m_memory_size = 512*1024;
+ m_device_id = 0xa4;
+ m_sector_size = 256;
+}
+
+
+//-------------------------------------------------
+// nvram_default - called to initialize NVRAM to
+// its default state
+//-------------------------------------------------
+
+void at29x_device::nvram_default()
+{
+ memset(m_eememory, 0, m_memory_size+2);
+}
+
+//-------------------------------------------------
+// nvram_read - called to read NVRAM from the
+// .nv file
+//-------------------------------------------------
+
+void at29x_device::nvram_read(emu_file &file)
+{
+ file.read(m_eememory, m_memory_size+2);
+}
+
+//-------------------------------------------------
+// nvram_write - called to write NVRAM to the
+// .nv file
+//-------------------------------------------------
+
+void at29x_device::nvram_write(emu_file &file)
+{
+ // If we don't write (because there were no changes), the file will be wiped
+ if (TRACE_PRG) logerror("%s: Write to NVRAM file\n", tag());
+ m_eememory[0] = m_version;
+ file.write(m_eememory, m_memory_size+2);
+}
+
+/*
+ Programming timer callback
+*/
+void at29x_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch (m_pgm)
+ {
+ case PGM_1:
+ // Programming cycle timeout
+ logerror("%s: Programming cycle timeout\n", tag());
+ m_pgm = PGM_0;
+ break;
+
+ case PGM_2:
+ // Programming cycle start
+ if (TRACE_PRG) logerror("%s: Sector write start\n", tag());
+ m_pgm = PGM_3;
+ // We assume a typical delay of 70% of the max value
+ m_programming_timer->adjust(attotime::from_msec(m_cycle_time*7/10));
+ break;
+
+ case PGM_3:
+ // Programming cycle end; now burn the buffer into the flash EEPROM
+ memcpy(m_eememory + 2 + get_sector_number(m_programming_last_offset) * m_sector_size, m_programming_buffer, m_sector_size);
+
+ if (TRACE_PRG) logerror("%s: Sector write completed at location %04x\n", tag(), m_programming_last_offset);
+
+ // Data protect state will be activated at the end of the program cycle [1]
+ if (m_enabling_sdb) m_sdp = true;
+
+ // Data protect state will be deactivated at the end of the program period [1]
+ if (m_disabling_sdb) m_sdp = false;
+
+ if (TRACE_PRG) logerror("%s: Software data protection = %d\n", tag(), m_sdp);
+
+ m_pgm = PGM_0;
+ m_enabling_sdb = false;
+ m_disabling_sdb = false;
+ sync_flags();
+ break;
+
+ default:
+ logerror("%s: Invalid state %d during programming\n", tag(), m_pgm);
+ m_pgm = PGM_0;
+ break;
+ }
+}
+
+void at29x_device::sync_flags()
+{
+ if (m_lower_bbl) m_eememory[1] |= 0x04;
+ else m_eememory[1] &= ~0x04;
+
+ if (m_higher_bbl) m_eememory[1] |= 0x02;
+ else m_eememory[1] &= ~0x02;
+
+ if (m_sdp) m_eememory[1] |= 0x01;
+ else m_eememory[1] &= ~0x01;
+}
+
+/*
+ read a byte from FEEPROM
+*/
+READ8_MEMBER( at29x_device::read )
+{
+ int reply;
+
+ offset &= m_address_mask;
+
+ // Reading in the midst of any command sequence cancels it (not verified)
+ m_cmd = CMD_0;
+ m_long_sequence = false;
+
+ sync_flags();
+
+ // Reading before the start of a programming cycle cancels it (not verified)
+ if (m_pgm == PGM_1)
+ {
+ // Attempt to access a locked out boot block: cancel programming command if necessary
+ m_pgm = PGM_0;
+ m_enabling_sdb = false;
+ m_disabling_sdb = false;
+ m_programming_timer->adjust(attotime::never);
+ }
+
+ if (m_id_mode)
+ {
+ // Experiments showed that the manufacturer code and device code
+ // are returned for every address 0 and 1 modulo sector_size.
+ //
+ if ((offset % m_sector_size)==0) reply = 0x1f; // Manufacturer code
+ else
+ {
+ if ((offset % m_sector_size)==1) reply = m_device_id; // Device code
+ else
+ {
+ // Boot block lockout detection [1]
+ if (offset == 0x00002) reply = m_lower_bbl? 0xff : 0xfe;
+ else
+ {
+ if (offset == 0x7fff2) reply = m_higher_bbl? 0xff : 0xfe;
+ else reply = 0;
+ }
+ }
+ }
+ }
+ else if ((m_pgm == PGM_2) || (m_pgm == PGM_3))
+ {
+ if (m_pgm == PGM_2)
+ {
+ // DATA* polling starts the programming cycle (not verified)
+ m_pgm = PGM_3;
+
+ // We assume a typical delay of 70% of the max value
+ m_programming_timer->adjust(attotime::from_msec(m_cycle_time*7/10));
+ }
+
+ if (TRACE_READ) logerror("%s: DATA poll; toggle bit 1\n", tag());
+ reply = m_toggle_bit? 0x02 : 0x00;
+ m_toggle_bit = !m_toggle_bit;
+
+ // When we read the byte on the last position, we get the inverse of the last bit [1]
+ if (offset == m_programming_last_offset)
+ {
+ reply |= ((~m_programming_buffer[m_programming_last_offset & m_sector_mask]) & 0x01);
+ }
+ }
+ else
+ // Simple case: just read the memory contents
+ reply = m_eememory[offset+2];
+
+ if (TRACE_READ) logerror("%s: %05x -> %02x (PGM=%d)\n", tag(), offset, reply, m_pgm);
+
+ return reply;
+}
+
+/*
+ Write a byte to FEEPROM
+*/
+WRITE8_MEMBER( at29x_device::write )
+{
+ offset &= m_address_mask;
+ if (TRACE_WRITE) logerror("%s: %05x <- %02x\n", tag(), offset, data);
+
+ // The special CFI commands assume a smaller address space according
+ // to the specification ("address format A14-A0")
+ offs_t cfi_offset = offset & 0x7fff;
+
+ if (m_enabling_bbl)
+ {
+ // Determine whether we lock the upper or lower boot block
+ if (TRACE_STATE) logerror("%s: Enabling boot block lockout\n", tag());
+ m_enabling_bbl = false;
+
+ if ((offset == 0x00000) && (data == 0x00))
+ {
+ if (TRACE_STATE) logerror("%s: Enabling lower boot block lockout\n", tag());
+ m_lower_bbl = true;
+ sync_flags();
+ return;
+ }
+ else
+ {
+ if ((offset == 0x7ffff) && (data == 0xff))
+ {
+ if (TRACE_STATE) logerror("%s: Enabling higher boot block lockout\n", tag());
+ m_higher_bbl = true;
+ sync_flags();
+ return;
+ }
+ else
+ {
+ logerror("%s: Invalid boot block specification: %05x/%02x\n", tag(), offset, data);
+ }
+ }
+ }
+
+ switch (m_cmd)
+ {
+ case CMD_0:
+ // CMD_0: start state
+ if ((cfi_offset == 0x5555) && (data == 0xaa))
+ {
+ if (TRACE_STATE) logerror("%s: Command sequence started (aa)\n", tag());
+ m_cmd = CMD_1;
+ return;
+ }
+ else
+ {
+ m_cmd = CMD_0;
+ m_long_sequence = false;
+ }
+ break;
+
+ case CMD_1:
+ // CMD_1: state after writing aa to 5555
+ if ((cfi_offset == 0x2aaa) && (data == 0x55))
+ {
+ if (TRACE_STATE) logerror("%s: Command sequence continued (55)\n", tag());
+ m_cmd = CMD_2;
+ return;
+ }
+ else
+ {
+ m_cmd = CMD_0;
+ m_long_sequence = false;
+ if (TRACE_STATE) logerror("%s: Command sequence aborted\n", tag());
+ }
+ break;
+
+ case CMD_2:
+ // CMD_2: state after writing 55 to 2aaa
+ if (cfi_offset == 0x5555)
+ {
+ m_pgm = PGM_0;
+ m_enabling_sdb = false;
+ m_disabling_sdb = false;
+ m_programming_timer->adjust(attotime::never);
+
+ // Process command
+ if (TRACE_STATE) logerror("%s: Command sequence continued (%2x)\n", tag(), data);
+ switch (data)
+ {
+ case 0x10:
+ // Software chip erase (optional feature, see [1])
+ if (m_long_sequence)
+ {
+ if (m_lower_bbl || m_higher_bbl)
+ logerror("%s: Boot block lockout active; chip cannot be erased.\n", tag());
+ else
+ {
+ if (TRACE_STATE) logerror("%s: Erase chip\n", tag());
+ memset(m_eememory+2, 0xff, m_memory_size);
+ }
+ }
+ break;
+
+ case 0x20:
+ // Software data protection disable
+ // The complete sequence is aa-55-80-aa-55-20
+ // so we need a 80 before, else the sequence is invalid
+ if (m_long_sequence)
+ {
+ if (TRACE_STATE) logerror("%s: Software data protection disable\n", tag());
+ m_pgm = PGM_1;
+ m_disabling_sdb = true;
+ // It is not clear from the specification whether the byte cycle timer
+ // is already started here or when the first data byte is written
+ }
+ break;
+
+ case 0x40:
+ // Boot block lockout enable
+ // Complete sequence is aa-55-80-aa-55-40
+ if (TRACE_STATE) logerror("%s: Boot block lockout enable\n", tag());
+ if (m_long_sequence) m_enabling_bbl = true;
+ // We'll know which boot block is affected on the next write
+ break;
+
+ case 0x80:
+ // Long sequences are those that contain aa55 twice
+ m_long_sequence = true;
+ break;
+
+ case 0x90:
+ // Software product identification entry
+ if (TRACE_STATE) logerror("%s: Entering Identification mode\n", tag());
+ m_id_mode = true;
+ break;
+
+ case 0xa0:
+ // Software data protection enable
+ if (TRACE_STATE) logerror("%s: Software data protection enable\n", tag());
+ m_pgm = PGM_1;
+ m_enabling_sdb = true;
+ // It is not clear from the specification whether the byte cycle timer
+ // is already started here or when the first data byte is written
+ break;
+
+ case 0xf0:
+ // Software product identification exit
+ if (TRACE_STATE) logerror("%s: Exiting Identification mode\n", tag());
+ m_id_mode = false;
+ break;
+ }
+ m_cmd = CMD_0;
+ if (data != 0x80) m_long_sequence = false;
+
+ // Return, because we don't want to write the EEPROM with the command byte
+ return;
+ }
+ else
+ {
+ m_cmd = CMD_0;
+ m_long_sequence = false;
+ }
+ }
+
+ if ((m_pgm == PGM_2) && (get_sector_number(offset) != get_sector_number(m_programming_last_offset)))
+ {
+ // cancel current programming cycle
+ if (TRACE_WRITE) logerror("%s: Invalid sector change (from sector 0x%04x to 0x%04x); cancel programming cycle\n", tag(), get_sector_number(m_programming_last_offset), get_sector_number(offset));
+ m_pgm = PGM_0;
+ m_enabling_sdb = false;
+ m_disabling_sdb = false;
+ m_programming_timer->adjust(attotime::never);
+ }
+
+ if (((m_pgm == PGM_0) && !m_sdp) // write directly
+ || (m_pgm == PGM_1)) // write after unlocking
+ {
+ if (((offset < m_boot_block_size) && m_lower_bbl)
+ || ((offset >= m_memory_size-m_boot_block_size) && m_higher_bbl))
+ {
+ // attempt to access a locked out boot block: cancel programming
+ // command if necessary
+ if (TRACE_WRITE) logerror("%s: Attempt to access a locked out boot block: offset = %05x, lowblock=%d, highblock=%d\n", tag(), offset, m_lower_bbl, m_higher_bbl);
+
+ m_pgm = PGM_0;
+ m_enabling_sdb = false;
+ m_disabling_sdb = false;
+ }
+ else
+ { // enter programming mode
+ if (TRACE_STATE) logerror("%s: Enter programming mode (m_pgm=%d, m_sdp=%d)\n", tag(), m_pgm, m_sdp);
+ // Clear the programming buffer
+ memset(m_programming_buffer, 0xff, m_sector_size);
+ m_pgm = PGM_2;
+ }
+ }
+ // TODO: If data protection is active and bytes are written, the device
+ // enters a dummy write mode
+
+ if (m_pgm == PGM_2)
+ {
+ // write data to programming buffer
+ if (TRACE_PRG) logerror("%s: Write data to programming buffer: buf[%x] = %02x\n", tag(), offset & m_sector_mask, data);
+ m_programming_buffer[offset & m_sector_mask] = data;
+ m_programming_last_offset = offset;
+ m_programming_timer->adjust(attotime::from_usec(150)); // next byte must be written before the timer expires
+ }
+}
+
+void at29x_device::device_start(void)
+{
+ m_programming_buffer = global_alloc_array(UINT8, m_sector_size);
+ m_eememory = global_alloc_array(UINT8, m_memory_size+2);
+ m_programming_timer = timer_alloc(PRGTIMER);
+
+ // TODO: Complete 16-bit handling
+ m_address_mask = m_memory_size/(m_word_width/8) - 1;
+ m_sector_mask = m_sector_size - 1;
+}
+
+void at29x_device::device_stop(void)
+{
+ global_free_array(m_programming_buffer);
+ global_free_array(m_eememory);
+}
+
+void at29x_device::device_reset(void)
+{
+ if (m_eememory[0] != m_version)
+ {
+ logerror("%s: Warning: Version mismatch; expected %d but found %d in file. Resetting.\n", tag(), m_version, m_eememory[0]);
+ m_eememory[0] = 0;
+ m_eememory[1] = 0;
+ }
+
+ m_lower_bbl = ((m_eememory[1] & 0x04)!=0);
+ m_higher_bbl = ((m_eememory[1] & 0x02)!=0);
+ m_sdp = ((m_eememory[1] & 0x01)!=0);
+
+ if (TRACE_CONFIG) logerror("%s: LowerBBL = %d, HigherBBL = %d, SoftDataProt = %d\n", tag(), m_lower_bbl, m_higher_bbl, m_sdp);
+
+ m_id_mode = false;
+ m_cmd = CMD_0;
+ m_enabling_bbl = false;
+ m_long_sequence = false;
+ m_pgm = PGM_0;
+ m_enabling_sdb = false;
+ m_disabling_sdb = false;
+ m_toggle_bit = false;
+ m_programming_last_offset = 0;
+}
+
+const device_type AT29C020 = &device_creator<at29c020_device>;
+const device_type AT29C040 = &device_creator<at29c040_device>;
+const device_type AT29C040A = &device_creator<at29c040a_device>;
diff --git a/src/devices/machine/at29x.h b/src/devices/machine/at29x.h
new file mode 100644
index 00000000000..91c81c585cf
--- /dev/null
+++ b/src/devices/machine/at29x.h
@@ -0,0 +1,116 @@
+// license:BSD-3-Clause
+// copyright-holders:Raphael Nabet, Michael Zapf
+/*
+ ATMEL AT29 family
+
+ Michael Zapf
+ August 2015
+*/
+
+#ifndef __AT29X__
+#define __AT29X__
+
+#include "emu.h"
+
+extern const device_type AT29C020;
+extern const device_type AT29C040;
+extern const device_type AT29C040A;
+
+enum s_cmd_t
+{
+ CMD_0 = 0,
+ CMD_1,
+ CMD_2
+};
+
+enum s_pgm_t
+{
+ PGM_0 = 0,
+ PGM_1,
+ PGM_2,
+ PGM_3
+};
+
+class at29x_device : public device_t, public device_nvram_interface
+{
+public:
+ at29x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+ DECLARE_READ8_MEMBER( read );
+ DECLARE_WRITE8_MEMBER( write );
+
+protected:
+ virtual void device_start(void);
+ virtual void device_reset(void);
+ virtual void device_stop(void);
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+ void nvram_default();
+ void nvram_read(emu_file &file);
+ void nvram_write(emu_file &file);
+
+ int get_sector_number(offs_t address) { return address / m_sector_size; }
+
+ int m_memory_size; // bytes
+ int m_word_width;
+ int m_device_id;
+ int m_sector_size;
+ int m_cycle_time; // ms
+ int m_boot_block_size;
+ int m_version;
+ int m_address_mask;
+ int m_sector_mask;
+
+private:
+ void sync_flags(void);
+
+ UINT8* m_eememory;
+
+ bool m_lower_bbl; // set when lower boot block lockout is enabled
+ bool m_higher_bbl; // set when upper boot block lockout is enabled
+ bool m_sdp; // set when in software data protect mode
+
+ bool m_id_mode; // set when in chip id mode
+ s_cmd_t m_cmd; // command state
+ bool m_enabling_bbl; // set when a boot block lockout command is expecting its parameter
+ bool m_long_sequence; // set if 0x80 command has just been executed (some command require this prefix)
+ s_pgm_t m_pgm; // programming state
+ bool m_enabling_sdb; // set when a sdp enable command is in progress
+ bool m_disabling_sdb; // set when a sdp disable command is in progress
+ bool m_toggle_bit; // indicates flashing in progress (toggles for each query)
+
+ UINT8* m_programming_buffer;
+ int m_programming_last_offset;
+ emu_timer* m_programming_timer;
+};
+
+/*
+ Variants
+*/
+class at29c020_device : public at29x_device
+{
+public:
+ at29c020_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class at29c040_device : public at29x_device
+{
+public:
+ at29c040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class at29c040a_device : public at29x_device
+{
+public:
+ at29c040a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+#define MCFG_AT29C020_ADD(_tag ) \
+ MCFG_DEVICE_ADD(_tag, AT29C020, 0)
+
+#define MCFG_AT29C040_ADD(_tag ) \
+ MCFG_DEVICE_ADD(_tag, AT29C040, 0)
+
+#define MCFG_AT29C040A_ADD(_tag ) \
+ MCFG_DEVICE_ADD(_tag, AT29C040A, 0)
+
+#endif
diff --git a/src/emu/machine/at45dbxx.c b/src/devices/machine/at45dbxx.c
index 2890f8784d4..2890f8784d4 100644
--- a/src/emu/machine/at45dbxx.c
+++ b/src/devices/machine/at45dbxx.c
diff --git a/src/emu/machine/at45dbxx.h b/src/devices/machine/at45dbxx.h
index a1e41e88657..a1e41e88657 100644
--- a/src/emu/machine/at45dbxx.h
+++ b/src/devices/machine/at45dbxx.h
diff --git a/src/emu/machine/at_keybc.c b/src/devices/machine/at_keybc.c
index bc77324cf96..a2930d627f9 100644
--- a/src/emu/machine/at_keybc.c
+++ b/src/devices/machine/at_keybc.c
@@ -24,6 +24,15 @@ static ADDRESS_MAP_START( at_keybc_io, AS_IO, 8, at_keyboard_controller_device)
AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ( p1_r)
AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w)
ADDRESS_MAP_END
+
+static INPUT_PORTS_START( at_keybc )
+ PORT_START("DSW")
+ PORT_BIT( 0xbf, 0xbf, IPT_UNUSED )
+ PORT_DIPNAME( 0x40, 0x00, "Display switch")
+ PORT_DIPSETTING( 0x40, "Monochrome adapter" )
+ PORT_DIPSETTING( 0x00, "Color/Graphics adapter" )
+INPUT_PORTS_END
+
// machine fragment
static MACHINE_CONFIG_FRAGMENT( at_keybc )
MCFG_CPU_ADD("at_keybc", I8042, DERIVED_CLOCK(1,1))
@@ -72,6 +81,15 @@ const rom_entry *at_keyboard_controller_device::device_rom_region() const
}
//-------------------------------------------------
+// input_ports - device-specific input ports
+//-------------------------------------------------
+
+ioport_constructor at_keyboard_controller_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( at_keybc );
+}
+
+//-------------------------------------------------
// machine_config_additions - return a pointer to
// the device's machine fragment
//-------------------------------------------------
@@ -139,7 +157,7 @@ READ8_MEMBER( at_keyboard_controller_device::t1_r )
*/
READ8_MEMBER( at_keyboard_controller_device::p1_r )
{
- return 0xbf;
+ return ioport("DSW")->read();
}
READ8_MEMBER( at_keyboard_controller_device::p2_r )
diff --git a/src/emu/machine/at_keybc.h b/src/devices/machine/at_keybc.h
index f21c6d25035..2051071da5f 100644
--- a/src/emu/machine/at_keybc.h
+++ b/src/devices/machine/at_keybc.h
@@ -79,6 +79,7 @@ protected:
virtual void device_reset();
virtual const rom_entry *device_rom_region() const;
+ virtual ioport_constructor device_input_ports() const;
virtual machine_config_constructor device_mconfig_additions() const;
private:
diff --git a/src/emu/machine/atadev.c b/src/devices/machine/atadev.c
index 691ffe7562f..691ffe7562f 100644
--- a/src/emu/machine/atadev.c
+++ b/src/devices/machine/atadev.c
diff --git a/src/emu/machine/atadev.h b/src/devices/machine/atadev.h
index 3b96a6b580c..3b96a6b580c 100644
--- a/src/emu/machine/atadev.h
+++ b/src/devices/machine/atadev.h
diff --git a/src/emu/machine/ataflash.c b/src/devices/machine/ataflash.c
index 914ba2bcc65..914ba2bcc65 100644
--- a/src/emu/machine/ataflash.c
+++ b/src/devices/machine/ataflash.c
diff --git a/src/emu/machine/ataflash.h b/src/devices/machine/ataflash.h
index 3bfd198f1af..3bfd198f1af 100644
--- a/src/emu/machine/ataflash.h
+++ b/src/devices/machine/ataflash.h
diff --git a/src/emu/machine/atahle.c b/src/devices/machine/atahle.c
index 3a1599a3eed..850ab39d34f 100644
--- a/src/emu/machine/atahle.c
+++ b/src/devices/machine/atahle.c
@@ -110,6 +110,7 @@ void ata_hle_device::device_start()
save_item(NAME(m_identify_buffer));
m_busy_timer = timer_alloc(TID_BUSY);
+ m_buffer_empty_timer = timer_alloc(TID_BUFFER_EMPTY);
}
void ata_hle_device::device_reset()
@@ -158,6 +159,10 @@ void ata_hle_device::device_timer(emu_timer &timer, device_timer_id id, int para
finished_busy(param);
break;
+ case TID_BUFFER_EMPTY:
+ m_buffer_empty_timer->enable(false);
+ fill_buffer();
+ break;
}
}
@@ -346,16 +351,19 @@ int ata_hle_device::bit_to_mode(UINT16 word)
return -1;
}
+// Return the currently selected single word dma mode, -1 if none selected
int ata_hle_device::single_word_dma_mode()
{
return bit_to_mode(m_identify_buffer[62]);
}
+// Return the currently selected multi word dma mode, -1 if none selected
int ata_hle_device::multi_word_dma_mode()
{
return bit_to_mode(m_identify_buffer[63]);
}
+// Return the currently selected ultra dma mode, -1 if none selected
int ata_hle_device::ultra_dma_mode()
{
return bit_to_mode(m_identify_buffer[88]);
@@ -459,10 +467,11 @@ void ata_hle_device::read_buffer_empty()
m_status &= ~IDE_STATUS_DRQ;
- if (multi_word_dma_mode() >= 0)
+ if ((multi_word_dma_mode() >= 0) || (ultra_dma_mode() >= 0))
set_dmarq(CLEAR_LINE);
- fill_buffer();
+ m_buffer_empty_timer->enable(true);
+ m_buffer_empty_timer->adjust(attotime::zero);
}
void ata_hle_device::write_buffer_full()
@@ -471,7 +480,7 @@ void ata_hle_device::write_buffer_full()
m_status &= ~IDE_STATUS_DRQ;
- if (multi_word_dma_mode() >= 0)
+ if ((multi_word_dma_mode() >= 0) || (ultra_dma_mode() >= 0))
set_dmarq(CLEAR_LINE);
process_buffer();
@@ -547,6 +556,10 @@ UINT16 ata_hle_device::read_dma()
{
logerror( "%s: %s dev %d read_dma ignored (!DMARQ)\n", machine().describe_context(), tag(), dev() );
}
+ else if (!m_dmarq && ultra_dma_mode() >= 0)
+ {
+ logerror("%s: %s dev %d read_dma ignored (!DMARQ)\n", machine().describe_context(), tag(), dev());
+ }
else if (m_status & IDE_STATUS_BSY)
{
logerror( "%s: %s dev %d read_dma ignored (BSY)\n", machine().describe_context(), tag(), dev() );
@@ -767,6 +780,10 @@ void ata_hle_device::write_dma( UINT16 data )
{
logerror( "%s: %s dev %d write_dma %04x ignored (!DMARQ)\n", machine().describe_context(), tag(), dev(), data );
}
+ else if (!m_dmarq && ultra_dma_mode() >= 0)
+ {
+ logerror("%s: %s dev %d write_dma %04x ignored (!DMARQ)\n", machine().describe_context(), tag(), dev(), data);
+ }
else if (m_status & IDE_STATUS_BSY)
{
logerror( "%s: %s dev %d write_dma %04x ignored (BSY)\n", machine().describe_context(), tag(), dev(), data );
diff --git a/src/emu/machine/atahle.h b/src/devices/machine/atahle.h
index a1efe0d00dd..cd1d921fc37 100644
--- a/src/emu/machine/atahle.h
+++ b/src/devices/machine/atahle.h
@@ -34,6 +34,8 @@ public:
virtual DECLARE_WRITE_LINE_MEMBER(write_dmack);
virtual DECLARE_WRITE_LINE_MEMBER(write_pdiag);
+ TIMER_CALLBACK_MEMBER(buffer_empty_timer_work);
+
protected:
virtual void device_start();
virtual void device_reset();
@@ -122,6 +124,7 @@ protected:
IDE_COMMAND_WRITE_DMA = 0xca,
IDE_COMMAND_IDLE_IMMEDIATE = 0xe1,
IDE_COMMAND_IDLE = 0xe3,
+ IDE_COMMAND_CHECK_POWER_MODE = 0xe5,
IDE_COMMAND_CACHE_FLUSH = 0xe7,
IDE_COMMAND_IDENTIFY_DEVICE = 0xec,
IDE_COMMAND_SET_FEATURES = 0xef,
@@ -159,7 +162,8 @@ protected:
enum
{
- TID_BUSY
+ TID_BUSY,
+ TID_BUFFER_EMPTY
};
enum
@@ -212,6 +216,7 @@ private:
bool m_resetting;
emu_timer *m_busy_timer;
+ emu_timer *m_buffer_empty_timer;
};
#endif
diff --git a/src/emu/machine/ataintf.c b/src/devices/machine/ataintf.c
index 56c2031bd56..56c2031bd56 100644
--- a/src/emu/machine/ataintf.c
+++ b/src/devices/machine/ataintf.c
diff --git a/src/emu/machine/ataintf.h b/src/devices/machine/ataintf.h
index 01ee67e159f..01ee67e159f 100644
--- a/src/emu/machine/ataintf.h
+++ b/src/devices/machine/ataintf.h
diff --git a/src/emu/machine/atapicdr.c b/src/devices/machine/atapicdr.c
index 1588f6d17cd..1588f6d17cd 100644
--- a/src/emu/machine/atapicdr.c
+++ b/src/devices/machine/atapicdr.c
diff --git a/src/emu/machine/atapicdr.h b/src/devices/machine/atapicdr.h
index 535a5b801b1..fdc1e50eea2 100644
--- a/src/emu/machine/atapicdr.h
+++ b/src/devices/machine/atapicdr.h
@@ -23,6 +23,8 @@ public:
atapi_cdrom_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
atapi_cdrom_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock,const char *shortname, const char *source);
+ UINT16 *identify_device_buffer() { return m_identify_buffer; }
+
protected:
// device-level overrides
virtual void device_start();
diff --git a/src/emu/machine/atapihle.c b/src/devices/machine/atapihle.c
index c57cde5c212..dcbc00fb26c 100644
--- a/src/emu/machine/atapihle.c
+++ b/src/devices/machine/atapihle.c
@@ -244,6 +244,12 @@ void atapi_hle_device::process_command()
set_irq(ASSERT_LINE);
break;
+ case IDE_COMMAND_CHECK_POWER_MODE:
+ m_status = IDE_STATUS_DRDY;
+ m_sector_count = 0xff; // Power mode: 0x00 = Standby, 0x80 = Idle mode, 0xff = Active mode or Idle mode
+ set_irq(ASSERT_LINE);
+ break;
+
default:
ata_hle_device::process_command();
break;
diff --git a/src/emu/machine/atapihle.h b/src/devices/machine/atapihle.h
index 4d33e60a378..4d33e60a378 100644
--- a/src/emu/machine/atapihle.h
+++ b/src/devices/machine/atapihle.h
diff --git a/src/emu/machine/autoconfig.c b/src/devices/machine/autoconfig.c
index 84b51cd8c24..84b51cd8c24 100644
--- a/src/emu/machine/autoconfig.c
+++ b/src/devices/machine/autoconfig.c
diff --git a/src/emu/machine/autoconfig.h b/src/devices/machine/autoconfig.h
index 042d3886189..042d3886189 100644
--- a/src/emu/machine/autoconfig.h
+++ b/src/devices/machine/autoconfig.h
diff --git a/src/emu/machine/ay31015.c b/src/devices/machine/ay31015.c
index 2ecd3f311f7..2ecd3f311f7 100644
--- a/src/emu/machine/ay31015.c
+++ b/src/devices/machine/ay31015.c
diff --git a/src/emu/machine/ay31015.h b/src/devices/machine/ay31015.h
index 2f2ae33eca8..2f2ae33eca8 100644
--- a/src/emu/machine/ay31015.h
+++ b/src/devices/machine/ay31015.h
diff --git a/src/emu/machine/bankdev.c b/src/devices/machine/bankdev.c
index 1a600527511..1a600527511 100644
--- a/src/emu/machine/bankdev.c
+++ b/src/devices/machine/bankdev.c
diff --git a/src/emu/machine/bankdev.h b/src/devices/machine/bankdev.h
index 54359fc6282..54359fc6282 100644
--- a/src/emu/machine/bankdev.h
+++ b/src/devices/machine/bankdev.h
diff --git a/src/emu/machine/bcreader.c b/src/devices/machine/bcreader.c
index 5a5df7fb452..5a5df7fb452 100644
--- a/src/emu/machine/bcreader.c
+++ b/src/devices/machine/bcreader.c
diff --git a/src/emu/machine/bcreader.h b/src/devices/machine/bcreader.h
index 23b80ddab70..23b80ddab70 100644
--- a/src/emu/machine/bcreader.h
+++ b/src/devices/machine/bcreader.h
diff --git a/src/emu/machine/buffer.c b/src/devices/machine/buffer.c
index 6b2058c6937..6b2058c6937 100644
--- a/src/emu/machine/buffer.c
+++ b/src/devices/machine/buffer.c
diff --git a/src/emu/machine/buffer.h b/src/devices/machine/buffer.h
index cab1b9914f4..cab1b9914f4 100644
--- a/src/emu/machine/buffer.h
+++ b/src/devices/machine/buffer.h
diff --git a/src/emu/machine/cdp1852.c b/src/devices/machine/cdp1852.c
index 7a91e4060c3..7a91e4060c3 100644
--- a/src/emu/machine/cdp1852.c
+++ b/src/devices/machine/cdp1852.c
diff --git a/src/emu/machine/cdp1852.h b/src/devices/machine/cdp1852.h
index 232e148e474..232e148e474 100644
--- a/src/emu/machine/cdp1852.h
+++ b/src/devices/machine/cdp1852.h
diff --git a/src/emu/machine/cdp1871.c b/src/devices/machine/cdp1871.c
index e685f8c43ad..e685f8c43ad 100644
--- a/src/emu/machine/cdp1871.c
+++ b/src/devices/machine/cdp1871.c
diff --git a/src/emu/machine/cdp1871.h b/src/devices/machine/cdp1871.h
index 651f9c4343d..651f9c4343d 100644
--- a/src/emu/machine/cdp1871.h
+++ b/src/devices/machine/cdp1871.h
diff --git a/src/emu/machine/clock.c b/src/devices/machine/clock.c
index 9896bebabcc..9896bebabcc 100644
--- a/src/emu/machine/clock.c
+++ b/src/devices/machine/clock.c
diff --git a/src/emu/machine/clock.h b/src/devices/machine/clock.h
index 9f3712327aa..9f3712327aa 100644
--- a/src/emu/machine/clock.h
+++ b/src/devices/machine/clock.h
diff --git a/src/emu/machine/com8116.c b/src/devices/machine/com8116.c
index 46a0ce83986..46a0ce83986 100644
--- a/src/emu/machine/com8116.c
+++ b/src/devices/machine/com8116.c
diff --git a/src/emu/machine/com8116.h b/src/devices/machine/com8116.h
index a423f3782d7..a423f3782d7 100644
--- a/src/emu/machine/com8116.h
+++ b/src/devices/machine/com8116.h
diff --git a/src/emu/machine/corvushd.c b/src/devices/machine/corvushd.c
index 0444d3cb530..0444d3cb530 100644
--- a/src/emu/machine/corvushd.c
+++ b/src/devices/machine/corvushd.c
diff --git a/src/emu/machine/corvushd.h b/src/devices/machine/corvushd.h
index bc83fa2585d..bc83fa2585d 100644
--- a/src/emu/machine/corvushd.h
+++ b/src/devices/machine/corvushd.h
diff --git a/src/emu/machine/cr511b.c b/src/devices/machine/cr511b.c
index 9ce22895dba..9ce22895dba 100644
--- a/src/emu/machine/cr511b.c
+++ b/src/devices/machine/cr511b.c
diff --git a/src/emu/machine/cr511b.h b/src/devices/machine/cr511b.h
index 59a8fc13fca..59a8fc13fca 100644
--- a/src/emu/machine/cr511b.h
+++ b/src/devices/machine/cr511b.h
diff --git a/src/emu/machine/cr589.c b/src/devices/machine/cr589.c
index 8c0ae34f6c9..8c0ae34f6c9 100644
--- a/src/emu/machine/cr589.c
+++ b/src/devices/machine/cr589.c
diff --git a/src/emu/machine/cr589.h b/src/devices/machine/cr589.h
index 87fe1c16641..87fe1c16641 100644
--- a/src/emu/machine/cr589.h
+++ b/src/devices/machine/cr589.h
diff --git a/src/emu/machine/cs4031.c b/src/devices/machine/cs4031.c
index b6d8de1acd8..b6d8de1acd8 100644
--- a/src/emu/machine/cs4031.c
+++ b/src/devices/machine/cs4031.c
diff --git a/src/emu/machine/cs4031.h b/src/devices/machine/cs4031.h
index e27886f7b41..e27886f7b41 100644
--- a/src/emu/machine/cs4031.h
+++ b/src/devices/machine/cs4031.h
diff --git a/src/emu/machine/cs8221.c b/src/devices/machine/cs8221.c
index 95a890d7bba..95a890d7bba 100644
--- a/src/emu/machine/cs8221.c
+++ b/src/devices/machine/cs8221.c
diff --git a/src/emu/machine/cs8221.h b/src/devices/machine/cs8221.h
index b2d04dfe89e..b2d04dfe89e 100644
--- a/src/emu/machine/cs8221.h
+++ b/src/devices/machine/cs8221.h
diff --git a/src/emu/machine/diablo_hd.c b/src/devices/machine/diablo_hd.c
index 9ee566350ff..9ee566350ff 100644
--- a/src/emu/machine/diablo_hd.c
+++ b/src/devices/machine/diablo_hd.c
diff --git a/src/emu/machine/diablo_hd.h b/src/devices/machine/diablo_hd.h
index 835cc2c281d..835cc2c281d 100644
--- a/src/emu/machine/diablo_hd.h
+++ b/src/devices/machine/diablo_hd.h
diff --git a/src/emu/machine/dmac.c b/src/devices/machine/dmac.c
index d739d64f308..d739d64f308 100644
--- a/src/emu/machine/dmac.c
+++ b/src/devices/machine/dmac.c
diff --git a/src/emu/machine/dmac.h b/src/devices/machine/dmac.h
index 52c5d64ff5d..52c5d64ff5d 100644
--- a/src/emu/machine/dmac.h
+++ b/src/devices/machine/dmac.h
diff --git a/src/emu/machine/dp8390.c b/src/devices/machine/dp8390.c
index e67499538ac..e67499538ac 100644
--- a/src/emu/machine/dp8390.c
+++ b/src/devices/machine/dp8390.c
diff --git a/src/emu/machine/dp8390.h b/src/devices/machine/dp8390.h
index 46889b3b025..46889b3b025 100644
--- a/src/emu/machine/dp8390.h
+++ b/src/devices/machine/dp8390.h
diff --git a/src/emu/machine/ds1204.c b/src/devices/machine/ds1204.c
index a35624a3c6a..a35624a3c6a 100644
--- a/src/emu/machine/ds1204.c
+++ b/src/devices/machine/ds1204.c
diff --git a/src/emu/machine/ds1204.h b/src/devices/machine/ds1204.h
index 7c8f1727c37..7c8f1727c37 100644
--- a/src/emu/machine/ds1204.h
+++ b/src/devices/machine/ds1204.h
diff --git a/src/emu/machine/ds128x.c b/src/devices/machine/ds128x.c
index 5b7fa8e0663..5b7fa8e0663 100644
--- a/src/emu/machine/ds128x.c
+++ b/src/devices/machine/ds128x.c
diff --git a/src/emu/machine/ds128x.h b/src/devices/machine/ds128x.h
index d07e785340f..d07e785340f 100644
--- a/src/emu/machine/ds128x.h
+++ b/src/devices/machine/ds128x.h
diff --git a/src/emu/machine/ds1302.c b/src/devices/machine/ds1302.c
index c254690cae0..c254690cae0 100644
--- a/src/emu/machine/ds1302.c
+++ b/src/devices/machine/ds1302.c
diff --git a/src/emu/machine/ds1302.h b/src/devices/machine/ds1302.h
index 15a6fad80c8..15a6fad80c8 100644
--- a/src/emu/machine/ds1302.h
+++ b/src/devices/machine/ds1302.h
diff --git a/src/emu/machine/ds1315.c b/src/devices/machine/ds1315.c
index 8470aaaaf9c..8470aaaaf9c 100644
--- a/src/emu/machine/ds1315.c
+++ b/src/devices/machine/ds1315.c
diff --git a/src/emu/machine/ds1315.h b/src/devices/machine/ds1315.h
index 0d5a7abc802..0d5a7abc802 100644
--- a/src/emu/machine/ds1315.h
+++ b/src/devices/machine/ds1315.h
diff --git a/src/emu/machine/ds2401.c b/src/devices/machine/ds2401.c
index 48182b2d2c3..48182b2d2c3 100644
--- a/src/emu/machine/ds2401.c
+++ b/src/devices/machine/ds2401.c
diff --git a/src/emu/machine/ds2401.h b/src/devices/machine/ds2401.h
index b8b1148dc37..b8b1148dc37 100644
--- a/src/emu/machine/ds2401.h
+++ b/src/devices/machine/ds2401.h
diff --git a/src/emu/machine/ds2404.c b/src/devices/machine/ds2404.c
index 57f8fa62d8f..57f8fa62d8f 100644
--- a/src/emu/machine/ds2404.c
+++ b/src/devices/machine/ds2404.c
diff --git a/src/emu/machine/ds2404.h b/src/devices/machine/ds2404.h
index 31ff35a99a6..31ff35a99a6 100644
--- a/src/emu/machine/ds2404.h
+++ b/src/devices/machine/ds2404.h
diff --git a/src/emu/machine/ds75160a.c b/src/devices/machine/ds75160a.c
index 1560fa4f0b2..1560fa4f0b2 100644
--- a/src/emu/machine/ds75160a.c
+++ b/src/devices/machine/ds75160a.c
diff --git a/src/emu/machine/ds75160a.h b/src/devices/machine/ds75160a.h
index d3ca0b38de6..d3ca0b38de6 100644
--- a/src/emu/machine/ds75160a.h
+++ b/src/devices/machine/ds75160a.h
diff --git a/src/emu/machine/ds75161a.c b/src/devices/machine/ds75161a.c
index 5ec21a0e003..5ec21a0e003 100644
--- a/src/emu/machine/ds75161a.c
+++ b/src/devices/machine/ds75161a.c
diff --git a/src/emu/machine/ds75161a.h b/src/devices/machine/ds75161a.h
index 83f129857e6..83f129857e6 100644
--- a/src/emu/machine/ds75161a.h
+++ b/src/devices/machine/ds75161a.h
diff --git a/src/emu/machine/e0516.c b/src/devices/machine/e0516.c
index 0fc743ba95c..0fc743ba95c 100644
--- a/src/emu/machine/e0516.c
+++ b/src/devices/machine/e0516.c
diff --git a/src/emu/machine/e0516.h b/src/devices/machine/e0516.h
index 8adcdc75948..8adcdc75948 100644
--- a/src/emu/machine/e0516.h
+++ b/src/devices/machine/e0516.h
diff --git a/src/emu/machine/e05a03.c b/src/devices/machine/e05a03.c
index 258c3d1ca0b..258c3d1ca0b 100644
--- a/src/emu/machine/e05a03.c
+++ b/src/devices/machine/e05a03.c
diff --git a/src/emu/machine/e05a03.h b/src/devices/machine/e05a03.h
index 03fa2aca98a..03fa2aca98a 100644
--- a/src/emu/machine/e05a03.h
+++ b/src/devices/machine/e05a03.h
diff --git a/src/emu/machine/e05a30.c b/src/devices/machine/e05a30.c
index 682a8fb96ec..709f103d48c 100644
--- a/src/emu/machine/e05a30.c
+++ b/src/devices/machine/e05a30.c
@@ -97,11 +97,11 @@ void e05a30_device::device_reset()
void e05a30_device::update_printhead(int pos, UINT8 data)
{
if (pos == 0) {
- m_printhead &= 0x00ff;
- m_printhead |= (UINT16) !!data << 8;
+ m_printhead &= 0x01fe;
+ m_printhead |= (data >> 7);
} else {
- m_printhead &= 0xff00;
- m_printhead |= data;
+ m_printhead &= 0x0001;
+ m_printhead |= (UINT16) (data << 1);
}
m_write_printhead(m_printhead);
}
diff --git a/src/emu/machine/e05a30.h b/src/devices/machine/e05a30.h
index 95e4fadb37c..95e4fadb37c 100644
--- a/src/emu/machine/e05a30.h
+++ b/src/devices/machine/e05a30.h
diff --git a/src/emu/machine/eeprom.c b/src/devices/machine/eeprom.c
index a0e8886e7f4..a0e8886e7f4 100644
--- a/src/emu/machine/eeprom.c
+++ b/src/devices/machine/eeprom.c
diff --git a/src/emu/machine/eeprom.h b/src/devices/machine/eeprom.h
index d6db74f5a21..d6db74f5a21 100644
--- a/src/emu/machine/eeprom.h
+++ b/src/devices/machine/eeprom.h
diff --git a/src/emu/machine/eeprompar.c b/src/devices/machine/eeprompar.c
index af575ec1419..af575ec1419 100644
--- a/src/emu/machine/eeprompar.c
+++ b/src/devices/machine/eeprompar.c
diff --git a/src/emu/machine/eeprompar.h b/src/devices/machine/eeprompar.h
index 84c4090f14e..84c4090f14e 100644
--- a/src/emu/machine/eeprompar.h
+++ b/src/devices/machine/eeprompar.h
diff --git a/src/emu/machine/eepromser.c b/src/devices/machine/eepromser.c
index 347accae06f..347accae06f 100644
--- a/src/emu/machine/eepromser.c
+++ b/src/devices/machine/eepromser.c
diff --git a/src/emu/machine/eepromser.h b/src/devices/machine/eepromser.h
index 49161ba883f..49161ba883f 100644
--- a/src/emu/machine/eepromser.h
+++ b/src/devices/machine/eepromser.h
diff --git a/src/emu/machine/er2055.c b/src/devices/machine/er2055.c
index 24ab1766744..24ab1766744 100644
--- a/src/emu/machine/er2055.c
+++ b/src/devices/machine/er2055.c
diff --git a/src/emu/machine/er2055.h b/src/devices/machine/er2055.h
index 58919f30e4c..58919f30e4c 100644
--- a/src/emu/machine/er2055.h
+++ b/src/devices/machine/er2055.h
diff --git a/src/emu/machine/f3853.c b/src/devices/machine/f3853.c
index a37e1b7e59b..a37e1b7e59b 100644
--- a/src/emu/machine/f3853.c
+++ b/src/devices/machine/f3853.c
diff --git a/src/emu/machine/f3853.h b/src/devices/machine/f3853.h
index f2afc03b588..f2afc03b588 100644
--- a/src/emu/machine/f3853.h
+++ b/src/devices/machine/f3853.h
diff --git a/src/emu/machine/fdc37c665gt.c b/src/devices/machine/fdc37c665gt.c
index 671d0314560..671d0314560 100644
--- a/src/emu/machine/fdc37c665gt.c
+++ b/src/devices/machine/fdc37c665gt.c
diff --git a/src/emu/machine/fdc37c665gt.h b/src/devices/machine/fdc37c665gt.h
index f9401ab56ce..f9401ab56ce 100644
--- a/src/emu/machine/fdc37c665gt.h
+++ b/src/devices/machine/fdc37c665gt.h
diff --git a/src/emu/machine/fdc_pll.c b/src/devices/machine/fdc_pll.c
index 32df60be493..cf616468a12 100644
--- a/src/emu/machine/fdc_pll.c
+++ b/src/devices/machine/fdc_pll.c
@@ -5,11 +5,11 @@
std::string fdc_pll_t::tts(attotime t)
{
char buf[256];
- bool neg = t.seconds < 0;
+ bool neg = t.seconds() < 0;
if(neg)
t = attotime::zero - t;
- int nsec = t.attoseconds / ATTOSECONDS_PER_NANOSECOND;
- sprintf(buf, "%c%3d.%03d,%03d,%03d", neg ? '-' : ' ', int(t.seconds), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
+ int nsec = t.attoseconds() / ATTOSECONDS_PER_NANOSECOND;
+ sprintf(buf, "%c%3d.%03d,%03d,%03d", neg ? '-' : ' ', int(t.seconds()), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
return buf;
}
@@ -80,7 +80,7 @@ int fdc_pll_t::get_next_bit(attotime &tm, floppy_image_device *floppy, const att
attotime delta = edge - (next - period/2);
- if(delta.seconds < 0)
+ if(delta.seconds() < 0)
phase_adjust = attotime::zero - ((attotime::zero - delta)*65)/100;
else
phase_adjust = (delta*65)/100;
diff --git a/src/emu/machine/fdc_pll.h b/src/devices/machine/fdc_pll.h
index 31eaae07d1b..31eaae07d1b 100644
--- a/src/emu/machine/fdc_pll.h
+++ b/src/devices/machine/fdc_pll.h
diff --git a/src/emu/machine/gayle.c b/src/devices/machine/gayle.c
index bf56f2aaf9e..bf56f2aaf9e 100644
--- a/src/emu/machine/gayle.c
+++ b/src/devices/machine/gayle.c
diff --git a/src/emu/machine/gayle.h b/src/devices/machine/gayle.h
index 19e9cc5df73..19e9cc5df73 100644
--- a/src/emu/machine/gayle.h
+++ b/src/devices/machine/gayle.h
diff --git a/src/emu/machine/hd63450.c b/src/devices/machine/hd63450.c
index 9528026b95e..9528026b95e 100644
--- a/src/emu/machine/hd63450.c
+++ b/src/devices/machine/hd63450.c
diff --git a/src/emu/machine/hd63450.h b/src/devices/machine/hd63450.h
index baf6d0337f1..baf6d0337f1 100644
--- a/src/emu/machine/hd63450.h
+++ b/src/devices/machine/hd63450.h
diff --git a/src/emu/machine/hd64610.c b/src/devices/machine/hd64610.c
index d4639892e17..d4639892e17 100644
--- a/src/emu/machine/hd64610.c
+++ b/src/devices/machine/hd64610.c
diff --git a/src/emu/machine/hd64610.h b/src/devices/machine/hd64610.h
index cb1d79d8388..cb1d79d8388 100644
--- a/src/emu/machine/hd64610.h
+++ b/src/devices/machine/hd64610.h
diff --git a/src/emu/machine/hdc9234.c b/src/devices/machine/hdc92x4.c
index 4247f17aa51..4b4253cfa8c 100644
--- a/src/emu/machine/hdc9234.c
+++ b/src/devices/machine/hdc92x4.c
@@ -2,29 +2,28 @@
// copyright-holders:Michael Zapf
/**************************************************************************
- HDC9234 Hard and Floppy Disk Controller
+ HDC 9224 and HDC 9234 Hard and Floppy Disk Controller
Standard Microsystems Corporation (SMC)
This controller handles MFM and FM encoded floppy disks and hard disks.
- A variant, the HDC9224, is used in some DEC systems.
-
- The HDC9234 is used in the Myarc HFDC card for the TI99/4A.
References:
[1] SMC HDC9234 preliminary data book (1988)
+ [2] SMC HDC9224 data book
- The HDC9234 controller is also referred to as the "Universal Disk Controller" (UDC)
+ The HDC 9224 / 9234 controller is also referred to as the "Universal Disk Controller" (UDC)
by the data book
- Michael Zapf, July 2015
+ Michael Zapf, August 2015
***************************************************************************/
#include "emu.h"
-#include "hdc9234.h"
+#include "hdc92x4.h"
#include "formats/imageutl.h"
// Per-command debugging
+#define TRACE_COMMAND 0
#define TRACE_SELECT 0
#define TRACE_STEP 0
#define TRACE_RESTORE 0
@@ -410,30 +409,30 @@ enum
SUCCESS
};
-const hdc9234_device::cmddef hdc9234_device::s_command[] =
+const hdc92x4_device::cmddef hdc92x4_device::s_command[] =
{
- { 0x00, 0xff, &hdc9234_device::reset_controller },
- { 0x01, 0xff, &hdc9234_device::drive_deselect },
- { 0x02, 0xfe, &hdc9234_device::restore_drive },
- { 0x04, 0xfc, &hdc9234_device::step_drive },
- { 0x08, 0xf8, &hdc9234_device::tape_backup },
- { 0x10, 0xf0, &hdc9234_device::poll_drives },
- { 0x20, 0xe0, &hdc9234_device::drive_select },
- { 0x40, 0xf0, &hdc9234_device::set_register_pointer },
- { 0x50, 0xf8, &hdc9234_device::seek_read_id },
- { 0x58, 0xfe, &hdc9234_device::read_sectors },
- { 0x5a, 0xfe, &hdc9234_device::read_track },
- { 0x5c, 0xfc, &hdc9234_device::read_sectors },
- { 0x60, 0xe0, &hdc9234_device::format_track },
- { 0x80, 0x80, &hdc9234_device::write_sectors },
+ { 0x00, 0xff, &hdc92x4_device::reset_controller },
+ { 0x01, 0xff, &hdc92x4_device::drive_deselect },
+ { 0x02, 0xfe, &hdc92x4_device::restore_drive },
+ { 0x04, 0xfc, &hdc92x4_device::step_drive },
+ { 0x08, 0xf8, &hdc92x4_device::tape_backup },
+ { 0x10, 0xf0, &hdc92x4_device::poll_drives },
+ { 0x20, 0xe0, &hdc92x4_device::drive_select },
+ { 0x40, 0xf0, &hdc92x4_device::set_register_pointer },
+ { 0x50, 0xf8, &hdc92x4_device::seek_read_id },
+ { 0x58, 0xfe, &hdc92x4_device::read_sectors },
+ { 0x5a, 0xfe, &hdc92x4_device::read_track },
+ { 0x5c, 0xfc, &hdc92x4_device::read_sectors },
+ { 0x60, 0xe0, &hdc92x4_device::format_track },
+ { 0x80, 0x80, &hdc92x4_device::write_sectors },
{ 0, 0, 0 }
};
/*
- Standard constructor.
+ Standard constructor for the base class and the two variants
*/
-hdc9234_device::hdc9234_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, HDC9234, "SMC HDC9234 Universal Disk Controller", tag, owner, clock, "hdc9234", __FILE__),
+hdc92x4_device::hdc92x4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
m_out_intrq(*this),
m_out_dmarq(*this),
m_out_dip(*this),
@@ -444,10 +443,23 @@ hdc9234_device::hdc9234_device(const machine_config &mconfig, const char *tag, d
{
}
+hdc9224_device::hdc9224_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : hdc92x4_device(mconfig, HDC9224, "SMC HDC9224 Universal Disk Controller", tag, owner, clock, "hdc9224", __FILE__)
+{
+ m_is_hdc9234 = false;
+}
+
+hdc9234_device::hdc9234_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : hdc92x4_device(mconfig, HDC9234, "SMC HDC9234 Universal Disk Controller", tag, owner, clock, "hdc9234", __FILE__)
+{
+ m_is_hdc9234 = true;
+}
+
+
/*
Set or reset some bits.
*/
-void hdc9234_device::set_bits(UINT8& byte, int mask, bool set)
+void hdc92x4_device::set_bits(UINT8& byte, int mask, bool set)
{
if (set) byte |= mask;
else byte &= ~mask;
@@ -456,7 +468,7 @@ void hdc9234_device::set_bits(UINT8& byte, int mask, bool set)
/*
Tell whether the controller is in FM mode.
*/
-bool hdc9234_device::fm_mode()
+bool hdc92x4_device::fm_mode()
{
return ((m_register_w[MODE]&MO_DENSITY)!=0);
}
@@ -464,7 +476,7 @@ bool hdc9234_device::fm_mode()
/*
Are we back on track 0?
*/
-bool hdc9234_device::on_track00()
+bool hdc92x4_device::on_track00()
{
return (m_register_r[DRIVE_STATUS] & HDC_DS_TRK00)!=0;
}
@@ -472,7 +484,7 @@ bool hdc9234_device::on_track00()
/*
Seek completed?
*/
-bool hdc9234_device::seek_complete()
+bool hdc92x4_device::seek_complete()
{
return (m_register_r[DRIVE_STATUS] & HDC_DS_SKCOM)!=0;
}
@@ -480,7 +492,7 @@ bool hdc9234_device::seek_complete()
/*
Index hole?
*/
-bool hdc9234_device::index_hole()
+bool hdc92x4_device::index_hole()
{
return (m_register_r[DRIVE_STATUS] & HDC_DS_INDEX)!=0;
}
@@ -488,7 +500,7 @@ bool hdc9234_device::index_hole()
/*
Drive ready?
*/
-bool hdc9234_device::drive_ready()
+bool hdc92x4_device::drive_ready()
{
return (m_register_r[DRIVE_STATUS] & HDC_DS_READY)!=0;
}
@@ -496,7 +508,7 @@ bool hdc9234_device::drive_ready()
/*
Doing a track read?
*/
-bool hdc9234_device::reading_track()
+bool hdc92x4_device::reading_track()
{
return (current_command() & 0xfe) == 0x5a;
}
@@ -511,42 +523,42 @@ bool hdc9234_device::reading_track()
This is true for the desired cyl/head, current cyl/head, and the header
fields on the track.
*/
-int hdc9234_device::desired_head()
+int hdc92x4_device::desired_head()
{
return m_register_w[DESIRED_HEAD] & 0x0f;
}
-int hdc9234_device::desired_cylinder()
+int hdc92x4_device::desired_cylinder()
{
return (m_register_w[DESIRED_CYLINDER] & 0xff) | ((m_register_w[DESIRED_HEAD] & 0x70) << 4);
}
-int hdc9234_device::desired_sector()
+int hdc92x4_device::desired_sector()
{
return m_register_w[DESIRED_SECTOR] & 0xff;
}
-int hdc9234_device::current_head()
+int hdc92x4_device::current_head()
{
return m_register_r[CURRENT_HEAD] & 0x0f;
}
-int hdc9234_device::current_cylinder()
+int hdc92x4_device::current_cylinder()
{
return (m_register_r[CURRENT_CYLINDER] & 0xff) | ((m_register_r[CURRENT_HEAD] & 0x70) << 4);
}
-int hdc9234_device::current_sector()
+int hdc92x4_device::current_sector()
{
return m_register_r[CURRENT_SECTOR] & 0xff;
}
-UINT8 hdc9234_device::current_command()
+UINT8 hdc92x4_device::current_command()
{
return m_register_w[COMMAND];
}
-bool hdc9234_device::using_floppy()
+bool hdc92x4_device::using_floppy()
{
return (m_selected_drive_type == TYPE_FLOPPY5 || m_selected_drive_type == TYPE_FLOPPY8);
}
@@ -554,7 +566,7 @@ bool hdc9234_device::using_floppy()
/*
Delivers the step time (in microseconds) minus the pulse width
*/
-int hdc9234_device::step_time()
+int hdc92x4_device::step_time()
{
int time = 0;
int index = m_register_w[MODE] & MO_STEPRATE;
@@ -574,7 +586,7 @@ int hdc9234_device::step_time()
/*
Delivers the pulse width time (in microseconds)
*/
-int hdc9234_device::pulse_width()
+int hdc92x4_device::pulse_width()
{
int time = 0;
// Get seek time.
@@ -593,7 +605,7 @@ int hdc9234_device::pulse_width()
/*
Delivers the sector size
*/
-int hdc9234_device::calc_sector_size()
+int hdc92x4_device::calc_sector_size()
{
return 128 << (m_register_r[CURRENT_SIZE] & 3);
}
@@ -603,26 +615,27 @@ int hdc9234_device::calc_sector_size()
// We can wait for a given time period or for a line to be set or cleared
// ===========================================================================
-void hdc9234_device::wait_time(emu_timer *tm, int microsec, int next_substate)
+void hdc92x4_device::wait_time(emu_timer *tm, int microsec, int next_substate)
{
- if (TRACE_DELAY) logerror("%s: Delay by %d microsec\n", tag(), microsec);
- tm->adjust(attotime::from_usec(microsec));
- m_substate = next_substate;
+ wait_time(tm, attotime::from_usec(microsec), next_substate);
}
-void hdc9234_device::wait_time(emu_timer *tm, const attotime &delay, int param)
+void hdc92x4_device::wait_time(emu_timer *tm, const attotime &delay, int param)
{
if (TRACE_DELAY) logerror("%s: [%s] Delaying by %4.2f microsecs\n", tag(), ttsn().c_str(), delay.as_double()*1000000);
tm->adjust(delay);
m_substate = param;
+ m_state_after_line = UNDEF;
+ m_timed_wait = true;
}
/*
Set the hook for line level handling
*/
-void hdc9234_device::wait_line(int line, line_state level, int substate, bool stopwrite)
+void hdc92x4_device::wait_line(int line, line_state level, int substate, bool stopwrite)
{
bool line_at_level = true;
+ m_timed_wait = false;
if (line == SEEKCOMP_LINE && (seek_complete() == (level==ASSERT_LINE)))
{
@@ -675,7 +688,7 @@ void hdc9234_device::wait_line(int line, line_state level, int substate, bool st
(must have saved that value before!)
- steps to that location during OUTPUT2 times
*/
-void hdc9234_device::read_id(int& cont, bool implied_seek, bool wait_seek_complete)
+void hdc92x4_device::read_id(int& cont, bool implied_seek, bool wait_seek_complete)
{
cont = CONTINUE;
@@ -775,7 +788,7 @@ void hdc9234_device::read_id(int& cont, bool implied_seek, bool wait_seek_comple
break;
default:
- logerror("%s: unknown substate %02x in read_id\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in read_id, aborting command\n", tag(), m_substate);
cont = ERROR;
}
}
@@ -795,7 +808,7 @@ void hdc9234_device::read_id(int& cont, bool implied_seek, bool wait_seek_comple
contents of the DESIRED_HEAD/CYLINDER/SECTOR registers
- checks the CRC
*/
-void hdc9234_device::verify(int& cont)
+void hdc92x4_device::verify(int& cont)
{
cont = CONTINUE;
@@ -887,7 +900,7 @@ void hdc9234_device::verify(int& cont)
break;
default:
- logerror("%s: unknown substate %02x in verify\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in verify, aborting command\n", tag(), m_substate);
cont = ERROR;
}
}
@@ -909,7 +922,7 @@ void hdc9234_device::verify(int& cont)
- transfers the contents of the current sector into memory via DMA (read) or
via DMA to the sector (write)
*/
-void hdc9234_device::data_transfer(int& cont)
+void hdc92x4_device::data_transfer(int& cont)
{
cont = CONTINUE;
@@ -1059,7 +1072,7 @@ void hdc9234_device::data_transfer(int& cont)
break;
default:
- logerror("%s: unknown substate %02x in data_transfer\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in data_transfer, aborting command\n", tag(), m_substate);
cont = ERROR;
}
}
@@ -1090,7 +1103,7 @@ void hdc9234_device::data_transfer(int& cont)
+-----+-----+-----+-----+-----+-----+-----+-----+
*/
-void hdc9234_device::reset_controller()
+void hdc92x4_device::reset_controller()
{
logerror("%s: RESET command\n", tag());
device_reset();
@@ -1107,7 +1120,7 @@ void hdc9234_device::reset_controller()
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
+-----+-----+-----+-----+-----+-----+-----+-----+
*/
-void hdc9234_device::drive_deselect()
+void hdc92x4_device::drive_deselect()
{
if (TRACE_SELECT) logerror("%s: DESELECT command\n", tag());
m_selected_drive_number = NODRIVE;
@@ -1127,7 +1140,7 @@ void hdc9234_device::drive_deselect()
| 0 | 0 | 0 | 0 | 0 | 0 | 1 |skcom|
+-----+-----+-----+-----+-----+-----+-----+-----+
*/
-void hdc9234_device::restore_drive()
+void hdc92x4_device::restore_drive()
{
int cont = CONTINUE;
bool buffered_step = current_command() & 1;
@@ -1181,7 +1194,7 @@ void hdc9234_device::restore_drive()
break;
case STEP_ON:
- if (TRACE_RESTORE && TRACE_SUBSTATES) logerror("%s: substate STEP_ON\n", tag());
+ if (TRACE_RESTORE && TRACE_SUBSTATES) logerror("%s: [%s] substate STEP_ON\n", tag(), ttsn().c_str());
// Increase step count
m_seek_count++;
@@ -1196,7 +1209,7 @@ void hdc9234_device::restore_drive()
break;
case STEP_OFF:
- if (TRACE_RESTORE && TRACE_SUBSTATES) logerror("%s: substate STEP_OFF\n", tag());
+ if (TRACE_RESTORE && TRACE_SUBSTATES) logerror("%s: [%s] substate STEP_OFF\n", tag(), ttsn().c_str());
set_bits(m_output2, OUT2_STEPPULSE, false);
wait_time(m_timer, step_time(), RESTORE_CHECK);
cont = WAIT;
@@ -1231,7 +1244,7 @@ void hdc9234_device::restore_drive()
+-----+-----+-----+-----+-----+-----+-----+-----+
*/
-void hdc9234_device::step_drive()
+void hdc92x4_device::step_drive()
{
int cont = CONTINUE;
@@ -1281,7 +1294,7 @@ void hdc9234_device::step_drive()
TAPE BACKUP
Not implemented
*/
-void hdc9234_device::tape_backup()
+void hdc92x4_device::tape_backup()
{
logerror("%s: TAPE BACKUP command %02x not implemented\n", tag(), current_command());
set_command_done(TC_SUCCESS);
@@ -1304,7 +1317,7 @@ void hdc9234_device::tape_backup()
This command only sets the select lines but does not process parameters
like head load times or drive types.
*/
-void hdc9234_device::poll_drives()
+void hdc92x4_device::poll_drives()
{
UINT8 drivebit = 0;
if (m_substate == UNDEF)
@@ -1387,7 +1400,7 @@ void hdc9234_device::poll_drives()
+-----+-----+-----+-----+-----+-----+-----+-----+
*/
-void hdc9234_device::drive_select()
+void hdc92x4_device::drive_select()
{
int cont = CONTINUE;
int head_load_delay = 0;
@@ -1448,7 +1461,7 @@ void hdc9234_device::drive_select()
Sets the pointer to the read and write registers. On read or write accesses,
the pointer is increased until it reaches the DATA register.
*/
-void hdc9234_device::set_register_pointer()
+void hdc92x4_device::set_register_pointer()
{
m_register_pointer = current_command() & 0xf;
if (TRACE_SETPTR) logerror("%s: SET REGISTER POINTER command; start reg=%d\n", tag(), m_register_pointer);
@@ -1477,7 +1490,7 @@ void hdc9234_device::set_register_pointer()
All combinations of flags are legal ([1], p.12).
*/
-void hdc9234_device::seek_read_id()
+void hdc92x4_device::seek_read_id()
{
if (m_substate == UNDEF)
{
@@ -1510,7 +1523,8 @@ void hdc9234_device::seek_read_id()
cont = SUCCESS;
break;
default:
- logerror("%s: unknown substate %02x in seek_read_id\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in seek_read_id, aborting command\n", tag(), m_substate);
+ set_command_done(TC_DATAERR);
cont = ERROR;
}
}
@@ -1539,7 +1553,7 @@ void hdc9234_device::seek_read_id()
+-----+-----+-----+-----+-----+--------+------+------+
*/
-void hdc9234_device::read_sectors()
+void hdc92x4_device::read_sectors()
{
m_logical = (current_command() & 0x04)!=0;
@@ -1572,7 +1586,8 @@ void hdc9234_device::read_sectors()
data_transfer(cont);
break;
default:
- logerror("%s: unknown substate %02x in read_sectors\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in read_sectors, aborting command\n", tag(), m_substate);
+ set_command_done(TC_DATAERR);
cont = ERROR;
}
}
@@ -1593,7 +1608,7 @@ void hdc9234_device::read_sectors()
+-----+-----+-----+-----+-----+-----+-----+------+
*/
-void hdc9234_device::read_track()
+void hdc92x4_device::read_track()
{
if (m_substate == UNDEF)
{
@@ -1698,16 +1713,16 @@ void hdc9234_device::read_track()
7 6 5 4 3 2 1 0
+-----+-----+-----+------+-----+-----+-----+------+
- | 0 | 1 | 1 |Normal|RedWC| Precompensation |
+ | 0 | 1 | 1 |DelMrk|RedWC| Precompensation |
+-----+-----+-----+------+-----+-----+-----+------+
*/
-void hdc9234_device::format_track()
+void hdc92x4_device::format_track()
{
if (m_substate == UNDEF)
{
if (TRACE_FORMAT) logerror("%s: FORMAT TRACK command %02x, head = %d\n", tag(), current_command(), desired_head());
m_substate = WAITINDEX0;
- m_deleted = (current_command() & 0x10)==0;
+ m_deleted = (current_command() & 0x10)!=0;
m_reduced_write_current = (current_command() & 0x08)!=0;
m_precompensation = (current_command() & 0x07);
m_write = true;
@@ -1793,13 +1808,10 @@ void hdc9234_device::format_track()
7 6 5 4 3 2 1 0
+-----+------+-------+------+-----+-----+-----+------+
- | 1 |NoSeek|Logical|Normal|RedWC| Precompensation |
+ | 1 |NoSeek|Logical|DelMrk|RedWC| Precompensation |
+-----+------+-------+------+-----+-----+-----+------+
-
- Write physical: typical value 11000000
- Write logical : typical value 10110000
*/
-void hdc9234_device::write_sectors()
+void hdc92x4_device::write_sectors()
{
m_logical = (current_command() & 0x20)!=0;
@@ -1809,7 +1821,7 @@ void hdc9234_device::write_sectors()
m_multi_sector = (m_register_w[SECTOR_COUNT] != 1);
m_substate = READ_ID;
- m_deleted = (current_command() & 0x10)==0;
+ m_deleted = (current_command() & 0x10)!=0;
m_reduced_write_current = (current_command() & 0x08)!=0;
m_precompensation = (current_command() & 0x07);
// Important for DATA TRANSFER
@@ -1857,7 +1869,8 @@ void hdc9234_device::write_sectors()
data_transfer(cont);
break;
default:
- logerror("%s: unknown substate %02x in write_sectors\n", tag(), m_substate);
+ logerror("%s: BUG: Unknown substate %02x in write_sectors, aborting command\n", tag(), m_substate);
+ set_command_done(TC_DATAERR);
cont = ERROR;
}
}
@@ -1880,20 +1893,20 @@ void hdc9234_device::write_sectors()
===========================================================================
*/
-std::string hdc9234_device::tts(const attotime &t)
+std::string hdc92x4_device::tts(const attotime &t)
{
char buf[256];
- int nsec = t.attoseconds / ATTOSECONDS_PER_NANOSECOND;
- sprintf(buf, "%4d.%03d,%03d,%03d", int(t.seconds), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
+ int nsec = t.attoseconds() / ATTOSECONDS_PER_NANOSECOND;
+ sprintf(buf, "%4d.%03d,%03d,%03d", int(t.seconds()), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
return buf;
}
-std::string hdc9234_device::ttsn()
+std::string hdc92x4_device::ttsn()
{
return tts(machine().time());
}
-bool hdc9234_device::found_mark(int state)
+bool hdc92x4_device::found_mark(int state)
{
bool ismark = false;
if (using_floppy())
@@ -1930,7 +1943,7 @@ bool hdc9234_device::found_mark(int state)
The controller starts to read bits from the disk. This method takes an
argument for the state machine called at the end.
*/
-void hdc9234_device::live_start(int state)
+void hdc92x4_device::live_start(int state)
{
if (TRACE_LIVE) logerror("%s: [%s] Live start substate=%02x\n", tag(), ttsn().c_str(), state);
m_live_state.time = machine().time();
@@ -1956,7 +1969,7 @@ void hdc9234_device::live_start(int state)
if (TRACE_LIVE) logerror("%s: [%s] Live start end\n", tag(), ttsn().c_str()); // delete
}
-void hdc9234_device::live_run()
+void hdc92x4_device::live_run()
{
if (using_floppy()) live_run_until(attotime::never);
else live_run_hd_until(attotime::never);
@@ -1970,7 +1983,7 @@ void hdc9234_device::live_run()
THIS IS THE FLOPPY-ONLY LIVE_RUN
*/
-void hdc9234_device::live_run_until(attotime limit)
+void hdc92x4_device::live_run_until(attotime limit)
{
int slot = 0;
@@ -2504,9 +2517,9 @@ void hdc9234_device::live_run_until(attotime limit)
write_on_track(encode((m_live_state.crc >> 8) & 0xff), 1, WRITE_DATA_CRC);
}
else
- // Write a filler byte so that the last CRC bit is saved correctly (why actually?)
- // write_on_track(encode(0xff), 1, WRITE_DONE);
- m_live_state.state = WRITE_DONE;
+ // Write a filler byte so that the last CRC bit is saved correctly
+ // Without, the last bit of the CRC value may be flipped
+ write_on_track(encode(0xff), 1, WRITE_DONE);
break;
@@ -2801,7 +2814,7 @@ void hdc9234_device::live_run_until(attotime limit)
[1], section "Drive select", table
This is currently unsupported; hard disks are forced to MFM
*/
-void hdc9234_device::live_run_hd_until(attotime limit)
+void hdc92x4_device::live_run_hd_until(attotime limit)
{
int slot = 0;
if (TRACE_LIVE) logerror("%s: live_run_hd\n", tag());
@@ -3402,7 +3415,7 @@ void hdc9234_device::live_run_hd_until(attotime limit)
Results in a new checkpoint and a live position at machine time or behind.
As a side effect, portions of the track may be re-read
*/
-void hdc9234_device::live_sync()
+void hdc92x4_device::live_sync()
{
// Do we have some time set?
if (!m_live_state.time.is_never())
@@ -3454,7 +3467,7 @@ void hdc9234_device::live_sync()
}
}
-void hdc9234_device::live_abort()
+void hdc92x4_device::live_abort()
{
if (!m_live_state.time.is_never() && m_live_state.time > machine().time())
{
@@ -3475,7 +3488,7 @@ void hdc9234_device::live_abort()
comprised by WRITE_TRACK_(NEXT_)BYTE
Arguments: byte to be written, number, state on return
*/
-void hdc9234_device::write_on_track(UINT16 encoded, int repeat, int next_state)
+void hdc92x4_device::write_on_track(UINT16 encoded, int repeat, int next_state)
{
m_live_state.repeat = repeat;
m_live_state.state = WRITE_TRACK_BYTE;
@@ -3488,7 +3501,7 @@ void hdc9234_device::write_on_track(UINT16 encoded, int repeat, int next_state)
only intended for skipping bytes.
Arguments: number, state on return
*/
-void hdc9234_device::skip_on_track(int repeat, int next_state)
+void hdc92x4_device::skip_on_track(int repeat, int next_state)
{
m_live_state.bit_counter = 0;
m_live_state.repeat = repeat;
@@ -3496,7 +3509,7 @@ void hdc9234_device::skip_on_track(int repeat, int next_state)
m_live_state.return_state = next_state;
}
-UINT8 hdc9234_device::get_data_from_encoding(UINT16 raw)
+UINT8 hdc92x4_device::get_data_from_encoding(UINT16 raw)
{
unsigned int value = 0;
@@ -3511,7 +3524,7 @@ UINT8 hdc9234_device::get_data_from_encoding(UINT16 raw)
return (value >> 14) & 0xff;
}
-void hdc9234_device::rollback()
+void hdc92x4_device::rollback()
{
m_live_state = m_checkpoint_state;
m_pll = m_checkpoint_pll;
@@ -3521,7 +3534,7 @@ void hdc9234_device::rollback()
Wait for real time to catch up. This way we pretend that the last
operation actually needed the real time.
*/
-void hdc9234_device::wait_for_realtime(int state)
+void hdc92x4_device::wait_for_realtime(int state)
{
m_live_state.next_state = state;
m_timer->adjust(m_live_state.time - machine().time());
@@ -3535,7 +3548,7 @@ void hdc9234_device::wait_for_realtime(int state)
rightmost bit; the shift register is a member of m_live_state. Also,
the CRC is updated.
*/
-bool hdc9234_device::read_one_bit(const attotime &limit)
+bool hdc92x4_device::read_one_bit(const attotime &limit)
{
// Get the next bit from the phase-locked loop.
int bit = m_pll.get_next_bit(m_live_state.time, m_floppy, limit);
@@ -3549,7 +3562,7 @@ bool hdc9234_device::read_one_bit(const attotime &limit)
// value < 100: big trouble for controller, will fail
if (UNRELIABLE_MEDIA)
{
- if ((machine().time().attoseconds % 1009)==0) bit = 0;
+ if ((machine().time().attoseconds() % 1009)==0) bit = 0;
}
// Push into shift register
@@ -3574,7 +3587,7 @@ bool hdc9234_device::read_one_bit(const attotime &limit)
return false;
}
-bool hdc9234_device::write_one_bit(const attotime &limit)
+bool hdc92x4_device::write_one_bit(const attotime &limit)
{
bool bit = (m_live_state.shift_reg & 0x8000)!=0;
@@ -3594,7 +3607,7 @@ bool hdc9234_device::write_one_bit(const attotime &limit)
return false;
}
-UINT16 hdc9234_device::encode(UINT8 byte)
+UINT16 hdc92x4_device::encode(UINT8 byte)
{
UINT16 raw;
UINT8 check_pos;
@@ -3640,12 +3653,12 @@ UINT16 hdc9234_device::encode(UINT8 byte)
return raw;
}
-void hdc9234_device::encode_again()
+void hdc92x4_device::encode_again()
{
encode_raw(m_live_state.shift_reg_save);
}
-void hdc9234_device::encode_raw(UINT16 raw)
+void hdc92x4_device::encode_raw(UINT16 raw)
{
m_live_state.bit_counter = 16;
m_live_state.shift_reg = m_live_state.shift_reg_save = raw;
@@ -3662,7 +3675,7 @@ void hdc9234_device::encode_raw(UINT16 raw)
When writing, the controller generates the proper output bitstream, so we
have to set it from its own state (fm/mfm and device type).
*/
-void hdc9234_device::pll_reset(const attotime &when, bool output)
+void hdc92x4_device::pll_reset(const attotime &when, bool output)
{
m_pll.reset(when);
@@ -3677,7 +3690,7 @@ void hdc9234_device::pll_reset(const attotime &when, bool output)
m_pll.set_clock(attotime::from_nsec(8000 >> (~m_clock_divider & 0x03)));
}
-void hdc9234_device::checkpoint()
+void hdc92x4_device::checkpoint()
{
// Commit bits from pll buffer to disk until live time (if there is something to write)
// For HD we do not use a PLL in this implementation
@@ -3700,10 +3713,19 @@ void hdc9234_device::checkpoint()
Updates the CRC and the shift register. Also, the time is updated.
*/
-bool hdc9234_device::read_from_mfmhd(const attotime &limit)
+bool hdc92x4_device::read_from_mfmhd(const attotime &limit)
{
UINT16 data = 0;
- bool offlimit = m_harddisk->read(m_live_state.time, limit, data);
+ bool offlimit = false;
+
+ if (m_harddisk != NULL)
+ {
+ offlimit = m_harddisk->read(m_live_state.time, limit, data);
+ }
+ else
+ {
+ data = 0;
+ }
// We have reached the time limit
if (offlimit) return true;
@@ -3768,11 +3790,11 @@ bool hdc9234_device::read_from_mfmhd(const attotime &limit)
Return false: valid return
Updates the CRC and the shift register. Also, the time is updated.
*/
-bool hdc9234_device::write_to_mfmhd(const attotime &limit)
+bool hdc92x4_device::write_to_mfmhd(const attotime &limit)
{
UINT16 data = 0;
int count;
- bool offlimit;
+ bool offlimit = false;
if (m_hd_encoding == MFM_BITS)
{
@@ -3785,7 +3807,12 @@ bool hdc9234_device::write_to_mfmhd(const attotime &limit)
data = m_live_state.shift_reg;
count = 16;
}
- offlimit = m_harddisk->write(m_live_state.time, limit, data);
+
+ if (m_harddisk != NULL)
+ {
+ offlimit = m_harddisk->write(m_live_state.time, limit, data, m_precompensation != 0, m_reduced_write_current);
+ }
+
if (offlimit) return true;
m_live_state.bit_counter -= count;
@@ -3811,7 +3838,7 @@ bool hdc9234_device::write_to_mfmhd(const attotime &limit)
return false;
}
-UINT16 hdc9234_device::encode_hd(UINT8 byte)
+UINT16 hdc92x4_device::encode_hd(UINT8 byte)
{
UINT16 cells;
UINT8 check_pos;
@@ -3855,7 +3882,7 @@ UINT16 hdc9234_device::encode_hd(UINT8 byte)
return cells;
}
-UINT16 hdc9234_device::encode_a1_hd()
+UINT16 hdc92x4_device::encode_a1_hd()
{
UINT16 cells = 0;
@@ -3886,15 +3913,14 @@ UINT16 hdc9234_device::encode_a1_hd()
Read a byte of data from the controller
The address (offset) encodes the C/D* line (command and /data)
*/
-READ8_MEMBER( hdc9234_device::read )
+READ8_MEMBER( hdc92x4_device::read )
{
UINT8 reply = 0;
-
if ((offset & 1) == 0)
{
// Data register
reply = m_register_r[m_register_pointer];
- if (TRACE_READREG) logerror("%s: read register[%d] -> %02x\n", tag(), m_register_pointer, reply);
+ if (TRACE_READREG) logerror("%s: Read register[%d] -> %02x\n", tag(), m_register_pointer, reply);
// Autoincrement until DATA is reached.
if (m_register_pointer < DATA) m_register_pointer++;
@@ -3906,7 +3932,7 @@ READ8_MEMBER( hdc9234_device::read )
// "The interrupt pin is reset to its inactive state
// when the UDC interrupt status register is read." [1] (p.3)
- if (TRACE_READREG) logerror("%s: read interrupt status register -> %02x\n", tag(), reply);
+ if (TRACE_READREG) logerror("%s: Read interrupt status register -> %02x\n", tag(), reply);
set_interrupt(CLEAR_LINE);
// Clear the bits due to interrupt status register read.
@@ -3922,19 +3948,22 @@ READ8_MEMBER( hdc9234_device::read )
The operation terminates immediately, and the controller picks up the
values stored in this phase at a later time.
*/
-WRITE8_MEMBER( hdc9234_device::write )
+WRITE8_MEMBER( hdc92x4_device::write )
{
if ((offset & 1) == 0)
{
- m_regvalue = data & 0xff;
- wait_time(m_cmd_timer, attotime::from_nsec(REGISTER_COMMIT), REGISTER_ACCESS);
+ if (TRACE_COMMAND) logerror("%s: New register write access %02x\n", tag(), data & 0xff);
+ if (m_executing) logerror("%s: Error - previous command %02x not completed; register access ignored\n", tag(), current_command());
+ else
+ {
+ m_regvalue = data & 0xff;
+ wait_time(m_cmd_timer, attotime::from_nsec(REGISTER_COMMIT), REGISTER_ACCESS);
+ }
}
else
{
- if (m_executing)
- {
- logerror("%s: [%s] Error - previous command %02x not completed; new command %02x ignored\n", tag(), ttsn().c_str(), current_command(), data);
- }
+ if (TRACE_COMMAND) logerror("%s: New incoming command %02x\n", tag(), data);
+ if (m_executing) logerror("%s: Error - previous command %02x not completed; new command %02x ignored\n", tag(), current_command(), data);
else
{
m_register_w[COMMAND] = data;
@@ -3946,7 +3975,7 @@ WRITE8_MEMBER( hdc9234_device::write )
/*
When the commit period has passed, process the command or register access
*/
-void hdc9234_device::process_command()
+void hdc92x4_device::process_command()
{
if (m_substate == REGISTER_ACCESS)
{
@@ -4006,7 +4035,7 @@ void hdc9234_device::process_command()
auxbus_out();
}
-void hdc9234_device::reenter_command_processing()
+void hdc92x4_device::reenter_command_processing()
{
if (TRACE_DELAY) logerror("%s: Re-enter command processing; live state = %02x\n", tag(), m_live_state.state);
// Do we have a live run on the track?
@@ -4028,7 +4057,7 @@ void hdc9234_device::reenter_command_processing()
/*
Assert Command Done status bit, triggering interrupts as needed
*/
-void hdc9234_device::set_command_done(int flags)
+void hdc92x4_device::set_command_done(int flags)
{
// Do another output, then set the flag
auxbus_out();
@@ -4057,7 +4086,7 @@ void hdc9234_device::set_command_done(int flags)
/*
Preserve previously set termination code
*/
-void hdc9234_device::set_command_done()
+void hdc92x4_device::set_command_done()
{
set_command_done(-1);
}
@@ -4065,7 +4094,7 @@ void hdc9234_device::set_command_done()
/*
Auxiliary bus operation.
- The auxbus of the HDC9234 is used to poll the drive status of the cur-
+ The auxbus of the HDC92x4 is used to poll the drive status of the cur-
rently selected drive, to transmit DMA address bytes, to output the
OUTPUT1 register, and to output the OUTPUT2 register.
@@ -4108,7 +4137,7 @@ void hdc9234_device::set_command_done()
Read the drive status over the auxbus
(as said, let the controller board push the values into the controller)
*/
-void hdc9234_device::auxbus_in(UINT8 data)
+void hdc92x4_device::auxbus_in(UINT8 data)
{
// Kill unwanted input via auxbus until we are initialized.
if (!m_initialized)
@@ -4133,12 +4162,12 @@ void hdc9234_device::auxbus_in(UINT8 data)
if (prevskcom != seek_complete()) seek_complete_handler();
}
-bool hdc9234_device::waiting_for_line(int line, int level)
+bool hdc92x4_device::waiting_for_line(int line, int level)
{
return (m_event_line == line && m_state_after_line != UNDEF && m_line_level == level);
}
-bool hdc9234_device::waiting_for_other_line(int line)
+bool hdc92x4_device::waiting_for_other_line(int line)
{
return (m_state_after_line != UNDEF && m_event_line != line);
}
@@ -4146,7 +4175,7 @@ bool hdc9234_device::waiting_for_other_line(int line)
/*
Handlers for incoming signal lines.
*/
-void hdc9234_device::index_handler()
+void hdc92x4_device::index_handler()
{
int level = index_hole()? ASSERT_LINE : CLEAR_LINE;
if (TRACE_LINES) logerror("%s: [%s] Index handler; level=%d\n", tag(), ttsn().c_str(), level);
@@ -4176,12 +4205,12 @@ void hdc9234_device::index_handler()
{
// Live processing waits for INDEX
// For harddisk we will continue processing on the falling edge
- if (!waiting_for_other_line(INDEX_LINE) && (using_floppy() || level == CLEAR_LINE))
+ if (!m_timed_wait && !waiting_for_other_line(INDEX_LINE) && (using_floppy() || level == CLEAR_LINE))
reenter_command_processing();
}
}
-void hdc9234_device::ready_handler()
+void hdc92x4_device::ready_handler()
{
int level = drive_ready()? ASSERT_LINE : CLEAR_LINE;
if (TRACE_LINES) logerror("%s: [%s] Ready handler; level=%d\n", tag(), ttsn().c_str(), level);
@@ -4208,7 +4237,7 @@ void hdc9234_device::ready_handler()
}
}
-void hdc9234_device::seek_complete_handler()
+void hdc92x4_device::seek_complete_handler()
{
int level = seek_complete()? ASSERT_LINE : CLEAR_LINE;
if (TRACE_LINES) logerror("%s: [%s] Seek complete handler; level=%d\n", tag(), ttsn().c_str(), level);
@@ -4250,7 +4279,7 @@ void hdc9234_device::seek_complete_handler()
Step = Step pulse
Head = desired head
*/
-void hdc9234_device::auxbus_out()
+void hdc92x4_device::auxbus_out()
{
// prepare output2
set_bits(m_output2, OUT2_DRVSEL3I, (m_output1 & OUT1_DRVSEL3)==0);
@@ -4270,7 +4299,7 @@ void hdc9234_device::auxbus_out()
}
}
-void hdc9234_device::dma_address_out(UINT8 addrub, UINT8 addrhb, UINT8 addrlb)
+void hdc92x4_device::dma_address_out(UINT8 addrub, UINT8 addrhb, UINT8 addrlb)
{
if (TRACE_DMA) logerror("%s: Setting DMA address %06x\n", tag(), (addrub<<16 | addrhb<<8 | addrlb)&0xffffff);
m_out_auxbus((offs_t)HDC_OUTPUT_DMA_ADDR, addrub);
@@ -4286,7 +4315,7 @@ void hdc9234_device::dma_address_out(UINT8 addrub, UINT8 addrhb, UINT8 addrlb)
- when the READY_CHANGE bit is set to 1 in the ISR and ST_RDYCHNG is set to 1
(ready change: 1->0 or 0->1)
*/
-void hdc9234_device::set_interrupt(line_state intr)
+void hdc92x4_device::set_interrupt(line_state intr)
{
if (intr == ASSERT_LINE)
{
@@ -4308,7 +4337,7 @@ void hdc9234_device::set_interrupt(line_state intr)
/*
DMA acknowledge line.
*/
-WRITE_LINE_MEMBER( hdc9234_device::dmaack )
+WRITE_LINE_MEMBER( hdc92x4_device::dmaack )
{
if (state==ASSERT_LINE)
{
@@ -4321,7 +4350,7 @@ WRITE_LINE_MEMBER( hdc9234_device::dmaack )
This is pretty simple here, compared to wd17xx, because index and ready
callbacks have to be tied to the controller board outside the chip.
*/
-void hdc9234_device::connect_floppy_drive(floppy_image_device* floppy)
+void hdc92x4_device::connect_floppy_drive(floppy_image_device* floppy)
{
m_floppy = floppy;
}
@@ -4329,7 +4358,7 @@ void hdc9234_device::connect_floppy_drive(floppy_image_device* floppy)
/*
Connect the current hard drive.
*/
-void hdc9234_device::connect_hard_drive(mfm_harddisk_device* harddisk)
+void hdc92x4_device::connect_hard_drive(mfm_harddisk_device* harddisk)
{
m_harddisk = harddisk;
m_hd_encoding = m_harddisk->get_encoding();
@@ -4342,7 +4371,7 @@ void hdc9234_device::connect_hard_drive(mfm_harddisk_device* harddisk)
at some time and make it a device of its own.
line: CD0 (0) and CD1(1), value 0 or 1
*/
-void hdc9234_device::set_clock_divider(int line, int value)
+void hdc92x4_device::set_clock_divider(int line, int value)
{
set_bits(m_clock_divider, (line==0)? 1 : 2, value&1);
}
@@ -4350,9 +4379,10 @@ void hdc9234_device::set_clock_divider(int line, int value)
/*
This is reached when a timer has expired
*/
-void hdc9234_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+void hdc92x4_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
live_sync();
+ m_timed_wait = false;
switch (id)
{
@@ -4362,16 +4392,13 @@ void hdc9234_device::device_timer(emu_timer &timer, device_timer_id id, int para
case COM_TIMER:
process_command();
break;
- /* case LIVE_TIMER:
- live_run();
- break; */
}
}
/*
Reset the controller. Negative logic, but we use ASSERT_LINE.
*/
-WRITE_LINE_MEMBER( hdc9234_device::reset )
+WRITE_LINE_MEMBER( hdc92x4_device::reset )
{
if (state == ASSERT_LINE)
{
@@ -4380,7 +4407,7 @@ WRITE_LINE_MEMBER( hdc9234_device::reset )
}
}
-void hdc9234_device::device_start()
+void hdc92x4_device::device_start()
{
m_out_intrq.resolve_safe();
m_out_dip.resolve_safe();
@@ -4397,13 +4424,15 @@ void hdc9234_device::device_start()
m_live_state.state = IDLE;
}
-void hdc9234_device::device_reset()
+void hdc92x4_device::device_reset()
{
m_clock_divider = 0;
m_deleted = false;
m_executing = false;
m_event_line = UNDEF;
m_first_sector_found = false;
+ m_floppy = NULL;
+ m_harddisk = NULL;
m_initialized = true;
m_line_level = CLEAR_LINE;
m_live_state.state = IDLE;
@@ -4425,6 +4454,7 @@ void hdc9234_device::device_reset()
m_state_after_line = UNDEF;
m_stop_after_index = false;
m_substate = UNDEF;
+ m_timed_wait = false;
m_track_delta = 0;
m_transfer_enabled = true;
m_wait_for_index = false;
@@ -4438,4 +4468,5 @@ void hdc9234_device::device_reset()
m_out_dmarq(CLEAR_LINE);
}
+const device_type HDC9224 = &device_creator<hdc9224_device>;
const device_type HDC9234 = &device_creator<hdc9234_device>;
diff --git a/src/emu/machine/hdc9234.h b/src/devices/machine/hdc92x4.h
index 5398e32a099..da3c5b6d954 100644
--- a/src/emu/machine/hdc9234.h
+++ b/src/devices/machine/hdc92x4.h
@@ -1,17 +1,18 @@
// license:BSD-3-Clause
// copyright-holders:Michael Zapf
/*
- HDC9234 Hard and Floppy Disk Controller
- For details see hdc9234.c
+ HDC9224 / HDC9234 Hard and Floppy Disk Controller
+ For details see hdc92x4.c
*/
-#ifndef __HDC9234_H__
-#define __HDC9234_H__
+#ifndef __HDC92X4_H__
+#define __HDC92X4_H__
#include "emu.h"
#include "imagedev/floppy.h"
+#include "imagedev/mfmhd.h"
#include "fdc_pll.h"
-#include "ti99_hd.h"
+extern const device_type HDC9224;
extern const device_type HDC9234;
/*
@@ -44,41 +45,41 @@ enum
//===================================================================
/* Interrupt line. To be connected with the controller PCB. */
-#define MCFG_HDC9234_INTRQ_CALLBACK(_write) \
- devcb = &hdc9234_device::set_intrq_wr_callback(*device, DEVCB_##_write);
+#define MCFG_HDC92X4_INTRQ_CALLBACK(_write) \
+ devcb = &hdc92x4_device::set_intrq_wr_callback(*device, DEVCB_##_write);
/* DMA request line. To be connected with the controller PCB. */
-#define MCFG_HDC9234_DMARQ_CALLBACK(_write) \
- devcb = &hdc9234_device::set_dmarq_wr_callback(*device, DEVCB_##_write);
+#define MCFG_HDC92X4_DMARQ_CALLBACK(_write) \
+ devcb = &hdc92x4_device::set_dmarq_wr_callback(*device, DEVCB_##_write);
/* DMA in progress line. To be connected with the controller PCB. */
-#define MCFG_HDC9234_DIP_CALLBACK(_write) \
- devcb = &hdc9234_device::set_dip_wr_callback(*device, DEVCB_##_write);
+#define MCFG_HDC92X4_DIP_CALLBACK(_write) \
+ devcb = &hdc92x4_device::set_dip_wr_callback(*device, DEVCB_##_write);
/* Auxiliary Bus. These 8 lines need to be connected to external latches
and to a counter circuitry which works together with the external RAM.
We use the S0/S1 lines as address lines. */
-#define MCFG_HDC9234_AUXBUS_OUT_CALLBACK(_write) \
- devcb = &hdc9234_device::set_auxbus_wr_callback(*device, DEVCB_##_write);
+#define MCFG_HDC92X4_AUXBUS_OUT_CALLBACK(_write) \
+ devcb = &hdc92x4_device::set_auxbus_wr_callback(*device, DEVCB_##_write);
/* Callback to read the contents of the external RAM via the data bus.
Note that the address must be set and automatically increased
by external circuitry. */
-#define MCFG_HDC9234_DMA_IN_CALLBACK(_read) \
- devcb = &hdc9234_device::set_dma_rd_callback(*device, DEVCB_##_read);
+#define MCFG_HDC92X4_DMA_IN_CALLBACK(_read) \
+ devcb = &hdc92x4_device::set_dma_rd_callback(*device, DEVCB_##_read);
/* Callback to write the contents of the external RAM via the data bus.
Note that the address must be set and automatically increased
by external circuitry. */
-#define MCFG_HDC9234_DMA_OUT_CALLBACK(_write) \
- devcb = &hdc9234_device::set_dma_wr_callback(*device, DEVCB_##_write);
+#define MCFG_HDC92X4_DMA_OUT_CALLBACK(_write) \
+ devcb = &hdc92x4_device::set_dma_wr_callback(*device, DEVCB_##_write);
//===================================================================
-class hdc9234_device : public device_t
+class hdc92x4_device : public device_t
{
public:
- hdc9234_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ hdc92x4_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
// Accesors from the CPU side
DECLARE_READ8_MEMBER( read );
@@ -87,12 +88,12 @@ public:
DECLARE_WRITE_LINE_MEMBER( dmaack );
// Callbacks
- template<class _Object> static devcb_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<hdc9234_device &>(device).m_out_intrq.set_callback(object); }
- template<class _Object> static devcb_base &set_dmarq_wr_callback(device_t &device, _Object object) { return downcast<hdc9234_device &>(device).m_out_dmarq.set_callback(object); }
- template<class _Object> static devcb_base &set_dip_wr_callback(device_t &device, _Object object) { return downcast<hdc9234_device &>(device).m_out_dip.set_callback(object); }
- template<class _Object> static devcb_base &set_auxbus_wr_callback(device_t &device, _Object object) { return downcast<hdc9234_device &>(device).m_out_auxbus.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_rd_callback(device_t &device, _Object object) { return downcast<hdc9234_device &>(device).m_in_dma.set_callback(object); }
- template<class _Object> static devcb_base &set_dma_wr_callback(device_t &device, _Object object) { return downcast<hdc9234_device &>(device).m_out_dma.set_callback(object); }
+ template<class _Object> static devcb_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_out_intrq.set_callback(object); }
+ template<class _Object> static devcb_base &set_dmarq_wr_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_out_dmarq.set_callback(object); }
+ template<class _Object> static devcb_base &set_dip_wr_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_out_dip.set_callback(object); }
+ template<class _Object> static devcb_base &set_auxbus_wr_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_out_auxbus.set_callback(object); }
+ template<class _Object> static devcb_base &set_dma_rd_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_in_dma.set_callback(object); }
+ template<class _Object> static devcb_base &set_dma_wr_callback(device_t &device, _Object object) { return downcast<hdc92x4_device &>(device).m_out_dma.set_callback(object); }
// auxbus_in is intended to read events from the drives
// In the real chip the status is polled; to avoid unnecessary load
@@ -117,7 +118,8 @@ protected:
void device_start();
void device_reset();
-private:
+ bool m_is_hdc9234;
+
devcb_write_line m_out_intrq; // INT line
devcb_write_line m_out_dmarq; // DMA request line
devcb_write_line m_out_dip; // DMA in progress line
@@ -202,6 +204,7 @@ private:
line_state m_line_level;
int m_event_line;
int m_state_after_line;
+ bool m_timed_wait;
// ==============================================
// Live state machine
@@ -308,7 +311,7 @@ private:
int m_substate;
- typedef void (hdc9234_device::*cmdfunc)(void);
+ typedef void (hdc92x4_device::*cmdfunc)(void);
typedef struct
{
@@ -465,4 +468,20 @@ private:
void write_sectors();
};
+// =====================================================
+// Subclasses: the two variants
+// =====================================================
+
+class hdc9224_device : public hdc92x4_device
+{
+public:
+ hdc9224_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class hdc9234_device : public hdc92x4_device
+{
+public:
+ hdc9234_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
#endif
diff --git a/src/emu/machine/i2cmem.c b/src/devices/machine/i2cmem.c
index 5e714c0b129..5e714c0b129 100644
--- a/src/emu/machine/i2cmem.c
+++ b/src/devices/machine/i2cmem.c
diff --git a/src/emu/machine/i2cmem.h b/src/devices/machine/i2cmem.h
index ce1bbdb3141..ce1bbdb3141 100644
--- a/src/emu/machine/i2cmem.h
+++ b/src/devices/machine/i2cmem.h
diff --git a/src/emu/machine/i6300esb.c b/src/devices/machine/i6300esb.c
index ec7ca934d31..ec7ca934d31 100644
--- a/src/emu/machine/i6300esb.c
+++ b/src/devices/machine/i6300esb.c
diff --git a/src/emu/machine/i6300esb.h b/src/devices/machine/i6300esb.h
index 2349db91b73..2349db91b73 100644
--- a/src/emu/machine/i6300esb.h
+++ b/src/devices/machine/i6300esb.h
diff --git a/src/emu/machine/i80130.c b/src/devices/machine/i80130.c
index fb419a06090..fb419a06090 100644
--- a/src/emu/machine/i80130.c
+++ b/src/devices/machine/i80130.c
diff --git a/src/emu/machine/i80130.h b/src/devices/machine/i80130.h
index b7aaece8fe7..b7aaece8fe7 100644
--- a/src/emu/machine/i80130.h
+++ b/src/devices/machine/i80130.h
diff --git a/src/emu/machine/i8155.c b/src/devices/machine/i8155.c
index a2914b9081f..a2914b9081f 100644
--- a/src/emu/machine/i8155.c
+++ b/src/devices/machine/i8155.c
diff --git a/src/emu/machine/i8155.h b/src/devices/machine/i8155.h
index c85c0a62846..c85c0a62846 100644
--- a/src/emu/machine/i8155.h
+++ b/src/devices/machine/i8155.h
diff --git a/src/emu/machine/i8212.c b/src/devices/machine/i8212.c
index 14b06841278..14b06841278 100644
--- a/src/emu/machine/i8212.c
+++ b/src/devices/machine/i8212.c
diff --git a/src/emu/machine/i8212.h b/src/devices/machine/i8212.h
index 78e87470acd..78e87470acd 100644
--- a/src/emu/machine/i8212.h
+++ b/src/devices/machine/i8212.h
diff --git a/src/emu/machine/i8214.c b/src/devices/machine/i8214.c
index 9a7cf9ecd1c..9a7cf9ecd1c 100644
--- a/src/emu/machine/i8214.c
+++ b/src/devices/machine/i8214.c
diff --git a/src/emu/machine/i8214.h b/src/devices/machine/i8214.h
index 62e7f98fd51..62e7f98fd51 100644
--- a/src/emu/machine/i8214.h
+++ b/src/devices/machine/i8214.h
diff --git a/src/emu/machine/i8243.c b/src/devices/machine/i8243.c
index d3393cea4fd..d3393cea4fd 100644
--- a/src/emu/machine/i8243.c
+++ b/src/devices/machine/i8243.c
diff --git a/src/emu/machine/i8243.h b/src/devices/machine/i8243.h
index 7ac782f3496..7ac782f3496 100644
--- a/src/emu/machine/i8243.h
+++ b/src/devices/machine/i8243.h
diff --git a/src/emu/machine/i8251.c b/src/devices/machine/i8251.c
index 362b3372574..7008fe394a3 100644
--- a/src/emu/machine/i8251.c
+++ b/src/devices/machine/i8251.c
@@ -107,7 +107,8 @@ void i8251_device::device_start()
save_item(NAME(m_rxc_count));
save_item(NAME(m_txc_count));
save_item(NAME(m_br_factor));
- save_item(NAME(m_data));
+ save_item(NAME(m_rx_data));
+ save_item(NAME(m_tx_data));
save_item(NAME(m_tx_busy));
save_item(NAME(m_disable_tx_pending));
device_serial_interface::register_save_state(machine().save(), this);
@@ -190,7 +191,7 @@ void i8251_device::transmit_clock()
if (is_transmit_register_empty())
{
/* set it up */
- transmit_register_setup(m_data);
+ transmit_register_setup(m_tx_data);
/* i8251 transmit reg now empty */
m_status |=I8251_STATUS_TX_EMPTY;
/* ready for next transmit */
@@ -339,7 +340,8 @@ void i8251_device::device_reset()
m_status = I8251_STATUS_TX_EMPTY | I8251_STATUS_TX_READY;
m_mode_byte = 0;
m_command = 0;
- m_data = 0;
+ m_rx_data = 0;
+ m_tx_data = 0;
m_rxc_count = m_txc_count = 0;
m_br_factor = 1;
m_tx_busy = m_disable_tx_pending = false;
@@ -688,8 +690,9 @@ READ8_MEMBER(i8251_device::status_r)
WRITE8_MEMBER(i8251_device::data_w)
{
- m_data = data;
+ m_tx_data = data;
+ LOG(("data_w %02x\n" , data));
// printf("i8251 transmit char: %02x\n",data);
/* writing clears */
@@ -711,9 +714,7 @@ WRITE8_MEMBER(i8251_device::data_w)
void i8251_device::receive_character(UINT8 ch)
{
-// printf("i8251 receive char: %02x\n",ch);
-
- m_data = ch;
+ m_rx_data = ch;
/* char has not been read and another has arrived! */
if (m_status & I8251_STATUS_RX_READY)
@@ -733,12 +734,12 @@ void i8251_device::receive_character(UINT8 ch)
READ8_MEMBER(i8251_device::data_r)
{
- //logerror("read data: %02x, STATUS=%02x\n",m_data,m_status);
+ LOG(("read data: %02x, STATUS=%02x\n",m_rx_data,m_status));
/* reading clears */
m_status &= ~I8251_STATUS_RX_READY;
update_rx_ready();
- return m_data;
+ return m_rx_data;
}
diff --git a/src/emu/machine/i8251.h b/src/devices/machine/i8251.h
index 7f51f0dfff2..2825faf1ed1 100644
--- a/src/emu/machine/i8251.h
+++ b/src/devices/machine/i8251.h
@@ -132,7 +132,8 @@ private:
int m_br_factor;
/* data being received */
- UINT8 m_data;
+ UINT8 m_rx_data;
+ UINT8 m_tx_data;
bool m_tx_busy;
bool m_disable_tx_pending;
};
diff --git a/src/emu/machine/i82541.c b/src/devices/machine/i82541.c
index 8e5a1467183..8e5a1467183 100644
--- a/src/emu/machine/i82541.c
+++ b/src/devices/machine/i82541.c
diff --git a/src/emu/machine/i82541.h b/src/devices/machine/i82541.h
index 810c4dc7b4a..810c4dc7b4a 100644
--- a/src/emu/machine/i82541.h
+++ b/src/devices/machine/i82541.h
diff --git a/src/emu/machine/i8255.c b/src/devices/machine/i8255.c
index 7725565cde2..7725565cde2 100644
--- a/src/emu/machine/i8255.c
+++ b/src/devices/machine/i8255.c
diff --git a/src/emu/machine/i8255.h b/src/devices/machine/i8255.h
index c232b2105e0..c232b2105e0 100644
--- a/src/emu/machine/i8255.h
+++ b/src/devices/machine/i8255.h
diff --git a/src/emu/machine/i8257.c b/src/devices/machine/i8257.c
index 23abcc3915c..23abcc3915c 100644
--- a/src/emu/machine/i8257.c
+++ b/src/devices/machine/i8257.c
diff --git a/src/emu/machine/i8257.h b/src/devices/machine/i8257.h
index 9ab509d38e7..9ab509d38e7 100644
--- a/src/emu/machine/i8257.h
+++ b/src/devices/machine/i8257.h
diff --git a/src/devices/machine/i8271.c b/src/devices/machine/i8271.c
new file mode 100644
index 00000000000..6e938162ada
--- /dev/null
+++ b/src/devices/machine/i8271.c
@@ -0,0 +1,1698 @@
+// license:BSD-3-Clause
+// copyright-holders:Carl,Olivier Galibert
+
+#include "i8271.h"
+
+const device_type I8271 = &device_creator<i8271_device>;
+
+i8271_device::i8271_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, I8271, "Intel 8271", tag, owner, clock, "i8271", __FILE__),
+ intrq_cb(*this),
+ drq_cb(*this),
+ hdl_cb(*this),
+ opt_cb(*this)
+{
+ select_connected = true;
+ external_ready = false;
+}
+
+DEVICE_ADDRESS_MAP_START(map, 8, i8271_device)
+ AM_RANGE(0x0, 0x0) AM_READWRITE(sr_r, cmd_w)
+ AM_RANGE(0x1, 0x1) AM_READWRITE(rr_r, param_w)
+ AM_RANGE(0x2, 0x2) AM_WRITE(reset_w)
+ADDRESS_MAP_END
+
+void i8271_device::set_ready_line_connected(bool _ready)
+{
+ ready_connected = _ready;
+}
+
+void i8271_device::set_select_lines_connected(bool _select)
+{
+ select_connected = _select;
+}
+
+void i8271_device::device_start()
+{
+ intrq_cb.resolve_safe();
+ drq_cb.resolve_safe();
+ hdl_cb.resolve_safe();
+ opt_cb.resolve_safe();
+
+ for(int i=0; i != 2; i++) {
+ char name[2];
+ flopi[i].tm = timer_alloc(i);
+ flopi[i].id = i;
+ if(select_connected) {
+ name[0] = '0'+i;
+ name[1] = 0;
+ floppy_connector *con = subdevice<floppy_connector>(name);
+ if(con) {
+ flopi[i].dev = con->get_device();
+ if (flopi[i].dev != NULL)
+ flopi[i].dev->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(FUNC(i8271_device::index_callback), this));
+ } else
+ flopi[i].dev = NULL;
+ } else
+ flopi[i].dev = NULL;
+
+ flopi[i].main_state = IDLE;
+ flopi[i].sub_state = IDLE;
+ flopi[i].dir = 0;
+ flopi[i].counter = 0;
+ flopi[i].pcn = 0;
+ flopi[i].live = false;
+ flopi[i].index = false;
+ flopi[i].ready = true;
+ }
+ cur_rate = 250000;
+
+ cur_live.tm = attotime::never;
+ cur_live.state = IDLE;
+ cur_live.next_state = -1;
+ cur_live.fi = NULL;
+}
+
+void i8271_device::device_reset()
+{
+ soft_reset();
+}
+
+void i8271_device::soft_reset()
+{
+ main_phase = PHASE_IDLE;
+ for(int i=0; i<2; i++) {
+ flopi[i].main_state = IDLE;
+ flopi[i].sub_state = IDLE;
+ flopi[i].live = false;
+ flopi[i].ready = get_ready(i);
+ }
+ set_irq(false);
+ set_drq(false);
+ command_pos = 0;
+ cur_live.fi = 0;
+ cur_live.tm = attotime::never;
+ cur_live.state = IDLE;
+ cur_live.next_state = -1;
+ cur_live.fi = NULL;
+ rr = 0;
+ scan_sec = 0;
+ moder = 0xc0;
+ oport = 0;
+ scan_cnt[0] = scan_cnt[1] = 0;
+}
+
+void i8271_device::ready_w(bool _ready)
+{
+ external_ready = _ready;
+}
+
+bool i8271_device::get_ready(int fid)
+{
+ if(!flopi[fid].ready)
+ return false;
+ if(ready_connected)
+ return flopi[fid].dev ? !flopi[fid].dev->ready_r() : false;
+ return !external_ready;
+}
+
+void i8271_device::set_floppy(floppy_image_device *flop)
+{
+ for(int fid=0; fid<2; fid++) {
+ if(flopi[fid].dev)
+ flopi[fid].dev->setup_index_pulse_cb(floppy_image_device::index_pulse_cb());
+ flopi[fid].dev = flop;
+ }
+ if(flop)
+ flop->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(FUNC(i8271_device::index_callback), this));
+}
+
+READ8_MEMBER(i8271_device::sr_r)
+{
+ UINT32 ret = (irq ? SR_IRQ : 0);
+ switch(main_phase) {
+ case PHASE_CMD:
+ ret |= SR_CF;
+ break;
+ case PHASE_EXEC:
+ ret |= SR_BSY;
+ if((moder & 1) && drq)
+ ret |= SR_DRQ;
+ break;
+ case PHASE_RESULT:
+ ret |= SR_RF;
+ break;
+ }
+ return ret;
+}
+
+READ8_MEMBER(i8271_device::rr_r)
+{
+ if(main_phase == PHASE_RESULT)
+ main_phase = PHASE_IDLE;
+ set_irq(false);
+ return rr;
+}
+
+void i8271_device::set_rate(int rate)
+{
+ cur_rate = rate;
+}
+
+READ8_MEMBER(i8271_device::data_r)
+{
+ set_drq(false);
+ return dma_data;
+}
+
+WRITE8_MEMBER(i8271_device::data_w)
+{
+ if(drq) {
+ set_drq(false);
+ dma_data = data;
+ }
+}
+
+WRITE8_MEMBER(i8271_device::cmd_w)
+{
+ if(main_phase == PHASE_IDLE) {
+ command[0] = data;
+ command_pos = 1;
+
+ int cmd = check_command();
+ if(cmd != C_INVALID) {
+ main_phase = PHASE_CMD;
+ if(cmd != C_INCOMPLETE)
+ start_command(cmd);
+ }
+ }
+}
+
+WRITE8_MEMBER(i8271_device::param_w)
+{
+ if(main_phase == PHASE_CMD) {
+ command[command_pos++] = data;
+ int cmd = check_command();
+ if(cmd != C_INCOMPLETE)
+ start_command(cmd);
+ }
+}
+
+bool i8271_device::set_output(UINT8 data)
+{
+ if(main_phase == PHASE_EXEC) {
+ if(drq) {
+ rr = ERR_DMA;
+ return false;
+ }
+ dma_data = data;
+ set_drq(true);
+ }
+ return true;
+}
+
+bool i8271_device::get_input(UINT8 *data)
+{
+ if(main_phase == PHASE_EXEC) {
+ if(drq) {
+ rr = ERR_DMA;
+ return false;
+ }
+ *data = dma_data;
+ set_drq(true);
+ }
+ return true;
+}
+
+void i8271_device::set_drq(bool state)
+{
+ if(state != drq) {
+ drq = state;
+ drq_cb(drq);
+ if(moder & 1)
+ intrq_cb(drq);
+ }
+}
+
+void i8271_device::set_irq(bool state)
+{
+ if(state != irq) {
+ irq = state;
+ intrq_cb(irq);
+ }
+}
+
+void i8271_device::live_start(floppy_info &fi, int state)
+{
+ cur_live.tm = machine().time();
+ cur_live.state = state;
+ cur_live.next_state = -1;
+ cur_live.fi = &fi;
+ cur_live.shift_reg = 0;
+ cur_live.crc = 0xffff;
+ cur_live.bit_counter = 0;
+ cur_live.data_separator_phase = false;
+ cur_live.data_reg = 0;
+ cur_live.previous_type = live_info::PT_NONE;
+ cur_live.data_bit_context = false;
+ cur_live.byte_counter = 0;
+ cur_live.pll.reset(cur_live.tm);
+ cur_live.pll.set_clock(attotime::from_hz(cur_rate));
+ checkpoint_live = cur_live;
+ fi.live = true;
+
+ live_run();
+}
+
+void i8271_device::checkpoint()
+{
+ if(cur_live.fi)
+ cur_live.pll.commit(cur_live.fi->dev, cur_live.tm);
+ checkpoint_live = cur_live;
+}
+
+void i8271_device::rollback()
+{
+ cur_live = checkpoint_live;
+}
+
+void i8271_device::live_delay(int state)
+{
+ cur_live.next_state = state;
+ if(cur_live.tm != machine().time())
+ cur_live.fi->tm->adjust(cur_live.tm - machine().time());
+ else
+ live_sync();
+}
+
+void i8271_device::live_sync()
+{
+ if(!cur_live.tm.is_never()) {
+ if(cur_live.tm > machine().time()) {
+ rollback();
+ live_run(machine().time());
+ cur_live.pll.commit(cur_live.fi->dev, cur_live.tm);
+ } else {
+ cur_live.pll.commit(cur_live.fi->dev, cur_live.tm);
+ if(cur_live.next_state != -1) {
+ cur_live.state = cur_live.next_state;
+ cur_live.next_state = -1;
+ }
+ if(cur_live.state == IDLE) {
+ cur_live.pll.stop_writing(cur_live.fi->dev, cur_live.tm);
+ cur_live.tm = attotime::never;
+ cur_live.fi->live = false;
+ cur_live.fi = 0;
+ }
+ }
+ cur_live.next_state = -1;
+ checkpoint();
+ }
+}
+
+void i8271_device::live_abort()
+{
+ if(!cur_live.tm.is_never() && cur_live.tm > machine().time()) {
+ rollback();
+ live_run(machine().time());
+ }
+
+ if(cur_live.fi) {
+ cur_live.pll.stop_writing(cur_live.fi->dev, cur_live.tm);
+ cur_live.fi->live = false;
+ cur_live.fi = 0;
+ }
+
+ cur_live.tm = attotime::never;
+ cur_live.state = IDLE;
+ cur_live.next_state = -1;
+}
+
+void i8271_device::live_run(attotime limit)
+{
+ if(cur_live.state == IDLE || cur_live.next_state != -1)
+ return;
+
+ if(limit == attotime::never) {
+ if(cur_live.fi->dev)
+ limit = cur_live.fi->dev->time_next_index();
+ if(limit == attotime::never) {
+ // Happens when there's no disk or if the fdc is not
+ // connected to a drive, hence no index pulse. Force a
+ // sync from time to time in that case, so that the main
+ // cpu timeout isn't too painful. Avoids looping into
+ // infinity looking for data too.
+
+ limit = machine().time() + attotime::from_msec(1);
+ cur_live.fi->tm->adjust(attotime::from_msec(1));
+ }
+ }
+
+ for(;;) {
+ switch(cur_live.state) {
+ case SEARCH_ADDRESS_MARK_HEADER:
+ if(read_one_bit(limit))
+ return;
+#if 0
+ fprintf(stderr, "%s: shift = %04x data=%02x c=%d\n", tts(cur_live.tm).c_str(), cur_live.shift_reg,
+ (cur_live.shift_reg & 0x4000 ? 0x80 : 0x00) |
+ (cur_live.shift_reg & 0x1000 ? 0x40 : 0x00) |
+ (cur_live.shift_reg & 0x0400 ? 0x20 : 0x00) |
+ (cur_live.shift_reg & 0x0100 ? 0x10 : 0x00) |
+ (cur_live.shift_reg & 0x0040 ? 0x08 : 0x00) |
+ (cur_live.shift_reg & 0x0010 ? 0x04 : 0x00) |
+ (cur_live.shift_reg & 0x0004 ? 0x02 : 0x00) |
+ (cur_live.shift_reg & 0x0001 ? 0x01 : 0x00),
+ cur_live.bit_counter);
+#endif
+
+ if(cur_live.shift_reg == 0xf57e) {
+ cur_live.crc = 0xef21;
+ cur_live.data_separator_phase = false;
+ cur_live.bit_counter = 0;
+ cur_live.state = READ_ID_BLOCK;
+ }
+ break;
+
+ case READ_ID_BLOCK: {
+ if(read_one_bit(limit))
+ return;
+ if(cur_live.bit_counter & 15)
+ break;
+ int slot = (cur_live.bit_counter >> 4)-1;
+
+ if(0)
+ fprintf(stderr, "%s: slot=%d data=%02x crc=%04x\n", tts(cur_live.tm).c_str(), slot, cur_live.data_reg, cur_live.crc);
+ cur_live.idbuf[slot] = cur_live.data_reg;
+ if(cur_live.fi->main_state == READ_ID) {
+ if(!set_output(cur_live.data_reg)) {
+ live_delay(IDLE);
+ return;
+ }
+ }
+ if(slot == 5) {
+ live_delay(IDLE);
+ return;
+ }
+ break;
+ }
+
+ case SEARCH_ADDRESS_MARK_DATA:
+ if(read_one_bit(limit))
+ return;
+#if 0
+ fprintf(stderr, "%s: shift = %04x data=%02x c=%d.%x\n", tts(cur_live.tm).c_str(), cur_live.shift_reg,
+ (cur_live.shift_reg & 0x4000 ? 0x80 : 0x00) |
+ (cur_live.shift_reg & 0x1000 ? 0x40 : 0x00) |
+ (cur_live.shift_reg & 0x0400 ? 0x20 : 0x00) |
+ (cur_live.shift_reg & 0x0100 ? 0x10 : 0x00) |
+ (cur_live.shift_reg & 0x0040 ? 0x08 : 0x00) |
+ (cur_live.shift_reg & 0x0010 ? 0x04 : 0x00) |
+ (cur_live.shift_reg & 0x0004 ? 0x02 : 0x00) |
+ (cur_live.shift_reg & 0x0001 ? 0x01 : 0x00),
+ cur_live.bit_counter >> 4, cur_live.bit_counter & 15);
+#endif
+
+ if(cur_live.bit_counter > 23*16) {
+ live_delay(SEARCH_ADDRESS_MARK_DATA_FAILED);
+ return;
+ }
+
+ if(cur_live.bit_counter >= 11*16 && (cur_live.shift_reg == 0xf56a || cur_live.shift_reg == 0xf56f)) {
+ cur_live.crc = cur_live.shift_reg == 0xf56a ? 0x8fe7 : 0xbf84;
+ cur_live.data_separator_phase = false;
+ cur_live.bit_counter = 0;
+ cur_live.state = READ_SECTOR_DATA;
+ }
+
+ break;
+
+ case SEARCH_ADDRESS_MARK_DATA_FAILED:
+ cur_live.state = IDLE;
+ return;
+
+ case READ_SECTOR_DATA: {
+ if(read_one_bit(limit))
+ return;
+ if(cur_live.bit_counter & 15)
+ break;
+ int slot = (cur_live.bit_counter >> 4)-1;
+ if(slot < sector_size) {
+ // Sector data
+ if(cur_live.fi->main_state == SCAN_DATA)
+ live_delay(SCAN_SECTOR_DATA_BYTE);
+ else if(cur_live.fi->main_state == VERIFY_DATA)
+ live_delay(VERIFY_SECTOR_DATA_BYTE);
+ else
+ live_delay(READ_SECTOR_DATA_BYTE);
+ return;
+ } else if(slot < sector_size+2) {
+ // CRC
+ if(slot == sector_size+1) {
+ live_delay(IDLE);
+ return;
+ }
+ }
+ break;
+ }
+
+ case READ_SECTOR_DATA_BYTE:
+ if(!set_output(cur_live.data_reg)) {
+ live_delay(IDLE);
+ return;
+ }
+ cur_live.state = READ_SECTOR_DATA;
+ checkpoint();
+ break;
+
+ case SCAN_SECTOR_DATA_BYTE:
+ if(!scan_done)
+ {
+ UINT8 data = 0;
+ if(!get_input(&data)) {
+ live_delay(IDLE);
+ return;
+ }
+ if(cur_live.data_reg != 0xff)
+ {
+ switch(command[4] >> 6) {
+ case 0:
+ if(cur_live.data_reg != data)
+ scan_match = false;
+ break;
+ case 1:
+ if(cur_live.data_reg < data)
+ scan_match = false;
+ break;
+ case 2:
+ if(cur_live.data_reg > data)
+ scan_match = false;
+ break;
+ default:
+ scan_match = false;
+ break;
+ }
+ }
+ scan_len++;
+ if(scan_len == command[5]) {
+ if(scan_match) {
+ int slot = calc_sector_size(command[3] >> 5) - ((cur_live.bit_counter >> 4)-1);
+ scan_sec = cur_live.idbuf[2];
+ scan_cnt[0] = slot & 0x7f;
+ scan_cnt[1] = slot >> 9;
+ scan_done = true;
+ rr = command[4] & 0xc0 ? ERR_SMNE : ERR_SMEQ;
+ }
+ else
+ {
+ scan_match = true;
+ scan_len = 0;
+ }
+ }
+ }
+ cur_live.state = READ_SECTOR_DATA;
+ checkpoint();
+ break;
+
+ case VERIFY_SECTOR_DATA_BYTE:
+ cur_live.state = READ_SECTOR_DATA;
+ checkpoint();
+ break;
+
+ case WRITE_SECTOR_SKIP_GAP2:
+ cur_live.bit_counter = 0;
+ cur_live.byte_counter = 0;
+ cur_live.state = WRITE_SECTOR_SKIP_GAP2_BYTE;
+ checkpoint();
+ break;
+
+ case WRITE_SECTOR_SKIP_GAP2_BYTE:
+ if(read_one_bit(limit))
+ return;
+ if(cur_live.bit_counter != 11*16)
+ break;
+ cur_live.bit_counter = 0;
+ cur_live.byte_counter = 0;
+ live_delay(WRITE_SECTOR_DATA);
+ return;
+
+ case WRITE_SECTOR_DATA:
+ if(cur_live.byte_counter < 6)
+ live_write_fm(0x00);
+ else if(cur_live.byte_counter < 7) {
+ cur_live.crc = 0xffff;
+ live_write_raw(BIT(command[0], 2) ? 0xf56a : 0xf56f);
+ } else if(cur_live.byte_counter < 7+sector_size) {
+ UINT8 data = 0;
+ if(!get_input(&data)) {
+ live_delay(IDLE);
+ return;
+ }
+ live_write_fm(data);
+ }
+ else if(cur_live.byte_counter < 7+sector_size+2)
+ live_write_fm(cur_live.crc >> 8);
+ else if(cur_live.byte_counter < 7+sector_size+2+1)
+ live_write_fm(0xff);
+ else {
+ cur_live.pll.stop_writing(cur_live.fi->dev, cur_live.tm);
+ cur_live.state = IDLE;
+ return;
+ }
+ cur_live.state = WRITE_SECTOR_DATA_BYTE;
+ cur_live.bit_counter = 16;
+ checkpoint();
+ break;
+
+ case WRITE_TRACK_PRE_SECTORS:
+ if(command[4]) {
+ if(cur_live.byte_counter < command[4])
+ live_write_fm(0xff);
+ else if(cur_live.byte_counter < (command[4] + 6))
+ live_write_fm(0x00);
+ else if(cur_live.byte_counter < (command[4] + 7))
+ live_write_raw(0xf77a);
+ else if(cur_live.byte_counter < (command[4] + command[5] + 7))
+ live_write_fm(0xff);
+ else {
+ cur_live.state = WRITE_TRACK_SECTOR;
+ cur_live.byte_counter = 0;
+ break;
+ }
+ } else {
+ if(cur_live.byte_counter < command[5])
+ live_write_fm(0xff);
+ else {
+ cur_live.state = WRITE_TRACK_SECTOR;
+ cur_live.byte_counter = 0;
+ break;
+ }
+ }
+ cur_live.state = WRITE_TRACK_PRE_SECTORS_BYTE;
+ cur_live.bit_counter = 16;
+ checkpoint();
+ break;
+
+ case WRITE_TRACK_SECTOR:
+ if(cur_live.byte_counter < 6)
+ live_write_fm(0x00);
+ else if(cur_live.byte_counter < 7) {
+ cur_live.crc = 0xffff;
+ live_write_raw(0xf57e);
+ } else if(cur_live.byte_counter < 11) {
+ UINT8 data = 0;
+ if(!get_input(&data)) {
+ live_delay(IDLE);
+ return;
+ }
+ live_write_fm(data);
+ } else if(cur_live.byte_counter < 13)
+ live_write_fm(cur_live.crc >> 8);
+ else if(cur_live.byte_counter < 24)
+ live_write_fm(0xff);
+ else if(cur_live.byte_counter < 30)
+ live_write_fm(0x00);
+ else if(cur_live.byte_counter < 31) {
+ cur_live.crc = 0xffff;
+ live_write_raw(0xf56f);
+ } else if(cur_live.byte_counter < 31+sector_size)
+ live_write_fm(0xe5);
+ else if(cur_live.byte_counter < 33+sector_size)
+ live_write_fm(cur_live.crc >> 8);
+ else if(cur_live.byte_counter < 33+sector_size+command[2])
+ live_write_fm(0xff);
+ else {
+ cur_live.byte_counter = 0;
+ command[3] = (command[3] & 0xe0) | ((command[3] & 0x1f) - 1);
+ cur_live.state = command[3] & 0x1f ? WRITE_TRACK_SECTOR : WRITE_TRACK_POST_SECTORS;
+ break;
+ }
+ cur_live.state = WRITE_TRACK_SECTOR_BYTE;
+ cur_live.bit_counter = 16;
+ checkpoint();
+ break;
+
+ case WRITE_TRACK_POST_SECTORS:
+ live_write_fm(0xff);
+ cur_live.state = WRITE_TRACK_POST_SECTORS_BYTE;
+ cur_live.bit_counter = 16;
+ checkpoint();
+ break;
+
+ case WRITE_TRACK_PRE_SECTORS_BYTE:
+ case WRITE_TRACK_SECTOR_BYTE:
+ case WRITE_TRACK_POST_SECTORS_BYTE:
+ case WRITE_SECTOR_DATA_BYTE:
+ if(write_one_bit(limit))
+ return;
+ if(cur_live.bit_counter == 0) {
+ cur_live.byte_counter++;
+ live_delay(cur_live.state-1);
+ return;
+ }
+ break;
+
+ default:
+ logerror("%s: Unknown live state %d\n", tts(cur_live.tm).c_str(), cur_live.state);
+ return;
+ }
+ }
+}
+
+int i8271_device::check_command()
+{
+ switch(command[0] & 0x3f) {
+ case 0x00:
+ case 0x04:
+ return command_pos == 6 ? C_SCAN : C_INCOMPLETE;
+
+ case 0x0a:
+ case 0x0e:
+ return command_pos == 3 ? C_WRITE_DATA_SINGLE : C_INCOMPLETE;
+
+ case 0x0b:
+ case 0x0f:
+ return command_pos == 4 ? C_WRITE_DATA_MULTI : C_INCOMPLETE;
+
+ case 0x12:
+ case 0x16:
+ return command_pos == 3 ? C_READ_DATA_SINGLE : C_INCOMPLETE;
+
+ case 0x13:
+ case 0x17:
+ return command_pos == 4 ? C_READ_DATA_MULTI : C_INCOMPLETE;
+
+ case 0x1e:
+ return command_pos == 3 ? C_VERIFY_DATA_SINGLE : C_INCOMPLETE;
+
+ case 0x1f:
+ return command_pos == 4 ? C_VERIFY_DATA_MULTI : C_INCOMPLETE;
+
+ case 0x1b:
+ return command_pos == 4 ? C_READ_ID : C_INCOMPLETE;
+
+ case 0x23:
+ return command_pos == 6 ? C_FORMAT_TRACK : C_INCOMPLETE;
+
+ case 0x29:
+ return command_pos == 2 ? C_SEEK : C_INCOMPLETE;
+
+ case 0x2c:
+ return C_READ_DRIVE_STATUS;
+
+ case 0x35:
+ return command_pos == 5 ? C_SPECIFY : C_INCOMPLETE;
+
+ case 0x3a:
+ return command_pos == 3 ? C_WRITE_SPECIAL_REGISTER : C_INCOMPLETE;
+
+ case 0x3d:
+ return command_pos == 2 ? C_READ_SPECIAL_REGISTER : C_INCOMPLETE;
+
+ default:
+ return C_INVALID;
+ }
+}
+
+void i8271_device::start_command(int cmd)
+{
+ command_pos = 0;
+ main_phase = PHASE_EXEC;
+ switch(cmd) {
+ case C_READ_DATA_SINGLE:
+ command[3] = 1;
+ case C_READ_DATA_MULTI:
+ read_data_start(flopi[BIT(command[0], 7)]);
+ break;
+
+ case C_VERIFY_DATA_SINGLE:
+ command[3] = 1;
+ case C_VERIFY_DATA_MULTI:
+ verify_data_start(flopi[BIT(command[0], 7)]);
+ break;
+
+ case C_FORMAT_TRACK:
+ format_track_start(flopi[BIT(command[0], 7)]);
+ break;
+
+ case C_READ_ID:
+ read_id_start(flopi[BIT(command[0], 7)]);
+ break;
+
+ case C_SCAN:
+ scan_start(flopi[BIT(command[0], 7)]);
+ break;
+
+ case C_SEEK:
+ if(!command[1])
+ recalibrate_start(flopi[BIT(command[0], 7)]);
+ else
+ seek_start(flopi[BIT(command[0], 7)]);
+ break;
+
+ case C_READ_DRIVE_STATUS:
+ {
+ floppy_info &fi = flopi[BIT(command[0], 7)];
+ rr = (get_ready(1) ? 0x40 : 0) | (fi.dev->idx_r() ? 0x10 : 0) | (fi.dev->wpt_r() ? 0 : 8) |
+ (get_ready(0) ? 4 : 0) | (fi.dev->trk00_r() ? 1 : 0);
+ flopi[0].ready = true;
+ flopi[1].ready = true;
+ main_phase = PHASE_IDLE;
+ break;
+ }
+ case C_SPECIFY:
+ logerror("%s: command specify %02x %02x %02x %02x\n",
+ tag(), command[1],
+ command[2], command[3], command[4]);
+ switch(command[1]) {
+ case 0x0d:
+ srate = command[2];
+ hset = command[3];
+ icnt = command[4] >> 4;
+ hload = command[4] & 0xf;
+ break;
+ case 0x10:
+ case 0x18:
+ {
+ floppy_info &fi = flopi[BIT(command[1], 3)];
+ fi.badtrack[0] = command[2];
+ fi.badtrack[1] = command[3];
+ fi.pcn = command[4];
+ }
+ }
+ main_phase = PHASE_IDLE;
+ break;
+
+ case C_WRITE_DATA_SINGLE:
+ command[3] = 1;
+ case C_WRITE_DATA_MULTI:
+ write_data_start(flopi[BIT(command[0], 7)]);
+ break;
+
+ case C_READ_SPECIAL_REGISTER:
+ switch(command[1] & 0x3f) {
+ case 0x06:
+ rr = scan_sec;
+ break;
+ case 0x10:
+ case 0x11:
+ rr = flopi[0].badtrack[BIT(command[1], 0)];
+ break;
+ case 0x12:
+ rr = flopi[0].pcn;
+ break;
+ case 0x13:
+ rr = scan_cnt[0];
+ break;
+ case 0x14:
+ rr = scan_cnt[1];
+ break;
+ case 0x17:
+ rr = moder;
+ break;
+ case 0x18:
+ case 0x19:
+ rr = flopi[1].badtrack[BIT(command[1], 0)];
+ break;
+ case 0x1a:
+ rr = flopi[1].pcn;
+ break;
+ case 0x22: {
+ floppy_info &fi = flopi[BIT(command[0], 7)];
+ rr = (get_ready(1) ? 0x40 : 0) | (fi.dev->idx_r() ? 0x10 : 0) | (fi.dev->wpt_r() ? 0 : 8) |
+ (get_ready(0) ? 4 : 0) | (fi.dev->trk00_r() ? 1 : 0);
+ break;
+ }
+ case 0x23:
+ rr = (command[0] & 0xc0) | oport;
+ break;
+ default:
+ rr = 0;
+ break;
+ }
+ main_phase = PHASE_IDLE;
+ break;
+
+ case C_WRITE_SPECIAL_REGISTER:
+ switch(command[1]) {
+ case 0x06:
+ scan_sec = command[2];
+ break;
+ case 0x10:
+ case 0x11:
+ flopi[0].badtrack[BIT(command[1], 0)] = command[2];
+ break;
+ case 0x12:
+ flopi[0].pcn = command[2];
+ break;
+ case 0x13:
+ scan_cnt[0] = command[2];
+ break;
+ case 0x14:
+ scan_cnt[1] = command[2];
+ break;
+ case 0x17:
+ moder = command[2] | 0xc0;
+ break;
+ case 0x18:
+ case 0x19:
+ flopi[1].badtrack[BIT(command[1], 0)] = command[2];
+ break;
+ case 0x1a:
+ flopi[1].pcn = command[2];
+ break;
+ case 0x22:
+ break;
+ case 0x23: {
+ oport = command[2] & ~0xc0;
+ floppy_info &fi = flopi[BIT(command[0], 7)];
+ fi.dev->dir_w(BIT(command[2], 2));
+ fi.dev->stp_w(BIT(command[2], 1));
+ opt_cb(BIT(command[2], 5));
+ hdl_cb(BIT(command[2], 3));
+ break;
+ }
+ }
+ main_phase = PHASE_IDLE;
+ break;
+
+ default:
+ fprintf(stderr, "start command %d\n", cmd);
+ exit(1);
+ }
+}
+
+void i8271_device::command_end(floppy_info &fi, bool data_completion)
+{
+ logerror("%s: command done (%s) - %02x\n", tag(), data_completion ? "data" : "seek", rr);
+ fi.main_state = fi.sub_state = IDLE;
+ main_phase = PHASE_RESULT;
+ set_irq(true);
+}
+
+void i8271_device::recalibrate_start(floppy_info &fi)
+{
+ logerror("%s: command recalibrate\n", tag());
+ fi.main_state = RECALIBRATE;
+ fi.sub_state = SEEK_WAIT_STEP_TIME_DONE;
+ fi.dir = 1;
+ fi.counter = 255;
+ seek_continue(fi);
+}
+
+void i8271_device::seek_start(floppy_info &fi)
+{
+ logerror("%s: command seek %d\n", tag(), command[1]);
+ fi.main_state = SEEK;
+ fi.sub_state = SEEK_WAIT_STEP_TIME_DONE;
+ fi.dir = fi.pcn > command[1] ? 1 : 0;
+ seek_continue(fi);
+}
+
+void i8271_device::delay_cycles(emu_timer *tm, int cycles)
+{
+ tm->adjust(attotime::from_double(double(cycles)/cur_rate));
+}
+
+void i8271_device::seek_continue(floppy_info &fi)
+{
+ for(;;) {
+ switch(fi.sub_state) {
+ case SEEK_MOVE:
+ if(fi.dev) {
+ fi.dev->dir_w(fi.dir);
+ fi.dev->stp_w(0);
+ }
+ fi.sub_state = SEEK_WAIT_STEP_SIGNAL_TIME;
+ fi.tm->adjust(attotime::from_nsec(2500));
+ return;
+
+ case SEEK_WAIT_STEP_SIGNAL_TIME:
+ return;
+
+ case SEEK_WAIT_STEP_SIGNAL_TIME_DONE:
+ if(fi.dev)
+ fi.dev->stp_w(1);
+
+ do {
+ if(fi.pcn > command[1])
+ fi.pcn--;
+ else
+ fi.pcn++;
+ } while((fi.pcn == fi.badtrack[0]) || (fi.pcn == fi.badtrack[1]));
+ fi.sub_state = SEEK_WAIT_STEP_TIME;
+ delay_cycles(fi.tm, 500*srate);
+ return;
+
+ case SEEK_WAIT_STEP_TIME:
+ return;
+
+ case SEEK_WAIT_STEP_TIME_DONE: {
+ bool done = false;
+ switch(fi.main_state) {
+ case RECALIBRATE:
+ fi.counter--;
+ done = fi.dev && !fi.dev->trk00_r();
+ if(done)
+ fi.pcn = 0;
+ else if(!fi.counter) {
+ rr = ERR_T0NF;
+ command_end(fi, false);
+ return;
+ }
+ break;
+ case SEEK:
+ done = fi.pcn == command[1];
+ break;
+ }
+ if(done) {
+ rr = ERR_NONE;
+ command_end(fi, false);
+ return;
+ }
+ fi.sub_state = SEEK_MOVE;
+ break;
+ }
+ }
+ }
+}
+
+void i8271_device::read_data_start(floppy_info &fi)
+{
+ fi.main_state = READ_DATA;
+ fi.sub_state = HEAD_LOAD_DONE;
+
+ logerror("%s: command read%s data%s cmd=%02x crn=(%d, %d, %d) len=%02x rate=%d\n",
+ tag(),
+ command[0] & 0x04 ? " deleted" : "",
+ command[0] & 0x01 ? " multi" : "",
+ command[0],
+ command[1],
+ command[2],
+ calc_sector_size(command[3] >> 5),
+ command[3] & 0x1f,
+ cur_rate);
+
+ rr = ERR_NONE;
+ fi.ready = get_ready(BIT(command[0], 7));
+
+ if(!fi.ready) {
+ rr = ERR_NR;
+ fi.sub_state = COMMAND_DONE;
+ read_data_continue(fi);
+ return;
+ }
+
+ read_data_continue(fi);
+}
+
+void i8271_device::scan_start(floppy_info &fi)
+{
+ fi.main_state = SCAN_DATA;
+ fi.sub_state = HEAD_LOAD_DONE;
+
+ logerror("%s: command scan%s data%s cmd=%02x crn=(%d, %d, %d) len=%02x rate=%d\n",
+ tag(),
+ command[0] & 0x04 ? " deleted" : "",
+ command[0] & 0x01 ? " multi" : "",
+ command[0],
+ command[1],
+ command[2],
+ calc_sector_size(command[3] >> 5),
+ command[3] & 0x1f,
+ cur_rate);
+
+ rr = ERR_NONE;
+ scan_done = false;
+ scan_len = 0;
+ scan_match = true;
+ fi.ready = get_ready(BIT(command[0], 7));
+
+ if(!fi.ready) {
+ rr = ERR_NR;
+ fi.sub_state = COMMAND_DONE;
+ read_data_continue(fi);
+ return;
+ }
+ read_data_continue(fi);
+}
+
+void i8271_device::verify_data_start(floppy_info &fi)
+{
+ fi.main_state = VERIFY_DATA;
+ fi.sub_state = HEAD_LOAD_DONE;
+
+ logerror("%s: command verify%s data%s cmd=%02x crn=(%d, %d, %d) len=%02x rate=%d\n",
+ tag(),
+ command[0] & 0x04 ? " deleted" : "",
+ command[0] & 0x01 ? " multi" : "",
+ command[0],
+ command[1],
+ command[2],
+ calc_sector_size(command[3] >> 5),
+ command[3] & 0x1f,
+ cur_rate);
+
+ rr = ERR_NONE;
+ fi.ready = get_ready(BIT(command[0], 7));
+
+ if(!fi.ready) {
+ rr = ERR_NR;
+ fi.sub_state = COMMAND_DONE;
+ read_data_continue(fi);
+ return;
+ }
+ read_data_continue(fi);
+}
+
+void i8271_device::read_data_continue(floppy_info &fi)
+{
+ for(;;) {
+ switch(fi.sub_state) {
+ case HEAD_LOAD_DONE:
+ if(fi.pcn == command[1]) {
+ fi.sub_state = SEEK_DONE;
+ break;
+ }
+ if(fi.dev) {
+ fi.dev->dir_w(fi.pcn > command[1] ? 1 : 0);
+ fi.dev->stp_w(0);
+ }
+ fi.sub_state = SEEK_WAIT_STEP_SIGNAL_TIME;
+ fi.tm->adjust(attotime::from_nsec(2500));
+ return;
+
+ case SEEK_WAIT_STEP_SIGNAL_TIME:
+ return;
+
+ case SEEK_WAIT_STEP_SIGNAL_TIME_DONE:
+ if(fi.dev)
+ fi.dev->stp_w(1);
+
+ fi.sub_state = SEEK_WAIT_STEP_TIME;
+ delay_cycles(fi.tm, 500*srate);
+ return;
+
+ case SEEK_WAIT_STEP_TIME:
+ return;
+
+ case SEEK_WAIT_STEP_TIME_DONE:
+ do {
+ if(fi.pcn > command[1])
+ fi.pcn--;
+ else
+ fi.pcn++;
+ } while((fi.pcn == fi.badtrack[0]) || (fi.pcn == fi.badtrack[1]));
+ fi.sub_state = HEAD_LOAD_DONE;
+ break;
+
+ case SEEK_DONE:
+ fi.counter = 0;
+ fi.sub_state = SCAN_ID;
+ live_start(fi, SEARCH_ADDRESS_MARK_HEADER);
+ return;
+
+ case SCAN_ID:
+ if(cur_live.crc) {
+ rr = ERR_ICRC;
+ fi.sub_state = COMMAND_DONE;
+ break;
+ }
+ if(!sector_matches()) {
+ if(cur_live.idbuf[0] != command[1]) {
+ rr = ERR_NF;
+ fi.sub_state = COMMAND_DONE;
+ break;
+ }
+ live_start(fi, SEARCH_ADDRESS_MARK_HEADER);
+ return;
+ }
+ logerror("%s: reading sector %02x %02x %02x %02x\n",
+ tag(),
+ cur_live.idbuf[0],
+ cur_live.idbuf[1],
+ cur_live.idbuf[2],
+ cur_live.idbuf[3]);
+ sector_size = calc_sector_size(cur_live.idbuf[3]);
+ fi.sub_state = SECTOR_READ;
+ live_start(fi, SEARCH_ADDRESS_MARK_DATA);
+ return;
+
+ case SCAN_ID_FAILED:
+ rr = ERR_NF;
+ fi.sub_state = COMMAND_DONE;
+ break;
+
+ case SECTOR_READ: {
+ if(cur_live.crc) {
+ rr = ERR_DCRC;
+ fi.sub_state = COMMAND_DONE;
+ break;
+ }
+ bool done = rr || (!(command[0] & 1) && (fi.main_state != SCAN_DATA));
+ if(!done)
+ {
+ command[3] = (command[3] & 0xe0) | ((command[3] & 0x1f) - 1);
+ if(command[3] & 0x1f)
+ command[2]++;
+ else
+ done = true;
+ }
+ if(!done) {
+ fi.sub_state = SEEK_DONE;
+ break;
+ }
+ fi.sub_state = COMMAND_DONE;
+ break;
+ }
+
+ case COMMAND_DONE:
+ command_end(fi, true);
+ return;
+
+ default:
+ logerror("%s: read sector unknown sub-state %d\n", ttsn().c_str(), fi.sub_state);
+ return;
+ }
+ }
+}
+
+void i8271_device::write_data_start(floppy_info &fi)
+{
+ fi.main_state = WRITE_DATA;
+ fi.sub_state = HEAD_LOAD_DONE;
+ logerror("%s: command write%s data%s cmd=%02x crn=(%d, %d, %d) len=%02x rate=%d\n",
+ tag(),
+ command[0] & 0x04 ? " deleted" : "",
+ command[0] & 0x01 ? " multi" : "",
+ command[0],
+ command[1],
+ command[2],
+ calc_sector_size(command[3] >> 5),
+ command[3] & 0x1f,
+ cur_rate);
+
+ rr = ERR_NONE;
+ fi.ready = get_ready(BIT(command[0], 7));
+
+ if(!fi.ready) {
+ rr = ERR_NR;
+ fi.sub_state = COMMAND_DONE;
+ write_data_continue(fi);
+ return;
+ }
+
+ write_data_continue(fi);
+}
+
+void i8271_device::write_data_continue(floppy_info &fi)
+{
+ for(;;) {
+ switch(fi.sub_state) {
+ case HEAD_LOAD_DONE:
+ if(fi.pcn == command[1]) {
+ fi.sub_state = SEEK_DONE;
+ break;
+ }
+ if(fi.dev) {
+ fi.dev->dir_w(fi.pcn > command[1] ? 1 : 0);
+ fi.dev->stp_w(0);
+ }
+ fi.sub_state = SEEK_WAIT_STEP_SIGNAL_TIME;
+ fi.tm->adjust(attotime::from_nsec(2500));
+ return;
+
+ case SEEK_WAIT_STEP_SIGNAL_TIME:
+ return;
+
+ case SEEK_WAIT_STEP_SIGNAL_TIME_DONE:
+ if(fi.dev)
+ fi.dev->stp_w(1);
+
+ fi.sub_state = SEEK_WAIT_STEP_TIME;
+ delay_cycles(fi.tm, 500*srate);
+ return;
+
+ case SEEK_WAIT_STEP_TIME:
+ return;
+
+ case SEEK_WAIT_STEP_TIME_DONE:
+ do {
+ if(fi.pcn > command[1])
+ fi.pcn--;
+ else
+ fi.pcn++;
+ } while((fi.pcn == fi.badtrack[0]) || (fi.pcn == fi.badtrack[1]));
+ fi.sub_state = HEAD_LOAD_DONE;
+ break;
+
+ case SEEK_DONE:
+ fi.counter = 0;
+ fi.sub_state = SCAN_ID;
+ live_start(fi, SEARCH_ADDRESS_MARK_HEADER);
+ return;
+
+ case SCAN_ID:
+ if(!sector_matches()) {
+ live_start(fi, SEARCH_ADDRESS_MARK_HEADER);
+ return;
+ }
+ if(cur_live.crc) {
+ rr = ERR_ICRC;
+ fi.sub_state = COMMAND_DONE;
+ break;
+ }
+ sector_size = calc_sector_size(cur_live.idbuf[3]);
+ fi.sub_state = SECTOR_WRITTEN;
+ set_drq(true);
+ live_start(fi, WRITE_SECTOR_SKIP_GAP2);
+ return;
+
+ case SCAN_ID_FAILED:
+ rr = ERR_NF;
+ fi.sub_state = COMMAND_DONE;
+ break;
+
+ case SECTOR_WRITTEN: {
+ bool done = rr || !(command[0] & 1);
+ if(!done)
+ {
+ command[3] = (command[3] & 0xe0) | ((command[3] & 0x1f) - 1);
+ if(command[3] & 0x1f)
+ command[2]++;
+ else
+ done = true;
+ }
+ if(!done) {
+ fi.sub_state = HEAD_LOAD_DONE;
+ break;
+ }
+ fi.sub_state = COMMAND_DONE;
+ break;
+ }
+
+ case COMMAND_DONE:
+ command_end(fi, true);
+ return;
+
+ default:
+ logerror("%s: write sector unknown sub-state %d\n", ttsn().c_str(), fi.sub_state);
+ return;
+ }
+ }
+}
+
+int i8271_device::calc_sector_size(UINT8 size)
+{
+ return size > 7 ? 16384 : 128 << size;
+}
+
+void i8271_device::format_track_start(floppy_info &fi)
+{
+ fi.main_state = FORMAT_TRACK;
+ fi.sub_state = HEAD_LOAD_DONE;
+
+ logerror("%s: command format track c=%02x n=%02x sc=%02x gap3=%02x gap5=%02x gap1=%02x\n",
+ tag(),
+ command[1], command[3] >> 5, command[3] & 0x1f, command[2], command[4], command[5]);
+
+ rr = ERR_NONE;
+
+ fi.ready = get_ready(BIT(command[0], 7));
+
+ if(!fi.ready) {
+ rr = ERR_NR;
+ fi.sub_state = TRACK_DONE;
+ format_track_continue(fi);
+ return;
+ }
+ sector_size = calc_sector_size(command[3] >> 5);
+
+ format_track_continue(fi);
+}
+
+void i8271_device::format_track_continue(floppy_info &fi)
+{
+ for(;;) {
+ switch(fi.sub_state) {
+ case HEAD_LOAD_DONE:
+ if(fi.pcn == command[1]) {
+ fi.sub_state = WAIT_INDEX;
+ break;
+ }
+ if(fi.dev) {
+ fi.dev->dir_w(fi.pcn > command[1] ? 1 : 0);
+ fi.dev->stp_w(0);
+ }
+ fi.sub_state = SEEK_WAIT_STEP_SIGNAL_TIME;
+ fi.tm->adjust(attotime::from_nsec(2500));
+ return;
+
+ case SEEK_WAIT_STEP_SIGNAL_TIME:
+ return;
+
+ case SEEK_WAIT_STEP_SIGNAL_TIME_DONE:
+ if(fi.dev)
+ fi.dev->stp_w(1);
+
+ fi.sub_state = SEEK_WAIT_STEP_TIME;
+ delay_cycles(fi.tm, 500*srate);
+ return;
+
+ case SEEK_WAIT_STEP_TIME:
+ return;
+
+ case SEEK_WAIT_STEP_TIME_DONE:
+ do {
+ if(fi.pcn > command[1])
+ fi.pcn--;
+ else
+ fi.pcn++;
+ } while((fi.pcn == fi.badtrack[0]) || (fi.pcn == fi.badtrack[1]));
+ fi.sub_state = HEAD_LOAD_DONE;
+ break;
+
+ case SEEK_DONE:
+ fi.sub_state = WAIT_INDEX;
+ break;
+
+ case WAIT_INDEX:
+ return;
+
+ case WAIT_INDEX_DONE:
+ logerror("%s: index found, writing track\n", tag());
+ fi.sub_state = TRACK_DONE;
+ cur_live.pll.start_writing(machine().time());
+ set_drq(true);
+ live_start(fi, WRITE_TRACK_PRE_SECTORS);
+ return;
+
+ case TRACK_DONE:
+ command_end(fi, true);
+ return;
+
+ default:
+ logerror("%s: format track unknown sub-state %d\n", ttsn().c_str(), fi.sub_state);
+ return;
+ }
+ }
+}
+
+void i8271_device::read_id_start(floppy_info &fi)
+{
+ fi.main_state = READ_ID;
+ fi.sub_state = HEAD_LOAD_DONE;
+
+ logerror("%s: command read id, rate=%d\n",
+ tag(),
+ cur_rate);
+
+ rr = ERR_NONE;
+
+ for(int i=0; i<4; i++)
+ cur_live.idbuf[i] = 0x00;
+
+ fi.ready = get_ready(command[1] & 3);
+
+ if(!fi.ready) {
+ rr = ERR_NR;
+ fi.sub_state = COMMAND_DONE;
+ read_id_continue(fi);
+ return;
+ }
+
+ read_id_continue(fi);
+}
+
+void i8271_device::read_id_continue(floppy_info &fi)
+{
+ for(;;) {
+ switch(fi.sub_state) {
+ case HEAD_LOAD_DONE:
+ if(fi.pcn == command[1]) {
+ fi.sub_state = SEEK_DONE;
+ break;
+ }
+ if(fi.dev) {
+ fi.dev->dir_w(fi.pcn > command[1] ? 1 : 0);
+ fi.dev->stp_w(0);
+ }
+ fi.sub_state = SEEK_WAIT_STEP_SIGNAL_TIME;
+ fi.tm->adjust(attotime::from_nsec(2500));
+ return;
+
+ case SEEK_WAIT_STEP_SIGNAL_TIME:
+ return;
+
+ case SEEK_WAIT_STEP_SIGNAL_TIME_DONE:
+ if(fi.dev)
+ fi.dev->stp_w(1);
+
+ fi.sub_state = SEEK_WAIT_STEP_TIME;
+ delay_cycles(fi.tm, 500*srate);
+ return;
+
+ case SEEK_WAIT_STEP_TIME:
+ return;
+
+ case SEEK_WAIT_STEP_TIME_DONE:
+ do {
+ if(fi.pcn > command[1])
+ fi.pcn--;
+ else
+ fi.pcn++;
+ } while((fi.pcn == fi.badtrack[0]) || (fi.pcn == fi.badtrack[1]));
+ fi.sub_state = HEAD_LOAD_DONE;
+ break;
+
+ case SEEK_DONE:
+ fi.counter = 0;
+ fi.sub_state = SCAN_ID;
+ live_start(fi, SEARCH_ADDRESS_MARK_HEADER);
+ return;
+
+ case SCAN_ID:
+ if(cur_live.crc) {
+ rr = ERR_ICRC;
+ fi.sub_state = COMMAND_DONE;
+ break;
+ }
+ if(!(command[3]--)) {
+ fi.counter = 0;
+ fi.sub_state = SCAN_ID;
+ }
+ else
+ fi.sub_state = COMMAND_DONE;
+ break;
+
+ case SCAN_ID_FAILED:
+ if(rr != ERR_DMA)
+ rr = ERR_NF;
+ fi.sub_state = COMMAND_DONE;
+ break;
+
+ case COMMAND_DONE:
+ command_end(fi, true);
+ return;
+
+ default:
+ logerror("%s: read id unknown sub-state %d\n", ttsn().c_str(), fi.sub_state);
+ return;
+ }
+ }
+}
+
+std::string i8271_device::tts(attotime t)
+{
+ char buf[256];
+ const char *sign = "";
+ if(t.seconds() < 0) {
+ t = attotime::zero-t;
+ sign = "-";
+ }
+ int nsec = t.attoseconds() / ATTOSECONDS_PER_NANOSECOND;
+ sprintf(buf, "%s%04d.%03d,%03d,%03d", sign, int(t.seconds()), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
+ return buf;
+}
+
+std::string i8271_device::ttsn()
+{
+ return tts(machine().time());
+}
+
+void i8271_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ live_sync();
+
+ floppy_info &fi = flopi[id];
+ switch(fi.sub_state) {
+ case SEEK_WAIT_STEP_SIGNAL_TIME:
+ fi.sub_state = SEEK_WAIT_STEP_SIGNAL_TIME_DONE;
+ break;
+ case SEEK_WAIT_STEP_TIME:
+ fi.sub_state = SEEK_WAIT_STEP_TIME_DONE;
+ break;
+ }
+
+ general_continue(fi);
+}
+
+void i8271_device::index_callback(floppy_image_device *floppy, int state)
+{
+ for(int fid=0; fid<2; fid++) {
+ floppy_info &fi = flopi[fid];
+ if(fi.dev != floppy)
+ continue;
+
+ if(fi.live)
+ live_sync();
+ fi.index = state;
+
+ if(!state) {
+ general_continue(fi);
+ continue;
+ }
+
+ switch(fi.sub_state) {
+ case IDLE:
+ case SEEK_MOVE:
+ case SEEK_WAIT_STEP_SIGNAL_TIME:
+ case SEEK_WAIT_STEP_SIGNAL_TIME_DONE:
+ case SEEK_WAIT_STEP_TIME:
+ case SEEK_WAIT_STEP_TIME_DONE:
+ case HEAD_LOAD_DONE:
+ case SCAN_ID_FAILED:
+ case SECTOR_READ:
+ break;
+
+ case WAIT_INDEX:
+ fi.sub_state = WAIT_INDEX_DONE;
+ break;
+
+ case SCAN_ID:
+ fi.counter++;
+ if(fi.counter == 2) {
+ fi.sub_state = SCAN_ID_FAILED;
+ live_abort();
+ }
+ break;
+
+ case TRACK_DONE:
+ live_abort();
+ break;
+
+ default:
+ logerror("%s: Index pulse on unknown sub-state %d\n", ttsn().c_str(), fi.sub_state);
+ break;
+ }
+
+ general_continue(fi);
+ }
+}
+
+
+void i8271_device::general_continue(floppy_info &fi)
+{
+ if(fi.live && cur_live.state != IDLE) {
+ live_run();
+ if(cur_live.state != IDLE)
+ return;
+ }
+
+ switch(fi.main_state) {
+ case IDLE:
+ break;
+
+ case RECALIBRATE:
+ case SEEK:
+ seek_continue(fi);
+ break;
+
+ case READ_DATA:
+ case SCAN_DATA:
+ case VERIFY_DATA:
+ read_data_continue(fi);
+ break;
+
+ case WRITE_DATA:
+ write_data_continue(fi);
+ break;
+
+ case FORMAT_TRACK:
+ format_track_continue(fi);
+ break;
+
+ case READ_ID:
+ read_id_continue(fi);
+ break;
+
+ default:
+ logerror("%s: general_continue on unknown main-state %d\n", ttsn().c_str(), fi.main_state);
+ break;
+ }
+}
+
+bool i8271_device::read_one_bit(const attotime &limit)
+{
+ int bit = cur_live.pll.get_next_bit(cur_live.tm, cur_live.fi->dev, limit);
+ if(bit < 0)
+ return true;
+ cur_live.shift_reg = (cur_live.shift_reg << 1) | bit;
+ cur_live.bit_counter++;
+ if(cur_live.data_separator_phase) {
+ cur_live.data_reg = (cur_live.data_reg << 1) | bit;
+ if((cur_live.crc ^ (bit ? 0x8000 : 0x0000)) & 0x8000)
+ cur_live.crc = (cur_live.crc << 1) ^ 0x1021;
+ else
+ cur_live.crc = cur_live.crc << 1;
+ }
+ cur_live.data_separator_phase = !cur_live.data_separator_phase;
+ return false;
+}
+
+bool i8271_device::write_one_bit(const attotime &limit)
+{
+ bool bit = cur_live.shift_reg & 0x8000;
+ if(cur_live.pll.write_next_bit(bit, cur_live.tm, cur_live.fi->dev, limit))
+ return true;
+ if(cur_live.bit_counter & 1) {
+ if((cur_live.crc ^ (bit ? 0x8000 : 0x0000)) & 0x8000)
+ cur_live.crc = (cur_live.crc << 1) ^ 0x1021;
+ else
+ cur_live.crc = cur_live.crc << 1;
+ }
+ cur_live.shift_reg = cur_live.shift_reg << 1;
+ cur_live.bit_counter--;
+ return false;
+}
+
+void i8271_device::live_write_raw(UINT16 raw)
+{
+ // logerror("write %04x %04x\n", raw, cur_live.crc);
+ cur_live.shift_reg = raw;
+ cur_live.data_bit_context = raw & 1;
+}
+
+void i8271_device::live_write_fm(UINT8 fm)
+{
+ UINT16 raw = 0xaaaa;
+ for(int i=0; i<8; i++)
+ if(fm & (0x80 >> i))
+ raw |= 0x4000 >> (2*i);
+ cur_live.data_reg = fm;
+ cur_live.shift_reg = raw;
+ cur_live.data_bit_context = fm & 1;
+ // logerror("write %02x %04x %04x\n", fm, cur_live.crc, raw);
+}
+
+bool i8271_device::sector_matches() const
+{
+ if(0)
+ logerror("%s: matching %02x %02x %02x - %02x %02x %02x\n", tag(),
+ cur_live.idbuf[0], cur_live.idbuf[2], cur_live.idbuf[3],
+ command[1], command[2], command[3] >> 5);
+ return
+ cur_live.idbuf[0] == command[1] &&
+ cur_live.idbuf[2] == command[2] &&
+ cur_live.idbuf[3] == (command[3] >> 5);
+}
diff --git a/src/devices/machine/i8271.h b/src/devices/machine/i8271.h
new file mode 100644
index 00000000000..d3400e95adf
--- /dev/null
+++ b/src/devices/machine/i8271.h
@@ -0,0 +1,296 @@
+// license:BSD-3-Clause
+// copyright-holders:Carl,Olivier Galibert
+#ifndef I8271N_H_
+#define I8271N_H_
+
+#include "emu.h"
+#include "imagedev/floppy.h"
+#include "fdc_pll.h"
+
+#define MCFG_I8271_IRQ_CALLBACK(_write) \
+ devcb = &i8271_device::set_intrq_wr_callback(*device, DEVCB_##_write);
+
+#define MCFG_I8271_DRQ_CALLBACK(_write) \
+ devcb = &i8271_device::set_drq_wr_callback(*device, DEVCB_##_write);
+
+#define MCFG_I8271_HDL_CALLBACK(_write) \
+ devcb = &i8271_device::set_hdl_wr_callback(*device, DEVCB_##_write);
+
+#define MCFG_I8271_OPT_CALLBACK(_write) \
+ devcb = &i8271_device::set_opt_wr_callback(*device, DEVCB_##_write);
+
+/***************************************************************************
+ MACROS
+***************************************************************************/
+
+class i8271_device : public device_t
+{
+public:
+ i8271_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ ~i8271_device() {}
+
+ template<class _Object> static devcb_base &set_intrq_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).intrq_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).drq_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_hdl_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).hdl_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_opt_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).opt_cb.set_callback(object); }
+
+ DECLARE_READ8_MEMBER (sr_r);
+ DECLARE_READ8_MEMBER (rr_r);
+ DECLARE_WRITE8_MEMBER(reset_w) { if(data == 1) soft_reset(); }
+ DECLARE_WRITE8_MEMBER(cmd_w);
+ DECLARE_WRITE8_MEMBER(param_w);
+ DECLARE_READ8_MEMBER (data_r);
+ DECLARE_WRITE8_MEMBER(data_w);
+ DECLARE_ADDRESS_MAP(map, 8);
+
+ void ready_w(bool val);
+
+ void set_rate(int rate); // rate in bps, to be used when the fdc is externally frequency-controlled
+
+ void set_ready_line_connected(bool ready);
+ void set_select_lines_connected(bool select);
+ void set_floppy(floppy_image_device *image);
+ void soft_reset();
+
+protected:
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+private:
+ enum {
+ PHASE_IDLE, PHASE_CMD, PHASE_EXEC, PHASE_RESULT
+ };
+
+ enum {
+ RR_DEL = 0x20,
+ RR_CT = 0x18,
+ RR_CC = 0x06,
+
+ SR_BSY = 0x80,
+ SR_CF = 0x40,
+ SR_PF = 0x20,
+ SR_RF = 0x10,
+ SR_IRQ = 0x08,
+ SR_DRQ = 0x04
+ };
+
+ enum {
+ ERR_NONE = 0x00,
+ ERR_SMEQ = 0x02,
+ ERR_SMNE = 0x04,
+ ERR_CLK = 0x08,
+ ERR_DMA = 0x0a,
+ ERR_ICRC = 0x0c,
+ ERR_DCRC = 0x0e,
+ ERR_NR = 0x10,
+ ERR_WP = 0x12,
+ ERR_T0NF = 0x14,
+ ERR_WF = 0x16,
+ ERR_NF = 0x18
+ };
+
+ enum {
+ // General "doing nothing" state
+ IDLE,
+
+ // Main states
+ RECALIBRATE,
+ SEEK,
+ READ_DATA,
+ WRITE_DATA,
+ FORMAT_TRACK,
+ READ_ID,
+ SCAN_DATA,
+ VERIFY_DATA,
+
+ // Sub-states
+ COMMAND_DONE,
+
+ SEEK_MOVE,
+ SEEK_WAIT_STEP_SIGNAL_TIME,
+ SEEK_WAIT_STEP_SIGNAL_TIME_DONE,
+ SEEK_WAIT_STEP_TIME,
+ SEEK_WAIT_STEP_TIME_DONE,
+ SEEK_DONE,
+
+ HEAD_LOAD_DONE,
+
+ WAIT_INDEX,
+ WAIT_INDEX_DONE,
+
+ SCAN_ID,
+ SCAN_ID_FAILED,
+
+ SECTOR_READ,
+ SECTOR_WRITTEN,
+ TC_DONE,
+
+ TRACK_DONE,
+
+ // Live states
+ SEARCH_ADDRESS_MARK_HEADER,
+ READ_ID_BLOCK,
+ SEARCH_ADDRESS_MARK_DATA,
+ SEARCH_ADDRESS_MARK_DATA_FAILED,
+ READ_SECTOR_DATA,
+ READ_SECTOR_DATA_BYTE,
+ SCAN_SECTOR_DATA_BYTE,
+ VERIFY_SECTOR_DATA_BYTE,
+
+ WRITE_SECTOR_SKIP_GAP2,
+ WRITE_SECTOR_SKIP_GAP2_BYTE,
+ WRITE_SECTOR_DATA,
+ WRITE_SECTOR_DATA_BYTE,
+
+ WRITE_TRACK_PRE_SECTORS,
+ WRITE_TRACK_PRE_SECTORS_BYTE,
+
+ WRITE_TRACK_SECTOR,
+ WRITE_TRACK_SECTOR_BYTE,
+
+ WRITE_TRACK_POST_SECTORS,
+ WRITE_TRACK_POST_SECTORS_BYTE
+ };
+
+ struct pll_t {
+ attotime ctime, period, min_period, max_period, period_adjust_base, phase_adjust;
+
+ attotime write_start_time;
+ attotime write_buffer[32];
+ int write_position;
+ int freq_hist;
+
+ void set_clock(const attotime &period);
+ void reset(const attotime &when);
+ int get_next_bit(attotime &tm, floppy_image_device *floppy, const attotime &limit);
+ bool write_next_bit(bool bit, attotime &tm, floppy_image_device *floppy, const attotime &limit);
+ void start_writing(const attotime &tm);
+ void commit(floppy_image_device *floppy, const attotime &tm);
+ void stop_writing(floppy_image_device *floppy, const attotime &tm);
+ };
+
+ struct floppy_info {
+ enum { IRQ_NONE, IRQ_POLLED, IRQ_SEEK, IRQ_DONE };
+ emu_timer *tm;
+ floppy_image_device *dev;
+ int id;
+ int main_state, sub_state;
+ int dir, counter;
+ UINT8 pcn, badtrack[2];
+ bool live, index, ready;
+ };
+
+ struct live_info {
+ enum { PT_NONE, PT_CRC_1, PT_CRC_2 };
+
+ attotime tm;
+ int state, next_state;
+ floppy_info *fi;
+ UINT16 shift_reg;
+ UINT16 crc;
+ int bit_counter, byte_counter, previous_type;
+ bool data_separator_phase, data_bit_context;
+ UINT8 data_reg;
+ UINT8 idbuf[6];
+ fdc_pll_t pll;
+ };
+
+ bool ready_connected, select_connected;
+
+ bool external_ready;
+
+ int mode;
+ int main_phase;
+
+ live_info cur_live, checkpoint_live;
+ devcb_write_line intrq_cb, drq_cb, hdl_cb, opt_cb;
+ bool irq, drq, scan_done, scan_match;
+ floppy_info flopi[2];
+
+ int command_pos, sectors_read, scan_len;
+ UINT8 command[6], dma_data, oport;
+ UINT8 rr, scan_sec, moder;
+ UINT8 precomp, perpmode, scan_cnt[2];
+ UINT8 srate, hset, icnt, hload;
+ int sector_size;
+ int cur_rate;
+
+ static std::string tts(attotime t);
+ std::string ttsn();
+
+ enum {
+ C_FORMAT_TRACK,
+ C_READ_DATA_SINGLE,
+ C_READ_DATA_MULTI,
+ C_VERIFY_DATA_SINGLE,
+ C_VERIFY_DATA_MULTI,
+ C_WRITE_DATA_SINGLE,
+ C_WRITE_DATA_MULTI,
+ C_READ_ID,
+ C_SEEK,
+ C_READ_DRIVE_STATUS,
+ C_SPECIFY,
+ C_SCAN,
+ C_WRITE_SPECIAL_REGISTER,
+ C_READ_SPECIAL_REGISTER,
+
+ C_INVALID,
+ C_INCOMPLETE
+ };
+
+ void delay_cycles(emu_timer *tm, int cycles);
+ void set_drq(bool state);
+ void set_irq(bool state);
+ bool get_ready(int fid);
+
+ void enable_transfer();
+ void disable_transfer();
+ int calc_sector_size(UINT8 size);
+
+ int check_command();
+ void start_command(int cmd);
+ void command_end(floppy_info &fi, bool data_completion);
+
+ void recalibrate_start(floppy_info &fi);
+ void seek_start(floppy_info &fi);
+ void seek_continue(floppy_info &fi);
+
+ void read_data_start(floppy_info &fi);
+ void read_data_continue(floppy_info &fi);
+
+ void write_data_start(floppy_info &fi);
+ void write_data_continue(floppy_info &fi);
+
+ void format_track_start(floppy_info &fi);
+ void format_track_continue(floppy_info &fi);
+
+ void read_id_start(floppy_info &fi);
+ void read_id_continue(floppy_info &fi);
+
+ void scan_start(floppy_info &fi);
+ void verify_data_start(floppy_info &fi);
+
+ void general_continue(floppy_info &fi);
+ void index_callback(floppy_image_device *floppy, int state);
+ bool sector_matches() const;
+
+ void live_start(floppy_info &fi, int live_state);
+ void live_abort();
+ void checkpoint();
+ void rollback();
+ void live_delay(int state);
+ void live_sync();
+ void live_run(attotime limit = attotime::never);
+ void live_write_raw(UINT16 raw);
+ void live_write_fm(UINT8 fm);
+
+ bool read_one_bit(const attotime &limit);
+ bool write_one_bit(const attotime &limit);
+ bool set_output(UINT8 data);
+ bool get_input(UINT8 *data);
+};
+
+extern const device_type I8271;
+
+#endif
diff --git a/src/emu/machine/i8279.c b/src/devices/machine/i8279.c
index abd4fb3beb1..abd4fb3beb1 100644
--- a/src/emu/machine/i8279.c
+++ b/src/devices/machine/i8279.c
diff --git a/src/emu/machine/i8279.h b/src/devices/machine/i8279.h
index 42a77d7634f..42a77d7634f 100644
--- a/src/emu/machine/i8279.h
+++ b/src/devices/machine/i8279.h
diff --git a/src/emu/machine/i82875p.c b/src/devices/machine/i82875p.c
index 58f8b3264c9..58f8b3264c9 100644
--- a/src/emu/machine/i82875p.c
+++ b/src/devices/machine/i82875p.c
diff --git a/src/emu/machine/i82875p.h b/src/devices/machine/i82875p.h
index 8ab4a597eb2..8ab4a597eb2 100644
--- a/src/emu/machine/i82875p.h
+++ b/src/devices/machine/i82875p.h
diff --git a/src/emu/machine/i8355.c b/src/devices/machine/i8355.c
index d417bd1e3c3..d417bd1e3c3 100644
--- a/src/emu/machine/i8355.c
+++ b/src/devices/machine/i8355.c
diff --git a/src/emu/machine/i8355.h b/src/devices/machine/i8355.h
index 33d68d0fa57..33d68d0fa57 100644
--- a/src/emu/machine/i8355.h
+++ b/src/devices/machine/i8355.h
diff --git a/src/emu/machine/idectrl.c b/src/devices/machine/idectrl.c
index 403364d57c1..bebfcc09d0d 100644
--- a/src/emu/machine/idectrl.c
+++ b/src/devices/machine/idectrl.c
@@ -90,7 +90,7 @@ WRITE16_MEMBER( ide_controller_device::write_cs1 )
const device_type IDE_CONTROLLER_32 = &device_creator<ide_controller_32_device>;
ide_controller_32_device::ide_controller_32_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
- ide_controller_device(mconfig, IDE_CONTROLLER, "IDE Controller (32 bit)", tag, owner, clock, "ide_controller", __FILE__)
+ ide_controller_device(mconfig, IDE_CONTROLLER, "IDE Controller (32 bit)", tag, owner, clock, "ide_controller32", __FILE__)
{
}
@@ -274,11 +274,11 @@ WRITE32_MEMBER( bus_master_ide_controller_device::bmdma_w )
case 0:
if( ACCESSING_BITS_0_7 )
{
- /* command register */
+ /* Bus Master IDE Command register */
UINT8 old = m_bus_master_command;
UINT8 val = data & 0xff;
- /* save the read/write bit and the start/stop bit */
+ /* save the "Read or Write Control" bit 3 and the "Start/Stop Bus Master" bit 0 */
m_bus_master_command = (old & 0xf6) | (val & 0x09);
if ((old ^ m_bus_master_command) & 1)
@@ -306,7 +306,7 @@ WRITE32_MEMBER( bus_master_ide_controller_device::bmdma_w )
if( ACCESSING_BITS_16_23 )
{
- /* status register */
+ /* Bus Master IDE Status register */
UINT8 old = m_bus_master_status;
UINT8 val = data >> 16;
@@ -334,7 +334,7 @@ void bus_master_ide_controller_device::execute_dma()
while (m_dmarq && (m_bus_master_status & IDE_BUSMASTER_STATUS_ACTIVE))
{
- /* if we're out of space, grab the next descriptor */
+ /* if we're out of space, grab the next Physical Region Descriptor */
if (m_dma_bytes_left == 0)
{
/* fetch the address */
diff --git a/src/emu/machine/idectrl.h b/src/devices/machine/idectrl.h
index d31490e2385..d31490e2385 100644
--- a/src/emu/machine/idectrl.h
+++ b/src/devices/machine/idectrl.h
diff --git a/src/emu/machine/idehd.c b/src/devices/machine/idehd.c
index aa5517a1a3e..afc6de0c3de 100644
--- a/src/emu/machine/idehd.c
+++ b/src/devices/machine/idehd.c
@@ -149,7 +149,7 @@ void ata_mass_storage_device::ide_build_identify_device()
m_identify_buffer[85] = 0x00; /* 85: command set/feature enabled */
m_identify_buffer[86] = 0x00; /* 86: command set/feature enabled */
m_identify_buffer[87] = 0x00; /* 87: command set/feature default */
- m_identify_buffer[88] = 0x00; /* 88: additional DMA modes */
+ m_identify_buffer[88] = 0x00; /* 88: additional DMA modes (ultra dma) */
m_identify_buffer[89] = 0x00; /* 89: time required for security erase unit completion */
m_identify_buffer[90] = 0x00; /* 90: time required for enhanced security erase unit completion */
m_identify_buffer[91] = 0x00; /* 91: current advanced power management value */
diff --git a/src/emu/machine/idehd.h b/src/devices/machine/idehd.h
index beacb0a25c4..beacb0a25c4 100644
--- a/src/emu/machine/idehd.h
+++ b/src/devices/machine/idehd.h
diff --git a/src/emu/machine/im6402.c b/src/devices/machine/im6402.c
index f713a048517..f713a048517 100644
--- a/src/emu/machine/im6402.c
+++ b/src/devices/machine/im6402.c
diff --git a/src/emu/machine/im6402.h b/src/devices/machine/im6402.h
index 46ac592b7ac..46ac592b7ac 100644
--- a/src/emu/machine/im6402.h
+++ b/src/devices/machine/im6402.h
diff --git a/src/emu/machine/ins8154.c b/src/devices/machine/ins8154.c
index 1c36af845be..1c36af845be 100644
--- a/src/emu/machine/ins8154.c
+++ b/src/devices/machine/ins8154.c
diff --git a/src/emu/machine/ins8154.h b/src/devices/machine/ins8154.h
index 300b9763a9b..300b9763a9b 100644
--- a/src/emu/machine/ins8154.h
+++ b/src/devices/machine/ins8154.h
diff --git a/src/emu/machine/ins8250.c b/src/devices/machine/ins8250.c
index bbd0fee1584..bbd0fee1584 100644
--- a/src/emu/machine/ins8250.c
+++ b/src/devices/machine/ins8250.c
diff --git a/src/emu/machine/ins8250.h b/src/devices/machine/ins8250.h
index 9415c2b70ce..9415c2b70ce 100644
--- a/src/emu/machine/ins8250.h
+++ b/src/devices/machine/ins8250.h
diff --git a/src/emu/machine/intelfsh.c b/src/devices/machine/intelfsh.c
index fa5a6abfdbd..6f841692bea 100644
--- a/src/emu/machine/intelfsh.c
+++ b/src/devices/machine/intelfsh.c
@@ -93,6 +93,7 @@ const device_type FUJITSU_29DL16X = &device_creator<fujitsu_29dl16x_device>;
const device_type INTEL_E28F400B = &device_creator<intel_e28f400b_device>;
const device_type MACRONIX_29L001MC = &device_creator<macronix_29l001mc_device>;
const device_type MACRONIX_29LV160TMC = &device_creator<macronix_29lv160tmc_device>;
+const device_type TMS_29F040 = &device_creator<tms_29f040_device>;
const device_type PANASONIC_MN63F805MNP = &device_creator<panasonic_mn63f805mnp_device>;
const device_type SANYO_LE26FV10N1TS = &device_creator<sanyo_le26fv10n1ts_device>;
@@ -166,6 +167,7 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
m_type(variant),
m_size(0),
m_bits(8),
+ m_addrmask(0),
m_device_id(0),
m_maker_id(0),
m_sector_is_4k(false),
@@ -215,6 +217,7 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
case FLASH_AMD_29F080:
m_bits = 8;
m_size = 0x100000;
+ m_addrmask = 0x7ff;
m_maker_id = MFG_AMD;
m_device_id = 0xd5;
map = ADDRESS_MAP_NAME( memory_map8_8Mb );
@@ -369,6 +372,14 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
m_device_id = 0x04;
map = ADDRESS_MAP_NAME( memory_map8_4Mb );
break;
+ case FLASH_TMS_29F040:
+ m_bits = 8;
+ m_addrmask = 0x7fff;
+ m_size = 0x80000;
+ m_maker_id = MFG_AMD;
+ m_device_id = 0xa4;
+ map = ADDRESS_MAP_NAME( memory_map8_4Mb );
+ break;
}
int addrbits;
@@ -414,10 +425,10 @@ amd_29f080_device::amd_29f080_device(const machine_config &mconfig, const char *
: intelfsh8_device(mconfig, AMD_29F080, "AMD 29F080 Flash", tag, owner, clock, FLASH_AMD_29F080, "amd_29f080", __FILE__) { }
amd_29f400t_device::amd_29f400t_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : intelfsh8_device(mconfig, AMD_29F080, "AMD 29F400 Flash", tag, owner, clock, FLASH_AMD_29F400T, "amd_29f400t", __FILE__) { }
+ : intelfsh8_device(mconfig, AMD_29F400T, "AMD 29F400 Flash", tag, owner, clock, FLASH_AMD_29F400T, "amd_29f400t", __FILE__) { }
amd_29f800t_device::amd_29f800t_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : intelfsh8_device(mconfig, AMD_29F080, "AMD 29F800 Flash", tag, owner, clock, FLASH_AMD_29F080, "amd_29f800t", __FILE__) { }
+ : intelfsh8_device(mconfig, AMD_29F800T, "AMD 29F800 Flash", tag, owner, clock, FLASH_AMD_29F800T, "amd_29f800t", __FILE__) { }
amd_29lv200t_device::amd_29lv200t_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: intelfsh8_device(mconfig, AMD_29LV200T, "AMD 29LV200T Flash", tag, owner, clock, FLASH_AMD_29LV200T, "amd_29lv200t", __FILE__) { }
@@ -465,6 +476,10 @@ intel_28f320j5_device::intel_28f320j5_device(const machine_config &mconfig, cons
sst_39vf400a_device::sst_39vf400a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: intelfsh16_device(mconfig, SST_39VF400A, "SST 39VF400A Flash", tag, owner, clock, FLASH_SST_39VF400A, "sst_39vf400a", __FILE__) { }
+
+tms_29f040_device::tms_29f040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : intelfsh8_device(mconfig, TMS_29F040, "Texas Instruments 29F040 Flash", tag, owner, clock, FLASH_TMS_29F040, "tms_29f040", __FILE__) { }
+
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
@@ -761,7 +776,8 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
{
m_flash_mode = FM_READAMDID2;
}
- else if( ( address & 0x7ff ) == 0x2aa && ( data & 0xff ) == 0x55 && m_type == FLASH_AMD_29F080 )
+ // for AMD 29F080 address bits A11-A19 don't care, for TMS 29F040 address bits A15-A18 don't care
+ else if( ( address & m_addrmask ) == ( 0xaaaa & m_addrmask ) && ( data & 0xff ) == 0x55 && m_addrmask )
{
m_flash_mode = FM_READAMDID2;
}
@@ -833,20 +849,20 @@ void intelfsh_device::write_full(UINT32 address, UINT32 data)
m_flash_mode = FM_BANKSELECT;
}
- // for AMD 29F080 address bits A11-A19 don't care
- else if(( address & 0x7ff ) == 0x555 && ( data & 0xff ) == 0x80 && m_type == FLASH_AMD_29F080 )
+ // for AMD 29F080 address bits A11-A19 don't care, for TMS 29F040 address bits A15-A18 don't care
+ else if(( address & m_addrmask ) == ( 0x5555 & m_addrmask ) && ( data & 0xff ) == 0x80 && m_addrmask )
{
m_flash_mode = FM_ERASEAMD1;
}
- else if(( address & 0x7ff ) == 0x555 && ( data & 0xff ) == 0x90 && m_type == FLASH_AMD_29F080 )
+ else if(( address & m_addrmask ) == ( 0x5555 & m_addrmask ) && ( data & 0xff ) == 0x90 && m_addrmask )
{
m_flash_mode = FM_READAMDID3;
}
- else if(( address & 0x7ff ) == 0x555 && ( data & 0xff ) == 0xa0 && m_type == FLASH_AMD_29F080 )
+ else if(( address & m_addrmask ) == ( 0x5555 & m_addrmask ) && ( data & 0xff ) == 0xa0 && m_addrmask )
{
m_flash_mode = FM_BYTEPROGRAM;
}
- else if(( address & 0x7ff ) == 0x555 && ( data & 0xff ) == 0xf0 && m_type == FLASH_AMD_29F080 )
+ else if(( address & m_addrmask ) == ( 0x5555 & m_addrmask ) && ( data & 0xff ) == 0xf0 && m_addrmask )
{
m_flash_mode = FM_NORMAL;
}
diff --git a/src/emu/machine/intelfsh.h b/src/devices/machine/intelfsh.h
index 1dbaab76fea..5e4b86f10d2 100644
--- a/src/emu/machine/intelfsh.h
+++ b/src/devices/machine/intelfsh.h
@@ -90,6 +90,9 @@
#define MCFG_SST_39VF400A_ADD(_tag) \
MCFG_DEVICE_ADD(_tag, SST_39VF400A, 0)
+#define MCFG_TMS_29F040_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, TMS_29F040, 0)
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -126,6 +129,7 @@ public:
FLASH_SANYO_LE26FV10N1TS,
FLASH_SST_28SF040,
FLASH_SST_39VF020,
+ FLASH_TMS_29F040,
// 16-bit variants
FLASH_SHARP_LH28F400 = 0x1000,
@@ -163,6 +167,7 @@ protected:
UINT32 m_type;
INT32 m_size;
UINT8 m_bits;
+ UINT32 m_addrmask;
UINT16 m_device_id;
UINT8 m_maker_id;
bool m_sector_is_4k;
@@ -338,6 +343,12 @@ public:
sst_39vf020_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
};
+class tms_29f040_device : public intelfsh8_device
+{
+public:
+ tms_29f040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
// 16-bit variants
class sharp_lh28f400_device : public intelfsh16_device
{
@@ -398,6 +409,7 @@ extern const device_type FUJITSU_29DL16X;
extern const device_type INTEL_E28F400B;
extern const device_type MACRONIX_29L001MC;
extern const device_type MACRONIX_29LV160TMC;
+extern const device_type TMS_29F040;
extern const device_type PANASONIC_MN63F805MNP;
extern const device_type SANYO_LE26FV10N1TS;
diff --git a/src/emu/machine/jvsdev.c b/src/devices/machine/jvsdev.c
index 204d874ca9a..3357ce90f55 100644
--- a/src/emu/machine/jvsdev.c
+++ b/src/devices/machine/jvsdev.c
@@ -244,7 +244,7 @@ bool jvs_device::swoutputs(UINT8 id, UINT8 val)
return false;
}
-void jvs_device::handle_output(const char *tag, UINT8 id, UINT8 val)
+void jvs_device::handle_output(ioport_port *port, UINT8 id, UINT8 val)
{
UINT32 m = 1 << id;
switch(val) {
@@ -253,5 +253,8 @@ void jvs_device::handle_output(const char *tag, UINT8 id, UINT8 val)
case 2: jvs_outputs ^= m; break;
}
- machine().root_device().ioport(tag)->write_safe(jvs_outputs, m);
+ if (port)
+ {
+ port->write(jvs_outputs, m);
+ }
}
diff --git a/src/emu/machine/jvsdev.h b/src/devices/machine/jvsdev.h
index fcbb8c08926..97382ea1655 100644
--- a/src/emu/machine/jvsdev.h
+++ b/src/devices/machine/jvsdev.h
@@ -23,7 +23,7 @@ public:
protected:
UINT32 jvs_outputs;
- void handle_output(const char *tag, UINT8 id, UINT8 val);
+ void handle_output(ioport_port *port, UINT8 id, UINT8 val);
// device-level overrides
virtual void device_start();
diff --git a/src/emu/machine/jvshost.c b/src/devices/machine/jvshost.c
index 1621d691cea..1621d691cea 100644
--- a/src/emu/machine/jvshost.c
+++ b/src/devices/machine/jvshost.c
diff --git a/src/emu/machine/jvshost.h b/src/devices/machine/jvshost.h
index 872e8a774e5..872e8a774e5 100644
--- a/src/emu/machine/jvshost.h
+++ b/src/devices/machine/jvshost.h
diff --git a/src/emu/machine/k033906.c b/src/devices/machine/k033906.c
index 37ad31cff45..37ad31cff45 100644
--- a/src/emu/machine/k033906.c
+++ b/src/devices/machine/k033906.c
diff --git a/src/emu/machine/k033906.h b/src/devices/machine/k033906.h
index bec3bc1c3ac..bec3bc1c3ac 100644
--- a/src/emu/machine/k033906.h
+++ b/src/devices/machine/k033906.h
diff --git a/src/emu/machine/k053252.c b/src/devices/machine/k053252.c
index 1cea029d38d..1cea029d38d 100644
--- a/src/emu/machine/k053252.c
+++ b/src/devices/machine/k053252.c
diff --git a/src/emu/machine/k053252.h b/src/devices/machine/k053252.h
index 79bfe9fa7a4..79bfe9fa7a4 100644
--- a/src/emu/machine/k053252.h
+++ b/src/devices/machine/k053252.h
diff --git a/src/emu/machine/k056230.c b/src/devices/machine/k056230.c
index 8d750b66a8a..8d750b66a8a 100644
--- a/src/emu/machine/k056230.c
+++ b/src/devices/machine/k056230.c
diff --git a/src/emu/machine/k056230.h b/src/devices/machine/k056230.h
index d8ec4a70ebc..d8ec4a70ebc 100644
--- a/src/emu/machine/k056230.h
+++ b/src/devices/machine/k056230.h
diff --git a/src/emu/machine/kb3600.c b/src/devices/machine/kb3600.c
index f83ba9c46d8..f83ba9c46d8 100644
--- a/src/emu/machine/kb3600.c
+++ b/src/devices/machine/kb3600.c
diff --git a/src/emu/machine/kb3600.h b/src/devices/machine/kb3600.h
index 57a42c906fb..57a42c906fb 100644
--- a/src/emu/machine/kb3600.h
+++ b/src/devices/machine/kb3600.h
diff --git a/src/emu/machine/keyboard.c b/src/devices/machine/keyboard.c
index 03d538f2a3e..03d538f2a3e 100644
--- a/src/emu/machine/keyboard.c
+++ b/src/devices/machine/keyboard.c
diff --git a/src/emu/machine/keyboard.h b/src/devices/machine/keyboard.h
index 8658cf3f92f..8658cf3f92f 100644
--- a/src/emu/machine/keyboard.h
+++ b/src/devices/machine/keyboard.h
diff --git a/src/emu/machine/kr2376.c b/src/devices/machine/kr2376.c
index d818c52ce68..d818c52ce68 100644
--- a/src/emu/machine/kr2376.c
+++ b/src/devices/machine/kr2376.c
diff --git a/src/emu/machine/kr2376.h b/src/devices/machine/kr2376.h
index e282362d761..e282362d761 100644
--- a/src/emu/machine/kr2376.h
+++ b/src/devices/machine/kr2376.h
diff --git a/src/emu/machine/laserdsc.c b/src/devices/machine/laserdsc.c
index a027ac62271..a027ac62271 100644
--- a/src/emu/machine/laserdsc.c
+++ b/src/devices/machine/laserdsc.c
diff --git a/src/emu/machine/laserdsc.h b/src/devices/machine/laserdsc.h
index 55d4aeda1b3..55d4aeda1b3 100644
--- a/src/emu/machine/laserdsc.h
+++ b/src/devices/machine/laserdsc.h
diff --git a/src/emu/machine/latch.c b/src/devices/machine/latch.c
index 55aaf7dfeba..55aaf7dfeba 100644
--- a/src/emu/machine/latch.c
+++ b/src/devices/machine/latch.c
diff --git a/src/emu/machine/latch.h b/src/devices/machine/latch.h
index f184fd3a865..f184fd3a865 100644
--- a/src/emu/machine/latch.h
+++ b/src/devices/machine/latch.h
diff --git a/src/emu/machine/latch8.c b/src/devices/machine/latch8.c
index 9213f8e50c6..9213f8e50c6 100644
--- a/src/emu/machine/latch8.c
+++ b/src/devices/machine/latch8.c
diff --git a/src/emu/machine/latch8.h b/src/devices/machine/latch8.h
index 6c82bd0689d..6c82bd0689d 100644
--- a/src/emu/machine/latch8.h
+++ b/src/devices/machine/latch8.h
diff --git a/src/emu/machine/lc89510.c b/src/devices/machine/lc89510.c
index 9ad9f4cb37a..9ad9f4cb37a 100644
--- a/src/emu/machine/lc89510.c
+++ b/src/devices/machine/lc89510.c
diff --git a/src/emu/machine/lc89510.h b/src/devices/machine/lc89510.h
index 4866cb24f76..4866cb24f76 100644
--- a/src/emu/machine/lc89510.h
+++ b/src/devices/machine/lc89510.h
diff --git a/src/emu/machine/ldpr8210.c b/src/devices/machine/ldpr8210.c
index b52b3b38f4d..967dac974e7 100644
--- a/src/emu/machine/ldpr8210.c
+++ b/src/devices/machine/ldpr8210.c
@@ -249,7 +249,7 @@ void pioneer_pr8210_device::control_w(UINT8 data)
// log the deltas for debugging
if (LOG_SERIAL)
{
- int usecdiff = (int)(delta.attoseconds / ATTOSECONDS_IN_USEC(1));
+ int usecdiff = (int)(delta.attoseconds() / ATTOSECONDS_IN_USEC(1));
printf("bitdelta = %5d (%d) - accum = %04X\n", usecdiff, longpulse, m_accumulator);
}
diff --git a/src/emu/machine/ldpr8210.h b/src/devices/machine/ldpr8210.h
index 96273dcb12a..96273dcb12a 100644
--- a/src/emu/machine/ldpr8210.h
+++ b/src/devices/machine/ldpr8210.h
diff --git a/src/emu/machine/ldstub.c b/src/devices/machine/ldstub.c
index 14dd42fdc2b..14dd42fdc2b 100644
--- a/src/emu/machine/ldstub.c
+++ b/src/devices/machine/ldstub.c
diff --git a/src/emu/machine/ldstub.h b/src/devices/machine/ldstub.h
index d10cd0313ea..d10cd0313ea 100644
--- a/src/emu/machine/ldstub.h
+++ b/src/devices/machine/ldstub.h
diff --git a/src/emu/machine/ldv1000.c b/src/devices/machine/ldv1000.c
index 18c8d86fc9a..18c8d86fc9a 100644
--- a/src/emu/machine/ldv1000.c
+++ b/src/devices/machine/ldv1000.c
diff --git a/src/emu/machine/ldv1000.h b/src/devices/machine/ldv1000.h
index bb65a24515e..bb65a24515e 100644
--- a/src/emu/machine/ldv1000.h
+++ b/src/devices/machine/ldv1000.h
diff --git a/src/emu/machine/ldvp931.c b/src/devices/machine/ldvp931.c
index 0d927fed665..0d927fed665 100644
--- a/src/emu/machine/ldvp931.c
+++ b/src/devices/machine/ldvp931.c
diff --git a/src/emu/machine/ldvp931.h b/src/devices/machine/ldvp931.h
index 636f4529d6b..636f4529d6b 100644
--- a/src/emu/machine/ldvp931.h
+++ b/src/devices/machine/ldvp931.h
diff --git a/src/emu/machine/legscsi.c b/src/devices/machine/legscsi.c
index 4071ccf8c3a..4071ccf8c3a 100644
--- a/src/emu/machine/legscsi.c
+++ b/src/devices/machine/legscsi.c
diff --git a/src/emu/machine/legscsi.h b/src/devices/machine/legscsi.h
index c7382fa9ad0..c7382fa9ad0 100644
--- a/src/emu/machine/legscsi.h
+++ b/src/devices/machine/legscsi.h
diff --git a/src/emu/machine/lh5810.c b/src/devices/machine/lh5810.c
index 296a28a60ec..296a28a60ec 100644
--- a/src/emu/machine/lh5810.c
+++ b/src/devices/machine/lh5810.c
diff --git a/src/emu/machine/lh5810.h b/src/devices/machine/lh5810.h
index d78458ca172..d78458ca172 100644
--- a/src/emu/machine/lh5810.h
+++ b/src/devices/machine/lh5810.h
diff --git a/src/emu/machine/linflash.c b/src/devices/machine/linflash.c
index fe72efa921d..fe72efa921d 100644
--- a/src/emu/machine/linflash.c
+++ b/src/devices/machine/linflash.c
diff --git a/src/emu/machine/linflash.h b/src/devices/machine/linflash.h
index b4bd488d55d..b4bd488d55d 100644
--- a/src/emu/machine/linflash.h
+++ b/src/devices/machine/linflash.h
diff --git a/src/emu/machine/lpc-acpi.c b/src/devices/machine/lpc-acpi.c
index 72d066affaa..72d066affaa 100644
--- a/src/emu/machine/lpc-acpi.c
+++ b/src/devices/machine/lpc-acpi.c
diff --git a/src/emu/machine/lpc-acpi.h b/src/devices/machine/lpc-acpi.h
index 2abf019d408..2abf019d408 100644
--- a/src/emu/machine/lpc-acpi.h
+++ b/src/devices/machine/lpc-acpi.h
diff --git a/src/emu/machine/lpc-pit.c b/src/devices/machine/lpc-pit.c
index 19a07373ec5..19a07373ec5 100644
--- a/src/emu/machine/lpc-pit.c
+++ b/src/devices/machine/lpc-pit.c
diff --git a/src/emu/machine/lpc-pit.h b/src/devices/machine/lpc-pit.h
index 4a49a76c10c..4a49a76c10c 100644
--- a/src/emu/machine/lpc-pit.h
+++ b/src/devices/machine/lpc-pit.h
diff --git a/src/emu/machine/lpc-rtc.c b/src/devices/machine/lpc-rtc.c
index d92d7b515d0..d92d7b515d0 100644
--- a/src/emu/machine/lpc-rtc.c
+++ b/src/devices/machine/lpc-rtc.c
diff --git a/src/emu/machine/lpc-rtc.h b/src/devices/machine/lpc-rtc.h
index f85c6c5cd11..f85c6c5cd11 100644
--- a/src/emu/machine/lpc-rtc.h
+++ b/src/devices/machine/lpc-rtc.h
diff --git a/src/emu/machine/lpc.c b/src/devices/machine/lpc.c
index afb51435f23..afb51435f23 100644
--- a/src/emu/machine/lpc.c
+++ b/src/devices/machine/lpc.c
diff --git a/src/emu/machine/lpc.h b/src/devices/machine/lpc.h
index 6ade06d03ff..6ade06d03ff 100644
--- a/src/emu/machine/lpc.h
+++ b/src/devices/machine/lpc.h
diff --git a/src/emu/machine/lpci.c b/src/devices/machine/lpci.c
index 913dd915184..913dd915184 100644
--- a/src/emu/machine/lpci.c
+++ b/src/devices/machine/lpci.c
diff --git a/src/emu/machine/lpci.h b/src/devices/machine/lpci.h
index 8d420d28a07..8d420d28a07 100644
--- a/src/emu/machine/lpci.h
+++ b/src/devices/machine/lpci.h
diff --git a/src/emu/machine/m6m80011ap.c b/src/devices/machine/m6m80011ap.c
index 776cbcae6e7..776cbcae6e7 100644
--- a/src/emu/machine/m6m80011ap.c
+++ b/src/devices/machine/m6m80011ap.c
diff --git a/src/emu/machine/m6m80011ap.h b/src/devices/machine/m6m80011ap.h
index 196617f2339..196617f2339 100644
--- a/src/emu/machine/m6m80011ap.h
+++ b/src/devices/machine/m6m80011ap.h
diff --git a/src/emu/machine/matsucd.c b/src/devices/machine/matsucd.c
index 6c12c5950d1..6c12c5950d1 100644
--- a/src/emu/machine/matsucd.c
+++ b/src/devices/machine/matsucd.c
diff --git a/src/emu/machine/matsucd.h b/src/devices/machine/matsucd.h
index 19a456760a6..19a456760a6 100644
--- a/src/emu/machine/matsucd.h
+++ b/src/devices/machine/matsucd.h
diff --git a/src/emu/machine/mb14241.c b/src/devices/machine/mb14241.c
index 732dccf8e1d..732dccf8e1d 100644
--- a/src/emu/machine/mb14241.c
+++ b/src/devices/machine/mb14241.c
diff --git a/src/emu/machine/mb14241.h b/src/devices/machine/mb14241.h
index 68a85c583ec..68a85c583ec 100644
--- a/src/emu/machine/mb14241.h
+++ b/src/devices/machine/mb14241.h
diff --git a/src/emu/machine/mb3773.c b/src/devices/machine/mb3773.c
index b2093787338..b2093787338 100644
--- a/src/emu/machine/mb3773.c
+++ b/src/devices/machine/mb3773.c
diff --git a/src/emu/machine/mb3773.h b/src/devices/machine/mb3773.h
index 3199f545bf7..3199f545bf7 100644
--- a/src/emu/machine/mb3773.h
+++ b/src/devices/machine/mb3773.h
diff --git a/src/emu/machine/mb8421.c b/src/devices/machine/mb8421.c
index 0d3cb819a66..0d3cb819a66 100644
--- a/src/emu/machine/mb8421.c
+++ b/src/devices/machine/mb8421.c
diff --git a/src/emu/machine/mb8421.h b/src/devices/machine/mb8421.h
index 92300e45946..92300e45946 100644
--- a/src/emu/machine/mb8421.h
+++ b/src/devices/machine/mb8421.h
diff --git a/src/emu/machine/mb87078.c b/src/devices/machine/mb87078.c
index a94380456f5..a94380456f5 100644
--- a/src/emu/machine/mb87078.c
+++ b/src/devices/machine/mb87078.c
diff --git a/src/emu/machine/mb87078.h b/src/devices/machine/mb87078.h
index 15e68b83b22..15e68b83b22 100644
--- a/src/emu/machine/mb87078.h
+++ b/src/devices/machine/mb87078.h
diff --git a/src/emu/machine/mb8795.c b/src/devices/machine/mb8795.c
index 3a83f02af94..3a83f02af94 100644
--- a/src/emu/machine/mb8795.c
+++ b/src/devices/machine/mb8795.c
diff --git a/src/emu/machine/mb8795.h b/src/devices/machine/mb8795.h
index 478d9487263..478d9487263 100644
--- a/src/emu/machine/mb8795.h
+++ b/src/devices/machine/mb8795.h
diff --git a/src/emu/machine/mb89352.c b/src/devices/machine/mb89352.c
index 1b0894c2007..1b0894c2007 100644
--- a/src/emu/machine/mb89352.c
+++ b/src/devices/machine/mb89352.c
diff --git a/src/emu/machine/mb89352.h b/src/devices/machine/mb89352.h
index 05776ca4e34..05776ca4e34 100644
--- a/src/emu/machine/mb89352.h
+++ b/src/devices/machine/mb89352.h
diff --git a/src/emu/machine/mb89363b.c b/src/devices/machine/mb89363b.c
index 2e4f210a865..2e4f210a865 100644
--- a/src/emu/machine/mb89363b.c
+++ b/src/devices/machine/mb89363b.c
diff --git a/src/emu/machine/mb89363b.h b/src/devices/machine/mb89363b.h
index e29f75fda41..e29f75fda41 100644
--- a/src/emu/machine/mb89363b.h
+++ b/src/devices/machine/mb89363b.h
diff --git a/src/emu/machine/mb89371.c b/src/devices/machine/mb89371.c
index 1188f295725..1188f295725 100644
--- a/src/emu/machine/mb89371.c
+++ b/src/devices/machine/mb89371.c
diff --git a/src/emu/machine/mb89371.h b/src/devices/machine/mb89371.h
index 2f0aa11fc4f..2f0aa11fc4f 100644
--- a/src/emu/machine/mb89371.h
+++ b/src/devices/machine/mb89371.h
diff --git a/src/emu/machine/mc146818.c b/src/devices/machine/mc146818.c
index 6639710cec6..1509e7586e9 100644
--- a/src/emu/machine/mc146818.c
+++ b/src/devices/machine/mc146818.c
@@ -37,7 +37,10 @@ mc146818_device::mc146818_device(const machine_config &mconfig, const char *tag,
m_last_refresh(attotime::zero),
m_write_irq(*this),
m_century_index(-1),
- m_use_utc(false)
+ m_epoch(0),
+ m_use_utc(false),
+ m_binary(false),
+ m_hour(false)
{
}
@@ -48,7 +51,10 @@ mc146818_device::mc146818_device(const machine_config &mconfig, device_type type
m_last_refresh(attotime::zero),
m_write_irq(*this),
m_century_index(-1),
- m_use_utc(false)
+ m_epoch(0),
+ m_use_utc(false),
+ m_binary(false),
+ m_hour(false)
{
}
@@ -199,6 +205,11 @@ void mc146818_device::nvram_default()
memset(&m_data[0], 0, data_size());
}
+ if(m_binary)
+ m_data[0x0b] |= REG_B_DM;
+ if(m_hour)
+ m_data[0x0b] |= REG_B_24_12;
+
set_base_datetime();
update_timer();
update_irq();
@@ -391,7 +402,7 @@ void mc146818_device::set_base_datetime()
set_dayofweek(current_time.weekday + 1);
set_dayofmonth(current_time.mday);
set_month(current_time.month + 1);
- set_year(current_time.year % 100);
+ set_year((current_time.year - m_epoch) % (m_data[0x0b] & REG_B_DM ? 0x100 : 100));
if (m_century_index >= 0)
m_data[m_century_index] = to_ram(current_time.year / 100);
diff --git a/src/emu/machine/mc146818.h b/src/devices/machine/mc146818.h
index 3db19ec533e..1793402fb64 100644
--- a/src/emu/machine/mc146818.h
+++ b/src/devices/machine/mc146818.h
@@ -34,6 +34,15 @@
#define MCFG_MC146818_UTC(_utc) \
downcast<mc146818_device *>(device)->set_use_utc(_utc);
+#define MCFG_MC146818_BINARY(_bin) \
+ downcast<mc146818_device *>(device)->set_binary(_bin);
+
+#define MCFG_MC146818_24_12(_hour) \
+ downcast<mc146818_device *>(device)->set_hour(_hour);
+
+#define MCFG_MC146818_EPOCH(_epoch) \
+ downcast<mc146818_device *>(device)->set_epoch(_epoch);
+
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -52,6 +61,9 @@ public:
template<class _irq> void set_irq_callback(_irq irq) { m_write_irq.set_callback(irq); }
void set_century_index(int century_index) { m_century_index = century_index; }
void set_use_utc(bool use_utc) { m_use_utc = use_utc; }
+ void set_binary(bool binary) { m_binary = binary; }
+ void set_hour(bool hour) { m_hour = hour; }
+ void set_epoch(int epoch) { m_epoch = epoch; }
// read/write access
DECLARE_READ8_MEMBER( read );
@@ -165,8 +177,8 @@ private:
emu_timer *m_periodic_timer;
devcb_write_line m_write_irq;
- int m_century_index;
- bool m_use_utc;
+ int m_century_index, m_epoch;
+ bool m_use_utc, m_binary, m_hour;
};
diff --git a/src/emu/machine/mc2661.c b/src/devices/machine/mc2661.c
index f93dc1b5ab1..f93dc1b5ab1 100644
--- a/src/emu/machine/mc2661.c
+++ b/src/devices/machine/mc2661.c
diff --git a/src/emu/machine/mc2661.h b/src/devices/machine/mc2661.h
index 5cc2f3e27fc..5cc2f3e27fc 100644
--- a/src/emu/machine/mc2661.h
+++ b/src/devices/machine/mc2661.h
diff --git a/src/emu/machine/mc68328.c b/src/devices/machine/mc68328.c
index c97e0aea815..9c270004ab5 100644
--- a/src/emu/machine/mc68328.c
+++ b/src/devices/machine/mc68328.c
@@ -4,8 +4,7 @@
Motorola 68328 ("DragonBall") System-on-a-Chip implementation
- By MooglyGuy
- contact mooglyguy@gmail.com with licensing and usage questions.
+ By Ryan Holtz
**********************************************************************/
diff --git a/src/emu/machine/mc68328.h b/src/devices/machine/mc68328.h
index da680dae32b..06ae394e7e1 100644
--- a/src/emu/machine/mc68328.h
+++ b/src/devices/machine/mc68328.h
@@ -4,8 +4,7 @@
Motorola 68328 ("DragonBall") System-on-a-Chip implementation
- By MooglyGuy
- contact mooglyguy@gmail.com with licensing and usage questions.
+ By Ryan Holtz
**********************************************************************/
diff --git a/src/emu/machine/mc6843.c b/src/devices/machine/mc6843.c
index f30dafde916..f30dafde916 100644
--- a/src/emu/machine/mc6843.c
+++ b/src/devices/machine/mc6843.c
diff --git a/src/emu/machine/mc6843.h b/src/devices/machine/mc6843.h
index 3a855d1c196..3a855d1c196 100644
--- a/src/emu/machine/mc6843.h
+++ b/src/devices/machine/mc6843.h
diff --git a/src/emu/machine/mc6846.c b/src/devices/machine/mc6846.c
index 18b9f723bfb..18b9f723bfb 100644
--- a/src/emu/machine/mc6846.c
+++ b/src/devices/machine/mc6846.c
diff --git a/src/emu/machine/mc6846.h b/src/devices/machine/mc6846.h
index 0bf6b84658f..0bf6b84658f 100644
--- a/src/emu/machine/mc6846.h
+++ b/src/devices/machine/mc6846.h
diff --git a/src/emu/machine/mc6852.c b/src/devices/machine/mc6852.c
index b0cf1ff9ca9..b0cf1ff9ca9 100644
--- a/src/emu/machine/mc6852.c
+++ b/src/devices/machine/mc6852.c
diff --git a/src/emu/machine/mc6852.h b/src/devices/machine/mc6852.h
index 859d9e8bef2..859d9e8bef2 100644
--- a/src/emu/machine/mc6852.h
+++ b/src/devices/machine/mc6852.h
diff --git a/src/emu/machine/mc6854.c b/src/devices/machine/mc6854.c
index 7ed16885b19..7ed16885b19 100644
--- a/src/emu/machine/mc6854.c
+++ b/src/devices/machine/mc6854.c
diff --git a/src/emu/machine/mc6854.h b/src/devices/machine/mc6854.h
index 2808255c0f6..2808255c0f6 100644
--- a/src/emu/machine/mc6854.h
+++ b/src/devices/machine/mc6854.h
diff --git a/src/emu/machine/mc68681.c b/src/devices/machine/mc68681.c
index 8b40488de24..8b40488de24 100644
--- a/src/emu/machine/mc68681.c
+++ b/src/devices/machine/mc68681.c
diff --git a/src/emu/machine/mc68681.h b/src/devices/machine/mc68681.h
index 3e4d0b9f256..3e4d0b9f256 100644
--- a/src/emu/machine/mc68681.h
+++ b/src/devices/machine/mc68681.h
diff --git a/src/emu/machine/mc68901.c b/src/devices/machine/mc68901.c
index 4d35d2a2c44..4d35d2a2c44 100644
--- a/src/emu/machine/mc68901.c
+++ b/src/devices/machine/mc68901.c
diff --git a/src/emu/machine/mc68901.h b/src/devices/machine/mc68901.h
index 7147af2a478..7147af2a478 100644
--- a/src/emu/machine/mc68901.h
+++ b/src/devices/machine/mc68901.h
diff --git a/src/emu/machine/mccs1850.c b/src/devices/machine/mccs1850.c
index b037f184bfc..b037f184bfc 100644
--- a/src/emu/machine/mccs1850.c
+++ b/src/devices/machine/mccs1850.c
diff --git a/src/emu/machine/mccs1850.h b/src/devices/machine/mccs1850.h
index 933e67a5f8f..933e67a5f8f 100644
--- a/src/emu/machine/mccs1850.h
+++ b/src/devices/machine/mccs1850.h
diff --git a/src/emu/machine/mcf5206e.c b/src/devices/machine/mcf5206e.c
index d993c7235e4..d993c7235e4 100644
--- a/src/emu/machine/mcf5206e.c
+++ b/src/devices/machine/mcf5206e.c
diff --git a/src/emu/machine/mcf5206e.h b/src/devices/machine/mcf5206e.h
index d49b88119d3..d49b88119d3 100644
--- a/src/emu/machine/mcf5206e.h
+++ b/src/devices/machine/mcf5206e.h
diff --git a/src/emu/machine/microtch.c b/src/devices/machine/microtch.c
index eee87447495..eee87447495 100644
--- a/src/emu/machine/microtch.c
+++ b/src/devices/machine/microtch.c
diff --git a/src/emu/machine/microtch.h b/src/devices/machine/microtch.h
index c7ba5a3c00b..c7ba5a3c00b 100644
--- a/src/emu/machine/microtch.h
+++ b/src/devices/machine/microtch.h
diff --git a/src/emu/machine/mm58167.c b/src/devices/machine/mm58167.c
index 74572770710..74572770710 100644
--- a/src/emu/machine/mm58167.c
+++ b/src/devices/machine/mm58167.c
diff --git a/src/emu/machine/mm58167.h b/src/devices/machine/mm58167.h
index 83714042433..83714042433 100644
--- a/src/emu/machine/mm58167.h
+++ b/src/devices/machine/mm58167.h
diff --git a/src/emu/machine/mm58274c.c b/src/devices/machine/mm58274c.c
index 0690f775b5d..0690f775b5d 100644
--- a/src/emu/machine/mm58274c.c
+++ b/src/devices/machine/mm58274c.c
diff --git a/src/emu/machine/mm58274c.h b/src/devices/machine/mm58274c.h
index 225340721ea..225340721ea 100644
--- a/src/emu/machine/mm58274c.h
+++ b/src/devices/machine/mm58274c.h
diff --git a/src/emu/machine/mm74c922.c b/src/devices/machine/mm74c922.c
index 6b7f9b50d53..6b7f9b50d53 100644
--- a/src/emu/machine/mm74c922.c
+++ b/src/devices/machine/mm74c922.c
diff --git a/src/emu/machine/mm74c922.h b/src/devices/machine/mm74c922.h
index 88a7bfde186..88a7bfde186 100644
--- a/src/emu/machine/mm74c922.h
+++ b/src/devices/machine/mm74c922.h
diff --git a/src/emu/machine/mos6526.c b/src/devices/machine/mos6526.c
index 3d9561b36f7..3d9561b36f7 100644
--- a/src/emu/machine/mos6526.c
+++ b/src/devices/machine/mos6526.c
diff --git a/src/emu/machine/mos6526.h b/src/devices/machine/mos6526.h
index da54967e080..da54967e080 100644
--- a/src/emu/machine/mos6526.h
+++ b/src/devices/machine/mos6526.h
diff --git a/src/emu/machine/mos6529.c b/src/devices/machine/mos6529.c
index ebae2ca6f5a..ebae2ca6f5a 100644
--- a/src/emu/machine/mos6529.c
+++ b/src/devices/machine/mos6529.c
diff --git a/src/emu/machine/mos6529.h b/src/devices/machine/mos6529.h
index 0e6f00f4dd0..0e6f00f4dd0 100644
--- a/src/emu/machine/mos6529.h
+++ b/src/devices/machine/mos6529.h
diff --git a/src/emu/machine/mos6530.c b/src/devices/machine/mos6530.c
index a32383fcbda..a32383fcbda 100644
--- a/src/emu/machine/mos6530.c
+++ b/src/devices/machine/mos6530.c
diff --git a/src/emu/machine/mos6530.h b/src/devices/machine/mos6530.h
index d63fdd95a12..d63fdd95a12 100644
--- a/src/emu/machine/mos6530.h
+++ b/src/devices/machine/mos6530.h
diff --git a/src/emu/machine/mos6530n.c b/src/devices/machine/mos6530n.c
index 58f279f5437..58f279f5437 100644
--- a/src/emu/machine/mos6530n.c
+++ b/src/devices/machine/mos6530n.c
diff --git a/src/emu/machine/mos6530n.h b/src/devices/machine/mos6530n.h
index 01044ac7c7b..01044ac7c7b 100644
--- a/src/emu/machine/mos6530n.h
+++ b/src/devices/machine/mos6530n.h
diff --git a/src/emu/machine/mos6551.c b/src/devices/machine/mos6551.c
index 6f240799af2..6f240799af2 100644
--- a/src/emu/machine/mos6551.c
+++ b/src/devices/machine/mos6551.c
diff --git a/src/emu/machine/mos6551.h b/src/devices/machine/mos6551.h
index 7ba7d6bc7f3..7ba7d6bc7f3 100644
--- a/src/emu/machine/mos6551.h
+++ b/src/devices/machine/mos6551.h
diff --git a/src/emu/machine/mos6702.c b/src/devices/machine/mos6702.c
index 9dc11e24af9..9dc11e24af9 100644
--- a/src/emu/machine/mos6702.c
+++ b/src/devices/machine/mos6702.c
diff --git a/src/emu/machine/mos6702.h b/src/devices/machine/mos6702.h
index d0675e5140b..d0675e5140b 100644
--- a/src/emu/machine/mos6702.h
+++ b/src/devices/machine/mos6702.h
diff --git a/src/emu/machine/mos8706.c b/src/devices/machine/mos8706.c
index ca07506423b..ca07506423b 100644
--- a/src/emu/machine/mos8706.c
+++ b/src/devices/machine/mos8706.c
diff --git a/src/emu/machine/mos8706.h b/src/devices/machine/mos8706.h
index 070c592b9fe..070c592b9fe 100644
--- a/src/emu/machine/mos8706.h
+++ b/src/devices/machine/mos8706.h
diff --git a/src/emu/machine/mos8722.c b/src/devices/machine/mos8722.c
index 31b2beb1f27..31b2beb1f27 100644
--- a/src/emu/machine/mos8722.c
+++ b/src/devices/machine/mos8722.c
diff --git a/src/emu/machine/mos8722.h b/src/devices/machine/mos8722.h
index d342781fc4e..d342781fc4e 100644
--- a/src/emu/machine/mos8722.h
+++ b/src/devices/machine/mos8722.h
diff --git a/src/emu/machine/mos8726.c b/src/devices/machine/mos8726.c
index eca6ada5187..eca6ada5187 100644
--- a/src/emu/machine/mos8726.c
+++ b/src/devices/machine/mos8726.c
diff --git a/src/emu/machine/mos8726.h b/src/devices/machine/mos8726.h
index 324d99794de..324d99794de 100644
--- a/src/emu/machine/mos8726.h
+++ b/src/devices/machine/mos8726.h
diff --git a/src/emu/machine/mpu401.c b/src/devices/machine/mpu401.c
index 5a2933380df..5a2933380df 100644
--- a/src/emu/machine/mpu401.c
+++ b/src/devices/machine/mpu401.c
diff --git a/src/emu/machine/mpu401.h b/src/devices/machine/mpu401.h
index 58acb3ab98e..58acb3ab98e 100644
--- a/src/emu/machine/mpu401.h
+++ b/src/devices/machine/mpu401.h
diff --git a/src/emu/machine/msm5832.c b/src/devices/machine/msm5832.c
index 7bc6fa70bfa..7bc6fa70bfa 100644
--- a/src/emu/machine/msm5832.c
+++ b/src/devices/machine/msm5832.c
diff --git a/src/emu/machine/msm5832.h b/src/devices/machine/msm5832.h
index 68b72a3f8bf..68b72a3f8bf 100644
--- a/src/emu/machine/msm5832.h
+++ b/src/devices/machine/msm5832.h
diff --git a/src/emu/machine/msm58321.c b/src/devices/machine/msm58321.c
index 679b85584ff..679b85584ff 100644
--- a/src/emu/machine/msm58321.c
+++ b/src/devices/machine/msm58321.c
diff --git a/src/emu/machine/msm58321.h b/src/devices/machine/msm58321.h
index 8b1ad54edd9..8b1ad54edd9 100644
--- a/src/emu/machine/msm58321.h
+++ b/src/devices/machine/msm58321.h
diff --git a/src/emu/machine/msm6242.c b/src/devices/machine/msm6242.c
index a4a188cbcb6..a4a188cbcb6 100644
--- a/src/emu/machine/msm6242.c
+++ b/src/devices/machine/msm6242.c
diff --git a/src/emu/machine/msm6242.h b/src/devices/machine/msm6242.h
index 4d44fd1b860..4d44fd1b860 100644
--- a/src/emu/machine/msm6242.h
+++ b/src/devices/machine/msm6242.h
diff --git a/src/emu/machine/ncr5380.c b/src/devices/machine/ncr5380.c
index 175e9130c1c..175e9130c1c 100644
--- a/src/emu/machine/ncr5380.c
+++ b/src/devices/machine/ncr5380.c
diff --git a/src/emu/machine/ncr5380.h b/src/devices/machine/ncr5380.h
index 678460f6133..678460f6133 100644
--- a/src/emu/machine/ncr5380.h
+++ b/src/devices/machine/ncr5380.h
diff --git a/src/emu/machine/ncr5380n.c b/src/devices/machine/ncr5380n.c
index ed2270ba097..ed2270ba097 100644
--- a/src/emu/machine/ncr5380n.c
+++ b/src/devices/machine/ncr5380n.c
diff --git a/src/emu/machine/ncr5380n.h b/src/devices/machine/ncr5380n.h
index e9a142d78e5..e9a142d78e5 100644
--- a/src/emu/machine/ncr5380n.h
+++ b/src/devices/machine/ncr5380n.h
diff --git a/src/emu/machine/ncr5390.c b/src/devices/machine/ncr5390.c
index 26e4218b226..26e4218b226 100644
--- a/src/emu/machine/ncr5390.c
+++ b/src/devices/machine/ncr5390.c
diff --git a/src/emu/machine/ncr5390.h b/src/devices/machine/ncr5390.h
index 93cf76a5486..93cf76a5486 100644
--- a/src/emu/machine/ncr5390.h
+++ b/src/devices/machine/ncr5390.h
diff --git a/src/emu/machine/ncr539x.c b/src/devices/machine/ncr539x.c
index fe1fd9919e1..fe1fd9919e1 100644
--- a/src/emu/machine/ncr539x.c
+++ b/src/devices/machine/ncr539x.c
diff --git a/src/emu/machine/ncr539x.h b/src/devices/machine/ncr539x.h
index 2280613d22f..2280613d22f 100644
--- a/src/emu/machine/ncr539x.h
+++ b/src/devices/machine/ncr539x.h
diff --git a/src/emu/machine/netlist.c b/src/devices/machine/netlist.c
index 8db7fa3feb4..bf6ad42f88c 100644
--- a/src/emu/machine/netlist.c
+++ b/src/devices/machine/netlist.c
@@ -129,6 +129,7 @@ netlist_mame_logic_input_t::netlist_mame_logic_input_t(const machine_config &mco
void netlist_mame_logic_input_t::static_set_params(device_t &device, const char *param_name, const UINT32 mask, const UINT32 shift)
{
netlist_mame_logic_input_t &netlist = downcast<netlist_mame_logic_input_t &>(device);
+ LOG_DEV_CALLS(("static_set_params %s\n", device.tag()));
netlist.m_param_name = param_name;
netlist.m_shift = shift;
netlist.m_mask = mask;
@@ -175,11 +176,11 @@ void netlist_mame_stream_input_t::custom_netlist_additions(netlist::setup_t &set
if (snd_in == NULL)
snd_in = dynamic_cast<NETLIB_NAME(sound_in) *>(setup.register_dev("NETDEV_SOUND_IN", "STREAM_INPUT"));
- pstring sparam = pstring::sprintf("STREAM_INPUT.CHAN%d", m_channel);
+ pstring sparam = pfmt("STREAM_INPUT.CHAN{1}")(m_channel);
setup.register_param(sparam, m_param_name);
- sparam = pstring::sprintf("STREAM_INPUT.MULT%d", m_channel);
+ sparam = pfmt("STREAM_INPUT.MULT{1}")(m_channel);
setup.register_param(sparam, m_mult);
- sparam = pstring::sprintf("STREAM_INPUT.OFFSET%d", m_channel);
+ sparam = pfmt("STREAM_INPUT.OFFSET{1}")(m_channel);
setup.register_param(sparam, m_offset);
}
@@ -210,7 +211,7 @@ void netlist_mame_stream_output_t::device_start()
void netlist_mame_stream_output_t::custom_netlist_additions(netlist::setup_t &setup)
{
//NETLIB_NAME(sound_out) *snd_out;
- pstring sname = pstring::sprintf("STREAM_OUT_%d", m_channel);
+ pstring sname = pfmt("STREAM_OUT_{1}")(m_channel);
//snd_out = dynamic_cast<NETLIB_NAME(sound_out) *>(setup.register_dev("nld_sound_out", sname));
setup.register_dev("NETDEV_SOUND_OUT", sname);
@@ -226,19 +227,28 @@ void netlist_mame_stream_output_t::custom_netlist_additions(netlist::setup_t &se
// netlist_mame_t
// ----------------------------------------------------------------------------------------
-void netlist_mame_t::verror(const loglevel_e level, const char *format, va_list ap) const
+void netlist_mame_t::vlog(const plog_level &l, const pstring &ls) const
{
- pstring errstr = pstring(format).vprintf(ap);
+ pstring errstr = ls;
- switch (level)
+ switch (l)
{
- case NL_WARNING:
+ case plog_level::DEBUG:
+ logerror("netlist DEBUG: %s\n", errstr.cstr());
+ break;
+ case plog_level::INFO:
+ logerror("netlist INFO: %s\n", errstr.cstr());
+ break;
+ case plog_level::VERBOSE:
+ logerror("netlist VERBOSE: %s\n", errstr.cstr());
+ break;
+ case plog_level::WARNING:
logerror("netlist WARNING: %s\n", errstr.cstr());
break;
- case NL_LOG:
- logerror("netlist LOG: %s\n", errstr.cstr());
+ case plog_level::ERROR:
+ logerror("netlist ERROR: %s\n", errstr.cstr());
break;
- case NL_ERROR:
+ case plog_level::FATAL:
emu_fatalerror error("netlist ERROR: %s\n", errstr.cstr());
throw error;
}
@@ -255,8 +265,6 @@ ADDRESS_MAP_END
netlist_mame_device_t::netlist_mame_device_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, NETLIST_CORE, "Netlist core device", tag, owner, clock, "netlist_core", __FILE__),
m_icount(0),
- m_div(0),
- m_rem(0),
m_old(netlist::netlist_time::zero),
m_netlist(NULL),
m_setup(NULL),
@@ -267,8 +275,6 @@ netlist_mame_device_t::netlist_mame_device_t(const machine_config &mconfig, cons
netlist_mame_device_t::netlist_mame_device_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *file)
: device_t(mconfig, type, name, tag, owner, clock, shortname, file),
m_icount(0),
- m_div(0),
- m_rem(0),
m_old(netlist::netlist_time::zero),
m_netlist(NULL),
m_setup(NULL),
@@ -326,18 +332,14 @@ void netlist_mame_device_t::device_start()
save_state();
m_old = netlist::netlist_time::zero;
- m_rem = 0;
+ m_rem = netlist::netlist_time::zero;
}
void netlist_mame_device_t::device_clock_changed()
{
- //printf("device_clock_changed\n");
- m_div = netlist::netlist_time::from_hz(clock()).as_raw();
- //m_rem = 0;
- //NL_VERBOSE_OUT(("Setting clock %" I64FMT "d and divisor %d\n", clock(), m_div));
- NL_VERBOSE_OUT(("Setting clock %d and divisor %d\n", clock(), m_div));
- //printf("Setting clock %d and divisor %d\n", clock(), m_div);
+ m_div = netlist::netlist_time::from_hz(clock());
+ netlist().log().debug("Setting clock {1} and divisor {2}\n", clock(), m_div.as_double());
}
@@ -345,7 +347,7 @@ void netlist_mame_device_t::device_reset()
{
LOG_DEV_CALLS(("device_reset\n"));
m_old = netlist::netlist_time::zero;
- m_rem = 0;
+ m_rem = netlist::netlist_time::zero;
netlist().do_reset();
}
@@ -383,9 +385,12 @@ void netlist_mame_device_t::device_timer(emu_timer &timer, device_timer_id id, i
ATTR_HOT ATTR_ALIGN void netlist_mame_device_t::update_time_x()
{
- const netlist::netlist_time delta = netlist().time() - m_old + netlist::netlist_time::from_raw(m_rem);
- m_old = netlist().time();
- m_icount -= divu_64x32_rem(delta.as_raw(), m_div, &m_rem);
+ const netlist::netlist_time newt = netlist().time();
+ const netlist::netlist_time delta = newt - m_old + m_rem;
+ const UINT64 d = delta / m_div;
+ m_old = newt;
+ m_rem = delta - (m_div * d);
+ m_icount -= d;
}
ATTR_HOT ATTR_ALIGN void netlist_mame_device_t::check_mame_abort_slice()
@@ -399,41 +404,47 @@ ATTR_COLD void netlist_mame_device_t::save_state()
for (int i=0; i< netlist().save_list().size(); i++)
{
pstate_entry_t *s = netlist().save_list()[i];
- NL_VERBOSE_OUT(("saving state for %s\n", s->m_name.cstr()));
+ netlist().log().debug("saving state for {1}\n", s->m_name.cstr());
switch (s->m_dt)
{
case DT_DOUBLE:
{
double *td = s->resolved<double>();
- if (td != NULL) save_pointer(td, s->m_name, s->m_count);
+ if (td != NULL) save_pointer(td, s->m_name.cstr(), s->m_count);
}
break;
case DT_FLOAT:
{
float *td = s->resolved<float>();
- if (td != NULL) save_pointer(td, s->m_name, s->m_count);
+ if (td != NULL) save_pointer(td, s->m_name.cstr(), s->m_count);
}
break;
+#if (PHAS_INT128)
+ case DT_INT128:
+ // FIXME: we are cheating here
+ save_pointer((char *) s->m_ptr, s->m_name.cstr(), s->m_count * sizeof(INT128));
+ break;
+#endif
case DT_INT64:
- save_pointer((INT64 *) s->m_ptr, s->m_name, s->m_count);
+ save_pointer((INT64 *) s->m_ptr, s->m_name.cstr(), s->m_count);
break;
case DT_INT16:
- save_pointer((INT16 *) s->m_ptr, s->m_name, s->m_count);
+ save_pointer((INT16 *) s->m_ptr, s->m_name.cstr(), s->m_count);
break;
case DT_INT8:
- save_pointer((INT8 *) s->m_ptr, s->m_name, s->m_count);
+ save_pointer((INT8 *) s->m_ptr, s->m_name.cstr(), s->m_count);
break;
case DT_INT:
- save_pointer((int *) s->m_ptr, s->m_name, s->m_count);
+ save_pointer((int *) s->m_ptr, s->m_name.cstr(), s->m_count);
break;
case DT_BOOLEAN:
- save_pointer((bool *) s->m_ptr, s->m_name, s->m_count);
+ save_pointer((bool *) s->m_ptr, s->m_name.cstr(), s->m_count);
break;
case DT_CUSTOM:
break;
case NOT_SUPPORTED:
default:
- netlist().error("found unsupported save element %s\n", s->m_name.cstr());
+ netlist().log().fatal("found unsupported save element %s\n", s->m_name);
break;
}
}
@@ -470,11 +481,11 @@ void netlist_mame_cpu_device_t::device_start()
netlist::net_t *n = netlist().m_nets[i];
if (n->isFamily(netlist::object_t::LOGIC))
{
- state_add(i*2, n->name(), downcast<netlist::logic_net_t *>(n)->Q_state_ptr());
+ state_add(i*2, n->name().cstr(), downcast<netlist::logic_net_t *>(n)->Q_state_ptr());
}
else
{
- state_add(i*2+1, n->name(), downcast<netlist::analog_net_t *>(n)->Q_Analog_state_ptr()).formatstr("%20s");
+ state_add(i*2+1, n->name().cstr(), downcast<netlist::analog_net_t *>(n)->Q_Analog_state_ptr()).formatstr("%20s");
}
}
@@ -529,13 +540,13 @@ ATTR_HOT void netlist_mame_cpu_device_t::execute_run()
m_genPC++;
m_genPC &= 255;
debugger_instruction_hook(this, m_genPC);
- netlist().process_queue(netlist::netlist_time::from_raw(m_div));
+ netlist().process_queue(m_div);
update_time_x();
}
}
else
{
- netlist().process_queue(netlist::netlist_time::from_raw(m_div) * m_icount);
+ netlist().process_queue(m_div * m_icount);
update_time_x();
}
}
@@ -570,7 +581,7 @@ void netlist_mame_sound_device_t::device_start()
{
int chan = outdevs[i]->m_channel.Value();
- netlist().log("Output %d on channel %d", i, chan);
+ netlist().log().verbose("Output %d on channel %d", i, chan);
if (chan < 0 || chan >= MAX_OUT || chan >= outdevs.size())
fatalerror("illegal channel number");
@@ -623,9 +634,9 @@ void netlist_mame_sound_device_t::sound_stream_update(sound_stream &stream, stre
netlist::netlist_time cur = netlist().time();
- netlist().process_queue(netlist::netlist_time::from_raw(m_div) * samples);
+ netlist().process_queue(m_div * samples);
- cur += (netlist::netlist_time::from_raw(m_div) * samples);
+ cur += (m_div * samples);
for (int i=0; i < m_num_outputs; i++)
{
@@ -638,9 +649,13 @@ void netlist_mame_sound_device_t::sound_stream_update(sound_stream &stream, stre
// memregion source support
// ----------------------------------------------------------------------------------------
-bool netlist_source_memregion_t::parse(netlist::setup_t *setup, const pstring name)
+bool netlist_source_memregion_t::parse(netlist::setup_t &setup, const pstring &name)
{
- const char *mem = (const char *)downcast<netlist_mame_t &>(setup->netlist()).machine().root_device().memregion(m_name.cstr())->base();
- netlist::parser_t p(*setup);
- return p.parse(mem, name);
+ // FIXME: preprocessor should be a stream!
+ memory_region *mem = downcast<netlist_mame_t &>(setup.netlist()).machine().root_device().memregion(m_name.cstr());
+ pimemstream istrm(mem->base(),mem->bytes() );
+ pomemstream ostrm;
+
+ pimemstream istrm2(ppreprocessor().process(istrm, ostrm));
+ return netlist::parser_t(istrm2, setup).parse(name);
}
diff --git a/src/emu/machine/netlist.h b/src/devices/machine/netlist.h
index ed93abbed3d..8b9bceb2b3d 100644
--- a/src/emu/machine/netlist.h
+++ b/src/devices/machine/netlist.h
@@ -68,7 +68,7 @@ public:
{
}
- bool parse(netlist::setup_t *setup, const pstring name);
+ bool parse(netlist::setup_t &setup, const pstring &name);
private:
pstring m_name;
};
@@ -97,7 +97,7 @@ public:
protected:
- void verror(const loglevel_e level, const char *format, va_list ap) const;
+ void vlog(const plog_level &l, const pstring &ls) const;
private:
netlist_mame_device_t &m_parent;
@@ -114,7 +114,7 @@ public:
// construction/destruction
netlist_mame_device_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
netlist_mame_device_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *file);
- virtual ~netlist_mame_device_t() {}
+ virtual ~netlist_mame_device_t() { pstring::resetmem(); }
static void static_set_constructor(device_t &device, void (*setup_func)(netlist::setup_t &));
@@ -143,13 +143,13 @@ protected:
//virtual void device_debug_setup();
virtual void device_clock_changed();
- UINT32 m_div;
+ netlist::netlist_time m_div;
private:
void save_state();
/* timing support here - so sound can hijack it ... */
- UINT32 m_rem;
+ netlist::netlist_time m_rem;
netlist::netlist_time m_old;
netlist_mame_t * m_netlist;
@@ -583,7 +583,7 @@ public:
{
int pos = (upto - m_last_buffer) / m_sample;
if (pos >= BUFSIZE)
- netlist().error("sound %s: exceeded BUFSIZE\n", name().cstr());
+ netlist().log().fatal("sound {1}: exceeded BUFSIZE\n", name().cstr());
while (m_last_pos < pos )
{
m_buffer[m_last_pos++] = (stream_sample_t) m_cur;
@@ -648,9 +648,9 @@ public:
for (int i = 0; i < MAX_INPUT_CHANNELS; i++)
{
- register_param(pstring::sprintf("CHAN%d", i), m_param_name[i], "");
- register_param(pstring::sprintf("MULT%d", i), m_param_mult[i], 1.0);
- register_param(pstring::sprintf("OFFSET%d", i), m_param_offset[i], 0.0);
+ register_param(pfmt("CHAN{1}")(i), m_param_name[i], "");
+ register_param(pfmt("MULT{1}")(i), m_param_mult[i], 1.0);
+ register_param(pfmt("OFFSET{1}")(i), m_param_offset[i], 0.0);
}
m_num_channel = 0;
}
@@ -670,7 +670,7 @@ public:
if (m_param_name[i].Value() != "")
{
if (i != m_num_channel)
- netlist().error("sound input numbering has to be sequential!");
+ netlist().log().fatal("sound input numbering has to be sequential!");
m_num_channel++;
m_param[i] = dynamic_cast<netlist::param_double_t *>(setup().find_param(m_param_name[i].Value(), true));
}
diff --git a/src/emu/machine/nmc9306.c b/src/devices/machine/nmc9306.c
index 0b23eda21d7..0b23eda21d7 100644
--- a/src/emu/machine/nmc9306.c
+++ b/src/devices/machine/nmc9306.c
diff --git a/src/emu/machine/nmc9306.h b/src/devices/machine/nmc9306.h
index 95db0133025..95db0133025 100644
--- a/src/emu/machine/nmc9306.h
+++ b/src/devices/machine/nmc9306.h
diff --git a/src/emu/machine/nsc810.c b/src/devices/machine/nsc810.c
index 51aec5cf654..51aec5cf654 100644
--- a/src/emu/machine/nsc810.c
+++ b/src/devices/machine/nsc810.c
diff --git a/src/emu/machine/nsc810.h b/src/devices/machine/nsc810.h
index f7aea895f0b..f7aea895f0b 100644
--- a/src/emu/machine/nsc810.h
+++ b/src/devices/machine/nsc810.h
diff --git a/src/emu/machine/nscsi_bus.c b/src/devices/machine/nscsi_bus.c
index 182fe98e0aa..182fe98e0aa 100644
--- a/src/emu/machine/nscsi_bus.c
+++ b/src/devices/machine/nscsi_bus.c
diff --git a/src/emu/machine/nscsi_bus.h b/src/devices/machine/nscsi_bus.h
index 2aa4a57db7e..2aa4a57db7e 100644
--- a/src/emu/machine/nscsi_bus.h
+++ b/src/devices/machine/nscsi_bus.h
diff --git a/src/emu/machine/nscsi_cb.c b/src/devices/machine/nscsi_cb.c
index 5c3c12e8a34..5c3c12e8a34 100644
--- a/src/emu/machine/nscsi_cb.c
+++ b/src/devices/machine/nscsi_cb.c
diff --git a/src/emu/machine/nscsi_cb.h b/src/devices/machine/nscsi_cb.h
index 9152ddaf8f9..9152ddaf8f9 100644
--- a/src/emu/machine/nscsi_cb.h
+++ b/src/devices/machine/nscsi_cb.h
diff --git a/src/emu/machine/nscsi_cd.c b/src/devices/machine/nscsi_cd.c
index c8d8440b3ce..c8d8440b3ce 100644
--- a/src/emu/machine/nscsi_cd.c
+++ b/src/devices/machine/nscsi_cd.c
diff --git a/src/emu/machine/nscsi_cd.h b/src/devices/machine/nscsi_cd.h
index a890848152d..a890848152d 100644
--- a/src/emu/machine/nscsi_cd.h
+++ b/src/devices/machine/nscsi_cd.h
diff --git a/src/emu/machine/nscsi_hd.c b/src/devices/machine/nscsi_hd.c
index 96aec81979c..96aec81979c 100644
--- a/src/emu/machine/nscsi_hd.c
+++ b/src/devices/machine/nscsi_hd.c
diff --git a/src/emu/machine/nscsi_hd.h b/src/devices/machine/nscsi_hd.h
index 855c125294d..855c125294d 100644
--- a/src/emu/machine/nscsi_hd.h
+++ b/src/devices/machine/nscsi_hd.h
diff --git a/src/emu/machine/nscsi_s1410.c b/src/devices/machine/nscsi_s1410.c
index b486b4994e9..b486b4994e9 100644
--- a/src/emu/machine/nscsi_s1410.c
+++ b/src/devices/machine/nscsi_s1410.c
diff --git a/src/emu/machine/nscsi_s1410.h b/src/devices/machine/nscsi_s1410.h
index f9dc2707887..f9dc2707887 100644
--- a/src/emu/machine/nscsi_s1410.h
+++ b/src/devices/machine/nscsi_s1410.h
diff --git a/src/emu/machine/nvram.c b/src/devices/machine/nvram.c
index 17a8fbcf60c..a1c9d734e2e 100644
--- a/src/emu/machine/nvram.c
+++ b/src/devices/machine/nvram.c
@@ -12,6 +12,12 @@
#include "machine/nvram.h"
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
//**************************************************************************
// LIVE DEVICE
@@ -169,3 +175,7 @@ void nvram_device::determine_final_base()
if (m_region != NULL && m_region->bytes() != m_length)
throw emu_fatalerror("NVRAM device '%s' has a default region, but it should be 0x%" SIZETFMT "X bytes", tag(), m_length);
}
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/machine/nvram.h b/src/devices/machine/nvram.h
index 10c3954a83c..10c3954a83c 100644
--- a/src/emu/machine/nvram.h
+++ b/src/devices/machine/nvram.h
diff --git a/src/emu/machine/pc_fdc.c b/src/devices/machine/pc_fdc.c
index 5c56a53d3d6..5c56a53d3d6 100644
--- a/src/emu/machine/pc_fdc.c
+++ b/src/devices/machine/pc_fdc.c
diff --git a/src/emu/machine/pc_fdc.h b/src/devices/machine/pc_fdc.h
index 159bb89a59b..159bb89a59b 100644
--- a/src/emu/machine/pc_fdc.h
+++ b/src/devices/machine/pc_fdc.h
diff --git a/src/emu/machine/pc_lpt.c b/src/devices/machine/pc_lpt.c
index 319a5cb0a2c..319a5cb0a2c 100644
--- a/src/emu/machine/pc_lpt.c
+++ b/src/devices/machine/pc_lpt.c
diff --git a/src/emu/machine/pc_lpt.h b/src/devices/machine/pc_lpt.h
index 08de865ce94..08de865ce94 100644
--- a/src/emu/machine/pc_lpt.h
+++ b/src/devices/machine/pc_lpt.h
diff --git a/src/emu/machine/pccard.c b/src/devices/machine/pccard.c
index 0d9887fa15f..0d9887fa15f 100644
--- a/src/emu/machine/pccard.c
+++ b/src/devices/machine/pccard.c
diff --git a/src/emu/machine/pccard.h b/src/devices/machine/pccard.h
index 7a7b9abd1ab..7a7b9abd1ab 100644
--- a/src/emu/machine/pccard.h
+++ b/src/devices/machine/pccard.h
diff --git a/src/emu/machine/pcf8593.c b/src/devices/machine/pcf8593.c
index 48e002fdf2d..48e002fdf2d 100644
--- a/src/emu/machine/pcf8593.c
+++ b/src/devices/machine/pcf8593.c
diff --git a/src/emu/machine/pcf8593.h b/src/devices/machine/pcf8593.h
index 2475f0a2dfe..2475f0a2dfe 100644
--- a/src/emu/machine/pcf8593.h
+++ b/src/devices/machine/pcf8593.h
diff --git a/src/emu/machine/pci-apic.c b/src/devices/machine/pci-apic.c
index ce32692c7e6..ce32692c7e6 100644
--- a/src/emu/machine/pci-apic.c
+++ b/src/devices/machine/pci-apic.c
diff --git a/src/emu/machine/pci-apic.h b/src/devices/machine/pci-apic.h
index 85b8de34b4d..85b8de34b4d 100644
--- a/src/emu/machine/pci-apic.h
+++ b/src/devices/machine/pci-apic.h
diff --git a/src/emu/machine/pci-sata.c b/src/devices/machine/pci-sata.c
index 65cc090848b..65cc090848b 100644
--- a/src/emu/machine/pci-sata.c
+++ b/src/devices/machine/pci-sata.c
diff --git a/src/emu/machine/pci-sata.h b/src/devices/machine/pci-sata.h
index 59b41635622..59b41635622 100644
--- a/src/emu/machine/pci-sata.h
+++ b/src/devices/machine/pci-sata.h
diff --git a/src/emu/machine/pci-smbus.c b/src/devices/machine/pci-smbus.c
index 13d4d491570..13d4d491570 100644
--- a/src/emu/machine/pci-smbus.c
+++ b/src/devices/machine/pci-smbus.c
diff --git a/src/emu/machine/pci-smbus.h b/src/devices/machine/pci-smbus.h
index e149e3e547c..e149e3e547c 100644
--- a/src/emu/machine/pci-smbus.h
+++ b/src/devices/machine/pci-smbus.h
diff --git a/src/emu/machine/pci-usb.c b/src/devices/machine/pci-usb.c
index 56789e12eb3..56789e12eb3 100644
--- a/src/emu/machine/pci-usb.c
+++ b/src/devices/machine/pci-usb.c
diff --git a/src/emu/machine/pci-usb.h b/src/devices/machine/pci-usb.h
index e103e89d968..e103e89d968 100644
--- a/src/emu/machine/pci-usb.h
+++ b/src/devices/machine/pci-usb.h
diff --git a/src/emu/machine/pci.c b/src/devices/machine/pci.c
index 079444f379b..a5c95198c75 100644
--- a/src/emu/machine/pci.c
+++ b/src/devices/machine/pci.c
@@ -2,6 +2,13 @@
// copyright-holders:Olivier Galibert
#include "pci.h"
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
+
const device_type PCI_ROOT = &device_creator<pci_root_device>;
const device_type PCI_BRIDGE = &device_creator<pci_bridge_device>;
@@ -895,3 +902,7 @@ void pci_root_device::device_start()
void pci_root_device::device_reset()
{
}
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/machine/pci.h b/src/devices/machine/pci.h
index 34566f5f1e6..34566f5f1e6 100644
--- a/src/emu/machine/pci.h
+++ b/src/devices/machine/pci.h
diff --git a/src/emu/machine/pci9050.c b/src/devices/machine/pci9050.c
index 2687966c718..2687966c718 100644
--- a/src/emu/machine/pci9050.c
+++ b/src/devices/machine/pci9050.c
diff --git a/src/emu/machine/pci9050.h b/src/devices/machine/pci9050.h
index 7915e46b9ea..7915e46b9ea 100644
--- a/src/emu/machine/pci9050.h
+++ b/src/devices/machine/pci9050.h
diff --git a/src/emu/machine/pckeybrd.c b/src/devices/machine/pckeybrd.c
index f7a049e2469..f7a049e2469 100644
--- a/src/emu/machine/pckeybrd.c
+++ b/src/devices/machine/pckeybrd.c
diff --git a/src/emu/machine/pckeybrd.h b/src/devices/machine/pckeybrd.h
index 12ca33f0f4c..12ca33f0f4c 100644
--- a/src/emu/machine/pckeybrd.h
+++ b/src/devices/machine/pckeybrd.h
diff --git a/src/emu/machine/pic8259.c b/src/devices/machine/pic8259.c
index 40fe6fd916c..40fe6fd916c 100644
--- a/src/emu/machine/pic8259.c
+++ b/src/devices/machine/pic8259.c
diff --git a/src/emu/machine/pic8259.h b/src/devices/machine/pic8259.h
index 48914c07fe9..19e3d95ee2f 100644
--- a/src/emu/machine/pic8259.h
+++ b/src/devices/machine/pic8259.h
@@ -63,6 +63,9 @@ public:
IRQ_CALLBACK_MEMBER(inta_cb);
+ // used by m92.c until we can figure out how to hook it up in a way that doesn't break nbbatman (probably need correct IRQ timing / clears for the sprites IRQs
+ int HACK_get_base_vector() { return m_base; }
+
protected:
// device-level overrides
virtual void device_start();
diff --git a/src/emu/machine/pit8253.c b/src/devices/machine/pit8253.c
index ebd243899fc..1ad506686e0 100644
--- a/src/emu/machine/pit8253.c
+++ b/src/devices/machine/pit8253.c
@@ -23,6 +23,12 @@
#include "emu.h"
#include "machine/pit8253.h"
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
/* device types */
enum
@@ -107,7 +113,7 @@ void pit8253_device::device_start()
pit8253_timer *timer = get_timer(timerno);
/* initialize timer */
- timer->updatetimer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pit8253_device::update_timer_cb),this));
+ timer->updatetimer = timer_alloc(timerno);
timer->updatetimer->adjust(attotime::never, timerno);
/* set up state save values */
@@ -507,7 +513,7 @@ void pit8253_device::simulate2(pit8253_timer *timer, INT64 elapsed_cycles)
if (elapsed_cycles > 0 && timer->phase == 3)
{
/* Reload counter, output goes high */
- --elapsed_cycles;
+ elapsed_cycles -= adjusted_value;
timer->phase = 2;
load_counter_value(timer);
adjusted_value = adjusted_count(bcd, timer->value);
@@ -735,16 +741,6 @@ void pit8253_device::update(pit8253_timer *timer)
}
-TIMER_CALLBACK_MEMBER( pit8253_device::update_timer_cb )
-{
- pit8253_timer *timer = get_timer(param);
-
- LOG2(("pit8253: output_changed(): timer %d\n", param));
-
- update(timer);
-}
-
-
/* We recycle bit 0 of timer->value to hold the phase in mode 3 when count is
odd. Since read commands in mode 3 always return even numbers, we need to
mask this bit off. */
@@ -935,6 +931,10 @@ void pit8254_device::readback_command(UINT8 data)
readback(get_timer(2), read_command);
}
+void pit8253_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ update(get_timer(id));
+}
WRITE8_MEMBER( pit8253_device::write )
{
@@ -1129,3 +1129,7 @@ WRITE_LINE_MEMBER( pit8253_device::write_clk2 )
{
set_clock_signal(2, state);
}
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/machine/pit8253.h b/src/devices/machine/pit8253.h
index a5ced426044..67e3f86b23b 100644
--- a/src/emu/machine/pit8253.h
+++ b/src/devices/machine/pit8253.h
@@ -93,6 +93,7 @@ protected:
// device-level overrides
virtual void device_start();
virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
// internal state
struct pit8253_timer
@@ -141,8 +142,6 @@ private:
pit8253_timer m_timers[PIT8253_MAX_TIMER];
- TIMER_CALLBACK_MEMBER(update_timer_cb);
-
inline UINT32 adjusted_count(int bcd, UINT16 val);
void decrease_counter_value(pit8253_timer *timer, INT64 cycles);
void load_counter_value(pit8253_timer *timer);
diff --git a/src/emu/machine/pla.c b/src/devices/machine/pla.c
index e8ca43d448f..e8ca43d448f 100644
--- a/src/emu/machine/pla.c
+++ b/src/devices/machine/pla.c
diff --git a/src/emu/machine/pla.h b/src/devices/machine/pla.h
index 10dbc850370..10dbc850370 100644
--- a/src/emu/machine/pla.h
+++ b/src/devices/machine/pla.h
diff --git a/src/emu/machine/r10696.c b/src/devices/machine/r10696.c
index ab20caed731..ab20caed731 100644
--- a/src/emu/machine/r10696.c
+++ b/src/devices/machine/r10696.c
diff --git a/src/emu/machine/r10696.h b/src/devices/machine/r10696.h
index ca3b87c935e..ca3b87c935e 100644
--- a/src/emu/machine/r10696.h
+++ b/src/devices/machine/r10696.h
diff --git a/src/emu/machine/r10788.c b/src/devices/machine/r10788.c
index f6e9d65ecbf..f6e9d65ecbf 100644
--- a/src/emu/machine/r10788.c
+++ b/src/devices/machine/r10788.c
diff --git a/src/emu/machine/r10788.h b/src/devices/machine/r10788.h
index af58aca65c7..af58aca65c7 100644
--- a/src/emu/machine/r10788.h
+++ b/src/devices/machine/r10788.h
diff --git a/src/emu/machine/ra17xx.c b/src/devices/machine/ra17xx.c
index c1252181c7d..c1252181c7d 100644
--- a/src/emu/machine/ra17xx.c
+++ b/src/devices/machine/ra17xx.c
diff --git a/src/emu/machine/ra17xx.h b/src/devices/machine/ra17xx.h
index 3ca8877d7de..3ca8877d7de 100644
--- a/src/emu/machine/ra17xx.h
+++ b/src/devices/machine/ra17xx.h
diff --git a/src/emu/machine/ram.c b/src/devices/machine/ram.c
index 3a92aa48c1b..3a92aa48c1b 100644
--- a/src/emu/machine/ram.c
+++ b/src/devices/machine/ram.c
diff --git a/src/emu/machine/ram.h b/src/devices/machine/ram.h
index c17832dff16..c17832dff16 100644
--- a/src/emu/machine/ram.h
+++ b/src/devices/machine/ram.h
diff --git a/src/emu/machine/rescap.h b/src/devices/machine/rescap.h
index 23e4b9f4329..23e4b9f4329 100644
--- a/src/emu/machine/rescap.h
+++ b/src/devices/machine/rescap.h
diff --git a/src/emu/machine/rf5c296.c b/src/devices/machine/rf5c296.c
index 72fea9ede66..72fea9ede66 100644
--- a/src/emu/machine/rf5c296.c
+++ b/src/devices/machine/rf5c296.c
diff --git a/src/emu/machine/rf5c296.h b/src/devices/machine/rf5c296.h
index 61556b677b7..61556b677b7 100644
--- a/src/emu/machine/rf5c296.h
+++ b/src/devices/machine/rf5c296.h
diff --git a/src/emu/machine/roc10937.c b/src/devices/machine/roc10937.c
index fbfda7ce0e8..fbfda7ce0e8 100644
--- a/src/emu/machine/roc10937.c
+++ b/src/devices/machine/roc10937.c
diff --git a/src/emu/machine/roc10937.h b/src/devices/machine/roc10937.h
index 9aee3bf6997..9aee3bf6997 100644
--- a/src/emu/machine/roc10937.h
+++ b/src/devices/machine/roc10937.h
diff --git a/src/emu/machine/rp5c01.c b/src/devices/machine/rp5c01.c
index 5ac56b4b415..5ac56b4b415 100644
--- a/src/emu/machine/rp5c01.c
+++ b/src/devices/machine/rp5c01.c
diff --git a/src/emu/machine/rp5c01.h b/src/devices/machine/rp5c01.h
index e0283816067..e0283816067 100644
--- a/src/emu/machine/rp5c01.h
+++ b/src/devices/machine/rp5c01.h
diff --git a/src/emu/machine/rp5c15.c b/src/devices/machine/rp5c15.c
index 7967366c349..7967366c349 100644
--- a/src/emu/machine/rp5c15.c
+++ b/src/devices/machine/rp5c15.c
diff --git a/src/emu/machine/rp5c15.h b/src/devices/machine/rp5c15.h
index 2f97d49d99f..2f97d49d99f 100644
--- a/src/emu/machine/rp5c15.h
+++ b/src/devices/machine/rp5c15.h
diff --git a/src/emu/machine/rp5h01.c b/src/devices/machine/rp5h01.c
index 53691cf160f..53691cf160f 100644
--- a/src/emu/machine/rp5h01.c
+++ b/src/devices/machine/rp5h01.c
diff --git a/src/emu/machine/rp5h01.h b/src/devices/machine/rp5h01.h
index 016f05884ae..016f05884ae 100644
--- a/src/emu/machine/rp5h01.h
+++ b/src/devices/machine/rp5h01.h
diff --git a/src/emu/machine/rtc4543.c b/src/devices/machine/rtc4543.c
index ccbf32b5faa..ccbf32b5faa 100644
--- a/src/emu/machine/rtc4543.c
+++ b/src/devices/machine/rtc4543.c
diff --git a/src/emu/machine/rtc4543.h b/src/devices/machine/rtc4543.h
index c1eafb47efb..c1eafb47efb 100644
--- a/src/emu/machine/rtc4543.h
+++ b/src/devices/machine/rtc4543.h
diff --git a/src/emu/machine/rtc65271.c b/src/devices/machine/rtc65271.c
index 074b8d87f48..074b8d87f48 100644
--- a/src/emu/machine/rtc65271.c
+++ b/src/devices/machine/rtc65271.c
diff --git a/src/emu/machine/rtc65271.h b/src/devices/machine/rtc65271.h
index b81e92755d5..b81e92755d5 100644
--- a/src/emu/machine/rtc65271.h
+++ b/src/devices/machine/rtc65271.h
diff --git a/src/emu/machine/rtc9701.c b/src/devices/machine/rtc9701.c
index afa46572ef4..afa46572ef4 100644
--- a/src/emu/machine/rtc9701.c
+++ b/src/devices/machine/rtc9701.c
diff --git a/src/emu/machine/rtc9701.h b/src/devices/machine/rtc9701.h
index eaad28ad0b5..eaad28ad0b5 100644
--- a/src/emu/machine/rtc9701.h
+++ b/src/devices/machine/rtc9701.h
diff --git a/src/emu/machine/s2636.c b/src/devices/machine/s2636.c
index c3cf7bb8178..c3cf7bb8178 100644
--- a/src/emu/machine/s2636.c
+++ b/src/devices/machine/s2636.c
diff --git a/src/emu/machine/s2636.h b/src/devices/machine/s2636.h
index 082eeabab9f..082eeabab9f 100644
--- a/src/emu/machine/s2636.h
+++ b/src/devices/machine/s2636.h
diff --git a/src/emu/machine/s3520cf.c b/src/devices/machine/s3520cf.c
index 3a183982298..3a183982298 100644
--- a/src/emu/machine/s3520cf.c
+++ b/src/devices/machine/s3520cf.c
diff --git a/src/emu/machine/s3520cf.h b/src/devices/machine/s3520cf.h
index af7ba33a835..af7ba33a835 100644
--- a/src/emu/machine/s3520cf.h
+++ b/src/devices/machine/s3520cf.h
diff --git a/src/emu/machine/s3c2400.c b/src/devices/machine/s3c2400.c
index d47e81b08ce..d47e81b08ce 100644
--- a/src/emu/machine/s3c2400.c
+++ b/src/devices/machine/s3c2400.c
diff --git a/src/emu/machine/s3c2400.h b/src/devices/machine/s3c2400.h
index f274e5ad36d..f274e5ad36d 100644
--- a/src/emu/machine/s3c2400.h
+++ b/src/devices/machine/s3c2400.h
diff --git a/src/emu/machine/s3c2410.c b/src/devices/machine/s3c2410.c
index ac5bec78180..ac5bec78180 100644
--- a/src/emu/machine/s3c2410.c
+++ b/src/devices/machine/s3c2410.c
diff --git a/src/emu/machine/s3c2410.h b/src/devices/machine/s3c2410.h
index 6ad02c90d1e..6ad02c90d1e 100644
--- a/src/emu/machine/s3c2410.h
+++ b/src/devices/machine/s3c2410.h
diff --git a/src/emu/machine/s3c2440.c b/src/devices/machine/s3c2440.c
index eaa0301d157..eaa0301d157 100644
--- a/src/emu/machine/s3c2440.c
+++ b/src/devices/machine/s3c2440.c
diff --git a/src/emu/machine/s3c2440.h b/src/devices/machine/s3c2440.h
index b76148eca09..b76148eca09 100644
--- a/src/emu/machine/s3c2440.h
+++ b/src/devices/machine/s3c2440.h
diff --git a/src/emu/machine/s3c24xx.inc b/src/devices/machine/s3c24xx.inc
index d90f105b7bb..d90f105b7bb 100644
--- a/src/emu/machine/s3c24xx.inc
+++ b/src/devices/machine/s3c24xx.inc
diff --git a/src/emu/machine/s3c44b0.c b/src/devices/machine/s3c44b0.c
index fb9d3f15036..fb9d3f15036 100644
--- a/src/emu/machine/s3c44b0.c
+++ b/src/devices/machine/s3c44b0.c
diff --git a/src/emu/machine/s3c44b0.h b/src/devices/machine/s3c44b0.h
index 462bda280d2..462bda280d2 100644
--- a/src/emu/machine/s3c44b0.h
+++ b/src/devices/machine/s3c44b0.h
diff --git a/src/emu/machine/saturn.c b/src/devices/machine/saturn.c
index a9ad0638c68..cf79fdc26a2 100644
--- a/src/emu/machine/saturn.c
+++ b/src/devices/machine/saturn.c
@@ -38,7 +38,7 @@
H counter value 0x0ec (236) -> 0xe0
H counter value 0x12c (300) -> 0x100
- Timer 1 seems to count backwards compared to Timer 0 from setting 0x6b onward.
- - Yabause claims that if VDP2 DISP bit isn't enabled then vblank irqs (hblank too?)
+ - Yabause claims that if VDP2 DISP bit isn't enabled then vblank irqs (hblank too?)
doesn't happen.
**************************************************************************************/
diff --git a/src/emu/machine/serflash.c b/src/devices/machine/serflash.c
index 60ff6712a2b..60ff6712a2b 100644
--- a/src/emu/machine/serflash.c
+++ b/src/devices/machine/serflash.c
diff --git a/src/emu/machine/serflash.h b/src/devices/machine/serflash.h
index fdda31e3912..fdda31e3912 100644
--- a/src/emu/machine/serflash.h
+++ b/src/devices/machine/serflash.h
diff --git a/src/emu/machine/smc91c9x.c b/src/devices/machine/smc91c9x.c
index c075f03fb76..c075f03fb76 100644
--- a/src/emu/machine/smc91c9x.c
+++ b/src/devices/machine/smc91c9x.c
diff --git a/src/emu/machine/smc91c9x.h b/src/devices/machine/smc91c9x.h
index 799af951928..799af951928 100644
--- a/src/emu/machine/smc91c9x.h
+++ b/src/devices/machine/smc91c9x.h
diff --git a/src/emu/machine/smpc.c b/src/devices/machine/smpc.c
index eab928f4daa..caf0834da5a 100644
--- a/src/emu/machine/smpc.c
+++ b/src/devices/machine/smpc.c
@@ -686,8 +686,7 @@ void saturn_state::smpc_comreg_exec(address_space &space, UINT8 data, UINT8 is_s
case 0x0a:
case 0x0b:
popmessage ("SMPC: NETLINK %s, contact MAMEdev",(data & 1) ? "off" : "on");
- break;
- case 0x0d:
+ break; case 0x0d:
if(LOG_SMPC) printf ("SMPC: System Reset\n");
smpc_system_reset();
break;
@@ -926,8 +925,9 @@ UINT8 saturn_state::smpc_th_control_mode(UINT8 pad_n)
case 2:
res = th<<6;
// 1 C B Right Left Down Up
+ // WHP actually has a very specific code at 0x6015f30, doesn't like bits 0-1 active here ...
res|= (((machine().root_device().ioport(padnames[pad_n])->read()>>4)) & 0x30); // C & B
- res|= (((machine().root_device().ioport(padnames[pad_n])->read()>>12)) & 0xf);
+ res|= (((machine().root_device().ioport(padnames[pad_n])->read()>>12)) & 0xc);
break;
case 1:
res = th<<6;
@@ -939,6 +939,8 @@ UINT8 saturn_state::smpc_th_control_mode(UINT8 pad_n)
// 0 Start A 0 0 Down Up
res|= (((machine().root_device().ioport(padnames[pad_n])->read()>>6)) & 0x30); // Start & A
res|= (((machine().root_device().ioport(padnames[pad_n])->read()>>12)) & 0x3);
+ // ... and actually wants bits 2 - 3 active here.
+ res|= 0xc;
break;
}
@@ -1025,13 +1027,13 @@ WRITE8_MEMBER( saturn_state::saturn_SMPC_w )
{
if(data & 0x40)
{
- if(LOG_PAD_CMD) printf("SMPC: BREAK request\n");
+ if(LOG_PAD_CMD) printf("SMPC: BREAK request %02x\n",data);
m_smpc.SR &= 0x0f;
m_smpc.intback_stage = 0;
}
else if(data & 0x80)
{
- if(LOG_PAD_CMD) printf("SMPC: CONTINUE request\n");
+ if(LOG_PAD_CMD) printf("SMPC: CONTINUE request %02x\n",data);
machine().scheduler().timer_set(attotime::from_usec(700), timer_expired_delegate(FUNC(saturn_state::intback_peripheral),this),0); /* TODO: is timing correct? */
m_smpc.OREG[31] = 0x10;
m_smpc.SF = 0x01; //TODO: set hand-shake flag?
diff --git a/src/emu/machine/smpc.h b/src/devices/machine/smpc.h
index 7bb17fe337d..7bb17fe337d 100644
--- a/src/emu/machine/smpc.h
+++ b/src/devices/machine/smpc.h
diff --git a/src/emu/machine/spchrom.c b/src/devices/machine/spchrom.c
index a49590e9e00..a49590e9e00 100644
--- a/src/emu/machine/spchrom.c
+++ b/src/devices/machine/spchrom.c
diff --git a/src/emu/machine/spchrom.h b/src/devices/machine/spchrom.h
index 520c7fc967b..520c7fc967b 100644
--- a/src/emu/machine/spchrom.h
+++ b/src/devices/machine/spchrom.h
diff --git a/src/emu/machine/steppers.c b/src/devices/machine/steppers.c
index e1eea4d648e..e1eea4d648e 100644
--- a/src/emu/machine/steppers.c
+++ b/src/devices/machine/steppers.c
diff --git a/src/emu/machine/steppers.h b/src/devices/machine/steppers.h
index 1ed62da6885..1ed62da6885 100644
--- a/src/emu/machine/steppers.h
+++ b/src/devices/machine/steppers.h
diff --git a/src/emu/machine/strata.c b/src/devices/machine/strata.c
index 01651eb90bd..01651eb90bd 100644
--- a/src/emu/machine/strata.c
+++ b/src/devices/machine/strata.c
diff --git a/src/emu/machine/strata.h b/src/devices/machine/strata.h
index c037a24396b..c037a24396b 100644
--- a/src/emu/machine/strata.h
+++ b/src/devices/machine/strata.h
diff --git a/src/emu/machine/stvcd.c b/src/devices/machine/stvcd.c
index bb3ed98115b..eebb8d11cb4 100644
--- a/src/emu/machine/stvcd.c
+++ b/src/devices/machine/stvcd.c
@@ -862,7 +862,11 @@ void saturn_state::cd_exec_command( void )
//printf("Partition %08x %04x\n",bufnum,cr4);
}
- hirqreg |= (CMOK|DRDY);
+ //printf("%04x\n",cr4);
+ if(cr4 == 0)
+ hirqreg |= (CMOK);
+ else
+ hirqreg |= (CMOK|DRDY);
status_type = 1;
}
break;
@@ -1908,6 +1912,7 @@ void saturn_state::cd_writeWord(UINT32 addr, UINT16 data)
cr1 = data;
cd_stat &= ~CD_STAT_PERI;
cmd_pending |= 1;
+ sh1_timer->adjust(attotime::never);
break;
case 0x001c:
case 0x001e:
diff --git a/src/emu/machine/t10mmc.c b/src/devices/machine/t10mmc.c
index 86e3ec696ed..86e3ec696ed 100644
--- a/src/emu/machine/t10mmc.c
+++ b/src/devices/machine/t10mmc.c
diff --git a/src/emu/machine/t10mmc.h b/src/devices/machine/t10mmc.h
index cfebfc1694c..cfebfc1694c 100644
--- a/src/emu/machine/t10mmc.h
+++ b/src/devices/machine/t10mmc.h
diff --git a/src/emu/machine/t10sbc.c b/src/devices/machine/t10sbc.c
index c5d68be8162..c5d68be8162 100644
--- a/src/emu/machine/t10sbc.c
+++ b/src/devices/machine/t10sbc.c
diff --git a/src/emu/machine/t10sbc.h b/src/devices/machine/t10sbc.h
index d32c0beee57..d32c0beee57 100644
--- a/src/emu/machine/t10sbc.h
+++ b/src/devices/machine/t10sbc.h
diff --git a/src/emu/machine/t10spc.c b/src/devices/machine/t10spc.c
index 80b279efb44..80b279efb44 100644
--- a/src/emu/machine/t10spc.c
+++ b/src/devices/machine/t10spc.c
diff --git a/src/emu/machine/t10spc.h b/src/devices/machine/t10spc.h
index 778fd40bce1..778fd40bce1 100644
--- a/src/emu/machine/t10spc.h
+++ b/src/devices/machine/t10spc.h
diff --git a/src/emu/machine/tc009xlvc.c b/src/devices/machine/tc009xlvc.c
index 5897d555d88..5897d555d88 100644
--- a/src/emu/machine/tc009xlvc.c
+++ b/src/devices/machine/tc009xlvc.c
diff --git a/src/emu/machine/tc009xlvc.h b/src/devices/machine/tc009xlvc.h
index de7e20a5c43..de7e20a5c43 100644
--- a/src/emu/machine/tc009xlvc.h
+++ b/src/devices/machine/tc009xlvc.h
diff --git a/src/emu/machine/terminal.c b/src/devices/machine/terminal.c
index f46bcd3156e..f46bcd3156e 100644
--- a/src/emu/machine/terminal.c
+++ b/src/devices/machine/terminal.c
diff --git a/src/emu/machine/terminal.h b/src/devices/machine/terminal.h
index 0a0e2ff9b77..0a0e2ff9b77 100644
--- a/src/emu/machine/terminal.h
+++ b/src/devices/machine/terminal.h
diff --git a/src/emu/machine/timekpr.c b/src/devices/machine/timekpr.c
index 940fa84f259..940fa84f259 100644
--- a/src/emu/machine/timekpr.c
+++ b/src/devices/machine/timekpr.c
diff --git a/src/emu/machine/timekpr.h b/src/devices/machine/timekpr.h
index 6e72f9add62..6e72f9add62 100644
--- a/src/emu/machine/timekpr.h
+++ b/src/devices/machine/timekpr.h
diff --git a/src/emu/machine/tmp68301.c b/src/devices/machine/tmp68301.c
index 26a4d2fea70..955a10c463b 100644
--- a/src/emu/machine/tmp68301.c
+++ b/src/devices/machine/tmp68301.c
@@ -82,17 +82,20 @@ READ16_MEMBER(tmp68301_device::pdir_r)
WRITE16_MEMBER(tmp68301_device::pdir_w)
{
- m_pdir = data;
+ COMBINE_DATA(&m_pdir);
}
READ16_MEMBER(tmp68301_device::pdr_r)
{
- return m_in_parallel_cb(0) & ~m_pdir;
+ return (m_in_parallel_cb(0) & ~m_pdir) | (m_pdr & m_pdir);
}
WRITE16_MEMBER(tmp68301_device::pdr_w)
{
- m_out_parallel_cb(0, data & m_pdir, mem_mask);
+ UINT16 old = m_pdr;
+ COMBINE_DATA(&m_pdr);
+ m_pdr = (old & ~m_pdir) | (m_pdr & m_pdir);
+ m_out_parallel_cb(0, m_pdr, mem_mask);
}
@@ -105,6 +108,7 @@ tmp68301_device::tmp68301_device(const machine_config &mconfig, const char *tag,
m_iisr(0),
m_scr(0),
m_pdir(0),
+ m_pdr(0),
m_space_config("regs", ENDIANNESS_LITTLE, 16, 10, 0, NULL, *ADDRESS_MAP_NAME(tmp68301_regs))
{
memset(m_regs, 0, sizeof(m_regs));
@@ -133,6 +137,7 @@ void tmp68301_device::device_start()
save_item(NAME(m_iisr));
save_item(NAME(m_scr));
save_item(NAME(m_pdir));
+ save_item(NAME(m_pdr));
}
//-------------------------------------------------
diff --git a/src/emu/machine/tmp68301.h b/src/devices/machine/tmp68301.h
index d7a49a434b7..b96296d31f2 100644
--- a/src/emu/machine/tmp68301.h
+++ b/src/devices/machine/tmp68301.h
@@ -78,6 +78,7 @@ private:
UINT16 m_iisr;
UINT16 m_scr;
UINT16 m_pdir;
+ UINT16 m_pdr;
inline UINT16 read_word(offs_t address);
inline void write_word(offs_t address, UINT16 data);
diff --git a/src/emu/machine/tms1024.c b/src/devices/machine/tms1024.c
index f362349ef16..f362349ef16 100644
--- a/src/emu/machine/tms1024.c
+++ b/src/devices/machine/tms1024.c
diff --git a/src/emu/machine/tms1024.h b/src/devices/machine/tms1024.h
index a7bdb4539bf..a7bdb4539bf 100644
--- a/src/emu/machine/tms1024.h
+++ b/src/devices/machine/tms1024.h
diff --git a/src/emu/machine/tms5501.c b/src/devices/machine/tms5501.c
index 71f3f298cde..71f3f298cde 100644
--- a/src/emu/machine/tms5501.c
+++ b/src/devices/machine/tms5501.c
diff --git a/src/emu/machine/tms5501.h b/src/devices/machine/tms5501.h
index 0a62f751910..0a62f751910 100644
--- a/src/emu/machine/tms5501.h
+++ b/src/devices/machine/tms5501.h
diff --git a/src/emu/machine/tms6100.c b/src/devices/machine/tms6100.c
index c0b355feee5..7d0f3226ca5 100644
--- a/src/emu/machine/tms6100.c
+++ b/src/devices/machine/tms6100.c
@@ -88,6 +88,11 @@
#define TMS6100_READ_PENDING 0x01
#define TMS6100_NEXT_READ_IS_DUMMY 0x02
+/* Variants */
+
+#define TMS6110_IS_TMS6100 (1)
+#define TMS6110_IS_M58819 (2)
+
const device_type TMS6100 = &device_creator<tms6100_device>;
@@ -136,15 +141,15 @@ void tms6100_device::device_start()
save_item(NAME(m_m0));
save_item(NAME(m_m1));
save_item(NAME(m_state));
- //save_item(NAME(m_variant));
- //tms6100_set_variant(tms, TMS6110_IS_TMS6100);
+ save_item(NAME(m_variant));
+ set_variant(TMS6110_IS_TMS6100);
}
void m58819_device::device_start()
{
tms6100_device::device_start();
- //tms6100_set_variant(tms, TMS6110_IS_M58819);
+ set_variant(TMS6110_IS_M58819);
}
//-------------------------------------------------
@@ -165,6 +170,11 @@ void tms6100_device::device_reset()
m_data = 0;
}
+void tms6100_device::set_variant(int variant)
+{
+ m_variant = variant;
+}
+
WRITE_LINE_MEMBER(tms6100_device::tms6100_m0_w)
{
if (state != m_m0)
@@ -199,15 +209,14 @@ WRITE_LINE_MEMBER(tms6100_device::tms6100_romclock_w)
else
{
/* read bit at address */
- /* if (m_variant == TMS6110_IS_M58819)
+ if (m_variant == TMS6110_IS_M58819)
{
m_data = (m_rom[m_address >> 3] >> (7-(m_address & 0x07))) & 1;
}
else // m_variant == (TMS6110_IS_TMS6100 || TMS6110_IS_TMS6125)
{
- */
- m_data = (m_rom[m_address >> 3] >> (m_address & 0x07)) & 1;
- /* } */
+ m_data = (m_rom[m_address >> 3] >> (m_address & 0x07)) & 1;
+ }
m_address++;
}
m_state &= ~TMS6100_READ_PENDING;
diff --git a/src/emu/machine/tms6100.h b/src/devices/machine/tms6100.h
index 2838adf63cf..4aed02a846b 100644
--- a/src/emu/machine/tms6100.h
+++ b/src/devices/machine/tms6100.h
@@ -25,6 +25,7 @@ protected:
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
+ void set_variant(int variant);
private:
// internal state
required_region_ptr<UINT8> m_rom;
@@ -37,7 +38,7 @@ private:
UINT8 m_tms_clock;
UINT8 m_data;
UINT8 m_state;
- //UINT8 m_variant;
+ UINT8 m_variant;
};
diff --git a/src/emu/machine/tms9901.c b/src/devices/machine/tms9901.c
index 8ca2f4b2bf7..8ca2f4b2bf7 100644
--- a/src/emu/machine/tms9901.c
+++ b/src/devices/machine/tms9901.c
diff --git a/src/emu/machine/tms9901.h b/src/devices/machine/tms9901.h
index d6859bf21c5..d6859bf21c5 100644
--- a/src/emu/machine/tms9901.h
+++ b/src/devices/machine/tms9901.h
diff --git a/src/emu/machine/tms9902.c b/src/devices/machine/tms9902.c
index 557da504f96..557da504f96 100644
--- a/src/emu/machine/tms9902.c
+++ b/src/devices/machine/tms9902.c
diff --git a/src/emu/machine/tms9902.h b/src/devices/machine/tms9902.h
index ba775d3caa1..ba775d3caa1 100644
--- a/src/emu/machine/tms9902.h
+++ b/src/devices/machine/tms9902.h
diff --git a/src/emu/machine/upd1990a.c b/src/devices/machine/upd1990a.c
index f40bb30af48..f40bb30af48 100644
--- a/src/emu/machine/upd1990a.c
+++ b/src/devices/machine/upd1990a.c
diff --git a/src/emu/machine/upd1990a.h b/src/devices/machine/upd1990a.h
index 745f6c6e648..745f6c6e648 100644
--- a/src/emu/machine/upd1990a.h
+++ b/src/devices/machine/upd1990a.h
diff --git a/src/emu/machine/upd4701.c b/src/devices/machine/upd4701.c
index 4a7adfda291..4a7adfda291 100644
--- a/src/emu/machine/upd4701.c
+++ b/src/devices/machine/upd4701.c
diff --git a/src/emu/machine/upd4701.h b/src/devices/machine/upd4701.h
index e8cb0e0243f..e8cb0e0243f 100644
--- a/src/emu/machine/upd4701.h
+++ b/src/devices/machine/upd4701.h
diff --git a/src/emu/machine/upd4992.c b/src/devices/machine/upd4992.c
index 3636a7e7d75..3636a7e7d75 100644
--- a/src/emu/machine/upd4992.c
+++ b/src/devices/machine/upd4992.c
diff --git a/src/emu/machine/upd4992.h b/src/devices/machine/upd4992.h
index 90d3f303c83..90d3f303c83 100644
--- a/src/emu/machine/upd4992.h
+++ b/src/devices/machine/upd4992.h
diff --git a/src/emu/machine/upd7002.c b/src/devices/machine/upd7002.c
index b74d1bbf1d0..b74d1bbf1d0 100644
--- a/src/emu/machine/upd7002.c
+++ b/src/devices/machine/upd7002.c
diff --git a/src/emu/machine/upd7002.h b/src/devices/machine/upd7002.h
index aba6bb8b36f..aba6bb8b36f 100644
--- a/src/emu/machine/upd7002.h
+++ b/src/devices/machine/upd7002.h
diff --git a/src/emu/machine/upd71071.c b/src/devices/machine/upd71071.c
index 59965256bc5..59965256bc5 100644
--- a/src/emu/machine/upd71071.c
+++ b/src/devices/machine/upd71071.c
diff --git a/src/emu/machine/upd71071.h b/src/devices/machine/upd71071.h
index 99da46f80d6..99da46f80d6 100644
--- a/src/emu/machine/upd71071.h
+++ b/src/devices/machine/upd71071.h
diff --git a/src/emu/machine/upd765.c b/src/devices/machine/upd765.c
index 5a40d63aad3..e1ce769880e 100644
--- a/src/emu/machine/upd765.c
+++ b/src/devices/machine/upd765.c
@@ -2187,12 +2187,12 @@ std::string upd765_family_device::tts(attotime t)
{
char buf[256];
const char *sign = "";
- if(t.seconds < 0) {
+ if(t.seconds() < 0) {
t = attotime::zero-t;
sign = "-";
}
- int nsec = t.attoseconds / ATTOSECONDS_PER_NANOSECOND;
- sprintf(buf, "%s%04d.%03d,%03d,%03d", sign, int(t.seconds), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
+ int nsec = t.attoseconds() / ATTOSECONDS_PER_NANOSECOND;
+ sprintf(buf, "%s%04d.%03d,%03d,%03d", sign, int(t.seconds()), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
return buf;
}
diff --git a/src/emu/machine/upd765.h b/src/devices/machine/upd765.h
index a3465887943..a3465887943 100644
--- a/src/emu/machine/upd765.h
+++ b/src/devices/machine/upd765.h
diff --git a/src/emu/machine/v3021.c b/src/devices/machine/v3021.c
index de8f8526f25..de8f8526f25 100644
--- a/src/emu/machine/v3021.c
+++ b/src/devices/machine/v3021.c
diff --git a/src/emu/machine/v3021.h b/src/devices/machine/v3021.h
index 3dd1c709d1e..3dd1c709d1e 100644
--- a/src/emu/machine/v3021.h
+++ b/src/devices/machine/v3021.h
diff --git a/src/emu/machine/vrc4373.c b/src/devices/machine/vrc4373.c
index 860b7ff601a..860b7ff601a 100644
--- a/src/emu/machine/vrc4373.c
+++ b/src/devices/machine/vrc4373.c
diff --git a/src/emu/machine/vrc4373.h b/src/devices/machine/vrc4373.h
index 31439b58537..31439b58537 100644
--- a/src/emu/machine/vrc4373.h
+++ b/src/devices/machine/vrc4373.h
diff --git a/src/devices/machine/vt82c496.c b/src/devices/machine/vt82c496.c
new file mode 100644
index 00000000000..0a05d9cf17a
--- /dev/null
+++ b/src/devices/machine/vt82c496.c
@@ -0,0 +1,225 @@
+// license:BSD-3-Clause
+// copyright-holders:Barry Rodewald
+/*
+
+ VIA VT82C496G "Green PC" system chipset
+
+*/
+
+#include "vt82c496.h"
+
+/***************************************************************************
+ IMPLEMENTATION
+***************************************************************************/
+
+const device_type VT82C496 = &device_creator<vt82c496_device>;
+
+
+vt82c496_device::vt82c496_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, VT82C496, "VIA VT82C496G system chipset", tag, owner, clock, "vt82c496", __FILE__)
+{
+}
+
+void vt82c496_device::device_start()
+{
+ /* get address space we are working on */
+ device_t *cpu = machine().device(m_cpu_tag);
+ assert(cpu != NULL);
+
+ m_space = &cpu->memory().space(AS_PROGRAM);
+
+ /* get rom region */
+ m_rom = machine().root_device().memregion(m_region_tag)->base();
+
+ save_pointer(m_reg,"Registers",0x100);
+
+ m_ram = machine().device<ram_device>(RAM_TAG);
+}
+
+void vt82c496_device::device_reset()
+{
+ memset(m_reg,0,0x100);
+
+ // set up default ROM banking
+ m_space->install_read_bank(0xc0000,0xc3fff,0,0,"bios_c0_r");
+ m_space->install_read_bank(0xc4000,0xc7fff,0,0,"bios_c4_r");
+ m_space->install_read_bank(0xc8000,0xcbfff,0,0,"bios_c8_r");
+ m_space->install_read_bank(0xcc000,0xcffff,0,0,"bios_cc_r");
+ m_space->install_read_bank(0xd0000,0xd3fff,0,0,"bios_d0_r");
+ m_space->install_read_bank(0xd4000,0xd7fff,0,0,"bios_d4_r");
+ m_space->install_read_bank(0xd8000,0xdbfff,0,0,"bios_d8_r");
+ m_space->install_read_bank(0xdc000,0xdffff,0,0,"bios_dc_r");
+ m_space->install_read_bank(0xe0000,0xeffff,0,0,"bios_e0_r");
+ m_space->install_read_bank(0xf0000,0xfffff,0,0,"bios_f0_r");
+ m_space->nop_write(0xc0000,0xfffff,0,0);
+ machine().root_device().membank("bios_c0_r")->set_base(m_rom);
+ machine().root_device().membank("bios_c4_r")->set_base(m_rom+0x4000);
+ machine().root_device().membank("bios_c8_r")->set_base(m_rom+0x8000);
+ machine().root_device().membank("bios_cc_r")->set_base(m_rom+0xc000);
+ machine().root_device().membank("bios_d0_r")->set_base(m_rom+0x10000);
+ machine().root_device().membank("bios_d4_r")->set_base(m_rom+0x14000);
+ machine().root_device().membank("bios_d8_r")->set_base(m_rom+0x18000);
+ machine().root_device().membank("bios_dc_r")->set_base(m_rom+0x1c000);
+ machine().root_device().membank("bios_e0_r")->set_base(m_rom+0x20000);
+ machine().root_device().membank("bios_f0_r")->set_base(m_rom+0x30000);
+}
+
+READ8_MEMBER(vt82c496_device::read)
+{
+ if(offset == 1)
+ return m_reg[m_reg_select];
+ return 0x00;
+}
+
+WRITE8_MEMBER(vt82c496_device::write)
+{
+ if(offset == 0)
+ m_reg_select = data;
+ if(offset == 1)
+ {
+ m_reg[m_reg_select] = data;
+ switch(m_reg_select)
+ {
+ case 0x30:
+ update_mem_c0(data);
+ break;
+ case 0x31:
+ update_mem_d0(data);
+ break;
+ case 0x32:
+ update_mem_e0(data);
+ break;
+ }
+ }
+}
+
+void vt82c496_device::update_mem_c0(UINT8 data)
+{
+ if(data & 0x80)
+ machine().root_device().membank("bios_cc_r")->set_base(m_ram->pointer()+0xcc000);
+ else
+ machine().root_device().membank("bios_cc_r")->set_base(m_rom+0xc000);
+ if(data & 0x40)
+ {
+ m_space->install_write_bank(0xcc000,0xcffff,0,0,"bios_cc_w");
+ machine().root_device().membank("bios_cc_w")->set_base(m_ram->pointer()+0xcc000);
+ }
+ else
+ m_space->nop_write(0xcc000,0xcffff,0,0);
+
+ if(data & 0x20)
+ machine().root_device().membank("bios_c8_r")->set_base(m_ram->pointer()+0xc8000);
+ else
+ machine().root_device().membank("bios_c8_r")->set_base(m_rom+0x8000);
+ if(data & 0x10)
+ {
+ m_space->install_write_bank(0xc8000,0xcbfff,0,0,"bios_c8_w");
+ machine().root_device().membank("bios_c8_w")->set_base(m_ram->pointer()+0xc8000);
+ }
+ else
+ m_space->nop_write(0xc8000,0xcbfff,0,0);
+
+ if(data & 0x08)
+ machine().root_device().membank("bios_c4_r")->set_base(m_ram->pointer()+0xc4000);
+ else
+ machine().root_device().membank("bios_c4_r")->set_base(m_rom+0x4000);
+ if(data & 0x04)
+ {
+ m_space->install_write_bank(0xc4000,0xc7fff,0,0,"bios_c4_w");
+ machine().root_device().membank("bios_c4_w")->set_base(m_ram->pointer()+0xc4000);
+ }
+ else
+ m_space->nop_write(0xc4000,0xc7fff,0,0);
+
+ if(data & 0x02)
+ machine().root_device().membank("bios_c0_r")->set_base(m_ram->pointer()+0xc0000);
+ else
+ machine().root_device().membank("bios_c0_r")->set_base(m_rom+0);
+ if(data & 0x01)
+ {
+ m_space->install_write_bank(0xc0000,0xc3fff,0,0,"bios_c0_w");
+ machine().root_device().membank("bios_c0_w")->set_base(m_ram->pointer()+0xc0000);
+ }
+ else
+ m_space->nop_write(0xc0000,0xc3fff,0,0);
+}
+
+void vt82c496_device::update_mem_d0(UINT8 data)
+{
+ if(data & 0x80)
+ machine().root_device().membank("bios_dc_r")->set_base(m_ram->pointer()+0xdc000);
+ else
+ machine().root_device().membank("bios_dc_r")->set_base(m_rom+0x1c000);
+ if(data & 0x40)
+ {
+ m_space->install_write_bank(0xdc000,0xdffff,0,0,"bios_dc_w");
+ machine().root_device().membank("bios_dc_w")->set_base(m_ram->pointer()+0xdc000);
+ }
+ else
+ m_space->nop_write(0xdc000,0xdffff,0,0);
+
+ if(data & 0x20)
+ machine().root_device().membank("bios_d8_r")->set_base(m_ram->pointer()+0xd8000);
+ else
+ machine().root_device().membank("bios_d8_r")->set_base(m_rom+0x18000);
+ if(data & 0x10)
+ {
+ m_space->install_write_bank(0xd8000,0xdbfff,0,0,"bios_d8_w");
+ machine().root_device().membank("bios_d8_w")->set_base(m_ram->pointer()+0xd8000);
+ }
+ else
+ m_space->nop_write(0xd8000,0xdbfff,0,0);
+
+ if(data & 0x08)
+ machine().root_device().membank("bios_d4_r")->set_base(m_ram->pointer()+0xd4000);
+ else
+ machine().root_device().membank("bios_d4_r")->set_base(m_rom+0x14000);
+ if(data & 0x04)
+ {
+ m_space->install_write_bank(0xd4000,0xd7fff,0,0,"bios_d4_w");
+ machine().root_device().membank("bios_d4_w")->set_base(m_ram->pointer()+0xd4000);
+ }
+ else
+ m_space->nop_write(0xd4000,0xd7fff,0,0);
+
+ if(data & 0x02)
+ machine().root_device().membank("bios_d0_r")->set_base(m_ram->pointer()+0xd0000);
+ else
+ machine().root_device().membank("bios_d0_r")->set_base(m_rom+0x10000);
+ if(data & 0x01)
+ {
+ m_space->install_write_bank(0xd0000,0xd3fff,0,0,"bios_d0_w");
+ machine().root_device().membank("bios_d0_w")->set_base(m_ram->pointer()+0xd0000);
+ }
+ else
+ m_space->nop_write(0xd0000,0xd3fff,0,0);
+}
+
+void vt82c496_device::update_mem_e0(UINT8 data)
+{
+ if(data & 0x80)
+ machine().root_device().membank("bios_e0_r")->set_base(m_ram->pointer()+0xe0000);
+ else
+ machine().root_device().membank("bios_e0_r")->set_base(m_rom+0x20000);
+
+ if(data & 0x40)
+ {
+ m_space->install_write_bank(0xe0000,0xeffff,0,0,"bios_e0_w");
+ machine().root_device().membank("bios_e0_w")->set_base(m_ram->pointer()+0xe0000);
+ }
+ else
+ m_space->nop_write(0xe0000,0xeffff,0,0);
+
+ if(data & 0x20)
+ machine().root_device().membank("bios_f0_r")->set_base(m_ram->pointer()+0xf0000);
+ else
+ machine().root_device().membank("bios_f0_r")->set_base(m_rom+0x30000);
+
+ if(data & 0x10)
+ {
+ m_space->install_write_bank(0xf0000,0xfffff,0,0,"bios_f0_w");
+ machine().root_device().membank("bios_f0_w")->set_base(m_ram->pointer()+0xf0000);
+ }
+ else
+ m_space->nop_write(0xf0000,0xfffff,0,0);
+}
diff --git a/src/devices/machine/vt82c496.h b/src/devices/machine/vt82c496.h
new file mode 100644
index 00000000000..4e1a79a0943
--- /dev/null
+++ b/src/devices/machine/vt82c496.h
@@ -0,0 +1,60 @@
+// license:BSD-3-Clause
+// copyright-holders:Barry Rodewald
+/*
+
+ VIA VT82C496G "Green PC" system chipset
+
+*/
+
+#ifndef __VT82C496_H__
+#define __VT82C496_H__
+
+#include "emu.h"
+#include "ram.h"
+
+#define MCFG_VT82C496_ADD(_tag) \
+ MCFG_DEVICE_ADD(_tag, VT82C496, 0)
+
+#define MCFG_VT82C496_CPU( _tag ) \
+ vt82c496_device::static_set_cpu(*device, _tag);
+
+#define MCFG_VT82C496_REGION( _tag ) \
+ vt82c496_device::static_set_region(*device, _tag);
+
+class vt82c496_device : public device_t
+{
+public:
+ // construction/destruction
+ vt82c496_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ static void static_set_cpu(device_t &device, const char *tag) { dynamic_cast<vt82c496_device &>(device).m_cpu_tag = tag; }
+ static void static_set_region(device_t &device, const char *tag) { dynamic_cast<vt82c496_device &>(device).m_region_tag = tag; }
+
+ DECLARE_READ8_MEMBER(read);
+ DECLARE_WRITE8_MEMBER(write);
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+private:
+ const char* m_cpu_tag;
+ const char* m_region_tag;
+// cpu_device* m_maincpu;
+ address_space* m_space;
+ ram_device* m_ram;
+ UINT8* m_rom;
+
+ UINT8 m_reg[0x100];
+ UINT8 m_reg_select;
+
+ void update_mem_c0(UINT8 data);
+ void update_mem_d0(UINT8 data);
+ void update_mem_e0(UINT8 data);
+};
+
+// device type definition
+extern const device_type VT82C496;
+
+
+#endif /* __VT82C496_H__ */
diff --git a/src/emu/machine/vt83c461.c b/src/devices/machine/vt83c461.c
index 1957b848c9b..1957b848c9b 100644
--- a/src/emu/machine/vt83c461.c
+++ b/src/devices/machine/vt83c461.c
diff --git a/src/emu/machine/vt83c461.h b/src/devices/machine/vt83c461.h
index 18e737ed29b..18e737ed29b 100644
--- a/src/emu/machine/vt83c461.h
+++ b/src/devices/machine/vt83c461.h
diff --git a/src/emu/machine/wd11c00_17.c b/src/devices/machine/wd11c00_17.c
index 0f38c32c624..0f38c32c624 100644
--- a/src/emu/machine/wd11c00_17.c
+++ b/src/devices/machine/wd11c00_17.c
diff --git a/src/emu/machine/wd11c00_17.h b/src/devices/machine/wd11c00_17.h
index adc8a9f2c64..adc8a9f2c64 100644
--- a/src/emu/machine/wd11c00_17.h
+++ b/src/devices/machine/wd11c00_17.h
diff --git a/src/emu/machine/wd2010.c b/src/devices/machine/wd2010.c
index 6f50622ec79..6f50622ec79 100644
--- a/src/emu/machine/wd2010.c
+++ b/src/devices/machine/wd2010.c
diff --git a/src/emu/machine/wd2010.h b/src/devices/machine/wd2010.h
index 678844f28d6..678844f28d6 100644
--- a/src/emu/machine/wd2010.h
+++ b/src/devices/machine/wd2010.h
diff --git a/src/emu/machine/wd33c93.c b/src/devices/machine/wd33c93.c
index 2ae5f9d370a..2ae5f9d370a 100644
--- a/src/emu/machine/wd33c93.c
+++ b/src/devices/machine/wd33c93.c
diff --git a/src/emu/machine/wd33c93.h b/src/devices/machine/wd33c93.h
index 68ca8acfc58..68ca8acfc58 100644
--- a/src/emu/machine/wd33c93.h
+++ b/src/devices/machine/wd33c93.h
diff --git a/src/emu/machine/wd7600.c b/src/devices/machine/wd7600.c
index 26873553e14..26873553e14 100644
--- a/src/emu/machine/wd7600.c
+++ b/src/devices/machine/wd7600.c
diff --git a/src/emu/machine/wd7600.h b/src/devices/machine/wd7600.h
index 7cfada03261..7cfada03261 100644
--- a/src/emu/machine/wd7600.h
+++ b/src/devices/machine/wd7600.h
diff --git a/src/emu/machine/wd_fdc.c b/src/devices/machine/wd_fdc.c
index 06d6df35f92..8b27486c79a 100644
--- a/src/emu/machine/wd_fdc.c
+++ b/src/devices/machine/wd_fdc.c
@@ -203,8 +203,8 @@ void wd_fdc_t::dden_w(bool _dden)
std::string wd_fdc_t::tts(const attotime &t)
{
char buf[256];
- int nsec = t.attoseconds / ATTOSECONDS_PER_NANOSECOND;
- sprintf(buf, "%4d.%03d,%03d,%03d", int(t.seconds), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
+ int nsec = t.attoseconds() / ATTOSECONDS_PER_NANOSECOND;
+ sprintf(buf, "%4d.%03d,%03d,%03d", int(t.seconds()), nsec/1000000, (nsec/1000)%1000, nsec % 1000);
return buf;
}
diff --git a/src/emu/machine/wd_fdc.h b/src/devices/machine/wd_fdc.h
index 1aa0e1b13dc..7af735a7bef 100644
--- a/src/emu/machine/wd_fdc.h
+++ b/src/devices/machine/wd_fdc.h
@@ -179,7 +179,7 @@ public:
void hlt_w(bool state);
bool enp_r();
-
+
void index_callback(floppy_image_device *floppy, int state);
protected:
diff --git a/src/emu/machine/wozfdc.c b/src/devices/machine/wozfdc.c
index dd3f2483c77..dd3f2483c77 100644
--- a/src/emu/machine/wozfdc.c
+++ b/src/devices/machine/wozfdc.c
diff --git a/src/emu/machine/wozfdc.h b/src/devices/machine/wozfdc.h
index 384f057919d..384f057919d 100644
--- a/src/emu/machine/wozfdc.h
+++ b/src/devices/machine/wozfdc.h
diff --git a/src/emu/machine/x2212.c b/src/devices/machine/x2212.c
index 01db1709c74..01db1709c74 100644
--- a/src/emu/machine/x2212.c
+++ b/src/devices/machine/x2212.c
diff --git a/src/emu/machine/x2212.h b/src/devices/machine/x2212.h
index 4345c8f9a64..4345c8f9a64 100644
--- a/src/emu/machine/x2212.h
+++ b/src/devices/machine/x2212.h
diff --git a/src/emu/machine/x76f041.c b/src/devices/machine/x76f041.c
index 21dea0ae141..21dea0ae141 100644
--- a/src/emu/machine/x76f041.c
+++ b/src/devices/machine/x76f041.c
diff --git a/src/emu/machine/x76f041.h b/src/devices/machine/x76f041.h
index d1f8a8e9e46..d1f8a8e9e46 100644
--- a/src/emu/machine/x76f041.h
+++ b/src/devices/machine/x76f041.h
diff --git a/src/emu/machine/x76f100.c b/src/devices/machine/x76f100.c
index 830a0e51448..830a0e51448 100644
--- a/src/emu/machine/x76f100.c
+++ b/src/devices/machine/x76f100.c
diff --git a/src/emu/machine/x76f100.h b/src/devices/machine/x76f100.h
index dea839c4c5e..dea839c4c5e 100644
--- a/src/emu/machine/x76f100.h
+++ b/src/devices/machine/x76f100.h
diff --git a/src/emu/machine/ym2148.c b/src/devices/machine/ym2148.c
index d0f45fc8844..d0f45fc8844 100644
--- a/src/emu/machine/ym2148.c
+++ b/src/devices/machine/ym2148.c
diff --git a/src/emu/machine/ym2148.h b/src/devices/machine/ym2148.h
index 58d2d5cb360..58d2d5cb360 100644
--- a/src/emu/machine/ym2148.h
+++ b/src/devices/machine/ym2148.h
diff --git a/src/emu/machine/z80ctc.c b/src/devices/machine/z80ctc.c
index aee057c2c1a..8ab638a5e8d 100644
--- a/src/emu/machine/z80ctc.c
+++ b/src/devices/machine/z80ctc.c
@@ -364,7 +364,7 @@ UINT8 z80ctc_device::ctc_channel::read()
{
attotime period = ((m_mode & PRESCALER) == PRESCALER_16) ? m_device->m_period16 : m_device->m_period256;
- VPRINTF(("CTC clock %f\n",ATTOSECONDS_TO_HZ(period.attoseconds)));
+ VPRINTF(("CTC clock %f\n",ATTOSECONDS_TO_HZ(period.attoseconds())));
if (m_timer != NULL)
return ((int)(m_timer->remaining().as_double() / period.as_double()) + 1) & 0xff;
diff --git a/src/emu/machine/z80ctc.h b/src/devices/machine/z80ctc.h
index b5191d21104..b5191d21104 100644
--- a/src/emu/machine/z80ctc.h
+++ b/src/devices/machine/z80ctc.h
diff --git a/src/emu/machine/z80dart.c b/src/devices/machine/z80dart.c
index 6254d1d81f1..6254d1d81f1 100644
--- a/src/emu/machine/z80dart.c
+++ b/src/devices/machine/z80dart.c
diff --git a/src/emu/machine/z80dart.h b/src/devices/machine/z80dart.h
index 2674f84758a..2674f84758a 100644
--- a/src/emu/machine/z80dart.h
+++ b/src/devices/machine/z80dart.h
diff --git a/src/emu/machine/z80dma.c b/src/devices/machine/z80dma.c
index 745d22877f0..745d22877f0 100644
--- a/src/emu/machine/z80dma.c
+++ b/src/devices/machine/z80dma.c
diff --git a/src/emu/machine/z80dma.h b/src/devices/machine/z80dma.h
index 389112e6f19..389112e6f19 100644
--- a/src/emu/machine/z80dma.h
+++ b/src/devices/machine/z80dma.h
diff --git a/src/emu/machine/z80pio.c b/src/devices/machine/z80pio.c
index 6463adc8fb7..6463adc8fb7 100644
--- a/src/emu/machine/z80pio.c
+++ b/src/devices/machine/z80pio.c
diff --git a/src/emu/machine/z80pio.h b/src/devices/machine/z80pio.h
index 80a458dd4fd..80a458dd4fd 100644
--- a/src/emu/machine/z80pio.h
+++ b/src/devices/machine/z80pio.h
diff --git a/src/devices/machine/z80scc.c b/src/devices/machine/z80scc.c
new file mode 100644
index 00000000000..91221c8d339
--- /dev/null
+++ b/src/devices/machine/z80scc.c
@@ -0,0 +1,2241 @@
+// license:BSD-3-Clause copyright-holders: Joakim Larsson Edstrom
+/***************************************************************************
+
+ Z80-SCC Serial Communications Controller emulation
+
+ The z80scc is an updated version of the z80sio, with additional support for CRC
+ checks and a number of data link layer protocols such as HDLC, SDLC and BiSync.
+ (See https://en.wikipedia.org/wiki/Zilog_SCC). The variants in the SCC
+ family are as follows:
+ Zbus Universal bus
+ NMOS Z8030 Z8530
+ CMOS Z80C30 Z85C30
+ ESCC Z80230 Z85230, Z8523L (L = low voltage)
+ EMSCC Z85233
+ The difference between Zbus and Universal bus is mainly at hardware
+ design level and suitable for Intel oriented (Zbus) or Motorola oriented
+ chip designs.
+
+TODO:
+ NMOS CMOS ESCC EMSCC
+ -------------------------------------------------------------------
+ Channels 2 FD 2 FD 2 FD 2 FD FD = Full Duplex
+ Synch data rates 2Mbps 4Mbps 5Mbps 5Mbps
+ 1Mbps (FM)
+ .5Mbps (NRZI)
+ -- asynchrounous features -------------------------------------------
+ 5-8 bit per char Y Y Y Y
+ 1,1.5,2 stop bits Y Y Y Y
+ odd/even parity Y Y Y Y
+ x1,x16,x32,x64 Y Y Y Y
+ break det/gen Y Y Y Y
+ parity, framing & Y Y Y Y
+ overrun error det Y Y Y Y
+ -- byte oriented synchrounous features -------------------------------
+ Int/ext char sync Y Y Y Y
+ 1/2 synch chars Y Y Y Y
+ Aut CRC gen/det Y Y Y Y
+ -- SDLC/HDLC capabilities --------------------------------------------
+ Abort seq gen/chk Y Y Y Y
+ Aut zero ins/det Y Y Y Y
+ Aut flag insert Y Y Y Y
+ Addr field rec Y Y Y Y
+ I-fld resid hand Y Y Y Y
+ CRC gen/det Y Y Y Y
+ SDLC loop w EOP Y Y Y Y
+ --
+ Receiver FIFO 3 3 8 8
+ Transmitter FIFO 1 1 4 4
+ NRZ, NRZI or Y Y Y Y
+ FM enc/dec Y Y Y Y
+ Manchester dec Y Y Y Y
+ Baud gen per chan Y Y Y Y
+ DPLL clock recov Y Y Y Y
+ -- Additional features CMOS versions -----------------------------------
+ Status FIFO N Y Y Y
+ SWI ack feat N Y Y Y
+ higher bps w ext DPLL N 32Mbps 32Mbps 32Mbps
+ -- Additional features 85C30 -------------------------------------------
+ New WR7 feat N 85C30 Y Y
+ Improved SDLC N 85C30 Y Y
+ Improved reg handl N 85C30 Y Y
+ Improved auto feat N 85C30 Y Y
+ -- Additional features ESCC -------------------------------------------
+ Progrmbl FIFO int &
+ DMA req lev Y Y Y Y
+ Improved SDLC Y Y Y Y
+ DPLL counter as TXc Y Y Y Y
+ Improved reg handl Y Y Y Y
+ -------------------------------------------------------------------------
+ * = Features that has been implemented n/a = features that will not
+***************************************************************************/
+
+#include "z80scc.h"
+
+//**************************************************************************
+// MACROS / CONSTANTS
+//**************************************************************************
+
+#define VERBOSE 0
+
+#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+#if VERBOSE == 2
+#define logerror printf
+#endif
+
+#ifdef _MSC_VER
+#define FUNCNAME __func__
+#else
+#define FUNCNAME __PRETTY_FUNCTION__
+#endif
+
+#define CHANA_TAG "cha"
+#define CHANB_TAG "chb"
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+// device type definition
+const device_type Z80SCC = &device_creator<z80scc_device>;
+const device_type Z80SCC_CHANNEL = &device_creator<z80scc_channel>;
+const device_type SCC8030 = &device_creator<scc8030_device>;
+const device_type SCC80C30 = &device_creator<scc80C30_device>;
+const device_type SCC80230 = &device_creator<scc80230_device>;
+const device_type SCC8530N = &device_creator<scc8530_device>; // remove trailing N when 8530scc.c is fully replaced and removed
+const device_type SCC85C30 = &device_creator<scc85C30_device>;
+const device_type SCC85230 = &device_creator<scc85230_device>;
+const device_type SCC85233 = &device_creator<scc85233_device>;
+const device_type SCC8523L = &device_creator<scc8523L_device>;
+
+//-------------------------------------------------
+// device_mconfig_additions -
+//-------------------------------------------------
+MACHINE_CONFIG_FRAGMENT( z80scc )
+ MCFG_DEVICE_ADD(CHANA_TAG, Z80SCC_CHANNEL, 0)
+ MCFG_DEVICE_ADD(CHANB_TAG, Z80SCC_CHANNEL, 0)
+MACHINE_CONFIG_END
+
+machine_config_constructor z80scc_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( z80scc );
+}
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// z80scc_device - constructor
+//-------------------------------------------------
+
+z80scc_device::z80scc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ device_z80daisy_interface(mconfig, *this),
+ m_chanA(*this, CHANA_TAG),
+ m_chanB(*this, CHANB_TAG),
+ m_rxca(0),
+ m_txca(0),
+ m_rxcb(0),
+ m_txcb(0),
+ m_out_txda_cb(*this),
+ m_out_dtra_cb(*this),
+ m_out_rtsa_cb(*this),
+ m_out_wrdya_cb(*this),
+ m_out_synca_cb(*this),
+ m_out_txdb_cb(*this),
+ m_out_dtrb_cb(*this),
+ m_out_rtsb_cb(*this),
+ m_out_wrdyb_cb(*this),
+ m_out_syncb_cb(*this),
+ m_out_int_cb(*this),
+ m_out_rxdrqa_cb(*this),
+ m_out_txdrqa_cb(*this),
+ m_out_rxdrqb_cb(*this),
+ m_out_txdrqb_cb(*this),
+ m_variant(variant),
+ m_wr0_ptrbits(0){
+ for (int i = 0; i < 6; i++)
+ m_int_state[i] = 0;
+}
+
+z80scc_device::z80scc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, Z80SCC, "Z80 SCC", tag, owner, clock, "z80scc", __FILE__),
+ device_z80daisy_interface(mconfig, *this),
+ m_chanA(*this, CHANA_TAG),
+ m_chanB(*this, CHANB_TAG),
+ m_rxca(0),
+ m_txca(0),
+ m_rxcb(0),
+ m_txcb(0),
+ m_out_txda_cb(*this),
+ m_out_dtra_cb(*this),
+ m_out_rtsa_cb(*this),
+ m_out_wrdya_cb(*this),
+ m_out_synca_cb(*this),
+ m_out_txdb_cb(*this),
+ m_out_dtrb_cb(*this),
+ m_out_rtsb_cb(*this),
+ m_out_wrdyb_cb(*this),
+ m_out_syncb_cb(*this),
+ m_out_int_cb(*this),
+ m_out_rxdrqa_cb(*this),
+ m_out_txdrqa_cb(*this),
+ m_out_rxdrqb_cb(*this),
+ m_out_txdrqb_cb(*this),
+ m_variant(TYPE_Z80SCC)
+{
+ for (int i = 0; i < 6; i++)
+ m_int_state[i] = 0;
+}
+
+scc8030_device::scc8030_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : z80scc_device(mconfig, SCC8030, "SCC 8030", tag, owner, clock, TYPE_SCC8030, "scc8030", __FILE__){ }
+
+scc80C30_device::scc80C30_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : z80scc_device(mconfig, SCC80C30, "SCC 80C30", tag, owner, clock, TYPE_SCC80C30, "scc80C30", __FILE__){ }
+
+scc80230_device::scc80230_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : z80scc_device(mconfig, SCC80230, "SCC 80230", tag, owner, clock, TYPE_SCC80230, "scc80230", __FILE__){ }
+
+scc8530_device::scc8530_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+: z80scc_device(mconfig, SCC8530N, "SCC 8530", tag, owner, clock, TYPE_SCC8530, "scc8530", __FILE__){ }
+
+scc85C30_device::scc85C30_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : z80scc_device(mconfig, SCC85C30, "SCC 85C30", tag, owner, clock, TYPE_SCC85C30, "scc85C30", __FILE__){ }
+
+scc85230_device::scc85230_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : z80scc_device(mconfig, SCC85230, "SCC 85230", tag, owner, clock, TYPE_SCC85230, "scc85230", __FILE__){ }
+
+scc85233_device::scc85233_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : z80scc_device(mconfig, SCC85233, "SCC 85233", tag, owner, clock, TYPE_SCC85233, "scc85233", __FILE__){ }
+
+scc8523L_device::scc8523L_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : z80scc_device(mconfig, SCC8523L, "SCC 8523L", tag, owner, clock, TYPE_SCC8523L, "scc8523L", __FILE__){ }
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void z80scc_device::device_start()
+{
+ LOG(("%s\n", FUNCNAME));
+ // resolve callbacks
+ m_out_txda_cb.resolve_safe();
+ m_out_dtra_cb.resolve_safe();
+ m_out_rtsa_cb.resolve_safe();
+ m_out_wrdya_cb.resolve_safe();
+ m_out_synca_cb.resolve_safe();
+ m_out_txdb_cb.resolve_safe();
+ m_out_dtrb_cb.resolve_safe();
+ m_out_rtsb_cb.resolve_safe();
+ m_out_wrdyb_cb.resolve_safe();
+ m_out_syncb_cb.resolve_safe();
+ m_out_int_cb.resolve_safe();
+ m_out_rxdrqa_cb.resolve_safe();
+ m_out_txdrqa_cb.resolve_safe();
+ m_out_rxdrqb_cb.resolve_safe();
+ m_out_txdrqb_cb.resolve_safe();
+
+ // configure channel A
+ m_chanA->m_rxc = m_rxca;
+ m_chanA->m_txc = m_txca;
+
+ // configure channel B
+ m_chanB->m_rxc = m_rxcb;
+ m_chanB->m_txc = m_txcb;
+
+ // state saving
+ save_item(NAME(m_int_state));
+
+ LOG((" - SCC variant %02x\n", m_variant));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+
+void z80scc_device::device_reset()
+{
+ LOG(("%s %s \n",FUNCNAME, tag()));
+
+ m_chanA->reset();
+ m_chanB->reset();
+}
+
+/*
+ * Interrupts
+Each of the SCC's two channels contain three sources of interrupts, making a total of six interrupt
+sources. These three sources of interrupts are: 1) Receiver, 2) Transmitter, and 3) External/Status
+conditions. In addition, there are several conditions that may cause these interrupts.*/
+//-------------------------------------------------
+// z80daisy_irq_state - get interrupt status
+//-------------------------------------------------
+
+int z80scc_device::z80daisy_irq_state()
+{
+ int state = 0;
+ int i;
+
+ LOG(("%s %s A:%d%d%d B:%d%d%d ",FUNCNAME, tag(),
+ m_int_state[0], m_int_state[1], m_int_state[2],
+ m_int_state[3], m_int_state[4], m_int_state[5]));
+
+ // loop over all interrupt sources
+ for (i = 0; i < 6; i++)
+ {
+ // if we're servicing a request, don't indicate more interrupts
+ if (m_int_state[i] & Z80_DAISY_IEO)
+ {
+ state |= Z80_DAISY_IEO;
+ break;
+ }
+ state |= m_int_state[i];
+ }
+
+ LOG(("Interrupt State %u\n", state));
+
+ return state;
+}
+
+
+//-------------------------------------------------
+// z80daisy_irq_ack - interrupt acknowledge
+//-------------------------------------------------
+
+int z80scc_device::z80daisy_irq_ack()
+{
+ int i;
+
+ LOG(("%s %s - needs fixing for SCC\n",FUNCNAME, tag()));
+
+ // loop over all interrupt sources
+ for (i = 0; i < 6; i++)
+ {
+ // find the first channel with an interrupt requested
+ if (m_int_state[i] & Z80_DAISY_INT)
+ {
+ // clear interrupt, switch to the IEO state, and update the IRQs
+ m_int_state[i] = Z80_DAISY_IEO;
+ //m_chanA->m_rr0 &= ~z80scc_channel::RR0_INTERRUPT_PENDING;
+ check_interrupts();
+
+ //LOG(("%s %s \n",FUNCNAME, tag(), m_chanB->m_rr2));
+
+ return m_chanB->m_rr2;
+ }
+ }
+
+ //logerror("z80scc_irq_ack: failed to find an interrupt to ack!\n");
+
+ return m_chanB->m_rr2;
+}
+
+
+//-------------------------------------------------
+// z80daisy_irq_reti - return from interrupt
+//-------------------------------------------------
+
+void z80scc_device::z80daisy_irq_reti()
+{
+ int i;
+
+ LOG(("%s %s \n",FUNCNAME, tag()));
+
+ // loop over all interrupt sources
+ for (i = 0; i < 6; i++)
+ {
+ // find the first channel with an IEO pending
+ if (m_int_state[i] & Z80_DAISY_IEO)
+ {
+ // clear the IEO state and update the IRQs
+ m_int_state[i] &= ~Z80_DAISY_IEO;
+ check_interrupts();
+ return;
+ }
+ }
+
+ //logerror("z80scc_irq_reti: failed to find an interrupt to clear IEO on!\n");
+}
+
+
+//-------------------------------------------------
+// check_interrupts -
+//-------------------------------------------------
+
+void z80scc_device::check_interrupts()
+{
+ int state = (z80daisy_irq_state() & Z80_DAISY_INT) ? ASSERT_LINE : CLEAR_LINE;
+ LOG(("%s %s \n",FUNCNAME, tag()));
+ m_out_int_cb(state);
+}
+
+
+//-------------------------------------------------
+// reset_interrupts -
+//-------------------------------------------------
+
+void z80scc_device::reset_interrupts()
+{
+ LOG(("%s %s \n",FUNCNAME, tag()));
+ // reset internal interrupt sources
+ for (int i = 0; i < 6; i++)
+ {
+ m_int_state[i] = 0;
+ }
+
+ // check external interrupt sources
+ check_interrupts();
+}
+
+UINT8 z80scc_device::modify_vector(UINT8 vec, int i, UINT8 src)
+{
+ /*
+ Interrupt Vector Modification
+ V3 V2 V1 Status High/Status Low =0
+ V4 V5 V6 Status High/Status Low =1
+ 0 0 0 Ch B Transmit Buffer Empty
+ 0 0 1 Ch B External/Status Change
+ 0 1 0 Ch B Receive Char. Available
+ 0 1 1 Ch B Special Receive Condition
+ 1 0 0 Ch A Transmit Buffer Empty
+ 1 0 1 Ch A External/Status Change
+ 1 1 0 Ch A Receive Char. Available
+ 1 1 1 Ch A Special Receive Condition
+ */
+ // Add channel offset according to table above
+ src |= (i == CHANNEL_A ? 0x04 : 0x00 );
+
+ // Modify vector according to Hi/lo bit of WR9
+ if (m_chanA->m_wr9 & z80scc_channel::WR9_BIT_SHSL) // Affect V4-V6
+ {
+ vec |= src << 4;
+ }
+ else // Affect V1-V3
+ {
+ vec |= src << 1;
+ }
+ return vec;
+}
+
+
+//-------------------------------------------------
+// trigger_interrupt -
+//-------------------------------------------------
+void z80scc_device::trigger_interrupt(int index, int state)
+{
+ UINT8 vector = m_chanB->m_wr2;
+ UINT8 source = 0;
+ int priority;
+
+ int prio_level = 0;
+
+ LOG(("%s %s:%c %d \n",FUNCNAME, tag(), 'A' + index, state));
+
+ /* The Master Interrupt Enable (MIE) bit, WR9 D3, must be set to enable the SCC to generate interrupts.*/
+ if (!(m_chanA->m_wr9 & z80scc_channel::WR9_BIT_MIE))
+ {
+ LOG(("Master Interrupt Enable is not set, blocking attempt to interrupt\n"));
+ return;
+ }
+
+ switch(state)
+ {
+ case z80scc_channel::INT_RECEIVE:
+ /*The sources of receive interrupts consist of Receive Character Available and Special Receive Condition.
+ The Special Receive Condition can be subdivided into Receive Overrun, Framing Error (Asynchronous) or
+ End of Frame (SDLC). In addition, a parity error can be a special receive condition by programming*/
+ source = 2;
+ prio_level = 2;
+ break;
+ case z80scc_channel::INT_TRANSMIT:
+ /*The NMOS/CMOS version of the SCC only has a one byte deep transmit buffer. The status of the
+ transmit buffer can be determined through TBE bit in RR0, bit D2, which shows whether the
+ transmit buffer is empty or not. After a hardware reset (including a hardware reset by software), or
+ a channel reset, this bit is set to 1.
+ While transmit interrupts are enabled, the NMOS/CMOS version sets the Transmit Interrupt Pending
+ (TxIP) bit whenever the transmit buffer becomes empty. This means that the transmit buffer
+ must be full before the TxIP can be set. Thus, when transmit interrupts are first enabled, the TxIP
+ will not be set until after the first character is written to the NMOS/CMOS.*/
+ source = 0;
+ prio_level = 1;
+ break;
+ case z80scc_channel::INT_SPECIAL:
+ /*This mode allows the receiver to interrupt only on
+ characters with a special receive condition. When an interrupt occurs, the data containing the error
+ is held in the Receive FIFO until an Error Reset command is issued. When using this mode in conjunction
+ with a DMA, the DMA is initialized and enabled before any characters have been
+ received by the ESCC. This eliminates the time-critical section of code required in the Receive
+ Interrupt on First Character or Special Condition mode. Hence, all data can be transferred via the
+ DMA so that the CPU need not handle the first received character as a special case. In SDLC
+ mode, if the SDLC Frame Status FIFO is enabled and an EOF is received, an interrupt with vector
+ for receive data available is generated and the Receive FIFO is not locked.*/
+ source = 3;
+ prio_level = 0;
+ break;
+ default:
+ logerror("Attempt to trigger interrupt of unknown origin blocked: %02x on channel %c\n", state, 'A' + index);
+ return;
+ }
+
+ // Vector modification requested?
+ if (m_chanA->m_wr9 & z80scc_channel::WR9_BIT_VIS)
+ {
+ vector = modify_vector(vector, index, source);
+ }
+
+ //LOG(("Z80SCC \"%s\": %c : Interrupt Request %u\n", tag(), 'A' + index, state));
+
+ // update vector register // TODO: What if interrupts are nested? May we loose the modified vector or even get the wrong one?
+ m_chanB->m_wr2 = vector;
+
+ /* Check the interrupt source and build the vector modification */
+ /*Interrupt Source Priority order
+ Channel A Receive
+ Channel A Transmit
+ Channel A External/Status
+ Channel B Receive
+ Channel B Transmit
+ Channel B External/Status
+ */
+ // Add channel offset to priority according to table above
+ priority = prio_level + (index == CHANNEL_A ? 3 : 0 );
+
+ // trigger interrupt
+ m_int_state[priority] |= Z80_DAISY_INT;
+
+ // Based on the fact that prio levels are aligned with the bitorder of rr3 we can do this...
+ m_chanA->m_rr3 |= (prio_level << (index == CHANNEL_A ? 3 : 0 ));
+
+ // check for interrupt
+ check_interrupts();
+}
+
+
+//-------------------------------------------------
+// m1_r - interrupt acknowledge
+//-------------------------------------------------
+
+int z80scc_device::m1_r()
+{
+ return z80daisy_irq_ack();
+}
+
+
+//-------------------------------------------------
+// cd_ba_r - Universal Bus read
+//-------------------------------------------------
+READ8_MEMBER( z80scc_device::cd_ba_r )
+{
+ int ba = BIT(offset, 0);
+ int cd = BIT(offset, 1);
+ z80scc_channel *channel = ba ? m_chanB : m_chanA;
+
+ /* Expell non-Universal Bus variants */
+ if ( !(m_variant & SET_Z85X3X))
+ {
+ logerror("Z80SCC cd_ba_r not supported by this device variant, you should probably use combinations of c*_r/w and d*_r/w (see z80scc.h)\n");
+ return 0;
+ }
+
+ // LOG(("z80scc_device::cd_ba_r ba:%02x cd:%02x\n", ba, cd));
+ return cd ? channel->control_read() : channel->data_read();
+}
+
+//-------------------------------------------------
+// cd_ba_w - Universal Bus write
+//-------------------------------------------------
+WRITE8_MEMBER( z80scc_device::cd_ba_w )
+{
+ int ba = BIT(offset, 0);
+ int cd = BIT(offset, 1);
+ z80scc_channel *channel = ba ? m_chanB : m_chanA;
+
+ /* Expell non-Universal Bus variants */
+ if ( !(m_variant & SET_Z85X3X) )
+ {
+ logerror("Z80SCC cd_ba_w not supported by this device variant, you should probably use combinations of c*_r/w and d*_r/w (see z80scc.h)\n");
+ return;
+ }
+
+ // LOG(("z80scc_device::cd_ba_w ba:%02x cd:%02x\n", ba, cd));
+ if (cd)
+ channel->control_write(data);
+ else
+ channel->data_write(data);
+}
+
+
+//-------------------------------------------------
+// ba_cd_r - Universal Bus read
+//-------------------------------------------------
+
+READ8_MEMBER( z80scc_device::ba_cd_r )
+{
+ int ba = BIT(offset, 1);
+ int cd = BIT(offset, 0);
+ z80scc_channel *channel = ba ? m_chanB : m_chanA;
+
+ /* Expell non-Universal Bus variants */
+ if ( !(m_variant & SET_Z85X3X) )
+ {
+ logerror("Z80SCC ba_cd_r not supported by this device variant, you should probably use combinations of c*_r/w and d*_r/w (see z80scc.h)\n");
+ return 0;
+ }
+
+ // LOG(("z80scc_device::ba_cd_r ba:%02x cd:%02x\n", ba, cd));
+ return cd ? channel->control_read() : channel->data_read();
+}
+
+
+//-------------------------------------------------
+// ba_cd_w -
+//-------------------------------------------------
+
+WRITE8_MEMBER( z80scc_device::ba_cd_w )
+{
+ int ba = BIT(offset, 1);
+ int cd = BIT(offset, 0);
+ z80scc_channel *channel = ba ? m_chanB : m_chanA;
+
+ /* Expell non-Universal Bus variants */
+ if ( !(m_variant & SET_Z85X3X) )
+ {
+ logerror("Z80SCC ba_cd_w not supported by this device variant, you should probably use combinations of c*_r/w and d*_r/w (see z80scc.h)\n");
+ return;
+ }
+
+ LOG(("z80scc_device::ba_cd_w ba:%02x cd:%02x\n", ba, cd));
+
+ if (cd)
+ channel->control_write(data);
+ else
+ channel->data_write(data);
+}
+
+//**************************************************************************
+// SCC CHANNEL
+//**************************************************************************
+
+//-------------------------------------------------
+// SCC_channel - constructor
+//-------------------------------------------------
+
+z80scc_channel::z80scc_channel(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, Z80SCC_CHANNEL, "Z80 SCC channel", tag, owner, clock, "z80scc_channel", __FILE__),
+ device_serial_interface(mconfig, *this),
+ m_rx_error(0),
+ m_rx_clock(0),
+ m_rx_first(0),
+ m_rx_break(0),
+ m_rx_rr0_latch(0),
+ m_rxd(0),
+ m_cts(0),
+ m_dcd(0),
+ m_tx_data(0),
+ m_tx_clock(0),
+ m_dtr(0),
+ m_rts(0),
+ m_sync(0)
+{
+ LOG(("%s\n",FUNCNAME));
+
+ // Reset all registers
+ m_rr0 = m_rr1 = m_rr2 = m_rr3 = m_rr4 = m_rr5 = m_rr6 = m_rr7 = m_rr8
+ = m_rr9 = m_rr10 = m_rr11 = m_rr12 = m_rr13 = m_rr14 = m_rr15 = 0;
+ m_wr0 = m_wr1 = m_wr2 = m_wr3 = m_wr4 = m_wr5 = m_wr6 = m_wr7 = m_wr8
+ = m_wr9 = m_wr10 = m_wr11 = m_wr12 = m_wr13 = m_wr14 = m_wr15 = 0;
+
+ for (int i = 0; i < 3; i++) // TODO adapt to SCC fifos
+ {
+ m_rx_data_fifo[i] = 0;
+ m_rx_error_fifo[i] = 0;
+ }
+}
+
+
+//-------------------------------------------------
+// start - channel startup
+//-------------------------------------------------
+
+void z80scc_channel::device_start()
+{
+ LOG(("%s\n", FUNCNAME));
+ m_uart = downcast<z80scc_device *>(owner());
+ m_index = m_uart->get_channel_index(this);
+
+ m_uart->m_wr0_ptrbits = 0;
+
+ m_rx_fifo_sz = (m_uart->m_variant & SET_ESCC) ? 8 : 3;
+ m_rx_fifo_wp = m_rx_fifo_rp = 0;
+
+ // state saving
+ save_item(NAME(m_rr0));
+ save_item(NAME(m_rr1));
+ save_item(NAME(m_rr2));
+ save_item(NAME(m_rr3));
+ save_item(NAME(m_rr4));
+ save_item(NAME(m_rr5));
+ save_item(NAME(m_rr6));
+ save_item(NAME(m_rr7));
+ save_item(NAME(m_rr8));
+ save_item(NAME(m_rr9));
+ save_item(NAME(m_rr10));
+ save_item(NAME(m_rr11));
+ save_item(NAME(m_rr12));
+ save_item(NAME(m_rr13));
+ save_item(NAME(m_rr14));
+ save_item(NAME(m_rr15));
+ save_item(NAME(m_wr0));
+ save_item(NAME(m_wr1));
+ save_item(NAME(m_wr2));
+ save_item(NAME(m_wr3));
+ save_item(NAME(m_wr4));
+ save_item(NAME(m_wr5));
+ save_item(NAME(m_wr6));
+ save_item(NAME(m_wr7));
+ save_item(NAME(m_wr8));
+ save_item(NAME(m_wr9));
+ save_item(NAME(m_wr10));
+ save_item(NAME(m_wr11));
+ save_item(NAME(m_wr12));
+ save_item(NAME(m_wr13));
+ save_item(NAME(m_wr14));
+ save_item(NAME(m_wr15));
+ save_item(NAME(m_rx_data_fifo));
+ save_item(NAME(m_rx_error_fifo));
+ save_item(NAME(m_rx_fifo_rp));
+ save_item(NAME(m_rx_fifo_wp));
+ save_item(NAME(m_rx_fifo_sz));
+ save_item(NAME(m_rx_clock));
+ save_item(NAME(m_rx_first));
+ save_item(NAME(m_rx_break));
+ save_item(NAME(m_rx_rr0_latch));
+ save_item(NAME(m_ri));
+ save_item(NAME(m_cts));
+ save_item(NAME(m_dcd));
+ save_item(NAME(m_tx_data));
+ save_item(NAME(m_tx_clock));
+ save_item(NAME(m_dtr));
+ save_item(NAME(m_rts));
+ save_item(NAME(m_sync));
+
+ device_serial_interface::register_save_state(machine().save(), this);
+}
+
+
+//-------------------------------------------------
+// reset - reset channel status
+//-------------------------------------------------
+
+void z80scc_channel::device_reset()
+{
+ LOG(("%s\n", FUNCNAME));
+
+ // Reset RS232 emulation
+ receive_register_reset();
+ transmit_register_reset();
+
+ // Soft/Channel Reset values according to SCC users manual
+ m_wr0 = 0x00;
+ m_wr1 &= 0x24;
+ m_wr3 &= 0x01;
+ m_wr4 |= 0x04;
+ m_wr5 &= 0x61;
+ if (m_uart->m_variant & (z80scc_device::TYPE_SCC85C30 | SET_ESCC))
+ m_wr7 = 0x20;
+ m_wr9 &= 0xdf; // WR9 has a different hard reset value
+ m_wr10 &= 0x60; // WR10 has a different hard reset value
+ m_wr11 &= 0xff; // WR11 has a different hard reset value
+ m_wr14 &= 0xc3; // WR14 has a different hard reset value
+ m_wr14 |= 0x20;
+ m_wr15 = 0xf8;
+ m_rr0 &= 0xfc;
+ m_rr0 |= 0x44;
+ m_rr1 &= 0x07;
+ m_rr1 |= 0x06;
+ m_rr3 = 0x00;
+ m_rr10 &= 0x40;
+
+#if 1 // old reset code
+ // disable receiver
+ m_wr3 &= ~WR3_RX_ENABLE;
+
+ // disable transmitter
+ m_wr5 &= ~WR5_TX_ENABLE;
+ m_rr0 |= RR0_TX_BUFFER_EMPTY;
+#endif
+ // TODO: check dependencies on RR1_ALL_SENT and (re)move this setting
+ m_rr1 |= RR1_ALL_SENT; // It is a don't care in the SCC user manual
+
+ // reset external lines TODO: check relation to control bits and reset
+ set_rts(1);
+ set_dtr(1);
+
+ // reset interrupts
+ if (m_index == z80scc_device::CHANNEL_A)
+ {
+ m_uart->reset_interrupts();
+ }
+}
+
+void z80scc_channel::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ device_serial_interface::device_timer(timer, id, param, ptr);
+}
+
+
+//-------------------------------------------------
+// tra_callback -
+//-------------------------------------------------
+
+void z80scc_channel::tra_callback()
+{
+ if (!(m_wr5 & WR5_TX_ENABLE))
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c transmit mark 1 m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ // transmit mark
+ if (m_index == z80scc_device::CHANNEL_A)
+ m_uart->m_out_txda_cb(1);
+ else
+ m_uart->m_out_txdb_cb(1);
+ }
+ else if (m_wr5 & WR5_SEND_BREAK)
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c send break 1 m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ // transmit break
+ if (m_index == z80scc_device::CHANNEL_A)
+ m_uart->m_out_txda_cb(0);
+ else
+ m_uart->m_out_txdb_cb(0);
+ }
+ else if (!is_transmit_register_empty())
+ {
+ int db = transmit_register_get_data_bit();
+
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c transmit data bit %d m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, db, m_wr5));
+ // transmit data
+ if (m_index == z80scc_device::CHANNEL_A)
+ m_uart->m_out_txda_cb(db);
+ else
+ m_uart->m_out_txdb_cb(db);
+ }
+ else
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Failed to transmit m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ logerror("%s \"%s \"Channel %c Failed to transmit\n", FUNCNAME, m_owner->tag(), 'A' + m_index);
+ }
+}
+
+
+//-------------------------------------------------
+// tra_complete -
+//-------------------------------------------------
+
+void z80scc_channel::tra_complete()
+{
+ if ((m_wr5 & WR5_TX_ENABLE) && !(m_wr5 & WR5_SEND_BREAK) && !(m_rr0 & RR0_TX_BUFFER_EMPTY))
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Transmit Data Byte '%02x' m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_tx_data, m_wr5));
+
+ transmit_register_setup(m_tx_data);
+
+ // empty transmit buffer
+ m_rr0 |= RR0_TX_BUFFER_EMPTY;
+
+ if (m_wr1 & WR1_TX_INT_ENABLE)
+ m_uart->trigger_interrupt(m_index, INT_TRANSMIT);
+ }
+ else if (m_wr5 & WR5_SEND_BREAK)
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Transmit Break 0 m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ // transmit break
+ if (m_index == z80scc_device::CHANNEL_A)
+ m_uart->m_out_txda_cb(0);
+ else
+ m_uart->m_out_txdb_cb(0);
+ }
+ else
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Transmit Mark 1 m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ // transmit mark
+ if (m_index == z80scc_device::CHANNEL_A)
+ m_uart->m_out_txda_cb(1);
+ else
+ m_uart->m_out_txdb_cb(1);
+ }
+
+ // if transmit buffer is empty
+ if (m_rr0 & RR0_TX_BUFFER_EMPTY)
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Transmit buffer empty m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ // then all characters have been sent
+ m_rr1 |= RR1_ALL_SENT;
+
+ // when the RTS bit is reset, the _RTS output goes high after the transmitter empties
+ if (!m_rts)
+ set_rts(1);
+ }
+}
+
+
+//-------------------------------------------------
+// rcv_callback -
+//-------------------------------------------------
+
+void z80scc_channel::rcv_callback()
+{
+ if (m_wr3 & WR3_RX_ENABLE)
+ {
+ receive_register_update_bit(m_rxd);
+ }
+#if 1
+ else
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Received Data Bit but receiver is disabled\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index));
+ logerror("Z80SCC %s() \"%s \"Channel %c Received data dit but receiver is disabled\n", __func__, m_owner->tag(), 'A' + m_index);
+ }
+#endif
+}
+
+
+//-------------------------------------------------
+// rcv_complete -
+//-------------------------------------------------
+
+void z80scc_channel::rcv_complete()
+{
+ UINT8 data;
+
+ receive_register_extract();
+ data = get_received_char();
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Received Data %c\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, data));
+ receive_data(data);
+}
+
+
+//-------------------------------------------------
+// get_clock_mode - get clock divisor
+//-------------------------------------------------
+
+int z80scc_channel::get_clock_mode()
+{
+ int clocks = 1;
+
+ switch (m_wr4 & WR4_CLOCK_RATE_MASK)
+ {
+ case WR4_CLOCK_RATE_X1: clocks = 1; break;
+ case WR4_CLOCK_RATE_X16: clocks = 16; break;
+ case WR4_CLOCK_RATE_X32: clocks = 32; break;
+ case WR4_CLOCK_RATE_X64: clocks = 64; break;
+ }
+
+ return clocks;
+}
+
+/* From Zilog SCC/ESCC USers manual, UM010902-0609:
+"/RTSA, /RTSB. Request To Send (outputs, active Low). The /RTS pins can be used as generalpurpose
+outputs or with the Auto Enable feature. When used with Auto Enable ON (WR3, D5=1)
+in asynchronous mode, the /RTS pin goes High after the transmitter is empty. When Auto Enable
+is OFF, the /RTS pins are used as general-purpose outputs, and, they strictly follow the inverse
+state of WR5, bit D1.
+ESCC and 85C30: In SDLC mode, the /RTS pins can be programmed to be deasserted when the closing
+flag of the message clears the TxD pin, if WR7' D2 is set."
+TODO:
+- SDLC mode behaviour for ESCC/85C30
+*/
+void z80scc_channel::set_rts(int state)
+{
+ LOG(("%s(%d) \"%s\": %c \n", FUNCNAME, state, m_owner->tag(), 'A' + m_index));
+ if (m_index == z80scc_device::CHANNEL_A)
+ m_uart->m_out_rtsa_cb(state);
+ else
+ m_uart->m_out_rtsb_cb(state);
+}
+
+void z80scc_channel::update_rts()
+{
+// LOG(("%s(%d) \"%s\": %c \n", FUNCNAME, state, m_owner->tag(), 'A' + m_index));
+ if (m_wr5 & WR5_RTS)
+ {
+ // when the RTS bit is set, the _RTS output goes low
+ set_rts(0);
+ m_rts = 1;
+ }
+ else
+ {
+ // when the RTS bit is reset, the _RTS output goes high after the transmitter empties
+ m_rts = 0;
+ }
+
+ // data terminal ready output follows the state programmed into the DTR bit*/
+ set_dtr((m_wr5 & WR5_DTR) ? 0 : 1);
+}
+
+//-------------------------------------------------
+// get_stop_bits - get number of stop bits
+//-------------------------------------------------
+
+device_serial_interface::stop_bits_t z80scc_channel::get_stop_bits()
+{
+ switch (m_wr4 & WR4_STOP_BITS_MASK)
+ {
+ case WR4_STOP_BITS_1: return STOP_BITS_1;
+ case WR4_STOP_BITS_1_5: return STOP_BITS_1_5;
+ case WR4_STOP_BITS_2: return STOP_BITS_2;
+ }
+
+ return STOP_BITS_0;
+}
+
+
+//-------------------------------------------------
+// get_rx_word_length - get receive word length
+//-------------------------------------------------
+
+int z80scc_channel::get_rx_word_length()
+{
+ int bits = 5;
+
+ switch (m_wr3 & WR3_RX_WORD_LENGTH_MASK)
+ {
+ case WR3_RX_WORD_LENGTH_5: bits = 5; break;
+ case WR3_RX_WORD_LENGTH_6: bits = 6; break;
+ case WR3_RX_WORD_LENGTH_7: bits = 7; break;
+ case WR3_RX_WORD_LENGTH_8: bits = 8; break;
+ }
+
+ return bits;
+}
+
+
+//-------------------------------------------------
+// get_tx_word_length - get transmit word length
+//-------------------------------------------------
+
+int z80scc_channel::get_tx_word_length()
+{
+ int bits = 5;
+
+ switch (m_wr5 & WR5_TX_WORD_LENGTH_MASK)
+ {
+ case WR5_TX_WORD_LENGTH_5: bits = 5; break;
+ case WR5_TX_WORD_LENGTH_6: bits = 6; break;
+ case WR5_TX_WORD_LENGTH_7: bits = 7; break;
+ case WR5_TX_WORD_LENGTH_8: bits = 8; break;
+ }
+
+ return bits;
+}
+
+/*
+ * This register contains the status of the receive and transmit buffers; the
+ * DCD, CTS, and SYNC inputs; the Transmit Underrun/EOM latch; and the
+ * Break/Abort latch. */
+UINT8 z80scc_channel::do_sccreg_rr0()
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ return m_rr0;
+}
+
+/*
+ * This register contains the Special Receive condition status bits and Residue
+ * codes for the I-Field in the SDLC Receive Mode. */
+UINT8 z80scc_channel::do_sccreg_rr1()
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ return m_rr1;
+}
+
+/* From Zilog SCC/ESCC USers manual, UM010902-0609:
+"RR2 contains the interrupt vector written into WR2. When the register is accessed in Channel A,
+the vector returned is the vector actually stored in WR2. When this register is accessed in Channel
+B, the vector returned includes status information in bits 1, 2 and 3 or in bits 6, 5 and 4, depending
+on the state of the Status High/Status Low bit in WR9 and independent of the state of the VIS bit
+in WR9."*/
+UINT8 z80scc_channel::do_sccreg_rr2()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+
+ // Assume the unmodified in polled mode
+ m_rr2 = m_uart->m_chanA->m_wr2;
+
+ // If we are chan B we have to modify the vector regardless of the VIS bit
+ if (m_index == z80scc_device::CHANNEL_B)
+ {
+ // loop over all interrupt sources
+ for (int i = 0; i < 6; i++)
+ {
+ // find the first channel with an interrupt requested
+ if (m_uart->m_int_state[i] & Z80_DAISY_INT)
+ {
+ m_rr2 = m_uart->modify_vector(m_rr2, i < 3 ? z80scc_device::CHANNEL_A : z80scc_device::CHANNEL_B, i & 3);
+ break;
+ }
+ }
+ }
+ return m_rr2;
+}
+
+/* From Zilog SCC/ESCC USers manual, UM010902-0609:
+RR3 is the interrupt Pending register. The status of each of the interrupt Pending bits in the SCC is
+reported in this register. This register exists only in Channel A. If this register is accessed in Channel
+B, all 0s are returned. The two unused bits are always returned as 0. Figure displays the bit positions for RR3."
+*/
+UINT8 z80scc_channel::do_sccreg_rr3()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+ return m_rr3; // TODO Update all bits of this status register
+}
+
+
+/* (ESCC and 85C30 Only) */
+/*On the ESCC, Read Register 4 reflects the contents of Write Register 4 provided the Extended
+ Read option is enabled. Otherwise, this register returns an image of RR0. On the NMOS/CMOS version,
+ a read to this location returns an image of RR0.*/
+UINT8 z80scc_channel::do_sccreg_rr4()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+ if (m_uart->m_variant & (SET_ESCC | z80scc_device::TYPE_SCC85C30))
+ return (BIT(m_wr7, 6) ? m_wr4 : m_rr0);
+ else
+ return m_rr0;
+}
+
+ /* (ESCC and 85C30 Only) */
+/*On the ESCC, Read Register 5 reflects the contents of Write Register 5 provided the Extended
+ Read option is enabled. Otherwise, this register returns an image of RR1. On the NMOS/CMOS version,
+ a read to this register returns an image of RR1.*/
+UINT8 z80scc_channel::do_sccreg_rr5()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+ if (m_uart->m_variant & (SET_ESCC | z80scc_device::TYPE_SCC85C30))
+ return BIT(m_wr7, 6) ? m_wr5 : m_rr1;
+ else
+ return m_rr1;
+}
+
+/* (not on NMOS)
+ On the CMOS and ESCC, Read Register 6 contains the least significant byte of the frame byte
+ count that is currently at the top of the Status FIFO. RR6 is displayed in Figure on page 183. This
+ register is readable only if the FIFO is enabled (refer to the description Write Register 15, bit D2,
+ and SDLC Frame Status FIFO on page 126). Otherwise, this register is an image of RR2.
+ On the NMOS version, a read to this register location returns an image of RR2.*/
+UINT8 z80scc_channel::do_sccreg_rr6()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+ if (!(m_uart->m_variant & (SET_NMOS)))
+ {
+ logerror("Z80SCC %s() not implemented feature\n", __func__);
+ return 0;
+ }
+ return m_rr2;
+}
+
+/* (not on NMOS)
+ On the CMOS and ESCC, Read Register 7 contains the most significant six bits of the frame byte
+ count that is currently at the top of the Status FIFO. Bit D7 is the FIFO Overflow Status and bit D6
+ is the FIFO Data Available Status. The status indications are given in Table on page 184. RR7 is
+ displayed in Figure on page 183. This register is readable only if the FIFO is enabled (refer to the
+ description Write Register 15, bit D2). Otherwise this register is an image of RR3. Note, for proper
+ operation of the FIFO and byte count logic, the registers should be read in the following order:
+ RR7, RR6, RR1.*/
+UINT8 z80scc_channel::do_sccreg_rr7()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+ if (!(m_uart->m_variant & (SET_NMOS)))
+ {
+ logerror("Z80SCC %s() not implemented feature\n", __func__);
+ return 0;
+ }
+ return m_rr3;
+}
+
+#if 0 // Short cutted in control_read()
+/* RR8 is the Receive Data register. */
+UINT8 z80scc_channel::do_sccreg_rr8()
+{
+ return data_read():
+}
+#endif
+
+/* (ESCC and 85C30 Only)
+ On the ESCC, Read Register 9 reflects the contents of Write Register 3 provided the Extended
+ Read option has been enabled. On the NMOS/CMOS version, a read to this location returns an image
+ of RR13. TODO: Check what is returned if Extended Read option is turned off */
+UINT8 z80scc_channel::do_sccreg_rr9()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+ if (m_uart->m_variant & (SET_ESCC | z80scc_device::TYPE_SCC85C30))
+ return BIT(m_wr7, 6) ? m_wr3 : m_rr13;
+ else
+ return m_rr13;
+}
+
+/* RR10 contains some SDLC related miscellaneous status bits. Unused bits are always 0. */
+UINT8 z80scc_channel::do_sccreg_rr10()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+ logerror("Z80SCC %s() not implemented feature\n", __func__);
+ return m_rr10;
+}
+
+/* (ESCC and 85C30 Only)
+ On the ESCC, Read Register 11 reflects the contents of Write Register 10 provided the Extended
+ Read option has been enabled. Otherwise, this register returns an image of RR15.
+ On the NMOS/CMOS version, a read to this location returns an image of RR15.*/
+UINT8 z80scc_channel::do_sccreg_rr11()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+ if (m_uart->m_variant & (SET_ESCC | z80scc_device::TYPE_SCC85C30))
+ return BIT(m_wr7, 6) ? m_wr10 : m_rr15;
+ else
+ return m_rr15;
+}
+
+/*
+ RR12 returns the value stored in WR12, the lower byte of the time constant, for the BRG.*/
+UINT8 z80scc_channel::do_sccreg_rr12()
+{
+ return m_wr12;
+}
+
+/*
+ RR13 returns the value stored in WR13, the upper byte of the time constant for the BRG. */
+UINT8 z80scc_channel::do_sccreg_rr13()
+{
+ return m_wr13;
+}
+
+/* (ESCC and 85C30 Only)
+On the ESCC, Read Register 14 reflects the contents of Write Register 7 Prime provided the
+Extended Read option has been enabled. Otherwise, this register returns an image of RR10.
+On the NMOS/CMOS version, a read to this location returns an image of RR10.*/
+UINT8 z80scc_channel::do_sccreg_rr14()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+ if (m_uart->m_variant & (SET_ESCC | z80scc_device::TYPE_SCC85C30))
+ return BIT(m_wr7, 6) ? m_wr7 : m_rr10;
+ else
+ return m_rr10;
+}
+
+/*
+ RR15 reflects the value stored in WR15, the External/Status IE bits. The two unused bits are
+ always returned as Os. */
+UINT8 z80scc_channel::do_sccreg_rr15()
+{
+ LOG(("Z80SCC %s()\n", __func__));
+ logerror("Z80SCC %s() not implemented feature\n", __func__);
+ return m_wr15 & 0xf5; // Mask out the used bits
+}
+
+//-------------------------------------------------
+// control_read - read control register
+//-------------------------------------------------
+UINT8 z80scc_channel::control_read()
+{
+ UINT8 data = 0;
+ int reg = m_uart->m_wr0_ptrbits; //m_wr0;
+ int regmask = (WR0_REGISTER_MASK | (m_uart->m_wr0_ptrbits & WR0_POINT_HIGH));
+
+ // LOG(("%s(%02x) reg %02x, regmask %02x, WR0 %02x\n", __func__, data, reg, regmask, m_wr0));
+ m_uart->m_wr0_ptrbits = 0;
+ reg &= regmask;
+
+ if (reg != 0)
+ {
+ // mask out register index
+ m_wr0 &= ~regmask;
+ }
+
+ /* TODO. Sort out 80X30 limitations in register access */
+ switch (reg)
+ {
+ case REG_RR0_STATUS: data = do_sccreg_rr0(); break; // TODO: verify handling of SCC specific bits: D6 and D1
+ case REG_RR1_SPEC_RCV_COND: data = do_sccreg_rr1(); break;
+ case REG_RR2_INTERRUPT_VECT: data = do_sccreg_rr2(); break; // Channel dependent and SCC specific handling compared to SIO
+ /* registers 3-7 are specific to SCC. TODO: Check variant and log/stop misuse */
+ case REG_RR3_INTERUPPT_PEND: data = do_sccreg_rr3(); break;
+ case REG_RR4_WR4_OR_RR0: data = do_sccreg_rr4(); break;
+ case REG_RR5_WR5_OR_RR0: data = do_sccreg_rr5(); break;
+ case REG_RR6_LSB_OR_RR2: data = do_sccreg_rr6(); break;
+ case REG_RR7_MSB_OR_RR3: data = do_sccreg_rr7(); break;
+ /* registers 8-15 are specific to SCC */
+ case REG_RR8_RECEIVE_DATA: data = data_read(); break;
+ case REG_RR9_WR3_OR_RR13: data = do_sccreg_rr9(); break;
+ case REG_RR10_MISC_STATUS: data = do_sccreg_rr10(); break;
+ case REG_RR11_WR10_OR_RR15: data = do_sccreg_rr11(); break;
+ case REG_RR12_LO_TIME_CONST: data = do_sccreg_rr12(); break;
+ case REG_RR13_HI_TIME_CONST: data = do_sccreg_rr13(); break;
+ case REG_RR14_WR7_OR_R10: data = do_sccreg_rr14(); break;
+ case REG_RR15_WR15_EXT_STAT: data = do_sccreg_rr15(); break;
+ default:
+ logerror("Z80SCC \"%s\" %s: %c : Unsupported RRx register:%02x\n", m_owner->tag(), __func__, 'A' + m_index, reg);
+ }
+
+ //LOG(("Z80SCC \"%s\": %c : Register R%d read '%02x'\n", m_owner->tag(), 'A' + m_index, reg, data));
+ return data;
+}
+
+/* CRC Initialization Code handling - candidate for breaking out in a z80sio_base class
+ Handle the WR0 CRC Reset/Init bits separatelly, needed by derived devices separatelly from the commands */
+void z80scc_channel::do_sccreg_wr0_resets(UINT8 data)
+{
+ LOG(("%s(%02x) %s",FUNCNAME, data, tag()));
+ switch (data & WR0_CRC_RESET_CODE_MASK)
+ {
+ case WR0_CRC_RESET_NULL:
+ LOG((" CRC_RESET_NULL\n"));
+ break;
+ case WR0_CRC_RESET_RX: /* In Synchronous mode: all Os (zeros) (CCITT-O CRC-16) */
+ LOG((" CRC_RESET_RX - not implemented\n"));
+ break;
+ case WR0_CRC_RESET_TX: /* In HDLC mode: all 1s (ones) (CCITT-1) */
+ LOG((" CRC_RESET_TX - not implemented\n"));
+ break;
+ case WR0_CRC_RESET_TX_UNDERRUN: /* Resets Tx underrun/EOM bit (D6 of the SRO register) */
+ LOG((" CRC_RESET_TX_UNDERRUN - not implemented\n"));
+ break;
+ default: /* Will not happen unless someone messes with the mask */
+ logerror(" Wrong CRC reset/init command:%02x\n", data & WR0_CRC_RESET_CODE_MASK);
+ }
+}
+
+/**/
+void z80scc_channel::do_sccreg_wr0(UINT8 data)
+{
+ m_wr0 = data;
+ m_uart->m_wr0_ptrbits = data & WR0_REGISTER_MASK;
+
+ /* Sort out SCC specific behaviours from legacy SIO behaviour */
+ /* WR0_Z_* are Z80X30 specific commands */
+ switch (data & WR0_COMMAND_MASK)
+ {
+ case WR0_POINT_HIGH:
+ /*This command effectively adds eight to the Register Pointer (D2-D0) by allowing
+ WR8 through WR15 to be accessed. The Point High command and the Register
+ Pointer bits are written simultaneously. This command is used in the Z85X30
+ version of the SCC. Note that WR0 changes form depending upon the SCC version.
+ Register access for the Z80X30 version of the SCC is accomplished through direct
+ addressing*/
+ if (m_uart->m_variant & SET_Z85X3X)
+ {
+ LOG(("Z80SCC \"%s\" %s: %c : %s - Point High command\n", m_owner->tag(), __func__, 'A' + m_index, __func__));
+ //m_ph = 8;
+ m_uart->m_wr0_ptrbits |= 8;
+ }
+ else
+ LOG(("Z80SCC \"%s\" %s: %c : %s - NULL command 2\n", m_owner->tag(), __func__, 'A' + m_index, __func__));
+ break;
+ case WR0_RESET_EXT_STATUS: // TODO: Take care of the Zero Count flag and the 2 slot fifo
+ /*After an External/Status interrupt (a change on a modem line or a break condition,
+ for example), the status bits in RR0 are latched. This command re-enables the bits
+ and allows interrupts to occur again as a result of a status change. Latching the
+ status bits captures short pulses until the CPU has time to read the change.
+ The SCC contains simple queueing logic associated with most of the external status
+ bits in RR0. If another External/Status condition changes while a previous condition
+ is still pending (Reset External/Status Interrupt has not yet been issued) and this
+ condition persists until after the command is issued, this second change causes another
+ External/Status interrupt. However, if this second status change does not persist
+ (there are two transitions), another interrupt is not generated. Exceptions to this
+ rule are detailed in the RR0 description.*/
+ // do_sccreg_wr0(data);
+ if (!m_zc)
+ {
+ m_rr0 |= RR0_ZC;
+ }
+ LOG(("Z80SCC \"%s\" %s: %c : %s - Reset External/Status Interrupt\n", m_owner->tag(), __func__, 'A' + m_index, __func__));
+ break;
+ case WR0_RESET_HIGHEST_IUS:
+ /* This command resets the highest priority Interrupt Under Service (IUS) bit, allowing lower
+ priority conditions to request interrupts. This command allows the use of the internal
+ daisy chain (even in systems without an external daisy chain) and is the last operation in
+ an interrupt service routine.TODO: Implement internal Daisychain */
+ LOG(("Z80SCC \"%s\" %s: %c : Reset Highest IUS\n", m_owner->tag(), __func__, 'A' + m_index));
+ break;
+ case WR0_ERROR_RESET:
+ /*Error Reset Command (110). This command resets the error bits in RR1. If interrupt on first Rx
+ Character or Interrupt on Special Condition modes is selected and a special condition exists, the
+ data with the special condition is held in the Receive FIFO until this command is issued. If either
+ of these modes is selected and this command is issued before the data has been read from the
+ Receive FIFO, the data is lost */
+ LOG(("Z80SCC \"%s\" %s: %c : WR0_ERROR_RESET\n", m_owner->tag(), __func__, 'A' + m_index));
+ //do_sccreg_wr0(data); // reset status registers
+ m_rx_fifo_rp_step(); // Reset error state in fifo and unlock it. unlock == step to next slot in fifo.
+ break;
+ case WR0_SEND_ABORT:
+ data &= 0xef; // convert SCC SEND_ABORT command to a SIO SEND_ABORT command and fall through
+ /* The following commands relies on the SIO default behviour */
+ case WR0_NULL:
+ LOG(("Z80SCC \"%s\" Channel %c : Null\n", m_owner->tag(), 'A' + m_index));
+ break;
+ case WR0_ENABLE_INT_NEXT_RX:
+ // enable interrupt on next receive character
+ LOG(("Z80SCC \"%s\" Channel %c : Enable Interrupt on Next Received Character\n", m_owner->tag(), 'A' + m_index));
+ m_rx_first = 1;
+ break;
+ case WR0_RESET_TX_INT:
+ // reset transmitter interrupt pending
+ LOG(("Z80SCC \"%s\" Channel %c : Reset Transmitter Interrupt Pending\n", m_owner->tag(), 'A' + m_index));
+ logerror("Z80SCC \"%s\" Channel %c : unsupported command: Reset Transmitter Interrupt Pending\n", m_owner->tag(), 'A' + m_index);
+ break;
+ default:
+ break;
+ // do_sioreg_wr0(data);
+ }
+ do_sccreg_wr0_resets(data);
+
+ if ( m_uart->m_variant & SET_Z85X3X)
+ {
+ m_uart->m_wr0_ptrbits |= (m_wr0 & (WR0_REGISTER_MASK));
+ }
+ else if ( m_uart->m_variant & SET_Z80X30) // TODO: Implement adress decoding for Z80X30 using the shift logic described below
+ {
+ /*The registers in the Z80X30 are addressed via the address on AD7-AD0 and are latched by the rising
+ edge of /AS. The Shift Right/Shift Left bit in the Channel B WR0 controls which bits are
+ decoded to form the register address. It is placed in this register to simplify programming when the
+ current state of the Shift Right/Shift Left bit is not known.
+ A hardware reset forces Shift Left mode where the address is decoded from AD5-AD1. In Shift
+ Right mode, the address is decoded from AD4-AD0. The Shift Right/Shift Left bit is written via a
+ command to make the software writing to WR0 independent of the state of the Shift Right/Shift
+ Left bit.
+ While in the Shift Left mode, the register address is placed on AD4-AD1 and the Channel Select
+ bit, A/B, is decoded from AD5. The register map for this case is listed in Table on page 21. In
+ Shift Right mode, the register address is again placed on AD4-AD1 but the channel select A/B is
+ decoded from AD0. The register map for this case is listed in Table on page 23.
+ Because the Z80X30 does not contain 16 read registers, the decoding of the read registers is not
+ complete; this is listed in Table on page 21 and Table on page 23 by parentheses around the register
+ name. These addresses may also be used to access the read registers. Also, note that the
+ Z80X30 contains only one WR2 and WR9; these registers may be written from either channel.
+ Shift Left Mode is used when Channel A and B are to be programmed differently. This allows the
+ software to sequence through the registers of one channel at a time. The Shift Right Mode is used
+ when the channels are programmed the same. By incrementing the address, the user can program
+ the same data value into both the Channel A and Channel B register.*/
+ switch(data & WR0_Z_SHIFT_MASK)
+ {
+ case WR0_Z_SEL_SHFT_LEFT:
+ LOG(("Z80SCC \"%s\": %c : %s - Shift Left Addressing Mode - not implemented\n", m_owner->tag(), 'A' + m_index, __func__));
+ break;
+ case WR0_Z_SEL_SHFT_RIGHT:
+ LOG(("Z80SCC \"%s\": %c : %s - Shift Right Addressing Mode - not implemented\n", m_owner->tag(), 'A' + m_index, __func__));
+ break;
+ default:
+ break;
+ // LOG(("Z80SCC \"%s\": %c : %s - Null commands\n", m_owner->tag(), 'A' + m_index, __func__));
+ }
+ }
+}
+
+/* Write Register 1 is the control register for the various SCC interrupt and Wait/Request modes.*/
+void z80scc_channel::do_sccreg_wr1(UINT8 data)
+{
+ LOG(("%s(%02x) \"%s\": %c : %s - %02x\n", FUNCNAME, data, m_owner->tag(), 'A' + m_index, __func__, data));
+ /* TODO: Sort out SCC specific behaviours from legacy SIO behaviours:
+ - Channel B only bits vs
+ - Parity Is Special Condition, bit2 */
+ m_wr1 = data;
+ LOG(("- External Interrupt Enable %u\n", (data & WR1_EXT_INT_ENABLE) ? 1 : 0));
+ LOG(("- Transmit Interrupt Enable %u\n", (data & WR1_TX_INT_ENABLE) ? 1 : 0));
+ LOG(("- Parity is special condition %u\n", (data & WR1_PARITY_IS_SPEC_COND) ? 1 : 0));
+ LOG(("- Wait/Ready Enable %u\n", (data & WR1_WRDY_ENABLE) ? 1 : 0));
+ LOG(("- Wait/Ready Function %s\n", (data & WR1_WRDY_FUNCTION) ? "Ready" : "Wait"));
+ LOG(("- Wait/Ready on %s\n", (data & WR1_WRDY_ON_RX_TX) ? "Receive" : "Transmit"));
+
+ switch (data & WR1_RX_INT_MODE_MASK)
+ {
+ case WR1_RX_INT_DISABLE:
+ LOG(("- Receiver Interrupt Disabled\n"));
+ break;
+
+ case WR1_RX_INT_FIRST:
+ LOG(("- Receiver Interrupt on First Character\n"));
+ break;
+
+ case WR1_RX_INT_ALL_PARITY:
+ LOG(("- Receiver Interrupt on All Characters, Parity Affects Vector\n"));
+ break;
+
+ case WR1_RX_INT_ALL:
+ LOG(("- Receiver Interrupt on All Characters\n"));
+ break;
+ }
+ m_uart->check_interrupts();
+}
+
+/*WR2 is the interrupt vector register. Only one vector register exists in the SCC, and it can be
+accessed through either channel. The interrupt vector can be modified by status information. This
+is controlled by the Vector Includes Status (VIS) and the Status High/Status Low bits in WR9.*/
+void z80scc_channel::do_sccreg_wr2(UINT8 data)
+{
+ LOG(("%s(%d) Setting the interrupt vector\n", FUNCNAME, data));
+ m_wr2 = data;
+ m_uart->m_chanA->m_rr2 = data;
+ m_uart->m_chanB->m_rr2 = data; /* TODO: Sort out the setting of ChanB depending on bits in WR9 */
+
+ m_uart->check_interrupts();
+}
+
+void z80scc_channel::do_sccreg_wr3(UINT8 data)
+{
+ LOG(("%s(%d) Setting up the receiver\n", FUNCNAME, data));
+ m_wr3 = data;
+ LOG(("- Receiver Enable %u\n", (data & WR3_RX_ENABLE) ? 1 : 0));
+ LOG(("- Auto Enables %u\n", (data & WR3_AUTO_ENABLES) ? 1 : 0));
+ LOG(("- Receiver Bits/Character %u\n", get_rx_word_length()));
+}
+
+void z80scc_channel::do_sccreg_wr4(UINT8 data)
+{
+ LOG(("%s(%d) Setting up asynchronous frame format and clock\n", FUNCNAME, data));
+ m_wr4 = data;
+ LOG(("- Parity Enable %u\n", (data & WR4_PARITY_ENABLE) ? 1 : 0));
+ LOG(("- Parity %s\n", (data & WR4_PARITY_EVEN) ? "Even" : "Odd"));
+ LOG(("- Stop Bits %s\n", stop_bits_tostring(get_stop_bits())));
+ LOG(("- Clock Mode %uX\n", get_clock_mode()));
+}
+
+void z80scc_channel::do_sccreg_wr5(UINT8 data)
+{
+ LOG(("%s(%d) Setting up the transmitter\n", FUNCNAME, data));
+ m_wr5 = data;
+ LOG(("- Transmitter Enable %u\n", (data & WR5_TX_ENABLE) ? 1 : 0));
+ LOG(("- Transmitter Bits/Character %u\n", get_tx_word_length()));
+ LOG(("- Send Break %u\n", (data & WR5_SEND_BREAK) ? 1 : 0));
+ LOG(("- Request to Send %u\n", (data & WR5_RTS) ? 1 : 0));
+ LOG(("- Data Terminal Ready %u\n", (data & WR5_DTR) ? 1 : 0));
+}
+
+void z80scc_channel::do_sccreg_wr6(UINT8 data)
+{
+ LOG(("%s(%d) Transmit sync\n", FUNCNAME, data));
+ m_sync = (m_sync & 0xff00) | data;
+}
+
+void z80scc_channel::do_sccreg_wr7(UINT8 data)
+{
+ LOG(("%s(%d) Receive sync\n", FUNCNAME, data));
+ m_sync = (data << 8) | (m_sync & 0xff);
+}
+
+/* WR8 is the transmit buffer register */
+void z80scc_channel::do_sccreg_wr8(UINT8 data)
+{
+ LOG(("%s(%d) \"%s\": %c : Transmit Buffer read %02x\n", FUNCNAME, data, m_owner->tag(), 'A' + m_index, data));
+ data_write(data);
+}
+
+/*WR9 is the Master Interrupt Control register and contains the Reset command bits. Only one WR9
+exists in the SCC and is accessed from either channel. The Interrupt control bits are programmed
+at the same time as the Reset command, because these bits are only reset by a hardware reset
+note that the Z80X30 contains only one WR2 and WR9; these registers may be written from either channel.*/
+void z80scc_channel::do_sccreg_wr9(UINT8 data)
+{
+ if (m_uart->m_variant & SET_Z80X30)
+ {
+ m_uart->m_chanA->m_wr9 = data;
+ m_uart->m_chanB->m_wr9 = data;
+ }
+ else
+ m_wr9 = data;
+
+ switch (data & WR9_CMD_MASK)
+ {
+ case WR9_CMD_NORESET:
+ LOG(("Z80SCC \"%s\": %c : Master Interrupt Control - No reset %02x\n", m_owner->tag(), 'A' + m_index, data));
+ break;
+ case WR9_CMD_CHNB_RESET:
+ LOG(("Z80SCC \"%s\": %c : Master Interrupt Control - Channel B reset %02x\n", m_owner->tag(), 'A' + m_index, data));
+ m_uart->m_chanB->reset();
+ break;
+ case WR9_CMD_CHNA_RESET:
+ LOG(("Z80SCC \"%s\": %c : Master Interrupt Control - Channel A reset %02x\n", m_owner->tag(), 'A' + m_index, data));
+ m_uart->m_chanA->reset();
+ break;
+ case WR9_CMD_HW_RESET:
+ LOG(("Z80SCC \"%s\": %c : Master Interrupt Control - Device reset %02x\n", m_owner->tag(), 'A' + m_index, data));
+ /*"The effects of this command are identical to those of a hardware reset, except that the Shift Right/Shift Left bit is
+ not changed and the MIE, Status High/Status Low and DLC bits take the programmed values that accompany this command."
+ The Shift Right/Shift Left bits of the WR0 is only valid on SCC8030 device hence not implemented yet, just the SCC8530 */
+ if (data & (WR9_BIT_MIE | WR9_BIT_IACK | WR9_BIT_SHSL | WR9_BIT_DLC | WR9_BIT_NV))
+ logerror("Z80SCC: SCC Interrupt system not yet implemented, please be patient!\n");
+ m_uart->device_reset();
+ default:
+ logerror("Z80SCC Code is broken in WR9, please report!\n");
+ }
+}
+
+/* WR10 contains miscellaneous control bits for both the receiver and the transmitter. Bit positions
+for WR10 are displayed in Figure . On the ESCC and 85C30 with the Extended Read option
+enabled, this register may be read as RR11.*/
+void z80scc_channel::do_sccreg_wr10(UINT8 data)
+{
+ m_wr10 = data;
+ LOG(("Z80SCC \"%s\": %c : %s Misc Tx/Rx Control %02x - not implemented \n", m_owner->tag(), 'A' + m_index, __func__, data));
+}
+
+/* WR11 is the Clock Mode Control register. The bits in this register control the sources of both the
+receive and transmit clocks, the type of signal on the /SYNC and /RTxC pins, and the direction of
+the /TRxC pin.*/
+void z80scc_channel::do_sccreg_wr11(UINT8 data)
+{
+ LOG(("Z80SCC \"%s\": %c : %s Clock Mode Control %02x - not implemented \n", m_owner->tag(), 'A' + m_index, __func__, data));
+ m_wr11 = data;
+ /*Bit 7: This bit controls the type of input signal the SCC expects to see on the /RTxC pin. If this bit is set
+ to 0, the SCC expects a TTL-compatible signal as an input to this pin. If this bit is set to 1, the SCC
+ connects a high-gain amplifier between the /RTxC and /SYNC pins in expectation of a quartz
+ crystal being placed across the pins.
+ The output of this oscillator is available for use as a clocking source. In this mode of operation, the
+ /SYNC pin is unavailable for other use. The /SYNC signal is forced to zero internally. A hardware
+ reset forces /NO XTAL. (At least 20 ms should be allowed after this bit is set to allow the oscillator
+ to stabilize.)*/
+ LOG((" Clock type %s\n", data & WR11_RCVCLK_TYPE ? "Crystal oscillator between RTxC and /SYNC pins" : "TTL level on RTxC pin"));
+ /*Bits 6 and 5: Receiver Clock select bits 1 and 0
+ These bits determine the source of the receive clock as listed below. They do not
+ interfere with any of the modes of operation in the SCC, but simply control a multiplexer just
+ before the internal receive clock input. A hardware reset forces the receive clock to come from the
+ /RTxC pin.*/
+ LOG((" Receive clock source is: "));
+ switch (data & WR11_RCVCLK_SRC_MASK)
+ {
+ case WR11_RCVCLK_SRC_RTXC: LOG(("RTxC\n")); break;
+ case WR11_RCVCLK_SRC_TRXC: LOG(("TRxC\n")); break;
+ case WR11_RCVCLK_SRC_BR: LOG(("Baudrate Generator\n")); break;
+ case WR11_RCVCLK_SRC_DPLL: LOG(("DPLL\n")); break;
+ default: logerror("Wrong!\n");/* Will not happen unless someone messes with the mask */
+ }
+ /*Bits 4 and 3: Transmit Clock select bits 1 and 0.
+ These bits determine the source of the transmit clock as listed in Table . They do not interfere with
+ any of the modes of operation of the SCC, but simply control a multiplexer just before the internal
+ transmit clock input. The DPLL output that is used to feed the transmitter in FM modes lags by 90
+ degrees the output of the DPLL used by the receiver. This makes the received and transmitted bit
+ cells occur simultaneously, neglecting delays. A hardware reset selects the /TRxC pin as the
+ source of the transmit clocks.*/
+ LOG((" Transmit clock source is: "));
+ switch (data & WR11_TRACLK_SRC_MASK)
+ {
+ case WR11_TRACLK_SRC_RTXC: LOG(("RTxC\n")); break;
+ case WR11_TRACLK_SRC_TRXC: LOG(("TRxC\n")); break;
+ case WR11_TRACLK_SRC_BR: LOG(("Baudrate Generator\n")); break;
+ case WR11_TRACLK_SRC_DPLL: LOG(("DPLL\n")); break;
+ default: logerror("Wrong!\n");/* Will not happen unless someone messes with the mask */
+ }
+ /* Bit 2: TRxC Pin I/O control bit
+ This bit determines the direction of the /TRxC pin. If this bit is set to 1, the /TRxC pin is an output
+ and carries the signal selected by D1 and D0 of this register. However, if either the receive or the
+ transmit clock is programmed to come from the /TRxC pin, /TRxC is an input, regardless of the
+ state of this bit. The /TRxC pin is also an input if this bit is set to 0. A hardware reset forces this bit
+ to 0.*/
+ LOG((" TRxC pin is %s\n", data & WR11_TRXC_DIRECTION ? "Output" : "Input"));
+ /*Bits 1 and 0: /TRxC Output Source select bits 1 and 0
+ These bits determine the signal to be echoed out of the SCC via the /TRxC pin as listed in Table
+ on page 167. No signal is produced if /TRxC has been programmed as the source of either the
+ receive or the transmit clock. If /TRxC O/I (bit 2) is set to 0, these bits are ignored.
+ If the XTAL oscillator output is programmed to be echoed, and the XTAL oscillator is not enabled,
+ the /TRxC pin goes High. The DPLL signal that is echoed is the DPLL signal used by the receiver.
+ Hardware reset selects the XTAL oscillator as the output source*/
+ LOG((" TRxC clock source is: "));
+ switch (data & WR11_TRXSRC_SRC_MASK)
+ {
+ case WR11_TRXSRC_SRC_XTAL: LOG(("the Oscillator\n")); break;
+ case WR11_TRXSRC_SRC_TRA: LOG(("Transmit clock\n")); break;
+ case WR11_TRXSRC_SRC_BR: LOG(("Baudrate Generator\n")); break;
+ case WR11_TRXSRC_SRC_DPLL: LOG(("DPLL\n")); break;
+ default: logerror("Wrong!\n");/* Will not happen unless someone messes with the mask */
+ }
+}
+
+/*WR12 contains the lower byte of the time constant for the baud rate generator. The time constant
+ can be changed at any time, but the new value does not take effect until the next time the time constant
+ is loaded into the down counter. No attempt is made to synchronize the loading of the time
+ constant into WR12 and WR13 with the clock driving the down counter. For this reason, it is
+ advisable to disable the baud rate generator while the new time constant is loaded into WR12 and
+ WR13. Ordinarily, this is done anyway to prevent a load of the down counter between the writing
+ of the upper and lower bytes of the time constant.
+ The formula for determining the appropriate time constant for a given baud is shown below, with
+ the desired rate in bits per second and the BR clock period in seconds. This formula is derived
+ because the counter decrements from N down to zero-plus-one-cycle for reloading the time constant.
+ This is then fed to a toggle flip-flop to make the output a square wave.
+
+ Time Constant = Clock Frequency / (2 * Desired Rate * Baud Rate Clock Period) - 2
+
+*/
+void z80scc_channel::do_sccreg_wr12(UINT8 data)
+{
+ m_wr12 = data;
+ LOG(("Z80SCC \"%s\": %c : %s %02x Low byte of Time Constant for Baudrate generator - not implemented \n", m_owner->tag(), 'A' + m_index, __func__, data));
+}
+
+/* WR13 contains the upper byte of the time constant for the baud rate generator. */
+void z80scc_channel::do_sccreg_wr13(UINT8 data)
+{
+ m_wr13 = data;
+ LOG(("Z80SCC \"%s\": %c : %s %02x High byte of Time Constant for Baudrate generator - not implemented \n", m_owner->tag(), 'A' + m_index, __func__, data));
+}
+
+/*
+ WR14 contains some miscellaneous control bits */
+void z80scc_channel::do_sccreg_wr14(UINT8 data)
+{
+ switch (data & WR14_DPLL_CMD_MASK)
+ {
+ case WR14_CMD_NULL:
+ LOG(("Z80SCC \"%s\": %c : %s Misc Control Bits Null Command %02x\n", m_owner->tag(), 'A' + m_index, __func__, data));
+ break;
+ case WR14_CMD_ESM:
+/* Issuing this command causes the DPLL to enter the Search mode, where the DPLL searches for a locking edge in the
+ incoming data stream. The action taken by the DPLL upon receipt of this command depends on the operating mode of
+ the DPLL. In NRZI mode, the output of the DPLL is High while the DPLL is waiting for an edge in the incoming data
+ stream. After the Search mode is entered, the first edge the DPLL sees is assumed to be a valid data edge, and
+ the DPLL begins the clock recovery operation from that point. The DPLL clock rate must be 32x the data rate in
+ NRZI mode. Upon leaving the Search mode, the first sampling edge of the DPLL occurs 16 of these 32x clocks after
+ the first data edge, and the second sampling occurs 48 of these 32x clocks after the first data edge. Beyond
+ this point, the DPLL begins normal operation, adjusting the output to remain in sync with the incoming data.
+ In FM mode, the output of the DPLL is Low while the DPLL is waiting for an edge in the incoming data stream.
+ The first edge the DPLL detects is assumed to be a valid clock edge. For this to be the case, the line must
+ contain only clock edges; i.e. with FM1 encoding, the line must be continuous 0s. With FM0 encoding the line must
+ be continuous 1s, whereas Manchester encoding requires alternating 1s and 0s on the line. The DPLL clock rate must
+ be 16 times the data rate in FM mode. The DPLL output causes the receiver to sample the data stream in the nominal
+ center of the two halves of the bit to decide whether the data was a 1 or a 0. After this command is issued, as in
+ NRZI mode, the DPLL starts sampling immediately after the first edge is detected. (In FM mode, the DPLL examines
+ the clock edge of every other bit to decide what correction must be made to remain in sync.) If the DPLL does not
+ see an edge during the expected window, the one clock missing bit in RR10 is set. If the DPLL does not see an edge
+ after two successive attempts, the two clocks missing bits in RR10 are set and the DPLL automatically enters the
+ Search mode. This command resets both clocks missing latches.*/
+ LOG(("Z80SCC \"%s\": %c : %s Misc Control Bits Enter Search Mode Command - not implemented\n", m_owner->tag(), 'A' + m_index, __func__));
+ break;
+ case WR14_CMD_RMC:
+ /* Issuing this command disables the DPLL, resets the clock missing latches in RR10, and forces a continuous Search mode state */
+ LOG(("Z80SCC \"%s\": %c : %s Misc Control Bits Reset Missing Clocks Command - not implemented\n", m_owner->tag(), 'A' + m_index, __func__));
+ break;
+ case WR14_CMD_DISABLE_DPLL:
+ /* Issuing this command disables the DPLL, resets the clock missing latches in RR10, and forces a continuous Search mode state.*/
+ LOG(("Z80SCC \"%s\": %c : %s Misc Control Bits Disable DPLL Command - not implemented\n", m_owner->tag(), 'A' + m_index, __func__));
+ break;
+ case WR14_CMD_SS_BGR:
+ /* Issuing this command forces the clock for the DPLL to come from the output of the BRG. */
+ LOG(("Z80SCC \"%s\": %c : %s Misc Control Bits Baudrate Generator Input DPLL Command - not implemented\n", m_owner->tag(), 'A' + m_index, __func__));
+ break;
+ case WR14_CMD_SS_RTXC:
+ /* Issuing the command forces the clock for the DPLL to come from the /RTxC pin or the crystal oscillator, depending on
+ the state of the XTAL/no XTAL bit in WR11. This mode is selected by a channel or hardware reset*/
+ LOG(("Z80SCC \"%s\": %c : %s Misc Control Bits RTxC Input DPLL Command - not implemented\n", m_owner->tag(), 'A' + m_index, __func__));
+ break;
+ case WR14_CMD_SET_FM:
+ /* This command forces the DPLL to operate in the FM mode and is used to recover the clock from FM or Manchester-Encoded
+ data. (Manchester is decoded by placing the receiver in NRZ mode while the DPLL is in FM mode.)*/
+ LOG(("Z80SCC \"%s\": %c : %s Misc Control Bits Set FM Mode Command - not implemented\n", m_owner->tag(), 'A' + m_index, __func__));
+ break;
+ case WR14_CMD_SET_NRZI:
+ /* Issuing this command forces the DPLL to operate in the NRZI mode. This mode is also selected by a hardware or channel reset.*/
+ LOG(("Z80SCC \"%s\": %c : %s Mics Control Bits Set NRZI Mode Command - not implemented\n", m_owner->tag(), 'A' + m_index, __func__));
+ break;
+ default:
+ logerror("Z80SCC \"%s\": %c : %s Mics Control Bits command %02x - not implemented \n", m_owner->tag(), 'A' + m_index, __func__, data);
+ }
+ // TODO: Add info on the other bits of this register
+ m_wr14 = data;
+}
+
+/* WR15 is the External/Status Source Control register. If the External/Status interrupts are enabled
+ as a group via WR1, bits in this register control which External/Status conditions cause an interrupt.
+ Only the External/Status conditions that occur after the controlling bit is set to 1 cause an
+ interrupt. This is true, even if an External/Status condition is pending at the time the bit is set*/
+void z80scc_channel::do_sccreg_wr15(UINT8 data)
+{
+ LOG(("%s(%d) \"%s\": %c : External/Status Control Bits - not implemented\n",
+ FUNCNAME, data, m_owner->tag(), 'A' + m_index));
+ m_wr15 = data;
+}
+
+/*TODO: Z80X30 Register Access
+ ----------------------------
+The Shift Right/Shift Left bit in the Channel B WR0 controls which bits are decoded to form the register
+address. See do_sccreg_wr0() for details */
+
+/*Z85X30 Register Access
+ -----------------------
+The registers in the Z85X30 are accessed in a two step process, using a Register Pointer to perform
+the addressing. To access a particular register, the pointer bits are set by writing to WR0. The
+pointer bits may be written in either channel because only one set exists in the Z85X30. After the
+pointer bits are set, the next read or write cycle of the Z85X30 having D//C Low will access the
+desired register. At the conclusion of this read or write cycle the pointer bits are reset to 0s, so that
+the next control write is to the pointers in WR0.
+
+A read to RR8 (the receive data FIFO) or a write to WR8 (the transmit data FIFO) is either done in
+this fashion or by accessing the Z85X30 having D//C pin High. A read or write with D//C High
+accesses the data registers directly, and independently of the state of the pointer bits. This allows
+single-cycle access to the data registers and does not disturb the pointer bits.
+
+The fact that the pointer bits are reset to 0, unless explicitly set otherwise, means that WR0 and
+RR0 may also be accessed in a single cycle. That is, it is not necessary to write the pointer bits
+with 0 before accessing WR0 or RR0.*/
+//-------------------------------------------------
+// control_write - write control register
+//-------------------------------------------------
+
+void z80scc_channel::control_write(UINT8 data)
+{
+ UINT8 reg = m_uart->m_wr0_ptrbits; //m_wr0;
+ UINT8 regmask = (WR0_REGISTER_MASK | (m_uart->m_wr0_ptrbits & WR0_POINT_HIGH));
+
+ m_uart->m_wr0_ptrbits = 0; // The "Point High" command is only valid for one access
+
+ reg &= regmask;
+
+ if (reg != 0)
+ {
+ // mask out register index
+ m_wr0 &= ~regmask;
+ }
+
+ LOG(("\n%s(%02x) reg %02x, regmask %02x\n", FUNCNAME, data, reg, regmask));
+
+ /* TODO. Sort out 80X30 & other SCC variants limitations in register access */
+ switch (reg)
+ {
+ case REG_WR0_COMMAND_REGPT: do_sccreg_wr0(data); ;break;
+ case REG_WR1_INT_DMA_ENABLE: do_sccreg_wr1(data); m_uart->check_interrupts(); break;
+ case REG_WR2_INT_VECTOR: do_sccreg_wr2(data); break;
+ case REG_WR3_RX_CONTROL:
+ do_sccreg_wr3(data);
+ update_serial();
+ receive_register_reset();
+ break;
+ case REG_WR4_RX_TX_MODES:
+ do_sccreg_wr4(data);
+ update_serial();
+ transmit_register_reset();
+ receive_register_reset();
+ break;
+ case REG_WR5_TX_CONTROL:
+ do_sccreg_wr5(data);
+ update_serial();
+ transmit_register_reset();
+ update_rts();
+ break;
+ case REG_WR6_SYNC_OR_SDLC_A: do_sccreg_wr6(data); break;
+ case REG_WR7_SYNC_OR_SDLC_F: do_sccreg_wr7(data); break;
+ case REG_WR8_TRANSMIT_DATA: do_sccreg_wr8(data); break;
+ case REG_WR9_MASTER_INT_CTRL: do_sccreg_wr9(data); break;
+ case REG_WR10_MSC_RX_TX_CTRL: do_sccreg_wr10(data); break;
+ case REG_WR11_CLOCK_MODES: do_sccreg_wr11(data); break;
+ case REG_WR12_LO_BAUD_GEN: do_sccreg_wr12(data); break;
+ case REG_WR13_HI_BAUD_GEN: do_sccreg_wr13(data); break;
+ case REG_WR14_MISC_CTRL: do_sccreg_wr14(data); break;
+ case REG_WR15_EXT_ST_INT_CTRL:do_sccreg_wr15(data); break;
+ default:
+ logerror("Z80SCC \"%s\": %c : Unsupported WRx register:%02x\n", m_owner->tag(), 'A' + m_index, reg);
+ }
+}
+
+
+//-------------------------------------------------
+// data_read - read data register from fifo
+//-------------------------------------------------
+
+UINT8 z80scc_channel::data_read()
+{
+ UINT8 data = 0;
+
+ LOG(("%s \"%s\": %c : Data Register Read: \n", FUNCNAME, m_owner->tag(), 'A' + m_index));
+
+ if (m_rx_fifo_wp != m_rx_fifo_rp)
+ {
+ /* Special Receive Condition interrupts are generated after the character is read from
+ the FIFO, not when the special condition is first detected. This is done so that when
+ using receive interrupt on first or Special Condition or Special Condition Only, data is
+ directly read out of the data FIFO without checking the status first. If a special condi-
+ tion interrupted the CPU when first detected, it would be necessary to read RR1
+ before each byte in the FIFO to determine which byte had the special condition.
+ Therefore, by not generating the interrupt until after the byte has been read and then
+ locking the FIFO, only one status read is necessary. A DMA can be used to do all data
+ transfers (otherwise, it would be necessary to disable the DMA to allow the CPU to
+ read the status on each byte). Consequently, since the special condition locks the
+ FIFO to preserve the status, it is necessary to issue the Error Reset command to
+ unlock it. Only the exit location of the FIFO is locked allowing more data to be
+ received into the other bytes of the Receive FIFO.*/
+
+ // load data from the FIFO
+ data = m_rx_fifo_rp_data();
+
+ // load error status from the FIFO
+ m_rr1 = (m_rr1 & ~(RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR)) | m_rx_error_fifo[m_rx_fifo_rp];
+
+ // trigger interrup and lock the fifo if an error is present
+ if (m_rr1 & (RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR))
+ {
+ switch (m_wr1 & WR1_RX_INT_MODE_MASK)
+ {
+ case WR1_RX_INT_FIRST:
+ if (!m_rx_first)
+ {
+ m_uart->trigger_interrupt(m_index, INT_SPECIAL);
+ }
+ break;
+
+ case WR1_RX_INT_ALL_PARITY:
+ case WR1_RX_INT_ALL:
+ m_uart->trigger_interrupt(m_index, INT_SPECIAL);
+ break;
+ }
+ }
+ else
+ {
+ // decrease FIFO pointer
+ m_rx_fifo_rp_step();
+ }
+ }
+ else
+ {
+ LOG(("data_read: Attempt to read out character from empty FIFO\n"));
+ logerror("data_read: Attempt to read out character from empty FIFO\n");
+ }
+
+ LOG(("'%c' %02x\n", isascii(data) ? data : ' ', data));
+ return data;
+}
+
+/* Get data from top of fifo data but restore read pointer in case of exit latch lock */
+UINT8 z80scc_channel::m_rx_fifo_rp_data()
+{
+ UINT8 data;
+ UINT8 old_rp = m_rx_fifo_rp;
+ m_rx_fifo_rp_step();
+ data = m_rx_data_fifo[m_rx_fifo_rp];
+ m_rx_fifo_rp = old_rp;
+
+ return data;
+}
+
+/* Step read pointer */
+void z80scc_channel::m_rx_fifo_rp_step()
+{
+ m_rx_fifo_rp++;
+ if (m_rx_fifo_rp >= m_rx_fifo_sz)
+ {
+ m_rx_fifo_rp = 0;
+ }
+
+ // check if FIFO is empty
+ if (m_rx_fifo_rp == m_rx_fifo_wp)
+ {
+ // no more characters available in the FIFO
+ m_rr0 &= ~ RR0_RX_CHAR_AVAILABLE;
+ }
+}
+
+READ8_MEMBER (z80scc_device::da_r) { return m_chanA->data_read(); }
+WRITE8_MEMBER (z80scc_device::da_w) { m_chanA->data_write(data); }
+READ8_MEMBER (z80scc_device::db_r) { return m_chanB->data_read(); }
+WRITE8_MEMBER (z80scc_device::db_w) { m_chanB->data_write(data); }
+
+//-------------------------------------------------
+// data_write - write data register
+//-------------------------------------------------
+void z80scc_channel::data_write(UINT8 data)
+{
+ m_tx_data = data;
+
+ if ((m_wr5 & WR5_TX_ENABLE) && is_transmit_register_empty())
+ {
+ LOG(("%s(%d) \"%s\": %c : Transmit Data Byte '%02x'\n", FUNCNAME, data, m_owner->tag(), 'A' + m_index, m_tx_data));
+
+ transmit_register_setup(m_tx_data);
+
+ // empty transmit buffer
+ m_rr0 |= RR0_TX_BUFFER_EMPTY;
+
+ if (m_wr1 & WR1_TX_INT_ENABLE)
+ {
+ m_uart->trigger_interrupt(m_index, INT_TRANSMIT);
+ }
+ }
+ else
+ {
+ m_rr0 &= ~RR0_TX_BUFFER_EMPTY;
+ LOG(("%s(%d) \"%s\": %c : failed to send %c,(%02x)\n", FUNCNAME, data, m_owner->tag(), 'A' + m_index, isascii(data) ? data : ' ', data));
+ }
+
+ m_rr1 &= ~RR1_ALL_SENT;
+}
+
+
+//-------------------------------------------------
+// receive_data - receive data word into fifo
+//-------------------------------------------------
+
+void z80scc_channel::receive_data(UINT8 data)
+{
+ LOG(("Z80SCC \"%s\": %c : Receive Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, data));
+
+ if (m_rx_fifo_wp + 1 == m_rx_fifo_rp ||
+ ( (m_rx_fifo_wp + 1 == m_rx_fifo_sz) && (m_rx_fifo_rp == 0) ))
+ {
+ // receive overrun error detected
+ m_rx_error_fifo[m_rx_fifo_wp] |= RR1_RX_OVERRUN_ERROR; // = m_rx_error;
+ }
+ else
+ {
+ m_rx_error_fifo[m_rx_fifo_wp] &= ~RR1_RX_OVERRUN_ERROR; // = m_rx_error;
+ m_rx_fifo_wp++;
+ if (m_rx_fifo_wp >= m_rx_fifo_sz)
+ {
+ m_rx_fifo_wp = 0;
+ }
+ }
+
+ // store received character
+ m_rx_data_fifo[m_rx_fifo_wp] = data;
+
+ m_rr0 |= RR0_RX_CHAR_AVAILABLE;
+
+#if 0 // interrupt on exit from fifo
+ // receive interrupt
+ switch (m_wr1 & WR1_RX_INT_MODE_MASK)
+ {
+ case WR1_RX_INT_FIRST:
+ if (m_rx_first)
+ {
+ m_uart->trigger_interrupt(m_index, INT_RECEIVE);
+
+ m_rx_first = 0;
+ }
+ break;
+
+ case WR1_RX_INT_ALL_PARITY:
+ case WR1_RX_INT_ALL:
+ m_uart->trigger_interrupt(m_index, INT_RECEIVE);
+ break;
+ }
+#endif
+}
+
+
+//-------------------------------------------------
+// cts_w - clear to send handler
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( z80scc_channel::cts_w )
+{
+ LOG(("Z80SCC \"%s\" %s: %c : CTS %u\n", m_owner->tag(), __func__, 'A' + m_index, state));
+
+ if (m_cts != state)
+ {
+ // enable transmitter if in auto enables mode
+ if (!state)
+ if (m_wr3 & WR3_AUTO_ENABLES)
+ m_wr5 |= WR5_TX_ENABLE;
+
+ // set clear to send
+ m_cts = state;
+
+ if (!m_rx_rr0_latch)
+ {
+ if (!m_cts)
+ m_rr0 |= RR0_CTS;
+ else
+ m_rr0 &= ~RR0_CTS;
+
+ // trigger interrupt
+ if (m_wr1 & WR1_EXT_INT_ENABLE)
+ {
+ // trigger interrupt
+ m_uart->trigger_interrupt(m_index, INT_EXTERNAL);
+
+ // latch read register 0
+ m_rx_rr0_latch = 1;
+ }
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// dcd_w - data carrier detected handler
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( z80scc_channel::dcd_w )
+{
+ LOG(("Z80SCC \"%s\": %c : DCD %u\n", m_owner->tag(), 'A' + m_index, state));
+
+ if (m_dcd != state)
+ {
+ // enable receiver if in auto enables mode
+ if (!state)
+ if (m_wr3 & WR3_AUTO_ENABLES)
+ m_wr3 |= WR3_RX_ENABLE;
+
+ // set data carrier detect
+ m_dcd = state;
+
+ if (!m_rx_rr0_latch)
+ {
+ if (m_dcd)
+ m_rr0 |= RR0_DCD;
+ else
+ m_rr0 &= ~RR0_DCD;
+
+ if (m_wr1 & WR1_EXT_INT_ENABLE)
+ {
+ // trigger interrupt
+ m_uart->trigger_interrupt(m_index, INT_EXTERNAL);
+
+ // latch read register 0
+ m_rx_rr0_latch = 1;
+ }
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// ri_w - ring indicator handler
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( z80scc_channel::ri_w )
+{
+ LOG(("Z80SCC \"%s\": %c : RI %u\n", m_owner->tag(), 'A' + m_index, state));
+
+ if (m_ri != state)
+ {
+ // set ring indicator state
+ m_ri = state;
+
+ if (!m_rx_rr0_latch)
+ {
+ if (m_ri)
+ m_rr0 |= RR0_RI;
+ else
+ m_rr0 &= ~RR0_RI;
+
+ if (m_wr1 & WR1_EXT_INT_ENABLE)
+ {
+ // trigger interrupt
+ m_uart->trigger_interrupt(m_index, INT_EXTERNAL);
+
+ // latch read register 0
+ m_rx_rr0_latch = 1;
+ }
+ }
+ }
+}
+
+//-------------------------------------------------
+// sync_w - sync handler
+//-------------------------------------------------
+WRITE_LINE_MEMBER( z80scc_channel::sync_w )
+{
+ LOG(("Z80SCC \"%s\": %c : SYNC %u\n", m_owner->tag(), 'A' + m_index, state));
+}
+
+//-------------------------------------------------
+// rxc_w - receive clock
+//-------------------------------------------------
+WRITE_LINE_MEMBER( z80scc_channel::rxc_w )
+{
+ //LOG(("Z80SCC \"%s\": %c : Receiver Clock Pulse\n", m_owner->tag(), m_index + 'A'));
+ if (m_wr3 & WR3_RX_ENABLE)
+ {
+ int clocks = get_clock_mode();
+ if (clocks == 1)
+ rx_clock_w(state);
+ else if(state)
+ {
+ rx_clock_w(m_rx_clock < clocks/2);
+
+ m_rx_clock++;
+ if (m_rx_clock == clocks)
+ m_rx_clock = 0;
+
+ }
+ }
+}
+
+//-------------------------------------------------
+// txc_w - transmit clock
+//-------------------------------------------------
+WRITE_LINE_MEMBER( z80scc_channel::txc_w )
+{
+ //LOG(("Z80SCC \"%s\": %c : Transmitter Clock Pulse\n", m_owner->tag(), m_index + 'A'));
+ if (m_wr5 & WR5_TX_ENABLE)
+ {
+ int clocks = get_clock_mode();
+ if (clocks == 1)
+ tx_clock_w(state);
+ else if(state)
+ {
+ tx_clock_w(m_tx_clock < clocks/2);
+
+ m_tx_clock++;
+ if (m_tx_clock == clocks)
+ m_tx_clock = 0;
+ }
+ }
+}
+
+//-------------------------------------------------
+// update_serial -
+//-------------------------------------------------
+void z80scc_channel::update_serial()
+{
+ int data_bit_count = get_rx_word_length();
+ stop_bits_t stop_bits = get_stop_bits();
+ parity_t parity;
+
+ if (m_wr4 & WR4_PARITY_ENABLE)
+ {
+ if (m_wr4 & WR4_PARITY_EVEN)
+ parity = PARITY_EVEN;
+ else
+ parity = PARITY_ODD;
+ }
+ else
+ parity = PARITY_NONE;
+
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c setting data frame %d+%d%c%d\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, 1,
+ data_bit_count, parity == PARITY_NONE ? 'N' : parity == PARITY_EVEN ? 'E' : 'O', (stop_bits + 1) / 2));
+ set_data_frame(1, data_bit_count, parity, stop_bits);
+
+ int clocks = get_clock_mode();
+
+ if (m_rxc > 0)
+ {
+ set_rcv_rate(m_rxc / clocks);
+ LOG((" - Receiver clock: %d mode: %d rate: %d/%xh\n", m_rxc, clocks, m_rxc / clocks, m_rxc / clocks));
+ }
+
+ if (m_txc > 0)
+ {
+ set_tra_rate(m_txc / clocks);
+ LOG((" - Transmit clock: %d mode: %d rate: %d/%xh\n", m_rxc, clocks, m_rxc / clocks, m_rxc / clocks));
+ }
+}
+
+//-------------------------------------------------
+// set_dtr -
+//-------------------------------------------------
+void z80scc_channel::set_dtr(int state)
+{
+ LOG(("%s(%d)\n", FUNCNAME, state));
+ m_dtr = state;
+
+ if (m_index == z80scc_device::CHANNEL_A)
+ m_uart->m_out_dtra_cb(m_dtr);
+ else
+ m_uart->m_out_dtrb_cb(m_dtr);
+}
+
+
+
+//-------------------------------------------------
+// write_rx - called by terminal through rs232/diserial
+// when character is sent to board
+//-------------------------------------------------
+WRITE_LINE_MEMBER(z80scc_channel::write_rx)
+{
+ m_rxd = state;
+ //only use rx_w when self-clocked
+ if(m_rxc)
+ device_serial_interface::rx_w(state);
+}
diff --git a/src/devices/machine/z80scc.h b/src/devices/machine/z80scc.h
new file mode 100644
index 00000000000..5e21b85bff7
--- /dev/null
+++ b/src/devices/machine/z80scc.h
@@ -0,0 +1,728 @@
+// license:BSD-3-Clause
+// copyright-holders:Joakim Larsson Edstrom
+/***************************************************************************
+
+ Z80-SCC Serial Communications Controller emulation
+
+****************************************************************************
+ _____ _____ _____ _____
+ AD1 1|* \_/ |40 AD0 D1 1|* \_/ |40 D0
+ AD3 2| |39 AD2 D3 2| |39 D2
+ AD5 3| |38 AD4 D5 3| |38 D4
+ AD7 4| |37 AD6 D7 4| |37 D6
+ _INT 5| |36 _DS _INT 5| |36 _RD
+ IEO 6| |35 _AS IEO 6| |35 _WR
+ IEI 7| |34 R/_W IEI 7| |34 B/_A
+ _INTACK 8| |33 _CS0 _INTACK 8| |33 _CE
+ VCC 9| |32 CS1 VCC 9| |32 C/_D
+ _W//REQA 10| |31 GND _W//REQA 10| |31 GND
+ _SYNCA 11| Z8030 |30 _W/_REQ _SYNCA 11| Z8530 |30 _W/_REQB
+ _RTxCA 12| Z80C30 |29 _SYNCB _RTxCA 12| Z85C30 |29 _SYNCB
+ RxDA 13| Z80230 |28 _RTxCB RxDA 13| Z85230 |28 _RTxCB
+ _TRxCA 14| |27 RxDB _TRxCA 14| |27 RxDB
+ TxDA 15| |26 _TRxCB TxDA 15| |26 _TRxCB
+ _DTR//REQA 16| |25 TxDB _DTR//REQA 16| |25 TxDB
+ _RTSA 17| |24 _DTR/_REQB _RTSA 17| |24 _DTR/_REQB
+ _CTSA 18| |23 _RTSB _CTSA 18| |23 _RTSB
+ _DCDA 19| |22 _CTSB _DCDA 19| |22 _CTSB
+ PCLK 20|_____________|21 _DCDB PCLK 20|_____________|21 _DCDB
+ ZBUS Universal Bus
+
+***************************************************************************/
+
+#ifndef __Z80SCC_H__
+#define __Z80SCC_H__
+
+#include "emu.h"
+#include "z80sio.h"
+#include "cpu/z80/z80daisy.h"
+
+//**************************************************************************
+// DEVICE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_Z80SCC_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \
+ MCFG_DEVICE_ADD(_tag, Z80SCC, _clock) \
+ MCFG_Z80SCC_OFFSETS(_rxa, _txa, _rxb, _txb)
+
+#define MCFG_SCC8530_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \
+ MCFG_DEVICE_ADD(_tag, SCC8530N, _clock) \
+ MCFG_Z80SCC_OFFSETS(_rxa, _txa, _rxb, _txb)
+
+#define MCFG_Z80SCC_OFFSETS(_rxa, _txa, _rxb, _txb) \
+ z80scc_device::configure_channels(*device, _rxa, _txa, _rxb, _txb);
+
+// Port A callbacks
+#define MCFG_Z80SCC_OUT_TXDA_CB(_devcb) \
+ devcb = &z80scc_device::set_out_txda_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_DTRA_CB(_devcb) \
+ devcb = &z80scc_device::set_out_dtra_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_RTSA_CB(_devcb) \
+ devcb = &z80scc_device::set_out_rtsa_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_WRDYA_CB(_devcb) \
+ devcb = &z80scc_device::set_out_wrdya_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_SYNCA_CB(_devcb) \
+ devcb = &z80scc_device::set_out_synca_callback(*device, DEVCB_##_devcb);
+
+// Port B callbacks
+#define MCFG_Z80SCC_OUT_TXDB_CB(_devcb) \
+ devcb = &z80scc_device::set_out_txdb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_DTRB_CB(_devcb) \
+ devcb = &z80scc_device::set_out_dtrb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_RTSB_CB(_devcb) \
+ devcb = &z80scc_device::set_out_rtsb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_WRDYB_CB(_devcb) \
+ devcb = &z80scc_device::set_out_wrdyb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_SYNCB_CB(_devcb) \
+ devcb = &z80scc_device::set_out_syncb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_INT_CB(_devcb) \
+ devcb = &z80scc_device::set_out_int_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_RXDRQA_CB(_devcb) \
+ devcb = &z80scc_device::set_out_rxdrqa_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_TXDRQA_CB(_devcb) \
+ devcb = &z80scc_device::set_out_txdrqa_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_RXDRQB_CB(_devcb) \
+ devcb = &z80scc_device::set_out_rxdrqb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SCC_OUT_TXDRQB_CB(_devcb) \
+ devcb = &z80scc_device::set_out_txdrqb_callback(*device, DEVCB_##_devcb);
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> z80scc_channel
+
+class z80scc_device;
+
+//class z80scc_channel : public z80sio_channel
+class z80scc_channel : public device_t,
+ public device_serial_interface
+{
+ friend class z80scc_device;
+
+public:
+ z80scc_channel(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+ // device_serial_interface overrides
+ virtual void tra_callback();
+ virtual void tra_complete();
+ virtual void rcv_callback();
+ virtual void rcv_complete();
+
+ // read register handlers
+ UINT8 do_sccreg_rr0();
+ UINT8 do_sccreg_rr1();
+ UINT8 do_sccreg_rr2();
+ UINT8 do_sccreg_rr3();
+ UINT8 do_sccreg_rr4();
+ UINT8 do_sccreg_rr5();
+ UINT8 do_sccreg_rr6();
+ UINT8 do_sccreg_rr7();
+ UINT8 do_sccreg_rr8();
+ UINT8 do_sccreg_rr9();
+ UINT8 do_sccreg_rr10();
+ UINT8 do_sccreg_rr11();
+ UINT8 do_sccreg_rr12();
+ UINT8 do_sccreg_rr13();
+ UINT8 do_sccreg_rr14();
+ UINT8 do_sccreg_rr15();
+
+ // write register handlers
+ void do_sccreg_wr0(UINT8 data);
+ void do_sccreg_wr0_resets(UINT8 data);
+ void do_sccreg_wr1(UINT8 data);
+ void do_sccreg_wr2(UINT8 data);
+ void do_sccreg_wr3(UINT8 data);
+ void do_sccreg_wr4(UINT8 data);
+ void do_sccreg_wr5(UINT8 data);
+ void do_sccreg_wr6(UINT8 data);
+ void do_sccreg_wr7(UINT8 data);
+ void do_sccreg_wr8(UINT8 data);
+ void do_sccreg_wr9(UINT8 data);
+ void do_sccreg_wr10(UINT8 data);
+ void do_sccreg_wr11(UINT8 data);
+ void do_sccreg_wr12(UINT8 data);
+ void do_sccreg_wr13(UINT8 data);
+ void do_sccreg_wr14(UINT8 data);
+ void do_sccreg_wr15(UINT8 data);
+
+ UINT8 control_read();
+ void control_write(UINT8 data);
+
+ UINT8 data_read();
+ void data_write(UINT8 data);
+
+ void receive_data(UINT8 data);
+ void m_rx_fifo_rp_step();
+ UINT8 m_rx_fifo_rp_data();
+
+ DECLARE_WRITE_LINE_MEMBER( write_rx );
+ DECLARE_WRITE_LINE_MEMBER( cts_w );
+ DECLARE_WRITE_LINE_MEMBER( dcd_w );
+ DECLARE_WRITE_LINE_MEMBER( ri_w );
+ DECLARE_WRITE_LINE_MEMBER( rxc_w );
+ DECLARE_WRITE_LINE_MEMBER( txc_w );
+ DECLARE_WRITE_LINE_MEMBER( sync_w );
+
+ int m_rxc;
+ int m_txc;
+
+ // Register state
+ // read registers enum
+ UINT8 m_rr0; // REG_RR0_STATUS
+ UINT8 m_rr1; // REG_RR1_SPEC_RCV_COND
+ UINT8 m_rr2; // REG_RR2_INTERRUPT_VECT
+ UINT8 m_rr3; // REG_RR3_INTERUPPT_PEND
+ UINT8 m_rr4; // REG_RR4_WR4_OR_RR0
+ UINT8 m_rr5; // REG_RR5_WR5_OR_RR0
+ UINT8 m_rr6; // REG_RR6_LSB_OR_RR2
+ UINT8 m_rr7; // REG_RR7_MSB_OR_RR3
+ UINT8 m_rr8; // REG_RR8_RECEIVE_DATA
+ UINT8 m_rr9; // REG_RR9_WR3_OR_RR13
+ UINT8 m_rr10; // REG_RR10_MISC_STATUS
+ UINT8 m_rr11; // REG_RR11_WR10_OR_RR15
+ UINT8 m_rr12; // REG_RR12_LO_TIME_CONST
+ UINT8 m_rr13; // REG_RR13_HI_TIME_CONST
+ UINT8 m_rr14; // REG_RR14_WR7_OR_R10
+ UINT8 m_rr15; // REG_RR15_WR15_EXT_STAT
+
+ // write registers enum
+ UINT8 m_wr0; // REG_WR0_COMMAND_REGPT
+ UINT8 m_wr1; // REG_WR1_INT_DMA_ENABLE
+ UINT8 m_wr2; // REG_WR2_INT_VECTOR
+ UINT8 m_wr3; // REG_WR3_RX_CONTROL
+ UINT8 m_wr4; // REG_WR4_RX_TX_MODES
+ UINT8 m_wr5; // REG_WR5_TX_CONTROL
+ UINT8 m_wr6; // REG_WR6_SYNC_OR_SDLC_A
+ UINT8 m_wr7; // REG_WR7_SYNC_OR_SDLC_F
+ UINT8 m_wr8; // REG_WR8_TRANSMIT_DATA
+ UINT8 m_wr9; // REG_WR9_MASTER_INT_CTRL
+ UINT8 m_wr10; // REG_WR10_MSC_RX_TX_CTRL
+ UINT8 m_wr11; // REG_WR11_CLOCK_MODES
+ UINT8 m_wr12; // REG_WR12_LO_BAUD_GEN
+ UINT8 m_wr13; // REG_WR13_HI_BAUD_GEN
+ UINT8 m_wr14; // REG_WR14_MISC_CTRL
+ UINT8 m_wr15; // REG_WR15_EXT_ST_INT_CTRL
+
+
+protected:
+ enum
+ {
+ INT_TRANSMIT = 0,
+ INT_EXTERNAL = 1,
+ INT_RECEIVE = 2,
+ INT_SPECIAL = 3
+ };
+
+ // Read registers
+ enum
+ {
+ REG_RR0_STATUS = 0, // SIO
+ REG_RR1_SPEC_RCV_COND = 1, // SIO
+ REG_RR2_INTERRUPT_VECT = 2, // SIO
+ REG_RR3_INTERUPPT_PEND = 3,
+ REG_RR4_WR4_OR_RR0 = 4,
+ REG_RR5_WR5_OR_RR0 = 5,
+ REG_RR6_LSB_OR_RR2 = 6,
+ REG_RR7_MSB_OR_RR3 = 7,
+ REG_RR8_RECEIVE_DATA = 8,
+ REG_RR9_WR3_OR_RR13 = 9,
+ REG_RR10_MISC_STATUS = 10,
+ REG_RR11_WR10_OR_RR15 = 11,
+ REG_RR12_LO_TIME_CONST = 12,
+ REG_RR13_HI_TIME_CONST = 13,
+ REG_RR14_WR7_OR_R10 = 14,
+ REG_RR15_WR15_EXT_STAT = 15
+ };
+
+ // Write registers
+ enum
+ {
+ REG_WR0_COMMAND_REGPT = 0, // SIO
+ REG_WR1_INT_DMA_ENABLE = 1, // SIO
+ REG_WR2_INT_VECTOR = 2, // SIO
+ REG_WR3_RX_CONTROL = 3, // SIO
+ REG_WR4_RX_TX_MODES = 4, // SIO
+ REG_WR5_TX_CONTROL = 5, // SIO
+ REG_WR6_SYNC_OR_SDLC_A = 6, // SIO
+ REG_WR7_SYNC_OR_SDLC_F = 7, // SIO
+ REG_WR8_TRANSMIT_DATA = 8,
+ REG_WR9_MASTER_INT_CTRL = 9,
+ REG_WR10_MSC_RX_TX_CTRL = 10,
+ REG_WR11_CLOCK_MODES = 11,
+ REG_WR12_LO_BAUD_GEN = 12,
+ REG_WR13_HI_BAUD_GEN = 13,
+ REG_WR14_MISC_CTRL = 14,
+ REG_WR15_EXT_ST_INT_CTRL= 15
+ };
+
+ enum
+ {
+ RR0_RX_CHAR_AVAILABLE = 0x01, // SIO bit
+ RR0_ZC = 0x02, // SCC bit
+ RR0_TX_BUFFER_EMPTY = 0x04, // SIO
+ RR0_DCD = 0x08, // SIO
+ RR0_RI = 0x10, // DART bit? TODO: investigate function and remove
+ RR0_SYNC_HUNT = 0x10, // SIO bit, not supported
+ RR0_CTS = 0x20, // SIO bit
+ RR0_TX_UNDERRUN = 0x40, // SIO bit, not supported
+ RR0_BREAK_ABORT = 0x80 // SIO bit, not supported
+ };
+
+ enum
+ {
+ RR1_ALL_SENT = 0x01, // SIO/SCC bit
+ RR1_RESIDUE_CODE_MASK = 0x0e, // SIO/SCC bits, not supported
+ RR1_PARITY_ERROR = 0x10, // SIO/SCC bits
+ RR1_RX_OVERRUN_ERROR = 0x20, // SIO/SCC bits
+ RR1_CRC_FRAMING_ERROR = 0x40, // SIO/SCC bits
+ RR1_END_OF_FRAME = 0x80 // SIO/SCC bits, not supported
+ };
+
+ enum
+ { // TODO: overload SIO functionality
+ RR2_INT_VECTOR_MASK = 0xff, // SCC channel A, SIO channel B (special case)
+ RR2_INT_VECTOR_V1 = 0x02, // SIO (special case) /SCC Channel B
+ RR2_INT_VECTOR_V2 = 0x04, // SIO (special case) /SCC Channel B
+ RR2_INT_VECTOR_V3 = 0x08 // SIO (special case) /SCC Channel B
+ };
+
+ enum
+ {
+ RR3_CHANB_EXT_IP = 0x01, // SCC IP pending registers
+ RR3_CHANB_TX_IP = 0x02, // only read in Channel A (for both channels)
+ RR3_CHANB_RX_IP = 0x04, // channel B return all zero
+ RR3_CHANA_EXT_IP = 0x08,
+ RR3_CHANA_TX_IP = 0x10,
+ RR3_CHANA_RX_IP = 0x20
+ };
+
+ enum // Universal Bus WR0 commands for 85X30
+ {
+ WR0_REGISTER_MASK = 0x07,
+ WR0_COMMAND_MASK = 0x38, // COMMANDS
+ WR0_NULL = 0x00, // 0 0 0
+ WR0_POINT_HIGH = 0x08, // 0 0 1
+ WR0_RESET_EXT_STATUS = 0x10, // 0 1 0
+ WR0_SEND_ABORT = 0x18, // 0 1 1
+ WR0_ENABLE_INT_NEXT_RX = 0x20, // 1 0 0
+ WR0_RESET_TX_INT = 0x28, // 1 0 1
+ WR0_ERROR_RESET = 0x30, // 1 1 0
+ WR0_RESET_HIGHEST_IUS = 0x38, // 1 1 1
+ WR0_CRC_RESET_CODE_MASK = 0xc0, // RESET
+ WR0_CRC_RESET_NULL = 0x00, // 0 0
+ WR0_CRC_RESET_RX = 0x40, // 0 1
+ WR0_CRC_RESET_TX = 0x80, // 1 0
+ WR0_CRC_RESET_TX_UNDERRUN = 0xc0 // 1 1
+ };
+
+ enum // ZBUS WR0 commands or 80X30
+ {
+ WR0_Z_COMMAND_MASK = 0x38, // COMMANDS
+ WR0_Z_NULL_1 = 0x00, // 0 0 0
+ WR0_Z_NULL_2 = 0x08, // 0 0 1
+ WR0_Z_RESET_EXT_STATUS = 0x10, // 0 1 0
+ WR0_Z_SEND_ABORT = 0x18, // 0 1 1
+ WR0_Z_ENABLE_INT_NEXT_RX = 0x20, // 1 0 0
+ WR0_Z_RESET_TX_INT = 0x28, // 1 0 1
+ WR0_Z_ERROR_RESET = 0x30, // 1 1 0
+ WR0_Z_RESET_HIGHEST_IUS = 0x38, // 1 1 1
+ WR0_Z_SHIFT_MASK = 0x03, // SHIFT mode SDLC chan B
+ WR0_Z_SEL_SHFT_LEFT = 0x02, // 1 0
+ WR0_Z_SEL_SHFT_RIGHT = 0x03 // 1 1
+ };
+
+ enum
+ {
+ WR1_EXT_INT_ENABLE = 0x01,
+ WR1_TX_INT_ENABLE = 0x02,
+ WR1_PARITY_IS_SPEC_COND = 0x04,
+ WR1_RX_INT_MODE_MASK = 0x18,
+ WR1_RX_INT_DISABLE = 0x00,
+ WR1_RX_INT_FIRST = 0x08,
+ WR1_RX_INT_ALL_PARITY = 0x10, // not supported
+ WR1_RX_INT_ALL = 0x18,
+ WR1_WRDY_ON_RX_TX = 0x20, // not supported
+ WR1_WRDY_FUNCTION = 0x40, // not supported
+ WR1_WRDY_ENABLE = 0x80 // not supported
+ };
+
+ enum
+ {
+ WR3_RX_ENABLE = 0x01,
+ WR3_SYNC_CHAR_LOAD_INHIBIT= 0x02, // not supported
+ WR3_ADDRESS_SEARCH_MODE = 0x04, // not supported
+ WR3_RX_CRC_ENABLE = 0x08, // not supported
+ WR3_ENTER_HUNT_PHASE = 0x10, // not supported
+ WR3_AUTO_ENABLES = 0x20,
+ WR3_RX_WORD_LENGTH_MASK = 0xc0,
+ WR3_RX_WORD_LENGTH_5 = 0x00,
+ WR3_RX_WORD_LENGTH_7 = 0x40,
+ WR3_RX_WORD_LENGTH_6 = 0x80,
+ WR3_RX_WORD_LENGTH_8 = 0xc0
+ };
+
+ enum
+ {
+ WR4_PARITY_ENABLE = 0x01,
+ WR4_PARITY_EVEN = 0x02,
+ WR4_STOP_BITS_MASK = 0x0c,
+ WR4_STOP_BITS_1 = 0x04,
+ WR4_STOP_BITS_1_5 = 0x08, // not supported
+ WR4_STOP_BITS_2 = 0x0c,
+ WR4_SYNC_MODE_MASK = 0x30, // not supported
+ WR4_SYNC_MODE_8_BIT = 0x00, // not supported
+ WR4_SYNC_MODE_16_BIT = 0x10, // not supported
+ WR4_SYNC_MODE_SDLC = 0x20, // not supported
+ WR4_SYNC_MODE_EXT = 0x30, // not supported
+ WR4_CLOCK_RATE_MASK = 0xc0,
+ WR4_CLOCK_RATE_X1 = 0x00,
+ WR4_CLOCK_RATE_X16 = 0x40,
+ WR4_CLOCK_RATE_X32 = 0x80,
+ WR4_CLOCK_RATE_X64 = 0xc0
+ };
+
+ enum
+ {
+ WR5_TX_CRC_ENABLE = 0x01, // not supported
+ WR5_RTS = 0x02,
+ WR5_CRC16 = 0x04, // not supported
+ WR5_TX_ENABLE = 0x08,
+ WR5_SEND_BREAK = 0x10,
+ WR5_TX_WORD_LENGTH_MASK = 0x60,
+ WR5_TX_WORD_LENGTH_5 = 0x00,
+ WR5_TX_WORD_LENGTH_6 = 0x40,
+ WR5_TX_WORD_LENGTH_7 = 0x20,
+ WR5_TX_WORD_LENGTH_8 = 0x60,
+ WR5_DTR = 0x80
+ };
+
+ /* SCC specifics */
+ enum
+ {
+ WR9_CMD_MASK = 0xC0,
+ WR9_CMD_NORESET = 0x00,
+ WR9_CMD_CHNB_RESET = 0x40,
+ WR9_CMD_CHNA_RESET = 0x80,
+ WR9_CMD_HW_RESET = 0xC0,
+ WR9_BIT_VIS = 0x01,
+ WR9_BIT_NV = 0x02,
+ WR9_BIT_DLC = 0x04,
+ WR9_BIT_MIE = 0x08,
+ WR9_BIT_SHSL = 0x10,
+ WR9_BIT_IACK = 0x20
+ };
+
+ enum
+ {
+ WR11_RCVCLK_TYPE = 0x80,
+ WR11_RCVCLK_SRC_MASK = 0x60, // RCV CLOCK
+ WR11_RCVCLK_SRC_RTXC = 0x00, // 0 0
+ WR11_RCVCLK_SRC_TRXC = 0x20, // 0 1
+ WR11_RCVCLK_SRC_BR = 0x40, // 1 0
+ WR11_RCVCLK_SRC_DPLL = 0x60, // 1 1
+ WR11_TRACLK_SRC_MASK = 0x18, // TRA CLOCK
+ WR11_TRACLK_SRC_RTXC = 0x00, // 0 0
+ WR11_TRACLK_SRC_TRXC = 0x08, // 0 1
+ WR11_TRACLK_SRC_BR = 0x10, // 1 0
+ WR11_TRACLK_SRC_DPLL = 0x18, // 1 1
+ WR11_TRXC_DIRECTION = 0x04,
+ WR11_TRXSRC_SRC_MASK = 0x03, // TRXX CLOCK
+ WR11_TRXSRC_SRC_XTAL = 0x00, // 0 0
+ WR11_TRXSRC_SRC_TRA = 0x01, // 0 1
+ WR11_TRXSRC_SRC_BR = 0x02, // 1 0
+ WR11_TRXSRC_SRC_DPLL = 0x03 // 1 1
+ };
+
+ enum
+ {
+ WR14_DPLL_CMD_MASK = 0xe0, // Command
+ WR14_CMD_NULL = 0x00, // 0 0 0
+ WR14_CMD_ESM = 0x20, // 0 0 1
+ WR14_CMD_RMC = 0x40, // 0 1 0
+ WR14_CMD_DISABLE_DPLL = 0x60, // 0 1 1
+ WR14_CMD_SS_BGR = 0x80, // 1 0 0
+ WR14_CMD_SS_RTXC = 0xa0, // 1 0 1
+ WR14_CMD_SET_FM = 0xc0, // 1 1 0
+ WR14_CMD_SET_NRZI = 0xe0 // 1 1 1
+ };
+
+ void update_serial();
+ void set_dtr(int state);
+ void set_rts(int state);
+
+ int get_clock_mode();
+ void update_rts();
+ stop_bits_t get_stop_bits();
+ int get_rx_word_length();
+ int get_tx_word_length();
+
+ // receiver state
+ UINT8 m_rx_data_fifo[8]; // receive data FIFO
+ UINT8 m_rx_error_fifo[8]; // receive error FIFO
+ UINT8 m_rx_error; // current receive error
+ //int m_rx_fifo // receive FIFO pointer
+ int m_rx_fifo_rp; // receive FIFO read pointer
+ int m_rx_fifo_wp; // receive FIFO write pointer
+ int m_rx_fifo_sz; // receive FIFO size
+
+ int m_rx_clock; // receive clock pulse count
+ int m_rx_first; // first character received
+ int m_rx_break; // receive break condition
+ UINT8 m_rx_rr0_latch; // read register 0 latched
+
+ int m_rxd;
+ int m_ri; // ring indicator latch
+ int m_cts; // clear to send latch
+ int m_dcd; // data carrier detect latch
+
+ // transmitter state
+ UINT8 m_tx_data; // transmit data register
+ int m_tx_clock; // transmit clock pulse count
+
+ int m_dtr; // data terminal ready
+ int m_rts; // request to send
+
+ // synchronous state
+ UINT16 m_sync; // sync character
+
+ int m_index;
+ z80scc_device *m_uart;
+
+ // SCC specifics
+ int m_ph; // Point high command to access regs 08-0f
+ UINT8 m_zc;
+};
+
+
+// ======================> z80scc_device
+
+class z80scc_device : public device_t
+ ,public device_z80daisy_interface
+{
+ friend class z80scc_channel;
+
+public:
+ // construction/destruction
+ z80scc_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source);
+ z80scc_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ template<class _Object> static devcb_base &set_out_txda_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_txda_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_dtra_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_dtra_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_rtsa_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_rtsa_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_wrdya_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_wrdya_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_synca_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_synca_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_txdb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_txdb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_dtrb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_dtrb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_rtsb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_rtsb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_wrdyb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_wrdyb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_syncb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_syncb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_int_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_rxdrqa_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_txdrqa_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_txdrqa_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_rxdrqb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_txdrqb_callback(device_t &device, _Object object) { return downcast<z80scc_device &>(device).m_out_txdrqb_cb.set_callback(object); }
+
+ static void configure_channels(device_t &device, int rxa, int txa, int rxb, int txb)
+ {
+ z80scc_device &dev = downcast<z80scc_device &>(device);
+ dev.m_rxca = rxa;
+ dev.m_txca = txa;
+ dev.m_rxcb = rxb;
+ dev.m_txcb = txb;
+ }
+
+ DECLARE_READ8_MEMBER( cd_ba_r );
+ DECLARE_WRITE8_MEMBER( cd_ba_w );
+ DECLARE_READ8_MEMBER( ba_cd_r );
+ DECLARE_WRITE8_MEMBER( ba_cd_w );
+
+ /* Definitions moved to z80scc.c for enhencements */
+ DECLARE_READ8_MEMBER( da_r ); // { return m_chanA->data_read(); }
+ DECLARE_WRITE8_MEMBER( da_w ); // { m_chanA->data_write(data); }
+ DECLARE_READ8_MEMBER( db_r ); // { return m_chanB->data_read(); }
+ DECLARE_WRITE8_MEMBER( db_w ); // { m_chanB->data_write(data); }
+
+ DECLARE_READ8_MEMBER( ca_r ) { return m_chanA->control_read(); }
+ DECLARE_WRITE8_MEMBER( ca_w ) { m_chanA->control_write(data); }
+ DECLARE_READ8_MEMBER( cb_r ) { return m_chanB->control_read(); }
+ DECLARE_WRITE8_MEMBER( cb_w ) { m_chanB->control_write(data); }
+
+ // interrupt acknowledge
+ int m1_r();
+
+ DECLARE_WRITE_LINE_MEMBER( rxa_w ) { m_chanA->write_rx(state); }
+ DECLARE_WRITE_LINE_MEMBER( rxb_w ) { m_chanB->write_rx(state); }
+ DECLARE_WRITE_LINE_MEMBER( ctsa_w ) { m_chanA->cts_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( ctsb_w ) { m_chanB->cts_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( dcda_w ) { m_chanA->dcd_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( dcdb_w ) { m_chanB->dcd_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( ria_w ) { m_chanA->ri_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( rib_w ) { m_chanB->ri_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( rxca_w ) { m_chanA->rxc_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( rxcb_w ) { m_chanB->rxc_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( txca_w ) { m_chanA->txc_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( txcb_w ) { m_chanB->txc_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( rxtxcb_w ) { m_chanB->rxc_w(state); m_chanB->txc_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( synca_w ) { m_chanA->sync_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( syncb_w ) { m_chanB->sync_w(state); }
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ // device_z80daisy_interface overrides
+ virtual int z80daisy_irq_state();
+ virtual int z80daisy_irq_ack();
+ virtual void z80daisy_irq_reti();
+
+ // internal interrupt management
+ void check_interrupts();
+ void reset_interrupts();
+ UINT8 modify_vector(UINT8 vect, int i, UINT8 src);
+ void trigger_interrupt(int index, int state);
+ int get_channel_index(z80scc_channel *ch) { return (ch == m_chanA) ? 0 : 1; }
+
+ // Variants in the SCC family
+ enum
+ {
+ TYPE_Z80SCC = 0x001,
+ TYPE_SCC8030 = 0x002,
+ TYPE_SCC80C30 = 0x004,
+ TYPE_SCC80230 = 0x008,
+ TYPE_SCC8530 = 0x010,
+ TYPE_SCC85C30 = 0x020,
+ TYPE_SCC85230 = 0x040,
+ TYPE_SCC85233 = 0x080,
+ TYPE_SCC8523L = 0x100
+ };
+
+#define SET_NMOS ( z80scc_device::TYPE_SCC8030 | z80scc_device::TYPE_SCC8530 )
+#define SET_CMOS ( z80scc_device::TYPE_SCC80C30 | z80scc_device::TYPE_SCC85C30 )
+#define SET_ESCC ( z80scc_device::TYPE_SCC80230 | z80scc_device::TYPE_SCC85230 | z80scc_device::TYPE_SCC8523L )
+#define SET_EMSCC z80scc_device::TYPE_SCC85233
+#define SET_Z80X30 ( z80scc_device::TYPE_SCC8030 | z80scc_device::TYPE_SCC80C30 | z80scc_device::TYPE_SCC80230 )
+#define SET_Z85X3X ( z80scc_device::TYPE_SCC8530 | z80scc_device::TYPE_SCC85C30 | z80scc_device::TYPE_SCC85230 \
+ | z80scc_device::TYPE_SCC8523L | z80scc_device::TYPE_SCC85233 )
+
+ enum
+ {
+ CHANNEL_A = 0,
+ CHANNEL_B
+ };
+
+ required_device<z80scc_channel> m_chanA;
+ required_device<z80scc_channel> m_chanB;
+
+ // internal state
+ int m_rxca;
+ int m_txca;
+ int m_rxcb;
+ int m_txcb;
+
+ devcb_write_line m_out_txda_cb;
+ devcb_write_line m_out_dtra_cb;
+ devcb_write_line m_out_rtsa_cb;
+ devcb_write_line m_out_wrdya_cb;
+ devcb_write_line m_out_synca_cb;
+
+ devcb_write_line m_out_txdb_cb;
+ devcb_write_line m_out_dtrb_cb;
+ devcb_write_line m_out_rtsb_cb;
+ devcb_write_line m_out_wrdyb_cb;
+ devcb_write_line m_out_syncb_cb;
+
+ devcb_write_line m_out_int_cb;
+ devcb_write_line m_out_rxdrqa_cb;
+ devcb_write_line m_out_txdrqa_cb;
+ devcb_write_line m_out_rxdrqb_cb;
+ devcb_write_line m_out_txdrqb_cb;
+
+ int m_int_state[6]; // interrupt state
+
+ int m_variant;
+ UINT8 m_wr0_ptrbits;
+};
+
+class scc8030_device : public z80scc_device
+{
+public :
+ scc8030_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class scc80C30_device : public z80scc_device
+{
+public :
+ scc80C30_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class scc80230_device : public z80scc_device
+{
+public :
+ scc80230_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class scc8530_device : public z80scc_device
+{
+public :
+ scc8530_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class scc85C30_device : public z80scc_device
+{
+public :
+ scc85C30_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class scc85230_device : public z80scc_device
+{
+public :
+ scc85230_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class scc85233_device : public z80scc_device
+{
+public :
+ scc85233_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+class scc8523L_device : public z80scc_device
+{
+public :
+ scc8523L_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+};
+
+// device type definition
+extern const device_type Z80SCC;
+extern const device_type Z80SCC_CHANNEL;
+extern const device_type SCC8030;
+extern const device_type SCC80C30;
+extern const device_type SCC80230;
+extern const device_type SCC8530N; // remove trailing N when 8530scc.c is fully replaced and removed
+extern const device_type SCC85C30;
+extern const device_type SCC85230;
+extern const device_type SCC85233;
+extern const device_type SCC8523L;
+
+#endif // __Z80SCC_H__
diff --git a/src/devices/machine/z80sio.c b/src/devices/machine/z80sio.c
new file mode 100644
index 00000000000..09c0e46663f
--- /dev/null
+++ b/src/devices/machine/z80sio.c
@@ -0,0 +1,1429 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder, Joakim Larsson Edstrom
+/***************************************************************************
+
+ Z80-SIO Serial Input/Output emulation
+
+ The variants in the SIO family are only different in the packaging
+ but has the same register features. However, since some signals are
+ not connected to the pins on the package or share a pin with another
+ signal the functionality is limited. However, this driver does not
+ check that an operation is invalid because of package type but relies
+ on the software to be adapated for the particular version.
+
+ Package: DIP40 SIO/0, SIO/1, SIO/2, SIO/9
+ QFP44 SIO/3
+ PLCC44 SIO/4
+ -------------------------------------------------------------------
+ Channels / Full Duplex 2 / Y
+ Synch data rates 2Mhz 500Kbps
+ 4MHz 800Kbps
+ 6MHz 1200Kbps
+ 10MHz 2500Kbps
+ -- Asynchrounous features -------------------------------------------
+ 5-8 bit per char Y
+ 1,1.5,2 stop bits Y
+ odd/even parity Y
+ x1,x16,x32,x64 Y
+ break det/gen Y
+ parity, framing & Y
+ overrun error det Y
+ -- Byte oriented synchrounous features -------------------------------
+ Int/ext char sync Y
+ 1/2 synch chars Y
+ Aut synch char insertion Y
+ Aut CRC gen/det Y
+ -- SDLC/HDLC capabilities --------------------------------------------
+ Abort seq gen/chk Y
+ Aut zero ins/det Y
+ Aut flag insert Y
+ Addr field rec Y
+ 1-fld resid hand Y
+ Valid rec msg protection Y
+ --
+ Receiver FIFO 3
+ Transmitter FIFO 1
+ -------------------------------------------------------------------------
+ * = Features that has been implemented n/a = features that will not
+***************************************************************************/
+
+#include "z80sio.h"
+
+//**************************************************************************
+// MACROS / CONSTANTS
+//**************************************************************************
+
+#define VERBOSE 0
+
+#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+#if VERBOSE == 2
+#define logerror printf
+#endif
+
+#ifdef _MSC_VER
+#define LLFORMAT "%I64%"
+#define FUNCNAME __func__
+#else
+#define LLFORMAT "%lld"
+#define FUNCNAME __PRETTY_FUNCTION__
+#endif
+
+#define CHANA_TAG "cha"
+#define CHANB_TAG "chb"
+
+
+
+//**************************************************************************
+// DEVICE DEFINITIONS
+//**************************************************************************
+
+// device type definition
+const device_type Z80SIO = &device_creator<z80sio_device>;
+const device_type Z80SIO_CHANNEL = &device_creator<z80sio_channel>;
+
+//-------------------------------------------------
+// device_mconfig_additions -
+//-------------------------------------------------
+
+MACHINE_CONFIG_FRAGMENT( z80sio )
+MCFG_DEVICE_ADD(CHANA_TAG, Z80SIO_CHANNEL, 0)
+MCFG_DEVICE_ADD(CHANB_TAG, Z80SIO_CHANNEL, 0)
+MACHINE_CONFIG_END
+
+machine_config_constructor z80sio_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( z80sio );
+}
+
+//**************************************************************************
+// LIVE DEVICE
+//**************************************************************************
+
+//-------------------------------------------------
+// z80sio_device - constructor
+//-------------------------------------------------
+
+z80sio_device::z80sio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ device_z80daisy_interface(mconfig, *this),
+ m_chanA(*this, CHANA_TAG),
+ m_chanB(*this, CHANB_TAG),
+ m_rxca(0),
+ m_txca(0),
+ m_rxcb(0),
+ m_txcb(0),
+ m_out_txda_cb(*this),
+ m_out_dtra_cb(*this),
+ m_out_rtsa_cb(*this),
+ m_out_wrdya_cb(*this),
+ m_out_synca_cb(*this),
+ m_out_txdb_cb(*this),
+ m_out_dtrb_cb(*this),
+ m_out_rtsb_cb(*this),
+ m_out_wrdyb_cb(*this),
+ m_out_syncb_cb(*this),
+ m_out_int_cb(*this),
+ m_out_rxdrqa_cb(*this),
+ m_out_txdrqa_cb(*this),
+ m_out_rxdrqb_cb(*this),
+ m_out_txdrqb_cb(*this),
+ m_variant(variant)
+{
+ for (int i = 0; i < 8; i++)
+ m_int_state[i] = 0;
+}
+
+z80sio_device::z80sio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, Z80SIO, "Z80 SIO", tag, owner, clock, "z80sio", __FILE__),
+ device_z80daisy_interface(mconfig, *this),
+ m_chanA(*this, CHANA_TAG),
+ m_chanB(*this, CHANB_TAG),
+ m_rxca(0),
+ m_txca(0),
+ m_rxcb(0),
+ m_txcb(0),
+ m_out_txda_cb(*this),
+ m_out_dtra_cb(*this),
+ m_out_rtsa_cb(*this),
+ m_out_wrdya_cb(*this),
+ m_out_synca_cb(*this),
+ m_out_txdb_cb(*this),
+ m_out_dtrb_cb(*this),
+ m_out_rtsb_cb(*this),
+ m_out_wrdyb_cb(*this),
+ m_out_syncb_cb(*this),
+ m_out_int_cb(*this),
+ m_out_rxdrqa_cb(*this),
+ m_out_txdrqa_cb(*this),
+ m_out_rxdrqb_cb(*this),
+ m_out_txdrqb_cb(*this),
+ m_variant(TYPE_Z80SIO)
+{
+ for (int i = 0; i < 8; i++)
+ m_int_state[i] = 0;
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+void z80sio_device::device_start()
+{
+ LOG(("%s\n", FUNCNAME));
+ // resolve callbacks
+ m_out_txda_cb.resolve_safe();
+ m_out_dtra_cb.resolve_safe();
+ m_out_rtsa_cb.resolve_safe();
+ m_out_wrdya_cb.resolve_safe();
+ m_out_synca_cb.resolve_safe();
+ m_out_txdb_cb.resolve_safe();
+ m_out_dtrb_cb.resolve_safe();
+ m_out_rtsb_cb.resolve_safe();
+ m_out_wrdyb_cb.resolve_safe();
+ m_out_syncb_cb.resolve_safe();
+ m_out_int_cb.resolve_safe();
+ m_out_rxdrqa_cb.resolve_safe();
+ m_out_txdrqa_cb.resolve_safe();
+ m_out_rxdrqb_cb.resolve_safe();
+ m_out_txdrqb_cb.resolve_safe();
+
+ // configure channel A
+ m_chanA->m_rxc = m_rxca;
+ m_chanA->m_txc = m_txca;
+
+ // configure channel B
+ m_chanB->m_rxc = m_rxcb;
+ m_chanB->m_txc = m_txcb;
+
+ // state saving
+ save_item(NAME(m_int_state));
+}
+
+
+//-------------------------------------------------
+// device_reset - device-specific reset
+//-------------------------------------------------
+void z80sio_device::device_reset()
+{
+ LOG(("%s \"%s\" \n", FUNCNAME, tag()));
+
+ m_chanA->reset();
+ m_chanB->reset();
+}
+
+//-------------------------------------------------
+// z80daisy_irq_state - get interrupt status
+//-------------------------------------------------
+int z80sio_device::z80daisy_irq_state()
+{
+ int state = 0;
+ int i;
+
+
+ LOG(("%s %s A:%d%d%d%d B:%d%d%d%d ",FUNCNAME, tag(),
+ m_int_state[0], m_int_state[1], m_int_state[2], m_int_state[3],
+ m_int_state[4], m_int_state[5], m_int_state[6], m_int_state[7]));
+
+ // loop over all interrupt sources
+ for (i = 0; i < 8; i++)
+ {
+ // if we're servicing a request, don't indicate more interrupts
+ if (m_int_state[i] & Z80_DAISY_IEO)
+ {
+ state |= Z80_DAISY_IEO;
+ break;
+ }
+ state |= m_int_state[i];
+ }
+
+ LOG(("Interrupt State %u\n", state));
+
+ return state;
+}
+
+
+//-------------------------------------------------
+// z80daisy_irq_ack - interrupt acknowledge
+//-------------------------------------------------
+int z80sio_device::z80daisy_irq_ack()
+{
+ int i;
+
+ LOG(("%s %s \n",FUNCNAME, tag()));
+
+ // loop over all interrupt sources
+ for (i = 0; i < 8; i++)
+ {
+ // find the first channel with an interrupt requested
+ if (m_int_state[i] & Z80_DAISY_INT)
+ {
+ // clear interrupt, switch to the IEO state, and update the IRQs
+ m_int_state[i] = Z80_DAISY_IEO;
+ m_chanA->m_rr0 &= ~z80sio_channel::RR0_INTERRUPT_PENDING;
+ check_interrupts();
+
+ //LOG(("%s %s \n",FUNCNAME, tag(), m_chanB->m_rr2));
+
+ return m_chanB->m_rr2;
+ }
+ }
+
+ //logerror("z80sio_irq_ack: failed to find an interrupt to ack!\n");
+
+ return m_chanB->m_rr2;
+}
+
+
+//-------------------------------------------------
+// z80daisy_irq_reti - return from interrupt
+//-------------------------------------------------
+void z80sio_device::z80daisy_irq_reti()
+{
+ int i;
+
+ LOG(("%s %s \n",FUNCNAME, tag()));
+
+ // loop over all interrupt sources
+ for (i = 0; i < 8; i++)
+ {
+ // find the first channel with an IEO pending
+ if (m_int_state[i] & Z80_DAISY_IEO)
+ {
+ // clear the IEO state and update the IRQs
+ m_int_state[i] &= ~Z80_DAISY_IEO;
+ check_interrupts();
+ return;
+ }
+ }
+
+ //logerror("z80sio_irq_reti: failed to find an interrupt to clear IEO on!\n");
+}
+
+
+//-------------------------------------------------
+// check_interrupts -
+//-------------------------------------------------
+void z80sio_device::check_interrupts()
+{
+ LOG(("%s %s \n",FUNCNAME, tag()));
+ int state = (z80daisy_irq_state() & Z80_DAISY_INT) ? ASSERT_LINE : CLEAR_LINE;
+ m_out_int_cb(state);
+}
+
+
+//-------------------------------------------------
+// reset_interrupts -
+//-------------------------------------------------
+void z80sio_device::reset_interrupts()
+{
+ LOG(("%s %s \n",FUNCNAME, tag()));
+ // reset internal interrupt sources
+ for (int i = 0; i < 8; i++)
+ {
+ m_int_state[i] = 0;
+ }
+
+ check_interrupts();
+}
+
+
+//-------------------------------------------------
+// trigger_interrupt - TODO: needs attention for SIO
+//-------------------------------------------------
+void z80sio_device::trigger_interrupt(int index, int state)
+{
+ UINT8 vector = m_chanB->m_wr2;
+ int priority;
+
+ LOG(("%s %s \n",FUNCNAME, tag()));
+
+#if 0
+ if((m_variant == TYPE_I8274) || (m_variant == TYPE_UPD7201))
+ {
+ int prio_level = 0;
+ switch(state)
+ {
+ case z80sio_channel::INT_TRANSMIT:
+ prio_level = 1;
+ break;
+ case z80sio_channel::INT_RECEIVE:
+ case z80sio_channel::INT_SPECIAL:
+ prio_level = 0;
+ break;
+ case z80sio_channel::INT_EXTERNAL:
+ prio_level = 2;
+ break;
+ }
+
+ if(m_chanA->m_wr2 & z80sio_channel::WR2_PRIORITY)
+ {
+ priority = (prio_level * 2) + index;
+ }
+ else
+ {
+ priority = (prio_level == 2) ? index + 4 : ((index * 2) + prio_level);
+ }
+ if (m_chanB->m_wr1 & z80sio_channel::WR1_STATUS_VECTOR)
+ {
+ vector = (!index << 2) | state;
+ if((m_chanA->m_wr1 & 0x18) == z80sio_channel::WR2_MODE_8086_8088)
+ {
+ vector = (m_chanB->m_wr2 & 0xf8) | vector;
+ }
+ else
+ {
+ vector = (m_chanB->m_wr2 & 0xe3) | (vector << 2);
+ }
+ }
+ }
+ else
+ {
+#endif
+ priority = (index << 2) | state;
+ if (m_chanB->m_wr1 & z80sio_channel::WR1_STATUS_VECTOR)
+ {
+ // status affects vector
+ vector = (m_chanB->m_wr2 & 0xf1) | (!index << 3) | (state << 1);
+ }
+// }
+ // update vector register
+ m_chanB->m_rr2 = vector;
+
+ // trigger interrupt
+ m_int_state[priority] |= Z80_DAISY_INT;
+ m_chanA->m_rr0 |= z80sio_channel::RR0_INTERRUPT_PENDING;
+
+ // check for interrupt
+ check_interrupts();
+}
+
+
+//-------------------------------------------------
+// m1_r - interrupt acknowledge
+//-------------------------------------------------
+int z80sio_device::m1_r()
+{
+ LOG(("%s %s \n",FUNCNAME, tag()));
+ return z80daisy_irq_ack();
+}
+
+
+//-------------------------------------------------
+// cd_ba_r -
+//-------------------------------------------------
+READ8_MEMBER( z80sio_device::cd_ba_r )
+{
+ int ba = BIT(offset, 0);
+ int cd = BIT(offset, 1);
+ z80sio_channel *channel = ba ? m_chanB : m_chanA;
+
+ //LOG(("%s %s %c %s read\n",FUNCNAME, tag(), 'A' + ba ? 1 : 0 , cd ? "control" : "data" ));
+
+ return cd ? channel->control_read() : channel->data_read();
+}
+
+
+//-------------------------------------------------
+// cd_ba_w -
+//-------------------------------------------------
+WRITE8_MEMBER( z80sio_device::cd_ba_w )
+{
+ int ba = BIT(offset, 0);
+ int cd = BIT(offset, 1);
+ z80sio_channel *channel = ba ? m_chanB : m_chanA;
+
+ LOG(("%s %s %c %s write\n",FUNCNAME, tag(), 'A' + ba ? 1 : 0 , cd ? "control" : "data" ));
+
+ if (cd)
+ channel->control_write(data);
+ else
+ channel->data_write(data);
+}
+
+
+//-------------------------------------------------
+// ba_cd_r -
+//-------------------------------------------------
+READ8_MEMBER( z80sio_device::ba_cd_r )
+{
+ int ba = BIT(offset, 1);
+ int cd = BIT(offset, 0);
+ z80sio_channel *channel = ba ? m_chanB : m_chanA;
+
+ //LOG(("%s %s %c %s read\n",FUNCNAME, tag(), 'A' + ba ? 1 : 0 , cd ? "control" : "data" ));
+
+ return cd ? channel->control_read() : channel->data_read();
+}
+
+
+//-------------------------------------------------
+// ba_cd_w -
+//-------------------------------------------------
+WRITE8_MEMBER( z80sio_device::ba_cd_w )
+{
+ int ba = BIT(offset, 1);
+ int cd = BIT(offset, 0);
+ z80sio_channel *channel = ba ? m_chanB : m_chanA;
+
+ LOG(("%s %s %c %s write\n",FUNCNAME, tag(), 'A' + ba ? 1 : 0 , cd ? "control" : "data" ));
+
+ if (cd)
+ channel->control_write(data);
+ else
+ channel->data_write(data);
+}
+
+//**************************************************************************
+// SIO CHANNEL
+//**************************************************************************
+
+//-------------------------------------------------
+// z80sio_channel - constructor
+//-------------------------------------------------
+z80sio_channel::z80sio_channel(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : device_t(mconfig, Z80SIO_CHANNEL, "Z80 SIO channel", tag, owner, clock, "z80sio_channel", __FILE__),
+ device_serial_interface(mconfig, *this),
+ m_rx_error(0),
+ m_rx_fifo(-1),
+ m_rx_clock(0),
+ m_rx_first(0),
+ m_rx_break(0),
+ m_rx_rr0_latch(0),
+ m_rxd(0),
+ m_sh(0),
+ m_cts(0),
+ m_dcd(0),
+ m_tx_data(0),
+ m_tx_clock(0),
+ m_dtr(0),
+ m_rts(0),
+ m_sync(0)
+{
+ LOG(("%s\n",FUNCNAME));
+ // Reset all registers
+ m_rr0 = m_rr1 = m_rr2 = 0;
+ m_wr0 = m_wr1 = m_wr2 = m_wr3 = m_wr4 = m_wr5 = m_wr6 = m_wr7 = 0;
+
+ for (int i = 0; i < 3; i++)
+ {
+ m_rx_data_fifo[i] = 0;
+ m_rx_error_fifo[i] = 0;
+ }
+}
+
+
+//-------------------------------------------------
+// start - channel startup
+//-------------------------------------------------
+void z80sio_channel::device_start()
+{
+ LOG(("%s\n",FUNCNAME));
+ m_uart = downcast<z80sio_device *>(owner());
+ m_index = m_uart->get_channel_index(this);
+ m_variant = ((z80sio_device *)m_owner)->m_variant;
+
+ // state saving
+ save_item(NAME(m_rr0));
+ save_item(NAME(m_rr1));
+ save_item(NAME(m_rr2));
+ save_item(NAME(m_wr0));
+ save_item(NAME(m_wr1));
+ save_item(NAME(m_wr2));
+ save_item(NAME(m_wr3));
+ save_item(NAME(m_wr4));
+ save_item(NAME(m_wr5));
+ save_item(NAME(m_wr6));
+ save_item(NAME(m_wr7));
+ save_item(NAME(m_rx_data_fifo));
+ save_item(NAME(m_rx_error_fifo));
+ save_item(NAME(m_rx_error));
+ save_item(NAME(m_rx_fifo));
+ save_item(NAME(m_rx_clock));
+ save_item(NAME(m_rx_first));
+ save_item(NAME(m_rx_break));
+ save_item(NAME(m_rx_rr0_latch));
+ save_item(NAME(m_sh));
+ save_item(NAME(m_cts));
+ save_item(NAME(m_dcd));
+ save_item(NAME(m_tx_data));
+ save_item(NAME(m_tx_clock));
+ save_item(NAME(m_dtr));
+ save_item(NAME(m_rts));
+ save_item(NAME(m_sync));
+ save_item(NAME(m_variant));
+ device_serial_interface::register_save_state(machine().save(), this);
+}
+
+
+//-------------------------------------------------
+// reset - reset channel status
+//-------------------------------------------------
+void z80sio_channel::device_reset()
+{
+ LOG(("%s\n", FUNCNAME));
+
+ // Reset RS232 emulation
+ receive_register_reset();
+ transmit_register_reset();
+
+ // disable receiver
+ m_wr3 &= ~WR3_RX_ENABLE;
+
+ // disable transmitter
+ m_wr5 &= ~WR5_TX_ENABLE;
+ m_rr0 |= RR0_TX_BUFFER_EMPTY;
+ m_rr1 |= RR1_ALL_SENT;
+
+ // reset external lines
+ set_rts(1);
+ set_dtr(1);
+
+ // reset interrupts
+ if (m_index == z80sio_device::CHANNEL_A)
+ {
+ m_uart->reset_interrupts();
+ }
+}
+
+void z80sio_channel::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ device_serial_interface::device_timer(timer, id, param, ptr);
+}
+
+//-------------------------------------------------
+// tra_callback -
+//-------------------------------------------------
+void z80sio_channel::tra_callback()
+{
+ if (!(m_wr5 & WR5_TX_ENABLE))
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c transmit mark 1 m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ // transmit mark
+ if (m_index == z80sio_device::CHANNEL_A)
+ m_uart->m_out_txda_cb(1);
+ else
+ m_uart->m_out_txdb_cb(1);
+ }
+ else if (m_wr5 & WR5_SEND_BREAK)
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c send break 1 m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ // transmit break
+ if (m_index == z80sio_device::CHANNEL_A)
+ m_uart->m_out_txda_cb(0);
+ else
+ m_uart->m_out_txdb_cb(0);
+ }
+ else if (!is_transmit_register_empty())
+ {
+ int db = transmit_register_get_data_bit();
+
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c transmit data bit %d m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, db, m_wr5));
+ // transmit data
+ if (m_index == z80sio_device::CHANNEL_A)
+ m_uart->m_out_txda_cb(db);
+ else
+ m_uart->m_out_txdb_cb(db);
+ }
+ else
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Failed to transmit m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ logerror("%s \"%s \"Channel %c Failed to transmit\n", FUNCNAME, m_owner->tag(), 'A' + m_index);
+ }
+}
+
+
+//-------------------------------------------------
+// tra_complete -
+//-------------------------------------------------
+void z80sio_channel::tra_complete()
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ if ((m_wr5 & WR5_TX_ENABLE) && !(m_wr5 & WR5_SEND_BREAK) && !(m_rr0 & RR0_TX_BUFFER_EMPTY))
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Transmit Data Byte '%02x' m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_tx_data, m_wr5));
+
+ transmit_register_setup(m_tx_data);
+
+ // empty transmit buffer
+ m_rr0 |= RR0_TX_BUFFER_EMPTY;
+
+ if (m_wr1 & WR1_TX_INT_ENABLE)
+ m_uart->trigger_interrupt(m_index, INT_TRANSMIT);
+ }
+ else if (m_wr5 & WR5_SEND_BREAK)
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Transmit Break 0 m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ // transmit break
+ if (m_index == z80sio_device::CHANNEL_A)
+ m_uart->m_out_txda_cb(0);
+ else
+ m_uart->m_out_txdb_cb(0);
+ }
+ else
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Transmit Mark 1 m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ // transmit mark
+ if (m_index == z80sio_device::CHANNEL_A)
+ m_uart->m_out_txda_cb(1);
+ else
+ m_uart->m_out_txdb_cb(1);
+ }
+
+ // if transmit buffer is empty
+ if (m_rr0 & RR0_TX_BUFFER_EMPTY)
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Transmit buffer empty m_wr5:%02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_wr5));
+ // then all characters have been sent
+ m_rr1 |= RR1_ALL_SENT;
+
+ // when the RTS bit is reset, the _RTS output goes high after the transmitter empties
+ if (!m_rts)
+ set_rts(1);
+ }
+}
+
+
+//-------------------------------------------------
+// rcv_callback -
+//-------------------------------------------------
+void z80sio_channel::rcv_callback()
+{
+ if (m_wr3 & WR3_RX_ENABLE)
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Received Data Bit %d\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, m_rxd));
+ receive_register_update_bit(m_rxd);
+ }
+#if 0
+ else
+ {
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Received Data Bit but receiver is disabled\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index));
+ logerror("Z80SIO %s() \"%s \"Channel %c Received data dit but receiver is disabled\n", __func__, m_owner->tag(), 'A' + m_index);
+ }
+#endif
+}
+
+
+//-------------------------------------------------
+// rcv_complete -
+//-------------------------------------------------
+void z80sio_channel::rcv_complete()
+{
+ UINT8 data;
+
+ receive_register_extract();
+ data = get_received_char();
+ LOG(("%" I64FMT "d %s() \"%s \"Channel %c Received Data %02x\n", machine().firstcpu->total_cycles(), FUNCNAME, m_owner->tag(), 'A' + m_index, data));
+ receive_data(data);
+}
+
+
+//-------------------------------------------------
+// get_clock_mode - get clock divisor
+//-------------------------------------------------
+
+int z80sio_channel::get_clock_mode()
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ int clocks = 1;
+
+ switch (m_wr4 & WR4_CLOCK_RATE_MASK)
+ {
+ case WR4_CLOCK_RATE_X1: clocks = 1; break;
+ case WR4_CLOCK_RATE_X16: clocks = 16; break;
+ case WR4_CLOCK_RATE_X32: clocks = 32; break;
+ case WR4_CLOCK_RATE_X64: clocks = 64; break;
+ }
+
+ return clocks;
+}
+
+/* From "uPD7201/7201A MULTI PROTOCOL SERIAL COMMUNICATION CONTROLLER" by NEC:
+"RTSA (Request to Send A): The state of the RTS bit (01 of the CR5 register) controls this pin. If
+the RTS bit is reset in the asynchronous mode, a high level will not be output on the RTS pin until
+all transmit characters are written and the all sent bit (D0 of the SR1 register) is set. In the
+synchronous mode, the state of the RTS bit is used as is. That is, when the RTS bit is 0, the RTS
+pin is 1. When the RTS bit is 1, the RTS pin is O."
+
+CR5 = m_wr5 and SR1 = m_rr1
+
+*/
+
+void z80sio_channel::set_rts(int state)
+{
+ LOG(("%s(%d) \"%s\" Channel %c \n", FUNCNAME, state, m_owner->tag(), 'A' + m_index));
+ if (m_index == z80sio_device::CHANNEL_A)
+ m_uart->m_out_rtsa_cb(state);
+ else
+ m_uart->m_out_rtsb_cb(state);
+}
+
+void z80sio_channel::update_rts()
+{
+ // LOG(("%s(%d) \"%s\" Channel %c \n", FUNCNAME, state, m_owner->tag(), 'A' + m_index));
+ LOG(("%s() \"%s\" Channel %c \n", FUNCNAME, m_owner->tag(), 'A' + m_index));
+ if (m_wr5 & WR5_RTS)
+ {
+ // when the RTS bit is set, the _RTS output goes low
+ set_rts(0);
+ m_rts = 1;
+ }
+ else
+ {
+ // when the RTS bit is reset, the _RTS output goes high after the transmitter empties
+ m_rts = 0;
+ }
+
+ // data terminal ready output follows the state programmed into the DTR bit*/
+ set_dtr((m_wr5 & WR5_DTR) ? 0 : 1);
+}
+
+//-------------------------------------------------
+// get_stop_bits - get number of stop bits
+//-------------------------------------------------
+
+device_serial_interface::stop_bits_t z80sio_channel::get_stop_bits()
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ switch (m_wr4 & WR4_STOP_BITS_MASK)
+ {
+ case WR4_STOP_BITS_1: return STOP_BITS_1;
+ case WR4_STOP_BITS_1_5: return STOP_BITS_1_5;
+ case WR4_STOP_BITS_2: return STOP_BITS_2;
+ }
+
+ return STOP_BITS_0;
+}
+
+
+//-------------------------------------------------
+// get_rx_word_length - get receive word length
+//-------------------------------------------------
+
+int z80sio_channel::get_rx_word_length()
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ int bits = 5;
+
+ switch (m_wr3 & WR3_RX_WORD_LENGTH_MASK)
+ {
+ case WR3_RX_WORD_LENGTH_5: bits = 5; break;
+ case WR3_RX_WORD_LENGTH_6: bits = 6; break;
+ case WR3_RX_WORD_LENGTH_7: bits = 7; break;
+ case WR3_RX_WORD_LENGTH_8: bits = 8; break;
+ }
+
+ return bits;
+}
+
+
+//-------------------------------------------------
+// get_tx_word_length - get transmit word length
+//-------------------------------------------------
+
+int z80sio_channel::get_tx_word_length()
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ int bits = 5;
+
+ switch (m_wr5 & WR5_TX_WORD_LENGTH_MASK)
+ {
+ case WR5_TX_WORD_LENGTH_5: bits = 5; break;
+ case WR5_TX_WORD_LENGTH_6: bits = 6; break;
+ case WR5_TX_WORD_LENGTH_7: bits = 7; break;
+ case WR5_TX_WORD_LENGTH_8: bits = 8; break;
+ }
+
+ return bits;
+}
+
+/*
+ * This register contains the status of the receive and transmit buffers; the
+ * DCD, CTS, and SYNC inputs; the Transmit Underrun/EOM latch; and the
+ * Break/Abort latch. */
+UINT8 z80sio_channel::do_sioreg_rr0()
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ return m_rr0;
+}
+/*
+ * This register contains the Special Receive condition status bits and Residue
+ * codes for the I-Field in the SDLC Receive Mode. */
+UINT8 z80sio_channel::do_sioreg_rr1()
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ return m_rr1;
+}
+/*
+ * This register contains the interrupt vector written into WR2 if the Status
+Affects Vector control bit is not set. If the control bit is set, it contains the
+modified vector listed in the Status Affects Vector paragraph of the Write
+Register 1 section. When this register is read, the vector returned is modi-
+fied by the highest priority interrupting condition at the time of the read. If
+no interrupts are pending, the vector is modified with V3 = 0, V2 = 1, and
+V1 = 1. This register is read only through Channel B. */
+UINT8 z80sio_channel::do_sioreg_rr2()
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ // channel B only
+ return m_index == z80sio_device::CHANNEL_B ? m_rr2 : 0;
+}
+
+
+//-------------------------------------------------
+// control_read - read control register
+//-------------------------------------------------
+
+UINT8 z80sio_channel::control_read()
+{
+ UINT8 data = 0;
+ UINT8 reg = m_wr0 & WR0_REGISTER_MASK;
+
+ //LOG(("%s %s\n",FUNCNAME, tag()));
+ if (reg != 0)
+ {
+ // mask out register index
+ m_wr0 &= ~WR0_REGISTER_MASK;
+ }
+
+ switch (reg)
+ {
+ case REG_RR0_STATUS: data = do_sioreg_rr0(); break;
+ case REG_RR1_SPEC_RCV_COND: data = do_sioreg_rr1(); break;
+ case REG_RR2_INTERRUPT_VECT: data = do_sioreg_rr2(); break;
+ default:
+ logerror("Z80SIO \"%s\" Channel %c : Unsupported RRx register:%02x\n", m_owner->tag(), 'A' + m_index, reg);
+ LOG(("%s %s unsupported register:%02x\n",FUNCNAME, tag(), reg));
+ }
+
+ return data;
+}
+
+/* SIO CRC Initialization Code handling - candidate for breaking out in a z80sio_base class
+ Handle the WR0 CRC Reset/Init bits separatelly, needed by derived devices separatelly from the commands */
+void z80sio_channel::do_sioreg_wr0_resets(UINT8 data)
+{
+ LOG(("%s %s\n",FUNCNAME, tag()));
+ switch (data & WR0_CRC_RESET_CODE_MASK)
+ {
+ case WR0_CRC_RESET_NULL:
+ LOG(("Z80SIO \"%s\" Channel %c : CRC_RESET_NULL\n", m_owner->tag(), 'A' + m_index));
+ break;
+ case WR0_CRC_RESET_RX: /* In Synchronous mode: all Os (zeros) (CCITT-O CRC-16) */
+ LOG(("Z80SIO \"%s\" Channel %c : CRC_RESET_RX - not implemented\n", m_owner->tag(), 'A' + m_index));
+ break;
+ case WR0_CRC_RESET_TX: /* In HDLC mode: all 1s (ones) (CCITT-1) */
+ LOG(("Z80SIO \"%s\" Channel %c : CRC_RESET_TX - not implemented\n", m_owner->tag(), 'A' + m_index));
+ break;
+ case WR0_CRC_RESET_TX_UNDERRUN: /* Resets Tx underrun/EOM bit (D6 of the SRO register) */
+ LOG(("Z80SIO \"%s\" Channel %c : CRC_RESET_TX_UNDERRUN - not implemented\n", m_owner->tag(), 'A' + m_index));
+ break;
+ default: /* Will not happen unless someone messes with the mask */
+ logerror("Z80SIO \"%s\" Channel %c : %s Wrong CRC reset/init command:%02x\n", m_owner->tag(), 'A' + m_index, FUNCNAME, data & WR0_CRC_RESET_CODE_MASK);
+ }
+}
+
+void z80sio_channel::do_sioreg_wr0(UINT8 data)
+{
+ m_wr0 = data;
+ switch (data & WR0_COMMAND_MASK)
+ {
+ case WR0_NULL:
+ LOG(("Z80SIO \"%s\" Channel %c : Null\n", m_owner->tag(), 'A' + m_index));
+ break;
+ case WR0_RESET_EXT_STATUS:
+ // reset external/status interrupt
+ m_rr0 &= ~(RR0_DCD | RR0_SYNC_HUNT | RR0_CTS | RR0_BREAK_ABORT);
+ // release the latch
+ m_rx_rr0_latch = 0;
+ // update register to reflect wire values TODO: Check if this will fire new interrupts
+ if (!m_dcd) m_rr0 |= RR0_DCD;
+ if (m_sync) m_rr0 |= RR0_SYNC_HUNT;
+ if (m_cts) m_rr0 |= RR0_CTS;
+
+ LOG(("Z80SIO \"%s\" Channel %c : Reset External/Status Interrupt\n", m_owner->tag(), 'A' + m_index));
+ break;
+ case WR0_CHANNEL_RESET:
+ // channel reset
+ LOG(("Z80SIO \"%s\" Channel %c : Channel Reset\n", m_owner->tag(), 'A' + m_index));
+ device_reset();
+ break;
+ case WR0_ENABLE_INT_NEXT_RX:
+ // enable interrupt on next receive character
+ LOG(("Z80SIO \"%s\" Channel %c : Enable Interrupt on Next Received Character\n", m_owner->tag(), 'A' + m_index));
+ m_rx_first = 1;
+ break;
+ case WR0_RESET_TX_INT:
+ // reset transmitter interrupt pending
+ LOG(("Z80SIO \"%s\" Channel %c : Reset Transmitter Interrupt Pending\n", m_owner->tag(), 'A' + m_index));
+ logerror("Z80SIO \"%s\" Channel %c : unsupported command: Reset Transmitter Interrupt Pending\n", m_owner->tag(), 'A' + m_index);
+ break;
+ case WR0_ERROR_RESET:
+ // error reset
+ LOG(("Z80SIO \"%s\" Channel %c : Error Reset\n", m_owner->tag(), 'A' + m_index));
+ m_rr1 &= ~(RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR);
+ break;
+ case WR0_RETURN_FROM_INT:
+ // return from interrupt
+ LOG(("Z80SIO \"%s\" Channel %c : Return from Interrupt\n", m_owner->tag(), 'A' + m_index));
+ m_uart->z80daisy_irq_reti();
+ break;
+ default:
+ LOG(("Z80SIO \"%s\" Channel %c : Unsupported WR0 command %02x mask %02x\n", m_owner->tag(), 'A' + m_index, data, WR0_REGISTER_MASK));
+
+ }
+ do_sioreg_wr0_resets(data);
+}
+
+void z80sio_channel::do_sioreg_wr1(UINT8 data)
+{
+/* TODO: implement vector modifications when WR1 bit D2 is changed */
+ m_wr1 = data;
+ LOG(("Z80SIO \"%s\" Channel %c : External Interrupt Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_EXT_INT_ENABLE) ? 1 : 0));
+ LOG(("Z80SIO \"%s\" Channel %c : Transmit Interrupt Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_TX_INT_ENABLE) ? 1 : 0));
+ LOG(("Z80SIO \"%s\" Channel %c : Status Affects Vector %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_STATUS_VECTOR) ? 1 : 0));
+ LOG(("Z80SIO \"%s\" Channel %c : Wait/Ready Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR1_WRDY_ENABLE) ? 1 : 0));
+ LOG(("Z80SIO \"%s\" Channel %c : Wait/Ready Function %s\n", m_owner->tag(), 'A' + m_index, (data & WR1_WRDY_FUNCTION) ? "Ready" : "Wait"));
+ LOG(("Z80SIO \"%s\" Channel %c : Wait/Ready on %s\n", m_owner->tag(), 'A' + m_index, (data & WR1_WRDY_ON_RX_TX) ? "Receive" : "Transmit"));
+
+ switch (data & WR1_RX_INT_MODE_MASK)
+ {
+ case WR1_RX_INT_DISABLE:
+ LOG(("Z80SIO \"%s\" Channel %c : Receiver Interrupt Disabled\n", m_owner->tag(), 'A' + m_index));
+ break;
+
+ case WR1_RX_INT_FIRST:
+ LOG(("Z80SIO \"%s\" Channel %c : Receiver Interrupt on First Character\n", m_owner->tag(), 'A' + m_index));
+ break;
+
+ case WR1_RX_INT_ALL_PARITY:
+ LOG(("Z80SIO \"%s\" Channel %c : Receiver Interrupt on All Characters, Parity Affects Vector\n", m_owner->tag(), 'A' + m_index));
+ break;
+
+ case WR1_RX_INT_ALL:
+ LOG(("Z80SIO \"%s\" Channel %c : Receiver Interrupt on All Characters\n", m_owner->tag(), 'A' + m_index));
+ break;
+ }
+}
+
+void z80sio_channel::do_sioreg_wr2(UINT8 data)
+{
+ m_wr2 = data;
+ if (m_index == z80sio_device::CHANNEL_B)
+ {
+ if (m_wr1 & z80sio_channel::WR1_STATUS_VECTOR)
+ m_rr2 = ( m_rr2 & 0x0e ) | ( m_wr2 & 0xF1);
+ else
+ m_rr2 = m_wr2;
+ }
+ m_uart->check_interrupts();
+ LOG(("Z80SIO \"%s\" Channel %c : Interrupt Vector %02x\n", m_owner->tag(), 'A' + m_index, data));
+}
+
+void z80sio_channel::do_sioreg_wr3(UINT8 data)
+{
+ m_wr3 = data;
+ LOG(("Z80SIO \"%s\" Channel %c : Receiver Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR3_RX_ENABLE) ? 1 : 0));
+ LOG(("Z80SIO \"%s\" Channel %c : Auto Enables %u\n", m_owner->tag(), 'A' + m_index, (data & WR3_AUTO_ENABLES) ? 1 : 0));
+ LOG(("Z80SIO \"%s\" Channel %c : Receiver Bits/Character %u\n", m_owner->tag(), 'A' + m_index, get_rx_word_length()));
+}
+
+void z80sio_channel::do_sioreg_wr4(UINT8 data)
+{
+ m_wr4 = data;
+ LOG(("Z80SIO \"%s\" Channel %c : Parity Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR4_PARITY_ENABLE) ? 1 : 0));
+ LOG(("Z80SIO \"%s\" Channel %c : Parity %s\n", m_owner->tag(), 'A' + m_index, (data & WR4_PARITY_EVEN) ? "Even" : "Odd"));
+ LOG(("Z80SIO \"%s\" Channel %c : Stop Bits %s\n", m_owner->tag(), 'A' + m_index, stop_bits_tostring(get_stop_bits())));
+ LOG(("Z80SIO \"%s\" Channel %c : Clock Mode %uX\n", m_owner->tag(), 'A' + m_index, get_clock_mode()));
+}
+
+void z80sio_channel::do_sioreg_wr5(UINT8 data)
+{
+ m_wr5 = data;
+ LOG(("Z80SIO \"%s\" Channel %c : Transmitter Enable %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_TX_ENABLE) ? 1 : 0));
+ LOG(("Z80SIO \"%s\" Channel %c : Transmitter Bits/Character %u\n", m_owner->tag(), 'A' + m_index, get_tx_word_length()));
+ LOG(("Z80SIO \"%s\" Channel %c : Send Break %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_SEND_BREAK) ? 1 : 0));
+ LOG(("Z80SIO \"%s\" Channel %c : Request to Send %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_RTS) ? 1 : 0));
+ LOG(("Z80SIO \"%s\" Channel %c : Data Terminal Ready %u\n", m_owner->tag(), 'A' + m_index, (data & WR5_DTR) ? 1 : 0));
+}
+
+void z80sio_channel::do_sioreg_wr6(UINT8 data)
+{
+ LOG(("Z80SIO \"%s\" Channel %c : Transmit Sync %02x\n", m_owner->tag(), 'A' + m_index, data));
+ m_sync = (m_sync & 0xff00) | data;
+}
+
+void z80sio_channel::do_sioreg_wr7(UINT8 data)
+{
+ LOG(("Z80SIO \"%s\" Channel %c : Receive Sync %02x\n", m_owner->tag(), 'A' + m_index, data));
+ m_sync = (data << 8) | (m_sync & 0xff);
+}
+
+//-------------------------------------------------
+// control_write - write control register
+//-------------------------------------------------
+void z80sio_channel::control_write(UINT8 data)
+{
+ UINT8 reg = m_wr0 & WR0_REGISTER_MASK;
+
+ if (reg != 0)
+ {
+ // mask out register index
+ m_wr0 &= ~WR0_REGISTER_MASK;
+ }
+
+ LOG(("\n%s(%02x) reg %02x\n", FUNCNAME, data, reg));
+
+ switch (reg)
+ {
+ case REG_WR0_COMMAND_REGPT: do_sioreg_wr0(data); break;
+ case REG_WR1_INT_DMA_ENABLE: do_sioreg_wr1(data); m_uart->check_interrupts(); break;
+ case REG_WR2_INT_VECTOR: do_sioreg_wr2(data); break;
+ case REG_WR3_RX_CONTROL: do_sioreg_wr3(data); update_serial(); break;
+ case REG_WR4_RX_TX_MODES: do_sioreg_wr4(data); update_serial(); break;
+ case REG_WR5_TX_CONTROL: do_sioreg_wr5(data); update_serial(); update_rts(); break;
+ case REG_WR6_SYNC_OR_SDLC_A: do_sioreg_wr6(data); break;
+ case REG_WR7_SYNC_OR_SDLC_F: do_sioreg_wr7(data); break;
+ default:
+ logerror("Z80SIO \"%s\" Channel %c : Unsupported WRx register:%02x\n", m_owner->tag(), 'A' + m_index, reg);
+ }
+}
+
+
+//-------------------------------------------------
+// data_read - read data register
+//-------------------------------------------------
+UINT8 z80sio_channel::data_read()
+{
+ UINT8 data = 0;
+
+ if (m_rx_fifo >= 0)
+ {
+ // load data from the FIFO
+ data = m_rx_data_fifo[m_rx_fifo];
+
+ // load error status from the FIFO
+ m_rr1 = (m_rr1 & ~(RR1_CRC_FRAMING_ERROR | RR1_RX_OVERRUN_ERROR | RR1_PARITY_ERROR)) | m_rx_error_fifo[m_rx_fifo];
+
+ // decrease FIFO pointer
+ m_rx_fifo--;
+
+ if (m_rx_fifo < 0)
+ {
+ // no more characters available in the FIFO
+ m_rr0 &= ~ RR0_RX_CHAR_AVAILABLE;
+ }
+ }
+
+ LOG(("Z80SIO \"%s\" Channel %c : Data Register Read '%02x'\n", m_owner->tag(), 'A' + m_index, data));
+
+ return data;
+}
+
+
+//-------------------------------------------------
+// data_write - write data register
+//-------------------------------------------------
+void z80sio_channel::data_write(UINT8 data)
+{
+ m_tx_data = data;
+
+ if ((m_wr5 & WR5_TX_ENABLE) && is_transmit_register_empty())
+ {
+ LOG(("Z80SIO \"%s\" Channel %c : Transmit Data Byte '%02x'\n", m_owner->tag(), 'A' + m_index, m_tx_data));
+
+ transmit_register_setup(m_tx_data);
+
+ // empty transmit buffer
+ m_rr0 |= RR0_TX_BUFFER_EMPTY;
+
+ if (m_wr1 & WR1_TX_INT_ENABLE)
+ m_uart->trigger_interrupt(m_index, INT_TRANSMIT);
+ }
+ else
+ {
+ LOG((" Transmitter %s, data byte dropped\n", m_wr5 & WR5_TX_ENABLE ? "not enabled" : "not emptied"));
+ m_rr0 &= ~RR0_TX_BUFFER_EMPTY;
+ }
+
+ m_rr1 &= ~RR1_ALL_SENT;
+}
+
+
+//-------------------------------------------------
+// receive_data - receive data word
+//-------------------------------------------------
+void z80sio_channel::receive_data(UINT8 data)
+{
+ LOG(("%s(%02x) %s:%c\n",FUNCNAME, data, tag(), 'A' + m_index));
+
+ if (m_rx_fifo == 2)
+ {
+ LOG((" Overrun detected\n"));
+ // receive overrun error detected
+ m_rx_error |= RR1_RX_OVERRUN_ERROR;
+
+ switch (m_wr1 & WR1_RX_INT_MODE_MASK)
+ {
+ case WR1_RX_INT_FIRST:
+ if (!m_rx_first)
+ {
+ m_uart->trigger_interrupt(m_index, INT_SPECIAL);
+ }
+ break;
+
+ case WR1_RX_INT_ALL_PARITY:
+ case WR1_RX_INT_ALL:
+ m_uart->trigger_interrupt(m_index, INT_SPECIAL);
+ break;
+ }
+ }
+ else
+ {
+ m_rx_fifo++;
+ }
+
+ // store received character and error status into FIFO
+ m_rx_data_fifo[m_rx_fifo] = data;
+ m_rx_error_fifo[m_rx_fifo] = m_rx_error;
+
+ m_rr0 |= RR0_RX_CHAR_AVAILABLE;
+
+ // receive interrupt
+ switch (m_wr1 & WR1_RX_INT_MODE_MASK)
+ {
+ case WR1_RX_INT_FIRST:
+ if (m_rx_first)
+ {
+ m_uart->trigger_interrupt(m_index, INT_RECEIVE);
+ m_rx_first = 0;
+ }
+ break;
+
+ case WR1_RX_INT_ALL_PARITY:
+ case WR1_RX_INT_ALL:
+ m_uart->trigger_interrupt(m_index, INT_RECEIVE);
+ break;
+ default:
+ LOG(("No interrupt triggered\n"));
+
+ }
+}
+
+
+//-------------------------------------------------
+// cts_w - clear to send handler
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( z80sio_channel::cts_w )
+{
+ LOG(("%s(%02x) %s:%c\n",FUNCNAME, state, tag(), 'A' + m_index));
+
+ if (m_cts != state)
+ {
+ // enable transmitter if in auto enables mode
+ if (!state)
+ if (m_wr3 & WR3_AUTO_ENABLES)
+ m_wr5 |= WR5_TX_ENABLE;
+
+ // set clear to send
+ m_cts = state;
+
+ if (!m_rx_rr0_latch)
+ {
+ if (!m_cts)
+ m_rr0 |= RR0_CTS;
+ else
+ m_rr0 &= ~RR0_CTS;
+
+ // trigger interrupt
+ if (m_wr1 & WR1_EXT_INT_ENABLE)
+ {
+ // trigger interrupt
+ m_uart->trigger_interrupt(m_index, INT_EXTERNAL);
+
+ // latch read register 0
+ m_rx_rr0_latch = 1;
+ }
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// dcd_w - data carrier detected handler
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( z80sio_channel::dcd_w )
+{
+ LOG(("Z80SIO \"%s\" Channel %c : DCD %u\n", m_owner->tag(), 'A' + m_index, state));
+
+ if (m_dcd != state)
+ {
+ // enable receiver if in auto enables mode
+ if (!state)
+ if (m_wr3 & WR3_AUTO_ENABLES)
+ m_wr3 |= WR3_RX_ENABLE;
+
+ // set data carrier detect
+ m_dcd = state;
+
+ if (!m_rx_rr0_latch)
+ {
+ if (m_dcd)
+ m_rr0 |= RR0_DCD;
+ else
+ m_rr0 &= ~RR0_DCD;
+
+ if (m_wr1 & WR1_EXT_INT_ENABLE)
+ {
+ // trigger interrupt
+ m_uart->trigger_interrupt(m_index, INT_EXTERNAL);
+
+ // latch read register 0
+ m_rx_rr0_latch = 1;
+ }
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// sh_w - Sync Hunt handler
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( z80sio_channel::sync_w )
+{
+ LOG(("Z80SIO \"%s\" Channel %c : Sync %u\n", m_owner->tag(), 'A' + m_index, state));
+
+ if (m_sh != state)
+ {
+ // set ring indicator state
+ m_sh = state;
+
+ if (!m_rx_rr0_latch)
+ {
+ if (m_sh)
+ m_rr0 |= RR0_SYNC_HUNT;
+ else
+ m_rr0 &= ~RR0_SYNC_HUNT;
+
+ if (m_wr1 & WR1_EXT_INT_ENABLE)
+ {
+ // trigger interrupt
+ m_uart->trigger_interrupt(m_index, INT_EXTERNAL);
+
+ // latch read register 0
+ m_rx_rr0_latch = 1;
+ }
+ }
+ }
+}
+
+
+//-------------------------------------------------
+// rxc_w - receive clock
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( z80sio_channel::rxc_w )
+{
+ //LOG(("Z80SIO \"%s\" Channel %c : Receiver Clock Pulse\n", m_owner->tag(), m_index + 'A'));
+ int clocks = get_clock_mode();
+ if (clocks == 1)
+ rx_clock_w(state);
+ else if(state)
+ {
+ rx_clock_w(m_rx_clock < clocks/2);
+
+ m_rx_clock++;
+ if (m_rx_clock == clocks)
+ m_rx_clock = 0;
+
+ }
+}
+
+
+//-------------------------------------------------
+// txc_w - transmit clock
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER( z80sio_channel::txc_w )
+{
+ //LOG(("Z80SIO \"%s\" Channel %c : Transmitter Clock Pulse\n", m_owner->tag(), m_index + 'A'));
+ int clocks = get_clock_mode();
+ if (clocks == 1)
+ tx_clock_w(state);
+ else if(state)
+ {
+ tx_clock_w(m_tx_clock < clocks/2);
+
+ m_tx_clock++;
+ if (m_tx_clock == clocks)
+ m_tx_clock = 0;
+
+ }
+}
+
+
+//-------------------------------------------------
+// update_serial -
+//-------------------------------------------------
+void z80sio_channel::update_serial()
+{
+ int data_bit_count = get_rx_word_length();
+ stop_bits_t stop_bits = get_stop_bits();
+ parity_t parity;
+
+ LOG(("Z80SIO update_serial\n"));
+
+ if (m_wr4 & WR4_PARITY_ENABLE)
+ {
+ if (m_wr4 & WR4_PARITY_EVEN)
+ parity = PARITY_EVEN;
+ else
+ parity = PARITY_ODD;
+ }
+ else
+ parity = PARITY_NONE;
+
+ set_data_frame(1, data_bit_count, parity, stop_bits);
+
+ int clocks = get_clock_mode();
+
+ if (m_rxc > 0)
+ {
+ set_rcv_rate(m_rxc / clocks);
+ }
+
+ if (m_txc > 0)
+ {
+ set_tra_rate(m_txc / clocks);
+ }
+ receive_register_reset(); // if stop bits is changed from 0, receive register has to be reset
+}
+
+
+//-------------------------------------------------
+// set_dtr -
+//-------------------------------------------------
+
+void z80sio_channel::set_dtr(int state)
+{
+ LOG(("%s(%d)\n", FUNCNAME, state));
+ m_dtr = state;
+
+ if (m_index == z80sio_device::CHANNEL_A)
+ m_uart->m_out_dtra_cb(m_dtr);
+ else
+ m_uart->m_out_dtrb_cb(m_dtr);
+}
+
+//-------------------------------------------------
+// write_rx -
+//-------------------------------------------------
+
+WRITE_LINE_MEMBER(z80sio_channel::write_rx)
+{
+ m_rxd = state;
+ //only use rx_w when self-clocked
+ if(m_rxc)
+ device_serial_interface::rx_w(state);
+}
diff --git a/src/devices/machine/z80sio.h b/src/devices/machine/z80sio.h
new file mode 100644
index 00000000000..bf75e8fe362
--- /dev/null
+++ b/src/devices/machine/z80sio.h
@@ -0,0 +1,533 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder, Joakim Larsson Edstrom
+/***************************************************************************
+
+ Z80-SIO Serial Input/Output
+
+****************************************************************************
+ _____ _____ _____ _____
+ D1 1|* \_/ |40 D0 _/ |40 D0 _/ |40 D0
+ D3 2| |39 D2 : |39 D2 : |39 D2
+ D5 3| |38 D4 : |38 D4 : |38 D4
+ D7 4| |37 D6 : |37 D6 : |37 D6
+ _INT 5| |36 _IORQ : |36 _IORQ : |36 _IORQ
+ IEO 6| |35 _CE : |35 _CE : |35 _CE
+ IEI 7| |34 B/_A : |34 B/_A : |34 B/_A
+ _M1 8| |33 C/_D : |33 C/_D : |33 C/_D
+ VDD 9| DIP40 |32 _RD : DIP40 |32 _RD : DIP40 |32 _RD
+ _W//RDYA 10| Z80 |31 GND : Z80 |31 GND : Z80 |31 GND
+ _SYNCA 11| SIO/0 |30 _W/_RDYB: SIO/1 |30 _W/_RDYB: SIO/2 |30 _W/_RDYB
+ RxDA 12| |29 _SYNCB : |29 _SYNCB : |29 _SYNCB
+ _RxCA 13| |28 RxDB : |28 RxDB : |28 _RxCB
+ _TxCA 14| |27 _RxTxCB : |27 _RxCB : |27 _TxCB
+ TxDA 15| |26 TxDB : |26 _TxCB : |26 TxDB
+ _DTRA 16| |25 _DTRB : |25 TxD_B : |25 _DTRB
+ _RTSA 17| |24 _RTSB : |24 _RTSB : |24 _RTSB
+ _CTSA 18| |23 _CTSB : |23 _CTSB : |23 _CTSB
+ _DCDA 19| |22 _DCDB : |22 _DCDB : |22 _DCDB
+ CLK 20|_____________|21 _RESET :_______|21 _RESET :_______|21 _RESET
+
+ *I *I
+ *I N O *I O
+ N D D D D / D D D D R N D D D D D D D D R*C
+ T 7 5 3 1 C 0 2 4 6 Q T 7 5 3 1 0 2 4 6 Q E
+ +----------------------+ +----------------------+
+ IEI|34 22| *CE IEI|6 5 4 3 2 1 44 42 40|B/ *A
+ IEO|35 21| B/ *A IEO|8 43 41 |C/ *D
+ *M1| | C/ *D *M1|9 37|*RD
+ +5v| | *RD +5V|10 36|GND
+*W/ *RDYA| QFP44 | GND *W/ *RDYA|11 PLCC44 35|*W/ *RDYB
+ N/C| Z80 SIO/3 | N/C *SYNCA|12 Z80 SIO/4 34|*SYNCB
+ *SYNCA| Z804C43 | *W/ *RDYB RxDA|13 33|RxDB
+ RxDA| | *SYNCB *RxCA|14 32|*RxCB
+ *RxCA|42 | RxDB *TxCA|15 31|*TxCB
+ *TxCA|43 1 1 | *RxCB TxDA| 19 21 23 25 30|TxDB
+ TxDA`. 2 3 4 5 6 7 8 9 0 1 | *TxCB N/C|18 20 22 24 26 29|N/C
+ `--------------------+ +----------------------+
+ *D*R*C*D C*R*D*C*R*D*T *D*R*C*D C*R*D*C*R*D N
+ T T T C L E C*T T T x T T T C L E C T T T /
+ R S S D K S D S S R D R S S D K S D S S R C
+ A A A A E B B B B B A A A A E B B B B
+ T T
+
+***************************************************************************/
+
+#ifndef __Z80SIO_H__
+#define __Z80SIO_H__
+
+#include "emu.h"
+#include "cpu/z80/z80daisy.h"
+
+//**************************************************************************
+// DEVICE CONFIGURATION MACROS
+//**************************************************************************
+
+#define MCFG_Z80SIO_ADD(_tag, _clock, _rxa, _txa, _rxb, _txb) \
+ MCFG_DEVICE_ADD(_tag, Z80SIO, _clock) \
+ MCFG_Z80SIO_OFFSETS(_rxa, _txa, _rxb, _txb)
+
+#define MCFG_Z80SIO_OFFSETS(_rxa, _txa, _rxb, _txb) \
+ z80sio_device::configure_channels(*device, _rxa, _txa, _rxb, _txb);
+
+#define MCFG_Z80SIO_OUT_TXDA_CB(_devcb) \
+ devcb = &z80sio_device::set_out_txda_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_DTRA_CB(_devcb) \
+ devcb = &z80sio_device::set_out_dtra_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_RTSA_CB(_devcb) \
+ devcb = &z80sio_device::set_out_rtsa_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_WRDYA_CB(_devcb) \
+ devcb = &z80sio_device::set_out_wrdya_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_SYNCA_CB(_devcb) \
+ devcb = &z80sio_device::set_out_synca_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_TXDB_CB(_devcb) \
+ devcb = &z80sio_device::set_out_txdb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_DTRB_CB(_devcb) \
+ devcb = &z80sio_device::set_out_dtrb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_RTSB_CB(_devcb) \
+ devcb = &z80sio_device::set_out_rtsb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_WRDYB_CB(_devcb) \
+ devcb = &z80sio_device::set_out_wrdyb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_SYNCB_CB(_devcb) \
+ devcb = &z80sio_device::set_out_syncb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_INT_CB(_devcb) \
+ devcb = &z80sio_device::set_out_int_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_RXDRQA_CB(_devcb) \
+ devcb = &z80sio_device::set_out_rxdrqa_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_TXDRQA_CB(_devcb) \
+ devcb = &z80sio_device::set_out_txdrqa_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_RXDRQB_CB(_devcb) \
+ devcb = &z80sio_device::set_out_rxdrqb_callback(*device, DEVCB_##_devcb);
+
+#define MCFG_Z80SIO_OUT_TXDRQB_CB(_devcb) \
+ devcb = &z80sio_device::set_out_txdrqb_callback(*device, DEVCB_##_devcb);
+
+
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+// ======================> z80sio_channel
+
+class z80sio_device;
+
+class z80sio_channel : public device_t,
+ public device_serial_interface
+{
+ friend class z80sio_device;
+
+public:
+ z80sio_channel(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+ // device_serial_interface overrides
+ virtual void tra_callback();
+ virtual void tra_complete();
+ virtual void rcv_callback();
+ virtual void rcv_complete();
+
+ // read register handlers
+ UINT8 do_sioreg_rr0();
+ UINT8 do_sioreg_rr1();
+ UINT8 do_sioreg_rr2();
+
+ // write register handlers
+ void do_sioreg_wr0(UINT8 data);
+ void do_sioreg_wr0_resets(UINT8 data);
+ void do_sioreg_wr1(UINT8 data);
+ void do_sioreg_wr2(UINT8 data);
+ void do_sioreg_wr3(UINT8 data);
+ void do_sioreg_wr4(UINT8 data);
+ void do_sioreg_wr5(UINT8 data);
+ void do_sioreg_wr6(UINT8 data);
+ void do_sioreg_wr7(UINT8 data);
+
+ UINT8 control_read();
+ void control_write(UINT8 data);
+
+ UINT8 data_read();
+ void data_write(UINT8 data);
+
+ void receive_data(UINT8 data);
+
+ DECLARE_WRITE_LINE_MEMBER( write_rx );
+ DECLARE_WRITE_LINE_MEMBER( cts_w );
+ DECLARE_WRITE_LINE_MEMBER( dcd_w );
+ DECLARE_WRITE_LINE_MEMBER( ri_w );
+ DECLARE_WRITE_LINE_MEMBER( rxc_w );
+ DECLARE_WRITE_LINE_MEMBER( txc_w );
+ DECLARE_WRITE_LINE_MEMBER( sync_w );
+
+ int m_rxc;
+ int m_txc;
+
+ // Register state
+ // read registers enum
+ UINT8 m_rr0; // REG_RR0_STATUS
+ UINT8 m_rr1; // REG_RR1_SPEC_RCV_COND
+ UINT8 m_rr2; // REG_RR2_INTERRUPT_VECT
+ // write registers enum
+ UINT8 m_wr0; // REG_WR0_COMMAND_REGPT
+ UINT8 m_wr1; // REG_WR1_INT_DMA_ENABLE
+ UINT8 m_wr2; // REG_WR2_INT_VECTOR
+ UINT8 m_wr3; // REG_WR3_RX_CONTROL
+ UINT8 m_wr4; // REG_WR4_RX_TX_MODES
+ UINT8 m_wr5; // REG_WR5_TX_CONTROL
+ UINT8 m_wr6; // REG_WR6_SYNC_OR_SDLC_A
+ UINT8 m_wr7; // REG_WR7_SYNC_OR_SDLC_F
+
+ int m_variant; // Set in device
+
+protected:
+ enum
+ {
+ INT_TRANSMIT = 0,
+ INT_EXTERNAL,
+ INT_RECEIVE,
+ INT_SPECIAL
+ };
+
+ // Read registers
+ enum
+ {
+ REG_RR0_STATUS = 0,
+ REG_RR1_SPEC_RCV_COND = 1,
+ REG_RR2_INTERRUPT_VECT = 2
+ };
+
+ // Write registers
+ enum
+ {
+ REG_WR0_COMMAND_REGPT = 0,
+ REG_WR1_INT_DMA_ENABLE = 1,
+ REG_WR2_INT_VECTOR = 2,
+ REG_WR3_RX_CONTROL = 3,
+ REG_WR4_RX_TX_MODES = 4,
+ REG_WR5_TX_CONTROL = 5,
+ REG_WR6_SYNC_OR_SDLC_A = 6,
+ REG_WR7_SYNC_OR_SDLC_F = 7
+ };
+
+ enum
+ {
+ RR0_RX_CHAR_AVAILABLE = 0x01,
+ RR0_INTERRUPT_PENDING = 0x02,
+ RR0_TX_BUFFER_EMPTY = 0x04,
+ RR0_DCD = 0x08,
+ RR0_SYNC_HUNT = 0x10,
+ RR0_CTS = 0x20,
+ RR0_TX_UNDERRUN = 0x40,
+ RR0_BREAK_ABORT = 0x80
+ };
+
+ enum
+ {
+ RR1_ALL_SENT = 0x01,
+ RR1_RESIDUE_CODE_MASK = 0x0e,
+ RR1_PARITY_ERROR = 0x10,
+ RR1_RX_OVERRUN_ERROR = 0x20,
+ RR1_CRC_FRAMING_ERROR = 0x40,
+ RR1_END_OF_FRAME = 0x80
+ };
+
+ enum
+ { // TODO: overload SIO functionality
+ RR2_INT_VECTOR_MASK = 0xff, // SCC channel A, SIO channel B (special case)
+ RR2_INT_VECTOR_V1 = 0x02, // SIO (special case) /SCC Channel B
+ RR2_INT_VECTOR_V2 = 0x04, // SIO (special case) /SCC Channel B
+ RR2_INT_VECTOR_V3 = 0x08 // SIO (special case) /SCC Channel B
+ };
+
+ enum
+ {
+ WR0_REGISTER_MASK = 0x07,
+ WR0_COMMAND_MASK = 0x38,
+ WR0_NULL = 0x00,
+ WR0_SEND_ABORT = 0x08, // not supported
+ WR0_RESET_EXT_STATUS = 0x10,
+ WR0_CHANNEL_RESET = 0x18,
+ WR0_ENABLE_INT_NEXT_RX = 0x20,
+ WR0_RESET_TX_INT = 0x28, // not supported
+ WR0_ERROR_RESET = 0x30,
+ WR0_RETURN_FROM_INT = 0x38, // not supported
+ WR0_CRC_RESET_CODE_MASK = 0xc0, // not supported
+ WR0_CRC_RESET_NULL = 0x00, // not supported
+ WR0_CRC_RESET_RX = 0x40, // not supported
+ WR0_CRC_RESET_TX = 0x80, // not supported
+ WR0_CRC_RESET_TX_UNDERRUN = 0xc0 // not supported
+ };
+
+ enum
+ {
+ WR1_EXT_INT_ENABLE = 0x01,
+ WR1_TX_INT_ENABLE = 0x02,
+ WR1_STATUS_VECTOR = 0x04,
+ WR1_RX_INT_MODE_MASK = 0x18,
+ WR1_RX_INT_DISABLE = 0x00,
+ WR1_RX_INT_FIRST = 0x08,
+ WR1_RX_INT_ALL_PARITY = 0x10, // not supported
+ WR1_RX_INT_ALL = 0x18,
+ WR1_WRDY_ON_RX_TX = 0x20, // not supported
+ WR1_WRDY_FUNCTION = 0x40, // not supported
+ WR1_WRDY_ENABLE = 0x80 // not supported
+ };
+
+ enum
+ {
+ WR2_DATA_XFER_INT = 0x00, // not supported
+ WR2_DATA_XFER_DMA_INT = 0x01, // not supported
+ WR2_DATA_XFER_DMA = 0x02, // not supported
+ WR2_DATA_XFER_ILLEGAL = 0x03, // not supported
+ WR2_DATA_XFER_MASK = 0x03, // not supported
+ WR2_PRIORITY = 0x04, // not supported
+ WR2_MODE_8085_1 = 0x00, // not supported
+ WR2_MODE_8085_2 = 0x08, // not supported
+ WR2_MODE_8086_8088 = 0x10, // not supported
+ WR2_MODE_ILLEGAL = 0x18, // not supported
+ WR2_MODE_MASK = 0x18, // not supported
+ WR2_VECTORED_INT = 0x20, // not supported
+ WR2_PIN10_SYNDETB_RTSB = 0x80 // not supported
+ };
+
+ enum
+ {
+ WR3_RX_ENABLE = 0x01,
+ WR3_SYNC_CHAR_LOAD_INHIBIT= 0x02, // not supported
+ WR3_ADDRESS_SEARCH_MODE = 0x04, // not supported
+ WR3_RX_CRC_ENABLE = 0x08, // not supported
+ WR3_ENTER_HUNT_PHASE = 0x10, // not supported
+ WR3_AUTO_ENABLES = 0x20,
+ WR3_RX_WORD_LENGTH_MASK = 0xc0,
+ WR3_RX_WORD_LENGTH_5 = 0x00,
+ WR3_RX_WORD_LENGTH_7 = 0x40,
+ WR3_RX_WORD_LENGTH_6 = 0x80,
+ WR3_RX_WORD_LENGTH_8 = 0xc0
+ };
+
+ enum
+ {
+ WR4_PARITY_ENABLE = 0x01,
+ WR4_PARITY_EVEN = 0x02,
+ WR4_STOP_BITS_MASK = 0x0c,
+ WR4_STOP_BITS_1 = 0x04,
+ WR4_STOP_BITS_1_5 = 0x08, // not supported
+ WR4_STOP_BITS_2 = 0x0c,
+ WR4_SYNC_MODE_MASK = 0x30, // not supported
+ WR4_SYNC_MODE_8_BIT = 0x00, // not supported
+ WR4_SYNC_MODE_16_BIT = 0x10, // not supported
+ WR4_SYNC_MODE_SDLC = 0x20, // not supported
+ WR4_SYNC_MODE_EXT = 0x30, // not supported
+ WR4_CLOCK_RATE_MASK = 0xc0,
+ WR4_CLOCK_RATE_X1 = 0x00,
+ WR4_CLOCK_RATE_X16 = 0x40,
+ WR4_CLOCK_RATE_X32 = 0x80,
+ WR4_CLOCK_RATE_X64 = 0xc0
+ };
+
+ enum
+ {
+ WR5_TX_CRC_ENABLE = 0x01, // not supported
+ WR5_RTS = 0x02,
+ WR5_CRC16 = 0x04, // not supported
+ WR5_TX_ENABLE = 0x08,
+ WR5_SEND_BREAK = 0x10,
+ WR5_TX_WORD_LENGTH_MASK = 0x60,
+ WR5_TX_WORD_LENGTH_5 = 0x00,
+ WR5_TX_WORD_LENGTH_6 = 0x40,
+ WR5_TX_WORD_LENGTH_7 = 0x20,
+ WR5_TX_WORD_LENGTH_8 = 0x60,
+ WR5_DTR = 0x80
+ };
+
+ void update_serial();
+ void update_rts();
+ void set_dtr(int state);
+ void set_rts(int state);
+
+ int get_clock_mode();
+ stop_bits_t get_stop_bits();
+ int get_rx_word_length();
+ int get_tx_word_length();
+
+ // receiver state
+ UINT8 m_rx_data_fifo[3]; // receive data FIFO
+ UINT8 m_rx_error_fifo[3]; // receive error FIFO
+ UINT8 m_rx_error; // current receive error
+ int m_rx_fifo; // receive FIFO pointer
+
+ int m_rx_clock; // receive clock pulse count
+ int m_rx_first; // first character received
+ int m_rx_break; // receive break condition
+ UINT8 m_rx_rr0_latch; // read register 0 latched
+
+ int m_rxd;
+ int m_sh; // sync hunt
+ int m_cts; // clear to send latch
+ int m_dcd; // data carrier detect latch
+
+ // transmitter state
+ UINT8 m_tx_data; // transmit data register
+ int m_tx_clock; // transmit clock pulse count
+
+ int m_dtr; // data terminal ready
+ int m_rts; // request to send
+
+ // synchronous state
+ UINT16 m_sync; // sync character
+
+ int m_index;
+ z80sio_device *m_uart;
+};
+
+
+// ======================> z80sio_device
+
+class z80sio_device : public device_t,
+ public device_z80daisy_interface
+{
+ friend class z80sio_channel;
+
+ public:
+ // construction/destruction
+ z80sio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source);
+ z80sio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ template<class _Object> static devcb_base &set_out_txda_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_txda_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_dtra_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_dtra_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_rtsa_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_rtsa_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_wrdya_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_wrdya_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_synca_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_synca_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_txdb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_txdb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_dtrb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_dtrb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_rtsb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_rtsb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_wrdyb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_wrdyb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_syncb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_syncb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_int_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_int_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_rxdrqa_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_rxdrqa_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_txdrqa_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_txdrqa_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_rxdrqb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_rxdrqb_cb.set_callback(object); }
+ template<class _Object> static devcb_base &set_out_txdrqb_callback(device_t &device, _Object object) { return downcast<z80sio_device &>(device).m_out_txdrqb_cb.set_callback(object); }
+
+ static void configure_channels(device_t &device, int rxa, int txa, int rxb, int txb)
+ {
+ z80sio_device &dev = downcast<z80sio_device &>(device);
+ dev.m_rxca = rxa;
+ dev.m_txca = txa;
+ dev.m_rxcb = rxb;
+ dev.m_txcb = txb;
+ }
+
+ DECLARE_READ8_MEMBER( cd_ba_r );
+ DECLARE_WRITE8_MEMBER( cd_ba_w );
+ DECLARE_READ8_MEMBER( ba_cd_r );
+ DECLARE_WRITE8_MEMBER( ba_cd_w );
+
+ DECLARE_READ8_MEMBER( da_r ) { return m_chanA->data_read(); }
+ DECLARE_WRITE8_MEMBER( da_w ) { m_chanA->data_write(data); }
+ DECLARE_READ8_MEMBER( db_r ) { return m_chanB->data_read(); }
+ DECLARE_WRITE8_MEMBER( db_w ) { m_chanB->data_write(data); }
+
+ DECLARE_READ8_MEMBER( ca_r ) { return m_chanA->control_read(); }
+ DECLARE_WRITE8_MEMBER( ca_w ) { m_chanA->control_write(data); }
+ DECLARE_READ8_MEMBER( cb_r ) { return m_chanB->control_read(); }
+ DECLARE_WRITE8_MEMBER( cb_w ) { m_chanB->control_write(data); }
+
+ // interrupt acknowledge
+ int m1_r();
+
+ DECLARE_WRITE_LINE_MEMBER( rxa_w ) { m_chanA->write_rx(state); }
+ DECLARE_WRITE_LINE_MEMBER( rxb_w ) { m_chanB->write_rx(state); }
+ DECLARE_WRITE_LINE_MEMBER( ctsa_w ) { m_chanA->cts_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( ctsb_w ) { m_chanB->cts_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( dcda_w ) { m_chanA->dcd_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( dcdb_w ) { m_chanB->dcd_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( ria_w ) { m_chanA->ri_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( rib_w ) { m_chanB->ri_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( rxca_w ) { m_chanA->rxc_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( rxcb_w ) { m_chanB->rxc_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( txca_w ) { m_chanA->txc_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( txcb_w ) { m_chanB->txc_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( rxtxcb_w ) { m_chanB->rxc_w(state); m_chanB->txc_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( synca_w ) { m_chanA->sync_w(state); }
+ DECLARE_WRITE_LINE_MEMBER( syncb_w ) { m_chanB->sync_w(state); }
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+ virtual machine_config_constructor device_mconfig_additions() const;
+
+ // device_z80daisy_interface overrides
+ virtual int z80daisy_irq_state();
+ virtual int z80daisy_irq_ack();
+ virtual void z80daisy_irq_reti();
+
+ // internal interrupt management
+ void check_interrupts();
+ void reset_interrupts();
+ void trigger_interrupt(int index, int state);
+ int get_channel_index(z80sio_channel *ch) { return (ch == m_chanA) ? 0 : 1; }
+
+ enum
+ {
+ TYPE_Z80SIO
+ };
+
+ enum
+ {
+ CHANNEL_A = 0,
+ CHANNEL_B
+ };
+
+ required_device<z80sio_channel> m_chanA;
+ required_device<z80sio_channel> m_chanB;
+
+ // internal state
+ int m_rxca;
+ int m_txca;
+ int m_rxcb;
+ int m_txcb;
+
+ devcb_write_line m_out_txda_cb;
+ devcb_write_line m_out_dtra_cb;
+ devcb_write_line m_out_rtsa_cb;
+ devcb_write_line m_out_wrdya_cb;
+ devcb_write_line m_out_synca_cb;
+
+ devcb_write_line m_out_txdb_cb;
+ devcb_write_line m_out_dtrb_cb;
+ devcb_write_line m_out_rtsb_cb;
+ devcb_write_line m_out_wrdyb_cb;
+ devcb_write_line m_out_syncb_cb;
+
+ devcb_write_line m_out_int_cb;
+ devcb_write_line m_out_rxdrqa_cb;
+ devcb_write_line m_out_txdrqa_cb;
+ devcb_write_line m_out_rxdrqb_cb;
+ devcb_write_line m_out_txdrqb_cb;
+
+ int m_int_state[8]; // interrupt state
+ int m_variant;
+};
+
+
+// device type definition
+extern const device_type Z80SIO;
+extern const device_type Z80SIO_CHANNEL;
+#endif
diff --git a/src/emu/machine/z80sti.c b/src/devices/machine/z80sti.c
index a27295f6ff1..a27295f6ff1 100644
--- a/src/emu/machine/z80sti.c
+++ b/src/devices/machine/z80sti.c
diff --git a/src/emu/machine/z80sti.h b/src/devices/machine/z80sti.h
index 1691695147c..1691695147c 100644
--- a/src/emu/machine/z80sti.h
+++ b/src/devices/machine/z80sti.h
diff --git a/src/emu/machine/z8536.c b/src/devices/machine/z8536.c
index fc5e770b15a..fc5e770b15a 100644
--- a/src/emu/machine/z8536.c
+++ b/src/devices/machine/z8536.c
diff --git a/src/emu/machine/z8536.h b/src/devices/machine/z8536.h
index 96c39e0123a..96c39e0123a 100644
--- a/src/emu/machine/z8536.h
+++ b/src/devices/machine/z8536.h
diff --git a/src/emu/sound/2151intf.c b/src/devices/sound/2151intf.c
index e4739c758ee..e4739c758ee 100644
--- a/src/emu/sound/2151intf.c
+++ b/src/devices/sound/2151intf.c
diff --git a/src/emu/sound/2151intf.h b/src/devices/sound/2151intf.h
index 79952d76228..79952d76228 100644
--- a/src/emu/sound/2151intf.h
+++ b/src/devices/sound/2151intf.h
diff --git a/src/emu/sound/2203intf.c b/src/devices/sound/2203intf.c
index 279ae52cea4..279ae52cea4 100644
--- a/src/emu/sound/2203intf.c
+++ b/src/devices/sound/2203intf.c
diff --git a/src/emu/sound/2203intf.h b/src/devices/sound/2203intf.h
index 8d81c54282a..8d81c54282a 100644
--- a/src/emu/sound/2203intf.h
+++ b/src/devices/sound/2203intf.h
diff --git a/src/emu/sound/2413intf.c b/src/devices/sound/2413intf.c
index 3ecfd061241..3ecfd061241 100644
--- a/src/emu/sound/2413intf.c
+++ b/src/devices/sound/2413intf.c
diff --git a/src/emu/sound/2413intf.h b/src/devices/sound/2413intf.h
index 0edf7d1a696..0edf7d1a696 100644
--- a/src/emu/sound/2413intf.h
+++ b/src/devices/sound/2413intf.h
diff --git a/src/emu/sound/2608intf.c b/src/devices/sound/2608intf.c
index 4a2c25597bb..4a2c25597bb 100644
--- a/src/emu/sound/2608intf.c
+++ b/src/devices/sound/2608intf.c
diff --git a/src/emu/sound/2608intf.h b/src/devices/sound/2608intf.h
index ea610036d88..ea610036d88 100644
--- a/src/emu/sound/2608intf.h
+++ b/src/devices/sound/2608intf.h
diff --git a/src/emu/sound/2610intf.c b/src/devices/sound/2610intf.c
index 88f05e354cc..88f05e354cc 100644
--- a/src/emu/sound/2610intf.c
+++ b/src/devices/sound/2610intf.c
diff --git a/src/emu/sound/2610intf.h b/src/devices/sound/2610intf.h
index 40842f48411..40842f48411 100644
--- a/src/emu/sound/2610intf.h
+++ b/src/devices/sound/2610intf.h
diff --git a/src/emu/sound/2612intf.c b/src/devices/sound/2612intf.c
index b5464d4e824..b5464d4e824 100644
--- a/src/emu/sound/2612intf.c
+++ b/src/devices/sound/2612intf.c
diff --git a/src/emu/sound/2612intf.h b/src/devices/sound/2612intf.h
index 8199172044d..8199172044d 100644
--- a/src/emu/sound/2612intf.h
+++ b/src/devices/sound/2612intf.h
diff --git a/src/emu/sound/262intf.c b/src/devices/sound/262intf.c
index b15b6f4deda..b15b6f4deda 100644
--- a/src/emu/sound/262intf.c
+++ b/src/devices/sound/262intf.c
diff --git a/src/emu/sound/262intf.h b/src/devices/sound/262intf.h
index 2ff45f3190c..2ff45f3190c 100644
--- a/src/emu/sound/262intf.h
+++ b/src/devices/sound/262intf.h
diff --git a/src/devices/sound/315-5641.c b/src/devices/sound/315-5641.c
new file mode 100644
index 00000000000..9a14be61469
--- /dev/null
+++ b/src/devices/sound/315-5641.c
@@ -0,0 +1,70 @@
+/* Sega 315-5641 / D77591 / 9442CA010 */
+
+#include "emu.h"
+#include "315-5641.h"
+
+const device_type SEGA_315_5641_PCM = &device_creator<sega_315_5641_pcm_device>;
+
+sega_315_5641_pcm_device::sega_315_5641_pcm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : upd7759_device(mconfig, SEGA_315_5641_PCM, "315-5641 PCM", tag, owner, clock, "315-5641_pcm", __FILE__)
+{
+}
+
+void sega_315_5641_pcm_device::device_start()
+{
+ save_item(NAME(m_fifo_data), 0x40);
+ save_item(NAME(m_fifo_read));
+ save_item(NAME(m_fifo_write));
+
+ upd7759_device::device_start();
+}
+
+void sega_315_5641_pcm_device::advance_state()
+{
+ switch (m_state)
+ {
+ case STATE_DROP_DRQ:
+ if (m_rombase == NULL)
+ {
+ // Slave Mode: get data from FIFO buffer
+ UINT8 fiforead = (m_fifo_read + 1) & 0x3F;
+ if (fiforead != m_fifo_write)
+ {
+ m_fifo_in = m_fifo_data[fiforead];
+ m_fifo_read = fiforead;
+ }
+ }
+ break;
+ }
+
+ upd775x_device::advance_state();
+}
+
+
+WRITE8_MEMBER( sega_315_5641_pcm_device::port_w )
+{
+ if (m_rombase != NULL)
+ {
+ /* update the FIFO value */
+ m_fifo_in = data;
+ }
+ else
+ {
+ m_fifo_data[m_fifo_write++] = data;
+ m_fifo_write &= 0x3F;
+ }
+}
+
+
+UINT8 sega_315_5641_pcm_device::get_fifo_space()
+{
+ return (m_fifo_read - m_fifo_write) & 0x3F;
+}
+
+void sega_315_5641_pcm_device::device_reset()
+{
+ m_fifo_read = 0x3F;
+ m_fifo_write = 0x00;
+
+ upd775x_device::device_reset();
+}
diff --git a/src/devices/sound/315-5641.h b/src/devices/sound/315-5641.h
new file mode 100644
index 00000000000..108db11800c
--- /dev/null
+++ b/src/devices/sound/315-5641.h
@@ -0,0 +1,30 @@
+/* Sega 315-5641 / D77591 / 9442CA010 */
+
+// this is the PICO sound chip, we are not sure if it's the same as a 7759 or not, it requires FIFO logic
+// which the 7759 does _not_ have but it is possible that is handled somewhere else on the PICO hardawre.
+
+#include "upd7759.h"
+
+
+class sega_315_5641_pcm_device : public upd7759_device
+{
+public:
+ sega_315_5641_pcm_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ UINT8 get_fifo_space();
+ void advance_state();
+ DECLARE_WRITE8_MEMBER(port_w);
+
+ UINT8 m_fifo_data[0x40];
+ UINT8 m_fifo_read; // last read offset (will read in m_fifo_read+1)
+ UINT8 m_fifo_write; // write offset
+
+protected:
+ // device-level overrides
+ virtual void device_start();
+ virtual void device_reset();
+
+
+};
+
+extern const device_type SEGA_315_5641_PCM;
diff --git a/src/emu/sound/3526intf.c b/src/devices/sound/3526intf.c
index d90b053a4d3..d90b053a4d3 100644
--- a/src/emu/sound/3526intf.c
+++ b/src/devices/sound/3526intf.c
diff --git a/src/emu/sound/3526intf.h b/src/devices/sound/3526intf.h
index 4f0d59f1c74..4f0d59f1c74 100644
--- a/src/emu/sound/3526intf.h
+++ b/src/devices/sound/3526intf.h
diff --git a/src/emu/sound/3812intf.c b/src/devices/sound/3812intf.c
index ee4a9e3d5af..ee4a9e3d5af 100644
--- a/src/emu/sound/3812intf.c
+++ b/src/devices/sound/3812intf.c
diff --git a/src/emu/sound/3812intf.h b/src/devices/sound/3812intf.h
index ee87e8a43d9..ee87e8a43d9 100644
--- a/src/emu/sound/3812intf.h
+++ b/src/devices/sound/3812intf.h
diff --git a/src/emu/sound/8950intf.c b/src/devices/sound/8950intf.c
index 172ee03ef25..172ee03ef25 100644
--- a/src/emu/sound/8950intf.c
+++ b/src/devices/sound/8950intf.c
diff --git a/src/emu/sound/8950intf.h b/src/devices/sound/8950intf.h
index 42db5339696..42db5339696 100644
--- a/src/emu/sound/8950intf.h
+++ b/src/devices/sound/8950intf.h
diff --git a/src/emu/sound/aica.c b/src/devices/sound/aica.c
index e788b4fda34..e788b4fda34 100644
--- a/src/emu/sound/aica.c
+++ b/src/devices/sound/aica.c
diff --git a/src/emu/sound/aica.h b/src/devices/sound/aica.h
index 0c7d5caf4f4..0c7d5caf4f4 100644
--- a/src/emu/sound/aica.h
+++ b/src/devices/sound/aica.h
diff --git a/src/emu/sound/aicadsp.c b/src/devices/sound/aicadsp.c
index 4f533125825..4f533125825 100644
--- a/src/emu/sound/aicadsp.c
+++ b/src/devices/sound/aicadsp.c
diff --git a/src/emu/sound/aicadsp.h b/src/devices/sound/aicadsp.h
index e28301a6100..e28301a6100 100644
--- a/src/emu/sound/aicadsp.h
+++ b/src/devices/sound/aicadsp.h
diff --git a/src/emu/sound/amiga.c b/src/devices/sound/amiga.c
index 84b761e73bd..84b761e73bd 100644
--- a/src/emu/sound/amiga.c
+++ b/src/devices/sound/amiga.c
diff --git a/src/emu/sound/amiga.h b/src/devices/sound/amiga.h
index eb8b9ee436d..eb8b9ee436d 100644
--- a/src/emu/sound/amiga.h
+++ b/src/devices/sound/amiga.h
diff --git a/src/emu/sound/asc.c b/src/devices/sound/asc.c
index ad7559e0d3d..ad7559e0d3d 100644
--- a/src/emu/sound/asc.c
+++ b/src/devices/sound/asc.c
diff --git a/src/emu/sound/asc.h b/src/devices/sound/asc.h
index 24f085e50ac..24f085e50ac 100644
--- a/src/emu/sound/asc.h
+++ b/src/devices/sound/asc.h
diff --git a/src/emu/sound/astrocde.c b/src/devices/sound/astrocde.c
index 0870347c6ae..0870347c6ae 100644
--- a/src/emu/sound/astrocde.c
+++ b/src/devices/sound/astrocde.c
diff --git a/src/emu/sound/astrocde.h b/src/devices/sound/astrocde.h
index 23e9a83c733..23e9a83c733 100644
--- a/src/emu/sound/astrocde.h
+++ b/src/devices/sound/astrocde.h
diff --git a/src/emu/sound/awacs.c b/src/devices/sound/awacs.c
index 57668acaef5..57668acaef5 100644
--- a/src/emu/sound/awacs.c
+++ b/src/devices/sound/awacs.c
diff --git a/src/emu/sound/awacs.h b/src/devices/sound/awacs.h
index 93b9da2d5d9..93b9da2d5d9 100644
--- a/src/emu/sound/awacs.h
+++ b/src/devices/sound/awacs.h
diff --git a/src/emu/sound/ay8910.c b/src/devices/sound/ay8910.c
index 9e8d397ff7a..9e8d397ff7a 100644
--- a/src/emu/sound/ay8910.c
+++ b/src/devices/sound/ay8910.c
diff --git a/src/emu/sound/ay8910.h b/src/devices/sound/ay8910.h
index 30ef634b766..30ef634b766 100644
--- a/src/emu/sound/ay8910.h
+++ b/src/devices/sound/ay8910.h
diff --git a/src/emu/sound/beep.c b/src/devices/sound/beep.c
index ce5558f3320..ce5558f3320 100644
--- a/src/emu/sound/beep.c
+++ b/src/devices/sound/beep.c
diff --git a/src/emu/sound/beep.h b/src/devices/sound/beep.h
index 4b587bd3c89..4b587bd3c89 100644
--- a/src/emu/sound/beep.h
+++ b/src/devices/sound/beep.h
diff --git a/src/emu/sound/bsmt2000.c b/src/devices/sound/bsmt2000.c
index 0b1dea55354..0b1dea55354 100644
--- a/src/emu/sound/bsmt2000.c
+++ b/src/devices/sound/bsmt2000.c
diff --git a/src/emu/sound/bsmt2000.h b/src/devices/sound/bsmt2000.h
index fb993e982e0..fb993e982e0 100644
--- a/src/emu/sound/bsmt2000.h
+++ b/src/devices/sound/bsmt2000.h
diff --git a/src/emu/sound/c140.c b/src/devices/sound/c140.c
index 0c0d9405098..6649f53616a 100644
--- a/src/emu/sound/c140.c
+++ b/src/devices/sound/c140.c
@@ -134,6 +134,26 @@ void c140_device::device_start()
/* allocate a pair of buffers to mix into - 1 second's worth should be more than enough */
m_mixer_buffer_left = auto_alloc_array(machine(), INT16, 2 * m_sample_rate);
m_mixer_buffer_right = m_mixer_buffer_left + m_sample_rate;
+
+ save_item(NAME(m_REG));
+
+ for (int i = 0; i < C140_MAX_VOICE; i++)
+ {
+ save_item(NAME(m_voi[i].ptoffset), i);
+ save_item(NAME(m_voi[i].pos), i);
+ save_item(NAME(m_voi[i].key), i);
+ save_item(NAME(m_voi[i].lastdt), i);
+ save_item(NAME(m_voi[i].prevdt), i);
+ save_item(NAME(m_voi[i].dltdt), i);
+ save_item(NAME(m_voi[i].rvol), i);
+ save_item(NAME(m_voi[i].lvol), i);
+ save_item(NAME(m_voi[i].frequency), i);
+ save_item(NAME(m_voi[i].bank), i);
+ save_item(NAME(m_voi[i].mode), i);
+ save_item(NAME(m_voi[i].sample_start), i);
+ save_item(NAME(m_voi[i].sample_end), i);
+ save_item(NAME(m_voi[i].sample_loop), i);
+ }
}
diff --git a/src/emu/sound/c140.h b/src/devices/sound/c140.h
index c3879e8257e..13b6bfbcc7c 100644
--- a/src/emu/sound/c140.h
+++ b/src/devices/sound/c140.h
@@ -51,23 +51,23 @@ struct C140_VOICE
sample_end(0),
sample_loop(0) {}
- long ptoffset;
- long pos;
- long key;
+ INT32 ptoffset;
+ INT32 pos;
+ INT32 key;
//--work
- long lastdt;
- long prevdt;
- long dltdt;
+ INT32 lastdt;
+ INT32 prevdt;
+ INT32 dltdt;
//--reg
- long rvol;
- long lvol;
- long frequency;
- long bank;
- long mode;
-
- long sample_start;
- long sample_end;
- long sample_loop;
+ INT32 rvol;
+ INT32 lvol;
+ INT32 frequency;
+ INT32 bank;
+ INT32 mode;
+
+ INT32 sample_start;
+ INT32 sample_end;
+ INT32 sample_loop;
};
diff --git a/src/emu/sound/c352.c b/src/devices/sound/c352.c
index b4172e43aa0..e0bc39918b8 100644
--- a/src/emu/sound/c352.c
+++ b/src/devices/sound/c352.c
@@ -13,6 +13,14 @@
Supports 8-bit linear and 8-bit muLaw samples
Output: digital, 16 bit, 4 channels
Output sample rate is the input clock / (288 * 2).
+
+ superctr: The clock divider appears to be configurable for each system.
+ Below is a list of the divider values followed by the systems that use it.
+
+ * 228: System 11.
+ * 288: System 22, Super 22, NB-1/2, ND-1, FL.
+ * 296: System 23, Super 23.
+ * 332: System 12.
*/
#include "emu.h"
@@ -468,7 +476,7 @@ void c352_device::write_reg16(unsigned long address, unsigned short val)
void c352_device::device_start()
{
- int i, divider;
+ int i;
double x_max = 32752.0;
double y_max = 127.0;
double u = 10.0;
@@ -476,21 +484,7 @@ void c352_device::device_start()
// find our direct access
m_direct = &space().direct();
- switch(m_divider)
- {
- case C352_DIVIDER_228:
- divider=228;
- break;
- case C352_DIVIDER_288:
- default:
- divider=288;
- break;
- case C352_DIVIDER_332:
- divider=332;
- break;
- }
-
- m_sample_rate_base = clock() / divider;
+ m_sample_rate_base = clock() / m_divider;
m_stream = machine().sound().stream_alloc(*this, 0, 4, m_sample_rate_base);
diff --git a/src/emu/sound/c352.h b/src/devices/sound/c352.h
index 31eceffb366..24a2a1cbe74 100644
--- a/src/emu/sound/c352.h
+++ b/src/devices/sound/c352.h
@@ -6,17 +6,6 @@
#define __C352_H__
//**************************************************************************
-// CONSTANTS
-//**************************************************************************
-
-enum
-{
- C352_DIVIDER_228 = 0,
- C352_DIVIDER_288 = 1,
- C352_DIVIDER_332 = 2
-};
-
-//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
diff --git a/src/emu/sound/c6280.c b/src/devices/sound/c6280.c
index d484b8281c0..d484b8281c0 100644
--- a/src/emu/sound/c6280.c
+++ b/src/devices/sound/c6280.c
diff --git a/src/emu/sound/c6280.h b/src/devices/sound/c6280.h
index af53962a83e..af53962a83e 100644
--- a/src/emu/sound/c6280.h
+++ b/src/devices/sound/c6280.h
diff --git a/src/emu/sound/cdda.c b/src/devices/sound/cdda.c
index 1b7c81c1172..1b7c81c1172 100644
--- a/src/emu/sound/cdda.c
+++ b/src/devices/sound/cdda.c
diff --git a/src/emu/sound/cdda.h b/src/devices/sound/cdda.h
index 7650348a099..7650348a099 100644
--- a/src/emu/sound/cdda.h
+++ b/src/devices/sound/cdda.h
diff --git a/src/emu/sound/cdp1863.c b/src/devices/sound/cdp1863.c
index 08a88f914ce..08a88f914ce 100644
--- a/src/emu/sound/cdp1863.c
+++ b/src/devices/sound/cdp1863.c
diff --git a/src/emu/sound/cdp1863.h b/src/devices/sound/cdp1863.h
index 910be5153fd..910be5153fd 100644
--- a/src/emu/sound/cdp1863.h
+++ b/src/devices/sound/cdp1863.h
diff --git a/src/emu/sound/cdp1864.c b/src/devices/sound/cdp1864.c
index b4859cee4a3..b4859cee4a3 100644
--- a/src/emu/sound/cdp1864.c
+++ b/src/devices/sound/cdp1864.c
diff --git a/src/emu/sound/cdp1864.h b/src/devices/sound/cdp1864.h
index ab9f384dc1a..ab9f384dc1a 100644
--- a/src/emu/sound/cdp1864.h
+++ b/src/devices/sound/cdp1864.h
diff --git a/src/emu/sound/cdp1869.c b/src/devices/sound/cdp1869.c
index 383d7eb5d88..383d7eb5d88 100644
--- a/src/emu/sound/cdp1869.c
+++ b/src/devices/sound/cdp1869.c
diff --git a/src/emu/sound/cdp1869.h b/src/devices/sound/cdp1869.h
index 96185021ac4..96185021ac4 100644
--- a/src/emu/sound/cdp1869.h
+++ b/src/devices/sound/cdp1869.h
diff --git a/src/emu/sound/cem3394.c b/src/devices/sound/cem3394.c
index f5af2dd2b86..f5af2dd2b86 100644
--- a/src/emu/sound/cem3394.c
+++ b/src/devices/sound/cem3394.c
diff --git a/src/emu/sound/cem3394.h b/src/devices/sound/cem3394.h
index 65290aefce9..65290aefce9 100644
--- a/src/emu/sound/cem3394.h
+++ b/src/devices/sound/cem3394.h
diff --git a/src/emu/sound/dac.c b/src/devices/sound/dac.c
index 8e4baffe3aa..8e4baffe3aa 100644
--- a/src/emu/sound/dac.c
+++ b/src/devices/sound/dac.c
diff --git a/src/emu/sound/dac.h b/src/devices/sound/dac.h
index fadc1a7e324..fadc1a7e324 100644
--- a/src/emu/sound/dac.h
+++ b/src/devices/sound/dac.h
diff --git a/src/emu/sound/digitalk.c b/src/devices/sound/digitalk.c
index cf5d99d0c07..7f240879d53 100644
--- a/src/emu/sound/digitalk.c
+++ b/src/devices/sound/digitalk.c
@@ -169,7 +169,7 @@ period.
- Rom organization
-The rom starts with a vector of 16-bits little endian values which are
+The rom starts with a vector of 16-bits big endian values which are
the addresses of the segments table for the samples. The segments data
is a vector of 24-bits little-endian values organized as such:
@@ -385,7 +385,7 @@ void digitalker_device::digitalker_step_mode_0()
void digitalker_device::digitalker_step_mode_1()
{
- logerror("Digitalker mode 1 unsupported");
+ logerror("Digitalker mode 1 unsupported\n");
m_zero_count = 1;
m_cur_segment = m_segments;
}
@@ -516,6 +516,7 @@ void digitalker_device::digitalker_step()
return;
}
} else if(m_stop_after == 1) {
+ digitalker_set_intr(1);
m_bpos = 0xffff;
m_zero_count = 81920;
m_stop_after = 2;
@@ -525,7 +526,6 @@ void digitalker_device::digitalker_step()
m_repeats = 0;
} else {
m_stop_after = 0;
- digitalker_set_intr(1);
}
}
diff --git a/src/emu/sound/digitalk.h b/src/devices/sound/digitalk.h
index fc2dd497f09..fc2dd497f09 100644
--- a/src/emu/sound/digitalk.h
+++ b/src/devices/sound/digitalk.h
diff --git a/src/emu/sound/disc_cls.h b/src/devices/sound/disc_cls.h
index 255b0958c15..255b0958c15 100644
--- a/src/emu/sound/disc_cls.h
+++ b/src/devices/sound/disc_cls.h
diff --git a/src/emu/sound/disc_dev.h b/src/devices/sound/disc_dev.h
index 80af62a3ae3..80af62a3ae3 100644
--- a/src/emu/sound/disc_dev.h
+++ b/src/devices/sound/disc_dev.h
diff --git a/src/emu/sound/disc_dev.inc b/src/devices/sound/disc_dev.inc
index 47026747cd1..47026747cd1 100644
--- a/src/emu/sound/disc_dev.inc
+++ b/src/devices/sound/disc_dev.inc
diff --git a/src/emu/sound/disc_flt.h b/src/devices/sound/disc_flt.h
index 3c6f2d72607..3c6f2d72607 100644
--- a/src/emu/sound/disc_flt.h
+++ b/src/devices/sound/disc_flt.h
diff --git a/src/emu/sound/disc_flt.inc b/src/devices/sound/disc_flt.inc
index 18cb8f41c1c..18cb8f41c1c 100644
--- a/src/emu/sound/disc_flt.inc
+++ b/src/devices/sound/disc_flt.inc
diff --git a/src/emu/sound/disc_inp.inc b/src/devices/sound/disc_inp.inc
index b9eedb9fdff..b9eedb9fdff 100644
--- a/src/emu/sound/disc_inp.inc
+++ b/src/devices/sound/disc_inp.inc
diff --git a/src/emu/sound/disc_mth.h b/src/devices/sound/disc_mth.h
index a459440a3b6..a459440a3b6 100644
--- a/src/emu/sound/disc_mth.h
+++ b/src/devices/sound/disc_mth.h
diff --git a/src/emu/sound/disc_mth.inc b/src/devices/sound/disc_mth.inc
index 45e04654445..45e04654445 100644
--- a/src/emu/sound/disc_mth.inc
+++ b/src/devices/sound/disc_mth.inc
diff --git a/src/emu/sound/disc_sys.inc b/src/devices/sound/disc_sys.inc
index 4192e832d93..4192e832d93 100644
--- a/src/emu/sound/disc_sys.inc
+++ b/src/devices/sound/disc_sys.inc
diff --git a/src/emu/sound/disc_wav.h b/src/devices/sound/disc_wav.h
index 4775dd8fe68..4775dd8fe68 100644
--- a/src/emu/sound/disc_wav.h
+++ b/src/devices/sound/disc_wav.h
diff --git a/src/emu/sound/disc_wav.inc b/src/devices/sound/disc_wav.inc
index 57a90ae5a5b..57a90ae5a5b 100644
--- a/src/emu/sound/disc_wav.inc
+++ b/src/devices/sound/disc_wav.inc
diff --git a/src/emu/sound/discrete.c b/src/devices/sound/discrete.c
index 5270f37ebb9..71e95ed46bc 100644
--- a/src/emu/sound/discrete.c
+++ b/src/devices/sound/discrete.c
@@ -36,9 +36,17 @@
************************************************************************/
#include "emu.h"
-#include "wavwrite.h"
+#include "sound/wavwrite.h"
#include "discrete.h"
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
+
+
/* for_each collides with c++ standard libraries - include it here */
#define for_each(_T, _e, _l) for (_T _e = (_l)->begin_ptr() ; _e <= (_l)->end_ptr(); _e++)
@@ -863,7 +871,7 @@ void discrete_device::device_start()
//m_stream = machine().sound().stream_alloc(*this, 0, 2, 22257);
const discrete_block *intf_start = m_intf;
- char name[32];
+ char name[128];
/* If a clock is specified we will use it, otherwise run at the audio sample rate. */
if (this->clock())
@@ -1134,3 +1142,7 @@ WRITE8_MEMBER( discrete_device::write )
discrete_log("discrete_sound_w write to non-existent NODE_%02d\n", offset-NODE_00);
}
}
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/sound/discrete.h b/src/devices/sound/discrete.h
index d3dfd2c4e85..92eeb40810e 100644
--- a/src/emu/sound/discrete.h
+++ b/src/devices/sound/discrete.h
@@ -3467,7 +3467,7 @@
*
************************************************************************/
-#include "wavwrite.h"
+#include "sound/wavwrite.h"
/*************************************
*
diff --git a/src/emu/sound/dmadac.c b/src/devices/sound/dmadac.c
index 622b566f1ee..622b566f1ee 100644
--- a/src/emu/sound/dmadac.c
+++ b/src/devices/sound/dmadac.c
diff --git a/src/emu/sound/dmadac.h b/src/devices/sound/dmadac.h
index 65bfe16b3ff..65bfe16b3ff 100644
--- a/src/emu/sound/dmadac.h
+++ b/src/devices/sound/dmadac.h
diff --git a/src/emu/sound/es1373.c b/src/devices/sound/es1373.c
index 509b4a873d2..509b4a873d2 100644
--- a/src/emu/sound/es1373.c
+++ b/src/devices/sound/es1373.c
diff --git a/src/emu/sound/es1373.h b/src/devices/sound/es1373.h
index a5c7e974204..a5c7e974204 100644
--- a/src/emu/sound/es1373.h
+++ b/src/devices/sound/es1373.h
diff --git a/src/emu/sound/es5503.c b/src/devices/sound/es5503.c
index b1881412da2..b1881412da2 100644
--- a/src/emu/sound/es5503.c
+++ b/src/devices/sound/es5503.c
diff --git a/src/emu/sound/es5503.h b/src/devices/sound/es5503.h
index 582456e830b..582456e830b 100644
--- a/src/emu/sound/es5503.h
+++ b/src/devices/sound/es5503.h
diff --git a/src/emu/sound/es5506.c b/src/devices/sound/es5506.c
index 2c46b7560d6..d6e1865b8ae 100644
--- a/src/emu/sound/es5506.c
+++ b/src/devices/sound/es5506.c
@@ -96,7 +96,7 @@ Ensoniq OTIS - ES5505 Ensoniq OTTO -
#define RAINE_CHECK 0
#if MAKE_WAVS
-#include "wavwrite.h"
+#include "sound/wavwrite.h"
#endif
diff --git a/src/emu/sound/es5506.h b/src/devices/sound/es5506.h
index c434ec8b12e..c434ec8b12e 100644
--- a/src/emu/sound/es5506.h
+++ b/src/devices/sound/es5506.h
diff --git a/src/emu/sound/es8712.c b/src/devices/sound/es8712.c
index f6087f83dc1..f6087f83dc1 100644
--- a/src/emu/sound/es8712.c
+++ b/src/devices/sound/es8712.c
diff --git a/src/emu/sound/es8712.h b/src/devices/sound/es8712.h
index ed05a4b3497..ed05a4b3497 100644
--- a/src/emu/sound/es8712.h
+++ b/src/devices/sound/es8712.h
diff --git a/src/emu/sound/esqpump.c b/src/devices/sound/esqpump.c
index 147f97786ca..147f97786ca 100644
--- a/src/emu/sound/esqpump.c
+++ b/src/devices/sound/esqpump.c
diff --git a/src/emu/sound/esqpump.h b/src/devices/sound/esqpump.h
index bc2c72f8a72..bc2c72f8a72 100644
--- a/src/emu/sound/esqpump.h
+++ b/src/devices/sound/esqpump.h
diff --git a/src/emu/sound/flt_rc.c b/src/devices/sound/flt_rc.c
index 5fc0a7df882..5fc0a7df882 100644
--- a/src/emu/sound/flt_rc.c
+++ b/src/devices/sound/flt_rc.c
diff --git a/src/emu/sound/flt_rc.h b/src/devices/sound/flt_rc.h
index 0ea52c6972a..0ea52c6972a 100644
--- a/src/emu/sound/flt_rc.h
+++ b/src/devices/sound/flt_rc.h
diff --git a/src/emu/sound/flt_vol.c b/src/devices/sound/flt_vol.c
index 0012f3fc4db..0012f3fc4db 100644
--- a/src/emu/sound/flt_vol.c
+++ b/src/devices/sound/flt_vol.c
diff --git a/src/emu/sound/flt_vol.h b/src/devices/sound/flt_vol.h
index 20ce17a58e9..20ce17a58e9 100644
--- a/src/emu/sound/flt_vol.h
+++ b/src/devices/sound/flt_vol.h
diff --git a/src/emu/sound/fm.c b/src/devices/sound/fm.c
index 3782790409f..3782790409f 100644
--- a/src/emu/sound/fm.c
+++ b/src/devices/sound/fm.c
diff --git a/src/emu/sound/fm.h b/src/devices/sound/fm.h
index 878f753b599..878f753b599 100644
--- a/src/emu/sound/fm.h
+++ b/src/devices/sound/fm.h
diff --git a/src/emu/sound/fm2612.c b/src/devices/sound/fm2612.c
index 034b07a8595..034b07a8595 100644
--- a/src/emu/sound/fm2612.c
+++ b/src/devices/sound/fm2612.c
diff --git a/src/emu/sound/fmopl.c b/src/devices/sound/fmopl.c
index 4932cde31fa..4932cde31fa 100644
--- a/src/emu/sound/fmopl.c
+++ b/src/devices/sound/fmopl.c
diff --git a/src/emu/sound/fmopl.h b/src/devices/sound/fmopl.h
index 3b0cda28c9f..3b0cda28c9f 100644
--- a/src/emu/sound/fmopl.h
+++ b/src/devices/sound/fmopl.h
diff --git a/src/emu/sound/gaelco.c b/src/devices/sound/gaelco.c
index 9a40796a1ac..c11c39979ff 100644
--- a/src/emu/sound/gaelco.c
+++ b/src/devices/sound/gaelco.c
@@ -37,7 +37,7 @@ Registers per channel:
#include "emu.h"
#include "gaelco.h"
-#include "wavwrite.h"
+#include "sound/wavwrite.h"
#define VERBOSE_SOUND 0
#define VERBOSE_READ_WRITES 0
diff --git a/src/emu/sound/gaelco.h b/src/devices/sound/gaelco.h
index 25b8cb129d2..25b8cb129d2 100644
--- a/src/emu/sound/gaelco.h
+++ b/src/devices/sound/gaelco.h
diff --git a/src/emu/sound/hc55516.c b/src/devices/sound/hc55516.c
index 9d8a191bdba..9d8a191bdba 100644
--- a/src/emu/sound/hc55516.c
+++ b/src/devices/sound/hc55516.c
diff --git a/src/emu/sound/hc55516.h b/src/devices/sound/hc55516.h
index a6323f8ee4f..a6323f8ee4f 100644
--- a/src/emu/sound/hc55516.h
+++ b/src/devices/sound/hc55516.h
diff --git a/src/emu/sound/i5000.c b/src/devices/sound/i5000.c
index df86311904e..df86311904e 100644
--- a/src/emu/sound/i5000.c
+++ b/src/devices/sound/i5000.c
diff --git a/src/emu/sound/i5000.h b/src/devices/sound/i5000.h
index cdf8b33430e..cdf8b33430e 100644
--- a/src/emu/sound/i5000.h
+++ b/src/devices/sound/i5000.h
diff --git a/src/emu/sound/ics2115.c b/src/devices/sound/ics2115.c
index af3557c28c3..af3557c28c3 100644
--- a/src/emu/sound/ics2115.c
+++ b/src/devices/sound/ics2115.c
diff --git a/src/emu/sound/ics2115.h b/src/devices/sound/ics2115.h
index fbfeb64e24a..fbfeb64e24a 100644
--- a/src/emu/sound/ics2115.h
+++ b/src/devices/sound/ics2115.h
diff --git a/src/emu/sound/iremga20.c b/src/devices/sound/iremga20.c
index 925814945fe..925814945fe 100644
--- a/src/emu/sound/iremga20.c
+++ b/src/devices/sound/iremga20.c
diff --git a/src/emu/sound/iremga20.h b/src/devices/sound/iremga20.h
index 13bc8c0ef64..13bc8c0ef64 100644
--- a/src/emu/sound/iremga20.h
+++ b/src/devices/sound/iremga20.h
diff --git a/src/emu/sound/k005289.c b/src/devices/sound/k005289.c
index 746cf04413f..746cf04413f 100644
--- a/src/emu/sound/k005289.c
+++ b/src/devices/sound/k005289.c
diff --git a/src/emu/sound/k005289.h b/src/devices/sound/k005289.h
index 8bee1534390..8bee1534390 100644
--- a/src/emu/sound/k005289.h
+++ b/src/devices/sound/k005289.h
diff --git a/src/emu/sound/k007232.c b/src/devices/sound/k007232.c
index 6f5286b951f..6f5286b951f 100644
--- a/src/emu/sound/k007232.c
+++ b/src/devices/sound/k007232.c
diff --git a/src/emu/sound/k007232.h b/src/devices/sound/k007232.h
index 236fbd26671..236fbd26671 100644
--- a/src/emu/sound/k007232.h
+++ b/src/devices/sound/k007232.h
diff --git a/src/emu/sound/k051649.c b/src/devices/sound/k051649.c
index d69b9f25445..d69b9f25445 100644
--- a/src/emu/sound/k051649.c
+++ b/src/devices/sound/k051649.c
diff --git a/src/emu/sound/k051649.h b/src/devices/sound/k051649.h
index ee4ffcbfb8e..ee4ffcbfb8e 100644
--- a/src/emu/sound/k051649.h
+++ b/src/devices/sound/k051649.h
diff --git a/src/emu/sound/k053260.c b/src/devices/sound/k053260.c
index 86054000829..86054000829 100644
--- a/src/emu/sound/k053260.c
+++ b/src/devices/sound/k053260.c
diff --git a/src/emu/sound/k053260.h b/src/devices/sound/k053260.h
index 4a6e6353d08..4a6e6353d08 100644
--- a/src/emu/sound/k053260.h
+++ b/src/devices/sound/k053260.h
diff --git a/src/emu/sound/k054539.c b/src/devices/sound/k054539.c
index 965ed5b9b58..965ed5b9b58 100644
--- a/src/emu/sound/k054539.c
+++ b/src/devices/sound/k054539.c
diff --git a/src/emu/sound/k054539.h b/src/devices/sound/k054539.h
index d6fa2dc73a1..d6fa2dc73a1 100644
--- a/src/emu/sound/k054539.h
+++ b/src/devices/sound/k054539.h
diff --git a/src/emu/sound/k056800.c b/src/devices/sound/k056800.c
index 1534783f8de..1534783f8de 100644
--- a/src/emu/sound/k056800.c
+++ b/src/devices/sound/k056800.c
diff --git a/src/emu/sound/k056800.h b/src/devices/sound/k056800.h
index 7a14647b3f1..7a14647b3f1 100644
--- a/src/emu/sound/k056800.h
+++ b/src/devices/sound/k056800.h
diff --git a/src/emu/sound/l7a1045_l6028_dsp_a.c b/src/devices/sound/l7a1045_l6028_dsp_a.c
index 9f5f6cbe965..baf277b55e2 100644
--- a/src/emu/sound/l7a1045_l6028_dsp_a.c
+++ b/src/devices/sound/l7a1045_l6028_dsp_a.c
@@ -1,5 +1,5 @@
// license:LGPL-2.1+
-// copyright-holders:David Haywood, Angelo Salese, ElSemi, Andrew Gardner, Andrew Zaferakis
+// copyright-holders:David Haywood, Angelo Salese, ElSemi
/***************************************************************************
L7A1045 L6028 DSP-A
diff --git a/src/emu/sound/l7a1045_l6028_dsp_a.h b/src/devices/sound/l7a1045_l6028_dsp_a.h
index 76c6a9a6744..c0283f36836 100644
--- a/src/emu/sound/l7a1045_l6028_dsp_a.h
+++ b/src/devices/sound/l7a1045_l6028_dsp_a.h
@@ -1,5 +1,5 @@
// license:LGPL-2.1+
-// copyright-holders:David Haywood, Angelo Salese, ElSemi, Andrew Gardner, Andrew Zaferakis
+// copyright-holders:David Haywood, Angelo Salese, ElSemi
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
diff --git a/src/emu/sound/lmc1992.c b/src/devices/sound/lmc1992.c
index f4007ea875d..f4007ea875d 100644
--- a/src/emu/sound/lmc1992.c
+++ b/src/devices/sound/lmc1992.c
diff --git a/src/emu/sound/lmc1992.h b/src/devices/sound/lmc1992.h
index 0f76e38544e..0f76e38544e 100644
--- a/src/emu/sound/lmc1992.h
+++ b/src/devices/sound/lmc1992.h
diff --git a/src/emu/sound/mas3507d.c b/src/devices/sound/mas3507d.c
index a7be9bb4ba1..a7be9bb4ba1 100644
--- a/src/emu/sound/mas3507d.c
+++ b/src/devices/sound/mas3507d.c
diff --git a/src/emu/sound/mas3507d.h b/src/devices/sound/mas3507d.h
index 0dad34bfe61..0dad34bfe61 100644
--- a/src/emu/sound/mas3507d.h
+++ b/src/devices/sound/mas3507d.h
diff --git a/src/emu/sound/mos6560.c b/src/devices/sound/mos6560.c
index eb4ee0a5c30..eb4ee0a5c30 100644
--- a/src/emu/sound/mos6560.c
+++ b/src/devices/sound/mos6560.c
diff --git a/src/emu/sound/mos6560.h b/src/devices/sound/mos6560.h
index 05768815bf0..05768815bf0 100644
--- a/src/emu/sound/mos6560.h
+++ b/src/devices/sound/mos6560.h
diff --git a/src/emu/sound/mos6581.c b/src/devices/sound/mos6581.c
index 73115c79f83..73115c79f83 100644
--- a/src/emu/sound/mos6581.c
+++ b/src/devices/sound/mos6581.c
diff --git a/src/emu/sound/mos6581.h b/src/devices/sound/mos6581.h
index 4699bdc51d7..4699bdc51d7 100644
--- a/src/emu/sound/mos6581.h
+++ b/src/devices/sound/mos6581.h
diff --git a/src/emu/sound/mos7360.c b/src/devices/sound/mos7360.c
index fe8631cfee2..fe8631cfee2 100644
--- a/src/emu/sound/mos7360.c
+++ b/src/devices/sound/mos7360.c
diff --git a/src/emu/sound/mos7360.h b/src/devices/sound/mos7360.h
index aea96b42bd9..aea96b42bd9 100644
--- a/src/emu/sound/mos7360.h
+++ b/src/devices/sound/mos7360.h
diff --git a/src/emu/sound/mpeg_audio.c b/src/devices/sound/mpeg_audio.c
index bf024383a06..bf024383a06 100644
--- a/src/emu/sound/mpeg_audio.c
+++ b/src/devices/sound/mpeg_audio.c
diff --git a/src/emu/sound/mpeg_audio.h b/src/devices/sound/mpeg_audio.h
index 615116b6021..615116b6021 100644
--- a/src/emu/sound/mpeg_audio.h
+++ b/src/devices/sound/mpeg_audio.h
diff --git a/src/emu/sound/msm5205.c b/src/devices/sound/msm5205.c
index ae925a513b8..ae925a513b8 100644
--- a/src/emu/sound/msm5205.c
+++ b/src/devices/sound/msm5205.c
diff --git a/src/emu/sound/msm5205.h b/src/devices/sound/msm5205.h
index ab3b4219df2..ab3b4219df2 100644
--- a/src/emu/sound/msm5205.h
+++ b/src/devices/sound/msm5205.h
diff --git a/src/emu/sound/msm5232.c b/src/devices/sound/msm5232.c
index 6bd36aac09e..6bd36aac09e 100644
--- a/src/emu/sound/msm5232.c
+++ b/src/devices/sound/msm5232.c
diff --git a/src/emu/sound/msm5232.h b/src/devices/sound/msm5232.h
index a7e30e72a57..a7e30e72a57 100644
--- a/src/emu/sound/msm5232.h
+++ b/src/devices/sound/msm5232.h
diff --git a/src/emu/sound/multipcm.c b/src/devices/sound/multipcm.c
index 69c164bad2c..69c164bad2c 100644
--- a/src/emu/sound/multipcm.c
+++ b/src/devices/sound/multipcm.c
diff --git a/src/emu/sound/multipcm.h b/src/devices/sound/multipcm.h
index 18854902ef1..18854902ef1 100644
--- a/src/emu/sound/multipcm.h
+++ b/src/devices/sound/multipcm.h
diff --git a/src/emu/sound/n63701x.c b/src/devices/sound/n63701x.c
index a1308c36713..a1308c36713 100644
--- a/src/emu/sound/n63701x.c
+++ b/src/devices/sound/n63701x.c
diff --git a/src/emu/sound/n63701x.h b/src/devices/sound/n63701x.h
index 9af9bfc62ab..9af9bfc62ab 100644
--- a/src/emu/sound/n63701x.h
+++ b/src/devices/sound/n63701x.h
diff --git a/src/emu/sound/namco.c b/src/devices/sound/namco.c
index ea59b5c6393..ea59b5c6393 100644
--- a/src/emu/sound/namco.c
+++ b/src/devices/sound/namco.c
diff --git a/src/emu/sound/namco.h b/src/devices/sound/namco.h
index 56be828b046..56be828b046 100644
--- a/src/emu/sound/namco.h
+++ b/src/devices/sound/namco.h
diff --git a/src/emu/sound/nes_apu.c b/src/devices/sound/nes_apu.c
index 95a68e9c3b1..cd2dfa8e4cb 100644
--- a/src/emu/sound/nes_apu.c
+++ b/src/devices/sound/nes_apu.c
@@ -143,9 +143,9 @@ void nesapu_device::device_start()
int rate = clock() / 4;
/* Initialize global variables */
- m_samps_per_sync = rate / ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds);
+ m_samps_per_sync = rate / ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds());
m_buffer_size = m_samps_per_sync;
- m_real_rate = m_samps_per_sync * ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds);
+ m_real_rate = m_samps_per_sync * ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds());
m_apu_incsize = (float) (clock() / (float) m_real_rate);
/* Use initializer calls */
diff --git a/src/emu/sound/nes_apu.h b/src/devices/sound/nes_apu.h
index 48823246e39..48823246e39 100644
--- a/src/emu/sound/nes_apu.h
+++ b/src/devices/sound/nes_apu.h
diff --git a/src/emu/sound/nes_defs.h b/src/devices/sound/nes_defs.h
index 0215a6a1208..0215a6a1208 100644
--- a/src/emu/sound/nes_defs.h
+++ b/src/devices/sound/nes_defs.h
diff --git a/src/emu/sound/nile.c b/src/devices/sound/nile.c
index a0fd9d8b5a5..a0fd9d8b5a5 100644
--- a/src/emu/sound/nile.c
+++ b/src/devices/sound/nile.c
diff --git a/src/emu/sound/nile.h b/src/devices/sound/nile.h
index 9aa05d79511..9aa05d79511 100644
--- a/src/emu/sound/nile.h
+++ b/src/devices/sound/nile.h
diff --git a/src/emu/sound/okiadpcm.c b/src/devices/sound/okiadpcm.c
index 611f7e2f13f..611f7e2f13f 100644
--- a/src/emu/sound/okiadpcm.c
+++ b/src/devices/sound/okiadpcm.c
diff --git a/src/emu/sound/okiadpcm.h b/src/devices/sound/okiadpcm.h
index 311ee9d404f..311ee9d404f 100644
--- a/src/emu/sound/okiadpcm.h
+++ b/src/devices/sound/okiadpcm.h
diff --git a/src/emu/sound/okim6258.c b/src/devices/sound/okim6258.c
index d26810e33d5..d26810e33d5 100644
--- a/src/emu/sound/okim6258.c
+++ b/src/devices/sound/okim6258.c
diff --git a/src/emu/sound/okim6258.h b/src/devices/sound/okim6258.h
index c4cfed1c82c..c4cfed1c82c 100644
--- a/src/emu/sound/okim6258.h
+++ b/src/devices/sound/okim6258.h
diff --git a/src/emu/sound/okim6295.c b/src/devices/sound/okim6295.c
index fc9f35e3a58..fc9f35e3a58 100644
--- a/src/emu/sound/okim6295.c
+++ b/src/devices/sound/okim6295.c
diff --git a/src/emu/sound/okim6295.h b/src/devices/sound/okim6295.h
index 33c8962767a..33c8962767a 100644
--- a/src/emu/sound/okim6295.h
+++ b/src/devices/sound/okim6295.h
diff --git a/src/emu/sound/okim6376.c b/src/devices/sound/okim6376.c
index 2db0a475b04..2db0a475b04 100644
--- a/src/emu/sound/okim6376.c
+++ b/src/devices/sound/okim6376.c
diff --git a/src/emu/sound/okim6376.h b/src/devices/sound/okim6376.h
index df87344eb50..df87344eb50 100644
--- a/src/emu/sound/okim6376.h
+++ b/src/devices/sound/okim6376.h
diff --git a/src/emu/sound/okim9810.c b/src/devices/sound/okim9810.c
index e134e646ddb..e134e646ddb 100644
--- a/src/emu/sound/okim9810.c
+++ b/src/devices/sound/okim9810.c
diff --git a/src/emu/sound/okim9810.h b/src/devices/sound/okim9810.h
index 6d3595c59b2..6d3595c59b2 100644
--- a/src/emu/sound/okim9810.h
+++ b/src/devices/sound/okim9810.h
diff --git a/src/emu/sound/pci-ac97.c b/src/devices/sound/pci-ac97.c
index 84018534e46..84018534e46 100644
--- a/src/emu/sound/pci-ac97.c
+++ b/src/devices/sound/pci-ac97.c
diff --git a/src/emu/sound/pci-ac97.h b/src/devices/sound/pci-ac97.h
index 56a3e4c3ace..56a3e4c3ace 100644
--- a/src/emu/sound/pci-ac97.h
+++ b/src/devices/sound/pci-ac97.h
diff --git a/src/emu/sound/pokey.c b/src/devices/sound/pokey.c
index 89279c16184..89279c16184 100644
--- a/src/emu/sound/pokey.c
+++ b/src/devices/sound/pokey.c
diff --git a/src/emu/sound/pokey.h b/src/devices/sound/pokey.h
index 96c9f672246..96c9f672246 100644
--- a/src/emu/sound/pokey.h
+++ b/src/devices/sound/pokey.h
diff --git a/src/emu/sound/pokey.txt b/src/devices/sound/pokey.txt
index e0a30094893..e0a30094893 100644
--- a/src/emu/sound/pokey.txt
+++ b/src/devices/sound/pokey.txt
diff --git a/src/emu/sound/qs1000.c b/src/devices/sound/qs1000.c
index 3100800acbc..3100800acbc 100644
--- a/src/emu/sound/qs1000.c
+++ b/src/devices/sound/qs1000.c
diff --git a/src/emu/sound/qs1000.h b/src/devices/sound/qs1000.h
index 24b843184b4..24b843184b4 100644
--- a/src/emu/sound/qs1000.h
+++ b/src/devices/sound/qs1000.h
diff --git a/src/emu/sound/qsound.c b/src/devices/sound/qsound.c
index c519da454a5..c519da454a5 100644
--- a/src/emu/sound/qsound.c
+++ b/src/devices/sound/qsound.c
diff --git a/src/emu/sound/qsound.h b/src/devices/sound/qsound.h
index 208fdac41e9..208fdac41e9 100644
--- a/src/emu/sound/qsound.h
+++ b/src/devices/sound/qsound.h
diff --git a/src/emu/sound/rf5c400.c b/src/devices/sound/rf5c400.c
index 91f9cf0d761..2e3b823c013 100644
--- a/src/emu/sound/rf5c400.c
+++ b/src/devices/sound/rf5c400.c
@@ -413,6 +413,18 @@ WRITE16_MEMBER( rf5c400_device::rf5c400_w )
case 0x08: // relative to env attack (channel no)
case 0x09: // relative to env attack (0x0c00/ 0x1c00)
+ case 0x11: // ? counter for 0x13?
+ {
+ break;
+ }
+ case 0x13: // ? bujutsu writes sample data here
+ {
+ break;
+ }
+
+ case 0x14: // ? related to 0x11/0x13 ?
+ break;
+
case 0x21: // reverb(character).w
case 0x32: // reverb(pre-lpf).w
case 0x2B: // reverb(level).w
diff --git a/src/emu/sound/rf5c400.h b/src/devices/sound/rf5c400.h
index 4781f8893d9..4781f8893d9 100644
--- a/src/emu/sound/rf5c400.h
+++ b/src/devices/sound/rf5c400.h
diff --git a/src/emu/sound/rf5c68.c b/src/devices/sound/rf5c68.c
index af99edd197a..af99edd197a 100644
--- a/src/emu/sound/rf5c68.c
+++ b/src/devices/sound/rf5c68.c
diff --git a/src/emu/sound/rf5c68.h b/src/devices/sound/rf5c68.h
index 8dafb114f21..8dafb114f21 100644
--- a/src/emu/sound/rf5c68.h
+++ b/src/devices/sound/rf5c68.h
diff --git a/src/emu/sound/s14001a.c b/src/devices/sound/s14001a.c
index 50cca284241..50cca284241 100644
--- a/src/emu/sound/s14001a.c
+++ b/src/devices/sound/s14001a.c
diff --git a/src/emu/sound/s14001a.h b/src/devices/sound/s14001a.h
index 4427a59f8b7..4427a59f8b7 100644
--- a/src/emu/sound/s14001a.h
+++ b/src/devices/sound/s14001a.h
diff --git a/src/emu/sound/saa1099.c b/src/devices/sound/saa1099.c
index a915fa6ed38..a915fa6ed38 100644
--- a/src/emu/sound/saa1099.c
+++ b/src/devices/sound/saa1099.c
diff --git a/src/emu/sound/saa1099.h b/src/devices/sound/saa1099.h
index 1909efa1c52..1909efa1c52 100644
--- a/src/emu/sound/saa1099.h
+++ b/src/devices/sound/saa1099.h
diff --git a/src/emu/sound/samples.c b/src/devices/sound/samples.c
index 5a47e5d27da..863e30f0832 100644
--- a/src/emu/sound/samples.c
+++ b/src/devices/sound/samples.c
@@ -595,13 +595,15 @@ bool samples_device::read_flac_sample(emu_file &file, sample_t &sample)
//-------------------------------------------------
// load_samples - load all the samples in our
// attached interface
+// Returns true when all samples were successfully read, else false
//-------------------------------------------------
-void samples_device::load_samples()
+bool samples_device::load_samples()
{
+ bool ok = true;
// if the user doesn't want to use samples, bail
if (!machine().options().samples())
- return;
+ return false;
// iterate over ourself
const char *basename = machine().basename();
@@ -631,6 +633,10 @@ void samples_device::load_samples()
if (filerr == FILERR_NONE)
read_sample(file, m_sample[index]);
else if (filerr == FILERR_NOT_FOUND)
- osd_printf_warning("Sample '%s' NOT FOUND\n", samplename);
+ {
+ logerror("%s: Sample '%s' NOT FOUND\n", tag(), samplename);
+ ok = false;
+ }
}
+ return ok;
}
diff --git a/src/emu/sound/samples.h b/src/devices/sound/samples.h
index 45770e127ed..24bb4541766 100644
--- a/src/emu/sound/samples.h
+++ b/src/devices/sound/samples.h
@@ -92,7 +92,6 @@ protected:
// device_sound_interface overrides
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
-private:
// internal classes
struct channel_t
{
@@ -111,7 +110,7 @@ private:
// internal helpers
static bool read_wav_sample(emu_file &file, sample_t &sample);
static bool read_flac_sample(emu_file &file, sample_t &sample);
- void load_samples();
+ bool load_samples();
// internal state
std::vector<channel_t> m_channel;
diff --git a/src/emu/sound/sb0400.c b/src/devices/sound/sb0400.c
index 343cb6aecaa..343cb6aecaa 100644
--- a/src/emu/sound/sb0400.c
+++ b/src/devices/sound/sb0400.c
diff --git a/src/emu/sound/sb0400.h b/src/devices/sound/sb0400.h
index aeb1ec43e61..aeb1ec43e61 100644
--- a/src/emu/sound/sb0400.h
+++ b/src/devices/sound/sb0400.h
diff --git a/src/emu/sound/scsp.c b/src/devices/sound/scsp.c
index b37284cc05c..df2a5ef0143 100644
--- a/src/emu/sound/scsp.c
+++ b/src/devices/sound/scsp.c
@@ -30,6 +30,7 @@
*/
#include "emu.h"
+#include "sound/cdda.h"
#include "scsp.h"
@@ -281,6 +282,8 @@ void scsp_device::MainCheckPendingIRQ(UINT16 irq_type)
{
m_mcipd |= irq_type;
+ //machine().scheduler().synchronize(); // force resync
+
if(m_mcipd & m_mcieb)
m_main_irq_cb(1);
else
@@ -695,8 +698,8 @@ void scsp_device::UpdateReg(address_space &space, int reg)
break;
case 8:
case 9:
- /* Only MSLC could be written. */
- m_udata.data[0x8/2] &= 0x7800;
+ /* Only MSLC could be written. */
+ m_udata.data[0x8/2] &= 0xf800; /**< @todo Docs claims MSLC to be 0x7800, but Jikkyou Parodius doesn't agree. */
break;
case 0x12:
case 0x13:
@@ -1010,8 +1013,10 @@ unsigned short scsp_device::r16(address_space &space, unsigned int addr)
v= *((unsigned short *) (m_DSP.EFREG+(addr-0xec0)/2));
else
{
- /*
- TODO: Kyuutenkai reads from 0xee0/0xee2, it's an undocumented "DSP internal buffer" register ...
+ /**!
+ @todo Kyuutenkai reads from 0xee0/0xee2, it's tied with EXTS register(s) also used for CD-Rom Player equalizer.
+ This port is actually an external parallel port, directly connected from the CD Block device, hence code is a bit of an hack.
+ Kyuutenkai code snippet for reference:
004A3A: 207C 0010 0EE0 movea.l #$100ee0, A0
004A40: 43EA 0090 lea ($90,A2), A1 ;A2=0x700
004A44: 6100 0254 bsr $4c9a
@@ -1044,11 +1049,11 @@ unsigned short scsp_device::r16(address_space &space, unsigned int addr)
004CB0: 4CDF 0002 movem.l (A7)+, D1
004CB4: 4E75 rts
*/
- logerror("SCSP: Reading from unmapped register %08x\n",addr);
+ logerror("SCSP: Reading from EXTS register %08x\n",addr);
if(addr == 0xee0)
- v= m_DSP.TEMP[0] >> 16;
+ v = space.machine().device<cdda_device>("cdda")->get_channel_volume(0);
if(addr == 0xee2)
- v= m_DSP.TEMP[0] & 0xffff;
+ v = space.machine().device<cdda_device>("cdda")->get_channel_volume(1);
}
}
return v;
diff --git a/src/emu/sound/scsp.h b/src/devices/sound/scsp.h
index bc104a85b68..bc104a85b68 100644
--- a/src/emu/sound/scsp.h
+++ b/src/devices/sound/scsp.h
diff --git a/src/emu/sound/scspdsp.c b/src/devices/sound/scspdsp.c
index 75b30cfe85a..75b30cfe85a 100644
--- a/src/emu/sound/scspdsp.c
+++ b/src/devices/sound/scspdsp.c
diff --git a/src/emu/sound/scspdsp.h b/src/devices/sound/scspdsp.h
index 319b3ebe099..319b3ebe099 100644
--- a/src/emu/sound/scspdsp.h
+++ b/src/devices/sound/scspdsp.h
diff --git a/src/emu/sound/segapcm.c b/src/devices/sound/segapcm.c
index 50e875bc474..50e875bc474 100644
--- a/src/emu/sound/segapcm.c
+++ b/src/devices/sound/segapcm.c
diff --git a/src/emu/sound/segapcm.h b/src/devices/sound/segapcm.h
index df7110bb7b2..df7110bb7b2 100644
--- a/src/emu/sound/segapcm.h
+++ b/src/devices/sound/segapcm.h
diff --git a/src/emu/sound/sid.c b/src/devices/sound/sid.c
index 375095e7401..375095e7401 100644
--- a/src/emu/sound/sid.c
+++ b/src/devices/sound/sid.c
diff --git a/src/emu/sound/sid.h b/src/devices/sound/sid.h
index 9fb8a6dc5bb..9fb8a6dc5bb 100644
--- a/src/emu/sound/sid.h
+++ b/src/devices/sound/sid.h
diff --git a/src/emu/sound/side6581.h b/src/devices/sound/side6581.h
index 9fb28ffd6d0..9fb28ffd6d0 100644
--- a/src/emu/sound/side6581.h
+++ b/src/devices/sound/side6581.h
diff --git a/src/emu/sound/sidenvel.c b/src/devices/sound/sidenvel.c
index 9b375c37b1f..9b375c37b1f 100644
--- a/src/emu/sound/sidenvel.c
+++ b/src/devices/sound/sidenvel.c
diff --git a/src/emu/sound/sidenvel.h b/src/devices/sound/sidenvel.h
index 72f303b8110..72f303b8110 100644
--- a/src/emu/sound/sidenvel.h
+++ b/src/devices/sound/sidenvel.h
diff --git a/src/emu/sound/sidvoice.c b/src/devices/sound/sidvoice.c
index 2dd42bcf3c4..2dd42bcf3c4 100644
--- a/src/emu/sound/sidvoice.c
+++ b/src/devices/sound/sidvoice.c
diff --git a/src/emu/sound/sidvoice.h b/src/devices/sound/sidvoice.h
index f0aebf50f08..f0aebf50f08 100644
--- a/src/emu/sound/sidvoice.h
+++ b/src/devices/sound/sidvoice.h
diff --git a/src/emu/sound/sidw6581.h b/src/devices/sound/sidw6581.h
index b37f7693c54..b37f7693c54 100644
--- a/src/emu/sound/sidw6581.h
+++ b/src/devices/sound/sidw6581.h
diff --git a/src/emu/sound/sidw8580.h b/src/devices/sound/sidw8580.h
index e1f0c10ec8e..e1f0c10ec8e 100644
--- a/src/emu/sound/sidw8580.h
+++ b/src/devices/sound/sidw8580.h
diff --git a/src/emu/sound/sn76477.c b/src/devices/sound/sn76477.c
index ea90e03b185..402db065d51 100644
--- a/src/emu/sound/sn76477.c
+++ b/src/devices/sound/sn76477.c
@@ -30,7 +30,7 @@
*****************************************************************************/
#include "emu.h"
-#include "wavwrite.h"
+#include "sound/wavwrite.h"
#include "sn76477.h"
diff --git a/src/emu/sound/sn76477.h b/src/devices/sound/sn76477.h
index 392beb13489..392beb13489 100644
--- a/src/emu/sound/sn76477.h
+++ b/src/devices/sound/sn76477.h
diff --git a/src/emu/sound/sn76496.c b/src/devices/sound/sn76496.c
index 7d0ccf50319..2f65392174d 100644
--- a/src/emu/sound/sn76496.c
+++ b/src/devices/sound/sn76496.c
@@ -110,6 +110,11 @@
27/06/2012: Michael Zapf
Converted to modern device, legacy devices were gradually removed afterwards.
+ 16/09/2015: Lord Nightmare
+ Fix PSG chips to have volume reg inited on reset to 0x0 based on tests by
+ ValleyBell. Made Sega PSG chips start up with register 0x3 selected (volume
+ for channel 2) based on hardware tests by Nemesis.
+
TODO: * Implement the TMS9919 - any difference to sn94624?
* Implement the T6W28; has registers in a weird order, needs writes
to be 'sanitized' first. Also is stereo, similar to game gear.
@@ -126,7 +131,7 @@
sn76496_base_device::sn76496_base_device(const machine_config &mconfig, device_type type, const char *name,
- const char *tag, int feedbackmask, int noisetap1, int noisetap2, bool negate, bool stereo, int clockdivider, int freq0,
+ const char *tag, int feedbackmask, int noisetap1, int noisetap2, bool negate, bool stereo, int clockdivider, int sega,
device_t *owner, UINT32 clock, const char *shortname, const char *source)
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
@@ -138,7 +143,7 @@ sn76496_base_device::sn76496_base_device(const machine_config &mconfig, device_t
m_negate(negate),
m_stereo(stereo),
m_clock_divider(clockdivider),
- m_freq0_is_max(freq0)
+ m_sega_style_psg(sega)
{
}
@@ -187,11 +192,11 @@ void sn76496_base_device::device_start()
for (i = 0; i < 4; i++) m_volume[i] = 0;
- m_last_register = 0;
+ m_last_register = m_sega_style_psg?3:0; // Sega VDP PSG defaults to selected period reg for 2nd channel
for (i = 0; i < 8; i+=2)
{
m_register[i] = 0;
- m_register[i + 1] = 0x0f; // volume = 0
+ m_register[i + 1] = 0x0; // volume = 0x0 (max volume) on reset; this needs testing on chips other than SN76489A and Sega VDP PSG
}
for (i = 0; i < 4; i++)
@@ -270,7 +275,7 @@ void sn76496_base_device::write(UINT8 data)
case 2: // tone 1: frequency
case 4: // tone 2: frequency
if ((data & 0x80) == 0) m_register[r] = (m_register[r] & 0x0f) | ((data & 0x3f) << 4);
- if ((m_register[r] != 0) || (!m_freq0_is_max)) m_period[c] = m_register[r];
+ if ((m_register[r] != 0) || (!m_sega_style_psg)) m_period[c] = m_register[r];
else m_period[c] = 0x400;
if (r == 4)
@@ -426,7 +431,7 @@ void sn76496_base_device::register_for_save_states()
save_item(NAME(m_count));
save_item(NAME(m_output));
save_item(NAME(m_cycles_to_ready));
-// save_item(NAME(m_freq0_is_max));
+// save_item(NAME(m_sega_style_psg));
}
const device_type SN76496 = &device_creator<sn76496_device>;
diff --git a/src/emu/sound/sn76496.h b/src/devices/sound/sn76496.h
index bedee2de532..f374b4d1293 100644
--- a/src/emu/sound/sn76496.h
+++ b/src/devices/sound/sn76496.h
@@ -24,7 +24,7 @@ class sn76496_base_device : public device_t, public device_sound_interface
{
public:
sn76496_base_device(const machine_config &mconfig, device_type type, const char *name, const char *tag,
- int feedbackmask, int noisetap1, int noisetap2, bool negate, bool stereo, int clockdivider, int freq0,
+ int feedbackmask, int noisetap1, int noisetap2, bool negate, bool stereo, int clockdivider, int sega,
device_t *owner, UINT32 clock, const char *shortname, const char *source);
// static configuration helpers
@@ -56,7 +56,7 @@ private:
const bool m_negate; // output negate flag
const bool m_stereo; // whether we're dealing with stereo or not
const INT32 m_clock_divider; // clock divider
- const bool m_freq0_is_max; // flag for if frequency zero acts as if it is one more than max (0x3ff+1) or if it acts like 0
+ const bool m_sega_style_psg; // flag for if frequency zero acts as if it is one more than max (0x3ff+1) or if it acts like 0; AND if the initial register is pointing to 0x3 instead of 0x0 AND if the volume reg is preloaded with 0xF instead of 0x0
INT32 m_vol_table[16]; // volume table (for 4-bit to db conversion)
INT32 m_register[8]; // registers
diff --git a/src/emu/sound/snkwave.c b/src/devices/sound/snkwave.c
index bc9cca6b59c..bc9cca6b59c 100644
--- a/src/emu/sound/snkwave.c
+++ b/src/devices/sound/snkwave.c
diff --git a/src/emu/sound/snkwave.h b/src/devices/sound/snkwave.h
index f613ca3ff5b..f613ca3ff5b 100644
--- a/src/emu/sound/snkwave.h
+++ b/src/devices/sound/snkwave.h
diff --git a/src/emu/sound/sp0250.c b/src/devices/sound/sp0250.c
index 5bf37c4e924..5bf37c4e924 100644
--- a/src/emu/sound/sp0250.c
+++ b/src/devices/sound/sp0250.c
diff --git a/src/emu/sound/sp0250.h b/src/devices/sound/sp0250.h
index 846a193cfa2..846a193cfa2 100644
--- a/src/emu/sound/sp0250.h
+++ b/src/devices/sound/sp0250.h
diff --git a/src/emu/sound/sp0256.c b/src/devices/sound/sp0256.c
index 31071bb247e..31071bb247e 100644
--- a/src/emu/sound/sp0256.c
+++ b/src/devices/sound/sp0256.c
diff --git a/src/emu/sound/sp0256.h b/src/devices/sound/sp0256.h
index f4ceb61bb68..f4ceb61bb68 100644
--- a/src/emu/sound/sp0256.h
+++ b/src/devices/sound/sp0256.h
diff --git a/src/emu/sound/speaker.c b/src/devices/sound/speaker.c
index 7872351a0e3..7872351a0e3 100644
--- a/src/emu/sound/speaker.c
+++ b/src/devices/sound/speaker.c
diff --git a/src/emu/sound/speaker.h b/src/devices/sound/speaker.h
index 67819769926..67819769926 100644
--- a/src/emu/sound/speaker.h
+++ b/src/devices/sound/speaker.h
diff --git a/src/emu/sound/spu.c b/src/devices/sound/spu.c
index ef5a81e0e82..ef5a81e0e82 100644
--- a/src/emu/sound/spu.c
+++ b/src/devices/sound/spu.c
diff --git a/src/emu/sound/spu.h b/src/devices/sound/spu.h
index 8a6727e4833..8a6727e4833 100644
--- a/src/emu/sound/spu.h
+++ b/src/devices/sound/spu.h
diff --git a/src/emu/sound/spu_tables.c b/src/devices/sound/spu_tables.c
index faa5719c4c6..faa5719c4c6 100644
--- a/src/emu/sound/spu_tables.c
+++ b/src/devices/sound/spu_tables.c
diff --git a/src/emu/sound/spureverb.c b/src/devices/sound/spureverb.c
index 3c784acbbee..3c784acbbee 100644
--- a/src/emu/sound/spureverb.c
+++ b/src/devices/sound/spureverb.c
diff --git a/src/emu/sound/spureverb.h b/src/devices/sound/spureverb.h
index 8a8cb040ba8..8a8cb040ba8 100644
--- a/src/emu/sound/spureverb.h
+++ b/src/devices/sound/spureverb.h
diff --git a/src/emu/sound/st0016.c b/src/devices/sound/st0016.c
index 99328a93b4d..99328a93b4d 100644
--- a/src/emu/sound/st0016.c
+++ b/src/devices/sound/st0016.c
diff --git a/src/emu/sound/st0016.h b/src/devices/sound/st0016.h
index dd23b0c9b7a..dd23b0c9b7a 100644
--- a/src/emu/sound/st0016.h
+++ b/src/devices/sound/st0016.h
diff --git a/src/emu/sound/t6721a.c b/src/devices/sound/t6721a.c
index 2cc9828f407..2cc9828f407 100644
--- a/src/emu/sound/t6721a.c
+++ b/src/devices/sound/t6721a.c
diff --git a/src/emu/sound/t6721a.h b/src/devices/sound/t6721a.h
index ff969fa60be..ff969fa60be 100644
--- a/src/emu/sound/t6721a.h
+++ b/src/devices/sound/t6721a.h
diff --git a/src/emu/sound/t6w28.c b/src/devices/sound/t6w28.c
index 25303ec4f1b..25303ec4f1b 100644
--- a/src/emu/sound/t6w28.c
+++ b/src/devices/sound/t6w28.c
diff --git a/src/emu/sound/t6w28.h b/src/devices/sound/t6w28.h
index 7bee03bbc6b..7bee03bbc6b 100644
--- a/src/emu/sound/t6w28.h
+++ b/src/devices/sound/t6w28.h
diff --git a/src/emu/sound/tc8830f.c b/src/devices/sound/tc8830f.c
index 824b9d78958..824b9d78958 100644
--- a/src/emu/sound/tc8830f.c
+++ b/src/devices/sound/tc8830f.c
diff --git a/src/emu/sound/tc8830f.h b/src/devices/sound/tc8830f.h
index a8b9a2c62f9..a8b9a2c62f9 100644
--- a/src/emu/sound/tc8830f.h
+++ b/src/devices/sound/tc8830f.h
diff --git a/src/emu/sound/tiaintf.c b/src/devices/sound/tiaintf.c
index 7cbfe6683e4..7cbfe6683e4 100644
--- a/src/emu/sound/tiaintf.c
+++ b/src/devices/sound/tiaintf.c
diff --git a/src/emu/sound/tiaintf.h b/src/devices/sound/tiaintf.h
index 0fd349b4037..0fd349b4037 100644
--- a/src/emu/sound/tiaintf.h
+++ b/src/devices/sound/tiaintf.h
diff --git a/src/emu/sound/tiasound.c b/src/devices/sound/tiasound.c
index 960520b6b79..960520b6b79 100644
--- a/src/emu/sound/tiasound.c
+++ b/src/devices/sound/tiasound.c
diff --git a/src/emu/sound/tiasound.h b/src/devices/sound/tiasound.h
index a73b63c9cbe..a73b63c9cbe 100644
--- a/src/emu/sound/tiasound.h
+++ b/src/devices/sound/tiasound.h
diff --git a/src/emu/sound/tms3615.c b/src/devices/sound/tms3615.c
index 3ccf9159b9d..3ccf9159b9d 100644
--- a/src/emu/sound/tms3615.c
+++ b/src/devices/sound/tms3615.c
diff --git a/src/emu/sound/tms3615.h b/src/devices/sound/tms3615.h
index f68a4718ef1..f68a4718ef1 100644
--- a/src/emu/sound/tms3615.h
+++ b/src/devices/sound/tms3615.h
diff --git a/src/emu/sound/tms36xx.c b/src/devices/sound/tms36xx.c
index c170b1305b1..18c55ce6235 100644
--- a/src/emu/sound/tms36xx.c
+++ b/src/devices/sound/tms36xx.c
@@ -375,7 +375,7 @@ void tms36xx_device::device_start()
m_decay[0], m_decay[1], m_decay[2],
m_decay[3], m_decay[4], m_decay[5]));
LOG(("TMS36xx speed %d\n", m_speed));
-
+
save_item(NAME(m_octave));
save_item(NAME(m_tune_counter));
save_item(NAME(m_note_counter));
diff --git a/src/emu/sound/tms36xx.h b/src/devices/sound/tms36xx.h
index b15e5908cc5..b15e5908cc5 100644
--- a/src/emu/sound/tms36xx.h
+++ b/src/devices/sound/tms36xx.h
diff --git a/src/emu/sound/tms5110.c b/src/devices/sound/tms5110.c
index c5861e2d7c6..17c52f2146c 100644
--- a/src/emu/sound/tms5110.c
+++ b/src/devices/sound/tms5110.c
@@ -14,7 +14,6 @@
Todo:
- implement CS
- - implement missing commands
- TMS5110_CMD_TEST_TALK is only partially implemented
TMS5100:
@@ -66,6 +65,56 @@
#include "emu.h"
#include "tms5110.h"
+static INT16 clip_analog(INT16 cliptemp);
+
+/* *****optional defines***** */
+
+/* Hacky improvements which don't match patent: */
+/* Interpolation shift logic:
+ * One of the following two lines should be used, and the other commented
+ * The second line is more accurate mathematically but not accurate to the patent
+ */
+#define INTERP_SHIFT >> m_coeff->interp_coeff[m_IP]
+//define INTERP_SHIFT / (1<<m_coeff->interp_coeff[m_IP])
+
+/* Other hacks */
+/* HACK: if defined, outputs the low 4 bits of the lattice filter to the i/o
+ * or clip logic, even though the real hardware doesn't do this, partially verified by decap */
+#undef ALLOW_4_LSB
+
+/* forces m_TALK active instantly whenever m_SPEN would be activated, causing speech delay to be reduced by up to one frame time */
+/* for some reason, this hack makes snmath behave marginally more accurate to hardware, though it does not match the patent */
+#define FAST_START_HACK 1
+
+
+/* *****configuration of chip connection stuff***** */
+/* must be defined; if 0, output the waveform as if it was tapped on the speaker pin as usual, if 1, output the waveform as if it was tapped on the i/o pin (volume is much lower in the latter case) */
+#define FORCE_DIGITAL 0
+
+
+/* *****debugging defines***** */
+#undef VERBOSE
+// above is general, somewhat obsolete, catch all for debugs which don't fit elsewhere
+#undef DEBUG_PARSE_FRAME_DUMP
+// above dumps each frame to stderr: be sure to select one of the options below if you define it!
+#undef DEBUG_PARSE_FRAME_DUMP_BIN
+// dumps each speech frame as binary
+#undef DEBUG_PARSE_FRAME_DUMP_HEX
+// dumps each speech frame as hex
+#undef DEBUG_FRAME_ERRORS
+// above dumps info if a frame ran out of data
+#undef DEBUG_COMMAND_DUMP
+// above dumps all command writes and PDC-related state machine changes, plus command writes to VSMs
+#undef DEBUG_GENERATION
+// above dumps debug information related to the sample generation loop, i.e. whether interpolation is inhibited or not, and what the current and target values for each frame are.
+#undef DEBUG_GENERATION_VERBOSE
+// above dumps MUCH MORE debug information related to the sample generation loop, namely the excitation, energy, pitch, k*, and output values for EVERY SINGLE SAMPLE during a frame.
+#undef DEBUG_LATTICE
+// above dumps the lattice filter state data each sample.
+#undef DEBUG_CLIP
+// above dumps info to stderr whenever the analog clip hardware is (or would be) clipping the signal.
+
+
#define MAX_SAMPLE_CHUNK 512
/* 6 Variants, from tms5110r.inc */
@@ -164,103 +213,121 @@ UINT8 tms5110_device::new_int_read()
void tms5110_device::register_for_save_states()
{
- save_item(NAME(m_fifo));
- save_item(NAME(m_fifo_head));
- save_item(NAME(m_fifo_tail));
- save_item(NAME(m_fifo_count));
+ save_item(NAME(m_variant));
save_item(NAME(m_PDC));
save_item(NAME(m_CTL_pins));
- save_item(NAME(m_speaking_now));
- save_item(NAME(m_talk_status));
+ save_item(NAME(m_SPEN));
+ save_item(NAME(m_TALK));
+ save_item(NAME(m_TALKD));
save_item(NAME(m_state));
- save_item(NAME(m_old_energy));
- save_item(NAME(m_old_pitch));
- save_item(NAME(m_old_k));
-
- save_item(NAME(m_new_energy));
- save_item(NAME(m_new_pitch));
- save_item(NAME(m_new_k));
+ save_item(NAME(m_address));
+ save_item(NAME(m_next_is_address));
+ save_item(NAME(m_schedule_dummy_read));
+ save_item(NAME(m_addr_bit));
+ save_item(NAME(m_CTL_buffer));
+ save_item(NAME(m_OLDE));
+ save_item(NAME(m_OLDP));
+
+ save_item(NAME(m_new_frame_energy_idx));
+ save_item(NAME(m_new_frame_pitch_idx));
+ save_item(NAME(m_new_frame_k_idx));
+#ifdef PERFECT_INTERPOLATION_HACK
+ save_item(NAME(m_old_frame_energy_idx));
+ save_item(NAME(m_old_frame_pitch_idx));
+ save_item(NAME(m_old_frame_k_idx));
+ save_item(NAME(m_old_zpar));
+ save_item(NAME(m_old_uv_zpar));
+#endif
save_item(NAME(m_current_energy));
save_item(NAME(m_current_pitch));
save_item(NAME(m_current_k));
- save_item(NAME(m_target_energy));
- save_item(NAME(m_target_pitch));
- save_item(NAME(m_target_k));
+ save_item(NAME(m_previous_energy));
- save_item(NAME(m_interp_count));
- save_item(NAME(m_sample_count));
+ save_item(NAME(m_subcycle));
+ save_item(NAME(m_subc_reload));
+ save_item(NAME(m_PC));
+ save_item(NAME(m_IP));
+ save_item(NAME(m_inhibit));
+ save_item(NAME(m_uv_zpar));
+ save_item(NAME(m_zpar));
+ save_item(NAME(m_pitch_zero));
save_item(NAME(m_pitch_count));
- save_item(NAME(m_next_is_address));
- save_item(NAME(m_address));
- save_item(NAME(m_schedule_dummy_read));
- save_item(NAME(m_addr_bit));
- save_item(NAME(m_CTL_buffer));
-
+ save_item(NAME(m_u));
save_item(NAME(m_x));
save_item(NAME(m_RNG));
-}
-
+ save_item(NAME(m_excitation_data));
+ save_item(NAME(m_digital_select));
+ save_item(NAME(m_speech_rom_bitnum));
-/******************************************************************************************
+ save_item(NAME(m_romclk_hack_timer_started));
+ save_item(NAME(m_romclk_hack_state));
+}
- FIFO_data_write -- handle bit data write to the TMS5110 (as a result of toggling M0 pin)
+/**********************************************************************************************
-******************************************************************************************/
-void tms5110_device::FIFO_data_write(int data)
-{
- /* add this bit to the FIFO */
- if (m_fifo_count < FIFO_SIZE)
- {
- m_fifo[m_fifo_tail] = (data&1); /* set bit to 1 or 0 */
+ printbits helper function: takes a long int input and prints the resulting bits to stderr
- m_fifo_tail = (m_fifo_tail + 1) % FIFO_SIZE;
- m_fifo_count++;
+***********************************************************************************************/
- if (DEBUG_5110) logerror("Added bit to FIFO (size=%2d)\n", m_fifo_count);
- }
- else
+#ifdef DEBUG_PARSE_FRAME_DUMP_BIN
+static void printbits(long data, int num)
+{
+ int i;
+ for (i=(num-1); i>=0; i--)
+ fprintf(stderr,"%0ld", (data>>i)&1);
+}
+#endif
+#ifdef DEBUG_PARSE_FRAME_DUMP_HEX
+static void printbits(long data, int num)
+{
+ switch((num-1)&0xFC)
{
- if (DEBUG_5110) logerror("Ran out of room in the FIFO!\n");
+ case 0:
+ fprintf(stderr,"%0lx", data);
+ break;
+ case 4:
+ fprintf(stderr,"%02lx", data);
+ break;
+ case 8:
+ fprintf(stderr,"%03lx", data);
+ break;
+ case 12:
+ fprintf(stderr,"%04lx", data);
+ break;
+ default:
+ fprintf(stderr,"%04lx", data);
+ break;
}
}
+#endif
/******************************************************************************************
- extract_bits -- extract a specific number of bits from the FIFO
+ extract_bits -- extract a specific number of bits from the VSM
******************************************************************************************/
int tms5110_device::extract_bits(int count)
{
int val = 0;
- if (DEBUG_5110) logerror("requesting %d bits from fifo: ", count);
- while (count--)
+ if (DEBUG_5110) logerror("requesting %d bits", count);
+ for (int i = 0; i < count; i++)
{
- val = (val << 1) | (m_fifo[m_fifo_head] & 1);
- m_fifo_count--;
- m_fifo_head = (m_fifo_head + 1) % FIFO_SIZE;
+ val = (val<<1) | new_int_read();
+ if (DEBUG_5110) logerror("bit read: %d\n", val&1);
}
if (DEBUG_5110) logerror("returning: %02x\n", val);
return val;
}
-void tms5110_device::request_bits(int no)
-{
- for (int i = 0; i < no; i++)
- {
- UINT8 data = new_int_read();
- if (DEBUG_5110) logerror("bit added to fifo: %d\n", data);
- FIFO_data_write(data);
- }
-}
void tms5110_device::perform_dummy_read()
{
@@ -284,309 +351,408 @@ void tms5110_device::perform_dummy_read()
void tms5110_device::process(INT16 *buffer, unsigned int size)
{
int buf_count=0;
- int i, interp_period, bitout;
- INT16 Y11, cliptemp;
-
- /* if we're not speaking, fill with nothingness */
- if (!m_speaking_now)
- goto empty;
-
- /* if we're to speak, but haven't started */
- if (!m_talk_status)
- {
- /* a "dummy read" is mentioned in the tms5200 datasheet */
- /* The Bagman speech roms data are organized in such a way that
- ** the bit at address 0 is NOT a speech data. The bit at address 1
- ** is the speech data. It seems that the tms5110 performs a dummy read
- ** just before it executes a SPEAK command.
- ** This has been moved to command logic ...
- ** perform_dummy_read();
- */
-
- /* clear out the new frame parameters (it will become old frame just before the first call to parse_frame() ) */
- m_new_energy = 0;
- m_new_pitch = 0;
- for (i = 0; i < m_coeff->num_k; i++)
- m_new_k[i] = 0;
-
- m_talk_status = 1;
- }
-
+ int i, bitout;
+ INT32 this_sample;
/* loop until the buffer is full or we've stopped speaking */
- while ((size > 0) && m_speaking_now)
+ while (size > 0)
{
- int current_val;
-
- /* if we're ready for a new frame */
- if ((m_interp_count == 0) && (m_sample_count == 0))
+ if(m_TALKD) // speaking
{
- /* remember previous frame */
- m_old_energy = m_new_energy;
- m_old_pitch = m_new_pitch;
- for (i = 0; i < m_coeff->num_k; i++)
- m_old_k[i] = m_new_k[i];
-
-
- /* if the old frame was a stop frame, exit and do not process any more frames */
- if (m_old_energy == COEFF_ENERGY_SENTINEL)
+ /* if we're ready for a new frame to be applied, i.e. when IP=0, PC=12, Sub=1
+ * (In reality, the frame was really loaded incrementally during the entire IP=0
+ * PC=x time period, but it doesn't affect anything until IP=0 PC=12 happens)
+ */
+ if ((m_IP == 0) && (m_PC == 12) && (m_subcycle == 1))
{
- if (DEBUG_5110) logerror("processing frame: stop frame\n");
- m_target_energy = m_current_energy = 0;
- m_speaking_now = m_talk_status = 0;
- m_interp_count = m_sample_count = m_pitch_count = 0;
- goto empty;
- }
-
-
- /* Parse a new frame into the new_energy, new_pitch and new_k[] */
- parse_frame();
-
+ // HACK for regression testing, be sure to comment out before release!
+ //m_RNG = 0x1234;
+ // end HACK
+
+#ifdef PERFECT_INTERPOLATION_HACK
+ /* remember previous frame energy, pitch, and coefficients */
+ m_old_frame_energy_idx = m_new_frame_energy_idx;
+ m_old_frame_pitch_idx = m_new_frame_pitch_idx;
+ for (i = 0; i < m_coeff->num_k; i++)
+ m_old_frame_k_idx[i] = m_new_frame_k_idx[i];
+#endif
- /* Set old target as new start of frame */
- m_current_energy = m_old_energy;
- m_current_pitch = m_old_pitch;
+ /* Parse a new frame into the new_target_energy, new_target_pitch and new_target_k[] */
+ parse_frame();
- for (i = 0; i < m_coeff->num_k; i++)
- m_current_k[i] = m_old_k[i];
+ /* if the new frame is a stop frame, unset both TALK and SPEN (via TCON). TALKD remains active while the energy is ramping to 0. */
+ if (NEW_FRAME_STOP_FLAG == 1)
+ {
+ m_TALK = m_SPEN = 0;
+ }
+ /* in all cases where interpolation would be inhibited, set the inhibit flag; otherwise clear it.
+ * Interpolation inhibit cases:
+ * Old frame was voiced, new is unvoiced
+ * Old frame was silence/zero energy, new has non-zero energy
+ * Old frame was unvoiced, new is voiced
+ * Old frame was unvoiced, new frame is silence/zero energy (non-existent on tms51xx rev D and F (present and working on tms52xx, present but buggy on tms51xx rev A and B))
+ */
+ if ( ((OLD_FRAME_UNVOICED_FLAG == 0) && (NEW_FRAME_UNVOICED_FLAG == 1))
+ || ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_UNVOICED_FLAG == 0))
+ || ((OLD_FRAME_SILENCE_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 0)) )
+ //|| ((m_inhibit == 1) && (OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 1)) ) //TMS51xx INTERP BUG1
+ //|| ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 1)) )
+ m_inhibit = 1;
+ else // normal frame, normal interpolation
+ m_inhibit = 0;
+
+#ifdef DEBUG_GENERATION
+ /* Debug info for current parsed frame */
+ fprintf(stderr, "OLDE: %d; NEWE: %d; OLDP: %d; NEWP: %d ", OLD_FRAME_SILENCE_FLAG, NEW_FRAME_SILENCE_FLAG, OLD_FRAME_UNVOICED_FLAG, NEW_FRAME_UNVOICED_FLAG);
+ fprintf(stderr,"Processing new frame: ");
+ if (m_inhibit == 0)
+ fprintf(stderr, "Normal Frame\n");
+ else
+ fprintf(stderr,"Interpolation Inhibited\n");
+ fprintf(stderr,"*** current Energy, Pitch and Ks = %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d\n",m_current_energy, m_current_pitch, m_current_k[0], m_current_k[1], m_current_k[2], m_current_k[3], m_current_k[4], m_current_k[5], m_current_k[6], m_current_k[7], m_current_k[8], m_current_k[9]);
+ fprintf(stderr,"*** target Energy(idx), Pitch, and Ks = %04d(%x),%04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d\n",
+ (m_coeff->energytable[m_new_frame_energy_idx] * (1-m_zpar)),
+ m_new_frame_energy_idx,
+ (m_coeff->pitchtable[m_new_frame_pitch_idx] * (1-m_zpar)),
+ (m_coeff->ktable[0][m_new_frame_k_idx[0]] * (1-m_zpar)),
+ (m_coeff->ktable[1][m_new_frame_k_idx[1]] * (1-m_zpar)),
+ (m_coeff->ktable[2][m_new_frame_k_idx[2]] * (1-m_zpar)),
+ (m_coeff->ktable[3][m_new_frame_k_idx[3]] * (1-m_zpar)),
+ (m_coeff->ktable[4][m_new_frame_k_idx[4]] * (1-m_uv_zpar)),
+ (m_coeff->ktable[5][m_new_frame_k_idx[5]] * (1-m_uv_zpar)),
+ (m_coeff->ktable[6][m_new_frame_k_idx[6]] * (1-m_uv_zpar)),
+ (m_coeff->ktable[7][m_new_frame_k_idx[7]] * (1-m_uv_zpar)),
+ (m_coeff->ktable[8][m_new_frame_k_idx[8]] * (1-m_uv_zpar)),
+ (m_coeff->ktable[9][m_new_frame_k_idx[9]] * (1-m_uv_zpar)) );
+#endif
- /* is this the stop (ramp down) frame? */
- if (m_new_energy == COEFF_ENERGY_SENTINEL)
+ }
+ else // Not a new frame, just interpolate the existing frame.
{
- /*logerror("processing frame: ramp down\n");*/
- m_target_energy = 0;
- m_target_pitch = m_old_pitch;
+ int inhibit_state = ((m_inhibit==1)&&(m_IP != 0)); // disable inhibit when reaching the last interp period, but don't overwrite the m_inhibit value
+#ifdef PERFECT_INTERPOLATION_HACK
+ int samples_per_frame = m_subc_reload?175:266; // either (13 A cycles + 12 B cycles) * 7 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 7 interps for SPKSLOW
+ //int samples_per_frame = m_subc_reload?200:304; // either (13 A cycles + 12 B cycles) * 8 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 8 interps for SPKSLOW
+ int current_sample = (m_subcycle - m_subc_reload)+(m_PC*(3-m_subc_reload))+((m_subc_reload?25:38)*((m_IP-1)&7));
+ //fprintf(stderr, "CS: %03d", current_sample);
+ // reset the current energy, pitch, etc to what it was at frame start
+ m_current_energy = (m_coeff->energytable[m_old_frame_energy_idx] * (1-m_old_zpar));
+ m_current_pitch = (m_coeff->pitchtable[m_old_frame_pitch_idx] * (1-m_old_zpar));
for (i = 0; i < m_coeff->num_k; i++)
- m_target_k[i] = m_old_k[i];
+ m_current_k[i] = (m_coeff->ktable[i][m_old_frame_k_idx[i]] * (1-((i<4)?m_old_zpar:m_old_uv_zpar)));
+ // now adjust each value to be exactly correct for each of the samples per frame
+ if (m_IP != 0) // if we're still interpolating...
+ {
+ m_current_energy = (m_current_energy + (((m_coeff->energytable[m_new_frame_energy_idx] - m_current_energy)*(1-inhibit_state))*current_sample)/samples_per_frame)*(1-m_zpar);
+ m_current_pitch = (m_current_pitch + (((m_coeff->pitchtable[m_new_frame_pitch_idx] - m_current_pitch)*(1-inhibit_state))*current_sample)/samples_per_frame)*(1-m_zpar);
+ for (i = 0; i < m_coeff->num_k; i++)
+ m_current_k[i] = (m_current_k[i] + (((m_coeff->ktable[i][m_new_frame_k_idx[i]] - m_current_k[i])*(1-inhibit_state))*current_sample)/samples_per_frame)*(1-((i<4)?m_zpar:m_uv_zpar));
+ }
+ else // we're done, play this frame for 1/8 frame.
+ {
+ if (m_subcycle == 2) m_pitch_zero = 0; // this reset happens around the second subcycle during IP=0
+ m_current_energy = (m_coeff->energytable[m_new_frame_energy_idx] * (1-m_zpar));
+ m_current_pitch = (m_coeff->pitchtable[m_new_frame_pitch_idx] * (1-m_zpar));
+ for (i = 0; i < m_coeff->num_k; i++)
+ m_current_k[i] = (m_coeff->ktable[i][m_new_frame_k_idx[i]] * (1-((i<4)?m_zpar:m_uv_zpar)));
+ }
+#else
+ //Updates to parameters only happen on subcycle '2' (B cycle) of PCs.
+ if (m_subcycle == 2)
+ {
+ switch(m_PC)
+ {
+ case 0: /* PC = 0, B cycle, write updated energy */
+ if (m_IP==0) m_pitch_zero = 0; // this reset happens around the second subcycle during IP=0
+ m_current_energy = (m_current_energy + (((m_coeff->energytable[m_new_frame_energy_idx] - m_current_energy)*(1-inhibit_state)) INTERP_SHIFT))*(1-m_zpar);
+ break;
+ case 1: /* PC = 1, B cycle, write updated pitch */
+ m_current_pitch = (m_current_pitch + (((m_coeff->pitchtable[m_new_frame_pitch_idx] - m_current_pitch)*(1-inhibit_state)) INTERP_SHIFT))*(1-m_zpar);
+ break;
+ case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11:
+ /* PC = 2 through 11, B cycle, write updated K1 through K10 */
+ m_current_k[m_PC-2] = (m_current_k[m_PC-2] + (((m_coeff->ktable[m_PC-2][m_new_frame_k_idx[m_PC-2]] - m_current_k[m_PC-2])*(1-inhibit_state)) INTERP_SHIFT))*(1-(((m_PC-2)<4)?m_zpar:m_uv_zpar));
+ break;
+ case 12: /* PC = 12 */
+ /* we should NEVER reach this point, PC=12 doesn't have a subcycle 2 */
+ break;
+ }
+ }
+#endif
}
- else if ((m_old_energy == 0) && (m_new_energy != 0)) /* was the old frame a zero-energy frame? */
+
+ // calculate the output
+ if (OLD_FRAME_UNVOICED_FLAG == 1)
{
- /* if so, and if the new frame is non-zero energy frame then the new parameters
- should become our current and target parameters immediately,
- i.e. we should NOT interpolate them slowly in.
- */
-
- /*logerror("processing non-zero energy frame after zero-energy frame\n");*/
- m_target_energy = m_new_energy;
- m_target_pitch = m_current_pitch = m_new_pitch;
- for (i = 0; i < m_coeff->num_k; i++)
- m_target_k[i] = m_current_k[i] = m_new_k[i];
+ // generate unvoiced samples here
+ if (m_RNG & 1)
+ m_excitation_data = ~0x3F; /* according to the patent it is (either + or -) half of the maximum value in the chirp table, so either 01000000(0x40) or 11000000(0xC0)*/
+ else
+ m_excitation_data = 0x40;
}
- else if ((m_old_pitch == 0) && (m_new_pitch != 0)) /* is this a change from unvoiced to voiced frame ? */
+ else /* (OLD_FRAME_UNVOICED_FLAG == 0) */
{
- /* if so, then the new parameters should become our current and target parameters immediately,
- i.e. we should NOT interpolate them slowly in.
- */
- /*if (DEBUG_5110) logerror("processing frame: UNVOICED->VOICED frame change\n");*/
- m_target_energy = m_new_energy;
- m_target_pitch = m_current_pitch = m_new_pitch;
- for (i = 0; i < m_coeff->num_k; i++)
- m_target_k[i] = m_current_k[i] = m_new_k[i];
+ // generate voiced samples here
+ /* US patent 4331836 Figure 14B shows, and logic would hold, that a pitch based chirp
+ * function has a chirp/peak and then a long chain of zeroes.
+ * The last entry of the chirp rom is at address 0b110011 (51d), the 52nd sample,
+ * and if the address reaches that point the ADDRESS incrementer is
+ * disabled, forcing all samples beyond 51d to be == 51d
+ */
+ if (m_pitch_count >= 51)
+ m_excitation_data = (INT8)m_coeff->chirptable[51];
+ else /*m_pitch_count < 51*/
+ m_excitation_data = (INT8)m_coeff->chirptable[m_pitch_count];
}
- else if ((m_old_pitch != 0) && (m_new_pitch == 0)) /* is this a change from voiced to unvoiced frame ? */
+
+ // Update LFSR *20* times every sample (once per T cycle), like patent shows
+ for (i=0; i<20; i++)
{
- /* if so, then the new parameters should become our current and target parameters immediately,
- i.e. we should NOT interpolate them slowly in.
- */
- /*if (DEBUG_5110) logerror("processing frame: VOICED->UNVOICED frame change\n");*/
- m_target_energy = m_new_energy;
- m_target_pitch = m_current_pitch = m_new_pitch;
- for (i = 0; i < m_coeff->num_k; i++)
- m_target_k[i] = m_current_k[i] = m_new_k[i];
+ bitout = ((m_RNG >> 12) & 1) ^
+ ((m_RNG >> 3) & 1) ^
+ ((m_RNG >> 2) & 1) ^
+ ((m_RNG >> 0) & 1);
+ m_RNG <<= 1;
+ m_RNG |= bitout;
}
- else
+ this_sample = lattice_filter(); /* execute lattice filter */
+#ifdef DEBUG_GENERATION_VERBOSE
+ //fprintf(stderr,"C:%01d; ",m_subcycle);
+ fprintf(stderr,"IP:%01d PC:%02d X:%04d E:%03d P:%03d Pc:%03d ",m_IP, m_PC, m_excitation_data, m_current_energy, m_current_pitch, m_pitch_count);
+ //fprintf(stderr,"X:%04d E:%03d P:%03d Pc:%03d ", m_excitation_data, m_current_energy, m_current_pitch, m_pitch_count);
+ for (i=0; i<10; i++)
+ fprintf(stderr,"K%d:%04d ", i+1, m_current_k[i]);
+ fprintf(stderr,"Out:%06d ", this_sample);
+//#ifdef PERFECT_INTERPOLATION_HACK
+// fprintf(stderr,"%d%d%d%d",m_old_zpar,m_zpar,m_old_uv_zpar,m_uv_zpar);
+//#else
+// fprintf(stderr,"x%dx%d",m_zpar,m_uv_zpar);
+//#endif
+ fprintf(stderr,"\n");
+#endif
+ /* next, force result to 14 bits (since its possible that the addition at the final (k1) stage of the lattice overflowed) */
+ while (this_sample > 16383) this_sample -= 32768;
+ while (this_sample < -16384) this_sample += 32768;
+ if (m_digital_select == 0) // analog SPK pin output is only 8 bits, with clipping
+ buffer[buf_count] = clip_analog(this_sample);
+ else // digital I/O pin output is 12 bits
{
- /*logerror("processing frame: Normal\n");*/
- /*logerror("*** Energy = %d\n",current_energy);*/
- /*logerror("proc: %d %d\n",last_fbuf_head,fbuf_head);*/
+#ifdef ALLOW_4_LSB
+ // input: ssss ssss ssss ssss ssnn nnnn nnnn nnnn
+ // N taps: ^ = 0x2000;
+ // output: ssss ssss ssss ssss snnn nnnn nnnn nnnN
+ buffer[buf_count] = (this_sample<<1)|((this_sample&0x2000)>>13);
+#else
+ this_sample &= ~0xF;
+ // input: ssss ssss ssss ssss ssnn nnnn nnnn 0000
+ // N taps: ^^ ^^^ = 0x3E00;
+ // output: ssss ssss ssss ssss snnn nnnn nnnN NNNN
+ buffer[buf_count] = (this_sample<<1)|((this_sample&0x3E00)>>9);
+#endif
+ }
+ // Update all counts
- m_target_energy = m_new_energy;
- m_target_pitch = m_new_pitch;
- for (i = 0; i < m_coeff->num_k; i++)
- m_target_k[i] = m_new_k[i];
+ m_subcycle++;
+ if ((m_subcycle == 2) && (m_PC == 12)) // RESETF3
+ {
+ /* Circuit 412 in the patent acts a reset, resetting the pitch counter to 0
+ * if INHIBIT was true during the most recent frame transition.
+ * The exact time this occurs is betwen IP=7, PC=12 sub=0, T=t12
+ * and m_IP = 0, PC=0 sub=0, T=t12, a period of exactly 20 cycles,
+ * which overlaps the time OLDE and OLDP are updated at IP=7 PC=12 T17
+ * (and hence INHIBIT itself 2 t-cycles later).
+ * According to testing the pitch zeroing lasts approximately 2 samples.
+ * We set the zeroing latch here, and unset it on PC=1 in the generator.
+ */
+ if ((m_IP == 7)&&(m_inhibit==1)) m_pitch_zero = 1;
+ if (m_IP == 7) // RESETL4
+ {
+ // Latch OLDE and OLDP
+ //if (OLD_FRAME_SILENCE_FLAG) m_uv_zpar = 0; // TMS51xx INTERP BUG2
+ OLD_FRAME_SILENCE_FLAG = NEW_FRAME_SILENCE_FLAG; // m_OLDE
+ OLD_FRAME_UNVOICED_FLAG = NEW_FRAME_UNVOICED_FLAG; // m_OLDP
+ /* if TALK was clear last frame, halt speech now, since TALKD (latched from TALK on new frame) just went inactive. */
+#ifdef DEBUG_GENERATION
+ if ((!m_TALK) && (!m_SPEN))
+ fprintf(stderr,"tms5110_process: processing frame: TALKD = 0 caused by stop frame, halting speech.\n");
+#endif
+ m_TALKD = m_TALK; // TALKD is latched from TALK
+ if ((!m_TALK) && m_SPEN) m_TALK = 1; // TALK is only activated if it wasn't already active, if m_SPEN is active, and if we're in RESETL4 (which we are).
+ }
+ m_subcycle = m_subc_reload;
+ m_PC = 0;
+ m_IP++;
+ m_IP&=0x7;
}
- }
- else
- {
- interp_period = m_sample_count / 25;
- switch(m_interp_count)
+ else if (m_subcycle == 3)
{
- /* PC=X X cycle, rendering change (change for next cycle which chip is actually doing) */
- case 0: /* PC=0, A cycle, nothing happens (calc energy) */
- break;
- case 1: /* PC=0, B cycle, nothing happens (update energy) */
- break;
- case 2: /* PC=1, A cycle, update energy (calc pitch) */
- m_current_energy += ((m_target_energy - m_current_energy) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 3: /* PC=1, B cycle, nothing happens (update pitch) */
- break;
- case 4: /* PC=2, A cycle, update pitch (calc K1) */
- m_current_pitch += ((m_target_pitch - m_current_pitch) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 5: /* PC=2, B cycle, nothing happens (update K1) */
- break;
- case 6: /* PC=3, A cycle, update K1 (calc K2) */
- m_current_k[0] += ((m_target_k[0] - m_current_k[0]) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 7: /* PC=3, B cycle, nothing happens (update K2) */
- break;
- case 8: /* PC=4, A cycle, update K2 (calc K3) */
- m_current_k[1] += ((m_target_k[1] - m_current_k[1]) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 9: /* PC=4, B cycle, nothing happens (update K3) */
- break;
- case 10: /* PC=5, A cycle, update K3 (calc K4) */
- m_current_k[2] += ((m_target_k[2] - m_current_k[2]) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 11: /* PC=5, B cycle, nothing happens (update K4) */
- break;
- case 12: /* PC=6, A cycle, update K4 (calc K5) */
- m_current_k[3] += ((m_target_k[3] - m_current_k[3]) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 13: /* PC=6, B cycle, nothing happens (update K5) */
- break;
- case 14: /* PC=7, A cycle, update K5 (calc K6) */
- m_current_k[4] += ((m_target_k[4] - m_current_k[4]) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 15: /* PC=7, B cycle, nothing happens (update K6) */
- break;
- case 16: /* PC=8, A cycle, update K6 (calc K7) */
- m_current_k[5] += ((m_target_k[5] - m_current_k[5]) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 17: /* PC=8, B cycle, nothing happens (update K7) */
- break;
- case 18: /* PC=9, A cycle, update K7 (calc K8) */
- m_current_k[6] += ((m_target_k[6] - m_current_k[6]) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 19: /* PC=9, B cycle, nothing happens (update K8) */
- break;
- case 20: /* PC=10, A cycle, update K8 (calc K9) */
- m_current_k[7] += ((m_target_k[7] - m_current_k[7]) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 21: /* PC=10, B cycle, nothing happens (update K9) */
- break;
- case 22: /* PC=11, A cycle, update K9 (calc K10) */
- m_current_k[8] += ((m_target_k[8] - m_current_k[8]) >> m_coeff->interp_coeff[interp_period]);
- break;
- case 23: /* PC=11, B cycle, nothing happens (update K10) */
- break;
- case 24: /* PC=12, A cycle, update K10 (do nothing) */
- m_current_k[9] += ((m_target_k[9] - m_current_k[9]) >> m_coeff->interp_coeff[interp_period]);
- break;
+ m_subcycle = m_subc_reload;
+ m_PC++;
}
+ m_pitch_count++;
+ if ((m_pitch_count >= m_current_pitch)||(m_pitch_zero == 1)) m_pitch_count = 0;
+ m_pitch_count &= 0x1FF;
}
-
-
- /* calculate the output */
-
- if (m_current_energy == 0)
- {
- /* generate silent samples here */
- current_val = 0x00;
- }
- else if (m_old_pitch == 0)
- {
- /* generate unvoiced samples here */
- if (m_RNG&1)
- current_val = -64; /* according to the patent it is (either + or -) half of the maximum value in the chirp table */
- else
- current_val = 64;
-
- }
- else
- {
- // generate voiced samples here
- /* US patent 4331836 Figure 14B shows, and logic would hold, that a pitch based chirp
- * function has a chirp/peak and then a long chain of zeroes.
- * The last entry of the chirp rom is at address 0b110011 (51d), the 52nd sample,
- * and if the address reaches that point the ADDRESS incrementer is
- * disabled, forcing all samples beyond 51d to be == 51d
- */
- if (m_pitch_count >= 51)
- current_val = (INT8)m_coeff->chirptable[51];
- else /*m_pitch_count < 51*/
- current_val = (INT8)m_coeff->chirptable[m_pitch_count];
- }
-
- /* Update LFSR *20* times every sample, like patent shows */
- for (i=0; i<20; i++)
+ else // m_TALKD == 0
{
- bitout = ((m_RNG>>12)&1) ^
- ((m_RNG>>10)&1) ^
- ((m_RNG>> 9)&1) ^
- ((m_RNG>> 0)&1);
- m_RNG >>= 1;
- m_RNG |= (bitout<<12);
+ m_subcycle++;
+ if ((m_subcycle == 2) && (m_PC == 12)) // RESETF3
+ {
+ if (m_IP == 7) // RESETL4
+ {
+ m_TALKD = m_TALK; // TALKD is latched from TALK
+ if ((!m_TALK) && m_SPEN) m_TALK = 1; // TALK is only activated if it wasn't already active, if m_SPEN is active, and if we're in RESETL4 (which we are).
+ }
+ m_subcycle = m_subc_reload;
+ m_PC = 0;
+ m_IP++;
+ m_IP&=0x7;
+ }
+ else if (m_subcycle == 3)
+ {
+ m_subcycle = m_subc_reload;
+ m_PC++;
+ }
+ buffer[buf_count] = -1; /* should be just -1; actual chip outputs -1 every idle sample; (cf note in data sheet, p 10, table 4) */
}
+ buf_count++;
+ size--;
+ }
+}
- /* Lattice filter here */
-
- Y11 = (current_val * 64 * m_current_energy) / 512;
+/**********************************************************************************************
- for (i = m_coeff->num_k - 1; i >= 0; i--)
- {
- Y11 = Y11 - ((m_current_k[i] * m_x[i]) / 512);
- m_x[i+1] = m_x[i] + ((m_current_k[i] * Y11) / 512);
- }
+ clip_analog -- clips the 14 bit return value from the lattice filter to its final 10 bit value (-512 to 511), and upshifts/range extends this to 16 bits
- m_x[0] = Y11;
+***********************************************************************************************/
+static INT16 clip_analog(INT16 cliptemp)
+{
+ /* clipping, just like the patent shows:
+ * the top 10 bits of this result are visible on the digital output IO pin.
+ * next, if the top 3 bits of the 14 bit result are all the same, the lowest of those 3 bits plus the next 7 bits are the signed analog output, otherwise the low bits are all forced to match the inverse of the topmost bit, i.e.:
+ * 1x xxxx xxxx xxxx -> 0b10000000
+ * 11 1bcd efgh xxxx -> 0b1bcdefgh
+ * 00 0bcd efgh xxxx -> 0b0bcdefgh
+ * 0x xxxx xxxx xxxx -> 0b01111111
+ */
+#ifdef DEBUG_CLIP
+ if ((cliptemp > 2047) || (cliptemp < -2048)) fprintf(stderr,"clipping cliptemp to range; was %d\n", cliptemp);
+#endif
+ if (cliptemp > 2047) cliptemp = 2047;
+ else if (cliptemp < -2048) cliptemp = -2048;
+ /* at this point the analog output is tapped */
+#ifdef ALLOW_4_LSB
+ // input: ssss snnn nnnn nnnn
+ // N taps: ^^^ ^ = 0x0780
+ // output: snnn nnnn nnnn NNNN
+ return (cliptemp << 4)|((cliptemp&0x780)>>7); // upshift and range adjust
+#else
+ cliptemp &= ~0xF;
+ // input: ssss snnn nnnn 0000
+ // N taps: ^^^ ^^^^ = 0x07F0
+ // P taps: ^ = 0x0400
+ // output: snnn nnnn NNNN NNNP
+ return (cliptemp << 4)|((cliptemp&0x7F0)>>3)|((cliptemp&0x400)>>10); // upshift and range adjust
+#endif
+}
- /* clipping & wrapping, just like the patent */
- /* YL10 - YL4 ==> DA6 - DA0 */
- cliptemp = Y11 / 16;
+/**********************************************************************************************
- /* M58817 seems to be different */
- if (m_coeff->subtype & (SUBTYPE_M58817))
- cliptemp = cliptemp / 2;
+ matrix_multiply -- does the proper multiply and shift
+ a is the k coefficient and is clamped to 10 bits (9 bits plus a sign)
+ b is the running result and is clamped to 14 bits.
+ output is 14 bits, but note the result LSB bit is always 1.
+ Because the low 4 bits of the result are trimmed off before
+ output, this makes almost no difference in the computation.
- if (cliptemp > 511) cliptemp = -512 + (cliptemp-511);
- else if (cliptemp < -512) cliptemp = 511 - (cliptemp+512);
+**********************************************************************************************/
+static INT32 matrix_multiply(INT32 a, INT32 b)
+{
+ INT32 result;
+ while (a>511) { a-=1024; }
+ while (a<-512) { a+=1024; }
+ while (b>16383) { b-=32768; }
+ while (b<-16384) { b+=32768; }
+ result = ((a*b)>>9)|1;//&(~1);
+#ifdef VERBOSE
+ if (result>16383) fprintf(stderr,"matrix multiplier overflowed! a: %x, b: %x, result: %x", a, b, result);
+ if (result<-16384) fprintf(stderr,"matrix multiplier underflowed! a: %x, b: %x, result: %x", a, b, result);
+#endif
+ return result;
+}
- if (cliptemp > 127)
- buffer[buf_count] = 127*256;
- else if (cliptemp < -128)
- buffer[buf_count] = -128*256;
- else
- buffer[buf_count] = cliptemp *256;
+/**********************************************************************************************
- /* Update all counts */
+ lattice_filter -- executes one 'full run' of the lattice filter on a specific byte of
+ excitation data, and specific values of all the current k constants, and returns the
+ resulting sample.
- m_sample_count = (m_sample_count + 1) % 200;
+***********************************************************************************************/
- if (m_current_pitch != 0)
+INT32 tms5110_device::lattice_filter()
+{
+ // Lattice filter here
+ // Aug/05/07: redone as unrolled loop, for clarity - LN
+ /* Originally Copied verbatim from table I in US patent 4,209,804, now updated to be in same order as the actual chip does it, not that it matters.
+ notation equivalencies from table:
+ Yn(i) == m_u[n-1]
+ Kn = m_current_k[n-1]
+ bn = m_x[n-1]
+ */
+ /*
+ int ep = matrix_multiply(m_previous_energy, (m_excitation_data<<6)); //Y(11)
+ m_u[10] = ep;
+ for (int i = 0; i < 10; i++)
+ {
+ int ii = 10-i; // for m = 10, this would be 11 - i, and since i is from 1 to 10, then ii ranges from 10 to 1
+ //int jj = ii+1; // this variable, even on the fortran version, is never used. it probably was intended to be used on the two lines below the next one to save some redundant additions on each.
+ ep = ep - (((m_current_k[ii-1] * m_x[ii-1])>>9)|1); // subtract reflection from lower stage 'top of lattice'
+ m_u[ii-1] = ep;
+ m_x[ii] = m_x[ii-1] + (((m_current_k[ii-1] * ep)>>9)|1); // add reflection from upper stage 'bottom of lattice'
+ }
+ m_x[0] = ep; // feed the last section of the top of the lattice directly to the bottom of the lattice
+ */
+ m_u[10] = matrix_multiply(m_previous_energy, (m_excitation_data<<6)); //Y(11)
+ m_u[9] = m_u[10] - matrix_multiply(m_current_k[9], m_x[9]);
+ m_u[8] = m_u[9] - matrix_multiply(m_current_k[8], m_x[8]);
+ m_u[7] = m_u[8] - matrix_multiply(m_current_k[7], m_x[7]);
+ m_u[6] = m_u[7] - matrix_multiply(m_current_k[6], m_x[6]);
+ m_u[5] = m_u[6] - matrix_multiply(m_current_k[5], m_x[5]);
+ m_u[4] = m_u[5] - matrix_multiply(m_current_k[4], m_x[4]);
+ m_u[3] = m_u[4] - matrix_multiply(m_current_k[3], m_x[3]);
+ m_u[2] = m_u[3] - matrix_multiply(m_current_k[2], m_x[2]);
+ m_u[1] = m_u[2] - matrix_multiply(m_current_k[1], m_x[1]);
+ m_u[0] = m_u[1] - matrix_multiply(m_current_k[0], m_x[0]);
+ m_x[9] = m_x[8] + matrix_multiply(m_current_k[8], m_u[8]);
+ m_x[8] = m_x[7] + matrix_multiply(m_current_k[7], m_u[7]);
+ m_x[7] = m_x[6] + matrix_multiply(m_current_k[6], m_u[6]);
+ m_x[6] = m_x[5] + matrix_multiply(m_current_k[5], m_u[5]);
+ m_x[5] = m_x[4] + matrix_multiply(m_current_k[4], m_u[4]);
+ m_x[4] = m_x[3] + matrix_multiply(m_current_k[3], m_u[3]);
+ m_x[3] = m_x[2] + matrix_multiply(m_current_k[2], m_u[2]);
+ m_x[2] = m_x[1] + matrix_multiply(m_current_k[1], m_u[1]);
+ m_x[1] = m_x[0] + matrix_multiply(m_current_k[0], m_u[0]);
+ m_x[0] = m_u[0];
+ m_previous_energy = m_current_energy;
+#ifdef DEBUG_LATTICE
+ int i;
+ fprintf(stderr,"V:%04d ", m_u[10]);
+ for (i = 9; i >= 0; i--)
{
- m_pitch_count++;
- if (m_pitch_count >= m_current_pitch)
- m_pitch_count = 0;
+ fprintf(stderr,"Y%d:%04d ", i+1, m_u[i]);
+ fprintf(stderr,"b%d:%04d ", i+1, m_x[i]);
+ if ((i % 5) == 0) fprintf(stderr,"\n");
}
- else
- m_pitch_count = 0;
-
- m_interp_count = (m_interp_count + 1) % 25;
-
- buf_count++;
- size--;
- }
-
-empty:
-
- while (size > 0)
- {
- m_sample_count = (m_sample_count + 1) % 200;
- m_interp_count = (m_interp_count + 1) % 25;
-
- buffer[buf_count] = 0x00;
- buf_count++;
- size--;
- }
+#endif
+ return m_u[0];
}
+
/******************************************************************************************
PDC_set -- set Processor Data Clock. Execute CTL_pins command on hi-lo transition.
@@ -600,7 +766,9 @@ void tms5110_device::PDC_set(int data)
m_PDC = data & 0x1;
if (m_PDC == 0) /* toggling 1->0 processes command on CTL_pins */
{
- if (DEBUG_5110) logerror("PDC falling edge: ");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"PDC falling edge(%02X): ",m_state);
+#endif
/* first pdc toggles output, next toggles input */
switch (m_state)
{
@@ -608,26 +776,36 @@ void tms5110_device::PDC_set(int data)
/* continue */
break;
case CTL_STATE_NEXT_TTALK_OUTPUT:
- if (DEBUG_5110) logerror("Switching CTL bus direction to output for Test Talk\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"Switching CTL bus direction to output for Test Talk\n");
+#endif
m_state = CTL_STATE_TTALK_OUTPUT;
return;
case CTL_STATE_TTALK_OUTPUT:
- if (DEBUG_5110) logerror("Switching CTL bus direction back to input from Test Talk\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"Switching CTL bus direction back to input from Test Talk\n");
+#endif
m_state = CTL_STATE_INPUT;
return;
case CTL_STATE_NEXT_OUTPUT:
- if (DEBUG_5110) logerror("Switching CTL bus direction for Read Bit Buffer Output\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"Switching CTL bus direction for Read Bit Buffer Output\n");
+#endif
m_state = CTL_STATE_OUTPUT;
return;
case CTL_STATE_OUTPUT:
- if (DEBUG_5110) logerror("Switching CTL bus direction back to input from Read Bit Buffer Output\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"Switching CTL bus direction back to input from Read Bit Buffer Output\n");
+#endif
m_state = CTL_STATE_INPUT;
return;
}
/* the only real commands we handle now are SPEAK and RESET */
if (m_next_is_address)
{
- if (DEBUG_5110) logerror("Loading address nybble %02x to VSMs\n", m_CTL_pins);
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"Loading address nybble %02x to VSMs\n", m_CTL_pins);
+#endif
m_next_is_address = FALSE;
m_address = m_address | ((m_CTL_pins & 0x0F)<<m_addr_bit);
m_addr_bit = (m_addr_bit + 4) % 12;
@@ -636,40 +814,65 @@ void tms5110_device::PDC_set(int data)
}
else
{
- if (DEBUG_5110) logerror("Got command nybble %02x: ", m_CTL_pins);
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"Got command nybble %02x: ", m_CTL_pins);
+#endif
switch (m_CTL_pins & 0xe) /*CTL1 - don't care*/
{
case TMS5110_CMD_RESET:
- if (DEBUG_5110) logerror("RESET\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"RESET\n");
+#endif
perform_dummy_read();
reset();
break;
case TMS5110_CMD_LOAD_ADDRESS:
- if (DEBUG_5110) logerror("LOAD ADDRESS\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"LOAD ADDRESS\n");
+#endif
m_next_is_address = TRUE;
break;
case TMS5110_CMD_OUTPUT:
- if (DEBUG_5110) logerror("OUTPUT (from read-bit buffer)\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"OUTPUT (from read-bit buffer)\n");
+#endif
m_state = CTL_STATE_NEXT_OUTPUT;
break;
case TMS5110_CMD_SPKSLOW:
- if (DEBUG_5110) logerror("SPKSLOW (todo: this isn't implemented right yet)\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"SPKSLOW\n");
+#endif
perform_dummy_read();
- m_speaking_now = 1;
- //should FIFO be cleared now ????? there is no fifo! the fifo is a lie!
+ m_SPEN = 1; /* start immediately */
+#ifdef FAST_START_HACK
+ m_TALK = 1;
+#endif
+ /* clear out variables before speaking */
+ m_zpar = 1; // zero all the parameters
+ m_uv_zpar = 1; // zero k4-k10 as well
+ m_OLDE = 1; // 'silence/zpar' frames are zero energy
+ m_OLDP = 1; // 'silence/zpar' frames are zero pitch
+#ifdef PERFECT_INTERPOLATION_HACK
+ m_old_zpar = 1; // zero all the old parameters
+ m_old_uv_zpar = 1; // zero old k4-k10 as well
+#endif
+ m_subc_reload = 0; // SPKSLOW means this is 0
break;
case TMS5110_CMD_READ_BIT:
- if (DEBUG_5110) logerror("READ BIT\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"READ BIT\n");
+#endif
if (m_schedule_dummy_read)
perform_dummy_read();
else
{
- if (DEBUG_5110) logerror("actually reading a bit now\n");
- request_bits(1);
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"actually reading a bit now\n");
+#endif
m_CTL_buffer >>= 1;
m_CTL_buffer |= (extract_bits(1)<<3);
m_CTL_buffer &= 0xF;
@@ -677,14 +880,30 @@ void tms5110_device::PDC_set(int data)
break;
case TMS5110_CMD_SPEAK:
- if (DEBUG_5110) logerror("SPEAK\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"SPEAK\n");
+#endif
perform_dummy_read();
- m_speaking_now = 1;
- //should FIFO be cleared now ????? there is no fifo! the fifo is a lie!
+ m_SPEN = 1; /* start immediately */
+#ifdef FAST_START_HACK
+ m_TALK = 1;
+#endif
+ /* clear out variables before speaking */
+ m_zpar = 1; // zero all the parameters
+ m_uv_zpar = 1; // zero k4-k10 as well
+ m_OLDE = 1; // 'silence/zpar' frames are zero energy
+ m_OLDP = 1; // 'silence/zpar' frames are zero pitch
+#ifdef PERFECT_INTERPOLATION_HACK
+ m_old_zpar = 1; // zero all the old parameters
+ m_old_uv_zpar = 1; // zero old k4-k10 as well
+#endif
+ m_subc_reload = 1; // SPEAK means this is 1
break;
case TMS5110_CMD_READ_BRANCH:
- if (DEBUG_5110) logerror("READ AND BRANCH\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"READ AND BRANCH\n");
+#endif
new_int_write(0,1,1,0);
new_int_write(1,1,1,0);
new_int_write(0,1,1,0);
@@ -695,12 +914,16 @@ void tms5110_device::PDC_set(int data)
break;
case TMS5110_CMD_TEST_TALK:
- if (DEBUG_5110) logerror("TEST TALK\n");
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"TEST TALK\n");
+#endif
m_state = CTL_STATE_NEXT_TTALK_OUTPUT;
break;
default:
- logerror("tms5110.c: unknown command: 0x%02x\n", m_CTL_pins);
+#ifdef DEBUG_COMMAND_DUMP
+ fprintf(stderr,"tms5110.c: unknown command: 0x%02x\n", m_CTL_pins);
+#endif
break;
}
@@ -719,132 +942,76 @@ void tms5110_device::PDC_set(int data)
void tms5110_device::parse_frame()
{
- int bits, indx, i, rep_flag;
-#if (DEBUG_5110)
- int ene;
+ int i, rep_flag;
+#ifdef PERFECT_INTERPOLATION_HACK
+ m_old_uv_zpar = m_uv_zpar;
+ m_old_zpar = m_zpar;
#endif
-
- /* count the total number of bits available */
- bits = m_fifo_count;
-
-
- /* attempt to extract the energy index */
- bits -= m_coeff->energy_bits;
- if (bits < 0)
- {
- request_bits( -bits ); /* toggle M0 to receive needed bits */
- bits = 0;
- }
- indx = extract_bits(m_coeff->energy_bits);
- m_new_energy = m_coeff->energytable[indx];
-#if (DEBUG_5110)
- ene = indx;
+ // since we're parsing a frame, we must be talking, so clear zpar here
+ // before we start parsing a frame, the P=0 and E=0 latches were both reset by RESETL4, so clear m_uv_zpar here
+ m_uv_zpar = m_zpar = 0;
+
+ // attempt to extract the energy index
+ m_new_frame_energy_idx = extract_bits(m_coeff->energy_bits);
+#ifdef DEBUG_PARSE_FRAME_DUMP
+ printbits(m_new_frame_energy_idx,m_coeff->energy_bits);
+ fprintf(stderr," ");
#endif
- /* if the energy index is 0 or 15, we're done */
-
- if ((indx == 0) || (indx == 15))
- {
- if (DEBUG_5110) logerror(" (4-bit energy=%d frame)\n",m_new_energy);
-
- /* clear the k's */
- if (indx == 0)
- {
- for (i = 0; i < m_coeff->num_k; i++)
- m_new_k[i] = 0;
- }
-
- /* clear fifo if stop frame encountered */
- if (indx == 15)
- {
- if (DEBUG_5110) logerror(" (4-bit energy=%d STOP frame)\n",m_new_energy);
- m_fifo_head = m_fifo_tail = m_fifo_count = 0;
- }
+ // if the energy index is 0 or 15, we're done
+ if ((m_new_frame_energy_idx == 0) || (m_new_frame_energy_idx == 15))
return;
- }
-
- /* attempt to extract the repeat flag */
- bits -= 1;
- if (bits < 0)
- {
- request_bits( -bits ); /* toggle M0 to receive needed bits */
- bits = 0;
- }
rep_flag = extract_bits(1);
+#ifdef DEBUG_PARSE_FRAME_DUMP
+ printbits(rep_flag, 1);
+ fprintf(stderr," ");
+#endif
- /* attempt to extract the pitch */
- bits -= m_coeff->pitch_bits;
- if (bits < 0)
- {
- request_bits( -bits ); /* toggle M0 to receive needed bits */
- bits = 0;
- }
- indx = extract_bits(m_coeff->pitch_bits);
- m_new_pitch = m_coeff->pitchtable[indx];
-
- /* if this is a repeat frame, just copy the k's */
+ m_new_frame_pitch_idx = extract_bits(m_coeff->pitch_bits);
+#ifdef DEBUG_PARSE_FRAME_DUMP
+ printbits(m_new_frame_pitch_idx,m_coeff->pitch_bits);
+ fprintf(stderr," ");
+#endif
+ // if the new frame is unvoiced, be sure to zero out the k5-k10 parameters
+ m_uv_zpar = NEW_FRAME_UNVOICED_FLAG;
+ // if this is a repeat frame, just do nothing, it will reuse the old coefficients
if (rep_flag)
- {
- //actually, we do nothing because the k's were already loaded (on parsing the previous frame)
-
- if (DEBUG_5110) logerror(" (10-bit energy=%d pitch=%d rep=%d frame)\n", m_new_energy, m_new_pitch, rep_flag);
return;
- }
-
- /* if the pitch index was zero, we need 4 k's */
- if (indx == 0)
+ // extract first 4 K coefficients
+ for (i = 0; i < 4; i++)
{
- /* attempt to extract 4 K's */
- bits -= 18;
- if (bits < 0)
- {
- request_bits( -bits ); /* toggle M0 to receive needed bits */
- bits = 0;
- }
- for (i = 0; i < 4; i++)
- m_new_k[i] = m_coeff->ktable[i][extract_bits(m_coeff->kbits[i])];
-
- /* and clear the rest of the new_k[] */
- for (i = 4; i < m_coeff->num_k; i++)
- m_new_k[i] = 0;
-
- if (DEBUG_5110) logerror(" (28-bit energy=%d pitch=%d rep=%d 4K frame)\n", m_new_energy, m_new_pitch, rep_flag);
- return;
+ m_new_frame_k_idx[i] = extract_bits(m_coeff->kbits[i]);
+#ifdef DEBUG_PARSE_FRAME_DUMP
+ printbits(m_new_frame_k_idx[i],m_coeff->kbits[i]);
+ fprintf(stderr," ");
+#endif
}
- /* else we need 10 K's */
- bits -= 39;
- if (bits < 0)
- {
- request_bits( -bits ); /* toggle M0 to receive needed bits */
- bits = 0;
- }
-#if (DEBUG_5110)
- printf("FrameDump %02d ", ene);
- for (i = 0; i < m_coeff->num_k; i++)
+ // if the pitch index was zero, we only need 4 K's...
+ if (m_new_frame_pitch_idx == 0)
{
- int x;
- x = extract_bits( m_coeff->kbits[i]);
- m_new_k[i] = m_coeff->ktable[i][x];
- printf("%02d ", x);
+ /* and the rest of the coefficients are zeroed, but that's done in the generator code */
+ return;
}
- printf("\n");
-#else
- for (i = 0; i < m_coeff->num_k; i++)
+
+ // If we got here, we need the remaining 6 K's
+ for (i = 4; i < m_coeff->num_k; i++)
{
- int x;
- x = extract_bits( m_coeff->kbits[i]);
- m_new_k[i] = m_coeff->ktable[i][x];
+ m_new_frame_k_idx[i] = extract_bits(m_coeff->kbits[i]);
+#ifdef DEBUG_PARSE_FRAME_DUMP
+ printbits(m_new_frame_k_idx[i],m_coeff->kbits[i]);
+ fprintf(stderr," ");
+#endif
}
+#ifdef VERBOSE
+ logerror("Parsed a frame successfully in ROM\n");
#endif
- if (DEBUG_5110) logerror(" (49-bit energy=%d pitch=%d rep=%d 10K frame)\n", m_new_energy, m_new_pitch, rep_flag);
-
+ return;
}
-
#if 0
/*This is an example word TEN taken from the TMS5110A datasheet*/
static const unsigned int example_word_TEN[619]={
@@ -981,30 +1148,36 @@ void m58817_device::device_start()
void tms5110_device::device_reset()
{
- /* initialize the FIFO */
- memset(m_fifo, 0, sizeof(m_fifo));
- m_fifo_head = m_fifo_tail = m_fifo_count = 0;
+ m_digital_select = FORCE_DIGITAL; // assume analog output
/* initialize the chip state */
- m_speaking_now = m_talk_status = 0;
+ m_SPEN = m_TALK = m_TALKD = 0;
m_CTL_pins = 0;
m_RNG = 0x1fff;
m_CTL_buffer = 0;
m_PDC = 0;
/* initialize the energy/pitch/k states */
- m_old_energy = m_new_energy = m_current_energy = m_target_energy = 0;
- m_old_pitch = m_new_pitch = m_current_pitch = m_target_pitch = 0;
- memset(m_old_k, 0, sizeof(m_old_k));
- memset(m_new_k, 0, sizeof(m_new_k));
+#ifdef PERFECT_INTERPOLATION_HACK
+ m_old_frame_energy_idx = m_old_frame_pitch_idx = 0;
+ memset(m_old_frame_k_idx, 0, sizeof(m_old_frame_k_idx));
+ m_old_zpar = m_old_uv_zpar = 0;
+#endif
+ m_new_frame_energy_idx = m_current_energy = m_previous_energy = 0;
+ m_new_frame_pitch_idx = m_current_pitch = 0;
+ m_zpar = m_uv_zpar = 0;
+ memset(m_new_frame_k_idx, 0, sizeof(m_new_frame_k_idx));
memset(m_current_k, 0, sizeof(m_current_k));
- memset(m_target_k, 0, sizeof(m_target_k));
/* initialize the sample generators */
- m_interp_count = m_sample_count = m_pitch_count = 0;
+ m_inhibit = 1;
+ m_subcycle = m_pitch_count = m_pitch_zero = m_PC = m_zpar = 0;
+ m_subc_reload = 1;
+ m_OLDE = m_OLDP = 1;
+ m_IP = 0;
+ m_RNG = 0x1FFF;
+ memset(m_u, 0, sizeof(m_u));
memset(m_x, 0, sizeof(m_x));
- m_next_is_address = FALSE;
- m_address = 0;
if (m_table != NULL)
{
/* legacy interface */
@@ -1017,6 +1190,8 @@ void tms5110_device::device_reset()
*/
m_schedule_dummy_read = FALSE;
}
+ m_next_is_address = FALSE;
+ m_address = 0;
m_addr_bit = 0;
}
@@ -1075,8 +1250,8 @@ READ8_MEMBER( tms5110_device::ctl_r )
m_stream->update();
if (m_state == CTL_STATE_TTALK_OUTPUT)
{
- if (DEBUG_5110) logerror("Status read while outputting Test Talk (status=%2d)\n", m_talk_status);
- return (m_talk_status << 0); /*CTL1 = still talking ? */
+ if (DEBUG_5110) logerror("Status read while outputting Test Talk (status=%2d)\n", TALK_STATUS);
+ return (TALK_STATUS << 0); /*CTL1 = still talking ? */
}
else if (m_state == CTL_STATE_OUTPUT)
{
@@ -1094,7 +1269,7 @@ READ8_MEMBER( m58817_device::status_r )
{
/* bring up to date first */
m_stream->update();
- return (m_talk_status << 0); /*CTL1 = still talking ? */
+ return (TALK_STATUS << 0); /*CTL1 = still talking ? */
}
/******************************************************************************
@@ -1123,22 +1298,6 @@ READ8_MEMBER( tms5110_device::romclk_hack_r )
}
-
-/******************************************************************************
-
- tms5110_ready_r -- return the not ready status from the sound chip
-
-******************************************************************************/
-
-int tms5110_device::ready_r()
-{
- /* bring up to date first */
- m_stream->update();
- return (m_fifo_count < FIFO_SIZE-1);
-}
-
-
-
/******************************************************************************
tms5110_update -- update the sound chip so that it is in sync with CPU execution
diff --git a/src/emu/sound/tms5110.h b/src/devices/sound/tms5110.h
index 43863042940..dffb19b29d7 100644
--- a/src/emu/sound/tms5110.h
+++ b/src/devices/sound/tms5110.h
@@ -7,7 +7,8 @@
#include "emu.h"
-#define FIFO_SIZE 64 // TODO: technically the tms51xx chips don't have a fifo at all
+/* HACK: if defined, uses impossibly perfect 'straight line' interpolation */
+#undef PERFECT_INTERPOLATION_HACK
/* TMS5110 commands */
/* CTL8 CTL4 CTL2 CTL1 | PDC's */
@@ -15,7 +16,7 @@
#define TMS5110_CMD_RESET (0) /* 0 0 0 x | 1 */
#define TMS5110_CMD_LOAD_ADDRESS (2) /* 0 0 1 x | 2 */
#define TMS5110_CMD_OUTPUT (4) /* 0 1 0 x | 3 */
-#define TMS5110_CMD_SPKSLOW (6) /* 0 1 1 x | 1 | Note: this command is undocumented on the datasheets, it only appears on the patents. It might not actually work properly on some of the real chips as manufactured. Acts the same as CMD_SPEAK, but makes the interpolator take two A cycles whereever it would normally only take one, effectively making speech of any given word take about twice as long as normal. */
+#define TMS5110_CMD_SPKSLOW (6) /* 0 1 1 x | 1 | Note: this command is undocumented on the datasheets, it only appears on the patents. It might not actually work properly on some of the real chips as manufactured. Acts the same as CMD_SPEAK, but makes the interpolator take three A cycles whereever it would normally only take one, effectively making speech of any given word take twice as long as normal. */
#define TMS5110_CMD_READ_BIT (8) /* 1 0 0 x | 1 */
#define TMS5110_CMD_SPEAK (10) /* 1 0 1 x | 1 */
#define TMS5110_CMD_READ_BRANCH (12) /* 1 1 0 x | 1 */
@@ -64,7 +65,6 @@ public:
*/
DECLARE_READ8_MEMBER( romclk_hack_r );
- int ready_r();
void set_frequency(int frequency);
int _speech_rom_read_bit();
@@ -82,7 +82,10 @@ protected:
void set_variant(int variant);
- UINT8 m_talk_status;
+ UINT8 m_SPEN; /* set on speak command, cleared on stop command or reset command */
+ UINT8 m_TALK; /* set on SPEN & RESETL4(pc12->pc0 transition), cleared on stop command or reset command */
+#define TALK_STATUS (m_SPEN|m_TALKD)
+ UINT8 m_TALKD; /* TALK(TCON) value, latched every RESETL4 */
sound_stream *m_stream;
private:
@@ -90,26 +93,23 @@ private:
void new_int_write_addr(UINT8 addr);
UINT8 new_int_read();
void register_for_save_states();
- void FIFO_data_write(int data);
int extract_bits(int count);
- void request_bits(int no);
void perform_dummy_read();
+ INT32 lattice_filter();
void process(INT16 *buffer, unsigned int size);
void PDC_set(int data);
void parse_frame();
- /* these contain data that describes the 64 bits FIFO */
- UINT8 m_fifo[FIFO_SIZE];
- UINT8 m_fifo_head;
- UINT8 m_fifo_tail;
- UINT8 m_fifo_count;
+ // internal state
+ /* coefficient tables */
+ int m_variant; /* Variant of the 5110 - see tms5110.h */
+
+ /* coefficient tables */
+ const struct tms5100_coeffs *m_coeff;
/* these contain global status bits */
UINT8 m_PDC;
UINT8 m_CTL_pins;
- UINT8 m_speaking_now;
-
-
UINT8 m_state;
/* Rom interface */
@@ -131,43 +131,69 @@ private:
devcb_write_line m_romclk_cb; // rom clock - Only used to drive the data lines
/* these contain data describing the current and previous voice frames */
- UINT16 m_old_energy;
- UINT16 m_old_pitch;
- INT32 m_old_k[10];
+#define OLD_FRAME_SILENCE_FLAG m_OLDE // 1 if E=0, 0 otherwise.
+#define OLD_FRAME_UNVOICED_FLAG m_OLDP // 1 if P=0 (unvoiced), 0 if voiced
+ UINT8 m_OLDE;
+ UINT8 m_OLDP;
- UINT16 m_new_energy;
- UINT16 m_new_pitch;
- INT32 m_new_k[10];
+#define NEW_FRAME_STOP_FLAG (m_new_frame_energy_idx == 0xF) // 1 if this is a stop (Energy = 0xF) frame
+#define NEW_FRAME_SILENCE_FLAG (m_new_frame_energy_idx == 0) // ditto as above
+#define NEW_FRAME_UNVOICED_FLAG (m_new_frame_pitch_idx == 0) // ditto as above
+ UINT8 m_new_frame_energy_idx;
+ UINT8 m_new_frame_pitch_idx;
+ UINT8 m_new_frame_k_idx[10];
/* these are all used to contain the current state of the sound generation */
- UINT16 m_current_energy;
- UINT16 m_current_pitch;
+#ifndef PERFECT_INTERPOLATION_HACK
+ INT16 m_current_energy;
+ INT16 m_current_pitch;
+ INT16 m_current_k[10];
+#else
+ UINT8 m_old_frame_energy_idx;
+ UINT8 m_old_frame_pitch_idx;
+ UINT8 m_old_frame_k_idx[10];
+ UINT8 m_old_zpar;
+ UINT8 m_old_uv_zpar;
+
+ INT32 m_current_energy;
+ INT32 m_current_pitch;
INT32 m_current_k[10];
-
- UINT16 m_target_energy;
- UINT16 m_target_pitch;
- INT32 m_target_k[10];
-
- UINT8 m_interp_count; /* number of interp periods (0-7) */
- UINT8 m_sample_count; /* sample number within interp (0-24) */
- INT32 m_pitch_count;
-
- INT32 m_x[11];
-
- INT32 m_RNG; /* the random noise generator configuration is: 1 + x + x^3 + x^4 + x^13 */
+#endif
+
+ UINT16 m_previous_energy; /* needed for lattice filter to match patent */
+
+ UINT8 m_subcycle; /* contains the current subcycle for a given PC: 0 is A' (only used on SPKSLOW mode on 51xx), 1 is A, 2 is B */
+ UINT8 m_subc_reload; /* contains 1 for normal speech, 0 when SPKSLOW is active */
+ UINT8 m_PC; /* current parameter counter (what param is being interpolated), ranges from 0 to 12 */
+ /* NOTE: the interpolation period counts 1,2,3,4,5,6,7,0 for divide by 8,8,8,4,4,2,2,1 */
+ UINT8 m_IP; /* the current interpolation period */
+ UINT8 m_inhibit; /* If 1, interpolation is inhibited until the DIV1 period */
+ UINT8 m_uv_zpar; /* If 1, zero k5 thru k10 coefficients */
+ UINT8 m_zpar; /* If 1, zero ALL parameters. */
+ UINT8 m_pitch_zero; /* circuit 412; pitch is forced to zero under certain circumstances */
+ UINT16 m_pitch_count; /* pitch counter; provides chirp rom address */
+
+ INT32 m_u[11];
+ INT32 m_x[10];
+
+ UINT16 m_RNG; /* the random noise generator configuration is: 1 + x + x^3 + x^4 + x^13 TODO: no it isn't */
+ INT16 m_excitation_data;
+
+ /* The TMS51xx has two different ways of providing output data: the
+ analog speaker pins (which were usually used) and the Digital I/O pin.
+ The internal DAC used to feed the analog pins is only 8 bits, and has the
+ funny clipping/clamping logic, while the digital pin gives full 10 bit
+ resolution of the output data.
+ TODO: add a way to set/reset this other than the FORCE_DIGITAL define
+ */
+ UINT8 m_digital_select;
INT32 m_speech_rom_bitnum;
UINT8 m_romclk_hack_timer_started;
UINT8 m_romclk_hack_state;
- /* coefficient tables */
- int m_variant; /* Variant of the 5110 - see tms5110.h */
-
- /* coefficient tables */
- const struct tms5100_coeffs *m_coeff;
-
emu_timer *m_romclk_hack_timer;
const UINT8 *m_table;
};
diff --git a/src/emu/sound/tms5110r.inc b/src/devices/sound/tms5110r.inc
index 41abe5caea4..45fe4c984b2 100644
--- a/src/emu/sound/tms5110r.inc
+++ b/src/devices/sound/tms5110r.inc
@@ -47,7 +47,7 @@
T0280B 0281A = 1979 speak & spell, also == TMS5100, uses old chirp
?????? ????? (no decap; likely 'T0280D 0281D') = 1980 speak & spell, 1981 speak & spell compact, changed energy table, otherwise same as above, uses old chirp
T0280F 2801A = 1980 speak & math, 1980 speak and read, uses old chirp
- ?????? ????? (no decap; likely 'T0280F 2802') = touch and tell, language translator; uses a unique chirp rom.
+ T0280F 2802 = touch and tell, language translator; uses a unique chirp rom.
?????? ????? = TMS5110
T0280F 5110A = TMS5110AN2L
@@ -70,7 +70,6 @@
#define MAX_K 10
#define MAX_SCALE_BITS 6
#define MAX_SCALE (1<<MAX_SCALE_BITS)
-#define COEFF_ENERGY_SENTINEL (511)
#define MAX_CHIRP_SIZE 52
struct tms5100_coeffs
@@ -92,21 +91,13 @@ struct tms5100_coeffs
#define TI_0280_PATENT_ENERGY \
/* E */\
{ 0, 0, 1, 1, 2, 3, 5, 7, \
- 10, 15, 21, 30, 43, 61, 86, COEFF_ENERGY_SENTINEL }, // last rom value is actually really 0, but the tms5110.c code still requires the sentinel value to function correctly, until it is properly updated or merged with tms5220.c
+ 10, 15, 21, 30, 43, 61, 86, 0 },
-#define TI_0280_LATER_ENERGY \
- /* E */\
- { 0, 1, 2, 3, 4, 6, 8, 11, \
- 16, 23, 33, 47, 63, 85,114, COEFF_ENERGY_SENTINEL }, // last rom value is actually really 0, but the tms5110.c code still requires the sentinel value to function correctly, until it is properly updated or merged with tms5220.c
-
-//technically this is the same as above, but tms5220.c expects the 0 rather than needing a sentinel value
-//TODO: when tms5110.c no longer needs sentinel, get rid of this and merge with above.
-#define TI_0285_LATER_ENERGY \
+#define TI_028X_LATER_ENERGY \
/* E */\
{ 0, 1, 2, 3, 4, 6, 8, 11, \
16, 23, 33, 47, 63, 85,114, 0 },
-
/* pitch */
#define TI_0280_2801_PATENT_PITCH \
/* P */\
@@ -307,14 +298,13 @@ struct tms5100_coeffs
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
0x00, 0x00, 0x00, 0x00 },
-//TODO: Fix me! below is INACCURATE, no decap of 2802 yet!
#define TI_2802_CHIRP \
/* Chirp table */\
- { 0x00, 0xa3, 0xbe, 0xee, 0x38, 0x78, 0x7f, 0x3e,\
- 0xe2, 0xe0, 0x26, 0x19, 0xce, 0x06, 0x1e, 0xd0,\
- 0x12, 0xcd, 0xea, 0xde, 0xda, 0x02, 0xff, 0x06,\
- 0xfe, 0x00, 0xfe, 0xfb, 0xfd, 0xfd, 0x00, 0x00,\
- 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,\
+ { 0x00, 0xa5, 0xbd, 0xee, 0x34, 0x73, 0x7e, 0x3d,\
+ 0xe8, 0xea, 0x34, 0x24, 0xd1, 0x01, 0x13, 0xc3,\
+ 0x0c, 0xd2, 0xe7, 0xdd, 0xd9, 0x00, 0x00, 0x00,\
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
0x00, 0x00, 0x00, 0x00 },
@@ -328,6 +318,11 @@ struct tms5100_coeffs
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
0x00, 0x00, 0x00, 0x00 },
+/* Interpolation Table */
+#define TI_INTERP \
+ /* interpolation shift coefficients */\
+ { 0, 3, 3, 3, 2, 2, 1, 1 }
+
/* TMS5100/TMC0281:
(Die revs A, B; 1977?-1981?)
The TMS5100NL was decapped and imaged by digshadow in April, 2013.
@@ -357,8 +352,7 @@ static const struct tms5100_coeffs T0280B_0281A_coeff =
TI_0280_PATENT_LPC
},
TI_0280_PATENT_CHIRP
- /* interpolation coefficients */
- { 3, 3, 3, 2, 2, 1, 1, 0 }
+ TI_INTERP
};
/* TMS5110A/TMC0281D:
@@ -376,14 +370,13 @@ static const struct tms5100_coeffs T0280D_0281D_coeff =
4,
5,
{ 5, 5, 4, 4, 4, 4, 4, 3, 3, 3 },
- TI_0280_LATER_ENERGY
+ TI_028X_LATER_ENERGY
TI_0280_2801_PATENT_PITCH
{
TI_0280_PATENT_LPC
},
TI_0280_PATENT_CHIRP
- /* interpolation coefficients */
- { 3, 3, 3, 2, 2, 1, 1, 0 }
+ TI_INTERP
};
/* TMC0280/CD2801:
@@ -412,14 +405,13 @@ static const struct tms5100_coeffs T0280F_2801A_coeff =
4,
5,
{ 5, 5, 4, 4, 4, 4, 4, 3, 3, 3 },
- TI_0280_LATER_ENERGY
+ TI_028X_LATER_ENERGY
TI_0280_2801_PATENT_PITCH
{
TI_2801_2501E_LPC
},
TI_2801_CHIRP
- /* interpolation coefficients */
- { 3, 3, 3, 2, 2, 1, 1, 0 }
+ TI_INTERP
};
/* Mitsubishi M58817
@@ -436,21 +428,21 @@ static const struct tms5100_coeffs M58817_coeff =
4,
5,
{ 5, 5, 4, 4, 4, 4, 4, 3, 3, 3 },
- TI_0280_LATER_ENERGY
+ TI_028X_LATER_ENERGY
TI_0280_2801_PATENT_PITCH
{
TI_2801_2501E_LPC
},
TI_2801_CHIRP
- /* interpolation coefficients */
- { 3, 3, 3, 2, 2, 1, 1, 0 }
+ TI_INTERP
};
/* CD2802:
(1984 era?)
- Used in Touch and Tell only (and Vocaid?), this chip has a unique pitch, LPC and chirp table.
+ Used in Touch and Tell only (and Vocaid), this chip has a unique pitch, LPC and chirp table.
Has the 'alternate' interpolation behavior.
Digitally dumped via PROMOUT by PlgDavid in 2014
+ Decapped by Sean Riddle in 2015
*/
static const struct tms5100_coeffs T0280F_2802_coeff =
{
@@ -460,14 +452,13 @@ static const struct tms5100_coeffs T0280F_2802_coeff =
4,
5,
{ 5, 5, 4, 4, 4, 4, 4, 3, 3, 3 },
- TI_0280_LATER_ENERGY
+ TI_028X_LATER_ENERGY
TI_2802_PITCH
{
TI_2802_LPC
},
TI_2802_CHIRP
- /* interpolation coefficients */
- { 3, 3, 3, 2, 2, 1, 1, 0 }
+ TI_INTERP
};
/* TMS5110A:
@@ -477,8 +468,8 @@ static const struct tms5100_coeffs T0280F_2802_coeff =
by PlgDavid.
NullMoogleCable decapped a TMS5110AN2L in 2015: http://wtfmoogle.com/wp-content/uploads/2015/03/0317_1.jpg
which was used to verify the chirp table.
- The slightly older but otherwise identical TMS5111NLL was decapped and imaged by digshadow in April, 2013.
- The die is marked "TMS5110AJ"
+ The slightly older but otherwise identical TMS5111NLL was decapped and imaged by digshadow in April, 2013,
+ its die is marked "TMS5110AJ"
The LPC table is verified from decap to match the values from Jarek and PlgDavid's PROMOUT dumps of the TMS5110.
The LPC table matches that of the TMS5220.
It uses the 'newer' 5200-style chirp table.
@@ -492,14 +483,13 @@ static const struct tms5100_coeffs tms5110a_coeff =
4,
5,
{ 5, 5, 4, 4, 4, 4, 4, 3, 3, 3 },
- TI_0280_LATER_ENERGY
+ TI_028X_LATER_ENERGY
TI_5110_PITCH
{
TI_5110_5220_LPC
},
TI_LATER_CHIRP
- /* interpolation coefficients */
- { 3, 3, 3, 2, 2, 1, 1, 0 }
+ TI_INTERP
};
/* The following coefficients come from US Patent 4,335,277 and 4,581,757.
@@ -518,7 +508,7 @@ static const struct tms5100_coeffs pat4335277_coeff =
4,
6,
{ 5, 5, 4, 4, 4, 4, 4, 3, 3, 3 },
- TI_0285_LATER_ENERGY
+ TI_028X_LATER_ENERGY
TI_2501E_PITCH
{
/* K1dc */
@@ -554,8 +544,7 @@ static const struct tms5100_coeffs pat4335277_coeff =
{ -205, -132, -59, 14, 87, 160, 234, 307 },
},
TI_0280_PATENT_CHIRP
- /* interpolation coefficients */
- { 3, 3, 3, 2, 2, 1, 1, 0 }
+ TI_INTERP
};
/* TMS5200/CD2501E
@@ -579,8 +568,8 @@ NOTE FROM DECAP: immediately to the left of each of the K1,2,3,4,5,and 6
patent 4,335,277. They are likely related to the multiplicative interpolator
described in us patent 4,419,540; whether the 5200/2501E and the 5220 or 5220C
actually implement this interpolator or not is unclear. This interpolator
- seems intended for chips with variable frame rate, so it may only exist
- on the TMS/TSP5220C and CD2501ECD.
+ seems intended for chips with variable frame rate, so if it exists at all,
+ it may only exist on the TMS/TSP5220C and CD2501ECD.
*/
static const struct tms5100_coeffs T0285_2501E_coeff =
@@ -591,14 +580,13 @@ static const struct tms5100_coeffs T0285_2501E_coeff =
4,
6,
{ 5, 5, 4, 4, 4, 4, 4, 3, 3, 3 },
- TI_0285_LATER_ENERGY
+ TI_028X_LATER_ENERGY
TI_2501E_PITCH
{
TI_2801_2501E_LPC
},
TI_LATER_CHIRP
- /* interpolation coefficients */
- { 0, 3, 3, 3, 2, 2, 1, 1 }
+ TI_INTERP
};
/* TMS5220/5220C:
@@ -620,14 +608,13 @@ static const struct tms5100_coeffs tms5220_coeff =
4,
6,
{ 5, 5, 4, 4, 4, 4, 4, 3, 3, 3 },
- TI_0285_LATER_ENERGY
+ TI_028X_LATER_ENERGY
TI_5220_PITCH
{
TI_5110_5220_LPC
},
TI_LATER_CHIRP
- /* interpolation coefficients */
- { 0, 3, 3, 3, 2, 2, 1, 1 }
+ TI_INTERP
};
/* The following Sanyo VLM5030 coefficients are derived from decaps of the chip
@@ -642,7 +629,7 @@ K1A holds odd values of K1, K1B holds even values.
K2 holds values for K2 only
K3 and K4 are actually the table index values <<6
K5 thru K10 are actually the table index values <<7
-The concept of only having non-binary weighted reflection coefficients for the
+This concept of only having non-binary weighted reflection coefficients for the
first two k stages is mentioned in Markel & Gray "Linear Prediction of Speech"
and in Thomas Parsons' "Voice and Speech Processing"
*/
@@ -682,13 +669,9 @@ static const struct tms5100_coeffs vlm5030_coeff =
0,-510,-502,-490,-473,-452,-426,-396, /* entry 16(0x10) either has some special function, purpose unknown, or is a manufacturing error and should have been -512 */
-362,-325,-284,-241,-196,-149,-100, -50 },
/* K3 */
- /*{ 0, 100, 196, 284, 362, 426, 473, 502,
- -510,-490,-452,-396,-325,-241,-149, -50 },*/
{ 0, 64, 128, 192, 256, 320, 384, 448,
-512,-448,-384,-320,-256,-192,-128, -64 },
/* K4 */
- /*{ 0, 100, 196, 284, 362, 426, 473, 502,
- -510,-490,-452,-396,-325,-241,-149, -50 },*/
{ 0, 64, 128, 192, 256, 320, 384, 448,
-512,-448,-384,-320,-256,-192,-128, -64 },
/* K5 */
@@ -702,7 +685,6 @@ static const struct tms5100_coeffs vlm5030_coeff =
/* K9 */
{ 0, 128, 256, 384,-512,-384,-256,-128 },
/* K10 */
- /*{ 0, 196, 362, 473,-510,-452,-325,-149 },*/
{ 0, 128, 256, 384,-512,-384,-256,-128 },
},
/* Chirp table */
diff --git a/src/emu/sound/tms5220.c b/src/devices/sound/tms5220.c
index d71344a01e8..feb3a8e01fe 100644
--- a/src/emu/sound/tms5220.c
+++ b/src/devices/sound/tms5220.c
@@ -47,14 +47,7 @@ Note the standard naming for d* data bits with 7 as MSB and 0 as LSB is in lower
TI's naming has D7 as LSB and D0 as MSB and is in uppercase
TODO:
- * Ever since the big rewrite, there are glitches on certain frame transitions
- for example in the word 'robots' during the eprom attract mode,
- I (LN) am not entirely sure why the real chip doesn't have these as well.
- Needs more real hardware testing/dumps for comparison.
- * Ever since the timing rewrite, the above problem is slightly worse. This
- time, however, it is probably a 'real' bug, which I (LN) am in the process
- of tracking down.
- i.e. the word 'congratulations' in victory when you get a high score.
+ * Samples repeat over and over in the 'eprom' test mode. Needs investigation.
* Implement a ready callback for pc interfaces
- this will be quite a challenge since for it to be really accurate
the whole emulation has to run in sync (lots of timers) with the
@@ -62,7 +55,6 @@ TODO:
* If a command is still executing, /READY will be kept high until the command has
finished if the next command is written.
* tomcat has a 5220 which is not hooked up at all
- * Is the TS=0 forcing energy to 0 for next frame in the interpolator actually correct? I'm (LN) guessing no. The patent schematics state that TS=0 shuts off the output dac completely, though doesn't affect the I/O pin.
Pedantic detail from observation of real chip:
The 5200 and 5220 chips outputs the following coefficients over PROMOUT while
@@ -267,10 +259,14 @@ static INT16 clip_analog(INT16 cliptemp);
//define INTERP_SHIFT / (1<<m_coeff->interp_coeff[m_IP])
/* Other hacks */
-/* HACK?: if defined, outputs the low 4 bits of the lattice filter to the i/o
+/* HACK: if defined, outputs the low 4 bits of the lattice filter to the i/o
* or clip logic, even though the real hardware doesn't do this, partially verified by decap */
#undef ALLOW_4_LSB
+/* forces m_TALK active instantly whenever m_SPEN would be activated, causing speech delay to be reduced by up to one frame time */
+/* for some reason, this hack makes victory behave better, though it does not match the patent */
+#define FAST_START_HACK 1
+
/* *****configuration of chip connection stuff***** */
/* must be defined; if 0, output the waveform as if it was tapped on the speaker pin as usual, if 1, output the waveform as if it was tapped on the i/o pin (volume is much lower in the latter case) */
@@ -353,15 +349,19 @@ void tms5220_device::set_variant(int variant)
void tms5220_device::register_for_save_states()
{
+ save_item(NAME(m_variant));
+
save_item(NAME(m_fifo));
save_item(NAME(m_fifo_head));
save_item(NAME(m_fifo_tail));
save_item(NAME(m_fifo_count));
save_item(NAME(m_fifo_bits_taken));
- save_item(NAME(m_speaking_now));
- save_item(NAME(m_speak_external));
- save_item(NAME(m_talk_status));
+ save_item(NAME(m_previous_TALK_STATUS));
+ save_item(NAME(m_SPEN));
+ save_item(NAME(m_DDIS));
+ save_item(NAME(m_TALK));
+ save_item(NAME(m_TALKD));
save_item(NAME(m_buffer_low));
save_item(NAME(m_buffer_empty));
save_item(NAME(m_irq_pin));
@@ -382,10 +382,6 @@ void tms5220_device::register_for_save_states()
save_item(NAME(m_current_pitch));
save_item(NAME(m_current_k));
- save_item(NAME(m_target_energy));
- save_item(NAME(m_target_pitch));
- save_item(NAME(m_target_k));
-
save_item(NAME(m_previous_energy));
save_item(NAME(m_subcycle));
@@ -393,6 +389,9 @@ void tms5220_device::register_for_save_states()
save_item(NAME(m_PC));
save_item(NAME(m_IP));
save_item(NAME(m_inhibit));
+ save_item(NAME(m_uv_zpar));
+ save_item(NAME(m_zpar));
+ save_item(NAME(m_pitch_zero));
save_item(NAME(m_c_variant_rate));
save_item(NAME(m_pitch_count));
@@ -463,10 +462,11 @@ static void printbits(long data, int num)
void tms5220_device::data_write(int data)
{
+ int old_buffer_low = m_buffer_low;
#ifdef DEBUG_DUMP_INPUT_DATA
fprintf(stdout, "%c",data);
#endif
- if (m_speak_external) // If we're in speak external mode
+ if (m_DDIS) // If we're in speak external mode
{
// add this byte to the FIFO
if (m_fifo_count < FIFO_SIZE)
@@ -475,20 +475,29 @@ void tms5220_device::data_write(int data)
m_fifo_tail = (m_fifo_tail + 1) % FIFO_SIZE;
m_fifo_count++;
#ifdef DEBUG_FIFO
- logerror("data_write: Added byte to FIFO (current count=%2d)\n", m_fifo_count);
+ fprintf(stderr,"data_write: Added byte to FIFO (current count=%2d)\n", m_fifo_count);
#endif
update_fifo_status_and_ints();
- if ((m_talk_status == 0) && (m_buffer_low == 0)) // we just unset buffer low with that last write, and talk status *was* zero...
+ // if we just unset buffer low with that last write, and SPEN *was* zero (see circuit 251, sheet 12)
+ if ((m_SPEN == 0) && ((old_buffer_low == 1) && (m_buffer_low == 0))) // MUST HAVE EDGE DETECT
{
- int i;
+ int i;
#ifdef DEBUG_FIFO
- logerror("data_write triggered talk status to go active!\n");
+ fprintf(stderr,"data_write triggered SPEN to go active!\n");
+#endif
+ // ...then we now have enough bytes to start talking; set zpar and clear out the new frame parameters (it will become old frame just before the first call to parse_frame() )
+ m_zpar = 1;
+ m_uv_zpar = 1; // zero k4-k10 as well
+ m_OLDE = 1; // 'silence/zpar' frames are zero energy
+ m_OLDP = 1; // 'silence/zpar' frames are zero pitch
+#ifdef PERFECT_INTERPOLATION_HACK
+ m_old_zpar = 1; // zero all the old parameters
+ m_old_uv_zpar = 1; // zero old k4-k10 as well
+#endif
+ m_SPEN = 1;
+#ifdef FAST_START_HACK
+ m_TALK = 1;
#endif
- // ...then we now have enough bytes to start talking; clear out the new frame parameters (it will become old frame just before the first call to parse_frame() )
- // TODO: the 3 lines below (and others) are needed for victory to not fail its selftest due to a sample ending too late, may require additional investigation
- m_subcycle = m_subc_reload;
- m_PC = 0;
- m_IP = reload_table[m_c_variant_rate&0x3]; // is this correct? should this be always 7 instead, so that the new frame is loaded quickly?
m_new_frame_energy_idx = 0;
m_new_frame_pitch_idx = 0;
for (i = 0; i < 4; i++)
@@ -497,20 +506,20 @@ void tms5220_device::data_write(int data)
m_new_frame_k_idx[i] = 0xF;
for (i = 7; i < m_coeff->num_k; i++)
m_new_frame_k_idx[i] = 0x7;
- m_talk_status = m_speaking_now = 1;
+
}
}
else
{
#ifdef DEBUG_FIFO
- logerror("data_write: Ran out of room in the tms52xx FIFO! this should never happen!\n");
+ fprintf(stderr,"data_write: Ran out of room in the tms52xx FIFO! this should never happen!\n");
// at this point, /READY should remain HIGH/inactive until the fifo has at least one byte open in it.
#endif
}
}
- else //(! m_speak_external)
+ else //(! m_DDIS)
// R Nabet : we parse commands at once. It is necessary for such commands as read.
process_command(data);
}
@@ -558,31 +567,31 @@ void tms5220_device::update_fifo_status_and_ints()
m_buffer_low = 0;
/* BE is set if neither byte 15 nor 14 of the fifo are in use; this
- translates to having fifo_count equal to exactly 0 */
+ translates to having fifo_count equal to exactly 0
+ */
if (m_fifo_count == 0)
{
// generate an interrupt if necessary; if /BE was inactive and is now active, set int.
if (!m_buffer_empty)
set_interrupt_state(1);
m_buffer_empty = 1;
+ m_TALK = m_SPEN = 0; // /BE being active clears the TALK status via TCON, which in turn clears SPEN
}
else
m_buffer_empty = 0;
- /* TS is talk status and is set elsewhere in the fifo parser and in
- the SPEAK command handler; however, if /BE is true during speak external
- mode, it is immediately unset here. */
- if ((m_speak_external == 1) && (m_buffer_empty == 1))
+ // generate an interrupt if /TS was active, and is now inactive.
+ // also, in this case, regardless if DDIS was set, unset it.
+ if (m_previous_TALK_STATUS == 1 && (TALK_STATUS == 0))
{
- // generate an interrupt: /TS was active, and is now inactive.
- if (m_talk_status == 1)
- {
- m_talk_status = m_speak_external = 0;
- set_interrupt_state(1);
- }
+#ifdef VERBOSE
+ fprintf(stderr,"Talk status WAS 1, is now 0, unsetting DDIS and firing an interrupt!\n");
+#endif
+ set_interrupt_state(1);
+ m_DDIS = 0;
}
- /* Note that TS being unset will also generate an interrupt when a STOP
- frame is encountered; this is handled in the sample generator code and not here */
+ m_previous_TALK_STATUS = TALK_STATUS;
+
}
/**********************************************************************************************
@@ -595,7 +604,7 @@ int tms5220_device::extract_bits(int count)
{
int val = 0;
- if (m_speak_external)
+ if (m_DDIS)
{
// extract from FIFO
while (count--)
@@ -618,7 +627,6 @@ int tms5220_device::extract_bits(int count)
if (m_speechrom)
val = m_speechrom->read(count);
}
-
return val;
}
@@ -637,14 +645,12 @@ int tms5220_device::status_read()
}
else
{ /* read status */
-
/* clear the interrupt pin on status read */
set_interrupt_state(0);
#ifdef DEBUG_PIN_READS
- logerror("Status read: TS=%d BL=%d BE=%d\n", m_talk_status, m_buffer_low, m_buffer_empty);
+ fprintf(stderr,"Status read: TS=%d BL=%d BE=%d\n", TALK_STATUS, m_buffer_low, m_buffer_empty);
#endif
-
- return (m_talk_status << 7) | (m_buffer_low << 6) | (m_buffer_empty << 5);
+ return (TALK_STATUS << 7) | (m_buffer_low << 6) | (m_buffer_empty << 5);
}
}
@@ -658,9 +664,9 @@ int tms5220_device::status_read()
int tms5220_device::ready_read()
{
#ifdef DEBUG_PIN_READS
- logerror("ready_read: ready pin read, io_ready is %d, fifo count is %d\n", m_io_ready, m_fifo_count);
+ fprintf(stderr,"ready_read: ready pin read, io_ready is %d, fifo count is %d, DDIS(speak external) is %d\n", m_io_ready, m_fifo_count, m_DDIS);
#endif
- return ((m_fifo_count < FIFO_SIZE)||(!m_speak_external)) && m_io_ready;
+ return ((m_fifo_count < FIFO_SIZE)||(!m_DDIS)) && m_io_ready;
}
@@ -716,7 +722,7 @@ int tms5220_device::cycles_to_ready()
int tms5220_device::int_read()
{
#ifdef DEBUG_PIN_READS
- logerror("int_read: irq pin read, state is %d\n", m_irq_pin);
+ fprintf(stderr,"int_read: irq pin read, state is %d\n", m_irq_pin);
#endif
return m_irq_pin;
}
@@ -731,291 +737,289 @@ int tms5220_device::int_read()
void tms5220_device::process(INT16 *buffer, unsigned int size)
{
int buf_count=0;
- int i, bitout, zpar;
+ int i, bitout;
INT32 this_sample;
- /* the following gotos are probably safe to remove */
- /* if we're empty and still not speaking, fill with nothingness */
- if (!m_speaking_now)
- goto empty;
-
- /* if speak external is set, but talk status is not (yet) set,
- wait for buffer low to clear */
- if (!m_talk_status && m_speak_external && m_buffer_low)
- goto empty;
+#ifdef VERBOSE
+ fprintf(stderr,"process called with size of %d; IP=%d, PC=%d, subcycle=%d, m_SPEN=%d, m_TALK=%d, m_TALKD=%d\n", size, m_IP, m_PC, m_subcycle, m_SPEN, m_TALK, m_TALKD);
+#endif
/* loop until the buffer is full or we've stopped speaking */
- while ((size > 0) && m_speaking_now)
+ while (size > 0)
{
- /* if it is the appropriate time to update the old energy/pitch idxes,
- * i.e. when IP=7, PC=12, T=17, subcycle=2, do so. Since IP=7 PC=12 T=17
- * is JUST BEFORE the transition to IP=0 PC=0 T=0 sybcycle=(0 or 1),
- * which happens 4 T-cycles later), we change on the latter.*/
- if ((m_IP == 0) && (m_PC == 0) && (m_subcycle < 2))
- {
- m_OLDE = (m_new_frame_energy_idx == 0);
- m_OLDP = (m_new_frame_pitch_idx == 0);
- }
-
- /* if we're ready for a new frame to be applied, i.e. when IP=0, PC=12, Sub=1
- * (In reality, the frame was really loaded incrementally during the entire IP=0
- * PC=x time period, but it doesn't affect anything until IP=0 PC=12 happens)
- */
- if ((m_IP == 0) && (m_PC == 12) && (m_subcycle == 1))
+ if(m_TALKD) // speaking
{
- // HACK for regression testing, be sure to comment out before release!
- //m_RNG = 0x1234;
- // end HACK
+ /* if we're ready for a new frame to be applied, i.e. when IP=0, PC=12, Sub=1
+ * (In reality, the frame was really loaded incrementally during the entire IP=0
+ * PC=x time period, but it doesn't affect anything until IP=0 PC=12 happens)
+ */
+ if ((m_IP == 0) && (m_PC == 12) && (m_subcycle == 1))
+ {
+ // HACK for regression testing, be sure to comment out before release!
+ //m_RNG = 0x1234;
+ // end HACK
- /* appropriately override the interp count if needed; this will be incremented after the frame parse! */
- m_IP = reload_table[m_c_variant_rate&0x3];
+ /* appropriately override the interp count if needed; this will be incremented after the frame parse! */
+ m_IP = reload_table[m_c_variant_rate&0x3];
#ifdef PERFECT_INTERPOLATION_HACK
- /* remember previous frame energy, pitch, and coefficients */
- m_old_frame_energy_idx = m_new_frame_energy_idx;
- m_old_frame_pitch_idx = m_new_frame_pitch_idx;
- for (i = 0; i < m_coeff->num_k; i++)
- m_old_frame_k_idx[i] = m_new_frame_k_idx[i];
-#endif
-
- /* if the talk status was clear last frame, halt speech now. */
- if (m_talk_status == 0)
- {
-#ifdef DEBUG_GENERATION
- fprintf(stderr,"tms5220_process: processing frame: talk status = 0 caused by stop frame or buffer empty, halting speech.\n");
+ /* remember previous frame energy, pitch, and coefficients */
+ m_old_frame_energy_idx = m_new_frame_energy_idx;
+ m_old_frame_pitch_idx = m_new_frame_pitch_idx;
+ for (i = 0; i < m_coeff->num_k; i++)
+ m_old_frame_k_idx[i] = m_new_frame_k_idx[i];
#endif
- m_speaking_now = 0; // finally halt speech
- goto empty;
- }
-
- /* Parse a new frame into the new_target_energy, new_target_pitch and new_target_k[] */
- parse_frame();
-#ifdef DEBUG_PARSE_FRAME_DUMP
- fprintf(stderr,"\n");
-#endif
+ /* Parse a new frame into the new_target_energy, new_target_pitch and new_target_k[] */
+ parse_frame();
- /* if the new frame is a stop frame, set an interrupt and set talk status to 0 */
- if (NEW_FRAME_STOP_FLAG == 1)
+ /* if the new frame is a stop frame, unset both TALK and SPEN (via TCON). TALKD remains active while the energy is ramping to 0. */
+ if (NEW_FRAME_STOP_FLAG == 1)
{
- m_talk_status = m_speak_external = 0;
- set_interrupt_state(1);
- update_fifo_status_and_ints();
+ m_TALK = m_SPEN = 0;
+ update_fifo_status_and_ints(); // probably not necessary...
}
- /* in all cases where interpolation would be inhibited, set the inhibit flag; otherwise clear it.
- Interpolation inhibit cases:
- * Old frame was voiced, new is unvoiced
- * Old frame was silence/zero energy, new has nonzero energy
- * Old frame was unvoiced, new is voiced (note this is the case on the patent but may not be correct on the real final chip)
- */
- if ( ((OLD_FRAME_UNVOICED_FLAG == 0) && (NEW_FRAME_UNVOICED_FLAG == 1))
- || ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_UNVOICED_FLAG == 0)) /* this line needs further investigation, starwars tie fighters may sound better without it */
- || ((OLD_FRAME_SILENCE_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 0)) )
- m_inhibit = 1;
- else // normal frame, normal interpolation
- m_inhibit = 0;
-
- /* load new frame targets from tables, using parsed indices */
- m_target_energy = m_coeff->energytable[m_new_frame_energy_idx];
- m_target_pitch = m_coeff->pitchtable[m_new_frame_pitch_idx];
- zpar = NEW_FRAME_UNVOICED_FLAG; // find out if parameters k5-k10 should be zeroed
- for (i = 0; i < 4; i++)
- m_target_k[i] = m_coeff->ktable[i][m_new_frame_k_idx[i]];
- for (i = 4; i < m_coeff->num_k; i++)
- m_target_k[i] = (m_coeff->ktable[i][m_new_frame_k_idx[i]] * (1-zpar));
+ /* in all cases where interpolation would be inhibited, set the inhibit flag; otherwise clear it.
+ * Interpolation inhibit cases:
+ * Old frame was voiced, new is unvoiced
+ * Old frame was silence/zero energy, new has non-zero energy
+ * Old frame was unvoiced, new is voiced
+ * Old frame was unvoiced, new frame is silence/zero energy (non-existent on tms51xx rev D and F (present and working on tms52xx, present but buggy on tms51xx rev A and B))
+ */
+ if ( ((OLD_FRAME_UNVOICED_FLAG == 0) && (NEW_FRAME_UNVOICED_FLAG == 1))
+ || ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_UNVOICED_FLAG == 0))
+ || ((OLD_FRAME_SILENCE_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 0))
+ //|| ((m_inhibit == 1) && (OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 1)) ) //TMS51xx INTERP BUG1
+ || ((OLD_FRAME_UNVOICED_FLAG == 1) && (NEW_FRAME_SILENCE_FLAG == 1)) )
+ m_inhibit = 1;
+ else // normal frame, normal interpolation
+ m_inhibit = 0;
#ifdef DEBUG_GENERATION
- /* Debug info for current parsed frame */
- fprintf(stderr, "OLDE: %d; OLDP: %d; ", m_OLDE, m_OLDP);
- fprintf(stderr,"Processing frame: ");
- if (m_inhibit == 0)
- fprintf(stderr, "Normal Frame\n");
- else
- fprintf(stderr,"Interpolation Inhibited\n");
- fprintf(stderr,"*** current Energy, Pitch and Ks = %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d\n",m_current_energy, m_current_pitch, m_current_k[0], m_current_k[1], m_current_k[2], m_current_k[3], m_current_k[4], m_current_k[5], m_current_k[6], m_current_k[7], m_current_k[8], m_current_k[9]);
- fprintf(stderr,"*** target Energy(idx), Pitch, and Ks = %04d(%x),%04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d\n",m_target_energy, m_new_frame_energy_idx, m_target_pitch, m_target_k[0], m_target_k[1], m_target_k[2], m_target_k[3], m_target_k[4], m_target_k[5], m_target_k[6], m_target_k[7], m_target_k[8], m_target_k[9]);
+ /* Debug info for current parsed frame */
+ fprintf(stderr, "OLDE: %d; NEWE: %d; OLDP: %d; NEWP: %d ", OLD_FRAME_SILENCE_FLAG, NEW_FRAME_SILENCE_FLAG, OLD_FRAME_UNVOICED_FLAG, NEW_FRAME_UNVOICED_FLAG);
+ fprintf(stderr,"Processing new frame: ");
+ if (m_inhibit == 0)
+ fprintf(stderr, "Normal Frame\n");
+ else
+ fprintf(stderr,"Interpolation Inhibited\n");
+ fprintf(stderr,"*** current Energy, Pitch and Ks = %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d\n",m_current_energy, m_current_pitch, m_current_k[0], m_current_k[1], m_current_k[2], m_current_k[3], m_current_k[4], m_current_k[5], m_current_k[6], m_current_k[7], m_current_k[8], m_current_k[9]);
+ fprintf(stderr,"*** target Energy(idx), Pitch, and Ks = %04d(%x),%04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d, %04d\n",
+ (m_coeff->energytable[m_new_frame_energy_idx] * (1-m_zpar)),
+ m_new_frame_energy_idx,
+ (m_coeff->pitchtable[m_new_frame_pitch_idx] * (1-m_zpar)),
+ (m_coeff->ktable[0][m_new_frame_k_idx[0]] * (1-m_zpar)),
+ (m_coeff->ktable[1][m_new_frame_k_idx[1]] * (1-m_zpar)),
+ (m_coeff->ktable[2][m_new_frame_k_idx[2]] * (1-m_zpar)),
+ (m_coeff->ktable[3][m_new_frame_k_idx[3]] * (1-m_zpar)),
+ (m_coeff->ktable[4][m_new_frame_k_idx[4]] * (1-m_uv_zpar)),
+ (m_coeff->ktable[5][m_new_frame_k_idx[5]] * (1-m_uv_zpar)),
+ (m_coeff->ktable[6][m_new_frame_k_idx[6]] * (1-m_uv_zpar)),
+ (m_coeff->ktable[7][m_new_frame_k_idx[7]] * (1-m_uv_zpar)),
+ (m_coeff->ktable[8][m_new_frame_k_idx[8]] * (1-m_uv_zpar)),
+ (m_coeff->ktable[9][m_new_frame_k_idx[9]] * (1-m_uv_zpar)) );
#endif
- /* if TS is now 0, ramp the energy down to 0. Is this really correct to hardware? */
- if (m_talk_status == 0)
- {
-#ifdef DEBUG_GENERATION
- fprintf(stderr,"Talk status is 0, forcing target energy to 0\n");
-#endif
- m_target_energy = 0;
- }
- }
- else // Not a new frame, just interpolate the existing frame.
- {
- int inhibit_state = ((m_inhibit==1)&&(m_IP != 0)); // disable inhibit when reaching the last interp period, but don't overwrite the m_inhibit value
-#ifdef PERFECT_INTERPOLATION_HACK
- int samples_per_frame = m_subc_reload?175:266; // either (13 A cycles + 12 B cycles) * 7 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 7 interps for SPKSLOW
- //int samples_per_frame = m_subc_reload?200:304; // either (13 A cycles + 12 B cycles) * 8 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 8 interps for SPKSLOW
- int current_sample = (m_subcycle - m_subc_reload)+(m_PC*(3-m_subc_reload))+((m_subc_reload?25:38)*((m_IP-1)&7));
-
- zpar = OLD_FRAME_UNVOICED_FLAG;
- //fprintf(stderr, "CS: %03d", current_sample);
- // reset the current energy, pitch, etc to what it was at frame start
- m_current_energy = m_coeff->energytable[m_old_frame_energy_idx];
- m_current_pitch = m_coeff->pitchtable[m_old_frame_pitch_idx];
- for (i = 0; i < 4; i++)
- m_current_k[i] = m_coeff->ktable[i][m_old_frame_k_idx[i]];
- for (i = 4; i < m_coeff->num_k; i++)
- m_current_k[i] = (m_coeff->ktable[i][m_old_frame_k_idx[i]] * (1-zpar));
- // now adjust each value to be exactly correct for each of the samples per frame
- if (m_IP != 0) // if we're still interpolating...
- {
- m_current_energy += (((m_target_energy - m_current_energy)*(1-inhibit_state))*current_sample)/samples_per_frame;
- m_current_pitch += (((m_target_pitch - m_current_pitch)*(1-inhibit_state))*current_sample)/samples_per_frame;
- for (i = 0; i < m_coeff->num_k; i++)
- m_current_k[i] += (((m_target_k[i] - m_current_k[i])*(1-inhibit_state))*current_sample)/samples_per_frame;
}
- else // we're done, play this frame for 1/8 frame.
+ else // Not a new frame, just interpolate the existing frame.
{
- m_current_energy = m_target_energy;
- m_current_pitch = m_target_pitch;
+ int inhibit_state = ((m_inhibit==1)&&(m_IP != 0)); // disable inhibit when reaching the last interp period, but don't overwrite the m_inhibit value
+#ifdef PERFECT_INTERPOLATION_HACK
+ int samples_per_frame = m_subc_reload?175:266; // either (13 A cycles + 12 B cycles) * 7 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 7 interps for SPKSLOW
+ //int samples_per_frame = m_subc_reload?200:304; // either (13 A cycles + 12 B cycles) * 8 interps for normal SPEAK/SPKEXT, or (13*2 A cycles + 12 B cycles) * 8 interps for SPKSLOW
+ int current_sample = (m_subcycle - m_subc_reload)+(m_PC*(3-m_subc_reload))+((m_subc_reload?25:38)*((m_IP-1)&7));
+ //fprintf(stderr, "CS: %03d", current_sample);
+ // reset the current energy, pitch, etc to what it was at frame start
+ m_current_energy = (m_coeff->energytable[m_old_frame_energy_idx] * (1-m_old_zpar));
+ m_current_pitch = (m_coeff->pitchtable[m_old_frame_pitch_idx] * (1-m_old_zpar));
for (i = 0; i < m_coeff->num_k; i++)
- m_current_k[i] = m_target_k[i];
- }
+ m_current_k[i] = (m_coeff->ktable[i][m_old_frame_k_idx[i]] * (1-((i<4)?m_old_zpar:m_old_uv_zpar)));
+ // now adjust each value to be exactly correct for each of the samples per frame
+ if (m_IP != 0) // if we're still interpolating...
+ {
+ m_current_energy = (m_current_energy + (((m_coeff->energytable[m_new_frame_energy_idx] - m_current_energy)*(1-inhibit_state))*current_sample)/samples_per_frame)*(1-m_zpar);
+ m_current_pitch = (m_current_pitch + (((m_coeff->pitchtable[m_new_frame_pitch_idx] - m_current_pitch)*(1-inhibit_state))*current_sample)/samples_per_frame)*(1-m_zpar);
+ for (i = 0; i < m_coeff->num_k; i++)
+ m_current_k[i] = (m_current_k[i] + (((m_coeff->ktable[i][m_new_frame_k_idx[i]] - m_current_k[i])*(1-inhibit_state))*current_sample)/samples_per_frame)*(1-((i<4)?m_zpar:m_uv_zpar));
+ }
+ else // we're done, play this frame for 1/8 frame.
+ {
+ if (m_subcycle == 2) m_pitch_zero = 0; // this reset happens around the second subcycle during IP=0
+ m_current_energy = (m_coeff->energytable[m_new_frame_energy_idx] * (1-m_zpar));
+ m_current_pitch = (m_coeff->pitchtable[m_new_frame_pitch_idx] * (1-m_zpar));
+ for (i = 0; i < m_coeff->num_k; i++)
+ m_current_k[i] = (m_coeff->ktable[i][m_new_frame_k_idx[i]] * (1-((i<4)?m_zpar:m_uv_zpar)));
+ }
#else
- //Updates to parameters only happen on subcycle '2' (B cycle) of PCs.
- if (m_subcycle == 2)
- {
- switch(m_PC)
+ //Updates to parameters only happen on subcycle '2' (B cycle) of PCs.
+ if (m_subcycle == 2)
{
- case 0: /* PC = 0, B cycle, write updated energy */
- m_current_energy += (((m_target_energy - m_current_energy)*(1-inhibit_state)) INTERP_SHIFT);
- break;
- case 1: /* PC = 1, B cycle, write updated pitch */
- m_current_pitch += (((m_target_pitch - m_current_pitch)*(1-inhibit_state)) INTERP_SHIFT);
- break;
- case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11:
- /* PC = 2 through 11, B cycle, write updated K1 through K10 */
- m_current_k[m_PC-2] += (((m_target_k[m_PC-2] - m_current_k[m_PC-2])*(1-inhibit_state)) INTERP_SHIFT);
- break;
- case 12: /* PC = 12, do nothing */
- break;
+ switch(m_PC)
+ {
+ case 0: /* PC = 0, B cycle, write updated energy */
+ if (m_IP==0) m_pitch_zero = 0; // this reset happens around the second subcycle during IP=0
+ m_current_energy = (m_current_energy + (((m_coeff->energytable[m_new_frame_energy_idx] - m_current_energy)*(1-inhibit_state)) INTERP_SHIFT))*(1-m_zpar);
+ break;
+ case 1: /* PC = 1, B cycle, write updated pitch */
+ m_current_pitch = (m_current_pitch + (((m_coeff->pitchtable[m_new_frame_pitch_idx] - m_current_pitch)*(1-inhibit_state)) INTERP_SHIFT))*(1-m_zpar);
+ break;
+ case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11:
+ /* PC = 2 through 11, B cycle, write updated K1 through K10 */
+ m_current_k[m_PC-2] = (m_current_k[m_PC-2] + (((m_coeff->ktable[m_PC-2][m_new_frame_k_idx[m_PC-2]] - m_current_k[m_PC-2])*(1-inhibit_state)) INTERP_SHIFT))*(1-(((m_PC-2)<4)?m_zpar:m_uv_zpar));
+ break;
+ case 12: /* PC = 12 */
+ /* we should NEVER reach this point, PC=12 doesn't have a subcycle 2 */
+ break;
+ }
}
- }
#endif
- }
+ }
- // calculate the output
- if (OLD_FRAME_UNVOICED_FLAG == 1)
- {
- // generate unvoiced samples here
- if (m_RNG & 1)
- m_excitation_data = ~0x3F; /* according to the patent it is (either + or -) half of the maximum value in the chirp table, so either 01000000(0x40) or 11000000(0xC0)*/
- else
- m_excitation_data = 0x40;
- }
- else /* (OLD_FRAME_UNVOICED_FLAG == 0) */
- {
- // generate voiced samples here
- /* US patent 4331836 Figure 14B shows, and logic would hold, that a pitch based chirp
- * function has a chirp/peak and then a long chain of zeroes.
- * The last entry of the chirp rom is at address 0b110011 (51d), the 52nd sample,
- * and if the address reaches that point the ADDRESS incrementer is
- * disabled, forcing all samples beyond 51d to be == 51d
- */
- if (m_pitch_count >= 51)
- m_excitation_data = (INT8)m_coeff->chirptable[51];
- else /*m_pitch_count < 51*/
- m_excitation_data = (INT8)m_coeff->chirptable[m_pitch_count];
- }
+ // calculate the output
+ if (OLD_FRAME_UNVOICED_FLAG == 1)
+ {
+ // generate unvoiced samples here
+ if (m_RNG & 1)
+ m_excitation_data = ~0x3F; /* according to the patent it is (either + or -) half of the maximum value in the chirp table, so either 01000000(0x40) or 11000000(0xC0)*/
+ else
+ m_excitation_data = 0x40;
+ }
+ else /* (OLD_FRAME_UNVOICED_FLAG == 0) */
+ {
+ // generate voiced samples here
+ /* US patent 4331836 Figure 14B shows, and logic would hold, that a pitch based chirp
+ * function has a chirp/peak and then a long chain of zeroes.
+ * The last entry of the chirp rom is at address 0b110011 (51d), the 52nd sample,
+ * and if the address reaches that point the ADDRESS incrementer is
+ * disabled, forcing all samples beyond 51d to be == 51d
+ */
+ if (m_pitch_count >= 51)
+ m_excitation_data = (INT8)m_coeff->chirptable[51];
+ else /*m_pitch_count < 51*/
+ m_excitation_data = (INT8)m_coeff->chirptable[m_pitch_count];
+ }
- // Update LFSR *20* times every sample (once per T cycle), like patent shows
- for (i=0; i<20; i++)
- {
- bitout = ((m_RNG >> 12) & 1) ^
- ((m_RNG >> 3) & 1) ^
- ((m_RNG >> 2) & 1) ^
- ((m_RNG >> 0) & 1);
- m_RNG <<= 1;
- m_RNG |= bitout;
- }
- this_sample = lattice_filter(); /* execute lattice filter */
+ // Update LFSR *20* times every sample (once per T cycle), like patent shows
+ for (i=0; i<20; i++)
+ {
+ bitout = ((m_RNG >> 12) & 1) ^
+ ((m_RNG >> 3) & 1) ^
+ ((m_RNG >> 2) & 1) ^
+ ((m_RNG >> 0) & 1);
+ m_RNG <<= 1;
+ m_RNG |= bitout;
+ }
+ this_sample = lattice_filter(); /* execute lattice filter */
#ifdef DEBUG_GENERATION_VERBOSE
- //fprintf(stderr,"C:%01d; ",m_subcycle);
- fprintf(stderr,"IP:%01d PC:%02d X:%04d E:%03d P:%03d Pc:%03d ",m_IP, m_PC, m_excitation_data, m_current_energy, m_current_pitch, m_pitch_count);
- //fprintf(stderr,"X:%04d E:%03d P:%03d Pc:%03d ", m_excitation_data, m_current_energy, m_current_pitch, m_pitch_count);
- for (i=0; i<10; i++)
- fprintf(stderr,"K%d:%04d ", i+1, m_current_k[i]);
- fprintf(stderr,"Out:%06d", this_sample);
- fprintf(stderr,"\n");
+ //fprintf(stderr,"C:%01d; ",m_subcycle);
+ fprintf(stderr,"IP:%01d PC:%02d X:%04d E:%03d P:%03d Pc:%03d ",m_IP, m_PC, m_excitation_data, m_current_energy, m_current_pitch, m_pitch_count);
+ //fprintf(stderr,"X:%04d E:%03d P:%03d Pc:%03d ", m_excitation_data, m_current_energy, m_current_pitch, m_pitch_count);
+ for (i=0; i<10; i++)
+ fprintf(stderr,"K%d:%04d ", i+1, m_current_k[i]);
+ fprintf(stderr,"Out:%06d ", this_sample);
+//#ifdef PERFECT_INTERPOLATION_HACK
+// fprintf(stderr,"%d%d%d%d",m_old_zpar,m_zpar,m_old_uv_zpar,m_uv_zpar);
+//#else
+// fprintf(stderr,"x%dx%d",m_zpar,m_uv_zpar);
+//#endif
+ fprintf(stderr,"\n");
#endif
- /* next, force result to 14 bits (since its possible that the addition at the final (k1) stage of the lattice overflowed) */
- while (this_sample > 16383) this_sample -= 32768;
- while (this_sample < -16384) this_sample += 32768;
- if (m_digital_select == 0) // analog SPK pin output is only 8 bits, with clipping
- buffer[buf_count] = clip_analog(this_sample);
- else // digital I/O pin output is 12 bits
- {
+ /* next, force result to 14 bits (since its possible that the addition at the final (k1) stage of the lattice overflowed) */
+ while (this_sample > 16383) this_sample -= 32768;
+ while (this_sample < -16384) this_sample += 32768;
+ if (m_digital_select == 0) // analog SPK pin output is only 8 bits, with clipping
+ buffer[buf_count] = clip_analog(this_sample);
+ else // digital I/O pin output is 12 bits
+ {
#ifdef ALLOW_4_LSB
- // input: ssss ssss ssss ssss ssnn nnnn nnnn nnnn
- // N taps: ^ = 0x2000;
- // output: ssss ssss ssss ssss snnn nnnn nnnn nnnN
- buffer[buf_count] = (this_sample<<1)|((this_sample&0x2000)>>13);
+ // input: ssss ssss ssss ssss ssnn nnnn nnnn nnnn
+ // N taps: ^ = 0x2000;
+ // output: ssss ssss ssss ssss snnn nnnn nnnn nnnN
+ buffer[buf_count] = (this_sample<<1)|((this_sample&0x2000)>>13);
#else
- this_sample &= ~0xF;
- // input: ssss ssss ssss ssss ssnn nnnn nnnn 0000
- // N taps: ^^ ^^^ = 0x3E00;
- // output: ssss ssss ssss ssss snnn nnnn nnnN NNNN
- buffer[buf_count] = (this_sample<<1)|((this_sample&0x3E00)>>9);
+ this_sample &= ~0xF;
+ // input: ssss ssss ssss ssss ssnn nnnn nnnn 0000
+ // N taps: ^^ ^^^ = 0x3E00;
+ // output: ssss ssss ssss ssss snnn nnnn nnnN NNNN
+ buffer[buf_count] = (this_sample<<1)|((this_sample&0x3E00)>>9);
#endif
- }
- // Update all counts
-
- m_subcycle++;
- if ((m_subcycle == 2) && (m_PC == 12))
- {
- /* Circuit 412 in the patent acts a reset, resetting the pitch counter to 0
- * if INHIBIT was true during the most recent frame transition.
- * The exact time this occurs is betwen IP=7, PC=12 sub=0, T=t12
- * and m_IP = 0, PC=0 sub=0, T=t12, a period of exactly 20 cycles,
- * which overlaps the time OLDE and OLDP are updated at IP=7 PC=12 T17
- * (and hence INHIBIT itself 2 t-cycles later). We do it here because it is
- * convenient and should make no difference in output.
- */
- if ((m_IP == 7)&&(m_inhibit==1)) m_pitch_count = 0;
- m_subcycle = m_subc_reload;
- m_PC = 0;
- m_IP++;
- m_IP&=0x7;
- }
- else if (m_subcycle == 3)
- {
- m_subcycle = m_subc_reload;
- m_PC++;
- }
- m_pitch_count++;
- if (m_pitch_count >= m_current_pitch) m_pitch_count = 0;
- m_pitch_count &= 0x1FF;
- buf_count++;
- size--;
- }
-
-empty:
+ }
+ // Update all counts
- while (size > 0)
- {
- m_subcycle++;
- if ((m_subcycle == 2) && (m_PC == 12))
- {
- m_subcycle = m_subc_reload;
- m_PC = 0;
- m_IP++;
- m_IP&=0x7;
+ m_subcycle++;
+ if ((m_subcycle == 2) && (m_PC == 12)) // RESETF3
+ {
+ /* Circuit 412 in the patent acts a reset, resetting the pitch counter to 0
+ * if INHIBIT was true during the most recent frame transition.
+ * The exact time this occurs is betwen IP=7, PC=12 sub=0, T=t12
+ * and m_IP = 0, PC=0 sub=0, T=t12, a period of exactly 20 cycles,
+ * which overlaps the time OLDE and OLDP are updated at IP=7 PC=12 T17
+ * (and hence INHIBIT itself 2 t-cycles later).
+ * According to testing the pitch zeroing lasts approximately 2 samples.
+ * We set the zeroing latch here, and unset it on PC=1 in the generator.
+ */
+ if ((m_IP == 7)&&(m_inhibit==1)) m_pitch_zero = 1;
+ if (m_IP == 7) // RESETL4
+ {
+ // Latch OLDE and OLDP
+ //if (OLD_FRAME_SILENCE_FLAG) m_uv_zpar = 0; // TMS51xx INTERP BUG2
+ OLD_FRAME_SILENCE_FLAG = NEW_FRAME_SILENCE_FLAG; // m_OLDE
+ OLD_FRAME_UNVOICED_FLAG = NEW_FRAME_UNVOICED_FLAG; // m_OLDP
+ /* if TALK was clear last frame, halt speech now, since TALKD (latched from TALK on new frame) just went inactive. */
+#ifdef DEBUG_GENERATION
+ fprintf(stderr,"RESETL4, about to update status: IP=%d, PC=%d, subcycle=%d, m_SPEN=%d, m_TALK=%d, m_TALKD=%d\n", m_IP, m_PC, m_subcycle, m_SPEN, m_TALK, m_TALKD);
+#endif
+#ifdef DEBUG_GENERATION
+ if ((!m_TALK) && (!m_SPEN))
+ fprintf(stderr,"tms5220_process: processing frame: TALKD = 0 caused by stop frame or buffer empty, halting speech.\n");
+#endif
+ m_TALKD = m_TALK; // TALKD is latched from TALK
+ update_fifo_status_and_ints(); // to trigger an interrupt if TALK_STATUS has changed
+ if ((!m_TALK) && m_SPEN) m_TALK = 1; // TALK is only activated if it wasn't already active, if m_SPEN is active, and if we're in RESETL4 (which we are).
+#ifdef DEBUG_GENERATION
+ fprintf(stderr,"RESETL4, status updated: IP=%d, PC=%d, subcycle=%d, m_SPEN=%d, m_TALK=%d, m_TALKD=%d\n", m_IP, m_PC, m_subcycle, m_SPEN, m_TALK, m_TALKD);
+#endif
+ }
+ m_subcycle = m_subc_reload;
+ m_PC = 0;
+ m_IP++;
+ m_IP&=0x7;
+ }
+ else if (m_subcycle == 3)
+ {
+ m_subcycle = m_subc_reload;
+ m_PC++;
+ }
+ m_pitch_count++;
+ if ((m_pitch_count >= m_current_pitch)||(m_pitch_zero == 1)) m_pitch_count = 0;
+ m_pitch_count &= 0x1FF;
}
- else if (m_subcycle == 3)
+ else // m_TALKD == 0
{
- m_subcycle = m_subc_reload;
- m_PC++;
+ m_subcycle++;
+ if ((m_subcycle == 2) && (m_PC == 12)) // RESETF3
+ {
+ if (m_IP == 7) // RESETL4
+ {
+ m_TALKD = m_TALK; // TALKD is latched from TALK
+ update_fifo_status_and_ints(); // probably not necessary
+ if ((!m_TALK) && m_SPEN) m_TALK = 1; // TALK is only activated if it wasn't already active, if m_SPEN is active, and if we're in RESETL4 (which we are).
+ }
+ m_subcycle = m_subc_reload;
+ m_PC = 0;
+ m_IP++;
+ m_IP&=0x7;
+ }
+ else if (m_subcycle == 3)
+ {
+ m_subcycle = m_subc_reload;
+ m_PC++;
+ }
+ buffer[buf_count] = -1; /* should be just -1; actual chip outputs -1 every idle sample; (cf note in data sheet, p 10, table 4) */
}
- buffer[buf_count] = -1; /* should be just -1; actual chip outputs -1 every idle sample; (cf note in data sheet, p 10, table 4) */
- buf_count++;
- size--;
+ buf_count++;
+ size--;
}
}
@@ -1157,6 +1161,7 @@ INT32 tms5220_device::lattice_filter()
void tms5220_device::process_command(unsigned char cmd)
{
+ int i;
#ifdef DEBUG_COMMAND_DUMP
fprintf(stderr,"process_command called with parameter %02X\n",cmd);
#endif
@@ -1164,7 +1169,7 @@ void tms5220_device::process_command(unsigned char cmd)
switch (cmd & 0x70)
{
case 0x10 : /* read byte */
- if (m_talk_status == 0) /* TALKST must be clear for RDBY */
+ if (TALK_STATUS == 0) /* TALKST must be clear for RDBY */
{
if (m_schedule_dummy_read)
{
@@ -1186,10 +1191,10 @@ void tms5220_device::process_command(unsigned char cmd)
break;
case 0x30 : /* read and branch */
- if (m_talk_status == 0) /* TALKST must be clear for RB */
+ if (TALK_STATUS == 0) /* TALKST must be clear for RB */
{
#ifdef VERBOSE
- logerror("read and branch command received\n");
+ fprintf(stderr,"read and branch command received\n");
#endif
m_RDB_flag = FALSE;
if (m_speechrom)
@@ -1198,7 +1203,7 @@ void tms5220_device::process_command(unsigned char cmd)
break;
case 0x40 : /* load address */
- if (m_talk_status == 0) /* TALKST must be clear for LA */
+ if (TALK_STATUS == 0) /* TALKST must be clear for LA */
{
/* tms5220 data sheet says that if we load only one 4-bit nibble, it won't work.
This code does not care about this. */
@@ -1215,17 +1220,22 @@ void tms5220_device::process_command(unsigned char cmd)
if (m_speechrom)
m_speechrom->read(1);
}
- m_speaking_now = 1;
- m_speak_external = 0;
- m_talk_status = 1; /* start immediately */
- /* clear out variables before speaking */
- // TODO: similar to the victory case described above, but for VSM speech
- m_subcycle = m_subc_reload;
- m_PC = 0;
- m_IP = reload_table[m_c_variant_rate&0x3];
+ m_SPEN = 1;
+#ifdef FAST_START_HACK
+ m_TALK = 1;
+#endif
+ m_DDIS = 0;
+ m_zpar = 1; // zero all the parameters
+ m_uv_zpar = 1; // zero k4-k10 as well
+ m_OLDE = 1; // 'silence/zpar' frames are zero energy
+ m_OLDP = 1; // 'silence/zpar' frames are zero pitch
+#ifdef PERFECT_INTERPOLATION_HACK
+ m_old_zpar = 1; // zero all the old parameters
+ m_old_uv_zpar = 1; // zero old k4-k10 as well
+#endif
+ // following is semi-hack but matches idle state observed on chip
m_new_frame_energy_idx = 0;
m_new_frame_pitch_idx = 0;
- int i;
for (i = 0; i < 4; i++)
m_new_frame_k_idx[i] = 0;
for (i = 4; i < 7; i++)
@@ -1235,9 +1245,27 @@ void tms5220_device::process_command(unsigned char cmd)
break;
case 0x60 : /* speak external */
- //SPKEXT going active activates SPKEE which clears the fifo
+ // SPKEXT going active activates SPKEE which clears the fifo
m_fifo_head = m_fifo_tail = m_fifo_count = m_fifo_bits_taken = 0;
- m_speak_external = 1;
+ // SPEN is enabled when the fifo passes half full (falling edge of BL signal)
+ m_DDIS = 1;
+ m_zpar = 1; // zero all the parameters
+ m_uv_zpar = 1; // zero k4-k10 as well
+ m_OLDE = 1; // 'silence/zpar' frames are zero energy
+ m_OLDP = 1; // 'silence/zpar' frames are zero pitch
+#ifdef PERFECT_INTERPOLATION_HACK
+ m_old_zpar = 1; // zero all the old parameters
+ m_old_uv_zpar = 1; // zero old k4-k10 as well
+#endif
+ // following is semi-hack but matches idle state observed on chip
+ m_new_frame_energy_idx = 0;
+ m_new_frame_pitch_idx = 0;
+ for (i = 0; i < 4; i++)
+ m_new_frame_k_idx[i] = 0;
+ for (i = 4; i < 7; i++)
+ m_new_frame_k_idx[i] = 0xF;
+ for (i = 7; i < m_coeff->num_k; i++)
+ m_new_frame_k_idx[i] = 0x7;
m_RDB_flag = FALSE;
break;
@@ -1264,7 +1292,14 @@ void tms5220_device::process_command(unsigned char cmd)
void tms5220_device::parse_frame()
{
- int indx, i, rep_flag;
+ int i, rep_flag;
+#ifdef PERFECT_INTERPOLATION_HACK
+ m_old_uv_zpar = m_uv_zpar;
+ m_old_zpar = m_zpar;
+#endif
+ // since we're parsing a frame, we must be talking, so clear zpar here
+ // before we start parsing a frame, the P=0 and E=0 latches were both reset by RESETL4, so clear m_uv_zpar here
+ m_uv_zpar = m_zpar = 0;
// We actually don't care how many bits are left in the fifo here; the frame subpart will be processed normally, and any bits extracted 'past the end' of the fifo will be read as zeroes; the fifo being emptied will set the /BE latch which will halt speech exactly as if a stop frame had been encountered (instead of whatever partial frame was read); the same exact circuitry is used for both on the real chip, see us patent 4335277 sheet 16, gates 232a (decode stop frame) and 232b (decode /BE plus DDIS (decode disable) which is active during speak external).
@@ -1272,18 +1307,18 @@ void tms5220_device::parse_frame()
has a 2 bit rate preceding it, grab two bits here and store them as the rate; */
if ((TMS5220_HAS_RATE_CONTROL) && (m_c_variant_rate & 0x04))
{
- indx = extract_bits(2);
+ i = extract_bits(2);
#ifdef DEBUG_PARSE_FRAME_DUMP
- printbits(indx,2);
+ printbits(i,2);
fprintf(stderr," ");
#endif
- m_IP = reload_table[indx];
+ m_IP = reload_table[i];
}
else // non-5220C and 5220C in fixed rate mode
m_IP = reload_table[m_c_variant_rate&0x3];
update_fifo_status_and_ints();
- if (!m_talk_status) goto ranout;
+ if (m_DDIS && m_buffer_empty) goto ranout;
// attempt to extract the energy index
m_new_frame_energy_idx = extract_bits(m_coeff->energy_bits);
@@ -1292,7 +1327,7 @@ void tms5220_device::parse_frame()
fprintf(stderr," ");
#endif
update_fifo_status_and_ints();
- if (!m_talk_status) goto ranout;
+ if (m_DDIS && m_buffer_empty) goto ranout;
// if the energy index is 0 or 15, we're done
if ((m_new_frame_energy_idx == 0) || (m_new_frame_energy_idx == 15))
return;
@@ -1311,8 +1346,10 @@ void tms5220_device::parse_frame()
printbits(m_new_frame_pitch_idx,m_coeff->pitch_bits);
fprintf(stderr," ");
#endif
+ // if the new frame is unvoiced, be sure to zero out the k5-k10 parameters
+ m_uv_zpar = NEW_FRAME_UNVOICED_FLAG;
update_fifo_status_and_ints();
- if (!m_talk_status) goto ranout;
+ if (m_DDIS && m_buffer_empty) goto ranout;
// if this is a repeat frame, just do nothing, it will reuse the old coefficients
if (rep_flag)
return;
@@ -1326,7 +1363,7 @@ void tms5220_device::parse_frame()
fprintf(stderr," ");
#endif
update_fifo_status_and_ints();
- if (!m_talk_status) goto ranout;
+ if (m_DDIS && m_buffer_empty) goto ranout;
}
// if the pitch index was zero, we only need 4 K's...
@@ -1345,19 +1382,22 @@ void tms5220_device::parse_frame()
fprintf(stderr," ");
#endif
update_fifo_status_and_ints();
- if (!m_talk_status) goto ranout;
+ if (m_DDIS && m_buffer_empty) goto ranout;
}
+#ifdef DEBUG_PARSE_FRAME_DUMP
+ fprintf(stderr,"\n");
+#endif
#ifdef VERBOSE
- if (m_speak_external)
- logerror("Parsed a frame successfully in FIFO - %d bits remaining\n", (m_fifo_count*8)-(m_fifo_bits_taken));
+ if (m_DDIS)
+ fprintf(stderr,"Parsed a frame successfully in FIFO - %d bits remaining\n", (m_fifo_count*8)-(m_fifo_bits_taken));
else
- logerror("Parsed a frame successfully in ROM\n");
+ fprintf(stderr,"Parsed a frame successfully in ROM\n");
#endif
return;
ranout:
#ifdef DEBUG_FRAME_ERRORS
- logerror("Ran out of bits on a parse!\n");
+ fprintf(stderr,"Ran out of bits on a parse!\n");
#endif
return;
}
@@ -1372,7 +1412,7 @@ void tms5220_device::set_interrupt_state(int state)
{
if (!TMS5220_IS_52xx) return; // bail out if not a 52xx chip, since there's no int pin
#ifdef DEBUG_PIN_READS
- logerror("irq pin set to state %d\n", state);
+ fprintf(stderr,"irq pin set to state %d\n", state);
#endif
if (!m_irq_handler.isnull() && state != m_irq_pin)
m_irq_handler(!state);
@@ -1389,7 +1429,7 @@ void tms5220_device::update_ready_state()
{
int state = ready_read();
#ifdef DEBUG_PIN_READS
- logerror("ready pin set to state %d\n", state);
+ fprintf(stderr,"ready pin set to state %d\n", state);
#endif
if (!m_readyq_handler.isnull() && state != m_ready_pin)
m_readyq_handler(!state);
@@ -1489,7 +1529,7 @@ void tms5220_device::device_reset()
/* initialize the chip state */
/* Note that we do not actually clear IRQ on start-up : IRQ is even raised if m_buffer_empty or m_buffer_low are 0 */
- m_speaking_now = m_speak_external = m_talk_status = m_irq_pin = m_ready_pin = 0;
+ m_SPEN = m_DDIS = m_TALK = m_TALKD = m_previous_TALK_STATUS = m_irq_pin = m_ready_pin = 0;
set_interrupt_state(0);
update_ready_state();
m_buffer_empty = m_buffer_low = 1;
@@ -1500,12 +1540,13 @@ void tms5220_device::device_reset()
#ifdef PERFECT_INTERPOLATION_HACK
m_old_frame_energy_idx = m_old_frame_pitch_idx = 0;
memset(m_old_frame_k_idx, 0, sizeof(m_old_frame_k_idx));
+ m_old_zpar = 0;
#endif
- m_new_frame_energy_idx = m_current_energy = m_target_energy = m_previous_energy = 0;
- m_new_frame_pitch_idx = m_current_pitch = m_target_pitch = 0;
+ m_new_frame_energy_idx = m_current_energy = m_previous_energy = 0;
+ m_new_frame_pitch_idx = m_current_pitch = 0;
+ m_zpar = m_uv_zpar = 0;
memset(m_new_frame_k_idx, 0, sizeof(m_new_frame_k_idx));
memset(m_current_k, 0, sizeof(m_current_k));
- memset(m_target_k, 0, sizeof(m_target_k));
/* initialize the sample generators */
m_inhibit = 1;
@@ -1549,7 +1590,7 @@ void tms5220_device::device_timer(emu_timer &timer, device_timer_id id, int para
/* Write */
/* bring up to date first */
#ifdef DEBUG_IO_READY
- logerror("Serviced write: %02x\n", m_write_latch);
+ fprintf(stderr,"Serviced write: %02x\n", m_write_latch);
//fprintf(stderr, "Processed write data: %02X\n", m_write_latch);
#endif
m_stream->update();
@@ -1585,7 +1626,7 @@ WRITE_LINE_MEMBER( tms5220_device::rsq_w )
m_true_timing = 1;
state &= 0x01;
#ifdef DEBUG_RS_WS
- logerror("/RS written with data: %d\n", state);
+ fprintf(stderr,"/RS written with data: %d\n", state);
#endif
new_val = (m_rs_ws & 0x01) | (state<<1);
if (new_val != m_rs_ws)
@@ -1598,7 +1639,7 @@ WRITE_LINE_MEMBER( tms5220_device::rsq_w )
#ifdef DEBUG_RS_WS
else
/* illegal */
- logerror("tms5220_rs_w: illegal\n");
+ fprintf(stderr,"tms5220_rs_w: illegal\n");
#endif
return;
}
@@ -1616,7 +1657,7 @@ WRITE_LINE_MEMBER( tms5220_device::rsq_w )
{
/* high to low - schedule ready cycle */
#ifdef DEBUG_RS_WS
- logerror("Scheduling ready cycle for /RS...\n");
+ fprintf(stderr,"Scheduling ready cycle for /RS...\n");
#endif
/* upon /RS being activated, /READY goes inactive after 100 nsec from data sheet, through 3 asynchronous gates on patent. This is effectively within one clock, so we immediately set io_ready to 0 and activate the callback. */
m_io_ready = 0;
@@ -1637,7 +1678,7 @@ WRITE_LINE_MEMBER( tms5220_device::wsq_w )
m_true_timing = 1;
state &= 0x01;
#ifdef DEBUG_RS_WS
- logerror("/WS written with data: %d\n", state);
+ fprintf(stderr,"/WS written with data: %d\n", state);
#endif
new_val = (m_rs_ws & 0x02) | (state<<0);
if (new_val != m_rs_ws)
@@ -1650,7 +1691,7 @@ WRITE_LINE_MEMBER( tms5220_device::wsq_w )
#ifdef DEBUG_RS_WS
else
/* illegal */
- logerror("tms5220_ws_w: illegal\n");
+ fprintf(stderr,"tms5220_ws_w: illegal\n");
#endif
return;
}
@@ -1668,7 +1709,7 @@ WRITE_LINE_MEMBER( tms5220_device::wsq_w )
{
/* high to low - schedule ready cycle */
#ifdef DEBUG_RS_WS
- logerror("Scheduling ready cycle for /WS...\n");
+ fprintf(stderr,"Scheduling ready cycle for /WS...\n");
#endif
/* upon /WS being activated, /READY goes inactive after 100 nsec from data sheet, through 3 asynchronous gates on patent. This is effectively within one clock, so we immediately set io_ready to 0 and activate the callback. */
m_io_ready = 0;
@@ -1701,7 +1742,7 @@ WRITE8_MEMBER( tms5220_device::data_w )
if (space.debugger_access()) return;
#ifdef DEBUG_RS_WS
- logerror("tms5220_data_w: data %02x\n", data);
+ fprintf(stderr,"tms5220_data_w: data %02x\n", data);
#endif
if (!m_true_timing)
{
@@ -1714,7 +1755,7 @@ WRITE8_MEMBER( tms5220_device::data_w )
/* actually in a write ? */
#ifdef DEBUG_RS_WS
if (!(m_rs_ws == 0x02))
- logerror("tms5220_data_w: data written outside ws, status: %02x!\n", m_rs_ws);
+ fprintf(stderr,"tms5220_data_w: data written outside ws, status: %02x!\n", m_rs_ws);
#endif
m_write_latch = data;
}
@@ -1746,7 +1787,7 @@ READ8_MEMBER( tms5220_device::status_r )
return m_read_latch;
#ifdef DEBUG_RS_WS
else
- logerror("tms5220_status_r: data read outside rs!\n");
+ fprintf(stderr,"tms5220_status_r: data read outside rs!\n");
#endif
return 0xff;
}
diff --git a/src/emu/sound/tms5220.h b/src/devices/sound/tms5220.h
index 7150ce5457b..12edc66e5c3 100644
--- a/src/emu/sound/tms5220.h
+++ b/src/devices/sound/tms5220.h
@@ -105,9 +105,12 @@ private:
/* these contain global status bits */
- UINT8 m_speaking_now; /* True only if actual speech is being generated right now. Is set when a speak vsm command happens OR when speak external happens and buffer low becomes nontrue; Is cleared when speech halts after the last stop frame or the last frame after talk status is otherwise cleared.*/
- UINT8 m_speak_external; /* If 1, DDIS is 1, i.e. Speak External command in progress, writes go to FIFO. */
- UINT8 m_talk_status; /* If 1, TS status bit is 1, i.e. speak or speak external is in progress and we have not encountered a stop frame yet; talk_status differs from speaking_now in that speaking_now is set as soon as a speak or speak external command is started; talk_status does NOT go active until after 8 bytes are written to the fifo on a speak external command, otherwise the two are the same. TS is cleared by 3 things: 1. when a STOP command has just been processed as a new frame in the speech stream; 2. if the fifo runs out in speak external mode; 3. on power-up/during a reset command; When it gets cleared, speak_external is also cleared, an interrupt is generated, and speaking_now will be cleared when the next frame starts. */
+ UINT8 m_previous_TALK_STATUS; /* this is the OLD value of TALK_STATUS (i.e. previous value of m_SPEN|m_TALKD), needed for generating interrupts on a falling TALK_STATUS edge */
+ UINT8 m_SPEN; /* set on speak(or speak external and BL falling edge) command, cleared on stop command, reset command, or buffer out */
+ UINT8 m_DDIS; /* If 1, DDIS is 1, i.e. Speak External command in progress, writes go to FIFO. */
+ UINT8 m_TALK; /* set on SPEN & RESETL4(pc12->pc0 transition), cleared on stop command or reset command */
+#define TALK_STATUS (m_SPEN|m_TALKD)
+ UINT8 m_TALKD; /* TALK(TCON) value, latched every RESETL4 */
UINT8 m_buffer_low; /* If 1, FIFO has less than 8 bytes in it */
UINT8 m_buffer_empty; /* If 1, FIFO is empty */
UINT8 m_irq_pin; /* state of the IRQ pin (output) */
@@ -132,22 +135,16 @@ private:
INT16 m_current_energy;
INT16 m_current_pitch;
INT16 m_current_k[10];
-
- INT16 m_target_energy;
- INT16 m_target_pitch;
- INT16 m_target_k[10];
#else
UINT8 m_old_frame_energy_idx;
UINT8 m_old_frame_pitch_idx;
UINT8 m_old_frame_k_idx[10];
+ UINT8 m_old_zpar;
+ UINT8 m_old_uv_zpar;
INT32 m_current_energy;
INT32 m_current_pitch;
INT32 m_current_k[10];
-
- INT32 m_target_energy;
- INT32 m_target_pitch;
- INT32 m_target_k[10];
#endif
UINT16 m_previous_energy; /* needed for lattice filter to match patent */
@@ -155,16 +152,19 @@ private:
UINT8 m_subcycle; /* contains the current subcycle for a given PC: 0 is A' (only used on SPKSLOW mode on 51xx), 1 is A, 2 is B */
UINT8 m_subc_reload; /* contains 1 for normal speech, 0 when SPKSLOW is active */
UINT8 m_PC; /* current parameter counter (what param is being interpolated), ranges from 0 to 12 */
- /* TODO/NOTE: the current interpolation period, counts 1,2,3,4,5,6,7,0 for divide by 8,8,8,4,4,2,2,1 */
+ /* NOTE: the interpolation period counts 1,2,3,4,5,6,7,0 for divide by 8,8,8,4,4,2,2,1 */
UINT8 m_IP; /* the current interpolation period */
UINT8 m_inhibit; /* If 1, interpolation is inhibited until the DIV1 period */
+ UINT8 m_uv_zpar; /* If 1, zero k5 thru k10 coefficients */
+ UINT8 m_zpar; /* If 1, zero ALL parameters. */
+ UINT8 m_pitch_zero; /* circuit 412; pitch is forced to zero under certain circumstances */
UINT8 m_c_variant_rate; /* only relevant for tms5220C's multi frame rate feature; is the actual 4 bit value written on a 0x2* or 0x0* command */
UINT16 m_pitch_count; /* pitch counter; provides chirp rom address */
INT32 m_u[11];
INT32 m_x[10];
- UINT16 m_RNG; /* the random noise generator configuration is: 1 + x + x^3 + x^4 + x^13 */
+ UINT16 m_RNG; /* the random noise generator configuration is: 1 + x + x^3 + x^4 + x^13 TODO: no it isn't */
INT16 m_excitation_data;
/* R Nabet : These have been added to emulate speech Roms */
@@ -172,6 +172,15 @@ private:
UINT8 m_data_register; /* data register, used by read command */
UINT8 m_RDB_flag; /* whether we should read data register or status register */
+ /* The TMS52xx has two different ways of providing output data: the
+ analog speaker pin (which was usually used) and the Digital I/O pin.
+ The internal DAC used to feed the analog pin is only 8 bits, and has the
+ funny clipping/clamping logic, while the digital pin gives full 10 bit
+ resolution of the output data.
+ TODO: add a way to set/reset this other than the FORCE_DIGITAL define
+ */
+ UINT8 m_digital_select;
+
/* io_ready: page 3 of the datasheet specifies that READY will be asserted until
* data is available or processed by the system.
*/
@@ -185,15 +194,6 @@ private:
UINT8 m_read_latch;
UINT8 m_write_latch;
- /* The TMS52xx has two different ways of providing output data: the
- analog speaker pin (which was usually used) and the Digital I/O pin.
- The internal DAC used to feed the analog pin is only 8 bits, and has the
- funny clipping/clamping logic, while the digital pin gives full 10 bit
- resolution of the output data.
- TODO: add a way to set/reset this other than the FORCE_DIGITAL define
- */
- UINT8 m_digital_select;
-
sound_stream *m_stream;
int m_clock;
emu_timer *m_timer_io_ready;
diff --git a/src/emu/sound/tms5220.txt b/src/devices/sound/tms5220.txt
index d7a8b1a178c..d7a8b1a178c 100644
--- a/src/emu/sound/tms5220.txt
+++ b/src/devices/sound/tms5220.txt
diff --git a/src/emu/sound/upd7752.c b/src/devices/sound/upd7752.c
index bebe180f722..bebe180f722 100644
--- a/src/emu/sound/upd7752.c
+++ b/src/devices/sound/upd7752.c
diff --git a/src/emu/sound/upd7752.h b/src/devices/sound/upd7752.h
index eabd705e047..eabd705e047 100644
--- a/src/emu/sound/upd7752.h
+++ b/src/devices/sound/upd7752.h
diff --git a/src/emu/sound/upd7759.c b/src/devices/sound/upd7759.c
index ff8accd0cb4..4b7d4e13a18 100644
--- a/src/emu/sound/upd7759.c
+++ b/src/devices/sound/upd7759.c
@@ -143,23 +143,6 @@
#define FRAC_ONE (1 << FRAC_BITS)
#define FRAC_MASK (FRAC_ONE - 1)
-/* chip states */
-enum
-{
- STATE_IDLE,
- STATE_DROP_DRQ,
- STATE_START,
- STATE_FIRST_REQ,
- STATE_LAST_SAMPLE,
- STATE_DUMMY1,
- STATE_ADDR_MSB,
- STATE_ADDR_LSB,
- STATE_DUMMY2,
- STATE_BLOCK_HEADER,
- STATE_NIBBLE_COUNT,
- STATE_NIBBLE_MSN,
- STATE_NIBBLE_LSN
-};
upd775x_device::upd775x_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
@@ -204,6 +187,14 @@ upd7759_device::upd7759_device(const machine_config &mconfig, const char *tag, d
{
}
+
+upd7759_device::upd7759_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : upd775x_device(mconfig, type, name, tag, owner, clock, shortname, source),
+ m_timer(NULL)
+{
+}
+
+
const device_type UPD7756 = &device_creator<upd7756_device>;
upd7756_device::upd7756_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
diff --git a/src/emu/sound/upd7759.h b/src/devices/sound/upd7759.h
index cb19c2f2646..94286e7cd57 100644
--- a/src/emu/sound/upd7759.h
+++ b/src/devices/sound/upd7759.h
@@ -5,6 +5,23 @@
#ifndef __UPD7759_H__
#define __UPD7759_H__
+/* chip states */
+enum
+{
+ STATE_IDLE,
+ STATE_DROP_DRQ,
+ STATE_START,
+ STATE_FIRST_REQ,
+ STATE_LAST_SAMPLE,
+ STATE_DUMMY1,
+ STATE_ADDR_MSB,
+ STATE_ADDR_LSB,
+ STATE_DUMMY2,
+ STATE_BLOCK_HEADER,
+ STATE_NIBBLE_COUNT,
+ STATE_NIBBLE_MSN,
+ STATE_NIBBLE_LSN
+};
/* NEC uPD7759/55/56/P56/57/58 ADPCM Speech Processor */
@@ -29,7 +46,7 @@ public:
DECLARE_WRITE_LINE_MEMBER( reset_w );
DECLARE_READ_LINE_MEMBER( busy_r );
- DECLARE_WRITE8_MEMBER( port_w );
+ virtual DECLARE_WRITE8_MEMBER( port_w );
void postload();
protected:
@@ -86,13 +103,14 @@ protected:
devcb_write_line m_drqcallback;
void update_adpcm(int data);
- void advance_state();
+ virtual void advance_state();
};
class upd7759_device : public upd775x_device
{
public:
upd7759_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ upd7759_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
enum
{
diff --git a/src/emu/sound/vlm5030.c b/src/devices/sound/vlm5030.c
index 6a66cfab937..6a66cfab937 100644
--- a/src/emu/sound/vlm5030.c
+++ b/src/devices/sound/vlm5030.c
diff --git a/src/emu/sound/vlm5030.h b/src/devices/sound/vlm5030.h
index 94a5b846b39..94a5b846b39 100644
--- a/src/emu/sound/vlm5030.h
+++ b/src/devices/sound/vlm5030.h
diff --git a/src/emu/sound/votrax.c b/src/devices/sound/votrax.c
index f6b857c5dea..f6b857c5dea 100644
--- a/src/emu/sound/votrax.c
+++ b/src/devices/sound/votrax.c
diff --git a/src/emu/sound/votrax.h b/src/devices/sound/votrax.h
index 152c1a51f99..152c1a51f99 100644
--- a/src/emu/sound/votrax.h
+++ b/src/devices/sound/votrax.h
diff --git a/src/emu/sound/vrc6.c b/src/devices/sound/vrc6.c
index 91775d932b6..91775d932b6 100644
--- a/src/emu/sound/vrc6.c
+++ b/src/devices/sound/vrc6.c
diff --git a/src/emu/sound/vrc6.h b/src/devices/sound/vrc6.h
index db2cdffd542..db2cdffd542 100644
--- a/src/emu/sound/vrc6.h
+++ b/src/devices/sound/vrc6.h
diff --git a/src/emu/sound/vrender0.c b/src/devices/sound/vrender0.c
index b13f4556525..b13f4556525 100644
--- a/src/emu/sound/vrender0.c
+++ b/src/devices/sound/vrender0.c
diff --git a/src/emu/sound/vrender0.h b/src/devices/sound/vrender0.h
index 9baaefac203..9baaefac203 100644
--- a/src/emu/sound/vrender0.h
+++ b/src/devices/sound/vrender0.h
diff --git a/src/emu/sound/wave.c b/src/devices/sound/wave.c
index 6728b7cafab..76f9bdda8d6 100644
--- a/src/emu/sound/wave.c
+++ b/src/devices/sound/wave.c
@@ -16,7 +16,6 @@
****************************************************************************/
#include "emu.h"
-#include "imagedev/cassette.h"
#include "wave.h"
#define ALWAYS_PLAY_SOUND 0
@@ -60,6 +59,7 @@ void wave_device::device_start()
machine().sound().stream_alloc(*this, 0, 2, machine().sample_rate());
else
machine().sound().stream_alloc(*this, 0, 1, machine().sample_rate());
+ m_cass = machine().device<cassette_image_device>(m_cassette_tag);
}
//-------------------------------------------------
@@ -68,8 +68,6 @@ void wave_device::device_start()
void wave_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
{
- cassette_image_device *cass = machine().device<cassette_image_device>(m_cassette_tag);
- cassette_image *cassette;
cassette_state state;
double time_index;
double duration;
@@ -77,20 +75,20 @@ void wave_device::sound_stream_update(sound_stream &stream, stream_sample_t **in
stream_sample_t *right_buffer = NULL;
int i;
- speaker_device_iterator spkiter(cass->machine().root_device());
+ speaker_device_iterator spkiter(m_cass->machine().root_device());
int speakers = spkiter.count();
if (speakers>1)
right_buffer = outputs[1];
- state = cass->get_state();
+ state = m_cass->get_state();
state = (cassette_state)(state & (CASSETTE_MASK_UISTATE | CASSETTE_MASK_MOTOR | CASSETTE_MASK_SPEAKER));
- if (cass->exists() && (ALWAYS_PLAY_SOUND || (state == (CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED))))
+ if (m_cass->exists() && (ALWAYS_PLAY_SOUND || (state == (CASSETTE_PLAY | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED))))
{
- cassette = cass->get_image();
- time_index = cass->get_position();
- duration = ((double) samples) / cass->machine().sample_rate();
+ cassette_image *cassette = m_cass->get_image();
+ time_index = m_cass->get_position();
+ duration = ((double) samples) / m_cass->machine().sample_rate();
cassette_get_samples(cassette, 0, time_index, duration, samples, 2, left_buffer, CASSETTE_WAVEFORM_16BIT);
if (speakers > 1)
diff --git a/src/emu/sound/wave.h b/src/devices/sound/wave.h
index 77d78d95328..d4ff4865551 100644
--- a/src/emu/sound/wave.h
+++ b/src/devices/sound/wave.h
@@ -5,6 +5,8 @@
#ifndef __WAVE_H__
#define __WAVE_H__
+#include "imagedev/cassette.h"
+
/*****************************************************************************
* CassetteWave interface
@@ -28,6 +30,7 @@ protected:
private:
const char *m_cassette_tag;
+ cassette_image_device *m_cass;
};
extern const device_type WAVE;
diff --git a/src/emu/sound/x1_010.c b/src/devices/sound/x1_010.c
index 5d8377569bb..0ed9168e735 100644
--- a/src/emu/sound/x1_010.c
+++ b/src/devices/sound/x1_010.c
@@ -110,7 +110,7 @@ void x1_010_device::device_start()
int i;
m_base_clock = clock();
- m_rate = clock() / 1024;
+ m_rate = clock() / 512;
for( i = 0; i < SETA_NUM_CHANNELS; i++ ) {
m_smp_offset[i] = 0;
diff --git a/src/emu/sound/x1_010.h b/src/devices/sound/x1_010.h
index a5026124210..a5026124210 100644
--- a/src/emu/sound/x1_010.h
+++ b/src/devices/sound/x1_010.h
diff --git a/src/emu/sound/ym2151.c b/src/devices/sound/ym2151.c
index 804cbc5a6fd..804cbc5a6fd 100644
--- a/src/emu/sound/ym2151.c
+++ b/src/devices/sound/ym2151.c
diff --git a/src/emu/sound/ym2151.h b/src/devices/sound/ym2151.h
index 3d62ac278ac..3d62ac278ac 100644
--- a/src/emu/sound/ym2151.h
+++ b/src/devices/sound/ym2151.h
diff --git a/src/emu/sound/ym2151.txt b/src/devices/sound/ym2151.txt
index a28893ae3ff..a28893ae3ff 100644
--- a/src/emu/sound/ym2151.txt
+++ b/src/devices/sound/ym2151.txt
diff --git a/src/emu/sound/ym2413.c b/src/devices/sound/ym2413.c
index 631560912b0..631560912b0 100644
--- a/src/emu/sound/ym2413.c
+++ b/src/devices/sound/ym2413.c
diff --git a/src/emu/sound/ym2413.h b/src/devices/sound/ym2413.h
index eb9441bec5a..eb9441bec5a 100644
--- a/src/emu/sound/ym2413.h
+++ b/src/devices/sound/ym2413.h
diff --git a/src/emu/sound/ymdeltat.c b/src/devices/sound/ymdeltat.c
index 30600b2d02b..30600b2d02b 100644
--- a/src/emu/sound/ymdeltat.c
+++ b/src/devices/sound/ymdeltat.c
diff --git a/src/emu/sound/ymdeltat.h b/src/devices/sound/ymdeltat.h
index 28b5d535b32..28b5d535b32 100644
--- a/src/emu/sound/ymdeltat.h
+++ b/src/devices/sound/ymdeltat.h
diff --git a/src/emu/sound/ymf262.c b/src/devices/sound/ymf262.c
index 0982ae266e8..0982ae266e8 100644
--- a/src/emu/sound/ymf262.c
+++ b/src/devices/sound/ymf262.c
diff --git a/src/emu/sound/ymf262.h b/src/devices/sound/ymf262.h
index 904b4f259c5..904b4f259c5 100644
--- a/src/emu/sound/ymf262.h
+++ b/src/devices/sound/ymf262.h
diff --git a/src/emu/sound/ymf271.c b/src/devices/sound/ymf271.c
index c10420af8a4..c10420af8a4 100644
--- a/src/emu/sound/ymf271.c
+++ b/src/devices/sound/ymf271.c
diff --git a/src/emu/sound/ymf271.h b/src/devices/sound/ymf271.h
index 185a8fda4eb..185a8fda4eb 100644
--- a/src/emu/sound/ymf271.h
+++ b/src/devices/sound/ymf271.h
diff --git a/src/emu/sound/ymf278b.c b/src/devices/sound/ymf278b.c
index ae9b9e7dffc..60097767655 100644
--- a/src/emu/sound/ymf278b.c
+++ b/src/devices/sound/ymf278b.c
@@ -43,13 +43,12 @@
TODO:
- accurate timing of envelopes
- LFO (vibrato, tremolo)
- - integrate YMF262 (used by Fuuki games, not used by Psikyo and Metro games)
- - able to hook up "Moonsound", supporting mixed ROM+RAM (for MSX driver in MESS)
- (this should be possible now by using a custom address map?)
+ - integrate YMF262 mixing (used by Fuuki games, not used by Psikyo and Metro games)
*/
#include "emu.h"
#include "ymf278b.h"
+#include "ymf262.h"
#define VERBOSE 0
#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
@@ -226,6 +225,12 @@ void ymf278b_device::sound_stream_update(sound_stream &stream, stream_sample_t *
INT32 *mixp;
INT32 vl, vr;
+ if (&stream == m_stream_ymf262)
+ {
+ ymf262_update_one(m_ymf262, outputs, samples);
+ return;
+ }
+
memset(m_mix_buffer, 0, sizeof(m_mix_buffer[0])*samples*2);
for (i = 0; i < 24; i++)
@@ -683,6 +688,7 @@ WRITE8_MEMBER( ymf278b_device::write )
timer_busy_start(0);
m_port_AB = data;
m_lastport = offset>>1 & 1;
+ ymf262_write(m_ymf262, offset, data);
break;
case 1:
@@ -691,6 +697,7 @@ WRITE8_MEMBER( ymf278b_device::write )
if (m_lastport) B_w(m_port_AB, data);
else A_w(m_port_AB, data);
m_last_fm_data = data;
+ ymf262_write(m_ymf262, offset, data);
break;
case 4:
@@ -830,6 +837,14 @@ void ymf278b_device::device_reset()
m_current_irq = 0;
if (!m_irq_handler.isnull())
m_irq_handler(0);
+
+ ymf262_reset_chip(m_ymf262);
+}
+
+void ymf278b_device::device_stop()
+{
+ ymf262_shutdown(m_ymf262);
+ m_ymf262 = NULL;
}
void ymf278b_device::precompute_rate_tables()
@@ -928,6 +943,28 @@ void ymf278b_device::register_save_state()
// device_start - device-specific startup
//-------------------------------------------------
+static void ymf278b_ymf262_irq_handler(void *param,int irq)
+{
+}
+
+
+static void ymf278b_ymf262_timer_handler(void *param, int c, const attotime &period)
+{
+}
+
+static void ymf278b_ymf262_update_request(void *param, int interval)
+{
+ ymf278b_device *ymf278b = (ymf278b_device *) param;
+ ymf278b->ymf262_update_request();
+}
+
+
+void ymf278b_device::ymf262_update_request()
+{
+ m_stream_ymf262->update();
+}
+
+
void ymf278b_device::device_start()
{
int i;
@@ -973,6 +1010,20 @@ void ymf278b_device::device_start()
// Register state for saving
register_save_state();
+
+ // YMF262 related
+
+ /* stream system initialize */
+ int ymf262_clock = clock() / (19/8.0);
+ m_ymf262 = ymf262_init(this, ymf262_clock, ymf262_clock / 288);
+ assert_always(m_ymf262 != NULL, "Error creating YMF262 chip");
+
+ m_stream_ymf262 = machine().sound().stream_alloc(*this, 0, 4, ymf262_clock / 288);
+
+ /* YMF262 setup */
+ ymf262_set_timer_handler (m_ymf262, ymf278b_ymf262_timer_handler, this);
+ ymf262_set_irq_handler (m_ymf262, ymf278b_ymf262_irq_handler, this);
+ ymf262_set_update_handler(m_ymf262, ymf278b_ymf262_update_request, this);
}
diff --git a/src/emu/sound/ymf278b.h b/src/devices/sound/ymf278b.h
index 8a3fdad12cb..096e2e3d3c4 100644
--- a/src/emu/sound/ymf278b.h
+++ b/src/devices/sound/ymf278b.h
@@ -25,11 +25,14 @@ public:
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
+ void ymf262_update_request();
+
protected:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
+ virtual void device_stop();
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
@@ -132,6 +135,10 @@ private:
const address_space_config m_space_config;
devcb_write_line m_irq_handler;
UINT8 m_last_fm_data;
+
+ // ymf262
+ void *m_ymf262;
+ sound_stream * m_stream_ymf262;
};
extern const device_type YMF278B;
diff --git a/src/emu/sound/ymz280b.c b/src/devices/sound/ymz280b.c
index 8a1f323bbdd..9d07f057739 100644
--- a/src/emu/sound/ymz280b.c
+++ b/src/devices/sound/ymz280b.c
@@ -44,7 +44,7 @@
#define INTERNAL_SAMPLE_RATE (m_master_clock * 2.0)
#if MAKE_WAVS
-#include "wavwrite.h"
+#include "sound/wavwrite.h"
#endif
diff --git a/src/emu/sound/ymz280b.h b/src/devices/sound/ymz280b.h
index a67c0d8567b..a67c0d8567b 100644
--- a/src/emu/sound/ymz280b.h
+++ b/src/devices/sound/ymz280b.h
diff --git a/src/emu/sound/ymz770.c b/src/devices/sound/ymz770.c
index f367f4d10eb..f367f4d10eb 100644
--- a/src/emu/sound/ymz770.c
+++ b/src/devices/sound/ymz770.c
diff --git a/src/emu/sound/ymz770.h b/src/devices/sound/ymz770.h
index d98d40308ca..d98d40308ca 100644
--- a/src/emu/sound/ymz770.h
+++ b/src/devices/sound/ymz770.h
diff --git a/src/emu/sound/zsg2.c b/src/devices/sound/zsg2.c
index 4f3f1a42ca9..4f3f1a42ca9 100644
--- a/src/emu/sound/zsg2.c
+++ b/src/devices/sound/zsg2.c
diff --git a/src/emu/sound/zsg2.h b/src/devices/sound/zsg2.h
index e98e2c315ae..e98e2c315ae 100644
--- a/src/emu/sound/zsg2.h
+++ b/src/devices/sound/zsg2.h
diff --git a/src/emu/video/315_5124.c b/src/devices/video/315_5124.c
index dac2027d126..27508e79e52 100644
--- a/src/emu/video/315_5124.c
+++ b/src/devices/video/315_5124.c
@@ -36,6 +36,12 @@ A scanline contains the following sections:
- right blanking 8 87-8B
- horizontal sync 17 8B-93 => HSYNC low
+ Although the processing done for a section happens when HCount is in the
+ specified range (e.g. 00-7F for active display), probably there is a delay
+ until its signal is shown on screen, as happens on the TMS9918 chip
+ according to this timing diagram:
+ http://www.smspower.org/Development/TMS9918MasterTimingDiagram
+
NTSC frame timing
256x192 256x224 256x240 (doesn't work on real hardware)
@@ -911,7 +917,7 @@ void sega315_5124_device::select_sprites( int line )
if (sprite_y >= 240)
{
- sprite_y -= 256;
+ sprite_y -= 256; /* wrap from top if y position is >= 240 */
}
if (m_sprite_zoom > 1)
@@ -927,15 +933,9 @@ void sega315_5124_device::select_sprites( int line )
int sprite_tile_selected = space().read_byte( m_sprite_base + sprite_index + 2 );
UINT8 flags = space().read_byte( m_sprite_base + sprite_index + 3 );
- if (flags & 0x80)
- sprite_x -= 32;
-
int sprite_line = parse_line - sprite_y;
- if (m_reg[0x01] & 0x01)
- sprite_line >>= 1;
-
- if (m_reg[0x01] & 0x02)
+ if (m_sprite_height == 16)
{
sprite_tile_selected &= 0xfc;
@@ -971,7 +971,7 @@ void sega315_5124_device::select_sprites( int line )
if (sprite_y >= 240)
{
- sprite_y -= 256; /* wrap from top if y position is > 240 */
+ sprite_y -= 256; /* wrap from top if y position is >= 240 */
}
if (m_sprite_zoom > 1)
@@ -996,7 +996,7 @@ void sega315_5124_device::select_sprites( int line )
sprite_tile_selected += 256; /* pattern table select */
}
- if (m_reg[0x01] & 0x02)
+ if (m_sprite_height == 16)
{
sprite_tile_selected &= 0x01fe; /* force even index */
}
@@ -1148,11 +1148,13 @@ void sega315_5124_device::draw_sprites_tms9918_mode( int *line_buffer, int line
for (int sprite_buffer_index = m_sprite_count - 1; sprite_buffer_index >= 0; sprite_buffer_index--)
{
int sprite_x = m_sprite_x[sprite_buffer_index];
+ int sprite_tile_selected = m_sprite_tile_selected[sprite_buffer_index];
+ UINT16 sprite_pattern_line = m_sprite_pattern_line[sprite_buffer_index];
UINT8 flags = m_sprite_flags[sprite_buffer_index];
int pen_selected = m_palette_offset + ( flags & 0x0f );
- int sprite_tile_selected = m_sprite_tile_selected[sprite_buffer_index];
- UINT16 sprite_pattern_line = m_sprite_pattern_line[sprite_buffer_index];
+ if (flags & 0x80)
+ sprite_x -= 32;
for (int height = 8; height <= m_sprite_height; height += 8)
{
diff --git a/src/emu/video/315_5124.h b/src/devices/video/315_5124.h
index 409dc2e08a3..a28e61a5e5a 100644
--- a/src/emu/video/315_5124.h
+++ b/src/devices/video/315_5124.h
@@ -131,7 +131,7 @@ protected:
int m_pending_reg_write;
int m_pending_sprcol_x;
UINT8 m_buffer;
- bool m_sega315_5124_compatibility_mode; /* Shrunk SMS screen on GG lcd mode flag */
+ bool m_sega315_5124_compatibility_mode; /* when true, GG VDP behaves as SMS VDP */
int m_irq_state; /* The status of the IRQ line of the VDP */
int m_vdp_mode; /* Current mode of the VDP: 0,1,2,3,4 */
int m_y_pixels; /* 192, 224, 240 */
diff --git a/src/emu/video/315_5313.c b/src/devices/video/315_5313.c
index 0153c2ad05b..a612c384e99 100644
--- a/src/emu/video/315_5313.c
+++ b/src/devices/video/315_5313.c
@@ -1141,9 +1141,9 @@ UINT16 sega315_5313_device::get_hposition()
time_elapsed_since_megadriv_scanline_timer = m_megadriv_scanline_timer->time_elapsed();
- if (time_elapsed_since_megadriv_scanline_timer.attoseconds<(ATTOSECONDS_PER_SECOND/m_framerate /m_total_scanlines))
+ if (time_elapsed_since_megadriv_scanline_timer.attoseconds() < (ATTOSECONDS_PER_SECOND/m_framerate /m_total_scanlines))
{
- value4 = (UINT16)(MAX_HPOSITION*((double)(time_elapsed_since_megadriv_scanline_timer.attoseconds) / (double)(ATTOSECONDS_PER_SECOND/m_framerate /m_total_scanlines)));
+ value4 = (UINT16)(MAX_HPOSITION*((double)(time_elapsed_since_megadriv_scanline_timer.attoseconds()) / (double)(ATTOSECONDS_PER_SECOND/m_framerate /m_total_scanlines)));
}
else /* in some cases (probably due to rounding errors) we get some stupid results (the odd huge value where the time elapsed is much higher than the scanline time??!).. hopefully by clamping the result to the maximum we limit errors */
{
@@ -2735,7 +2735,7 @@ void sega315_5313_device::vdp_handle_eof()
visarea.set(0, scr_width - 1, 0, m_visible_scanlines - 1);
- m_screen->configure(480, m_total_scanlines, visarea, m_screen->frame_period().attoseconds);
+ m_screen->configure(480, m_total_scanlines, visarea, m_screen->frame_period().attoseconds());
}
diff --git a/src/emu/video/315_5313.h b/src/devices/video/315_5313.h
index 8bcf91a6d5f..8bcf91a6d5f 100644
--- a/src/emu/video/315_5313.h
+++ b/src/devices/video/315_5313.h
diff --git a/src/emu/video/bufsprite.c b/src/devices/video/bufsprite.c
index bc9717d8ef7..bc9717d8ef7 100644
--- a/src/emu/video/bufsprite.c
+++ b/src/devices/video/bufsprite.c
diff --git a/src/emu/video/bufsprite.h b/src/devices/video/bufsprite.h
index 86fb699085a..86fb699085a 100644
--- a/src/emu/video/bufsprite.h
+++ b/src/devices/video/bufsprite.h
diff --git a/src/emu/video/cdp1861.c b/src/devices/video/cdp1861.c
index a02309decca..a02309decca 100644
--- a/src/emu/video/cdp1861.c
+++ b/src/devices/video/cdp1861.c
diff --git a/src/emu/video/cdp1861.h b/src/devices/video/cdp1861.h
index ccf6938173b..ccf6938173b 100644
--- a/src/emu/video/cdp1861.h
+++ b/src/devices/video/cdp1861.h
diff --git a/src/emu/video/cdp1862.c b/src/devices/video/cdp1862.c
index e75cb66c888..e75cb66c888 100644
--- a/src/emu/video/cdp1862.c
+++ b/src/devices/video/cdp1862.c
diff --git a/src/emu/video/cdp1862.h b/src/devices/video/cdp1862.h
index 159c12f8a3c..159c12f8a3c 100644
--- a/src/emu/video/cdp1862.h
+++ b/src/devices/video/cdp1862.h
diff --git a/src/emu/video/cgapal.c b/src/devices/video/cgapal.c
index 396c313c1ba..396c313c1ba 100644
--- a/src/emu/video/cgapal.c
+++ b/src/devices/video/cgapal.c
diff --git a/src/emu/video/cgapal.h b/src/devices/video/cgapal.h
index c5dfafd636e..c5dfafd636e 100644
--- a/src/emu/video/cgapal.h
+++ b/src/devices/video/cgapal.h
diff --git a/src/emu/video/clgd542x.c b/src/devices/video/clgd542x.c
index 854611d1c80..854611d1c80 100644
--- a/src/emu/video/clgd542x.c
+++ b/src/devices/video/clgd542x.c
diff --git a/src/emu/video/clgd542x.h b/src/devices/video/clgd542x.h
index 20300d160fd..20300d160fd 100644
--- a/src/emu/video/clgd542x.h
+++ b/src/devices/video/clgd542x.h
diff --git a/src/emu/video/crt9007.c b/src/devices/video/crt9007.c
index a5722fbd3bf..a5722fbd3bf 100644
--- a/src/emu/video/crt9007.c
+++ b/src/devices/video/crt9007.c
diff --git a/src/emu/video/crt9007.h b/src/devices/video/crt9007.h
index 95745ecece6..95745ecece6 100644
--- a/src/emu/video/crt9007.h
+++ b/src/devices/video/crt9007.h
diff --git a/src/emu/video/crt9021.c b/src/devices/video/crt9021.c
index d72baff2b2b..d72baff2b2b 100644
--- a/src/emu/video/crt9021.c
+++ b/src/devices/video/crt9021.c
diff --git a/src/emu/video/crt9021.h b/src/devices/video/crt9021.h
index f050f7d745c..f050f7d745c 100644
--- a/src/emu/video/crt9021.h
+++ b/src/devices/video/crt9021.h
diff --git a/src/emu/video/crt9212.c b/src/devices/video/crt9212.c
index 0535afa169b..0535afa169b 100644
--- a/src/emu/video/crt9212.c
+++ b/src/devices/video/crt9212.c
diff --git a/src/emu/video/crt9212.h b/src/devices/video/crt9212.h
index 71590ee35f8..71590ee35f8 100644
--- a/src/emu/video/crt9212.h
+++ b/src/devices/video/crt9212.h
diff --git a/src/emu/video/crtc_ega.c b/src/devices/video/crtc_ega.c
index 102df087008..102df087008 100644
--- a/src/emu/video/crtc_ega.c
+++ b/src/devices/video/crtc_ega.c
diff --git a/src/emu/video/crtc_ega.h b/src/devices/video/crtc_ega.h
index b06fa31560c..b06fa31560c 100644
--- a/src/emu/video/crtc_ega.h
+++ b/src/devices/video/crtc_ega.h
diff --git a/src/emu/video/dl1416.c b/src/devices/video/dl1416.c
index b017e9994e1..b017e9994e1 100644
--- a/src/emu/video/dl1416.c
+++ b/src/devices/video/dl1416.c
diff --git a/src/emu/video/dl1416.h b/src/devices/video/dl1416.h
index 6b77a75edac..6b77a75edac 100644
--- a/src/emu/video/dl1416.h
+++ b/src/devices/video/dl1416.h
diff --git a/src/emu/video/dm9368.c b/src/devices/video/dm9368.c
index 16dee4e420f..16dee4e420f 100644
--- a/src/emu/video/dm9368.c
+++ b/src/devices/video/dm9368.c
diff --git a/src/emu/video/dm9368.h b/src/devices/video/dm9368.h
index 35a2da3431d..35a2da3431d 100644
--- a/src/emu/video/dm9368.h
+++ b/src/devices/video/dm9368.h
diff --git a/src/emu/video/ef9340_1.c b/src/devices/video/ef9340_1.c
index d3dd81f5d2e..d3dd81f5d2e 100644
--- a/src/emu/video/ef9340_1.c
+++ b/src/devices/video/ef9340_1.c
diff --git a/src/emu/video/ef9340_1.h b/src/devices/video/ef9340_1.h
index 3aa2d6539d9..3aa2d6539d9 100644
--- a/src/emu/video/ef9340_1.h
+++ b/src/devices/video/ef9340_1.h
diff --git a/src/emu/video/ef9341_chargen.h b/src/devices/video/ef9341_chargen.h
index d33db19d18e..d33db19d18e 100644
--- a/src/emu/video/ef9341_chargen.h
+++ b/src/devices/video/ef9341_chargen.h
diff --git a/src/emu/video/ef9345.c b/src/devices/video/ef9345.c
index 22ade42300c..ca8062bbb95 100644
--- a/src/emu/video/ef9345.c
+++ b/src/devices/video/ef9345.c
@@ -244,7 +244,7 @@ void ef9345_device::set_video_mode(void)
rectangle visarea = m_screen->visible_area();
visarea.max_x = new_width - 1;
- m_screen->configure(new_width, m_screen->height(), visarea, m_screen->frame_period().attoseconds);
+ m_screen->configure(new_width, m_screen->height(), visarea, m_screen->frame_period().attoseconds());
}
//border color
diff --git a/src/emu/video/ef9345.h b/src/devices/video/ef9345.h
index 332b037a223..332b037a223 100644
--- a/src/emu/video/ef9345.h
+++ b/src/devices/video/ef9345.h
diff --git a/src/emu/video/epic12.c b/src/devices/video/epic12.c
index a22100e5543..a22100e5543 100644
--- a/src/emu/video/epic12.c
+++ b/src/devices/video/epic12.c
diff --git a/src/emu/video/epic12.h b/src/devices/video/epic12.h
index 42d4d3d2172..42d4d3d2172 100644
--- a/src/emu/video/epic12.h
+++ b/src/devices/video/epic12.h
diff --git a/src/emu/video/epic12_blit0.c b/src/devices/video/epic12_blit0.c
index 3588573bdee..3588573bdee 100644
--- a/src/emu/video/epic12_blit0.c
+++ b/src/devices/video/epic12_blit0.c
diff --git a/src/emu/video/epic12_blit1.c b/src/devices/video/epic12_blit1.c
index 2cef4fae933..2cef4fae933 100644
--- a/src/emu/video/epic12_blit1.c
+++ b/src/devices/video/epic12_blit1.c
diff --git a/src/emu/video/epic12_blit2.c b/src/devices/video/epic12_blit2.c
index 039ab762635..039ab762635 100644
--- a/src/emu/video/epic12_blit2.c
+++ b/src/devices/video/epic12_blit2.c
diff --git a/src/emu/video/epic12_blit3.c b/src/devices/video/epic12_blit3.c
index 868f4c1e25e..868f4c1e25e 100644
--- a/src/emu/video/epic12_blit3.c
+++ b/src/devices/video/epic12_blit3.c
diff --git a/src/emu/video/epic12_blit4.c b/src/devices/video/epic12_blit4.c
index c5ed93ae70b..c5ed93ae70b 100644
--- a/src/emu/video/epic12_blit4.c
+++ b/src/devices/video/epic12_blit4.c
diff --git a/src/emu/video/epic12_blit5.c b/src/devices/video/epic12_blit5.c
index 4c0a3b0bd0d..4c0a3b0bd0d 100644
--- a/src/emu/video/epic12_blit5.c
+++ b/src/devices/video/epic12_blit5.c
diff --git a/src/emu/video/epic12_blit6.c b/src/devices/video/epic12_blit6.c
index 9ef7302b139..9ef7302b139 100644
--- a/src/emu/video/epic12_blit6.c
+++ b/src/devices/video/epic12_blit6.c
diff --git a/src/emu/video/epic12_blit7.c b/src/devices/video/epic12_blit7.c
index 6ab5366a721..6ab5366a721 100644
--- a/src/emu/video/epic12_blit7.c
+++ b/src/devices/video/epic12_blit7.c
diff --git a/src/emu/video/epic12_blit8.c b/src/devices/video/epic12_blit8.c
index fb9cc763395..fb9cc763395 100644
--- a/src/emu/video/epic12_blit8.c
+++ b/src/devices/video/epic12_blit8.c
diff --git a/src/emu/video/epic12in.inc b/src/devices/video/epic12in.inc
index cf0c81dd80f..cf0c81dd80f 100644
--- a/src/emu/video/epic12in.inc
+++ b/src/devices/video/epic12in.inc
diff --git a/src/emu/video/epic12pixel.inc b/src/devices/video/epic12pixel.inc
index 3cb01cebbf4..3cb01cebbf4 100644
--- a/src/emu/video/epic12pixel.inc
+++ b/src/devices/video/epic12pixel.inc
diff --git a/src/emu/video/fixfreq.c b/src/devices/video/fixfreq.c
index 033bcb5b301..033bcb5b301 100644
--- a/src/emu/video/fixfreq.c
+++ b/src/devices/video/fixfreq.c
diff --git a/src/emu/video/fixfreq.h b/src/devices/video/fixfreq.h
index 833829fbc3b..833829fbc3b 100644
--- a/src/emu/video/fixfreq.h
+++ b/src/devices/video/fixfreq.h
diff --git a/src/emu/video/gf4500.c b/src/devices/video/gf4500.c
index 48e2f8495c3..48e2f8495c3 100644
--- a/src/emu/video/gf4500.c
+++ b/src/devices/video/gf4500.c
diff --git a/src/emu/video/gf4500.h b/src/devices/video/gf4500.h
index eb246ec0ea9..eb246ec0ea9 100644
--- a/src/emu/video/gf4500.h
+++ b/src/devices/video/gf4500.h
diff --git a/src/emu/video/gf7600gs.c b/src/devices/video/gf7600gs.c
index 85b6b2f06da..85b6b2f06da 100644
--- a/src/emu/video/gf7600gs.c
+++ b/src/devices/video/gf7600gs.c
diff --git a/src/emu/video/gf7600gs.h b/src/devices/video/gf7600gs.h
index 1d336ee5454..1d336ee5454 100644
--- a/src/emu/video/gf7600gs.h
+++ b/src/devices/video/gf7600gs.h
diff --git a/src/emu/video/h63484.c b/src/devices/video/h63484.c
index dd949cbc222..906c01573e4 100644
--- a/src/emu/video/h63484.c
+++ b/src/devices/video/h63484.c
@@ -531,7 +531,7 @@ inline void h63484_device::recompute_parameters()
rectangle visarea = m_screen->visible_area();
visarea.set((m_hsw + m_hds) * ppmc, (m_hsw + m_hds + m_hdw) * ppmc - 1, m_vds, vbstart - 1);
- attoseconds_t frame_period = m_screen->frame_period().attoseconds; // TODO: use clock() to calculate the frame_period
+ attoseconds_t frame_period = m_screen->frame_period().attoseconds(); // TODO: use clock() to calculate the frame_period
m_screen->configure(m_hc * ppmc, m_vc, visarea, frame_period);
}
diff --git a/src/emu/video/h63484.h b/src/devices/video/h63484.h
index ac0232fae8f..ac0232fae8f 100644
--- a/src/emu/video/h63484.h
+++ b/src/devices/video/h63484.h
diff --git a/src/emu/video/hd44102.c b/src/devices/video/hd44102.c
index e9a1a9d014d..e9a1a9d014d 100644
--- a/src/emu/video/hd44102.c
+++ b/src/devices/video/hd44102.c
diff --git a/src/emu/video/hd44102.h b/src/devices/video/hd44102.h
index 2ba39282e9e..2ba39282e9e 100644
--- a/src/emu/video/hd44102.h
+++ b/src/devices/video/hd44102.h
diff --git a/src/emu/video/hd44352.c b/src/devices/video/hd44352.c
index 8b30b0afd9b..8b30b0afd9b 100644
--- a/src/emu/video/hd44352.c
+++ b/src/devices/video/hd44352.c
diff --git a/src/emu/video/hd44352.h b/src/devices/video/hd44352.h
index b305e8ccfa9..b305e8ccfa9 100644
--- a/src/emu/video/hd44352.h
+++ b/src/devices/video/hd44352.h
diff --git a/src/emu/video/hd44780.c b/src/devices/video/hd44780.c
index b21dc2e04e1..b21dc2e04e1 100644
--- a/src/emu/video/hd44780.c
+++ b/src/devices/video/hd44780.c
diff --git a/src/emu/video/hd44780.h b/src/devices/video/hd44780.h
index f98bc01806b..c175ccb9e47 100644
--- a/src/emu/video/hd44780.h
+++ b/src/devices/video/hd44780.h
@@ -70,14 +70,14 @@ protected:
{
CHARSET_HD44780_A00,
CHARSET_KS0066_F05 /*,
- CHARSET_HD44780_A01,
- CHARSET_HD44780_A02,
- CHARSET_KS0066_F00,
- CHARSET_KS0066_F03,
- CHARSET_KS0066_F04,
- CHARSET_KS0066_F06,
- CHARSET_KS0066_F59
- */
+ CHARSET_HD44780_A01,
+ CHARSET_HD44780_A02,
+ CHARSET_KS0066_F00,
+ CHARSET_KS0066_F03,
+ CHARSET_KS0066_F04,
+ CHARSET_KS0066_F06,
+ CHARSET_KS0066_F59
+ */
};
void set_charset_type(int type);
diff --git a/src/emu/video/hd61830.c b/src/devices/video/hd61830.c
index a9a21e7dbc5..a9a21e7dbc5 100644
--- a/src/emu/video/hd61830.c
+++ b/src/devices/video/hd61830.c
diff --git a/src/emu/video/hd61830.h b/src/devices/video/hd61830.h
index 359f2d78b1a..359f2d78b1a 100644
--- a/src/emu/video/hd61830.h
+++ b/src/devices/video/hd61830.h
diff --git a/src/emu/video/hd63484.c b/src/devices/video/hd63484.c
index cdfddbcb23d..cdfddbcb23d 100644
--- a/src/emu/video/hd63484.c
+++ b/src/devices/video/hd63484.c
diff --git a/src/emu/video/hd63484.h b/src/devices/video/hd63484.h
index 08d147a8081..08d147a8081 100644
--- a/src/emu/video/hd63484.h
+++ b/src/devices/video/hd63484.h
diff --git a/src/emu/video/hd66421.c b/src/devices/video/hd66421.c
index af67be24d78..af67be24d78 100644
--- a/src/emu/video/hd66421.c
+++ b/src/devices/video/hd66421.c
diff --git a/src/emu/video/hd66421.h b/src/devices/video/hd66421.h
index baed72ad30c..baed72ad30c 100644
--- a/src/emu/video/hd66421.h
+++ b/src/devices/video/hd66421.h
diff --git a/src/emu/video/huc6202.c b/src/devices/video/huc6202.c
index 3f33a3eaa05..3f33a3eaa05 100644
--- a/src/emu/video/huc6202.c
+++ b/src/devices/video/huc6202.c
diff --git a/src/emu/video/huc6202.h b/src/devices/video/huc6202.h
index 85ae87c1db7..85ae87c1db7 100644
--- a/src/emu/video/huc6202.h
+++ b/src/devices/video/huc6202.h
diff --git a/src/emu/video/huc6260.c b/src/devices/video/huc6260.c
index 7d3ccc75f78..7d3ccc75f78 100644
--- a/src/emu/video/huc6260.c
+++ b/src/devices/video/huc6260.c
diff --git a/src/emu/video/huc6260.h b/src/devices/video/huc6260.h
index 2ff38ccf131..2ff38ccf131 100644
--- a/src/emu/video/huc6260.h
+++ b/src/devices/video/huc6260.h
diff --git a/src/emu/video/huc6261.c b/src/devices/video/huc6261.c
index f22bdfba582..f22bdfba582 100644
--- a/src/emu/video/huc6261.c
+++ b/src/devices/video/huc6261.c
diff --git a/src/emu/video/huc6261.h b/src/devices/video/huc6261.h
index e5ef43a8429..e5ef43a8429 100644
--- a/src/emu/video/huc6261.h
+++ b/src/devices/video/huc6261.h
diff --git a/src/emu/video/huc6270.c b/src/devices/video/huc6270.c
index c0fe5225c8e..c0fe5225c8e 100644
--- a/src/emu/video/huc6270.c
+++ b/src/devices/video/huc6270.c
diff --git a/src/emu/video/huc6270.h b/src/devices/video/huc6270.h
index 017fe5c9e70..017fe5c9e70 100644
--- a/src/emu/video/huc6270.h
+++ b/src/devices/video/huc6270.h
diff --git a/src/emu/video/huc6272.c b/src/devices/video/huc6272.c
index 849ec9f09d6..849ec9f09d6 100644
--- a/src/emu/video/huc6272.c
+++ b/src/devices/video/huc6272.c
diff --git a/src/emu/video/huc6272.h b/src/devices/video/huc6272.h
index 140d086efb0..140d086efb0 100644
--- a/src/emu/video/huc6272.h
+++ b/src/devices/video/huc6272.h
diff --git a/src/emu/video/i8244.c b/src/devices/video/i8244.c
index a074b676e64..a074b676e64 100644
--- a/src/emu/video/i8244.c
+++ b/src/devices/video/i8244.c
diff --git a/src/emu/video/i8244.h b/src/devices/video/i8244.h
index ea518051a9f..ea518051a9f 100644
--- a/src/emu/video/i8244.h
+++ b/src/devices/video/i8244.h
diff --git a/src/emu/video/i82730.c b/src/devices/video/i82730.c
index 5bcc3240a35..d90a79d04ee 100644
--- a/src/emu/video/i82730.c
+++ b/src/devices/video/i82730.c
@@ -15,9 +15,9 @@
// CONSTANTS
//**************************************************************************
-#define VERBOSE 1
-#define VERBOSE_COMMANDS 1
-#define VERBOSE_DATASTREAM 0
+#define VERBOSE 1
+#define VERBOSE_COMMANDS 1
+#define VERBOSE_DATASTREAM 0
//**************************************************************************
diff --git a/src/emu/video/i82730.h b/src/devices/video/i82730.h
index 5df4e46a5de..ff2602d2307 100644
--- a/src/emu/video/i82730.h
+++ b/src/devices/video/i82730.h
@@ -35,9 +35,9 @@
// TYPE DEFINITIONS
//**************************************************************************
-typedef device_delegate<void (bitmap_rgb32 &bitmap, UINT16 *data, UINT8 lc, UINT16 y, int x_count)> i82730_update_row_delegate;
+typedef device_delegate<void (bitmap_rgb32 &bitmap, UINT16 *data, UINT8 lc, UINT16 y, int x_count)> i82730_update_row_delegate;
-#define I82730_UPDATE_ROW(name) \
+#define I82730_UPDATE_ROW(name) \
void name(bitmap_rgb32 &bitmap, UINT16 *data, UINT8 lc, UINT16 y, int x_count)
diff --git a/src/emu/video/i8275.c b/src/devices/video/i8275.c
index 59f50b04f70..4f75d7cbc1a 100644
--- a/src/emu/video/i8275.c
+++ b/src/devices/video/i8275.c
@@ -666,7 +666,7 @@ void i8275_device::recompute_parameters()
int horiz_pix_total = (CHARACTERS_PER_ROW + HRTC_COUNT) * m_hpixels_per_column;
int vert_pix_total = (CHARACTER_ROWS_PER_FRAME + VRTC_ROW_COUNT) * SCANLINES_PER_ROW;
- attoseconds_t refresh = m_screen->frame_period().attoseconds;
+ attoseconds_t refresh = m_screen->frame_period().attoseconds();
int max_visible_x = (CHARACTERS_PER_ROW * m_hpixels_per_column) - 1;
int max_visible_y = (CHARACTER_ROWS_PER_FRAME * SCANLINES_PER_ROW) - 1;
diff --git a/src/emu/video/i8275.h b/src/devices/video/i8275.h
index 15451d4c7e8..15451d4c7e8 100644
--- a/src/emu/video/i8275.h
+++ b/src/devices/video/i8275.h
diff --git a/src/emu/video/m50458.c b/src/devices/video/m50458.c
index 1db8b57aaf0..1db8b57aaf0 100644
--- a/src/emu/video/m50458.c
+++ b/src/devices/video/m50458.c
diff --git a/src/emu/video/m50458.h b/src/devices/video/m50458.h
index 79246a68fdd..79246a68fdd 100644
--- a/src/emu/video/m50458.h
+++ b/src/devices/video/m50458.h
diff --git a/src/emu/video/mb90082.c b/src/devices/video/mb90082.c
index cefa4e60415..cefa4e60415 100644
--- a/src/emu/video/mb90082.c
+++ b/src/devices/video/mb90082.c
diff --git a/src/emu/video/mb90082.h b/src/devices/video/mb90082.h
index 863a3aec797..863a3aec797 100644
--- a/src/emu/video/mb90082.h
+++ b/src/devices/video/mb90082.h
diff --git a/src/emu/video/mb_vcu.c b/src/devices/video/mb_vcu.c
index a5ff14230bf..0ad568976f8 100644
--- a/src/emu/video/mb_vcu.c
+++ b/src/devices/video/mb_vcu.c
@@ -191,7 +191,7 @@ void mb_vcu_device::device_start()
3, resistances_gb, m_weights_b, 3600, 0,
2, resistances_r, m_weights_r, 3600, 0);
}
-
+
save_item(NAME(m_status));
save_pointer(NAME(m_ram), 0x800);
save_pointer(NAME(m_palram), 0x100);
diff --git a/src/emu/video/mb_vcu.h b/src/devices/video/mb_vcu.h
index ed6e45663c9..ed6e45663c9 100644
--- a/src/emu/video/mb_vcu.h
+++ b/src/devices/video/mb_vcu.h
diff --git a/src/emu/video/mc6845.c b/src/devices/video/mc6845.c
index 4c1d811369c..4c1d811369c 100644
--- a/src/emu/video/mc6845.c
+++ b/src/devices/video/mc6845.c
diff --git a/src/emu/video/mc6845.h b/src/devices/video/mc6845.h
index 053c2b9491e..053c2b9491e 100644
--- a/src/emu/video/mc6845.h
+++ b/src/devices/video/mc6845.h
diff --git a/src/emu/video/mc6847.c b/src/devices/video/mc6847.c
index 76c0dcb4c92..76c0dcb4c92 100644
--- a/src/emu/video/mc6847.c
+++ b/src/devices/video/mc6847.c
diff --git a/src/emu/video/mc6847.h b/src/devices/video/mc6847.h
index d3420a7fcba..d3420a7fcba 100644
--- a/src/emu/video/mc6847.h
+++ b/src/devices/video/mc6847.h
diff --git a/src/emu/video/mos6566.c b/src/devices/video/mos6566.c
index 64b061c3107..64b061c3107 100644
--- a/src/emu/video/mos6566.c
+++ b/src/devices/video/mos6566.c
diff --git a/src/emu/video/mos6566.h b/src/devices/video/mos6566.h
index e14c00140e9..e14c00140e9 100644
--- a/src/emu/video/mos6566.h
+++ b/src/devices/video/mos6566.h
diff --git a/src/emu/video/msm6222b.c b/src/devices/video/msm6222b.c
index f6c2c9564a3..f6c2c9564a3 100644
--- a/src/emu/video/msm6222b.c
+++ b/src/devices/video/msm6222b.c
diff --git a/src/emu/video/msm6222b.h b/src/devices/video/msm6222b.h
index 70279cae218..70279cae218 100644
--- a/src/emu/video/msm6222b.h
+++ b/src/devices/video/msm6222b.h
diff --git a/src/emu/video/msm6255.c b/src/devices/video/msm6255.c
index 36fd36325d1..36fd36325d1 100644
--- a/src/emu/video/msm6255.c
+++ b/src/devices/video/msm6255.c
diff --git a/src/emu/video/msm6255.h b/src/devices/video/msm6255.h
index 32975132cf6..32975132cf6 100644
--- a/src/emu/video/msm6255.h
+++ b/src/devices/video/msm6255.h
diff --git a/src/emu/video/pc_vga.c b/src/devices/video/pc_vga.c
index c494e4904ec..c494e4904ec 100644
--- a/src/emu/video/pc_vga.c
+++ b/src/devices/video/pc_vga.c
diff --git a/src/emu/video/pc_vga.h b/src/devices/video/pc_vga.h
index ee0504a95e1..ee0504a95e1 100644
--- a/src/emu/video/pc_vga.h
+++ b/src/devices/video/pc_vga.h
diff --git a/src/emu/video/poly.h b/src/devices/video/poly.h
index 4a9589affa7..0ba401e0755 100644
--- a/src/emu/video/poly.h
+++ b/src/devices/video/poly.h
@@ -34,8 +34,8 @@
#pragma once
-#ifndef __POLYNEW_H__
-#define __POLYNEW_H__
+#ifndef __POLY_H__
+#define __POLY_H__
#include <limits.h>
@@ -1172,4 +1172,148 @@ int poly_manager<_BaseType, _ObjectData, _MaxParams, _MaxPolys>::zclip_if_less(i
return nextout - outv;
}
-#endif // __POLYNEW_H__
+
+template<typename _BaseType, int _MaxParams>
+struct frustum_clip_vertex
+{
+ _BaseType x, y, z, w; // A 3d coordinate already transformed by a projection matrix
+ _BaseType p[_MaxParams]; // Additional parameters to clip
+};
+
+
+template<typename _BaseType, int _MaxParams>
+int frustum_clip_w(const frustum_clip_vertex<_BaseType, _MaxParams>* v, int num_vertices, frustum_clip_vertex<_BaseType, _MaxParams>* out)
+{
+ if (num_vertices <= 0)
+ return 0;
+
+ const _BaseType W_PLANE = 0.000001f;
+
+ frustum_clip_vertex<_BaseType, _MaxParams> clipv[10];
+ int clip_verts = 0;
+
+ int previ = num_vertices - 1;
+
+ for (int i=0; i < num_vertices; i++)
+ {
+ int v1_side = (v[i].w < W_PLANE) ? -1 : 1;
+ int v2_side = (v[previ].w < W_PLANE) ? -1 : 1;
+
+ if ((v1_side * v2_side) < 0) // edge goes through W plane
+ {
+ // insert vertex at intersection point
+ _BaseType wdiv = v[previ].w - v[i].w;
+ if (wdiv == 0.0f) // 0 edge means degenerate polygon
+ return 0;
+
+ _BaseType t = fabs((W_PLANE - v[previ].w) / wdiv);
+
+ clipv[clip_verts].x = v[previ].x + ((v[i].x - v[previ].x) * t);
+ clipv[clip_verts].y = v[previ].y + ((v[i].y - v[previ].y) * t);
+ clipv[clip_verts].z = v[previ].z + ((v[i].z - v[previ].z) * t);
+ clipv[clip_verts].w = v[previ].w + ((v[i].w - v[previ].w) * t);
+
+ // Interpolate the rest of the parameters
+ for (int pi = 0; pi < _MaxParams; pi++)
+ clipv[clip_verts].p[pi] = v[previ].p[pi] + ((v[i].p[pi] - v[previ].p[pi]) * t);
+
+ ++clip_verts;
+ }
+ if (v1_side > 0) // current point is inside
+ {
+ clipv[clip_verts] = v[i];
+ ++clip_verts;
+ }
+
+ previ = i;
+ }
+
+ memcpy(&out[0], &clipv[0], sizeof(out[0]) * clip_verts);
+ return clip_verts;
+}
+
+
+template<typename _BaseType, int _MaxParams>
+int frustum_clip(const frustum_clip_vertex<_BaseType, _MaxParams>* v, int num_vertices, frustum_clip_vertex<_BaseType, _MaxParams>* out, int axis, int sign)
+{
+ if (num_vertices <= 0)
+ return 0;
+
+ frustum_clip_vertex<_BaseType, _MaxParams> clipv[10];
+ int clip_verts = 0;
+
+ int previ = num_vertices - 1;
+
+ for (int i=0; i < num_vertices; i++)
+ {
+ int v1_side, v2_side;
+ _BaseType* v1a = (_BaseType*)&v[i];
+ _BaseType* v2a = (_BaseType*)&v[previ];
+
+ _BaseType v1_axis, v2_axis;
+
+ if (sign) // +axis
+ {
+ v1_axis = v1a[axis];
+ v2_axis = v2a[axis];
+ }
+ else // -axis
+ {
+ v1_axis = -v1a[axis];
+ v2_axis = -v2a[axis];
+ }
+
+ v1_side = (v1_axis <= v[i].w) ? 1 : -1;
+ v2_side = (v2_axis <= v[previ].w) ? 1 : -1;
+
+ if ((v1_side * v2_side) < 0) // edge goes through W plane
+ {
+ // insert vertex at intersection point
+ _BaseType wdiv = ((v[previ].w - v2_axis) - (v[i].w - v1_axis));
+
+ if (wdiv == 0.0f) // 0 edge means degenerate polygon
+ return 0;
+
+ _BaseType t = fabs((v[previ].w - v2_axis) / wdiv);
+
+ clipv[clip_verts].x = v[previ].x + ((v[i].x - v[previ].x) * t);
+ clipv[clip_verts].y = v[previ].y + ((v[i].y - v[previ].y) * t);
+ clipv[clip_verts].z = v[previ].z + ((v[i].z - v[previ].z) * t);
+ clipv[clip_verts].w = v[previ].w + ((v[i].w - v[previ].w) * t);
+
+ // Interpolate the rest of the parameters
+ for (int pi = 0; pi < _MaxParams; pi++)
+ clipv[clip_verts].p[pi] = v[previ].p[pi] + ((v[i].p[pi] - v[previ].p[pi]) * t);
+
+ ++clip_verts;
+ }
+ if (v1_side > 0) // current point is inside
+ {
+ clipv[clip_verts] = v[i];
+ ++clip_verts;
+ }
+
+ previ = i;
+ }
+
+ memcpy(&out[0], &clipv[0], sizeof(out[0]) * clip_verts);
+ return clip_verts;
+}
+
+
+template<typename _BaseType, int _MaxParams>
+int frustum_clip_all(frustum_clip_vertex<_BaseType, _MaxParams>* clip_vert, int num_vertices, frustum_clip_vertex<_BaseType, _MaxParams>* out)
+{
+ num_vertices = frustum_clip_w<_BaseType, _MaxParams>(clip_vert, num_vertices, clip_vert);
+ num_vertices = frustum_clip<_BaseType, _MaxParams>(clip_vert, num_vertices, clip_vert, 0, 0); // W <= -X
+ num_vertices = frustum_clip<_BaseType, _MaxParams>(clip_vert, num_vertices, clip_vert, 0, 1); // W <= +X
+ num_vertices = frustum_clip<_BaseType, _MaxParams>(clip_vert, num_vertices, clip_vert, 1, 0); // W <= -Y
+ num_vertices = frustum_clip<_BaseType, _MaxParams>(clip_vert, num_vertices, clip_vert, 1, 1); // W <= +X
+ num_vertices = frustum_clip<_BaseType, _MaxParams>(clip_vert, num_vertices, clip_vert, 2, 0); // W <= -Z
+ num_vertices = frustum_clip<_BaseType, _MaxParams>(clip_vert, num_vertices, clip_vert, 2, 1); // W <= +Z
+ out = clip_vert;
+ return num_vertices;
+}
+
+
+#endif // __POLY_H__
diff --git a/src/emu/video/polylgcy.c b/src/devices/video/polylgcy.c
index 720110e5ca3..720110e5ca3 100644
--- a/src/emu/video/polylgcy.c
+++ b/src/devices/video/polylgcy.c
diff --git a/src/emu/video/polylgcy.h b/src/devices/video/polylgcy.h
index a69ae8e721a..bc409d77db5 100644
--- a/src/emu/video/polylgcy.h
+++ b/src/devices/video/polylgcy.h
@@ -34,8 +34,8 @@
#pragma once
-#ifndef __POLYNEW_H__
-#define __POLYNEW_H__
+#ifndef __POLYLGCY_H__
+#define __POLYLGCY_H__
/***************************************************************************
@@ -152,4 +152,4 @@ UINT32 poly_render_polygon(legacy_poly_manager *poly, void *dest, const rectangl
int poly_zclip_if_less(int numverts, const poly_vertex *v, poly_vertex *outv, int paramcount, float clipval);
-#endif /* __POLY_H__ */
+#endif /* __POLYLGCY_H__ */
diff --git a/src/emu/video/psx.c b/src/devices/video/psx.c
index 167280e3415..167280e3415 100644
--- a/src/emu/video/psx.c
+++ b/src/devices/video/psx.c
diff --git a/src/emu/video/psx.h b/src/devices/video/psx.h
index c8cdff69c42..c8cdff69c42 100644
--- a/src/emu/video/psx.h
+++ b/src/devices/video/psx.h
diff --git a/src/emu/video/ramdac.c b/src/devices/video/ramdac.c
index f9794e60081..f9794e60081 100644
--- a/src/emu/video/ramdac.c
+++ b/src/devices/video/ramdac.c
diff --git a/src/emu/video/ramdac.h b/src/devices/video/ramdac.h
index 0cbf29e9057..0cbf29e9057 100644
--- a/src/emu/video/ramdac.h
+++ b/src/devices/video/ramdac.h
diff --git a/src/emu/video/saa5050.c b/src/devices/video/saa5050.c
index 2440d0bc357..2440d0bc357 100644
--- a/src/emu/video/saa5050.c
+++ b/src/devices/video/saa5050.c
diff --git a/src/emu/video/saa5050.h b/src/devices/video/saa5050.h
index 0155da83e4e..0155da83e4e 100644
--- a/src/emu/video/saa5050.h
+++ b/src/devices/video/saa5050.h
diff --git a/src/emu/video/scn2674.c b/src/devices/video/scn2674.c
index ee1b9a10d79..fc2f5e23512 100644
--- a/src/emu/video/scn2674.c
+++ b/src/devices/video/scn2674.c
@@ -38,6 +38,8 @@ void scn2674_device::device_start()
save_item(NAME(m_linecounter));
save_item(NAME(m_screen2_l));
save_item(NAME(m_screen2_h));
+ save_item(NAME(m_cursor_l));
+ save_item(NAME(m_cursor_h));
}
void scn2674_device::device_reset()
@@ -58,7 +60,7 @@ void scn2674_device::device_reset()
m_display_enabled_scanline= 0;
m_cursor_enabled= 0;
m_IR0_double_ht_wd= 0;
- m_IR0_scanline_per_char_row= 0;
+ m_IR0_scanline_per_char_row= 1;
m_IR0_sync_select= 0;
m_IR0_buffer_mode_select= 0;
m_IR1_interlace_enable= 0;
@@ -94,10 +96,12 @@ void scn2674_device::device_reset()
m_spl1= 0;
m_spl2= 0;
m_dbl1= 0;
+ m_buffer= 0;
m_linecounter= 0;
m_irq_state= 0;
m_IR_pointer = 0;
m_address = 0;
+ m_start1change = 0;
m_hpixels_per_column = m_text_hpixels_per_column;
}
@@ -246,8 +250,7 @@ void scn2674_device::write_init_regs(UINT8 data)
break;
}
- if(m_display_enabled)
- recompute_parameters();
+ recompute_parameters();
m_IR_pointer++;
if (m_IR_pointer>14)m_IR_pointer=14;
@@ -291,8 +294,7 @@ void scn2674_device::write_command(UINT8 data)
/* Disable GFX */
LOG2674(("disable GFX %02x\n",data));
m_gfx_enabled = 0;
- if(m_display_enabled)
- recompute_parameters();
+ recompute_parameters();
}
if ((data&0xe3)==0x23)
@@ -300,8 +302,7 @@ void scn2674_device::write_command(UINT8 data)
/* Enable GFX */
LOG2674(("enable GFX %02x\n",data));
m_gfx_enabled = 1;
- if(m_display_enabled)
- recompute_parameters();
+ recompute_parameters();
}
if ((data&0xe9)==0x28)
@@ -410,59 +411,70 @@ void scn2674_device::write_command(UINT8 data)
/* Delayed Commands */
/* These set 0x20 in status register when done */
-
- if (data == 0xa4)
+ // These use the pointer address according to the datasheet but the pcx expects the screen start 2 address instead
+ switch(data)
{
- /* read at pointer address */
- LOG2674(("DELAYED read at pointer address %02x\n",data));
- }
+ case 0xa4:
+ /* read at pointer address */
+ m_buffer = space().read_byte(m_screen2_l | (m_screen2_h << 8));
+ LOG2674(("DELAYED read at pointer address %02x\n",data));
+ break;
- if (data == 0xa2)
- {
- /* write at pointer address */
- LOG2674(("DELAYED write at pointer address %02x\n",data));
- }
+ case 0xa2:
+ /* write at pointer address */
+ space().write_byte(m_screen2_l | (m_screen2_h << 8), m_buffer);
+ LOG2674(("DELAYED write at pointer address %02x\n",data));
+ break;
- if (data == 0xa9)
- {
- /* increase cursor address */
- LOG2674(("DELAYED increase cursor address %02x\n",data));
- }
+ case 0xa9:
+ /* increment cursor address */
+ if(!(++m_cursor_l))
+ m_cursor_h++;
+ LOG2674(("DELAYED increase cursor address %02x\n",data));
+ break;
- if (data == 0xac)
- {
- /* read at cursor address */
- LOG2674(("DELAYED read at cursor address %02x\n",data));
- }
+ case 0xac:
+ /* read at cursor address */
+ m_buffer = space().read_byte(m_cursor_l | (m_cursor_h << 8));
+ LOG2674(("DELAYED read at cursor address %02x\n",data));
+ break;
- if (data == 0xaa)
- {
- /* write at cursor address */
- LOG2674(("DELAYED write at cursor address %02x\n",data));
- }
+ case 0xaa:
+ /* write at cursor address */
+ space().write_byte(m_cursor_l | (m_cursor_h << 8), m_buffer);
+ LOG2674(("DELAYED write at cursor address %02x\n",data));
+ break;
- if (data == 0xad)
- {
- /* read at cursor address + increment */
- LOG2674(("DELAYED read at cursor address+increment %02x\n",data));
- }
+ case 0xad:
+ /* read at cursor address + increment */
+ m_buffer = space().read_byte(m_cursor_l | (m_cursor_h << 8));
+ if(!(++m_cursor_l))
+ m_cursor_h++;
+ LOG2674(("DELAYED read at cursor address+increment %02x\n",data));
+ break;
- if (data == 0xab)
- {
- /* write at cursor address + increment */
- LOG2674(("DELAYED write at cursor address+increment %02x\n",data));
- }
+ case 0xab:
+ /* write at cursor address + increment */
+ space().write_byte(m_cursor_l | (m_cursor_h << 8), m_buffer);
+ if(!(++m_cursor_l))
+ m_cursor_h++;
+ LOG2674(("DELAYED write at cursor address+increment %02x\n",data));
+ break;
- if (data == 0xbb)
- {
- /* write from cursor address to pointer address */
- LOG2674(("DELAYED write from cursor address to pointer address %02x\n",data));
- }
+ case 0xbb:
+ /* write from cursor address to pointer address TODO: transfer only during blank*/
+ for(i = m_cursor_l | (m_cursor_h << 8); i != (m_screen2_l | (m_screen2_h << 8)); i = ((i + 1) & 0xffff))
+ space().write_byte(i, m_buffer);
+ space().write_byte(i, m_buffer); // get the last
+ m_cursor_l = m_screen2_l;
+ m_cursor_h = m_screen2_h;
+ LOG2674(("DELAYED write from cursor address to pointer address %02x\n",data));
+ break;
- if (data == 0xbd)
- {
- /* read from cursor address to pointer address */
- LOG2674(("DELAYED read from cursor address to pointer address %02x\n",data));
+ case 0xbd:
+ /* read from cursor address to pointer address */
+ LOG2674(("DELAYED read from cursor address to pointer address %02x\n",data));
+ break;
}
}
@@ -540,7 +552,11 @@ WRITE8_MEMBER( scn2674_device::write )
write_command(data);
break;
- case 2: m_screen1_l = data; break;
+ case 2:
+ m_screen1_l = data;
+ if(!m_screen->vblank())
+ m_start1change = (m_linecounter / m_IR0_scanline_per_char_row) + 1;
+ break;
case 3:
m_screen1_h = data;
m_dbl1=(data & 0xc0)>>6;
@@ -550,6 +566,8 @@ WRITE8_MEMBER( scn2674_device::write )
m_screen1_h &= 0x3f;
LOG2674(("IR14 - Double 1 overridden %02x\n",m_IR14_double_1));
}
+ if(!m_screen->vblank())
+ m_start1change = (m_linecounter / m_IR0_scanline_per_char_row) + 1;
break;
case 4: m_cursor_l = data; break;
@@ -568,10 +586,16 @@ void scn2674_device::recompute_parameters()
m_hpixels_per_column = m_gfx_enabled ? m_gfx_hpixels_per_column : m_text_hpixels_per_column;
int horiz_pix_total = ((m_IR1_equalizing_constant + (m_IR2_horz_sync_width << 1)) << 1) * m_hpixels_per_column;
int vert_pix_total = m_IR4_rows_per_screen * m_IR0_scanline_per_char_row + m_IR3_vert_front_porch + m_IR3_vert_back_porch + m_IR7_vsync_width;
- attoseconds_t refresh = m_screen->frame_period().attoseconds;
+ attoseconds_t refresh = m_screen->frame_period().attoseconds();
int max_visible_x = (m_IR5_character_per_row * m_hpixels_per_column) - 1;
int max_visible_y = (m_IR4_rows_per_screen * m_IR0_scanline_per_char_row) - 1;
+ if(!horiz_pix_total || !vert_pix_total)
+ {
+ m_scanline_timer->adjust(attotime::never);
+ return;
+ }
+
LOG2674(("width %u height %u max_x %u max_y %u refresh %f\n", horiz_pix_total, vert_pix_total, max_visible_x, max_visible_y, 1 / ATTOSECONDS_TO_DOUBLE(refresh)));
rectangle visarea;
@@ -594,22 +618,11 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para
m_display_enabled_scanline = 0;
m_display_enabled_field = 0;
}
- else if(!m_display_enabled)
- break;
- else
- m_linecounter++;
- // should be triggered at the start of each ROW (line zero for that row)
+ m_linecounter++;
+
if(m_linecounter >= m_screen->height())
{
- m_status_register |= 0x08;
- if (m_irq_mask & 0x08)
- {
- LOG2674(("SCN2674 Line Zero\n"));
- m_irq_state = 1;
- m_irq_register |= 0x08;
- m_irq_cb(1);
- }
m_linecounter = 0;
m_address = (m_screen1_h << 8) | m_screen1_l;
}
@@ -629,6 +642,22 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para
if(m_linecounter >= (m_IR4_rows_per_screen * m_IR0_scanline_per_char_row))
break;
+ int charrow = m_linecounter % m_IR0_scanline_per_char_row;
+ int tilerow = charrow;
+
+ // should be triggered at the start of each ROW (line zero for that row)
+ if(!charrow)
+ {
+ m_status_register |= 0x08;
+ if (m_irq_mask & 0x08)
+ {
+ LOG2674(("SCN2674 Line Zero\n"));
+ m_irq_state = 1;
+ m_irq_register |= 0x08;
+ m_irq_cb(1);
+ }
+ }
+
if((m_linecounter == (m_IR12_split_register_1 * m_IR0_scanline_per_char_row)) && m_linecounter) /* Split Screen 1 */
{
m_status_register |= 0x04;
@@ -661,8 +690,8 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para
dw = m_IR14_double_2;
}
- int charrow = m_linecounter % m_IR0_scanline_per_char_row;
- int tilerow = charrow;
+ if(!m_display_enabled)
+ break;
if(m_IR2_row_table)
{
@@ -684,7 +713,11 @@ void scn2674_device::device_timer(emu_timer &timer, device_timer_id id, int para
m_screen2_h = (addr >> 8) & 0x3f;
m_screen2_l = addr & 0xff;
}
-
+ }
+ else if(m_start1change && (m_start1change == (m_linecounter / m_IR0_scanline_per_char_row)))
+ {
+ m_address = (m_screen1_h << 8) | m_screen1_l;
+ m_start1change = 0;
}
if(dw == 2)
diff --git a/src/emu/video/scn2674.h b/src/devices/video/scn2674.h
index 2b1eaa17184..b30c65c4039 100644
--- a/src/emu/video/scn2674.h
+++ b/src/devices/video/scn2674.h
@@ -37,6 +37,8 @@ public:
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
+ DECLARE_READ8_MEMBER( buffer_r ) { return m_buffer; }
+ DECLARE_WRITE8_MEMBER( buffer_w ) { m_buffer = data; }
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const { return (spacenum == AS_0) ? &m_space_config : NULL; }
@@ -105,8 +107,10 @@ private:
UINT8 m_spl1;
UINT8 m_spl2;
UINT8 m_dbl1;
+ UINT8 m_buffer;
int m_linecounter;
UINT16 m_address;
+ int m_start1change;
UINT8 m_irq_state;
diff --git a/src/emu/video/sed1200.c b/src/devices/video/sed1200.c
index 029ab01c236..029ab01c236 100644
--- a/src/emu/video/sed1200.c
+++ b/src/devices/video/sed1200.c
diff --git a/src/emu/video/sed1200.h b/src/devices/video/sed1200.h
index 7429215c245..7429215c245 100644
--- a/src/emu/video/sed1200.h
+++ b/src/devices/video/sed1200.h
diff --git a/src/emu/video/sed1330.c b/src/devices/video/sed1330.c
index 2ced64a8170..2ced64a8170 100644
--- a/src/emu/video/sed1330.c
+++ b/src/devices/video/sed1330.c
diff --git a/src/emu/video/sed1330.h b/src/devices/video/sed1330.h
index a78c71ef3a3..a78c71ef3a3 100644
--- a/src/emu/video/sed1330.h
+++ b/src/devices/video/sed1330.h
diff --git a/src/emu/video/sed1520.c b/src/devices/video/sed1520.c
index ba5c68145cd..ba5c68145cd 100644
--- a/src/emu/video/sed1520.c
+++ b/src/devices/video/sed1520.c
diff --git a/src/emu/video/sed1520.h b/src/devices/video/sed1520.h
index ebcc640314e..ebcc640314e 100644
--- a/src/emu/video/sed1520.h
+++ b/src/devices/video/sed1520.h
diff --git a/src/emu/video/snes_ppu.c b/src/devices/video/snes_ppu.c
index 93529ad307e..93529ad307e 100644
--- a/src/emu/video/snes_ppu.c
+++ b/src/devices/video/snes_ppu.c
diff --git a/src/emu/video/snes_ppu.h b/src/devices/video/snes_ppu.h
index 806865a0729..806865a0729 100644
--- a/src/emu/video/snes_ppu.h
+++ b/src/devices/video/snes_ppu.h
diff --git a/src/emu/video/stvvdp1.c b/src/devices/video/stvvdp1.c
index 126089d40b5..126089d40b5 100644
--- a/src/emu/video/stvvdp1.c
+++ b/src/devices/video/stvvdp1.c
diff --git a/src/emu/video/stvvdp2.c b/src/devices/video/stvvdp2.c
index e2fbcf7f58d..e2fbcf7f58d 100644
--- a/src/emu/video/stvvdp2.c
+++ b/src/devices/video/stvvdp2.c
diff --git a/src/emu/video/t6a04.c b/src/devices/video/t6a04.c
index 89bf9cf716a..89bf9cf716a 100644
--- a/src/emu/video/t6a04.c
+++ b/src/devices/video/t6a04.c
diff --git a/src/emu/video/t6a04.h b/src/devices/video/t6a04.h
index 2fe5b68bd33..2fe5b68bd33 100644
--- a/src/emu/video/t6a04.h
+++ b/src/devices/video/t6a04.h
diff --git a/src/emu/video/tea1002.c b/src/devices/video/tea1002.c
index ba518e6a6ac..ba518e6a6ac 100644
--- a/src/emu/video/tea1002.c
+++ b/src/devices/video/tea1002.c
diff --git a/src/emu/video/tea1002.h b/src/devices/video/tea1002.h
index ee01a2178b2..ee01a2178b2 100644
--- a/src/emu/video/tea1002.h
+++ b/src/devices/video/tea1002.h
diff --git a/src/emu/video/tlc34076.c b/src/devices/video/tlc34076.c
index b695ce08ed7..b695ce08ed7 100644
--- a/src/emu/video/tlc34076.c
+++ b/src/devices/video/tlc34076.c
diff --git a/src/emu/video/tlc34076.h b/src/devices/video/tlc34076.h
index 08c8d666fee..08c8d666fee 100644
--- a/src/emu/video/tlc34076.h
+++ b/src/devices/video/tlc34076.h
diff --git a/src/emu/video/tms34061.c b/src/devices/video/tms34061.c
index 02720cda66a..02720cda66a 100644
--- a/src/emu/video/tms34061.c
+++ b/src/devices/video/tms34061.c
diff --git a/src/emu/video/tms34061.h b/src/devices/video/tms34061.h
index fa8d6a98601..fa8d6a98601 100644
--- a/src/emu/video/tms34061.h
+++ b/src/devices/video/tms34061.h
diff --git a/src/emu/video/tms3556.c b/src/devices/video/tms3556.c
index 9d073bdbe0d..9d073bdbe0d 100644
--- a/src/emu/video/tms3556.c
+++ b/src/devices/video/tms3556.c
diff --git a/src/emu/video/tms3556.h b/src/devices/video/tms3556.h
index a331b8333e3..a331b8333e3 100644
--- a/src/emu/video/tms3556.h
+++ b/src/devices/video/tms3556.h
diff --git a/src/emu/video/tms9927.c b/src/devices/video/tms9927.c
index 85c6a178243..85c6a178243 100644
--- a/src/emu/video/tms9927.c
+++ b/src/devices/video/tms9927.c
diff --git a/src/emu/video/tms9927.h b/src/devices/video/tms9927.h
index adadf8945cb..adadf8945cb 100644
--- a/src/emu/video/tms9927.h
+++ b/src/devices/video/tms9927.h
diff --git a/src/emu/video/tms9928a.c b/src/devices/video/tms9928a.c
index 8e8b672f8e4..8e8b672f8e4 100644
--- a/src/emu/video/tms9928a.c
+++ b/src/devices/video/tms9928a.c
diff --git a/src/emu/video/tms9928a.h b/src/devices/video/tms9928a.h
index b87807782d1..b87807782d1 100644
--- a/src/emu/video/tms9928a.h
+++ b/src/devices/video/tms9928a.h
diff --git a/src/emu/video/upd3301.c b/src/devices/video/upd3301.c
index 8370f52c85c..8370f52c85c 100644
--- a/src/emu/video/upd3301.c
+++ b/src/devices/video/upd3301.c
diff --git a/src/emu/video/upd3301.h b/src/devices/video/upd3301.h
index cef42e08627..cef42e08627 100644
--- a/src/emu/video/upd3301.h
+++ b/src/devices/video/upd3301.h
diff --git a/src/emu/video/upd7220.c b/src/devices/video/upd7220.c
index 05f64cc2878..d17ac6ee7dc 100644
--- a/src/emu/video/upd7220.c
+++ b/src/devices/video/upd7220.c
@@ -316,11 +316,10 @@ inline void upd7220_device::dequeue(UINT8 *data, int *flag)
m_fifo_ptr--;
+ if (m_fifo_ptr <= 0)
+ m_sr |= UPD7220_SR_FIFO_EMPTY;
if (m_fifo_ptr == -1)
- {
m_sr &= ~UPD7220_SR_DATA_READY;
- m_sr |= UPD7220_SR_FIFO_EMPTY;
- }
}
}
diff --git a/src/emu/video/upd7220.h b/src/devices/video/upd7220.h
index 4a8be071cac..4a8be071cac 100644
--- a/src/emu/video/upd7220.h
+++ b/src/devices/video/upd7220.h
diff --git a/src/emu/video/upd7227.c b/src/devices/video/upd7227.c
index 037dd037610..037dd037610 100644
--- a/src/emu/video/upd7227.c
+++ b/src/devices/video/upd7227.c
diff --git a/src/emu/video/upd7227.h b/src/devices/video/upd7227.h
index 19d04224d1c..19d04224d1c 100644
--- a/src/emu/video/upd7227.h
+++ b/src/devices/video/upd7227.h
diff --git a/src/emu/video/v9938.c b/src/devices/video/v9938.c
index 3192593e76a..33d5b74d5fb 100644
--- a/src/emu/video/v9938.c
+++ b/src/devices/video/v9938.c
@@ -5,6 +5,25 @@
v9938 / v9958 emulation
+Vertical display parameters from Yamaha V9938 Technical Data Book.
+NTSC: page 146, Table 7-2
+PAL: page 147, Table 7-3
+
+Vertical timing:
+ PAL NTSC
+ 192(LN=0) 212(LN=1) 192(LN=0) 212(LN=1)
+ ------------------- --------------------
+1. Top erase (top blanking) 13 13 13 13
+2. Top border 53 43 26 16
+3. Active display 192 212 192 212
+4. Bottom border 49 39 25 15
+5. Bottom erase (bottom blanking) 3 3 3 3
+6. Vertical sync (bottom blanking) 3 3 3 3
+7. Total 313 313 262 262
+
+ Refresh rate 50.158974 59.922743
+
+
***************************************************************************/
/*
@@ -59,8 +78,8 @@ Similar to the TMS9928, the V9938 has an own address space. It can handle
at most 192 KiB RAM (128 KiB base, 64 KiB expansion).
*/
static ADDRESS_MAP_START(memmap, AS_DATA, 8, v99x8_device)
-ADDRESS_MAP_GLOBAL_MASK(0x3ffff)
-AM_RANGE(0x00000, 0x2ffff) AM_RAM
+ ADDRESS_MAP_GLOBAL_MASK(0x3ffff)
+ AM_RANGE(0x00000, 0x2ffff) AM_RAM
ADDRESS_MAP_END
@@ -68,6 +87,7 @@ ADDRESS_MAP_END
const device_type V9938 = &device_creator<v9938_device>;
const device_type V9958 = &device_creator<v9958_device>;
+
v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, const char *name, const char *shortname, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
device_memory_interface(mconfig, *this),
@@ -96,7 +116,8 @@ v99x8_device::v99x8_device(const machine_config &mconfig, device_type type, cons
m_button_state(0),
m_vdp_ops_count(0),
m_vdp_engine(NULL),
- m_palette(*this, "palette")
+ m_palette(*this, "palette"),
+ m_pal_ntsc(0)
{
static_set_addrmap(*this, AS_DATA, ADDRESS_MAP_NAME(memmap));
}
@@ -114,59 +135,105 @@ v9958_device::v9958_device(const machine_config &mconfig, const char *tag, devic
}
-int v99x8_device::interrupt ()
+void v99x8_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
{
- int scanline, max, pal, scanline_start;
+ int scanline = (m_scanline - (m_scanline_start + m_offset_y));
update_command ();
- pal = m_cont_reg[9] & 2;
- if (pal) scanline_start = 53; else scanline_start = 22;
-
// set flags
- if (m_scanline == (m_offset_y + scanline_start) )
+ if (m_scanline == (m_scanline_start + m_offset_y))
{
m_stat_reg[2] &= ~0x40;
}
- else if (m_scanline == (m_offset_y + m_visible_y + scanline_start) )
+ else if (m_scanline == (m_scanline_start + m_offset_y + m_visible_y))
{
m_stat_reg[2] |= 0x40;
m_stat_reg[0] |= 0x80;
}
- max = (pal) ? 255 : (m_cont_reg[9] & 0x80) ? 234 : 244;
- scanline = (m_scanline - scanline_start - m_offset_y);
- if ( (scanline >= 0) && (scanline <= max) &&
- ( ( (scanline + m_cont_reg[23]) & 255) == m_cont_reg[19]) )
+ if ( (scanline >= 0) && (scanline <= m_scanline_max) &&
+ (((scanline + m_cont_reg[23]) & 255) == m_cont_reg[19]) )
{
m_stat_reg[1] |= 1;
LOG(("V9938: scanline interrupt (%d)\n", scanline));
}
- else
- if ( !(m_cont_reg[0] & 0x10) ) m_stat_reg[1] &= 0xfe;
+ else if (!(m_cont_reg[0] & 0x10))
+ {
+ m_stat_reg[1] &= 0xfe;
+ }
- check_int ();
+ check_int();
// check for start of vblank
- if ((pal && (m_scanline == 310)) ||
- (!pal && (m_scanline == 259)))
- interrupt_start_vblank ();
+ if (m_scanline == m_vblank_start)
+ {
+ interrupt_start_vblank();
+ }
// render the current line
- if ((m_scanline >= scanline_start) && (m_scanline < (212 + 28 + scanline_start)))
+ if (m_scanline < m_vblank_start)
{
- scanline = (m_scanline - scanline_start) & 255;
-
- refresh_line (scanline);
+ refresh_line(scanline);
}
- max = (m_cont_reg[9] & 2) ? 313 : 262;
- if (++m_scanline >= max)
+ if (++m_scanline >= m_height)
+ {
m_scanline = 0;
+ // PAL/NTSC changed?
+ int pal = m_cont_reg[9] & 2;
+ if (m_pal_ntsc != pal)
+ {
+ m_pal_ntsc = pal;
+ configure_pal_ntsc();
+ }
+ //m_screen->reset_origin();
+ m_offset_y = position_offset(m_cont_reg[18] >> 4);
+ set_screen_parameters();
+ }
+}
+
+
+void v99x8_device::set_screen_parameters()
+{
+ if (m_pal_ntsc)
+ {
+ // PAL
+ m_scanline_start = (m_cont_reg[9] & 0x80) ? 43 : 53;
+ m_scanline_max = 255;
+ }
+ else
+ {
+ // NYSC
+ m_scanline_start = (m_cont_reg[9] & 0x80) ? 16 : 26;
+ m_scanline_max = (m_cont_reg[9] & 0x80) ? 234 : 244;
+ }
+ m_visible_y = (m_cont_reg[9] & 0x80) ? 212 : 192;
+}
- return m_int_state;
+
+void v99x8_device::configure_pal_ntsc()
+{
+ if (m_pal_ntsc)
+ {
+ // PAL
+ m_height = VTOTAL_PAL;
+ rectangle visible;
+ visible.set(0, HVISIBLE - 1, VERTICAL_ADJUST * 2, VVISIBLE_PAL * 2 - 1 - VERTICAL_ADJUST * 2);
+ m_screen->configure(HTOTAL, VTOTAL_PAL * 2, visible, HZ_TO_ATTOSECONDS(50.158974));
+ }
+ else
+ {
+ // NTSC
+ m_height = VTOTAL_NTSC;
+ rectangle visible;
+ visible.set(0, HVISIBLE - 1, VERTICAL_ADJUST * 2, VVISIBLE_NTSC * 2 - 1 - VERTICAL_ADJUST * 2);
+ m_screen->configure(HTOTAL, VTOTAL_NTSC * 2, visible, HZ_TO_ATTOSECONDS(59.922743));
+ }
+ m_vblank_start = m_height - VERTICAL_SYNC - TOP_ERASE; /* Sync + top erase */
}
+
/*
Not really right... won't work with sprites in graphics 7
and with palette updated mid-screen
@@ -570,6 +637,8 @@ void v99x8_device::device_start()
for (int addr = m_vram_size; addr < 0x30000; addr++) m_vram_space->write_byte(addr, 0xff);
}
+ m_line_timer = timer_alloc(TIMER_LINE);
+
save_item(NAME(m_offset_x));
save_item(NAME(m_offset_y));
save_item(NAME(m_visible_y));
@@ -612,6 +681,11 @@ void v99x8_device::device_start()
save_item(NAME(m_mmc.MXS));
save_item(NAME(m_mmc.MXD));
save_item(NAME(m_vdp_ops_count));
+ save_item(NAME(m_pal_ntsc));
+ save_item(NAME(m_scanline_start));
+ save_item(NAME(m_vblank_start));
+ save_item(NAME(m_scanline_max));
+ save_item(NAME(m_height));
}
void v99x8_device::device_reset()
@@ -620,7 +694,7 @@ void v99x8_device::device_reset()
// offset reset
m_offset_x = 8;
- m_offset_y = 8 + 16;
+ m_offset_y = 0;
m_visible_y = 192;
// register reset
reset_palette (); // palette registers
@@ -644,10 +718,16 @@ void v99x8_device::device_reset()
// TODO: SR3-S6 do not yet store the information about the sprite collision
m_stat_reg[4] = 0xfe;
m_stat_reg[6] = 0xfc;
+
+ // Start the timer
+ m_line_timer->adjust(attotime::from_ticks(HTOTAL*2, m_clock), 0, attotime::from_ticks(HTOTAL*2, m_clock));
+
+ configure_pal_ntsc();
+ set_screen_parameters();
}
-void v99x8_device::reset_palette ()
+void v99x8_device::reset_palette()
{
// taken from V9938 Technical Data book, page 148. it's in G-R-B format
static const UINT8 pal16[16*3] = {
@@ -795,17 +875,8 @@ void v99x8_device::register_write (int reg, int data)
case 9:
m_cont_reg[reg] = data;
// recalc offset
- m_offset_x = (( (~m_cont_reg[18] - 8) & 0x0f) + 1);
- m_offset_y = ((~(m_cont_reg[18]>>4) - 8) & 0x0f) + 7;
- if (m_cont_reg[9] & 0x80)
- {
- m_visible_y = 212;
- }
- else
- {
- m_visible_y = 192;
- m_offset_y += 10;
- }
+ m_offset_x = 8 + position_offset(m_cont_reg[18] & 0x0f);
+ // Y offset is only applied once per frame?
break;
case 15:
@@ -1789,32 +1860,31 @@ void v99x8_device::refresh_16(int line)
if (m_cont_reg[9] & 0x08)
{
- ln = &m_bitmap.pix16(line*2+((m_stat_reg[2]>>1)&1));
+ ln = &m_bitmap.pix16(m_scanline*2+((m_stat_reg[2]>>1)&1));
}
else
{
- ln = &m_bitmap.pix16(line*2);
- ln2 = &m_bitmap.pix16(line*2+1);
+ ln = &m_bitmap.pix16(m_scanline*2);
+ ln2 = &m_bitmap.pix16(m_scanline*2+1);
double_lines = true;
}
if ( !(m_cont_reg[1] & 0x40) || (m_stat_reg[2] & 0x40) )
{
- (this->*s_modes[m_mode].border_16) (pens, ln);
+ (this->*s_modes[m_mode].border_16)(pens, ln);
}
else
{
- int i = (line - m_offset_y) & 255;
- (this->*s_modes[m_mode].visible_16) (pens, ln, i);
+ (this->*s_modes[m_mode].visible_16)(pens, ln, line);
if (s_modes[m_mode].sprites)
{
- (this->*s_modes[m_mode].sprites) (i, col);
- (this->*s_modes[m_mode].draw_sprite_16) (pens, ln, col);
+ (this->*s_modes[m_mode].sprites)(line, col);
+ (this->*s_modes[m_mode].draw_sprite_16)(pens, ln, col);
}
}
if (double_lines)
- memcpy (ln2, ln, (512 + 32) * 2);
+ memcpy(ln2, ln, (512 + 32) * 2);
}
void v99x8_device::refresh_line(int line)
diff --git a/src/emu/video/v9938.h b/src/devices/video/v9938.h
index 1393765ace3..7e620a66c21 100644
--- a/src/emu/video/v9938.h
+++ b/src/devices/video/v9938.h
@@ -17,15 +17,39 @@
// DEVICE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_V9938_ADD(_tag, _screen, _vramsize) \
- MCFG_DEVICE_ADD(_tag, V9938, 0) \
+#define MCFG_V9938_ADD(_tag, _screen, _vramsize, _clock) \
+ MCFG_DEVICE_ADD(_tag, V9938, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen) \
v9938_device::static_set_vram_size(*device, _vramsize);
-#define MCFG_V9958_ADD(_tag, _screen, _vramsize) \
- MCFG_DEVICE_ADD(_tag, V9958, 0) \
+#define MCFG_V9958_ADD(_tag, _screen, _vramsize, _clock) \
+ MCFG_DEVICE_ADD(_tag, V9958, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen) \
v9938_device::static_set_vram_size(*device, _vramsize);
+#define MCFG_V99X8_SCREEN_ADD_NTSC(_screen_tag, _v9938_tag, _clock) \
+ MCFG_SCREEN_ADD(_screen_tag, RASTER) \
+ MCFG_SCREEN_RAW_PARAMS(_clock, \
+ v99x8_device::HTOTAL, \
+ 0, \
+ v99x8_device::HVISIBLE - 1, \
+ v99x8_device::VTOTAL_NTSC * 2, \
+ v99x8_device::VERTICAL_ADJUST * 2, \
+ v99x8_device::VVISIBLE_NTSC * 2 - 1 - v99x8_device::VERTICAL_ADJUST * 2) \
+ MCFG_SCREEN_UPDATE_DEVICE(_v9938_tag, v9938_device, screen_update) \
+ MCFG_SCREEN_PALETTE(_v9938_tag":palette")
+
+#define MCFG_V99X8_SCREEN_ADD_PAL(_screen_tag, _v9938_tag, _clock) \
+ MCFG_SCREEN_ADD(_screen_tag, RASTER) \
+ MCFG_SCREEN_RAW_PARAMS(_clock, \
+ v99x8_device::HTOTAL, \
+ 0, \
+ v99x8_device::HVISIBLE - 1, \
+ v99x8_device::VTOTAL_PAL * 2, \
+ v99x8_device::VERTICAL_ADJUST * 2, \
+ v99x8_device::VVISIBLE_PAL * 2 - 1 - v99x8_device::VERTICAL_ADJUST * 2) \
+ MCFG_SCREEN_UPDATE_DEVICE(_v9938_tag, v9938_device, screen_update) \
+ MCFG_SCREEN_PALETTE(_v9938_tag":palette")
+
#define MCFG_V99X8_INTERRUPT_CALLBACK(_irq) \
downcast<v99x8_device *>(device)->set_interrupt_callback(DEVCB_##_irq);
@@ -58,7 +82,6 @@ public:
template<class _irq> void set_interrupt_callback(_irq irq) {
m_int_callback.set_callback(irq);
}
- int interrupt ();
int get_transpen();
bitmap_ind16 &get_bitmap() { return m_bitmap; }
void update_mouse_state(int mx_delta, int my_delta, int button_state);
@@ -80,7 +103,22 @@ public:
/* RESET pin */
void reset_line(int state) { if (state==ASSERT_LINE) device_reset(); }
+ static const int HTOTAL = 684;
+ static const int HVISIBLE = 544;
+ static const int VTOTAL_NTSC = 262;
+ static const int VTOTAL_PAL = 313;
+ static const int VVISIBLE_NTSC = 26 + 192 + 25;
+ static const int VVISIBLE_PAL = 53 + 192 + 49;
+ // Looking at some youtube videos of real units on real monitors
+ // there appear to be small vertical timing differences. Some (LCD)
+ // monitors show the full borders, other CRT monitors seem to
+ // display ~5 lines less at the top and bottom of the screen.
+ static const int VERTICAL_ADJUST = 5;
+ static const int TOP_ERASE = 13;
+ static const int VERTICAL_SYNC = 3;
+
protected:
+ static const device_timer_id TIMER_LINE = 0;
const address_space_config m_space_config;
address_space* m_vram_space;
@@ -89,12 +127,17 @@ protected:
// device overrides
virtual void device_start();
virtual void device_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
// device_memory_interface overrides
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_DATA) const { return (spacenum == AS_DATA) ? &m_space_config : NULL; }
+ void configure_pal_ntsc();
+ void set_screen_parameters();
+
private:
// internal helpers
+ inline int position_offset(UINT8 value) { value &= 0x0f; return (value < 8) ? -value : 16 - value; }
void reset_palette();
void vram_write(int offset, int data);
int vram_read(int offset);
@@ -220,6 +263,12 @@ private:
} ;
static const v99x8_mode s_modes[];
required_device<palette_device> m_palette;
+ emu_timer *m_line_timer;
+ UINT8 m_pal_ntsc;
+ int m_scanline_start;
+ int m_vblank_start;
+ int m_scanline_max;
+ int m_height;
protected:
static UINT16 s_pal_indYJK[0x20000];
};
diff --git a/src/emu/video/vic4567.c b/src/devices/video/vic4567.c
index ca98279365b..ca98279365b 100644
--- a/src/emu/video/vic4567.c
+++ b/src/devices/video/vic4567.c
diff --git a/src/emu/video/vic4567.h b/src/devices/video/vic4567.h
index 41d385397fa..41d385397fa 100644
--- a/src/emu/video/vic4567.h
+++ b/src/devices/video/vic4567.h
diff --git a/src/emu/video/vooddefs.h b/src/devices/video/vooddefs.h
index db67d2de8d5..f98aece2110 100644
--- a/src/emu/video/vooddefs.h
+++ b/src/devices/video/vooddefs.h
@@ -3209,7 +3209,7 @@ do
INT32 smax, tmax; \
UINT32 texbase; \
rgb_union c_local; \
- \
+ \
/* determine the S/T/LOD values for this texture */ \
if (TEXMODE_ENABLE_PERSPECTIVE(TEXMODE)) \
{ \
@@ -4737,15 +4737,16 @@ INLINE INT32 ATTR_FORCE_INLINE new_log2(double &value)
}
// Computes A/C and B/C and returns log2 of 1/C
-// A, B and C are 16.32 values. The results are 14.18.
+// A, B and C are 16.32 values. The results are 24.8.
INLINE void ATTR_FORCE_INLINE multi_reciplog(INT64 valueA, INT64 valueB, INT64 valueC, INT32 &log, INT32 &resA, INT32 &resB)
{
- double recip = 1.0f/valueC;
- double resAD = valueA * recip * ((INT64)1<<(47-29));
- double resBD = valueB * recip * ((INT64)1<<(47-29));
- log = new_log2(recip);
- resA = resAD;
- resB = resBD;
+ double recip = double(1ULL<<(47-39))/valueC;
+ double resAD = valueA * recip;
+ double resBD = valueB * recip;
+ log = new_log2(recip);
+ log += 56<<8;
+ resA = resAD;
+ resB = resBD;
}
@@ -4761,8 +4762,8 @@ INLINE rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, INT32 x, const UINT
INT32 wLog;
if (USE_FAST_RECIP) {
const INT32 oow = fast_reciplog((ITERW), &wLog);
- s = ((INT64)oow * (ITERS)) >> 29;
- t = ((INT64)oow * (ITERT)) >> 29;
+ s = ((INT64)oow * (ITERS)) >> (29+10);
+ t = ((INT64)oow * (ITERT)) >> (29+10);
} else {
multi_reciplog(ITERS, ITERT, ITERW, wLog, s, t);
}
@@ -4770,8 +4771,8 @@ INLINE rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, INT32 x, const UINT
}
else
{
- s = (ITERS) >> 14;
- t = (ITERT) >> 14;
+ s = (ITERS) >> (14+10);
+ t = (ITERT) >> (14+10);
}
/* clamp W */
@@ -4810,8 +4811,8 @@ INLINE rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, INT32 x, const UINT
UINT32 texel0;
/* adjust S/T for the LOD and strip off the fractions */
- s >>= ilod + 18;
- t >>= ilod + 18;
+ s >>= ilod + (18-10);
+ t >>= ilod + (18-10);
/* clamp/wrap S/T if necessary */
if (TEXMODE_CLAMP_S(TEXMODE))
@@ -4847,8 +4848,8 @@ INLINE rgbaint_t ATTR_FORCE_INLINE genTexture(tmu_state *TT, INT32 x, const UINT
/* adjust S/T for the LOD and strip off all but the low 8 bits of */
/* the fraction */
- s >>= ilod + 10;
- t >>= ilod + 10;
+ s >>= ilod; // + (10-10);
+ t >>= ilod; // + (10-10);
/* also subtract 1/2 texel so that (0.5,0.5) = a full (0,0) texel */
s -= 0x80;
diff --git a/src/emu/video/voodoo.c b/src/devices/video/voodoo.c
index 774387c3921..1874fccad29 100644
--- a/src/emu/video/voodoo.c
+++ b/src/devices/video/voodoo.c
@@ -2095,8 +2095,8 @@ static void cmdfifo_w(voodoo_state *v, cmdfifo_info *f, offs_t offset, UINT32 da
v->pci.op_end_time = v->device->machine().time() + attotime(0, (attoseconds_t)cycles * v->attoseconds_per_cycle);
if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:direct write start at %d.%08X%08X end at %d.%08X%08X\n", v->index,
- v->device->machine().time().seconds, (UINT32)(v->device->machine().time().attoseconds >> 32), (UINT32)v->device->machine().time().attoseconds,
- v->pci.op_end_time.seconds, (UINT32)(v->pci.op_end_time.attoseconds >> 32), (UINT32)v->pci.op_end_time.attoseconds);
+ v->device->machine().time().seconds(), (UINT32)(v->device->machine().time().attoseconds() >> 32), (UINT32)v->device->machine().time().attoseconds(),
+ v->pci.op_end_time.seconds(), (UINT32)(v->pci.op_end_time.attoseconds() >> 32), (UINT32)v->pci.op_end_time.attoseconds());
}
}
}
@@ -2585,7 +2585,7 @@ static INT32 register_w(voodoo_state *v, offs_t offset, UINT32 data)
if (v->reg[hSync].u != 0 && v->reg[vSync].u != 0 && v->reg[videoDimensions].u != 0)
{
int hvis, vvis, htotal, vtotal, hbp, vbp;
- attoseconds_t refresh = v->screen->frame_period().attoseconds;
+ attoseconds_t refresh = v->screen->frame_period().attoseconds();
attoseconds_t stdperiod, medperiod, vgaperiod;
attoseconds_t stddiff, meddiff, vgadiff;
rectangle visarea;
@@ -3569,8 +3569,8 @@ static void flush_fifos(voodoo_state *v, attotime current_time)
if (!v->pci.op_pending) fatalerror("flush_fifos called with no pending operation\n");
if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:flush_fifos start -- pending=%d.%08X%08X cur=%d.%08X%08X\n", v->index,
- v->pci.op_end_time.seconds, (UINT32)(v->pci.op_end_time.attoseconds >> 32), (UINT32)v->pci.op_end_time.attoseconds,
- current_time.seconds, (UINT32)(current_time.attoseconds >> 32), (UINT32)current_time.attoseconds);
+ v->pci.op_end_time.seconds(), (UINT32)(v->pci.op_end_time.attoseconds() >> 32), (UINT32)v->pci.op_end_time.attoseconds(),
+ current_time.seconds(), (UINT32)(current_time.attoseconds() >> 32), (UINT32)current_time.attoseconds());
/* loop while we still have cycles to burn */
while (v->pci.op_end_time <= current_time)
@@ -3667,12 +3667,12 @@ static void flush_fifos(voodoo_state *v, attotime current_time)
v->pci.op_end_time += attotime(0, (attoseconds_t)cycles * v->attoseconds_per_cycle);
if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:update -- pending=%d.%08X%08X cur=%d.%08X%08X\n", v->index,
- v->pci.op_end_time.seconds, (UINT32)(v->pci.op_end_time.attoseconds >> 32), (UINT32)v->pci.op_end_time.attoseconds,
- current_time.seconds, (UINT32)(current_time.attoseconds >> 32), (UINT32)current_time.attoseconds);
+ v->pci.op_end_time.seconds(), (UINT32)(v->pci.op_end_time.attoseconds() >> 32), (UINT32)v->pci.op_end_time.attoseconds(),
+ current_time.seconds(), (UINT32)(current_time.attoseconds() >> 32), (UINT32)current_time.attoseconds());
}
if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:flush_fifos end -- pending command complete at %d.%08X%08X\n", v->index,
- v->pci.op_end_time.seconds, (UINT32)(v->pci.op_end_time.attoseconds >> 32), (UINT32)v->pci.op_end_time.attoseconds);
+ v->pci.op_end_time.seconds(), (UINT32)(v->pci.op_end_time.attoseconds() >> 32), (UINT32)v->pci.op_end_time.attoseconds());
in_flush = FALSE;
}
@@ -3782,8 +3782,8 @@ WRITE32_MEMBER( voodoo_device::voodoo_w )
v->pci.op_end_time = machine().time() + attotime(0, (attoseconds_t)cycles * v->attoseconds_per_cycle);
if (LOG_FIFO_VERBOSE) logerror("VOODOO.%d.FIFO:direct write start at %d.%08X%08X end at %d.%08X%08X\n", v->index,
- machine().time().seconds, (UINT32)(machine().time().attoseconds >> 32), (UINT32)machine().time().attoseconds,
- v->pci.op_end_time.seconds, (UINT32)(v->pci.op_end_time.attoseconds >> 32), (UINT32)v->pci.op_end_time.attoseconds);
+ machine().time().seconds(), (UINT32)(machine().time().attoseconds() >> 32), (UINT32)machine().time().attoseconds(),
+ v->pci.op_end_time.seconds(), (UINT32)(v->pci.op_end_time.attoseconds() >> 32), (UINT32)v->pci.op_end_time.attoseconds());
}
g_profiler.stop();
return;
@@ -6513,5 +6513,25 @@ RASTERIZER_ENTRY( 0x00002425, 0x00045119, 0x000000C1, 0x00010FF9, 0x00000ACD, 0x
RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010FF9, 0x000000C4, 0x0C261ACD ) /* * 66 74 3951 */
RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x00000000, 0x00010FF9, 0x00000ACD, 0x04221AC9 ) /* 70 374 3691 */
RASTERIZER_ENTRY( 0x00482405, 0x00045119, 0x000000C1, 0x00010FF9, 0x00000ACD, 0x0C261ACD ) /* * 20 350 7928 */
+/* virtpool ----> fbzColorPath alphaMode fogMode, fbzMode, texMode0, texMode1 hash */
+RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B0739, 0x0C261A0F, 0x042210C0 ) /* * 78 2182388 74854175 */
+RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B07F9, 0x0C261A0F, 0x042210C0 ) /* * 46 114830 6776826 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A0F, 0x042210C0 ) /* * 58 1273673 4513463 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B0739, 0x0C261A09, 0x042210C0 ) /* * 46 634995 2275612 */
+RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B073B, 0x0C261A0F, 0x042210C0 ) /* * 46 26651 1883507 */
+RASTERIZER_ENTRY( 0x00482405, 0x00045110, 0x00000000, 0x000B073B, 0x0C261A0F, 0x042210C0 ) /* * 26 220644 751241 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00445110, 0x00000000, 0x000B073B, 0x0C261A09, 0x042210C0 ) /* * 79 14846 3499120 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B0739, 0x0C261A09, 0x042210C0 ) /* * 66 26665 1583363 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B073B, 0x0C26100F, 0x042210C0 ) /* * 78 33096 957935 */
+//RASTERIZER_ENTRY( 0x00002425, 0x00445110, 0x00000000, 0x000B07F9, 0x0C261A0F, 0x042210C0 ) /* * 38 12494 678029 */
+//RASTERIZER_ENTRY( 0x00800000, 0x00000000, 0x00000000, 0x00000200, 0x00000000, 0x00000000 ) /* * 28 25348 316181 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B0739, 0x0C26100F, 0x042210C0 ) /* * 13 11344 267903 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B073B, 0x0C261A09, 0x042210C0 ) /* * 34 1548 112168 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B07FB, 0x0C26100F, 0x042210C0 ) /* * 35 664 25222 */
+//RASTERIZER_ENTRY( 0x00000002, 0x00000000, 0x00000000, 0x00000300, 0xFFFFFFFF, 0xFFFFFFFF ) /* * 33 512 18393 */
+//RASTERIZER_ENTRY( 0x00002421, 0x00000000, 0x00000000, 0x000B07FB, 0x0C261A0F, 0x042210C0 ) /* * 14 216 16842 */
+//RASTERIZER_ENTRY( 0x00000001, 0x00000000, 0x00000000, 0x00000300, 0x00000800, 0x00000800 ) /* * 87 2 72 */
+//RASTERIZER_ENTRY( 0x00000001, 0x00000000, 0x00000000, 0x00000200, 0x08241A00, 0x08241A00 ) /* * 92 2 8 */
+//RASTERIZER_ENTRY( 0x00000001, 0x00000000, 0x00000000, 0x00000200, 0x00000000, 0x08241A00 ) /* * 93 2 8 */
#endif
diff --git a/src/emu/video/voodoo.h b/src/devices/video/voodoo.h
index dcd03d38876..dcd03d38876 100644
--- a/src/emu/video/voodoo.h
+++ b/src/devices/video/voodoo.h
diff --git a/src/emu/video/voodoo_pci.c b/src/devices/video/voodoo_pci.c
index 7570a007efb..7570a007efb 100644
--- a/src/emu/video/voodoo_pci.c
+++ b/src/devices/video/voodoo_pci.c
diff --git a/src/emu/video/voodoo_pci.h b/src/devices/video/voodoo_pci.h
index a1fe30bd7db..a1fe30bd7db 100644
--- a/src/emu/video/voodoo_pci.h
+++ b/src/devices/video/voodoo_pci.h
diff --git a/src/emu/attotime.c b/src/emu/attotime.c
index 7eec042e8dd..7f7b2005b94 100644
--- a/src/emu/attotime.c
+++ b/src/emu/attotime.c
@@ -20,8 +20,6 @@
const attotime attotime::zero(0, 0);
const attotime attotime::never(ATTOTIME_MAX_SECONDS, 0);
-
-
//**************************************************************************
// CORE MATH FUNCTIONS
//**************************************************************************
@@ -34,7 +32,7 @@ const attotime attotime::never(ATTOTIME_MAX_SECONDS, 0);
attotime &attotime::operator*=(UINT32 factor)
{
// if one of the items is attotime::never, return attotime::never
- if (seconds >= ATTOTIME_MAX_SECONDS)
+ if (m_seconds >= ATTOTIME_MAX_SECONDS)
return *this = never;
// 0 times anything is zero
@@ -43,7 +41,7 @@ attotime &attotime::operator*=(UINT32 factor)
// split attoseconds into upper and lower halves which fit into 32 bits
UINT32 attolo;
- UINT32 attohi = divu_64x32_rem(attoseconds, ATTOSECONDS_PER_SECOND_SQRT, &attolo);
+ UINT32 attohi = divu_64x32_rem(m_attoseconds, ATTOSECONDS_PER_SECOND_SQRT, &attolo);
// scale the lower half, then split into high/low parts
UINT64 temp = mulu_32x32(attolo, factor);
@@ -56,13 +54,13 @@ attotime &attotime::operator*=(UINT32 factor)
temp = divu_64x32_rem(temp, ATTOSECONDS_PER_SECOND_SQRT, &reshi);
// scale the seconds
- temp += mulu_32x32(seconds, factor);
+ temp += mulu_32x32(m_seconds, factor);
if (temp >= ATTOTIME_MAX_SECONDS)
return *this = never;
// build the result
- seconds = temp;
- attoseconds = (attoseconds_t)reslo + mul_32x32(reshi, ATTOSECONDS_PER_SECOND_SQRT);
+ m_seconds = temp;
+ m_attoseconds = (attoseconds_t)reslo + mul_32x32(reshi, ATTOSECONDS_PER_SECOND_SQRT);
return *this;
}
@@ -74,7 +72,7 @@ attotime &attotime::operator*=(UINT32 factor)
attotime &attotime::operator/=(UINT32 factor)
{
// if one of the items is attotime::never, return attotime::never
- if (seconds >= ATTOTIME_MAX_SECONDS)
+ if (m_seconds >= ATTOTIME_MAX_SECONDS)
return *this = never;
// ignore divide by zero
@@ -83,11 +81,11 @@ attotime &attotime::operator/=(UINT32 factor)
// split attoseconds into upper and lower halves which fit into 32 bits
UINT32 attolo;
- UINT32 attohi = divu_64x32_rem(attoseconds, ATTOSECONDS_PER_SECOND_SQRT, &attolo);
+ UINT32 attohi = divu_64x32_rem(m_attoseconds, ATTOSECONDS_PER_SECOND_SQRT, &attolo);
// divide the seconds and get the remainder
UINT32 remainder;
- seconds = divu_64x32_rem(seconds, factor, &remainder);
+ m_seconds = divu_64x32_rem(m_seconds, factor, &remainder);
// combine the upper half of attoseconds with the remainder and divide that
UINT64 temp = (INT64)attohi + mulu_32x32(remainder, ATTOSECONDS_PER_SECOND_SQRT);
@@ -98,12 +96,12 @@ attotime &attotime::operator/=(UINT32 factor)
UINT32 reslo = divu_64x32_rem(temp, factor, &remainder);
// round based on the remainder
- attoseconds = (attoseconds_t)reslo + mulu_32x32(reshi, ATTOSECONDS_PER_SECOND_SQRT);
+ m_attoseconds = (attoseconds_t)reslo + mulu_32x32(reshi, ATTOSECONDS_PER_SECOND_SQRT);
if (remainder >= factor / 2)
- if (++attoseconds >= ATTOSECONDS_PER_SECOND)
+ if (++m_attoseconds >= ATTOSECONDS_PER_SECOND)
{
- attoseconds = 0;
- seconds++;
+ m_attoseconds = 0;
+ m_seconds++;
}
return *this;
}
@@ -126,33 +124,33 @@ const char *attotime::as_string(int precision) const
// case 1: we want no precision; seconds only
else if (precision == 0)
- sprintf(buffer, "%d", seconds);
+ sprintf(buffer, "%d", m_seconds);
// case 2: we want 9 or fewer digits of precision
else if (precision <= 9)
{
- UINT32 upper = attoseconds / ATTOSECONDS_PER_SECOND_SQRT;
+ UINT32 upper = m_attoseconds / ATTOSECONDS_PER_SECOND_SQRT;
int temp = precision;
while (temp < 9)
{
upper /= 10;
temp++;
}
- sprintf(buffer, "%d.%0*d", seconds, precision, upper);
+ sprintf(buffer, "%d.%0*d", m_seconds, precision, upper);
}
// case 3: more than 9 digits of precision
else
{
UINT32 lower;
- UINT32 upper = divu_64x32_rem(attoseconds, ATTOSECONDS_PER_SECOND_SQRT, &lower);
+ UINT32 upper = divu_64x32_rem(m_attoseconds, ATTOSECONDS_PER_SECOND_SQRT, &lower);
int temp = precision;
while (temp < 18)
{
lower /= 10;
temp++;
}
- sprintf(buffer, "%d.%09d%0*d", seconds, upper, precision - 9, lower);
+ sprintf(buffer, "%d.%09d%0*d", m_seconds, upper, precision - 9, lower);
}
return buffer;
}
diff --git a/src/emu/attotime.h b/src/emu/attotime.h
index e2bdf19adaf..0cdaa424ca0 100644
--- a/src/emu/attotime.h
+++ b/src/emu/attotime.h
@@ -39,8 +39,6 @@
#undef min
#undef max
-
-
//**************************************************************************
// CONSTANTS
//**************************************************************************
@@ -90,35 +88,49 @@ class attotime
public:
// construction/destruction
attotime()
- : seconds(0),
- attoseconds(0) { }
+ : m_seconds(0),
+ m_attoseconds(0) { }
attotime(seconds_t secs, attoseconds_t attos)
- : seconds(secs),
- attoseconds(attos) { }
+ : m_seconds(secs),
+ m_attoseconds(attos) { }
attotime(const attotime& that)
- : seconds(that.seconds),
- attoseconds(that.attoseconds) { }
+ : m_seconds(that.m_seconds),
+ m_attoseconds(that.m_attoseconds) { }
// assignment
attotime& operator=(const attotime& that)
{
- this->seconds = that.seconds;
- this->attoseconds = that.attoseconds;
+ this->m_seconds = that.m_seconds;
+ this->m_attoseconds = that.m_attoseconds;
return *this;
}
// queries
- bool is_zero() const { return (seconds == 0 && attoseconds == 0); }
- bool is_never() const { return (seconds >= ATTOTIME_MAX_SECONDS); }
+ bool is_zero() const { return (m_seconds == 0 && m_attoseconds == 0); }
+ bool is_never() const { return (m_seconds >= ATTOTIME_MAX_SECONDS); }
// conversion to other forms
- double as_double() const { return double(seconds) + ATTOSECONDS_TO_DOUBLE(attoseconds); }
+ double as_double() const { return double(m_seconds) + ATTOSECONDS_TO_DOUBLE(m_attoseconds); }
attoseconds_t as_attoseconds() const;
UINT64 as_ticks(UINT32 frequency) const;
const char *as_string(int precision = 9) const;
+ // Needed by gba.c FIXME: this shouldn't be necessary?
+
+ void normalize()
+ {
+ while (m_attoseconds >= ATTOSECONDS_PER_SECOND)
+ {
+ m_seconds++;
+ m_attoseconds -= ATTOSECONDS_PER_SECOND;
+ }
+ }
+
+ attoseconds_t attoseconds() const { return m_attoseconds; }
+ seconds_t seconds() const { return m_seconds; }
+
// conversion from other forms
static attotime from_double(double _time);
static attotime from_ticks(UINT64 ticks, UINT32 frequency);
@@ -135,8 +147,8 @@ public:
attotime &operator/=(UINT32 factor);
// members
- seconds_t seconds;
- attoseconds_t attoseconds;
+ seconds_t m_seconds;
+ attoseconds_t m_attoseconds;
// constants
static const attotime never;
@@ -159,22 +171,22 @@ inline attotime operator+(const attotime &left, const attotime &right)
attotime result;
// if one of the items is never, return never
- if (left.seconds >= ATTOTIME_MAX_SECONDS || right.seconds >= ATTOTIME_MAX_SECONDS)
+ if (left.m_seconds >= ATTOTIME_MAX_SECONDS || right.m_seconds >= ATTOTIME_MAX_SECONDS)
return attotime::never;
// add the seconds and attoseconds
- result.attoseconds = left.attoseconds + right.attoseconds;
- result.seconds = left.seconds + right.seconds;
+ result.m_attoseconds = left.m_attoseconds + right.m_attoseconds;
+ result.m_seconds = left.m_seconds + right.m_seconds;
// normalize and return
- if (result.attoseconds >= ATTOSECONDS_PER_SECOND)
+ if (result.m_attoseconds >= ATTOSECONDS_PER_SECOND)
{
- result.attoseconds -= ATTOSECONDS_PER_SECOND;
- result.seconds++;
+ result.m_attoseconds -= ATTOSECONDS_PER_SECOND;
+ result.m_seconds++;
}
// overflow
- if (result.seconds >= ATTOTIME_MAX_SECONDS)
+ if (result.m_seconds >= ATTOTIME_MAX_SECONDS)
return attotime::never;
return result;
}
@@ -182,22 +194,22 @@ inline attotime operator+(const attotime &left, const attotime &right)
inline attotime &attotime::operator+=(const attotime &right)
{
// if one of the items is never, return never
- if (this->seconds >= ATTOTIME_MAX_SECONDS || right.seconds >= ATTOTIME_MAX_SECONDS)
+ if (this->m_seconds >= ATTOTIME_MAX_SECONDS || right.m_seconds >= ATTOTIME_MAX_SECONDS)
return *this = never;
// add the seconds and attoseconds
- attoseconds += right.attoseconds;
- seconds += right.seconds;
+ m_attoseconds += right.m_attoseconds;
+ m_seconds += right.m_seconds;
// normalize and return
- if (this->attoseconds >= ATTOSECONDS_PER_SECOND)
+ if (this->m_attoseconds >= ATTOSECONDS_PER_SECOND)
{
- this->attoseconds -= ATTOSECONDS_PER_SECOND;
- this->seconds++;
+ this->m_attoseconds -= ATTOSECONDS_PER_SECOND;
+ this->m_seconds++;
}
// overflow
- if (this->seconds >= ATTOTIME_MAX_SECONDS)
+ if (this->m_seconds >= ATTOTIME_MAX_SECONDS)
return *this = never;
return *this;
}
@@ -213,18 +225,18 @@ inline attotime operator-(const attotime &left, const attotime &right)
attotime result;
// if time1 is never, return never
- if (left.seconds >= ATTOTIME_MAX_SECONDS)
+ if (left.m_seconds >= ATTOTIME_MAX_SECONDS)
return attotime::never;
// add the seconds and attoseconds
- result.attoseconds = left.attoseconds - right.attoseconds;
- result.seconds = left.seconds - right.seconds;
+ result.m_attoseconds = left.m_attoseconds - right.m_attoseconds;
+ result.m_seconds = left.m_seconds - right.m_seconds;
// normalize and return
- if (result.attoseconds < 0)
+ if (result.m_attoseconds < 0)
{
- result.attoseconds += ATTOSECONDS_PER_SECOND;
- result.seconds--;
+ result.m_attoseconds += ATTOSECONDS_PER_SECOND;
+ result.m_seconds--;
}
return result;
}
@@ -232,18 +244,18 @@ inline attotime operator-(const attotime &left, const attotime &right)
inline attotime &attotime::operator-=(const attotime &right)
{
// if time1 is never, return never
- if (this->seconds >= ATTOTIME_MAX_SECONDS)
+ if (this->m_seconds >= ATTOTIME_MAX_SECONDS)
return *this = never;
// add the seconds and attoseconds
- attoseconds -= right.attoseconds;
- seconds -= right.seconds;
+ m_attoseconds -= right.m_attoseconds;
+ m_seconds -= right.m_seconds;
// normalize and return
- if (this->attoseconds < 0)
+ if (this->m_attoseconds < 0)
{
- this->attoseconds += ATTOSECONDS_PER_SECOND;
- this->seconds--;
+ this->m_attoseconds += ATTOSECONDS_PER_SECOND;
+ this->m_seconds--;
}
return *this;
}
@@ -284,32 +296,32 @@ inline attotime operator/(const attotime &left, UINT32 factor)
inline bool operator==(const attotime &left, const attotime &right)
{
- return (left.seconds == right.seconds && left.attoseconds == right.attoseconds);
+ return (left.m_seconds == right.m_seconds && left.m_attoseconds == right.m_attoseconds);
}
inline bool operator!=(const attotime &left, const attotime &right)
{
- return (left.seconds != right.seconds || left.attoseconds != right.attoseconds);
+ return (left.m_seconds != right.m_seconds || left.m_attoseconds != right.m_attoseconds);
}
inline bool operator<(const attotime &left, const attotime &right)
{
- return (left.seconds < right.seconds || (left.seconds == right.seconds && left.attoseconds < right.attoseconds));
+ return (left.m_seconds < right.m_seconds || (left.m_seconds == right.m_seconds && left.m_attoseconds < right.m_attoseconds));
}
inline bool operator<=(const attotime &left, const attotime &right)
{
- return (left.seconds < right.seconds || (left.seconds == right.seconds && left.attoseconds <= right.attoseconds));
+ return (left.m_seconds < right.m_seconds || (left.m_seconds == right.m_seconds && left.m_attoseconds <= right.m_attoseconds));
}
inline bool operator>(const attotime &left, const attotime &right)
{
- return (left.seconds > right.seconds || (left.seconds == right.seconds && left.attoseconds > right.attoseconds));
+ return (left.m_seconds > right.m_seconds || (left.m_seconds == right.m_seconds && left.m_attoseconds > right.m_attoseconds));
}
inline bool operator>=(const attotime &left, const attotime &right)
{
- return (left.seconds > right.seconds || (left.seconds == right.seconds && left.attoseconds >= right.attoseconds));
+ return (left.m_seconds > right.m_seconds || (left.m_seconds == right.m_seconds && left.m_attoseconds >= right.m_attoseconds));
}
@@ -319,11 +331,11 @@ inline bool operator>=(const attotime &left, const attotime &right)
inline attotime min(const attotime &left, const attotime &right)
{
- if (left.seconds > right.seconds)
+ if (left.m_seconds > right.m_seconds)
return right;
- if (left.seconds < right.seconds)
+ if (left.m_seconds < right.m_seconds)
return left;
- if (left.attoseconds > right.attoseconds)
+ if (left.m_attoseconds > right.m_attoseconds)
return right;
return left;
}
@@ -335,11 +347,11 @@ inline attotime min(const attotime &left, const attotime &right)
inline attotime max(const attotime &left, const attotime &right)
{
- if (left.seconds > right.seconds)
+ if (left.m_seconds > right.m_seconds)
return left;
- if (left.seconds < right.seconds)
+ if (left.m_seconds < right.m_seconds)
return right;
- if (left.attoseconds > right.attoseconds)
+ if (left.m_attoseconds > right.m_attoseconds)
return left;
return right;
}
@@ -353,15 +365,15 @@ inline attotime max(const attotime &left, const attotime &right)
inline attoseconds_t attotime::as_attoseconds() const
{
// positive values between 0 and 1 second
- if (seconds == 0)
- return attoseconds;
+ if (m_seconds == 0)
+ return m_attoseconds;
// negative values between -1 and 0 seconds
- else if (seconds == -1)
- return attoseconds - ATTOSECONDS_PER_SECOND;
+ else if (m_seconds == -1)
+ return m_attoseconds - ATTOSECONDS_PER_SECOND;
// out-of-range positive values
- else if (seconds > 0)
+ else if (m_seconds > 0)
return ATTOSECONDS_PER_SECOND;
// out-of-range negative values
@@ -377,8 +389,8 @@ inline attoseconds_t attotime::as_attoseconds() const
inline UINT64 attotime::as_ticks(UINT32 frequency) const
{
- UINT32 fracticks = (attotime(0, attoseconds) * frequency).seconds;
- return mulu_32x32(seconds, frequency) + fracticks;
+ UINT32 fracticks = (attotime(0, m_attoseconds) * frequency).m_seconds;
+ return mulu_32x32(m_seconds, frequency) + fracticks;
}
diff --git a/src/emu/audit.c b/src/emu/audit.c
index b8ab208d6a0..f6d90cee7d3 100644
--- a/src/emu/audit.c
+++ b/src/emu/audit.c
@@ -14,6 +14,13 @@
#include "chd.h"
#include "sound/samples.h"
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
+
//**************************************************************************
// CORE FUNCTIONS
@@ -607,3 +614,7 @@ audit_record::audit_record(const char *name, media_type type)
m_shared_device(NULL)
{
}
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/bus/pc_kbd/iskr1030.c b/src/emu/bus/pc_kbd/iskr1030.c
deleted file mode 100644
index a4c2026cdce..00000000000
--- a/src/emu/bus/pc_kbd/iskr1030.c
+++ /dev/null
@@ -1,453 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Sergey Svishchev
-/**********************************************************************
-
- Iskra-1030 and -1031 XX-key keyboard emulation
-
-*********************************************************************/
-
-#include "iskr1030.h"
-
-#define VERBOSE_DBG 1 /* general debug messages */
-
-#define DBG_LOG(N,M,A) \
- do { \
- if(VERBOSE_DBG>=N) \
- { \
- logerror("%11.6f at %s: ",machine().time().as_double(),machine().describe_context()); \
- logerror A; \
- } \
- } while (0)
-
-
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-
-#define I8048_TAG "i8048"
-
-
-
-//**************************************************************************
-// DEVICE DEFINITIONS
-//**************************************************************************
-
-const device_type PC_KBD_ISKR_1030 = &device_creator<iskr_1030_keyboard_device>;
-
-
-//-------------------------------------------------
-// ROM( iskr_1030_keyboard )
-//-------------------------------------------------
-
-ROM_START( iskr_1030_keyboard )
- ROM_REGION( 0x800, I8048_TAG, 0 )
- // XXX add P/N etc
- ROM_LOAD( "i1030.bin", 0x000, 0x800, CRC(7cac9c4b) SHA1(03959d3350e012ebfe61cee9c062b6c1fdd8766e) )
-ROM_END
-
-
-//-------------------------------------------------
-// rom_region - device-specific ROM region
-//-------------------------------------------------
-
-const rom_entry *iskr_1030_keyboard_device::device_rom_region() const
-{
- return ROM_NAME( iskr_1030_keyboard );
-}
-
-
-//-------------------------------------------------
-// ADDRESS_MAP( kb_io )
-//-------------------------------------------------
-
-static ADDRESS_MAP_START( iskr_1030_keyboard_io, AS_IO, 8, iskr_1030_keyboard_device )
- AM_RANGE(0x00, 0xFF) AM_RAM
- AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w)
- AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w)
-// AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r)
- AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r)
-ADDRESS_MAP_END
-
-
-//-------------------------------------------------
-// MACHINE_DRIVER( iskr_1030_keyboard )
-//-------------------------------------------------
-
-static MACHINE_CONFIG_FRAGMENT( iskr_1030_keyboard )
- // XXX check
- MCFG_CPU_ADD(I8048_TAG, I8048, MCS48_LC_CLOCK(IND_U(47), CAP_P(20.7)))
- MCFG_CPU_IO_MAP(iskr_1030_keyboard_io)
-MACHINE_CONFIG_END
-
-
-//-------------------------------------------------
-// machine_config_additions - device-specific
-// machine configurations
-//-------------------------------------------------
-
-machine_config_constructor iskr_1030_keyboard_device::device_mconfig_additions() const
-{
- return MACHINE_CONFIG_NAME( iskr_1030_keyboard );
-}
-
-
-//-------------------------------------------------
-// INPUT_PORTS( iskr_1030_keyboard )
-//-------------------------------------------------
-
-INPUT_PORTS_START( iskr_1030_keyboard )
- PORT_START("MD00")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB) PORT_CHAR(UCHAR_MAMEKEY(TAB))
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?59?") // 0x59 = Inf
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD01")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 7 Home") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD02")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RCONTROL) // 0x5a = R/L (R)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8 " UTF8_UP) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD03")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12)) // 0x5b = Rus
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 9 PgUp") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD04")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 4 " UTF8_LEFT) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD05")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD06")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 6 " UTF8_RIGHT) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD07")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR('~')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 1 End") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD08")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?2a?")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 2 " UTF8_DOWN) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD09")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?5c?") // 0x5c = YO
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 3 PgDn") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD10")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 0 Ins") PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD11")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?36?")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad . Del") PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD12")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("?3a?")
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // 0x55
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD13")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) // 0x56
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD14")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PRTSCR)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT))
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11)) // 0x57 = Lat
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_NUMLOCK) PORT_CHAR(UCHAR_MAMEKEY(NUMLOCK))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-
- PORT_START("MD15")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // 0x54
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RALT) // 0x58 = R/L (L)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Scroll Lock Break") PORT_CODE(KEYCODE_SCRLOCK) PORT_CHAR(UCHAR_MAMEKEY(SCRLOCK))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
-INPUT_PORTS_END
-
-
-//-------------------------------------------------
-// input_ports - device-specific input ports
-//-------------------------------------------------
-
-ioport_constructor iskr_1030_keyboard_device::device_input_ports() const
-{
- return INPUT_PORTS_NAME( iskr_1030_keyboard );
-}
-
-
-
-//**************************************************************************
-// LIVE DEVICE
-//**************************************************************************
-
-//-------------------------------------------------
-// iskr_1030_keyboard_device - constructor
-//-------------------------------------------------
-
-iskr_1030_keyboard_device::iskr_1030_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, PC_KBD_ISKR_1030, "Iskra-1030 Keyboard", tag, owner, clock, "kb_iskr1030", __FILE__),
- device_pc_kbd_interface(mconfig, *this),
- m_maincpu(*this, I8048_TAG),
- m_md00(*this, "MD00"),
- m_md01(*this, "MD01"),
- m_md02(*this, "MD02"),
- m_md03(*this, "MD03"),
- m_md04(*this, "MD04"),
- m_md05(*this, "MD05"),
- m_md06(*this, "MD06"),
- m_md07(*this, "MD07"),
- m_md08(*this, "MD08"),
- m_md09(*this, "MD09"),
- m_md10(*this, "MD10"),
- m_md11(*this, "MD11"),
- m_md12(*this, "MD12"),
- m_md13(*this, "MD13"),
- m_md14(*this, "MD14"),
- m_md15(*this, "MD15"),
- m_p1(0),
- m_p2(0),
- m_q(0)
-{
-}
-
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void iskr_1030_keyboard_device::device_start()
-{
- set_pc_kbdc_device();
-
- // state saving
- save_item(NAME(m_p1));
- save_item(NAME(m_p2));
- save_item(NAME(m_q));
-}
-
-
-//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-
-void iskr_1030_keyboard_device::device_reset()
-{
-}
-
-
-//-------------------------------------------------
-// clock_write -
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( iskr_1030_keyboard_device::clock_write )
-{
- DBG_LOG(1,0,( "%s: clock write %d\n", tag(), state));
- m_maincpu->set_input_line(MCS48_INPUT_IRQ, state ? CLEAR_LINE : ASSERT_LINE);
-}
-
-
-//-------------------------------------------------
-// data_write -
-//-------------------------------------------------
-
-WRITE_LINE_MEMBER( iskr_1030_keyboard_device::data_write )
-{
- DBG_LOG(1,0,( "%s: data write %d\n", tag(), state));
-}
-
-
-//-------------------------------------------------
-// t0_r - XXX ENT0 CLK
-//-------------------------------------------------
-
-READ8_MEMBER( iskr_1030_keyboard_device::t0_r )
-{
- return 0;
-// return clock_signal();
-}
-
-
-//-------------------------------------------------
-// t1_r - OK
-//-------------------------------------------------
-
-READ8_MEMBER( iskr_1030_keyboard_device::t1_r )
-{
- UINT8 data = data_signal();
-
- DBG_LOG(2,0,( "%s: t1_r %d\n", tag(), data));
-
- return data;
-}
-
-
-//-------------------------------------------------
-// p1_r -
-//-------------------------------------------------
-
-READ8_MEMBER( iskr_1030_keyboard_device::p1_r )
-{
- /*
-
- bit description
-
- 0 -REQ IN
- 1 DATA IN
- 2
- 3
- 4
- 5
- 6
- 7
-
- */
-
- UINT8 data = 0;
-
- DBG_LOG(1,0,( "%s: p1_r %02x\n", tag(), data));
-
- return data;
-}
-
-
-//-------------------------------------------------
-// p2_w -
-//-------------------------------------------------
-
-WRITE8_MEMBER( iskr_1030_keyboard_device::p2_w )
-{
- /*
- bit description
-
- 0
- 1
- 2
- 3
- 4
- 5 LED XXX
- 6 LED XXX
- 7 LED XXX
- */
- DBG_LOG(1,0,( "%s: p2_w %02x\n", tag(), data));
-
- m_p1 = data;
-}
-
-
-//-------------------------------------------------
-// p1_w - OK
-//-------------------------------------------------
-
-WRITE8_MEMBER( iskr_1030_keyboard_device::p1_w )
-{
- /*
- bit description
-
- 0 XXX
- 1 XXX
- 2 XXX
- 3 XXX
- 4 CLOCK out
- 5 DATA out (inverted!)
- 6 XXX
- 7 XXX
- */
- DBG_LOG(1,0,( "%s: p1_w %02x (clk %d data %d)\n", tag(), data, BIT(data, 4), BIT(data, 5)));
-
- m_pc_kbdc->data_write_from_kb(BIT(data, 5));
- m_pc_kbdc->clock_write_from_kb(BIT(data, 4));
-}
diff --git a/src/emu/bus/scsi/omti5100.c b/src/emu/bus/scsi/omti5100.c
deleted file mode 100644
index 9e10538102d..00000000000
--- a/src/emu/bus/scsi/omti5100.c
+++ /dev/null
@@ -1,94 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:smf
-#include "omti5100.h"
-
-#define OMTI_STATUS_NOT_READY 0x04
-#define OMTI_READ_DATA_BUFFER 0xec
-#define OMTI_ASSIGN_DISK_PARAM 0xc2
-
-const device_type OMTI5100 = &device_creator<omti5100_device>;
-
-#if 0
-ROM_START( omti5100 )
- ROM_REGION(0x1000, "mcu", 0) // Hitachi Z8
- ROM_LOAD("100240-N.7a", 0x0000, 0x1000, CRC(d227d6cb) SHA1(3d6140764d3d043428c941826370ebf1597c63bd))
-ROM_END
-
-const rom_entry *omti5100_device::device_rom_region() const
-{
- return ROM_NAME( omti5100 );
-}
-#endif
-
-omti5100_device::omti5100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : scsihd_device(mconfig, OMTI5100, "OMTI 5100", tag, owner, clock, "omti5100", __FILE__),
- m_image0(*this, "image0"),
- m_image1(*this, "image1")
-{
-}
-
-void omti5100_device::device_start()
-{
- m_image = m_image0;
- scsihle_device::device_start();
-}
-
-void omti5100_device::ExecCommand()
-{
- harddisk_image_device *image = ((command[1] >> 5) & 1) ? m_image1 : m_image0;
- switch(command[0])
- {
- case OMTI_READ_DATA_BUFFER:
- m_phase = SCSI_PHASE_DATAIN;
- m_status_code = SCSI_STATUS_CODE_GOOD;
- m_transfer_length = 512;
- break;
- case OMTI_ASSIGN_DISK_PARAM:
- m_phase = SCSI_PHASE_DATAOUT;
- m_status_code = SCSI_STATUS_CODE_GOOD;
- m_transfer_length = 10;
- break;
- default:
- if(!image)
- {
- m_phase = SCSI_PHASE_STATUS;
- m_status_code = SCSI_STATUS_CODE_CHECK_CONDITION;
- m_sense_asc = OMTI_STATUS_NOT_READY;
- m_transfer_length = 0;
- }
- else
- {
- SetDevice(image);
- scsihd_device::ExecCommand();
- }
- break;
- }
-}
-
-void omti5100_device::ReadData( UINT8 *data, int dataLength )
-{
- switch( command[ 0 ] )
- {
- case OMTI_READ_DATA_BUFFER:
- data[0] = '5';
- data[1] = '1';
- data[2] = '0';
- data[3] = '0';
- break;
-
- default:
- scsihd_device::ReadData( data, dataLength );
- break;
- }
-}
-
-static MACHINE_CONFIG_FRAGMENT( omti5100 )
- MCFG_HARDDISK_ADD("image0")
- MCFG_HARDDISK_ADD("image1")
-MACHINE_CONFIG_END
-
-
-machine_config_constructor omti5100_device::device_mconfig_additions() const
-{
- return MACHINE_CONFIG_NAME( omti5100 );
-}
diff --git a/src/emu/clifront.c b/src/emu/clifront.c
index 90f63bde35e..303ab462a54 100644
--- a/src/emu/clifront.c
+++ b/src/emu/clifront.c
@@ -310,7 +310,7 @@ void cli_frontend::listfull(const char *gamename)
// iterate through drivers and output the info
while (drivlist.next())
- if ((drivlist.driver().flags & GAME_NO_STANDALONE) == 0)
+ if ((drivlist.driver().flags & MACHINE_NO_STANDALONE) == 0)
osd_printf_info("%-18s\"%s\"\n", drivlist.driver().name, drivlist.driver().description);
}
@@ -350,7 +350,7 @@ void cli_frontend::listclones(const char *gamename)
{
// if we have a non-bios clone and it matches, keep it
int clone_of = drivlist.clone();
- if (clone_of != -1 && (drivlist.driver(clone_of).flags & GAME_IS_BIOS_ROOT) == 0)
+ if (clone_of != -1 && (drivlist.driver(clone_of).flags & MACHINE_IS_BIOS_ROOT) == 0)
if (drivlist.matches(gamename, drivlist.driver(clone_of).name))
drivlist.include();
}
@@ -374,7 +374,7 @@ void cli_frontend::listclones(const char *gamename)
while (drivlist.next())
{
int clone_of = drivlist.clone();
- if (clone_of != -1 && (drivlist.driver(clone_of).flags & GAME_IS_BIOS_ROOT) == 0)
+ if (clone_of != -1 && (drivlist.driver(clone_of).flags & MACHINE_IS_BIOS_ROOT) == 0)
osd_printf_info("%-16s %-8s\n", drivlist.driver().name, drivlist.driver(clone_of).name);
}
}
diff --git a/src/emu/cpu/arcompact/arcompact_make.py b/src/emu/cpu/arcompact/arcompact_make.py
deleted file mode 100644
index dba815b9f70..00000000000
--- a/src/emu/cpu/arcompact/arcompact_make.py
+++ /dev/null
@@ -1,433 +0,0 @@
-#!/usr/bin/python
-
-import sys
-
-def EmitGroup04_Handle_NZ_Flags(f, funcname, opname):
- print >>f, " if (result & 0x80000000) { STATUS32_SET_N; }"
- print >>f, " else { STATUS32_CLEAR_N; }"
- print >>f, " if (result == 0x00000000) { STATUS32_SET_Z; }"
- print >>f, " else { STATUS32_CLEAR_Z; }"
-
-def EmitGroup04_Handle_NZC_LSR1_Flags(f, funcname, opname):
- print >>f, " if (result & 0x80000000) { STATUS32_SET_N; }"
- print >>f, " else { STATUS32_CLEAR_N; }"
- print >>f, " if (result == 0x00000000) { STATUS32_SET_Z; }"
- print >>f, " else { STATUS32_CLEAR_Z; }"
- print >>f, " if (c == 0x00000001) { STATUS32_SET_C; }"
- print >>f, " else { STATUS32_CLEAR_C; }"
-
-def EmitGroup04_Handle_NZCV_ADD_Flags(f, funcname, opname):
- print >>f, " if (result & 0x80000000) { STATUS32_SET_N; }"
- print >>f, " else { STATUS32_CLEAR_N; }"
- print >>f, " if (result == 0x00000000) { STATUS32_SET_Z; }"
- print >>f, " else { STATUS32_CLEAR_Z; }"
- print >>f, " if ((b & 0x80000000) == (c & 0x80000000))"
- print >>f, " {"
- print >>f, " if ((result & 0x80000000) != (b & 0x80000000))"
- print >>f, " {"
- print >>f, " STATUS32_SET_V;"
- print >>f, " }"
- print >>f, " else"
- print >>f, " {"
- print >>f, " STATUS32_CLEAR_V;"
- print >>f, " }"
- print >>f, " }"
- print >>f, " if (b < c)"
- print >>f, " {"
- print >>f, " STATUS32_SET_C;"
- print >>f, " }"
- print >>f, " else"
- print >>f, " {"
- print >>f, " STATUS32_CLEAR_C;"
- print >>f, " }"
-
-
-def EmitGroup04_no_Flags(f, funcname, opname):
- print >>f, " // no flag changes"
-
-def EmitGroup04_unsupported_Flags(f, funcname, opname):
- print >>f, " arcompact_fatal(\"arcompact_handle%s (%s) (F set)\\n\"); // not yet supported" % (funcname, opname)
-
-def EmitGroup04_Flaghandler(f,funcname, opname, flagcondition, flaghandler):
- if flagcondition == -1:
- print >>f, " if (F)"
- print >>f, " {"
- flaghandler(f, funcname, opname)
- print >>f, " }"
- elif flagcondition == 0:
- print >>f, " if (0)"
- print >>f, " {"
- flaghandler(f, funcname, opname)
- print >>f, " }"
- elif flagcondition == 1:
- print >>f, " if (1)"
- print >>f, " {"
- flaghandler(f, funcname, opname)
- print >>f, " }"
-
-def EmitGroup04_u5fragment(f,funcname, opname, opexecute, opwrite, opwrite_alt, ignore_a, breg_is_dst_only, flagcondition, flaghandler):
- print >>f, " int size = 4;"
-
- if breg_is_dst_only == 0:
- print >>f, " UINT32 limm = 0;"
-
- print >>f, "/* int got_limm = 0; */"
- print >>f, " "
- print >>f, " COMMON32_GET_breg;"
-
- if flagcondition == -1:
- print >>f, " COMMON32_GET_F;"
-
- print >>f, " COMMON32_GET_u6;"
-
- if ignore_a == 0:
- print >>f, " COMMON32_GET_areg;"
- elif ignore_a == 1:
- print >>f, " //COMMON32_GET_areg; // areg is reserved / not used"
- elif ignore_a == 2:
- print >>f, " //COMMON32_GET_areg; // areg bits already used as opcode select"
- elif ignore_a == 3:
- print >>f, " //COMMON32_GET_areg; // areg bits already used as condition code select"
- print >>f, " "
-
- print >>f, " UINT32 c;"
- if breg_is_dst_only == 0:
- print >>f, " UINT32 b;"
- print >>f, " "
- print >>f, " /* is having b as LIMM valid here? LIMM vs. fixed u6 value makes no sense */"
- print >>f, " if (breg == LIMM_REG)"
- print >>f, " {"
- print >>f, " GET_LIMM_32;"
- print >>f, " size = 8;"
- print >>f, "/* got_limm = 1; */"
- print >>f, " b = limm;"
- print >>f, " }"
- print >>f, " else"
- print >>f, " {"
- print >>f, " b = m_regs[breg];"
- print >>f, " }"
-
- print >>f, " "
- print >>f, " c = u;"
- print >>f, " "
- print >>f, " /* todo: if areg = LIMM then there is no result (but since that register can never be read, I guess it doesn't matter if we store it there anyway?) */"
-
-def EmitGroup04(f,funcname, opname, opexecute, opwrite, opwrite_alt, ignore_a, breg_is_dst_only, flagcondition, flaghandler):
- # the mode 0x00 handler
- print >>f, "ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s_p00(OPS_32)" % funcname
- print >>f, "{"
- print >>f, " int size = 4;"
-
- print >>f, " UINT32 limm = 0;"
-
- print >>f, " int got_limm = 0;"
- print >>f, " "
- print >>f, " COMMON32_GET_breg;"
-
- if flagcondition == -1:
- print >>f, " COMMON32_GET_F;"
-
- print >>f, " COMMON32_GET_creg;"
-
- if ignore_a == 0:
- print >>f, " COMMON32_GET_areg;"
- elif ignore_a == 1:
- print >>f, " //COMMON32_GET_areg; // areg is reserved / not used"
- elif ignore_a == 2:
- print >>f, " //COMMON32_GET_areg; // areg bits already used as opcode select"
-
- print >>f, " "
-
- print >>f, " UINT32 c;"
- if breg_is_dst_only == 0:
- print >>f, " UINT32 b;"
- print >>f, " "
- print >>f, " if (breg == LIMM_REG)"
- print >>f, " {"
- print >>f, " GET_LIMM_32;"
- print >>f, " size = 8;"
- print >>f, " got_limm = 1;"
- print >>f, " b = limm;"
- print >>f, " }"
- print >>f, " else"
- print >>f, " {"
- print >>f, " b = m_regs[breg];"
- print >>f, " }"
-
- print >>f, " "
- print >>f, " if (creg == LIMM_REG)"
- print >>f, " {"
- print >>f, " if (!got_limm)"
- print >>f, " {"
- print >>f, " GET_LIMM_32;"
- print >>f, " size = 8;"
- print >>f, " }"
- print >>f, " c = limm;"
- print >>f, " }"
- print >>f, " else"
- print >>f, " {"
- print >>f, " c = m_regs[creg];"
- print >>f, " }"
- print >>f, " /* todo: is the limm, limm syntax valid? (it's pointless.) */"
- print >>f, " /* todo: if areg = LIMM then there is no result (but since that register can never be read, I guess it doesn't matter if we store it there anyway?) */"
- print >>f, " %s" % opexecute
- print >>f, " %s" % opwrite
- print >>f, " "
- EmitGroup04_Flaghandler(f,funcname,opname,flagcondition,flaghandler)
- print >>f, " return m_pc + (size >> 0);"
- print >>f, "}"
- print >>f, ""
- print >>f, ""
- # the mode 0x01 handler
- print >>f, "ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s_p01(OPS_32)" % funcname
- print >>f, "{"
- EmitGroup04_u5fragment(f,funcname, opname, opexecute, opwrite, opwrite_alt, ignore_a, breg_is_dst_only, flagcondition, flaghandler)
- print >>f, " %s" % opexecute
- print >>f, " %s" % opwrite
- print >>f, " "
- EmitGroup04_Flaghandler(f,funcname,opname,flagcondition,flaghandler)
- print >>f, " return m_pc + (size >> 0);"
- print >>f, "}"
- print >>f, ""
- print >>f, ""
- # the mode 0x10 handler
- print >>f, "ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s_p10(OPS_32)" % funcname
- if ignore_a == 2:
- print >>f, "{"
- print >>f, " int size = 4;"
- print >>f, " arcompact_fatal(\"illegal arcompact_handle%s_p10 (ares bits already used as opcode select, can't be used as s12) (%s)\\n\");" % (funcname, opname)
- print >>f, " return m_pc + (size >> 0);"
- print >>f, "}"
- else:
- print >>f, "{"
- print >>f, " int size = 4;"
- if breg_is_dst_only == 0:
- print >>f, " UINT32 limm = 0;"
-
- print >>f, "/* int got_limm = 0; */"
- print >>f, " "
- print >>f, " COMMON32_GET_breg;"
-
- if flagcondition == -1:
- print >>f, " COMMON32_GET_F;"
-
- print >>f, " COMMON32_GET_s12;"
-
- # areg can't be used here, it's used for s12 bits
-
- print >>f, " "
- print >>f, " UINT32 c;"
- if breg_is_dst_only == 0:
- print >>f, " UINT32 b;"
- print >>f, " "
- print >>f, " /* is having b as LIMM valid here? LIMM vs. fixed u6 value makes no sense */"
- print >>f, " if (breg == LIMM_REG)"
- print >>f, " {"
- print >>f, " GET_LIMM_32;"
- print >>f, " size = 8;"
- print >>f, "/* got_limm = 1; */"
- print >>f, " b = limm;"
- print >>f, " }"
- print >>f, " else"
- print >>f, " {"
- print >>f, " b = m_regs[breg];"
- print >>f, " }"
-
- print >>f, " "
- print >>f, " c = (UINT32)S;"
- print >>f, " "
- print >>f, " /* todo: if areg = LIMM then there is no result (but since that register can never be read, I guess it doesn't matter if we store it there anyway?) */"
- print >>f, " %s" % opexecute
- print >>f, " %s" % opwrite_alt
- print >>f, " "
- EmitGroup04_Flaghandler(f,funcname,opname,flagcondition,flaghandler)
- print >>f, " return m_pc + (size >> 0);"
- print >>f, "}"
- print >>f, ""
- print >>f, ""
- # the mode 0x11 m0 handler
- print >>f, "ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s_p11_m0(OPS_32)" % funcname
- if ignore_a == 2:
- print >>f, "{"
- print >>f, " int size = 4;"
- print >>f, " arcompact_fatal(\"illegal arcompact_handle%s_p11_m0 (ares bits already used as opcode select, can't be used as Q condition) (%s)\\n\");" % (funcname, opname)
- print >>f, " return m_pc + (size >> 0);"
- print >>f, "}"
- else:
- print >>f, "{"
- print >>f, " int size = 4;"
- print >>f, " arcompact_fatal(\"arcompact_handle%s_p11_m0 (%s)\\n\");" % (funcname, opname)
- print >>f, " return m_pc + (size >> 0);"
- print >>f, "}"
- print >>f, ""
- print >>f, ""
- # the mode 0x11 m1 handler
- print >>f, "ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s_p11_m1(OPS_32)" % funcname
- if ignore_a == 2:
- print >>f, "{"
- print >>f, " int size = 4;"
- print >>f, " arcompact_fatal(\"illegal arcompact_handle%s_p11_m1 (ares bits already used as opcode select, can't be used as Q condition) (%s)\\n\");" % (funcname, opname)
- print >>f, " return m_pc + (size >> 0);"
- print >>f, "}"
- else:
- print >>f, "{"
- EmitGroup04_u5fragment(f,funcname, opname, opexecute, opwrite, opwrite_alt, 3, breg_is_dst_only, flagcondition, flaghandler)
- print >>f, " COMMON32_GET_CONDITION;"
- print >>f, " if (!check_condition(condition))"
- print >>f, " return m_pc + (size>>0);"
- print >>f, ""
- print >>f, " %s" % opexecute
- print >>f, " %s" % opwrite_alt
- print >>f, " "
- EmitGroup04_Flaghandler(f,funcname,opname,flagcondition,flaghandler)
- print >>f, " return m_pc + (size >> 0);"
- print >>f, "}"
- print >>f, ""
- print >>f, ""
-
-
-# xxx_S c, b, u3 format opcodes (note c is destination)
-def EmitGroup0d(f,funcname, opname, opexecute, opwrite):
- print >>f, "ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s(OPS_16)" % funcname
- print >>f, "{"
- print >>f, " int u, breg, creg;"
- print >>f, ""
- print >>f, " COMMON16_GET_u3;"
- print >>f, " COMMON16_GET_breg;"
- print >>f, " COMMON16_GET_creg;"
- print >>f, ""
- print >>f, " REG_16BIT_RANGE(breg);"
- print >>f, " REG_16BIT_RANGE(creg);"
- print >>f, ""
- print >>f, " %s" % opexecute
- print >>f, " %s" % opwrite
- print >>f, ""
- print >>f, " return m_pc + (2 >> 0);"
- print >>f, "}"
- print >>f, ""
- print >>f, ""
-
-
-# xxx_S b <- b,c format opcodes
-def EmitGroup0f(f,funcname, opname, opexecute, opwrite):
- print >>f, "ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s(OPS_16)"% funcname
- print >>f, "{"
- print >>f, " int breg, creg;"
- print >>f, ""
- print >>f, " COMMON16_GET_breg;"
- print >>f, " COMMON16_GET_creg;"
- print >>f, ""
- print >>f, " REG_16BIT_RANGE(breg);"
- print >>f, " REG_16BIT_RANGE(creg);"
- print >>f, ""
- print >>f, " %s" % opexecute
- print >>f, " %s" % opwrite
- print >>f, ""
- print >>f, " return m_pc + (2 >> 0);"
- print >>f, "}"
- print >>f, ""
- print >>f, ""
-
-
-# xxx_S b, b, u5 format opcodes
-def EmitGroup17(f,funcname, opname, opexecute):
- print >>f, "ARCOMPACT_RETTYPE arcompact_device::arcompact_handle%s(OPS_16)" % funcname
- print >>f, "{"
- print >>f, " int breg, u;"
- print >>f, " "
- print >>f, " COMMON16_GET_breg;"
- print >>f, " COMMON16_GET_u5;"
- print >>f, " "
- print >>f, " REG_16BIT_RANGE(breg);"
- print >>f, " "
- print >>f, " %s" % opexecute
- print >>f, " "
- print >>f, " return m_pc + (2 >> 0);"
- print >>f, "}"
- print >>f, ""
- print >>f, ""
-
-
-
-try:
- f = open(sys.argv[1], "w")
-except Exception:
- err = sys.exc_info()[1]
- sys.stderr.write("cannot write file %s [%s]\n" % (sys.argv[1], err))
- sys.exit(1)
-
-
-EmitGroup04(f, "04_00", "ADD", "UINT32 result = b + c;", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_Handle_NZCV_ADD_Flags )
-
-EmitGroup04(f, "04_02", "SUB", "UINT32 result = b - c;", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-
-EmitGroup04(f, "04_04", "AND", "UINT32 result = b & c;", "if (areg != LIMM_REG) { m_regs[areg] = result; }", "if (breg != LIMM_REG) { m_regs[breg] = result; }", 0,0, -1, EmitGroup04_Handle_NZ_Flags )
-EmitGroup04(f, "04_05", "OR", "UINT32 result = b | c;", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-EmitGroup04(f, "04_06", "BIC", "UINT32 result = b & (~c);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-EmitGroup04(f, "04_07", "XOR", "UINT32 result = b ^ c;", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-
-EmitGroup04(f, "04_0a", "MOV", "UINT32 result = c;", "m_regs[breg] = result;", "m_regs[breg] = result;", 1,1, -1, EmitGroup04_Handle_NZ_Flags ) # special case, result always goes to breg
-
-EmitGroup04(f, "04_0e", "RSUB", "UINT32 result = c - b;", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-EmitGroup04(f, "04_0f", "BSET", "UINT32 result = b | (1 << (c & 0x1f));", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-
-EmitGroup04(f, "04_13", "BMSK", "UINT32 result = b & ((1<<(c+1))-1);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-
-
-EmitGroup04(f, "04_14", "ADD1", "UINT32 result = b + (c << 1);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-EmitGroup04(f, "04_15", "ADD2", "UINT32 result = b + (c << 2);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-EmitGroup04(f, "04_16", "ADD3", "UINT32 result = b + (c << 3);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-EmitGroup04(f, "04_17", "SUB1", "UINT32 result = b - (c << 1);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-EmitGroup04(f, "04_18", "SUB2", "UINT32 result = b - (c << 2);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-EmitGroup04(f, "04_19", "SUB3", "UINT32 result = b - (c << 3);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-
-EmitGroup04(f, "04_2a", "LR", "m_regs[breg] = READAUX(c);", "", "", 1,1, -1, EmitGroup04_no_Flags ) # this can't be conditional (todo)
-EmitGroup04(f, "04_2b", "SR", "WRITEAUX(c,b);", "", "", 1,0, -1, EmitGroup04_no_Flags ) # this can't be conditional (todo)
-
-
-
-EmitGroup04(f, "05_00", "ASL", "UINT32 result = b << (c&0x1f);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-EmitGroup04(f, "05_01", "LSR", "UINT32 result = b >> (c&0x1f);", "m_regs[areg] = result;", "m_regs[breg] = result;", 0,0, -1, EmitGroup04_unsupported_Flags )
-
-# the 04_2f subgroup uses the same encoding, but the areg is already used as sub-opcode select, so any modes relying on areg bits for other reasons (sign, condition) (modes 10, 11m0, 11m1) are illegal. the destination is also breg not areg
-EmitGroup04(f, "04_2f_02", "LSR1", "UINT32 result = c >> 1;", "m_regs[breg] = result;","", 2,1, -1, EmitGroup04_Handle_NZC_LSR1_Flags ) # no alt handler (invalid path)
-EmitGroup04(f, "04_2f_03", "ROR", "int shift = 1; UINT32 mask = (1 << (shift)) - 1; mask <<= (32-shift); UINT32 result = ((c >> shift) & ~mask) | ((c << (32-shift)) & mask);", "m_regs[breg] = result;","", 2,1, -1, EmitGroup04_Handle_NZC_LSR1_Flags )
-
-
-EmitGroup04(f, "04_2f_07", "EXTB", "UINT32 result = c & 0x000000ff;", "m_regs[breg] = result;","", 2,1, -1, EmitGroup04_unsupported_Flags ) # ^
-EmitGroup04(f, "04_2f_08", "EXTW", "UINT32 result = c & 0x0000ffff;", "m_regs[breg] = result;","", 2,1, -1, EmitGroup04_unsupported_Flags ) # ^
-
-# xxx_S c, b, u3 format opcodes (note c is destination)
-EmitGroup0d(f, "0d_00", "ADD_S", "UINT32 result = m_regs[breg] + u;", "m_regs[creg] = result;" )
-EmitGroup0d(f, "0d_01", "SUB_S", "UINT32 result = m_regs[breg] - u;", "m_regs[creg] = result;" )
-EmitGroup0d(f, "0d_02", "ASL_S", "UINT32 result = m_regs[breg] << u;", "m_regs[creg] = result;" )
-
-# xxx_S b <- b,c format opcodes (or in some cases xxx_S b,c)
-EmitGroup0f(f, "0f_02", "SUB_S", "UINT32 result = m_regs[breg] - m_regs[creg];", "m_regs[breg] = result;" )
-EmitGroup0f(f, "0f_04", "AND_S", "UINT32 result = m_regs[breg] & m_regs[creg];", "m_regs[breg] = result;" )
-EmitGroup0f(f, "0f_05", "OR_S", "UINT32 result = m_regs[breg] | m_regs[creg];", "m_regs[breg] = result;" )
-EmitGroup0f(f, "0f_07", "XOR_S", "UINT32 result = m_regs[breg] ^ m_regs[creg];", "m_regs[breg] = result;" )
-EmitGroup0f(f, "0f_0f", "EXTB_S","UINT32 result = m_regs[creg] & 0x000000ff;", "m_regs[breg] = result;" )
-EmitGroup0f(f, "0f_10", "EXTW_S","UINT32 result = m_regs[creg] & 0x0000ffff;", "m_regs[breg] = result;" )
-EmitGroup0f(f, "0f_13", "NEG_S"," UINT32 result = 0 - m_regs[creg];", "m_regs[breg] = result;" )
-
-EmitGroup0f(f, "0f_14", "ADD1_S"," UINT32 result = m_regs[breg] + (m_regs[creg] <<1);", "m_regs[breg] = result;" )
-EmitGroup0f(f, "0f_15", "ADD2_S"," UINT32 result = m_regs[breg] + (m_regs[creg] <<2);", "m_regs[breg] = result;" )
-EmitGroup0f(f, "0f_16", "ADD3_S"," UINT32 result = m_regs[breg] + (m_regs[creg] <<3);", "m_regs[breg] = result;" )
-
-EmitGroup0f(f, "0f_19", "LSR_S", "UINT32 result = m_regs[breg] >> (m_regs[creg]&0x1f);","m_regs[breg] = result;" )
-EmitGroup0f(f, "0f_1b", "ASL1_S","UINT32 result = m_regs[creg] << 1;", "m_regs[breg] = result;" )
-
-
-# xxx_S b, b, u5 format opcodes
-EmitGroup17(f, "17_00", "ASL_S", "m_regs[breg] = m_regs[breg] << (u&0x1f);" )
-EmitGroup17(f, "17_01", "LSR_S", "m_regs[breg] = m_regs[breg] >> (u&0x1f);" )
-EmitGroup17(f, "17_02", "ASR_S", "INT32 temp = (INT32)m_regs[breg]; m_regs[breg] = temp >> (u&0x1f); // treat it as a signed value, so sign extension occurs during shift" )
-EmitGroup17(f, "17_03", "SUB_S", "m_regs[breg] = m_regs[breg] - u;" )
-EmitGroup17(f, "17_04", "BSET_S", "m_regs[breg] = m_regs[breg] | (1 << (u & 0x1f));" )
-
-EmitGroup17(f, "17_06", "BMSK_S", "m_regs[breg] = m_regs[breg] | ((1 << (u + 1)) - 1);" )
-
-
-
-
diff --git a/src/emu/cpu/hphybrid/hphybrid.c b/src/emu/cpu/hphybrid/hphybrid.c
deleted file mode 100644
index 03a36549b60..00000000000
--- a/src/emu/cpu/hphybrid/hphybrid.c
+++ /dev/null
@@ -1,961 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:F. Ulivi
-
-#include "emu.h"
-#include "debugger.h"
-#include "hphybrid.h"
-
-enum {
- HPHYBRID_A,
- HPHYBRID_B,
- HPHYBRID_C,
- HPHYBRID_D,
- HPHYBRID_P,
- HPHYBRID_R,
- HPHYBRID_IV,
- HPHYBRID_PA,
- HPHYBRID_DMAPA,
- HPHYBRID_DMAMA,
- HPHYBRID_DMAC,
- HPHYBRID_I
-};
-
-#define BIT_MASK(n) (1U << (n))
-
-// Macros to clear/set single bits
-#define BIT_CLR(w , n) ((w) &= ~BIT_MASK(n))
-#define BIT_SET(w , n) ((w) |= BIT_MASK(n))
-
-// Bits in m_flags
-#define HPHYBRID_C_BIT 0 // Carry/extend
-#define HPHYBRID_O_BIT 1 // Overflow
-#define HPHYBRID_CB_BIT 2 // Cb
-#define HPHYBRID_DB_BIT 3 // Db
-#define HPHYBRID_INTEN_BIT 4 // Interrupt enable
-#define HPHYBRID_DMAEN_BIT 5 // DMA enable
-#define HPHYBRID_DMADIR_BIT 6 // DMA direction (1 = OUT)
-#define HPHYBRID_HALT_BIT 7 // Halt flag
-#define HPHYBRID_IRH_BIT 8 // IRH requested
-#define HPHYBRID_IRL_BIT 9 // IRL requested
-#define HPHYBRID_IRH_SVC_BIT 10 // IRH in service
-#define HPHYBRID_IRL_SVC_BIT 11 // IRL in service
-#define HPHYBRID_DMAR_BIT 12 // DMA request
-
-#define HPHYBRID_IV_MASK 0xfff0 // IV mask
-
-#define CURRENT_PA (m_reg_PA[ 0 ])
-
-#define HP_RESET_ADDR 0x0020
-
-const device_type HP_5061_3011 = &device_creator<hp_5061_3011_cpu_device>;
-
-WRITE_LINE_MEMBER(hp_hybrid_cpu_device::dmar_w)
-{
- if (state) {
- BIT_SET(m_flags , HPHYBRID_DMAR_BIT);
- } else {
- BIT_CLR(m_flags , HPHYBRID_DMAR_BIT);
- }
-}
-
-hp_hybrid_cpu_device::hp_hybrid_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname)
-: cpu_device(mconfig, type, name, tag, owner, clock, shortname, __FILE__),
- m_program_config("program", ENDIANNESS_BIG, 16, 16, -1),
- m_io_config("io", ENDIANNESS_BIG, 16, 6, -1)
-{
-}
-
-void hp_hybrid_cpu_device::device_start()
-{
- m_reg_A = 0;
- m_reg_B = 0;
- m_reg_P = HP_RESET_ADDR;
- m_reg_R = 0;
- m_reg_C = 0;
- m_reg_D = 0;
- m_reg_IV = 0;
- m_reg_PA[ 0 ] = 0;
- m_reg_PA[ 1 ] = 0;
- m_reg_PA[ 2 ] = 0;
- m_flags = 0;
- m_dmapa = 0;
- m_dmama = 0;
- m_dmac = 0;
- m_reg_I = 0;
-
- {
- state_add(HPHYBRID_A, "A", m_reg_A);
- state_add(HPHYBRID_B, "B", m_reg_B);
- state_add(HPHYBRID_C, "C", m_reg_C);
- state_add(HPHYBRID_D, "D", m_reg_D);
- state_add(HPHYBRID_P, "P", m_reg_P);
- state_add(STATE_GENPC, "GENPC", m_reg_P).noshow();
- state_add(HPHYBRID_R, "R", m_reg_R);
- state_add(STATE_GENSP, "GENSP", m_reg_R).noshow();
- state_add(HPHYBRID_IV, "IV", m_reg_IV);
- state_add(HPHYBRID_PA, "PA", m_reg_PA[ 0 ]);
- state_add(STATE_GENFLAGS, "GENFLAGS", m_flags).noshow().formatstr("%9s");
- state_add(HPHYBRID_DMAPA , "DMAPA" , m_dmapa).noshow();
- state_add(HPHYBRID_DMAMA , "DMAMA" , m_dmama).noshow();
- state_add(HPHYBRID_DMAC , "DMAC" , m_dmac).noshow();
- state_add(HPHYBRID_I , "I" , m_reg_I).noshow();
- }
-
- m_program = &space(AS_PROGRAM);
- m_direct = &m_program->direct();
- m_io = &space(AS_IO);
-
- save_item(NAME(m_reg_A));
- save_item(NAME(m_reg_B));
- save_item(NAME(m_reg_C));
- save_item(NAME(m_reg_D));
- save_item(NAME(m_reg_P));
- save_item(NAME(m_reg_R));
- save_item(NAME(m_reg_IV));
- save_item(NAME(m_reg_PA[0]));
- save_item(NAME(m_reg_PA[1]));
- save_item(NAME(m_reg_PA[2]));
- save_item(NAME(m_flags));
- save_item(NAME(m_dmapa));
- save_item(NAME(m_dmama));
- save_item(NAME(m_dmac));
- save_item(NAME(m_reg_I));
-
- m_icountptr = &m_icount;
-}
-
-void hp_hybrid_cpu_device::device_reset()
-{
- m_reg_P = HP_RESET_ADDR;
- m_reg_I = RM(m_reg_P);
- m_flags = 0;
-}
-
-void hp_hybrid_cpu_device::execute_run()
-{
- do {
- if (BIT(m_flags , HPHYBRID_DMAEN_BIT) && BIT(m_flags , HPHYBRID_DMAR_BIT)) {
- handle_dma();
- } else {
- debugger_instruction_hook(this, m_reg_P);
-
- // Check for interrupts
- check_for_interrupts();
-
- m_reg_I = execute_one(m_reg_I);
- }
- } while (m_icount > 0);
-}
-
-void hp_hybrid_cpu_device::execute_set_input(int inputnum, int state)
-{
- if (inputnum < HPHYBRID_INT_LVLS) {
- if (state) {
- BIT_SET(m_flags , HPHYBRID_IRH_BIT + inputnum);
- } else {
- BIT_CLR(m_flags , HPHYBRID_IRH_BIT + inputnum);
- }
- }
-}
-
-/**
- * Execute 1 instruction
- *
- * @param opcode Opcode to be executed
- *
- * @return Next opcode to be executed
- */
-UINT16 hp_hybrid_cpu_device::execute_one(UINT16 opcode)
-{
- if ((opcode & 0x7fe0) == 0x7000) {
- // EXE
- m_icount -= 8;
- return RM(opcode & 0x1f);
- } else {
- m_reg_P = execute_one_sub(opcode);
- return RM(m_reg_P);
- }
-}
-
-/**
- * Execute 1 instruction (except EXE)
- *
- * @param opcode Opcode to be executed (no EXE instructions)
- *
- * @return new value of P register
- */
-UINT16 hp_hybrid_cpu_device::execute_one_sub(UINT16 opcode)
-{
- UINT16 ea;
- UINT16 tmp;
-
- switch (opcode & 0x7800) {
- case 0x0000:
- // LDA
- m_icount -= 13;
- m_reg_A = RM(get_ea(opcode));
- break;
-
- case 0x0800:
- // LDB
- m_icount -= 13;
- m_reg_B = RM(get_ea(opcode));
- break;
-
- case 0x1000:
- // CPA
- m_icount -= 16;
- if (m_reg_A != RM(get_ea(opcode))) {
- // Skip next instruction
- return m_reg_P + 2;
- }
- break;
-
- case 0x1800:
- // CPB
- m_icount -= 16;
- if (m_reg_B != RM(get_ea(opcode))) {
- // Skip next instruction
- return m_reg_P + 2;
- }
- break;
-
- case 0x2000:
- // ADA
- m_icount -= 13;
- do_add(m_reg_A , RM(get_ea(opcode)));
- break;
-
- case 0x2800:
- // ADB
- m_icount -= 13;
- do_add(m_reg_B , RM(get_ea(opcode)));
- break;
-
- case 0x3000:
- // STA
- m_icount -= 13;
- WM(get_ea(opcode) , m_reg_A);
- break;
-
- case 0x3800:
- // STB
- m_icount -= 13;
- WM(get_ea(opcode) , m_reg_B);
- break;
-
- case 0x4000:
- // JSM
- m_icount -= 17;
- WM(++m_reg_R , m_reg_P);
- return get_ea(opcode);
-
- case 0x4800:
- // ISZ
- m_icount -= 19;
- ea = get_ea(opcode);
- tmp = RM(ea) + 1;
- WM(ea , tmp);
- if (tmp == 0) {
- // Skip next instruction
- return m_reg_P + 2;
- }
- break;
-
- case 0x5000:
- // AND
- m_icount -= 13;
- m_reg_A &= RM(get_ea(opcode));
- break;
-
- case 0x5800:
- // DSZ
- m_icount -= 19;
- ea = get_ea(opcode);
- tmp = RM(ea) - 1;
- WM(ea , tmp);
- if (tmp == 0) {
- // Skip next instruction
- return m_reg_P + 2;
- }
- break;
-
- case 0x6000:
- // IOR
- m_icount -= 13;
- m_reg_A |= RM(get_ea(opcode));
- break;
-
- case 0x6800:
- // JMP
- m_icount -= 8;
- return get_ea(opcode);
-
- default:
- switch (opcode & 0xfec0) {
- case 0x7400:
- // RZA
- // SZA
- m_icount -= 14;
- return get_skip_addr(opcode , m_reg_A == 0);
-
- case 0x7440:
- // RIA
- // SIA
- m_icount -= 14;
- return get_skip_addr(opcode , m_reg_A++ == 0);
-
- case 0x7480:
- // SFS
- // SFC
- m_icount -= 14;
- // TODO: read flag bit
- return get_skip_addr(opcode , true);
-
- case 0x7C00:
- // RZB
- // SZB
- m_icount -= 14;
- return get_skip_addr(opcode , m_reg_B == 0);
-
- case 0x7C40:
- // RIB
- // SIB
- m_icount -= 14;
- return get_skip_addr(opcode , m_reg_B++ == 0);
-
- case 0x7c80:
- // SSS
- // SSC
- m_icount -= 14;
- // TODO: read status bit
- return get_skip_addr(opcode , true);
-
- case 0x7cc0:
- // SHS
- // SHC
- m_icount -= 14;
- return get_skip_addr(opcode , !BIT(m_flags , HPHYBRID_HALT_BIT));
-
- default:
- switch (opcode & 0xfe00) {
- case 0x7600:
- // SLA
- // RLA
- m_icount -= 14;
- return get_skip_addr_sc(opcode , m_reg_A , 0);
-
- case 0x7e00:
- // SLB
- // RLB
- m_icount -= 14;
- return get_skip_addr_sc(opcode , m_reg_B , 0);
-
- case 0xf400:
- // SAP
- // SAM
- m_icount -= 14;
- return get_skip_addr_sc(opcode , m_reg_A , 15);
-
- case 0xf600:
- // SOC
- // SOS
- m_icount -= 14;
- return get_skip_addr_sc(opcode , m_flags , HPHYBRID_O_BIT);
-
- case 0xfc00:
- // SBP
- // SBM
- m_icount -= 14;
- return get_skip_addr_sc(opcode , m_reg_B , 15);
-
- case 0xfe00:
- // SEC
- // SES
- m_icount -= 14;
- return get_skip_addr_sc(opcode , m_flags , HPHYBRID_C_BIT);
-
- default:
- switch (opcode & 0xfff0) {
- case 0xf100:
- // AAR
- tmp = (opcode & 0xf) + 1;
- m_icount -= (9 + tmp);
- // A shift by 16 positions is equivalent to a shift by 15
- tmp = tmp > 15 ? 15 : tmp;
- m_reg_A = ((m_reg_A ^ 0x8000) >> tmp) - (0x8000 >> tmp);
- break;
-
- case 0xf900:
- // ABR
- tmp = (opcode & 0xf) + 1;
- m_icount -= (9 + tmp);
- tmp = tmp > 15 ? 15 : tmp;
- m_reg_B = ((m_reg_B ^ 0x8000) >> tmp) - (0x8000 >> tmp);
- break;
-
- case 0xf140:
- // SAR
- tmp = (opcode & 0xf) + 1;
- m_icount -= (9 + tmp);
- m_reg_A >>= tmp;
- break;
-
- case 0xf940:
- // SBR
- tmp = (opcode & 0xf) + 1;
- m_icount -= (9 + tmp);
- m_reg_B >>= tmp;
- break;
-
- case 0xf180:
- // SAL
- tmp = (opcode & 0xf) + 1;
- m_icount -= (9 + tmp);
- m_reg_A <<= tmp;
- break;
-
- case 0xf980:
- // SBL
- tmp = (opcode & 0xf) + 1;
- m_icount -= (9 + tmp);
- m_reg_B <<= tmp;
- break;
-
- case 0xf1c0:
- // RAR
- tmp = (opcode & 0xf) + 1;
- m_icount -= (9 + tmp);
- m_reg_A = (m_reg_A >> tmp) | (m_reg_A << (16 - tmp));
- break;
-
- case 0xf9c0:
- // RBR
- tmp = (opcode & 0xf) + 1;
- m_icount -= (9 + tmp);
- m_reg_B = (m_reg_B >> tmp) | (m_reg_B << (16 - tmp));
- break;
-
- default:
- if ((opcode & 0xf760) == 0x7160) {
- // Place/withdraw instructions
- m_icount -= 23;
- do_pw(opcode);
- } else if ((opcode & 0xff80) == 0xf080) {
- // RET
- m_icount -= 16;
- if (BIT(opcode , 6)) {
- // Pop PA stack
- if (BIT(m_flags , HPHYBRID_IRH_SVC_BIT)) {
- BIT_CLR(m_flags , HPHYBRID_IRH_SVC_BIT);
- memmove(&m_reg_PA[ 0 ] , &m_reg_PA[ 1 ] , HPHYBRID_INT_LVLS);
- } else if (BIT(m_flags , HPHYBRID_IRL_SVC_BIT)) {
- BIT_CLR(m_flags , HPHYBRID_IRL_SVC_BIT);
- memmove(&m_reg_PA[ 0 ] , &m_reg_PA[ 1 ] , HPHYBRID_INT_LVLS);
- }
- }
- tmp = RM(m_reg_R--) + (opcode & 0x1f);
- return BIT(opcode , 5) ? tmp - 0x20 : tmp;
- } else {
- switch (opcode) {
- case 0x7100:
- // SDO
- m_icount -= 12;
- BIT_SET(m_flags , HPHYBRID_DMADIR_BIT);
- break;
-
- case 0x7108:
- // SDI
- m_icount -= 12;
- BIT_CLR(m_flags , HPHYBRID_DMADIR_BIT);
- break;
-
- case 0x7110:
- // EIR
- m_icount -= 12;
- BIT_SET(m_flags , HPHYBRID_INTEN_BIT);
- break;
-
- case 0x7118:
- // DIR
- m_icount -= 12;
- BIT_CLR(m_flags , HPHYBRID_INTEN_BIT);
- break;
-
- case 0x7120:
- // DMA
- m_icount -= 12;
- BIT_SET(m_flags , HPHYBRID_DMAEN_BIT);
- break;
-
- case 0x7138:
- // DDR
- m_icount -= 12;
- BIT_CLR(m_flags , HPHYBRID_DMAEN_BIT);
- break;
-
- case 0x7140:
- // DBL
- m_icount -= 12;
- BIT_CLR(m_flags , HPHYBRID_DB_BIT);
- break;
-
- case 0x7148:
- // CBL
- m_icount -= 12;
- BIT_CLR(m_flags , HPHYBRID_CB_BIT);
- break;
-
- case 0x7150:
- // DBU
- m_icount -= 12;
- BIT_SET(m_flags , HPHYBRID_DB_BIT);
- break;
-
- case 0x7158:
- // CBU
- m_icount -= 12;
- BIT_SET(m_flags , HPHYBRID_CB_BIT);
- break;
-
- case 0xf020:
- // TCA
- m_icount -= 9;
- m_reg_A = ~m_reg_A;
- do_add(m_reg_A , 1);
- break;
-
- case 0xf060:
- // CMA
- m_icount -= 9;
- m_reg_A = ~m_reg_A;
- break;
-
- case 0xf820:
- // TCB
- m_icount -= 9;
- m_reg_B = ~m_reg_B;
- do_add(m_reg_B , 1);
- break;
-
- case 0xf860:
- // CMB
- m_icount -= 9;
- m_reg_B = ~m_reg_B;
- break;
-
- default:
- // Unrecognized instructions: NOP
- // Execution time is fictional
- m_icount -= 6;
- }
- }
- }
- }
- }
- }
-
- return m_reg_P + 1;
-}
-
-void hp_hybrid_cpu_device::state_string_export(const device_state_entry &entry, std::string &str)
-{
- if (entry.index() == STATE_GENFLAGS) {
- strprintf(str, "%s %s %c %c",
- BIT(m_flags , HPHYBRID_DB_BIT) ? "Db":"..",
- BIT(m_flags , HPHYBRID_CB_BIT) ? "Cb":"..",
- BIT(m_flags , HPHYBRID_O_BIT) ? 'O':'.',
- BIT(m_flags , HPHYBRID_C_BIT) ? 'E':'.');
- }
-}
-
-offs_t hp_hybrid_cpu_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
-{
- extern CPU_DISASSEMBLE(hp_hybrid);
- return CPU_DISASSEMBLE_NAME(hp_hybrid)(this, buffer, pc, oprom, opram, options);
-}
-
-UINT16 hp_hybrid_cpu_device::get_ea(UINT16 opcode)
-{
- UINT16 base;
- UINT16 off;
-
- if (BIT(opcode , 10)) {
- // Current page
- base = m_reg_P;
- } else {
- // Base page
- base = 0;
- }
-
- off = opcode & 0x3ff;
- if (off & 0x200) {
- off -= 0x400;
- }
-
- base += off;
-
- if (BIT(opcode , 15)) {
- // Indirect addressing
- m_icount -= 6;
- return RM(base);
- } else {
- // Direct addressing
- return base;
- }
-}
-
-void hp_hybrid_cpu_device::do_add(UINT16& addend1 , UINT16 addend2)
-{
- UINT32 tmp = addend1 + addend2;
-
- if (BIT(tmp , 16)) {
- // Carry
- BIT_SET(m_flags , HPHYBRID_C_BIT);
- }
-
- if (BIT((tmp ^ addend1) & (tmp ^ addend2) , 15)) {
- // Overflow
- BIT_SET(m_flags , HPHYBRID_O_BIT);
- }
-
- addend1 = (UINT16)tmp;
-}
-
-UINT16 hp_hybrid_cpu_device::get_skip_addr(UINT16 opcode , bool condition) const
-{
- bool skip_val = BIT(opcode , 8) != 0;
-
- if (condition == skip_val) {
- UINT16 off = opcode & 0x1f;
-
- if (BIT(opcode , 5)) {
- off -= 0x20;
- }
- return m_reg_P + off;
- } else {
- return m_reg_P + 1;
- }
-}
-
-UINT16 hp_hybrid_cpu_device::get_skip_addr_sc(UINT16 opcode , UINT16& v , unsigned n)
-{
- bool val = BIT(v , n);
-
- if (BIT(opcode , 7)) {
- if (BIT(opcode , 6)) {
- BIT_SET(v , n);
- } else {
- BIT_CLR(v , n);
- }
- }
-
- return get_skip_addr(opcode , val);
-}
-
-void hp_hybrid_cpu_device::do_pw(UINT16 opcode)
-{
- UINT16 tmp;
- UINT16 reg_addr = opcode & 7;
- UINT16 *ptr_reg;
- UINT16 b_mask;
-
- if (BIT(opcode , 3)) {
- ptr_reg = &m_reg_D;
- b_mask = BIT_MASK(HPHYBRID_DB_BIT);
- } else {
- ptr_reg = &m_reg_C;
- b_mask = BIT_MASK(HPHYBRID_CB_BIT);
- }
-
- if (BIT(opcode , 4)) {
- // Withdraw
- if (BIT(opcode , 11)) {
- // Byte
- UINT32 tmp_addr = (UINT32)(*ptr_reg);
- if (m_flags & b_mask) {
- tmp_addr |= 0x10000;
- }
- tmp = RM((UINT16)(tmp_addr >> 1));
- if (BIT(tmp_addr , 0)) {
- tmp &= 0xff;
- } else {
- tmp >>= 8;
- }
- } else {
- // Word
- tmp = RM(*ptr_reg);
- }
- WM(reg_addr , tmp);
-
- if (BIT(opcode , 7)) {
- // Post-decrement
- if ((*ptr_reg)-- == 0) {
- m_flags ^= b_mask;
- }
- } else {
- // Post-increment
- if (++(*ptr_reg) == 0) {
- m_flags ^= b_mask;
- }
- }
- } else {
- // Place
- if (BIT(opcode , 7)) {
- // Pre-decrement
- if ((*ptr_reg)-- == 0) {
- m_flags ^= b_mask;
- }
- } else {
- // Pre-increment
- if (++(*ptr_reg) == 0) {
- m_flags ^= b_mask;
- }
- }
- tmp = RM(reg_addr);
- if (BIT(opcode , 11)) {
- // Byte
- UINT32 tmp_addr = (UINT32)(*ptr_reg);
- if (m_flags & b_mask) {
- tmp_addr |= 0x10000;
- }
- WMB(tmp_addr , (UINT8)tmp);
- } else {
- // Word
- WM(*ptr_reg , tmp);
- }
- }
-}
-
-void hp_hybrid_cpu_device::check_for_interrupts(void)
-{
- if (!BIT(m_flags , HPHYBRID_INTEN_BIT) || BIT(m_flags , HPHYBRID_IRH_SVC_BIT)) {
- return;
- }
-
- int irqline;
-
- if (BIT(m_flags , HPHYBRID_IRH_BIT)) {
- // Service high-level interrupt
- BIT_SET(m_flags , HPHYBRID_IRH_SVC_BIT);
- irqline = HPHYBRID_IRH;
- } else if (BIT(m_flags , HPHYBRID_IRL_BIT) && !BIT(m_flags , HPHYBRID_IRL_SVC_BIT)) {
- // Service low-level interrupt
- BIT_SET(m_flags , HPHYBRID_IRL_SVC_BIT);
- irqline = HPHYBRID_IRL;
- } else {
- return;
- }
-
- // Get interrupt vector in low byte
- UINT8 vector = (UINT8)standard_irq_callback(irqline);
- UINT8 new_PA;
-
- // Get highest numbered 1
- // Don't know what happens if vector is 0, here we assume bit 7 = 1
- if (vector == 0) {
- new_PA = 7;
- } else {
- for (new_PA = 7; new_PA && !BIT(vector , 7); new_PA--, vector <<= 1) {
- }
- }
- if (irqline == HPHYBRID_IRH) {
- BIT_SET(new_PA , 3);
- }
-
- // Push PA stack
- memmove(&m_reg_PA[ 1 ] , &m_reg_PA[ 0 ] , HPHYBRID_INT_LVLS);
-
- CURRENT_PA = new_PA;
-
- // Is this correct? Patent @ pg 210 suggests that the whole interrupt recognition sequence
- // lasts for 32 cycles (6 are already accounted for in get_ea for one indirection)
- m_icount -= 26;
-
- // Do a double-indirect JSM IV,I instruction
- WM(++m_reg_R , m_reg_P);
- m_reg_P = RM(get_ea(0xc008));
- m_reg_I = RM(m_reg_P);
-}
-
-void hp_hybrid_cpu_device::handle_dma(void)
-{
- // Patent hints at the fact that terminal count is detected by bit 15 of dmac being 1 after decrementing
- bool tc = BIT(--m_dmac , 15) != 0;
- UINT16 tmp;
-
- if (BIT(m_flags , HPHYBRID_DMADIR_BIT)) {
- // "Outward" DMA: memory -> peripheral
- tmp = RM(m_dmama++);
- WIO(m_dmapa , tc ? 2 : 0 , tmp);
- m_icount -= 10;
- } else {
- // "Inward" DMA: peripheral -> memory
- tmp = RIO(m_dmapa , tc ? 2 : 0);
- WM(m_dmama++ , tmp);
- m_icount -= 9;
- }
-
- // This is the one of the biggest question marks: is the DMA automatically disabled on TC?
- // Here we assume it is. After all it would make no difference because there is no way
- // to read the DMA enable flag back, so each time the DMA is needed it has to be enabled again.
- if (tc) {
- BIT_CLR(m_flags , HPHYBRID_DMAEN_BIT);
- }
-}
-
-UINT16 hp_hybrid_cpu_device::RM(UINT16 addr)
-{
- UINT16 tmp;
-
- if (addr <= HP_REG_LAST_ADDR) {
- // Memory mapped registers
- switch (addr) {
- case HP_REG_A_ADDR:
- return m_reg_A;
-
- case HP_REG_B_ADDR:
- return m_reg_B;
-
- case HP_REG_P_ADDR:
- return m_reg_P;
-
- case HP_REG_R_ADDR:
- return m_reg_R;
-
- case HP_REG_R4_ADDR:
- case HP_REG_R5_ADDR:
- case HP_REG_R6_ADDR:
- case HP_REG_R7_ADDR:
- return RIO(CURRENT_PA , addr - HP_REG_R4_ADDR);
-
- case HP_REG_IV_ADDR:
- // Correct?
- if (!BIT(m_flags , HPHYBRID_IRH_SVC_BIT) && !BIT(m_flags , HPHYBRID_IRL_SVC_BIT)) {
- return m_reg_IV;
- } else {
- return m_reg_IV | CURRENT_PA;
- }
-
- case HP_REG_PA_ADDR:
- return CURRENT_PA;
-
- case HP_REG_DMAPA_ADDR:
- tmp = m_dmapa & HP_REG_PA_MASK;
- if (BIT(m_flags , HPHYBRID_CB_BIT)) {
- BIT_SET(tmp , 15);
- }
- if (BIT(m_flags , HPHYBRID_DB_BIT)) {
- BIT_SET(tmp , 14);
- }
- return tmp;
-
- case HP_REG_DMAMA_ADDR:
- return m_dmama;
-
- case HP_REG_DMAC_ADDR:
- return m_dmac;
-
- case HP_REG_C_ADDR:
- return m_reg_C;
-
- case HP_REG_D_ADDR:
- return m_reg_D;
-
- default:
- // Unknown registers are returned as 0
- return 0;
- }
- } else {
- return m_direct->read_word((offs_t)addr << 1);
- }
-}
-
-void hp_hybrid_cpu_device::WM(UINT16 addr , UINT16 v)
-{
- if (addr <= HP_REG_LAST_ADDR) {
- // Memory mapped registers
- switch (addr) {
- case HP_REG_A_ADDR:
- m_reg_A = v;
- break;
-
- case HP_REG_B_ADDR:
- m_reg_B = v;
- break;
-
- case HP_REG_P_ADDR:
- m_reg_P = v;
- break;
-
- case HP_REG_R_ADDR:
- m_reg_R = v;
- break;
-
- case HP_REG_R4_ADDR:
- case HP_REG_R5_ADDR:
- case HP_REG_R6_ADDR:
- case HP_REG_R7_ADDR:
- WIO(CURRENT_PA , addr - HP_REG_R4_ADDR , v);
- break;
-
- case HP_REG_IV_ADDR:
- m_reg_IV = v & HP_REG_IV_MASK;
- break;
-
- case HP_REG_PA_ADDR:
- CURRENT_PA = v & HP_REG_PA_MASK;
- break;
-
- case HP_REG_DMAPA_ADDR:
- m_dmapa = v & HP_REG_PA_MASK;
- break;
-
- case HP_REG_DMAMA_ADDR:
- m_dmama = v;
- break;
-
- case HP_REG_DMAC_ADDR:
- m_dmac = v;
- break;
-
- case HP_REG_C_ADDR:
- m_reg_C = v;
- break;
-
- case HP_REG_D_ADDR:
- m_reg_D = v;
- break;
-
- default:
- // Unknown registers are silently discarded
- break;
- }
- } else {
- m_program->write_word((offs_t)addr << 1 , v);
- }
-}
-
-void hp_hybrid_cpu_device::WMB(UINT32 addr , UINT8 v)
-{
- if (addr <= (HP_REG_LAST_ADDR * 2 + 1)) {
- // Cannot write bytes to registers
- } else {
- m_program->write_byte(addr , v);
- }
-}
-
-UINT16 hp_hybrid_cpu_device::RIO(UINT8 pa , UINT8 ic)
-{
- return m_io->read_word(HP_MAKE_IOADDR(pa, ic) << 1);
-}
-
-void hp_hybrid_cpu_device::WIO(UINT8 pa , UINT8 ic , UINT16 v)
-{
- m_io->write_word(HP_MAKE_IOADDR(pa, ic) << 1 , v);
-}
-
-hp_5061_3011_cpu_device::hp_5061_3011_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
-: hp_hybrid_cpu_device(mconfig, HP_5061_3011, "HP_5061_3011", tag, owner, clock, "5061-3011")
-{
-}
diff --git a/src/emu/debug/debugcmd.c b/src/emu/debug/debugcmd.c
index d7e5f48f79c..9bab7b07b25 100644
--- a/src/emu/debug/debugcmd.c
+++ b/src/emu/debug/debugcmd.c
@@ -1193,6 +1193,8 @@ static void execute_comment_save(running_machine &machine, int ref, int params,
{
if (debug_comment_save(machine))
debug_console_printf(machine, "Comments successfully saved\n");
+ else
+ debug_console_printf(machine, "Comments not saved\n");
}
diff --git a/src/emu/debug/debugcpu.c b/src/emu/debug/debugcpu.c
index 2eeb2e1af72..22344cb2deb 100644
--- a/src/emu/debug/debugcpu.c
+++ b/src/emu/debug/debugcpu.c
@@ -19,8 +19,8 @@
#include "debugger.h"
#include "uiinput.h"
#include "xmlfile.h"
+#include "coreutil.h"
#include <ctype.h>
-#include <zlib.h>
/***************************************************************************
@@ -288,6 +288,8 @@ void debug_cpu_source_script(running_machine &machine, const char *file)
bool debug_comment_save(running_machine &machine)
{
+ bool comments_saved = false;
+
// if we don't have a root, bail
xml_data_node *root = xml_file_create();
if (root == NULL)
@@ -332,7 +334,10 @@ bool debug_comment_save(running_machine &machine)
emu_file file(machine.options().comment_directory(), OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS);
file_error filerr = file.open(machine.basename(), ".cmt");
if (filerr == FILERR_NONE)
+ {
xml_file_write(root, file);
+ comments_saved = true;
+ }
}
}
catch (emu_exception &)
@@ -343,7 +348,7 @@ bool debug_comment_save(running_machine &machine)
// free and get out of here
xml_file_free(root);
- return true;
+ return comments_saved;
}
@@ -2746,7 +2751,7 @@ UINT32 device_debug::compute_opcode_crc32(offs_t pc) const
UINT32 numbytes = disassemble(diasmbuf, pc, opbuf, argbuf) & DASMFLAG_LENGTHMASK;
// return a CRC of the exact count of opcode bytes
- return crc32(0, opbuf, numbytes);
+ return core_crc32(0, opbuf, numbytes);
}
diff --git a/src/emu/device.c b/src/emu/device.c
index 5991bcfb30c..2fd68e6ed8e 100644
--- a/src/emu/device.c
+++ b/src/emu/device.c
@@ -333,7 +333,7 @@ attotime device_t::clocks_to_attotime(UINT64 numclocks) const
UINT64 device_t::attotime_to_clocks(const attotime &duration) const
{
- return mulu_32x32(duration.seconds, m_clock) + (UINT64)duration.attoseconds / (UINT64)m_attoseconds_per_clock;
+ return mulu_32x32(duration.seconds(), m_clock) + (UINT64)duration.attoseconds() / (UINT64)m_attoseconds_per_clock;
}
@@ -413,7 +413,7 @@ void device_t::start()
if (state_registrations == 0 && (interface(exec) || interface(sound)) && type() != SPEAKER)
{
logerror("Device '%s' did not register any state to save!\n", tag());
- if ((machine().system().flags & GAME_SUPPORTS_SAVE) != 0)
+ if ((machine().system().flags & MACHINE_SUPPORTS_SAVE) != 0)
fatalerror("Device '%s' did not register any state to save!\n", tag());
}
diff --git a/src/emu/dipty.c b/src/emu/dipty.c
new file mode 100644
index 00000000000..1d188f95d0a
--- /dev/null
+++ b/src/emu/dipty.c
@@ -0,0 +1,85 @@
+// license:BSD-3-Clause
+// copyright-holders:F.Ulivi
+/***************************************************************************
+
+ dipty.h
+
+ Device PTY interface
+
+***************************************************************************/
+
+#include "emu.h"
+#include "osdcore.h"
+
+device_pty_interface::device_pty_interface(const machine_config &mconfig, device_t &device)
+ : device_interface(device, "pty"),
+ m_pty_master(NULL),
+ m_slave_name(),
+ m_opened(false)
+{
+}
+
+device_pty_interface::~device_pty_interface()
+{
+}
+
+bool device_pty_interface::open(void)
+{
+ if (!m_opened) {
+ char buffer[ 128 ];
+
+ if (osd_openpty(&m_pty_master , buffer , sizeof(buffer)) == FILERR_NONE) {
+ m_opened = true;
+ m_slave_name.assign(buffer);
+ } else {
+ m_opened = false;
+ m_pty_master = NULL;
+ }
+ }
+
+ return m_opened;
+}
+
+void device_pty_interface::close(void)
+{
+ if (m_opened) {
+ osd_close(m_pty_master);
+ m_opened = false;
+ }
+}
+
+bool device_pty_interface::is_open(void) const
+{
+ return m_opened;
+}
+
+ssize_t device_pty_interface::read(UINT8 *rx_chars , size_t count)
+{
+ UINT32 actual_bytes;
+
+ if (m_opened && osd_read(m_pty_master, rx_chars, 0, count, &actual_bytes) == FILERR_NONE) {
+ return actual_bytes;
+ } else {
+ return -1;
+ }
+}
+
+void device_pty_interface::write(UINT8 tx_char)
+{
+ UINT32 actual_bytes;
+
+ if (m_opened) {
+ osd_write(m_pty_master, &tx_char, 0, 1, &actual_bytes);
+ }
+}
+
+bool device_pty_interface::is_slave_connected(void) const
+{
+ // TODO: really check for slave status
+ return m_opened;
+}
+
+const char *device_pty_interface::slave_name(void) const
+{
+ return m_slave_name.c_str();
+}
diff --git a/src/emu/dipty.h b/src/emu/dipty.h
new file mode 100644
index 00000000000..c381420a0ca
--- /dev/null
+++ b/src/emu/dipty.h
@@ -0,0 +1,48 @@
+// license:BSD-3-Clause
+// copyright-holders:F.Ulivi
+/***************************************************************************
+
+ dipty.h
+
+ Device PTY interface
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __EMU_H__
+#error Dont include this file directly; include emu.h instead.
+#endif
+
+#ifndef __DIPTY_H__
+#define __DIPTY_H__
+
+class device_pty_interface : public device_interface
+{
+public:
+ // construction/destruction
+ device_pty_interface(const machine_config &mconfig, device_t &device);
+ virtual ~device_pty_interface();
+
+ bool open(void);
+ void close(void);
+
+ bool is_open(void) const;
+
+ ssize_t read(UINT8 *rx_chars , size_t count);
+ void write(UINT8 tx_char);
+
+ bool is_slave_connected(void) const;
+
+ const char *slave_name(void) const;
+
+protected:
+ osd_file *m_pty_master;
+ std::string m_slave_name;
+ bool m_opened;
+};
+
+// iterator
+typedef device_interface_iterator<device_pty_interface> pty_interface_iterator;
+
+#endif /* __DIPTY_H__ */
diff --git a/src/emu/drivenum.c b/src/emu/drivenum.c
index 6d1590c030b..04ff2714e18 100644
--- a/src/emu/drivenum.c
+++ b/src/emu/drivenum.c
@@ -360,7 +360,7 @@ void driver_enumerator::find_approximate_matches(const char *string, int count,
if (m_included[index])
{
// skip things that can't run
- if ((s_drivers_sorted[index]->flags & GAME_NO_STANDALONE) != 0)
+ if ((s_drivers_sorted[index]->flags & MACHINE_NO_STANDALONE) != 0)
continue;
// pick the best match between driver name and description
diff --git a/src/emu/drivenum.h b/src/emu/drivenum.h
index 672c24d2c3e..096d8b873a1 100644
--- a/src/emu/drivenum.h
+++ b/src/emu/drivenum.h
@@ -36,7 +36,7 @@ public:
// any item by index
static const game_driver &driver(int index) { assert(index >= 0 && index < s_driver_count); return *s_drivers_sorted[index]; }
static int clone(int index) { return find(driver(index).parent); }
- static int non_bios_clone(int index) { int result = find(driver(index).parent); return (result != -1 && (driver(result).flags & GAME_IS_BIOS_ROOT) == 0) ? result : -1; }
+ static int non_bios_clone(int index) { int result = find(driver(index).parent); return (result != -1 && (driver(result).flags & MACHINE_IS_BIOS_ROOT) == 0) ? result : -1; }
static int compatible_with(int index) { return find(driver(index).compatible_with); }
// any item by driver
diff --git a/src/emu/drivers/empty.c b/src/emu/drivers/empty.c
index 7a4c08ac256..215af57190b 100644
--- a/src/emu/drivers/empty.c
+++ b/src/emu/drivers/empty.c
@@ -71,4 +71,4 @@ ROM_END
// GAME DRIVERS
//**************************************************************************
-GAME( 2007, ___empty, 0, ___empty, 0, driver_device, 0, ROT0, "MAME", "No Driver Loaded", GAME_NO_SOUND )
+GAME( 2007, ___empty, 0, ___empty, 0, driver_device, 0, ROT0, "MAME", "No Driver Loaded", MACHINE_NO_SOUND )
diff --git a/src/emu/drivers/emudummy.c b/src/emu/drivers/emudummy.c
index 4010fde9f57..948be2f2987 100644
--- a/src/emu/drivers/emudummy.c
+++ b/src/emu/drivers/emudummy.c
@@ -33,4 +33,4 @@ ROM_START( __dummy )
ROM_END
-GAME( 1900, __dummy, 0, __dummy, 0, driver_device, 0, ROT0, "(none)", "Dummy", GAME_NO_SOUND )
+GAME( 1900, __dummy, 0, __dummy, 0, driver_device, 0, ROT0, "(none)", "Dummy", MACHINE_NO_SOUND )
diff --git a/src/emu/drivers/testcpu.c b/src/emu/drivers/testcpu.c
index b76bbe23d06..d3d077f025b 100644
--- a/src/emu/drivers/testcpu.c
+++ b/src/emu/drivers/testcpu.c
@@ -209,4 +209,4 @@ ROM_END
// GAME DRIVERS
//**************************************************************************
-GAME( 2012, testcpu, 0, testcpu, 0, driver_device, 0, ROT0, "MAME", "CPU Tester", GAME_NO_SOUND )
+GAME( 2012, testcpu, 0, testcpu, 0, driver_device, 0, ROT0, "MAME", "CPU Tester", MACHINE_NO_SOUND )
diff --git a/src/emu/emu.h b/src/emu/emu.h
index 93015100645..969ee94f50e 100644
--- a/src/emu/emu.h
+++ b/src/emu/emu.h
@@ -78,6 +78,7 @@ typedef device_t * (*machine_config_constructor)(machine_config &config, device_
#include "schedule.h"
#include "timer.h"
#include "dinetwork.h"
+#include "dipty.h"
// machine and driver configuration
#include "mconfig.h"
diff --git a/src/emu/emuopts.c b/src/emu/emuopts.c
index b0efd442101..21128e53e93 100644
--- a/src/emu/emuopts.c
+++ b/src/emu/emuopts.c
@@ -202,6 +202,10 @@ const options_entry emu_options::s_option_entries[] =
emu_options::emu_options()
: core_options()
+, m_coin_impulse(0)
+, m_joystick_contradictory(false)
+, m_sleep(true)
+, m_refresh_speed(false)
{
add_entries(emu_options::s_option_entries);
}
@@ -380,6 +384,8 @@ bool emu_options::parse_slot_devices(int argc, char *argv[], std::string &error_
result = core_options::parse_command_line(argc, argv, OPTION_PRIORITY_CMDLINE, error_string);
} while (num != options_count());
+ update_cached_options();
+
return result;
}
@@ -393,7 +399,9 @@ bool emu_options::parse_command_line(int argc, char *argv[], std::string &error_
{
// parse as normal
core_options::parse_command_line(argc, argv, OPTION_PRIORITY_CMDLINE, error_string);
- return parse_slot_devices(argc, argv, error_string, NULL, NULL);
+ bool result = parse_slot_devices(argc, argv, error_string, NULL, NULL);
+ update_cached_options();
+ return result;
}
@@ -427,13 +435,13 @@ void emu_options::parse_standard_inis(std::string &error_string)
else
parse_one_ini("horizont", OPTION_PRIORITY_ORIENTATION_INI, &error_string);
- if (cursystem->flags & GAME_TYPE_ARCADE)
+ if (cursystem->flags & MACHINE_TYPE_ARCADE)
parse_one_ini("arcade", OPTION_PRIORITY_SYSTYPE_INI, &error_string);
- else if (cursystem->flags & GAME_TYPE_CONSOLE)
+ else if (cursystem->flags & MACHINE_TYPE_CONSOLE)
parse_one_ini("console", OPTION_PRIORITY_SYSTYPE_INI, &error_string);
- else if (cursystem->flags & GAME_TYPE_COMPUTER)
+ else if (cursystem->flags & MACHINE_TYPE_COMPUTER)
parse_one_ini("computer", OPTION_PRIORITY_SYSTYPE_INI, &error_string);
- else if (cursystem->flags & GAME_TYPE_OTHER)
+ else if (cursystem->flags & MACHINE_TYPE_OTHER)
parse_one_ini("othersys", OPTION_PRIORITY_SYSTYPE_INI, &error_string);
machine_config config(*cursystem, *this);
@@ -480,6 +488,8 @@ void emu_options::parse_standard_inis(std::string &error_string)
// Re-evaluate slot options after loading ini files
update_slot_options();
+
+ update_cached_options();
}
@@ -582,3 +592,18 @@ const char *emu_options::sub_value(std::string &buffer, const char *name, const
buffer.clear();
return buffer.c_str();
}
+
+
+//-------------------------------------------------
+// update_cached_options - to prevent tagmap
+// lookups keep copies of frequently requested
+// options in member variables.
+//-------------------------------------------------
+
+void emu_options::update_cached_options()
+{
+ m_coin_impulse = int_value(OPTION_COIN_IMPULSE);
+ m_joystick_contradictory = bool_value(OPTION_JOYSTICK_CONTRADICTORY);
+ m_sleep = bool_value(OPTION_SLEEP);
+ m_refresh_speed = bool_value(OPTION_REFRESHSPEED);
+}
diff --git a/src/emu/emuopts.h b/src/emu/emuopts.h
index e471edfe95a..0bbeb6ae3d7 100644
--- a/src/emu/emuopts.h
+++ b/src/emu/emuopts.h
@@ -266,9 +266,9 @@ public:
int frameskip() const { return int_value(OPTION_FRAMESKIP); }
int seconds_to_run() const { return int_value(OPTION_SECONDS_TO_RUN); }
bool throttle() const { return bool_value(OPTION_THROTTLE); }
- bool sleep() const { return bool_value(OPTION_SLEEP); }
+ bool sleep() const { return m_sleep; }
float speed() const { return float_value(OPTION_SPEED); }
- bool refresh_speed() const { return bool_value(OPTION_REFRESHSPEED); }
+ bool refresh_speed() const { return m_refresh_speed; }
// core rotation options
bool rotate() const { return bool_value(OPTION_ROTATE); }
@@ -327,8 +327,8 @@ public:
bool ui_active() const { return bool_value(OPTION_UI_ACTIVE); }
bool offscreen_reload() const { return bool_value(OPTION_OFFSCREEN_RELOAD); }
bool natural_keyboard() const { return bool_value(OPTION_NATURAL_KEYBOARD); }
- bool joystick_contradictory() const { return bool_value(OPTION_JOYSTICK_CONTRADICTORY); }
- int coin_impulse() const { return int_value(OPTION_COIN_IMPULSE); }
+ bool joystick_contradictory() const { return m_joystick_contradictory; }
+ int coin_impulse() const { return m_coin_impulse; }
// core debugging options
bool log() const { return bool_value(OPTION_LOG); }
@@ -382,7 +382,16 @@ private:
// INI parsing helper
bool parse_one_ini(const char *basename, int priority, std::string *error_string = NULL);
+ // cache frequently used options in members
+ void update_cached_options();
+
static const options_entry s_option_entries[];
+
+ // cached options
+ int m_coin_impulse;
+ bool m_joystick_contradictory;
+ bool m_sleep;
+ bool m_refresh_speed;
};
diff --git a/src/emu/emupal.c b/src/emu/emupal.c
index c4190456567..b1bda17bc98 100644
--- a/src/emu/emupal.c
+++ b/src/emu/emupal.c
@@ -816,6 +816,72 @@ void palette_device::palette_init_monochrome_yellow(palette_device &palette)
/*-------------------------------------------------
+ 3bit_rgb - 8-color rgb
+-------------------------------------------------*/
+
+void palette_device::palette_init_3bit_rgb(palette_device &palette)
+{
+ for (int i = 0; i < 8; i++)
+ palette.set_pen_color(i, rgb_t(pal1bit(i >> 0), pal1bit(i >> 1), pal1bit(i >> 2)));
+}
+
+
+/*-------------------------------------------------
+ 3bit_rbg - 8-color rgb
+-------------------------------------------------*/
+
+void palette_device::palette_init_3bit_rbg(palette_device &palette)
+{
+ for (int i = 0; i < 8; i++)
+ palette.set_pen_color(i, rgb_t(pal1bit(i >> 0), pal1bit(i >> 2), pal1bit(i >> 1)));
+}
+
+
+/*-------------------------------------------------
+ 3bit_brg - 8-color rgb
+-------------------------------------------------*/
+
+void palette_device::palette_init_3bit_brg(palette_device &palette)
+{
+ for (int i = 0; i < 8; i++)
+ palette.set_pen_color(i, rgb_t(pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0)));
+}
+
+
+/*-------------------------------------------------
+ 3bit_grb - 8-color rgb
+-------------------------------------------------*/
+
+void palette_device::palette_init_3bit_grb(palette_device &palette)
+{
+ for (int i = 0; i < 8; i++)
+ palette.set_pen_color(i, rgb_t(pal1bit(i >> 1), pal1bit(i >> 0), pal1bit(i >> 2)));
+}
+
+
+/*-------------------------------------------------
+ 3bit_gbr - 8-color rgb
+-------------------------------------------------*/
+
+void palette_device::palette_init_3bit_gbr(palette_device &palette)
+{
+ for (int i = 0; i < 8; i++)
+ palette.set_pen_color(i, rgb_t(pal1bit(i >> 2), pal1bit(i >> 0), pal1bit(i >> 1)));
+}
+
+
+/*-------------------------------------------------
+ 3bit_bgr - 8-color rgb
+-------------------------------------------------*/
+
+void palette_device::palette_init_3bit_bgr(palette_device &palette)
+{
+ for (int i = 0; i < 8; i++)
+ palette.set_pen_color(i, rgb_t(pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0)));
+}
+
+
+/*-------------------------------------------------
RRRR_GGGG_BBBB - standard 4-4-4 palette,
assuming the commonly used resistor values:
@@ -900,16 +966,6 @@ void palette_device::palette_init_RRRRRGGGGGGBBBBB(palette_device &palette)
palette.set_pen_color(i, rgbexpand<5,6,5>(i, 11, 5, 0));
}
-
-rgb_t raw_to_rgb_converter::BBGGRRII_decoder(UINT32 raw)
-{
- UINT8 i = raw & 3;
- UINT8 r = pal4bit(((raw >> 0) & 0x0c) | i);
- UINT8 g = pal4bit(((raw >> 2) & 0x0c) | i);
- UINT8 b = pal4bit(((raw >> 4) & 0x0c) | i);
- return rgb_t(r, g, b);
-}
-
rgb_t raw_to_rgb_converter::IRRRRRGGGGGBBBBB_decoder(UINT32 raw)
{
UINT8 i = (raw >> 15) & 1;
diff --git a/src/emu/emupal.h b/src/emu/emupal.h
index a8879ba4730..1b6bfb296a5 100644
--- a/src/emu/emupal.h
+++ b/src/emu/emupal.h
@@ -119,8 +119,14 @@
#define PALETTE_FORMAT_BBGGGRRR raw_to_rgb_converter(1, &raw_to_rgb_converter::standard_rgb_decoder<3,3,2, 0,3,6>)
#define PALETTE_FORMAT_RRRGGGBB raw_to_rgb_converter(1, &raw_to_rgb_converter::standard_rgb_decoder<3,3,2, 5,2,0>)
-// standard 2-2-2-2 formats
-#define PALETTE_FORMAT_BBGGRRII raw_to_rgb_converter(1, &raw_to_rgb_converter::BBGGRRII_decoder)
+// data-inverted 3-3-2 formats
+#define PALETTE_FORMAT_BBGGGRRR_inverted raw_to_rgb_converter(1, &raw_to_rgb_converter::inverted_rgb_decoder<3,3,2, 0,3,6>)
+#define PALETTE_FORMAT_RRRGGGBB_inverted raw_to_rgb_converter(1, &raw_to_rgb_converter::inverted_rgb_decoder<3,3,2, 5,2,0>)
+
+// standard 3-3-3 formats
+#define PALETTE_FORMAT_xxxxxxxBBBGGGRRR raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<3,3,3, 0,3,6>)
+#define PALETTE_FORMAT_xxxxxxxRRRBBBGGG raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<3,3,3, 6,0,3>)
+#define PALETTE_FORMAT_xxxxxxxRRRGGGBBB raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<3,3,3, 6,3,0>)
// standard 4-4-4 formats
#define PALETTE_FORMAT_xxxxBBBBGGGGRRRR raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<4,4,4, 0,4,8>)
@@ -140,12 +146,16 @@
#define PALETTE_FORMAT_xRRRRRGGGGGBBBBB raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 10,5,0>)
#define PALETTE_FORMAT_xGGGGGRRRRRBBBBB raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 5,10,0>)
#define PALETTE_FORMAT_xGGGGGBBBBBRRRRR raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 0,10,5>)
-#define PALETTE_FORMAT_RRRRRGGGGGBBBBBx raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 11,6,1>)
+#define PALETTE_FORMAT_BBBBBRRRRRGGGGGx raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 6,1,11>)
#define PALETTE_FORMAT_GGGGGRRRRRBBBBBx raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 6,11,1>)
+#define PALETTE_FORMAT_RRRRRGGGGGBBBBBx raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,5,5, 11,6,1>)
#define PALETTE_FORMAT_RRRRGGGGBBBBRGBx raw_to_rgb_converter(2, &raw_to_rgb_converter::RRRRGGGGBBBBRGBx_decoder)
#define PALETTE_FORMAT_xRGBRRRRGGGGBBBB_bit0 raw_to_rgb_converter(2, &raw_to_rgb_converter::xRGBRRRRGGGGBBBB_bit0_decoder)
#define PALETTE_FORMAT_xRGBRRRRGGGGBBBB_bit4 raw_to_rgb_converter(2, &raw_to_rgb_converter::xRGBRRRRGGGGBBBB_bit4_decoder)
+// data-inverted 5-5-5 formats
+#define PALETTE_FORMAT_xRRRRRBBBBBGGGGG_inverted raw_to_rgb_converter(2, &raw_to_rgb_converter::inverted_rgb_decoder<5,5,5, 10,0,5>)
+
// standard 5-6-5 formats
#define PALETTE_FORMAT_RRRRRGGGGGGBBBBB raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,6,5, 11,5,0>)
#define PALETTE_FORMAT_BBBBBGGGGGGRRRRR raw_to_rgb_converter(2, &raw_to_rgb_converter::standard_rgb_decoder<5,6,5, 0,5,11>)
@@ -232,6 +242,30 @@
MCFG_PALETTE_ADD(_tag, 2) \
palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_monochrome_yellow), downcast<palette_device *>(device)));
+#define MCFG_PALETTE_ADD_3BIT_RGB(_tag) \
+ MCFG_PALETTE_ADD(_tag, 8) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_rgb), downcast<palette_device *>(device)));
+
+#define MCFG_PALETTE_ADD_3BIT_RBG(_tag) \
+ MCFG_PALETTE_ADD(_tag, 8) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_rbg), downcast<palette_device *>(device)));
+
+#define MCFG_PALETTE_ADD_3BIT_BRG(_tag) \
+ MCFG_PALETTE_ADD(_tag, 8) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_brg), downcast<palette_device *>(device)));
+
+#define MCFG_PALETTE_ADD_3BIT_GRB(_tag) \
+ MCFG_PALETTE_ADD(_tag, 8) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_grb), downcast<palette_device *>(device)));
+
+#define MCFG_PALETTE_ADD_3BIT_GBR(_tag) \
+ MCFG_PALETTE_ADD(_tag, 8) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_gbr), downcast<palette_device *>(device)));
+
+#define MCFG_PALETTE_ADD_3BIT_BGR(_tag) \
+ MCFG_PALETTE_ADD(_tag, 8) \
+ palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_3bit_bgr), downcast<palette_device *>(device)));
+
#define MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB(_tag) \
MCFG_PALETTE_ADD(_tag, 32768) \
palette_device::static_set_init(*device, palette_init_delegate(FUNC(palette_device::palette_init_RRRRRGGGGGBBBBB), downcast<palette_device *>(device)));
@@ -294,6 +328,17 @@ public:
UINT8 b = palexpand<_BlueBits>(raw >> _BlueShift);
return rgb_t(r, g, b);
}
+
+ // data-inverted generic raw-to-RGB conversion helpers
+ template<int _RedBits, int _GreenBits, int _BlueBits, int _RedShift, int _GreenShift, int _BlueShift>
+ static rgb_t inverted_rgb_decoder(UINT32 raw)
+ {
+ UINT8 r = palexpand<_RedBits>(~raw >> _RedShift);
+ UINT8 g = palexpand<_GreenBits>(~raw >> _GreenShift);
+ UINT8 b = palexpand<_BlueBits>(~raw >> _BlueShift);
+ return rgb_t(r, g, b);
+ }
+
template<int _IntBits, int _RedBits, int _GreenBits, int _BlueBits, int _IntShift, int _RedShift, int _GreenShift, int _BlueShift>
static rgb_t standard_irgb_decoder(UINT32 raw)
{
@@ -305,7 +350,6 @@ public:
}
// other standard decoders
- static rgb_t BBGGRRII_decoder(UINT32 raw);
static rgb_t IRRRRRGGGGGBBBBB_decoder(UINT32 raw);
static rgb_t RRRRGGGGBBBBRGBx_decoder(UINT32 raw); // bits 3/2/1 are LSb
static rgb_t xRGBRRRRGGGGBBBB_bit0_decoder(UINT32 raw); // bits 14/13/12 are LSb
@@ -359,6 +403,9 @@ public:
// setters
void set_pen_color(pen_t pen, rgb_t rgb) { m_palette->entry_set_color(pen, rgb); }
+ void set_pen_red_level(pen_t pen, UINT8 level) { m_palette->entry_set_red_level(pen, level); }
+ void set_pen_green_level(pen_t pen, UINT8 level) { m_palette->entry_set_green_level(pen, level); }
+ void set_pen_blue_level(pen_t pen, UINT8 level) { m_palette->entry_set_blue_level(pen, level); }
void set_pen_color(pen_t pen, UINT8 r, UINT8 g, UINT8 b) { m_palette->entry_set_color(pen, rgb_t(r, g, b)); }
void set_pen_colors(pen_t color_base, const rgb_t *colors, int color_count) { while (color_count--) set_pen_color(color_base++, *colors++); }
void set_pen_colors(pen_t color_base, const std::vector<rgb_t> &colors) { for(unsigned int i=0; i != colors.size(); i++) set_pen_color(color_base+i, colors[i]); }
@@ -396,6 +443,12 @@ public:
void palette_init_monochrome_green(palette_device &palette);
void palette_init_monochrome_green_highlight(palette_device &palette);
void palette_init_monochrome_yellow(palette_device &palette);
+ void palette_init_3bit_rgb(palette_device &palette);
+ void palette_init_3bit_rbg(palette_device &palette);
+ void palette_init_3bit_brg(palette_device &palette);
+ void palette_init_3bit_grb(palette_device &palette);
+ void palette_init_3bit_gbr(palette_device &palette);
+ void palette_init_3bit_bgr(palette_device &palette);
void palette_init_RRRRGGGGBBBB_proms(palette_device &palette);
void palette_init_RRRRRGGGGGBBBBB(palette_device &palette);
void palette_init_BBBBBGGGGGRRRRR(palette_device &palette);
diff --git a/src/emu/gamedrv.h b/src/emu/gamedrv.h
index 36263aec1e1..db5e02f31cc 100644
--- a/src/emu/gamedrv.h
+++ b/src/emu/gamedrv.h
@@ -22,32 +22,32 @@
const int MAX_DRIVER_NAME_CHARS = 8;
// flags for game drivers
-const UINT32 ORIENTATION_MASK = 0x00000007;
-const UINT32 GAME_NOT_WORKING = 0x00000008;
-const UINT32 GAME_UNEMULATED_PROTECTION = 0x00000010; // game's protection not fully emulated
-const UINT32 GAME_WRONG_COLORS = 0x00000020; // colors are totally wrong
-const UINT32 GAME_IMPERFECT_COLORS = 0x00000040; // colors are not 100% accurate, but close
-const UINT32 GAME_IMPERFECT_GRAPHICS = 0x00000080; // graphics are wrong/incomplete
-const UINT32 GAME_NO_COCKTAIL = 0x00000100; // screen flip support is missing
-const UINT32 GAME_NO_SOUND = 0x00000200; // sound is missing
-const UINT32 GAME_IMPERFECT_SOUND = 0x00000400; // sound is known to be wrong
-const UINT32 GAME_SUPPORTS_SAVE = 0x00000800; // game supports save states
-const UINT32 GAME_IS_BIOS_ROOT = 0x00001000; // this driver entry is a BIOS root
-const UINT32 GAME_NO_STANDALONE = 0x00002000; // this driver cannot stand alone
-const UINT32 GAME_REQUIRES_ARTWORK = 0x00004000; // the driver requires external artwork for key elements of the game
-const UINT32 GAME_UNOFFICIAL = 0x00008000; // unofficial hardware change
-const UINT32 GAME_NO_SOUND_HW = 0x00010000; // sound hardware not available
-const UINT32 GAME_MECHANICAL = 0x00020000; // contains mechanical parts (pinball, redemption games,...)
-const UINT32 GAME_TYPE_ARCADE = 0x00040000; // arcade machine (coin operated machines)
-const UINT32 GAME_TYPE_CONSOLE = 0x00080000; // console system
-const UINT32 GAME_TYPE_COMPUTER = 0x00100000; // any kind of computer including home computers, minis, calcs,...
-const UINT32 GAME_TYPE_OTHER = 0x00200000; // any other emulated system that doesn't fit above (ex. clock, satelite receiver,...)
-const UINT32 GAME_IMPERFECT_KEYBOARD = 0x00400000; // keyboard is known to be wrong
-const UINT32 GAME_CLICKABLE_ARTWORK = 0x00800000; // marking that artwork is clickable and require mouse cursor
+const UINT32 ORIENTATION_MASK = 0x00000007;
+const UINT32 MACHINE_NOT_WORKING = 0x00000008;
+const UINT32 MACHINE_UNEMULATED_PROTECTION = 0x00000010; // game's protection not fully emulated
+const UINT32 MACHINE_WRONG_COLORS = 0x00000020; // colors are totally wrong
+const UINT32 MACHINE_IMPERFECT_COLORS = 0x00000040; // colors are not 100% accurate, but close
+const UINT32 MACHINE_IMPERFECT_GRAPHICS = 0x00000080; // graphics are wrong/incomplete
+const UINT32 MACHINE_NO_COCKTAIL = 0x00000100; // screen flip support is missing
+const UINT32 MACHINE_NO_SOUND = 0x00000200; // sound is missing
+const UINT32 MACHINE_IMPERFECT_SOUND = 0x00000400; // sound is known to be wrong
+const UINT32 MACHINE_SUPPORTS_SAVE = 0x00000800; // game supports save states
+const UINT32 MACHINE_IS_BIOS_ROOT = 0x00001000; // this driver entry is a BIOS root
+const UINT32 MACHINE_NO_STANDALONE = 0x00002000; // this driver cannot stand alone
+const UINT32 MACHINE_REQUIRES_ARTWORK = 0x00004000; // the driver requires external artwork for key elements of the game
+const UINT32 MACHINE_UNOFFICIAL = 0x00008000; // unofficial hardware change
+const UINT32 MACHINE_NO_SOUND_HW = 0x00010000; // sound hardware not available
+const UINT32 MACHINE_MECHANICAL = 0x00020000; // contains mechanical parts (pinball, redemption games,...)
+const UINT32 MACHINE_TYPE_ARCADE = 0x00040000; // arcade machine (coin operated machines)
+const UINT32 MACHINE_TYPE_CONSOLE = 0x00080000; // console system
+const UINT32 MACHINE_TYPE_COMPUTER = 0x00100000; // any kind of computer including home computers, minis, calcs,...
+const UINT32 MACHINE_TYPE_OTHER = 0x00200000; // any other emulated system that doesn't fit above (ex. clock, satelite receiver,...)
+const UINT32 MACHINE_IMPERFECT_KEYBOARD = 0x00400000; // keyboard is known to be wrong
+const UINT32 MACHINE_CLICKABLE_ARTWORK = 0x00800000; // marking that artwork is clickable and require mouse cursor
// useful combinations of flags
-const UINT32 GAME_IS_SKELETON = GAME_NO_SOUND | GAME_NOT_WORKING; // mask for skelly games
-const UINT32 GAME_IS_SKELETON_MECHANICAL = GAME_IS_SKELETON | GAME_MECHANICAL | GAME_REQUIRES_ARTWORK; // mask for skelly mechanical games
+const UINT32 MACHINE_IS_SKELETON = MACHINE_NO_SOUND | MACHINE_NOT_WORKING; // mask for skelly games
+const UINT32 MACHINE_IS_SKELETON_MECHANICAL = MACHINE_IS_SKELETON | MACHINE_MECHANICAL | MACHINE_REQUIRES_ARTWORK; // mask for skelly mechanical games
@@ -111,7 +111,7 @@ extern const game_driver GAME_NAME(NAME) = \
&driver_device::driver_init_wrapper<CLASS, &CLASS::init_##INIT>, \
ROM_NAME(NAME), \
NULL, \
- (MONITOR)|(FLAGS)|GAME_TYPE_ARCADE, \
+ (MONITOR)|(FLAGS)|MACHINE_TYPE_ARCADE, \
&LAYOUT[0] \
};
@@ -130,7 +130,7 @@ extern const game_driver GAME_NAME(NAME) = \
&driver_device::driver_init_wrapper<CLASS, &CLASS::init_##INIT>, \
ROM_NAME(NAME), \
#COMPAT, \
- ROT0|(FLAGS)|GAME_TYPE_CONSOLE, \
+ ROT0|(FLAGS)|MACHINE_TYPE_CONSOLE, \
NULL \
};
@@ -149,7 +149,7 @@ extern const game_driver GAME_NAME(NAME) = \
&driver_device::driver_init_wrapper<CLASS, &CLASS::init_##INIT>, \
ROM_NAME(NAME), \
#COMPAT, \
- ROT0|(FLAGS)|GAME_TYPE_COMPUTER, \
+ ROT0|(FLAGS)|MACHINE_TYPE_COMPUTER, \
NULL \
};
@@ -168,7 +168,7 @@ extern const game_driver GAME_NAME(NAME) = \
&driver_device::driver_init_wrapper<CLASS, &CLASS::init_##INIT>, \
ROM_NAME(NAME), \
#COMPAT, \
- ROT0|(FLAGS)|GAME_TYPE_OTHER, \
+ ROT0|(FLAGS)|MACHINE_TYPE_OTHER, \
NULL \
};
diff --git a/src/emu/info.c b/src/emu/info.c
index d87cc529bb0..25ea424130f 100644
--- a/src/emu/info.c
+++ b/src/emu/info.c
@@ -233,7 +233,7 @@ void info_xml_creator::output_one()
{
// no action if not a game
const game_driver &driver = m_drivlist.driver();
- if (driver.flags & GAME_NO_STANDALONE)
+ if (driver.flags & MACHINE_NO_STANDALONE)
return;
// allocate input ports
@@ -257,16 +257,16 @@ void info_xml_creator::output_one()
fprintf(m_output, " sourcefile=\"%s\"", xml_normalize_string(start + 1));
// append bios and runnable flags
- if (driver.flags & GAME_IS_BIOS_ROOT)
+ if (driver.flags & MACHINE_IS_BIOS_ROOT)
fprintf(m_output, " isbios=\"yes\"");
- if (driver.flags & GAME_NO_STANDALONE)
+ if (driver.flags & MACHINE_NO_STANDALONE)
fprintf(m_output, " runnable=\"no\"");
- if (driver.flags & GAME_MECHANICAL)
+ if (driver.flags & MACHINE_MECHANICAL)
fprintf(m_output, " ismechanical=\"yes\"");
// display clone information
int clone_of = m_drivlist.find(driver.parent);
- if (clone_of != -1 && !(m_drivlist.driver(clone_of).flags & GAME_IS_BIOS_ROOT))
+ if (clone_of != -1 && !(m_drivlist.driver(clone_of).flags & MACHINE_IS_BIOS_ROOT))
fprintf(m_output, " cloneof=\"%s\"", xml_normalize_string(m_drivlist.driver(clone_of).name));
if (clone_of != -1)
fprintf(m_output, " romof=\"%s\"", xml_normalize_string(m_drivlist.driver(clone_of).name));
@@ -1169,44 +1169,44 @@ void info_xml_creator::output_driver()
/* some minor issues, games marked as status=preliminary */
/* don't work or have major emulation problems. */
- if (m_drivlist.driver().flags & (GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_WRONG_COLORS | GAME_MECHANICAL))
+ if (m_drivlist.driver().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_MECHANICAL))
fprintf(m_output, " status=\"preliminary\"");
- else if (m_drivlist.driver().flags & (GAME_IMPERFECT_COLORS | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS))
+ else if (m_drivlist.driver().flags & (MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS))
fprintf(m_output, " status=\"imperfect\"");
else
fprintf(m_output, " status=\"good\"");
- if (m_drivlist.driver().flags & GAME_NOT_WORKING)
+ if (m_drivlist.driver().flags & MACHINE_NOT_WORKING)
fprintf(m_output, " emulation=\"preliminary\"");
else
fprintf(m_output, " emulation=\"good\"");
- if (m_drivlist.driver().flags & GAME_WRONG_COLORS)
+ if (m_drivlist.driver().flags & MACHINE_WRONG_COLORS)
fprintf(m_output, " color=\"preliminary\"");
- else if (m_drivlist.driver().flags & GAME_IMPERFECT_COLORS)
+ else if (m_drivlist.driver().flags & MACHINE_IMPERFECT_COLORS)
fprintf(m_output, " color=\"imperfect\"");
else
fprintf(m_output, " color=\"good\"");
- if (m_drivlist.driver().flags & GAME_NO_SOUND)
+ if (m_drivlist.driver().flags & MACHINE_NO_SOUND)
fprintf(m_output, " sound=\"preliminary\"");
- else if (m_drivlist.driver().flags & GAME_IMPERFECT_SOUND)
+ else if (m_drivlist.driver().flags & MACHINE_IMPERFECT_SOUND)
fprintf(m_output, " sound=\"imperfect\"");
else
fprintf(m_output, " sound=\"good\"");
- if (m_drivlist.driver().flags & GAME_IMPERFECT_GRAPHICS)
+ if (m_drivlist.driver().flags & MACHINE_IMPERFECT_GRAPHICS)
fprintf(m_output, " graphic=\"imperfect\"");
else
fprintf(m_output, " graphic=\"good\"");
- if (m_drivlist.driver().flags & GAME_NO_COCKTAIL)
+ if (m_drivlist.driver().flags & MACHINE_NO_COCKTAIL)
fprintf(m_output, " cocktail=\"preliminary\"");
- if (m_drivlist.driver().flags & GAME_UNEMULATED_PROTECTION)
+ if (m_drivlist.driver().flags & MACHINE_UNEMULATED_PROTECTION)
fprintf(m_output, " protection=\"preliminary\"");
- if (m_drivlist.driver().flags & GAME_SUPPORTS_SAVE)
+ if (m_drivlist.driver().flags & MACHINE_SUPPORTS_SAVE)
fprintf(m_output, " savestate=\"supported\"");
else
fprintf(m_output, " savestate=\"unsupported\"");
diff --git a/src/emu/ioport.c b/src/emu/ioport.c
index b085104b9b5..1514462e579 100644
--- a/src/emu/ioport.c
+++ b/src/emu/ioport.c
@@ -2902,12 +2902,11 @@ g_profiler.start(PROFILER_INPUT);
ioport_field *mouse_field = NULL;
if (mouse_button && mouse_target != NULL)
{
- const char *tag = NULL;
+ ioport_port *port = NULL;
ioport_value mask;
float x, y;
- if (mouse_target->map_point_input(mouse_target_x, mouse_target_y, tag, mask, x, y))
+ if (mouse_target->map_point_input(mouse_target_x, mouse_target_y, port, mask, x, y))
{
- ioport_port *port = machine().root_device().ioport(tag);
if (port != NULL)
mouse_field = port->field(mask);
}
@@ -3443,9 +3442,11 @@ void ioport_manager::playback_frame(const attotime &curtime)
if (m_playback_file.is_open())
{
// first the absolute time
- attotime readtime;
- playback_read(readtime.seconds);
- playback_read(readtime.attoseconds);
+ seconds_t seconds_temp;
+ attoseconds_t attoseconds_temp;
+ playback_read(seconds_temp);
+ playback_read(attoseconds_temp);
+ attotime readtime(seconds_temp, attoseconds_temp);
if (readtime != curtime)
playback_end("Out of sync");
@@ -3582,8 +3583,8 @@ void ioport_manager::record_frame(const attotime &curtime)
if (m_record_file.is_open())
{
// first the absolute time
- record_write(curtime.seconds);
- record_write(curtime.attoseconds);
+ record_write(curtime.seconds());
+ record_write(curtime.attoseconds());
// then the current speed
record_write(UINT32(machine().video().speed_percent() * double(1 << 20)));
diff --git a/src/emu/ioport.h b/src/emu/ioport.h
index 4839fe34272..623a3083253 100644
--- a/src/emu/ioport.h
+++ b/src/emu/ioport.h
@@ -1200,7 +1200,6 @@ public:
const char *tag() const { return m_tag.c_str(); }
int modcount() const { return m_modcount; }
ioport_value active() const { return m_active; }
- ioport_value active_safe(ioport_value defval) const { return (this == NULL) ? defval : active(); }
ioport_port_live &live() const { assert(m_live != NULL); return *m_live; }
// read/write to the port
diff --git a/src/emu/luaengine.c b/src/emu/luaengine.c
index 588c8334eff..b5c9764fb77 100644
--- a/src/emu/luaengine.c
+++ b/src/emu/luaengine.c
@@ -958,6 +958,8 @@ void lua_engine::initialize()
.addFunction ("exit", &running_machine::schedule_exit)
.addFunction ("hard_reset", &running_machine::schedule_hard_reset)
.addFunction ("soft_reset", &running_machine::schedule_soft_reset)
+ .addFunction ("save", &running_machine::schedule_save)
+ .addFunction ("load", &running_machine::schedule_load)
.addFunction ("system", &running_machine::system)
.addProperty <luabridge::LuaRef, void> ("devices", &lua_engine::l_machine_get_devices)
.addProperty <luabridge::LuaRef, void> ("screens", &lua_engine::l_machine_get_screens)
diff --git a/src/emu/machine.c b/src/emu/machine.c
index c5da99961d4..3f0eb5a9c15 100644
--- a/src/emu/machine.c
+++ b/src/emu/machine.c
@@ -275,6 +275,8 @@ void running_machine::start()
if ((debug_flags & DEBUG_FLAG_ENABLED) != 0)
debugger_init(*this);
+ m_render->resolve_tags();
+
// call the game driver's init function
// this is where decryption is done and memory maps are altered
// so this location in the init order is important
@@ -293,7 +295,7 @@ void running_machine::start()
schedule_load(savegame);
// if we're in autosave mode, schedule a load
- else if (options().autosave() && (m_system.flags & GAME_SUPPORTS_SAVE) != 0)
+ else if (options().autosave() && (m_system.flags & MACHINE_SUPPORTS_SAVE) != 0)
schedule_load("auto");
// set up the cheat engine
@@ -339,7 +341,7 @@ int running_machine::run(bool firstrun)
m_current_phase = MACHINE_PHASE_INIT;
// if we have a logfile, set up the callback
- if (options().log())
+ if (options().log() && &system() != &GAME_NAME(___empty))
{
m_logfile.reset(global_alloc(emu_file(OPEN_FLAG_WRITE | OPEN_FLAG_CREATE | OPEN_FLAG_CREATE_PATHS)));
file_error filerr = m_logfile->open("error.log");
@@ -501,7 +503,7 @@ void running_machine::schedule_exit()
#endif
// if we're autosaving on exit, schedule a save as well
- if (options().autosave() && (m_system.flags & GAME_SUPPORTS_SAVE) && this->time() > attotime::zero)
+ if (options().autosave() && (m_system.flags & MACHINE_SUPPORTS_SAVE) && this->time() > attotime::zero)
schedule_save("auto");
}
@@ -848,7 +850,7 @@ void running_machine::base_datetime(system_time &systime)
void running_machine::current_datetime(system_time &systime)
{
- systime.set(m_base_time + this->time().seconds);
+ systime.set(m_base_time + this->time().seconds());
}
@@ -935,7 +937,7 @@ void running_machine::handle_saveload()
break;
case STATERR_NONE:
- if (!(m_system.flags & GAME_SUPPORTS_SAVE))
+ if (!(m_system.flags & MACHINE_SUPPORTS_SAVE))
popmessage("State successfully %s.\nWarning: Save states are not officially supported for this game.", opnamed);
else
popmessage("State successfully %s.", opnamed);
@@ -1349,10 +1351,11 @@ void system_time::full_time::set(struct tm &t)
static running_machine * jsmess_machine;
-void js_main_loop() {
+void js_main_loop()
+{
device_scheduler * scheduler;
scheduler = &(jsmess_machine->scheduler());
- attotime stoptime = scheduler->time() + attotime(0,HZ_TO_ATTOSECONDS(60));
+ attotime stoptime(scheduler->time() + attotime(0,HZ_TO_ATTOSECONDS(60)));
while (scheduler->time() < stoptime) {
scheduler->timeslice();
}
diff --git a/src/emu/machine/at29040a.c b/src/emu/machine/at29040a.c
deleted file mode 100644
index 3285b265792..00000000000
--- a/src/emu/machine/at29040a.c
+++ /dev/null
@@ -1,446 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Raphael Nabet, Michael Zapf
-/*
- Atmel at29c040a flash EEPROM
-
- 512k*8 FEEPROM, organized in pages of 256 bytes.
-
- References:
- Datasheets were found on Atmel's site (www.atmel.com)
-
- Raphael Nabet 2003
-
- September 2010: Rewritten as device
- February 2012: Rewritten as class
-*/
-
-#include "at29040a.h"
-
-#define VERBOSE 2
-#define LOG logerror
-
-#define FEEPROM_SIZE 0x80000
-#define SECTOR_SIZE 0x00100
-#define BOOT_BLOCK_SIZE 0x04000
-
-#define ADDRESS_MASK 0x7ffff
-#define SECTOR_ADDRESS_MASK 0x7ff00
-#define BYTE_ADDRESS_MASK 0x000ff
-
-#define PRG_TIMER 1
-
-#define VERSION 0
-
-/*
- Constructor.
-*/
-at29040a_device::at29040a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
-: device_t(mconfig, AT29040A, "ATMEL 29040A 512K*8 FEEPROM", tag, owner, clock, "at29040a", __FILE__),
- device_nvram_interface(mconfig, *this)
-{
-}
-
-//-------------------------------------------------
-// nvram_default - called to initialize NVRAM to
-// its default state
-//-------------------------------------------------
-
-void at29040a_device::nvram_default()
-{
- memset(m_eememory, 0, FEEPROM_SIZE+2);
-}
-
-//-------------------------------------------------
-// nvram_read - called to read NVRAM from the
-// .nv file
-//-------------------------------------------------
-
-void at29040a_device::nvram_read(emu_file &file)
-{
- file.read(m_eememory, FEEPROM_SIZE+2);
-}
-
-//-------------------------------------------------
-// nvram_write - called to write NVRAM to the
-// .nv file
-//-------------------------------------------------
-
-void at29040a_device::nvram_write(emu_file &file)
-{
- m_eememory[0] = VERSION;
- file.write(m_eememory, FEEPROM_SIZE+2);
-}
-
-/*
- programming timer callback
-*/
-void at29040a_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
-{
- switch (m_pgm)
- {
- case PGM_1:
- /* programming cycle timeout */
- if (VERBOSE>7) LOG("at29040a: Programming cycle timeout\n");
- m_pgm = PGM_0;
- break;
-
- case PGM_2:
- /* programming cycle start */
- if (VERBOSE>7) LOG("at29040a: Sector write start\n");
- m_pgm = PGM_3;
- /* max delay 10ms, typical delay 5 to 7 ms */
- m_programming_timer->adjust(attotime::from_msec(5));
- break;
-
- case PGM_3:
- /* programming cycle end */
- memcpy(m_eememory + 2 + (m_programming_last_offset & ~0xff), m_programming_buffer, SECTOR_SIZE);
- if (VERBOSE>7) LOG("at29040a: Sector write completed at location %04x + 2\n", (m_programming_last_offset & ~0xff));
- if (m_enabling_sdb)
- {
- m_sdp = true;
- }
- if (m_disabling_sdb)
- {
- m_sdp = false;
- }
- if (VERBOSE>7) LOG("at29040a: Software data protection = %d\n", m_sdp);
-
- m_pgm = PGM_0;
- m_enabling_sdb = false;
- m_disabling_sdb = false;
-
- break;
-
- default:
- if (VERBOSE>1) LOG("internal error in %s %d\n", __FILE__, __LINE__);
- break;
- }
-}
-
-void at29040a_device::sync_flags()
-{
- if (m_lower_bbl) m_eememory[1] |= 0x04;
- else m_eememory[1] &= ~0x04;
-
- if (m_higher_bbl) m_eememory[1] |= 0x02;
- else m_eememory[1] &= ~0x02;
-
- if (m_sdp) m_eememory[1] |= 0x01;
- else m_eememory[1] &= ~0x01;
-}
-
-/*
- read a byte from FEEPROM
-*/
-READ8_MEMBER( at29040a_device::read )
-{
- int reply;
-
- offset &= ADDRESS_MASK;
-
- /* reading in the midst of any command sequence cancels it (right???) */
- m_cmd = CMD_0;
- m_long_sequence = false;
- // m_higher_bbl = true; // who says that?
-
- sync_flags();
-
- /* reading before the start of a programming cycle cancels it (right???) */
- if (m_pgm == PGM_1)
- {
- // attempt to access a locked out boot block: cancel programming
- // command if necessary
- m_pgm = PGM_0;
- m_enabling_sdb = false;
- m_disabling_sdb = false;
- m_programming_timer->adjust(attotime::never);
- }
-
- if (m_id_mode)
- {
- switch (offset)
- {
- case 0x00000:
- reply = 0x1f; // Manufacturer code
- break;
-
- case 0x00001:
- reply = 0xa4; // Device code
- break;
-
- case 0x00002:
- reply = m_lower_bbl? 0xff : 0xfe;
- break;
-
- case 0x7fff2:
- reply = m_higher_bbl? 0xff : 0xfe;
- break;
-
- default:
- reply = 0;
- break;
- }
- }
- else if ((m_pgm == PGM_2) || (m_pgm == PGM_3))
- {
- if (m_pgm == PGM_2)
- { // DATA* polling starts the programming cycle (right???)
- m_pgm = PGM_3;
- /* max delay 10ms, typical delay 5 to 7 ms */
- m_programming_timer->adjust(attotime::from_msec(5));
- }
-
- reply = m_toggle_bit? 0x02 : 0x00;
- m_toggle_bit = !m_toggle_bit;
-
- if ((offset == m_programming_last_offset) && (! (m_programming_buffer[m_programming_last_offset & 0xff] & 0x01)))
- reply |= 0x01;
- }
- else
- reply = m_eememory[offset+2];
-
- if (VERBOSE>7) LOG("at29040a: %05x -> %02x\n", offset, reply);
-
- return reply;
-}
-
-/*
- Write a byte to FEEPROM
-*/
-WRITE8_MEMBER( at29040a_device::write )
-{
- offset &= ADDRESS_MASK;
- if (VERBOSE>7) LOG("at29040a: %05x <- %02x\n", offset, data);
-
- /* The special CFI commands assume a smaller address space according */
- /* to the specification ("address format A14-A0") */
- offs_t cfi_offset = offset & 0x7fff;
-
- if (m_enabling_bbl)
- {
- if (VERBOSE>7) LOG("at29040a: Enabling boot block lockout\n");
- m_enabling_bbl = false;
-
- if ((offset == 0x00000) && (data == 0x00))
- {
- if (VERBOSE>7) LOG("at29040a: Enabling lower boot block lockout\n");
- m_lower_bbl = true;
- sync_flags();
- return;
- }
- else
- {
- if ((offset == 0x7ffff) && (data == 0xff))
- {
- if (VERBOSE>7) LOG("at29040a: Enabling higher boot block lockout\n");
- m_higher_bbl = true;
- sync_flags();
- return;
- }
- else
- {
- if (VERBOSE>1) LOG("at29040a: Invalid boot block specification: %05x/%02x\n", offset, data);
- }
- }
- }
-
- switch (m_cmd)
- {
- case CMD_0:
- if ((cfi_offset == 0x5555) && (data == 0xaa))
- {
- if (VERBOSE>7) LOG("at29040a: Command sequence started\n");
- m_cmd = CMD_1;
- }
- else
- {
- m_cmd = CMD_0;
- m_long_sequence = false;
- }
- break;
-
- case CMD_1:
- if ((cfi_offset == 0x2aaa) && (data == 0x55))
- {
- m_cmd = CMD_2;
- }
- else
- {
- m_cmd = CMD_0;
- m_long_sequence = false;
- if (VERBOSE>7) LOG("at29040a: Command sequence aborted\n");
- }
- break;
-
- case CMD_2:
- if (cfi_offset == 0x5555)
- {
- if (!m_long_sequence)
- if (VERBOSE>7) LOG("at29040a: Command sequence completed\n");
-
- m_pgm = PGM_0;
- m_enabling_sdb = false;
- m_disabling_sdb = false;
- m_programming_timer->adjust(attotime::never);
-
- /* process command */
- switch (data)
- {
- case 0x10:
- /* Software chip erase */
- if (m_long_sequence)
- {
- if (m_lower_bbl || m_higher_bbl)
- {
- if (VERBOSE>1) LOG("at29040a: Chip erase sequence deactivated due to previous boot block lockout.\n");
- }
- else
- {
- if (VERBOSE>7) LOG("at29040a: Erase chip\n");
- memset(m_eememory+2, 0xff, FEEPROM_SIZE);
- }
- }
- break;
-
- case 0x20:
- /* Software data protection disable */
- if (VERBOSE>7) LOG("at29040a: Software data protection disable\n");
- // The complete sequence is aa-55-80-aa-55-20
- // so we need a 80 before, else the sequence is invalid
- if (m_long_sequence)
- {
- m_pgm = PGM_1;
- m_disabling_sdb = true;
- /* set command timeout (right???) */
- //m_programming_timer->adjust(attotime::from_usec(150), id, 0.);
- }
- break;
-
- case 0x40:
- /* Boot block lockout enable */
- // Complete sequence is aa-55-80-aa-55-40
- if (VERBOSE>7) LOG("at29040a: Boot block lockout enable\n");
- if (m_long_sequence) m_enabling_bbl = true;
- break;
-
- case 0x80:
- m_long_sequence = true;
- break;
-
- case 0x90:
- /* Software product identification entry */
- if (VERBOSE>7) LOG("at29040a: Identification mode (start)\n");
- m_id_mode = true;
- break;
-
- case 0xa0:
- /* Software data protection enable */
- if (VERBOSE>7) LOG("at29040a: Software data protection enable\n");
- m_pgm = PGM_1;
- m_enabling_sdb = true;
- /* set command timeout (right???) */
- //m_programming_timer->adjust(attotime::from_usec(150), id, 0.);
- break;
-
- case 0xf0:
- /* Software product identification exit */
- if (VERBOSE>7) LOG("at29040a: Identification mode (end)\n");
- m_id_mode = false;
- break;
- }
- m_cmd = CMD_0;
- if (data != 0x80) m_long_sequence = false;
-
- /* return, because we don't want to write the EEPROM with the command byte */
- return;
- }
- else
- {
- m_cmd = CMD_0;
- m_long_sequence = false;
- }
- }
- if ((m_pgm == PGM_2)
- && ((offset & ~0xff) != (m_programming_last_offset & ~0xff)))
- {
- /* cancel current programming cycle */
- if (VERBOSE>7) LOG("at29040a: invalid sector change (from %05x to %05x); cancel programming cycle\n",(offset & ~0xff), (m_programming_last_offset & ~0xff));
- m_pgm = PGM_0;
- m_enabling_sdb = false;
- m_disabling_sdb = false;
- m_programming_timer->adjust(attotime::never);
- }
-
- if (((m_pgm == PGM_0) && !m_sdp) // write directly
- || (m_pgm == PGM_1)) // write after unlocking
- {
- if (((offset < BOOT_BLOCK_SIZE) && m_lower_bbl)
- || ((offset >= FEEPROM_SIZE-BOOT_BLOCK_SIZE) && m_higher_bbl))
- {
- // attempt to access a locked out boot block: cancel programming
- // command if necessary
- if (VERBOSE>7) LOG("at29040a: attempt to access a locked out boot block: offset = %05x, lowblock=%d, highblock=%d\n", offset, m_lower_bbl, m_higher_bbl);
-
- m_pgm = PGM_0;
- m_enabling_sdb = false;
- m_disabling_sdb = false;
- }
- else
- { /* enter programming mode */
- if (VERBOSE>7) LOG("at29040a: enter programming mode (m_pgm=%d)\n", m_pgm);
- memset(m_programming_buffer, 0xff, SECTOR_SIZE);
- m_pgm = PGM_2;
- }
- }
- if (m_pgm == PGM_2)
- {
- /* write data to programming buffer */
- if (VERBOSE>7) LOG("at29040a: Write data to programming buffer\n");
- m_programming_buffer[offset & 0xff] = data;
- m_programming_last_offset = offset;
- m_programming_timer->adjust(attotime::from_usec(150)); // next byte must be written before the timer expires
- }
-}
-
-void at29040a_device::device_start(void)
-{
- m_programming_buffer = global_alloc_array(UINT8, SECTOR_SIZE);
- m_programming_timer = timer_alloc(PRG_TIMER);
-
- m_eememory = global_alloc_array(UINT8, FEEPROM_SIZE+2);
-}
-
-void at29040a_device::device_stop(void)
-{
- global_free_array(m_programming_buffer);
- global_free_array(m_eememory);
-}
-
-void at29040a_device::device_reset(void)
-{
- if (m_eememory[0] != VERSION)
- {
- if (VERBOSE>1) LOG("AT29040A: Warning: Version mismatch; expected %d but found %d for %s. Resetting.\n", VERSION, m_eememory[0], tag());
- m_eememory[0] = 0;
- m_eememory[1] = 0;
- }
-
- m_lower_bbl = ((m_eememory[1] & 0x04)!=0);
- m_higher_bbl = ((m_eememory[1] & 0x02)!=0);
- m_sdp = ((m_eememory[1] & 0x01)!=0);
-
- if (VERBOSE>7) LOG("at29040a (%s): LowerBBL = %d, HigherBBL = %d, SoftDataProt = %d\n", tag(), m_lower_bbl, m_higher_bbl, m_sdp);
-
- m_id_mode = false;
- m_cmd = CMD_0;
- m_enabling_bbl = false;
- m_long_sequence = false;
- m_pgm = PGM_0;
- m_enabling_sdb = false;
- m_disabling_sdb = false;
- m_toggle_bit = false;
- m_programming_last_offset = 0;
-}
-
-const device_type AT29040A = &device_creator<at29040a_device>;
diff --git a/src/emu/machine/at29040a.h b/src/emu/machine/at29040a.h
deleted file mode 100644
index 1af258fb719..00000000000
--- a/src/emu/machine/at29040a.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Raphael Nabet, Michael Zapf
-/*
- ATMEL 29040a
-
- Michael Zapf
- September 2010: Rewritten as device
- February 2012: Rewritten as class
-*/
-
-#ifndef __AT29040__
-#define __AT29040__
-
-#include "emu.h"
-
-extern const device_type AT29040A;
-
-/*
- at29c40a state
-
- Command states (CMD_0 is the initial state):
- CMD_0: default state
- CMD_1: state after writing aa to 5555
- CMD_2: state after writing 55 to 2aaa
-
- Programming states (s_programming_0 is the initial state):
- PGM_0: default state
- PGM_1: a program and enable/disable lock command has been executed, but programming has not actually started.
- PGM_2: the programming buffer is being written to
- PGM_3: the programming buffer is being burnt to flash ROM
-*/
-enum s_cmd_t
-{
- CMD_0 = 0x0,
- CMD_1 = 0x1,
- CMD_2 = 0x2
-};
-
-enum s_pgm_t
-{
- PGM_0 = 0x0,
- PGM_1 = 0x1,
- PGM_2 = 0x2,
- PGM_3 = 0x3
-};
-
-class at29040a_device : public device_t, public device_nvram_interface
-{
-public:
- at29040a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- DECLARE_READ8_MEMBER( read );
- DECLARE_WRITE8_MEMBER( write );
-
-protected:
- virtual void device_start(void);
- virtual void device_reset(void);
- virtual void device_stop(void);
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
-
- void nvram_default();
- void nvram_read(emu_file &file);
- void nvram_write(emu_file &file);
-
-private:
- void sync_flags(void);
-
- UINT8* m_eememory;
-
- bool m_lower_bbl; /* set when lower boot block lockout is enabled */
- bool m_higher_bbl; /* set when upper boot block lockout is enabled */
- bool m_sdp; /* set when in software data protect mode */
-
- bool m_id_mode; /* set when in chip id mode */
- s_cmd_t m_cmd; /* command state */
- bool m_enabling_bbl; /* set when a boot block lockout command is expecting its parameter */
- bool m_long_sequence; /* set if 0x80 command has just been executed (some command require this prefix) */
- s_pgm_t m_pgm; /* programming state */
- bool m_enabling_sdb; /* set when a sdp enable command is in progress */
- bool m_disabling_sdb; /* set when a sdp disable command is in progress */
- //bool m_dirty; /* set when the memory contents should be set */
- bool m_toggle_bit; // indicates flashing in progress (toggles for each query)
- UINT8* m_programming_buffer;
- int m_programming_last_offset;
- emu_timer* m_programming_timer;
-};
-
-#define MCFG_AT29040A_ADD(_tag ) \
- MCFG_DEVICE_ADD(_tag, AT29040A, 0)
-
-#endif
diff --git a/src/emu/machine/i8271.c b/src/emu/machine/i8271.c
deleted file mode 100644
index 08e5944f4fc..00000000000
--- a/src/emu/machine/i8271.c
+++ /dev/null
@@ -1,1510 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Kevin Thacker
-/* Intel 8271 Floppy Disc Controller */
-/* used in BBC Micro B,Acorn Atom */
-/* Jun 2000. Kev Thacker */
-
-/* TODO:
-
- - Scan commands
- - Check the commands work properly using a BBC disc copier program
- - check if 0 is specified as number of sectors, how many sectors
- is actually transfered
- - deleted data functions (error if data finds deleted data?)
-*/
-
-
-#include "emu.h"
-#include "i8271.h"
-
-/* data request */
-#define I8271_FLAGS_DATA_REQUEST 0x01
-/* data direction. If 0x02, then it is from fdc to cpu, else
-it is from cpu to fdc */
-#define I8271_FLAGS_DATA_DIRECTION 0x02
-
-enum I8271_STATE_t
-{
- I8271_STATE_EXECUTION_READ = 0,
- I8271_STATE_EXECUTION_WRITE
-};
-
-/* commands accepted */
-#define I8271_COMMAND_SPECIFY 0x035
-#define I8271_COMMAND_SEEK 0x029
-#define I8271_COMMAND_READ_DRIVE_STATUS 0x02c
-#define I8271_COMMAND_READ_SPECIAL_REGISTER 0x03d
-#define I8271_COMMAND_WRITE_SPECIAL_REGISTER 0x03a
-#define I8271_COMMAND_FORMAT 0x023
-#define I8271_COMMAND_READ_ID 0x01b
-#define I8271_COMMAND_READ_DATA_SINGLE_RECORD 0x012
-#define I8271_COMMAND_READ_DATA_AND_DELETED_DATA_SINGLE_RECORD 0x016
-#define I8271_COMMAND_WRITE_DATA_SINGLE_RECORD 0x00a
-#define I8271_COMMAND_WRITE_DELETED_DATA_SINGLE_RECORD 0x00e
-#define I8271_COMMAND_VERIFY_DATA_AND_DELETED_DATA_SINGLE_RECORD 0x01e
-#define I8271_COMMAND_READ_DATA_MULTI_RECORD 0x013
-#define I8271_COMMAND_READ_DATA_AND_DELETED_DATA_MULTI_RECORD 0x017
-#define I8271_COMMAND_WRITE_DATA_MULTI_RECORD 0x00b
-#define I8271_COMMAND_WRITE_DELETED_DATA_MULTI_RECORD 0x00f
-#define I8271_COMMAND_VERIFY_DATA_AND_DELETED_DATA_MULTI_RECORD 0x01f
-#define I8271_COMMAND_SCAN_DATA 0x000
-#define I8271_COMMAND_SCAN_DATA_AND_DELETED_DATA 0x004
-
-/*
-#define I8271_COMMAND_READ_OPERATION (1<<4)
-#define I8271_COMMAND_DELETED_DATA (1<<2)
-#define I8271_COMMAND_MULTI_RECORD (1<<0)
-*/
-
-
-
-/* first parameter for specify command */
-#define I8271_SPECIFY_INITIALIZATION 0x0d
-#define I8271_SPECIFY_LOAD_BAD_TRACKS_SURFACE_0 0x010
-#define I8271_SPECIFY_LOAD_BAD_TRACKS_SURFACE_1 0x018
-
-/* first parameter for read/write special register */
-#define I8271_SPECIAL_REGISTER_SCAN_SECTOR_NUMBER 0x06
-#define I8271_SPECIAL_REGISTER_SCAN_MSB_OF_COUNT 0x014
-#define I8271_SPECIAL_REGISTER_SCAN_LSB_OF_COUNT 0x013
-#define I8271_SPECIAL_REGISTER_SURFACE_0_CURRENT_TRACK 0x012
-#define I8271_SPECIAL_REGISTER_SURFACE_1_CURRENT_TRACK 0x01a
-#define I8271_SPECIAL_REGISTER_MODE_REGISTER 0x017
-#define I8271_SPECIAL_REGISTER_DRIVE_CONTROL_OUTPUT_PORT 0x023
-#define I8271_SPECIAL_REGISTER_DRIVE_CONTROL_INPUT_PORT 0x022
-#define I8271_SPECIAL_REGISTER_SURFACE_0_BAD_TRACK_1 0x010
-#define I8271_SPECIAL_REGISTER_SURFACE_0_BAD_TRACK_2 0x011
-#define I8271_SPECIAL_REGISTER_SURFACE_1_BAD_TRACK_1 0x018
-#define I8271_SPECIAL_REGISTER_SURFACE_1_BAD_TRACK_2 0x019
-
-
-/* status register bits */
-#define I8271_STATUS_COMMAND_BUSY 0x080
-#define I8271_STATUS_COMMAND_FULL 0x040
-#define I8271_STATUS_PARAMETER_FULL 0x020
-#define I8271_STATUS_RESULT_FULL 0x010
-#define I8271_STATUS_INT_REQUEST 0x008
-#define I8271_STATUS_NON_DMA_REQUEST 0x004
-
-#define VERBOSE 0
-
-#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
-#define FDC_LOG(x) do { if (VERBOSE) logerror("I8271: %s\n",x); } while (0)
-#define FDC_LOG_COMMAND(x) do { if (VERBOSE) logerror("I8271: COMMAND %s\n",x); } while (0)
-
-
-/* Device Interface */
-
-const device_type I8271 = &device_creator<i8271_device>;
-
-i8271_device::i8271_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, I8271, "Intel 8271", tag, owner, clock, "i8271", __FILE__),
- m_write_irq(*this),
- m_write_drq(*this),
- m_floppy_tag1(NULL),
- m_floppy_tag2(NULL),
- m_flags(0),
- m_state(0),
- m_Command(0),
- m_StatusRegister(0),
- m_CommandRegister(0),
- m_ResultRegister(0),
- m_ParameterRegister(0),
- m_ResetRegister(0),
- m_data(0),
- m_ParameterCount(0),
- m_ParameterCountWritten(0),
- m_Mode(0),
- m_drive(0),
- m_side(0),
- m_drive_control_output(0),
- m_drive_control_input(0),
- m_StepRate(0),
- m_HeadSettlingTime(0),
- m_IndexCountBeforeHeadUnload(0),
- m_HeadLoadTime(0),
- //m_ID_C(0),
- //m_ID_H(0),
- m_ID_R(0),
- m_ID_N(0),
- m_data_id(0),
- m_ExecutionPhaseTransferCount(0),
- m_ExecutionPhaseCount(0),
- m_Counter(0)
- //m_data_direction(0)
-{
- for (int i = 0; i < 8; i++ )
- {
- m_CommandParameters[i] = 0;
- }
-
- for (int i = 0; i < 2; i++ )
- {
- m_CurrentTrack[i] = 0;
- }
-
- for (int i = 0; i < 4; i++ )
- {
- m_BadTracks[i] = 0;
- }
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-
-void i8271_device::device_start()
-{
- m_write_irq.resolve_safe();
- m_write_drq.resolve_safe();
-
- m_data_timer = timer_alloc(TIMER_DATA_CALLBACK);
- m_command_complete_timer = timer_alloc(TIMER_TIMED_COMMAND_COMPLETE);
- m_drive = 0;
- m_pExecutionPhaseData = auto_alloc_array(machine(), char, 0x4000);
-
- m_floppy[0] = machine().device<legacy_floppy_image_device>(m_floppy_tag1);
- m_floppy[1] = machine().device<legacy_floppy_image_device>(m_floppy_tag2);
-
- // register for state saving
- /*save_item(NAME(m_flags));
- save_item(NAME(m_state));
- save_item(NAME(m_Command));
- save_item(NAME(m_StatusRegister));
- save_item(NAME(m_CommandRegister));
- save_item(NAME(m_ResultRegister));
- save_item(NAME(m_ParameterRegister));
- save_item(NAME(m_ResetRegister));
- save_item(NAME(m_data));
- //save_item(NAME(m_ParameterCount));
- //save_item(NAME(m_ParameterCountWritten));
- save_item(NAME(m_CommandParameters));
- //save_item(NAME(m_CurrentTrack));
- //save_item(NAME(m_BadTracks));
- //save_item(NAME(m_Mode));
- save_item(NAME(m_drive));
- save_item(NAME(m_side));
- save_item(NAME(m_drive_control_output));
- save_item(NAME(m_drive_control_input));
- //save_item(NAME(m_StepRate));
- //save_item(NAME(m_HeadSettlingTime));
- //save_item(NAME(m_IndexCountBeforeHeadUnload));
- //save_item(NAME(m_HeadLoadTime));
- save_item(NAME(m_ID_C));
- save_item(NAME(m_ID_H));
- save_item(NAME(m_ID_R));
- save_item(NAME(m_ID_N));
- save_item(NAME(m_data_id));
- save_item(NAME(m_ExecutionPhaseTransferCount));
- save_item(NAME(m_ExecutionPhaseCount));
- save_item(NAME(m_Counter));
- save_item(NAME(m_data_direction));
- save_pointer(NAME(m_pExecutionPhaseData), 0x4000);*/
-}
-
-//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-
-void i8271_device::device_reset()
-{
- m_StatusRegister = 0; //I8271_STATUS_INT_REQUEST | I8271_STATUS_NON_DMA_REQUEST;
- m_Mode = 0x0c0; /* bits 0, 1 are initialized to zero */
- m_ParameterCountWritten = 0;
- m_ParameterCount = 0;
-
- /* if timer is active remove */
- m_command_complete_timer->reset();
- m_data_timer->reset();
-
- /* clear irq */
- set_irq_state(0);
- /* clear dma */
- set_dma_drq();
-}
-
-void i8271_device::seek_to_track(int track)
-{
- if (track==0)
- {
- /* seek to track 0 */
- unsigned char StepCount = 0x0ff;
-
- /*logerror("step\n"); */
-
- /* track 0 not set, not seeked more than 255 tracks */
- while (m_floppy[m_drive]->floppy_tk00_r() && (StepCount != 0))
- {
-/* logerror("step\n"); */
- StepCount--;
- m_floppy[m_drive]->floppy_drive_seek(-1);
- }
-
- m_CurrentTrack[m_drive] = 0;
-
- /* failed to find track 0? */
- if (StepCount==0)
- {
- /* Completion Type: operator intervation probably required for recovery */
- /* Completion code: track 0 not found */
- m_ResultRegister |= (2<<3) | 2<<1;
- }
-
- /* step out - towards track 0 */
- m_drive_control_output &=~(1<<2);
- }
- else
- {
- signed int SignedTracks;
-
- /* calculate number of tracks to seek */
- SignedTracks = track - m_CurrentTrack[m_drive];
-
- /* step towards 0 */
- m_drive_control_output &= ~(1<<2);
-
- if (SignedTracks>0)
- {
- /* step away from 0 */
- m_drive_control_output |= (1<<2);
- }
-
-
- /* seek to track 0 */
- m_floppy[m_drive]->floppy_drive_seek(SignedTracks);
-
- m_CurrentTrack[m_drive] = track;
- }
-}
-
-void i8271_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
-{
- switch (id)
- {
- case TIMER_DATA_CALLBACK:
- /* ok, trigger data request now */
- data_request();
-
- /* stop it */
- m_data_timer->reset();
- break;
-
- case TIMER_TIMED_COMMAND_COMPLETE:
- command_complete(1,1);
-
- /* stop it, but don't allow it to be free'd */
- m_command_complete_timer->reset();
- break;
-
- default:
- break;
- }
-}
-
-/* setup a timed data request - data request will be triggered in a few usecs time */
-void i8271_device::timed_data_request()
-{
- int usecs;
- /* 64 for single density */
- usecs = 64;
-
- /* set timers */
- m_command_complete_timer->reset();
- m_data_timer->adjust(attotime::from_usec(usecs));
-}
-
-
-/* setup a irq to occur 128us later - in reality this would be much later, because the int would
-come after reading the two CRC bytes at least! This function is used when a irq is required at
-command completion. Required for read data and write data, where last byte could be missed! */
-void i8271_device::timed_command_complete()
-{
- int usecs;
-
- /* 64 for single density - 2 crc bytes later*/
- usecs = 64*2;
-
- /* set timers */
- m_data_timer->reset();
- m_command_complete_timer->adjust(attotime::from_usec(usecs));
-}
-
-void i8271_device::set_irq_state(int state)
-{
- m_StatusRegister &= ~I8271_STATUS_INT_REQUEST;
- if (state)
- {
- m_StatusRegister |= I8271_STATUS_INT_REQUEST;
- }
-
- m_write_irq((m_StatusRegister & I8271_STATUS_INT_REQUEST) ? ASSERT_LINE : CLEAR_LINE);
-}
-
-void i8271_device::set_dma_drq()
-{
- m_write_drq((m_flags & I8271_FLAGS_DATA_REQUEST) ? 1 : 0);
-}
-
-void i8271_device::load_bad_tracks(int surface)
-{
- m_BadTracks[(surface<<1) + 0] = m_CommandParameters[1];
- m_BadTracks[(surface<<1) + 1] = m_CommandParameters[2];
- m_CurrentTrack[surface] = m_CommandParameters[3];
-}
-
-void i8271_device::write_bad_track(int surface, int track, int data)
-{
- m_BadTracks[(surface<<1) + (track-1)] = data;
-}
-
-void i8271_device::write_current_track(int surface, int track)
-{
- m_CurrentTrack[surface] = track;
-}
-
-int i8271_device::read_current_track(int surface)
-{
- return m_CurrentTrack[surface];
-}
-
-int i8271_device::read_bad_track(int surface, int track)
-{
- return m_BadTracks[(surface<<1) + (track-1)];
-}
-
-void i8271_device::get_drive()
-{
- /* &40 = drive 0 side 0 */
- /* &80 = drive 1 side 0 */
-
-
-
- if (m_CommandRegister & (1<<6))
- {
- m_drive = 0;
- }
-
- if (m_CommandRegister & (1<<7))
- {
- m_drive = 1;
- }
-
-}
-
-void i8271_device::check_all_parameters_written()
-{
- if (m_ParameterCount == m_ParameterCountWritten)
- {
- m_StatusRegister &= ~I8271_STATUS_COMMAND_FULL;
-
- command_execute();
- }
-}
-
-
-void i8271_device::update_state()
-{
- switch (m_state)
- {
- /* fdc reading data and passing it to cpu which must read it */
- case I8271_STATE_EXECUTION_READ:
- {
- // /* if data request has been cleared, i.e. caused by a read of the register */
- // if ((m_flags & I8271_FLAGS_DATA_REQUEST)==0)
- {
- /* setup data with byte */
- m_data = m_pExecutionPhaseData[m_ExecutionPhaseCount];
-
-/* logerror("read data %02x\n", m_data); */
-
- /* update counters */
- m_ExecutionPhaseCount++;
- m_ExecutionPhaseTransferCount--;
-
- // logerror("Count: %04x\n", m_ExecutionPhaseCount);
- // logerror("Remaining: %04x\n", m_ExecutionPhaseTransferCount);
-
- /* completed? */
- if (m_ExecutionPhaseTransferCount==0)
- {
- /* yes */
-
- // logerror("sector read complete!\n");
- /* continue command */
- command_continue();
- }
- else
- {
- /* no */
-
- /* issue data request */
- timed_data_request();
- }
- }
- }
- break;
-
- /* fdc reading data and passing it to cpu which must read it */
- case I8271_STATE_EXECUTION_WRITE:
- {
- /* setup data with byte */
- m_pExecutionPhaseData[m_ExecutionPhaseCount] = m_data;
- /* update counters */
- m_ExecutionPhaseCount++;
- m_ExecutionPhaseTransferCount--;
-
- /* completed? */
- if (m_ExecutionPhaseTransferCount==0)
- {
- /* yes */
-
- /* continue command */
- command_continue();
- }
- else
- {
- /* no */
-
- /* issue data request */
- timed_data_request();
- }
- }
- break;
-
- default:
- break;
- }
-}
-
-void i8271_device::initialise_execution_phase_read(int transfer_size)
-{
- /* read */
- m_flags |= I8271_FLAGS_DATA_DIRECTION;
- m_ExecutionPhaseCount = 0;
- m_ExecutionPhaseTransferCount = transfer_size;
- m_state = I8271_STATE_EXECUTION_READ;
-}
-
-
-void i8271_device::initialise_execution_phase_write(int transfer_size)
-{
- /* write */
- m_flags &= ~I8271_FLAGS_DATA_DIRECTION;
- m_ExecutionPhaseCount = 0;
- m_ExecutionPhaseTransferCount = transfer_size;
- m_state = I8271_STATE_EXECUTION_WRITE;
-}
-
-/* for data transfers */
-void i8271_device::data_request()
-{
- m_flags |= I8271_FLAGS_DATA_REQUEST;
-
- if ((m_Mode & 0x01)!=0)
- {
- /* non-dma */
- m_StatusRegister |= I8271_STATUS_NON_DMA_REQUEST;
- /* set int */
- set_irq_state(1);
- }
- else
- {
- /* dma */
- m_StatusRegister &= ~I8271_STATUS_NON_DMA_REQUEST;
-
- set_dma_drq();
- }
-}
-
-void i8271_device::command_complete(int result, int int_rq)
-{
- /* not busy, and not a execution phase data request in non-dma mode */
- m_StatusRegister &= ~(I8271_STATUS_COMMAND_BUSY | I8271_STATUS_NON_DMA_REQUEST);
-
- if (result)
- {
- m_StatusRegister |= I8271_STATUS_RESULT_FULL;
- }
-
- if (int_rq)
- {
- /* trigger an int */
- set_irq_state(1);
- }
-
- /* correct?? */
- m_drive_control_output &=~1;
-}
-
-
-/* for data transfers */
-void i8271_device::clear_data_request()
-{
- m_flags &= ~I8271_FLAGS_DATA_REQUEST;
-
- if ((m_Mode & 0x01)!=0)
- {
- /* non-dma */
- m_StatusRegister &= ~I8271_STATUS_NON_DMA_REQUEST;
- /* set int */
- set_irq_state(0);
- }
- else
- {
- /* dma */
- set_dma_drq();
- }
-}
-
-
-void i8271_device::command_continue()
-{
- switch (m_Command)
- {
- case I8271_COMMAND_READ_DATA_MULTI_RECORD:
- case I8271_COMMAND_READ_DATA_SINGLE_RECORD:
- {
- /* completed all sectors? */
- m_Counter--;
- /* increment sector id */
- m_ID_R++;
-
- /* end command? */
- if (m_Counter==0)
- {
- timed_command_complete();
- return;
- }
-
- do_read();
- }
- break;
-
- case I8271_COMMAND_WRITE_DATA_MULTI_RECORD:
- case I8271_COMMAND_WRITE_DATA_SINGLE_RECORD:
- {
- /* put the buffer to the sector */
- m_floppy[m_drive]->floppy_drive_write_sector_data(m_side, m_data_id, m_pExecutionPhaseData, 1<<(m_ID_N+7),0);
-
- /* completed all sectors? */
- m_Counter--;
- /* increment sector id */
- m_ID_R++;
-
- /* end command? */
- if (m_Counter==0)
- {
- timed_command_complete();
- return;
- }
-
- do_write();
- }
- break;
-
- case I8271_COMMAND_READ_ID:
- {
- m_Counter--;
-
- if (m_Counter==0)
- {
- timed_command_complete();
- return;
- }
-
- do_read_id();
- }
- break;
-
- default:
- break;
- }
-}
-
-void i8271_device::do_read()
-{
- /* find the sector */
- if (find_sector())
- {
- /* get the sector into the buffer */
- m_floppy[m_drive]->floppy_drive_read_sector_data(m_side, m_data_id, m_pExecutionPhaseData, 1<<(m_ID_N+7));
-
- /* initialise for reading */
- initialise_execution_phase_read(1<<(m_ID_N+7));
-
- /* update state - gets first byte and triggers a data request */
- timed_data_request();
- return;
- }
- LOG(("error getting sector data\n"));
-
- timed_command_complete();
-}
-
-void i8271_device::do_read_id()
-{
- chrn_id id;
-
- /* get next id from disc */
- m_floppy[m_drive]->floppy_drive_get_next_id(m_side,&id);
-
- m_pExecutionPhaseData[0] = id.C;
- m_pExecutionPhaseData[1] = id.H;
- m_pExecutionPhaseData[2] = id.R;
- m_pExecutionPhaseData[3] = id.N;
-
- initialise_execution_phase_read(4);
-}
-
-
-void i8271_device::do_write()
-{
- /* find the sector */
- if (find_sector())
- {
- /* initialise for reading */
- initialise_execution_phase_write(1<<(m_ID_N+7));
-
- /* update state - gets first byte and triggers a data request */
- timed_data_request();
- return;
- }
- LOG(("error getting sector data\n"));
-
- timed_command_complete();
-}
-
-
-
-int i8271_device::find_sector()
-{
-// int track_count_attempt;
-
-// track_count_attempt
- /* find sector within one revolution of the disc - 2 index pulses */
-
- /* number of times we have seen index hole */
- int index_count = 0;
-
- /* get sector id's */
- do
- {
- chrn_id id;
-
- /* get next id from disc */
- if (m_floppy[m_drive]->floppy_drive_get_next_id(m_side,&id))
- {
- /* tested on Amstrad CPC - All bytes must match, otherwise
- a NO DATA error is reported */
- if (id.R == m_ID_R)
- {
- /* TODO: Is this correct? What about bad tracks? */
- if (id.C == m_CurrentTrack[m_drive])
- {
- m_data_id = id.data_id;
- return 1;
- }
- else
- {
- /* TODO: if track doesn't match, the real 8271 does a step */
-
-
- return 0;
- }
- }
- }
-
- /* index set? */
- if (m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_INDEX))
- {
- index_count++;
- }
-
- }
- while (index_count!=2);
-
- /* completion type: command/drive error */
- /* completion code: sector not found */
- m_ResultRegister |= (3<<3);
-
- return 0;
-}
-
-void i8271_device::command_execute()
-{
- /* clear it = good completion status */
- /* this will be changed if anything bad happens! */
- m_ResultRegister = 0;
-
- switch (m_Command)
- {
- case I8271_COMMAND_SPECIFY:
- {
- switch (m_CommandParameters[0])
- {
- case 0x0d:
- {
- LOG(("Initialization\n"));
- m_StepRate = m_CommandParameters[1];
- m_HeadSettlingTime = m_CommandParameters[2];
- m_IndexCountBeforeHeadUnload = (m_CommandParameters[3]>>4) & 0x0f;
- m_HeadLoadTime = (m_CommandParameters[3] & 0x0f);
- }
- break;
-
- case 0x010:
- {
- LOG(("Load bad Tracks Surface 0\n"));
- load_bad_tracks(0);
-
- }
- break;
-
- case 0x018:
- {
- LOG(("Load bad Tracks Surface 1\n"));
- load_bad_tracks(1);
-
- }
- break;
- }
-
- /* no result */
- command_complete(0,0);
- }
- break;
-
- case I8271_COMMAND_READ_SPECIAL_REGISTER:
- {
- /* unknown - what is read when a special register that isn't allowed is specified? */
- int data = 0x0ff;
-
- switch (m_CommandParameters[0])
- {
- case I8271_SPECIAL_REGISTER_MODE_REGISTER:
- {
- data = m_Mode;
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_0_CURRENT_TRACK:
- {
- data = read_current_track(0);
-
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_1_CURRENT_TRACK:
- {
- data = read_current_track(1);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_0_BAD_TRACK_1:
- {
- data = read_bad_track(0,1);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_0_BAD_TRACK_2:
- {
- data = read_bad_track(0,2);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_1_BAD_TRACK_1:
- {
- data = read_bad_track(1,1);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_1_BAD_TRACK_2:
- {
- data = read_bad_track(1,2);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_DRIVE_CONTROL_OUTPUT_PORT:
- {
- FDC_LOG_COMMAND("Read Drive Control Output port\n");
-
- get_drive();
-
- /* assumption: select bits reflect the select bits from the previous
- command. i.e. read drive status */
- data = (m_drive_control_output & ~0x0c0) | (m_CommandRegister & 0x0c0);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_DRIVE_CONTROL_INPUT_PORT:
- {
- /* bit 7: not used */
- /* bit 6: ready 1 */
- /* bit 5: write fault */
- /* bit 4: index */
- /* bit 3: wr prot */
- /* bit 2: rdy 0 */
- /* bit 1: track 0 */
- /* bit 0: cnt/opi */
-
- FDC_LOG_COMMAND("Read Drive Control Input port\n");
-
-
- m_drive_control_input = (1<<6) | (1<<2);
-
- /* bit 3 = 0 if write protected */
- m_drive_control_input |= m_floppy[m_drive]->floppy_wpt_r() << 3;
-
- /* bit 1 = 0 if head at track 0 */
- m_drive_control_input |= m_floppy[m_drive]->floppy_tk00_r() << 1;
-
- /* need to setup this register based on drive selected */
- data = m_drive_control_input;
- }
- break;
-
- }
-
- m_ResultRegister = data;
-
- command_complete(1,0);
- }
- break;
-
-
- case I8271_COMMAND_WRITE_SPECIAL_REGISTER:
- {
- switch (m_CommandParameters[0])
- {
- case I8271_SPECIAL_REGISTER_MODE_REGISTER:
- {
- /* TODO: Check bits 6-7 and 5-2 are valid */
- m_Mode = m_CommandParameters[1];
-
- if (m_Mode & 0x01)
- {
- LOG(("Mode: Non-DMA\n"));
- }
- else
- {
- LOG(("Mode: DMA\n"));
- }
-
- if (m_Mode & 0x02)
- {
- LOG(("Single actuator\n"));
- }
- else
- {
- LOG(("Double actuator\n"));
- }
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_0_CURRENT_TRACK:
- {
- LOG(("Surface 0 Current Track\n"));
- write_current_track(0, m_CommandParameters[1]);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_1_CURRENT_TRACK:
- {
- LOG(("Surface 1 Current Track\n"));
- write_current_track(1, m_CommandParameters[1]);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_0_BAD_TRACK_1:
- {
- LOG(("Surface 0 Bad Track 1\n"));
- write_bad_track(0, 1, m_CommandParameters[1]);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_0_BAD_TRACK_2:
- {
- LOG(("Surface 0 Bad Track 2\n"));
- write_bad_track(0, 2,m_CommandParameters[1]);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_1_BAD_TRACK_1:
- {
- LOG(("Surface 1 Bad Track 1\n"));
-
-
- write_bad_track(1, 1, m_CommandParameters[1]);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_SURFACE_1_BAD_TRACK_2:
- {
- LOG(("Surface 1 Bad Track 2\n"));
-
- write_bad_track(1, 2, m_CommandParameters[1]);
- }
- break;
-
- case I8271_SPECIAL_REGISTER_DRIVE_CONTROL_OUTPUT_PORT:
- {
-// /* get drive selected */
-// m_drive = (m_CommandParameters[1]>>6) & 0x03;
-
- FDC_LOG_COMMAND("Write Drive Control Output port\n");
-
-
- if (m_CommandParameters[1] & 0x01)
- {
- LOG(("Write Enable\n"));
- }
- if (m_CommandParameters[1] & 0x02)
- {
- LOG(("Seek/Step\n"));
- }
- if (m_CommandParameters[1] & 0x04)
- {
- LOG(("Direction\n"));
- }
- if (m_CommandParameters[1] & 0x08)
- {
- LOG(("Load Head\n"));
- }
- if (m_CommandParameters[1] & 0x010)
- {
- LOG(("Low head current\n"));
- }
- if (m_CommandParameters[1] & 0x020)
- {
- LOG(("Write Fault Reset\n"));
- }
-
- LOG(("Select %02x\n", (m_CommandParameters[1] & 0x0c0)>>6));
-
- /* get drive */
- get_drive();
-
- /* on bbc dfs 09 this is the side select output */
- m_side = (m_CommandParameters[1]>>5) & 0x01;
-
- /* load head - on mini-sized drives this turns on the disc motor,
- on standard-sized drives this loads the head and turns the motor on */
- m_floppy[m_drive]->floppy_mon_w(!BIT(m_CommandParameters[1], 3));
- m_floppy[m_drive]->floppy_drive_set_ready_state(1, 1);
-
- /* step pin changed? if so perform a step in the direction indicated */
- if (((m_drive_control_output^m_CommandParameters[1]) & (1<<1))!=0)
- {
- /* step pin changed state? */
-
- if (BIT(m_CommandParameters[1], 1))
- {
- signed int signed_tracks;
-
- if (BIT(m_CommandParameters[1], 2))
- {
- signed_tracks = 1;
- }
- else
- {
- signed_tracks = -1;
- }
-
- m_floppy[m_drive]->floppy_drive_seek(signed_tracks);
- }
- }
-
- m_drive_control_output = m_CommandParameters[1];
-
-
- }
- break;
-
- case I8271_SPECIAL_REGISTER_DRIVE_CONTROL_INPUT_PORT:
- {
- FDC_LOG_COMMAND("Write Drive Control Input port\n");
-
- // m_drive_control_input = m_CommandParameters[1];
- }
- break;
-
- }
-
- /* write doesn't supply a result */
- command_complete(0,0);
- }
- break;
-
- case I8271_COMMAND_READ_DRIVE_STATUS:
- {
- unsigned char status;
-
- get_drive();
-
- /* no write fault */
- status = 0;
-
- status |= (1<<2) | (1<<6);
-
- /* these two do not appear to be set at all! ?? */
-
- if (m_floppy[0])
- {
- if (m_floppy[0]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
- {
- status |= (1 << 2);
- }
- }
-
- if (m_floppy[1])
- {
- if (m_floppy[1]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
- {
- status |= (1 << 6);
- }
- }
-
- /* bit 3 = 1 if write protected */
- status |= !m_floppy[m_drive]->floppy_wpt_r() << 3;
-
- /* bit 1 = 1 if head at track 0 */
- status |= !m_floppy[m_drive]->floppy_tk00_r() << 1;
-
- m_ResultRegister = status;
- command_complete(1,0);
-
- }
- break;
-
- case I8271_COMMAND_SEEK:
- {
- get_drive();
-
- seek_to_track(m_CommandParameters[0]);
-
- /* check for bad seek */
- timed_command_complete();
-
- }
- break;
-
- case I8271_COMMAND_READ_DATA_MULTI_RECORD:
- {
- /* N value as stored in ID field */
- m_ID_N = (m_CommandParameters[2]>>5) & 0x07;
-
- /* starting sector id */
- m_ID_R = m_CommandParameters[1];
-
- /* number of sectors to transfer */
- m_Counter = m_CommandParameters[2] & 0x01f;
-
-
- FDC_LOG_COMMAND("READ DATA MULTI RECORD");
-
- LOG(("Sector Count: %02x\n", m_Counter));
- LOG(("Track: %02x\n",m_CommandParameters[0]));
- LOG(("Sector: %02x\n", m_CommandParameters[1]));
- LOG(("Sector Length: %02x bytes\n", 1<<(m_ID_N+7)));
-
- get_drive();
-
- if (!m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
- {
- /* Completion type: operation intervention probably required for recovery */
- /* Completion code: Drive not ready */
- m_ResultRegister = (2<<3);
- timed_command_complete();
- }
- else
- {
- seek_to_track(m_CommandParameters[0]);
-
-
- do_read();
- }
-
- }
- break;
-
- case I8271_COMMAND_READ_DATA_SINGLE_RECORD:
- {
- FDC_LOG_COMMAND("READ DATA SINGLE RECORD");
-
- m_ID_N = 0;
- m_Counter = 1;
- m_ID_R = m_CommandParameters[1];
-
- LOG(("Sector Count: %02x\n", m_Counter));
- LOG(("Track: %02x\n",m_CommandParameters[0]));
- LOG(("Sector: %02x\n", m_CommandParameters[1]));
- LOG(("Sector Length: %02x bytes\n", 1<<(m_ID_N+7)));
-
- get_drive();
-
- if (!m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
- {
- /* Completion type: operation intervention probably required for recovery */
- /* Completion code: Drive not ready */
- m_ResultRegister = (2<<3);
- timed_command_complete();
- }
- else
- {
- seek_to_track(m_CommandParameters[0]);
-
- do_read();
- }
-
- }
- break;
-
- case I8271_COMMAND_WRITE_DATA_MULTI_RECORD:
- {
- /* N value as stored in ID field */
- m_ID_N = (m_CommandParameters[2]>>5) & 0x07;
-
- /* starting sector id */
- m_ID_R = m_CommandParameters[1];
-
- /* number of sectors to transfer */
- m_Counter = m_CommandParameters[2] & 0x01f;
-
- FDC_LOG_COMMAND("READ DATA MULTI RECORD");
-
- LOG(("Sector Count: %02x\n", m_Counter));
- LOG(("Track: %02x\n",m_CommandParameters[0]));
- LOG(("Sector: %02x\n", m_CommandParameters[1]));
- LOG(("Sector Length: %02x bytes\n", 1<<(m_ID_N+7)));
-
- get_drive();
-
- m_drive_control_output &=~1;
-
- if (!m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
- {
- /* Completion type: operation intervention probably required for recovery */
- /* Completion code: Drive not ready */
- m_ResultRegister = (2<<3);
- timed_command_complete();
- }
- else
- {
- if (m_floppy[m_drive]->floppy_wpt_r() == CLEAR_LINE)
- {
- /* Completion type: operation intervention probably required for recovery */
- /* Completion code: Drive write protected */
- m_ResultRegister = (2<<3) | (1<<1);
- timed_command_complete();
- }
- else
- {
- m_drive_control_output |=1;
-
- seek_to_track(m_CommandParameters[0]);
-
- do_write();
- }
- }
- }
- break;
-
- case I8271_COMMAND_WRITE_DATA_SINGLE_RECORD:
- {
- FDC_LOG_COMMAND("WRITE DATA SINGLE RECORD");
-
- m_ID_N = 0;
- m_Counter = 1;
- m_ID_R = m_CommandParameters[1];
-
-
- LOG(("Sector Count: %02x\n", m_Counter));
- LOG(("Track: %02x\n",m_CommandParameters[0]));
- LOG(("Sector: %02x\n", m_CommandParameters[1]));
- LOG(("Sector Length: %02x bytes\n", 1<<(m_ID_N+7)));
- get_drive();
-
- m_drive_control_output &=~1;
-
- if (!m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
- {
- /* Completion type: operation intervention probably required for recovery */
- /* Completion code: Drive not ready */
- m_ResultRegister = (2<<3);
- timed_command_complete();
- }
- else
- {
- if (m_floppy[m_drive]->floppy_wpt_r() == CLEAR_LINE)
- {
- /* Completion type: operation intervention probably required for recovery */
- /* Completion code: Drive write protected */
- m_ResultRegister = (2<<3) | (1<<1);
- timed_command_complete();
- }
- else
- {
- m_drive_control_output |=1;
-
- seek_to_track(m_CommandParameters[0]);
-
- do_write();
- }
- }
-
- }
- break;
-
-
- case I8271_COMMAND_READ_ID:
- {
- FDC_LOG_COMMAND("READ ID");
-
- LOG(("Track: %02x\n",m_CommandParameters[0]));
- LOG(("ID Field Count: %02x\n", m_CommandParameters[2]));
-
- get_drive();
-
- if (!m_floppy[m_drive]->floppy_drive_get_flag_state(FLOPPY_DRIVE_READY))
- {
- /* Completion type: operation intervention probably required for recovery */
- /* Completion code: Drive not ready */
- m_ResultRegister = (2<<3);
- timed_command_complete();
- }
- else
- {
- m_Counter = m_CommandParameters[2];
-
- seek_to_track(m_CommandParameters[0]);
-
- do_read_id();
- }
- }
- break;
-
- default:
- LOG(("ERROR Unrecognised Command\n"));
- break;
- }
-}
-
-
-
-WRITE8_MEMBER(i8271_device::write)
-{
- switch (offset & 3)
- {
- case 0:
- {
- LOG(("I8271 W Command Register: %02x\n", data));
-
- m_CommandRegister = data;
- m_Command = m_CommandRegister & 0x03f;
-
- m_StatusRegister |= I8271_STATUS_COMMAND_BUSY | I8271_STATUS_COMMAND_FULL;
- m_StatusRegister &= ~I8271_STATUS_PARAMETER_FULL | I8271_STATUS_RESULT_FULL;
- m_ParameterCountWritten = 0;
-
- switch (m_Command)
- {
- case I8271_COMMAND_SPECIFY:
- {
- FDC_LOG_COMMAND("SPECIFY");
-
- m_ParameterCount = 4;
- }
- break;
-
- case I8271_COMMAND_SEEK:
- {
- FDC_LOG_COMMAND("SEEK");
-
- m_ParameterCount = 1;
- }
- break;
-
- case I8271_COMMAND_READ_DRIVE_STATUS:
- {
- FDC_LOG_COMMAND("READ DRIVE STATUS");
-
- m_ParameterCount = 0;
- }
- break;
-
- case I8271_COMMAND_READ_SPECIAL_REGISTER:
- {
- FDC_LOG_COMMAND("READ SPECIAL REGISTER");
-
- m_ParameterCount = 1;
- }
- break;
-
- case I8271_COMMAND_WRITE_SPECIAL_REGISTER:
- {
- FDC_LOG_COMMAND("WRITE SPECIAL REGISTER");
-
- m_ParameterCount = 2;
- }
- break;
-
- case I8271_COMMAND_FORMAT:
- {
- m_ParameterCount = 5;
- }
- break;
-
- case I8271_COMMAND_READ_ID:
- {
- m_ParameterCount = 3;
-
- }
- break;
-
-
- case I8271_COMMAND_READ_DATA_SINGLE_RECORD:
- case I8271_COMMAND_READ_DATA_AND_DELETED_DATA_SINGLE_RECORD:
- case I8271_COMMAND_WRITE_DATA_SINGLE_RECORD:
- case I8271_COMMAND_WRITE_DELETED_DATA_SINGLE_RECORD:
- case I8271_COMMAND_VERIFY_DATA_AND_DELETED_DATA_SINGLE_RECORD:
- {
- m_ParameterCount = 2;
- }
- break;
-
- case I8271_COMMAND_READ_DATA_MULTI_RECORD:
- case I8271_COMMAND_READ_DATA_AND_DELETED_DATA_MULTI_RECORD:
- case I8271_COMMAND_WRITE_DATA_MULTI_RECORD:
- case I8271_COMMAND_WRITE_DELETED_DATA_MULTI_RECORD:
- case I8271_COMMAND_VERIFY_DATA_AND_DELETED_DATA_MULTI_RECORD:
- {
- m_ParameterCount = 3;
- }
- break;
-
- case I8271_COMMAND_SCAN_DATA:
- case I8271_COMMAND_SCAN_DATA_AND_DELETED_DATA:
- {
- m_ParameterCount = 5;
- }
- break;
-
-
-
-
-
-
- }
-
- check_all_parameters_written();
- }
- break;
-
- case 1:
- {
- LOG(("I8271 W Parameter Register: %02x\n",data));
- m_ParameterRegister = data;
-
- if (m_ParameterCount!=0)
- {
- m_CommandParameters[m_ParameterCountWritten] = data;
- m_ParameterCountWritten++;
- }
-
- check_all_parameters_written();
- }
- break;
-
- case 2:
- {
- LOG(("I8271 W Reset Register: %02x\n", data));
- if (((data ^ m_ResetRegister) & 0x01)!=0)
- {
- if ((data & 0x01)==0)
- {
- reset();
- }
- }
-
- m_ResetRegister = data;
-
-
- }
- break;
-
- default:
- break;
- }
-}
-
-READ8_MEMBER(i8271_device::read)
-{
- switch (offset & 3)
- {
- case 0:
- {
- /* bit 1,0 are zero other bits contain status data */
- m_StatusRegister &= ~0x03;
- LOG(("I8271 R Status Register: %02x\n",m_StatusRegister));
- return m_StatusRegister;
- }
-
- case 1:
- {
- if ((m_StatusRegister & I8271_STATUS_COMMAND_BUSY)==0)
- {
- /* clear IRQ */
- set_irq_state(0);
-
- m_StatusRegister &= ~I8271_STATUS_RESULT_FULL;
- LOG(("I8271 R Result Register %02x\n",m_ResultRegister));
- return m_ResultRegister;
- }
-
- /* not useful information when command busy */
- return 0x0ff;
- }
-
-
- default:
- break;
- }
-
- return 0x0ff;
-}
-
-
-/* to be completed! */
-READ8_MEMBER(i8271_device::dack_r)
-{
- return data_r(space, offset);
-}
-
-/* to be completed! */
-WRITE8_MEMBER(i8271_device::dack_w)
-{
- data_w(space, offset, data);
-}
-
-READ8_MEMBER(i8271_device::data_r)
-{
- clear_data_request();
-
- update_state();
-
- // logerror("I8271 R data: %02x\n",m_data);
-
-
- return m_data;
-}
-
-WRITE8_MEMBER(i8271_device::data_w)
-{
- m_data = data;
-
-// logerror("I8271 W data: %02x\n",m_data);
-
- clear_data_request();
-
- update_state();
-}
diff --git a/src/emu/machine/i8271.h b/src/emu/machine/i8271.h
deleted file mode 100644
index c73fb4b680c..00000000000
--- a/src/emu/machine/i8271.h
+++ /dev/null
@@ -1,165 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Kevin Thacker
-/*****************************************************************************
- *
- * machine/i8271.h
- *
- ****************************************************************************/
-
-#ifndef I8271_H_
-#define I8271_H_
-
-#include "imagedev/flopdrv.h"
-
-#define MCFG_I8271_IRQ_CALLBACK(_write) \
- devcb = &i8271_device::set_irq_wr_callback(*device, DEVCB_##_write);
-
-#define MCFG_I8271_DRQ_CALLBACK(_write) \
- devcb = &i8271_device::set_drq_wr_callback(*device, DEVCB_##_write);
-
-#define MCFG_I8271_FLOPPIES(_tag1, _tag2) \
- i8271_device::set_floppy_tags(*device, _tag1, _tag2);
-
-/***************************************************************************
- MACROS
-***************************************************************************/
-
-class i8271_device : public device_t
-{
-public:
- i8271_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- ~i8271_device() {}
-
- template<class _Object> static devcb_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).m_write_irq.set_callback(object); }
- template<class _Object> static devcb_base &set_drq_wr_callback(device_t &device, _Object object) { return downcast<i8271_device &>(device).m_write_drq.set_callback(object); }
-
- static void set_floppy_tags(device_t &device, const char *tag1, const char *tag2)
- {
- i8271_device &dev = downcast<i8271_device &>(device);
- dev.m_floppy_tag1 = tag1;
- dev.m_floppy_tag2 = tag2;
- }
-
- DECLARE_READ8_MEMBER(read);
- DECLARE_WRITE8_MEMBER(write);
-
- DECLARE_READ8_MEMBER(dack_r);
- DECLARE_WRITE8_MEMBER(dack_w);
-
- DECLARE_READ8_MEMBER(data_r);
- DECLARE_WRITE8_MEMBER(data_w);
-
-protected:
- // device-level overrides
- virtual void device_start();
- virtual void device_reset();
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
-
-private:
- // internal state
- enum
- {
- TIMER_DATA_CALLBACK,
- TIMER_TIMED_COMMAND_COMPLETE
- };
-
- devcb_write_line m_write_irq;
- devcb_write_line m_write_drq;
-
- const char *m_floppy_tag1, *m_floppy_tag2;
- legacy_floppy_image_device *m_floppy[2];
-
- int m_flags;
- int m_state;
- unsigned char m_Command;
- unsigned char m_StatusRegister;
- unsigned char m_CommandRegister;
- unsigned char m_ResultRegister;
- unsigned char m_ParameterRegister;
- unsigned char m_ResetRegister;
- unsigned char m_data;
-
- /* number of parameters required after command is specified */
- unsigned long m_ParameterCount;
- /* number of parameters written so far */
- unsigned long m_ParameterCountWritten;
-
- unsigned char m_CommandParameters[8];
-
- /* current track for each drive */
- unsigned long m_CurrentTrack[2];
-
- /* 2 bad tracks for drive 0, followed by 2 bad tracks for drive 1 */
- unsigned long m_BadTracks[4];
-
- /* mode special register */
- unsigned long m_Mode;
-
-
- /* drive outputs */
- int m_drive;
- int m_side;
-
- /* drive control output special register */
- int m_drive_control_output;
- /* drive control input special register */
- int m_drive_control_input;
-
- unsigned long m_StepRate;
- unsigned long m_HeadSettlingTime;
- unsigned long m_IndexCountBeforeHeadUnload;
- unsigned long m_HeadLoadTime;
-
- /* id on disc to find */
- //int m_ID_C;
- //int m_ID_H;
- int m_ID_R;
- int m_ID_N;
-
- /* id of data for read/write */
- int m_data_id;
-
- int m_ExecutionPhaseTransferCount;
- char *m_pExecutionPhaseData;
- int m_ExecutionPhaseCount;
-
- /* sector counter and id counter */
- int m_Counter;
-
- /* ==0, to cpu, !=0 =from cpu */
- //int m_data_direction;
-
- emu_timer *m_data_timer;
- emu_timer *m_command_complete_timer;
-
- void seek_to_track(int track);
- void load_bad_tracks(int surface);
- void write_bad_track(int surface, int track, int data);
- void write_current_track(int surface, int track);
- int read_current_track(int surface);
- int read_bad_track(int surface, int track);
- void get_drive();
- void check_all_parameters_written();
- void update_state();
- void initialise_execution_phase_read(int transfer_size);
- void initialise_execution_phase_write(int transfer_size);
- void command_execute();
- void command_continue();
- void command_complete(int result, int int_rq);
- void timed_command_complete();
- void data_request();
- void clear_data_request();
- void timed_data_request();
- /* locate sector for read/write operation */
- int find_sector();
- /* do a read operation */
- void do_read();
- void do_write();
- void do_read_id();
- void set_irq_state(int);
- void set_dma_drq();
-};
-
-extern const device_type I8271;
-
-#endif /* I8271_H_ */
diff --git a/src/emu/mconfig.h b/src/emu/mconfig.h
index f17ea06e632..280866cf96a 100644
--- a/src/emu/mconfig.h
+++ b/src/emu/mconfig.h
@@ -62,7 +62,7 @@ public:
std::string m_perfect_cpu_quantum; // tag of CPU to use for "perfect" scheduling
INT32 m_watchdog_vblank_count; // number of VBLANKs until the watchdog kills us
attotime m_watchdog_time; // length of time until the watchdog kills us
- bool m_force_no_drc; // whether or not to force DRC off
+ bool m_force_no_drc; // whether or not to force DRC off
// other parameters
const char * m_default_layout; // default layout for this machine
diff --git a/src/emu/memory.c b/src/emu/memory.c
index 790597ed295..bf251912004 100644
--- a/src/emu/memory.c
+++ b/src/emu/memory.c
@@ -2311,6 +2311,30 @@ void address_space::install_bank_generic(offs_t addrstart, offs_t addrend, offs_
}
+void address_space::install_bank_generic(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, memory_bank *rbank, memory_bank *wbank)
+{
+ VPRINTF(("address_space::install_readwrite_bank(%s-%s mask=%s mirror=%s, read=\"%s\" / write=\"%s\")\n",
+ core_i64_hex_format(addrstart, m_addrchars), core_i64_hex_format(addrend, m_addrchars),
+ core_i64_hex_format(addrmask, m_addrchars), core_i64_hex_format(addrmirror, m_addrchars),
+ (rbank != NULL) ? rbank->tag() : "(none)", (wbank != NULL) ? wbank->tag() : "(none)"));
+
+ // map the read bank
+ if (rbank != NULL)
+ {
+ read().map_range(addrstart, addrend, addrmask, addrmirror, rbank->index());
+ }
+
+ // map the write bank
+ if (wbank != NULL)
+ {
+ write().map_range(addrstart, addrend, addrmask, addrmirror, wbank->index());
+ }
+
+ // update the memory dump
+ generate_memdump(machine());
+}
+
+
//-------------------------------------------------
// install_ram_generic - install a simple fixed
// RAM region into the given address space
diff --git a/src/emu/memory.h b/src/emu/memory.h
index ff02476fc7f..3352621263d 100644
--- a/src/emu/memory.h
+++ b/src/emu/memory.h
@@ -374,6 +374,9 @@ public:
void install_read_bank(offs_t addrstart, offs_t addrend, const char *tag) { install_read_bank(addrstart, addrend, 0, 0, tag); }
void install_write_bank(offs_t addrstart, offs_t addrend, const char *tag) { install_write_bank(addrstart, addrend, 0, 0, tag); }
void install_readwrite_bank(offs_t addrstart, offs_t addrend, const char *tag) { install_readwrite_bank(addrstart, addrend, 0, 0, tag); }
+ void install_read_bank(offs_t addrstart, offs_t addrend, memory_bank *bank) { install_read_bank(addrstart, addrend, 0, 0, bank); }
+ void install_write_bank(offs_t addrstart, offs_t addrend, memory_bank *bank) { install_write_bank(addrstart, addrend, 0, 0, bank); }
+ void install_readwrite_bank(offs_t addrstart, offs_t addrend, memory_bank *bank) { install_readwrite_bank(addrstart, addrend, 0, 0, bank); }
void *install_rom(offs_t addrstart, offs_t addrend, void *baseptr = NULL) { return install_rom(addrstart, addrend, 0, 0, baseptr); }
void *install_writeonly(offs_t addrstart, offs_t addrend, void *baseptr = NULL) { return install_writeonly(addrstart, addrend, 0, 0, baseptr); }
void *install_ram(offs_t addrstart, offs_t addrend, void *baseptr = NULL) { return install_ram(addrstart, addrend, 0, 0, baseptr); }
@@ -385,6 +388,9 @@ public:
void install_read_bank(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, const char *tag) { install_bank_generic(addrstart, addrend, addrmask, addrmirror, tag, NULL); }
void install_write_bank(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, const char *tag) { install_bank_generic(addrstart, addrend, addrmask, addrmirror, NULL, tag); }
void install_readwrite_bank(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, const char *tag) { install_bank_generic(addrstart, addrend, addrmask, addrmirror, tag, tag); }
+ void install_read_bank(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, memory_bank *bank) { install_bank_generic(addrstart, addrend, addrmask, addrmirror, bank, NULL); }
+ void install_write_bank(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, memory_bank *bank) { install_bank_generic(addrstart, addrend, addrmask, addrmirror, NULL, bank); }
+ void install_readwrite_bank(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, memory_bank *bank) { install_bank_generic(addrstart, addrend, addrmask, addrmirror, bank, bank); }
void *install_rom(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, void *baseptr = NULL) { return install_ram_generic(addrstart, addrend, addrmask, addrmirror, ROW_READ, baseptr); }
void *install_writeonly(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, void *baseptr = NULL) { return install_ram_generic(addrstart, addrend, addrmask, addrmirror, ROW_WRITE, baseptr); }
void *install_ram(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, void *baseptr = NULL) { return install_ram_generic(addrstart, addrend, addrmask, addrmirror, ROW_READWRITE, baseptr); }
@@ -446,6 +452,7 @@ private:
void unmap_generic(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read_or_write readorwrite, bool quiet);
void *install_ram_generic(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, read_or_write readorwrite, void *baseptr);
void install_bank_generic(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, const char *rtag, const char *wtag);
+ void install_bank_generic(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, memory_bank *rbank, memory_bank *wbank);
void bind_and_install_handler(const address_map_entry &entry, read_or_write readorwrite, device_t *device);
void adjust_addresses(offs_t &start, offs_t &end, offs_t &mask, offs_t &mirror);
void *find_backing_memory(offs_t addrstart, offs_t addrend);
diff --git a/src/emu/netlist/macro/nlm_opamp.c b/src/emu/netlist/macro/nlm_opamp.c
deleted file mode 100644
index 143f4d8cfec..00000000000
--- a/src/emu/netlist/macro/nlm_opamp.c
+++ /dev/null
@@ -1,47 +0,0 @@
-
-#include "nlm_opamp.h"
-
-#include "analog/nld_opamps.h"
-#include "devices/nld_system.h"
-
-/*
- * Generic layout with 4 opamps, VCC on pint 4 and GND on pin 11
- */
-
-NETLIST_START(opamp_layout_4_4_11)
- DIPPINS( /* +--------------+ */
- A.OUT, /* |1 ++ 14| */ D.OUT,
- A.MINUS, /* |2 13| */ D.MINUS,
- A.PLUS, /* |3 12| */ D.PLUS,
- A.VCC, /* |4 11| */ A.GND,
- B.PLUS, /* |5 10| */ C.PLUS,
- B.MINUS, /* |6 9| */ C.MINUS,
- B.OUT, /* |7 8| */ C.OUT
- /* +--------------+ */
- )
- NET_C(A.GND, B.GND, C.GND, D.GND)
- NET_C(A.VCC, B.VCC, C.VCC, D.VCC)
-NETLIST_END()
-
-NETLIST_START(MB3614_DIP)
- /* The opamp actually has an FPF of about 500k. This doesn't work here and causes oscillations.
- * FPF here therefore about half the Solver clock.
- */
- OPAMP(A, "MB3614")
- OPAMP(B, "MB3614")
- OPAMP(C, "MB3614")
- OPAMP(D, "MB3614")
-
- INCLUDE(opamp_layout_4_4_11)
-
-NETLIST_END()
-
-NETLIST_START(OPAMP_lib)
- LOCAL_LIB_ENTRY(opamp_layout_4_4_11)
-
- NET_MODEL(".model MB3614 OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.6M RI=1000k RO=50 DAB=0.002)")
- NET_MODEL(".model MB3614_SLOW OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=11k SLEW=0.6M RI=1000k RO=50 DAB=0.002)")
- LOCAL_LIB_ENTRY(MB3614_DIP)
-
-
-NETLIST_END()
diff --git a/src/emu/netlist/nl_time.h b/src/emu/netlist/nl_time.h
deleted file mode 100644
index 4473b67d2c8..00000000000
--- a/src/emu/netlist/nl_time.h
+++ /dev/null
@@ -1,134 +0,0 @@
-// license:GPL-2.0+
-// copyright-holders:Couriersud
-/*
- * nltime.h
- */
-
-#ifndef NLTIME_H_
-#define NLTIME_H_
-
-#include "nl_config.h"
-#include "plib/pstate.h"
-
-//============================================================
-// MACROS
-//============================================================
-
-#define NLTIME_FROM_NS(_t) netlist_time::from_nsec(_t)
-#define NLTIME_FROM_US(_t) netlist_time::from_usec(_t)
-#define NLTIME_FROM_MS(_t) netlist_time::from_msec(_t)
-#define NLTIME_IMMEDIATE netlist_time::from_nsec(1)
-
-// ----------------------------------------------------------------------------------------
-// net_list_time
-// ----------------------------------------------------------------------------------------
-
-#define RESOLUTION NETLIST_INTERNAL_RES
-
-namespace netlist
-{
- struct netlist_time
- {
- public:
-
- typedef UINT64 INTERNALTYPE;
-
- ATTR_HOT /* inline */ netlist_time() : m_time(0) {}
-
- ATTR_HOT friend /* inline */ const netlist_time operator-(const netlist_time &left, const netlist_time &right);
- ATTR_HOT friend /* inline */ const netlist_time operator+(const netlist_time &left, const netlist_time &right);
- ATTR_HOT friend /* inline */ const netlist_time operator*(const netlist_time &left, const UINT32 factor);
- ATTR_HOT friend /* inline */ UINT32 operator/(const netlist_time &left, const netlist_time &right);
- ATTR_HOT friend /* inline */ bool operator>(const netlist_time &left, const netlist_time &right);
- ATTR_HOT friend /* inline */ bool operator<(const netlist_time &left, const netlist_time &right);
- ATTR_HOT friend /* inline */ bool operator>=(const netlist_time &left, const netlist_time &right);
- ATTR_HOT friend /* inline */ bool operator<=(const netlist_time &left, const netlist_time &right);
- ATTR_HOT friend /* inline */ bool operator!=(const netlist_time &left, const netlist_time &right);
-
- ATTR_HOT /* inline */ const netlist_time &operator=(const netlist_time &right) { m_time = right.m_time; return *this; }
- ATTR_HOT /* inline */ const netlist_time &operator=(const double &right) { m_time = (INTERNALTYPE) ( right * (double) RESOLUTION); return *this; }
-
- // issues with ISO C++ standard
- //ATTR_HOT /* inline */ operator double() const { return as_double(); }
-
- ATTR_HOT /* inline */ const netlist_time &operator+=(const netlist_time &right) { m_time += right.m_time; return *this; }
-
- ATTR_HOT /* inline */ INTERNALTYPE as_raw() const { return m_time; }
- ATTR_HOT /* inline */ double as_double() const { return (double) m_time / (double) RESOLUTION; }
-
- // for save states ....
- ATTR_HOT /* inline */ INTERNALTYPE *get_internaltype_ptr() { return &m_time; }
-
- ATTR_HOT static /* inline */ const netlist_time from_nsec(const int ns) { return netlist_time((UINT64) ns * (RESOLUTION / U64(1000000000))); }
- ATTR_HOT static /* inline */ const netlist_time from_usec(const int us) { return netlist_time((UINT64) us * (RESOLUTION / U64(1000000))); }
- ATTR_HOT static /* inline */ const netlist_time from_msec(const int ms) { return netlist_time((UINT64) ms * (RESOLUTION / U64(1000))); }
- ATTR_HOT static /* inline */ const netlist_time from_hz(const UINT64 hz) { return netlist_time(RESOLUTION / hz); }
- ATTR_HOT static /* inline */ const netlist_time from_double(const double t) { return netlist_time((INTERNALTYPE) ( t * (double) RESOLUTION)); }
- ATTR_HOT static /* inline */ const netlist_time from_raw(const INTERNALTYPE raw) { return netlist_time(raw); }
-
- static const netlist_time zero;
-
- protected:
-
- ATTR_HOT /* inline */ netlist_time(const INTERNALTYPE val) : m_time(val) {}
-
- private:
- INTERNALTYPE m_time;
- };
-
- #undef RESOLUTION
-
- ATTR_HOT inline const netlist_time operator-(const netlist_time &left, const netlist_time &right)
- {
- return netlist_time::from_raw(left.m_time - right.m_time);
- }
-
- ATTR_HOT inline const netlist_time operator*(const netlist_time &left, const UINT32 factor)
- {
- return netlist_time::from_raw(left.m_time * factor);
- }
-
- ATTR_HOT inline UINT32 operator/(const netlist_time &left, const netlist_time &right)
- {
- return left.m_time / right.m_time;
- }
-
- ATTR_HOT inline const netlist_time operator+(const netlist_time &left, const netlist_time &right)
- {
- return netlist_time::from_raw(left.m_time + right.m_time);
- }
-
- ATTR_HOT inline bool operator<(const netlist_time &left, const netlist_time &right)
- {
- return (left.m_time < right.m_time);
- }
-
- ATTR_HOT inline bool operator>(const netlist_time &left, const netlist_time &right)
- {
- return (left.m_time > right.m_time);
- }
-
- ATTR_HOT inline bool operator<=(const netlist_time &left, const netlist_time &right)
- {
- return (left.m_time <= right.m_time);
- }
-
- ATTR_HOT inline bool operator>=(const netlist_time &left, const netlist_time &right)
- {
- return (left.m_time >= right.m_time);
- }
-
- ATTR_HOT inline bool operator!=(const netlist_time &left, const netlist_time &right)
- {
- return (left.m_time != right.m_time);
- }
-
-}
-
-template<> ATTR_COLD inline void pstate_manager_t::save_item(netlist::netlist_time &nlt, const void *owner, const pstring &stname)
-{
- save_state_ptr(stname, DT_INT64, owner, sizeof(netlist::netlist_time::INTERNALTYPE), 1, nlt.get_internaltype_ptr(), false);
-}
-
-
-#endif /* NLTIME_H_ */
diff --git a/src/emu/netlist/plib/pstring.c b/src/emu/netlist/plib/pstring.c
deleted file mode 100644
index e5f73ffa17b..00000000000
--- a/src/emu/netlist/plib/pstring.c
+++ /dev/null
@@ -1,360 +0,0 @@
-// license:GPL-2.0+
-// copyright-holders:Couriersud
-/*
- * nl_string.c
- *
- */
-
-#include <cstdio>
-#include <cstring>
-//FIXME:: pstring should be locale free
-#include <cctype>
-#include <cstdlib>
-#include <algorithm>
-
-#include "pstring.h"
-#include "palloc.h"
-
-// The following will work on linux, however not on Windows ....
-
-//pblockpool *pstring::m_pool = new pblockpool;
-//pstring::str_t *pstring::m_zero = new(pstring::m_pool, 0) pstring::str_t(0);
-
-pstring::str_t pstring::m_zero = str_t(0);
-
-/*
- * Uncomment the following to override defaults
- */
-
-#define IMMEDIATE_MODE (1)
-//#define DEBUG_MODE (0)
-
-#ifdef MAME_DEBUG
- #ifndef IMMEDIATE_MODE
- #define IMMEDIATE_MODE (1)
- #endif
- #ifndef DEBUG_MODE
- #define DEBUG_MODE (0)
- #endif
-#else
- #ifndef IMMEDIATE_MODE
- #define IMMEDIATE_MODE (1)
- #endif
- #ifndef DEBUG_MODE
- #define DEBUG_MODE (0)
- #endif
-#endif
-
-pstring::~pstring()
-{
- sfree(m_ptr);
-}
-
-void pstring::pcat(const char *s)
-{
- int slen = strlen(s);
- str_t *n = salloc(m_ptr->len() + slen);
- if (m_ptr->len() > 0)
- std::memcpy(n->str(), m_ptr->str(), m_ptr->len());
- if (slen > 0)
- std::memcpy(n->str() + m_ptr->len(), s, slen);
- *(n->str() + n->len()) = 0;
- sfree(m_ptr);
- m_ptr = n;
-}
-
-void pstring::pcopy(const char *from, int size)
-{
- str_t *n = salloc(size);
- if (size > 0)
- std::memcpy(n->str(), from, size);
- *(n->str() + size) = 0;
- sfree(m_ptr);
- m_ptr = n;
-}
-
-const pstring pstring::substr(unsigned int start, int count) const
-{
- pstring ret;
- unsigned alen = len();
- if (start >= alen)
- return ret;
- if (count <0 || start + count > alen)
- count = alen - start;
- ret.pcopy(cstr() + start, count);
- return ret;
-}
-
-const pstring pstring::ucase() const
-{
- pstring ret = *this;
- ret.pcopy(cstr(), len());
- for (int i=0; i<ret.len(); i++)
- ret.m_ptr->str()[i] = toupper((unsigned) ret.m_ptr->str()[i]);
- return ret;
-}
-
-int pstring::find_first_not_of(const pstring &no) const
-{
- for (int i=0; i < len(); i++)
- {
- bool f = true;
- for (int j=0; j < no.len(); j++)
- if (m_ptr->str()[i] == no.m_ptr->str()[j])
- f = false;
- if (f)
- return i;
- }
- return -1;
-}
-
-int pstring::find_last_not_of(const pstring &no) const
-{
- for (int i=len() - 1; i >= 0; i--)
- {
- bool f = true;
- for (int j=0; j < no.len(); j++)
- if (m_ptr->str()[i] == no.m_ptr->str()[j])
- f = false;
- if (f)
- return i;
- }
- return -1;
-}
-
-pstring pstring::replace(const pstring &search, const pstring &replace) const
-{
- pstring ret = "";
-
- if (search.len() == 0)
- return *this;
- int i = 0;
- while (i<len())
- {
- if (strncmp(cstr()+i,search.cstr(),search.len()) == 0)
- {
- ret += replace;
- i += search.len();
- }
- else
- {
- ret += *(cstr() + i);
- i++;
- }
- }
- return ret;
-}
-const pstring pstring::ltrim(const pstring &ws) const
-{
- int f = find_first_not_of(ws);
- if (f>=0)
- return substr(f);
- else
- return "";
-}
-
-const pstring pstring::rtrim(const pstring &ws) const
-{
- int f = find_last_not_of(ws);
- if (f>=0)
- return left(f+1);
- else
- return "";
-}
-
-void pstring::pcopy(const char *from)
-{
- pcopy(from, strlen(from));
-}
-
-//-------------------------------------------------
-// pcmpi - compare a character array to an nstring
-//-------------------------------------------------
-
-int pstring::pcmpi(const char *lhs, const char *rhs, int count) const
-{
- // loop while equal until we hit the end of strings
- int index;
- for (index = 0; index < count; index++)
- if (lhs[index] == 0 || std::tolower(lhs[index]) != std::tolower(rhs[index]))
- break;
-
- // determine the final result
- if (index < count)
- return std::tolower(lhs[index]) - std::tolower(rhs[index]);
- if (lhs[index] == 0)
- return 0;
- return 1;
-}
-
-double pstring::as_double(bool *error) const
-{
- double ret;
- char *e = NULL;
-
- if (error != NULL)
- *error = false;
- ret = strtod(cstr(), &e);
- if (*e != 0)
- if (error != NULL)
- *error = true;
- return ret;
-}
-
-long pstring::as_long(bool *error) const
-{
- long ret;
- char *e = NULL;
-
- if (error != NULL)
- *error = false;
- if (startsWith("0x"))
- ret = strtol(&(cstr()[2]), &e, 16);
- else
- ret = strtol(cstr(), &e, 10);
- if (*e != 0)
- if (error != NULL)
- *error = true;
- return ret;
-}
-
-const pstring pstring::vprintf(va_list args) const
-{
- // sprintf into the temporary buffer
- char tempbuf[4096];
- std::vsprintf(tempbuf, cstr(), args);
-
- return pstring(tempbuf);
-}
-
-// ----------------------------------------------------------------------------------------
-// static stuff ...
-// ----------------------------------------------------------------------------------------
-
-void pstring::sfree(str_t *s)
-{
- s->m_ref_count--;
- if (s->m_ref_count == 0 && s != &m_zero)
- {
- pfree_array(((char *)s));
- //_mm_free(((char *)s));
- }
-}
-
-pstring::str_t *pstring::salloc(int n)
-{
- int size = sizeof(str_t) + n + 1;
- str_t *p = (str_t *) palloc_array(char, size);
- // str_t *p = (str_t *) _mm_malloc(size, 8);
- p->init(n);
- return p;
-}
-
-void pstring::resetmem()
-{
- // Release the 0 string
-}
-
-// ----------------------------------------------------------------------------------------
-// pstring ...
-// ----------------------------------------------------------------------------------------
-
-const pstring pstring::sprintf(const char *format, ...)
-{
- va_list ap;
- va_start(ap, format);
- pstring ret = pstring(format).vprintf(ap);
- va_end(ap);
- return ret;
-}
-
-
-int pstring::find(const char *search, int start) const
-{
- int alen = len();
- const char *result = std::strstr(cstr() + std::min(start, alen), search);
- return (result != NULL) ? (result - cstr()) : -1;
-}
-
-int pstring::find(const char search, int start) const
-{
- int alen = len();
- const char *result = std::strchr(cstr() + std::min(start, alen), search);
- return (result != NULL) ? (result - cstr()) : -1;
-}
-
-bool pstring::startsWith(const char *arg) const
-{
- return (pcmp(cstr(), arg, std::strlen(arg)) == 0);
-}
-
-int pstring::pcmp(const char *left, const char *right, int count) const
-{
- if (count < 0)
- return std::strcmp(left, right);
- else
- return std::strncmp(left, right, count);
-}
-
-// ----------------------------------------------------------------------------------------
-// pstringbuffer
-// ----------------------------------------------------------------------------------------
-
-pstringbuffer::~pstringbuffer()
-{
- if (m_ptr != NULL)
- pfree_array(m_ptr);
-}
-
-void pstringbuffer::resize(const std::size_t size)
-{
- if (m_ptr == NULL)
- {
- m_size = DEFAULT_SIZE;
- while (m_size <= size)
- m_size *= 2;
- m_ptr = palloc_array(char, m_size);
- m_len = 0;
- }
- else if (m_size < size)
- {
- while (m_size < size)
- m_size *= 2;
- char *new_buf = palloc_array(char, m_size);
- std::strncpy(new_buf, m_ptr, m_len + 1);
- pfree_array(m_ptr);
- m_ptr = new_buf;
- }
-}
-
-void pstringbuffer::pcopy(const char *from)
-{
- std::size_t nl = strlen(from) + 1;
- resize(nl);
- std::strncpy(m_ptr, from, nl);
-}
-
-void pstringbuffer::pcopy(const pstring &from)
-{
- std::size_t nl = from.len() + 1;
- resize(nl);
- std::strncpy(m_ptr, from.cstr(), nl);
-}
-
-void pstringbuffer::pcat(const char *s)
-{
- std::size_t slen = std::strlen(s);
- std::size_t nl = m_len + slen + 1;
- resize(nl);
- std::strncpy(m_ptr + m_len, s, slen + 1);
- m_len += slen;
-}
-
-void pstringbuffer::pcat(const pstring &s)
-{
- std::size_t slen = s.len();
- std::size_t nl = m_len + slen + 1;
- resize(nl);
- std::strncpy(m_ptr + m_len, s.cstr(), slen + 1);
- m_len += slen;
-}
diff --git a/src/emu/netlist/plib/pstring.h b/src/emu/netlist/plib/pstring.h
deleted file mode 100644
index 88a8922e98b..00000000000
--- a/src/emu/netlist/plib/pstring.h
+++ /dev/null
@@ -1,259 +0,0 @@
-// license:GPL-2.0+
-// copyright-holders:Couriersud
-/*
- * pstring.h
- */
-
-#ifndef _PSTRING_H_
-#define _PSTRING_H_
-
-#include <cstdarg>
-#include <cstddef>
-
-#include "pconfig.h"
-
-// ----------------------------------------------------------------------------------------
-// pstring: immutable strings ...
-//
-// pstrings are just a pointer to a "pascal-style" string representation.
-// It uses reference counts and only uses new memory when a string changes.
-// ----------------------------------------------------------------------------------------
-
-struct pstring
-{
-public:
- // simple construction/destruction
- pstring()
- {
- init();
- }
- ~pstring();
-
- // construction with copy
- pstring(const char *string) {init(); if (string != NULL && *string != 0) pcopy(string); }
- pstring(const pstring &string) {init(); pcopy(string); }
-
- // assignment operators
- pstring &operator=(const char *string) { pcopy(string); return *this; }
- pstring &operator=(const pstring &string) { pcopy(string); return *this; }
-
- // C string conversion operators and helpers
- operator const char *() const { return m_ptr->str(); }
- const char *cstr() const { return m_ptr->str(); }
-
- // concatenation operators
- pstring& operator+=(const char c) { char buf[2] = { c, 0 }; pcat(buf); return *this; }
- pstring& operator+=(const pstring &string) { pcat(string.cstr()); return *this; }
- pstring& operator+=(const char *string) { pcat(string); return *this; }
- friend pstring operator+(const pstring &lhs, const pstring &rhs) { return pstring(lhs) += rhs; }
- friend pstring operator+(const pstring &lhs, const char *rhs) { return pstring(lhs) += rhs; }
- friend pstring operator+(const pstring &lhs, const char rhs) { return pstring(lhs) += rhs; }
- friend pstring operator+(const char *lhs, const pstring &rhs) { return pstring(lhs) += rhs; }
-
- // comparison operators
- bool operator==(const char *string) const { return (pcmp(string) == 0); }
- bool operator==(const pstring &string) const { return (pcmp(string.cstr()) == 0); }
- bool operator!=(const char *string) const { return (pcmp(string) != 0); }
- bool operator!=(const pstring &string) const { return (pcmp(string.cstr()) != 0); }
- bool operator<(const char *string) const { return (pcmp(string) < 0); }
- bool operator<(const pstring &string) const { return (pcmp(string.cstr()) < 0); }
- bool operator<=(const char *string) const { return (pcmp(string) <= 0); }
- bool operator<=(const pstring &string) const { return (pcmp(string.cstr()) <= 0); }
- bool operator>(const char *string) const { return (pcmp(string) > 0); }
- bool operator>(const pstring &string) const { return (pcmp(string.cstr()) > 0); }
- bool operator>=(const char *string) const { return (pcmp(string) >= 0); }
- bool operator>=(const pstring &string) const { return (pcmp(string.cstr()) >= 0); }
-
- int len() const { return m_ptr->len(); }
-
- bool equals(const pstring &string) const { return (pcmp(string.cstr(), m_ptr->str()) == 0); }
- bool iequals(const pstring &string) const { return (pcmpi(string.cstr(), m_ptr->str()) == 0); }
-
- int cmp(const pstring &string) const { return pcmp(string.cstr()); }
- int cmpi(const pstring &string) const { return pcmpi(cstr(), string.cstr()); }
-
- int find(const char *search, int start = 0) const;
-
- int find(const char search, int start = 0) const;
-
- // various
-
- bool startsWith(const pstring &arg) const { return (pcmp(cstr(), arg.cstr(), arg.len()) == 0); }
- bool startsWith(const char *arg) const;
-
- pstring replace(const pstring &search, const pstring &replace) const;
-
- // these return nstring ...
- const pstring cat(const pstring &s) const { return *this + s; }
- const pstring cat(const char *s) const { return *this + s; }
-
- const pstring substr(unsigned int start, int count = -1) const ;
-
- const pstring left(unsigned int count) const { return substr(0, count); }
- const pstring right(unsigned int count) const { return substr(len() - count, count); }
-
- int find_first_not_of(const pstring &no) const;
- int find_last_not_of(const pstring &no) const;
-
- const pstring ltrim(const pstring &ws = " \t\n\r") const;
- const pstring rtrim(const pstring &ws = " \t\n\r") const;
- const pstring trim(const pstring &ws = " \t\n\r") const { return this->ltrim(ws).rtrim(ws); }
-
- const pstring rpad(const pstring &ws, const int cnt) const
- {
- // FIXME: slow!
- pstring ret = *this;
- while (ret.len() < cnt)
- ret += ws;
- return ret.substr(0, cnt);
- }
-
- const pstring ucase() const;
-
- // conversions
-
- double as_double(bool *error = NULL) const;
-
- long as_long(bool *error = NULL) const;
-
- // printf using string as format ...
-
- const pstring vprintf(va_list args) const;
-
- // static
- static const pstring sprintf(const char *format, ...) ATTR_PRINTF(1,2);
- static void resetmem();
-
-protected:
-
- struct str_t
- {
- //str_t() : m_ref_count(1), m_len(0) { m_str[0] = 0; }
- str_t(const int alen)
- {
- init(alen);
- }
- void init(const int alen)
- {
- m_ref_count = 1;
- m_len = alen;
- m_str[0] = 0;
- }
- char *str() { return &m_str[0]; }
- int len() { return m_len; }
- int m_ref_count;
- private:
- int m_len;
- char m_str[1];
- };
-
- str_t *m_ptr;
-
-private:
- void init()
- {
- m_ptr = &m_zero;
- m_ptr->m_ref_count++;
- }
-
- int pcmp(const char *right) const
- {
- return pcmp(m_ptr->str(), right);
- }
-
- int pcmp(const char *left, const char *right, int count = -1) const;
-
- int pcmpi(const char *lhs, const char *rhs, int count = -1) const;
-
- void pcopy(const char *from, int size);
-
- void pcopy(const char *from);
-
- void pcopy(const pstring &from)
- {
- sfree(m_ptr);
- m_ptr = from.m_ptr;
- m_ptr->m_ref_count++;
- }
-
- void pcat(const char *s);
-
- static str_t *salloc(int n);
- static void sfree(str_t *s);
-
- static str_t m_zero;
-};
-
-// ----------------------------------------------------------------------------------------
-// pstringbuffer: a string buffer implementation
-//
-// string buffer are optimized to handle concatenations. This implementation is designed
-// to specifically interact with pstrings nicely.
-// ----------------------------------------------------------------------------------------
-
-struct pstringbuffer
-{
-public:
- static const int DEFAULT_SIZE = 2048;
- // simple construction/destruction
- pstringbuffer()
- {
- init();
- resize(DEFAULT_SIZE);
- }
-
- ~pstringbuffer();
-
- // construction with copy
- pstringbuffer(const char *string) {init(); if (string != NULL) pcopy(string); }
- pstringbuffer(const pstring &string) {init(); pcopy(string); }
-
- // assignment operators
- pstringbuffer &operator=(const char *string) { pcopy(string); return *this; }
- pstringbuffer &operator=(const pstring &string) { pcopy(string); return *this; }
- pstringbuffer &operator=(const pstringbuffer &string) { pcopy(string.cstr()); return *this; }
-
- // C string conversion operators and helpers
- operator const char *() const { return m_ptr; }
- const char *cstr() const { return m_ptr; }
-
- operator pstring() const { return pstring(m_ptr); }
-
- // concatenation operators
- pstringbuffer& operator+=(const char c) { char buf[2] = { c, 0 }; pcat(buf); return *this; }
- pstringbuffer& operator+=(const pstring &string) { pcat(string.cstr()); return *this; }
-
- std::size_t len() const { return m_len; }
-
- void cat(const pstring &s) { pcat(s); }
- void cat(const char *s) { pcat(s); }
-
- pstring substr(unsigned int start, int count = -1)
- {
- return pstring(m_ptr).substr(start, count);
- }
-
-private:
-
- void init()
- {
- m_ptr = NULL;
- m_size = 0;
- m_len = 0;
- }
-
- void resize(const std::size_t size);
-
- void pcopy(const char *from);
- void pcopy(const pstring &from);
- void pcat(const char *s);
- void pcat(const pstring &s);
-
- char *m_ptr;
- std::size_t m_size;
- std::size_t m_len;
-
-};
-
-
-#endif /* _PSTRING_H_ */
diff --git a/src/emu/output.c b/src/emu/output.c
index 37c4a112eda..54d2d91e85a 100644
--- a/src/emu/output.c
+++ b/src/emu/output.c
@@ -8,9 +8,7 @@
***************************************************************************/
#include "emu.h"
-#include <zlib.h>
-
-
+#include "coreutil.h"
/***************************************************************************
CONSTANTS
@@ -82,7 +80,7 @@ static void output_exit(running_machine &machine);
INLINE UINT32 get_hash(const char *string)
{
- return crc32(0, (UINT8 *)string, (UINT32)strlen(string));
+ return core_crc32(0, (UINT8 *)string, (UINT32)strlen(string));
}
diff --git a/src/emu/render.c b/src/emu/render.c
index 57fcc418e97..6ee9e871c43 100644
--- a/src/emu/render.c
+++ b/src/emu/render.c
@@ -1394,9 +1394,9 @@ render_primitive_list &render_target::get_primitives()
bool render_target::map_point_container(INT32 target_x, INT32 target_y, render_container &container, float &container_x, float &container_y)
{
- const char *input_tag;
+ ioport_port *input_port;
ioport_value input_mask;
- return map_point_internal(target_x, target_y, &container, container_x, container_y, input_tag, input_mask);
+ return map_point_internal(target_x, target_y, &container, container_x, container_y, input_port, input_mask);
}
@@ -1406,9 +1406,9 @@ bool render_target::map_point_container(INT32 target_x, INT32 target_y, render_c
// container, if possible
//-------------------------------------------------
-bool render_target::map_point_input(INT32 target_x, INT32 target_y, const char *&input_tag, ioport_value &input_mask, float &input_x, float &input_y)
+bool render_target::map_point_input(INT32 target_x, INT32 target_y, ioport_port *&input_port, ioport_value &input_mask, float &input_x, float &input_y)
{
- return map_point_internal(target_x, target_y, NULL, input_x, input_y, input_tag, input_mask);
+ return map_point_internal(target_x, target_y, NULL, input_x, input_y, input_port, input_mask);;
}
@@ -1467,6 +1467,22 @@ void render_target::debug_top(render_container &container)
//-------------------------------------------------
+// resolve_tags - resolve tag lookups
+//-------------------------------------------------
+
+void render_target::resolve_tags()
+{
+ for (layout_file *file = m_filelist.first(); file != NULL; file = file->next())
+ {
+ for (layout_view *view = file->first_view(); view != NULL; view = view->next())
+ {
+ view->resolve_tags();
+ }
+ }
+}
+
+
+//-------------------------------------------------
// update_layer_config - recompute after a layer
// config change
//-------------------------------------------------
@@ -1861,7 +1877,7 @@ void render_target::add_element_primitives(render_primitive_list &list, const ob
// mapping points
//-------------------------------------------------
-bool render_target::map_point_internal(INT32 target_x, INT32 target_y, render_container *container, float &mapped_x, float &mapped_y, const char *&mapped_input_tag, ioport_value &mapped_input_mask)
+bool render_target::map_point_internal(INT32 target_x, INT32 target_y, render_container *container, float &mapped_x, float &mapped_y, ioport_port *&mapped_input_port, ioport_value &mapped_input_mask)
{
// compute the visible width/height
INT32 viswidth, visheight;
@@ -1875,7 +1891,7 @@ bool render_target::map_point_internal(INT32 target_x, INT32 target_y, render_co
// default to point not mapped
mapped_x = -1.0;
mapped_y = -1.0;
- mapped_input_tag = NULL;
+ mapped_input_port = NULL;
mapped_input_mask = 0;
// convert target coordinates to float
@@ -1926,7 +1942,7 @@ bool render_target::map_point_internal(INT32 target_x, INT32 target_y, render_co
// point successfully mapped
mapped_x = (target_fx - item->bounds().x0) / (item->bounds().x1 - item->bounds().x0);
mapped_y = (target_fy - item->bounds().y0) / (item->bounds().y1 - item->bounds().y0);
- mapped_input_tag = item->input_tag_and_mask(mapped_input_mask);
+ mapped_input_port = item->input_tag_and_mask(mapped_input_mask);
return true;
}
}
@@ -2589,6 +2605,19 @@ void render_manager::invalidate_all(void *refptr)
//-------------------------------------------------
+// resolve_tags - resolve tag lookups
+//-------------------------------------------------
+
+void render_manager::resolve_tags()
+{
+ for (render_target *target = m_targetlist.first(); target != NULL; target = target->next())
+ {
+ target->resolve_tags();
+ }
+}
+
+
+//-------------------------------------------------
// container_alloc - allocate a new container
//-------------------------------------------------
diff --git a/src/emu/render.h b/src/emu/render.h
index 3c3a100a987..f3f434a35c6 100644
--- a/src/emu/render.h
+++ b/src/emu/render.h
@@ -436,7 +436,7 @@ private:
void get_scaled(UINT32 dwidth, UINT32 dheight, render_texinfo &texinfo, render_primitive_list &primlist);
const rgb_t *get_adjusted_palette(render_container &container);
- static const int MAX_TEXTURE_SCALES = 8;
+ static const int MAX_TEXTURE_SCALES = 16;
// a scaled_texture contains a single scaled entry for a texture
struct scaled_texture
@@ -652,7 +652,7 @@ public:
// hit testing
bool map_point_container(INT32 target_x, INT32 target_y, render_container &container, float &container_x, float &container_y);
- bool map_point_input(INT32 target_x, INT32 target_y, const char *&input_tag, ioport_value &input_mask, float &input_x, float &input_y);
+ bool map_point_input(INT32 target_x, INT32 target_y, ioport_port *&input_port, ioport_value &input_mask, float &input_x, float &input_y);
// reference tracking
void invalidate_all(void *refptr);
@@ -662,6 +662,9 @@ public:
void debug_free(render_container &container);
void debug_top(render_container &container);
+ // resolve tag lookups
+ void resolve_tags();
+
private:
// internal helpers
void update_layer_config();
@@ -669,7 +672,7 @@ private:
bool load_layout_file(const char *dirname, const char *filename);
void add_container_primitives(render_primitive_list &list, const object_transform &xform, render_container &container, int blendmode);
void add_element_primitives(render_primitive_list &list, const object_transform &xform, layout_element &element, int state, int blendmode);
- bool map_point_internal(INT32 target_x, INT32 target_y, render_container *container, float &mapped_x, float &mapped_y, const char *&mapped_input_tag, ioport_value &mapped_input_mask);
+ bool map_point_internal(INT32 target_x, INT32 target_y, render_container *container, float &mapped_x, float &mapped_y, ioport_port *&mapped_input_port, ioport_value &mapped_input_mask);
// config callbacks
void config_load(xml_data_node &targetnode);
@@ -761,6 +764,9 @@ public:
// reference tracking
void invalidate_all(void *refptr);
+ // resolve tag lookups
+ void resolve_tags();
+
private:
// containers
render_container *container_alloc(screen_device *screen = NULL);
diff --git a/src/emu/rendfont.c b/src/emu/rendfont.c
index 2011119979c..5248bc326b5 100644
--- a/src/emu/rendfont.c
+++ b/src/emu/rendfont.c
@@ -12,7 +12,7 @@
#include "rendfont.h"
#include "rendutil.h"
#include "emuopts.h"
-#include <zlib.h>
+#include "coreutil.h"
#include "osdepend.h"
#include "uismall.fh"
@@ -389,7 +389,7 @@ bool render_font::load_cached_bdf(const char *filename)
return false;
// has the chunk
- UINT32 hash = crc32(0, (const UINT8 *)&m_rawdata[0], bytes) ^ (UINT32)m_rawsize;
+ UINT32 hash = core_crc32(0, (const UINT8 *)&m_rawdata[0], bytes) ^ (UINT32)m_rawsize;
// create the cached filename, changing the 'F' to a 'C' on the extension
std::string cachedname(filename);
diff --git a/src/emu/rendlay.c b/src/emu/rendlay.c
index cb229846299..6733ecbcb92 100644
--- a/src/emu/rendlay.c
+++ b/src/emu/rendlay.c
@@ -2304,6 +2304,22 @@ void layout_view::recompute(render_layer_config layerconfig)
}
+//-----------------------------
+// resolve_tags - resolve tags
+//-----------------------------
+
+void layout_view::resolve_tags()
+{
+ for (item_layer layer = ITEM_LAYER_FIRST; layer < ITEM_LAYER_MAX; layer++)
+ {
+ for (item *curitem = first_item(layer); curitem != NULL; curitem = curitem->next())
+ {
+ curitem->resolve_tags();
+ }
+ }
+}
+
+
//**************************************************************************
// LAYOUT VIEW ITEM
@@ -2316,6 +2332,7 @@ void layout_view::recompute(render_layer_config layerconfig)
layout_view::item::item(running_machine &machine, xml_data_node &itemnode, simple_list<layout_element> &elemlist)
: m_next(NULL),
m_element(NULL),
+ m_input_port(NULL),
m_input_mask(0),
m_screen(NULL),
m_orientation(ROT0)
@@ -2365,6 +2382,11 @@ layout_view::item::item(running_machine &machine, xml_data_node &itemnode, simpl
if (m_element == NULL)
throw emu_fatalerror("Layout item of type %s require an element tag", itemnode.name);
}
+
+ if (has_input())
+ {
+ m_input_port = m_element->machine().root_device().ioport(m_input_tag.c_str());
+ }
}
@@ -2387,6 +2409,7 @@ render_container *layout_view::item::screen_container(running_machine &machine)
return (m_screen != NULL) ? &m_screen->container() : NULL;
}
+
//-------------------------------------------------
// state - fetch state based on configured source
//-------------------------------------------------
@@ -2404,18 +2427,31 @@ int layout_view::item::state() const
// if configured to an input, fetch the input value
else if (m_input_tag[0] != 0)
{
- ioport_port *port = m_element->machine().root_device().ioport(m_input_tag.c_str());
- if (port != NULL)
+ if (m_input_port != NULL)
{
- ioport_field *field = port->field(m_input_mask);
+ ioport_field *field = m_input_port->field(m_input_mask);
if (field != NULL)
- state = ((port->read() ^ field->defvalue()) & m_input_mask) ? 1 : 0;
+ state = ((m_input_port->read() ^ field->defvalue()) & m_input_mask) ? 1 : 0;
}
}
return state;
}
+//---------------------------------------------
+// resolve_tags - resolve tags, if any are set
+//---------------------------------------------
+
+
+void layout_view::item::resolve_tags()
+{
+ if (has_input())
+ {
+ m_input_port = m_element->machine().root_device().ioport(m_input_tag.c_str());
+ }
+}
+
+
//**************************************************************************
// LAYOUT FILE
diff --git a/src/emu/rendlay.h b/src/emu/rendlay.h
index 966e3d2b901..dc8660f84d1 100644
--- a/src/emu/rendlay.h
+++ b/src/emu/rendlay.h
@@ -208,17 +208,21 @@ public:
int orientation() const { return m_orientation; }
render_container *screen_container(running_machine &machine) const;
bool has_input() const { return !m_input_tag.empty(); }
- const char *input_tag_and_mask(ioport_value &mask) const { mask = m_input_mask; return m_input_tag.c_str(); }
+ ioport_port *input_tag_and_mask(ioport_value &mask) const { mask = m_input_mask; return m_input_port; };
// fetch state based on configured source
int state() const;
+ // resolve tags, if any
+ void resolve_tags();
+
private:
// internal state
item * m_next; // link to next item
layout_element * m_element; // pointer to the associated element (non-screens only)
std::string m_output_name; // name of this item
std::string m_input_tag; // input tag of this item
+ ioport_port * m_input_port; // input port of this item
ioport_value m_input_mask; // input mask of this item
screen_device * m_screen; // pointer to screen
int m_orientation; // orientation of this item
@@ -247,6 +251,9 @@ public:
// operations
void recompute(render_layer_config layerconfig);
+ // resolve tags, if any
+ void resolve_tags();
+
private:
// internal state
layout_view * m_next; // pointer to next layout in the list
diff --git a/src/emu/romload.h b/src/emu/romload.h
index 3628d72701d..ec0e3375cdd 100644
--- a/src/emu/romload.h
+++ b/src/emu/romload.h
@@ -225,6 +225,7 @@ struct rom_entry
#define ROM_LOAD32_DWORD(name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_GROUPDWORD)
#define ROM_LOAD64_WORD(name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_SKIP(6))
#define ROM_LOAD64_WORD_SWAP(name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(6))
+#define ROM_LOAD64_DWORD_SWAP(name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_GROUPDWORD | ROM_REVERSE | ROM_SKIP(4))
/* ----- ROM_RELOAD related macros ----- */
diff --git a/src/emu/save.c b/src/emu/save.c
index 3efeea2856d..c6a1e5bd6fc 100644
--- a/src/emu/save.c
+++ b/src/emu/save.c
@@ -23,8 +23,7 @@
***************************************************************************/
#include "emu.h"
-
-#include <zlib.h>
+#include "coreutil.h"
//**************************************************************************
@@ -155,7 +154,7 @@ void save_manager::save_memory(device_t *device, const char *module, const char
if (!m_reg_allowed)
{
logerror("Attempt to register save state entry after state registration is closed!\nModule %s tag %s name %s\n", module, tag, name);
- if (machine().system().flags & GAME_SUPPORTS_SAVE)
+ if (machine().system().flags & MACHINE_SUPPORTS_SAVE)
fatalerror("Attempt to register save state entry after state registration is closed!\nModule %s tag %s name %s\n", module, tag, name);
m_illegal_regs++;
return;
@@ -333,13 +332,13 @@ UINT32 save_manager::signature() const
for (state_entry *entry = m_entry_list.first(); entry != NULL; entry = entry->next())
{
// add the entry name to the CRC
- crc = crc32(crc, (UINT8 *)entry->m_name.c_str(), entry->m_name.length());
+ crc = core_crc32(crc, (UINT8 *)entry->m_name.c_str(), entry->m_name.length());
// add the type and size to the CRC
UINT32 temp[2];
temp[0] = LITTLE_ENDIANIZE_INT32(entry->m_typecount);
temp[1] = LITTLE_ENDIANIZE_INT32(entry->m_typesize);
- crc = crc32(crc, (UINT8 *)&temp[0], sizeof(temp));
+ crc = core_crc32(crc, (UINT8 *)&temp[0], sizeof(temp));
}
return crc;
}
diff --git a/src/emu/save.h b/src/emu/save.h
index 85bb660540c..41cc4a07fb4 100644
--- a/src/emu/save.h
+++ b/src/emu/save.h
@@ -250,9 +250,9 @@ template<>
inline void save_manager::save_item(device_t *device, const char *module, const char *tag, int index, attotime &value, const char *name)
{
std::string tempstr = std::string(name).append(".attoseconds");
- save_memory(device, module, tag, index, tempstr.c_str(), &value.attoseconds, sizeof(value.attoseconds));
+ save_memory(device, module, tag, index, tempstr.c_str(), &value.m_attoseconds, sizeof(value.m_attoseconds));
tempstr.assign(name).append(".seconds");
- save_memory(device, module, tag, index, tempstr.c_str(), &value.seconds, sizeof(value.seconds));
+ save_memory(device, module, tag, index, tempstr.c_str(), &value.m_seconds, sizeof(value.m_seconds));
}
diff --git a/src/emu/schedule.c b/src/emu/schedule.c
index 1695936fa26..f94b2919b5d 100644
--- a/src/emu/schedule.c
+++ b/src/emu/schedule.c
@@ -11,6 +11,13 @@
#include "emu.h"
#include "debugger.h"
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
+
//**************************************************************************
// DEBUGGING
@@ -187,7 +194,7 @@ void emu_timer::adjust(attotime start_delay, INT32 param, const attotime &period
m_enabled = true;
// clamp negative times to 0
- if (start_delay.seconds < 0)
+ if (start_delay.seconds() < 0)
start_delay = attotime::zero;
// set the start and expire times
@@ -427,7 +434,7 @@ void device_scheduler::timeslice()
while (m_basetime < m_timer_list->m_expire)
{
// by default, assume our target is the end of the next quantum
- attotime target = m_basetime + attotime(0, m_quantum_list.first()->m_actual);
+ attotime target(m_basetime + attotime(0, m_quantum_list.first()->m_actual));
// however, if the next timer is going to fire before then, override
if (m_timer_list->m_expire < target)
@@ -445,11 +452,11 @@ void device_scheduler::timeslice()
{
// only process if this CPU is executing or truly halted (not yielding)
// and if our target is later than the CPU's current time (coarse check)
- if (EXPECTED((exec->m_suspend == 0 || exec->m_eatcycles) && target.seconds >= exec->m_localtime.seconds))
+ if (EXPECTED((exec->m_suspend == 0 || exec->m_eatcycles) && target.seconds() >= exec->m_localtime.seconds()))
{
// compute how many attoseconds to execute this CPU
- attoseconds_t delta = target.attoseconds - exec->m_localtime.attoseconds;
- if (delta < 0 && target.seconds > exec->m_localtime.seconds)
+ attoseconds_t delta = target.attoseconds() - exec->m_localtime.attoseconds();
+ if (delta < 0 && target.seconds() > exec->m_localtime.seconds())
delta += ATTOSECONDS_PER_SECOND;
assert(delta == (target - exec->m_localtime).as_attoseconds());
@@ -557,7 +564,7 @@ void device_scheduler::trigger(int trigid, const attotime &after)
void device_scheduler::boost_interleave(const attotime &timeslice_time, const attotime &boost_duration)
{
// ignore timeslices > 1 second
- if (timeslice_time.seconds > 0)
+ if (timeslice_time.seconds() > 0)
return;
add_scheduling_quantum(timeslice_time, boost_duration);
}
@@ -934,10 +941,11 @@ inline void device_scheduler::execute_timers()
void device_scheduler::add_scheduling_quantum(const attotime &quantum, const attotime &duration)
{
- assert(quantum.seconds == 0);
+ assert(quantum.seconds() == 0);
attotime curtime = time();
attotime expire = curtime + duration;
+ const attoseconds_t quantum_attos = quantum.attoseconds();
// figure out where to insert ourselves, expiring any quanta that are out-of-date
quantum_slot *insert_after = NULL;
@@ -950,20 +958,20 @@ void device_scheduler::add_scheduling_quantum(const attotime &quantum, const att
m_quantum_allocator.reclaim(m_quantum_list.detach(*quant));
// if this quantum is shorter than us, we need to be inserted afterwards
- else if (quant->m_requested <= quantum.attoseconds)
+ else if (quant->m_requested <= quantum_attos)
insert_after = quant;
}
// if we found an exact match, just take the maximum expiry time
- if (insert_after != NULL && insert_after->m_requested == quantum.attoseconds)
+ if (insert_after != NULL && insert_after->m_requested == quantum_attos)
insert_after->m_expire = max(insert_after->m_expire, expire);
// otherwise, allocate a new quantum and insert it after the one we picked
else
{
quantum_slot &quant = *m_quantum_allocator.alloc();
- quant.m_requested = quantum.attoseconds;
- quant.m_actual = MAX(quantum.attoseconds, m_quantum_minimum);
+ quant.m_requested = quantum_attos;
+ quant.m_actual = MAX(quantum_attos, m_quantum_minimum);
quant.m_expire = expire;
m_quantum_list.insert_after(quant, insert_after);
}
@@ -982,3 +990,7 @@ void device_scheduler::dump_timers() const
timer->dump();
logerror("=============================================\n");
}
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/screen.c b/src/emu/screen.c
index 12bf4280dd8..c3bb09e320a 100644
--- a/src/emu/screen.c
+++ b/src/emu/screen.c
@@ -63,6 +63,8 @@ screen_device::screen_device(const machine_config &mconfig, const char *tag, dev
m_curtexture(0),
m_changed(true),
m_last_partial_scan(0),
+ m_color(rgb_t(0xff, 0xff, 0xff, 0xff)),
+ m_brightness(0xff),
m_frame_period(DEFAULT_FRAME_PERIOD.as_attoseconds()),
m_scantime(1),
m_pixeltime(1),
@@ -356,6 +358,7 @@ void screen_device::device_start()
save_item(NAME(m_visarea.max_y));
save_item(NAME(m_last_partial_scan));
save_item(NAME(m_frame_period));
+ save_item(NAME(m_brightness));
save_item(NAME(m_scantime));
save_item(NAME(m_pixeltime));
save_item(NAME(m_vblank_period));
@@ -366,6 +369,17 @@ void screen_device::device_start()
//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void screen_device::device_reset()
+{
+ // reset brightness to default
+ m_brightness = 0xff;
+}
+
+
+//-------------------------------------------------
// device_stop - clean up before the machine goes
// away
//-------------------------------------------------
@@ -884,9 +898,12 @@ bool screen_device::update_quads()
m_curbitmap = 1 - m_curbitmap;
}
+ // brightness adjusted render color
+ rgb_t color = m_color - rgb_t(0, 0xff - m_brightness, 0xff - m_brightness, 0xff - m_brightness);
+
// create an empty container with a single quad
m_container->empty();
- m_container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, rgb_t(0xff,0xff,0xff,0xff), m_texture[m_curtexture], PRIMFLAG_BLENDMODE(BLENDMODE_NONE) | PRIMFLAG_SCREENTEX(1));
+ m_container->add_quad(0.0f, 0.0f, 1.0f, 1.0f, color, m_texture[m_curtexture], PRIMFLAG_BLENDMODE(BLENDMODE_NONE) | PRIMFLAG_SCREENTEX(1));
}
}
diff --git a/src/emu/screen.h b/src/emu/screen.h
index d91328cb1e9..f3aab539cce 100644
--- a/src/emu/screen.h
+++ b/src/emu/screen.h
@@ -186,10 +186,12 @@ public:
render_container &container() const { assert(m_container != NULL); return *m_container; }
bitmap_ind8 &priority() { return m_priority; }
palette_device *palette() { return m_palette; }
+
// dynamic configuration
void configure(int width, int height, const rectangle &visarea, attoseconds_t frame_period);
void reset_origin(int beamy = 0, int beamx = 0);
void set_visible_area(int min_x, int max_x, int min_y, int max_y);
+ void set_brightness(UINT8 brightness) { m_brightness = brightness; }
// beam positioning and state
int vpos() const;
@@ -239,6 +241,7 @@ private:
// device-level overrides
virtual void device_validity_check(validity_checker &valid) const;
virtual void device_start();
+ virtual void device_reset();
virtual void device_stop();
virtual void device_post_load();
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
@@ -284,6 +287,8 @@ private:
INT32 m_last_partial_scan; // scanline of last partial update
bitmap_argb32 m_screen_overlay_bitmap; // screen overlay bitmap
UINT32 m_unique_id; // unique id for this screen_device
+ rgb_t m_color; // render color
+ UINT8 m_brightness; // global brightness
// screen timing
attoseconds_t m_frame_period; // attoseconds per frame
@@ -355,7 +360,7 @@ typedef device_type_iterator<&device_creator<screen_device>, screen_device> scre
/*!
@brief Configures screen parameters for the given screen.
-
+
@param _pixclock Pixel Clock frequency value
@param _htotal Total number of horizontal pixels, including hblank period.
@param _hbend Horizontal pixel position for HBlank end event, also first pixel where screen rectangle is visible.
@@ -369,7 +374,7 @@ typedef device_type_iterator<&device_creator<screen_device>, screen_device> scre
/*!
@brief Sets the number of Frames Per Second for this screen
-
+
@param _rate FPS number
@deprecated Please use MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
*/
@@ -378,7 +383,7 @@ typedef device_type_iterator<&device_creator<screen_device>, screen_device> scre
/*!
@brief Sets the vblank time of the given screen
-
+
@param _time Time parameter, in attotime value\
@deprecated Please use MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
*/
@@ -387,7 +392,7 @@ typedef device_type_iterator<&device_creator<screen_device>, screen_device> scre
/*!
@brief Sets total screen size, including H/V-Blanks
-
+
@param _width Screen horizontal size
@param _height Screen vertical size
@deprecated Please use MCFG_SCREEN_RAW_PARAMS instead. Gives imprecise timings.
@@ -397,7 +402,7 @@ typedef device_type_iterator<&device_creator<screen_device>, screen_device> scre
/*!
@brief Sets screen visible area
-
+
@param _minx Screen left border
@param _maxx Screen right border, must be in N-1 format
@param _miny Screen top border
diff --git a/src/emu/softlist.c b/src/emu/softlist.c
index fdfd980aeea..c2e8dba671a 100644
--- a/src/emu/softlist.c
+++ b/src/emu/softlist.c
@@ -625,14 +625,6 @@ void software_list_device::internal_validity_check(validity_checker &valid)
for (const rom_entry *data = part->romdata(); data->_name != NULL; data++)
if (data->_hashdata != NULL)
{
- // make sure it's all lowercase
- for (const char *str = data->_name; *str; str++)
- if (tolower((UINT8)*str) != *str)
- {
- osd_printf_error("%s: %s has upper case ROM name %s\n", filename(), swinfo->shortname(), data->_name);
- break;
- }
-
// make sure the hash is valid
hash_collection hashes;
if (!hashes.from_internal_string(data->_hashdata))
diff --git a/src/emu/sound.c b/src/emu/sound.c
index d2543154bf6..3a08bdf4971 100644
--- a/src/emu/sound.c
+++ b/src/emu/sound.c
@@ -118,7 +118,7 @@ sound_stream::sound_stream(device_t &device, int inputs, int outputs, int sample
attotime sound_stream::sample_time() const
{
- return attotime(m_device.machine().sound().last_update().seconds, 0) + attotime(0, m_output_sampindex * m_attoseconds_per_sample);
+ return attotime(m_device.machine().sound().last_update().seconds(), 0) + attotime(0, m_output_sampindex * m_attoseconds_per_sample);
}
@@ -264,20 +264,20 @@ void sound_stream::update()
{
// determine the number of samples since the start of this second
attotime time = m_device.machine().time();
- INT32 update_sampindex = INT32(time.attoseconds / m_attoseconds_per_sample);
+ INT32 update_sampindex = INT32(time.attoseconds() / m_attoseconds_per_sample);
// if we're ahead of the last update, then adjust upwards
attotime last_update = m_device.machine().sound().last_update();
- if (time.seconds > last_update.seconds)
+ if (time.seconds() > last_update.seconds())
{
- assert(time.seconds == last_update.seconds + 1);
+ assert(time.seconds() == last_update.seconds() + 1);
update_sampindex += m_sample_rate;
}
// if we're behind the last update, then adjust downwards
- if (time.seconds < last_update.seconds)
+ if (time.seconds() < last_update.seconds())
{
- assert(time.seconds == last_update.seconds - 1);
+ assert(time.seconds() == last_update.seconds() - 1);
update_sampindex -= m_sample_rate;
}
@@ -297,7 +297,7 @@ void sound_stream::sync_update(void *, INT32)
{
update();
attotime time = m_device.machine().time();
- attoseconds_t next_edge = m_attoseconds_per_sample - (time.attoseconds % m_attoseconds_per_sample);
+ attoseconds_t next_edge = m_attoseconds_per_sample - (time.attoseconds() % m_attoseconds_per_sample);
m_sync_timer->adjust(attotime(0, next_edge));
}
@@ -514,7 +514,7 @@ void sound_stream::recompute_sample_rate_data()
if (m_synchronous)
{
attotime time = m_device.machine().time();
- attoseconds_t next_edge = m_attoseconds_per_sample - (time.attoseconds % m_attoseconds_per_sample);
+ attoseconds_t next_edge = m_attoseconds_per_sample - (time.attoseconds() % m_attoseconds_per_sample);
m_sync_timer->adjust(attotime(0, next_edge));
}
}
@@ -584,7 +584,7 @@ void sound_stream::postload()
memset(&m_output[outputnum].m_buffer[0], 0, m_output_bufalloc * sizeof(m_output[outputnum].m_buffer[0]));
// recompute the sample indexes to make sense
- m_output_sampindex = m_device.machine().sound().last_update().attoseconds / m_attoseconds_per_sample;
+ m_output_sampindex = m_device.machine().sound().last_update().attoseconds() / m_attoseconds_per_sample;
m_output_update_sampindex = m_output_sampindex;
m_output_base_sampindex = m_output_sampindex - m_max_samples_per_update;
}
@@ -817,7 +817,7 @@ sound_manager::sound_manager(running_machine &machine)
m_attenuation(0),
m_nosound_mode(machine.osd().no_sound()),
m_wavfile(NULL),
- m_update_attoseconds(STREAMS_UPDATE_ATTOTIME.attoseconds),
+ m_update_attoseconds(STREAMS_UPDATE_ATTOTIME.attoseconds()),
m_last_update(attotime::zero)
{
// get filename for WAV file or AVI file if specified
@@ -835,7 +835,7 @@ sound_manager::sound_manager(running_machine &machine)
#endif
// open the output WAV file if specified
- if (wavfile[0] != 0)
+ if (wavfile[0] != 0 && &machine.system() != &GAME_NAME(___empty))
m_wavfile = wav_open(wavfile, machine.sample_rate(), 2);
// register callbacks
@@ -1083,9 +1083,9 @@ void sound_manager::update(void *ptr, int param)
// see if we ticked over to the next second
attotime curtime = machine().time();
bool second_tick = false;
- if (curtime.seconds != m_last_update.seconds)
+ if (curtime.seconds() != m_last_update.seconds())
{
- assert(curtime.seconds == m_last_update.seconds + 1);
+ assert(curtime.seconds() == m_last_update.seconds() + 1);
second_tick = true;
}
diff --git a/src/emu/ui/devopt.c b/src/emu/ui/devopt.c
index 0bf4e5f40c3..75b6c899576 100644
--- a/src/emu/ui/devopt.c
+++ b/src/emu/ui/devopt.c
@@ -110,7 +110,7 @@ void ui_menu_device_config::populate()
strcatprintf(str,"%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n",
visarea.width(), visarea.height(),
(machine().system().flags & ORIENTATION_SWAP_XY) ? "V" : "H",
- ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds));
+ ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds()));
}
}
}
diff --git a/src/emu/ui/info_pty.c b/src/emu/ui/info_pty.c
new file mode 100644
index 00000000000..1fe865f5668
--- /dev/null
+++ b/src/emu/ui/info_pty.c
@@ -0,0 +1,44 @@
+// license:BSD-3-Clause
+// copyright-holders:F.Ulivi
+/***************************************************************************
+
+ ui/info_pty.c
+
+ Information screen on pseudo terminals
+
+***************************************************************************/
+
+#include "emu.h"
+#include "ui/menu.h"
+#include "ui/info_pty.h"
+
+ui_menu_pty_info::ui_menu_pty_info(running_machine &machine, render_container *container) :
+ ui_menu(machine, container)
+{
+}
+
+ui_menu_pty_info::~ui_menu_pty_info()
+{
+}
+
+void ui_menu_pty_info::populate()
+{
+ item_append("Pseudo terminals", NULL, MENU_FLAG_DISABLE, NULL);
+ item_append("", NULL, MENU_FLAG_DISABLE, NULL);
+
+ pty_interface_iterator iter(machine().root_device());
+ for (device_pty_interface *pty = iter.first(); pty != NULL; pty = iter.next()) {
+ const char *port_name = pty->device().owner()->tag() + 1;
+ if (pty->is_open()) {
+ item_append(port_name , pty->slave_name() , MENU_FLAG_DISABLE , NULL);
+ } else {
+ item_append(port_name , "[failed]" , MENU_FLAG_DISABLE , NULL);
+ }
+ item_append("", NULL, MENU_FLAG_DISABLE, NULL);
+ }
+}
+
+void ui_menu_pty_info::handle()
+{
+ process(0);
+}
diff --git a/src/emu/ui/info_pty.h b/src/emu/ui/info_pty.h
new file mode 100644
index 00000000000..4352c1d48c8
--- /dev/null
+++ b/src/emu/ui/info_pty.h
@@ -0,0 +1,24 @@
+// license:BSD-3-Clause
+// copyright-holders:F.Ulivi
+/***************************************************************************
+
+ ui/info_pty.h
+
+ Information screen on pseudo terminals
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UI_INFO_PTY_H__
+#define __UI_INFO_PTY_H__
+
+class ui_menu_pty_info : public ui_menu {
+public:
+ ui_menu_pty_info(running_machine &machine, render_container *container);
+ virtual ~ui_menu_pty_info();
+ virtual void populate();
+ virtual void handle();
+};
+
+#endif // __UI_INFO_PTY_H__
diff --git a/src/emu/ui/mainmenu.c b/src/emu/ui/mainmenu.c
index 51b0ad4970a..196fdb976c2 100644
--- a/src/emu/ui/mainmenu.c
+++ b/src/emu/ui/mainmenu.c
@@ -22,6 +22,7 @@
#include "ui/barcode.h"
#include "ui/cheatopt.h"
#include "ui/info.h"
+#include "ui/info_pty.h"
#include "ui/inputmap.h"
#include "ui/mainmenu.h"
#include "ui/miscmenu.h"
@@ -90,6 +91,10 @@ void ui_menu_main::populate()
item_append("Tape Control", NULL, 0, (void *)TAPE_CONTROL);
}
+ pty_interface_iterator ptyiter(machine().root_device());
+ if (ptyiter.first() != NULL) {
+ item_append("Pseudo terminals", NULL, 0, (void *)PTY_INFO);
+ }
if (machine().ioport().has_bioses())
item_append("Bios Selection", NULL, 0, (void *)BIOS_SELECTION);
@@ -191,6 +196,10 @@ void ui_menu_main::handle()
ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_tape_control(machine(), container, NULL)));
break;
+ case PTY_INFO:
+ ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_pty_info(machine(), container)));
+ break;
+
case SLOT_DEVICES:
ui_menu::stack_push(auto_alloc_clear(machine(), ui_menu_slot_devices(machine(), container)));
break;
diff --git a/src/emu/ui/mainmenu.h b/src/emu/ui/mainmenu.h
index b21d5da1c73..b35a5927073 100644
--- a/src/emu/ui/mainmenu.h
+++ b/src/emu/ui/mainmenu.h
@@ -44,7 +44,8 @@ private:
CHEAT,
SELECT_GAME,
BIOS_SELECTION,
- BARCODE_READ
+ BARCODE_READ,
+ PTY_INFO
};
};
diff --git a/src/emu/ui/miscmenu.c b/src/emu/ui/miscmenu.c
index be611f9c6e6..88e74458c5e 100644
--- a/src/emu/ui/miscmenu.c
+++ b/src/emu/ui/miscmenu.c
@@ -205,7 +205,7 @@ void ui_menu_bookkeeping::handle()
/* if the time has rolled over another second, regenerate */
curtime = machine().time();
- if (prevtime.seconds != curtime.seconds)
+ if (prevtime.seconds() != curtime.seconds())
{
reset(UI_MENU_RESET_SELECT_FIRST);
prevtime = curtime;
@@ -236,10 +236,10 @@ void ui_menu_bookkeeping::populate()
int ctrnum;
/* show total time first */
- if (prevtime.seconds >= 60 * 60)
- strcatprintf(tempstring, "Uptime: %d:%02d:%02d\n\n", prevtime.seconds / (60 * 60), (prevtime.seconds / 60) % 60, prevtime.seconds % 60);
+ if (prevtime.seconds() >= 60 * 60)
+ strcatprintf(tempstring, "Uptime: %d:%02d:%02d\n\n", prevtime.seconds() / (60 * 60), (prevtime.seconds() / 60) % 60, prevtime.seconds() % 60);
else
- strcatprintf(tempstring,"Uptime: %d:%02d\n\n", (prevtime.seconds / 60) % 60, prevtime.seconds % 60);
+ strcatprintf(tempstring,"Uptime: %d:%02d\n\n", (prevtime.seconds() / 60) % 60, prevtime.seconds() % 60);
/* show tickets at the top */
if (tickets > 0)
diff --git a/src/emu/ui/selgame.c b/src/emu/ui/selgame.c
index a0740172ff2..aa6bf0e2263 100644
--- a/src/emu/ui/selgame.c
+++ b/src/emu/ui/selgame.c
@@ -225,7 +225,7 @@ void ui_menu_select_game::populate()
int curitem;
for (curitem = matchcount = 0; m_driverlist[curitem] != NULL && matchcount < VISIBLE_GAMES_IN_LIST; curitem++)
- if (!(m_driverlist[curitem]->flags & GAME_NO_STANDALONE))
+ if (!(m_driverlist[curitem]->flags & MACHINE_NO_STANDALONE))
matchcount++;
// if nothing there, add a single multiline item and return
@@ -332,22 +332,22 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott
strprintf(tempbuf[2],"Driver: %-.100s", core_filename_extract_base(tempbuf[3], driver->source_file).c_str());
// next line is overall driver status
- if (driver->flags & GAME_NOT_WORKING)
+ if (driver->flags & MACHINE_NOT_WORKING)
tempbuf[3].assign("Overall: NOT WORKING");
- else if (driver->flags & GAME_UNEMULATED_PROTECTION)
+ else if (driver->flags & MACHINE_UNEMULATED_PROTECTION)
tempbuf[3].assign("Overall: Unemulated Protection");
else
tempbuf[3].assign("Overall: Working");
// next line is graphics, sound status
- if (driver->flags & (GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_IMPERFECT_COLORS))
+ if (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS))
gfxstat = "Imperfect";
else
gfxstat = "OK";
- if (driver->flags & GAME_NO_SOUND)
+ if (driver->flags & MACHINE_NO_SOUND)
soundstat = "Unimplemented";
- else if (driver->flags & GAME_IMPERFECT_SOUND)
+ else if (driver->flags & MACHINE_IMPERFECT_SOUND)
soundstat = "Imperfect";
else
soundstat = "OK";
@@ -399,9 +399,9 @@ void ui_menu_select_game::custom_render(void *selectedref, float top, float bott
color = UI_BACKGROUND_COLOR;
if (driver != NULL)
color = UI_GREEN_COLOR;
- if (driver != NULL && (driver->flags & (GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_IMPERFECT_COLORS | GAME_NO_SOUND | GAME_IMPERFECT_SOUND)) != 0)
+ if (driver != NULL && (driver->flags & (MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS | MACHINE_NO_SOUND | MACHINE_IMPERFECT_SOUND)) != 0)
color = UI_YELLOW_COLOR;
- if (driver != NULL && (driver->flags & (GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION)) != 0)
+ if (driver != NULL && (driver->flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION)) != 0)
color = UI_RED_COLOR;
machine().ui().draw_outlined_box(container, x1, y1, x2, y2, color);
diff --git a/src/emu/ui/sliders.c b/src/emu/ui/sliders.c
index 58c67a77bf4..21037c72827 100644
--- a/src/emu/ui/sliders.c
+++ b/src/emu/ui/sliders.c
@@ -141,9 +141,6 @@ void ui_menu_sliders::populate()
if (curval < curslider->maxval)
flags |= MENU_FLAG_RIGHT_ARROW;
item_append(curslider->description, tempstring.c_str(), flags, (void *)curslider);
-
- if (menuless_mode)
- break;
}
/* add OSD sliders */
diff --git a/src/emu/ui/ui.c b/src/emu/ui/ui.c
index a0458ed7a7d..95b51f24bab 100644
--- a/src/emu/ui/ui.c
+++ b/src/emu/ui/ui.c
@@ -243,7 +243,7 @@ ui_manager::ui_manager(running_machine &machine)
// more initialization
set_handler(handler_messagebox, 0);
m_non_char_keys_down = auto_alloc_array(machine, UINT8, (ARRAY_LENGTH(non_char_keys) + 7) / 8);
- m_mouse_show = machine.system().flags & GAME_CLICKABLE_ARTWORK ? true : false;
+ m_mouse_show = machine.system().flags & MACHINE_CLICKABLE_ARTWORK ? true : false;
// request a callback upon exiting
machine.add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(FUNC(ui_manager::exit), this));
@@ -343,9 +343,9 @@ void ui_manager::display_startup_screens(bool first_time, bool show_disclaimer)
if (show_warnings && warnings_string(messagebox_text).length() > 0)
{
set_handler(handler_messagebox_ok, 0);
- if (machine().system().flags & (GAME_WRONG_COLORS | GAME_IMPERFECT_COLORS | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_KEYBOARD | GAME_NO_SOUND))
+ if (machine().system().flags & (MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_COLORS | MACHINE_REQUIRES_ARTWORK | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_KEYBOARD | MACHINE_NO_SOUND))
messagebox_backcolor = UI_YELLOW_COLOR;
- if (machine().system().flags & (GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_MECHANICAL))
+ if (machine().system().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL))
messagebox_backcolor = UI_RED_COLOR;
}
break;
@@ -1008,17 +1008,17 @@ std::string &ui_manager::disclaimer_string(std::string &str)
std::string &ui_manager::warnings_string(std::string &str)
{
-#define WARNING_FLAGS ( GAME_NOT_WORKING | \
- GAME_UNEMULATED_PROTECTION | \
- GAME_MECHANICAL | \
- GAME_WRONG_COLORS | \
- GAME_IMPERFECT_COLORS | \
- GAME_REQUIRES_ARTWORK | \
- GAME_NO_SOUND | \
- GAME_IMPERFECT_SOUND | \
- GAME_IMPERFECT_GRAPHICS | \
- GAME_IMPERFECT_KEYBOARD | \
- GAME_NO_COCKTAIL)
+#define WARNING_FLAGS ( MACHINE_NOT_WORKING | \
+ MACHINE_UNEMULATED_PROTECTION | \
+ MACHINE_MECHANICAL | \
+ MACHINE_WRONG_COLORS | \
+ MACHINE_IMPERFECT_COLORS | \
+ MACHINE_REQUIRES_ARTWORK | \
+ MACHINE_NO_SOUND | \
+ MACHINE_IMPERFECT_SOUND | \
+ MACHINE_IMPERFECT_GRAPHICS | \
+ MACHINE_IMPERFECT_KEYBOARD | \
+ MACHINE_NO_COCKTAIL)
str.clear();
@@ -1057,41 +1057,41 @@ std::string &ui_manager::warnings_string(std::string &str)
str.append(" have not been correctly dumped.\n");
}
// add one line per warning flag
- if (machine().system().flags & GAME_IMPERFECT_KEYBOARD)
+ if (machine().system().flags & MACHINE_IMPERFECT_KEYBOARD)
str.append("The keyboard emulation may not be 100% accurate.\n");
- if (machine().system().flags & GAME_IMPERFECT_COLORS)
+ if (machine().system().flags & MACHINE_IMPERFECT_COLORS)
str.append("The colors aren't 100% accurate.\n");
- if (machine().system().flags & GAME_WRONG_COLORS)
+ if (machine().system().flags & MACHINE_WRONG_COLORS)
str.append("The colors are completely wrong.\n");
- if (machine().system().flags & GAME_IMPERFECT_GRAPHICS)
+ if (machine().system().flags & MACHINE_IMPERFECT_GRAPHICS)
str.append("The video emulation isn't 100% accurate.\n");
- if (machine().system().flags & GAME_IMPERFECT_SOUND)
+ if (machine().system().flags & MACHINE_IMPERFECT_SOUND)
str.append("The sound emulation isn't 100% accurate.\n");
- if (machine().system().flags & GAME_NO_SOUND) {
+ if (machine().system().flags & MACHINE_NO_SOUND) {
str.append("The ");
str.append(emulator_info::get_gamenoun());
str.append(" lacks sound.\n");
}
- if (machine().system().flags & GAME_NO_COCKTAIL)
+ if (machine().system().flags & MACHINE_NO_COCKTAIL)
str.append("Screen flipping in cocktail mode is not supported.\n");
// check if external artwork is present before displaying this warning?
- if (machine().system().flags & GAME_REQUIRES_ARTWORK) {
+ if (machine().system().flags & MACHINE_REQUIRES_ARTWORK) {
str.append("The ");
str.append(emulator_info::get_gamenoun());
str.append(" requires external artwork files\n");
}
// if there's a NOT WORKING, UNEMULATED PROTECTION or GAME MECHANICAL warning, make it stronger
- if (machine().system().flags & (GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_MECHANICAL))
+ if (machine().system().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL))
{
// add the strings for these warnings
- if (machine().system().flags & GAME_UNEMULATED_PROTECTION) {
+ if (machine().system().flags & MACHINE_UNEMULATED_PROTECTION) {
str.append("The ");
str.append(emulator_info::get_gamenoun());
str.append(" has protection which isn't fully emulated.\n");
}
- if (machine().system().flags & GAME_NOT_WORKING) {
+ if (machine().system().flags & MACHINE_NOT_WORKING) {
str.append("\nTHIS ");
str.append(emulator_info::get_capgamenoun());
str.append(" DOESN'T WORK. The emulation for this ");
@@ -1099,7 +1099,7 @@ std::string &ui_manager::warnings_string(std::string &str)
str.append(" is not yet complete. "
"There is nothing you can do to fix this problem except wait for the developers to improve the emulation.\n");
}
- if (machine().system().flags & GAME_MECHANICAL) {
+ if (machine().system().flags & MACHINE_MECHANICAL) {
str.append("\nCertain elements of this ");
str.append(emulator_info::get_gamenoun());
str.append(" cannot be emulated as it requires actual physical interaction or consists of mechanical devices. "
@@ -1119,7 +1119,7 @@ std::string &ui_manager::warnings_string(std::string &str)
bool foundworking = false;
while (drivlist.next())
if (drivlist.current() == maindrv || drivlist.clone() == maindrv)
- if ((drivlist.driver().flags & (GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_MECHANICAL)) == 0)
+ if ((drivlist.driver().flags & (MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_MECHANICAL)) == 0)
{
// this one works, add a header and display the name of the clone
if (!foundworking) {
@@ -1251,7 +1251,7 @@ std::string &ui_manager::game_info_astring(std::string &str)
strcatprintf(str, "%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n",
visarea.width(), visarea.height(),
(machine().system().flags & ORIENTATION_SWAP_XY) ? "V" : "H",
- ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds));
+ ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds()));
}
}
}
@@ -2084,8 +2084,8 @@ static INT32 slider_refresh(running_machine &machine, void *arg, std::string *st
screen->configure(width, height, visarea, HZ_TO_ATTOSECONDS(defrefresh + (double)newval * 0.001));
}
if (str != NULL)
- strprintf(*str,"%.3ffps", ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds));
- refresh = ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds);
+ strprintf(*str,"%.3ffps", ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds()));
+ refresh = ATTOSECONDS_TO_HZ(machine.first_screen()->frame_period().attoseconds());
return floor((refresh - defrefresh) * 1000.0 + 0.5);
}
diff --git a/src/emu/validity.c b/src/emu/validity.c
index dc6ee7cf9c6..7dbe67206a0 100644
--- a/src/emu/validity.c
+++ b/src/emu/validity.c
@@ -548,7 +548,7 @@ void validity_checker::validate_driver()
// determine if we are a clone
bool is_clone = (strcmp(m_current_driver->parent, "0") != 0);
int clone_of = m_drivlist.clone(*m_current_driver);
- if (clone_of != -1 && (m_drivlist.driver(clone_of).flags & GAME_IS_BIOS_ROOT))
+ if (clone_of != -1 && (m_drivlist.driver(clone_of).flags & MACHINE_IS_BIOS_ROOT))
is_clone = false;
// if we have at least 100 drivers, validate the clone
@@ -601,8 +601,8 @@ void validity_checker::validate_driver()
// make sure sound-less drivers are flagged
sound_interface_iterator iter(m_current_config->root_device());
- if ((m_current_driver->flags & GAME_IS_BIOS_ROOT) == 0 && iter.first() == NULL && (m_current_driver->flags & GAME_NO_SOUND) == 0 && (m_current_driver->flags & GAME_NO_SOUND_HW) == 0)
- osd_printf_error("Driver is missing GAME_NO_SOUND flag\n");
+ if ((m_current_driver->flags & MACHINE_IS_BIOS_ROOT) == 0 && iter.first() == NULL && (m_current_driver->flags & MACHINE_NO_SOUND) == 0 && (m_current_driver->flags & MACHINE_NO_SOUND_HW) == 0)
+ osd_printf_error("Driver is missing MACHINE_NO_SOUND flag\n");
}
diff --git a/src/emu/video.c b/src/emu/video.c
index 2ce890d44e4..adc2888b2e7 100644
--- a/src/emu/video.c
+++ b/src/emu/video.c
@@ -239,7 +239,7 @@ void video_manager::frame_update(bool debug)
update_frameskip();
// update speed computations
- if (!debug)
+ if (!debug && !skipped_it)
recompute_speed(current_time);
// call the end-of-frame callback
@@ -381,7 +381,7 @@ void video_manager::begin_recording(const char *name, movie_format format)
// build up information about this new movie
avi_movie_info info;
info.video_format = 0;
- info.video_timescale = 1000 * ((machine().first_screen() != NULL) ? ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds) : screen_device::DEFAULT_FRAME_RATE);
+ info.video_timescale = 1000 * ((machine().first_screen() != NULL) ? ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds()) : screen_device::DEFAULT_FRAME_RATE);
info.video_sampletime = 1000;
info.video_numsamples = 0;
info.video_width = m_snap_bitmap.width();
@@ -447,7 +447,7 @@ void video_manager::begin_recording(const char *name, movie_format format)
if (filerr == FILERR_NONE)
{
// start the capture
- int rate = (machine().first_screen() != NULL) ? ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds) : screen_device::DEFAULT_FRAME_RATE;
+ int rate = (machine().first_screen() != NULL) ? ATTOSECONDS_TO_HZ(machine().first_screen()->frame_period().attoseconds()) : screen_device::DEFAULT_FRAME_RATE;
png_error pngerr = mng_capture_start(*m_mng_file, m_snap_bitmap, rate);
if (pngerr != PNGERR_NONE)
{
@@ -540,12 +540,12 @@ void video_manager::exit()
m_snap_bitmap.reset();
// print a final result if we have at least 2 seconds' worth of data
- if (m_overall_emutime.seconds >= 1)
+ if (m_overall_emutime.seconds() >= 1)
{
osd_ticks_t tps = osd_ticks_per_second();
double final_real_time = (double)m_overall_real_seconds + (double)m_overall_real_ticks / (double)tps;
double final_emu_time = m_overall_emutime.as_double();
- osd_printf_info("Average speed: %.2f%% (%d seconds)\n", 100 * final_emu_time / final_real_time, (m_overall_emutime + attotime(0, ATTOSECONDS_PER_SECOND / 2)).seconds);
+ osd_printf_info("Average speed: %.2f%% (%d seconds)\n", 100 * final_emu_time / final_real_time, (m_overall_emutime + attotime(0, ATTOSECONDS_PER_SECOND / 2)).seconds());
}
}
@@ -962,7 +962,7 @@ void video_manager::update_refresh_speed()
screen_device_iterator iter(machine().root_device());
for (screen_device *screen = iter.first(); screen != NULL; screen = iter.next())
{
- attoseconds_t period = screen->frame_period().attoseconds;
+ attoseconds_t period = screen->frame_period().attoseconds();
if (period != 0)
min_frame_period = MIN(min_frame_period, period);
}
@@ -1034,7 +1034,7 @@ void video_manager::recompute_speed(const attotime &emutime)
}
// if we're past the "time-to-execute" requested, signal an exit
- if (m_seconds_to_run != 0 && emutime.seconds >= m_seconds_to_run)
+ if (m_seconds_to_run != 0 && emutime.seconds() >= m_seconds_to_run)
{
#ifdef MAME_DEBUG
if (g_tagmap_counter_enabled)
diff --git a/src/emu/video/rgbsse.h b/src/emu/video/rgbsse.h
index 5f88e0e717c..0b729fabe46 100644
--- a/src/emu/video/rgbsse.h
+++ b/src/emu/video/rgbsse.h
@@ -349,7 +349,7 @@ public:
add(other);
clamp_to_uint8();
}
-
+
inline void scale_add_and_clamp(const rgbaint_t& scale, const rgbaint_t& other)
{
mul(scale);
@@ -362,7 +362,7 @@ public:
{
rgbaint_t color2(other);
color2.mul(scale2);
-
+
mul(scale);
add(color2);
sra_imm(8);
@@ -512,10 +512,10 @@ protected:
struct _statics
{
__m128 dummy_for_alignment;
- INT16 alpha_mask[8];
- INT16 red_mask[8];
- INT16 green_mask[8];
- INT16 blue_mask[8];
+ UINT16 alpha_mask[8];
+ UINT16 red_mask[8];
+ UINT16 green_mask[8];
+ UINT16 blue_mask[8];
INT16 scale_table[256][8];
};
diff --git a/src/lib/formats/atom_dsk.c b/src/lib/formats/atom_dsk.c
new file mode 100644
index 00000000000..6a5294a8fb8
--- /dev/null
+++ b/src/lib/formats/atom_dsk.c
@@ -0,0 +1,31 @@
+#include "atom_dsk.h"
+
+atom_format::atom_format() : wd177x_format(formats)
+{
+}
+
+const char *atom_format::name() const
+{
+ return "atom";
+}
+
+const char *atom_format::description() const
+{
+ return "Acorn Atom disk image";
+}
+
+const char *atom_format::extensions() const
+{
+ return "40t,dsk";
+}
+
+const atom_format::format atom_format::formats[] =
+{
+ { // 100k 40 track single sided single density
+ floppy_image::FF_525, floppy_image::SSSD, floppy_image::FM,
+ 4000, 10, 40, 1, 256, {}, 0, {}, 40, 10, 10
+ },
+ {}
+};
+
+const floppy_format_type FLOPPY_ATOM_FORMAT = &floppy_image_format_creator<atom_format>;
diff --git a/src/lib/formats/atom_dsk.h b/src/lib/formats/atom_dsk.h
new file mode 100644
index 00000000000..45187205f1c
--- /dev/null
+++ b/src/lib/formats/atom_dsk.h
@@ -0,0 +1,22 @@
+#ifndef __ATOM_DSK_H__
+#define __ATOM_DSK_H__
+
+#include "flopimg.h"
+#include "wd177x_dsk.h"
+
+class atom_format : public wd177x_format
+{
+public:
+ atom_format();
+
+ virtual const char *name() const;
+ virtual const char *description() const;
+ virtual const char *extensions() const;
+
+private:
+ static const format formats[];
+};
+
+extern const floppy_format_type FLOPPY_ATOM_FORMAT;
+
+#endif
diff --git a/src/lib/formats/bbc_dsk.c b/src/lib/formats/bbc_dsk.c
index dfa78c0bfd8..53c3652ab51 100644
--- a/src/lib/formats/bbc_dsk.c
+++ b/src/lib/formats/bbc_dsk.c
@@ -1,53 +1,229 @@
// license:GPL-2.0+
-// copyright-holders:Dirk Best
+// copyright-holders:Dirk Best, Nigel Barnes
/***************************************************************************
BBC Micro
- Disk image format
+ Disk image formats
***************************************************************************/
#include "bbc_dsk.h"
+#include "basicdsk.h"
-bbc_format::bbc_format() : wd177x_format(formats)
+LEGACY_FLOPPY_OPTIONS_START(bbc)
+ LEGACY_FLOPPY_OPTION( ssd40, "bbc,img,ssd", "BBC 40t SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
+ HEADS([1])
+ TRACKS([40])
+ SECTORS([10])
+ SECTOR_LENGTH([256])
+ FIRST_SECTOR_ID([0]))
+ LEGACY_FLOPPY_OPTION( ssd80, "bbc,img,ssd", "BBC 80t SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
+ HEADS([1])
+ TRACKS([80])
+ SECTORS([10])
+ SECTOR_LENGTH([256])
+ FIRST_SECTOR_ID([0]))
+ LEGACY_FLOPPY_OPTION( dsd40, "dsd", "BBC 40t DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
+ HEADS([2])
+ TRACKS([40])
+ SECTORS([10])
+ SECTOR_LENGTH([256])
+ INTERLEAVE([0])
+ FIRST_SECTOR_ID([0]))
+ LEGACY_FLOPPY_OPTION( dsd80, "dsd", "BBC 80t DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
+ HEADS([2])
+ TRACKS([80])
+ SECTORS([10])
+ SECTOR_LENGTH([256])
+ INTERLEAVE([0])
+ FIRST_SECTOR_ID([0]))
+LEGACY_FLOPPY_OPTIONS_END
+
+/********************************************************************/
+
+bbc_ssd_525_format::bbc_ssd_525_format() : wd177x_format(formats)
+{
+}
+
+const char *bbc_ssd_525_format::name() const
{
+ return "ssd";
}
-const char *bbc_format::name() const
+const char *bbc_ssd_525_format::description() const
{
- return "bbc";
+ return "BBC Micro 5.25\" disk image";
}
-const char *bbc_format::description() const
+const char *bbc_ssd_525_format::extensions() const
{
- return "BBC Micro disk image";
+ return "bbc,img,ssd";
}
-const char *bbc_format::extensions() const
+int bbc_ssd_525_format::find_size(io_generic *io, UINT32 form_factor)
{
- return "bbc,img,ssd,dsd";
+ char cat[8];
+ io_generic_read(io, cat, 256, 8);
+ UINT64 sectors = ((cat[6] & 3) << 8) + cat[7]; // sector count from catalogue
+ UINT64 size = io_generic_size(io);
+ for(int i=0; formats[i].form_factor; i++) {
+ const format &f = formats[i];
+ if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
+ continue;
+
+ if((size <= (UINT64)compute_track_size(f) * f.track_count * f.head_count) && (sectors == f.track_count * f.sector_count))
+ return i;
+ }
+ return -1;
}
-const bbc_format::format bbc_format::formats[] =
+const bbc_ssd_525_format::format bbc_ssd_525_format::formats[] =
{
- { // 100k single sided single density
+ { // 100k 40 track single sided single density
floppy_image::FF_525, floppy_image::SSSD, floppy_image::FM,
- 4000, 10, 40, 1, 256, {}, 0, {}, 16, 11, 19
+ 4000, 10, 40, 1, 256, {}, 0, {}, 40, 10, 10
+ },
+ { // 200k 80 track single sided single density
+ floppy_image::FF_525, floppy_image::SSQD, floppy_image::FM,
+ 4000, 10, 80, 1, 256, {}, 0, {}, 40, 10, 10
},
- { // 200k double sided single density
+ { // 200k 40 track double sided single density
floppy_image::FF_525, floppy_image::DSSD, floppy_image::FM,
- 4000, 10, 40, 2, 256, {}, 0, {}, 16, 11, 19
+ 4000, 10, 40, 2, 256, {}, 0, {}, 40, 10, 10
},
- { // 200k single sided double density
- floppy_image::FF_525, floppy_image::SSQD, floppy_image::FM,
- 4000, 10, 80, 1, 256, {}, 0, {}, 16, 11, 19
+ { // 400k 80 track double sided single density
+ floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
+ 4000, 10, 80, 2, 256, {}, 0, {}, 40, 10, 10
},
- { // 400k double sided double density
+ {}
+};
+
+
+bbc_dsd_525_format::bbc_dsd_525_format() : wd177x_format(formats)
+{
+}
+
+const char *bbc_dsd_525_format::name() const
+{
+ return "dsd";
+}
+
+const char *bbc_dsd_525_format::description() const
+{
+ return "BBC Micro 5.25\" disk image";
+}
+
+const char *bbc_dsd_525_format::extensions() const
+{
+ return "dsd";
+}
+
+int bbc_dsd_525_format::find_size(io_generic *io, UINT32 form_factor)
+{
+ char cat[8];
+ io_generic_read(io, cat, 256, 8);
+ UINT64 sectors = ((cat[6] & 3) << 8) + cat[7]; // sector count from catalogue
+ UINT64 size = io_generic_size(io);
+ for(int i=0; formats[i].form_factor; i++) {
+ const format &f = formats[i];
+ if(form_factor != floppy_image::FF_UNKNOWN && form_factor != f.form_factor)
+ continue;
+
+ if((size <= (UINT64)compute_track_size(f) * f.track_count * f.head_count) && (sectors == f.track_count * f.sector_count))
+ return i;
+ }
+ return -1;
+}
+
+const bbc_dsd_525_format::format bbc_dsd_525_format::formats[] =
+{
+ { // 200k 40 track double sided single density
+ floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
+ 4000, 10, 40, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
+ },
+ { // 400k 80 track double sided single density
floppy_image::FF_525, floppy_image::DSQD, floppy_image::FM,
- 4000, 10, 80, 2, 256, {}, 0, {}, 16, 11, 19
+ 4000, 10, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9 }, 40, 10, 10
},
{}
};
-const floppy_format_type FLOPPY_BBC_FORMAT = &floppy_image_format_creator<bbc_format>;
+
+bbc_adf_525_format::bbc_adf_525_format() : wd177x_format(formats)
+{
+}
+
+const char *bbc_adf_525_format::name() const
+{
+ return "adf";
+}
+
+const char *bbc_adf_525_format::description() const
+{
+ return "BBC Micro 5.25\" ADFS disk image";
+}
+
+const char *bbc_adf_525_format::extensions() const
+{
+ return "adf,ads,adm,adl,img";
+}
+
+const bbc_adf_525_format::format bbc_adf_525_format::formats[] =
+{
+ { // 160K 40 track single sided double density
+ floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
+ 2000, 16, 40, 1, 256, {}, 0, {}, 60, 22, 43
+ },
+ { // 320K 80 track single sided double density
+ floppy_image::FF_525, floppy_image::SSDD, floppy_image::MFM,
+ 2000, 16, 80, 1, 256, {}, 0, {}, 60, 22, 43
+ },
+ { // 640K 80 track double sided double density
+ floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
+ 2000, 16, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, 60, 22, 43
+ },
+ {}
+};
+
+
+bbc_adf_35_format::bbc_adf_35_format() : wd177x_format(formats)
+{
+}
+
+const char *bbc_adf_35_format::name() const
+{
+ return "adf";
+}
+
+const char *bbc_adf_35_format::description() const
+{
+ return "BBC Micro 3.5\" ADFS disk image";
+}
+
+const char *bbc_adf_35_format::extensions() const
+{
+ return "adf,ads,adm,adl,img";
+}
+
+const bbc_adf_35_format::format bbc_adf_35_format::formats[] = {
+ { // 160K 3 1/2 inch 40 track single sided double density
+ floppy_image::FF_35, floppy_image::SSDD, floppy_image::MFM,
+ 2000, 16, 40, 1, 256, {}, 0, {}, 60, 22, 43
+ },
+ { // 320K 3 1/2 inch 80 track single sided double density
+ floppy_image::FF_35, floppy_image::SSQD, floppy_image::MFM,
+ 2000, 16, 80, 1, 256, {}, 0, {}, 60, 22, 43
+ },
+ { // 640K 3 1/2 inch 80 track double sided double density
+ floppy_image::FF_35, floppy_image::DSQD, floppy_image::MFM,
+ 2000, 16, 80, 2, 256, {}, -1, { 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 }, 60, 22, 43
+ },
+ {}
+};
+
+
+const floppy_format_type FLOPPY_BBC_SSD_525_FORMAT = &floppy_image_format_creator<bbc_ssd_525_format>;
+const floppy_format_type FLOPPY_BBC_DSD_525_FORMAT = &floppy_image_format_creator<bbc_dsd_525_format>;
+const floppy_format_type FLOPPY_BBC_ADF_525_FORMAT = &floppy_image_format_creator<bbc_adf_525_format>;
+const floppy_format_type FLOPPY_BBC_ADF_35_FORMAT = &floppy_image_format_creator<bbc_adf_35_format>;
diff --git a/src/lib/formats/bbc_dsk.h b/src/lib/formats/bbc_dsk.h
index e2520781a15..d757c8a90ac 100644
--- a/src/lib/formats/bbc_dsk.h
+++ b/src/lib/formats/bbc_dsk.h
@@ -1,10 +1,10 @@
// license:GPL-2.0+
-// copyright-holders:Dirk Best
+// copyright-holders:Dirk Best, Nigel Barnes
/***************************************************************************
BBC Micro
- Disk image format
+ Disk image formats
***************************************************************************/
@@ -13,13 +13,21 @@
#ifndef __BBC_DSK_H__
#define __BBC_DSK_H__
+#include "flopimg.h"
#include "wd177x_dsk.h"
-class bbc_format : public wd177x_format
+/**************************************************************************/
+
+LEGACY_FLOPPY_OPTIONS_EXTERN(bbc);
+
+/**************************************************************************/
+
+class bbc_ssd_525_format : public wd177x_format
{
public:
- bbc_format();
+ bbc_ssd_525_format();
+ virtual int find_size(io_generic *io, UINT32 form_factor);
virtual const char *name() const;
virtual const char *description() const;
virtual const char *extensions() const;
@@ -28,6 +36,50 @@ private:
static const format formats[];
};
-extern const floppy_format_type FLOPPY_BBC_FORMAT;
+class bbc_dsd_525_format : public wd177x_format
+{
+public:
+ bbc_dsd_525_format();
+
+ virtual int find_size(io_generic *io, UINT32 form_factor);
+ virtual const char *name() const;
+ virtual const char *description() const;
+ virtual const char *extensions() const;
+
+private:
+ static const format formats[];
+};
+
+class bbc_adf_525_format : public wd177x_format
+{
+public:
+ bbc_adf_525_format();
+
+ virtual const char *name() const;
+ virtual const char *description() const;
+ virtual const char *extensions() const;
+
+private:
+ static const format formats[];
+};
+
+class bbc_adf_35_format : public wd177x_format
+{
+public:
+ bbc_adf_35_format();
+
+ virtual const char *name() const;
+ virtual const char *description() const;
+ virtual const char *extensions() const;
+
+private:
+ static const format formats[];
+};
+
+
+extern const floppy_format_type FLOPPY_BBC_SSD_525_FORMAT;
+extern const floppy_format_type FLOPPY_BBC_DSD_525_FORMAT;
+extern const floppy_format_type FLOPPY_BBC_ADF_525_FORMAT;
+extern const floppy_format_type FLOPPY_BBC_ADF_35_FORMAT;
#endif // __BBC_DSK_H__
diff --git a/src/lib/formats/flopimg.c b/src/lib/formats/flopimg.c
index e2ee5122b2c..20ff211e147 100644
--- a/src/lib/formats/flopimg.c
+++ b/src/lib/formats/flopimg.c
@@ -1274,7 +1274,7 @@ void floppy_image_format_t::fixup_crc_amiga(std::vector<UINT32> &buffer, const g
if(bit_r(buffer, crc->start + i))
res = res ^ (0x8000 >> ((i >> 1) & 15));
mfm_w(buffer, 16, 0, 1000, crc->write);
- mfm_w(buffer, 16, res, 1000, crc->write+16);
+ mfm_w(buffer, 16, res, 1000, crc->write+32);
}
void floppy_image_format_t::fixup_crc_cbm(std::vector<UINT32> &buffer, const gen_crc_info *crc)
diff --git a/src/lib/formats/mfm_hd.c b/src/lib/formats/mfm_hd.c
new file mode 100644
index 00000000000..ed50e60deb2
--- /dev/null
+++ b/src/lib/formats/mfm_hd.c
@@ -0,0 +1,750 @@
+// license:LGPL-2.1+
+// copyright-holders:Michael Zapf
+/*************************************************************************
+
+ Hard disk emulation: Format implementation
+ ------------------------------------------
+
+ This is the format implementation for MFM hard disks, similar to the
+ modular format concept of floppy drives in MAME/MESS.
+
+ The base class is mfmhd_image_format_t; it contains some methods for
+ encoding and decoding MFM. Although MFM hard disks should also be able to
+ manage FM recording, we do not plan for FM recording here.
+
+ The encode/decode methods rely on a parameter "encoding";
+ see imagedev/mfmhd.c for a discussion. Essentially, it determines whether
+ data are read bitwise or bytewise, and whether clock bits are separated
+ or interleaved.
+
+ The base class is abstract; you must create a subclass to use it. This
+ file delivers one subclass called mfmhd_generic_format.
+
+ In order to use this format, you must pass the creator identifier to the
+ macro MCFG_MFM_HARDDISK_CONN_ADD. See emu/bus/ti99_peb/hfdc.c for an
+ example.
+
+
+ Generic MFM format
+ ------------------
+ The heart of this class are the methods load and save. They are designed
+ to read sector data from a CHD file and reconstruct the track image (load),
+ or to take a track image, isolate the sector data, and store them
+ into the CHD (save).
+
+ Rebuilding the track image means to create sector headers, allocate gaps,
+ add sync areas, and CRC values. Also, the sectors must be arranged
+ according to the "interleave" parameter and the "skew" parameters for
+ heads and cylinders. While the skews are commonly set to 0, the interleave
+ is often used to fine-tune the transfer speed between the drive hardware
+ and the host system.
+
+ Also, the format allows for two header setups.
+ a) PC-AT-compatible header: four bytes long (ident, cylinder, head, sector);
+ the sector size is always 512 bytes.
+ b) Custom headers: five bytes long (..., sector size). The custom headers
+ are used in non-PC systems.
+
+ ECC: While floppy drives make use of a CRC field to check the data integrity,
+ hard disks use an ECC (error correcting code). The ECC length is 4 bytes
+ or longer, depending on the desired correction capability. The ECC length
+ can also be specified for this format.
+
+ However, for this version, we do not support ECC computation, but instead
+ we use CRC. This is indicated by setting the "ECC length" parameter to -1.
+
+ Format autodetect
+ -----------------
+ While formatting a hard disk, format parameters are likely to change, so
+ we have to find out about the new layout and store the metadata into the
+ CHD if they were modified.
+
+ This is done in the save method. This method does not only retrieve the
+ sector contents but also counts the gap bytes and sync bytes so that
+ they can be stored in the CHD.
+
+ - Interleave detection: save counts the number of sectors between sector
+ number n and sector number n+1.
+
+ - Skew detection: Skew is determined by three tracks: (cyl,head)=
+ (0,0), (1,0), and (0,1). For this purpose we use the m_secnumber list.
+
+ - Header length is detemined by the first sector on (0,0). This is done
+ by checking the header against the following two CRC bytes. If they
+ match for 4 bytes, we have an AT-style header, else a custom header.
+
+ - Gap and sync lengths are determined by the first track (0,0). They are
+ actually not expected to change, unless they are undefined before first
+ use, or the controller or its driver changes. We assume that track
+ (0,0) is actually rewritten during reformatting.
+
+ Since write precompensation and reduced write current cannot be seen
+ on the track image directly, those two values have to be set by the
+ hard disk device itseltf.
+
+ Inhibit autodetect
+ ------------------
+ In case we do not want the format to detect the layout but want to ensure
+ an immutable format, the save_param method may be overwritten to return
+ false for all or a particular group of parameters. The generic format
+ offers a save_param method which always returns true.
+
+ The effect of inhibiting the autodetection is that the layout parameters
+ as found on the CHD are used if available; otherwise defaults are used.
+
+ Defaults
+ --------
+ The generic format defines a method get_default which returns safe values
+ for layout parameters. It can be overwritten for specific formats.
+
+ Debugging
+ ---------
+ There is a set of debug flags (starting with TRACE_) that can be set to 1;
+ after recompiling you will get additional output. Since this class is not
+ a descendant of device_t we do not have a tag for output; for a better
+ overview in the logfile the hard disk device passes its tag to the base
+ class.
+
+
+ TODO
+ ----
+ - Add ECC computation
+
+
+ Michael Zapf
+ August 2015
+
+**************************************************************************/
+
+#include "emu.h"
+#include "mfm_hd.h"
+#include "imageutl.h"
+
+#define TRACE_RWTRACK 0
+#define TRACE_LAYOUT 0
+#define TRACE_IMAGE 0
+#define TRACE_DETAIL 0
+#define TRACE_FORMAT 0
+
+/*
+ Accept the new layout parameters and reset the sector number fields
+ used for skew calculation.
+*/
+void mfmhd_image_format_t::set_layout_params(mfmhd_layout_params param)
+{
+ m_param = m_param_old = param;
+ m_secnumber[0] = m_secnumber[1] = m_secnumber[2] = -1;
+}
+
+/*
+ Encode some value with data-type clock bits.
+*/
+void mfmhd_image_format_t::mfm_encode(UINT16* trackimage, int& position, UINT8 byte, int count)
+{
+ mfm_encode_mask(trackimage, position, byte, count, 0x00);
+}
+
+/*
+ Encode an A1 value with mark-type clock bits.
+*/
+void mfmhd_image_format_t::mfm_encode_a1(UINT16* trackimage, int& position)
+{
+ m_current_crc = 0xffff;
+ mfm_encode_mask(trackimage, position, 0xa1, 1, 0x04);
+}
+
+/*
+ Encode a byte value with a given clock bit mask. Used by both mfm_encode
+ and mfm_encode_a1 methods.
+*/
+void mfmhd_image_format_t::mfm_encode_mask(UINT16* trackimage, int& position, UINT8 byte, int count, int mask)
+{
+ UINT16 encclock = 0;
+ UINT16 encdata = 0;
+ UINT8 thisbyte = byte;
+ bool mark = (mask != 0x00);
+
+ m_current_crc = ccitt_crc16_one(m_current_crc, byte);
+
+ for (int i=0; i < 8; i++)
+ {
+ encdata <<= 1;
+ encclock <<= 1;
+
+ if (m_param.encoding == MFM_BITS || m_param.encoding == MFM_BYTE)
+ {
+ // skip one position for later interleaving
+ encdata <<= 1;
+ encclock <<= 1;
+ }
+
+ if (thisbyte & 0x80)
+ {
+ // Encoding 1 => 01
+ encdata |= 1;
+ m_lastbit = true;
+ }
+ else
+ {
+ // Encoding 0 => x0
+ // If the bit in the mask is set, suppress the clock bit
+ // Also, if we use the simplified encoding, don't set the clock bits
+ if (m_lastbit == false && m_param.encoding != SEPARATED_SIMPLE && (mask & 0x80) == 0) encclock |= 1;
+ m_lastbit = false;
+ }
+ mask <<= 1;
+ // For simplified encoding, set all clock bits to indicate a mark
+ if (m_param.encoding == SEPARATED_SIMPLE && mark) encclock |= 1;
+ thisbyte <<= 1;
+ }
+
+ if (m_param.encoding == MFM_BITS || m_param.encoding == MFM_BYTE)
+ encclock <<= 1;
+ else
+ encclock <<= 8;
+
+ trackimage[position++] = (encclock | encdata);
+
+ // When we write the byte multiple times, check whether the next encoding
+ // differs from the previous because of the last bit
+
+ if (m_param.encoding == MFM_BITS || m_param.encoding == MFM_BYTE)
+ {
+ encclock &= 0x7fff;
+ if ((byte & 0x80)==0 && m_lastbit==false) encclock |= 0x8000;
+ }
+
+ for (int j=1; j < count; j++)
+ {
+ trackimage[position++] = (encclock | encdata);
+ m_current_crc = ccitt_crc16_one(m_current_crc, byte);
+ }
+}
+
+/*
+ Decode an MFM cell pattern into a byte value.
+ Clock bits and data bits are assumed to be interleaved (cdcdcdcdcdcdcdcd);
+ the 8 data bits are returned.
+*/
+UINT8 mfmhd_image_format_t::mfm_decode(UINT16 raw)
+{
+ unsigned int value = 0;
+
+ for (int i=0; i < 8; i++)
+ {
+ value <<= 1;
+
+ value |= (raw & 0x4000);
+ raw <<= 2;
+ }
+ return (value >> 14) & 0xff;
+}
+
+/*
+ For debugging. Outputs the byte array in a xxd-like way.
+*/
+void mfmhd_image_format_t::showtrack(UINT16* enctrack, int length)
+{
+ for (int i=0; i < length; i+=16)
+ {
+ logerror("%07x: ", i);
+ for (int j=0; j < 16; j++)
+ {
+ logerror("%04x ", enctrack[i+j]);
+ }
+ logerror(" ");
+ logerror("\n");
+ }
+}
+
+// ======================================================================
+// Generic MFM HD format
+// ======================================================================
+
+const mfmhd_format_type MFMHD_GEN_FORMAT = &mfmhd_image_format_creator<mfmhd_generic_format>;
+
+/*
+ Calculate the ident byte from the cylinder. The specification does not
+ define idents beyond cylinder 1023, but formatting programs seem to
+ continue with 0xfd for cylinders between 1024 and 2047.
+*/
+UINT8 mfmhd_generic_format::cylinder_to_ident(int cylinder)
+{
+ if (cylinder < 256) return 0xfe;
+ if (cylinder < 512) return 0xff;
+ if (cylinder < 768) return 0xfc;
+ return 0xfd;
+}
+
+/*
+ Returns the linear sector number, given the CHS data.
+
+ C,H,S
+ | 0,0,0 | 0,0,1 | 0,0,2 | ...
+ | 0,1,0 | 0,1,1 | 0,1,2 | ...
+ ...
+ | 1,0,0 | ...
+ ...
+*/
+int mfmhd_generic_format::chs_to_lba(int cylinder, int head, int sector)
+{
+ if ((cylinder < m_param.cylinders) && (head < m_param.heads) && (sector < m_param.sectors_per_track))
+ {
+ return (cylinder * m_param.heads + head) * m_param.sectors_per_track + sector;
+ }
+ else return -1;
+}
+
+chd_error mfmhd_generic_format::load(chd_file* chdfile, UINT16* trackimage, int tracksize, int cylinder, int head)
+{
+ chd_error state = CHDERR_NONE;
+ UINT8 sector_content[16384];
+
+ int sectorcount = m_param.sectors_per_track;
+ int size = m_param.sector_size;
+ int position = 0; // will be incremented by each encode call
+ int sec_number = 0;
+ int identfield = 0;
+ int cylfield = 0;
+ int headfield = 0;
+ int sizefield = (size >> 7)-1;
+
+ // If we don't have interleave data in the CHD, take a default
+ if (m_param.interleave==0)
+ {
+ m_param.interleave = get_default(MFMHD_IL);
+ m_param.cylskew = get_default(MFMHD_CSKEW);
+ m_param.headskew = get_default(MFMHD_HSKEW);
+ }
+
+ int sec_il_start = (m_param.cylskew * cylinder + m_param.headskew * head) % sectorcount;
+ int delta = (sectorcount + m_param.interleave-1) / m_param.interleave;
+
+ if (TRACE_RWTRACK) logerror("%s: Load track (c=%d,h=%d) from CHD, interleave=%d, cylskew=%d, headskew=%d\n", tag(), cylinder, head, m_param.interleave, m_param.cylskew, m_param.headskew);
+
+ m_lastbit = false;
+
+ if (m_param.sync==0)
+ {
+ m_param.gap1 = get_default(MFMHD_GAP1);
+ m_param.gap2 = get_default(MFMHD_GAP2);
+ m_param.gap3 = get_default(MFMHD_GAP3);
+ m_param.sync = get_default(MFMHD_SYNC);
+ m_param.headerlen = get_default(MFMHD_HLEN);
+ m_param.ecctype = get_default(MFMHD_ECC);
+ }
+
+ // Gap 1
+ mfm_encode(trackimage, position, 0x4e, m_param.gap1);
+
+ if (TRACE_LAYOUT) logerror("%s: cyl=%d head=%d: sector sequence = ", tag(), cylinder, head);
+
+ sec_number = sec_il_start;
+ for (int sector = 0; sector < sectorcount; sector++)
+ {
+ if (TRACE_LAYOUT) logerror("%02d ", sec_number);
+
+ // Sync gap
+ mfm_encode(trackimage, position, 0x00, m_param.sync);
+
+ // Write IDAM
+ mfm_encode_a1(trackimage, position);
+
+ // Write header
+ identfield = cylinder_to_ident(cylinder);
+ cylfield = cylinder & 0xff;
+ headfield = head & 0x0f;
+ if (m_param.headerlen==5)
+ headfield |= ((cylinder & 0x700)>>4);
+
+ mfm_encode(trackimage, position, identfield);
+ mfm_encode(trackimage, position, cylfield);
+ mfm_encode(trackimage, position, headfield);
+ mfm_encode(trackimage, position, sec_number);
+ if (m_param.headerlen==5)
+ mfm_encode(trackimage, position, sizefield);
+
+ // Write CRC for header.
+ int crc = m_current_crc;
+ mfm_encode(trackimage, position, (crc >> 8) & 0xff);
+ mfm_encode(trackimage, position, crc & 0xff);
+
+ // Gap 2
+ mfm_encode(trackimage, position, 0x4e, m_param.gap2);
+
+ // Sync
+ mfm_encode(trackimage, position, 0x00, m_param.sync);
+
+ // Write DAM
+ mfm_encode_a1(trackimage, position);
+ mfm_encode(trackimage, position, 0xfb);
+
+ // Get sector content from CHD
+ int lbaposition = chs_to_lba(cylinder, head, sec_number);
+ if (lbaposition>=0)
+ {
+ chd_error state = chdfile->read_units(lbaposition, sector_content);
+ if (state != CHDERR_NONE) break;
+ }
+ else
+ {
+ logerror("%s: Invalid CHS data (%d,%d,%d); not loading from CHD\n", tag(), cylinder, head, sector);
+ }
+
+ for (int i=0; i < size; i++)
+ mfm_encode(trackimage, position, sector_content[i]);
+
+ // Write CRC for content.
+ crc = m_current_crc;
+ mfm_encode(trackimage, position, (crc >> 8) & 0xff);
+ mfm_encode(trackimage, position, crc & 0xff);
+
+ // Gap 3
+ mfm_encode(trackimage, position, 0x00, 3);
+ mfm_encode(trackimage, position, 0x4e, m_param.gap3-3);
+
+ // Calculate next sector number
+ sec_number += delta;
+ if (sec_number >= sectorcount)
+ {
+ sec_il_start = (sec_il_start+1) % delta;
+ sec_number = sec_il_start;
+ }
+ }
+ if (TRACE_LAYOUT) logerror("\n");
+
+ // Gap 4
+ if (state == CHDERR_NONE)
+ {
+ // Fill the rest with 0x4e
+ mfm_encode(trackimage, position, 0x4e, tracksize-position);
+ if (TRACE_IMAGE) showtrack(trackimage, tracksize);
+ }
+ return state;
+}
+
+/*
+ State names for analyzing the track image.
+*/
+enum
+{
+ SEARCH_A1=0,
+ FOUND_A1,
+ DAM_FOUND,
+ CHECK_CRC
+};
+
+chd_error mfmhd_generic_format::save(chd_file* chdfile, UINT16* trackimage, int tracksize, int current_cylinder, int current_head)
+{
+ if (TRACE_RWTRACK) logerror("%s: write back (c=%d,h=%d) to CHD\n", tag(), current_cylinder, current_head);
+
+ UINT8 buffer[16384]; // for header or sector content
+
+ int bytepos = 0;
+ int state = SEARCH_A1;
+ int count = 0;
+ int pos = 0;
+ UINT16 crc = 0;
+ UINT8 byte;
+ bool search_header = true;
+
+ int ident = 0;
+ int cylinder = 0;
+ int head = 0;
+ int sector = 0;
+ int size = 0;
+
+ int headerpos = 0;
+
+ int interleave = 0;
+ int interleave_prec = -1;
+ bool check_interleave = true;
+ bool check_skew = true;
+
+ int gap1 = 0;
+ int ecctype = 0;
+
+ // if (current_cylinder==0 && current_head==0) showtrack(trackimage, tracksize);
+
+ // If we want to detect gaps, we only do it on cylinder 0, head 0
+ // This makes it safer to detect the header length
+ // (There is indeed some chance that we falsely assume a header length of 4
+ // because the two bytes behind happen to be a valid CRC value)
+ if (save_param(MFMHD_GAP1) && current_cylinder==0 && current_head==0)
+ {
+ m_param.gap1 = 0;
+ m_param.gap2 = 0;
+ m_param.gap3 = 0;
+ m_param.sync = 0;
+ // 4-byte headers are used for the IBM-AT format
+ // 5-byte headers are used in other formats
+ m_param.headerlen = 4;
+ m_param.ecctype = 0;
+ }
+
+ // AT format implies 512 bytes per sector
+ int sector_length = 512;
+
+ // Only check once
+ bool countgap1 = (m_param.gap1==0);
+ bool countgap2 = false;
+ bool countgap3 = false;
+ bool countsync = false;
+
+ chd_error chdstate = CHDERR_NONE;
+
+ if (TRACE_IMAGE)
+ {
+ for (int i=0; i < tracksize; i++)
+ {
+ if ((i % 16)==0) logerror("\n%04x: ", i);
+ logerror("%02x ", (m_param.encoding==MFM_BITS || m_param.encoding==MFM_BYTE)? mfm_decode(trackimage[i]) : (trackimage[i]&0xff));
+ }
+ logerror("\n");
+ }
+
+ // We have to go through the bytes of the track and save a sector as soon as one shows up
+
+ while (bytepos < tracksize)
+ {
+ // Decode the next 16 bits
+ if (m_param.encoding==MFM_BITS || m_param.encoding==MFM_BYTE)
+ {
+ byte = mfm_decode(trackimage[bytepos]);
+ }
+ else byte = (trackimage[bytepos] & 0xff);
+
+ switch (state)
+ {
+ case SEARCH_A1:
+ // Counting gaps and sync
+ if (countgap2)
+ {
+ if (byte == 0x4e) m_param.gap2++;
+ else if (byte == 0) { countsync = true; countgap2 = false; }
+ }
+
+ if (countsync)
+ {
+ if (byte == 0) m_param.sync++;
+ else countsync = false;
+ }
+
+ if (countgap3)
+ {
+ if (byte != 0x00 || m_param.gap3 < 4) m_param.gap3++;
+ else countgap3 = false;
+ }
+
+ if (((m_param.encoding==MFM_BITS || m_param.encoding==MFM_BYTE) && trackimage[bytepos]==0x4489)
+ || (m_param.encoding==SEPARATED && trackimage[bytepos]==0x0aa1)
+ || (m_param.encoding==SEPARATED_SIMPLE && trackimage[bytepos]==0xffa1))
+ {
+ state = FOUND_A1;
+ count = (search_header? m_param.headerlen : (sector_length+1)) + 2;
+ crc = 0x443b; // init value with a1
+ pos = 0;
+ }
+ bytepos++;
+ break;
+
+ case FOUND_A1:
+ crc = ccitt_crc16_one(crc, byte);
+ // logerror("%s: MFM HD: Byte = %02x, CRC=%04x\n", tag(), byte, crc);
+
+ // Put byte into buffer
+ // but not the data mark and the CRC
+ if (search_header || (count > 2 && count < sector_length+3)) buffer[pos++] = byte;
+
+ // Stop counting gap1
+ if (search_header && countgap1)
+ {
+ gap1 = bytepos-1;
+ countgap1 = false;
+ }
+
+ if (--count == 0)
+ {
+ if (crc==0)
+ {
+ if (search_header)
+ {
+ // Found a header
+ ident = buffer[0];
+ cylinder = buffer[1];
+ // For non-PC-AT formats, highest three bits are in the head field
+ if (m_param.headerlen == 5) cylinder |= ((buffer[2]&0x70)<<4);
+ else
+ {
+ logerror("%s: Unexpected header size: %d, cylinder=%d, position=%04x\n", tag(), m_param.headerlen, cylinder, bytepos);
+ showtrack(trackimage, tracksize);
+ }
+
+ head = buffer[2] & 0x0f;
+ sector = buffer[3];
+ int identexp = cylinder_to_ident(cylinder);
+
+ if (identexp != ident)
+ {
+ logerror("%s: Field error; ident = %02x (expected %02x) for sector chs=(%d,%d,%d)\n", tag(), ident, identexp, cylinder, head, sector);
+ }
+
+ if (cylinder != current_cylinder)
+ {
+ logerror("%s: Sector header of sector %d defines cylinder = %02x (should be %02x)\n", tag(), sector, cylinder, current_cylinder);
+ }
+
+ if (head != current_head)
+ {
+ logerror("%s: Sector header of sector %d defines head = %02x (should be %02x)\n", tag(), sector, head, current_head);
+ }
+
+ // Check skew
+ // We compare the beginning of this track with the track on the next head and the track on the next cylinder
+ if (check_skew && cylinder < 2 && head < 2)
+ {
+ m_secnumber[cylinder*2 + head] = sector;
+ check_skew=false;
+ }
+
+ // Count the sectors for the interleave
+ if (check_interleave)
+ {
+ if (interleave_prec == -1) interleave_prec = sector;
+ else
+ {
+ if (sector == interleave_prec+1) check_interleave = false;
+ interleave++;
+ }
+ }
+
+ if (interleave == 0) interleave = sector - buffer[3];
+
+ // When we have 4-byte headers, the sector length is 512 bytes
+ if (m_param.headerlen == 5)
+ {
+ size = buffer[4];
+ sector_length = 128 << (size&0x07);
+ ecctype = (size&0xf0)>>4;
+ }
+
+ search_header = false;
+ if (TRACE_DETAIL) logerror("%s: Found sector chs=(%d,%d,%d)\n", tag(), cylinder, head, sector);
+ headerpos = pos;
+ // Start the GAP2 counter (if not already determined)
+ if (m_param.gap2==0) countgap2 = true;
+ }
+ else
+ {
+ // Sector contents
+ // Write the sectors to the CHD
+ int lbaposition = chs_to_lba(cylinder, head, sector);
+ if (lbaposition>=0)
+ {
+ if (TRACE_DETAIL) logerror("%s: Writing sector chs=(%d,%d,%d) to CHD\n", tag(), current_cylinder, current_head, sector);
+ chdstate = chdfile->write_units(chs_to_lba(current_cylinder, current_head, sector), buffer);
+
+ if (chdstate != CHDERR_NONE)
+ {
+ logerror("%s: Write error while writing sector chs=(%d,%d,%d)\n", tag(), cylinder, head, sector);
+ }
+ }
+ else
+ {
+ logerror("%s: Invalid CHS data in track image: (%d,%d,%d); not saving to CHD\n", tag(), cylinder, head, sector);
+ }
+ if (m_param.gap3==0) countgap3 = true;
+ search_header = true;
+ }
+ }
+ else
+ {
+ // Let's test for a 5-byte header
+ if (search_header && m_param.headerlen==4 && current_cylinder==0 && current_head==0)
+ {
+ if (TRACE_DETAIL) logerror("%s: CRC error for 4-byte header; trying 5 bytes\n", tag());
+ m_param.headerlen=5;
+ count = 1;
+ bytepos++;
+ break;
+ }
+ else
+ {
+ logerror("%s: CRC error in %s of (%d,%d,%d)\n", tag(), search_header? "header" : "data", cylinder, head, sector);
+ search_header = true;
+ }
+ }
+ // search next A1
+ state = SEARCH_A1;
+
+ if (!search_header && (pos - headerpos) > 30)
+ {
+ logerror("%s: Error; missing DAM; searching next header\n", tag());
+ search_header = true;
+ }
+ }
+ bytepos++;
+ break;
+ }
+ }
+
+ if (check_interleave == false && save_param(MFMHD_IL))
+ {
+ // Successfully determined the interleave
+ m_param.interleave = interleave;
+ if (TRACE_FORMAT)
+ if (current_cylinder==0 && current_head==0) logerror("%s: Determined interleave = %d\n", tag(), m_param.interleave);
+ }
+
+ if (check_skew == false)
+ {
+ if (m_secnumber[0] != -1)
+ {
+ if (m_secnumber[1] != -1)
+ {
+ if (save_param(MFMHD_HSKEW)) m_param.headskew = m_secnumber[1]-m_secnumber[0];
+ if (TRACE_FORMAT) logerror("%s: Determined head skew = %d\n", tag(), m_param.headskew);
+ }
+ if (m_secnumber[2] != -1)
+ {
+ if (save_param(MFMHD_CSKEW)) m_param.cylskew = m_secnumber[2]-m_secnumber[0];
+ if (TRACE_FORMAT) logerror("%s: Determined cylinder skew = %d\n", tag(), m_param.cylskew);
+ }
+ }
+ }
+
+ gap1 -= m_param.sync;
+ ecctype = -1; // lock to CRC until we have a support for ECC
+
+ if (current_cylinder==0 && current_head==0)
+ {
+ // If we want to detect gaps, store the new value into the param object
+ // The other gaps have already been written directly to the param object above,
+ // unless save_param returned false (or we were not on cylinder 0, head 0)
+ if (save_param(MFMHD_GAP1)) m_param.gap1 = gap1;
+ if (save_param(MFMHD_ECC)) m_param.ecctype = ecctype;
+ }
+ return chdstate;
+}
+
+/*
+ Deliver default values.
+*/
+int mfmhd_generic_format::get_default(mfmhd_param_t type)
+{
+ switch (type)
+ {
+ case MFMHD_IL: return 4;
+ case MFMHD_HSKEW:
+ case MFMHD_CSKEW: return 0;
+ case MFMHD_WPCOM: // Write precompensation cylinder (-1 = none)
+ case MFMHD_RWC: return -1; // Reduced write current cylinder (-1 = none)
+ case MFMHD_GAP1: return 16;
+ case MFMHD_GAP2: return 3;
+ case MFMHD_GAP3: return 18;
+ case MFMHD_SYNC: return 13;
+ case MFMHD_HLEN: return 5;
+ case MFMHD_ECC: return -1; // -1: use CRC instead of ECC
+ }
+ return -1;
+}
diff --git a/src/lib/formats/mfm_hd.h b/src/lib/formats/mfm_hd.h
new file mode 100644
index 00000000000..dfa4d3ffba7
--- /dev/null
+++ b/src/lib/formats/mfm_hd.h
@@ -0,0 +1,212 @@
+// license:LGPL-2.1+
+// copyright-holders:Michael Zapf
+/****************************************************************************
+
+ Hard disk support
+ See mfm_hd.c for documentation
+
+ Michael Zapf
+
+ February 2012: Rewritten as class
+
+*****************************************************************************/
+
+#ifndef __MFMHDFMT__
+#define __MFMHDFMT__
+
+#include "emu.h"
+#include "chd.h"
+
+const chd_metadata_tag MFM_HARD_DISK_METADATA_TAG = CHD_MAKE_TAG('G','D','D','I');
+
+extern const char *MFMHD_REC_METADATA_FORMAT;
+extern const char *MFMHD_GAP_METADATA_FORMAT;
+
+/*
+ Determine how data are passed from the hard disk to the controller. We
+ allow for different degrees of hardware emulation.
+*/
+enum mfmhd_enc_t
+{
+ MFM_BITS, // One bit at a time
+ MFM_BYTE, // One data byte with interleaved clock bits
+ SEPARATED, // 8 clock bits (most sig byte), one data byte (least sig byte)
+ SEPARATED_SIMPLE // MSB: 00/FF (standard / mark) clock, LSB: one data byte
+};
+
+class mfmhd_image_format_t;
+
+// Pointer to its alloc function
+typedef mfmhd_image_format_t *(*mfmhd_format_type)();
+
+template<class _FormatClass>
+mfmhd_image_format_t *mfmhd_image_format_creator()
+{
+ return new _FormatClass();
+}
+
+/*
+ Parameters for the track layout
+*/
+class mfmhd_layout_params
+{
+public:
+ // Geometry params. These are fixed for the device. However, sector sizes
+ // could be changed, but we do not support this (yet). These are defined
+ // in the CHD and must match those of the device. They are stored by the GDDD tag.
+ // The encoding is not stored in the CHD but is also supposed to be immutable.
+ int cylinders;
+ int heads;
+ int sectors_per_track;
+ int sector_size;
+ mfmhd_enc_t encoding;
+
+ // Parameters like interleave, precompensation, write current can be changed
+ // on every write operation. They are stored by the GDDI tag (first record).
+ int interleave;
+ int cylskew;
+ int headskew;
+ int write_precomp_cylinder; // if -1, no wpcom on the disks
+ int reduced_wcurr_cylinder; // if -1, no rwc on the disks
+
+ // Parameters for the track layout that are supposed to be the same for
+ // all tracks and that do not change (until the next reformat).
+ // Also, they do not have any influence on the CHD file.
+ // They are stored by the GDDI tag (second record).
+ int gap1;
+ int gap2;
+ int gap3;
+ int sync;
+ int headerlen;
+ int ecctype; // -1 is CRC
+
+ bool sane_rec()
+ {
+ return ((interleave > 0 && interleave < 32) && (cylskew >= 0 && cylskew < 32) && (headskew >= 0 && headskew < 32)
+ && (write_precomp_cylinder >= -1 && write_precomp_cylinder < 100000)
+ && (reduced_wcurr_cylinder >= -1 && reduced_wcurr_cylinder < 100000));
+ }
+
+ void reset_rec()
+ {
+ interleave = cylskew = headskew = 0;
+ write_precomp_cylinder = reduced_wcurr_cylinder = -1;
+ }
+
+ bool sane_gap()
+ {
+ return ((gap1 >= 1 && gap1 < 1000) && (gap2 >= 1 && gap2 < 20) && (gap3 >= 1 && gap3 < 1000)
+ && (sync >= 10 && sync < 20)
+ && (headerlen >= 4 && headerlen<=5) && (ecctype>=-1 && ecctype < 10));
+ }
+
+ void reset_gap()
+ {
+ gap1 = gap2 = gap3 = sync = headerlen = ecctype = 0;
+ }
+
+ bool equals_rec(mfmhd_layout_params* other)
+ {
+ return ((interleave == other->interleave) &&
+ (cylskew == other->cylskew) &&
+ (headskew == other->headskew) &&
+ (write_precomp_cylinder == other->write_precomp_cylinder) &&
+ (reduced_wcurr_cylinder == other->reduced_wcurr_cylinder));
+ }
+
+ bool equals_gap(mfmhd_layout_params* other)
+ {
+ return ((gap1 == other->gap1) &&
+ (gap2 == other->gap2) &&
+ (gap3 == other->gap3) &&
+ (sync == other->sync) &&
+ (headerlen == other->headerlen) &&
+ (ecctype == other->ecctype));
+ }
+};
+
+enum mfmhd_param_t
+{
+ MFMHD_IL,
+ MFMHD_HSKEW,
+ MFMHD_CSKEW,
+ MFMHD_WPCOM,
+ MFMHD_RWC,
+ MFMHD_GAP1,
+ MFMHD_GAP2,
+ MFMHD_GAP3,
+ MFMHD_SYNC,
+ MFMHD_HLEN,
+ MFMHD_ECC
+};
+
+/*
+ Hard disk format
+*/
+class mfmhd_image_format_t
+{
+public:
+ mfmhd_image_format_t() { m_devtag = std::string("mfmhd_image_format_t"); };
+ virtual ~mfmhd_image_format_t() {};
+
+ // Load the image.
+ virtual chd_error load(chd_file* chdfile, UINT16* trackimage, int tracksize, int cylinder, int head) = 0;
+
+ // Save the image.
+ virtual chd_error save(chd_file* chdfile, UINT16* trackimage, int tracksize, int cylinder, int head) = 0;
+
+ // Return the original parameters of the image
+ mfmhd_layout_params* get_initial_params() { return &m_param_old; }
+
+ // Return the recent parameters of the image
+ mfmhd_layout_params* get_current_params() { return &m_param; }
+
+ // Set the track layout parameters (and reset the skew detection values)
+ void set_layout_params(mfmhd_layout_params param);
+
+ // Concrete format shall decide whether we want to save the retrieved parameters or not.
+ virtual bool save_param(mfmhd_param_t type) =0;
+
+ // Accept a tag for log output, since this is not a device instance
+ void set_tag(std::string tag) { m_devtag = tag; }
+
+protected:
+ bool m_lastbit;
+ int m_current_crc;
+ int m_secnumber[4]; // used to determine the skew values
+ std::string m_devtag;
+
+ mfmhd_layout_params m_param, m_param_old;
+
+ void mfm_encode(UINT16* trackimage, int& position, UINT8 byte, int count=1);
+ void mfm_encode_a1(UINT16* trackimage, int& position);
+ void mfm_encode_mask(UINT16* trackimage, int& position, UINT8 byte, int count, int mask);
+ UINT8 mfm_decode(UINT16 raw);
+
+ // Deliver defaults.
+ virtual int get_default(mfmhd_param_t type) =0;
+
+ // Debugging
+ void showtrack(UINT16* enctrack, int length);
+ virtual const char* tag() { return m_devtag.c_str(); }
+};
+
+class mfmhd_generic_format : public mfmhd_image_format_t
+{
+public:
+ mfmhd_generic_format() { m_devtag = std::string("mfmhd_generic_format"); };
+ chd_error load(chd_file* chdfile, UINT16* trackimage, int tracksize, int cylinder, int head);
+ chd_error save(chd_file* chdfile, UINT16* trackimage, int tracksize, int cylinder, int head);
+
+ // Yes, we want to save all parameters
+ virtual bool save_param(mfmhd_param_t type) { return true; }
+ virtual int get_default(mfmhd_param_t type);
+
+protected:
+ virtual UINT8 cylinder_to_ident(int cylinder);
+ virtual int chs_to_lba(int cylinder, int head, int sector);
+};
+
+extern const mfmhd_format_type MFMHD_GEN_FORMAT;
+
+#endif
diff --git a/src/lib/formats/ti99_dsk.c b/src/lib/formats/ti99_dsk.c
index 599cbe4eda3..d83853e0a5d 100644
--- a/src/lib/formats/ti99_dsk.c
+++ b/src/lib/formats/ti99_dsk.c
@@ -79,7 +79,7 @@ bool ti99_floppy_format::check_for_address_marks(UINT8* trackdata, int encoding)
while (i < 5)
{
if (trackdata[40 + 13 + i*340] != 0xfe) break;
- if (trackdata[40 + 57 + i*340] != 0xfb && trackdata[40 + 57 + i*334] != 0xf8) break;
+ if (trackdata[40 + 57 + i*340] != 0xfb && trackdata[40 + 57 + i*340] != 0xf8) break;
i++;
}
}
@@ -410,8 +410,7 @@ void ti99_floppy_format::generate_track_mfm(int track, int head, int cell_size,
// IDAM
for (int j=0; j < 3; j++)
raw_w(buffer, 16, 0x4489); // 3 times A1
- mfm_w(buffer, 8, 0xfe);
- i += 3;
+ i += 2;
}
else
{
@@ -420,8 +419,7 @@ void ti99_floppy_format::generate_track_mfm(int track, int head, int cell_size,
// DAM
for (int j=0; j < 3; j++)
raw_w(buffer, 16, 0x4489); // 3 times A1
- mfm_w(buffer, 8, 0xfb);
- i += 3;
+ i += 2;
}
else
{
diff --git a/src/lib/formats/tiki100_dsk.c b/src/lib/formats/tiki100_dsk.c
index 1a05af7a5af..2258f29c47a 100644
--- a/src/lib/formats/tiki100_dsk.c
+++ b/src/lib/formats/tiki100_dsk.c
@@ -74,6 +74,11 @@ const tiki100_format::format tiki100_format::formats[] = {
2000, 10, 40, 1, 512, {}, -1, { 1,6,2,7,3,8,4,9,5,10 }, 20, 22, 24
},
+ { // 360K 5 1/4 inch double density
+ floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
+ 2000, 9, 40, 2, 512, {}, -1, { 1,6,2,7,3,8,4,9,5,10 }, 20, 22, 24
+ },
+
// track description
// 20x4e 12x00 3xf5 fe 2x00 01 02 f7 22x4e 12x00 3xf5 fb 512xe5 f7
// 24x4e 12x00 3xf5 fe 2x00 06 02 f7 22x4e 12x00 3xf5 fb 512xe5 f7
diff --git a/src/lib/formats/vector06_dsk.c b/src/lib/formats/vector06_dsk.c
index b423f4b7154..6601d84e7c7 100644
--- a/src/lib/formats/vector06_dsk.c
+++ b/src/lib/formats/vector06_dsk.c
@@ -38,6 +38,10 @@ const vector06_format::format vector06_format::formats[] =
floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM,
2000, 5, 82, 2, 1024, {}, 1, {}, 80, 22, 24
},
+ {
+ floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM,
+ 2000, 5, 80, 2, 1024, {}, 1, {}, 80, 22, 24
+ },
{}
};
diff --git a/src/emu/netlist/analog/nld_bjt.c b/src/lib/netlist/analog/nld_bjt.c
index 0e793c7d909..5f5a3611b97 100644
--- a/src/emu/netlist/analog/nld_bjt.c
+++ b/src/lib/netlist/analog/nld_bjt.c
@@ -5,9 +5,9 @@
*
*/
-#include <solver/nld_solver.h>
-#include "nld_bjt.h"
-#include "../nl_setup.h"
+#include "solver/nld_solver.h"
+#include "analog/nld_bjt.h"
+#include "nl_setup.h"
NETLIB_NAMESPACE_DEVICES_START()
@@ -55,7 +55,7 @@ NETLIB_NAME(Q)::~NETLIB_NAME(Q)()
NETLIB_START(Q)
{
- register_param("model", m_model, "");
+ register_param("MODEL", m_model, "");
}
NETLIB_RESET(Q)
@@ -118,9 +118,9 @@ NETLIB_UPDATE(QBJT_switch)
NETLIB_UPDATE_PARAM(QBJT_switch)
{
- nl_double IS = m_model.model_value("IS", 1e-15);
- nl_double BF = m_model.model_value("BF", 100);
- nl_double NF = m_model.model_value("NF", 1);
+ nl_double IS = m_model.model_value("IS");
+ nl_double BF = m_model.model_value("BF");
+ nl_double NF = m_model.model_value("NF");
//nl_double VJE = m_model.dValue("VJE", 0.75);
set_qtype((m_model.model_type() == "NPN") ? BJT_NPN : BJT_PNP);
@@ -230,11 +230,11 @@ NETLIB_UPDATE_TERMINALS(QBJT_EB)
NETLIB_UPDATE_PARAM(QBJT_EB)
{
- nl_double IS = m_model.model_value("IS", 1e-15);
- nl_double BF = m_model.model_value("BF", 100);
- nl_double NF = m_model.model_value("NF", 1);
- nl_double BR = m_model.model_value("BR", 1);
- nl_double NR = m_model.model_value("NR", 1);
+ nl_double IS = m_model.model_value("IS");
+ nl_double BF = m_model.model_value("BF");
+ nl_double NF = m_model.model_value("NF");
+ nl_double BR = m_model.model_value("BR");
+ nl_double NR = m_model.model_value("NR");
//nl_double VJE = m_model.dValue("VJE", 0.75);
set_qtype((m_model.model_type() == "NPN") ? BJT_NPN : BJT_PNP);
diff --git a/src/emu/netlist/analog/nld_bjt.h b/src/lib/netlist/analog/nld_bjt.h
index df0a68f5cf8..520321f2db2 100644
--- a/src/emu/netlist/analog/nld_bjt.h
+++ b/src/lib/netlist/analog/nld_bjt.h
@@ -8,27 +8,27 @@
#ifndef NLD_BJT_H_
#define NLD_BJT_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#include "nld_twoterm.h"
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// Macros
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
-#define QBJT_SW(_name, _model) \
- NET_REGISTER_DEV(QBJT_SW, _name) \
- NETDEV_PARAMI(_name, model, _model)
+#define QBJT_SW(_name, _model) \
+ NET_REGISTER_DEV(QBJT_SW, _name) \
+ NETDEV_PARAMI(_name, MODEL, _model)
-#define QBJT_EB(_name, _model) \
- NET_REGISTER_DEV(QBJT_EB, _name) \
- NETDEV_PARAMI(_name, model, _model)
+#define QBJT_EB(_name, _model) \
+ NET_REGISTER_DEV(QBJT_EB, _name) \
+ NETDEV_PARAMI(_name, MODEL, _model)
NETLIB_NAMESPACE_DEVICES_START()
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// nld_Q - Base classes
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// Have a common start for transistors
@@ -73,9 +73,9 @@ private:
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// nld_QBJT_switch
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
/*
@@ -126,9 +126,9 @@ protected:
private:
};
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// nld_QBJT_EB
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
class NETLIB_NAME(QBJT_EB) : public NETLIB_NAME(QBJT)
diff --git a/src/emu/netlist/analog/nld_fourterm.c b/src/lib/netlist/analog/nld_fourterm.c
index 58d173e6554..d7fd828e1f3 100644
--- a/src/emu/netlist/analog/nld_fourterm.c
+++ b/src/lib/netlist/analog/nld_fourterm.c
@@ -5,9 +5,9 @@
*
*/
-#include <solver/nld_solver.h>
+#include "solver/nld_solver.h"
#include "nld_fourterm.h"
-#include "../nl_setup.h"
+#include "nl_setup.h"
NETLIB_NAMESPACE_DEVICES_START()
@@ -52,7 +52,6 @@ NETLIB_RESET(VCCS)
const nl_double m_mult = m_G.Value() * m_gfac; // 1.0 ==> 1V ==> 1A
const nl_double GI = NL_FCONST(1.0) / m_RI.Value();
- //printf("VCCS %s RI %f\n", name().cstr(), m_RI.Value());
m_IP.set(GI);
m_IN.set(GI);
@@ -127,8 +126,6 @@ NETLIB_UPDATE_TERMINALS(LVCCS)
m_ON.set(-beta, NL_FCONST(0.0), -I);
m_ON1.set(beta, NL_FCONST(0.0));
- //printf("vi %f beta %f I %f\n", vi, beta, I);
-
}
// ----------------------------------------------------------------------------------------
diff --git a/src/emu/netlist/analog/nld_fourterm.h b/src/lib/netlist/analog/nld_fourterm.h
index 7ed6965a393..591df68dd79 100644
--- a/src/emu/netlist/analog/nld_fourterm.h
+++ b/src/lib/netlist/analog/nld_fourterm.h
@@ -9,7 +9,7 @@
#define NLD_FOURTERM_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#include "nld_twoterm.h"
// ----------------------------------------------------------------------------------------
diff --git a/src/emu/netlist/analog/nld_opamps.c b/src/lib/netlist/analog/nld_opamps.c
index b20989f9645..38a32b0d211 100644
--- a/src/emu/netlist/analog/nld_opamps.c
+++ b/src/lib/netlist/analog/nld_opamps.c
@@ -6,7 +6,7 @@
*/
#include "nld_opamps.h"
-#include "../devices/net_lib.h"
+#include "devices/net_lib.h"
NETLIST_START(opamp_lm3900)
@@ -42,20 +42,17 @@ NETLIB_NAMESPACE_DEVICES_START()
/*
* Type = 0: Impedance changer
- * 1; Ideal opamp
- * 2; opamp with first pole
- * 3: opamp with first pole + output limit
- * 4: opamp with input stage, first pole + output limit
+ * 1; Idealized opamp
+ * 2; opamp with first pole
+ * 3: opamp with first pole + output limit
+ * 4: opamp with input stage, first pole + output limit
*/
NETLIB_START(OPAMP)
{
- register_sub("RP1", m_RP);
- register_sub("CP1", m_CP);
- register_sub("G1", m_G1);
- register_sub("EBUF", m_EBUF);
- register_sub("DN", m_DN);
- register_sub("DP", m_DP);
+ register_param("MODEL", m_model, "");
+
+ m_type = m_model.model_value("TYPE");
register_input("VCC", m_VCC);
register_input("GND", m_GND);
@@ -64,12 +61,27 @@ NETLIB_START(OPAMP)
register_output("VH", m_VH);
register_output("VREF", m_VREF);
- register_param("model", m_model, "");
+ register_sub("G1", m_G1);
+ register_sub("RP1", m_RP);
- m_type = m_model.model_value("TYPE");
+ if (m_type == 1)
+ {
+ register_subalias("PLUS", "G1.IP");
+ register_subalias("MINUS", "G1.IN");
+ register_subalias("OUT", "G1.OP");
+
+ connect_late("G1.ON", "VREF");
+ connect_late("RP1.2", "VREF");
+ connect_late("RP1.1", "G1.OP");
- if (m_type == 3)
+ }
+ else if (m_type == 3)
{
+ register_sub("CP1", m_CP);
+ register_sub("EBUF", m_EBUF);
+ register_sub("DN", m_DN);
+ register_sub("DP", m_DP);
+
register_subalias("PLUS", "G1.IP");
register_subalias("MINUS", "G1.IN");
register_subalias("OUT", "EBUF.OP");
@@ -91,7 +103,7 @@ NETLIB_START(OPAMP)
connect_late("EBUF.IP", "RP1.1");
}
else
- netlist().error("Unknown opamp type: %d", m_type);
+ netlist().log().fatal("Unknown opamp type: {1}", m_type);
}
/* .model abc OPAMP(VLH=2.0 VLL=0.2 FPF=5 UGF=10k SLEW=0.6u RI=1000k RO=50 DAB=0.002)
@@ -111,27 +123,39 @@ NETLIB_UPDATE(OPAMP)
NETLIB_RESET(OPAMP)
{
- m_EBUF.do_reset();
m_G1.do_reset();
- m_DP.do_reset();
- m_DN.do_reset();
- m_CP.do_reset();
- m_RP.do_reset();
-
- m_EBUF.m_G.setTo(1.0);
m_G1.m_RI.setTo(m_model.model_value("RI"));
- m_EBUF.m_RO.setTo(m_model.model_value("RO"));
- m_DP.m_model.setTo(".model tt D(IS=1e-15 N=1)");
- m_DN.m_model.setTo(".model tt D(IS=1e-15 N=1)");
- double CP = m_model.model_value("DAB") / m_model.model_value("SLEW");
- double RP = 0.5 / 3.1459 / CP / m_model.model_value("FPF");
- double G = m_model.model_value("UGF") / m_model.model_value("FPF") / RP;
+ if (m_type == 1)
+ {
+ double RO = m_model.model_value("RO");
+ double G = m_model.model_value("UGF") / m_model.model_value("FPF") / RO;
+ m_RP.set_R(RO);
+ m_G1.m_G.setTo(G);
+ }
+ else if (m_type == 3)
+ {
+ m_EBUF.do_reset();
+ m_DP.do_reset();
+ m_DN.do_reset();
+ m_CP.do_reset();
+ m_RP.do_reset();
+
+ m_EBUF.m_G.setTo(1.0);
+ m_EBUF.m_RO.setTo(m_model.model_value("RO"));
+ m_DP.m_model.setTo("D(IS=1e-15 N=1)");
+ m_DN.m_model.setTo("D(IS=1e-15 N=1)");
+
+ double CP = m_model.model_value("DAB") / m_model.model_value("SLEW");
+ double RP = 0.5 / 3.1459 / CP / m_model.model_value("FPF");
+ double G = m_model.model_value("UGF") / m_model.model_value("FPF") / RP;
+
+ m_CP.m_C.setTo(CP);
+ m_RP.set_R(RP);
+ m_G1.m_G.setTo(G);
+
+ }
- //printf("CP=%e RP=%f G=%f\n", CP, RP, G);
- m_CP.m_C.setTo(CP);
- m_RP.set_R(RP);
- m_G1.m_G.setTo(G);
}
@@ -141,17 +165,16 @@ NETLIB_UPDATE_PARAM(OPAMP)
/*
NETLIB_DEVICE_WITH_PARAMS(OPAMPx,
- NETLIB_NAME(R) m_RP;
- NETLIB_NAME(C) m_CP;
- NETLIB_NAME(VCCS) m_G1;
- NETLIB_NAME(VCVS) m_EBUF;
-
- param_model_t m_model;
- analog_input_t m_VH;
- analog_input_t m_VL;
- analog_input_t m_VREF;
+ NETLIB_NAME(R) m_RP;
+ NETLIB_NAME(C) m_CP;
+ NETLIB_NAME(VCCS) m_G1;
+ NETLIB_NAME(VCVS) m_EBUF;
+
+ param_model_t m_model;
+ analog_input_t m_VH;
+ analog_input_t m_VL;
+ analog_input_t m_VREF;
);
*/
NETLIB_NAMESPACE_DEVICES_END()
-
diff --git a/src/emu/netlist/analog/nld_opamps.h b/src/lib/netlist/analog/nld_opamps.h
index f870c58b465..2cee8696bca 100644
--- a/src/emu/netlist/analog/nld_opamps.h
+++ b/src/lib/netlist/analog/nld_opamps.h
@@ -10,8 +10,8 @@
#ifndef NLD_OPAMPS_H_
#define NLD_OPAMPS_H_
-#include "../nl_base.h"
-#include "../nl_setup.h"
+#include "nl_base.h"
+#include "nl_setup.h"
#include "nld_twoterm.h"
#include "nld_fourterm.h"
@@ -21,7 +21,7 @@
#define OPAMP(_name, _model) \
NET_REGISTER_DEV(OPAMP, _name) \
- NETDEV_PARAMI(_name, model, _model)
+ NETDEV_PARAMI(_name, MODEL, _model)
#define LM3900(_name) \
SUBMODEL(opamp_lm3900, _name)
diff --git a/src/emu/netlist/analog/nld_switches.c b/src/lib/netlist/analog/nld_switches.c
index cf5dcd09c4b..6166463c6f8 100644
--- a/src/emu/netlist/analog/nld_switches.c
+++ b/src/lib/netlist/analog/nld_switches.c
@@ -6,7 +6,7 @@
*/
#include "nld_switches.h"
-#include "../nl_setup.h"
+#include "nl_setup.h"
#define R_OFF (1.0 / netlist().gmin())
#define R_ON 0.01
diff --git a/src/emu/netlist/analog/nld_switches.h b/src/lib/netlist/analog/nld_switches.h
index 79dc989c948..6cec34ceb4c 100644
--- a/src/emu/netlist/analog/nld_switches.h
+++ b/src/lib/netlist/analog/nld_switches.h
@@ -10,7 +10,7 @@
#ifndef NLD_SWITCHES_H_
#define NLD_SWITCHES_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#include "nld_twoterm.h"
// ----------------------------------------------------------------------------------------
diff --git a/src/emu/netlist/analog/nld_twoterm.c b/src/lib/netlist/analog/nld_twoterm.c
index 1a99dcaf90a..7c54910612f 100644
--- a/src/emu/netlist/analog/nld_twoterm.c
+++ b/src/lib/netlist/analog/nld_twoterm.c
@@ -169,7 +169,7 @@ NETLIB_UPDATE_PARAM(POT)
m_R2.update_dev();
m_R1.set_R(std::max(m_R.Value() * v, netlist().gmin()));
- m_R2.set_R(std::max(m_R.Value() * (1.0 - v), netlist().gmin()));
+ m_R2.set_R(std::max(m_R.Value() * (NL_FCONST(1.0) - v), netlist().gmin()));
}
@@ -264,7 +264,7 @@ NETLIB_START(D)
{
register_terminal("A", m_P);
register_terminal("K", m_N);
- register_param("model", m_model, "");
+ register_param("MODEL", m_model, "");
m_D.save("m_D", *this);
@@ -273,8 +273,8 @@ NETLIB_START(D)
NETLIB_UPDATE_PARAM(D)
{
- nl_double Is = m_model.model_value("Is", 1e-15);
- nl_double n = m_model.model_value("N", 1);
+ nl_double Is = m_model.model_value("IS");
+ nl_double n = m_model.model_value("N");
m_D.set_param(Is, n, netlist().gmin());
}
@@ -333,7 +333,6 @@ NETLIB_START(CS)
NETLIB_RESET(CS)
{
NETLIB_NAME(twoterm)::reset();
- printf("m_I %f\n", m_I.Value());
this->set(0.0, 0.0, m_I);
}
diff --git a/src/emu/netlist/analog/nld_twoterm.h b/src/lib/netlist/analog/nld_twoterm.h
index c6714d62d45..27da8ba258e 100644
--- a/src/emu/netlist/analog/nld_twoterm.h
+++ b/src/lib/netlist/analog/nld_twoterm.h
@@ -24,23 +24,23 @@
* +-----T-----+
* (l)
*
- * This is a resistance in series to a voltage source and paralleled by a current source.
- * This is suitable to model voltage sources, current sources, resistors, capacitors,
- * inductances and diodes.
+ * This is a resistance in series to a voltage source and paralleled by a
+ * current source. This is suitable to model voltage sources, current sources,
+ * resistors, capacitors, inductances and diodes.
*
*/
#ifndef NLD_TWOTERM_H_
#define NLD_TWOTERM_H_
-#include "../nl_base.h"
+#include "nl_base.h"
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// Macros
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
#define RES(_name, _R) \
- NET_REGISTER_DEV(RES, _name) \
+ NET_REGISTER_DEV(RES, _name) \
NETDEV_PARAMI(_name, R, _R)
#define POT(_name, _R) \
@@ -54,13 +54,13 @@
#define CAP(_name, _C) \
- NET_REGISTER_DEV(CAP, _name) \
+ NET_REGISTER_DEV(CAP, _name) \
NETDEV_PARAMI(_name, C, _C)
/* Generic Diode */
#define DIODE(_name, _model) \
- NET_REGISTER_DEV(DIODE, _name) \
- NETDEV_PARAMI(_name, model, _model)
+ NET_REGISTER_DEV(DIODE, _name) \
+ NETDEV_PARAMI(_name, MODEL, _model)
#define VS(_name, _V) \
NET_REGISTER_DEV(VS, _name) \
@@ -70,9 +70,9 @@
NET_REGISTER_DEV(CS, _name) \
NETDEV_PARAMI(_name, I, _I)
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// Generic macros
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
#ifdef RES_R
@@ -90,15 +90,15 @@
#define IND_N(ind) ((double)(ind) * 1e-9)
#define IND_P(ind) ((double)(ind) * 1e-12)
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// Implementation
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
NETLIB_NAMESPACE_DEVICES_START()
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// nld_twoterm
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
class NETLIB_NAME(twoterm) : public device_t
{
@@ -140,9 +140,9 @@ protected:
private:
};
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// nld_R
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
class NETLIB_NAME(R_base) : public NETLIB_NAME(twoterm)
{
@@ -164,9 +164,9 @@ NETLIB_DEVICE_WITH_PARAMS_DERIVED(R, R_base,
param_double_t m_R;
);
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// nld_POT
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
NETLIB_DEVICE_WITH_PARAMS(POT,
NETLIB_NAME(R_base) m_R1;
@@ -187,9 +187,9 @@ NETLIB_DEVICE_WITH_PARAMS(POT2,
);
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// nld_C
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
class NETLIB_NAME(C) : public NETLIB_NAME(twoterm)
{
@@ -212,9 +212,9 @@ private:
};
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// A generic diode model to be used in other devices (Diode, BJT ...)
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
class generic_diode
{
@@ -257,7 +257,6 @@ public:
m_Id = m_Is * (eVDVt - NL_FCONST(1.0));
m_G = m_Is * m_VtInv * eVDVt + m_gmin;
#endif
- //printf("%p nVd %f m_Vd %f Vcrit %f\n", this, nVd, m_Vd, m_Vcrit);
}
ATTR_COLD void set_param(const nl_double Is, const nl_double n, nl_double gmin);
@@ -285,9 +284,9 @@ private:
nl_double m_Vcrit;
};
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// nld_D
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
class NETLIB_NAME(D) : public NETLIB_NAME(twoterm)
{
@@ -306,11 +305,11 @@ protected:
generic_diode m_D;
};
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// nld_VS - Voltage source
//
// netlist voltage source must have inner resistance
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
class NETLIB_NAME(VS) : public NETLIB_NAME(twoterm)
{
@@ -326,9 +325,9 @@ protected:
param_double_t m_V;
};
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
// nld_CS - Current source
-// ----------------------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
class NETLIB_NAME(CS) : public NETLIB_NAME(twoterm)
{
diff --git a/src/lib/netlist/build/makefile b/src/lib/netlist/build/makefile
new file mode 100644
index 00000000000..162b21a0ce6
--- /dev/null
+++ b/src/lib/netlist/build/makefile
@@ -0,0 +1,166 @@
+###########################################################################
+#
+# makefile
+#
+# Core makefile for building MAME and derivatives
+#
+# Copyright (c) Nicola Salmoria and the MAME Team.
+# Visit http://mamedev.org for licensing and usage restrictions.
+#
+###########################################################################
+
+OBJ = obj
+SRC = ..
+
+#-fuse-ld=gold -Wpedantic -march=native -march=native
+
+# LTO = -flto=4 -fuse-linker-plugin -flto-partition=balanced -Wodr
+
+CDEFS = -DPSTANDALONE=1 -DPTR64=1
+#-Werror
+CFLAGS = $(LTO) -g -O3 -std=c++98 -march=native -msse4.2 -Wall -Wpedantic -Wsign-compare -Wextra -Wno-long-long -Wno-unused-parameter -Wno-unused-result -Wno-variadic-macros -I..
+LDFLAGS = $(LTO) -g -O3 -std=c++98
+#CFLAGS = $(LTO) -g -O3 -std=c++11 -Wall -Wpedantic -Wsign-compare -Wextra -Isrc
+#LDFLAGS = $(LTO) -g -O3 -std=c++11
+
+CC = @g++-5
+LD = @g++-5
+MD = @mkdir
+RM = @rm
+
+TARGETS = nltool nlwav
+
+NLOBJ = $(OBJ)
+POBJ = $(OBJ)/plib
+
+OBJDIRS = $(OBJ) \
+ $(OBJ)/analog \
+ $(OBJ)/solver \
+ $(OBJ)/devices \
+ $(OBJ)/plib \
+ $(OBJ)/devices \
+ $(OBJ)/macro \
+ $(OBJ)/tools \
+ $(OBJ)/prg \
+
+
+OBJS = $(POBJS) $(NLOBJS)
+
+POBJS := \
+ $(POBJ)/pstring.o \
+ $(POBJ)/palloc.o \
+ $(POBJ)/pparser.o \
+ $(POBJ)/pstate.o \
+ $(POBJ)/pstream.o \
+
+NLOBJS := \
+ $(NLOBJ)/nl_base.o \
+ $(NLOBJ)/nl_parser.o \
+ $(NLOBJ)/nl_setup.o \
+ $(NLOBJ)/nl_factory.o \
+ $(NLOBJ)/analog/nld_bjt.o \
+ $(NLOBJ)/analog/nld_fourterm.o \
+ $(NLOBJ)/analog/nld_switches.o \
+ $(NLOBJ)/analog/nld_twoterm.o \
+ $(NLOBJ)/analog/nld_opamps.o \
+ $(NLOBJ)/devices/nld_4020.o \
+ $(NLOBJ)/devices/nld_4066.o \
+ $(NLOBJ)/devices/nld_7400.o \
+ $(NLOBJ)/devices/nld_7402.o \
+ $(NLOBJ)/devices/nld_7404.o \
+ $(NLOBJ)/devices/nld_7408.o \
+ $(NLOBJ)/devices/nld_7410.o \
+ $(NLOBJ)/devices/nld_7411.o \
+ $(NLOBJ)/devices/nld_7420.o \
+ $(NLOBJ)/devices/nld_7425.o \
+ $(NLOBJ)/devices/nld_7427.o \
+ $(NLOBJ)/devices/nld_7430.o \
+ $(NLOBJ)/devices/nld_7432.o \
+ $(NLOBJ)/devices/nld_7437.o \
+ $(NLOBJ)/devices/nld_7448.o \
+ $(NLOBJ)/devices/nld_7450.o \
+ $(NLOBJ)/devices/nld_7474.o \
+ $(NLOBJ)/devices/nld_7483.o \
+ $(NLOBJ)/devices/nld_7486.o \
+ $(NLOBJ)/devices/nld_7490.o \
+ $(NLOBJ)/devices/nld_7493.o \
+ $(NLOBJ)/devices/nld_74107.o \
+ $(NLOBJ)/devices/nld_74123.o \
+ $(NLOBJ)/devices/nld_74153.o \
+ $(NLOBJ)/devices/nld_74175.o \
+ $(NLOBJ)/devices/nld_74192.o \
+ $(NLOBJ)/devices/nld_74193.o \
+ $(NLOBJ)/devices/nld_74279.o \
+ $(NLOBJ)/devices/nld_74ls629.o \
+ $(NLOBJ)/devices/nld_82S16.o \
+ $(NLOBJ)/devices/nld_9310.o \
+ $(NLOBJ)/devices/nld_9312.o \
+ $(NLOBJ)/devices/nld_9316.o \
+ $(NLOBJ)/devices/nld_mm5837.o \
+ $(NLOBJ)/devices/nld_ne555.o \
+ $(NLOBJ)/devices/nld_r2r_dac.o \
+ $(NLOBJ)/devices/nld_legacy.o \
+ $(NLOBJ)/devices/net_lib.o \
+ $(NLOBJ)/devices/nld_log.o \
+ $(NLOBJ)/devices/nld_system.o \
+ $(NLOBJ)/devices/nld_truthtable.o \
+ $(NLOBJ)/macro/nlm_cd4xxx.o \
+ $(NLOBJ)/macro/nlm_opamp.o \
+ $(NLOBJ)/macro/nlm_other.o \
+ $(NLOBJ)/macro/nlm_ttl74xx.o \
+ $(NLOBJ)/solver/nld_solver.o \
+ $(NLOBJ)/tools/nl_convert.o \
+
+all: maketree $(TARGETS)
+
+#-------------------------------------------------
+# clean
+#-------------------------------------------------
+
+clean:
+ $(RM) -rf $(OBJS) $(TARGETS)
+
+#-------------------------------------------------
+# nltool
+#-------------------------------------------------
+
+nltool: $(OBJ)/prg/nltool.o $(OBJS)
+ @echo Linking $@...
+ $(LD) -o $@ $(LDFLAGS) $^ $(LIBS)
+
+nlwav: $(OBJ)/prg/nlwav.o $(OBJS)
+ @echo Linking $@...
+ $(LD) -o $@ $(LDFLAGS) $^ $(LIBS)
+
+#-------------------------------------------------
+# directories
+#-------------------------------------------------
+
+$(sort $(OBJDIRS)):
+ $(MD) -p $@
+
+maketree: $(sort $(OBJDIRS))
+
+
+#-------------------------------------------------
+# generic rules
+#-------------------------------------------------
+
+$(OBJ)/%.o: $(SRC)/%.c
+ @echo Compiling $<...
+ $(CC) $(CDEFS) $(CFLAGS) -c $< -o $@
+
+$(OBJ)/%.pp: $(SRC)/%.c | $(OSPREBUILD)
+ @echo Compiling $<...
+ $(CC) $(CDEFS) $(CFLAGS) -E $< -o $@
+
+$(OBJ)/%.s: $(SRC)/%.c | $(OSPREBUILD)
+ @echo Compiling $<...
+ $(CC) $(CDEFS) $(CFLAGS) -S $< -o $@
+
+$(OBJ)/%.a:
+ @echo Archiving $@...
+ $(RM) $@
+ $(AR) $(ARFLAGS) $@ $^
+
+
diff --git a/src/emu/netlist/devices/net_lib.c b/src/lib/netlist/devices/net_lib.c
index 02a004453da..3b8edc8ac84 100644
--- a/src/emu/netlist/devices/net_lib.c
+++ b/src/lib/netlist/devices/net_lib.c
@@ -10,40 +10,48 @@
#include "net_lib.h"
#include "nld_system.h"
-#include "../nl_factory.h"
+#include "nl_factory.h"
NETLIST_START(diode_models)
- NET_MODEL(".model 1N914 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)")
- NET_MODEL(".model 1N4001 D(Is=14.11n N=1.984 Rs=33.89m Ikf=94.81 Xti=3 Eg=1.11 Cjo=25.89p M=.44 Vj=.3245 Fc=.5 Bv=75 Ibv=10u Tt=5.7u Iave=1 Vpk=50 mfg=GI type=silicon)")
- NET_MODEL(".model 1N4148 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)")
- NET_MODEL(".model 1S1588 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75)")
- NET_MODEL(".model LedRed D(IS=93.2p RS=42M N=3.73 BV=4 IBV=10U CJO=2.97P VJ=.75 M=.333 TT=4.32U Iave=40m Vpk=4 type=LED)")
- NET_MODEL(".model LedGreen D(IS=93.2p RS=42M N=4.61 BV=4 IBV=10U CJO=2.97P VJ=.75 M=.333 TT=4.32U Iave=40m Vpk=4 type=LED)")
- NET_MODEL(".model LedBlue D(IS=93.2p RS=42M N=7.47 BV=5 IBV=10U CJO=2.97P VJ=.75 M=.333 TT=4.32U Iave=40m Vpk=5 type=LED)")
- NET_MODEL(".model LedWhite D(Is=0.27n Rs=5.65 N=6.79 Cjo=42p Iave=30m Vpk=5 type=LED)")
+ NET_MODEL("D _(IS=1e-15 N=1)")
+
+ NET_MODEL("1N914 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)")
+ NET_MODEL("1N4001 D(Is=14.11n N=1.984 Rs=33.89m Ikf=94.81 Xti=3 Eg=1.11 Cjo=25.89p M=.44 Vj=.3245 Fc=.5 Bv=75 Ibv=10u Tt=5.7u Iave=1 Vpk=50 mfg=GI type=silicon)")
+ NET_MODEL("1N4148 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)")
+ NET_MODEL("1S1588 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75)")
+ NET_MODEL("LedRed D(IS=93.2p RS=42M N=3.73 BV=4 IBV=10U CJO=2.97P VJ=.75 M=.333 TT=4.32U Iave=40m Vpk=4 type=LED)")
+ NET_MODEL("LedGreen D(IS=93.2p RS=42M N=4.61 BV=4 IBV=10U CJO=2.97P VJ=.75 M=.333 TT=4.32U Iave=40m Vpk=4 type=LED)")
+ NET_MODEL("LedBlue D(IS=93.2p RS=42M N=7.47 BV=5 IBV=10U CJO=2.97P VJ=.75 M=.333 TT=4.32U Iave=40m Vpk=5 type=LED)")
+ NET_MODEL("LedWhite D(Is=0.27n Rs=5.65 N=6.79 Cjo=42p Iave=30m Vpk=5 type=LED)")
NETLIST_END()
NETLIST_START(bjt_models)
- NET_MODEL(".model 2SA1015 PNP(Is=295.1E-18 Xti=3 Eg=1.11 Vaf=100 Bf=110 Xtb=1.5 Br=10.45 Rc=15 Cjc=66.2p Mjc=1.054 Vjc=.75 Fc=.5 Cje=5p Mje=.3333 Vje=.75 Tr=10n Tf=1.661n VCEO=45V ICrating=150M MFG=Toshiba)")
- NET_MODEL(".model 2SC1815 NPN(Is=2.04f Xti=3 Eg=1.11 Vaf=6 Bf=400 Ikf=20m Xtb=1.5 Br=3.377 Rc=1 Cjc=1p Mjc=.3333 Vjc=.75 Fc=.5 Cje=25p Mje=.3333 Vje=.75 Tr=450n Tf=20n Itf=0 Vtf=0 Xtf=0 VCEO=45V ICrating=150M MFG=Toshiba)")
+ NET_MODEL("NPN _(IS=1e-15 BF=100 NF=1 BR=1 NR=1)")
+ NET_MODEL("PNP _(IS=1e-15 BF=100 NF=1 BR=1 NR=1)")
+
+ NET_MODEL("2SA1015 PNP(Is=295.1E-18 Xti=3 Eg=1.11 Vaf=100 Bf=110 Xtb=1.5 Br=10.45 Rc=15 Cjc=66.2p Mjc=1.054 Vjc=.75 Fc=.5 Cje=5p Mje=.3333 Vje=.75 Tr=10n Tf=1.661n VCEO=45V ICrating=150M MFG=Toshiba)")
+ NET_MODEL("2SC1815 NPN(Is=2.04f Xti=3 Eg=1.11 Vaf=6 Bf=400 Ikf=20m Xtb=1.5 Br=3.377 Rc=1 Cjc=1p Mjc=.3333 Vjc=.75 Fc=.5 Cje=25p Mje=.3333 Vje=.75 Tr=450n Tf=20n Itf=0 Vtf=0 Xtf=0 VCEO=45V ICrating=150M MFG=Toshiba)")
- NET_MODEL(".model 2N3643 NPN(IS=14.34E-15 ISE=14.34E-15 ISC=0 XTI=3 BF=255.9 BR=6.092 IKF=0.2847 IKR=0 XTB=1.5 VAF=74.03 VAR=28 VJE=0.65 VJC=0.65 RE=0.1 RC=1 RB=10 CJE=22.01E-12 CJC=7.306E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.307 NC=2 MJE=0.377 MJC=0.3416 TF=411.1E-12 TR=46.91E-9 ITF=0.6 VTF=1.7 XTF=3 EG=1.11 KF=0 AF=1 VCEO=30 ICRATING=500m MFG=NSC)")
- NET_MODEL(".model 2N3645 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 RE=0.15 RC=0.715 RB=10 CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 EG=1.11 KF=0 AF=1 VCEO=60 ICRATING=500m MFG=NSC)")
+ NET_MODEL("2N3643 NPN(IS=14.34E-15 ISE=14.34E-15 ISC=0 XTI=3 BF=255.9 BR=6.092 IKF=0.2847 IKR=0 XTB=1.5 VAF=74.03 VAR=28 VJE=0.65 VJC=0.65 RE=0.1 RC=1 RB=10 CJE=22.01E-12 CJC=7.306E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.307 NC=2 MJE=0.377 MJC=0.3416 TF=411.1E-12 TR=46.91E-9 ITF=0.6 VTF=1.7 XTF=3 EG=1.11 KF=0 AF=1 VCEO=30 ICRATING=500m MFG=NSC)")
+ NET_MODEL("2N3645 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 RE=0.15 RC=0.715 RB=10 CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 EG=1.11 KF=0 AF=1 VCEO=60 ICRATING=500m MFG=NSC)")
// 3644 = 3645 Difference between 3644 and 3645 is voltage rating. 3644: VCBO=45, 3645: VCBO=60
- NET_MODEL(".model 2N3644 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 RE=0.15 RC=0.715 RB=10 CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 EG=1.11 KF=0 AF=1 VCEO=60 ICRATING=500m MFG=NSC)")
+ NET_MODEL("2N3644 PNP(IS=650.6E-18 ISE=54.81E-15 ISC=0 XTI=3 BF=231.7 BR=3.563 IKF=1.079 IKR=0 XTB=1.5 VAF=115.7 VAR=35 VJE=0.65 VJC=0.65 RE=0.15 RC=0.715 RB=10 CJE=19.82E-12 CJC=14.76E-12 XCJC=0.75 FC=0.5 NF=1 NR=1 NE=1.829 NC=2 MJE=0.3357 MJC=0.5383 TF=603.7E-12 TR=111.3E-9 ITF=0.65 VTF=5 XTF=1.7 EG=1.11 KF=0 AF=1 VCEO=60 ICRATING=500m MFG=NSC)")
// 2N5190 = BC817-25
- NET_MODEL(".model 2N5190 NPN(IS=9.198E-14 NF=1.003 ISE=4.468E-16 NE=1.65 BF=338.8 IKF=0.4913 VAF=107.9 NR=1.002 ISC=5.109E-15 NC=1.071 BR=29.48 IKR=0.193 VAR=25 RB=1 IRB=1000 RBM=1 RE=0.2126 RC=0.143 XTB=0 EG=1.11 XTI=3 CJE=3.825E-11 VJE=0.7004 MJE=0.364 TF=5.229E-10 XTF=219.7 VTF=3.502 ITF=7.257 PTF=0 CJC=1.27E-11 VJC=0.4431 MJC=0.3983 XCJC=0.4555 TR=7E-11 CJS=0 VJS=0.75 MJS=0.333 FC=0.905 Vceo=45 Icrating=500m mfg=Philips)")
- NET_MODEL(".model 2SC945 NPN(IS=3.577E-14 BF=2.382E+02 NF=1.01 VAF=1.206E+02 IKF=3.332E-01 ISE=3.038E-16 NE=1.205 BR=1.289E+01 NR=1.015 VAR=1.533E+01 IKR=2.037E-01 ISC=3.972E-14 NC=1.115 RB=3.680E+01 IRB=1.004E-04 RBM=1 RE=8.338E-01 RC=1.557E+00 CJE=1.877E-11 VJE=7.211E-01 MJE=3.486E-01 TF=4.149E-10 XTF=1.000E+02 VTF=9.956 ITF=5.118E-01 PTF=0 CJC=6.876p VJC=3.645E-01 MJC=3.074E-01 TR=5.145E-08 XTB=1.5 EG=1.11 XTI=3 FC=0.5 Vceo=50 Icrating=100m MFG=NEC)")
+ NET_MODEL("2N5190 NPN(IS=9.198E-14 NF=1.003 ISE=4.468E-16 NE=1.65 BF=338.8 IKF=0.4913 VAF=107.9 NR=1.002 ISC=5.109E-15 NC=1.071 BR=29.48 IKR=0.193 VAR=25 RB=1 IRB=1000 RBM=1 RE=0.2126 RC=0.143 XTB=0 EG=1.11 XTI=3 CJE=3.825E-11 VJE=0.7004 MJE=0.364 TF=5.229E-10 XTF=219.7 VTF=3.502 ITF=7.257 PTF=0 CJC=1.27E-11 VJC=0.4431 MJC=0.3983 XCJC=0.4555 TR=7E-11 CJS=0 VJS=0.75 MJS=0.333 FC=0.905 Vceo=45 Icrating=500m mfg=Philips)")
+ NET_MODEL("2SC945 NPN(IS=3.577E-14 BF=2.382E+02 NF=1.01 VAF=1.206E+02 IKF=3.332E-01 ISE=3.038E-16 NE=1.205 BR=1.289E+01 NR=1.015 VAR=1.533E+01 IKR=2.037E-01 ISC=3.972E-14 NC=1.115 RB=3.680E+01 IRB=1.004E-04 RBM=1 RE=8.338E-01 RC=1.557E+00 CJE=1.877E-11 VJE=7.211E-01 MJE=3.486E-01 TF=4.149E-10 XTF=1.000E+02 VTF=9.956 ITF=5.118E-01 PTF=0 CJC=6.876p VJC=3.645E-01 MJC=3.074E-01 TR=5.145E-08 XTB=1.5 EG=1.11 XTI=3 FC=0.5 Vceo=50 Icrating=100m MFG=NEC)")
- NET_MODEL(".model BC237B NPN(IS=1.8E-14 ISE=5.0E-14 ISC=1.72E-13 XTI=3 BF=400 BR=35.5 IKF=0.14 IKR=0.03 XTB=1.5 VAF=80 VAR=12.5 VJE=0.58 VJC=0.54 RE=0.6 RC=0.25 RB=0.56 CJE=13E-12 CJC=4E-12 XCJC=0.75 FC=0.5 NF=0.9955 NR=1.005 NE=1.46 NC=1.27 MJE=0.33 MJC=0.33 TF=0.64E-9 TR=50.72E-9 EG=1.11 KF=0 AF=1 VCEO=45V ICRATING=100M MFG=ZETEX)")
- NET_MODEL(".model BC556B PNP(IS=3.83E-14 NF=1.008 ISE=1.22E-14 NE=1.528 BF=344.4 IKF=0.08039 VAF=21.11 NR=1.005 ISC=2.85E-13 NC=1.28 BR=14.84 IKR=0.047 VAR=32.02 RB=1 IRB=1.00E-06 RBM=1 RE=0.6202 RC=0.5713 XTB=0 EG=1.11 XTI=3 CJE=1.23E-11 VJE=0.6106 MJE=0.378 TF=5.60E-10 XTF=3.414 VTF=5.23 ITF=0.1483 PTF=0 CJC=1.08E-11 VJC=0.1022 MJC=0.3563 XCJC=0.6288 TR=1.00E-32 CJS=0 VJS=0.75 MJS=0.333 FC=0.8027 Vceo=65 Icrating=100m mfg=Philips)")
- NET_MODEL(".model BC817-25 NPN(IS=9.198E-14 NF=1.003 ISE=4.468E-16 NE=1.65 BF=338.8 IKF=0.4913 VAF=107.9 NR=1.002 ISC=5.109E-15 NC=1.071 BR=29.48 IKR=0.193 VAR=25 RB=1 IRB=1000 RBM=1 RE=0.2126 RC=0.143 XTB=0 EG=1.11 XTI=3 CJE=3.825E-11 VJE=0.7004 MJE=0.364 TF=5.229E-10 XTF=219.7 VTF=3.502 ITF=7.257 PTF=0 CJC=1.27E-11 VJC=0.4431 MJC=0.3983 XCJC=0.4555 TR=7E-11 CJS=0 VJS=0.75 MJS=0.333 FC=0.905 Vceo=45 Icrating=500m mfg=Philips)")
+ NET_MODEL("BC237B NPN(IS=1.8E-14 ISE=5.0E-14 ISC=1.72E-13 XTI=3 BF=400 BR=35.5 IKF=0.14 IKR=0.03 XTB=1.5 VAF=80 VAR=12.5 VJE=0.58 VJC=0.54 RE=0.6 RC=0.25 RB=0.56 CJE=13E-12 CJC=4E-12 XCJC=0.75 FC=0.5 NF=0.9955 NR=1.005 NE=1.46 NC=1.27 MJE=0.33 MJC=0.33 TF=0.64E-9 TR=50.72E-9 EG=1.11 KF=0 AF=1 VCEO=45V ICRATING=100M MFG=ZETEX)")
+ NET_MODEL("BC556B PNP(IS=3.83E-14 NF=1.008 ISE=1.22E-14 NE=1.528 BF=344.4 IKF=0.08039 VAF=21.11 NR=1.005 ISC=2.85E-13 NC=1.28 BR=14.84 IKR=0.047 VAR=32.02 RB=1 IRB=1.00E-06 RBM=1 RE=0.6202 RC=0.5713 XTB=0 EG=1.11 XTI=3 CJE=1.23E-11 VJE=0.6106 MJE=0.378 TF=5.60E-10 XTF=3.414 VTF=5.23 ITF=0.1483 PTF=0 CJC=1.08E-11 VJC=0.1022 MJC=0.3563 XCJC=0.6288 TR=1.00E-32 CJS=0 VJS=0.75 MJS=0.333 FC=0.8027 Vceo=65 Icrating=100m mfg=Philips)")
+ NET_MODEL("BC817-25 NPN(IS=9.198E-14 NF=1.003 ISE=4.468E-16 NE=1.65 BF=338.8 IKF=0.4913 VAF=107.9 NR=1.002 ISC=5.109E-15 NC=1.071 BR=29.48 IKR=0.193 VAR=25 RB=1 IRB=1000 RBM=1 RE=0.2126 RC=0.143 XTB=0 EG=1.11 XTI=3 CJE=3.825E-11 VJE=0.7004 MJE=0.364 TF=5.229E-10 XTF=219.7 VTF=3.502 ITF=7.257 PTF=0 CJC=1.27E-11 VJC=0.4431 MJC=0.3983 XCJC=0.4555 TR=7E-11 CJS=0 VJS=0.75 MJS=0.333 FC=0.905 Vceo=45 Icrating=500m mfg=Philips)")
NETLIST_END()
NETLIST_START(family_models)
- NET_MODEL(".model 74XXOC FAMILY(IVL=0.8 IVH=2.0 OVL=0.1 OVH=4.95 ORL=10.0 ORH=1.0e8)")
- NET_MODEL(".model CD4XXX FAMILY(TYPE=CD4XXX)")
+ NET_MODEL("FAMILY _(TYPE=CUSTOM IVL=0.8 IVH=2.0 OVL=0.1 OVH=4.0 ORL=1.0 ORH=130.0)")
+ NET_MODEL("OPAMP _()")
+
+ NET_MODEL("74XXOC FAMILY(IVL=0.8 IVH=2.0 OVL=0.1 OVH=4.95 ORL=10.0 ORH=1.0e8)")
+ NET_MODEL("CD4XXX FAMILY(TYPE=CD4XXX)")
NETLIST_END()
@@ -59,19 +67,19 @@ void initialize_factory(factory_list_t &factory)
ENTRY(POT, POT, "R")
ENTRY(POT2, POT2, "R")
ENTRY(C, CAP, "C")
- ENTRY(D, DIODE, "model")
+ ENTRY(D, DIODE, "MODEL")
ENTRY(VCVS, VCVS, "-")
ENTRY(VCCS, VCCS, "-")
ENTRY(CCCS, CCCS, "-")
ENTRY(LVCCS, LVCCS, "-")
- ENTRY(VS, VS, "V")
+ ENTRY(VS, VS, "V")
ENTRY(CS, CS, "I")
- ENTRY(OPAMP, OPAMP, "model")
+ ENTRY(OPAMP, OPAMP, "MODEL")
ENTRY(dummy_input, DUMMY_INPUT, "-")
ENTRY(frontier, FRONTIER_DEV, "+I,G,Q") // not intended to be used directly
- ENTRY(function, AFUNC, "N,FUNC") // only for macro devices - NO FEEDBACK loops
- ENTRY(QBJT_EB, QBJT_EB, "model")
- ENTRY(QBJT_switch, QBJT_SW, "model")
+ ENTRY(function, AFUNC, "N,FUNC") // only for macro devices - NO FEEDBACK loops
+ ENTRY(QBJT_EB, QBJT_EB, "MODEL")
+ ENTRY(QBJT_switch, QBJT_SW, "MODEL")
ENTRY(logic_input, TTL_INPUT, "IN")
ENTRY(logic_input, LOGIC_INPUT, "IN,FAMILY")
ENTRY(analog_input, ANALOG_INPUT, "IN")
diff --git a/src/emu/netlist/devices/net_lib.h b/src/lib/netlist/devices/net_lib.h
index 4f10aee0651..eed3bd6120f 100644
--- a/src/emu/netlist/devices/net_lib.h
+++ b/src/lib/netlist/devices/net_lib.h
@@ -11,7 +11,7 @@
#ifndef NET_LIB_H
#define NET_LIB_H
-#include "../nl_base.h"
+#include "nl_base.h"
#include "nld_signal.h"
#include "nld_system.h"
@@ -56,16 +56,17 @@
#include "nld_log.h"
-#include "../macro/nlm_cd4xxx.h"
-#include "../macro/nlm_ttl74xx.h"
-#include "../macro/nlm_opamp.h"
+#include "macro/nlm_cd4xxx.h"
+#include "macro/nlm_ttl74xx.h"
+#include "macro/nlm_opamp.h"
+#include "macro/nlm_other.h"
-#include "../analog/nld_bjt.h"
-#include "../analog/nld_fourterm.h"
-#include "../analog/nld_switches.h"
-#include "../analog/nld_twoterm.h"
-#include "../analog/nld_opamps.h"
-#include "../solver/nld_solver.h"
+#include "analog/nld_bjt.h"
+#include "analog/nld_fourterm.h"
+#include "analog/nld_switches.h"
+#include "analog/nld_twoterm.h"
+#include "analog/nld_opamps.h"
+#include "solver/nld_solver.h"
#include "nld_legacy.h"
diff --git a/src/emu/netlist/devices/nld_4020.c b/src/lib/netlist/devices/nld_4020.c
index efb52d063b4..efb52d063b4 100644
--- a/src/emu/netlist/devices/nld_4020.c
+++ b/src/lib/netlist/devices/nld_4020.c
diff --git a/src/emu/netlist/devices/nld_4020.h b/src/lib/netlist/devices/nld_4020.h
index d4814471fc1..78d7199db1b 100644
--- a/src/emu/netlist/devices/nld_4020.h
+++ b/src/lib/netlist/devices/nld_4020.h
@@ -27,7 +27,7 @@
#ifndef NLD_4020_H_
#define NLD_4020_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#include "nld_cmos.h"
/* FIXME: only used in mario.c */
diff --git a/src/emu/netlist/devices/nld_4066.c b/src/lib/netlist/devices/nld_4066.c
index 535314c0aa4..535314c0aa4 100644
--- a/src/emu/netlist/devices/nld_4066.c
+++ b/src/lib/netlist/devices/nld_4066.c
diff --git a/src/emu/netlist/devices/nld_4066.h b/src/lib/netlist/devices/nld_4066.h
index e9fc1bfec26..abfe321a7c4 100644
--- a/src/emu/netlist/devices/nld_4066.h
+++ b/src/lib/netlist/devices/nld_4066.h
@@ -24,7 +24,7 @@
#ifndef NLD_4066_H_
#define NLD_4066_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#include "nld_cmos.h"
#define CD4066_GATE(_name) \
diff --git a/src/emu/netlist/devices/nld_7400.c b/src/lib/netlist/devices/nld_7400.c
index 188b8ad5529..188b8ad5529 100644
--- a/src/emu/netlist/devices/nld_7400.c
+++ b/src/lib/netlist/devices/nld_7400.c
diff --git a/src/emu/netlist/devices/nld_7400.h b/src/lib/netlist/devices/nld_7400.h
index 97bdda0a912..97bdda0a912 100644
--- a/src/emu/netlist/devices/nld_7400.h
+++ b/src/lib/netlist/devices/nld_7400.h
diff --git a/src/emu/netlist/devices/nld_7402.c b/src/lib/netlist/devices/nld_7402.c
index 0e5695bebc9..0e5695bebc9 100644
--- a/src/emu/netlist/devices/nld_7402.c
+++ b/src/lib/netlist/devices/nld_7402.c
diff --git a/src/emu/netlist/devices/nld_7402.h b/src/lib/netlist/devices/nld_7402.h
index 1d11236488b..1d11236488b 100644
--- a/src/emu/netlist/devices/nld_7402.h
+++ b/src/lib/netlist/devices/nld_7402.h
diff --git a/src/emu/netlist/devices/nld_7404.c b/src/lib/netlist/devices/nld_7404.c
index 5bfd08c7d1e..5bfd08c7d1e 100644
--- a/src/emu/netlist/devices/nld_7404.c
+++ b/src/lib/netlist/devices/nld_7404.c
diff --git a/src/emu/netlist/devices/nld_7404.h b/src/lib/netlist/devices/nld_7404.h
index 60465f74d9c..60465f74d9c 100644
--- a/src/emu/netlist/devices/nld_7404.h
+++ b/src/lib/netlist/devices/nld_7404.h
diff --git a/src/emu/netlist/devices/nld_7408.c b/src/lib/netlist/devices/nld_7408.c
index a0a54d6cf82..a0a54d6cf82 100644
--- a/src/emu/netlist/devices/nld_7408.c
+++ b/src/lib/netlist/devices/nld_7408.c
diff --git a/src/emu/netlist/devices/nld_7408.h b/src/lib/netlist/devices/nld_7408.h
index 9304d5c554d..9304d5c554d 100644
--- a/src/emu/netlist/devices/nld_7408.h
+++ b/src/lib/netlist/devices/nld_7408.h
diff --git a/src/emu/netlist/devices/nld_7410.c b/src/lib/netlist/devices/nld_7410.c
index 9564ecd4e4f..9564ecd4e4f 100644
--- a/src/emu/netlist/devices/nld_7410.c
+++ b/src/lib/netlist/devices/nld_7410.c
diff --git a/src/emu/netlist/devices/nld_7410.h b/src/lib/netlist/devices/nld_7410.h
index d6e97838c7b..d6e97838c7b 100644
--- a/src/emu/netlist/devices/nld_7410.h
+++ b/src/lib/netlist/devices/nld_7410.h
diff --git a/src/emu/netlist/devices/nld_74107.c b/src/lib/netlist/devices/nld_74107.c
index 542c80a5b43..542c80a5b43 100644
--- a/src/emu/netlist/devices/nld_74107.c
+++ b/src/lib/netlist/devices/nld_74107.c
diff --git a/src/emu/netlist/devices/nld_74107.h b/src/lib/netlist/devices/nld_74107.h
index 89f59822f22..b0b38ee66fd 100644
--- a/src/emu/netlist/devices/nld_74107.h
+++ b/src/lib/netlist/devices/nld_74107.h
@@ -59,7 +59,7 @@
#ifndef NLD_74107_H_
#define NLD_74107_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#define TTL_74107A(_name, _CLK, _J, _K, _CLRQ) \
NET_REGISTER_DEV(TTL_74107A, _name) \
diff --git a/src/emu/netlist/devices/nld_7411.c b/src/lib/netlist/devices/nld_7411.c
index 2db034577cb..2db034577cb 100644
--- a/src/emu/netlist/devices/nld_7411.c
+++ b/src/lib/netlist/devices/nld_7411.c
diff --git a/src/emu/netlist/devices/nld_7411.h b/src/lib/netlist/devices/nld_7411.h
index 11d4d45a20f..11d4d45a20f 100644
--- a/src/emu/netlist/devices/nld_7411.h
+++ b/src/lib/netlist/devices/nld_7411.h
diff --git a/src/emu/netlist/devices/nld_74123.c b/src/lib/netlist/devices/nld_74123.c
index 59a9ed16ce4..ccd8eba012e 100644
--- a/src/emu/netlist/devices/nld_74123.c
+++ b/src/lib/netlist/devices/nld_74123.c
@@ -77,7 +77,6 @@ NETLIB_UPDATE(74123)
//res = res | INPLOGIC(m_A) | (INPLOGIC(m_B) ^ 1);
t_AB_to_Q = NLTIME_FROM_NS(300);
t_C_to_Q = NLTIME_FROM_NS(250);
- //printf("m_trig %d res %d\n", m_trig, res);
}
if (res)
diff --git a/src/emu/netlist/devices/nld_74123.h b/src/lib/netlist/devices/nld_74123.h
index 8772103b521..7539c9ce6c3 100644
--- a/src/emu/netlist/devices/nld_74123.h
+++ b/src/lib/netlist/devices/nld_74123.h
@@ -49,9 +49,9 @@
#ifndef NLD_74123_H_
#define NLD_74123_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#include "nld_system.h"
-#include "../analog/nld_twoterm.h"
+#include "analog/nld_twoterm.h"
#define TTL_74123(_name) \
NET_REGISTER_DEV(TTL_74123, _name)
diff --git a/src/emu/netlist/devices/nld_74153.c b/src/lib/netlist/devices/nld_74153.c
index ab52808c4cc..ab52808c4cc 100644
--- a/src/emu/netlist/devices/nld_74153.c
+++ b/src/lib/netlist/devices/nld_74153.c
diff --git a/src/emu/netlist/devices/nld_74153.h b/src/lib/netlist/devices/nld_74153.h
index fe59759b1f7..54364ac5671 100644
--- a/src/emu/netlist/devices/nld_74153.h
+++ b/src/lib/netlist/devices/nld_74153.h
@@ -45,7 +45,7 @@
#ifndef NLD_74153_H_
#define NLD_74153_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#define TTL_74153(_name, _C0, _C1, _C2, _C3, _A, _B, _G) \
NET_REGISTER_DEV(TTL_74153, _name) \
diff --git a/src/emu/netlist/devices/nld_74175.c b/src/lib/netlist/devices/nld_74175.c
index ec9d49a923b..ec9d49a923b 100644
--- a/src/emu/netlist/devices/nld_74175.c
+++ b/src/lib/netlist/devices/nld_74175.c
diff --git a/src/emu/netlist/devices/nld_74175.h b/src/lib/netlist/devices/nld_74175.h
index f74165a5839..f74165a5839 100644
--- a/src/emu/netlist/devices/nld_74175.h
+++ b/src/lib/netlist/devices/nld_74175.h
diff --git a/src/emu/netlist/devices/nld_74192.c b/src/lib/netlist/devices/nld_74192.c
index c07affc8b6a..c07affc8b6a 100644
--- a/src/emu/netlist/devices/nld_74192.c
+++ b/src/lib/netlist/devices/nld_74192.c
diff --git a/src/emu/netlist/devices/nld_74192.h b/src/lib/netlist/devices/nld_74192.h
index d5be6346cb2..a8b26335eb2 100644
--- a/src/emu/netlist/devices/nld_74192.h
+++ b/src/lib/netlist/devices/nld_74192.h
@@ -29,7 +29,7 @@
#ifndef NLD_74192_H_
#define NLD_74192_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#include "nld_9316.h"
#define TTL_74192(_name) \
diff --git a/src/emu/netlist/devices/nld_74193.c b/src/lib/netlist/devices/nld_74193.c
index 7a857dbe5a0..7a857dbe5a0 100644
--- a/src/emu/netlist/devices/nld_74193.c
+++ b/src/lib/netlist/devices/nld_74193.c
diff --git a/src/emu/netlist/devices/nld_74193.h b/src/lib/netlist/devices/nld_74193.h
index d97095b7230..f7cecbc984c 100644
--- a/src/emu/netlist/devices/nld_74193.h
+++ b/src/lib/netlist/devices/nld_74193.h
@@ -26,7 +26,7 @@
#ifndef NLD_74193_H_
#define NLD_74193_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#define TTL_74193(_name) \
NET_REGISTER_DEV(TTL_74193, _name)
diff --git a/src/emu/netlist/devices/nld_7420.c b/src/lib/netlist/devices/nld_7420.c
index 57a25b5d7b7..57a25b5d7b7 100644
--- a/src/emu/netlist/devices/nld_7420.c
+++ b/src/lib/netlist/devices/nld_7420.c
diff --git a/src/emu/netlist/devices/nld_7420.h b/src/lib/netlist/devices/nld_7420.h
index 2ce7020c7e5..2ce7020c7e5 100644
--- a/src/emu/netlist/devices/nld_7420.h
+++ b/src/lib/netlist/devices/nld_7420.h
diff --git a/src/emu/netlist/devices/nld_7425.c b/src/lib/netlist/devices/nld_7425.c
index c432960a02d..c432960a02d 100644
--- a/src/emu/netlist/devices/nld_7425.c
+++ b/src/lib/netlist/devices/nld_7425.c
diff --git a/src/emu/netlist/devices/nld_7425.h b/src/lib/netlist/devices/nld_7425.h
index 816c0cba100..816c0cba100 100644
--- a/src/emu/netlist/devices/nld_7425.h
+++ b/src/lib/netlist/devices/nld_7425.h
diff --git a/src/emu/netlist/devices/nld_7427.c b/src/lib/netlist/devices/nld_7427.c
index fb193f74679..fb193f74679 100644
--- a/src/emu/netlist/devices/nld_7427.c
+++ b/src/lib/netlist/devices/nld_7427.c
diff --git a/src/emu/netlist/devices/nld_7427.h b/src/lib/netlist/devices/nld_7427.h
index 6ba726a17fc..6ba726a17fc 100644
--- a/src/emu/netlist/devices/nld_7427.h
+++ b/src/lib/netlist/devices/nld_7427.h
diff --git a/src/emu/netlist/devices/nld_74279.c b/src/lib/netlist/devices/nld_74279.c
index ca633cfa8be..ca633cfa8be 100644
--- a/src/emu/netlist/devices/nld_74279.c
+++ b/src/lib/netlist/devices/nld_74279.c
diff --git a/src/emu/netlist/devices/nld_74279.h b/src/lib/netlist/devices/nld_74279.h
index aecd8435f6d..aecd8435f6d 100644
--- a/src/emu/netlist/devices/nld_74279.h
+++ b/src/lib/netlist/devices/nld_74279.h
diff --git a/src/emu/netlist/devices/nld_7430.c b/src/lib/netlist/devices/nld_7430.c
index 31ea833cb27..31ea833cb27 100644
--- a/src/emu/netlist/devices/nld_7430.c
+++ b/src/lib/netlist/devices/nld_7430.c
diff --git a/src/emu/netlist/devices/nld_7430.h b/src/lib/netlist/devices/nld_7430.h
index 126aa491429..126aa491429 100644
--- a/src/emu/netlist/devices/nld_7430.h
+++ b/src/lib/netlist/devices/nld_7430.h
diff --git a/src/emu/netlist/devices/nld_7432.c b/src/lib/netlist/devices/nld_7432.c
index d0b358482f8..d0b358482f8 100644
--- a/src/emu/netlist/devices/nld_7432.c
+++ b/src/lib/netlist/devices/nld_7432.c
diff --git a/src/emu/netlist/devices/nld_7432.h b/src/lib/netlist/devices/nld_7432.h
index f3655407143..f3655407143 100644
--- a/src/emu/netlist/devices/nld_7432.h
+++ b/src/lib/netlist/devices/nld_7432.h
diff --git a/src/emu/netlist/devices/nld_7437.c b/src/lib/netlist/devices/nld_7437.c
index 79fcaa5c4c5..79fcaa5c4c5 100644
--- a/src/emu/netlist/devices/nld_7437.c
+++ b/src/lib/netlist/devices/nld_7437.c
diff --git a/src/emu/netlist/devices/nld_7437.h b/src/lib/netlist/devices/nld_7437.h
index 6b2f193b374..6b2f193b374 100644
--- a/src/emu/netlist/devices/nld_7437.h
+++ b/src/lib/netlist/devices/nld_7437.h
diff --git a/src/emu/netlist/devices/nld_7448.c b/src/lib/netlist/devices/nld_7448.c
index 618b61d8c6e..618b61d8c6e 100644
--- a/src/emu/netlist/devices/nld_7448.c
+++ b/src/lib/netlist/devices/nld_7448.c
diff --git a/src/emu/netlist/devices/nld_7448.h b/src/lib/netlist/devices/nld_7448.h
index f5bbdf50704..e633858dad5 100644
--- a/src/emu/netlist/devices/nld_7448.h
+++ b/src/lib/netlist/devices/nld_7448.h
@@ -24,7 +24,7 @@
#ifndef NLD_7448_H_
#define NLD_7448_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#define TTL_7448(_name, _A0, _A1, _A2, _A3, _LTQ, _BIQ, _RBIQ) \
NET_REGISTER_DEV(TTL_7448, _name) \
diff --git a/src/emu/netlist/devices/nld_7450.c b/src/lib/netlist/devices/nld_7450.c
index 30d7916acf0..30d7916acf0 100644
--- a/src/emu/netlist/devices/nld_7450.c
+++ b/src/lib/netlist/devices/nld_7450.c
diff --git a/src/emu/netlist/devices/nld_7450.h b/src/lib/netlist/devices/nld_7450.h
index 43b73636be3..43b73636be3 100644
--- a/src/emu/netlist/devices/nld_7450.h
+++ b/src/lib/netlist/devices/nld_7450.h
diff --git a/src/emu/netlist/devices/nld_7474.c b/src/lib/netlist/devices/nld_7474.c
index 11088c89a79..11088c89a79 100644
--- a/src/emu/netlist/devices/nld_7474.c
+++ b/src/lib/netlist/devices/nld_7474.c
diff --git a/src/emu/netlist/devices/nld_7474.h b/src/lib/netlist/devices/nld_7474.h
index f98de117350..f98de117350 100644
--- a/src/emu/netlist/devices/nld_7474.h
+++ b/src/lib/netlist/devices/nld_7474.h
diff --git a/src/emu/netlist/devices/nld_7483.c b/src/lib/netlist/devices/nld_7483.c
index 97c6b41b29a..97c6b41b29a 100644
--- a/src/emu/netlist/devices/nld_7483.c
+++ b/src/lib/netlist/devices/nld_7483.c
diff --git a/src/emu/netlist/devices/nld_7483.h b/src/lib/netlist/devices/nld_7483.h
index 9bbefc88b1d..b50edf11210 100644
--- a/src/emu/netlist/devices/nld_7483.h
+++ b/src/lib/netlist/devices/nld_7483.h
@@ -27,7 +27,7 @@
#ifndef NLD_7483_H_
#define NLD_7483_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#define TTL_7483(_name, _A1, _A2, _A3, _A4, _B1, _B2, _B3, _B4, _CI) \
NET_REGISTER_DEV(TTL_7483, _name) \
diff --git a/src/emu/netlist/devices/nld_7486.c b/src/lib/netlist/devices/nld_7486.c
index 5957c2c0433..5957c2c0433 100644
--- a/src/emu/netlist/devices/nld_7486.c
+++ b/src/lib/netlist/devices/nld_7486.c
diff --git a/src/emu/netlist/devices/nld_7486.h b/src/lib/netlist/devices/nld_7486.h
index 788b633dfe1..788b633dfe1 100644
--- a/src/emu/netlist/devices/nld_7486.h
+++ b/src/lib/netlist/devices/nld_7486.h
diff --git a/src/emu/netlist/devices/nld_7490.c b/src/lib/netlist/devices/nld_7490.c
index a054247a070..a054247a070 100644
--- a/src/emu/netlist/devices/nld_7490.c
+++ b/src/lib/netlist/devices/nld_7490.c
diff --git a/src/emu/netlist/devices/nld_7490.h b/src/lib/netlist/devices/nld_7490.h
index 72650c3dcbe..f5513dc2390 100644
--- a/src/emu/netlist/devices/nld_7490.h
+++ b/src/lib/netlist/devices/nld_7490.h
@@ -55,7 +55,7 @@
#ifndef NLD_7490_H_
#define NLD_7490_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#define TTL_7490(_name, _A, _B, _R1, _R2, _R91, _R92) \
NET_REGISTER_DEV(TTL_7490, _name) \
diff --git a/src/emu/netlist/devices/nld_7493.c b/src/lib/netlist/devices/nld_7493.c
index 83a7ae1012c..b7979152f09 100644
--- a/src/emu/netlist/devices/nld_7493.c
+++ b/src/lib/netlist/devices/nld_7493.c
@@ -6,7 +6,7 @@
*/
#include "nld_7493.h"
-#include "../nl_setup.h"
+#include "nl_setup.h"
NETLIB_NAMESPACE_DEVICES_START()
diff --git a/src/emu/netlist/devices/nld_7493.h b/src/lib/netlist/devices/nld_7493.h
index a54593c7c1f..39a969d3b02 100644
--- a/src/emu/netlist/devices/nld_7493.h
+++ b/src/lib/netlist/devices/nld_7493.h
@@ -57,7 +57,7 @@
#ifndef NLD_7493_H_
#define NLD_7493_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#define TTL_7493(_name, _CLKA, _CLKB, _R1, _R2) \
NET_REGISTER_DEV(TTL_7493, _name) \
diff --git a/src/emu/netlist/devices/nld_74ls629.c b/src/lib/netlist/devices/nld_74ls629.c
index 5ee1e1679db..a659fef032b 100644
--- a/src/emu/netlist/devices/nld_74ls629.c
+++ b/src/lib/netlist/devices/nld_74ls629.c
@@ -40,7 +40,7 @@
#include "nld_74ls629.h"
-#include "../nl_setup.h"
+#include "nl_setup.h"
NETLIB_NAMESPACE_DEVICES_START()
@@ -150,7 +150,7 @@ NETLIB_UPDATE(SN74LS629)
m_clock.m_inc = netlist_time::from_double(0.5 / (double) freq);
//m_clock.update();
- //NL_VERBOSE_OUT(("%s %f %f %f\n", name().cstr(), v_freq, v_rng, freq));
+ //NL_VERBOSE_OUT(("{1} {2} {3} {4}\n", name(), v_freq, v_rng, freq));
}
if (!m_clock.m_enableq && INPLOGIC(m_ENQ))
@@ -169,7 +169,6 @@ NETLIB_UPDATE(SN74LS629)
NETLIB_UPDATE_PARAM(SN74LS629)
{
- //printf("updating %s to %f\n", name().cstr(), m_R.Value());
update_dev();
}
diff --git a/src/emu/netlist/devices/nld_74ls629.h b/src/lib/netlist/devices/nld_74ls629.h
index 11c74bb8246..433c2c32a11 100644
--- a/src/emu/netlist/devices/nld_74ls629.h
+++ b/src/lib/netlist/devices/nld_74ls629.h
@@ -28,8 +28,8 @@
#ifndef NLD_74LS629_H_
#define NLD_74LS629_H_
-#include "../nl_base.h"
-#include "../analog/nld_twoterm.h"
+#include "nl_base.h"
+#include "analog/nld_twoterm.h"
#define SN74LS629(_name, _cap) \
NET_REGISTER_DEV(SN74LS629, _name) \
diff --git a/src/emu/netlist/devices/nld_82S16.c b/src/lib/netlist/devices/nld_82S16.c
index 07990ffa598..07990ffa598 100644
--- a/src/emu/netlist/devices/nld_82S16.c
+++ b/src/lib/netlist/devices/nld_82S16.c
diff --git a/src/emu/netlist/devices/nld_82S16.h b/src/lib/netlist/devices/nld_82S16.h
index 0c0963498c9..b6d8f6565d6 100644
--- a/src/emu/netlist/devices/nld_82S16.h
+++ b/src/lib/netlist/devices/nld_82S16.h
@@ -24,7 +24,7 @@
#ifndef NLD_82S16_H_
#define NLD_82S16_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#define TTL_82S16(_name) \
NET_REGISTER_DEV(TTL_82S16, _name)
diff --git a/src/emu/netlist/devices/nld_9310.c b/src/lib/netlist/devices/nld_9310.c
index 586f1b47c05..586f1b47c05 100644
--- a/src/emu/netlist/devices/nld_9310.c
+++ b/src/lib/netlist/devices/nld_9310.c
diff --git a/src/emu/netlist/devices/nld_9310.h b/src/lib/netlist/devices/nld_9310.h
index 4ab59ea038e..00c39605ac2 100644
--- a/src/emu/netlist/devices/nld_9310.h
+++ b/src/lib/netlist/devices/nld_9310.h
@@ -45,7 +45,7 @@
#ifndef NLD_9310_H_
#define NLD_9310_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#define TTL_9310(_name, _CLK, _ENP, _ENT, _CLRQ, _LOADQ, _A, _B, _C, _D) \
NET_REGISTER_DEV(TTL_9310, _name) \
diff --git a/src/emu/netlist/devices/nld_9312.c b/src/lib/netlist/devices/nld_9312.c
index 0821861dea4..0821861dea4 100644
--- a/src/emu/netlist/devices/nld_9312.c
+++ b/src/lib/netlist/devices/nld_9312.c
diff --git a/src/emu/netlist/devices/nld_9312.h b/src/lib/netlist/devices/nld_9312.h
index ab5c0a8f8c9..ab5c0a8f8c9 100644
--- a/src/emu/netlist/devices/nld_9312.h
+++ b/src/lib/netlist/devices/nld_9312.h
diff --git a/src/emu/netlist/devices/nld_9316.c b/src/lib/netlist/devices/nld_9316.c
index 220487f1037..220487f1037 100644
--- a/src/emu/netlist/devices/nld_9316.c
+++ b/src/lib/netlist/devices/nld_9316.c
diff --git a/src/emu/netlist/devices/nld_9316.h b/src/lib/netlist/devices/nld_9316.h
index ec6791ed63b..e4d7a901c99 100644
--- a/src/emu/netlist/devices/nld_9316.h
+++ b/src/lib/netlist/devices/nld_9316.h
@@ -49,7 +49,7 @@
#ifndef NLD_9316_H_
#define NLD_9316_H_
-#include "../nl_base.h"
+#include "nl_base.h"
#define TTL_9316(_name, _CLK, _ENP, _ENT, _CLRQ, _LOADQ, _A, _B, _C, _D) \
NET_REGISTER_DEV(TTL_9316, _name) \
diff --git a/src/emu/netlist/devices/nld_cmos.h b/src/lib/netlist/devices/nld_cmos.h
index e3783ade423..6883993a794 100644
--- a/src/emu/netlist/devices/nld_cmos.h
+++ b/src/lib/netlist/devices/nld_cmos.h
@@ -8,8 +8,8 @@
#ifndef NLD_CMOS_H_
#define NLD_CMOS_H_
-#include "../nl_base.h"
-#include "../analog/nld_twoterm.h"
+#include "nl_base.h"
+#include "analog/nld_twoterm.h"
NETLIB_NAMESPACE_DEVICES_START()
diff --git a/src/emu/netlist/devices/nld_legacy.c b/src/lib/netlist/devices/nld_legacy.c
index d6b926545fe..834dda31110 100644
--- a/src/emu/netlist/devices/nld_legacy.c
+++ b/src/lib/netlist/devices/nld_legacy.c
@@ -6,7 +6,7 @@
*/
#include "nld_legacy.h"
-#include "../nl_setup.h"
+#include "nl_setup.h"
NETLIB_NAMESPACE_DEVICES_START()
diff --git a/src/emu/netlist/devices/nld_legacy.h b/src/lib/netlist/devices/nld_legacy.h
index 62cdd8b02ca..8180ae7f774 100644
--- a/src/emu/netlist/devices/nld_legacy.h
+++ b/src/lib/netlist/devices/nld_legacy.h
@@ -13,7 +13,7 @@
#ifndef NLD_LEGACY_H_
#define NLD_LEGACY_H_
-#include "../nl_base.h"
+#include "nl_base.h"
NETLIB_NAMESPACE_DEVICES_START()
diff --git a/src/emu/netlist/devices/nld_log.c b/src/lib/netlist/devices/nld_log.c
index f6061cc3aab..db96664661b 100644
--- a/src/emu/netlist/devices/nld_log.c
+++ b/src/lib/netlist/devices/nld_log.c
@@ -5,8 +5,6 @@
*
*/
-#include <cstdio>
-
#include "nld_log.h"
//#include "sound/wavwrite.h"
@@ -18,8 +16,8 @@ NETLIB_START(log)
{
register_input("I", m_I);
- pstring filename = pstring::sprintf("%s.log", name().cstr());
- m_file = fopen(filename, "w");
+ pstring filename = pfmt("{1}.log")(name());
+ m_strm = palloc(pofilestream(filename));
}
NETLIB_RESET(log)
@@ -28,12 +26,14 @@ NETLIB_RESET(log)
NETLIB_UPDATE(log)
{
- std::fprintf(static_cast<FILE *>(m_file), "%20.9e %e\n", netlist().time().as_double(), (nl_double) INPANALOG(m_I));
+ /* use pstring::sprintf, it is a LOT faster */
+ m_strm->writeline(pfmt("{1} {2}").e(netlist().time().as_double(),".9").e((nl_double) INPANALOG(m_I)));
}
NETLIB_NAME(log)::~NETLIB_NAME(log)()
{
- std::fclose(static_cast<FILE *>(m_file));
+ m_strm->close();
+ pfree(m_strm);
}
NETLIB_START(logD)
@@ -48,11 +48,11 @@ NETLIB_RESET(logD)
NETLIB_UPDATE(logD)
{
- std::fprintf(static_cast<FILE *>(m_file), "%e %e\n", netlist().time().as_double(), (nl_double) (INPANALOG(m_I) - INPANALOG(m_I2)));
+ m_strm->writeline(pfmt("{1} {2}").e(netlist().time().as_double(),".9").e((nl_double) (INPANALOG(m_I) - INPANALOG(m_I2))));
}
// FIXME: Implement wav later, this must be clock triggered device where the input to be written
-// is on a subdevice ...
+// is on a subdevice ..
#if 0
NETLIB_START(wav)
{
diff --git a/src/emu/netlist/devices/nld_log.h b/src/lib/netlist/devices/nld_log.h
index 4b768b66b82..eb3ae97d75e 100644
--- a/src/emu/netlist/devices/nld_log.h
+++ b/src/lib/netlist/devices/nld_log.h
@@ -18,10 +18,11 @@
#ifndef NLD_LOG_H_
#define NLD_LOG_H_
-#include "../nl_base.h"
+#include "nl_base.h"
+#include "plib/pstream.h"
-#define LOG(_name, _I) \
- NET_REGISTER_DEV(ÖPG, _name) \
+#define LOG(_name, _I) \
+ NET_REGISTER_DEV(??PG, _name) \
NET_CONNECT(_name, I, _I)
NETLIB_NAMESPACE_DEVICES_START()
@@ -30,7 +31,7 @@ NETLIB_DEVICE(log,
~NETLIB_NAME(log)();
analog_input_t m_I;
protected:
- void * m_file;
+ pofilestream *m_strm;
);
#define LOGD(_name, _I, _I2) \
diff --git a/src/emu/netlist/devices/nld_mm5837.c b/src/lib/netlist/devices/nld_mm5837.c
index e45c0bf8198..129456c8784 100644
--- a/src/emu/netlist/devices/nld_mm5837.c
+++ b/src/lib/netlist/devices/nld_mm5837.c
@@ -7,7 +7,7 @@
#include <solver/nld_solver.h>
#include "nld_mm5837.h"
-#include "../nl_setup.h"
+#include "nl_setup.h"
#define R_LOW (1000)
#define R_HIGH (1000)
diff --git a/src/emu/netlist/devices/nld_mm5837.h b/src/lib/netlist/devices/nld_mm5837.h
index e5aad3daa81..33b42640e92 100644
--- a/src/emu/netlist/devices/nld_mm5837.h
+++ b/src/lib/netlist/devices/nld_mm5837.h
@@ -19,8 +19,8 @@
#ifndef NLD_MM5837_H_
#define NLD_MM5837_H_
-#include "../nl_base.h"
-#include "../analog/nld_twoterm.h"
+#include "nl_base.h"
+#include "analog/nld_twoterm.h"
#define MM5837_DIP(_name) \
NET_REGISTER_DEV(MM5837_DIP, _name)
diff --git a/src/emu/netlist/devices/nld_ne555.c b/src/lib/netlist/devices/nld_ne555.c
index 6705081eb3a..efa6d25aec8 100644
--- a/src/emu/netlist/devices/nld_ne555.c
+++ b/src/lib/netlist/devices/nld_ne555.c
@@ -7,7 +7,7 @@
#include <solver/nld_solver.h>
#include "nld_ne555.h"
-#include "../nl_setup.h"
+#include "nl_setup.h"
#define R_OFF (1E20)
#define R_ON (25) // Datasheet states a maximum discharge of 200mA, R = 5V / 0.2
diff --git a/src/emu/netlist/devices/nld_ne555.h b/src/lib/netlist/devices/nld_ne555.h
index f02c7763ebd..11228ffd447 100644
--- a/src/emu/netlist/devices/nld_ne555.h
+++ b/src/lib/netlist/devices/nld_ne555.h
@@ -19,8 +19,8 @@
#ifndef NLD_NE555_H_
#define NLD_NE555_H_
-#include "../nl_base.h"
-#include "../analog/nld_twoterm.h"
+#include "nl_base.h"
+#include "analog/nld_twoterm.h"
#define NE555(_name) \
NET_REGISTER_DEV(NE555, _name)
diff --git a/src/emu/netlist/devices/nld_r2r_dac.c b/src/lib/netlist/devices/nld_r2r_dac.c
index c1f05837d4c..8ad59dfc9f8 100644
--- a/src/emu/netlist/devices/nld_r2r_dac.c
+++ b/src/lib/netlist/devices/nld_r2r_dac.c
@@ -32,8 +32,6 @@ NETLIB_UPDATE(r2r_dac)
NETLIB_UPDATE_PARAM(r2r_dac)
{
- //printf("updating %s to %f\n", name().cstr(), m_R.Value());
-
update_dev();
nl_double V = m_VIN.Value() / (nl_double) (1 << m_num.Value()) * (nl_double) m_val.Value();
diff --git a/src/emu/netlist/devices/nld_r2r_dac.h b/src/lib/netlist/devices/nld_r2r_dac.h
index 843c827a538..15b1e7fa364 100644
--- a/src/emu/netlist/devices/nld_r2r_dac.h
+++ b/src/lib/netlist/devices/nld_r2r_dac.h
@@ -46,8 +46,8 @@
#ifndef NLD_R2R_DAC_H_
#define NLD_R2R_DAC_H_
-#include "../nl_base.h"
-#include "../analog/nld_twoterm.h"
+#include "nl_base.h"
+#include "analog/nld_twoterm.h"
#define R2R_DAC(_name, _VIN, _R, _N) \
NET_REGISTER_DEV(R2R_DAC, _name) \
diff --git a/src/emu/netlist/devices/nld_signal.h b/src/lib/netlist/devices/nld_signal.h
index 0cf2bc7c238..fa8e9e6265b 100644
--- a/src/emu/netlist/devices/nld_signal.h
+++ b/src/lib/netlist/devices/nld_signal.h
@@ -8,7 +8,7 @@
#ifndef NLD_SIGNAL_H_
#define NLD_SIGNAL_H_
-#include "../nl_base.h"
+#include "nl_base.h"
// ----------------------------------------------------------------------------------------
// MACROS
diff --git a/src/emu/netlist/devices/nld_system.c b/src/lib/netlist/devices/nld_system.c
index c4ecbaba454..628ec617cb1 100644
--- a/src/emu/netlist/devices/nld_system.c
+++ b/src/lib/netlist/devices/nld_system.c
@@ -134,8 +134,8 @@ NETLIB_UPDATE(extclock)
NETLIB_START(logic_input)
{
/* make sure we get the family first */
- register_param("FAMILY", m_FAMILY, ".model FAMILY(TYPE=TTL)");
- set_logic_family(logic_family_desc_t::from_model(m_FAMILY.Value()));
+ register_param("FAMILY", m_FAMILY, "FAMILY(TYPE=TTL)");
+ set_logic_family(netlist().setup().family_from_model(m_FAMILY.Value()));
register_output("Q", m_Q);
register_param("IN", m_IN, 0);
@@ -299,7 +299,7 @@ NETLIB_START(function)
register_output("Q", m_Q);
for (int i=0; i < m_N; i++)
- register_input(pstring::sprintf("A%d", i), m_I[i]);
+ register_input(pfmt("A{1}")(i), m_I[i]);
pstring_list_t cmds(m_func.Value(), " ");
m_precompiled.clear();
@@ -329,7 +329,7 @@ NETLIB_START(function)
rc.m_cmd = PUSH_CONST;
rc.m_param = cmd.as_double(&err);
if (err)
- netlist().error("nld_function: unknown/misformatted token <%s> in <%s>", cmd.cstr(), m_func.Value().cstr());
+ netlist().log().fatal("nld_function: unknown/misformatted token <{1}> in <{2}>", cmd, m_func.Value());
}
m_precompiled.add(rc);
}
diff --git a/src/emu/netlist/devices/nld_system.h b/src/lib/netlist/devices/nld_system.h
index 76837f99d28..2ea6fbed4d4 100644
--- a/src/emu/netlist/devices/nld_system.h
+++ b/src/lib/netlist/devices/nld_system.h
@@ -9,10 +9,10 @@
#ifndef NLD_SYSTEM_H_
#define NLD_SYSTEM_H_
-#include "../nl_setup.h"
-#include "../nl_base.h"
-#include "../nl_factory.h"
-#include "../analog/nld_twoterm.h"
+#include "nl_setup.h"
+#include "nl_base.h"
+#include "nl_factory.h"
+#include "analog/nld_twoterm.h"
// -----------------------------------------------------------------------------
// Macros
@@ -24,7 +24,7 @@
#define LOGIC_INPUT(_name, _v, _family) \
NET_REGISTER_DEV(LOGIC_INPUT, _name) \
- PARAM(_name.IN, _v) \
+ PARAM(_name.IN, _v) \
PARAM(_name.FAMILY, _family)
#define ANALOG_INPUT(_name, _v) \
@@ -70,9 +70,9 @@
#define PARAMETERS(_name) \
NET_REGISTER_DEV(PARAMETERS, _name)
-#define AFUNC(_name, _N, _F) \
+#define AFUNC(_name, _N, _F) \
NET_REGISTER_DEV(AFUNC, _name) \
- PARAM(_name.N, _N) \
+ PARAM(_name.N, _N) \
PARAM(_name.FUNC, _F)
NETLIB_NAMESPACE_DEVICES_START()
@@ -294,7 +294,7 @@ private:
SUB,
DIV,
PUSH_CONST,
- PUSH_INPUT,
+ PUSH_INPUT
};
struct rpn_inst
@@ -403,7 +403,6 @@ protected:
ATTR_HOT void update()
{
- //printf("%s: %f\n", name().cstr(), m_I.Q_Analog());
if (m_I.Q_Analog() > logic_family().m_high_thresh_V)
OUTLOGIC(m_Q, 1, NLTIME_FROM_NS(1));
else if (m_I.Q_Analog() < logic_family().m_low_thresh_V)
@@ -478,7 +477,7 @@ public:
ATTR_COLD factory_lib_entry_t(setup_t &setup, const pstring &name, const pstring &classname,
const pstring &def_param)
- : base_factory_t(name, classname, def_param), m_setup(setup) { }
+ : base_factory_t(name, classname, def_param), m_setup(setup) { }
class dummy : public device_t
{
diff --git a/src/emu/netlist/devices/nld_truthtable.c b/src/lib/netlist/devices/nld_truthtable.c
index 4ae30d23cbf..1f671b23108 100644
--- a/src/emu/netlist/devices/nld_truthtable.c
+++ b/src/lib/netlist/devices/nld_truthtable.c
@@ -6,7 +6,7 @@
*/
#include "nld_truthtable.h"
-#include "../plib/plists.h"
+#include "plib/plists.h"
NETLIB_NAMESPACE_DEVICES_START()
@@ -135,8 +135,8 @@ void truthtable_desc_t::help(unsigned cur, pstring_list_t list,
{
// cutoff previous inputs and outputs for ignore
if (m_outs[nstate] != ~0U && m_outs[nstate] != val)
- fatalerror_e("Error in truthtable: State %04x already set, %d != %d\n",
- (UINT32) nstate, m_outs[nstate], val);
+ fatalerror_e(pfmt("Error in truthtable: State {1} already set, {2} != {3}\n")
+ .x(nstate,"04")(m_outs[nstate])(val) );
m_outs[nstate] = val;
for (unsigned j=0; j<m_NO; j++)
m_timing[nstate * m_NO + j] = timing_index[j];
@@ -231,7 +231,7 @@ void truthtable_desc_t::setup(const pstring_list_t &truthtable, UINT32 disabled_
for (UINT32 i=0; i<m_size; i++)
{
if (m_outs[i] == ~0U)
- fatalerror_e("truthtable: found element not set %04x\n", i);
+ throw fatalerror_e(pfmt("truthtable: found element not set {1}\n").x(i) );
m_outs[i] |= ((ign[i] & ~disabled_ignore) << m_NO);
}
*m_initialized = true;
@@ -264,8 +264,8 @@ netlist_base_factory_truthtable_t *nl_tt_factory_create(const unsigned ni, const
ENTRY(9);
ENTRY(10);
default:
- pstring msg = pstring::sprintf("unable to create truthtable<%d,%d,%d>", ni, no, has_state);
- nl_assert_always(false, msg.cstr());
+ pstring msg = pfmt("unable to create truthtable<{1},{2},{3}>")(ni)(no)(has_state);
+ nl_assert_always(false, msg);
}
return NULL;
}
diff --git a/src/emu/netlist/devices/nld_truthtable.h b/src/lib/netlist/devices/nld_truthtable.h
index aff146cfb91..b5a90d8125c 100644
--- a/src/emu/netlist/devices/nld_truthtable.h
+++ b/src/lib/netlist/devices/nld_truthtable.h
@@ -10,8 +10,8 @@
#ifndef NLD_TRUTHTABLE_H_
#define NLD_TRUTHTABLE_H_
-#include "../nl_base.h"
-#include "../nl_factory.h"
+#include "nl_base.h"
+#include "nl_factory.h"
#define NETLIB_TRUTHTABLE(_name, _nIN, _nOUT, _state) \
class NETLIB_NAME(_name) : public nld_truthtable_t<_nIN, _nOUT, _state> \
@@ -36,7 +36,7 @@
ttd->m_desc.add(_x);
#define TT_FAMILY(_x) \
- ttd->m_family = netlist::logic_family_desc_t::from_model(setup.get_model_str(_x));
+ ttd->m_family = setup.family_from_model(_x);
#define TRUTHTABLE_END() \
setup.factory().register_device(ttd); \
@@ -157,7 +157,6 @@ public:
const int idx = inout.indexof(tmp);
if (idx>=0)
{
- //printf("connecting %s %d\n", out[i].cstr(), idx);
connect_late(m_Q[i], m_I[idx]);
// disable ignore for this inputs altogether.
// FIXME: This shouldn't be necessary
diff --git a/src/emu/netlist/macro/nlm_cd4xxx.c b/src/lib/netlist/macro/nlm_cd4xxx.c
index 97777b193aa..e8ffede2aa8 100644
--- a/src/emu/netlist/macro/nlm_cd4xxx.c
+++ b/src/lib/netlist/macro/nlm_cd4xxx.c
@@ -38,7 +38,7 @@ NETLIST_START(CD4001_DIP)
s2.A, /* A3 |5 10| Y5 */ s3.Q,
s2.B, /* Y3 |6 9| A4 */ s3.B,
VDD.I, /* GND |7 8| Y4 */ s3.A
- /* +--------------+ */
+ /* +--------------+ */
)
NETLIST_END()
@@ -74,10 +74,10 @@ NETLIST_START(CD4020_DIP)
s1.Q7, /* Q7 |6 11| RESET */ s1.RESET,
s1.Q4, /* Q4 |7 10| IP */ s1.IP,
s1.VSS, /* VSS |8 9| Q1 */ s1.Q1
- /* +--------------+ */
+ /* +--------------+ */
)
/*
- * IP = (Input pulses)
+ * IP = (Input pulses)
*/
NETLIST_END()
@@ -117,12 +117,12 @@ NETLIST_START(CD4066_DIP)
DIPPINS( /* +--------------+ */
A.R.1, /* INOUTA |1 ++ 14| VDD */ A.PS.VDD,
A.R.2, /* OUTINA |2 13| CONTROLA */ A.CTL,
- B.R.1, /* OUTINB |3 12| CONTROLD */ D.CTL,
+ B.R.1, /* OUTINB |3 12| CONTROLD */ D.CTL,
B.R.2, /* INOUTB |4 4066 11| INOUTD */ D.R.1,
B.CTL, /* CONTROLB |5 10| OUTIND */ D.R.2,
C.CTL, /* CONTROLC |6 9| OUTINC */ C.R.1,
A.PS.VSS, /* VSS |7 8| INOUTC */ C.R.2
- /* +--------------+ */
+ /* +--------------+ */
)
NETLIST_END()
@@ -143,12 +143,12 @@ NETLIST_START(CD4016_DIP)
DIPPINS( /* +--------------+ */
A.R.1, /* INOUTA |1 ++ 14| VDD */ A.PS.VDD,
A.R.2, /* OUTINA |2 13| CONTROLA */ A.CTL,
- B.R.1, /* OUTINB |3 12| CONTROLD */ D.CTL,
+ B.R.1, /* OUTINB |3 12| CONTROLD */ D.CTL,
B.R.2, /* INOUTB |4 4016 11| INOUTD */ D.R.1,
B.CTL, /* CONTROLB |5 10| OUTIND */ D.R.2,
C.CTL, /* CONTROLC |6 9| OUTINC */ C.R.1,
A.PS.VSS, /* VSS |7 8| INOUTC */ C.R.2
- /* +--------------+ */
+ /* +--------------+ */
)
NETLIST_END()
diff --git a/src/emu/netlist/macro/nlm_cd4xxx.h b/src/lib/netlist/macro/nlm_cd4xxx.h
index e841fb89afc..94c5d04aef8 100644
--- a/src/emu/netlist/macro/nlm_cd4xxx.h
+++ b/src/lib/netlist/macro/nlm_cd4xxx.h
@@ -1,7 +1,7 @@
#ifndef NLD_CD4XXX_H_
#define NLD_CD4XXX_H_
-#include "../nl_setup.h"
+#include "nl_setup.h"
/*
* Devices:
diff --git a/src/lib/netlist/macro/nlm_opamp.c b/src/lib/netlist/macro/nlm_opamp.c
new file mode 100644
index 00000000000..9d246ebb04f
--- /dev/null
+++ b/src/lib/netlist/macro/nlm_opamp.c
@@ -0,0 +1,83 @@
+
+#include "nlm_opamp.h"
+
+#include "analog/nld_opamps.h"
+#include "devices/nld_system.h"
+
+/*
+ * Generic layout with 4 opamps, VCC on pint 4 and GND on pin 11
+ */
+
+NETLIST_START(opamp_layout_4_4_11)
+ DIPPINS( /* +--------------+ */
+ A.OUT, /* |1 ++ 14| */ D.OUT,
+ A.MINUS, /* |2 13| */ D.MINUS,
+ A.PLUS, /* |3 12| */ D.PLUS,
+ A.VCC, /* |4 11| */ A.GND,
+ B.PLUS, /* |5 10| */ C.PLUS,
+ B.MINUS, /* |6 9| */ C.MINUS,
+ B.OUT, /* |7 8| */ C.OUT
+ /* +--------------+ */
+ )
+ NET_C(A.GND, B.GND, C.GND, D.GND)
+ NET_C(A.VCC, B.VCC, C.VCC, D.VCC)
+NETLIST_END()
+
+/*
+ * Generic layout with 2 opamps, VCC on pint 8 and GND on pin 4
+ */
+
+NETLIST_START(opamp_layout_2_8_4)
+ DIPPINS( /* +--------------+ */
+ A.OUT, /* |1 ++ 8| */ A.VCC,
+ A.MINUS, /* |2 7| */ B.OUT,
+ A.PLUS, /* |3 6| */ B.MINUS,
+ A.GND, /* |4 5| */ B.PLUS
+ /* +--------------+ */
+ )
+ NET_C(A.GND, B.GND)
+ NET_C(A.VCC, B.VCC)
+NETLIST_END()
+
+NETLIST_START(MB3614_DIP)
+ OPAMP(A, "MB3614")
+ OPAMP(B, "MB3614")
+ OPAMP(C, "MB3614")
+ OPAMP(D, "MB3614")
+
+ INCLUDE(opamp_layout_4_4_11)
+
+NETLIST_END()
+
+NETLIST_START(LM324_DIP)
+ OPAMP(A, "LM324")
+ OPAMP(B, "LM324")
+ OPAMP(C, "LM324")
+ OPAMP(D, "LM324")
+
+ INCLUDE(opamp_layout_4_4_11)
+
+NETLIST_END()
+
+NETLIST_START(LM358_DIP)
+ OPAMP(A, "LM358")
+ OPAMP(B, "LM358")
+
+ INCLUDE(opamp_layout_2_8_4)
+
+NETLIST_END()
+
+NETLIST_START(OPAMP_lib)
+ LOCAL_LIB_ENTRY(opamp_layout_4_4_11)
+ LOCAL_LIB_ENTRY(opamp_layout_2_8_4)
+
+ NET_MODEL("LM324 OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.3M RI=1000k RO=50 DAB=0.00075)")
+ NET_MODEL("LM358 OPAMP(TYPE=3 VLH=2.0 VLL=0.2 FPF=5 UGF=500k SLEW=0.3M RI=1000k RO=50 DAB=0.001)")
+ NET_MODEL("MB3614 OPAMP(TYPE=3 VLH=1.4 VLL=0.02 FPF=2 UGF=500k SLEW=0.6M RI=1000k RO=50 DAB=0.0002)")
+
+ LOCAL_LIB_ENTRY(MB3614_DIP)
+ LOCAL_LIB_ENTRY(LM324_DIP)
+ LOCAL_LIB_ENTRY(LM358_DIP)
+
+
+NETLIST_END()
diff --git a/src/emu/netlist/macro/nlm_opamp.h b/src/lib/netlist/macro/nlm_opamp.h
index d31a5f0b876..8612f72e453 100644
--- a/src/emu/netlist/macro/nlm_opamp.h
+++ b/src/lib/netlist/macro/nlm_opamp.h
@@ -1,7 +1,7 @@
#ifndef NLM_OPAMP_H_
#define NLM_OPAMP_H_
-#include "../nl_setup.h"
+#include "nl_setup.h"
#ifndef __PLIB_PREPROCESSOR__
@@ -9,9 +9,15 @@
* Netlist Macros
* ---------------------------------------------------------------------------*/
-#define MB3614_DIP(_name) \
+#define MB3614_DIP(_name) \
NET_REGISTER_DEV(MB3614_DIP, _name)
+#define LM324_DIP(_name) \
+ NET_REGISTER_DEV(LM324_DIP, _name)
+
+#define LM358_DIP(_name) \
+ NET_REGISTER_DEV(LM358_DIP, _name)
+
/* ----------------------------------------------------------------------------
* External declarations
* ---------------------------------------------------------------------------*/
diff --git a/src/lib/netlist/macro/nlm_other.c b/src/lib/netlist/macro/nlm_other.c
new file mode 100644
index 00000000000..e3d53def922
--- /dev/null
+++ b/src/lib/netlist/macro/nlm_other.c
@@ -0,0 +1,55 @@
+
+#include "nlm_other.h"
+
+#include "devices/nld_truthtable.h"
+#include "devices/nld_system.h"
+
+/*
+ * MC14584B: Hex Schmitt Trigger
+ * ON Semiconductor
+ *
+ * +--------------+
+ * A1 |1 ++ 14| VCC
+ * Y1 |2 13| A6
+ * A2 |3 12| Y6
+ * Y2 |4 MC14584B 11| A5
+ * A3 |5 10| Y5
+ * Y3 |6 9| A4
+ * GND |7 8| Y4
+ * +--------------+
+ *
+ */
+
+NETLIST_START(MC14584B_DIP)
+ MC14584B_GATE(s1)
+ MC14584B_GATE(s2)
+ MC14584B_GATE(s3)
+ MC14584B_GATE(s4)
+ MC14584B_GATE(s5)
+ MC14584B_GATE(s6)
+
+ DUMMY_INPUT(GND)
+ DUMMY_INPUT(VCC)
+
+ DIPPINS( /* +--------------+ */
+ s1.A, /* A1 |1 ++ 14| VCC */ VCC.I,
+ s1.Q, /* Y1 |2 13| A6 */ s6.A,
+ s2.A, /* A2 |3 12| Y6 */ s6.Q,
+ s2.Q, /* Y2 |4 7416 11| A5 */ s5.A,
+ s3.A, /* A3 |5 10| Y5 */ s5.Q,
+ s3.Q, /* Y3 |6 9| A4 */ s4.A,
+ GND.I, /* GND |7 8| Y4 */ s4.Q
+ /* +--------------+ */
+ )
+NETLIST_END()
+
+NETLIST_START(otheric_lib)
+ TRUTHTABLE_START(MC14584B_GATE, 1, 1, 0, "")
+ TT_HEAD(" A | Q ")
+ TT_LINE(" 0 | 1 |100")
+ TT_LINE(" 1 | 0 |100")
+ TT_FAMILY("FAMILY(IVL=2.1 IVH=2.7 OVL=0.05 OVH=4.95 ORL=10.0 ORH=10.0)")
+ TRUTHTABLE_END()
+
+ LOCAL_LIB_ENTRY(MC14584B_DIP)
+NETLIST_END()
diff --git a/src/lib/netlist/macro/nlm_other.h b/src/lib/netlist/macro/nlm_other.h
new file mode 100644
index 00000000000..cc104968ed3
--- /dev/null
+++ b/src/lib/netlist/macro/nlm_other.h
@@ -0,0 +1,27 @@
+#ifndef NLM_OTHER_H_
+#define NLM_OTHER_H_
+
+#include "nl_setup.h"
+
+#ifndef __PLIB_PREPROCESSOR__
+
+/* ----------------------------------------------------------------------------
+ * Netlist Macros
+ * ---------------------------------------------------------------------------*/
+
+#define MC14584B_GATE(_name) \
+ NET_REGISTER_DEV(MC14584B_GATE, _name)
+
+#define MC14584B_DIP(_name) \
+ NET_REGISTER_DEV(MC14584B_DIP, _name)
+
+
+/* ----------------------------------------------------------------------------
+ * External declarations
+ * ---------------------------------------------------------------------------*/
+
+NETLIST_EXTERNAL(otheric_lib)
+
+#endif
+
+#endif
diff --git a/src/emu/netlist/macro/nlm_ttl74xx.c b/src/lib/netlist/macro/nlm_ttl74xx.c
index 75e865b1fe1..c9c33aceaeb 100644
--- a/src/emu/netlist/macro/nlm_ttl74xx.c
+++ b/src/lib/netlist/macro/nlm_ttl74xx.c
@@ -6,7 +6,7 @@
/*
* DM7416: Hex Inverting Buffers with
- * High Voltage Open-Collector Outputs
+ * High Voltage Open-Collector Outputs
*
* +--------------+
* A1 |1 ++ 14| VCC
@@ -39,7 +39,7 @@ NETLIST_START(TTL_7416_DIP)
s3.A, /* A3 |5 10| Y5 */ s5.Q,
s3.Q, /* Y3 |6 9| A4 */ s4.A,
GND.I, /* GND |7 8| Y4 */ s4.Q
- /* +--------------+ */
+ /* +--------------+ */
)
NETLIST_END()
diff --git a/src/emu/netlist/macro/nlm_ttl74xx.h b/src/lib/netlist/macro/nlm_ttl74xx.h
index 91f757dbf7d..0fed60235c1 100644
--- a/src/emu/netlist/macro/nlm_ttl74xx.h
+++ b/src/lib/netlist/macro/nlm_ttl74xx.h
@@ -1,7 +1,7 @@
#ifndef NLD_TTL74XX_H_
#define NLD_TTL74XX_H_
-#include "../nl_setup.h"
+#include "nl_setup.h"
#ifndef __PLIB_PREPROCESSOR__
@@ -9,10 +9,10 @@
* Netlist Macros
* ---------------------------------------------------------------------------*/
-#define TTL_7416_GATE(_name) \
+#define TTL_7416_GATE(_name) \
NET_REGISTER_DEV(TTL_7416_GATE, _name)
-#define TTL_7416_DIP(_name) \
+#define TTL_7416_DIP(_name) \
NET_REGISTER_DEV(TTL7416_DIP, _name)
/* ----------------------------------------------------------------------------
diff --git a/src/emu/netlist/nl_base.c b/src/lib/netlist/nl_base.c
index c63ddc61a00..ce818e0d94f 100644
--- a/src/emu/netlist/nl_base.c
+++ b/src/lib/netlist/nl_base.c
@@ -8,7 +8,6 @@
#include <solver/nld_solver.h>
#include <cstring>
#include <algorithm>
-#include <cstdio>
#include "plib/palloc.h"
@@ -20,25 +19,6 @@ const netlist::netlist_time netlist::netlist_time::zero = netlist::netlist_time:
namespace netlist
{
-//============================================================
-// Exceptions
-//============================================================
-
-// emu_fatalerror is a generic fatal exception that provides an error string
-fatalerror_e::fatalerror_e(const char *format, ...)
-{
- va_list ap;
- va_start(ap, format);
- m_text = pstring(format).vprintf(ap);
- fprintf(stderr, "%s\n", m_text.cstr());
- va_end(ap);
-}
-
-fatalerror_e::fatalerror_e(const char *format, va_list ap)
-{
- m_text = pstring(format).vprintf(ap);
-}
-
// ----------------------------------------------------------------------------------------
// logic_family_ttl_t
// ----------------------------------------------------------------------------------------
@@ -87,36 +67,6 @@ public:
logic_family_desc_t *netlist_family_TTL = palloc(logic_family_ttl_t);
logic_family_desc_t *netlist_family_CD4XXX = palloc(logic_family_cd4xxx_t);
-class logic_family_std_proxy_t : public logic_family_desc_t
-{
-public:
- logic_family_std_proxy_t() { }
- virtual devices::nld_base_d_to_a_proxy *create_d_a_proxy(logic_output_t *proxied) const
- {
- return palloc(devices::nld_d_to_a_proxy(proxied));
- }
-};
-
-logic_family_desc_t *logic_family_desc_t::from_model(const pstring &model)
-{
- if (setup_t::model_value_str(model, "TYPE", "") == "TTL")
- return netlist_family_TTL;
- if (setup_t::model_value_str(model, "TYPE", "") == "CD4XXX")
- return netlist_family_CD4XXX;
-
- logic_family_std_proxy_t *ret = palloc(logic_family_std_proxy_t);
-
- ret->m_low_thresh_V = setup_t::model_value(model, "IVL", 0.8);
- ret->m_high_thresh_V = setup_t::model_value(model, "IVH", 2.0);
- ret->m_low_V = setup_t::model_value(model, "OVL", 0.1);
- ret->m_high_V = setup_t::model_value(model, "OVH", 4.0);
- ret->m_R_low = setup_t::model_value(model, "ORL", 1.0);
- ret->m_R_high = setup_t::model_value(model, "ORH", 130.0);
-
- return ret;
-}
-
-
// ----------------------------------------------------------------------------------------
// netlist_queue_t
// ----------------------------------------------------------------------------------------
@@ -134,7 +84,7 @@ queue_t::queue_t(netlist_t &nl)
void queue_t::register_state(pstate_manager_t &manager, const pstring &module)
{
- NL_VERBOSE_OUT(("register_state\n"));
+ netlist().log().debug("register_state\n");
manager.save_item(m_qsize, this, module + "." + "qsize");
manager.save_item(&m_times[0], this, module + "." + "times", m_times.size());
manager.save_item(&(m_names[0].m_buf[0]), this, module + "." + "names", m_names.size() * sizeof(names_t));
@@ -142,16 +92,16 @@ void queue_t::register_state(pstate_manager_t &manager, const pstring &module)
void queue_t::on_pre_save()
{
- NL_VERBOSE_OUT(("on_pre_save\n"));
+ netlist().log().debug("on_pre_save\n");
m_qsize = this->count();
- NL_VERBOSE_OUT(("current time %f qsize %d\n", netlist().time().as_double(), m_qsize));
+ netlist().log().debug("current time {1} qsize {2}\n", netlist().time().as_double(), m_qsize);
for (int i = 0; i < m_qsize; i++ )
{
m_times[i] = this->listptr()[i].exec_time().as_raw();
pstring p = this->listptr()[i].object()->name();
int n = p.len();
n = std::min(63, n);
- std::strncpy(m_names[i].m_buf, p, n);
+ std::strncpy(m_names[i].m_buf, p.cstr(), n);
m_names[i].m_buf[n] = 0;
}
}
@@ -160,12 +110,12 @@ void queue_t::on_pre_save()
void queue_t::on_post_load()
{
this->clear();
- NL_VERBOSE_OUT(("current time %f qsize %d\n", netlist().time().as_double(), m_qsize));
+ netlist().log().debug("current time {1} qsize {2}\n", netlist().time().as_double(), m_qsize);
for (int i = 0; i < m_qsize; i++ )
{
net_t *n = netlist().find_net(m_names[i].m_buf);
- //NL_VERBOSE_OUT(("Got %s ==> %p\n", qtemp[i].m_name, n));
- //NL_VERBOSE_OUT(("schedule time %f (%f)\n", n->time().as_double(), netlist_time::from_raw(m_times[i]).as_double()));
+ //log().debug("Got {1} ==> {2}\n", qtemp[i].m_name, n));
+ //log().debug("schedule time {1} ({2})\n", n->time().as_double(), netlist_time::from_raw(m_times[i]).as_double()));
this->push(queue_t::entry_t(netlist_time::from_raw(m_times[i]), n));
}
}
@@ -194,7 +144,7 @@ ATTR_COLD void object_t::init_object(netlist_t &nl, const pstring &aname)
ATTR_COLD const pstring &object_t::name() const
{
if (m_name == "")
- netlist().error("object not initialized");
+ netlist().log().fatal("object not initialized");
return m_name;
}
@@ -229,7 +179,8 @@ netlist_t::netlist_t()
m_mainclock(NULL),
m_solver(NULL),
m_gnd(NULL),
- m_setup(NULL)
+ m_setup(NULL),
+ m_log(this)
{
}
@@ -266,7 +217,7 @@ ATTR_COLD void netlist_t::start()
{
/* find the main clock and solver ... */
- NL_VERBOSE_OUT(("Searching for mainclock and solver ...\n"));
+ log().debug("Searching for mainclock and solver ...\n");
m_mainclock = get_single_device<devices:: NETLIB_NAME(mainclock)>("mainclock");
m_solver = get_single_device<devices::NETLIB_NAME(solver)>("solver");
@@ -285,7 +236,7 @@ ATTR_COLD void netlist_t::start()
m_use_deactivate = (m_params->m_use_deactivate.Value() ? true : false);
- NL_VERBOSE_OUT(("Initializing devices ...\n"));
+ log().debug("Initializing devices ...\n");
for (std::size_t i = 0; i < m_devices.size(); i++)
{
device_t *dev = m_devices[i];
@@ -299,7 +250,7 @@ ATTR_COLD void netlist_t::stop()
{
/* find the main clock and solver ... */
- NL_VERBOSE_OUT(("Stopping all devices ...\n"));
+ log().debug("Stopping all devices ...\n");
// Step all devices once !
for (std::size_t i = 0; i < m_devices.size(); i++)
@@ -320,7 +271,6 @@ ATTR_COLD net_t *netlist_t::find_net(const pstring &name)
ATTR_COLD void netlist_t::rebuild_lists()
{
- //printf("Rebuild Lists\n");
for (std::size_t i = 0; i < m_nets.size(); i++)
m_nets[i]->rebuild_list();
}
@@ -409,31 +359,6 @@ ATTR_HOT void netlist_t::process_queue(const netlist_time &delta)
}
}
-ATTR_COLD void netlist_t::error(const char *format, ...) const
-{
- va_list ap;
- va_start(ap, format);
- verror(NL_ERROR, format, ap);
- va_end(ap);
-}
-
-ATTR_COLD void netlist_t::warning(const char *format, ...) const
-{
- va_list ap;
- va_start(ap, format);
- verror(NL_WARNING, format, ap);
- va_end(ap);
-}
-
-ATTR_COLD void netlist_t::log(const char *format, ...) const
-{
- va_list ap;
- va_start(ap, format);
- verror(NL_LOG, format, ap);
- va_end(ap);
-}
-
-
// ----------------------------------------------------------------------------------------
// Default netlist elements ...
// ----------------------------------------------------------------------------------------
@@ -522,7 +447,7 @@ device_t::device_t(const family_t afamily)
device_t::~device_t()
{
- //NL_VERBOSE_OUT(("~net_device_t\n");
+ //log().debug("~net_device_t\n");
}
ATTR_COLD setup_t &device_t::setup()
@@ -565,7 +490,7 @@ ATTR_COLD void device_t::register_subalias(const pstring &name, const pstring &a
// FIXME: make this working again
//if (term.isType(terminal_t::INPUT) || term.isType(terminal_t::TERMINAL))
- // m_terminals.add(name);
+ // m_terminals.add(name);
}
ATTR_COLD void device_t::register_terminal(const pstring &name, terminal_t &port)
@@ -612,7 +537,7 @@ ATTR_COLD void device_t::connect_late(const pstring &t1, const pstring &t2)
ATTR_COLD void device_t::connect_direct(core_terminal_t &t1, core_terminal_t &t2)
{
if (!setup().connect(t1, t2))
- netlist().error("Error connecting %s to %s\n", t1.name().cstr(), t2.name().cstr());
+ netlist().log().fatal("Error connecting {1} to {2}\n", t1.name(), t2.name());
}
@@ -719,8 +644,6 @@ ATTR_COLD void net_t::rebuild_list()
m_list_active.add(*m_core_terms[i]);
cnt++;
}
- //if (cnt != m_active)
- //printf("ARgh %s ==> %d != %d\n", name().cstr(), cnt, m_active);
m_active = cnt;
}
@@ -833,22 +756,22 @@ ATTR_COLD void net_t::move_connections(net_t *dest_net)
ATTR_COLD void net_t::merge_net(net_t *othernet)
{
- NL_VERBOSE_OUT(("merging nets ...\n"));
+ netlist().log().debug("merging nets ...\n");
if (othernet == NULL)
return; // Nothing to do
if (othernet == this)
{
- netlist().warning("Connecting %s to itself. This may be right, though\n", this->name().cstr());
+ netlist().log().warning("Connecting {1} to itself. This may be right, though\n", this->name());
return; // Nothing to do
}
if (this->isRailNet() && othernet->isRailNet())
- netlist().error("Trying to merge two rail nets: %s and %s\n", this->name().cstr(), othernet->name().cstr());
+ netlist().log().fatal("Trying to merge two rail nets: {1} and {2}\n", this->name(), othernet->name());
if (othernet->isRailNet())
{
- NL_VERBOSE_OUT(("othernet is railnet\n"));
+ netlist().log().debug("othernet is railnet\n");
othernet->merge_net(this);
}
else
@@ -919,15 +842,12 @@ ATTR_COLD void analog_net_t::process_net(list_t *groups, int &cur_group)
if (num_cons() == 0)
return;
/* add the net */
- //SOLVER_VERBOSE_OUT(("add %d - %s\n", cur_group, name().cstr()));
groups[cur_group].add(this);
for (std::size_t i = 0; i < m_core_terms.size(); i++)
{
core_terminal_t *p = m_core_terms[i];
- //SOLVER_VERBOSE_OUT(("terminal %s\n", p->name().cstr()));
if (p->isType(terminal_t::TERMINAL))
{
- //SOLVER_VERBOSE_OUT(("isterminal\n"));
terminal_t *pt = static_cast<terminal_t *>(p);
analog_net_t *other_net = &pt->m_otherterm->net().as_analog();
if (!other_net->already_processed(groups, cur_group))
@@ -1065,27 +985,26 @@ ATTR_COLD param_t::param_t(const param_type_t atype)
{
}
-ATTR_COLD const pstring param_model_t::model_type() const
+ATTR_COLD const pstring param_model_t::model_type()
{
- pstring tmp = this->Value();
- // .model 1N914 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)
- int p = tmp.find("(");
- int p1 = p;
- while (--p >= 0 && tmp[p] != ' ')
- ;
-
- return tmp.substr(p+1, p1-p-1).ucase();
+ if (m_map.size() == 0)
+ netlist().setup().model_parse(this->Value(), m_map);
+ return m_map["COREMODEL"];
}
-ATTR_COLD const pstring param_model_t::model_value_str(const pstring &entity, const pstring defval) const
+ATTR_COLD const pstring param_model_t::model_value_str(const pstring &entity)
{
- return setup_t::model_value_str(this->Value(), entity, defval);
+ if (m_map.size() == 0)
+ netlist().setup().model_parse(this->Value(), m_map);
+ return netlist().setup().model_value_str(m_map, entity);
}
-ATTR_COLD nl_double param_model_t::model_value(const pstring &entity, const nl_double defval) const
+ATTR_COLD nl_double param_model_t::model_value(const pstring &entity)
{
- return setup_t::model_value(this->Value(), entity, defval);
+ if (m_map.size() == 0)
+ netlist().setup().model_parse(this->Value(), m_map);
+ return netlist().setup().model_value(m_map, entity);
}
} // namespace
diff --git a/src/emu/netlist/nl_base.h b/src/lib/netlist/nl_base.h
index bd8ef6b48be..4bc152e253f 100644
--- a/src/emu/netlist/nl_base.h
+++ b/src/lib/netlist/nl_base.h
@@ -159,6 +159,7 @@
#include "nl_time.h"
#include "nl_util.h"
#include "plib/pstate.h"
+#include "plib/pfmtlog.h"
// ----------------------------------------------------------------------------------------
// Type definitions
@@ -241,7 +242,7 @@ typedef UINT8 netlist_sig_t;
, _priv)
#define NETLIB_LOGIC_FAMILY(_fam) \
-virtual logic_family_desc_t *default_logic_family() \
+virtual logic_family_desc_t *default_logic_family() \
{ \
return netlist_family_ ## _fam; \
}
@@ -252,11 +253,11 @@ virtual logic_family_desc_t *default_logic_family() \
//============================================================
#if defined(MAME_DEBUG)
-#define nl_assert(x) do { if (!(x)) throw fatalerror_e("assert: %s:%d: %s", __FILE__, __LINE__, #x); } while (0)
+#define nl_assert(x) do { if (1) if (!(x)) throw fatalerror_e(pfmt("assert: {1}:{2}: {3}")(__FILE__)(__LINE__)(#x) ); } while (0)
#else
-#define nl_assert(x) do { if (0) if (!(x)) throw fatalerror_e("assert: %s:%d: %s", __FILE__, __LINE__, #x); } while (0)
+#define nl_assert(x) do { if (0) if (!(x)) throw fatalerror_e(pfmt("assert: {1}:{2}: {3}")(__FILE__)(__LINE__)(#x) ); } while (0)
#endif
-#define nl_assert_always(x, msg) do { if (!(x)) throw fatalerror_e("Fatal error: %s\nCaused by assert: %s:%d: %s", msg, __FILE__, __LINE__, #x); } while (0)
+#define nl_assert_always(x, msg) do { if (!(x)) throw fatalerror_e(pfmt("Fatal error: {1}\nCaused by assert: {2}:{3}: {4}")(msg)(__FILE__)(__LINE__)(#x)); } while (0)
// -----------------------------------------------------------------------------
@@ -284,16 +285,11 @@ namespace netlist
// Exceptions
//============================================================
- class fatalerror_e : public std::exception
+ class fatalerror_e : public pexception
{
public:
- fatalerror_e(const char *format, ...) ATTR_PRINTF(2,3);
- fatalerror_e(const char *format, va_list ap);
+ fatalerror_e(const pstring &text) : pexception(text) { }
virtual ~fatalerror_e() throw() {}
-
- const pstring &text() { return m_text; }
- private:
- pstring m_text;
};
class logic_output_t;
@@ -306,6 +302,12 @@ namespace netlist
class param_model_t;
// -----------------------------------------------------------------------------
+ // model_map_t
+ // -----------------------------------------------------------------------------
+
+ typedef phashmap_t<pstring, pstring> model_map_t;
+
+ // -----------------------------------------------------------------------------
// netlist_output_family_t
// -----------------------------------------------------------------------------
@@ -324,8 +326,6 @@ namespace netlist
nl_double m_R_high;
bool m_is_static;
-
- static logic_family_desc_t *from_model(const pstring &model);
};
class logic_family_t
@@ -390,8 +390,8 @@ namespace netlist
VCCS, // Voltage controlled current source
LVCCS, // Voltage controlled current source (Current limited)
CCCS, // Current controlled current source
- VS, // Voltage Source
- CS, // Current Source
+ VS, // Voltage Source
+ CS, // Current Source
GND // GND device
};
@@ -445,7 +445,7 @@ namespace netlist
ATTR_COLD void init_object(core_device_t &dev, const pstring &aname);
- core_device_t &device() const { return *m_device; }
+ ATTR_HOT core_device_t &device() const { return *m_device; }
private:
core_device_t * m_device;
};
@@ -946,6 +946,7 @@ namespace netlist
param_t::save_register();
}
+ virtual void changed() { }
C m_param;
private:
};
@@ -968,9 +969,16 @@ namespace netlist
ATTR_COLD param_model_t() : param_template_t<pstring, param_t::MODEL>() { }
/* these should be cached! */
- ATTR_COLD nl_double model_value(const pstring &entity, const nl_double defval = 0.0) const;
- ATTR_COLD const pstring model_value_str(const pstring &entity, const pstring defval = "") const;
- ATTR_COLD const pstring model_type() const;
+ ATTR_COLD nl_double model_value(const pstring &entity);
+ ATTR_COLD const pstring model_value_str(const pstring &entity);
+ ATTR_COLD const pstring model_type();
+ protected:
+ void changed()
+ {
+ m_map.clear();
+ }
+ private:
+ model_map_t m_map;
};
// -----------------------------------------------------------------------------
@@ -1012,7 +1020,6 @@ namespace netlist
ATTR_HOT netlist_sig_t INPLOGIC(const logic_input_t &inp) const
{
- //printf("%s %d\n", inp.name().cstr(), inp.state());
nl_assert(inp.state() != logic_t::STATE_INP_PASSIVE);
return inp.Q();
}
@@ -1145,7 +1152,7 @@ namespace netlist
// -----------------------------------------------------------------------------
- class netlist_t : public object_t, public pstate_manager_t
+ class netlist_t : public object_t, public pstate_manager_t, public plog_dispatch_intf
{
P_PREVENT_COPYING(netlist_t)
public:
@@ -1178,12 +1185,8 @@ namespace netlist
ATTR_COLD net_t *find_net(const pstring &name);
- ATTR_COLD void error(const char *format, ...) const ATTR_PRINTF(2,3);
- ATTR_COLD void warning(const char *format, ...) const ATTR_PRINTF(2,3);
- ATTR_COLD void log(const char *format, ...) const ATTR_PRINTF(2,3);
-
template<class _C>
- plist_t<_C *> get_device_list()
+ ATTR_COLD plist_t<_C *> get_device_list()
{
plist_t<_C *> tmp;
for (std::size_t i = 0; i < m_devices.size(); i++)
@@ -1196,7 +1199,7 @@ namespace netlist
}
template<class _C>
- _C *get_first_device()
+ ATTR_COLD _C *get_first_device()
{
for (std::size_t i = 0; i < m_devices.size(); i++)
{
@@ -1208,7 +1211,7 @@ namespace netlist
}
template<class _C>
- _C *get_single_device(const char *classname)
+ ATTR_COLD _C *get_single_device(const char *classname)
{
_C *ret = NULL;
for (std::size_t i = 0; i < m_devices.size(); i++)
@@ -1217,7 +1220,7 @@ namespace netlist
if (dev != NULL)
{
if (ret != NULL)
- this->error("more than one %s device found", classname);
+ this->log().fatal("more than one {1} device found", classname);
else
ret = dev;
}
@@ -1231,18 +1234,13 @@ namespace netlist
pnamedlist_t<core_device_t *> m_started_devices;
#endif
- protected:
+ ATTR_COLD plog_base<NL_DEBUG> &log() { return m_log; }
+ ATTR_COLD const plog_base<NL_DEBUG> &log() const { return m_log; }
- enum loglevel_e
- {
- NL_ERROR,
- NL_WARNING,
- NL_LOG
- };
+ protected:
- // any derived netlist must override this ...
- virtual void verror(const loglevel_e level,
- const char *format, va_list ap) const = 0;
+ // any derived netlist must override vlog inherited from plog_base
+ // virtual void vlog(const plog_level &l, const pstring &ls) = 0;
/* from netlist_object */
virtual void reset();
@@ -1260,7 +1258,7 @@ namespace netlist
netlist_time m_time;
bool m_use_deactivate;
- queue_t m_queue;
+ queue_t m_queue;
devices::NETLIB_NAME(mainclock) * m_mainclock;
@@ -1270,6 +1268,7 @@ namespace netlist
devices::NETLIB_NAME(netlistparams) *m_params;
setup_t *m_setup;
+ plog_base<NL_DEBUG> m_log;
};
// -----------------------------------------------------------------------------
@@ -1284,6 +1283,7 @@ namespace netlist
if (m_param != param)
{
m_param = param;
+ changed();
device().update_param();
}
}
@@ -1317,7 +1317,6 @@ namespace netlist
{
if (EXPECTED(!is_state(STATE_INP_PASSIVE)))
{
- //printf("inactivate %s\n", name().cstr());
set_state(STATE_INP_PASSIVE);
net().as_logic().dec_active(*this);
}
diff --git a/src/emu/netlist/nl_config.h b/src/lib/netlist/nl_config.h
index 5fceb40d3bf..41d2989bd2f 100644
--- a/src/emu/netlist/nl_config.h
+++ b/src/lib/netlist/nl_config.h
@@ -47,7 +47,7 @@
*/
// This will be autodetected
-//#define NL_PMF_TYPE 3
+// #define NL_PMF_TYPE 2
#define NL_PMF_TYPE_VIRTUAL 0
#define NL_PMF_TYPE_GNUC_PMF 1
@@ -66,18 +66,6 @@
#pragma GCC diagnostic ignored "-Wpmf-conversions"
#endif
-/*
- * This increases performance in circuits with a lot of gates
- * but is not guaranteed to be absolutely timing correct.
- *
- * Performance increase about 10% (breakout) to 20% (pong)
- *
- */
-
-
-// moved to parameter NETLIST.USE_DEACTIVATE
-// #define USE_DEACTIVE_DEVICE (0)
-
#define USE_TRUTHTABLE (1)
// The following adds about 10% performance ...
@@ -106,7 +94,6 @@
//============================================================
#define USE_MATRIX_GS (0)
-#define USE_PIVOT_SEARCH (0)
#define USE_GABS (1)
// savings are eaten up by effort
// FIXME: Convert into solver parameter
@@ -117,15 +104,9 @@
// DEBUGGING
//============================================================
-#define NL_VERBOSE (0)
+#define NL_DEBUG (false)
#define NL_KEEP_STATISTICS (0)
-#if (NL_VERBOSE)
- #define NL_VERBOSE_OUT(x) netlist().log x
-#else
- #define NL_VERBOSE_OUT(x) do { if(0) netlist().log x ; } while (0)
-#endif
-
//============================================================
// General Macros
//============================================================
diff --git a/src/emu/netlist/nl_dice_compat.h b/src/lib/netlist/nl_dice_compat.h
index 70661be23a7..70661be23a7 100644
--- a/src/emu/netlist/nl_dice_compat.h
+++ b/src/lib/netlist/nl_dice_compat.h
diff --git a/src/emu/netlist/nl_factory.c b/src/lib/netlist/nl_factory.c
index 665e1a74f40..5f6762c4d05 100644
--- a/src/emu/netlist/nl_factory.c
+++ b/src/lib/netlist/nl_factory.c
@@ -34,18 +34,19 @@ ATTR_COLD const pstring_list_t base_factory_t::def_params()
}
-factory_list_t::factory_list_t()
+factory_list_t::factory_list_t( setup_t &setup)
+: m_setup(setup)
{
}
factory_list_t::~factory_list_t()
{
- for (std::size_t i=0; i < m_list.size(); i++)
+ for (std::size_t i=0; i < size(); i++)
{
- base_factory_t *p = m_list[i];
+ base_factory_t *p = value_at(i);
pfree(p);
}
- m_list.clear();
+ clear();
}
#if 0
@@ -65,25 +66,26 @@ device_t *factory_list_t::new_device_by_classname(const pstring &classname) cons
}
#endif
-device_t *factory_list_t::new_device_by_name(const pstring &name, setup_t &setup) const
+void factory_list_t::error(const pstring &s)
+{
+ m_setup.log().fatal("{1}", s);
+}
+
+device_t *factory_list_t::new_device_by_name(const pstring &name)
{
- base_factory_t *f = factory_by_name(name, setup);
+ base_factory_t *f = factory_by_name(name);
return f->Create();
}
-base_factory_t * factory_list_t::factory_by_name(const pstring &name, setup_t &setup) const
+base_factory_t * factory_list_t::factory_by_name(const pstring &name)
{
- for (std::size_t i=0; i < m_list.size(); i++)
+ if (contains(name))
+ return (*this)[name];
+ else
{
- base_factory_t *p = m_list[i];
- if (p->name() == name)
- {
- return p;
- }
- p++;
+ m_setup.log().fatal("Class {1} not found!\n", name);
+ return NULL; // appease code analysis
}
- setup.netlist().error("Class %s not found!\n", name.cstr());
- return NULL; // appease code analysis
}
}
diff --git a/src/emu/netlist/nl_factory.h b/src/lib/netlist/nl_factory.h
index c3e8577743a..b758941dd71 100644
--- a/src/emu/netlist/nl_factory.h
+++ b/src/lib/netlist/nl_factory.h
@@ -62,35 +62,34 @@ namespace netlist
}
};
- class factory_list_t
+ class factory_list_t : public phashmap_t<pstring, base_factory_t *>
{
public:
- typedef plist_t<base_factory_t *> list_t;
-
- factory_list_t();
+ factory_list_t(setup_t &m_setup);
~factory_list_t();
template<class _C>
ATTR_COLD void register_device(const pstring &name, const pstring &classname,
const pstring &def_param)
{
- m_list.add(palloc(factory_t< _C >(name, classname, def_param)));
+ if (!add(name, palloc(factory_t< _C >(name, classname, def_param))))
+ error("factory already contains " + name);
}
ATTR_COLD void register_device(base_factory_t *factory)
{
- m_list.add(factory);
+ if (!add(factory->name(), factory))
+ error("factory already contains " + factory->name());
}
//ATTR_COLD device_t *new_device_by_classname(const pstring &classname) const;
- ATTR_COLD device_t *new_device_by_name(const pstring &name, setup_t &setup) const;
- ATTR_COLD base_factory_t * factory_by_name(const pstring &name, setup_t &setup) const;
-
- const list_t &list() { return m_list; }
+ ATTR_COLD device_t *new_device_by_name(const pstring &name);
+ ATTR_COLD base_factory_t * factory_by_name(const pstring &name);
private:
- list_t m_list;
+ void error(const pstring &s);
+ setup_t &m_setup;
};
}
diff --git a/src/emu/netlist/nl_lists.h b/src/lib/netlist/nl_lists.h
index b861d1e84e2..b861d1e84e2 100644
--- a/src/emu/netlist/nl_lists.h
+++ b/src/lib/netlist/nl_lists.h
diff --git a/src/emu/netlist/nl_parser.c b/src/lib/netlist/nl_parser.c
index efdac63c182..312410fafc6 100644
--- a/src/emu/netlist/nl_parser.c
+++ b/src/lib/netlist/nl_parser.c
@@ -9,8 +9,12 @@
#include "nl_factory.h"
#include "devices/nld_truthtable.h"
-//#undef NL_VERBOSE_OUT
-//#define NL_VERBOSE_OUT(x) printf x
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
namespace netlist
{
@@ -18,23 +22,17 @@ namespace netlist
// A netlist parser
// ----------------------------------------------------------------------------------------
-ATTR_COLD void parser_t::verror(pstring msg, int line_num, pstring line)
+ATTR_COLD void parser_t::verror(const pstring &msg, int line_num, const pstring &line)
{
- m_setup.netlist().error("line %d: error: %s\n\t\t%s\n", line_num,
- msg.cstr(), line.cstr());
+ m_setup.log().fatal("line {1}: error: {2}\n\t\t{3}\n", line_num,
+ msg, line);
//throw error;
}
-bool parser_t::parse(const char *buf, const pstring nlname)
+bool parser_t::parse(const pstring nlname)
{
- ppreprocessor prepro;
-
- pstring processed = prepro.process(buf);
- m_buf = processed.cstr();
-
- reset(m_buf);
set_identifier_chars("abcdefghijklmnopqrstuvwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_.-");
set_number_chars(".0123456789", "0123456789eE-."); //FIXME: processing of numbers
char ws[5];
@@ -76,7 +74,7 @@ bool parser_t::parse(const char *buf, const pstring nlname)
if (token.is_type(ENDOFFILE))
{
return false;
- //error("EOF while searching for <%s>", nlname.cstr());
+ //error("EOF while searching for <{1}>", nlname);
}
if (token.is(m_tok_NETLIST_END))
@@ -117,7 +115,7 @@ void parser_t::parse_netlist(ATTR_UNUSED const pstring &nlname)
return;
require_token(m_tok_param_left);
- NL_VERBOSE_OUT(("Parser: Device: %s\n", token.str().cstr()));
+ m_setup.log().debug("Parser: Device: {1}\n", token.str());
if (token.is(m_tok_ALIAS))
net_alias();
@@ -189,7 +187,7 @@ void parser_t::net_truthtable_start()
else if (token.is(m_tok_TT_FAMILY))
{
require_token(m_tok_param_left);
- ttd->m_family = netlist::logic_family_desc_t::from_model(m_setup.get_model_str(get_string()));
+ ttd->m_family = m_setup.family_from_model(get_string());
require_token(m_tok_param_right);
}
else
@@ -278,7 +276,7 @@ void parser_t::net_alias()
require_token(m_tok_param_right);
- NL_VERBOSE_OUT(("Parser: Alias: %s %s\n", alias.cstr(), out.cstr()));
+ m_setup.log().debug("Parser: Alias: {1} {2}\n", alias, out);
m_setup.register_alias(alias, out);
}
@@ -291,12 +289,12 @@ void parser_t::net_c()
{
pstring t1 = get_identifier();
m_setup.register_link(first , t1);
- NL_VERBOSE_OUT(("Parser: Connect: %s %s\n", first.cstr(), t1.cstr()));
+ m_setup.log().debug("Parser: Connect: {1} {2}\n", first, t1);
token_t n = get_token();
if (n.is(m_tok_param_right))
break;
if (!n.is(m_tok_comma))
- error("expected a comma, found <%s>", n.str().cstr());
+ error(pfmt("expected a comma, found <{1}>")(n.str()) );
}
}
@@ -316,15 +314,15 @@ void parser_t::dippins()
if (n.is(m_tok_param_right))
break;
if (!n.is(m_tok_comma))
- error("expected a comma, found <%s>", n.str().cstr());
+ error(pfmt("expected a comma, found <{1}>")(n.str()) );
}
if ((pins.size() % 2) == 1)
error("You must pass an equal number of pins to DIPPINS");
unsigned n = pins.size();
for (unsigned i = 0; i < n / 2; i++)
{
- m_setup.register_alias(pstring::sprintf("%d", i+1), pins[i*2]);
- m_setup.register_alias(pstring::sprintf("%d", n-i), pins[i*2 + 1]);
+ m_setup.register_alias(pfmt("{1}")(i+1), pins[i*2]);
+ m_setup.register_alias(pfmt("{1}")(n-i), pins[i*2 + 1]);
}
}
@@ -336,14 +334,14 @@ void parser_t::netdev_param()
token_t tok = get_token();
if (tok.is_type(STRING))
{
- NL_VERBOSE_OUT(("Parser: Param: %s %s\n", param.cstr(), tok.str().cstr()));
+ m_setup.log().debug("Parser: Param: {1} {2}\n", param, tok.str());
m_setup.register_param(param, tok.str());
}
else
{
nl_double val = eval_param(tok);
- NL_VERBOSE_OUT(("Parser: Param: %s %f\n", param.cstr(), val));
- m_setup.register_param(param, val);
+ m_setup.log().debug("Parser: Param: {1} {2}\n", param, val);
+ m_setup.register_param(param, val);
}
require_token(m_tok_param_right);
}
@@ -360,7 +358,7 @@ void parser_t::device(const pstring &dev_type)
}
else
{
- base_factory_t *f = m_setup.factory().factory_by_name(dev_type, m_setup);
+ base_factory_t *f = m_setup.factory().factory_by_name(dev_type);
device_t *dev;
pstring_list_t termlist = f->term_param_list();
pstring_list_t def_params = f->def_params();
@@ -372,14 +370,14 @@ void parser_t::device(const pstring &dev_type)
dev = f->Create();
m_setup.register_dev(dev, devname);
- NL_VERBOSE_OUT(("Parser: IC: %s\n", devname.cstr()));
+ m_setup.log().debug("Parser: IC: {1}\n", devname);
cnt = 0;
while (cnt < def_params.size())
{
pstring paramfq = devname + "." + def_params[cnt];
- NL_VERBOSE_OUT(("Defparam: %s\n", paramfq.cstr()));
+ m_setup.log().debug("Defparam: {1}\n", paramfq);
require_token(m_tok_comma);
token_t tok = get_token();
if (tok.is_type(STRING))
@@ -406,7 +404,7 @@ void parser_t::device(const pstring &dev_type)
tok = get_token();
}
if (cnt != termlist.size())
- m_setup.netlist().error("netlist: input count mismatch for %s - expected %" SIZETFMT " found %" SIZETFMT "\n", devname.cstr(), SIZET_PRINTF(termlist.size()), SIZET_PRINTF(cnt));
+ m_setup.log().fatal("netlist: input count mismatch for {1} - expected {2} found {3}\n", devname, termlist.size(), cnt);
require_token(tok, m_tok_param_right);
}
}
@@ -427,7 +425,6 @@ nl_double parser_t::eval_param(const token_t tok)
nl_double ret;
pstring val;
- //printf("param %s\n", tok.m_token.cstr());
for (i=1; i<6;i++)
if (tok.str().equals(macs[i]))
f = i;
@@ -459,10 +456,14 @@ nl_double parser_t::eval_param(const token_t tok)
ret = val.as_double(&e);
if (e)
- error("Error with parameter ...\n");
+ fatal("Error with parameter ...\n");
if (f>0)
require_token(m_tok_param_right);
return ret * facs[f];
#endif
}
}
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/netlist/nl_parser.h b/src/lib/netlist/nl_parser.h
index 89c2ba4e1e1..73c6cf66837 100644
--- a/src/emu/netlist/nl_parser.h
+++ b/src/lib/netlist/nl_parser.h
@@ -18,11 +18,12 @@ namespace netlist
{
P_PREVENT_COPYING(parser_t)
public:
- parser_t(setup_t &setup)
- : ptokenizer(), m_setup(setup), m_buf(NULL) {}
+ parser_t(pistream &strm, setup_t &setup)
+ : ptokenizer(strm), m_setup(setup), m_buf(NULL) {}
- bool parse(const char *buf, const pstring nlname = "");
+ bool parse(const pstring nlname = "");
+ protected:
void parse_netlist(const pstring &nlname);
void net_alias();
void dippins();
@@ -38,11 +39,10 @@ namespace netlist
void net_local_source();
void net_truthtable_start();
- protected:
/* for debugging messages */
netlist_t &netlist() { return m_setup.netlist(); }
- virtual void verror(pstring msg, int line_num, pstring line);
+ virtual void verror(const pstring &msg, int line_num, const pstring &line);
private:
nl_double eval_param(const token_t tok);
diff --git a/src/emu/netlist/nl_setup.c b/src/lib/netlist/nl_setup.c
index de5f377a548..94cb85ced03 100644
--- a/src/emu/netlist/nl_setup.c
+++ b/src/lib/netlist/nl_setup.c
@@ -5,9 +5,10 @@
*
*/
-#include <solver/nld_solver.h>
#include <cstdio>
+#include "solver/nld_solver.h"
+
#include "plib/palloc.h"
#include "nl_base.h"
#include "nl_setup.h"
@@ -30,6 +31,7 @@ static NETLIST_START(base)
LOCAL_SOURCE(TTL74XX_lib)
LOCAL_SOURCE(CD4XXX_lib)
LOCAL_SOURCE(OPAMP_lib)
+ LOCAL_SOURCE(otheric_lib)
INCLUDE(diode_models);
INCLUDE(bjt_models);
@@ -37,6 +39,7 @@ static NETLIST_START(base)
INCLUDE(TTL74XX_lib);
INCLUDE(CD4XXX_lib);
INCLUDE(OPAMP_lib);
+ INCLUDE(otheric_lib);
NETLIST_END()
@@ -52,7 +55,7 @@ setup_t::setup_t(netlist_t *netlist)
, m_proxy_cnt(0)
{
netlist->set_setup(this);
- m_factory = palloc(factory_list_t);
+ m_factory = palloc(factory_list_t(*this));
}
void setup_t::init()
@@ -106,14 +109,14 @@ device_t *setup_t::register_dev(device_t *dev, const pstring &name)
dev->init(netlist(), fqn);
if (!(netlist().m_devices.add(dev, false)==true))
- netlist().error("Error adding %s to device list\n", name.cstr());
+ log().fatal("Error adding {1} to device list\n", name);
return dev;
}
void setup_t::register_lib_entry(const pstring &name)
{
if (m_lib.contains(name))
- netlist().warning("Lib entry collection already contains %s. IGNORED", name.cstr());
+ log().warning("Lib entry collection already contains {1}. IGNORED", name);
else
m_lib.add(name);
}
@@ -129,23 +132,29 @@ device_t *setup_t::register_dev(const pstring &classname, const pstring &name)
}
else
{
- device_t *dev = factory().new_device_by_name(classname, *this);
+ device_t *dev = factory().new_device_by_name(classname);
//device_t *dev = factory().new_device_by_classname(classname);
if (dev == NULL)
- netlist().error("Class %s not found!\n", classname.cstr());
+ log().fatal("Class {1} not found!\n", classname);
return register_dev(dev, name);
}
}
-void setup_t::register_model(const pstring &model)
+void setup_t::register_model(const pstring &model_in)
{
- m_models.add(model);
+ int pos = model_in.find(" ");
+ if (pos < 0)
+ log().fatal("Unable to parse model: {1}", model_in);
+ pstring model = model_in.left(pos).trim().ucase();
+ pstring def = model_in.substr(pos + 1).trim();
+ if (!m_models.add(model, def))
+ log().fatal("Model already exists: {1}", model_in);
}
void setup_t::register_alias_nofqn(const pstring &alias, const pstring &out)
{
if (!m_alias.add(alias, out))
- netlist().error("Error adding alias %s to alias list\n", alias.cstr());
+ log().fatal("Error adding alias {1} to alias list\n", alias);
}
void setup_t::register_alias(const pstring &alias, const pstring &out)
@@ -159,12 +168,12 @@ void setup_t::register_dippins_arr(const pstring &terms)
{
pstring_list_t list(terms,", ");
if (list.size() == 0 || (list.size() % 2) == 1)
- netlist().error("You must pass an equal number of pins to DIPPINS");
+ log().fatal("You must pass an equal number of pins to DIPPINS");
unsigned n = list.size();
for (unsigned i = 0; i < n / 2; i++)
{
- register_alias(pstring::sprintf("%d", i+1), list[i * 2]);
- register_alias(pstring::sprintf("%d", n-i), list[i * 2 + 1]);
+ register_alias(pfmt("{1}")(i+1), list[i * 2]);
+ register_alias(pfmt("{1}")(n-i), list[i * 2 + 1]);
}
}
@@ -190,29 +199,10 @@ pstring setup_t::objtype_as_astr(object_t &in) const
return "QUEUE";
}
// FIXME: noreturn
- netlist().error("Unknown object type %d\n", in.type());
+ log().fatal("Unknown object type {1}\n", (unsigned) in.type());
return "Error";
}
-const pstring setup_t::get_model_str(const pstring val) const
-{
- if (val.startsWith(".model ") || val.find("(") >= 0)
- {
- return val;
- }
- else
- {
- pstring search = (".model " + val + " ").ucase();
- for (std::size_t i=0; i < m_models.size(); i++)
- {
- if (m_models[i].ucase().startsWith(search))
- return m_models[i];
- }
- netlist().error("Model %s not found\n", val.cstr());
- return ""; /* please compiler */
- }
-}
-
void setup_t::register_object(device_t &dev, const pstring &name, object_t &obj)
{
@@ -230,14 +220,14 @@ void setup_t::register_object(device_t &dev, const pstring &name, object_t &obj)
else if (obj.isFamily(terminal_t::ANALOG))
dynamic_cast<analog_output_t &>(term).init_object(dev, dev.name() + "." + name);
else
- netlist().error("Error adding %s %s to terminal list, neither LOGIC nor ANALOG\n", objtype_as_astr(term).cstr(), term.name().cstr());
+ log().fatal("Error adding {1} {2} to terminal list, neither LOGIC nor ANALOG\n", objtype_as_astr(term), term.name());
}
else
term.init_object(dev, dev.name() + "." + name);
- if (!(m_terminals.add(&term, false)==true))
- netlist().error("Error adding %s %s to terminal list\n", objtype_as_astr(term).cstr(), term.name().cstr());
- NL_VERBOSE_OUT(("%s %s\n", objtype_as_astr(term).cstr(), name.cstr()));
+ if (!m_terminals.add(term.name(), &term))
+ log().fatal("Error adding {1} {2} to terminal list\n", objtype_as_astr(term), term.name());
+ log().debug("{1} {2}\n", objtype_as_astr(term), name);
}
break;
case terminal_t::NET:
@@ -245,7 +235,7 @@ void setup_t::register_object(device_t &dev, const pstring &name, object_t &obj)
case terminal_t::PARAM:
{
param_t &param = dynamic_cast<param_t &>(obj);
- //printf("name: %s\n", name.cstr());
+ //printf("name: {1}\n", name);
if (m_params_temp.contains(name))
{
const pstring val = m_params_temp[name];
@@ -253,20 +243,20 @@ void setup_t::register_object(device_t &dev, const pstring &name, object_t &obj)
{
case param_t::DOUBLE:
{
- NL_VERBOSE_OUT(("Found parameter ... %s : %s\n", name.cstr(), val.cstr()));
+ log().debug("Found parameter ... {1} : {1}\n", name, val);
double vald = 0;
- if (std::sscanf(val.cstr(), "%lf", &vald) != 1)
- netlist().error("Invalid number conversion %s : %s\n", name.cstr(), val.cstr());
+ if (sscanf(val.cstr(), "%lf", &vald) != 1)
+ log().fatal("Invalid number conversion {1} : {2}\n", name, val);
dynamic_cast<param_double_t &>(param).initial(vald);
}
break;
case param_t::INTEGER:
case param_t::LOGIC:
{
- NL_VERBOSE_OUT(("Found parameter ... %s : %s\n", name.cstr(), val.cstr()));
+ log().debug("Found parameter ... {1} : {2}\n", name, val);
double vald = 0;
- if (std::sscanf(val.cstr(), "%lf", &vald) != 1)
- netlist().error("Invalid number conversion %s : %s\n", name.cstr(), val.cstr());
+ if (sscanf(val.cstr(), "%lf", &vald) != 1)
+ log().fatal("Invalid number conversion {1} : {2}\n", name, val);
dynamic_cast<param_int_t &>(param).initial((int) vald);
}
break;
@@ -276,24 +266,25 @@ void setup_t::register_object(device_t &dev, const pstring &name, object_t &obj)
}
break;
case param_t::MODEL:
- dynamic_cast<param_model_t &>(param).initial(get_model_str(val));
+ //dynamic_cast<param_model_t &>(param).initial(val);
+ dynamic_cast<param_model_t &>(param).initial(val);
break;
default:
- netlist().error("Parameter is not supported %s : %s\n", name.cstr(), val.cstr());
+ log().fatal("Parameter is not supported {1} : {2}\n", name, val);
}
}
if (!m_params.add(param.name(), &param))
- netlist().error("Error adding parameter %s to parameter list\n", name.cstr());
+ log().fatal("Error adding parameter {1} to parameter list\n", name);
}
break;
case terminal_t::DEVICE:
- netlist().error("Device registration not yet supported - %s\n", name.cstr());
+ log().fatal("Device registration not yet supported - {1}\n", name);
break;
case terminal_t::NETLIST:
- netlist().error("Netlist registration not yet supported - %s\n", name.cstr());
+ log().fatal("Netlist registration not yet supported - {1}\n", name);
break;
case terminal_t::QUEUE:
- netlist().error("QUEUE registration not yet supported - %s\n", name.cstr());
+ log().fatal("QUEUE registration not yet supported - {1}\n", name);
break;
}
}
@@ -302,7 +293,7 @@ void setup_t::register_link_arr(const pstring &terms)
{
pstring_list_t list(terms,", ");
if (list.size() < 2)
- netlist().error("You must pass at least 2 terminals to NET_C");
+ log().fatal("You must pass at least 2 terminals to NET_C");
for (std::size_t i = 1; i < list.size(); i++)
{
register_link(list[0], list[i]);
@@ -313,7 +304,7 @@ void setup_t::register_link_arr(const pstring &terms)
void setup_t::register_link_fqn(const pstring &sin, const pstring &sout)
{
link_t temp = link_t(sin, sout);
- NL_VERBOSE_OUT(("link %s <== %s\n", sin.cstr(), sout.cstr()));
+ log().debug("link {1} <== {2}\n", sin, sout);
m_links.add(temp);
}
@@ -330,20 +321,20 @@ void setup_t::remove_connections(const pstring pin)
{
if ((m_links[i].e1 == pinfn) || (m_links[i].e2 == pinfn))
{
- netlist().log("removing connection: %s <==> %s\n", m_links[i].e1.cstr(), m_links[i].e2.cstr());
+ log().verbose("removing connection: {1} <==> {2}\n", m_links[i].e1, m_links[i].e2);
m_links.remove_at(i);
found = true;
}
}
if (!found)
- netlist().error("remove_connections: found no occurrence of %s\n", pin.cstr());
+ log().fatal("remove_connections: found no occurrence of {1}\n", pin);
}
void setup_t::register_frontier(const pstring attach, const double r_IN, const double r_OUT)
{
static int frontier_cnt = 0;
- pstring frontier_name = pstring::sprintf("frontier_%d", frontier_cnt);
+ pstring frontier_name = pfmt("frontier_{1}")(frontier_cnt);
frontier_cnt++;
device_t *front = register_dev("FRONTIER_DEV", frontier_name);
register_param(frontier_name + ".RIN", r_IN);
@@ -365,7 +356,7 @@ void setup_t::register_frontier(const pstring attach, const double r_IN, const d
}
}
if (!found)
- netlist().error("Frontier setup: found no occurrence of %s\n", attach.cstr());
+ log().fatal("Frontier setup: found no occurrence of {1}\n", attach);
register_link(attach, frontier_name + ".Q");
}
@@ -373,7 +364,7 @@ void setup_t::register_frontier(const pstring attach, const double r_IN, const d
void setup_t::register_param(const pstring &param, const double value)
{
// FIXME: there should be a better way
- register_param(param, pstring::sprintf("%.9e", value));
+ register_param(param, pfmt("{1}").e(value,".9"));
}
void setup_t::register_param(const pstring &param, const pstring &value)
@@ -384,11 +375,11 @@ void setup_t::register_param(const pstring &param, const pstring &value)
if (idx < 0)
{
if (!m_params_temp.add(fqn, value))
- netlist().error("Unexpected error adding parameter %s to parameter list\n", param.cstr());
+ log().fatal("Unexpected error adding parameter {1} to parameter list\n", param);
}
else
{
- netlist().warning("Overwriting %s old <%s> new <%s>\n", fqn.cstr(), m_params_temp.value_at(idx).cstr(), value.cstr());
+ log().warning("Overwriting {1} old <{2}> new <{3}>\n", fqn, m_params_temp.value_at(idx), value);
m_params_temp[fqn] = value;
}
}
@@ -405,55 +396,60 @@ const pstring setup_t::resolve_alias(const pstring &name) const
temp = (p>=0 ? m_alias.value_at(p) : "");
} while (temp != "");
- NL_VERBOSE_OUT(("%s==>%s\n", name.cstr(), ret.cstr()));
+ log().debug("{1}==>{2}\n", name, ret);
return ret;
}
core_terminal_t *setup_t::find_terminal(const pstring &terminal_in, bool required)
{
const pstring &tname = resolve_alias(terminal_in);
- core_terminal_t *ret;
+ int ret;
- ret = m_terminals.find_by_name(tname);
+ ret = m_terminals.index_of(tname);
/* look for default */
- if (ret == NULL)
+ if (ret < 0)
{
/* look for ".Q" std output */
- pstring s = tname + ".Q";
- ret = m_terminals.find_by_name(s);
+ ret = m_terminals.index_of(tname + ".Q");
}
- if (ret == NULL && required)
- netlist().error("terminal %s(%s) not found!\n", terminal_in.cstr(), tname.cstr());
- if (ret != NULL)
- NL_VERBOSE_OUT(("Found input %s\n", tname.cstr()));
- return ret;
+
+ core_terminal_t *term = (ret < 0 ? NULL : m_terminals.value_at(ret));
+
+ if (term == NULL && required)
+ log().fatal("terminal {1}({2}) not found!\n", terminal_in, tname);
+ if (term != NULL)
+ log().debug("Found input {1}\n", tname);
+ return term;
}
core_terminal_t *setup_t::find_terminal(const pstring &terminal_in, object_t::type_t atype, bool required)
{
const pstring &tname = resolve_alias(terminal_in);
- core_terminal_t *ret;
+ int ret;
- ret = m_terminals.find_by_name(tname);
+ ret = m_terminals.index_of(tname);
/* look for default */
- if (ret == NULL && atype == object_t::OUTPUT)
+ if (ret < 0 && atype == object_t::OUTPUT)
{
/* look for ".Q" std output */
- pstring s = tname + ".Q";
- ret = m_terminals.find_by_name(s);
+ ret = m_terminals.index_of(tname + ".Q");
}
- if (ret == NULL && required)
- netlist().error("terminal %s(%s) not found!\n", terminal_in.cstr(), tname.cstr());
- if (ret != NULL && ret->type() != atype)
+ if (ret < 0 && required)
+ log().fatal("terminal {1}({2}) not found!\n", terminal_in, tname);
+
+ core_terminal_t *term = (ret < 0 ? NULL : m_terminals.value_at(ret));
+
+ if (term != NULL && term->type() != atype)
{
if (required)
- netlist().error("object %s(%s) found but wrong type\n", terminal_in.cstr(), tname.cstr());
+ log().fatal("object {1}({2}) found but wrong type\n", terminal_in, tname);
else
- ret = NULL;
+ term = NULL;
}
- if (ret != NULL)
- NL_VERBOSE_OUT(("Found input %s\n", tname.cstr()));
- return ret;
+ if (term != NULL)
+ log().debug("Found input {1}\n", tname);
+
+ return term;
}
param_t *setup_t::find_param(const pstring &param_in, bool required)
@@ -465,9 +461,9 @@ param_t *setup_t::find_param(const pstring &param_in, bool required)
ret = m_params.index_of(outname);
if (ret < 0 && required)
- netlist().error("parameter %s(%s) not found!\n", param_in_fqn.cstr(), outname.cstr());
+ log().fatal("parameter {1}({2}) not found!\n", param_in_fqn, outname);
if (ret != -1)
- NL_VERBOSE_OUT(("Found parameter %s\n", outname.cstr()));
+ log().debug("Found parameter {1}\n", outname);
return (ret == -1 ? NULL : m_params.value_at(ret));
}
@@ -476,7 +472,7 @@ devices::nld_base_proxy *setup_t::get_d_a_proxy(core_terminal_t &out)
{
nl_assert(out.isFamily(terminal_t::LOGIC));
- //printf("proxy for %s\n", out.name().cstr());;
+ //printf("proxy for {1}\n", out.name());;
logic_output_t &out_cast = dynamic_cast<logic_output_t &>(out);
devices::nld_base_proxy *proxy = out_cast.get_proxy();
@@ -484,7 +480,7 @@ devices::nld_base_proxy *setup_t::get_d_a_proxy(core_terminal_t &out)
{
// create a new one ...
devices::nld_base_d_to_a_proxy *new_proxy = out_cast.logic_family()->create_d_a_proxy(&out_cast);
- pstring x = pstring::sprintf("proxy_da_%s_%d", out.name().cstr(), m_proxy_cnt);
+ pstring x = pfmt("proxy_da_{1}_{2}")(out.name())(m_proxy_cnt);
m_proxy_cnt++;
register_dev(new_proxy, x);
@@ -498,7 +494,7 @@ devices::nld_base_proxy *setup_t::get_d_a_proxy(core_terminal_t &out)
core_terminal_t *p = out.net().m_core_terms[i];
p->clear_net(); // de-link from all nets ...
if (!connect(new_proxy->proxy_term(), *p))
- netlist().error("Error connecting %s to %s\n", new_proxy->proxy_term().name().cstr(), (*p).name().cstr());
+ log().fatal("Error connecting {1} to {2}\n", new_proxy->proxy_term().name(), (*p).name());
}
out.net().m_core_terms.clear(); // clear the list
#endif
@@ -516,7 +512,7 @@ void setup_t::connect_input_output(core_terminal_t &in, core_terminal_t &out)
logic_input_t &incast = dynamic_cast<logic_input_t &>(in);
devices::nld_a_to_d_proxy *proxy = palloc(devices::nld_a_to_d_proxy(&incast));
incast.set_proxy(proxy);
- pstring x = pstring::sprintf("proxy_ad_%s_%d", in.name().cstr(), m_proxy_cnt);
+ pstring x = pfmt("proxy_ad_{1}_{2}")(in.name())( m_proxy_cnt);
m_proxy_cnt++;
register_dev(proxy, x);
@@ -552,10 +548,10 @@ void setup_t::connect_terminal_input(terminal_t &term, core_terminal_t &inp)
else if (inp.isFamily(terminal_t::LOGIC))
{
logic_input_t &incast = dynamic_cast<logic_input_t &>(inp);
- NL_VERBOSE_OUT(("connect_terminal_input: connecting proxy\n"));
+ log().debug("connect_terminal_input: connecting proxy\n");
devices::nld_a_to_d_proxy *proxy = palloc(devices::nld_a_to_d_proxy(&incast));
incast.set_proxy(proxy);
- pstring x = pstring::sprintf("proxy_ad_%s_%d", inp.name().cstr(), m_proxy_cnt);
+ pstring x = pfmt("proxy_ad_{1}_{2}")(inp.name())(m_proxy_cnt);
m_proxy_cnt++;
register_dev(proxy, x);
@@ -571,7 +567,7 @@ void setup_t::connect_terminal_input(terminal_t &term, core_terminal_t &inp)
}
else
{
- netlist().error("Netlist: Severe Error");
+ log().fatal("Netlist: Severe Error");
}
}
@@ -579,7 +575,7 @@ void setup_t::connect_terminal_output(terminal_t &in, core_terminal_t &out)
{
if (out.isFamily(terminal_t::ANALOG))
{
- NL_VERBOSE_OUT(("connect_terminal_output: %s %s\n", in.name().cstr(), out.name().cstr()));
+ log().debug("connect_terminal_output: {1} {2}\n", in.name(), out.name());
/* no proxy needed, just merge existing terminal net */
if (in.has_net())
out.net().merge_net(&in.net());
@@ -588,14 +584,14 @@ void setup_t::connect_terminal_output(terminal_t &in, core_terminal_t &out)
}
else if (out.isFamily(terminal_t::LOGIC))
{
- NL_VERBOSE_OUT(("connect_terminal_output: connecting proxy\n"));
+ log().debug("connect_terminal_output: connecting proxy\n");
devices::nld_base_proxy *proxy = get_d_a_proxy(out);
connect_terminals(proxy->proxy_term(), in);
}
else
{
- netlist().error("Netlist: Severe Error");
+ log().fatal("Netlist: Severe Error");
}
}
@@ -606,22 +602,22 @@ void setup_t::connect_terminals(core_terminal_t &t1, core_terminal_t &t2)
if (t1.has_net() && t2.has_net())
{
- NL_VERBOSE_OUT(("T2 and T1 have net\n"));
+ log().debug("T2 and T1 have net\n");
t1.net().merge_net(&t2.net());
}
else if (t2.has_net())
{
- NL_VERBOSE_OUT(("T2 has net\n"));
+ log().debug("T2 has net\n");
t2.net().register_con(t1);
}
else if (t1.has_net())
{
- NL_VERBOSE_OUT(("T1 has net\n"));
+ log().debug("T1 has net\n");
t1.net().register_con(t2);
}
else
{
- NL_VERBOSE_OUT(("adding net ...\n"));
+ log().debug("adding net ...\n");
analog_net_t *anet = palloc(analog_net_t);
t1.set_net(*anet);
//m_netlist.solver()->m_nets.add(anet);
@@ -689,7 +685,7 @@ bool setup_t::connect_input_input(core_terminal_t &t1, core_terminal_t &t2)
bool setup_t::connect(core_terminal_t &t1_in, core_terminal_t &t2_in)
{
- NL_VERBOSE_OUT(("Connecting %s to %s\n", t1_in.name().cstr(), t2_in.name().cstr()));
+ log().debug("Connecting {1} to {2}\n", t1_in.name(), t2_in.name());
core_terminal_t &t1 = resolve_proxy(t1_in);
core_terminal_t &t2 = resolve_proxy(t2_in);
bool ret = true;
@@ -697,13 +693,13 @@ bool setup_t::connect(core_terminal_t &t1_in, core_terminal_t &t2_in)
if (t1.isType(core_terminal_t::OUTPUT) && t2.isType(core_terminal_t::INPUT))
{
if (t2.has_net() && t2.net().isRailNet())
- netlist().error("Input %s already connected\n", t2.name().cstr());
+ log().fatal("Input {1} already connected\n", t2.name());
connect_input_output(t2, t1);
}
else if (t1.isType(core_terminal_t::INPUT) && t2.isType(core_terminal_t::OUTPUT))
{
if (t1.has_net() && t1.net().isRailNet())
- netlist().error("Input %s already connected\n", t1.name().cstr());
+ log().fatal("Input {1} already connected\n", t1.name());
connect_input_output(t1, t2);
}
else if (t1.isType(core_terminal_t::OUTPUT) && t2.isType(core_terminal_t::TERMINAL))
@@ -732,7 +728,7 @@ bool setup_t::connect(core_terminal_t &t1_in, core_terminal_t &t2_in)
}
else
ret = false;
- //netlist().error("Connecting %s to %s not supported!\n", t1.name().cstr(), t2.name().cstr());
+ //netlist().error("Connecting {1} to {2} not supported!\n", t1.name(), t2.name());
return ret;
}
@@ -740,7 +736,7 @@ void setup_t::resolve_inputs()
{
bool has_twoterms = false;
- netlist().log("Resolving inputs ...");
+ log().verbose("Resolving inputs ...");
/* Netlist can directly connect input to input.
* We therefore first park connecting inputs and retry
@@ -758,25 +754,21 @@ void setup_t::resolve_inputs()
core_terminal_t *t2 = find_terminal(t2s);
if (connect(*t1, *t2))
- {
m_links.remove_at(li);
- }
else
- {
li++;
- }
}
tries--;
}
if (tries == 0)
{
for (std::size_t i = 0; i < m_links.size(); i++ )
- netlist().warning("Error connecting %s to %s\n", m_links[i].e1.cstr(), m_links[i].e2.cstr());
+ log().warning("Error connecting {1} to {2}\n", m_links[i].e1, m_links[i].e2);
- netlist().error("Error connecting -- bailing out\n");
+ log().fatal("Error connecting -- bailing out\n");
}
- netlist().log("deleting empty nets ...");
+ log().verbose("deleting empty nets ...");
// delete empty nets ... and save m_list ...
@@ -796,7 +788,7 @@ void setup_t::resolve_inputs()
for (std::size_t i=0; i < todelete.size(); i++)
{
- netlist().log("Deleting net %s ...", todelete[i]->name().cstr());
+ log().verbose("Deleting net {1} ...", todelete[i]->name());
netlist().m_nets.remove(todelete[i]);
if (!todelete[i]->isRailNet())
pfree(todelete[i]);
@@ -804,21 +796,21 @@ void setup_t::resolve_inputs()
pstring errstr("");
- netlist().log("looking for terminals not connected ...");
+ log().verbose("looking for terminals not connected ...");
for (std::size_t i = 0; i < m_terminals.size(); i++)
{
- if (!m_terminals[i]->has_net())
- errstr += pstring::sprintf("Found terminal %s without a net\n",
- m_terminals[i]->name().cstr());
- else if (m_terminals[i]->net().num_cons() == 0)
- netlist().warning("Found terminal %s without connections",
- m_terminals[i]->name().cstr());
+ core_terminal_t *term = m_terminals.value_at(i);
+ if (!term->has_net())
+ errstr += pfmt("Found terminal {1} without a net\n")(term->name());
+ else if (term->net().num_cons() == 0)
+ log().warning("Found terminal {1} without connections",
+ term->name());
}
if (errstr != "")
- netlist().error("%s", errstr.cstr());
+ log().fatal("{1}", errstr);
- netlist().log("looking for two terms connected to rail nets ...\n");
+ log().verbose("looking for two terms connected to rail nets ...\n");
// FIXME: doesn't find internal devices. This needs to be more clever
for (std::size_t i=0; i < netlist().m_devices.size(); i++)
{
@@ -828,21 +820,21 @@ void setup_t::resolve_inputs()
has_twoterms = true;
if (t->m_N.net().isRailNet() && t->m_P.net().isRailNet())
#if 0
- netlist().error("Found device %s connected only to railterminals %s/%s\n",
- t->name().cstr(), t->m_N.net().name().cstr(), t->m_P.net().name().cstr());
+ netlist().fatal("Found device {1} connected only to railterminals {2}/{3}\n",
+ t->name(), t->m_N.net().name(), t->m_P.net().name());
#else
- netlist().warning("Found device %s connected only to railterminals %s/%s\n",
- t->name().cstr(), t->m_N.net().name().cstr(), t->m_P.net().name().cstr());
+ log().warning("Found device {1} connected only to railterminals {2}/{3}\n",
+ t->name(), t->m_N.net().name(), t->m_P.net().name());
#endif
}
}
- netlist().log("initialize solver ...\n");
+ log().verbose("initialize solver ...\n");
if (netlist().solver() == NULL)
{
if (has_twoterms)
- netlist().error("No solver found for this net although analog elements are present\n");
+ log().fatal("No solver found for this net although analog elements are present\n");
}
else
netlist().solver()->post_start();
@@ -855,13 +847,13 @@ void setup_t::start_devices()
if (env != "")
{
- NL_VERBOSE_OUT(("Creating dynamic logs ...\n"));
+ log().debug("Creating dynamic logs ...\n");
pstring_list_t ll(env, ":");
for (unsigned i=0; i < ll.size(); i++)
{
- NL_VERBOSE_OUT(("%d: <%s>\n",i, ll[i].cstr()));
- NL_VERBOSE_OUT(("%d: <%s>\n",i, ll[i].cstr()));
- device_t *nc = factory().new_device_by_name("LOG", *this);
+ log().debug("{1}: <{2}>\n",i, ll[i]);
+ log().debug("{1}: <{2}>\n",i, ll[i]);
+ device_t *nc = factory().new_device_by_name("LOG");
pstring name = "log_" + ll[i];
register_dev(nc, name);
register_link(name + ".I", ll[i]);
@@ -878,7 +870,7 @@ void setup_t::print_stats() const
for (std::size_t i = 0; i < netlist().m_started_devices.size(); i++)
{
core_device_t *entry = netlist().m_started_devices[i];
- printf("Device %20s : %12d %12d %15ld\n", entry->name().cstr(), entry->stat_call_count, entry->stat_update_count, (long int) entry->stat_total_time / (entry->stat_update_count + 1));
+ printf("Device %20s : %12d %12d %15ld\n", entry->name(), entry->stat_call_count, entry->stat_update_count, (long int) entry->stat_total_time / (entry->stat_update_count + 1));
}
printf("Queue Pushes %15d\n", netlist().queue().m_prof_call);
printf("Queue Moves %15d\n", netlist().queue().m_prof_sortmove);
@@ -887,66 +879,131 @@ void setup_t::print_stats() const
}
// ----------------------------------------------------------------------------------------
-// Static
+// Model / family
// ----------------------------------------------------------------------------------------
-const pstring setup_t::model_value_str(const pstring &model_str, const pstring &entity, const pstring defval)
+class logic_family_std_proxy_t : public logic_family_desc_t
{
- pstring tmp = model_str;
- // .model 1N914 D(Is=2.52n Rs=.568 N=1.752 Cjo=4p M=.4 tt=20n Iave=200m Vpk=75 mfg=OnSemi type=silicon)
- int p = tmp.ucase().find(entity.ucase() + "=");
- if (p>=0)
+public:
+ logic_family_std_proxy_t() { }
+ virtual devices::nld_base_d_to_a_proxy *create_d_a_proxy(logic_output_t *proxied) const
{
- int pblank = tmp.find(" ", p);
- if (pblank < 0) pblank = tmp.len() + 1;
- tmp = tmp.substr(p, pblank - p);
- if (tmp.right(1) == ")")
- tmp = tmp.left(tmp.len()-1);
- int pequal = tmp.find("=", 0);
- if (pequal < 0)
- fatalerror_e("parameter %s misformat in model %s temp %s\n", entity.cstr(), model_str.cstr(), tmp.cstr());
- tmp = tmp.substr(pequal+1);
- return tmp;
+ return palloc(devices::nld_d_to_a_proxy(proxied));
}
+};
+
+logic_family_desc_t *setup_t::family_from_model(const pstring &model)
+{
+ model_map_t map;
+ model_parse(model, map);
+
+ if (setup_t::model_value_str(map, "TYPE") == "TTL")
+ return netlist_family_TTL;
+ if (setup_t::model_value_str(map, "TYPE") == "CD4XXX")
+ return netlist_family_CD4XXX;
+
+ logic_family_std_proxy_t *ret = palloc(logic_family_std_proxy_t);
+
+ ret->m_low_thresh_V = setup_t::model_value(map, "IVL");
+ ret->m_high_thresh_V = setup_t::model_value(map, "IVH");
+ ret->m_low_V = setup_t::model_value(map, "OVL");
+ ret->m_high_V = setup_t::model_value(map, "OVH");
+ ret->m_R_low = setup_t::model_value(map, "ORL");
+ ret->m_R_high = setup_t::model_value(map, "ORH");
+
+ return ret;
+}
+
+static pstring model_string(model_map_t &map)
+{
+ pstring ret = map["COREMODEL"] + "(";
+ for (unsigned i=0; i<map.size(); i++)
+ ret = ret + map.key_at(i) + "=" + map.value_at(i) + " ";
+
+ return ret + ")";
+}
+
+
+void setup_t::model_parse(const pstring &model_in, model_map_t &map)
+{
+ pstring model = model_in;
+ int pos = 0;
+ pstring key;
+
+ while (true)
+ {
+ pos = model.find("(");
+ if (pos >= 0) break;
+
+ key = model.ucase();
+ if (!m_models.contains(key))
+ log().fatal("Model {1} not found\n", model);
+ model = m_models[key];
+ }
+ pstring xmodel = model.left(pos);
+
+ if (xmodel.equals("_"))
+ map["COREMODEL"] = key;
else
{
- //netlist().log("Entity %s not found in model %s\n", entity.cstr(), tmp.cstr());
- //printf("Entity %s not found in model %s\n", entity.cstr(), tmp.cstr());
- return defval;
+ if (m_models.contains(xmodel))
+ model_parse(xmodel, map);
+ else
+ log().fatal("Model doesn't exist {1}\n", xmodel);
}
-}
-nl_double setup_t::model_value(const pstring &model_str, const pstring &entity, const nl_double defval)
-{
- pstring tmp = model_value_str(model_str, entity, "NOTFOUND");
+ pstring remainder=model.substr(pos+1).trim();
+ if (!remainder.endsWith(")"))
+ log().fatal("Model error {1}\n", model);
+ remainder = remainder.left(remainder.len() - 1);
- nl_double factor = NL_FCONST(1.0);
- if (tmp != "NOTFOUND")
+ pstring_list_t pairs(remainder," ", true);
+ for (unsigned i=0; i<pairs.size(); i++)
{
- char numfac = *(tmp.right(1).cstr());
- switch (numfac)
- {
- case 'M': factor = 1e6; break;
- case 'k': factor = 1e3; break;
- case 'm': factor = 1e-3; break;
- case 'u': factor = 1e-6; break;
- case 'n': factor = 1e-9; break;
- case 'p': factor = 1e-12; break;
- case 'f': factor = 1e-15; break;
- case 'a': factor = 1e-18; break;
- default:
- if (numfac < '0' || numfac > '9')
- fatalerror_e("Unknown number factor <%c> in: %s", numfac, entity.cstr());
- }
- if (factor != NL_FCONST(1.0))
- tmp = tmp.left(tmp.len() - 1);
- return tmp.as_double() * factor;
+ int pose = pairs[i].find("=");
+ if (pose < 0)
+ log().fatal("Model error on pair {1}\n", model);
+ map[pairs[i].left(pose).ucase()] = pairs[i].substr(pose+1);
}
+}
+
+const pstring setup_t::model_value_str(model_map_t &map, const pstring &entity)
+{
+ pstring ret;
+
+ if (entity != entity.ucase())
+ log().fatal("model parameters should be uppercase:{1} {2}\n", entity, model_string(map));
+ if (!map.contains(entity))
+ log().fatal("Entity {1} not found in model {2}\n", entity, model_string(map));
else
+ ret = map[entity];
+
+ return ret;
+}
+
+nl_double setup_t::model_value(model_map_t &map, const pstring &entity)
+{
+ pstring tmp = model_value_str(map, entity);
+
+ nl_double factor = NL_FCONST(1.0);
+ pstring numfac = tmp.right(1);
+ switch (numfac.code_at(0))
{
- //netlist().log("Entity %s not found in model %s\n", entity.cstr(), tmp.cstr());
- return defval;
+ case 'M': factor = 1e6; break;
+ case 'k': factor = 1e3; break;
+ case 'm': factor = 1e-3; break;
+ case 'u': factor = 1e-6; break;
+ case 'n': factor = 1e-9; break;
+ case 'p': factor = 1e-12; break;
+ case 'f': factor = 1e-15; break;
+ case 'a': factor = 1e-18; break;
+ default:
+ if (numfac < "0" || numfac > "9")
+ fatalerror_e(pfmt("Unknown number factor <{1}> in: {2}")(numfac)(entity));
}
+ if (factor != NL_FCONST(1.0))
+ tmp = tmp.left(tmp.len() - 1);
+ return tmp.as_double() * factor;
}
// ----------------------------------------------------------------------------------------
@@ -957,26 +1014,41 @@ void setup_t::include(const pstring &netlist_name)
{
for (std::size_t i=0; i < m_sources.size(); i++)
{
- if (m_sources[i]->parse(this, netlist_name))
+ if (m_sources[i]->parse(*this, netlist_name))
return;
}
- netlist().error("unable to find %s in source collection", netlist_name.cstr());
+ log().fatal("unable to find {1} in source collection", netlist_name);
}
// ----------------------------------------------------------------------------------------
// base sources
// ----------------------------------------------------------------------------------------
-bool netlist_source_string_t::parse(setup_t *setup, const pstring name)
+bool source_string_t::parse(setup_t &setup, const pstring &name)
+{
+ pimemstream istrm(m_str.cstr(), m_str.len());
+ pomemstream ostrm;
+
+ pimemstream istrm2(ppreprocessor().process(istrm, ostrm));
+ return parser_t(istrm2, setup).parse(name);
+}
+
+bool source_mem_t::parse(setup_t &setup, const pstring &name)
{
- parser_t p(*setup);
- return p.parse(m_str, name);
+ pimemstream istrm(m_str.cstr(), m_str.len());
+ pomemstream ostrm;
+
+ pimemstream istrm2(ppreprocessor().process(istrm, ostrm));
+ return parser_t(istrm2, setup).parse(name);
}
-bool netlist_source_mem_t::parse(setup_t *setup, const pstring name)
+bool source_file_t::parse(setup_t &setup, const pstring &name)
{
- parser_t p(*setup);
- return p.parse(m_str, name);
+ pifilestream istrm(m_filename);
+ pomemstream ostrm;
+
+ pimemstream istrm2(ppreprocessor().process(istrm, ostrm));
+ return parser_t(istrm2, setup).parse(name);
}
}
diff --git a/src/emu/netlist/nl_setup.h b/src/lib/netlist/nl_setup.h
index 129a6fef001..5f056439b3b 100644
--- a/src/emu/netlist/nl_setup.h
+++ b/src/lib/netlist/nl_setup.h
@@ -58,7 +58,7 @@ ATTR_COLD void NETLIST_NAME(_name)(netlist::setup_t &setup) \
setup.register_source(palloc(netlist::source_proc_t(# _name, &NETLIST_NAME(_name))));
#define LOCAL_LIB_ENTRY(_name) \
- LOCAL_SOURCE(_name) \
+ LOCAL_SOURCE(_name) \
setup.register_lib_entry(# _name);
#define INCLUDE(_name) \
@@ -98,7 +98,7 @@ namespace netlist
virtual ~source_t() { }
- virtual bool parse(setup_t *setup, const pstring name) = 0;
+ virtual bool parse(setup_t &setup, const pstring &name) = 0;
private:
};
@@ -127,9 +127,6 @@ namespace netlist
const pstring &name() const { return e1; }
};
- //typedef pnamedlist_t<link_t> tagmap_nstring_t;
- typedef pnamedlist_t<core_terminal_t *> tagmap_terminal_t;
-
setup_t(netlist_t *netlist);
~setup_t();
@@ -146,7 +143,7 @@ namespace netlist
void register_lib_entry(const pstring &name);
- void register_model(const pstring &model);
+ void register_model(const pstring &model_in);
void register_alias(const pstring &alias, const pstring &out);
void register_dippins_arr(const pstring &terms);
@@ -162,8 +159,6 @@ namespace netlist
void register_frontier(const pstring attach, const double r_IN, const double r_OUT);
void remove_connections(const pstring attach);
- const pstring get_model_str(const pstring val) const;
-
void register_object(device_t &dev, const pstring &name, object_t &obj);
bool connect(core_terminal_t &t1, core_terminal_t &t2);
@@ -193,31 +188,47 @@ namespace netlist
bool is_library_item(const pstring &name) const { return m_lib.contains(name); }
- /* not ideal, but needed for save_state */
- tagmap_terminal_t m_terminals;
-
void print_stats() const;
- /* static support functions */
+ /* model / family related */
- static const pstring model_value_str(const pstring &model_str, const pstring &entity, const pstring defval);
- static nl_double model_value(const pstring &model_str, const pstring &entity, const nl_double defval);
+ logic_family_desc_t *family_from_model(const pstring &model);
+ const pstring model_value_str(model_map_t &map, const pstring &entity);
+ nl_double model_value(model_map_t &map, const pstring &entity);
+
+ void model_parse(const pstring &model, model_map_t &map);
+
+ plog_base<NL_DEBUG> &log() { return netlist().log(); }
+ const plog_base<NL_DEBUG> &log() const { return netlist().log(); }
protected:
private:
+ void connect_terminals(core_terminal_t &in, core_terminal_t &out);
+ void connect_input_output(core_terminal_t &in, core_terminal_t &out);
+ void connect_terminal_output(terminal_t &in, core_terminal_t &out);
+ void connect_terminal_input(terminal_t &term, core_terminal_t &inp);
+ bool connect_input_input(core_terminal_t &t1, core_terminal_t &t2);
+
+ // helpers
+ pstring objtype_as_astr(object_t &in) const;
+
+ const pstring resolve_alias(const pstring &name) const;
+ devices::nld_base_proxy *get_d_a_proxy(core_terminal_t &out);
+
netlist_t *m_netlist;
phashmap_t<pstring, pstring> m_alias;
phashmap_t<pstring, param_t *> m_params;
phashmap_t<pstring, pstring> m_params_temp;
+ phashmap_t<pstring, core_terminal_t *> m_terminals;
plist_t<link_t> m_links;
factory_list_t *m_factory;
- plist_t<pstring> m_models;
+ phashmap_t<pstring, pstring> m_models;
int m_proxy_cnt;
@@ -225,34 +236,6 @@ namespace netlist
source_t::list_t m_sources;
plist_t<pstring> m_lib;
-
- void connect_terminals(core_terminal_t &in, core_terminal_t &out);
- void connect_input_output(core_terminal_t &in, core_terminal_t &out);
- void connect_terminal_output(terminal_t &in, core_terminal_t &out);
- void connect_terminal_input(terminal_t &term, core_terminal_t &inp);
- bool connect_input_input(core_terminal_t &t1, core_terminal_t &t2);
-
- // helpers
- pstring objtype_as_astr(object_t &in) const;
-
- const pstring resolve_alias(const pstring &name) const;
- devices::nld_base_proxy *get_d_a_proxy(core_terminal_t &out);
-
-#if 0
- template <class T>
- void remove_start_with(T &hm, pstring &sw)
- {
- for (std::size_t i = hm.size() - 1; i >= 0; i--)
- {
- pstring x = hm[i]->name();
- if (sw.equals(x.substr(0, sw.len())))
- {
- NL_VERBOSE_OUT(("removing %s\n", hm[i]->name().cstr()));
- hm.remove(hm[i]);
- }
- }
- }
-#endif
};
// ----------------------------------------------------------------------------------------
@@ -260,31 +243,46 @@ namespace netlist
// ----------------------------------------------------------------------------------------
- class netlist_source_string_t : public setup_t::source_t
+ class source_string_t : public setup_t::source_t
{
public:
- netlist_source_string_t(pstring source)
+ source_string_t(const pstring &source)
: setup_t::source_t(), m_str(source)
{
}
- bool parse(setup_t *setup, const pstring name);
+ bool parse(setup_t &setup, const pstring &name);
private:
pstring m_str;
};
+ class source_file_t : public setup_t::source_t
+ {
+ public:
+
+ source_file_t(const pstring &filename)
+ : setup_t::source_t(), m_filename(filename)
+ {
+ }
- class netlist_source_mem_t : public setup_t::source_t
+ bool parse(setup_t &setup, const pstring &name);
+
+ private:
+ pstring m_filename;
+ };
+
+ class source_mem_t : public setup_t::source_t
{
public:
- netlist_source_mem_t(const char *mem)
+ source_mem_t(const char *mem)
: setup_t::source_t(), m_str(mem)
{
}
- bool parse(setup_t *setup, const pstring name);
+ bool parse(setup_t &setup, const pstring &name);
+
private:
pstring m_str;
};
@@ -299,11 +297,11 @@ namespace netlist
{
}
- bool parse(setup_t *setup, const pstring name)
+ bool parse(setup_t &setup, const pstring &name)
{
if (name == m_setup_func_name)
{
- m_setup_func(*setup);
+ m_setup_func(setup);
return true;
}
else
diff --git a/src/lib/netlist/nl_time.h b/src/lib/netlist/nl_time.h
new file mode 100644
index 00000000000..ddb3c85d14e
--- /dev/null
+++ b/src/lib/netlist/nl_time.h
@@ -0,0 +1,137 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * nltime.h
+ */
+
+#ifndef NLTIME_H_
+#define NLTIME_H_
+
+#include "nl_config.h"
+#include "plib/pstate.h"
+
+//============================================================
+// MACROS
+//============================================================
+
+#define NLTIME_FROM_NS(_t) netlist_time::from_nsec(_t)
+#define NLTIME_FROM_US(_t) netlist_time::from_usec(_t)
+#define NLTIME_FROM_MS(_t) netlist_time::from_msec(_t)
+#define NLTIME_IMMEDIATE netlist_time::from_nsec(1)
+
+// ----------------------------------------------------------------------------------------
+// net_list_time
+// ----------------------------------------------------------------------------------------
+
+#undef ATTR_HOT
+#define ATTR_HOT
+
+namespace netlist
+{
+ struct netlist_time
+ {
+ public:
+
+#if (PHAS_INT128)
+ typedef UINT128 INTERNALTYPE;
+ static const pstate_data_type_e STATETYPE = DT_INT128;
+#else
+ typedef UINT64 INTERNALTYPE;
+ static const pstate_data_type_e STATETYPE = DT_INT64;
+#endif
+ static const INTERNALTYPE RESOLUTION = NETLIST_INTERNAL_RES;
+
+ ATTR_HOT netlist_time() : m_time(0) {}
+ ATTR_HOT netlist_time(const netlist_time &rhs) : m_time(rhs.m_time) {}
+
+ ATTR_HOT friend const netlist_time operator-(const netlist_time &left, const netlist_time &right);
+ ATTR_HOT friend const netlist_time operator+(const netlist_time &left, const netlist_time &right);
+ ATTR_HOT friend const netlist_time operator*(const netlist_time &left, const UINT64 factor);
+ ATTR_HOT friend UINT64 operator/(const netlist_time &left, const netlist_time &right);
+ ATTR_HOT friend bool operator>(const netlist_time &left, const netlist_time &right);
+ ATTR_HOT friend bool operator<(const netlist_time &left, const netlist_time &right);
+ ATTR_HOT friend bool operator>=(const netlist_time &left, const netlist_time &right);
+ ATTR_HOT friend bool operator<=(const netlist_time &left, const netlist_time &right);
+ ATTR_HOT friend bool operator!=(const netlist_time &left, const netlist_time &right);
+
+ ATTR_HOT const netlist_time &operator=(const netlist_time &right) { m_time = right.m_time; return *this; }
+
+ ATTR_HOT const netlist_time &operator+=(const netlist_time &right) { m_time += right.m_time; return *this; }
+
+ ATTR_HOT INTERNALTYPE as_raw() const { return m_time; }
+ ATTR_HOT double as_double() const { return (double) m_time / (double) RESOLUTION; }
+
+ // for save states ....
+ ATTR_HOT INTERNALTYPE *get_internaltype_ptr() { return &m_time; }
+
+ ATTR_HOT static const netlist_time from_nsec(const INTERNALTYPE ns) { return netlist_time(ns * (RESOLUTION / U64(1000000000))); }
+ ATTR_HOT static const netlist_time from_usec(const INTERNALTYPE us) { return netlist_time(us * (RESOLUTION / U64(1000000))); }
+ ATTR_HOT static const netlist_time from_msec(const INTERNALTYPE ms) { return netlist_time(ms * (RESOLUTION / U64(1000))); }
+ ATTR_HOT static const netlist_time from_hz(const INTERNALTYPE hz) { return netlist_time(RESOLUTION / hz); }
+ ATTR_HOT static const netlist_time from_double(const double t) { return netlist_time((INTERNALTYPE) ( t * (double) RESOLUTION)); }
+ ATTR_HOT static const netlist_time from_raw(const INTERNALTYPE raw) { return netlist_time(raw); }
+
+ static const netlist_time zero;
+
+ protected:
+
+ ATTR_HOT netlist_time(const INTERNALTYPE val) : m_time(val) {}
+
+ private:
+ INTERNALTYPE m_time;
+ };
+
+ ATTR_HOT inline const netlist_time operator-(const netlist_time &left, const netlist_time &right)
+ {
+ return netlist_time(left.m_time - right.m_time);
+ }
+
+ ATTR_HOT inline const netlist_time operator*(const netlist_time &left, const UINT64 factor)
+ {
+ return netlist_time(left.m_time * factor);
+ }
+
+ ATTR_HOT inline UINT64 operator/(const netlist_time &left, const netlist_time &right)
+ {
+ return left.m_time / right.m_time;
+ }
+
+ ATTR_HOT inline const netlist_time operator+(const netlist_time &left, const netlist_time &right)
+ {
+ return netlist_time(left.m_time + right.m_time);
+ }
+
+ ATTR_HOT inline bool operator<(const netlist_time &left, const netlist_time &right)
+ {
+ return (left.m_time < right.m_time);
+ }
+
+ ATTR_HOT inline bool operator>(const netlist_time &left, const netlist_time &right)
+ {
+ return (left.m_time > right.m_time);
+ }
+
+ ATTR_HOT inline bool operator<=(const netlist_time &left, const netlist_time &right)
+ {
+ return (left.m_time <= right.m_time);
+ }
+
+ ATTR_HOT inline bool operator>=(const netlist_time &left, const netlist_time &right)
+ {
+ return (left.m_time >= right.m_time);
+ }
+
+ ATTR_HOT inline bool operator!=(const netlist_time &left, const netlist_time &right)
+ {
+ return (left.m_time != right.m_time);
+ }
+
+}
+
+template<> ATTR_COLD inline void pstate_manager_t::save_item(netlist::netlist_time &nlt, const void *owner, const pstring &stname)
+{
+ save_state_ptr(stname, netlist::netlist_time::STATETYPE, owner, sizeof(netlist::netlist_time::INTERNALTYPE), 1, nlt.get_internaltype_ptr(), false);
+}
+
+
+#endif /* NLTIME_H_ */
diff --git a/src/emu/netlist/nl_util.h b/src/lib/netlist/nl_util.h
index bb5a564dd74..bb5a564dd74 100644
--- a/src/emu/netlist/nl_util.h
+++ b/src/lib/netlist/nl_util.h
diff --git a/src/emu/netlist/plib/palloc.c b/src/lib/netlist/plib/palloc.c
index 2ed54bd0b35..22dbc1d4e93 100644
--- a/src/emu/netlist/plib/palloc.c
+++ b/src/lib/netlist/plib/palloc.c
@@ -5,8 +5,19 @@
*
*/
+#include <cstdio>
+
#include "pconfig.h"
#include "palloc.h"
+//============================================================
+// Exceptions
+//============================================================
+
+pexception::pexception(const pstring &text)
+{
+ m_text = text;
+ fprintf(stderr, "%s\n", m_text.cstr());
+}
#if (PSTANDALONE)
#include <stdlib.h>
@@ -24,13 +35,11 @@ pmemory_pool *ppool = &sppool;
void* operator new(std::size_t size, pmemory_pool *pool) throw (std::bad_alloc)
{
- //printf("here new\n");
return palloc_raw(size);;
}
void operator delete(void *ptr, pmemory_pool *pool)
{
- //printf("here delete\n");
if (ptr != NULL)
pfree_raw(ptr);
}
diff --git a/src/emu/netlist/plib/palloc.h b/src/lib/netlist/plib/palloc.h
index c80265c8105..01193998392 100644
--- a/src/emu/netlist/plib/palloc.h
+++ b/src/lib/netlist/plib/palloc.h
@@ -8,9 +8,26 @@
#ifndef PALLOC_H_
#define PALLOC_H_
-#include <cstdio>
+#include <exception>
#include "pconfig.h"
+#include "pstring.h"
+
+//============================================================
+// exception base
+//============================================================
+
+class pexception : public std::exception
+{
+public:
+ pexception(const pstring &text);
+ virtual ~pexception() throw() {}
+
+ const pstring &text() { return m_text; }
+
+private:
+ pstring m_text;
+};
//============================================================
// Memory allocation
@@ -51,7 +68,6 @@ inline void pfree_t(T *p)
template <typename T>
inline T *palloc_array_t(size_t N)
{
- //printf("here palloc_array %d\n", (unsigned) N);
char *buf = reinterpret_cast<char *>(palloc_raw(N * sizeof(T) + 64*2));
size_t *s = reinterpret_cast<size_t *>(buf);
*s = N;
@@ -69,7 +85,6 @@ inline void pfree_array_t(T *p)
buf -= 64;
size_t *s = reinterpret_cast<size_t *>(buf);
size_t N = *s;
- //printf("here pfree_array %d\n", (unsigned) N);
while (N > 0)
{
p->~T();
@@ -79,7 +94,7 @@ inline void pfree_array_t(T *p)
pfree_raw(s);
}
-#define palloc(T) new(ppool) T
+#define palloc(T) new(ppool) T
#define pfree(_ptr) pfree_t(_ptr)
#if 1
@@ -94,7 +109,7 @@ inline void pfree_array_t(T *p)
#define ATTR_ALIGN
-#define palloc(T) global_alloc(T)
+#define palloc(T) global_alloc(T)
#define pfree(_ptr) global_free(_ptr)
#define palloc_array(T, N) global_alloc_array(T, N)
diff --git a/src/emu/netlist/plib/pconfig.h b/src/lib/netlist/plib/pconfig.h
index b39701c90e9..cfa622c9118 100644
--- a/src/emu/netlist/plib/pconfig.h
+++ b/src/lib/netlist/plib/pconfig.h
@@ -5,6 +5,13 @@
*
*/
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
+
#ifndef PCONFIG_H_
#define PCONFIG_H_
@@ -12,6 +19,18 @@
#define PSTANDALONE (0)
#endif
+//#define PHAS_INT128 (0)
+
+#ifndef PHAS_INT128
+#define PHAS_INT128 (0)
+#endif
+
+#if (PHAS_INT128)
+typedef __uint128_t UINT128;
+typedef __int128_t INT128;
+#endif
+
+
#if !(PSTANDALONE)
#include "osdcore.h"
#include "eminline.h"
@@ -33,26 +52,17 @@
//============================================================
// prevent implicit copying
-#define P_PREVENT_COPYING(_name) \
+#define P_PREVENT_COPYING(_name) \
private: \
_name(const _name &); \
_name &operator=(const _name &);
-
//============================================================
// Compiling standalone
//============================================================
#if !(PSTANDALONE)
-#undef ATTR_COLD
-#define ATTR_COLD
-
-static inline std::size_t SIZET_PRINTF(const std::size_t &v)
-{
- return (unsigned) v;
-}
-
/* use MAME */
#if (USE_DELEGATE_TYPE == DELEGATE_TYPE_INTERNAL)
#define PHAS_PMF_INTERNAL 1
@@ -88,10 +98,10 @@ static inline std::size_t SIZET_PRINTF(const std::size_t &v)
/* ATTR_HOT and ATTR_COLD cause performance degration in 5.1 */
//#define ATTR_HOT
//#define ATTR_COLD
-#define ATTR_HOT __attribute__((hot))
+#define ATTR_HOT __attribute__((hot))
#define ATTR_COLD __attribute__((cold))
-#define RESTRICT
+#define RESTRICT __restrict__
#define EXPECTED(x) (x)
#define UNEXPECTED(x) (x)
#define ATTR_PRINTF(x,y) __attribute__((format(printf, x, y)))
@@ -131,33 +141,6 @@ typedef int64_t INT64;
#define S64(val) val
#endif
-/* MINGW has adopted the MSVC formatting for 64-bit ints as of gcc 4.4 */
-#if (defined(__MINGW32__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))) || defined(_MSC_VER)
-#define I64FMT "I64"
-#else
-#define I64FMT "ll"
-#endif
-
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#if (PTR64)
-#define SIZETFMT "I64u"
-#else
-#define SIZETFMT "u"
-#endif
-#else
-//#define SIZETFMT "zu"
-#if (PTR64)
-#define SIZETFMT "lu"
-#else
-#define SIZETFMT "u"
-#endif
-#endif
-
-static inline std::size_t SIZET_PRINTF(const std::size_t &v)
-{
- return (unsigned) v;
-}
-
#endif
/*
@@ -223,3 +206,7 @@ private:
#endif
#endif /* PCONFIG_H_ */
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/lib/netlist/plib/pfmtlog.c b/src/lib/netlist/plib/pfmtlog.c
new file mode 100644
index 00000000000..2b08bb2fa98
--- /dev/null
+++ b/src/lib/netlist/plib/pfmtlog.c
@@ -0,0 +1,166 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * nl_string.c
+ *
+ */
+
+#if 0
+#include <cstring>
+//FIXME:: pstring should be locale free
+#include <cctype>
+#include <cstdlib>
+#include <cstdio>
+#endif
+
+#include <algorithm>
+
+#include "pfmtlog.h"
+#include "palloc.h"
+
+pfmt::pfmt(const pstring &fmt)
+: m_str(m_str_buf), m_allocated(0), m_arg(0)
+{
+ unsigned l = fmt.blen() + 1;
+ if (l>sizeof(m_str_buf))
+ {
+ m_allocated = 2 * l;
+ m_str = palloc_array(char, 2 * l);
+ }
+ memcpy(m_str, fmt.cstr(), l);
+}
+
+pfmt::pfmt(const char *fmt)
+: m_str(m_str_buf), m_allocated(0), m_arg(0)
+{
+ unsigned l = strlen(fmt) + 1;
+ if (l>sizeof(m_str_buf))
+ {
+ m_allocated = 2 * l;
+ m_str = palloc_array(char, 2 * l);
+ }
+ memcpy(m_str, fmt, l);
+}
+
+pfmt::~pfmt()
+{
+ if (m_allocated > 0)
+ pfree_array(m_str);
+}
+
+#if 0
+void pformat::format_element(const char *f, const char *l, const char *fmt_spec, ...)
+{
+ va_list ap;
+ va_start(ap, fmt_spec);
+ char fmt[30] = "%";
+ char search[10] = "";
+ char buf[1024];
+ strcat(fmt, f);
+ strcat(fmt, l);
+ strcat(fmt, fmt_spec);
+ int nl = vsprintf(buf, fmt, ap);
+ m_arg++;
+ int sl = sprintf(search, "%%%d", m_arg);
+ char *p = strstr(m_str, search);
+ if (p != NULL)
+ {
+ // Make room
+ memmove(p+nl, p+sl, strlen(p) + 1 - sl);
+ memcpy(p, buf, nl);
+ }
+ va_end(ap);
+}
+#else
+void pfmt::format_element(const char *f, const char *l, const char *fmt_spec, ...)
+{
+ va_list ap;
+ va_start(ap, fmt_spec);
+ char fmt[30] = "%";
+ char search[10] = "";
+ char buf[2048];
+ m_arg++;
+ int sl = sprintf(search, "{%d:", m_arg);
+ char *p = strstr(m_str, search);
+ if (p == NULL)
+ {
+ sl = sprintf(search, "{%d}", m_arg);
+ p = strstr(m_str, search);
+ if (p == NULL)
+ {
+ sl = 2;
+ p = strstr(m_str, "{}");
+ }
+ if (p==NULL)
+ {
+ sl=1;
+ p = strstr(m_str, "{");
+ if (p != NULL)
+ {
+ char *p1 = strstr(p, "}");
+ if (p1 != NULL)
+ {
+ sl = p1 - p + 1;
+ strncat(fmt, p+1, p1 - p - 2);
+ }
+ else
+ strcat(fmt, f);
+ }
+ else
+ strcat(fmt, f);
+ }
+ }
+ else
+ {
+ char *p1 = strstr(p, "}");
+ if (p1 != NULL)
+ {
+ sl = p1 - p + 1;
+ if (m_arg>=10)
+ strncat(fmt, p+4, p1 - p - 4);
+ else
+ strncat(fmt, p+3, p1 - p - 3);
+ }
+ else
+ strcat(fmt, f);
+ }
+ strcat(fmt, l);
+ char *pend = fmt + strlen(fmt) - 1;
+ if (strchr("fge", *fmt_spec) != NULL)
+ {
+ if (strchr("fge", *pend) == NULL)
+ strcat(fmt, fmt_spec);
+ }
+ else if (strchr("duxo", *fmt_spec) != NULL)
+ {
+ if (strchr("duxo", *pend) == NULL)
+ strcat(fmt, fmt_spec);
+ }
+ else
+ strcat(fmt, fmt_spec);
+ int nl = vsprintf(buf, fmt, ap);
+ if (p != NULL)
+ {
+ // check room
+ unsigned new_size = (p - m_str) + nl + strlen(p) + 1 - sl;
+ if (new_size > m_allocated)
+ {
+ unsigned old_alloc = std::max(m_allocated, (unsigned) sizeof(m_str_buf));
+ if (m_allocated < old_alloc)
+ m_allocated = old_alloc;
+ while (new_size > m_allocated)
+ m_allocated *= 2;
+ char *np = palloc_array(char, m_allocated);
+ memcpy(np, m_str, old_alloc);
+ p = np + (p - m_str);
+ if (m_str != m_str_buf)
+ pfree_array(m_str);
+ m_str = np;
+ }
+ // Make room
+ memmove(p+nl, p+sl, strlen(p) + 1 - sl);
+ memcpy(p, buf, nl);
+ }
+ va_end(ap);
+}
+#endif
diff --git a/src/lib/netlist/plib/pfmtlog.h b/src/lib/netlist/plib/pfmtlog.h
new file mode 100644
index 00000000000..058152a91cc
--- /dev/null
+++ b/src/lib/netlist/plib/pfmtlog.h
@@ -0,0 +1,292 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * pfmtlog.h
+ */
+
+#ifndef _PFMT_H_
+#define _PFMT_H_
+
+//#include <cstdarg>
+//#include <cstddef>
+
+#include "pconfig.h"
+#include "pstring.h"
+#include "ptypes.h"
+
+template <typename T>
+struct ptype_treats
+{
+};
+
+template<>
+struct ptype_treats<char>
+{
+ static short cast(char x) { return x; }
+ static const bool is_signed = true;
+ static const char *size_specifier() { return "h"; }
+};
+
+template<>
+struct ptype_treats<short>
+{
+ static short cast(short x) { return x; }
+ static const bool is_signed = true;
+ static const char *size_specifier() { return "h"; }
+};
+
+template<>
+struct ptype_treats<int>
+{
+ static int cast(int x) { return x; }
+ static const bool is_signed = true;
+ static const char *size_specifier() { return ""; }
+};
+
+template<>
+struct ptype_treats<long>
+{
+ static long cast(long x) { return x; }
+ static const bool is_signed = true;
+ static const char *size_specifier() { return "l"; }
+};
+
+template<>
+struct ptype_treats<long long>
+{
+ static long long cast(long long x) { return x; }
+ static const bool is_signed = true;
+ static const char *size_specifier() { return "ll"; }
+};
+
+template<>
+struct ptype_treats<unsigned char>
+{
+ static unsigned short cast(unsigned char x) { return x; }
+ static const bool is_signed = false;
+ static const char *size_specifier() { return "h"; }
+};
+
+template<>
+struct ptype_treats<unsigned short>
+{
+ static unsigned short cast(unsigned short x) { return x; }
+ static const bool is_signed = false;
+ static const char *size_specifier() { return "h"; }
+};
+
+template<>
+struct ptype_treats<unsigned int>
+{
+ static unsigned int cast(unsigned int x) { return x; }
+ static const bool is_signed = false;
+ static const char *size_specifier() { return ""; }
+};
+
+template<>
+struct ptype_treats<unsigned long>
+{
+ static unsigned long cast(unsigned long x) { return x; }
+ static const bool is_signed = false;
+ static const char *size_specifier() { return "l"; }
+};
+
+template<>
+struct ptype_treats<unsigned long long>
+{
+ static unsigned long long cast(unsigned long long x) { return x; }
+ static const bool is_signed = false;
+ static const char *size_specifier() { return "ll"; }
+};
+
+template <typename P>
+class pformat_base
+{
+public:
+
+ virtual ~pformat_base() { }
+
+ ATTR_COLD P &operator ()(const double x, const char *f = "") { format_element(f, "", "f", x); return static_cast<P &>(*this); }
+ ATTR_COLD P & e(const double x, const char *f = "") { format_element(f, "", "e", x); return static_cast<P &>(*this); }
+ ATTR_COLD P & g(const double x, const char *f = "") { format_element(f, "", "g", x); return static_cast<P &>(*this); }
+
+ ATTR_COLD P &operator ()(const char *x, const char *f = "") { format_element(f, "", "s", x); return static_cast<P &>(*this); }
+ ATTR_COLD P &operator ()(char *x, const char *f = "") { format_element(f, "", "s", x); return static_cast<P &>(*this); }
+ ATTR_COLD P &operator ()(const void *x, const char *f = "") { format_element(f, "", "p", x); return static_cast<P &>(*this); }
+ ATTR_COLD P &operator ()(const pstring &x, const char *f = "") { format_element(f, "", "s", x.cstr() ); return static_cast<P &>(*this); }
+
+ template<typename T>
+ ATTR_COLD P &operator ()(const T x, const char *f = "")
+ {
+ if (ptype_treats<T>::is_signed)
+ format_element(f, ptype_treats<T>::size_specifier(), "d", ptype_treats<T>::cast(x));
+ else
+ format_element(f, ptype_treats<T>::size_specifier(), "u", ptype_treats<T>::cast(x));
+ return static_cast<P &>(*this);
+ }
+
+ template<typename T>
+ ATTR_COLD P &x(const T x, const char *f = "")
+ {
+ format_element(f, ptype_treats<T>::size_specifier(), "x", x);
+ return static_cast<P &>(*this);
+ }
+
+ template<typename T>
+ ATTR_COLD P &o(const T x, const char *f = "")
+ {
+ format_element(f, ptype_treats<T>::size_specifier(), "o", x);
+ return static_cast<P &>(*this);
+ }
+
+protected:
+
+ virtual void format_element(const char *f, const char *l, const char *fmt_spec, ...) = 0;
+
+};
+
+class pfmt : public pformat_base<pfmt>
+{
+public:
+ pfmt(const pstring &fmt);
+ pfmt(const char *fmt);
+ virtual ~pfmt();
+
+ operator pstring() const { return m_str; }
+
+ const char *cstr() { return m_str; }
+
+
+protected:
+ void format_element(const char *f, const char *l, const char *fmt_spec, ...);
+
+private:
+
+ char *m_str;
+ char m_str_buf[256];
+ unsigned m_allocated;
+ unsigned m_arg;
+};
+
+P_ENUM(plog_level,
+ DEBUG,
+ INFO,
+ VERBOSE,
+ WARNING,
+ ERROR,
+ FATAL)
+
+class plog_dispatch_intf;
+
+template <bool build_enabled = true>
+class pfmt_writer_t
+{
+public:
+ pfmt_writer_t() : m_enabled(true) { }
+ virtual ~pfmt_writer_t() { }
+
+ ATTR_COLD void operator ()(const char *fmt) const
+ {
+ if (build_enabled && m_enabled) vdowrite(fmt);
+ }
+
+ template<typename T1>
+ ATTR_COLD void operator ()(const char *fmt, const T1 &v1) const
+ {
+ if (build_enabled && m_enabled) vdowrite(pfmt(fmt)(v1));
+ }
+
+ template<typename T1, typename T2>
+ ATTR_COLD void operator ()(const char *fmt, const T1 &v1, const T2 &v2) const
+ {
+ if (build_enabled && m_enabled) vdowrite(pfmt(fmt)(v1)(v2));
+ }
+
+ template<typename T1, typename T2, typename T3>
+ ATTR_COLD void operator ()(const char *fmt, const T1 &v1, const T2 &v2, const T3 &v3) const
+ {
+ if (build_enabled && m_enabled) vdowrite(pfmt(fmt)(v1)(v2)(v3));
+ }
+
+ template<typename T1, typename T2, typename T3, typename T4>
+ ATTR_COLD void operator ()(const char *fmt, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4) const
+ {
+ if (build_enabled && m_enabled) vdowrite(pfmt(fmt)(v1)(v2)(v3)(v4));
+ }
+
+ template<typename T1, typename T2, typename T3, typename T4, typename T5>
+ ATTR_COLD void operator ()(const char *fmt, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5) const
+ {
+ if (build_enabled && m_enabled) vdowrite(pfmt(fmt)(v1)(v2)(v3)(v4)(v5));
+ }
+
+ void set_enabled(const bool v)
+ {
+ m_enabled = v;
+ }
+
+ bool is_enabled() const { return m_enabled; }
+
+protected:
+ virtual void vdowrite(const pstring &ls) const {}
+
+private:
+ bool m_enabled;
+
+};
+
+template <plog_level::e L, bool build_enabled = true>
+class plog_channel : public pfmt_writer_t<build_enabled>
+{
+public:
+ plog_channel(plog_dispatch_intf *b) : pfmt_writer_t<build_enabled>(), m_base(b) { }
+ virtual ~plog_channel() { }
+
+protected:
+ virtual void vdowrite(const pstring &ls) const;
+
+private:
+ plog_dispatch_intf *m_base;
+};
+
+class plog_dispatch_intf
+{
+ template<plog_level::e, bool> friend class plog_channel;
+
+public:
+ virtual ~plog_dispatch_intf() { }
+protected:
+ virtual void vlog(const plog_level &l, const pstring &ls) const = 0;
+};
+
+template<bool debug_enabled>
+class plog_base
+{
+public:
+
+ plog_base(plog_dispatch_intf *proxy)
+ : debug(proxy),
+ info(proxy),
+ verbose(proxy),
+ warning(proxy),
+ error(proxy),
+ fatal(proxy)
+ {}
+ virtual ~plog_base() {};
+
+ plog_channel<plog_level::DEBUG, debug_enabled> debug;
+ plog_channel<plog_level::INFO> info;
+ plog_channel<plog_level::VERBOSE> verbose;
+ plog_channel<plog_level::WARNING> warning;
+ plog_channel<plog_level::ERROR> error;
+ plog_channel<plog_level::FATAL> fatal;
+};
+
+
+template <plog_level::e L, bool build_enabled>
+void plog_channel<L, build_enabled>::vdowrite(const pstring &ls) const
+{
+ m_base->vlog(L, ls);
+}
+
+#endif /* _PSTRING_H_ */
diff --git a/src/emu/netlist/plib/plists.h b/src/lib/netlist/plib/plists.h
index ab8ebf414c7..dd26cfb963b 100644
--- a/src/emu/netlist/plib/plists.h
+++ b/src/lib/netlist/plib/plists.h
@@ -499,8 +499,7 @@ public:
}
p = p->m_next;
}
- //FXIME: throw a standard exception
- //nl_assert_always(false, "element not found");
+ throw pexception("element not found");
}
}
@@ -567,7 +566,7 @@ public:
p = pn + onstr.len();
pn = str.find(onstr, p);
}
- if (p<str.len())
+ if (p < (int) str.len())
{
pstring t = str.substr(p);
if (!ignore_empty || t.len() != 0)
@@ -580,13 +579,13 @@ public:
pstring_list_t temp;
pstring col = "";
- int i = 0;
- while (i<str.len())
+ unsigned i = 0;
+ while (i<str.blen())
{
int p = -1;
for (std::size_t j=0; j < onstrl.size(); j++)
{
- if (std::strncmp(onstrl[j].cstr(), &(str.cstr()[i]), onstrl[j].len())==0)
+ if (std::memcmp(onstrl[j].cstr(), &(str.cstr()[i]), onstrl[j].blen())==0)
{
p = j;
break;
@@ -596,14 +595,16 @@ public:
{
if (col != "")
temp.add(col);
+
col = "";
temp.add(onstrl[p]);
- i += onstrl[p].len();
+ i += onstrl[p].blen();
}
else
{
- col += str.cstr()[i];
- i++;
+ pstring::traits::code_t c = pstring::traits::code(str.cstr() + i);
+ col += c;
+ i+=pstring::traits::codelen(c);
}
}
if (col != "")
@@ -620,26 +621,44 @@ public:
template <class C>
struct phash_functor
{
- unsigned hash(const C &v) const { return (unsigned) v; }
+ phash_functor()
+ {}
+ phash_functor(const C &v)
+ {
+ m_hash = v;
+ }
+ friend unsigned operator%(const phash_functor &lhs, const unsigned &rhs) { return lhs.m_hash % rhs; }
+ bool operator==(const phash_functor &lhs) const { return (m_hash == lhs.m_hash); }
+private:
+ unsigned m_hash;
};
template <>
struct phash_functor<pstring>
{
-#if 1
-#if 1
- unsigned hash(const pstring &v) const
- {
- const char *string = v.cstr();
- unsigned result = *string++;
- for (UINT8 c = *string++; c != 0; c = *string++)
- result = (result*33) ^ c;
- return result;
- }
-#else
+ phash_functor()
+ {}
+ phash_functor(const pstring &v)
+ {
+ /* modified djb2 */
+ const pstring::mem_t *string = v.cstr();
+ unsigned result = 5381;
+ for (pstring::mem_t c = *string; c != 0; c = *string++)
+ result = ((result << 5) + result ) ^ (result >> (32 - 5)) ^ c;
+ //result = (result*33) ^ c;
+ m_hash = result;
+ }
+ friend unsigned operator%(const phash_functor<pstring> &lhs, const unsigned &rhs) { return lhs.m_hash % rhs; }
+ bool operator==(const phash_functor<pstring> &lhs) const { return (m_hash == lhs.m_hash); }
+private:
+ unsigned m_hash;
+};
+
+#if 0
+#if 0
unsigned hash(const pstring &v) const
{
- /* Fowler–Noll–Vo hash - FNV-1 */
+ /* Fowler???Noll???Vo hash - FNV-1 */
const char *string = v.cstr();
unsigned result = 2166136261;
for (UINT8 c = *string++; c != 0; c = *string++)
@@ -647,33 +666,32 @@ struct phash_functor<pstring>
// result = (result ^ c) * 16777619; FNV 1a
return result;
}
-#endif
#else
unsigned hash(const pstring &v) const
{
/* jenkins one at a time algo */
unsigned result = 0;
const char *string = v.cstr();
- while (*string)
- {
- result += *string;
- string++;
- result += (result << 10);
- result ^= (result >> 6);
- }
- result += (result << 3);
- result ^= (result >> 11);
- result += (result << 15);
- return result;
+ while (*string)
+ {
+ result += *string;
+ string++;
+ result += (result << 10);
+ result ^= (result >> 6);
+ }
+ result += (result << 3);
+ result ^= (result >> 11);
+ result += (result << 15);
+ return result;
}
#endif
-};
+#endif
template <class K, class V, class H = phash_functor<K> >
class phashmap_t
{
public:
- phashmap_t() : m_hash(17)
+ phashmap_t() : m_hash(37)
{
for (unsigned i=0; i<m_hash.size(); i++)
m_hash[i] = -1;
@@ -686,17 +704,18 @@ public:
struct element_t
{
element_t() { }
- element_t(K key, unsigned hash, V value)
+ element_t(const K &key, const H &hash, const V &value)
: m_key(key), m_hash(hash), m_value(value), m_next(-1)
{}
K m_key;
- unsigned m_hash;
+ H m_hash;
V m_value;
int m_next;
};
void clear()
{
+#if 0
if (0)
{
unsigned cnt = 0;
@@ -709,6 +728,7 @@ public:
else
printf("phashmap: No elements .. \n");
}
+#endif
m_values.clear();
for (unsigned i=0; i<m_hash.size(); i++)
m_hash[i] = -1;
@@ -736,15 +756,14 @@ public:
* and accept that outside we will not have a prime
*
*/
- if (m_values.size() > m_hash.size())
+ if (m_values.size() * 3 / 2 > m_hash.size())
{
unsigned n = std::sqrt( 2 * m_hash.size());
n = n * n + n + 41;
m_hash.resize(n);
rebuild();
}
- const H h;
- const unsigned hash=h.hash(key);
+ const H hash(key);
const unsigned pos = hash % m_hash.size();
if (m_hash[pos] == -1)
{
@@ -780,27 +799,15 @@ public:
return m_values[p].m_value;
}
- const V& operator[](const K &key) const
- {
- int p = get_idx(key);
- if (p == -1)
- {
- p = m_values.size();
- add(key, V());
- }
- return m_values[p].m_value;
- }
-
V& value_at(const unsigned pos) { return m_values[pos].m_value; }
const V& value_at(const unsigned pos) const { return m_values[pos].m_value; }
- V& key_at(const unsigned pos) const { return m_values[pos].m_key; }
+ V& key_at(const unsigned pos) { return m_values[pos].m_key; }
private:
int get_idx(const K &key) const
{
- H h;
- const unsigned hash=h.hash(key);
+ H hash(key);
const unsigned pos = hash % m_hash.size();
for (int ep = m_hash[pos]; ep != -1; ep = m_values[ep].m_next)
diff --git a/src/emu/netlist/plib/poptions.h b/src/lib/netlist/plib/poptions.h
index b082504930d..b082504930d 100644
--- a/src/emu/netlist/plib/poptions.h
+++ b/src/lib/netlist/plib/poptions.h
diff --git a/src/emu/netlist/plib/pparser.c b/src/lib/netlist/plib/pparser.c
index 954b9048810..aa11c30cfa9 100644
--- a/src/emu/netlist/plib/pparser.c
+++ b/src/lib/netlist/plib/pparser.c
@@ -5,13 +5,16 @@
*
*/
-#include <cstdio>
#include <cstdarg>
#include "pparser.h"
-//#undef NL_VERBOSE_OUT
-//#define NL_VERBOSE_OUT(x) printf x
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
// ----------------------------------------------------------------------------------------
// A simple tokenizer
@@ -19,19 +22,13 @@
pstring ptokenizer::currentline_str()
{
- char buf[300];
- int bufp = 0;
- const char *p = m_line_ptr;
- while (*p && *p != 10)
- buf[bufp++] = *p++;
- buf[bufp] = 0;
- return pstring(buf);
+ return m_cur_line;
}
void ptokenizer::skipeol()
{
- char c = getc();
+ pstring::code_t c = getc();
while (c)
{
if (c == 10)
@@ -46,17 +43,19 @@ void ptokenizer::skipeol()
}
-unsigned char ptokenizer::getc()
+pstring::code_t ptokenizer::getc()
{
- if (*m_px == 10)
+ if (m_px >= m_cur_line.len())
{
- m_line++;
- m_line_ptr = m_px + 1;
+ if (m_strm.readline(m_cur_line))
+ {
+ m_cur_line += "\n";
+ m_px = 0;
+ }
+ else
+ return 0;
}
- if (*m_px)
- return *(m_px++);
- else
- return *m_px;
+ return m_cur_line.code_at(m_px++);
}
void ptokenizer::ungetc()
@@ -73,7 +72,7 @@ void ptokenizer::require_token(const token_t tok, const token_id_t &token_num)
{
if (!tok.is(token_num))
{
- error("Error: expected token <%s> got <%s>\n", m_tokens[token_num.id()].cstr(), tok.str().cstr());
+ error(pfmt("Expected token <{1}> got <{2}>")(m_tokens[token_num.id()])(tok.str()) );
}
}
@@ -82,7 +81,7 @@ pstring ptokenizer::get_string()
token_t tok = get_token();
if (!tok.is_type(STRING))
{
- error("Error: expected a string, got <%s>\n", tok.str().cstr());
+ error(pfmt("Expected a string, got <{1}>")(tok.str()) );
}
return tok.str();
}
@@ -92,7 +91,7 @@ pstring ptokenizer::get_identifier()
token_t tok = get_token();
if (!tok.is_type(IDENTIFIER))
{
- error("Error: expected an identifier, got <%s>\n", tok.str().cstr());
+ error(pfmt("Expected an identifier, got <{1}>")(tok.str()) );
}
return tok.str();
}
@@ -102,7 +101,7 @@ pstring ptokenizer::get_identifier_or_number()
token_t tok = get_token();
if (!(tok.is_type(IDENTIFIER) || tok.is_type(NUMBER)))
{
- error("Error: expected an identifier, got <%s>\n", tok.str().cstr());
+ error(pfmt("Expected an identifier, got <{1}>")(tok.str()) );
}
return tok.str();
}
@@ -112,12 +111,12 @@ double ptokenizer::get_number_double()
token_t tok = get_token();
if (!tok.is_type(NUMBER))
{
- error("Error: expected a number, got <%s>\n", tok.str().cstr());
+ error(pfmt("Expected a number, got <{1}>")(tok.str()) );
}
bool err = false;
double ret = tok.str().as_double(&err);
if (err)
- error("Error: expected a number, got <%s>\n", tok.str().cstr());
+ error(pfmt("Expected a number, got <{1}>")(tok.str()) );
return ret;
}
@@ -126,12 +125,12 @@ long ptokenizer::get_number_long()
token_t tok = get_token();
if (!tok.is_type(NUMBER))
{
- error("Error: expected a long int, got <%s>\n", tok.str().cstr());
+ error(pfmt("Expected a long int, got <{1}>")(tok.str()) );
}
bool err = false;
long ret = tok.str().as_long(&err);
if (err)
- error("Error: expected a long int, got <%s>\n", tok.str().cstr());
+ error(pfmt("Expected a long int, got <{1}>")(tok.str()) );
return ret;
}
@@ -158,14 +157,16 @@ ptokenizer::token_t ptokenizer::get_token()
skipeol();
}
else
+ {
return ret;
+ }
}
}
ptokenizer::token_t ptokenizer::get_token_internal()
{
/* skip ws */
- char c = getc();
+ pstring::code_t c = getc();
while (m_whitespace.find(c)>=0)
{
c = getc();
@@ -248,16 +249,9 @@ ptokenizer::token_t ptokenizer::get_token_internal()
}
-ATTR_COLD void ptokenizer::error(const char *format, ...)
+ATTR_COLD void ptokenizer::error(const pstring &errs)
{
- va_list ap;
- va_start(ap, format);
-
- pstring errmsg1 = pstring(format).vprintf(ap);
- va_end(ap);
-
- verror(errmsg1, currentline_no(), currentline_str());
-
+ verror("Error: " + errs, currentline_no(), currentline_str());
//throw error;
}
@@ -266,6 +260,7 @@ ATTR_COLD void ptokenizer::error(const char *format, ...)
// ----------------------------------------------------------------------------------------
ppreprocessor::ppreprocessor()
+: m_ifflag(0), m_level(0), m_lineno(0)
{
m_expr_sep.add("!");
m_expr_sep.add("(");
@@ -278,12 +273,12 @@ ppreprocessor::ppreprocessor()
m_expr_sep.add(" ");
m_expr_sep.add("\t");
- m_defines.add(define_t("__PLIB_PREPROCESSOR__", "1"));
+ m_defines.add("__PLIB_PREPROCESSOR__", define_t("__PLIB_PREPROCESSOR__", "1"));
}
void ppreprocessor::error(const pstring &err)
{
- fprintf(stderr, "PREPRO ERROR: %s\n", err.cstr());
+ throw pexception("PREPRO ERROR: " + err);
}
@@ -360,12 +355,11 @@ double ppreprocessor::expr(const pstring_list_t &sexpr, std::size_t &start, int
ppreprocessor::define_t *ppreprocessor::get_define(const pstring &name)
{
- for (std::size_t i = 0; i<m_defines.size(); i++)
- {
- if (m_defines[i].m_name == name)
- return &m_defines[i];
- }
- return NULL;
+ int idx = m_defines.index_of(name);
+ if (idx >= 0)
+ return &m_defines.value_at(idx);
+ else
+ return NULL;
}
pstring ppreprocessor::replace_macros(const pstring &line)
@@ -380,7 +374,7 @@ pstring ppreprocessor::replace_macros(const pstring &line)
else
ret.cat(elems[i]);
}
- return pstring(ret.cstr());
+ return ret;
}
static pstring catremainder(const pstring_list_t &elems, std::size_t start, pstring sep)
@@ -391,92 +385,98 @@ static pstring catremainder(const pstring_list_t &elems, std::size_t start, pstr
ret.cat(elems[i]);
ret.cat(sep);
}
- return pstring(ret.cstr());
+ return ret;
}
-pstring ppreprocessor::process(const pstring &contents)
+pstring ppreprocessor::process_line(const pstring &line)
{
- pstringbuffer ret = "";
- pstring_list_t lines(contents,"\n", false);
- UINT32 ifflag = 0; // 31 if levels
- int level = 0;
-
- std::size_t i=0;
- while (i<lines.size())
+ pstring lt = line.replace("\t"," ").trim();
+ pstringbuffer ret;
+ m_lineno++;
+ // FIXME ... revise and extend macro handling
+ if (lt.startsWith("#"))
{
- pstring line = lines[i];
- pstring lt = line.replace("\t"," ").trim();
- // FIXME ... revise and extend macro handling
- if (lt.startsWith("#"))
+ pstring_list_t lti(lt, " ", true);
+ if (lti[0].equals("#if"))
{
- pstring_list_t lti(lt, " ", true);
- if (lti[0].equals("#if"))
- {
- level++;
- std::size_t start = 0;
- lt = replace_macros(lt);
- pstring_list_t t = pstring_list_t::splitexpr(lt.substr(3).replace(" ",""), m_expr_sep);
- int val = expr(t, start, 0);
- if (val == 0)
- ifflag |= (1 << level);
- }
- else if (lti[0].equals("#ifdef"))
- {
- level++;
- if (get_define(lti[1]) == NULL)
- ifflag |= (1 << level);
- }
- else if (lti[0].equals("#ifndef"))
- {
- level++;
- if (get_define(lti[1]) != NULL)
- ifflag |= (1 << level);
- }
- else if (lti[0].equals("#else"))
- {
- ifflag ^= (1 << level);
- }
- else if (lti[0].equals("#endif"))
- {
- ifflag &= ~(1 << level);
- level--;
- }
- else if (lti[0].equals("#include"))
- {
- // ignore
- }
- else if (lti[0].equals("#pragma"))
+ m_level++;
+ std::size_t start = 0;
+ lt = replace_macros(lt);
+ pstring_list_t t = pstring_list_t::splitexpr(lt.substr(3).replace(" ",""), m_expr_sep);
+ int val = expr(t, start, 0);
+ if (val == 0)
+ m_ifflag |= (1 << m_level);
+ }
+ else if (lti[0].equals("#ifdef"))
+ {
+ m_level++;
+ if (get_define(lti[1]) == NULL)
+ m_ifflag |= (1 << m_level);
+ }
+ else if (lti[0].equals("#ifndef"))
+ {
+ m_level++;
+ if (get_define(lti[1]) != NULL)
+ m_ifflag |= (1 << m_level);
+ }
+ else if (lti[0].equals("#else"))
+ {
+ m_ifflag ^= (1 << m_level);
+ }
+ else if (lti[0].equals("#endif"))
+ {
+ m_ifflag &= ~(1 << m_level);
+ m_level--;
+ }
+ else if (lti[0].equals("#include"))
+ {
+ // ignore
+ }
+ else if (lti[0].equals("#pragma"))
+ {
+ if (m_ifflag == 0 && lti.size() > 3 && lti[1].equals("NETLIST"))
{
- if (ifflag == 0 && lti.size() > 3 && lti[1].equals("NETLIST"))
- {
- if (lti[2].equals("warning"))
- error("NETLIST: " + catremainder(lti, 3, " "));
- }
+ if (lti[2].equals("warning"))
+ error("NETLIST: " + catremainder(lti, 3, " "));
}
- else if (lti[0].equals("#define"))
+ }
+ else if (lti[0].equals("#define"))
+ {
+ if (m_ifflag == 0)
{
- if (ifflag == 0)
- {
- if (lti.size() != 3)
- error(pstring::sprintf("PREPRO: only simple defines allowed: %s", line.cstr()));
- m_defines.add(define_t(lti[1], lti[2]));
- }
+ if (lti.size() != 3)
+ error("PREPRO: only simple defines allowed: " + line);
+ m_defines.add(lti[1], define_t(lti[1], lti[2]));
}
- else
- error(pstring::sprintf("unknown directive on line %" SIZETFMT ": %s\n", SIZET_PRINTF(i), line.cstr()));
}
else
+ error(pfmt("unknown directive on line {1}: {2}")(m_lineno)(line));
+ }
+ else
+ {
+ lt = replace_macros(lt);
+ if (m_ifflag == 0)
{
- //if (ifflag == 0 && level > 0)
- // fprintf(stderr, "conditional: %s\n", line.cstr());
- lt = replace_macros(lt);
- if (ifflag == 0)
- {
- ret.cat(lt);
- ret.cat("\n");
- }
+ ret.cat(lt);
+ ret.cat("\n");
}
- i++;
}
- return pstring(ret.cstr());
+ return ret;
+}
+
+
+postream & ppreprocessor::process_i(pistream &istrm, postream &ostrm)
+{
+ pstring line;
+ while (istrm.readline(line))
+ {
+ line = process_line(line);
+ ostrm.writeline(line);
+ }
+ return ostrm;
}
+
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/netlist/plib/pparser.h b/src/lib/netlist/plib/pparser.h
index 15d81294a09..34dfdbfcff3 100644
--- a/src/emu/netlist/plib/pparser.h
+++ b/src/lib/netlist/plib/pparser.h
@@ -11,6 +11,7 @@
#include "pconfig.h"
#include "pstring.h"
#include "plists.h"
+#include "pstream.h"
class ptokenizer
{
@@ -18,8 +19,8 @@ class ptokenizer
public:
virtual ~ptokenizer() {}
- ptokenizer()
- : m_line(1), m_line_ptr(NULL), m_px(NULL), m_string('"')
+ ptokenizer(pistream &strm)
+ : m_strm(strm), m_lineno(1), m_px(0), m_string('"')
{}
enum token_type
@@ -78,7 +79,7 @@ public:
};
- int currentline_no() { return m_line; }
+ int currentline_no() { return m_lineno; }
pstring currentline_str();
/* tokenizer stuff follows ... */
@@ -111,23 +112,24 @@ public:
}
token_t get_token_internal();
- void error(const char *format, ...) ATTR_PRINTF(2,3);
-
- void reset(const char *p) { m_px = p; m_line = 1; m_line_ptr = p; }
+ void error(const pstring &errs);
protected:
- virtual void verror(pstring msg, int line_num, pstring line) = 0;
+ virtual void verror(const pstring &msg, int line_num, const pstring &line) = 0;
private:
void skipeol();
- unsigned char getc();
+ pstring::code_t getc();
void ungetc();
- bool eof() { return *m_px == 0; }
- int m_line;
- const char * m_line_ptr;
- const char * m_px;
+ bool eof() { return m_strm.eof(); }
+
+ pistream &m_strm;
+
+ int m_lineno;
+ pstring m_cur_line;
+ unsigned m_px;
/* tokenizer stuff follows ... */
@@ -136,7 +138,7 @@ private:
pstring m_number_chars_start;
plist_t<pstring> m_tokens;
pstring m_whitespace;
- char m_string;
+ pstring::code_t m_string;
token_id_t m_tok_comment_start;
token_id_t m_tok_comment_end;
@@ -162,10 +164,16 @@ public:
ppreprocessor();
virtual ~ppreprocessor() {}
- pstring process(const pstring &contents);
+ template<class ISTR, class OSTR>
+ OSTR &process(ISTR &istrm, OSTR &ostrm)
+ {
+ return dynamic_cast<OSTR &>(process_i(istrm, ostrm));
+ }
protected:
+ postream &process_i(pistream &istrm, postream &ostrm);
+
double expr(const pstring_list_t &sexpr, std::size_t &start, int prio);
define_t *get_define(const pstring &name);
@@ -176,8 +184,15 @@ protected:
private:
- plist_t<define_t> m_defines;
+ pstring process_line(const pstring &line);
+
+ phashmap_t<pstring, define_t> m_defines;
pstring_list_t m_expr_sep;
+
+ //pstringbuffer m_ret;
+ UINT32 m_ifflag; // 31 if levels
+ int m_level;
+ int m_lineno;
};
#endif /* PPARSER_H_ */
diff --git a/src/emu/netlist/plib/pstate.c b/src/lib/netlist/plib/pstate.c
index 909bfcb2e58..cf2c863ed11 100644
--- a/src/emu/netlist/plib/pstate.c
+++ b/src/lib/netlist/plib/pstate.c
@@ -25,6 +25,9 @@ ATTR_COLD void pstate_manager_t::save_state_ptr(const pstring &stname, const pst
"NOT_SUPPORTED",
"DT_CUSTOM",
"DT_DOUBLE",
+#if (PHAS_INT128)
+ "DT_INT128",
+#endif
"DT_INT64",
"DT_INT16",
"DT_INT8",
@@ -75,4 +78,3 @@ template<> ATTR_COLD void pstate_manager_t::save_item(pstate_callback_t &state,
m_save.add(p);
state.register_state(*this, stname);
}
-
diff --git a/src/emu/netlist/plib/pstate.h b/src/lib/netlist/plib/pstate.h
index 0350b0fe309..b42d3dac882 100644
--- a/src/emu/netlist/plib/pstate.h
+++ b/src/lib/netlist/plib/pstate.h
@@ -32,6 +32,9 @@ enum pstate_data_type_e {
NOT_SUPPORTED,
DT_CUSTOM,
DT_DOUBLE,
+#if (PHAS_INT128)
+ DT_INT128,
+#endif
DT_INT64,
DT_INT16,
DT_INT8,
@@ -63,6 +66,10 @@ NETLIST_SAVE_TYPE(double, DT_DOUBLE);
NETLIST_SAVE_TYPE(float, DT_FLOAT);
NETLIST_SAVE_TYPE(INT8, DT_INT8);
NETLIST_SAVE_TYPE(UINT8, DT_INT8);
+#if (PHAS_INT128)
+NETLIST_SAVE_TYPE(INT128, DT_INT128);
+NETLIST_SAVE_TYPE(UINT128, DT_INT128);
+#endif
NETLIST_SAVE_TYPE(INT64, DT_INT64);
NETLIST_SAVE_TYPE(UINT64, DT_INT64);
NETLIST_SAVE_TYPE(bool, DT_BOOLEAN);
diff --git a/src/lib/netlist/plib/pstream.c b/src/lib/netlist/plib/pstream.c
new file mode 100644
index 00000000000..ba7c5c7eda2
--- /dev/null
+++ b/src/lib/netlist/plib/pstream.c
@@ -0,0 +1,362 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * pstream.c
+ *
+ */
+
+#include <cstdio>
+#include <cstring>
+#include <cstdlib>
+#include <algorithm>
+
+#include "pstream.h"
+#include "palloc.h"
+
+// -----------------------------------------------------------------------------
+// pistream: input stream
+// -----------------------------------------------------------------------------
+
+bool pistream::readline(pstring &line)
+{
+ UINT8 c = 0;
+ pstringbuffer buf;
+ if (!this->read(c))
+ {
+ line = "";
+ return false;
+ }
+ while (true)
+ {
+ if (c == 10)
+ break;
+ else if (c != 13) /* ignore CR */
+ buf += c;
+ if (!this->read(c))
+ break;
+ }
+ line = buf;
+ return true;
+}
+
+// -----------------------------------------------------------------------------
+// postream: output stream
+// -----------------------------------------------------------------------------
+
+void postream::write(pistream &strm)
+{
+ char buf[1024];
+ unsigned r;
+ while ( !bad() && ((r=strm.read(buf, 1024)) > 0))
+ write(buf, r);
+}
+
+// -----------------------------------------------------------------------------
+// Input file stream
+// -----------------------------------------------------------------------------
+
+pifilestream::pifilestream(const pstring &fname)
+: pistream(0), m_pos(0), m_actually_close(true)
+{
+ init(fopen(fname.cstr(), "rb"));
+}
+
+pifilestream::pifilestream(void *file, const bool do_close)
+: pistream(0), m_pos(0), m_actually_close(do_close)
+{
+ init(file);
+}
+
+void pifilestream::init(void *file)
+{
+ m_file = file;
+ if (m_file == NULL)
+ {
+ set_flag(FLAG_ERROR);
+ set_flag(FLAG_EOF);
+ set_flag(FLAG_CLOSED);
+ }
+ else
+ {
+ if (ftell((FILE *) m_file) >= 0)
+ {
+ if (fseek((FILE *) m_file, 0, SEEK_SET) >= 0)
+ set_flag(FLAG_SEEKABLE);
+ }
+ }
+}
+
+pifilestream::~pifilestream()
+{
+ if (!closed())
+ close();
+}
+
+void pifilestream::close()
+{
+ if (m_actually_close)
+ {
+ fclose((FILE *) m_file);
+ set_flag(FLAG_CLOSED);
+ }
+}
+
+unsigned pifilestream::vread(void *buf, unsigned n)
+{
+ std::size_t r = fread(buf, 1, n, (FILE *) m_file);
+ if (r < n)
+ {
+ if (feof((FILE *) m_file))
+ set_flag(FLAG_EOF);
+ if (ferror((FILE *) m_file))
+ set_flag(FLAG_ERROR);
+ }
+ m_pos += r;
+ return r;
+}
+
+void pifilestream::vseek(pos_type n)
+{
+ check_seekable();
+ if (fseek((FILE *) m_file, SEEK_SET, n) < 0)
+ set_flag(FLAG_ERROR);
+ else
+ m_pos = n;
+ if (feof((FILE *) m_file))
+ set_flag(FLAG_EOF);
+ else
+ clear_flag(FLAG_EOF);
+ if (ferror((FILE *) m_file))
+ set_flag(FLAG_ERROR);
+}
+
+pifilestream::pos_type pifilestream::vtell()
+{
+ long ret = ftell((FILE *) m_file);
+ if (ret < 0)
+ {
+ return m_pos;
+ }
+ else
+ return ret;
+}
+
+// -----------------------------------------------------------------------------
+// pstdin: reads from stdin
+// -----------------------------------------------------------------------------
+
+pstdin::pstdin()
+: pifilestream(stdin, false)
+{
+ /* nothing to do */
+}
+
+// -----------------------------------------------------------------------------
+// Output file stream
+// -----------------------------------------------------------------------------
+
+pofilestream::pofilestream(const pstring &fname)
+: postream(0), m_pos(0), m_actually_close(true)
+{
+ init(fopen(fname.cstr(), "wb"));
+}
+
+pofilestream::pofilestream(void *file, const bool do_close)
+: postream(0), m_pos(0), m_actually_close(do_close)
+{
+ init(file);
+}
+
+void pofilestream::init(void *file)
+{
+ m_file = file;
+ if (m_file == NULL)
+ {
+ set_flag(FLAG_ERROR);
+ set_flag(FLAG_CLOSED);
+ }
+ else
+ {
+ if (ftell((FILE *) m_file) >= 0)
+ {
+ if (fseek((FILE *) m_file, 0, SEEK_SET) >= 0)
+ set_flag(FLAG_SEEKABLE);
+ }
+ }
+}
+
+pofilestream::~pofilestream()
+{
+ if (!closed())
+ close();
+}
+
+void pofilestream::close()
+{
+ if (m_actually_close)
+ {
+ fclose((FILE *) m_file);
+ set_flag(FLAG_CLOSED);
+ }
+}
+
+void pofilestream::vwrite(const void *buf, unsigned n)
+{
+ std::size_t r = fwrite(buf, 1, n, (FILE *) m_file);
+ if (r < n)
+ {
+ if (ferror((FILE *) m_file))
+ set_flag(FLAG_ERROR);
+ }
+ m_pos += r;
+}
+
+void pofilestream::vseek(pos_type n)
+{
+ check_seekable();
+ if (fseek((FILE *) m_file, SEEK_SET, n) < 0)
+ set_flag(FLAG_ERROR);
+ else
+ {
+ m_pos = n;
+ if (ferror((FILE *) m_file))
+ set_flag(FLAG_ERROR);
+ }
+}
+
+pstream::pos_type pofilestream::vtell()
+{
+ long ret = ftell((FILE *) m_file);
+ if (ret < 0)
+ {
+ return m_pos;
+ }
+ else
+ return ret;
+}
+
+// -----------------------------------------------------------------------------
+// pstderr: write to stderr
+// -----------------------------------------------------------------------------
+
+pstderr::pstderr()
+: pofilestream(stderr, false)
+{
+}
+
+// -----------------------------------------------------------------------------
+// pstdout: write to stdout
+// -----------------------------------------------------------------------------
+
+pstdout::pstdout()
+: pofilestream(stdout, false)
+{
+}
+
+// -----------------------------------------------------------------------------
+// Memory stream
+// -----------------------------------------------------------------------------
+
+pimemstream::pimemstream(const void *mem, const pos_type len)
+ : pistream(FLAG_SEEKABLE), m_pos(0), m_len(len), m_mem((char *) mem)
+{
+}
+
+pimemstream::pimemstream(const pomemstream &ostrm)
+: pistream(FLAG_SEEKABLE), m_pos(0), m_len(ostrm.size()), m_mem((char *) ostrm.memory())
+{
+}
+
+pimemstream::~pimemstream()
+{
+}
+
+unsigned pimemstream::vread(void *buf, unsigned n)
+{
+ unsigned ret = (m_pos + n <= m_len) ? n : m_len - m_pos;
+
+ if (ret > 0)
+ {
+ memcpy(buf, m_mem + m_pos, ret);
+ m_pos += ret;
+ }
+
+ if (ret < n)
+ set_flag(FLAG_EOF);
+
+ return ret;
+}
+
+void pimemstream::vseek(pos_type n)
+{
+ m_pos = (n>=m_len) ? m_len : n;
+ clear_flag(FLAG_EOF);
+
+}
+
+pimemstream::pos_type pimemstream::vtell()
+{
+ return m_pos;
+}
+
+// -----------------------------------------------------------------------------
+// Output memory stream
+// -----------------------------------------------------------------------------
+
+pomemstream::pomemstream()
+: postream(FLAG_SEEKABLE), m_pos(0), m_capacity(1024), m_size(0)
+{
+ m_mem = palloc_array(char, m_capacity);
+}
+
+pomemstream::~pomemstream()
+{
+ pfree_array(m_mem);
+}
+
+void pomemstream::vwrite(const void *buf, unsigned n)
+{
+ if (m_pos + n >= m_capacity)
+ {
+ while (m_pos + n >= m_capacity)
+ m_capacity *= 2;
+ char *o = m_mem;
+ m_mem = palloc_array(char, m_capacity);
+ if (m_mem == NULL)
+ {
+ set_flag(FLAG_ERROR);
+ return;
+ }
+ memcpy(m_mem, o, m_pos);
+ pfree_array(o);
+ }
+
+ memcpy(m_mem + m_pos, buf, n);
+ m_pos += n;
+ m_size = std::max(m_pos, m_size);
+}
+
+void pomemstream::vseek(pos_type n)
+{
+ m_pos = n;
+ m_size = std::max(m_pos, m_size);
+ if (m_size >= m_capacity)
+ {
+ while (m_size >= m_capacity)
+ m_capacity *= 2;
+ char *o = m_mem;
+ m_mem = palloc_array(char, m_capacity);
+ if (m_mem == NULL)
+ {
+ set_flag(FLAG_ERROR);
+ return;
+ }
+ memcpy(m_mem, o, m_pos);
+ pfree_array(o);
+ }
+}
+
+pstream::pos_type pomemstream::vtell()
+{
+ return m_pos;
+}
diff --git a/src/lib/netlist/plib/pstream.h b/src/lib/netlist/plib/pstream.h
new file mode 100644
index 00000000000..61f0959cadd
--- /dev/null
+++ b/src/lib/netlist/plib/pstream.h
@@ -0,0 +1,378 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * pstream.h
+ */
+
+#ifndef _PSTREAM_H_
+#define _PSTREAM_H_
+
+#include <cstdarg>
+#include <cstddef>
+#include <stdexcept>
+
+#include "pconfig.h"
+#include "pstring.h"
+#include "palloc.h"
+#include "pfmtlog.h"
+
+// -----------------------------------------------------------------------------
+// pstream: things common to all streams
+// -----------------------------------------------------------------------------
+
+class pstream
+{
+ P_PREVENT_COPYING(pstream)
+public:
+
+ typedef long unsigned pos_type;
+
+ static const pos_type SEEK_EOF = (pos_type) -1;
+
+ pstream(const unsigned flags) : m_flags(flags)
+ {
+ }
+ virtual ~pstream()
+ {
+ }
+
+ bool bad() const { return ((m_flags & FLAG_ERROR) != 0); }
+ bool seekable() const { return ((m_flags & FLAG_SEEKABLE) != 0); }
+
+ void seek(const pos_type n)
+ {
+ check_seekable();
+ return vseek(n);
+ }
+
+ pos_type tell()
+ {
+ return vtell();
+ }
+
+protected:
+ virtual void vseek(const pos_type n) = 0;
+ virtual pos_type vtell() = 0;
+
+ static const unsigned FLAG_EOF = 0x01;
+ static const unsigned FLAG_ERROR = 0x02;
+ static const unsigned FLAG_SEEKABLE = 0x04;
+ static const unsigned FLAG_CLOSED = 0x08; /* convenience flag */
+
+ bool closed() { return ((m_flags & FLAG_CLOSED) != 0); }
+
+ void set_flag(const unsigned flag)
+ {
+ m_flags |= flag;
+ }
+ void clear_flag(const unsigned flag)
+ {
+ m_flags &= ~flag;
+ }
+
+ void check_not_eof() const
+ {
+ if (m_flags & FLAG_EOF)
+ throw pexception("unexpected eof");
+ }
+
+ void check_seekable() const
+ {
+ if (!(m_flags & FLAG_SEEKABLE))
+ throw pexception("stream is not seekable");
+ }
+
+ unsigned flags() const { return m_flags; }
+private:
+
+ unsigned m_flags;
+};
+
+// -----------------------------------------------------------------------------
+// pistream: input stream
+// -----------------------------------------------------------------------------
+
+class pistream : public pstream
+{
+ P_PREVENT_COPYING(pistream)
+public:
+
+ pistream(const unsigned flags) : pstream(flags) {}
+ virtual ~pistream() {}
+
+ bool eof() const { return ((flags() & FLAG_EOF) != 0) || bad(); }
+
+ /* this digests linux & dos/windows text files */
+
+ bool readline(pstring &line);
+
+ bool read(UINT8 &c)
+ {
+ return (read(&c, 1) == 1);
+ }
+
+ unsigned read(void *buf, const unsigned n)
+ {
+ return vread(buf, n);
+ }
+
+protected:
+ /* read up to n bytes from stream */
+ virtual unsigned vread(void *buf, const unsigned n) = 0;
+
+private:
+};
+
+// -----------------------------------------------------------------------------
+// postream: output stream
+// -----------------------------------------------------------------------------
+
+class postream : public pstream
+{
+ P_PREVENT_COPYING(postream)
+public:
+
+ postream(unsigned flags) : pstream(flags) {}
+ virtual ~postream() {}
+
+ /* this digests linux & dos/windows text files */
+
+ void writeline(const pstring &line)
+ {
+ write(line);
+ write(10);
+ }
+
+ void write(const pstring &text)
+ {
+ write(text.cstr(), text.blen());
+ }
+
+ void write(const char c)
+ {
+ write(&c, 1);
+ }
+
+ void write(const void *buf, const unsigned n)
+ {
+ vwrite(buf, n);
+ }
+
+ void write(pistream &strm);
+
+protected:
+ /* write n bytes to stream */
+ virtual void vwrite(const void *buf, const unsigned n) = 0;
+
+private:
+};
+
+// -----------------------------------------------------------------------------
+// pomemstream: output string stream
+// -----------------------------------------------------------------------------
+
+class pomemstream : public postream
+{
+ P_PREVENT_COPYING(pomemstream)
+public:
+
+ pomemstream();
+ virtual ~pomemstream();
+
+ char *memory() const { return m_mem; }
+ unsigned size() const { return m_size; }
+
+protected:
+ /* write n bytes to stream */
+ virtual void vwrite(const void *buf, const unsigned n);
+ virtual void vseek(const pos_type n);
+ virtual pos_type vtell();
+
+private:
+ pos_type m_pos;
+ pos_type m_capacity;
+ pos_type m_size;
+ char *m_mem;
+};
+
+class postringstream : public postream
+{
+ P_PREVENT_COPYING(postringstream )
+
+public:
+
+ postringstream() : postream(0) { }
+ virtual ~postringstream() { }
+
+ const pstringbuffer &str() { return m_buf; }
+
+protected:
+ /* write n bytes to stream */
+ virtual void vwrite(const void *buf, const unsigned n)
+ {
+ m_buf.cat(buf, n);
+ }
+ virtual void vseek(const pos_type n) { }
+ virtual pos_type vtell() { return m_buf.len(); }
+
+private:
+ pstringbuffer m_buf;
+};
+
+// -----------------------------------------------------------------------------
+// pofilestream: file output stream
+// -----------------------------------------------------------------------------
+
+class pofilestream : public postream
+{
+ P_PREVENT_COPYING(pofilestream)
+public:
+
+ pofilestream(const pstring &fname);
+ virtual ~pofilestream();
+
+ void close();
+
+protected:
+ pofilestream(void *file, const bool do_close);
+ /* write n bytes to stream */
+ virtual void vwrite(const void *buf, const unsigned n);
+ virtual void vseek(const pos_type n);
+ virtual pos_type vtell();
+
+private:
+ void *m_file;
+ pos_type m_pos;
+ bool m_actually_close;
+
+ void init(void *file);
+};
+
+// -----------------------------------------------------------------------------
+// pstderr: write to stderr
+// -----------------------------------------------------------------------------
+
+class pstderr : public pofilestream
+{
+ P_PREVENT_COPYING(pstderr)
+public:
+ pstderr();
+};
+
+// -----------------------------------------------------------------------------
+// pstdout: write to stdout
+// -----------------------------------------------------------------------------
+
+class pstdout : public pofilestream
+{
+ P_PREVENT_COPYING(pstdout)
+public:
+ pstdout();
+};
+
+// -----------------------------------------------------------------------------
+// pifilestream: file input stream
+// -----------------------------------------------------------------------------
+
+class pifilestream : public pistream
+{
+ P_PREVENT_COPYING(pifilestream)
+public:
+
+ pifilestream(const pstring &fname);
+ virtual ~pifilestream();
+
+ void close();
+
+protected:
+ pifilestream(void *file, const bool do_close);
+
+ /* read up to n bytes from stream */
+ virtual unsigned vread(void *buf, const unsigned n);
+ virtual void vseek(const pos_type n);
+ virtual pos_type vtell();
+
+private:
+ void *m_file;
+ pos_type m_pos;
+ bool m_actually_close;
+
+ void init(void *file);
+};
+
+// -----------------------------------------------------------------------------
+// pstdin: reads from stdin
+// -----------------------------------------------------------------------------
+
+class pstdin : public pifilestream
+{
+ P_PREVENT_COPYING(pstdin)
+public:
+
+ pstdin();
+};
+
+// -----------------------------------------------------------------------------
+// pimemstream: input memory stream
+// -----------------------------------------------------------------------------
+
+class pimemstream : public pistream
+{
+ P_PREVENT_COPYING(pimemstream)
+public:
+
+ pimemstream(const void *mem, const pos_type len);
+ pimemstream(const pomemstream &ostrm);
+ virtual ~pimemstream();
+
+protected:
+ /* read up to n bytes from stream */
+ virtual unsigned vread(void *buf, const unsigned n);
+ virtual void vseek(const pos_type n);
+ virtual pos_type vtell();
+
+private:
+ pos_type m_pos;
+ pos_type m_len;
+ char *m_mem;
+};
+
+// -----------------------------------------------------------------------------
+// pistringstream: input string stream
+// -----------------------------------------------------------------------------
+
+class pistringstream : public pimemstream
+{
+ P_PREVENT_COPYING(pistringstream)
+public:
+
+ pistringstream(const pstring &str) : pimemstream(str.cstr(), str.len()), m_str(str) { }
+
+private:
+ /* only needed for a reference till destruction */
+ pstring m_str;
+};
+
+// -----------------------------------------------------------------------------
+// pstream_fmt_writer_t: writer on top of ostream
+// -----------------------------------------------------------------------------
+
+class pstream_fmt_writer_t : public pfmt_writer_t<>
+{
+ P_PREVENT_COPYING(pstream_fmt_writer_t)
+public:
+
+ pstream_fmt_writer_t(postream &strm) : m_strm(strm) {}
+ virtual ~pstream_fmt_writer_t() { }
+
+protected:
+ virtual void vdowrite(const pstring &ls) const
+ {
+ m_strm.write(ls);
+ }
+
+private:
+ postream &m_strm;
+};
+
+#endif /* _PSTREAM_H_ */
diff --git a/src/lib/netlist/plib/pstring.c b/src/lib/netlist/plib/pstring.c
new file mode 100644
index 00000000000..8ad86f41f3d
--- /dev/null
+++ b/src/lib/netlist/plib/pstring.c
@@ -0,0 +1,600 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * nl_string.c
+ *
+ */
+
+#include <cstring>
+//FIXME:: pstring should be locale free
+#include <cctype>
+#include <cstdlib>
+#include <cstdio>
+#include <algorithm>
+
+#include "pstring.h"
+#include "palloc.h"
+#include "plists.h"
+
+template<>
+pstr_t pstring_t<putf8_traits>::m_zero = pstr_t(0);
+template<>
+pstr_t pstring_t<pu8_traits>::m_zero = pstr_t(0);
+
+
+/*
+ * Uncomment the following to override defaults
+ */
+
+#define IMMEDIATE_MODE (1)
+//#define DEBUG_MODE (0)
+
+#ifdef MAME_DEBUG
+ #ifndef IMMEDIATE_MODE
+ #define IMMEDIATE_MODE (1)
+ #endif
+ #ifndef DEBUG_MODE
+ #define DEBUG_MODE (0)
+ #endif
+#else
+ #ifndef IMMEDIATE_MODE
+ #define IMMEDIATE_MODE (1)
+ #endif
+ #ifndef DEBUG_MODE
+ #define DEBUG_MODE (0)
+ #endif
+#endif
+
+template<typename F>
+pstring_t<F>::~pstring_t()
+{
+ sfree(m_ptr);
+}
+
+template<typename F>
+void pstring_t<F>::pcat(const mem_t *s)
+{
+ int slen = strlen(s);
+ pstr_t *n = salloc(m_ptr->len() + slen);
+ if (m_ptr->len() > 0)
+ std::memcpy(n->str(), m_ptr->str(), m_ptr->len());
+ if (slen > 0)
+ std::memcpy(n->str() + m_ptr->len(), s, slen);
+ *(n->str() + n->len()) = 0;
+ sfree(m_ptr);
+ m_ptr = n;
+}
+
+template<typename F>
+void pstring_t<F>::pcat(const pstring_t &s)
+{
+ int slen = s.blen();
+ pstr_t *n = salloc(m_ptr->len() + slen);
+ if (m_ptr->len() > 0)
+ std::memcpy(n->str(), m_ptr->str(), m_ptr->len());
+ if (slen > 0)
+ std::memcpy(n->str() + m_ptr->len(), s.cstr(), slen);
+ *(n->str() + n->len()) = 0;
+ sfree(m_ptr);
+ m_ptr = n;
+}
+
+template<typename F>
+int pstring_t<F>::pcmp(const pstring_t &right) const
+{
+ long l = std::min(blen(), right.blen());
+ if (l == 0)
+ {
+ if (blen() == 0 && right.blen() == 0)
+ return 0;
+ else if (right.blen() == 0)
+ return 1;
+ else
+ return -1;
+ }
+ int ret = memcmp(m_ptr->str(), right.cstr(), l);
+ if (ret == 0)
+ ret = this->blen() - right.blen();
+ if (ret < 0)
+ return -1;
+ else if (ret > 0)
+ return 1;
+ else
+ return 0;
+}
+
+
+template<typename F>
+void pstring_t<F>::pcopy(const mem_t *from, int size)
+{
+ pstr_t *n = salloc(size);
+ if (size > 0)
+ std::memcpy(n->str(), from, size);
+ *(n->str() + size) = 0;
+ sfree(m_ptr);
+ m_ptr = n;
+}
+
+template<typename F>
+const pstring_t<F> pstring_t<F>::substr(int start, int count) const
+{
+ pstring_t ret;
+ int alen = (int) len();
+ if (start < 0)
+ start = 0;
+ if (start >= alen)
+ return ret;
+ if (count <0 || start + count > alen)
+ count = alen - start;
+ const char *p = cstr();
+ if (count <= 0)
+ ret.pcopy(p, 0);
+ else
+ {
+ //FIXME: Trait to tell which one
+ //ret.pcopy(cstr() + start, count);
+ // find start
+ for (int i=0; i<start; i++)
+ p += F::codelen(p);
+ const char *e = p;
+ for (int i=0; i<count; i++)
+ e += F::codelen(e);
+ ret.pcopy(p, e-p);
+ }
+ return ret;
+}
+
+template<typename F>
+const pstring_t<F> pstring_t<F>::ucase() const
+{
+ pstring_t ret = *this;
+ ret.pcopy(cstr(), blen());
+ for (unsigned i=0; i<ret.len(); i++)
+ ret.m_ptr->str()[i] = toupper((unsigned) ret.m_ptr->str()[i]);
+ return ret;
+}
+
+template<typename F>
+int pstring_t<F>::find_first_not_of(const pstring_t &no) const
+{
+ char *t = m_ptr->str();
+ unsigned nolen = no.len();
+ unsigned tlen = len();
+ for (unsigned i=0; i < tlen; i++)
+ {
+ char *n = no.m_ptr->str();
+ bool f = true;
+ for (unsigned j=0; j < nolen; j++)
+ {
+ if (F::code(t) == F::code(n))
+ f = false;
+ n += F::codelen(t);
+ }
+ if (f)
+ return i;
+ t += F::codelen(t);
+ }
+ return -1;
+}
+
+template<typename F>
+int pstring_t<F>::find_last_not_of(const pstring_t &no) const
+{
+ char *t = m_ptr->str();
+ unsigned nolen = no.len();
+ unsigned tlen = len();
+ int last_found = -1;
+ for (unsigned i=0; i < tlen; i++)
+ {
+ char *n = no.m_ptr->str();
+ bool f = true;
+ for (unsigned j=0; j < nolen; j++)
+ {
+ if (F::code(t) == F::code(n))
+ f = false;
+ n += F::codelen(t);
+ }
+ if (f)
+ last_found = i;
+ t += F::codelen(t);
+ }
+ return last_found;
+}
+
+template<typename F>
+pstring_t<F> pstring_t<F>::replace(const pstring_t &search, const pstring_t &replace) const
+{
+ // FIXME: use this pstringbuffer ret = "";
+ pstring_t ret = "";
+ const int slen = search.blen();
+ const int tlen = blen();
+
+ if (slen == 0 || tlen < slen )
+ return *this;
+ int i = 0;
+ while (i < tlen - slen + 1)
+ {
+ if (memcmp(cstr()+i,search.cstr(),slen) == 0)
+ {
+ ret += replace;
+ i += slen;
+ }
+ else
+ {
+ /* avoid adding a code, cat a string ... */
+ mem_t buf[2] = { *(cstr() + i), 0 };
+ ret = ret.cat(buf);
+ i++;
+ }
+ }
+ ret = ret.cat(cstr() + i);
+ return ret;
+}
+
+template<typename F>
+const pstring_t<F> pstring_t<F>::ltrim(const pstring_t &ws) const
+{
+ int f = find_first_not_of(ws);
+ if (f>=0)
+ return substr(f);
+ else
+ return "";
+}
+
+template<typename F>
+const pstring_t<F> pstring_t<F>::rtrim(const pstring_t &ws) const
+{
+ int f = find_last_not_of(ws);
+ if (f>=0)
+ return left(f+1);
+ else
+ return "";
+}
+
+template<typename F>
+const pstring_t<F> pstring_t<F>::rpad(const pstring_t &ws, const unsigned cnt) const
+{
+ // FIXME: pstringbuffer ret(*this);
+
+ pstring_t ret(*this);
+ while (ret.len() < cnt)
+ ret += ws;
+ return pstring_t(ret).substr(0, cnt);
+}
+
+
+template<typename F>
+void pstring_t<F>::pcopy(const mem_t *from)
+{
+ pcopy(from, strlen(from));
+}
+
+template<typename F>
+double pstring_t<F>::as_double(bool *error) const
+{
+ double ret;
+ char *e = NULL;
+
+ if (error != NULL)
+ *error = false;
+ ret = strtod(cstr(), &e);
+ if (*e != 0)
+ if (error != NULL)
+ *error = true;
+ return ret;
+}
+
+template<typename F>
+long pstring_t<F>::as_long(bool *error) const
+{
+ long ret;
+ char *e = NULL;
+
+ if (error != NULL)
+ *error = false;
+ if (startsWith("0x"))
+ ret = strtol(substr(2).cstr(), &e, 16);
+ else
+ ret = strtol(cstr(), &e, 10);
+ if (*e != 0)
+ if (error != NULL)
+ *error = true;
+ return ret;
+}
+
+// ----------------------------------------------------------------------------------------
+// static stuff ...
+// ----------------------------------------------------------------------------------------
+
+/*
+ * Cached allocation of string memory
+ *
+ * This improves startup performance by 30%.
+ */
+
+#if 1
+
+static pstack_t<pstr_t *> *stk = NULL;
+
+static inline unsigned countleadbits(unsigned x)
+{
+#ifndef count_leading_zeros
+ unsigned msk;
+ unsigned ret;
+ if (x < 0x100)
+ {
+ msk = 0x80;
+ ret = 24;
+ }
+ else if (x < 0x10000)
+ {
+ msk = 0x8000;
+ ret = 16;
+ }
+ else if (x < 0x1000000)
+ {
+ msk = 0x800000;
+ ret = 8;
+ }
+ else
+ {
+ msk = 0x80000000;
+ ret = 0;
+ }
+ while ((msk & x) == 0 && ret < 31)
+ {
+ msk = msk >> 1;
+ ret++;
+ }
+ return ret;
+#else
+ return count_leading_zeros(x);
+#endif
+}
+
+template<typename F>
+void pstring_t<F>::sfree(pstr_t *s)
+{
+ s->m_ref_count--;
+ if (s->m_ref_count == 0 && s != &m_zero)
+ {
+ if (stk != NULL)
+ {
+ unsigned sn= ((32 - countleadbits(s->len())) + 1) / 2;
+ stk[sn].push(s);
+ }
+ else
+ pfree_array(((char *)s));
+ //_mm_free(((char *)s));
+ }
+}
+
+template<typename F>
+pstr_t *pstring_t<F>::salloc(int n)
+{
+ if (stk == NULL)
+ stk = palloc_array(pstack_t<pstr_t *>, 17);
+ pstr_t *p;
+ unsigned sn= ((32 - countleadbits(n)) + 1) / 2;
+ unsigned size = sizeof(pstr_t) + ((UINT64) 1<<(sn * 2)) + 1;
+ if (stk[sn].empty())
+ p = (pstr_t *) palloc_array(char, size);
+ else
+ {
+ p = stk[sn].pop();
+ }
+
+ // str_t *p = (str_t *) _mm_malloc(size, 8);
+ p->init(n);
+ return p;
+}
+template<typename F>
+void pstring_t<F>::resetmem()
+{
+ if (stk != NULL)
+ {
+ for (unsigned i=0; i<=16; i++)
+ {
+ for (; stk[i].count() > 0; )
+ pfree_array(stk[i].pop());
+ }
+ pfree_array(stk);
+ stk = NULL;
+ }
+}
+
+
+#else
+template<typename F>
+void pstring_t<F>::sfree(pstr_t *s)
+{
+ s->m_ref_count--;
+ if (s->m_ref_count == 0 && s != &m_zero)
+ {
+ pfree_array(((char *)s));
+ //_mm_free(((char *)s));
+ }
+}
+
+template<typename F>
+pstr_t *pstring_t<F>::salloc(int n)
+{
+ int size = sizeof(pstr_t) + n + 1;
+ pstr_t *p = (pstr_t *) palloc_array(char, size);
+ // str_t *p = (str_t *) _mm_malloc(size, 8);
+ p->init(n);
+ return p;
+}
+
+template<typename F>
+void pstring_t<F>::resetmem()
+{
+ // Release the 0 string
+}
+#endif
+
+
+// ----------------------------------------------------------------------------------------
+// pstring ...
+// ----------------------------------------------------------------------------------------
+
+template<typename F>
+int pstring_t<F>::find(const pstring_t &search, unsigned start) const
+{
+ const unsigned tlen = len();
+ const unsigned slen = search.len();
+ const char *s = search.cstr();
+ const unsigned startt = std::min(start, tlen);
+ const char *t = cstr();
+ for (unsigned i=0; i<startt; i++)
+ t += F::codelen(t);
+ for (int i=0; i <= (int) tlen - (int) startt - (int) slen; i++)
+ {
+ if (F::code(t) == F::code(s))
+ if (std::memcmp(t,s,search.blen())==0)
+ return i+startt;
+ t += F::codelen(t);
+ }
+ return -1;
+}
+
+template<typename F>
+int pstring_t<F>::find(const mem_t *search, unsigned start) const
+{
+ const unsigned tlen = len();
+ unsigned slen = 0;
+ unsigned sblen = 0;
+ const mem_t *x = search;
+ while (*x != 0)
+ {
+ slen++;
+ const unsigned sl = F::codelen(x);
+ x += sl;
+ sblen += sl;
+ }
+ const char *s = search;
+ const unsigned startt = std::min(start, tlen);
+ const char *t = cstr();
+ for (unsigned i=0; i<startt; i++)
+ t += F::codelen(t);
+ for (int i=0; i <= (int) tlen - (int) startt - (int) slen; i++)
+ {
+ if (F::code(t) == F::code(s))
+ if (std::memcmp(t,s,sblen)==0)
+ return i+startt;
+ t += F::codelen(t);
+ }
+ return -1;
+}
+
+template<typename F>
+bool pstring_t<F>::startsWith(const pstring_t &arg) const
+{
+ if (arg.blen() > blen())
+ return false;
+ else
+ return (memcmp(arg.cstr(), cstr(), arg.len()) == 0);
+}
+
+template<typename F>
+bool pstring_t<F>::endsWith(const pstring_t &arg) const
+{
+ if (arg.blen() > blen())
+ return false;
+ else
+ return (memcmp(cstr()+this->len()-arg.len(), arg.cstr(), arg.len()) == 0);
+}
+
+
+template<typename F>
+bool pstring_t<F>::startsWith(const mem_t *arg) const
+{
+ unsigned alen = strlen(arg);
+ if (alen > blen())
+ return false;
+ else
+ return (memcmp(arg, cstr(), alen) == 0);
+}
+
+template<typename F>
+int pstring_t<F>::pcmp(const mem_t *right) const
+{
+ return std::strcmp(m_ptr->str(), right);
+}
+
+// ----------------------------------------------------------------------------------------
+// pstringbuffer
+// ----------------------------------------------------------------------------------------
+
+pstringbuffer::~pstringbuffer()
+{
+ if (m_ptr != NULL)
+ pfree_array(m_ptr);
+}
+
+void pstringbuffer::resize(const std::size_t size)
+{
+ if (m_ptr == NULL)
+ {
+ m_size = DEFAULT_SIZE;
+ while (m_size <= size)
+ m_size *= 2;
+ m_ptr = palloc_array(char, m_size);
+ *m_ptr = 0;
+ m_len = 0;
+ }
+ else if (m_size < size)
+ {
+ while (m_size < size)
+ m_size *= 2;
+ char *new_buf = palloc_array(char, m_size);
+ std::memcpy(new_buf, m_ptr, m_len + 1);
+ pfree_array(m_ptr);
+ m_ptr = new_buf;
+ }
+}
+
+void pstringbuffer::pcopy(const char *from)
+{
+ std::size_t nl = strlen(from) + 1;
+ resize(nl);
+ std::memcpy(m_ptr, from, nl);
+}
+
+void pstringbuffer::pcopy(const pstring &from)
+{
+ std::size_t nl = from.blen() + 1;
+ resize(nl);
+ std::memcpy(m_ptr, from.cstr(), nl);
+}
+
+void pstringbuffer::pcat(const char *s)
+{
+ const std::size_t slen = std::strlen(s);
+ const std::size_t nl = m_len + slen + 1;
+ resize(nl);
+ std::memcpy(m_ptr + m_len, s, slen + 1);
+ m_len += slen;
+}
+
+void pstringbuffer::pcat(const void *m, unsigned l)
+{
+ const std::size_t nl = m_len + l + 1;
+ resize(nl);
+ std::memcpy(m_ptr + m_len, m, l);
+ m_len += l;
+ *(m_ptr + m_len) = 0;
+}
+
+void pstringbuffer::pcat(const pstring &s)
+{
+ const std::size_t slen = s.blen();
+ const std::size_t nl = m_len + slen + 1;
+ resize(nl);
+ std::memcpy(m_ptr + m_len, s.cstr(), slen);
+ m_len += slen;
+ m_ptr[m_len] = 0;
+}
+
+template struct pstring_t<pu8_traits>;
+template struct pstring_t<putf8_traits>;
diff --git a/src/lib/netlist/plib/pstring.h b/src/lib/netlist/plib/pstring.h
new file mode 100644
index 00000000000..b101ffc47a5
--- /dev/null
+++ b/src/lib/netlist/plib/pstring.h
@@ -0,0 +1,381 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * pstring.h
+ */
+
+#ifndef _PSTRING_H_
+#define _PSTRING_H_
+
+#include <cstdarg>
+#include <cstddef>
+
+#include "pconfig.h"
+
+// ----------------------------------------------------------------------------------------
+// pstring: immutable strings ...
+//
+// pstrings are just a pointer to a "pascal-style" string representation.
+// It uses reference counts and only uses new memory when a string changes.
+// ----------------------------------------------------------------------------------------
+
+ struct pstr_t
+ {
+ //str_t() : m_ref_count(1), m_len(0) { m_str[0] = 0; }
+ pstr_t(const unsigned alen)
+ {
+ init(alen);
+ }
+ void init(const unsigned alen)
+ {
+ m_ref_count = 1;
+ m_len = alen;
+ m_str[0] = 0;
+ }
+ char *str() { return &m_str[0]; }
+ unsigned len() const { return m_len; }
+ int m_ref_count;
+ private:
+ unsigned m_len;
+ char m_str[1];
+ };
+
+
+template <typename F>
+struct pstring_t
+{
+public:
+ typedef F traits;
+
+ typedef typename traits::mem_t mem_t;
+ typedef typename traits::code_t code_t;
+
+ // simple construction/destruction
+ pstring_t()
+ {
+ init();
+ }
+ ~pstring_t();
+
+ // construction with copy
+ pstring_t(const mem_t *string) {init(); if (string != NULL && *string != 0) pcopy(string); }
+ pstring_t(const pstring_t &string) {init(); pcopy(string); }
+
+ // assignment operators
+ pstring_t &operator=(const mem_t *string) { pcopy(string); return *this; }
+ pstring_t &operator=(const pstring_t &string) { pcopy(string); return *this; }
+
+ // C string conversion helpers
+ const mem_t *cstr() const { return m_ptr->str(); }
+
+ // concatenation operators
+ pstring_t& operator+=(const pstring_t &string) { pcat(string); return *this; }
+ pstring_t& operator+=(const mem_t *string) { pcat(string); return *this; }
+ friend pstring_t operator+(const pstring_t &lhs, const pstring_t &rhs) { return pstring_t(lhs) += rhs; }
+ friend pstring_t operator+(const pstring_t &lhs, const mem_t *rhs) { return pstring_t(lhs) += rhs; }
+ friend pstring_t operator+(const mem_t *lhs, const pstring_t &rhs) { return pstring_t(lhs) += rhs; }
+
+ // comparison operators
+ bool operator==(const mem_t *string) const { return (pcmp(string) == 0); }
+ bool operator==(const pstring_t &string) const { return (pcmp(string) == 0); }
+ bool operator!=(const mem_t *string) const { return (pcmp(string) != 0); }
+ bool operator!=(const pstring_t &string) const { return (pcmp(string) != 0); }
+
+ bool operator<(const mem_t *string) const { return (pcmp(string) < 0); }
+ bool operator<(const pstring_t &string) const { return (pcmp(string) < 0); }
+ bool operator<=(const mem_t *string) const { return (pcmp(string) <= 0); }
+ bool operator<=(const pstring_t &string) const { return (pcmp(string) <= 0); }
+ bool operator>(const mem_t *string) const { return (pcmp(string) > 0); }
+ bool operator>(const pstring_t &string) const { return (pcmp(string) > 0); }
+ bool operator>=(const mem_t *string) const { return (pcmp(string) >= 0); }
+ bool operator>=(const pstring_t &string) const { return (pcmp(string) >= 0); }
+
+ bool equals(const pstring_t &string) const { return (pcmp(string) == 0); }
+
+ int cmp(const pstring_t &string) const { return pcmp(string); }
+ int cmp(const mem_t *string) const { return pcmp(string); }
+
+ bool startsWith(const pstring_t &arg) const;
+ bool startsWith(const mem_t *arg) const;
+
+ bool endsWith(const pstring_t &arg) const;
+ bool endsWith(const mem_t *arg) const { return endsWith(pstring_t(arg)); }
+
+ pstring_t replace(const pstring_t &search, const pstring_t &replace) const;
+
+ const pstring_t cat(const pstring_t &s) const { return *this + s; }
+ const pstring_t cat(const mem_t *s) const { return *this + s; }
+
+ unsigned blen() const { return m_ptr->len(); }
+
+ // conversions
+
+ double as_double(bool *error = NULL) const;
+ long as_long(bool *error = NULL) const;
+
+ /*
+ * everything below MAY not work for utf8.
+ * Example a=s.find(EUROSIGN); b=s.substr(a,1); will deliver invalid utf8
+ */
+
+ unsigned len() const
+ {
+ return F::len(m_ptr);
+ }
+
+ pstring_t& operator+=(const code_t c) { mem_t buf[F::MAXCODELEN+1] = { 0 }; F::encode(c, buf); pcat(buf); return *this; }
+ friend pstring_t operator+(const pstring_t &lhs, const mem_t rhs) { return pstring_t(lhs) += rhs; }
+
+ int find(const pstring_t &search, unsigned start = 0) const;
+ int find(const mem_t *search, unsigned start = 0) const;
+ int find(const code_t search, unsigned start = 0) const { mem_t buf[F::MAXCODELEN+1] = { 0 }; F::encode(search, buf); return find(buf, start); };
+
+ const pstring_t substr(int start, int count = -1) const ;
+
+ const pstring_t left(unsigned count) const { return substr(0, count); }
+ const pstring_t right(unsigned count) const { return substr((int) len() - (int) count, count); }
+
+ int find_first_not_of(const pstring_t &no) const;
+ int find_last_not_of(const pstring_t &no) const;
+
+ // FIXME:
+ code_t code_at(const unsigned pos) const { return F::code(F::nthcode(m_ptr->str(),pos)); }
+
+ const pstring_t ltrim(const pstring_t &ws = " \t\n\r") const;
+ const pstring_t rtrim(const pstring_t &ws = " \t\n\r") const;
+ const pstring_t trim(const pstring_t &ws = " \t\n\r") const { return this->ltrim(ws).rtrim(ws); }
+
+ const pstring_t rpad(const pstring_t &ws, const unsigned cnt) const;
+
+ const pstring_t ucase() const;
+
+ static void resetmem();
+
+protected:
+
+ pstr_t *m_ptr;
+
+private:
+ void init()
+ {
+ m_ptr = &m_zero;
+ m_ptr->m_ref_count++;
+ }
+
+ int pcmp(const pstring_t &right) const;
+
+ int pcmp(const mem_t *right) const;
+
+ void pcopy(const mem_t *from, int size);
+
+ void pcopy(const mem_t *from);
+
+ void pcopy(const pstring_t &from)
+ {
+ sfree(m_ptr);
+ m_ptr = from.m_ptr;
+ m_ptr->m_ref_count++;
+ }
+
+ void pcat(const mem_t *s);
+ void pcat(const pstring_t &s);
+
+ static pstr_t *salloc(int n);
+ static void sfree(pstr_t *s);
+
+ static pstr_t m_zero;
+};
+
+struct pu8_traits
+{
+ static const unsigned MAXCODELEN = 1; /* in memory units */
+ typedef char mem_t;
+ typedef char code_t;
+ static unsigned len(const pstr_t *p) { return p->len(); }
+ static unsigned codelen(const mem_t *p) { return 1; }
+ static unsigned codelen(const code_t c) { return 1; }
+ static code_t code(const mem_t *p) { return *p; }
+ static void encode(const code_t c, mem_t *p) { *p = c; }
+ static const mem_t *nthcode(const mem_t *p, const unsigned n) { return &(p[n]); }
+};
+
+/* No checking, this may deliver invalid codes */
+struct putf8_traits
+{
+ static const unsigned MAXCODELEN = 4; /* in memory units, RFC 3629 */
+ typedef char mem_t;
+ typedef unsigned code_t;
+ static unsigned len(pstr_t *p)
+ {
+ unsigned ret = 0;
+ unsigned char *c = (unsigned char *) p->str();
+ while (*c)
+ {
+ if (!((*c & 0xC0) == 0x80))
+ ret++;
+ c++;
+ }
+ return ret;
+ }
+ static unsigned codelen(const mem_t *p)
+ {
+ unsigned char *p1 = (unsigned char *) p;
+ if ((*p1 & 0x80) == 0x00)
+ return 1;
+ else if ((*p1 & 0xE0) == 0xC0)
+ return 2;
+ else if ((*p1 & 0xF0) == 0xE0)
+ return 3;
+ else if ((*p1 & 0xF8) == 0xF0)
+ return 4;
+ else
+ {
+ return 1; // not correct
+ }
+ }
+ static unsigned codelen(const code_t c)
+ {
+ if (c < 0x0080)
+ return 1;
+ else if (c < 0x800)
+ return 2;
+ else if (c < 0x10000)
+ return 3;
+ else /* U+10000 U+1FFFFF */
+ return 4; /* no checks */
+ }
+ static code_t code(const mem_t *p)
+ {
+ unsigned char *p1 = (unsigned char *)p;
+ if ((*p1 & 0x80) == 0x00)
+ return (code_t) *p1;
+ else if ((*p1 & 0xE0) == 0xC0)
+ return ((p1[0] & 0x3f) << 6) | ((p1[1] & 0x3f));
+ else if ((*p1 & 0xF0) == 0xE0)
+ return ((p1[0] & 0x1f) << 12) | ((p1[1] & 0x3f) << 6) | ((p1[2] & 0x3f) << 0);
+ else if ((*p1 & 0xF8) == 0xF0)
+ return ((p1[0] & 0x0f) << 18) | ((p1[1] & 0x3f) << 12) | ((p1[2] & 0x3f) << 6) | ((p1[3] & 0x3f) << 0);
+ else
+ return *p1; // not correct
+ }
+ static void encode(const code_t c, mem_t *p)
+ {
+ unsigned char *m = (unsigned char*)p;
+ if (c < 0x0080)
+ {
+ m[0] = c;
+ }
+ else if (c < 0x800)
+ {
+ m[0] = 0xC0 | (c >> 6);
+ m[1] = 0x80 | (c & 0x3f);
+ }
+ else if (c < 0x10000)
+ {
+ m[0] = 0xE0 | (c >> 12);
+ m[1] = 0x80 | ((c>>6) & 0x3f);
+ m[2] = 0x80 | (c & 0x3f);
+ }
+ else /* U+10000 U+1FFFFF */
+ {
+ m[0] = 0xF0 | (c >> 18);
+ m[1] = 0x80 | ((c>>12) & 0x3f);
+ m[2] = 0x80 | ((c>>6) & 0x3f);
+ m[3] = 0x80 | (c & 0x3f);
+ }
+ }
+ static const mem_t *nthcode(const mem_t *p, const unsigned n)
+ {
+ const mem_t *p1 = p;
+ int i = n;
+ while (i-- > 0)
+ p1 += codelen(p1);
+ return p1;
+ }
+};
+
+struct pstring : public pstring_t<putf8_traits>
+{
+public:
+
+ typedef pstring_t<putf8_traits> type_t;
+
+ // simple construction/destruction
+ pstring() : type_t() { }
+
+ // construction with copy
+ pstring(const mem_t *string) : type_t(string) { }
+ pstring(const type_t &string) : type_t(string) { }
+
+};
+
+// ----------------------------------------------------------------------------------------
+// pstringbuffer: a string buffer implementation
+//
+// string buffer are optimized to handle concatenations. This implementation is designed
+// to specifically interact with pstrings nicely.
+// ----------------------------------------------------------------------------------------
+
+struct pstringbuffer
+{
+public:
+
+ static const int DEFAULT_SIZE = 2048;
+ // simple construction/destruction
+ pstringbuffer()
+ {
+ init();
+ resize(DEFAULT_SIZE);
+ }
+
+ ~pstringbuffer();
+
+ // construction with copy
+ pstringbuffer(const char *string) {init(); if (string != NULL) pcopy(string); }
+ pstringbuffer(const pstring &string) {init(); pcopy(string); }
+
+ // assignment operators
+ pstringbuffer &operator=(const char *string) { pcopy(string); return *this; }
+ pstringbuffer &operator=(const pstring &string) { pcopy(string); return *this; }
+ pstringbuffer &operator=(const pstringbuffer &string) { pcopy(string); return *this; }
+
+ // C string conversion helpers
+ const char *cstr() const { return m_ptr; }
+
+ operator pstring() const { return pstring(m_ptr); }
+
+ // concatenation operators
+ pstringbuffer& operator+=(const UINT8 c) { UINT8 buf[2] = { c, 0 }; pcat((char *) buf); return *this; }
+ pstringbuffer& operator+=(const pstring &string) { pcat(string); return *this; }
+ pstringbuffer& operator+=(const char *string) { pcat(string); return *this; }
+
+ std::size_t len() const { return m_len; }
+
+ void cat(const pstring &s) { pcat(s); }
+ void cat(const char *s) { pcat(s); }
+ void cat(const void *m, unsigned l) { pcat(m, l); }
+
+private:
+
+ void init()
+ {
+ m_ptr = NULL;
+ m_size = 0;
+ m_len = 0;
+ }
+
+ void resize(const std::size_t size);
+
+ void pcopy(const char *from);
+ void pcopy(const pstring &from);
+ void pcat(const char *s);
+ void pcat(const pstring &s);
+ void pcat(const void *m, unsigned l);
+
+ char *m_ptr;
+ std::size_t m_size;
+ std::size_t m_len;
+
+};
+
+#endif /* _PSTRING_H_ */
diff --git a/src/lib/netlist/plib/ptypes.h b/src/lib/netlist/plib/ptypes.h
new file mode 100644
index 00000000000..5ccfe171ed4
--- /dev/null
+++ b/src/lib/netlist/plib/ptypes.h
@@ -0,0 +1,97 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * ptypes.h
+ *
+ */
+
+#ifndef PTYPES_H_
+#define PTYPES_H_
+
+#include "pconfig.h"
+#include "pstring.h"
+
+//============================================================
+// penum - strongly typed enumeration
+//============================================================
+
+struct penum_base
+{
+protected:
+ static int from_string_int(const char *str, const char *x)
+ {
+ int cnt = 0;
+ const char *cur = str;
+ int lx = strlen(x);
+ while (*str)
+ {
+ if (*str == ',')
+ {
+ int l = str-cur;
+ if (l == lx)
+ if (strncmp(cur, x, lx) == 0)
+ return cnt;
+ }
+ else if (*str == ' ')
+ {
+ cur = str + 1;
+ cnt++;
+ }
+ str++;
+ }
+ int l = str-cur;
+ if (l == lx)
+ if (strncmp(cur, x, lx) == 0)
+ return cnt;
+ return -1;
+ }
+ static pstring nthstr(int n, const char *str)
+ {
+ char buf[64];
+ char *bufp = buf;
+ int cur = 0;
+ while (*str)
+ {
+ if (cur == n)
+ {
+ if (*str == ',')
+ {
+ *bufp = 0;
+ return pstring(buf);
+ }
+ else if (*str != ' ')
+ *bufp++ = *str;
+ }
+ else
+ {
+ if (*str == ',')
+ cur++;
+ }
+ str++;
+ }
+ *bufp = 0;
+ return pstring(buf);
+ }
+};
+
+#define P_ENUM(_name, ...) \
+ struct _name : public penum_base { \
+ enum e { __VA_ARGS__ }; \
+ _name (e v) : m_v(v) { } \
+ bool set_from_string (const pstring &s) { \
+ static const char *strings = # __VA_ARGS__; \
+ int f = from_string_int(strings, s.cstr()); \
+ if (f>=0) { m_v = (e) f; return true; } else { return false; } \
+ } \
+ operator e() const {return m_v;} \
+ int as_int() const {return (int) m_v;} \
+ bool operator==(const _name &rhs) const {return m_v == rhs.m_v;} \
+ bool operator==(const e &rhs) const {return m_v == (int) rhs;} \
+ const pstring name() const { \
+ static const char *strings = # __VA_ARGS__; \
+ return nthstr((int) m_v, strings); \
+ } \
+ private: e m_v; };
+
+
+#endif /* PTYPES_H_ */
diff --git a/src/tools/nltool.c b/src/lib/netlist/prg/nltool.c
index 9d346746fad..3510f70e7f2 100644
--- a/src/tools/nltool.c
+++ b/src/lib/netlist/prg/nltool.c
@@ -11,14 +11,15 @@
#include <cstdio>
#ifdef PSTANDALONE
- #if (PSTANDALONE)
+#if (PSTANDALONE)
#define PSTANDALONE_PROVIDED
- #endif
+#endif
#endif
#include "plib/poptions.h"
#include "plib/pstring.h"
#include "plib/plists.h"
+#include "plib/ptypes.h"
#include "nl_setup.h"
#include "nl_factory.h"
#include "nl_parser.h"
@@ -98,13 +99,15 @@ class tool_options_t : public poptions
public:
tool_options_t() :
poptions(),
- opt_ttr ("t", "time_to_run", 1.0, "time to run the emulation (seconds)", this),
+ opt_ttr ("t", "time_to_run", 1.0, "time to run the emulation (seconds)", this),
opt_name("n", "name", "", "netlist in file to run; default is first one", this),
opt_logs("l", "logs", "", "colon separated list of terminals to log", this),
opt_file("f", "file", "-", "file to process (default is stdin)", this),
opt_type("y", "type", "spice", "spice:eagle", "type of file to be converted: spice,eagle", this),
opt_cmd ("c", "cmd", "run", "run|convert|listdevices", this),
+ opt_inp( "i", "input", "", "input file to process (default is none)", this),
opt_verb("v", "verbose", "be verbose - this produces lots of output", this),
+ opt_quiet("q", "quiet", "be quiet - no warnings", this),
opt_help("h", "help", "display help", this)
{}
@@ -114,12 +117,17 @@ public:
poption_str opt_file;
poption_str_limit opt_type;
poption_str opt_cmd;
+ poption_str opt_inp;
poption_bool opt_verb;
+ poption_bool opt_quiet;
poption_bool opt_help;
};
-//Alternative
-//static poption *optlist[] = { &opt_ttr, &opt_logs, &opt_file, &opt_cmd, &opt_verb, &opt_help, NULL };
+pstdout pout_strm;
+pstderr perr_strm;
+
+pstream_fmt_writer_t pout(pout_strm);
+pstream_fmt_writer_t perr(perr_strm);
NETLIST_START(dummy)
/* Standard stuff */
@@ -133,45 +141,12 @@ NETLIST_END()
CORE IMPLEMENTATION
***************************************************************************/
-pstring filetobuf(pstring fname)
-{
- pstring pbuf = "";
-
- if (fname == "-")
- {
- char lbuf[1024];
- while (!feof(stdin))
- {
- fgets(lbuf, 1024, stdin);
- pbuf += lbuf;
- }
- printf("%d\n",*(pbuf.right(1).cstr()+1));
- return pbuf;
- }
- else
- {
- FILE *f;
- f = fopen(fname, "rb");
- fseek(f, 0, SEEK_END);
- long fsize = ftell(f);
- fseek(f, 0, SEEK_SET);
-
- char *buf = (char *) malloc(fsize + 1);
- fread(buf, fsize, 1, f);
- buf[fsize] = 0;
- fclose(f);
- pbuf = buf;
- free(buf);
- return pbuf;
- }
-}
-
class netlist_tool_t : public netlist::netlist_t
{
public:
netlist_tool_t()
- : netlist::netlist_t(), m_logs(""), m_verbose(false), m_setup(NULL)
+ : netlist::netlist_t(), m_opts(NULL), m_setup(NULL)
{
}
@@ -188,11 +163,11 @@ public:
m_setup->init();
}
- void read_netlist(const char *buffer, pstring name)
+ void read_netlist(const pstring &filename, const pstring &name)
{
// read the netlist ...
- m_setup->register_source(palloc(netlist::netlist_source_mem_t(buffer)));
+ m_setup->register_source(palloc(netlist::source_file_t(filename)));
m_setup->include(name);
log_setup();
@@ -205,9 +180,9 @@ public:
void log_setup()
{
- NL_VERBOSE_OUT(("Creating dynamic logs ...\n"));
- pstring_list_t ll(m_logs, ":");
- for (int i=0; i < ll.size(); i++)
+ log().debug("Creating dynamic logs ...\n");
+ pstring_list_t ll(m_opts ? m_opts->opt_logs() : "" , ":");
+ for (unsigned i=0; i < ll.size(); i++)
{
pstring name = "log_" + ll[i];
/*netlist_device_t *nc = */ m_setup->register_dev("LOG", name);
@@ -215,32 +190,15 @@ public:
}
}
- pstring m_logs;
-
- bool m_verbose;
+ tool_options_t *m_opts;
protected:
- void verror(const loglevel_e level, const char *format, va_list ap) const
+ void vlog(const plog_level &l, const pstring &ls) const
{
- switch (level)
- {
- case NL_LOG:
- if (m_verbose)
- {
- vprintf(format, ap);
- printf("\n");
- }
- break;
- case NL_WARNING:
- vprintf(format, ap);
- printf("\n");
- break;
- case NL_ERROR:
- vprintf(format, ap);
- printf("\n");
- throw;
- }
+ pout("{}: {}\n", l.name().cstr(), ls.cstr());
+ if (l == plog_level::FATAL)
+ throw;
}
private:
@@ -250,14 +208,75 @@ private:
void usage(tool_options_t &opts)
{
- fprintf(stderr,
+ perr("{}",
"Usage:\n"
" nltool -help\n"
" nltool [options]\n"
"\n"
"Where:\n"
);
- fprintf(stderr, "%s\n", opts.help().cstr());
+ perr("{}\n", opts.help().cstr());
+}
+
+struct input_t
+{
+ input_t()
+ : m_param(NULL), m_value(0.0)
+ {
+ }
+ input_t(netlist::netlist_t *netlist, const pstring &line)
+ {
+ char buf[400];
+ double t;
+ int e = sscanf(line.cstr(), "%lf,%[^,],%lf", &t, buf, &m_value);
+ if ( e!= 3)
+ throw netlist::fatalerror_e(pfmt("error {1} scanning line {2}\n")(e)(line));
+ m_time = netlist::netlist_time::from_double(t);
+ m_param = netlist->setup().find_param(buf, true);
+ }
+
+ void setparam()
+ {
+ switch (m_param->param_type())
+ {
+ case netlist::param_t::MODEL:
+ case netlist::param_t::STRING:
+ throw netlist::fatalerror_e(pfmt("param {1} is not numeric\n")(m_param->name()));
+ case netlist::param_t::DOUBLE:
+ static_cast<netlist::param_double_t*>(m_param)->setTo(m_value);
+ break;
+ case netlist::param_t::INTEGER:
+ static_cast<netlist::param_int_t*>(m_param)->setTo((int)m_value);
+ break;
+ case netlist::param_t::LOGIC:
+ static_cast<netlist::param_logic_t*>(m_param)->setTo((int) m_value);
+ break;
+ }
+ }
+
+ netlist::netlist_time m_time;
+ netlist::param_t *m_param;
+ double m_value;
+
+};
+
+plist_t<input_t> *read_input(netlist::netlist_t *netlist, pstring fname)
+{
+ plist_t<input_t> *ret = palloc(plist_t<input_t>());
+ if (fname != "")
+ {
+ pifilestream f(fname);
+ pstring l;
+ while (f.readline(l))
+ {
+ if (l != "")
+ {
+ input_t inp(netlist, l);
+ ret->add(inp);
+ }
+ }
+ }
+ return ret;
}
static void run(tool_options_t &opts)
@@ -265,21 +284,40 @@ static void run(tool_options_t &opts)
netlist_tool_t nt;
osd_ticks_t t = osd_ticks();
+ nt.m_opts = &opts;
nt.init();
- nt.m_logs = opts.opt_logs();
- nt.m_verbose = opts.opt_verb();
- nt.read_netlist(filetobuf(opts.opt_file()), opts.opt_name());
+
+ if (!opts.opt_verb())
+ nt.log().verbose.set_enabled(false);
+ if (opts.opt_quiet())
+ nt.log().warning.set_enabled(false);
+
+ nt.read_netlist(opts.opt_file(), opts.opt_name());
+
+ plist_t<input_t> *inps = read_input(&nt, opts.opt_inp());
+
double ttr = opts.opt_ttr();
- printf("startup time ==> %5.3f\n", (double) (osd_ticks() - t) / (double) osd_ticks_per_second() );
- printf("runnning ...\n");
+ pout("startup time ==> {1:5.3f}\n", (double) (osd_ticks() - t) / (double) osd_ticks_per_second() );
+ pout("runnning ...\n");
t = osd_ticks();
- nt.process_queue(netlist::netlist_time::from_double(ttr));
+ unsigned pos = 0;
+ netlist::netlist_time nlt = netlist::netlist_time::zero;
+
+ while (pos < inps->size() && (*inps)[pos].m_time < netlist::netlist_time::from_double(ttr))
+ {
+ nt.process_queue((*inps)[pos].m_time - nlt);
+ (*inps)[pos].setparam();
+ nlt = (*inps)[pos].m_time;
+ pos++;
+ }
+ nt.process_queue(netlist::netlist_time::from_double(ttr) - nlt);
nt.stop();
+ pfree(inps);
double emutime = (double) (osd_ticks() - t) / (double) osd_ticks_per_second();
- printf("%f seconds emulation took %f real time ==> %5.2f%%\n", ttr, emutime, ttr/emutime*100.0);
+ pout("{1:f} seconds emulation took {2:f} real time ==> {3:5.2f}%\n", ttr, emutime, ttr/emutime*100.0);
}
/*-------------------------------------------------
@@ -290,7 +328,7 @@ static void listdevices()
{
netlist_tool_t nt;
nt.init();
- const netlist::factory_list_t::list_t &list = nt.setup().factory().list();
+ const netlist::factory_list_t &list = nt.setup().factory();
nt.setup().register_source(palloc(netlist::source_proc_t("dummy", &netlist_dummy)));
nt.setup().include("dummy");
@@ -298,19 +336,18 @@ static void listdevices()
nt.setup().start_devices();
nt.setup().resolve_inputs();
- for (int i=0; i < list.size(); i++)
+ for (unsigned i=0; i < list.size(); i++)
{
- pstring out = pstring::sprintf("%-20s %s(<id>", list[i]->classname().cstr(),
- list[i]->name().cstr() );
+ netlist::base_factory_t *f = list.value_at(i);
+ pstring out = pfmt("{1} {2}(<id>")(f->classname(),"-20")(f->name());
pstring terms("");
- netlist::base_factory_t *f = list[i];
netlist::device_t *d = f->Create();
- d->init(nt, pstring::sprintf("dummy%d", i));
+ d->init(nt, pfmt("dummy{1}")(i));
d->start_dev();
// get the list of terminals ...
- for (int j=0; j < d->m_terminals.size(); j++)
+ for (unsigned j=0; j < d->m_terminals.size(); j++)
{
pstring inp = d->m_terminals[j];
if (inp.startsWith(d->name() + "."))
@@ -318,18 +355,18 @@ static void listdevices()
terms += "," + inp;
}
- if (list[i]->param_desc().startsWith("+"))
+ if (f->param_desc().startsWith("+"))
{
- out += "," + list[i]->param_desc().substr(1);
+ out += "," + f->param_desc().substr(1);
terms = "";
}
- else if (list[i]->param_desc() == "-")
+ else if (f->param_desc() == "-")
{
/* no params at all */
}
else
{
- out += "," + list[i]->param_desc();
+ out += "," + f->param_desc();
}
out += ")";
printf("%s\n", out.cstr());
@@ -365,11 +402,11 @@ int main(int argc, char *argv[])
tool_options_t opts;
int ret;
- fprintf(stderr, "%s", "WARNING: This is Work In Progress! - It may fail anytime\n");
- fprintf(stderr, "Update dispatching using method %s\n", pmf_verbose[NL_PMF_TYPE]);
+ perr("{}", "WARNING: This is Work In Progress! - It may fail anytime\n");
+ perr("Update dispatching using method {}\n", pmf_verbose[NL_PMF_TYPE]);
if ((ret = opts.parse(argc, argv)) != argc)
{
- fprintf(stderr, "Error parsing %s\n", argv[ret]);
+ perr("Error parsing {}\n", argv[ret]);
usage(opts);
return 1;
}
@@ -387,23 +424,44 @@ int main(int argc, char *argv[])
run(opts);
else if (cmd == "convert")
{
- pstring contents = filetobuf(opts.opt_file());
- nl_convert_base_t *converter = NULL;
+ pstring contents;
+ postringstream ostrm;
+ if (opts.opt_file() == "-")
+ {
+ pstdin f;
+ ostrm.write(f);
+ }
+ else
+ {
+ pifilestream f(opts.opt_file());
+ ostrm.write(f);
+ }
+ contents = ostrm.str();
+
+ pstring result;
if (opts.opt_type().equals("spice"))
- converter = palloc(nl_convert_spice_t);
+ {
+ nl_convert_spice_t c;
+ c.convert(contents);
+ result = c.result();
+ }
else
- converter = palloc(nl_convert_eagle_t);
- converter->convert(contents);
+ {
+ nl_convert_eagle_t c;
+ c.convert(contents);
+ result = c.result();
+ }
/* present result */
- printf("%s\n", converter->result().cstr());
- pfree(converter);
+ pout_strm.write(result.cstr());
}
else
{
- fprintf(stderr, "Unknown command %s\n", cmd.cstr());
+ perr("Unknown command {}\n", cmd.cstr());
usage(opts);
return 1;
}
+
+ pstring::resetmem();
#if (!PSTANDALONE)
}
dump_unfreed_mem();
diff --git a/src/lib/netlist/prg/nlwav.c b/src/lib/netlist/prg/nlwav.c
new file mode 100644
index 00000000000..681b0e6d79e
--- /dev/null
+++ b/src/lib/netlist/prg/nlwav.c
@@ -0,0 +1,289 @@
+#include <cstdio>
+#include <cstring>
+#include "plib/poptions.h"
+#include "plib/pstring.h"
+#include "plib/plists.h"
+#include "plib/pstream.h"
+#include "nl_setup.h"
+
+class nlwav_options_t : public poptions
+{
+public:
+ nlwav_options_t() :
+ poptions(),
+#if 0
+ opt_ttr ("t", "time_to_run", 1.0, "time to run the emulation (seconds)", this),
+ opt_name("n", "name", "", "netlist in file to run; default is first one", this),
+ opt_logs("l", "logs", "", "colon separated list of terminals to log", this),
+ opt_file("f", "file", "-", "file to process (default is stdin)", this),
+ opt_type("y", "type", "spice", "spice:eagle", "type of file to be converted: spice,eagle", this),
+ opt_cmd ("c", "cmd", "run", "run|convert|listdevices", this),
+ opt_inp( "i", "input", "", "input file to process (default is none)", this),
+#endif
+ opt_inp( "i", "input", "", "input file", this),
+ opt_out( "o", "output", "", "output file", this),
+ opt_amp( "a", "amp", 10000.0, "amplification after mean correction", this),
+ opt_verb("v", "verbose", "be verbose - this produces lots of output", this),
+ opt_quiet("q", "quiet", "be quiet - no warnings", this),
+ opt_help("h", "help", "display help", this)
+ {}
+#if 0
+ poption_double opt_ttr;
+ poption_str opt_name;
+ poption_str opt_logs;
+ poption_str opt_file;
+ poption_str_limit opt_type;
+ poption_str opt_cmd;
+#endif
+ poption_str opt_inp;
+ poption_str opt_out;
+ poption_double opt_amp;
+ poption_bool opt_verb;
+ poption_bool opt_quiet;
+ poption_bool opt_help;
+};
+
+/* http://de.wikipedia.org/wiki/RIFF_WAVE */
+class wav_t
+{
+public:
+ wav_t(postream &strm, unsigned sr) : m_f(strm)
+ {
+// m_f = strm;
+ initialize(sr);
+ m_f.write(&m_fh, sizeof(m_fh));
+ m_f.write(&m_fmt, sizeof(m_fmt));
+ m_f.write(&m_data, sizeof(m_data));
+ }
+ ~wav_t()
+ {
+ close();
+ }
+
+ unsigned channels() { return m_fmt.channels; }
+ unsigned sample_rate() { return m_fmt.sample_rate; }
+
+ void write_sample(int sample)
+ {
+ m_data.len += m_fmt.block_align;
+ short ps = sample; /* 16 bit sample, FIXME: powerpc? */
+ m_f.write(&ps, sizeof(ps));
+ }
+
+ void close()
+ {
+ m_f.seek(0);
+ m_f.write(&m_fh, sizeof(m_fh));
+ m_f.write(&m_fmt, sizeof(m_fmt));
+
+ //data.len = fmt.block_align * n;
+ m_f.write(&m_data, sizeof(m_data));
+ }
+private:
+ struct riff_chunk_t
+ {
+ char group_id[4];
+ unsigned filelen;
+ char rifftype[4];
+ };
+
+ struct riff_format_t
+ {
+ char signature[4];
+ unsigned fmt_length;
+ short format_tag;
+ short channels;
+ unsigned sample_rate;
+ unsigned bytes_per_second;
+ short block_align;
+ short bits_sample;
+ };
+
+ struct riff_data_t
+ {
+ char signature[4];
+ unsigned len;
+ // data follows
+ };
+
+ void initialize(unsigned sr)
+ {
+ std::strncpy(m_fh.group_id, "RIFF", 4);
+ m_fh.filelen = 0; // Fixme
+ std::strncpy(m_fh.rifftype, "WAVE", 4);
+
+ std::strncpy(m_fmt.signature, "fmt ", 4);
+ m_fmt.fmt_length = 16;
+ m_fmt.format_tag = 0x0001; //PCM
+ m_fmt.channels = 1;
+ m_fmt.sample_rate = sr;
+ m_fmt.bits_sample = 16;
+ m_fmt.block_align = m_fmt.channels * ((m_fmt.bits_sample + 7) / 8);
+ m_fmt.bytes_per_second = m_fmt.sample_rate * m_fmt.block_align;
+
+ std::strncpy(m_data.signature, "data", 4);
+ m_data.len = m_fmt.bytes_per_second * 2 * 0;
+
+ }
+
+ riff_chunk_t m_fh;
+ riff_format_t m_fmt;
+ riff_data_t m_data;
+
+ postream &m_f;
+
+};
+
+void convert(nlwav_options_t &opts)
+{
+ pofilestream fo(opts.opt_out());
+ if (fo.bad())
+ {
+ throw netlist::fatalerror_e("Error opening output file: " + opts.opt_out());
+ }
+ wav_t wo(fo, 48000);
+
+ pifilestream fin(opts.opt_inp());
+ if (fin.bad())
+ throw netlist::fatalerror_e("Error opening input file: " + opts.opt_inp());
+
+ double dt = 1.0 / (double) wo.sample_rate();
+ double ct = dt;
+ //double mean = 2.4;
+ double amp = opts.opt_amp();
+ double mean = 0.0;
+ double means = 0.0;
+ double cursam = 0.0;
+ double outsam = 0.0;
+ double lt = 0.0;
+ double maxsam = -1e9;
+ double minsam = 1e9;
+ int n = 0;
+ //short sample = 0;
+ pstring line;
+
+ while(fin.readline(line))
+ {
+#if 1
+ float t = 0.0; float v = 0.0;
+ sscanf(line.cstr(), "%f %f", &t, &v);
+ while (t >= ct)
+ {
+ outsam += (ct - lt) * cursam;
+ outsam = outsam / dt;
+ if (t>0.0)
+ {
+ means += outsam;
+ maxsam = std::max(maxsam, outsam);
+ minsam = std::min(minsam, outsam);
+ n++;
+ //mean = means / (double) n;
+ mean += 5.0 / (double) wo.sample_rate() * (outsam - mean);
+ }
+ outsam = (outsam - mean) * amp;
+ outsam = std::max(-32000.0, outsam);
+ outsam = std::min(32000.0, outsam);
+ wo.write_sample((int) outsam);
+ outsam = 0.0;
+ lt = ct;
+ ct += dt;
+ }
+ outsam += (t-lt)*cursam;
+ lt = t;
+ cursam = v;
+#else
+ float t = 0.0; float v = 0.0;
+ fscanf(FIN, "%f %f", &t, &v);
+ while (ct <= t)
+ {
+ wo.write_sample(sample);
+ n++;
+ ct += dt;
+ }
+ means += v;
+ mean = means / (double) n;
+ v = v - mean;
+ v = v * amp;
+ if (v>32000.0)
+ v = 32000.0;
+ else if (v<-32000.0)
+ v = -32000.0;
+ sample = v;
+ //printf("%f %f\n", t, v);
+#endif
+ }
+ printf("Mean (low freq filter): %f\n", mean);
+ printf("Mean (static): %f\n", means / (double) n);
+ printf("Amp + %f\n", 32000.0 / (maxsam- mean));
+ printf("Amp - %f\n", -32000.0 / (minsam- mean));
+ wo.close();
+ fo.close();
+ fin.close();
+
+}
+
+void usage(nlwav_options_t &opts)
+{
+ fprintf(stderr,
+ "Usage:\n"
+ " nltool -help\n"
+ " nltool [options]\n"
+ "\n"
+ "Where:\n"
+ );
+ fprintf(stderr, "%s\n", opts.help().cstr());
+}
+
+
+int main(int argc, char *argv[])
+{
+#if (!PSTANDALONE)
+ track_memory(true);
+ {
+#endif
+ nlwav_options_t opts;
+ int ret;
+
+ if ((ret = opts.parse(argc, argv)) != argc)
+ {
+ fprintf(stderr, "Error parsing %s\n", argv[ret]);
+ usage(opts);
+ return 1;
+ }
+
+ if (opts.opt_help())
+ {
+ usage(opts);
+ return 1;
+ }
+
+ convert(opts);
+#if (!PSTANDALONE)
+ }
+ dump_unfreed_mem();
+#endif
+
+ return 0;
+}
+
+/*
+Der Daten-Abschnitt enth??lt die Abtastwerte:
+Offset L??nge Inhalt Beschreibung
+36 (0x24) 4 'data' Header-Signatur
+40 (0x28) 4 <length> L??nge des Datenblocks, max. <Dateigr????e>?????????44
+
+0 (0x00) char 4 'RIFF'
+4 (0x04) unsigned 4 <Dateigr????e>?????????8
+8 (0x08) char 4 'WAVE'
+
+Der fmt-Abschnitt (24 Byte) beschreibt das Format der einzelnen Abtastwerte:
+Offset L??nge Inhalt Beschreibung
+12 (0x0C) 4 'fmt ' Header-Signatur (folgendes Leerzeichen beachten)
+16 (0x10) 4 <fmt length> L??nge des restlichen fmt-Headers (16 Bytes)
+20 (0x14) 2 <format tag> Datenformat der Abtastwerte (siehe separate Tabelle weiter unten)
+22 (0x16) 2 <channels> Anzahl der Kan??le: 1 = mono, 2 = stereo; mittlerweile sind auch mehr als 2 Kan??le (z. B. f??r Raumklang) m??glich.[2]
+24 (0x18) 4 <sample rate> Samples pro Sekunde je Kanal (z. B. 44100)
+28 (0x1C) 4 <bytes/second> Abtastrate????????Frame-Gr????e
+32 (0x20) 2 <block align> Frame-Gr????e = <Anzahl der Kan??le>????????((<Bits/Sample (eines Kanals)>???+???7)???/???8) (Division ohne Rest)
+34 (0x22) 2 <bits/sample> Anzahl der Datenbits pro Samplewert je Kanal (z. B. 12)
+*/
diff --git a/src/emu/netlist/solver/mat_cr.h b/src/lib/netlist/solver/mat_cr.h
index 708833f2625..ea72884c1de 100644
--- a/src/emu/netlist/solver/mat_cr.h
+++ b/src/lib/netlist/solver/mat_cr.h
@@ -11,7 +11,7 @@
#define MAT_CR_H_
#include <algorithm>
-#include "../plib/pconfig.h"
+#include "plib/pconfig.h"
template<int _storage_N>
struct mat_cr_t
@@ -21,7 +21,8 @@ struct mat_cr_t
unsigned ja[_storage_N * _storage_N];
unsigned diag[_storage_N]; /* n */
- void mult_vec(const double * RESTRICT A, const double * RESTRICT x, double * RESTRICT res)
+ template<typename T>
+ void mult_vec(const T * RESTRICT A, const T * RESTRICT x, T * RESTRICT res)
{
/*
* res = A * x
@@ -41,7 +42,7 @@ struct mat_cr_t
}
}
- void incomplete_LU_factorization(const double * RESTRICT A, double * RESTRICT LU)
+ void incomplete_LU_factorization(const nl_double * RESTRICT A, nl_double * RESTRICT LU)
{
/*
* incomplete LU Factorization according to http://de.wikipedia.org/wiki/ILU-Zerlegung
@@ -80,7 +81,7 @@ struct mat_cr_t
}
}
- void solveLUx (const double * RESTRICT LU, double * RESTRICT r)
+ void solveLUx (const nl_double * RESTRICT LU, nl_double * RESTRICT r)
{
/*
* Solve a linear equation Ax = r
@@ -92,7 +93,7 @@ struct mat_cr_t
*
* ==> LUx = r
*
- * ==> Ux = Lâ»Â¹r = w
+ * ==> Ux = L?????r = w
*
* ==> r = Lw
*
diff --git a/src/emu/netlist/solver/nld_ms_direct.h b/src/lib/netlist/solver/nld_ms_direct.h
index f64514a1c7c..9116f92d53f 100644
--- a/src/emu/netlist/solver/nld_ms_direct.h
+++ b/src/lib/netlist/solver/nld_ms_direct.h
@@ -10,7 +10,7 @@
#include <algorithm>
-#include "../solver/nld_solver.h"
+#include "solver/nld_solver.h"
NETLIB_NAMESPACE_DEVICES_START()
@@ -45,6 +45,11 @@ protected:
ATTR_HOT void build_LE_RHS(nl_double * RESTRICT rhs);
ATTR_HOT void LE_solve();
ATTR_HOT void LE_back_subst(nl_double * RESTRICT x);
+
+ /* Full LU back substitution, not used currently, in for future use */
+
+ ATTR_HOT void LE_back_subst_full(nl_double * RESTRICT x);
+
ATTR_HOT nl_double delta(const nl_double * RESTRICT V);
ATTR_HOT void store(const nl_double * RESTRICT V);
@@ -54,8 +59,9 @@ protected:
*/
ATTR_HOT nl_double compute_next_timestep();
- ATTR_ALIGN nl_ext_double m_A[_storage_N][((_storage_N + 7) / 8) * 8];
- //ATTR_ALIGN nl_double m_A[_storage_N][((_storage_N + 7) / 8) * 8];
+ template <typename T1, typename T2>
+ inline nl_ext_double &A(const T1 r, const T2 c) { return m_A[r][c]; }
+
ATTR_ALIGN nl_double m_RHS[_storage_N];
ATTR_ALIGN nl_double m_last_RHS[_storage_N]; // right hand side - contains currents
ATTR_ALIGN nl_double m_last_V[_storage_N];
@@ -64,9 +70,9 @@ protected:
terms_t *m_rails_temp;
private:
+ ATTR_ALIGN nl_ext_double m_A[_storage_N][((_storage_N + 7) / 8) * 8];
const unsigned m_dim;
- nl_double m_lp_fact;
};
// ----------------------------------------------------------------------------------------
@@ -136,13 +142,12 @@ ATTR_COLD void matrix_solver_direct_t<m_N, _storage_N>::add_term(int k, terminal
if (ot>=0)
{
m_terms[k]->add(term, ot, true);
- SOLVER_VERBOSE_OUT(("Net %d Term %s %f %f\n", k, terms[i]->name().cstr(), terms[i]->m_gt, terms[i]->m_go));
}
/* Should this be allowed ? */
else // if (ot<0)
{
m_rails_temp[k].add(term, ot, true);
- netlist().error("found term with missing othernet %s\n", term->name().cstr());
+ log().fatal("found term with missing othernet {1}\n", term->name());
}
}
}
@@ -152,7 +157,7 @@ template <unsigned m_N, unsigned _storage_N>
ATTR_COLD void matrix_solver_direct_t<m_N, _storage_N>::vsetup(analog_net_t::list_t &nets)
{
if (m_dim < nets.size())
- netlist().error("Dimension %d less than %" SIZETFMT, m_dim, SIZET_PRINTF(nets.size()));
+ log().fatal("Dimension {1} less than {2}", m_dim, nets.size());
for (unsigned k = 0; k < N(); k++)
{
@@ -259,13 +264,40 @@ ATTR_COLD void matrix_solver_direct_t<m_N, _storage_N>::vsetup(analog_net_t::lis
psort_list(t->m_nz);
}
- if(0)
+ /* create a list of non zero elements below diagonal k
+ * This should reduce cache misses ...
+ */
+
+ bool touched[_storage_N][_storage_N] = { { false } };
+ for (unsigned k = 0; k < N(); k++)
+ {
+ m_terms[k]->m_nzbd.clear();
+ for (unsigned j = 0; j < m_terms[k]->m_nz.size(); j++)
+ touched[k][m_terms[k]->m_nz[j]] = true;
+ }
+
+ for (unsigned k = 0; k < N(); k++)
+ {
+ for (unsigned row = k + 1; row < N(); row++)
+ {
+ if (touched[row][k])
+ {
+ if (!m_terms[k]->m_nzbd.contains(row))
+ m_terms[k]->m_nzbd.add(row);
+ for (unsigned col = k; col < N(); col++)
+ if (touched[k][col])
+ touched[row][col] = true;
+ }
+ }
+ }
+
+ if (0)
for (unsigned k = 0; k < N(); k++)
{
- netlist().log("%3d: ", k);
+ pstring line = pfmt("{1}")(k, "3");
for (unsigned j = 0; j < m_terms[k]->m_nzrd.size(); j++)
- netlist().log(" %3d", m_terms[k]->m_nzrd[j]);
- netlist().log("\n");
+ line += pfmt(" {1}")(m_terms[k]->m_nzrd[j], "3");
+ log().verbose("{1}", line);
}
/*
@@ -277,7 +309,7 @@ ATTR_COLD void matrix_solver_direct_t<m_N, _storage_N>::vsetup(analog_net_t::lis
for (unsigned k = 0; k < N(); k++)
{
- pstring num = pstring::sprintf("%d", k);
+ pstring num = pfmt("{1}")(k);
save(m_terms[k]->go(),"GO" + num, m_terms[k]->count());
save(m_terms[k]->gt(),"GT" + num, m_terms[k]->count());
@@ -294,22 +326,25 @@ ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::build_LE_A()
for (unsigned k = 0; k < iN; k++)
{
for (unsigned i=0; i < iN; i++)
- m_A[k][i] = 0.0;
+ A(k,i) = 0.0;
- nl_double akk = 0.0;
const unsigned terms_count = m_terms[k]->count();
const unsigned railstart = m_terms[k]->m_railstart;
const nl_double * RESTRICT gt = m_terms[k]->gt();
- const nl_double * RESTRICT go = m_terms[k]->go();
- const int * RESTRICT net_other = m_terms[k]->net_other();
- for (unsigned i = 0; i < terms_count; i++)
- akk = akk + gt[i];
+ {
+ nl_double akk = 0.0;
+ for (unsigned i = 0; i < terms_count; i++)
+ akk += gt[i];
- m_A[k][k] += akk;
+ A(k,k) = akk;
+ }
+
+ const nl_double * RESTRICT go = m_terms[k]->go();
+ const int * RESTRICT net_other = m_terms[k]->net_other();
for (unsigned i = 0; i < railstart; i++)
- m_A[k][net_other[i]] -= go[i];
+ A(k,net_other[i]) -= go[i];
}
}
@@ -341,54 +376,41 @@ ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::build_LE_RHS(nl_double *
template <unsigned m_N, unsigned _storage_N>
ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::LE_solve()
{
-#if 0
- for (int i = 0; i < N(); i++)
- {
- for (int k = 0; k < N(); k++)
- printf("%f ", m_A[i][k]);
- printf("| %f = %f \n", x[i], m_RHS[i]);
- }
- printf("\n");
-#endif
-
const unsigned kN = N();
for (unsigned i = 0; i < kN; i++) {
- // FIXME: use a parameter to enable pivoting?
- if (USE_PIVOT_SEARCH)
+ // FIXME: use a parameter to enable pivoting? m_pivot
+ if (m_params.m_pivot)
{
/* Find the row with the largest first value */
unsigned maxrow = i;
for (unsigned j = i + 1; j < kN; j++)
{
//if (std::abs(m_A[j][i]) > std::abs(m_A[maxrow][i]))
- if (m_A[j][i] * m_A[j][i] > m_A[maxrow][i] * m_A[maxrow][i])
+ if (A(j,i) * A(j,i) > A(maxrow,i) * A(maxrow,i))
maxrow = j;
}
if (maxrow != i)
{
/* Swap the maxrow and ith row */
- for (unsigned k = i; k < kN; k++) {
- std::swap(m_A[i][k], m_A[maxrow][k]);
+ for (unsigned k = 0; k < kN; k++) {
+ std::swap(A(i,k), A(maxrow,k));
}
std::swap(m_RHS[i], m_RHS[maxrow]);
}
/* FIXME: Singular matrix? */
- const nl_double f = 1.0 / m_A[i][i];
- const nl_ext_double * RESTRICT s = &m_A[i][i+1];
+ const nl_double f = 1.0 / A(i,i);
/* Eliminate column i from row j */
for (unsigned j = i + 1; j < kN; j++)
{
- nl_ext_double * RESTRICT d = &m_A[j][i+1];
- const nl_double f1 = - m_A[j][i] * f;
+ const nl_double f1 = - A(j,i) * f;
if (f1 != NL_FCONST(0.0))
{
- const unsigned e = kN - i - 1;
- for (unsigned k = 0; k < e; k++)
- d[k] = d[k] + s[k] * f1;
+ for (unsigned k = i+1; k < kN; k++)
+ A(j,k) += A(i,k) * f1;
m_RHS[j] += m_RHS[i] * f1;
}
}
@@ -396,41 +418,23 @@ ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::LE_solve()
else
{
/* FIXME: Singular matrix? */
- const nl_double f = 1.0 / m_A[i][i];
- const nl_ext_double * RESTRICT s = &m_A[i][0];
- const unsigned *p = m_terms[i]->m_nzrd.data();
+ const nl_double f = 1.0 / A(i,i);
+ const unsigned * RESTRICT const p = m_terms[i]->m_nzrd.data();
const unsigned e = m_terms[i]->m_nzrd.size();
/* Eliminate column i from row j */
- for (unsigned j = i + 1; j < kN; j++)
+ const unsigned * RESTRICT const pb = m_terms[i]->m_nzbd.data();
+ const unsigned eb = m_terms[i]->m_nzbd.size();
+ for (unsigned jb = 0; jb < eb; jb++)
{
- nl_ext_double * RESTRICT d = &m_A[j][0];
- const nl_double f1 = - d[i] * f;
- if (f1 != NL_FCONST(0.0))
+ const unsigned j = pb[jb];
+ const nl_double f1 = - A(j,i) * f;
+ for (unsigned k = 0; k < e; k++)
{
- #if 0
- /* The code below is 30% faster than the original
- * implementation which is given here for reference.
- *
- * for (unsigned k = i + 1; k < kN; k++)
- * m_A[j][k] = m_A[j][k] + m_A[i][k] * f1;
- */
- double * RESTRICT d = &m_A[j][i+1];
- const double * RESTRICT s = &m_A[i][i+1];
- const int e = kN - i - 1;
-
- for (int k = 0; k < e; k++)
- d[k] = d[k] + s[k] * f1;
- #else
- for (unsigned k = 0; k < e; k++)
- {
- const unsigned pk = p[k];
- d[pk] += s[pk] * f1;
- }
- #endif
- m_RHS[j] += m_RHS[i] * f1;
+ A(j,p[k]) += A(i,p[k]) * f1;
}
+ m_RHS[j] += m_RHS[i] * f1;
}
}
}
@@ -443,44 +447,66 @@ ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::LE_back_subst(
const unsigned kN = N();
/* back substitution */
- for (int j = kN - 1; j >= 0; j--)
+ if (m_params.m_pivot)
{
- nl_double tmp = 0;
-
-#if 1
-#if (USE_PIVOT_SEARCH)
- const nl_ext_double * RESTRICT A = &m_A[j][j+1];
- const nl_double * RESTRICT xp = &x[j+1];
- const unsigned e = kN - j - 1;
- for (unsigned k = 0; k < e; k++)
- tmp += A[k] * xp[k];
-#else
- const nl_ext_double * RESTRICT A = &m_A[j][0];
- const unsigned *p = m_terms[j]->m_nzrd.data();
- const unsigned e = m_terms[j]->m_nzrd.size();
-
- for (unsigned k = 0; k < e; k++)
+ for (int j = kN - 1; j >= 0; j--)
{
- const unsigned pk = p[k];
- tmp += A[pk] * x[pk];
+ nl_double tmp = 0;
+ for (unsigned k = j+1; k < kN; k++)
+ tmp += A(j,k) * x[k];
+ x[j] = (m_RHS[j] - tmp) / A(j,j);
}
-#endif
-#else
- for (unsigned k = j + 1; k < kN; k++)
- tmp += m_A[j][k] * x[k];
-#endif
- x[j] = (m_RHS[j] - tmp) / m_A[j][j];
}
-#if 0
- printf("Solution:\n");
- for (unsigned i = 0; i < N(); i++)
+ else
{
- for (unsigned k = 0; k < N(); k++)
- printf("%f ", m_A[i][k]);
- printf("| %f = %f \n", x[i], m_RHS[i]);
+ for (int j = kN - 1; j >= 0; j--)
+ {
+ nl_double tmp = 0;
+
+ const unsigned *p = m_terms[j]->m_nzrd.data();
+ const unsigned e = m_terms[j]->m_nzrd.size();
+
+ for (unsigned k = 0; k < e; k++)
+ {
+ const unsigned pk = p[k];
+ tmp += A(j,pk) * x[pk];
+ }
+ x[j] = (m_RHS[j] - tmp) / A(j,j);
+ }
+ }
+}
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::LE_back_subst_full(
+ nl_double * RESTRICT x)
+{
+ const unsigned kN = N();
+
+ /* back substitution */
+
+ // int ip;
+ // ii=-1
+
+ //for (int i=0; i < kN; i++)
+ // x[i] = m_RHS[i];
+
+ for (int i=0; i < kN; i++)
+ {
+ //ip=indx[i]; USE_PIVOT_SEARCH
+ //sum=b[ip];
+ //b[ip]=b[i];
+ double sum=m_RHS[i];//x[i];
+ for (int j=0; j < i; j++)
+ sum -= A(i,j) * x[j];
+ x[i]=sum;
+ }
+ for (int i=kN-1; i >= 0; i--)
+ {
+ double sum=x[i];
+ for (int j = i+1; j < kN; j++)
+ sum -= A(i,j)*x[j];
+ x[i] = sum / A(i,i);
}
- printf("\n");
-#endif
}
@@ -527,33 +553,11 @@ ATTR_HOT int matrix_solver_direct_t<m_N, _storage_N>::solve_non_dynamic(ATTR_UNU
if (newton_raphson)
{
-#if 0
- /* limiting just doesn't work. */
- const unsigned iN = this->N();
- double err = 0;
- for (unsigned k = 0; k < iN; k++)
- {
- const double ov = this->m_nets[k]->m_cur_Analog;
- double d = new_V[k] - ov;
- err = std::max(nl_math::abs(d), err);
- }
- double a = 1.05;
- for (unsigned k = 0; k < iN; k++)
- {
- const double ov = this->m_nets[k]->m_cur_Analog;
- double d = new_V[k] - ov;
- const double nv = ov + a * d;
- this->m_nets[k]->m_cur_Analog = nv;
- }
-
- return (err > this->m_params.m_accuracy) ? 2 : 1;
-#else
nl_double err = delta(new_V);
store(new_V);
return (err > this->m_params.m_accuracy) ? 2 : 1;
-#endif
}
else
{
@@ -580,7 +584,6 @@ template <unsigned m_N, unsigned _storage_N>
matrix_solver_direct_t<m_N, _storage_N>::matrix_solver_direct_t(const solver_parameters_t *params, const int size)
: matrix_solver_t(GAUSSIAN_ELIMINATION, params)
, m_dim(size)
-, m_lp_fact(0)
{
m_terms = palloc_array(terms_t *, N());
m_rails_temp = palloc_array(terms_t, N());
@@ -597,7 +600,6 @@ template <unsigned m_N, unsigned _storage_N>
matrix_solver_direct_t<m_N, _storage_N>::matrix_solver_direct_t(const eSolverType type, const solver_parameters_t *params, const int size)
: matrix_solver_t(type, params)
, m_dim(size)
-, m_lp_fact(0)
{
m_terms = palloc_array(terms_t *, N());
m_rails_temp = palloc_array(terms_t, N());
diff --git a/src/emu/netlist/solver/nld_ms_direct1.h b/src/lib/netlist/solver/nld_ms_direct1.h
index d2009846053..9f895a6c3f3 100644
--- a/src/emu/netlist/solver/nld_ms_direct1.h
+++ b/src/lib/netlist/solver/nld_ms_direct1.h
@@ -8,8 +8,8 @@
#ifndef NLD_MS_DIRECT1_H_
#define NLD_MS_DIRECT1_H_
-#include "../solver/nld_ms_direct.h"
-#include "../solver/nld_solver.h"
+#include "solver/nld_ms_direct.h"
+#include "solver/nld_solver.h"
NETLIB_NAMESPACE_DEVICES_START()
@@ -41,9 +41,9 @@ ATTR_HOT inline int matrix_solver_direct1_t::vsolve_non_dynamic(ATTR_UNUSED cons
analog_net_t *net = m_nets[0];
this->build_LE_A();
this->build_LE_RHS(m_RHS);
- //NL_VERBOSE_OUT(("%f %f\n", new_val, m_RHS[0] / m_A[0][0]);
+ //NL_VERBOSE_OUT(("{1} {2}\n", new_val, m_RHS[0] / m_A[0][0]);
- nl_double new_val = m_RHS[0] / m_A[0][0];
+ nl_double new_val = m_RHS[0] / A(0,0);
nl_double e = (new_val - net->m_cur_Analog);
nl_double cerr = nl_math::abs(e);
diff --git a/src/emu/netlist/solver/nld_ms_direct2.h b/src/lib/netlist/solver/nld_ms_direct2.h
index 79f9e55d908..f78c36770e6 100644
--- a/src/emu/netlist/solver/nld_ms_direct2.h
+++ b/src/lib/netlist/solver/nld_ms_direct2.h
@@ -8,8 +8,8 @@
#ifndef NLD_MS_DIRECT2_H_
#define NLD_MS_DIRECT2_H_
-#include "../solver/nld_ms_direct.h"
-#include "../solver/nld_solver.h"
+#include "solver/nld_ms_direct.h"
+#include "solver/nld_solver.h"
NETLIB_NAMESPACE_DEVICES_START()
@@ -41,10 +41,10 @@ ATTR_HOT inline int matrix_solver_direct2_t::vsolve_non_dynamic(ATTR_UNUSED cons
build_LE_A();
build_LE_RHS(m_RHS);
- const nl_double a = m_A[0][0];
- const nl_double b = m_A[0][1];
- const nl_double c = m_A[1][0];
- const nl_double d = m_A[1][1];
+ const nl_double a = A(0,0);
+ const nl_double b = A(0,1);
+ const nl_double c = A(1,0);
+ const nl_double d = A(1,1);
nl_double new_val[2];
new_val[1] = (a * m_RHS[1] - c * m_RHS[0]) / (a * d - b * c);
diff --git a/src/lib/netlist/solver/nld_ms_direct_lu.h b/src/lib/netlist/solver/nld_ms_direct_lu.h
new file mode 100644
index 00000000000..d988942058e
--- /dev/null
+++ b/src/lib/netlist/solver/nld_ms_direct_lu.h
@@ -0,0 +1,651 @@
+// license:GPL-2.0+
+// copyright-holders:Couriersud
+/*
+ * nld_ms_direct.h
+ *
+ */
+
+#ifndef NLD_MS_DIRECT_H_
+#define NLD_MS_DIRECT_H_
+
+#include <algorithm>
+
+#include "solver/nld_solver.h"
+
+//#define A(_r, _c) m_A[_r][_c]
+
+NETLIB_NAMESPACE_DEVICES_START()
+
+//#define nl_ext_double __float128 // slow, very slow
+//#define nl_ext_double long double // slightly slower
+#define nl_ext_double double
+
+template <unsigned m_N, unsigned _storage_N>
+class matrix_solver_direct_t: public matrix_solver_t
+{
+public:
+
+ matrix_solver_direct_t(const solver_parameters_t *params, const int size);
+ matrix_solver_direct_t(const eSolverType type, const solver_parameters_t *params, const int size);
+
+ virtual ~matrix_solver_direct_t();
+
+ virtual void vsetup(analog_net_t::list_t &nets);
+ virtual void reset() { matrix_solver_t::reset(); }
+
+ ATTR_HOT inline unsigned N() const { if (m_N == 0) return m_dim; else return m_N; }
+
+ ATTR_HOT inline int vsolve_non_dynamic(const bool newton_raphson);
+
+protected:
+ virtual void add_term(int net_idx, terminal_t *term);
+
+ ATTR_HOT virtual nl_double vsolve();
+
+ ATTR_HOT int solve_non_dynamic(const bool newton_raphson);
+ ATTR_HOT void build_LE_A();
+ ATTR_HOT void build_LE_RHS(nl_double * RESTRICT rhs);
+
+ template<unsigned k>
+ void LEk()
+ {
+ //const unsigned kN = N();
+
+ const double akki = 1.0 / A(k,k);
+ const unsigned * const p = m_terms[k]->m_nzrd.data();
+ const unsigned e = m_terms[k]->m_nzrd.size();
+
+ for (int i = k+1; i < _storage_N;i++)
+ {
+ const double alpha = A(i,k) * akki;
+ A(i,k) = alpha;
+ if (alpha != 0.0)
+ for (int j = 0; j < e; j++)
+ {
+ const int pk = p[j];
+ A(i,pk) -= A(k,pk) * alpha;
+ }
+ }
+ }
+
+ ATTR_HOT void LE_solve()
+ {
+ const unsigned kN = N();
+ unsigned sk = 1;
+
+ if (1 && kN == _storage_N)
+ {
+ if (kN> 0 ) LEk<0>();
+ if (kN> 1 ) LEk<1>();
+ if (kN> 2 ) LEk<2>();
+ if (kN> 3 ) LEk<3>();
+ if (kN> 4 ) LEk<4>();
+ if (kN> 5 ) LEk<5>();
+ if (kN> 6 ) LEk<6>();
+ if (kN> 7 ) LEk<7>();
+ if (kN> 8 ) LEk<8>();
+ if (kN> 9 ) LEk<9>();
+ if (kN>10 ) LEk<10>();
+ if (kN>11 ) LEk<11>();
+ if (kN>12 ) LEk<12>();
+ if (kN>13 ) LEk<13>();
+ if (kN>14 ) LEk<14>();
+ if (kN>15 ) LEk<15>();
+ if (kN>16 ) LEk<16>();
+ if (kN>17 ) LEk<17>();
+ if (kN>18 ) LEk<18>();
+ if (kN>19 ) LEk<19>();
+ if (kN>20 ) LEk<20>();
+ if (kN>21 ) LEk<21>();
+ if (kN>22 ) LEk<22>();
+ if (kN>23 ) LEk<23>();
+ if (kN>24 ) LEk<24>();
+ if (kN>25 ) LEk<25>();
+ if (kN>26 ) LEk<26>();
+ if (kN>27 ) LEk<27>();
+ if (kN>28 ) LEk<28>();
+ if (kN>29 ) LEk<29>();
+ sk = 30;
+ }
+
+ for (int k = sk; k < kN - 1; k++)
+ {
+ const double akki = 1.0 / A(k,k);
+ const unsigned * const p = m_terms[k]->m_nzrd.data();
+ const unsigned e = m_terms[k]->m_nzrd.size();
+
+ for (int i = k+1; i < kN;i++)
+ {
+ const double alpha = A(i,k) * akki;
+ A(i,k) = alpha;
+ if (alpha != 0.0)
+ for (int j = 0; j < e; j++)
+ {
+ const int pk = p[j];
+ A(i,pk) -= A(k,pk) * alpha;
+ }
+ }
+ }
+ }
+ ATTR_HOT void LE_back_subst(nl_double * RESTRICT x);
+ ATTR_HOT nl_double delta(const nl_double * RESTRICT V);
+ ATTR_HOT void store(const nl_double * RESTRICT V);
+
+ /* bring the whole system to the current time
+ * Don't schedule a new calculation time. The recalculation has to be
+ * triggered by the caller after the netlist element was changed.
+ */
+ ATTR_HOT nl_double compute_next_timestep();
+
+ template <typename T1, typename T2>
+ inline nl_ext_double &A(const T1 r, const T2 c) { return m_A[r][c]; }
+
+ //ATTR_ALIGN nl_double m_A[_storage_N][((_storage_N + 7) / 8) * 8];
+ ATTR_ALIGN nl_double m_RHS[_storage_N];
+ ATTR_ALIGN nl_double m_last_RHS[_storage_N]; // right hand side - contains currents
+ ATTR_ALIGN nl_double m_last_V[_storage_N];
+
+ terms_t **m_terms;
+ terms_t *m_rails_temp;
+
+private:
+ ATTR_ALIGN nl_ext_double m_A[_storage_N][((_storage_N + 7) / 8) * 8];
+
+ const unsigned m_dim;
+ nl_double m_lp_fact;
+};
+
+// ----------------------------------------------------------------------------------------
+// matrix_solver_direct
+// ----------------------------------------------------------------------------------------
+
+template <unsigned m_N, unsigned _storage_N>
+matrix_solver_direct_t<m_N, _storage_N>::~matrix_solver_direct_t()
+{
+ for (unsigned k = 0; k < N(); k++)
+ {
+ pfree(m_terms[k]);
+ }
+ pfree_array(m_terms);
+ pfree_array(m_rails_temp);
+}
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT nl_double matrix_solver_direct_t<m_N, _storage_N>::compute_next_timestep()
+{
+ nl_double new_solver_timestep = m_params.m_max_timestep;
+
+ if (m_params.m_dynamic)
+ {
+ /*
+ * FIXME: We should extend the logic to use either all nets or
+ * only output nets.
+ */
+ for (unsigned k = 0, iN=N(); k < iN; k++)
+ {
+ analog_net_t *n = m_nets[k];
+
+ const nl_double DD_n = (n->m_cur_Analog - m_last_V[k]);
+ const nl_double hn = current_timestep();
+
+ nl_double DD2 = (DD_n / hn - n->m_DD_n_m_1 / n->m_h_n_m_1) / (hn + n->m_h_n_m_1);
+ nl_double new_net_timestep;
+
+ n->m_h_n_m_1 = hn;
+ n->m_DD_n_m_1 = DD_n;
+ if (nl_math::abs(DD2) > NL_FCONST(1e-30)) // avoid div-by-zero
+ new_net_timestep = nl_math::sqrt(m_params.m_lte / nl_math::abs(NL_FCONST(0.5)*DD2));
+ else
+ new_net_timestep = m_params.m_max_timestep;
+
+ if (new_net_timestep < new_solver_timestep)
+ new_solver_timestep = new_net_timestep;
+ }
+ if (new_solver_timestep < m_params.m_min_timestep)
+ new_solver_timestep = m_params.m_min_timestep;
+ }
+ //if (new_solver_timestep > 10.0 * hn)
+ // new_solver_timestep = 10.0 * hn;
+ return new_solver_timestep;
+}
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_COLD void matrix_solver_direct_t<m_N, _storage_N>::add_term(int k, terminal_t *term)
+{
+ if (term->m_otherterm->net().isRailNet())
+ {
+ m_rails_temp[k].add(term, -1, false);
+ }
+ else
+ {
+ int ot = get_net_idx(&term->m_otherterm->net());
+ if (ot>=0)
+ {
+ m_terms[k]->add(term, ot, true);
+ }
+ /* Should this be allowed ? */
+ else // if (ot<0)
+ {
+ m_rails_temp[k].add(term, ot, true);
+ netlist().error("found term with missing othernet {1}\n", term->name());
+ }
+ }
+}
+
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_COLD void matrix_solver_direct_t<m_N, _storage_N>::vsetup(analog_net_t::list_t &nets)
+{
+ if (m_dim < nets.size())
+ netlist().error("Dimension {1} less than {2}", m_dim,nets.size());
+
+ for (unsigned k = 0; k < N(); k++)
+ {
+ m_terms[k]->clear();
+ m_rails_temp[k].clear();
+ }
+
+ matrix_solver_t::setup(nets);
+
+ for (unsigned k = 0; k < N(); k++)
+ {
+ m_terms[k]->m_railstart = m_terms[k]->count();
+ for (unsigned i = 0; i < m_rails_temp[k].count(); i++)
+ this->m_terms[k]->add(m_rails_temp[k].terms()[i], m_rails_temp[k].net_other()[i], false);
+
+ m_rails_temp[k].clear(); // no longer needed
+ m_terms[k]->set_pointers();
+ }
+
+#if 1
+
+ /* Sort in descending order by number of connected matrix voltages.
+ * The idea is, that for Gauss-Seidel algo the first voltage computed
+ * depends on the greatest number of previous voltages thus taking into
+ * account the maximum amout of information.
+ *
+ * This actually improves performance on popeye slightly. Average
+ * GS computations reduce from 2.509 to 2.370
+ *
+ * Smallest to largest : 2.613
+ * Unsorted : 2.509
+ * Largest to smallest : 2.370
+ *
+ * Sorting as a general matrix pre-conditioning is mentioned in
+ * literature but I have found no articles about Gauss Seidel.
+ *
+ * For Gaussian Elimination however increasing order is better suited.
+ * FIXME: Even better would be to sort on elements right of the matrix diagonal.
+ *
+ */
+
+ int sort_order = (type() == GAUSS_SEIDEL ? 1 : -1);
+
+ for (unsigned k = 0; k < N() / 2; k++)
+ for (unsigned i = 0; i < N() - 1; i++)
+ {
+ if ((m_terms[i]->m_railstart - m_terms[i+1]->m_railstart) * sort_order < 0)
+ {
+ std::swap(m_terms[i],m_terms[i+1]);
+ m_nets.swap(i, i+1);
+ }
+ }
+
+ for (unsigned k = 0; k < N(); k++)
+ {
+ int *other = m_terms[k]->net_other();
+ for (unsigned i = 0; i < m_terms[k]->count(); i++)
+ if (other[i] != -1)
+ other[i] = get_net_idx(&m_terms[k]->terms()[i]->m_otherterm->net());
+ }
+
+#endif
+
+ /* create a list of non zero elements right of the diagonal
+ * These list anticipate the population of array elements by
+ * Gaussian elimination.
+ */
+ for (unsigned k = 0; k < N(); k++)
+ {
+ terms_t * t = m_terms[k];
+ /* pretty brutal */
+ int *other = t->net_other();
+
+ t->m_nz.clear();
+
+ if (k==0)
+ t->m_nzrd.clear();
+ else
+ {
+ t->m_nzrd = m_terms[k-1]->m_nzrd;
+ unsigned j=0;
+ while(j < t->m_nzrd.size())
+ {
+ if (t->m_nzrd[j] < k + 1)
+ t->m_nzrd.remove_at(j);
+ else
+ j++;
+ }
+ }
+
+ for (unsigned j = 0; j < N(); j++)
+ {
+ for (unsigned i = 0; i < t->m_railstart; i++)
+ {
+ if (!t->m_nzrd.contains(other[i]) && other[i] >= (int) (k + 1))
+ t->m_nzrd.add(other[i]);
+ if (!t->m_nz.contains(other[i]))
+ t->m_nz.add(other[i]);
+ }
+ }
+ psort_list(t->m_nzrd);
+
+ t->m_nz.add(k); // add diagonal
+ psort_list(t->m_nz);
+ }
+
+ if(0)
+ for (unsigned k = 0; k < N(); k++)
+ {
+ netlist().log("{1:3}: ", k);
+ for (unsigned j = 0; j < m_terms[k]->m_nzrd.size(); j++)
+ netlist().log(" {1:3}", m_terms[k]->m_nzrd[j]);
+ netlist().log("\n");
+ }
+
+ /*
+ * save states
+ */
+ save(NLNAME(m_RHS));
+ save(NLNAME(m_last_RHS));
+ save(NLNAME(m_last_V));
+
+ for (unsigned k = 0; k < N(); k++)
+ {
+ pstring num = pfmt("{1}")(k);
+
+ save(m_terms[k]->go(),"GO" + num, m_terms[k]->count());
+ save(m_terms[k]->gt(),"GT" + num, m_terms[k]->count());
+ save(m_terms[k]->Idr(),"IDR" + num , m_terms[k]->count());
+ }
+
+}
+
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::build_LE_A()
+{
+ const unsigned iN = N();
+ for (unsigned k = 0; k < iN; k++)
+ {
+ for (unsigned i=0; i < iN; i++)
+ A(k,i) = 0.0;
+
+ nl_double akk = 0.0;
+ const unsigned terms_count = m_terms[k]->count();
+ const unsigned railstart = m_terms[k]->m_railstart;
+ const nl_double * RESTRICT gt = m_terms[k]->gt();
+ const nl_double * RESTRICT go = m_terms[k]->go();
+ const int * RESTRICT net_other = m_terms[k]->net_other();
+
+ for (unsigned i = 0; i < terms_count; i++)
+ akk = akk + gt[i];
+
+ A(k,k) += akk;
+
+ for (unsigned i = 0; i < railstart; i++)
+ A(k, net_other[i]) -= go[i];
+ }
+}
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::build_LE_RHS(nl_double * RESTRICT rhs)
+{
+ const unsigned iN = N();
+ for (unsigned k = 0; k < iN; k++)
+ {
+ nl_double rhsk_a = 0.0;
+ nl_double rhsk_b = 0.0;
+
+ const int terms_count = m_terms[k]->count();
+ const nl_double * RESTRICT go = m_terms[k]->go();
+ const nl_double * RESTRICT Idr = m_terms[k]->Idr();
+ const nl_double * const * RESTRICT other_cur_analog = m_terms[k]->other_curanalog();
+
+ for (int i = 0; i < terms_count; i++)
+ rhsk_a = rhsk_a + Idr[i];
+
+ for (int i = m_terms[k]->m_railstart; i < terms_count; i++)
+ //rhsk = rhsk + go[i] * terms[i]->m_otherterm->net().as_analog().Q_Analog();
+ rhsk_b = rhsk_b + go[i] * *other_cur_analog[i];
+
+ rhs[k] = rhsk_a + rhsk_b;
+ }
+}
+
+#if 1
+#else
+// Crout algo
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::LE_solve()
+{
+ const unsigned kN = N();
+
+ ATTR_UNUSED int imax;
+ ATTR_UNUSED double big,temp;
+
+#if 0
+ double vv[_storage_N];
+
+ for (i=0;i<kN;i++)
+ {
+ big=0.0;
+ for (j=0;j<kN;j++)
+ if ((temp=fabs(m_A[i][j])) > big)
+ big=temp;
+ //if (big == 0.0) nrerror("Singular matrix in routine LUDCMP");
+ vv[i]=1.0/big;
+ }
+#endif
+ for (int j = 0; j < kN; j++)
+ {
+#if 1
+ for (int i=0; i < kN;i++)
+ {
+ double sum = 0.0;
+ const int e = (i<j ? i : j);
+ for (int k=0; k < e; k++)
+ sum += A(i,k) * A(k,j);
+ A(i,j) -= sum;
+ }
+#else
+ for (int i=0; i < j;i++)
+ {
+ double * RESTRICT p = m_A[i];
+ double sum = 0.0;
+ for (int k=0; k < i; k++)
+ sum += p[k] * m_A[k][j];
+ p[j] -= sum;
+ }
+ big=0.0;
+ for (int i = j; i < kN; i++)
+ {
+ double * RESTRICT p = m_A[i];
+ double sum = 0.0;
+ for (int k = 0; k < j; k++)
+ sum += p[k] * m_A[k][j];
+ p[j] -= sum;
+#if 0
+ if ( (dum=vv[i]*fabs(sum)) >= big) {
+ big=dum;
+ imax=i;
+ }
+#endif
+ }
+#endif
+#if 0
+ // USE_PIVOT_SEARCH
+ // omit pivoting for now
+ if (j != imax)
+ {
+ for (k=0;k<kN;k++)
+ {
+ dum=m_A[imax][k];
+ m_A[imax][k]=m_A[j][k];
+ m_A[j][k]=dum;
+ }
+ //*d = -(*d);
+ vv[imax]=vv[j];
+ }
+ indx[j]=imax;
+#endif
+ //if (m_A[j][j] == 0.0)
+ // m_A[j][j] = 1e-20;
+ double dum = 1.0 / A(j,j);
+ for (int i = j+1; i < kN; i++)
+ A(i,j) *= dum;
+ }
+}
+#endif
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::LE_back_subst(
+ nl_double * RESTRICT x)
+{
+ const unsigned kN = N();
+
+ /* back substitution */
+
+ // int ip;
+ // ii=-1
+
+ //for (int i=0; i < kN; i++)
+ // x[i] = m_RHS[i];
+
+ for (int i=0; i < kN; i++)
+ {
+ //ip=indx[i]; USE_PIVOT_SEARCH
+ //sum=b[ip];
+ //b[ip]=b[i];
+ double sum=m_RHS[i];//x[i];
+ for (int j=0; j < i; j++)
+ sum -= A(i,j) * x[j];
+ x[i]=sum;
+ }
+ for (int i=kN-1; i >= 0; i--)
+ {
+ double sum=x[i];
+ for (int j = i+1; j < kN; j++)
+ sum -= A(i,j)*x[j];
+ x[i] = sum / A(i,i);
+ }
+
+}
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT nl_double matrix_solver_direct_t<m_N, _storage_N>::delta(
+ const nl_double * RESTRICT V)
+{
+ /* FIXME: Ideally we should also include currents (RHS) here. This would
+ * need a revaluation of the right hand side after voltages have been updated
+ * and thus belong into a different calculation. This applies to all solvers.
+ */
+
+ const unsigned iN = this->N();
+ nl_double cerr = 0;
+ for (unsigned i = 0; i < iN; i++)
+ cerr = std::max(cerr, nl_math::abs(V[i] - this->m_nets[i]->m_cur_Analog));
+ return cerr;
+}
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT void matrix_solver_direct_t<m_N, _storage_N>::store(
+ const nl_double * RESTRICT V)
+{
+ for (unsigned i = 0, iN=N(); i < iN; i++)
+ {
+ this->m_nets[i]->m_cur_Analog = V[i];
+ }
+}
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT nl_double matrix_solver_direct_t<m_N, _storage_N>::vsolve()
+{
+ this->solve_base(this);
+ return this->compute_next_timestep();
+}
+
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT int matrix_solver_direct_t<m_N, _storage_N>::solve_non_dynamic(ATTR_UNUSED const bool newton_raphson)
+{
+ nl_double new_V[_storage_N]; // = { 0.0 };
+
+ this->LE_back_subst(new_V);
+
+ if (newton_raphson)
+ {
+ nl_double err = delta(new_V);
+
+ store(new_V);
+
+ return (err > this->m_params.m_accuracy) ? 2 : 1;
+ }
+ else
+ {
+ store(new_V);
+ return 1;
+ }
+}
+
+template <unsigned m_N, unsigned _storage_N>
+ATTR_HOT inline int matrix_solver_direct_t<m_N, _storage_N>::vsolve_non_dynamic(const bool newton_raphson)
+{
+ this->build_LE_A();
+ this->build_LE_RHS(m_last_RHS);
+
+ for (unsigned i=0, iN=N(); i < iN; i++)
+ m_RHS[i] = m_last_RHS[i];
+
+ this->LE_solve();
+
+ return this->solve_non_dynamic(newton_raphson);
+}
+
+template <unsigned m_N, unsigned _storage_N>
+matrix_solver_direct_t<m_N, _storage_N>::matrix_solver_direct_t(const solver_parameters_t *params, const int size)
+: matrix_solver_t(GAUSSIAN_ELIMINATION, params)
+, m_dim(size)
+, m_lp_fact(0)
+{
+ m_terms = palloc_array(terms_t *, N());
+ m_rails_temp = palloc_array(terms_t, N());
+
+ for (unsigned k = 0; k < N(); k++)
+ {
+ m_terms[k] = palloc(terms_t);
+ m_last_RHS[k] = 0.0;
+ m_last_V[k] = 0.0;
+ }
+}
+
+template <unsigned m_N, unsigned _storage_N>
+matrix_solver_direct_t<m_N, _storage_N>::matrix_solver_direct_t(const eSolverType type, const solver_parameters_t *params, const int size)
+: matrix_solver_t(type, params)
+, m_dim(size)
+, m_lp_fact(0)
+{
+ m_terms = palloc_array(terms_t *, N());
+ m_rails_temp = palloc_array(terms_t, N());
+
+ for (unsigned k = 0; k < N(); k++)
+ {
+ m_terms[k] = palloc(terms_t);
+ m_last_RHS[k] = 0.0;
+ m_last_V[k] = 0.0;
+ }
+}
+
+NETLIB_NAMESPACE_DEVICES_END()
+
+#endif /* NLD_MS_DIRECT_H_ */
diff --git a/src/emu/netlist/solver/nld_ms_gmres.h b/src/lib/netlist/solver/nld_ms_gmres.h
index 102549b9194..5983cb1a968 100644
--- a/src/emu/netlist/solver/nld_ms_gmres.h
+++ b/src/lib/netlist/solver/nld_ms_gmres.h
@@ -14,10 +14,10 @@
#include <algorithm>
-#include "../solver/mat_cr.h"
-#include "../solver/nld_ms_direct.h"
-#include "../solver/nld_solver.h"
-#include "../solver/vector_base.h"
+#include "solver/mat_cr.h"
+#include "solver/nld_ms_direct.h"
+#include "solver/nld_solver.h"
+#include "solver/vector_base.h"
NETLIB_NAMESPACE_DEVICES_START()
@@ -35,10 +35,10 @@ public:
unsigned mr=this->N(); /* FIXME: maximum iterations locked in here */
for (unsigned i = 0; i < mr + 1; i++)
- m_ht[i] = new double[mr];
+ m_ht[i] = new nl_double[mr];
for (unsigned i = 0; i < this->N(); i++)
- m_v[i] = new double[_storage_N];
+ m_v[i] = new nl_double[_storage_N];
}
@@ -60,7 +60,7 @@ protected:
private:
- int solve_ilu_gmres(double * RESTRICT x, double * RESTRICT rhs, const unsigned restart_max, const unsigned mr, double accuracy);
+ int solve_ilu_gmres(nl_double * RESTRICT x, nl_double * RESTRICT rhs, const unsigned restart_max, const unsigned mr, nl_double accuracy);
plist_t<int> m_term_cr[_storage_N];
@@ -69,17 +69,17 @@ private:
mat_cr_t<_storage_N> mat;
- double m_A[_storage_N * _storage_N];
- double m_LU[_storage_N * _storage_N];
+ nl_double m_A[_storage_N * _storage_N];
+ nl_double m_LU[_storage_N * _storage_N];
- double m_c[_storage_N + 1]; /* mr + 1 */
- double m_g[_storage_N + 1]; /* mr + 1 */
- double * RESTRICT m_ht[_storage_N + 1]; /* (mr + 1), mr */
- double m_s[_storage_N]; /* mr + 1 */
- double * RESTRICT m_v[_storage_N + 1]; /*(mr + 1), n */
+ nl_double m_c[_storage_N + 1]; /* mr + 1 */
+ nl_double m_g[_storage_N + 1]; /* mr + 1 */
+ nl_double * RESTRICT m_ht[_storage_N + 1]; /* (mr + 1), mr */
+ nl_double m_s[_storage_N]; /* mr + 1 */
+ nl_double * RESTRICT m_v[_storage_N + 1]; /*(mr + 1), n */
//double m_y[_storage_N]; /* mr + 1 */
- double m_accuracy_mult; // FXIME: Save state
+ nl_double m_accuracy_mult; // FXIME: Save state
};
// ----------------------------------------------------------------------------------------
@@ -190,7 +190,9 @@ ATTR_HOT inline int matrix_solver_GMRES_t<m_N, _storage_N>::vsolve_non_dynamic(c
const nl_double accuracy = this->m_params.m_accuracy;
#if 1
- int mr = std::min((int) iN-1,(int) sqrt(iN));
+ int mr = _storage_N;
+ if (_storage_N > 3 )
+ mr = (int) sqrt(iN);
mr = std::min(mr, this->m_params.m_gs_loops);
int iter = 4;
int gsl = solve_ilu_gmres(new_V, RHS, iter, mr, accuracy);
@@ -214,11 +216,10 @@ ATTR_HOT inline int matrix_solver_GMRES_t<m_N, _storage_N>::vsolve_non_dynamic(c
if (newton_raphson)
{
- double err = 0;
+ nl_double err = 0;
for (unsigned k = 0; k < iN; k++)
err = std::max(nl_math::abs(l_V[k] - new_V[k]), err);
- //printf("here %s\n", this->name().cstr());
for (unsigned k = 0; k < iN; k++)
this->m_nets[k]->m_cur_Analog += 1.0 * (new_V[k] - this->m_nets[k]->m_cur_Analog);
if (err > accuracy)
@@ -234,7 +235,7 @@ ATTR_HOT inline int matrix_solver_GMRES_t<m_N, _storage_N>::vsolve_non_dynamic(c
}
}
-static inline void givens_mult( const double c, const double s, double * RESTRICT g0, double * RESTRICT g1 )
+static inline void givens_mult( const nl_double c, const nl_double s, nl_double * RESTRICT g0, nl_double * RESTRICT g1 )
{
const double tg0 = c * *g0 - s * *g1;
const double tg1 = s * *g0 + c * *g1;
@@ -244,7 +245,7 @@ static inline void givens_mult( const double c, const double s, double * RESTRIC
}
template <unsigned m_N, unsigned _storage_N>
-int matrix_solver_GMRES_t<m_N, _storage_N>::solve_ilu_gmres (double * RESTRICT x, double * RESTRICT rhs, const unsigned restart_max, const unsigned mr, double accuracy)
+int matrix_solver_GMRES_t<m_N, _storage_N>::solve_ilu_gmres (nl_double * RESTRICT x, nl_double * RESTRICT rhs, const unsigned restart_max, const unsigned mr, nl_double accuracy)
{
/*-------------------------------------------------------------------------
* The code below was inspired by code published by John Burkardt under
@@ -289,15 +290,13 @@ int matrix_solver_GMRES_t<m_N, _storage_N>::solve_ilu_gmres (double * RESTRICT x
* differently: The invest doesn't pay off.
* Therefore we use the approach in the else part.
*/
- double t[_storage_N];
- double Ax[_storage_N];
+ nl_double t[_storage_N];
+ nl_double Ax[_storage_N];
vec_set(n, accuracy, t);
mat.mult_vec(m_A, t, Ax);
mat.solveLUx(m_LU, Ax);
- const double rho_to_accuracy = std::sqrt(vecmult2(n, Ax)) / accuracy;
-
- //printf("rho/accuracy = %f\n", rho_to_accuracy);
+ const nl_double rho_to_accuracy = std::sqrt(vecmult2(n, Ax)) / accuracy;
rho_delta = accuracy * rho_to_accuracy;
}
@@ -307,11 +306,11 @@ int matrix_solver_GMRES_t<m_N, _storage_N>::solve_ilu_gmres (double * RESTRICT x
for (unsigned itr = 0; itr < restart_max; itr++)
{
unsigned last_k = mr;
- double mu;
- double rho;
+ nl_double mu;
+ nl_double rho;
- double Ax[_storage_N];
- double residual[_storage_N];
+ nl_double Ax[_storage_N];
+ nl_double residual[_storage_N];
mat.mult_vec(m_A, x, Ax);
@@ -324,13 +323,13 @@ int matrix_solver_GMRES_t<m_N, _storage_N>::solve_ilu_gmres (double * RESTRICT x
rho = std::sqrt(vecmult2(n, residual));
- vec_mult_scalar(n, residual, 1.0 / rho, m_v[0]);
+ vec_mult_scalar(n, residual, NL_FCONST(1.0) / rho, m_v[0]);
- vec_set(mr+1, 0.0, m_g);
+ vec_set(mr+1, NL_FCONST(0.0), m_g);
m_g[0] = rho;
for (unsigned i = 0; i < mr; i++)
- vec_set(mr + 1, 0.0, m_ht[i]);
+ vec_set(mr + 1, NL_FCONST(0.0), m_ht[i]);
for (unsigned k = 0; k < mr; k++)
{
@@ -349,7 +348,7 @@ int matrix_solver_GMRES_t<m_N, _storage_N>::solve_ilu_gmres (double * RESTRICT x
m_ht[k1][k] = std::sqrt(vecmult2(n, m_v[k1]));
if (m_ht[k1][k] != 0.0)
- vec_scale(n, m_v[k1], 1.0 / m_ht[k1][k]);
+ vec_scale(n, m_v[k1], NL_FCONST(1.0) / m_ht[k1][k]);
for (unsigned j = 0; j < k; j++)
givens_mult(m_c[j], m_s[j], &m_ht[j][k], &m_ht[j+1][k]);
@@ -378,7 +377,7 @@ int matrix_solver_GMRES_t<m_N, _storage_N>::solve_ilu_gmres (double * RESTRICT x
/* didn't converge within accuracy */
last_k = mr - 1;
- double m_y[_storage_N + 1];
+ nl_double m_y[_storage_N + 1];
/* Solve the system H * y = g */
/* x += m_v[j] * m_y[j] */
diff --git a/src/emu/netlist/solver/nld_ms_sor.h b/src/lib/netlist/solver/nld_ms_sor.h
index 82c10c5c9d8..41074284152 100644
--- a/src/emu/netlist/solver/nld_ms_sor.h
+++ b/src/lib/netlist/solver/nld_ms_sor.h
@@ -14,8 +14,8 @@
#include <algorithm>
-#include "../solver/nld_ms_direct.h"
-#include "../solver/nld_solver.h"
+#include "solver/nld_ms_direct.h"
+#include "solver/nld_solver.h"
NETLIB_NAMESPACE_DEVICES_START()
@@ -143,7 +143,7 @@ ATTR_HOT inline int matrix_solver_SOR_t<m_N, _storage_N>::vsolve_non_dynamic(con
do {
resched = false;
- double err = 0;
+ nl_double err = 0;
for (unsigned k = 0; k < iN; k++)
{
const int * RESTRICT net_other = this->m_terms[k]->net_other();
diff --git a/src/emu/netlist/solver/nld_ms_sor_mat.h b/src/lib/netlist/solver/nld_ms_sor_mat.h
index d5ce05ef8b1..bbf8706a139 100644
--- a/src/emu/netlist/solver/nld_ms_sor_mat.h
+++ b/src/lib/netlist/solver/nld_ms_sor_mat.h
@@ -14,8 +14,8 @@
#include <algorithm>
-#include "../solver/nld_ms_direct.h"
-#include "../solver/nld_solver.h"
+#include "solver/nld_ms_direct.h"
+#include "solver/nld_solver.h"
NETLIB_NAMESPACE_DEVICES_START()
@@ -35,7 +35,6 @@ public:
virtual ~matrix_solver_SOR_mat_t() {}
- virtual void log_stats();
virtual void vsetup(analog_net_t::list_t &nets);
ATTR_HOT inline int vsolve_non_dynamic(const bool newton_raphson);
@@ -56,26 +55,6 @@ private:
// ----------------------------------------------------------------------------------------
template <unsigned m_N, unsigned _storage_N>
-void matrix_solver_SOR_mat_t<m_N, _storage_N>::log_stats()
-{
- if (this->m_stat_calculations != 0 && this->m_params.m_log_stats)
- {
- this->netlist().log("==============================================");
- this->netlist().log("Solver %s", this->name().cstr());
- this->netlist().log(" ==> %d nets", this->N()); //, (*(*groups[i].first())->m_core_terms.first())->name().cstr());
- this->netlist().log(" has %s elements", this->is_dynamic() ? "dynamic" : "no dynamic");
- this->netlist().log(" has %s elements", this->is_timestep() ? "timestep" : "no timestep");
- this->netlist().log(" %6.3f average newton raphson loops", (double) this->m_stat_newton_raphson / (double) this->m_stat_vsolver_calls);
- this->netlist().log(" %10d invocations (%6d Hz) %10d gs fails (%6.2f%%) %6.3f average",
- this->m_stat_calculations,
- this->m_stat_calculations * 10 / (int) (this->netlist().time().as_double() * 10.0),
- this->m_gs_fail,
- 100.0 * (double) this->m_gs_fail / (double) this->m_stat_calculations,
- (double) this->m_gs_total / (double) this->m_stat_calculations);
- }
-}
-
-template <unsigned m_N, unsigned _storage_N>
void matrix_solver_SOR_mat_t<m_N, _storage_N>::vsetup(analog_net_t::list_t &nets)
{
matrix_solver_direct_t<m_N, _storage_N>::vsetup(nets);
@@ -199,14 +178,13 @@ ATTR_HOT inline int matrix_solver_SOR_mat_t<m_N, _storage_N>::vsolve_non_dynamic
{
nl_double Idrive = 0;
- const nl_ext_double * RESTRICT A = &this->m_A[k][0];
const unsigned *p = this->m_terms[k]->m_nz.data();
const unsigned e = this->m_terms[k]->m_nz.size();
for (unsigned i = 0; i < e; i++)
- Idrive = Idrive + A[p[i]] * new_v[p[i]];
+ Idrive = Idrive + this->A(k,p[i]) * new_v[p[i]];
- const nl_double delta = m_omega * (this->m_RHS[k] - Idrive) / A[k];
+ const nl_double delta = m_omega * (this->m_RHS[k] - Idrive) / this->A(k,k);
cerr = std::max(cerr, nl_math::abs(delta));
new_v[k] += delta;
}
diff --git a/src/emu/netlist/solver/nld_solver.c b/src/lib/netlist/solver/nld_solver.c
index acf9a6fdaae..a3877b7eaa7 100644
--- a/src/emu/netlist/solver/nld_solver.c
+++ b/src/lib/netlist/solver/nld_solver.c
@@ -9,7 +9,14 @@
* the vectorizations fast-math enables pretty expensive
*/
-//#pragma GCC optimize "-ffast-math"
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
+
+
#if 0
#pragma GCC optimize "-ffast-math"
//#pragma GCC optimize "-ftree-parallelize-loops=4"
@@ -29,14 +36,18 @@
#include <iostream>
#include <algorithm>
#include "nld_solver.h"
+#if 1
#include "nld_ms_direct.h"
+#else
+#include "nld_ms_direct_lu.h"
+#endif
#include "nld_ms_direct1.h"
#include "nld_ms_direct2.h"
#include "nld_ms_sor.h"
#include "nld_ms_sor_mat.h"
#include "nld_ms_gmres.h"
//#include "nld_twoterm.h"
-#include "../nl_lists.h"
+#include "nl_lists.h"
#if HAS_OPENMP
#include "omp.h"
@@ -102,7 +113,7 @@ ATTR_COLD matrix_solver_t::~matrix_solver_t()
ATTR_COLD void matrix_solver_t::setup(analog_net_t::list_t &nets)
{
- NL_VERBOSE_OUT(("New solver setup\n"));
+ log().debug("New solver setup\n");
m_nets.clear();
@@ -113,7 +124,7 @@ ATTR_COLD void matrix_solver_t::setup(analog_net_t::list_t &nets)
for (std::size_t k = 0; k < nets.size(); k++)
{
- NL_VERBOSE_OUT(("setting up net\n"));
+ log().debug("setting up net\n");
analog_net_t *net = nets[k];
@@ -122,7 +133,7 @@ ATTR_COLD void matrix_solver_t::setup(analog_net_t::list_t &nets)
for (std::size_t i = 0; i < net->m_core_terms.size(); i++)
{
core_terminal_t *p = net->m_core_terms[i];
- NL_VERBOSE_OUT(("%s %s %d\n", p->name().cstr(), net->name().cstr(), (int) net->isRailNet()));
+ log().debug("{1} {2} {3}\n", p->name(), net->name(), (int) net->isRailNet());
switch (p->type())
{
case terminal_t::TERMINAL:
@@ -136,7 +147,7 @@ ATTR_COLD void matrix_solver_t::setup(analog_net_t::list_t &nets)
case device_t::DIODE:
case device_t::LVCCS:
case device_t::BJT_SWITCH:
- NL_VERBOSE_OUT(("found BJT/Diode/LVCCS\n"));
+ log().debug("found BJT/Diode/LVCCS\n");
if (!m_dynamic_devices.contains(&p->device()))
m_dynamic_devices.add(&p->device());
break;
@@ -147,7 +158,7 @@ ATTR_COLD void matrix_solver_t::setup(analog_net_t::list_t &nets)
terminal_t *pterm = dynamic_cast<terminal_t *>(p);
add_term(k, pterm);
}
- NL_VERBOSE_OUT(("Added terminal\n"));
+ log().debug("Added terminal\n");
break;
case terminal_t::INPUT:
{
@@ -162,22 +173,22 @@ ATTR_COLD void matrix_solver_t::setup(analog_net_t::list_t &nets)
if (net_proxy_output == NULL)
{
net_proxy_output = palloc(analog_output_t);
- net_proxy_output->init_object(*this, this->name() + "." + pstring::sprintf("m%" SIZETFMT, SIZET_PRINTF(m_inps.size())));
+ net_proxy_output->init_object(*this, this->name() + "." + pfmt("m{1}")(m_inps.size()));
m_inps.add(net_proxy_output);
net_proxy_output->m_proxied_net = &p->net().as_analog();
}
net_proxy_output->net().register_con(*p);
// FIXME: repeated
net_proxy_output->net().rebuild_list();
- NL_VERBOSE_OUT(("Added input\n"));
+ log().debug("Added input\n");
}
break;
default:
- netlist().error("unhandled element found\n");
+ log().fatal("unhandled element found\n");
break;
}
}
- NL_VERBOSE_OUT(("added net with %" SIZETFMT " populated connections\n", net->m_core_terms.size()));
+ log().debug("added net with {1} populated connections\n", net->m_core_terms.size());
}
}
@@ -188,7 +199,6 @@ ATTR_HOT void matrix_solver_t::update_inputs()
// avoid recursive calls. Inputs are updated outside this call
for (std::size_t i=0; i<m_inps.size(); i++)
m_inps[i]->set_Q(m_inps[i]->m_proxied_net->m_cur_Analog);
-
}
ATTR_HOT void matrix_solver_t::update_dynamic()
@@ -262,7 +272,7 @@ void matrix_solver_t::solve_base(C *p)
// reschedule ....
if (this_resched > 1 && !m_Q_sync.net().is_queued())
{
- netlist().warning("NEWTON_LOOPS exceeded on net %s... reschedule", this->name().cstr());
+ log().warning("NEWTON_LOOPS exceeded on net {1}... reschedule", this->name());
m_Q_sync.net().reschedule_in_queue(m_params.m_nt_sync_delay);
}
}
@@ -294,11 +304,6 @@ ATTR_HOT nl_double matrix_solver_t::solve()
return next_time_step;
}
-
-// ----------------------------------------------------------------------------------------
-// matrix_solver - Direct base
-// ----------------------------------------------------------------------------------------
-
ATTR_COLD int matrix_solver_t::get_net_idx(net_t *net)
{
for (std::size_t k = 0; k < m_nets.size(); k++)
@@ -307,6 +312,25 @@ ATTR_COLD int matrix_solver_t::get_net_idx(net_t *net)
return -1;
}
+void matrix_solver_t::log_stats()
+{
+ if (this->m_stat_calculations != 0 && this->m_params.m_log_stats)
+ {
+ log().verbose("==============================================");
+ log().verbose("Solver {1}", this->name());
+ log().verbose(" ==> {1} nets", this->m_nets.size()); //, (*(*groups[i].first())->m_core_terms.first())->name());
+ log().verbose(" has {1} elements", this->is_dynamic() ? "dynamic" : "no dynamic");
+ log().verbose(" has {1} elements", this->is_timestep() ? "timestep" : "no timestep");
+ log().verbose(" {1:6.3} average newton raphson loops", (double) this->m_stat_newton_raphson / (double) this->m_stat_vsolver_calls);
+ log().verbose(" {1:10} invocations ({2:6} Hz) {3:10} gs fails ({4:6.2} %) {5:6.3} average",
+ this->m_stat_calculations,
+ this->m_stat_calculations * 10 / (int) (this->netlist().time().as_double() * 10.0),
+ this->m_iterative_fail,
+ 100.0 * (double) this->m_iterative_fail / (double) this->m_stat_calculations,
+ (double) this->m_iterative_total / (double) this->m_stat_calculations);
+ }
+}
+
@@ -327,15 +351,21 @@ NETLIB_START(solver)
register_param("FREQ", m_freq, 48000.0);
- register_param("ITERATIVE", m_iterative_solver, "SOR");
+ /* iteration parameters */
+ register_param("SOR_FACTOR", m_sor, 1.059);
+ register_param("ITERATIVE", m_iterative_solver, "SOR");
register_param("ACCURACY", m_accuracy, 1e-7);
- register_param("GS_LOOPS", m_gs_loops, 9); // Gauss-Seidel loops
register_param("GS_THRESHOLD", m_gs_threshold, 6); // below this value, gaussian elimination is used
+ register_param("GS_LOOPS", m_gs_loops, 9); // Gauss-Seidel loops
+
+ /* general parameters */
+ register_param("GMIN", m_gmin, NETLIST_GMIN_DEFAULT);
+ register_param("PIVOT", m_pivot, 0); // use pivoting - on supported solvers
register_param("NR_LOOPS", m_nr_loops, 250); // Newton-Raphson loops
register_param("PARALLEL", m_parallel, 0);
- register_param("SOR_FACTOR", m_sor, 1.059);
- register_param("GMIN", m_gmin, NETLIST_GMIN_DEFAULT);
+
+ /* automatic time step */
register_param("DYNAMIC_TS", m_dynamic, 0);
register_param("LTE", m_lte, 5e-5); // diff/timestep
register_param("MIN_TIMESTEP", m_min_timestep, 1e-6); // nl_double timestep resolution
@@ -448,7 +478,7 @@ matrix_solver_t * NETLIB_NAME(solver)::create_solver(int size, const bool use_sp
}
else
{
- netlist().error("Unknown solver type: %s\n", m_iterative_solver.Value().cstr());
+ netlist().log().fatal("Unknown solver type: {1}\n", m_iterative_solver.Value());
return NULL;
}
}
@@ -466,10 +496,11 @@ ATTR_COLD void NETLIB_NAME(solver)::post_start()
int cur_group = -1;
const bool use_specific = true;
+ m_params.m_pivot = m_pivot.Value();
m_params.m_accuracy = m_accuracy.Value();
m_params.m_gs_loops = m_gs_loops.Value();
m_params.m_nr_loops = m_nr_loops.Value();
- m_params.m_nt_sync_delay = m_sync_delay.Value();
+ m_params.m_nt_sync_delay = netlist_time::from_double(m_sync_delay.Value());
m_params.m_lte = m_lte.Value();
m_params.m_sor = m_sor.Value();
@@ -493,14 +524,14 @@ ATTR_COLD void NETLIB_NAME(solver)::post_start()
else
m_params.m_log_stats = (bool) m_log_stats.Value();
- netlist().log("Scanning net groups ...");
+ netlist().log().verbose("Scanning net groups ...");
// determine net groups
for (std::size_t i=0; i<netlist().m_nets.size(); i++)
{
- SOLVER_VERBOSE_OUT(("processing %s\n", netlist().m_nets[i]->name().cstr()));
+ netlist().log().debug("processing {1}\n", netlist().m_nets[i]->name());
if (!netlist().m_nets[i]->isRailNet())
{
- SOLVER_VERBOSE_OUT((" ==> not a rail net\n"));
+ netlist().log().debug(" ==> not a rail net\n");
analog_net_t *n = &netlist().m_nets[i]->as_analog();
if (!n->already_processed(groups, cur_group))
{
@@ -511,7 +542,7 @@ ATTR_COLD void NETLIB_NAME(solver)::post_start()
}
// setup the solvers
- netlist().log("Found %d net groups in %" SIZETFMT " nets\n", cur_group + 1, SIZET_PRINTF(netlist().m_nets.size()));
+ netlist().log().verbose("Found {1} net groups in {2} nets\n", cur_group + 1, netlist().m_nets.size());
for (int i = 0; i <= cur_group; i++)
{
matrix_solver_t *ms;
@@ -543,13 +574,31 @@ ATTR_COLD void NETLIB_NAME(solver)::post_start()
case 8:
ms = create_solver<8,8>(8, use_specific);
break;
+ case 10:
+ ms = create_solver<10,10>(10, use_specific);
+ break;
+ case 11:
+ ms = create_solver<11,11>(11, use_specific);
+ break;
case 12:
ms = create_solver<12,12>(12, use_specific);
break;
+ case 15:
+ ms = create_solver<15,15>(15, use_specific);
+ break;
+ case 31:
+ ms = create_solver<31,31>(31, use_specific);
+ break;
+ case 49:
+ ms = create_solver<49,49>(49, use_specific);
+ break;
+#if 0
case 87:
ms = create_solver<87,87>(87, use_specific);
break;
+#endif
default:
+ netlist().log().warning("No specific solver found for netlist of size {1}", (unsigned) net_count);
if (net_count <= 16)
{
ms = create_solver<0,16>(net_count, use_specific);
@@ -569,34 +618,38 @@ ATTR_COLD void NETLIB_NAME(solver)::post_start()
}
else
{
- netlist().error("Encountered netgroup with > 128 nets");
+ netlist().log().fatal("Encountered netgroup with > 128 nets");
ms = NULL; /* tease compilers */
}
break;
}
- register_sub(pstring::sprintf("Solver_%" SIZETFMT,SIZET_PRINTF(m_mat_solvers.size())), *ms);
+ register_sub(pfmt("Solver_{1}")(m_mat_solvers.size()), *ms);
ms->vsetup(groups[i]);
m_mat_solvers.add(ms);
- netlist().log("Solver %s", ms->name().cstr());
- netlist().log(" # %d ==> %" SIZETFMT " nets", i, SIZET_PRINTF(groups[i].size())); //, (*(*groups[i].first())->m_core_terms.first())->name().cstr());
- netlist().log(" has %s elements", ms->is_dynamic() ? "dynamic" : "no dynamic");
- netlist().log(" has %s elements", ms->is_timestep() ? "timestep" : "no timestep");
+ netlist().log().verbose("Solver {1}", ms->name());
+ netlist().log().verbose(" # {1} ==> {2} nets", i, groups[i].size());
+ netlist().log().verbose(" has {1} elements", ms->is_dynamic() ? "dynamic" : "no dynamic");
+ netlist().log().verbose(" has {1} elements", ms->is_timestep() ? "timestep" : "no timestep");
for (std::size_t j=0; j<groups[i].size(); j++)
{
- netlist().log("Net %" SIZETFMT ": %s", SIZET_PRINTF(j), groups[i][j]->name().cstr());
+ netlist().log().verbose("Net {1}: {2}", j, groups[i][j]->name());
net_t *n = groups[i][j];
for (std::size_t k = 0; k < n->m_core_terms.size(); k++)
{
const core_terminal_t *p = n->m_core_terms[k];
- netlist().log(" %s", p->name().cstr());
+ netlist().log().verbose(" {1}", p->name());
}
}
}
}
NETLIB_NAMESPACE_DEVICES_END()
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/netlist/solver/nld_solver.h b/src/lib/netlist/solver/nld_solver.h
index 682483dfde3..040866c5736 100644
--- a/src/emu/netlist/solver/nld_solver.h
+++ b/src/lib/netlist/solver/nld_solver.h
@@ -8,15 +8,12 @@
#ifndef NLD_SOLVER_H_
#define NLD_SOLVER_H_
-#include "../nl_setup.h"
-#include "../nl_base.h"
+#include "nl_setup.h"
+#include "nl_base.h"
//#define ATTR_ALIGNED(N) __attribute__((aligned(N)))
#define ATTR_ALIGNED(N) ATTR_ALIGN
-#define SOLVER_VERBOSE_OUT(x) do {} while (0)
-//#define SOLVER_VERBOSE_OUT(x) printf x
-
// ----------------------------------------------------------------------------------------
// Macros
// ----------------------------------------------------------------------------------------
@@ -37,6 +34,7 @@ class NETLIB_NAME(solver);
struct solver_parameters_t
{
+ int m_pivot;
nl_double m_accuracy;
nl_double m_lte;
nl_double m_min_timestep;
@@ -83,8 +81,9 @@ class terms_t
unsigned m_railstart;
- plist_t<unsigned> m_nzrd; /* non zero right of the diagonal for elimination */
plist_t<unsigned> m_nz; /* all non zero for multiplication */
+ plist_t<unsigned> m_nzrd; /* non zero right of the diagonal for elimination */
+ plist_t<unsigned> m_nzbd; /* non zero below of the diagonal for elimination */
private:
plist_t<terminal_t *> m_term;
plist_t<int> m_net_other;
@@ -133,26 +132,9 @@ public:
ATTR_COLD int get_net_idx(net_t *net);
inline eSolverType type() const { return m_type; }
+ plog_base<NL_DEBUG> &log() { return netlist().log(); }
- virtual void log_stats()
- {
- if (this->m_stat_calculations != 0 && this->m_params.m_log_stats)
- {
- this->netlist().log("==============================================");
- this->netlist().log("Solver %s", this->name().cstr());
- this->netlist().log(" ==> %d nets", (unsigned) this->m_nets.size()); //, (*(*groups[i].first())->m_core_terms.first())->name().cstr());
- this->netlist().log(" has %s elements", this->is_dynamic() ? "dynamic" : "no dynamic");
- this->netlist().log(" has %s elements", this->is_timestep() ? "timestep" : "no timestep");
- this->netlist().log(" %6.3f average newton raphson loops", (double) this->m_stat_newton_raphson / (double) this->m_stat_vsolver_calls);
- this->netlist().log(" %10d invocations (%6d Hz) %10d gs fails (%6.2f%%) %6.3f average",
- this->m_stat_calculations,
- this->m_stat_calculations * 10 / (int) (this->netlist().time().as_double() * 10.0),
- this->m_iterative_fail,
- 100.0 * (double) this->m_iterative_fail / (double) this->m_stat_calculations,
- (double) this->m_iterative_total / (double) this->m_stat_calculations);
- }
- }
-
+ virtual void log_stats();
protected:
@@ -217,6 +199,7 @@ protected:
logic_input_t m_fb_step;
logic_output_t m_Q_step;
+ param_logic_t m_pivot;
param_double_t m_freq;
param_double_t m_sync_delay;
param_double_t m_accuracy;
diff --git a/src/emu/netlist/solver/vector_base.h b/src/lib/netlist/solver/vector_base.h
index c180b080338..c1449aad595 100644
--- a/src/emu/netlist/solver/vector_base.h
+++ b/src/lib/netlist/solver/vector_base.h
@@ -11,7 +11,7 @@
#define VECTOR_BASE_H_
#include <algorithm>
-#include "../plib/pconfig.h"
+#include "plib/pconfig.h"
#if 0
template <unsigned _storage_N>
@@ -35,33 +35,36 @@ private:
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
#endif
-inline void vec_set (const std::size_t n, const double &scalar, double * RESTRICT result)
+template<typename T>
+inline void vec_set (const std::size_t n, const T &scalar, T * RESTRICT result)
{
for ( std::size_t i = 0; i < n; i++ )
result[i] = scalar;
}
-inline double vecmult (const std::size_t n, const double * RESTRICT a1, const double * RESTRICT a2 )
-{
- double value = 0.0;
+template<typename T>
+inline T vecmult (const std::size_t n, const T * RESTRICT a1, const T * RESTRICT a2 )
+{
+ T value = 0.0;
for ( std::size_t i = 0; i < n; i++ )
value = value + a1[i] * a2[i];
return value;
}
-
-inline double vecmult2 (const std::size_t n, const double *a1)
+template<typename T>
+inline T vecmult2 (const std::size_t n, const T *a1)
{
- double value = 0.0;
+ T value = 0.0;
for ( std::size_t i = 0; i < n; i++ )
{
- const double temp = a1[i];
+ const T temp = a1[i];
value = value + temp * temp;
}
return value;
}
-inline void vec_mult_scalar (const std::size_t n, const double * RESTRICT v, const double scalar, double * RESTRICT result)
+template<typename T>
+inline void vec_mult_scalar (const std::size_t n, const T * RESTRICT v, const T scalar, T * RESTRICT result)
{
for ( std::size_t i = 0; i < n; i++ )
{
@@ -69,7 +72,8 @@ inline void vec_mult_scalar (const std::size_t n, const double * RESTRICT v, con
}
}
-inline void vec_add_mult_scalar (const std::size_t n, const double * RESTRICT v, const double scalar, double * RESTRICT result)
+template<typename T>
+inline void vec_add_mult_scalar (const std::size_t n, const T * RESTRICT v, const T scalar, T * RESTRICT result)
{
for ( std::size_t i = 0; i < n; i++ )
result[i] += scalar * v[i];
@@ -81,13 +85,15 @@ inline void vec_add_ip(const std::size_t n, const double * RESTRICT v, double *
result[i] += v[i];
}
-inline void vec_sub(const std::size_t n, const double * RESTRICT v1, const double * RESTRICT v2, double * RESTRICT result)
+template<typename T>
+inline void vec_sub(const std::size_t n, const T * RESTRICT v1, const T * RESTRICT v2, T * RESTRICT result)
{
for ( std::size_t i = 0; i < n; i++ )
result[i] = v1[i] - v2[i];
}
-inline void vec_scale (const std::size_t n, double * RESTRICT v, const double scalar)
+template<typename T>
+inline void vec_scale (const std::size_t n, T * RESTRICT v, const T scalar)
{
for ( std::size_t i = 0; i < n; i++ )
v[i] = scalar * v[i];
diff --git a/src/emu/netlist/tools/nl_convert.c b/src/lib/netlist/tools/nl_convert.c
index 23e5c537b12..dae68968445 100644
--- a/src/emu/netlist/tools/nl_convert.c
+++ b/src/lib/netlist/tools/nl_convert.c
@@ -10,6 +10,14 @@
#include <cmath>
#include "nl_convert.h"
+
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
+
template<typename Class>
static plist_t<int> bubble(const pnamedlist_t<Class *> &sl)
{
@@ -34,15 +42,6 @@ static plist_t<int> bubble(const pnamedlist_t<Class *> &sl)
convert - convert a spice netlist
-------------------------------------------------*/
-
-void nl_convert_base_t::out(const char *format, ...)
-{
- va_list ap;
- va_start(ap, format);
- m_buf += pstring(format).vprintf(ap);
- va_end(ap);
-}
-
void nl_convert_base_t::add_pin_alias(const pstring &devname, const pstring &name, const pstring &alias)
{
m_pins.add(palloc(pin_alias_t(devname + "." + name, devname + "." + alias)), false);
@@ -90,7 +89,7 @@ void nl_convert_base_t::dump_nl()
{
net_t *net = m_nets.find_by_name(m_ext_alias[i]);
// use the first terminal ...
- out("ALIAS(%s, %s)\n", m_ext_alias[i].cstr(), net->terminals()[0].cstr());
+ out("ALIAS({}, {})\n", m_ext_alias[i].cstr(), net->terminals()[0].cstr());
// if the aliased net only has this one terminal connected ==> don't dump
if (net->terminals().size() == 1)
net->set_no_export();
@@ -101,13 +100,13 @@ void nl_convert_base_t::dump_nl()
std::size_t j = sorted[i];
if (m_devs[j]->has_value())
- out("%s(%s, %s)\n", m_devs[j]->type().cstr(),
+ out("{}({}, {})\n", m_devs[j]->type().cstr(),
m_devs[j]->name().cstr(), get_nl_val(m_devs[j]->value()).cstr());
else if (m_devs[j]->has_model())
- out("%s(%s, \"%s\")\n", m_devs[j]->type().cstr(),
+ out("{}({}, \"{}\")\n", m_devs[j]->type().cstr(),
m_devs[j]->name().cstr(), m_devs[j]->model().cstr());
else
- out("%s(%s)\n", m_devs[j]->type().cstr(),
+ out("{}({})\n", m_devs[j]->type().cstr(),
m_devs[j]->name().cstr());
}
// print nets
@@ -116,11 +115,11 @@ void nl_convert_base_t::dump_nl()
net_t * net = m_nets[i];
if (!net->is_no_export())
{
- //printf("Net %s\n", net->name().cstr());
- out("NET_C(%s", net->terminals()[0].cstr() );
+ //printf("Net {}\n", net->name().cstr());
+ out("NET_C({}", net->terminals()[0].cstr() );
for (std::size_t j=1; j<net->terminals().size(); j++)
{
- out(", %s", net->terminals()[j].cstr() );
+ out(", {}", net->terminals()[j].cstr() );
}
out(")\n");
}
@@ -141,7 +140,7 @@ const pstring nl_convert_base_t::get_nl_val(const double val)
break;
i++;
}
- return pstring::sprintf(m_units[i].m_func.cstr(), val / m_units[i].m_mult);
+ return pfmt(m_units[i].m_func.cstr())(val / m_units[i].m_mult);
}
}
double nl_convert_base_t::get_sp_unit(const pstring &unit)
@@ -166,28 +165,27 @@ double nl_convert_base_t::get_sp_val(const pstring &sin)
pstring unit = sin.substr(p + 1);
double ret = get_sp_unit(unit) * val.as_double();
- //printf("<%s> %s %d ==> %f\n", sin.cstr(), unit.cstr(), p, ret);
return ret;
}
nl_convert_base_t::unit_t nl_convert_base_t::m_units[] = {
{"T", "", 1.0e12 },
{"G", "", 1.0e9 },
- {"MEG", "RES_M(%g)", 1.0e6 },
- {"k", "RES_K(%g)", 1.0e3 }, /* eagle */
- {"K", "RES_K(%g)", 1.0e3 },
- {"", "%g", 1.0e0 },
- {"M", "CAP_M(%g)", 1.0e-3 },
- {"u", "CAP_U(%g)", 1.0e-6 }, /* eagle */
- {"U", "CAP_U(%g)", 1.0e-6 },
- {"μ", "CAP_U(%g)", 1.0e-6 },
- {"N", "CAP_N(%g)", 1.0e-9 },
- {"P", "CAP_P(%g)", 1.0e-12},
- {"F", "%ge-15", 1.0e-15},
-
- {"MIL", "%e", 25.4e-6},
-
- {"-", "%g", 1.0 }
+ {"MEG", "RES_M({1})", 1.0e6 },
+ {"k", "RES_K({1})", 1.0e3 }, /* eagle */
+ {"K", "RES_K({1})", 1.0e3 },
+ {"", "{1}", 1.0e0 },
+ {"M", "CAP_M({1})", 1.0e-3 },
+ {"u", "CAP_U({1})", 1.0e-6 }, /* eagle */
+ {"U", "CAP_U({1})", 1.0e-6 },
+ {"??", "CAP_U({1})", 1.0e-6 },
+ {"N", "CAP_N({1})", 1.0e-9 },
+ {"P", "CAP_P({1})", 1.0e-12},
+ {"F", "{1}e-15", 1.0e-15},
+
+ {"MIL", "{1}", 25.4e-6},
+
+ {"-", "{1}", 1.0 }
};
@@ -227,18 +225,18 @@ void nl_convert_spice_t::process_line(const pstring &line)
{
pstring_list_t tt(line, " ", true);
double val = 0.0;
- switch (tt[0].cstr()[0])
+ switch (tt[0].code_at(0))
{
case ';':
- out("// %s\n", line.substr(1).cstr());
+ out("// {}\n", line.substr(1).cstr());
break;
case '*':
- out("// %s\n", line.substr(1).cstr());
+ out("// {}\n", line.substr(1).cstr());
break;
case '.':
if (tt[0].equals(".SUBCKT"))
{
- out("NETLIST_START(%s)\n", tt[1].cstr());
+ out("NETLIST_START({})\n", tt[1].cstr());
for (std::size_t i=2; i<tt.size(); i++)
add_ext_alias(tt[i]);
}
@@ -248,7 +246,7 @@ void nl_convert_spice_t::process_line(const pstring &line)
out("NETLIST_END()\n");
}
else
- out("// %s\n", line.cstr());
+ out("// {}\n", line.cstr());
break;
case 'Q':
{
@@ -272,9 +270,9 @@ void nl_convert_spice_t::process_line(const pstring &line)
pins = m[1].left(3);
}
add_device("QBJT_EB", tt[0], m[0]);
- add_term(tt[1], tt[0] + "." + pins[0]);
- add_term(tt[2], tt[0] + "." + pins[1]);
- add_term(tt[3], tt[0] + "." + pins[2]);
+ add_term(tt[1], tt[0] + "." + pins.code_at(0));
+ add_term(tt[2], tt[0] + "." + pins.code_at(1));
+ add_term(tt[3], tt[0] + "." + pins.code_at(2));
}
break;
case 'R':
@@ -337,22 +335,22 @@ void nl_convert_spice_t::process_line(const pstring &line)
add_device(tname, xname);
for (std::size_t i=1; i < tt.size() - 1; i++)
{
- pstring term = pstring::sprintf("%s.%" SIZETFMT, xname.cstr(), SIZET_PRINTF(i));
+ pstring term = pfmt("{1}.{2}")(xname)(i);
add_term(tt[i], term);
}
break;
}
default:
- out("// IGNORED %s: %s\n", tt[0].cstr(), line.cstr());
+ out("// IGNORED {}: {}\n", tt[0].cstr(), line.cstr());
}
}
}
-
+//FIXME: should accept a stream as well
void nl_convert_eagle_t::convert(const pstring &contents)
{
- eagle_tokenizer tok(*this);
- tok.reset(contents.cstr());
+ pistringstream istrm(contents);
+ eagle_tokenizer tok(*this, istrm);
out("NETLIST_START(dummy)\n");
add_term("GND", "GND");
@@ -389,7 +387,7 @@ void nl_convert_eagle_t::convert(const pstring &contents)
tok.require_token(tok.m_tok_SEMICOLON);
token = tok.get_token();
}
- switch (name.cstr()[0])
+ switch (name.code_at(0))
{
case 'Q':
{
@@ -431,7 +429,7 @@ void nl_convert_eagle_t::convert(const pstring &contents)
break;
}
default:
- tok.error("// IGNORED %s\n", name.cstr());
+ tok.error("// IGNORED " + name);
}
}
@@ -449,9 +447,13 @@ void nl_convert_eagle_t::convert(const pstring &contents)
}
else
{
- out("Unexpected %s\n", token.str().cstr());
+ out("Unexpected {}\n", token.str().cstr());
return;
}
}
}
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/emu/netlist/tools/nl_convert.h b/src/lib/netlist/tools/nl_convert.h
index d2e2d238718..7a410bb2f47 100644
--- a/src/emu/netlist/tools/nl_convert.h
+++ b/src/lib/netlist/tools/nl_convert.h
@@ -22,7 +22,7 @@ class nl_convert_base_t
{
public:
- nl_convert_base_t() {};
+ nl_convert_base_t() : out(m_buf) {};
virtual ~nl_convert_base_t()
{
m_nets.clear_and_free();
@@ -30,12 +30,12 @@ public:
m_pins.clear_and_free();
}
- const pstringbuffer &result() { return m_buf; }
+ const pstringbuffer &result() { return m_buf.str(); }
+
virtual void convert(const pstring &contents) = 0;
protected:
- void out(const char *format, ...) ATTR_PRINTF(2,3);
void add_pin_alias(const pstring &devname, const pstring &name, const pstring &alias);
void add_ext_alias(const pstring &alias);
@@ -53,6 +53,7 @@ protected:
double get_sp_val(const pstring &sin);
+ pstream_fmt_writer_t out;
private:
struct net_t
{
@@ -123,7 +124,7 @@ private:
private:
- pstringbuffer m_buf;
+ postringstream m_buf;
pnamedlist_t<dev_t *> m_devs;
pnamedlist_t<net_t *> m_nets;
@@ -165,8 +166,8 @@ public:
class eagle_tokenizer : public ptokenizer
{
public:
- eagle_tokenizer(nl_convert_eagle_t &convert)
- : ptokenizer(), m_convert(convert)
+ eagle_tokenizer(nl_convert_eagle_t &convert, pistream &strm)
+ : ptokenizer(strm), m_convert(convert)
{
set_identifier_chars("abcdefghijklmnopqrstuvwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_.-");
set_number_chars(".0123456789", "0123456789eE-."); //FIXME: processing of numbers
@@ -196,9 +197,9 @@ public:
protected:
- void verror(pstring msg, int line_num, pstring line)
+ void verror(const pstring &msg, int line_num, const pstring &line)
{
- m_convert.out("%s (line %d): %s\n", msg.cstr(), line_num, line.cstr());
+ m_convert.out("{} (line {}): {}\n", msg.cstr(), line_num, line.cstr());
}
diff --git a/src/lib/util/coreutil.c b/src/lib/util/coreutil.c
index a7c2ccb0f22..90bcab9ab1a 100644
--- a/src/lib/util/coreutil.c
+++ b/src/lib/util/coreutil.c
@@ -9,6 +9,8 @@
***************************************************************************/
#include "coreutil.h"
+#include <assert.h>
+#include <zlib.h>
/***************************************************************************
@@ -81,12 +83,11 @@ int gregorian_is_leap_year(int year)
int gregorian_days_in_month(int month, int year)
{
- if (month == 2)
- return gregorian_is_leap_year(year) ? 29 : 28;
- else if (month == 4 || month == 6 || month == 9 || month == 11)
- return 30;
- else
- return 31;
+ assert(month >= 1 && month <= 12);
+
+ int days[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
+ days[1] += gregorian_is_leap_year(year) ? 1 : 0;
+ return days[month-1];
}
@@ -115,3 +116,9 @@ void rand_memory(void *memory, size_t length)
bytes[i] = (UINT8) (seed >> 16);
}
}
+
+
+UINT32 core_crc32(UINT32 crc, const UINT8 *buf, UINT32 len)
+{
+ return crc32(crc, buf, len);
+}
diff --git a/src/lib/util/coreutil.h b/src/lib/util/coreutil.h
index 5315d07ffdc..839e72686ea 100644
--- a/src/lib/util/coreutil.h
+++ b/src/lib/util/coreutil.h
@@ -39,5 +39,6 @@ int gregorian_days_in_month(int month, int year);
void rand_memory(void *memory, size_t length);
+UINT32 core_crc32(UINT32 crc, const UINT8 *buf, UINT32 len);
#endif /* __COREUTIL_H__ */
diff --git a/src/lib/util/palette.c b/src/lib/util/palette.c
index f2252a24319..cafdce24ebd 100644
--- a/src/lib/util/palette.c
+++ b/src/lib/util/palette.c
@@ -365,6 +365,66 @@ void palette_t::entry_set_color(UINT32 index, rgb_t rgb)
//-------------------------------------------------
+// entry_set_red_level - set the red level for a
+// given palette index
+//-------------------------------------------------
+
+void palette_t::entry_set_red_level(UINT32 index, UINT8 level)
+{
+ // if out of range, or unchanged, ignore
+ if (index >= m_numcolors || m_entry_color[index].r() == level)
+ return;
+
+ // set the level
+ m_entry_color[index].set_r(level);
+
+ // update across all groups
+ for (int groupnum = 0; groupnum < m_numgroups; groupnum++)
+ update_adjusted_color(groupnum, index);
+}
+
+
+//-------------------------------------------------
+// entry_set_green_level - set the green level for a
+// given palette index
+//-------------------------------------------------
+
+void palette_t::entry_set_green_level(UINT32 index, UINT8 level)
+{
+ // if out of range, or unchanged, ignore
+ if (index >= m_numcolors || m_entry_color[index].g() == level)
+ return;
+
+ // set the level
+ m_entry_color[index].set_g(level);
+
+ // update across all groups
+ for (int groupnum = 0; groupnum < m_numgroups; groupnum++)
+ update_adjusted_color(groupnum, index);
+}
+
+
+//-------------------------------------------------
+// entry_set_blue_level - set the blue level for a
+// given palette index
+//-------------------------------------------------
+
+void palette_t::entry_set_blue_level(UINT32 index, UINT8 level)
+{
+ // if out of range, or unchanged, ignore
+ if (index >= m_numcolors || m_entry_color[index].b() == level)
+ return;
+
+ // set the level
+ m_entry_color[index].set_b(level);
+
+ // update across all groups
+ for (int groupnum = 0; groupnum < m_numgroups; groupnum++)
+ update_adjusted_color(groupnum, index);
+}
+
+
+//-------------------------------------------------
// entry_set_contrast - set the contrast
// adjustment for a single palette index
//-------------------------------------------------
diff --git a/src/lib/util/palette.h b/src/lib/util/palette.h
index 57bdd1f54a4..9c6703119e1 100644
--- a/src/lib/util/palette.h
+++ b/src/lib/util/palette.h
@@ -166,6 +166,9 @@ public:
// entry setters
void entry_set_color(UINT32 index, rgb_t rgb);
+ void entry_set_red_level(UINT32 index, UINT8 level);
+ void entry_set_green_level(UINT32 index, UINT8 level);
+ void entry_set_blue_level(UINT32 index, UINT8 level);
void entry_set_contrast(UINT32 index, float contrast);
// entry list getters
diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst
index b1c33b43c24..8a134ed54ac 100644
--- a/src/mame/arcade.lst
+++ b/src/mame/arcade.lst
@@ -44,6 +44,7 @@ crush4 // Kural TWT
maketrax // (c) 1981 Williams, high score table says KRL (fur Kural)
maketrxb // (c) 1981 [Kural] (Williams license)
korosuke // (c) 1981 Kural Electric
+crushrlf // bootleg
mbrush // 1981 bootleg
paintrlr // 1981 bootleg
crushs // 1981 bootleg
@@ -192,8 +193,8 @@ phoenxp2 // bootleg
atlantisb // bootleg
tenspot // (c) 1982 Thomas Automatics
devilfsg // (c) 1984 Vision / Artic (bootleg?)
-zigzag // (c) 1982 LAX
-zigzag2 // (c) 1982 LAX
+zigzagb // (c) 1982 LAX (bootleg)
+zigzagb2 // (c) 1982 LAX (bootleg)
jumpbug // (c) 1981 Rock-ola
jumpbugb // (c) 1981 Sega
levers // (c) 1983 Rock-ola
@@ -277,7 +278,6 @@ ckongis //
porter // 1982 bootleg (Arcade TV Game List - P.98, Left, 15 from bottom)
tdpgal // 1983 Design Labs / Thomas Automatics
guttangt
-spcwarp // 1983 Century Electronics UK LTD
// Has some similarities with Moon Cresta but Board is very different
rockclim // (c)1981 Taito
@@ -318,6 +318,7 @@ mariner // (c) 1981 Amenip
mars // (c) 1981 Artic
devilfsh // (c) 1982 Artic
newsin7 // (c) 1983 ATW USA, Inc.
+newsin7a // (c) 1982 ATW USA, Inc.
mrkougar // (c) 1984 ATW
mrkougar2 // (c) 1984 ATW
mrkougb // bootleg
@@ -332,12 +333,14 @@ cavelon // (c) 1983 Jetsoft
sfx // (c) 1983 Nichibutsu
skelagon // (c) 1983 Nichibutsu USA
monsterz // (c) 1982 Nihon (Arcade TV Game List - P.102, Left, 20 from top)
-mimonscr // (c) 1982 Universal Video Games (US Copyright Office info - http://cocatalog.loc.gov)
-mimonkey // (c) 1982 bootleg
+mimonkey // (c) 1982 Universal Video Games (US Copyright Office info - http://cocatalog.loc.gov)
mimonsco // (c) 1982 bootleg
+mimonscr // (c) 1982 bootleg
+mimonscra // (c) 1982 bootleg
scobra // GX316 (c) 1981 Konami
scobras // GX316 (c) 1981 Stern
-scobrase // GX316 (c) 1981 Stern
+scobrase // GX316 (c) 1981 Sega
+scobrae // GX316 (c) 1981 Stern
scobrab // GX316 (c) 1981 Karateco (bootleg?)
suprheli // bootleg
stratgyx // GX306 (c) 1981 Konami
@@ -358,7 +361,9 @@ anteateruk // (c) 1983 Free Enterprise Games
rescue // (c) 1982 Stern
rescueb // (c) Videl Games (Rescue bootleg)
aponow // bootleg
+rescuefe // bootleg
minefld // (c) 1983 Stern
+minefldfe // bootleg
losttomb // (c) 1982 Stern
losttombh // (c) 1982 Stern
superbon // bootleg
@@ -592,6 +597,7 @@ club90s // (c) 1990
club90sa // (c) 1990
lovehous // (c) 1990
hanaoji // (c) 1991
+hanaojia // (c) 1991
pstadium // (c) 1990
triplew1 // (c) 1989
triplew2 // (c) 1990
@@ -681,11 +687,14 @@ falcon // bootleg
vautour // bootleg (Jeutel)
falconz // bootleg
vautourz // bootleg
+vautourza // bootleg (Jeutal)
griffon // bootleg (Videotron)
nextfase // bootleg
phoenixs // bootleg (Sonic)
+phoenixass // bootleg (Assa)
avefenix // bootleg (Video Game)
avefenixrf // bootleg (Recreativos Franco)
+avefenixl // bootleg (Laguna)
pleiads // (c) 1981 Tehkan
pleiadsb2 // bootleg
pleiadbl // bootleg
@@ -837,6 +846,7 @@ genpeitd // (c) 1986
rthunder // (c) 1986
rthunder2 // (c) 1986
rthunder1 // (c) 1986
+rthunder0 // (c) 1986
wndrmomo // (c) 1987
// Thunder Ceptor HW
@@ -972,6 +982,7 @@ xday2 // (c) 1995 (Japan)
nebulray // (c) 1994 (World)
nebulrayj // (c) 1994 (Japan)
ptblank // (c) 1994 (GN2 World)
+ptblanka // (c) 1994 (GN2 World) - Alternate labels, NRx-SPR0 (X=1 to 9)
gunbuletj // (c) 1994 (GN1 Japan)
gunbuletw // (c) 1994 (GN3 World)
gslugrsj // (c) 1993 (Japan)
@@ -1076,6 +1087,7 @@ vnight
bldyr3b
rrvac
rrvac2
+rrvac1
wanganmd
dragchrn
netchu02
@@ -1096,9 +1108,11 @@ fghtjam
sukuinuf
zgundmdx
zoidsinf
+cobrata
gundzaft
soulclb3
soulclb3a
+soulclb3b
taiko7
taiko8
qgundam
@@ -1109,6 +1123,7 @@ sbxc
// Namco System 256
sys256
tekken51
+tekken51b
tekken5d
superdbz
kinniku
@@ -1236,6 +1251,7 @@ marioo // (c) 1983 Nintendo of America
marioj // (c) 1983 Nintendo
masao // bootleg
mariobl // bootleg
+mmagic // (c) 1979 Nintendo
dkong3abl //
pestplce // bootleg on donkey kong hw
spclforc // (c) 1985 Senko Industries (Magic Eletronics Inc. license)
@@ -1612,6 +1628,9 @@ huncholy // (c) 1984 Seatongrove (c) CVS
quasar // (c) 1980 Zelco Games Italy
quasara // (c) 1980 Zelco Games Italy
+// Unknown Century Electronics hardware (CVS?)
+spcwarp // 1983 Century Electronics UK LTD
+
// Midway "Astrocade" games
seawolf2 // (c) 1978
spacezap // (c) 1980
@@ -1807,6 +1826,7 @@ rtypej // (c) 1987 (Japan)
rtypejp // (c) 1987 (Japan)
rtypeu // (c) 1987 + Nintendo USA license (US)
rtypeb // bootleg
+rtypem82b // bootleg
bchopper // (c) 1987
mrheli // (c) 1987 (Japan)
nspirit // (c) 1988
@@ -1824,6 +1844,7 @@ dbreedm72 // (c) 1989
rtype2 // (c) 1989
rtype2j // (c) 1989 (Japan)
rtype2jc // (c) 1989 (Japan)
+rtype2m82b // bootleg
majtitle // (c) 1990 (World)
majtitlej // (c) 1990 (Japan)
hharry // (c) 1990 (World)
@@ -1833,10 +1854,13 @@ dkgensanm72 // (c) 1990 (Japan)
poundfor // (c) 1990 (World)
poundforj // (c) 1990 (Japan)
poundforu // (c) 1990 Irem America (US)
-airduel // (c) 1990 (Japan)
+airduelm72 // (c) 1990 (Japan)
+airduel // (c) 1990 (World)
cosmccop // (c) 1991 (World)
gallop // (c) 1991 (Japan)
-kengo // (c) 1991
+ltswords // (c) 1991 (World)
+kengo // (c) 1991 (Japan)
+kengoa // (c) 1991 (Japan)
// not M72, but same sound hardware
sichuan2 // (c) 1989 Tamtex
sichuan2a // (c) 1989 Tamtex
@@ -2490,6 +2514,7 @@ dariusgj // 1994.09 D87 (c) 1994 Taito Corporation (Japan)
dariusgu // 1994.11 D87 (c) 1994 Taito America Corporation (US)
dariusgx // 1994.?? D87 (c) 1994 Taito Corporation
bublbob2 // 1994.?? D90 (c) 1994 Taito Corporation Japan (World)
+bublbob2o // 1994.?? D90 (c) 1994 Taito Corporation Japan (World)
bublbob2p // prototype
bubsymphe // 1994.?? D90 (c) 1994 Taito Corporation Japan (Europe)
bubsymphu // 1994.10 D90 (c) 1994 Taito America Corporation (US)
@@ -2699,6 +2724,7 @@ dogyuun // TP-022 (c) 1992 Toaplan
dogyuuna // TP-022 (c) 1992 Toaplan
dogyuunt // TP-022 (c) 1992 Toaplan
kbash // TP-023 (c) 1993 Toaplan
+kbashk // TP-023 (c) 1993 Toaplan
kbash2 // bootleg
truxton2 // TP-024 (c) 1992 Toaplan
pipibibs // TP-025
@@ -2997,6 +3023,7 @@ gunsmoke // 11/1985 (c) 1985 (World)
gunsmokeb
gunsmokeu // 11/1985 (c) 1985 + Romstar (US)
gunsmokeua // 11/1985 (c) 1985 (US)
+gunsmokeub // 11/1985 (c) 1985 (US)
gunsmokej // 11/1985 (c) 1985 (Japan)
sectionz // 12/1985 (c) 1985
sectionza // 12/1985 (c) 1985
@@ -3029,6 +3056,7 @@ whizz // (c) 1989 Philko (NOT A CAPCOM GAME but runs on modified Sidea
avengers // 2/1987 (c) 1987 (US)
avengers2 // 2/1987 (c) 1987 (US)
buraiken // 2/1987 (c) 1987 (Japan)
+buraikenb // 2/1987 (c) 1987 (Japan)
bionicc // 3/1987 (c) 1987 (Euro)
bionicc1 // 3/1987 (c) 1987 (US)
bionicc2 // 3/1987 (c) 1987 (US)
@@ -3067,7 +3095,8 @@ lastduelb // bootleg
madgear // 2/1989 (c) 1989 (US)
madgearj // 2/1989 (c) 1989 (Japan)
ledstorm // 1988 (c) 1988 (US)
-ledstorm2 // 1988 (c) 1988 (US)
+leds2011 // 1988 (c) 1988 (World)
+leds2011u // 1988 (c) 1988 (US)
// 3/1989 Dokaben (baseball) - see below among "Mitchell" games
// 8/1989 Dokaben 2 (baseball) - see below among "Mitchell" games
// 10/1989 Capcom Baseball - see below among "Mitchell" games
@@ -3112,7 +3141,8 @@ ffighta // 12/1989 (c) 1989 (World)
ffightu // 12/1989 (c) 1989 (USA)
ffightu1 // 12/1989 (c) 1989 (USA)
ffightua // 12/01/1990 (c) 1989 (USA)
-ffightub // 13/06/1990 (c) 1989 (USA)
+ffightub // 24/04/1990 (c) 1989 (USA)
+ffightuc // 12/06/1990 (c) 1989 (USA)
ffightj // 12/1989 (c) 1989 (Japan)
ffightj1 // 12/01/1990 (c) 1989 (Japan)
ffightj2 // 05/03/1990 (c) 1989 (Japan)
@@ -3279,6 +3309,7 @@ megamana // 06/10/1995 (c) 1995 (Asia)
rockmanj // 22/09/1995 (c) 1995 (Japan)
fcrash // bootleg of Final Fight
ffightbl // bootleg
+ffightbla // bootleg
ganbare // 11/04/2000 (c) 2000 (Japan)
@@ -3445,7 +3476,7 @@ xmvsf // 04/10/1996 (c) 1996 (Euro)
xmvsfr1 // 10/09/1996 (c) 1996 (Euro)
xmvsfu // 23/10/1996 (c) 1996 (USA)
xmvsfur1 // 04/10/1996 (c) 1996 (USA)
-xmvsfur2 // 10/09/1996 (c) 1996 (USA)
+xmvsfur2 // 10/09/1996 (c) 1996 (USA)
xmvsfj // 04/10/1996 (c) 1996 (Japan)
xmvsfjr1 // 10/09/1996 (c) 1996 (Japan)
xmvsfjr2 // 09/09/1996 (c) 1996 (Japan)
@@ -3501,6 +3532,7 @@ mvscb // 23/01/1998 (c) 1998 (Brazil)
sfa3 // 04/09/1998 (c) 1998 (USA)
sfa3u // 04/09/1998 (c) 1998 (USA)
sfa3ur1 // 29/06/1998 (c) 1998 (USA)
+sfa3us // 16/06/1998 (c) 1998 (USA)
sfa3h // 04/09/1998 (c) 1998 (Hispanic)
sfa3hr1 // 29/06/1998 (c) 1998 (Hispanic)
sfa3b // 29/06/1998 (c) 1998 (Brazil)
@@ -3831,9 +3863,9 @@ soulclbrwb // 1998.?? Soul Calibur (World, SOC14/VER.B)
soulclbrub // 1998.?? Soul Calibur (US, SOC13/VER.B)
soulclbrjb // 1998.?? Soul Calibur (Japan, SOC11/VER.B)
soulclbrja // 1998.?? Soul Calibur (Japan, SOC11/VER.A2)
- // 1998.07 Techno Drive
+technodr // 1998.07 Techno Drive
mdhorse // 1998.11 Derby Quiz My Dream Horse (Japan, MDH1/VER.A2)
- // 1998.12 Attack Pla Rail
+aplarail // 1998.12 Attack Pla Rail
tenkomor // 1998.?? Tenkomori Shooting (Asia, TKM2/VER.A1)
tenkomorja // 1998.12 Tenkomori Shooting (Japan, TKM1/VER.A1)
pacapp // 1998.12 Paca Paca Passion (Japan, PPP1/VER.A2)
@@ -4509,8 +4541,8 @@ stactics // (c) 1981 Sega
turbo // (c) 1981 Sega
turboa // (c) 1981 Sega
turbob // (c) 1981 Sega
-turboc // (c) 1981 Sega
-turbod // (c) 1981 Sega
+turboc // (c) 1981 Sega
+turbod // (c) 1981 Sega
turbobl // bootleg
subroc3d // (c) 1982 Sega
buckrog // (c) 1982 Sega
@@ -4545,6 +4577,8 @@ enduror // (c) 1985 (FD1089B)
enduror1 // (c) 1985 (FD1089B)
endurob2 // (c) 1985 (Beta bootleg)
endurobl // (c) 1985 (Herb bootleg)
+endurord // bootleg
+enduror1d // bootleg
hangon // (c) 1985 (Rev A)
hangon1 // (c) 1985
hangon2 // (c) 1985
@@ -4587,6 +4621,13 @@ wb31 // (c) 1988 Sega / Westone (FD1094)
wb35 // (c) 1988 Sega / Westone (FD1089A)
passsht16a // (c) 1988 (FD1094)
+// System 16A decrypted bootlegs
+wb31d
+wb35d
+shinobi1d
+tetrisd
+tetris3d
+
// System 16B
aceattac // (c) 1988 (FD1094)
aliensyn // (c) 1987 (Unprotected)
@@ -4644,6 +4685,11 @@ riotcity // (c) 1991 Sega / Westone (Unprotected)
ryukyu // (c) 1990 (FD1094)
sdib // (c) 1987 (FD1089A)
sdibl // (c) 1987 bootleg
+sdibl2 // bootleg
+sdibl3 // bootleg
+sdibl4 // bootleg
+sdibl5 // bootleg
+sdibl6 // bootleg
defense // (c) 1987 (FD1094)
shinobi5 // (c) 1987 (Unprotected)
shinobi4 // (c) 1987 (MC-8123B)
@@ -4675,6 +4721,48 @@ fantzn2xp // (c) 2008 Sega / M2
atomicp // (c) 1990 Philko - korean clone board
snapper // (c) 1990 Philko - korean clone board
+// S16 decrypted bootlegs
+cottonjd
+cottond
+cottonud
+cottonjad
+sonicbomd
+ryukyud
+mvpd
+mvpjd
+exctleagd
+fpointd
+fpoint1d
+bulletd
+eswatd
+eswatud
+eswatjd
+eswatj1d
+passshtd
+passshtad
+passshtjd
+tetris2d
+tetris1d
+wb34d
+wb33d
+wb32d
+dduxd
+dduxjd
+goldnaxeud
+goldnaxe1d
+goldnaxe3d
+goldnaxejd
+hwchampjd
+altbeast5d
+altbeastj3d
+aurail1d
+aurailjd
+bayrouted
+bayroutejd
+wrestwar2d
+wrestwar1d
+shinobi2d
+
// S16 Bootlegs
bayrouteb1 // (c) 1989 (protected) (bootleg)
bayrouteb2 // (c) 1989 (protected) (bootleg)
@@ -4688,6 +4776,7 @@ passht4b // bootleg
passshtb // bootleg
shinoblb // (c) 1987 (but bootleg)
shinobld // (c) 1987 (but bootleg)
+shinoblda //
tetrisbl // (c) 1988 (but bootleg)
beautyb // (c) 1991 AMT
iqpipe // (c) 1991 AMT
@@ -4731,6 +4820,28 @@ desertbrj // 1992.10 Desert Breaker (Japan, FD1094)
pontoon
hamaway // prototype
+ddcrewd
+ddcrewud
+ddcrew2d
+ddcrew1d
+ddcrewjd
+ddcrewj2d
+cltchitrd
+cltchitrjd
+desertbrd
+desertbrjd
+lghostd
+lghostud
+astorm3d
+astormud
+astormjd
+bloxeedd
+mwalkd
+mwalkud
+mwalkjd
+wwallyjd
+wwallyjad
+
// System18 Bootlegs
astormbl // BOOTLEG
astormb2 // BOOTLEG
@@ -4764,6 +4875,12 @@ toutrun3 // 1987 (FD1094)
toutrun2 // 1987 (FD1094)
toutrun1 // 1987 (FD1094)
toutrunj1 // 1987 (FD1094)
+toutrund // bootleg
+toutrunjd // bootleg
+toutrun3d // bootleg
+toutrunj1d // bootleg
+toutrun2d // bootleg
+shangon3d // bootleg
// X Board
aburner // 1987.07 After Burner (Japan)
@@ -4787,11 +4904,30 @@ loffireu // 1990.04 Line of Fire (US, FD1094)
rachero // 1990.?? Racing Hero (World, FD1094)
abcop // 1990.?? A.B.Cop (World, FD1094)
abcopj // 1991.01 A.B.Cop (Japan, FD1094)
-gpriderj // 1990.10 GP Rider (Japan, FD1094)
-gprider // 1990.?? GP Rider (World, FD1094)
-gprideru // 1990.12 GP Rider (US, FD1094)
+gpriderjs // 1990.10 GP Rider (Japan, FD1094)
+gpriderj // as above
+gpriders // 1990.?? GP Rider (World, FD1094)
+gprider // as above
+gpriderus // 1990.12 GP Rider (US, FD1094)
+gprideru // as above
rascot // 1991.?? Royal Ascot (Japan)
+// decrypted X-Board bootlegs
+thndrbldd
+racherod
+smgpd
+smgp6d
+smgp5d
+smgpud
+smgpu1d
+smgpu2d
+smgpjd
+abcopd
+abcopjd
+lastsurvd
+loffired
+loffireud
+loffirejd
// Y-Board
// 1988.05 Galaxy Force (Japan)
@@ -5199,6 +5335,7 @@ tfrceac // (c) 1990 Sega / Technosoft
tfrceacj // (c) 1990 Sega / Technosoft
tfrceacb // bootleg
twinsqua // (c) 1991 Sega
+soniccar // (c) 1991 Sega
ribbit // (c) 1991 Sega
tantr // (c) 1992 Sega
tantrkor // (c) 1992 Sega
@@ -5364,6 +5501,8 @@ alpiltdx // 1999.?? Airline Pilots Deluxe (Rev B)
// 1999.?? Pocket Shooting
sambap // 1999.?? Samba de Amigo (prototype)
spawn // 1999.?? Spawn In the Demon's Hand
+ // 1999.?? Tokio Bus Guide
+ // 1999.?? Tokio Bus Guide (Rev A)
vtennisg // 1999.?? Virtua Tennis / Power Smash (GD-ROM)
18wheelr // 2000.01 18 Wheeler Deluxe (Rev A)
18wheels // 2000.01 18 Wheeler (Standard)
@@ -5376,9 +5515,9 @@ virnbao // 2000.02 Virtua NBA (original)
virnbap // 2000.02 Virtua NBA (prototype)
mvsc2 // 2000.03 Marvel Vs. Capcom 2 New Age of Heroes (Rev A)
smarinef // 2000.03 Sega Marine Fishing
-wldkicks // 2000.03 World Kicks (WK2 Ver. A)
-wldkicksa // 2000.03 World Kicks (WK3 Ver. A)
-wldkicksb // 2000.03 World Kicks PCB (WKC1 Ver. A)
+wldkicksa // 2000.03 World Kicks (Asia, WK2 Ver.A)
+wldkicks // 2000.03 World Kicks (US, WK3 Ver.A)
+wldkicksj // 2000.03 World Kicks PCB (Japan, WKC1 Ver.A)
pstone2 // 2000.04 Power Stone 2
toukon4 // 2000.04 Shin Nihon Prowrestling Toukon Retsuden 4 Arcade Edition (TRF1 Ver. A)
qmegamis // 2000.05 Quiz Ah Megamisama
@@ -5398,10 +5537,10 @@ cspike // 2000.10 Gun Spike / Cannon Spike
sstrkfgt // 2000.10 Sega Strike Fighter (Rev A, set 1)
sstrkfgta // 2000.10 Sega Strike Fighter (Rev A, set 2)
confmiss // 2000.10.11 Confidential Mission // First GD-ROM game?
-ninjaslt1 // 2000.11 Ninja Assault (NJA1 Ver. A)
-ninjaslt2 // 2000.11 Ninja Assault (NJA2 Ver. A)
-ninjaslt // 2000.11 Ninja Assault (NJA3 Ver. A)
-ninjaslt4 // 2000.11 Ninja Assault (NJA4 Ver. A)
+ninjasltj // 2000.11 Ninja Assault (Japan, NJA1 Ver.A)
+ninjaslta // 2000.11 Ninja Assault (Asia, NJA2 Ver.A)
+ninjasltu // 2000.11 Ninja Assault (US, NJA3 Ver.A)
+ninjaslt // 2000.11 Ninja Assault (World, NJA4 Ver.A)
wwfroyal // 2000.11 WWF Royal Rumble
sprtjam // 2000.11.13 Sports Jam
starhrcl // 2000.11.28 Star Horse (satellite)
@@ -5428,8 +5567,8 @@ crakndj2 // 2001.06 Crackin' DJ Part 2
hmgeo // 2001.06 Heavy Metal Geomatrix (Rev B)
wsbbgd // 2001.06 Super Major League / World Series Baseball
starseek // 2001.07 Dokidoki Idol Star Seeker
-gunsur2 // 2001.07 Gun Survivor 2 Biohazard Code: Veronica (BHF1)
-gunsur2e // 2001.07 Gun Survivor 2 Biohazard Code: Veronica (BHF2 Ver. E)
+gunsur2j // 2001.07 Gun Survivor 2 Biohazard Code: Veronica (Japan, BHF1 Ver.E)
+gunsur2 // 2001.07 Gun Survivor 2 Biohazard Code: Veronica (Asia, BHF2 Ver.E)
spkrbtl // 2001.07 Spikers Battle
cvs2gd // 2001.07.05 Capcom Vs. SNK 2 Millionaire Fighting 2001 (Rev A)
wrungp // 2001.08 Wave Runner GP
@@ -5453,8 +5592,8 @@ luptype // 2002.04 Lupin The Third - The Typing (Rev A)
cleoftp // 2002.05 Cleopatra Fortune Plus
ggxx // 2002.05 Guilty Gear XX
chocomk // 2002.06 Musapey's Choco Marker (Rev A)
-mazan // 2002.07 Mazan : Flash of the Blade (MAZ2 Ver. A)
-mazana // 2002.07 Mazan : Flash of the Blade (MAZ3 Ver. A)
+mazana // 2002.07 Mazan: Flash of the Blade (Asia, MAZ2 Ver.A)
+mazan // 2002.07 Mazan: Flash of the Blade (US, MAZ3 Ver.A)
// 2002.09 Yonin Uchi Mahjong MJ
azumanga // 2002.12 Azumanga Daiou Puzzle Bobble
moeru // 2002.12 Moeru Casinyo
@@ -5475,7 +5614,7 @@ psyvar2 // 2003.11 Psyvariar 2 - The Will To Fabricate
puyofev // 2003.11 Puyo Puyo Fever
starhrsp // 2003.12.01 Star Horse Progress (satellite) (Rev A)
// 2003.?? Dragon Treasure
-puyofevp // 2003.?? Puyo Puyo Fever (prototype)
+puyofevp // 2003.?? Puyo Puyo Fever (prototype ver 0.01)
shootpl // 2003.?? Shootout Pool The Medal / Shootout Pool Prize (Rev A)
cfield // 2004.06 Chaos Field
tetkiwam // 2004.06 Tetris Kiwamemichi (Arcade TV Game List - P.88, Right, 11 from bottom)
@@ -5485,19 +5624,19 @@ kick4csh // 2004.?? Kick '4' Cash
shootplm // 2004.?? Shootout Pool The Medal Ver. B / Shootout Pool Prize Ver. B
// 2004.?? The Quiz Show
meltyblo // 2005.03 Melty Blood Act Cadenza
-ss2005 // 2005.03 Super Shanghai 2005
-ss2005a // 2005.04 Super Shanghai 2005 (Rev A)
+ss2005o // 2005.03 Super Shanghai 2005
+ss2005 // 2005.04 Super Shanghai 2005 (Rev A)
senkoo // 2005.04 Senko no Ronde
senko // 2005.08 Senko no Ronde (Rev A)
meltybld // 2005.08 Melty Blood Act Cadenza Ver. A (Rev C)
ggxxsla // 2005.09 Guilty Gear XX Slash (Rev A)
-radirgy // 2005.10 Radirgy
+radirgyo // 2005.10 Radirgy
undefeat // 2005.10 Under Defeat
-radirgya // 2005.12.04 Radirgy (Rev A)
+radirgy // 2005.12.04 Radirgy (Rev A)
// 2005.?? Dragon Treasure 3 (Rev A)
// 2005.?? ExZeus
-mushik2e // 2005.?? Mushiking The King Of Beetles II ENG (Ver. 1.001)
-mushi2ea // 2005.?? Mushiking The King Of Beetles II ENG (Ver. 2.001)
+mushi2eo // 2005.?? Mushiking The King Of Beetles II ENG (Ver. 1.001)
+mushik2e // 2005.?? Mushiking The King Of Beetles II ENG (Ver. 2.001)
// 2005.?? MushiKing The King Of Beetle III
mushi2k5 // 2005.?? MushiKing The King Of Beetle 2K5 1st
kurucham // 2006.03 Kurukuru Chameleon
@@ -5507,9 +5646,9 @@ senkosp // 2006.08 Senkou no Rondo SP
jingystm // 2006.09 Jingi Storm
karous // 2006.11 Karous
ggxxac // 2006.11 Guilty Gear XX Accent Core
-meltyb // 2006.12 Melty Blood Act Cadenza Version B
+meltybo // 2006.12 Melty Blood Act Cadenza Version B
takoron // 2006.12.16 Noukone Puzzle Takoron
-meltyba // 2007.03 Melty Blood Act Cadenza Version B2 (Rev A) // Last GD-ROM game?
+meltyb // 2007.03 Melty Blood Act Cadenza Version B2 (Rev A) // Last GD-ROM game?
ndcfboxa // 2009.04.01 DIMM Firmware Updater for CF-BOX (Rev A)
ngdup23a // DIMM Firmware Updater (Rev A)
ngdup23c // DIMM Firmware Updater (Rev C)
@@ -5524,8 +5663,8 @@ rhytngk // 2007.09 Rhythm Tengoku
ausfache // 2008.02 Akatsuki Denkou Senki Ausf.Achse
illvelo // 2008.06 Illvelo (Illmatic Envelope)
mamonoro // 2008.07 Mamoru-kun wa Norowarete Shimatta!
-mbaa // 2008.09 Melty Blood Actress Again
-mbaaa // 2008.12 Melty Blood Actress Again Version A (Rev A)
+mbaao // 2008.09 Melty Blood Actress Again
+mbaa // 2008.12 Melty Blood Actress Again Version A (Rev A)
radirgyn // 2009.06 Radirgy Noa
starhrpr // 2009.07.27 Star Horse Progress Returns (satellite)
// 2009.?? Project Cerberus (planned to be released in 2009)
@@ -5551,18 +5690,18 @@ loveber3
// NAOMI 2
naomi2 // 2001.?? Naomi 2 BIOS
-vstrik3c // 2001.04 Virtua Striker 3 (cartridge)
-vstrik3cb // 2001.04 Virtua Striker 3 (Rev B) (cartridge)
+vstrik3co // 2001.04 Virtua Striker 3 (cartridge)
+vstrik3c // 2001.04 Virtua Striker 3 (Rev B) (cartridge)
vstrik3 // 2001.04.06 Virtua Striker 3 Ver. 2002
wldrider // 2001.05 Wild Riders
-clubkrte // 2001.06 Club Kart: European Session
-clubkrtd // 2001.06 Club Kart: European Session (Rev D)
+clubkrto // 2001.06 Club Kart: European Session
+clubkrt // 2001.06 Club Kart: European Session (Rev D)
beachspi // 2001.07 Beach Spikers
vf4cart // 2001.08.02 Virtua Fighter 4 (cartridge)
-vf4 // 2001.08.02 Virtua Fighter 4 (GD-ROM)
+vf4o // 2001.08.02 Virtua Fighter 4 (GD-ROM)
vf4b // 2001.08.20 Virtua Fighter 4 (Rev B) (cartridge)
clubkrtc // 2001.?? Club Kart: European Session (Rev C)
-vf4c // 2002.01.31 Virtua Fighter 4 (Rev C) (cartridge)
+vf4 // 2002.01.31 Virtua Fighter 4 (Rev C) (cartridge)
kingrt66 // 2002.02 The King of Route 66 (Rev A)
// 2002.02.14 Initial D Arcade Stage (Japan)
initd // 2002.03 Initial D Arcade Stage (Japan) (Rev B)
@@ -5726,8 +5865,8 @@ mj2c // 2004.12 Sega Network Taisen Mahjong MJ 2 (Rev C)
// 2004.12 Sega Network Taisen Mahjong MJ 2 (Rev D)
ghostsqu // 2004.12.09 Ghost Squad (Rev A)
// 2005.02 Sega Network Taisen Mahjong MJ 2 (Rev E)
-mj2f // 2005.02 Sega Network Taisen Mahjong MJ 2 (Rev F)
-mj2 // 2005.02.02 Sega Network Taisen Mahjong MJ 2 (Rev G)
+mj2 // 2005.02 Sega Network Taisen Mahjong MJ 2 (Rev F)
+mj2g // 2005.02.02 Sega Network Taisen Mahjong MJ 2 (Rev G)
// 2005.03 Sangokushi Taisen
gundamos // 2005.03 Gundam Battle Operating Simulator
// 2005.04 Quest of D Ver.1.20
@@ -5762,7 +5901,7 @@ scg06nt // 2005.12 Sega Golf Club 2006: Next Tours (Rev A)
// 2006.09 Sega Network Taisen Mahjong MJ 3 Evolution (Rev A)
// 2006.10 Quest of D Oukoku no Syugosya Ver.3.00
// 2006.11 Quest of D Oukoku no Syugosya Ver.3.01
-mj3evo // 2007.06 Sega Network Taisen Mahjong MJ 3 Evolution (Rev B)
+mj3evo // 2007.06 Sega Network Taisen Mahjong MJ 3 Evolution (Rev B)
// 2007.11 Quest of D The Battle Kingdom Ver.4.00
// 2008.01 Quest of D The Battle Kingdom Ver.4.00b
// 2008.02 Quest of D The Battle Kingdom Ver.4.00c
@@ -6020,7 +6159,8 @@ secretab // bootleg
midres // (c) 1989 Data East Corporation (World)
midresu // (c) 1989 Data East USA (US)
midresj // (c) 1989 Data East Corporation (Japan)
-midresb // (c) 1989 Data East Corporation (Japan)
+midresb // bootleg
+midresbj // bootleg
bouldash // (c) 1990 Data East Corporation (World)
bouldashj // (c) 1990 Data East Corporation (Japan)
// end of similar hardware
@@ -6130,10 +6270,12 @@ ragtime // MBD (c) 1992 (Japan, v1.5)
ragtimea // MBD (c) 1992 (Japan, v1.3)
dblewing // MBE (c) 1993 Mitchell
fghthist // MBF (c) 1993 Data East Corporation (World) DE-0380-2 PCB
-fghthistu // MBF (c) 1993 Data East Corporation (US) DE-0395-1 PCB
+fghthista // MBF (c) 1993 Data East Corporation (World) DE-0380-2 PCB
+fghthistu // MBF (c) 1993 Data East Corporation (US) DE-0396-0 PCB
fghthistua // MBF (c) 1993 Data East Corporation (US) DE-0395-1 PCB
+fghthistub // MBF (c) 1993 Data East Corporation (US) DE-0395-1 PCB
+fghthistuc // MBF (c) 1993 Data East Corporation (US) DE-0380-2 PCB
fghthistj // MBF (c) 1993 Data East Corporation (Japan) DE-0395-1 PCB
-fghthistub // MBF (c) 1993 Data East Corporation (US) DE-0380-2 PCB
fghthistja // MBF (c) 1993 Data East Corporation (Japan) DE-0380-2 PCB
fghthistjb // MBF (c) 1993 Data East Corporation (Japan) DE-0380-1 PCB
hvysmsh // MBG (c) 1993 Data East Corporation (World)
@@ -6150,8 +6292,9 @@ nslasheru // MBH (c) 1993 Data East Corporation (US)
lockload // MBM (c) 1994 Data East Corporation (World)
lockloadu // MBM (c) 1994 Data East Corporation (US)
gunhard // MBM (c) 1994 Data East Corporation (Japan)
-joemacr // MBN (c) 1994
-joemacra // MBN (c) 1994
+joemacr // MBN (c) 1994 Data East Corporation (World)
+joemacra // MBN (c) 1994 Data East Corporation (World)
+joemacrj // MBN (c) 1994 Data East Corporation (Japan)
// MBO ??
// MBP ??
// MBQ ??
@@ -6267,6 +6410,7 @@ wc90t // (c) 1989 Tecmo
wc90b1 // bootleg
wc90b2 // bootleg
wc90ba // bootleg
+pac90 // bootleg
spbactn // 9002 - (c) 1991 Tecmo
spbactnj // 9002 - (c) 1991 Tecmo
spbactnp // prototype
@@ -6311,6 +6455,7 @@ trackfldc // GX361 (c) 1983 + Centuri license
trackfldnz // (c) 1982 Goldberg Enterprizes Inc.
hyprolym // GX361 (c) 1983
hyprolymb // bootleg
+hyprolymba // bootleg
atlantol // bootleg
wizzquiz // (c) 1985 Konami
wizzquiza // (c) 1985 Zilec-Zenitone
@@ -6470,7 +6615,7 @@ esckids // GX975 (c) 1991 (Asia)
esckidsj // GX975 (c) 1991 (Japan)
vendetta // GX081 (c) 1991 (World)
vendettar // GX081 (c) 1991 (World)
-vendettaz // GX081 (c) 1991 (World)
+vendettaz // GX081 (c) 1991 (World)
vendetta2p // GX081 (c) 1991 (World)
vendetta2peba // GX081 (c) 1991 (World)
vendetta2pu // GX081 (c) 1991 (Asia)
@@ -6478,8 +6623,10 @@ vendetta2pd // GX081 (c) 1991 (Asia)
vendettaj // GX081 (c) 1991 (Japan)
mogura // GX141 (c) 1991
wecleman // GX602 (c) 1986
-wecleman2 // GX602?(c) 1988
+weclemana // GX602?(c) 1988
+weclemanb // GX602 (c) 1986
hotchase // GX763 (c) 1988
+hotchasea
chqflag // GX717 (c) 1988
chqflagj // GX717 (c) 1988 (Japan)
ultraman // GX910 (c) 1991 Banpresto/Bandai
@@ -6709,7 +6856,7 @@ soccerss // 1994.?? GX427 (Europe)
soccerssj // 1994.12 GX427 (Japan)
soccerssja // 1994.12 GX427 (Japan)
soccerssa // 1994.?? GX427 (Asia)
- // 1995.04 GX427 (US)
+soccerssu // 1995.04 GX427 (US)
// GX Type 4
vsnetscr // 1996.?? GX627 (Europe)
@@ -6791,6 +6938,8 @@ popn6 // GQA16 (c) 2001 (Japan)
popn7 // GCB00 (c) 2001 (Japan)
popnanm2 // GEA02 (c) 2001 (Japan)
popn8 // GQB30 (c) 2002 (Japan)
+bm3core // GCA05 (c) 2000 (Japan)
+bm36th // GCA21 (c) 2001 (Japan)
bm37th // GCB07 (c) 2002 (Japan JCA)
bm3final // GCC01 (c) 2003 (Japan JCA)
@@ -7127,6 +7276,7 @@ roadblst1 // 136048 (c) 1986, 1987
roadblstc // 136048 (c) 1986, 1987
roadblstcg // 136048 (c) 1986, 1987
roadblstc1 // 136048 (c) 1986, 1987
+roadblstgu // 136048 (c) 1986, 1987
// Atari System 2 games
// Paperboy
@@ -7827,6 +7977,7 @@ fatfurwa // 006 1999/01/28 Fatal Fury: Wild Ambition / Garou Densetsu: Wi
buriki // 007 1999/05/21 Buriki One
// Neo Print
+neoprint
npcartv1
98best44
nprsp
@@ -7999,6 +8150,7 @@ goaltogo // (c) 1983
// GamePlan games
toratora // (c) 1980 Game Plan
+toratorab // (c) 1980 Game Plan
megatack // (c) 1980 Centuri
killcom // (c) 1980 Centuri
challeng // (c) 1981 Centuri
@@ -8173,6 +8325,7 @@ mkla4 // (c) 1992 Midway
mkyawdim // bootleg
mkyawdim2 // bootleg
mkyawdim3 // bootleg
+mkyawdim4 // bootleg
term2 // (c) 1992 Midway
term2la3 // (c) 1992 Midway
term2la2 // (c) 1992 Midway
@@ -8199,6 +8352,7 @@ nbajamte2 // (c) 1994 Midway
nbajamte3 // (c) 1994 Midway
nbajamten // (c) 1995 Midway
revx // (c) 1994 Midway
+revxp5 // (c) 1994 Midway
mk3 // (c) 1994 Midway
mk3r20 // (c) 1994 Midway
mk3r10 // (c) 1994 Midway
@@ -8259,6 +8413,7 @@ sfrush // (c) 1996 Atari Games
sfrushrk // (c) 1996 Atari Games
calspeed // (c) 1996 Atari Games
calspeeda // (c) 1996 Atari Games
+calspeedb // (c) 1996 Atari Games
vaportrx // (c) 1998 Atari Games
vaportrxp // (c) 1998 Atari Games
carnevil // (c) 1998 Midway Games (v1.0.3)
@@ -8267,6 +8422,7 @@ biofreak // (c) 1997 Midway Games (prototype)
blitz // (c) 1997 Midway Games
blitz11 // (c) 1997 Midway Games
blitz99 // (c) 1998 Midway Games
+blitz99a // (c) 1998 Midway Games
blitz2k // (c) 1999 Midway Games
hyprdriv // (c) 1998 Midway Games
@@ -8279,8 +8435,10 @@ sf2049 // (c) 1999 Atari Games
sf2049se // (c) 1999 Atari Games
sf2049te // (c) 1999 Atari Games
warfa // (c) 1999 Atari Games
+warfaa // (c) 1999 Atari Games
nbashowt // (c) 1998 Midway Games
nbanfl // (c) 1999 Midway Games
+nbagold // (c) 2000 Midway Games
gauntdl // (c) 1999 Midway Games
gauntdl24 // (c) 1999 Midway Games
cartfury // (c) 2000 Midway Games
@@ -8333,6 +8491,8 @@ ccclass
tsclass
// Bromley
srockbwl
+// Smart Industries
+smartoss
// Cinematronics raster games
@@ -8470,7 +8630,8 @@ panicr // Seibu / Taito
panicrg // Seibu / TV-Tuning (Germany)
deadang // (c) 1988 Seibu Kaihatsu
leadang // (c) 1988 Seibu Kaihatsu
-ghunter // (c) 1988 Seibu Kaihatsu + Segasa/Sonic license
+ghunter // (c) 1988 Seibu Kaihatsu
+ghunters // (c) 1988 Seibu Kaihatsu + Segasa/Sonic license
dynduke // (c) 1989 Seibu Kaihatsu
dyndukea // (c) 1989 Seibu Kaihatsu
dyndukej // (c) 1989 Seibu Kaihatsu
@@ -8701,15 +8862,17 @@ jitsupro // (c) 1989 (Japan)
plusalph // (c) 1989
stdragon // (c) 1989
stdragona // (c) 1989
+stdragonb // bootleg
rodland // (c) 1990
rodlandj // (c) 1990 (Japan)
-rittam // Prototype or hack of Rod-Land
+rittam // Prototype or hack of Rod-Land
rodlandjb // bootleg
avspirit // (c) 1991
phantasm // (c) 1991 (Japan)
monkelf // bootleg
edf // (c) 1991
-edfu // (c) 1991
+edfa // (c) 1991
+edfu // (c) 1991 (North America)
edfbl // (c) 1991
64street // (c) 1991
64streetj // (c) 1991 (Japan)
@@ -8783,13 +8946,14 @@ pspikesk // (c) 1991 Video System Co. (Korea)
pspikesu // (c) 1991 Video System Co. (US)
svolly91 // (c) 1991 Video System Co. (Japan)
pspikesb // bootleg
+pspikesba // bootleg
spikes91 // bootleg
spikes91b // bootleg
pspikesc // bootleg
karatblz // (c) 1991 Video System Co.
karatblzu // (c) 1991 Video System Co. (US)
karatblzj // (c) 1991 Video System / Tecmo (Japan)
-karatblzbl // bootleg
+karatblzbl // bootleg
turbofrc // (c) 1991 Video System Co.
aerofgt // (c) 1992 Video System Co.
aerofgtb // (c) 1992 Video System Co.
@@ -8846,7 +9010,7 @@ baryona // (c) 1997 SemiCom
dreamwld // (c) 2000 SemiCom
rolcrush // (c) 1999 Trust
cutefght // (c) 1998 SemiCom
-gaialast // (c) 1999 SemiCom
+gaialast // (c) 1999 SemiCom
// SH2 board
s1945ii // (c) 1997
@@ -8912,6 +9076,7 @@ vastar4 // (c) 1983 Sesame Japan
// Gaelco 2D games
mastboy // (c) 1987 - No Ref on the PCB
mastboyi // (c) 1987 - No Ref on the PCB
+mastboyia // (c) 1987 - No Ref on the PCB
xorworld // (c) 1990 - prototype
bigkarnk // (c) 1991 - Ref 901112-1
// Master Boy 2 // (c) 1991 - Ref ???
@@ -8958,6 +9123,7 @@ surfplnt // (c) 1997 - Ref 971223
surfplnt40 // (c) 1997 - Ref 970514
radikalb // (c) 1998 - Ref ???
radikalba // (c) 1998 - Ref ???
+rollext // (c) 1999 - Ref 991015
// SH-4 hardware
atvtrack // (c) 2002 - Ref 020419
@@ -9012,6 +9178,7 @@ galpani3hk // (c) 1995 Kaneko (Hong Kong)
berlwall // (c) 1991 Kaneko
berlwallt // (c) 1991 Kaneko
berlwallk // (c) 1991 Kaneko (Korea, Inter license)
+packbang // (c) 1994 Kaneko (prototype)
mgcrystl // (c) 1991 Kaneko (World)
mgcrystlo // (c) 1991 Kaneko (World)
mgcrystlj // (c) 1991 Kaneko + distributed by Atlus (Japan)
@@ -9117,6 +9284,7 @@ zingzip // UY (c) 1992 Allumer + Tecmo
zingzipbl // bootleg
atehate // (C) 1993 Athena
jjsquawk // (c) 1993 Athena / Able
+jjsquawko // (c) 1993 Athena / Able
jjsquawkb // bootleg
jjsquawkb2 // bootleg
kamenrid // (c) 1993 Toei / Banpresto
@@ -9270,7 +9438,8 @@ spacecho // bootleg
spacecho2 // bootleg
route16 // (c) 1981 Tehkan/Sun + Centuri license
route16a // (c) 1981 Tehkan/Sun + Centuri license
-route16b // bootleg
+route16c // (c) 1981 Tehkan/Sun + Centuri license
+route16bl // bootleg
routex // bootleg
ttmahjng // Taito
fnkyfish // (c) 1981 Sun Electronics
@@ -9319,6 +9488,7 @@ srangern // (c) 1988 SunA (NOVA License)
srangerw // (c) 1988 SunA (WDK License)
hardhead // (c) 1988 SunA
hardheadb // bootleg
+hardheadb2 // bootleg
pop_hh // bootleg
sparkman // (c) 1989 SunA
sparkmana // (c) 1989 SunA
@@ -9504,6 +9674,7 @@ puzzlet // (c) 2000 Yunizu Corporation (Japan)
spcforce // (c) 1980 Venture Line
spcforc2 // bootleg
meteor // (c) 1981 Venture Line
+meteors // (c) 1981 Amusement World
looping // (c) 1982 Video Games GmbH
loopingv // (c) 1982 Video Games GmbH (Venture Line license)
loopingva // (c) 1982 Video Games GmbH (Venture Line license)
@@ -9533,6 +9704,7 @@ magicbuba // (c) Yun Sung
magicbubb // (c) Yun Sung
shocking // (c) 1997 Yun Sung
shockingk // (c) 1997 Yun Sung
+shockingko // (c) 1997 Yun Sung
bombkick // (c) 1998 Yun Sung
bombkicka // (c) 1998 Yun Sung
nmg5 // (c) 1998 Yun Sung
@@ -9546,6 +9718,7 @@ pclubysa // (c) 2000 Yun Sung
garogun // (c) 2000 Yun Sung
7ordi // (c) 2002 Yun Sung
wondstck // (c) ???? Yun Sung
+wondstcka // (c) ???? Yun Sung
// Zilec games
blueprnt // (c) 1982 Bally Midway (Zilec in ROM 3U, and the programmer names)
@@ -9632,103 +9805,106 @@ mjsenka // (c) 1986 Visco
mjyarou // (c) 1986 Visco / Video System
mjclub // (c) 1986 Xex
daisyari // (c) 1989 Best System
-suzume // ?? (c) 1986 Dyna Electronics
+ippatsu // 01? (c) 1986 Dyna Electronics
hnayayoi // "02" (c) 1987 Dyna Electronics
dondenmj // "03" (c) 1986 Dyna Electronics
-ippatsu // ?? (c) 1986 Dyna Electronics
+suzume // 04? (c) 1986 Dyna Electronics
+makaijan // "05" (c) 1987 Dynax
hnfubuki // "06" (c) 1987 Dynax
mjdiplob // "07" (c) 1987 Dynax
untoucha // "08" (c) 1987 Dynax
tontonb // "09" (c) 1987 Dynax
-makaijan // ?? (c) 1987 Dynax
+mjapinky // "14" (c) 1988 Dynax
hanamai // "16" (c) 1988 Dynax
majs101b // "17" (c) [1988] Dynax
-janyuki // "??" (c) 1988 Dynax
-mjapinky // 1988 Dynax
-mjdejavu // 1989 Dynax
-mjdejav2 // 1989 Dynax
+janyuki // ?? (c) 1988 Dynax
hnkochou // "20" (c) 1989 Dynax
+mjdejavu // "21" (c) 1989 Dynax
+mjdejav2 // "21" (c) 1989 Dynax
mjderngr // "22" (c) 1989 Dynax
hnoridur // "23" (c) 1989 Dynax
drgpunch // "24" (c) 1989 Dynax
-mjfriday // "26" (c) [1989] Dynax
+mjfriday // "26" (c) 1989 Dynax
jantouki // "27" Jantouki 1989 Dynax
-gekisha // "28" 1989 Dynax
-mjifb // "29" 1990 Dynax
-mjifb2 // "29" 1990 Dynax
-mjifb3 // "29" 1990 Dynax
-mjvegas // 1991 Dynax
-mjvegasa // 1991 Dynax
-cafetime // 1992 Dynax
-cafedoll // 1993 Dynax
-janptr96 // 1996 Dynax
-janptrsp // 1997 Dynax
+gekisha // "28" (c) 1989 Dynax
+mjifb // "29" (c) 1990 Dynax
+mjifb2 // "29" (c) 1990 Dynax
+mjifb3 // "29" (c) 1990 Dynax
sprtmtch // "31" (c) 1989 Dynax + Fabtek license
-maya // (c) 1994 Promat
-mayaa // (c) 1994 Promat
-mayab // (c) 1994 Promat
-mayac // (c) 1994 Promat
-inca // (c) 199? ????
-blktouch // (c) Yang Gi Co Ltd.
mcnpshnt // "33" Mahjong Campus Hunting 1990 Dynax
7jigen // "37" 7jigen no Youseitachi 1990 Dynax
mjembase // "38" Mahjong Electromagnetic Base 1989 Dynax
+majxtal7 // "40" (c) 1990 Dynax
neruton // "45" Mahjong Neruton Haikujiradan 1990 Dynax
nerutona // "45" Mahjong Neruton Haikujiradan 1990 Dynax
-mjcomv1 // 1991 Dynax
-shpeng // (c) 1995 WSAC Systems
-tenkai // 1991 Dynax
-tenkai2b // 1991 Dynax
-tenkaibb // 1991 Dynax
-tenkaicb // 1991 Dynax
-tenkaie // 1991 Dynax
-ougonpai // 1991 Dynax
-ougonpaib // bootleg
-htengoku // 1992 Dynax
-cdracula // 1994 Y.S.E.
-mjreach // 1994 Dynax
+hjingi // ?? (c) 1990 Dynax
+hjingia // ?? (c) 1990 Dynax
+tenkai // (c) 1991 Dynax
+tenkai2b // (c) 1991 bootleg
+tenkaibb // (c) 1991 bootleg
+tenkaicb // (c) 1991 bootleg
+tenkaie // (c) 1991 Dynax
+mjvegas // "50" 1991 Dynax
+mjvegasa // "50" 1991 Dynax
mjdialq2 // "52" (c) 1991 Dynax
mjdialq2a // "52" (c) 1991 Dynax
yarunara // "55" Mahjong Yarunara 1991 Dynax
-mjangels // "61" Mahjong Angels 1991 Dynax
+hanayara // "55" (c) 1991 Dynax
+mjcomv1 // "61" (c) 1991 Dynax
+mjangels // "612" Mahjong Angels 1991 Dynax
+ougonpai // "62" (c) 1991 Dynax
+ougonpaib // "62" (c) 1991 bootleg
+cafetime // "63" (c) 1992 Dynax
quiztvqq // "64" Quiz TV Gassyuukoku Q&Q 1992 Dynax
-mmpanic // "70" 1992 Nakanihon/Taito
+htengoku // "65" (c) 1992 Dynax
+mmpanic // "70" (c) 1992 Nakanihon/Taito
+mjmyornt // "71" (c) 1992 Dynax
+mjmyorn2 // "71?" (c) 1993 Dynax
+mjelctrn // ?? Mahjong Electron Base parts 2 & 4
+mjelct3 // ?? Mahjong Electron Base parts 2 & 3
+mjelct3a // ?? Mahjong Electron Base parts 2 & 3
+mjelctrb // ?? (c) 1993 bootleg Mahjong Electron Base parts 2 & 4
quizchq // "73" (c) 1993 Nakanihon
quizchql // "73" (c) 1993 Laxan
funkyfig // "74" (c) 1993 Nakanihon + East Technology
-funkyfiga //
-animaljr // "75" 1993 Nakanihon/Taito (USA)
-animaljrs // "75" 1993 Nakanihon/Taito (Spanish version)
-animaljrj // "75" 1993 Nakanihon/Taito (Japan)
-hginga // 1994 Dynax
-mjmyster // "?7" 1994 Dynax
-mjmywrld // "?7" 1994 Dynax
-mjmyornt // 1994 Dynax
-mjmyuniv // 1994 Dynax
+funkyfiga // "74" (c) 1993 Nakanihon + East Technology
+animaljr // "75" (c) 1993 Nakanihon/Taito (USA)
+animaljrs // "75" (c) 1993 Nakanihon/Taito (Spanish version)
+animaljrj // "75" (c) 1993 Nakanihon/Taito (Japan)
+cafedoll // "76" (c) 1993 Dynax
+mjmyster // "77" (c) 1994 Dynax
+mjmywrld // "77" (c) 1994 Dynax
quiz365 // "78" (c) 1994 Nakanihon
quiz365t // "78" (c) 1994 Nakanihon (Taiwan)
rongrong // "80" (c) 1994 Nakanihon
rongrongj // "80" (c) 1994 Nakanihon
rongrongg // "80" (c) 1994 Nakanihon
-hgokbang // "116" (c) 1995 Dynax
-mjtensin // "100" 1995 Dynax
+hginga // "81" (c) 1994 Dynax
+mjmyuniv // "85" (c) 1994 Dynax
+mjreach // (c) 1994 bootleg
+cdracula // (c) 1994 Y.S.E.
+mjtensin // "100" (c) 1995 Dynax
hparadis // "101" (c) 1994 Nakanihon
nettoqc // "103" (c) 1995 Nakanihon
ultrchmp // "104" (c) 1995 Nakanihon
ultrchmph // "114" (c) 1995 Nakanihon
-majrjhdx // "105" 1996 Dynax
+majrjhdx // "105" (c) 1996 Dynax
hgokou // "108" (c) 1995 Dynax (Alba license)
mjdchuka // "111" (c) 1995 Nakanihon
ddenlovj // "112" (c) 1995 Dynax (Japan)
ddenlovrk // "113" (c) 1995 Dynax (Korea)
ddenlovr // "113" (c) 1996 Dynax (Hong Kong)
+mjschuka // "115" (c) 1995 Dynax
+hgokbang // "116" (c) 1995 Dynax
mjchuuka // "121" (c) 1998 Dynax
ddenlovrb // bootleg
-mjflove // "500" 1996 Dynax
-akamaru // "501" 1996 Dynax
-sryudens // "502" 1996 Dynax / Face
-hanakanz // "507" 1996 Dynax
+mjflove // "500" (c) 1996 Dynax
+akamaru // "501" (c) 1996 Dynax
+sryudens // "502" (c) 1996 Dynax / Face
+janptr96 // "503" (c) 1996 Dynax
+hanakanz // "507" (c) 1996 Dynax
hkagerou // "510" Hana Kagerou 1996 Nakanihon
+janptrsp // "511" (c) 1997 Dynax
realbrkj // "523" Billiard Academy Real Break 1998 (Japan)
dai2kaku // "522" DaiDaiKakumei (Japan)
mjreach1 // "526" Mahjong Reach Ippatsu 1998 Nihon System/Dynax
@@ -9740,23 +9916,23 @@ realbrko // "600" Billiard Academy Real Break 1998 (Europe)
realbrkk // "600" Billiard Academy Real Break 1998 (Korea)
janshinp // "700j" 1996 Dynax / Sigma
dtoyoken // "700d" 1996 Dynax / Sigma
-cafepara // 1999 Techno-Top
-daimyojn // 2002 Dynax / Techno-Top
-momotaro // 2004 Techno-Top
+cafepara // "001" 1999 Techno-Top
+mjgnight // "003" 2000 Techno-Top
+daimyojn // "017" 2002 Dynax / Techno-Top
+momotaro // "027" 2004 Techno-Top
kotbinyo // 1997 Dynax / Shinwhajin
-kotbinsp // 1997 Dynax / Shinwhajin
+kotbinsp // "909" 1997 Dynax / Shinwhajin
pkgnsh // "505" Pachinko Gindama Shoubu 1998 (Japan)
pkgnshdx // "522" Pachinko Gindama Shoubu DX 1998 (Japan)
-hjingi // "???" 1990 Dynax
-hjingia // "???" 1990 Dynax
-hanayara // "???"
-mjelctrn // "???" Mahjong Electron Base parts 2 & 4
-mjelct3 // "???" Mahjong Electron Base parts 2 & 3
-mjelct3a // "???" Mahjong Electron Base parts 2 & 3
-mjelctrb // (c) 1993 Dynax Mahjong Electron Base parts 4
-majxtal7 // "???"
+maya // (c) 1994 Promat
+mayaa // (c) 1994 Promat
+mayab // (c) 1994 Promat
+mayac // (c) 1994 Promat
+inca // (c) 199? ????
+blktouch // (c) Yang Gi Co Ltd.
+shpeng // (c) 1995 WSAC Systems
// Sigma games
nyny // (c) 1980 Sigma Ent. Inc.
@@ -9809,6 +9985,7 @@ igs_ncs // (c) 198? IGS
igs_ncs2 // (c) 2000 IGS
spk115it // (c) 199? IGS
spk116it // (c) 199? IGS
+kungfu // (c) 1992 IGS
jackie // (c) 1993 IGS
pktet346 // (c) 199? IGS
cpokerx // (c) 1993 IGS
@@ -9871,8 +10048,12 @@ tarzana // (c) 1999?
starzan // (c) 2000?
// IGS027A Cpu Games
+slqz3 // (c) 1999
+amazonia // (c) 1999
+fruitpar // (c) 200?
zhongguo // (c) 2000
sdwx // (c) 2002
+amazoni2 // (c) 2002
sddz // (c) 200?
lhzb3 // (c) 200?
lhzb4 // (c) 200?
@@ -9899,6 +10080,7 @@ orlegendc //
orlegendca //
orlegend111c //
orlegend111t //
+orlegend111k //
orlegend105k //
drgw2 // (c) 1997 Dragon World 2
dw2v100x //
@@ -10316,6 +10498,8 @@ ringking2 // (c) 1985 Data East USA
ringking3 // (c) 1985 Data East USA
ringkingw // (c) 1985 Wood Place Inc.
dlair // (c) 1983 Cinematronics
+dlair_1 // (c) 1983 Cinematronics
+dlair_2 // (c) 1983 Cinematronics
dlairf // (c) 1983 Cinematronics
dlaire // (c) 1983 Cinematronics
dlaird // (c) 1983 Cinematronics
@@ -10369,9 +10553,9 @@ taxidriv // [1984 Graphic Techno]
xyonix // [1989 Philko]
gt507uk // (c) 1986 Grayhound Electronics
gtsers8 // (c) 1984 Greyhound Electronics
+gtsers8a // (c) 1984 Greyhound Electronics
gtsers9 // (c) 1984 Greyhound Electronics
gtsers10 // (c) 1984 Greyhound Electronics
-gtsers10a // (c) 1984 Greyhound Electronics
gtsers11 // (c) 1984 Greyhound Electronics
gtsers11a // (c) 1984 Greyhound Electronics
gtsers12 // (c) 1984 Greyhound Electronics
@@ -10596,6 +10780,7 @@ heuksun // (c) 1998 Oksan / F2 System
bestri // (c) F2 System
silvmil // (c) 1995 Para
puzzlove // (c) 1994 Para
+puzzlovek // (c) 1994 Para
funybubl // (c) 1999 In Chang Electronic Co
funybublc // (c) 1999 Comad Industries
dcheese // (c) 1993 HAR
@@ -10661,7 +10846,8 @@ pitbossa // (c) 1983 Merit
pitbossa1 // (c) 1983 Merit
pitbossb // (c) 1983 Merit
pitbossc // (c) 1983 Merit
-casino5 // (c) 1983 Merit
+casino5 // (c) 1984 Merit
+mroundup // (c) 1984 Merit
trvwzh // (c) 1985 Merit
trvwzha // (c) 1985 Merit
trvwzhb // (c) 1985 Merit
@@ -10686,6 +10872,8 @@ riviera // (c) 1987 Merit
rivieraa // (c) 1986 Merit
rivierab // (c) 1986 Merit
americna // (c) 1987 Merit
+americnaa // (c) 1987 Merit
+meritjp // (c) 1987 Merit
dodgecty // (c) 1988 Merit
dodgectya // (c) 1986 Merit
dodgectyb // (c) 1986 Merit
@@ -10982,6 +11170,7 @@ lastfght // (c) 2000 Subsino
xplan // (c) 2006 Subsino
sliver // (c) 1996 Hollow Corp
+slivera //
intrscti // ????
pasha2 // (c) 1998 Dong Sung
trvmadns // (c) 1985 Thunderhead Inc.
@@ -11183,10 +11372,14 @@ pepp0040a // (c) 1987 IGT - International Game Technology
pepp0040b // (c) 1987 IGT - International Game Technology
pepp0041 // (c) 1987 IGT - International Game Technology
pepp0042 // (c) 1987 IGT - International Game Technology
+pepp0042a // (c) 1987 IGT - International Game Technology
pepp0043 // (c) 1987 IGT - International Game Technology
pepp0043a // (c) 1987 IGT - International Game Technology
pepp0043b // (c) 1987 IGT - International Game Technology
pepp0045 // (c) 1987 IGT - International Game Technology
+pepp0045a // (c) 1987 IGT - International Game Technology
+pepp0045b // (c) 1987 IGT - International Game Technology
+pepp0045c // (c) 1987 IGT - International Game Technology
pepp0046 // (c) 1987 IGT - International Game Technology
pepp0046a // (c) 1987 IGT - International Game Technology
pepp0046b // (c) 1987 IGT - International Game Technology
@@ -11196,6 +11389,7 @@ pepp0053 // (c) 1987 IGT - International Game Technology
pepp0055 // (c) 1987 IGT - International Game Technology
pepp0055a // (c) 1987 IGT - International Game Technology
pepp0055b // (c) 1987 IGT - International Game Technology
+pepp0055c // (c) 1987 IGT - International Game Technology
pepp0057 // (c) 1987 IGT - International Game Technology
pepp0057a // (c) 1987 IGT - International Game Technology
pepp0059 // (c) 1987 IGT - International Game Technology
@@ -11279,6 +11473,7 @@ pepp0426 // (c) 1987 IGT - International Game Technology
pepp0428 // (c) 1987 IGT - International Game Technology
pepp0429 // (c) 1987 IGT - International Game Technology
pepp0429a // (c) 1987 IGT - International Game Technology
+pepp0430 // (c) 1987 IGT - International Game Technology
pepp0431 // (c) 1987 IGT - International Game Technology
pepp0434 // (c) 1987 IGT - International Game Technology
pepp0447 // (c) 1987 IGT - International Game Technology
@@ -11289,6 +11484,7 @@ pepp0452 // (c) 1987 IGT - International Game Technology
pepp0454 // (c) 1987 IGT - International Game Technology
pepp0455 // (c) 1987 IGT - International Game Technology
pepp0458 // (c) 1987 IGT - International Game Technology
+pepp0459 // (c) 1987 IGT - International Game Technology
pepp0467 // (c) 1987 IGT - International Game Technology
pepp0488 // (c) 1987 IGT - International Game Technology
pepp0508 // (c) 1987 IGT - International Game Technology
@@ -11300,6 +11496,7 @@ pepp0514b // (c) 1987 IGT - International Game Technology
pepp0515 // (c) 1987 IGT - International Game Technology
pepp0515a // (c) 1987 IGT - International Game Technology
pepp0515b // (c) 1987 IGT - International Game Technology
+pepp0515c // (c) 1987 IGT - International Game Technology
pepp0516 // (c) 1987 IGT - International Game Technology
pepp0516a // (c) 1987 IGT - International Game Technology
pepp0516b // (c) 1987 IGT - International Game Technology
@@ -11310,6 +11507,7 @@ pepp0540 // (c) 1987 IGT - International Game Technology
pepp0542 // (c) 1987 IGT - International Game Technology
pepp0542a // (c) 1987 IGT - International Game Technology
pepp0550 // (c) 1987 IGT - International Game Technology
+pepp0555 // (c) 1987 IGT - International Game Technology
pepp0568 // (c) 1987 IGT - International Game Technology
pepp0585 // (c) 1987 IGT - International Game Technology
pepp0713 // (c) 1987 IGT - International Game Technology
@@ -11349,9 +11547,13 @@ pemg0183 // (c) 1994 IGT - International Game Technology
pemg0252 // (c) 1994 IGT - International Game Technology
pebe0014 // (c) 1994 IGT - International Game Technology
pebe0014a // (c) 1994 IGT - International Game Technology
+peke0004 // (c) 1994 IGT - International Game Technology
peke0017 // (c) 1994 IGT - International Game Technology
+peke1006 // (c) 1994 IGT - International Game Technology
peke1012 // (c) 1994 IGT - International Game Technology
+peke1012a // (c) 1994 IGT - International Game Technology
peke1013 // (c) 1994 IGT - International Game Technology
+peke1013a // (c) 1994 IGT - International Game Technology
peps0014 // (c) 1996 IGT - International Game Technology
peps0021 // (c) 1996 IGT - International Game Technology
peps0022 // (c) 1996 IGT - International Game Technology
@@ -11419,6 +11621,7 @@ pex0242p // (c) 1995 IGT - International Game Technology
pex0265p // (c) 1995 IGT - International Game Technology
pex0291p // (c) 1995 IGT - International Game Technology
pex0417p // (c) 1995 IGT - International Game Technology
+pex0426p // (c) 1995 IGT - International Game Technology
pex0430p // (c) 1995 IGT - International Game Technology
pex0434p // (c) 1995 IGT - International Game Technology
pex0447p // (c) 1995 IGT - International Game Technology
@@ -11482,6 +11685,7 @@ pex2150p // (c) 1995 IGT - International Game Technology
pex2172p // (c) 1995 IGT - International Game Technology
pex2172pa // (c) 1995 IGT - International Game Technology
pex2173p // (c) 1995 IGT - International Game Technology
+pex2179p // (c) 1995 IGT - International Game Technology
pex2180p // (c) 1995 IGT - International Game Technology
pex2241p // (c) 1995 IGT - International Game Technology
pex2244p // (c) 1995 IGT - International Game Technology
@@ -11495,6 +11699,7 @@ pex2275p // (c) 1995 IGT - International Game Technology
pex2276p // (c) 1995 IGT - International Game Technology
pex2283p // (c) 1995 IGT - International Game Technology
pex2284p // (c) 1995 IGT - International Game Technology
+pex2287p // (c) 1995 IGT - International Game Technology
pex2297p // (c) 1995 IGT - International Game Technology
pex2302p // (c) 1995 IGT - International Game Technology
pex2303p // (c) 1995 IGT - International Game Technology
@@ -11538,6 +11743,7 @@ pexm003p // (c) 1997 IGT - International Game Technology
pexm004p // (c) 1997 IGT - International Game Technology
pexm005p // (c) 1997 IGT - International Game Technology
pexm006p // (c) 1997 IGT - International Game Technology
+pexm006pa // (c) 1997 IGT - International Game Technology
pexm007p // (c) 1997 IGT - International Game Technology
pexm008p // (c) 1997 IGT - International Game Technology
pexm009p // (c) 1997 IGT - International Game Technology
@@ -11757,6 +11963,7 @@ showhand // (c) 2000 Astro Corp.
showhanc // (c) 2000 Astro Corp.
skilldrp // (c) 2002 Astro Corp.
speeddrp // (c) 2003 Astro Corp.
+dinodino // (c) 2003? Astro Corp.
astoneag // (c) 2004? Astro Corp.
winbingo // (c) 2005? Astro Corp.
winbingoa // (c) 2005? Astro Corp.
@@ -12225,7 +12432,7 @@ ssjkrpkr // (c) 1982 Southern Systems & Assembly, Ltd.
fastdrwp // Stern?
dphlunka // SMS Manufacturing Corp?
dphlunkb // SMS Manufacturing Corp?
-//pkii_dm // Unknown Poker PKII/DM (misplaced roms)
+pkii_dm // Unknown Poker PKII/DM
// Sanki Denshi Kogyo
pachifev // (c) 1983?
@@ -12831,7 +13038,7 @@ cdibios // Base unit
quizard // (c) TAB Austria 199?
quizard_17 // (c) TAB Austria 1996
quizard_12 // (c) TAB Austria 1996
-quizard_10 // (c) TAB Austria 1996
+quizard_10 // (c) TAB Austria 1996
quizard2 // (c) TAB Austria 1995
quizard2_22 // (c) TAB Austria 199?
quizard3 // (c) TAB Austria 1996
@@ -13026,7 +13233,7 @@ tvpoker // (c) 197? A-1 Supply
sburners // (c) 1975 Allied Leisure
fun4 // (c) 1976 Bailey
fun4a // (c) 1976 Bailey
-destdrby // (c) 1976 Chicago Coin
+dmodrbcc // (c) 1976 Chicago Coin
avenger // (c) 1975 Electra
attckexd // (c) 1977 Exidy
attckexd2 // (c) 1977 Exidy
@@ -13034,12 +13241,13 @@ deathrac // (c) 1976 Exidy
biplane4 // (c) 1976 Fun Games
take5 // (c) 1975 Fun Games
dpatrol // (c) 1977 PSE
-bballrmt // (c) 1974 Ramtek
-cleanswp // (c) 1974 Ramtek
vollyrmt // (c) 1973 Ramtek
+hockyrmt // (c) 1973 Ramtek
+soccrrmt // (c) 1973 Ramtek
wipeormt // (c) 1974 Ramtek
+cleanswp // (c) 1974 Ramtek
+bballrmt // (c) 1974 Ramtek
trivia // (c) 1976 Ramtek
-ramtek3 // (c) 197? Ramtek
monacogp // (c) 1980 Sega
monacogpa // (c) 1980 Sega
gunman // (c) 1977 Taito
@@ -32136,3 +32344,18 @@ amusco // 1987, Amusco.
cocoloco // 198?, Petaco S.A.
alinvade
+
+joystand // 1997 Yuvo
+chexx83 // 1983 ICE
+faceoffh // 1983 SoftLogic / Entertainment Enterprises
+
+// Doyle & Assoc.
+piggypas
+hoopshot
+rndrndqs
+fidlstix
+jackbean
+dumpump
+3lilpigs
+
+wackygtr // Wacky Gator
diff --git a/src/mess/audio/alesis.c b/src/mame/audio/alesis.c
index 7a253db43a2..7a253db43a2 100644
--- a/src/mess/audio/alesis.c
+++ b/src/mame/audio/alesis.c
diff --git a/src/mess/audio/arcadia.c b/src/mame/audio/arcadia.c
index 306932a0b44..306932a0b44 100644
--- a/src/mess/audio/arcadia.c
+++ b/src/mame/audio/arcadia.c
diff --git a/src/mess/audio/arcadia.h b/src/mame/audio/arcadia.h
index fa54ba1c0a1..fa54ba1c0a1 100644
--- a/src/mess/audio/arcadia.h
+++ b/src/mame/audio/arcadia.h
diff --git a/src/mame/audio/atarijsa.c b/src/mame/audio/atarijsa.c
index 69180d61031..b4a8cc67501 100644
--- a/src/mame/audio/atarijsa.c
+++ b/src/mame/audio/atarijsa.c
@@ -629,6 +629,7 @@ atari_jsa_i_device::atari_jsa_i_device(const machine_config &mconfig, const char
: atari_jsa_base_device(mconfig, ATARI_JSA_I, "Atari JSA I Sound Board", tag, owner, clock, "atjsa1", 2),
m_pokey(*this, "pokey"),
m_tms5220(*this, "tms"),
+ m_jsai(*this, "JSAI"),
m_pokey_volume(1.0),
m_tms5220_volume(1.0)
{
@@ -653,7 +654,7 @@ READ8_MEMBER( atari_jsa_i_device::rdio_r )
// 0x01 = coin 1
//
- UINT8 result = ioport("JSAI")->read();
+ UINT8 result = m_jsai->read();
if (!m_test_read_cb())
result ^= 0x80;
if (m_tms5220 != NULL && m_tms5220->readyq_r() == 0)
@@ -841,6 +842,7 @@ void atari_jsa_i_device::update_all_volumes()
atari_jsa_ii_device::atari_jsa_ii_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: atari_jsa_oki_base_device(mconfig, ATARI_JSA_II, "Atari JSA II Sound Board", tag, owner, clock, "atjsa2", 1)
+ , m_jsaii(*this, "JSAII")
{
}
@@ -863,7 +865,7 @@ READ8_MEMBER( atari_jsa_ii_device::rdio_r )
// 0x01 = coin 1
//
- UINT8 result = ioport("JSAII")->read();
+ UINT8 result = m_jsaii->read();
if (!m_test_read_cb())
result ^= 0x80;
@@ -904,11 +906,13 @@ ioport_constructor atari_jsa_ii_device::device_input_ports() const
atari_jsa_iii_device::atari_jsa_iii_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: atari_jsa_oki_base_device(mconfig, ATARI_JSA_III, "Atari JSA III Sound Board", tag, owner, clock, "atjsa3", 1)
+ , m_jsaiii(*this, "JSAIII")
{
}
atari_jsa_iii_device::atari_jsa_iii_device(const machine_config &mconfig, device_type devtype, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, int channels)
: atari_jsa_oki_base_device(mconfig, devtype, name, tag, owner, clock, shortname, channels)
+ , m_jsaiii(*this, "JSAIII")
{
}
@@ -931,7 +935,7 @@ READ8_MEMBER( atari_jsa_iii_device::rdio_r )
// 0x01 = coin R (active high)
//
- UINT8 result = ioport("JSAIII")->read();
+ UINT8 result = m_jsaiii->read();
if (!m_test_read_cb())
result ^= 0x90;
return result;
diff --git a/src/mame/audio/atarijsa.h b/src/mame/audio/atarijsa.h
index e1866d1c75c..3ae12a653dc 100644
--- a/src/mame/audio/atarijsa.h
+++ b/src/mame/audio/atarijsa.h
@@ -200,6 +200,7 @@ protected:
// devices
optional_device<pokey_device> m_pokey;
optional_device<tms5220_device> m_tms5220;
+ required_ioport m_jsai;
// internal state
double m_pokey_volume;
@@ -222,6 +223,8 @@ protected:
// device level overrides
virtual machine_config_constructor device_mconfig_additions() const;
virtual ioport_constructor device_input_ports() const;
+
+ required_ioport m_jsaii;
};
@@ -245,6 +248,8 @@ protected:
// device level overrides
virtual machine_config_constructor device_mconfig_additions() const;
virtual ioport_constructor device_input_ports() const;
+
+ required_ioport m_jsaiii;
};
diff --git a/src/mame/audio/cage.c b/src/mame/audio/cage.c
index 9f3718e5114..7253f46de74 100644
--- a/src/mame/audio/cage.c
+++ b/src/mame/audio/cage.c
@@ -337,7 +337,7 @@ void atari_cage_device::update_serial()
m_serial_period_per_word = bit_clock_period * (8 * (((tms32031_io_regs[SPORT_GLOBAL_CTL] >> 18) & 3) + 1));
/* compute the step value to stretch this to the sample_rate */
- freq = ATTOSECONDS_TO_HZ(m_serial_period_per_word.attoseconds) / DAC_BUFFER_CHANNELS;
+ freq = ATTOSECONDS_TO_HZ(m_serial_period_per_word.attoseconds()) / DAC_BUFFER_CHANNELS;
if (freq > 0 && freq < 100000)
{
dmadac_set_frequency(&m_dmadac[0], DAC_BUFFER_CHANNELS, freq);
@@ -409,7 +409,7 @@ WRITE32_MEMBER( atari_cage_device::tms32031_io_w )
case SPORT_DATA_TX:
#if (DAC_BUFFER_CHANNELS == 4)
- if ((int)ATTOSECONDS_TO_HZ(m_serial_period_per_word.attoseconds) == 22050*4 && (tms32031_io_regs[SPORT_RX_CTL] & 0xff) == 0x62)
+ if ((int)ATTOSECONDS_TO_HZ(m_serial_period_per_word.attoseconds()) == 22050*4 && (tms32031_io_regs[SPORT_RX_CTL] & 0xff) == 0x62)
tms32031_io_regs[SPORT_RX_CTL] ^= 0x800;
#endif
break;
diff --git a/src/mess/audio/channelf.c b/src/mame/audio/channelf.c
index c9e07cbd43c..c9e07cbd43c 100644
--- a/src/mess/audio/channelf.c
+++ b/src/mame/audio/channelf.c
diff --git a/src/mess/audio/channelf.h b/src/mame/audio/channelf.h
index f227eb67c07..f227eb67c07 100644
--- a/src/mess/audio/channelf.h
+++ b/src/mame/audio/channelf.h
diff --git a/src/mess/audio/dai_snd.c b/src/mame/audio/dai_snd.c
index ae0bf3c79c3..ae0bf3c79c3 100644
--- a/src/mess/audio/dai_snd.c
+++ b/src/mame/audio/dai_snd.c
diff --git a/src/mess/audio/dai_snd.h b/src/mame/audio/dai_snd.h
index c1e5ae598e7..c1e5ae598e7 100644
--- a/src/mess/audio/dai_snd.h
+++ b/src/mame/audio/dai_snd.h
diff --git a/src/mess/audio/dave.c b/src/mame/audio/dave.c
index 4adae892e16..4adae892e16 100644
--- a/src/mess/audio/dave.c
+++ b/src/mame/audio/dave.c
diff --git a/src/mess/audio/dave.h b/src/mame/audio/dave.h
index 9bab709bd62..9bab709bd62 100644
--- a/src/mess/audio/dave.h
+++ b/src/mame/audio/dave.h
diff --git a/src/mame/audio/dcs.c b/src/mame/audio/dcs.c
index 591a17647eb..3e41f761ade 100644
--- a/src/mame/audio/dcs.c
+++ b/src/mame/audio/dcs.c
@@ -1955,7 +1955,7 @@ void dcs_audio_device::recompute_sample_rate()
/* now put it down to samples, so we know what the channel frequency has to be */
sample_period = sample_period * (16 * m_channels);
- dmadac_set_frequency(&m_dmadac[0], m_channels, ATTOSECONDS_TO_HZ(sample_period.attoseconds));
+ dmadac_set_frequency(&m_dmadac[0], m_channels, ATTOSECONDS_TO_HZ(sample_period.attoseconds()));
dmadac_enable(&m_dmadac[0], m_channels, 1);
/* fire off a timer which will hit every half-buffer */
diff --git a/src/mess/audio/gamate.c b/src/mame/audio/gamate.c
index 15ed48d22b6..19555dd7c44 100644
--- a/src/mess/audio/gamate.c
+++ b/src/mame/audio/gamate.c
@@ -193,7 +193,7 @@ WRITE8_MEMBER( gamate_sound_device::device_w )
size = reg[chan*2] | ((reg[chan*2+1] & 0xf) << 8);
if (size)
{
- m_channels[chan].size= (int) (machine().sample_rate() * size*ClockDelay / machine().device("maincpu")->unscaled_clock());
+ m_channels[chan].size= (int) (machine().sample_rate() * size*ClockDelay / m_clock);
}
else
{
@@ -205,7 +205,7 @@ WRITE8_MEMBER( gamate_sound_device::device_w )
size=data&0x1f;
if (size==0)
size=1;
- noise.step= machine().device("maincpu")->unscaled_clock() / (1.0*ClockDelay*machine().sample_rate()*size);
+ noise.step= m_clock / (1.0*ClockDelay*machine().sample_rate()*size);
break;
case 7:
m_channels[Right].full_cycle=data&1;
@@ -229,7 +229,7 @@ WRITE8_MEMBER( gamate_sound_device::device_w )
size = reg[0xb] | ((reg[0xc]) << 8);
if (size==0)
size=1;
- envelope.step= machine().device("maincpu")->unscaled_clock() / (1.0*ClockDelay*machine().sample_rate()*size);
+ envelope.step= m_clock / (1.0*ClockDelay*machine().sample_rate()*size);
break;
case 0xd:
envelope.control=data&0xf;
diff --git a/src/mess/audio/gb.c b/src/mame/audio/gb.c
index 71925f030bf..181eb7ad2fb 100644
--- a/src/mess/audio/gb.c
+++ b/src/mame/audio/gb.c
@@ -506,11 +506,11 @@ void gameboy_sound_device::sound_w_internal( int offset, UINT8 data )
if (!m_snd_control.on)
{
sound_w_internal(NR10, 0x80);
- sound_w_internal(NR11, 0x3F);
- sound_w_internal(NR12, 0x00);
- sound_w_internal(NR13, 0xFE);
+ sound_w_internal(NR11, 0xBF);
+ sound_w_internal(NR12, 0xF3);
+ sound_w_internal(NR13, 0xFF);
sound_w_internal(NR14, 0xBF);
-// sound_w_internal(NR20, 0xFF);
+ //sound_w_internal(NR20, 0xFF);
sound_w_internal(NR21, 0x3F);
sound_w_internal(NR22, 0x00);
sound_w_internal(NR23, 0xFF);
@@ -520,13 +520,13 @@ void gameboy_sound_device::sound_w_internal( int offset, UINT8 data )
sound_w_internal(NR32, 0x9F);
sound_w_internal(NR33, 0xFF);
sound_w_internal(NR34, 0xBF);
-// sound_w_internal(NR40, 0xFF);
+ //sound_w_internal(NR40, 0xFF);
sound_w_internal(NR41, 0xFF);
sound_w_internal(NR42, 0x00);
sound_w_internal(NR43, 0x00);
sound_w_internal(NR44, 0xBF);
- sound_w_internal(NR50, 0x00);
- sound_w_internal(NR51, 0x00);
+ sound_w_internal(NR50, 0x77);
+ sound_w_internal(NR51, 0xF3);
m_snd_1.on = 0;
m_snd_2.on = 0;
m_snd_3.on = 0;
diff --git a/src/mess/audio/gb.h b/src/mame/audio/gb.h
index c86cad02b76..c86cad02b76 100644
--- a/src/mess/audio/gb.h
+++ b/src/mame/audio/gb.h
diff --git a/src/mame/audio/hng64.c b/src/mame/audio/hng64.c
index fe8775e702a..11caed9b98b 100644
--- a/src/mame/audio/hng64.c
+++ b/src/mame/audio/hng64.c
@@ -1,5 +1,5 @@
// license:LGPL-2.1+
-// copyright-holders:David Haywood, Angelo Salese, ElSemi, Andrew Gardner, Andrew Zaferakis
+// copyright-holders:David Haywood, Angelo Salese, ElSemi, Andrew Gardner
/* Hyper NeoGeo 64 Audio */
// uses a V53A ( == V33A with extra peripherals eg. DMA, Timers, MMU giving virtual 24-bit address space etc.)
@@ -207,7 +207,7 @@ WRITE16_MEMBER(hng64_state::hng64_sound_port_0008_w)
READ16_MEMBER(hng64_state::hng64_sound_port_0008_r)
{
// read in irq5
- printf("%08x: hng64_sound_port_0008_r mask (%04x)\n", space.device().safe_pc(), mem_mask);
+ //printf("%08x: hng64_sound_port_0008_r mask (%04x)\n", space.device().safe_pc(), mem_mask);
return 0;
}
@@ -276,12 +276,12 @@ WRITE16_MEMBER(hng64_state::sound_comms_w)
case 0xa:
/* correct? */
m_audiocpu->set_input_line(5, CLEAR_LINE);
- if(data)
- printf("IRQ ACK %02x?\n",data);
+ //if(data)
+ // printf("IRQ ACK %02x?\n",data);
return;
}
- printf("SOUND W %02x %04x\n",offset*2,data);
+ //printf("SOUND W %02x %04x\n",offset*2,data);
}
READ16_MEMBER(hng64_state::sound_comms_r)
@@ -293,7 +293,7 @@ READ16_MEMBER(hng64_state::sound_comms_r)
case 0x06:
return main_latch[1];
}
- printf("SOUND R %02x\n",offset*2);
+ //printf("SOUND R %02x\n",offset*2);
return 0;
}
@@ -370,7 +370,7 @@ WRITE_LINE_MEMBER(hng64_state::tcu_tm2_cb)
if(i > 7)
i = 7;
- printf("trigger %02x %d\n",i,state);
+ //printf("trigger %02x %d\n",i,state);
//if(machine().input().code_pressed_once(KEYCODE_C))
{
diff --git a/src/mame/audio/irem.c b/src/mame/audio/irem.c
index 06de09520d7..6a765ce5a69 100644
--- a/src/mame/audio/irem.c
+++ b/src/mame/audio/irem.c
@@ -12,15 +12,31 @@
#include "audio/irem.h"
-const device_type IREM_AUDIO = &device_creator<irem_audio_device>;
-
-irem_audio_device::irem_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, IREM_AUDIO, "Irem Audio", tag, owner, clock, "irem_audio", __FILE__),
- device_sound_interface(mconfig, *this),
- m_port1(0),
- m_port2(0)
- //m_ay_45L(*this, "ay_45l"),
- //m_ay_45M(*this, "ay_45m")
+const device_type IREM_M62_AUDIO = &device_creator<m62_audio_device>;
+const device_type IREM_M52_SOUNDC_AUDIO = &device_creator<m52_soundc_audio_device>;
+const device_type IREM_M52_LARGE_AUDIO = &device_creator<m52_large_audio_device>;
+
+irem_audio_device::irem_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
+ : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ m_port1(0),
+ m_port2(0)
+ //m_ay_45L(*this, "ay_45l"),
+ //m_ay_45M(*this, "ay_45m")
+{
+}
+
+m62_audio_device::m62_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : irem_audio_device(mconfig, IREM_M62_AUDIO, "Irem M62 Audio", tag, owner, clock, "irem_m62_audio", __FILE__)
+{
+}
+
+m52_soundc_audio_device::m52_soundc_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : irem_audio_device(mconfig, IREM_M52_SOUNDC_AUDIO, "Irem M52 SoundC Audio", tag, owner, clock, "irem_m52_soundc_audio", __FILE__)
+{
+}
+
+m52_large_audio_device::m52_large_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
+ : irem_audio_device(mconfig, IREM_M52_LARGE_AUDIO, "Irem M52 Large Audio", tag, owner, clock, "irem_m52_large_audio", __FILE__)
{
}
@@ -40,16 +56,16 @@ void irem_audio_device::device_config_complete()
void irem_audio_device::device_start()
{
- m_adpcm1 = machine().device<msm5205_device>("msm1");
- m_adpcm2 = machine().device<msm5205_device>("msm2");
- m_ay_45L = machine().device<ay8910_device>("ay_45l");
- m_ay_45M = machine().device<ay8910_device>("ay_45m");
+ m_adpcm1 = subdevice<msm5205_device>("msm1");
+ m_adpcm2 = subdevice<msm5205_device>("msm2");
+ m_ay_45L = subdevice<ay8910_device>("ay_45l");
+ m_ay_45M = subdevice<ay8910_device>("ay_45m");
- m_audio_BD = machine().device<netlist_mame_logic_input_t>("snd_nl:ibd");
- m_audio_SD = machine().device<netlist_mame_logic_input_t>("snd_nl:isd");
- m_audio_OH = machine().device<netlist_mame_logic_input_t>("snd_nl:ioh");
- m_audio_CH = machine().device<netlist_mame_logic_input_t>("snd_nl:ich");
- m_audio_SINH = machine().device<netlist_mame_logic_input_t>("snd_nl:sinh");
+ m_audio_BD = subdevice<netlist_mame_logic_input_t>("snd_nl:ibd");
+ m_audio_SD = subdevice<netlist_mame_logic_input_t>("snd_nl:isd");
+ m_audio_OH = subdevice<netlist_mame_logic_input_t>("snd_nl:ioh");
+ m_audio_CH = subdevice<netlist_mame_logic_input_t>("snd_nl:ich");
+ m_audio_SINH = subdevice<netlist_mame_logic_input_t>("snd_nl:sinh");
save_item(NAME(m_port1));
save_item(NAME(m_port2));
@@ -71,7 +87,7 @@ WRITE8_MEMBER( irem_audio_device::cmd_w )
if ((data & 0x80) == 0)
drvstate->soundlatch_byte_w(space, 0, data & 0x7f);
else
- space.machine().device("iremsound")->execute().set_input_line(0, ASSERT_LINE);
+ subdevice("iremsound")->execute().set_input_line(0, ASSERT_LINE);
}
@@ -139,8 +155,8 @@ READ8_MEMBER( irem_audio_device::m6803_port2_r )
* Pin21, 6803 (Port 21) tied with 4.7k to +5V
*
*/
- printf("port2 read\n");
- return 0;
+ //printf("port2 read\n"); // used by 10yard
+ return 0x0;
}
@@ -193,7 +209,7 @@ WRITE8_MEMBER( irem_audio_device::ay8910_45L_porta_w )
WRITE8_MEMBER( irem_audio_device::sound_irq_ack_w )
{
- space.machine().device("iremsound")->execute().set_input_line(0, CLEAR_LINE);
+ subdevice("iremsound")->execute().set_input_line(0, CLEAR_LINE);
}
@@ -228,7 +244,7 @@ WRITE8_MEMBER( irem_audio_device::m62_adpcm_w )
void irem_audio_device::adpcm_int(int st)
{
- machine().device("iremsound")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+ subdevice("iremsound")->execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
/* the first MSM5205 clocks the second */
if (m_adpcm2 != NULL)
@@ -352,31 +368,31 @@ DISCRETE_SOUND_END
/* complete address map verified from Moon Patrol/10 Yard Fight schematics */
/* large map uses 8k ROMs, small map uses 4k ROMs; this is selected via a jumper */
-static ADDRESS_MAP_START( m52_small_sound_map, AS_PROGRAM, 8, driver_device )
+static ADDRESS_MAP_START( m52_small_sound_map, AS_PROGRAM, 8, irem_audio_device )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
- AM_RANGE(0x0000, 0x0fff) AM_DEVWRITE("irem_audio", irem_audio_device, m52_adpcm_w)
- AM_RANGE(0x1000, 0x1fff) AM_DEVWRITE("irem_audio", irem_audio_device, sound_irq_ack_w)
+ AM_RANGE(0x0000, 0x0fff) AM_WRITE(m52_adpcm_w)
+ AM_RANGE(0x1000, 0x1fff) AM_WRITE(sound_irq_ack_w)
AM_RANGE(0x2000, 0x7fff) AM_ROM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( m52_large_sound_map, AS_PROGRAM, 8, driver_device )
- AM_RANGE(0x0000, 0x1fff) AM_DEVWRITE("irem_audio", irem_audio_device, m52_adpcm_w)
- AM_RANGE(0x2000, 0x3fff) AM_DEVWRITE("irem_audio", irem_audio_device, sound_irq_ack_w)
+static ADDRESS_MAP_START( m52_large_sound_map, AS_PROGRAM, 8, irem_audio_device )
+ AM_RANGE(0x0000, 0x1fff) AM_WRITE(m52_adpcm_w)
+ AM_RANGE(0x2000, 0x3fff) AM_WRITE(sound_irq_ack_w)
AM_RANGE(0x4000, 0xffff) AM_ROM
ADDRESS_MAP_END
/* complete address map verified from Kid Niki schematics */
-static ADDRESS_MAP_START( m62_sound_map, AS_PROGRAM, 8, driver_device )
- AM_RANGE(0x0800, 0x0800) AM_MIRROR(0xf7fc) AM_DEVWRITE("irem_audio", irem_audio_device, sound_irq_ack_w)
- AM_RANGE(0x0801, 0x0802) AM_MIRROR(0xf7fc) AM_DEVWRITE("irem_audio", irem_audio_device, m62_adpcm_w)
+static ADDRESS_MAP_START( m62_sound_map, AS_PROGRAM, 8, irem_audio_device )
+ AM_RANGE(0x0800, 0x0800) AM_MIRROR(0xf7fc) AM_WRITE(sound_irq_ack_w)
+ AM_RANGE(0x0801, 0x0802) AM_MIRROR(0xf7fc) AM_WRITE(m62_adpcm_w)
AM_RANGE(0x4000, 0xffff) AM_ROM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( irem_sound_portmap, AS_IO, 8, driver_device )
- AM_RANGE(M6801_PORT1, M6801_PORT1) AM_DEVREADWRITE("irem_audio", irem_audio_device, m6803_port1_r, m6803_port1_w)
- AM_RANGE(M6801_PORT2, M6801_PORT2) AM_DEVREADWRITE("irem_audio", irem_audio_device, m6803_port2_r, m6803_port2_w)
+static ADDRESS_MAP_START( irem_sound_portmap, AS_IO, 8, irem_audio_device )
+ AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READWRITE(m6803_port1_r, m6803_port1_w)
+ AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READWRITE(m6803_port2_r, m6803_port2_w)
ADDRESS_MAP_END
/*
@@ -399,10 +415,10 @@ NETLIST_START(kidniki_interface)
#if (USE_FRONTIERS)
SOLVER(Solver, 18000)
- PARAM(Solver.ACCURACY, 1e-7)
+ PARAM(Solver.ACCURACY, 1e-8)
PARAM(Solver.NR_LOOPS, 300)
PARAM(Solver.GS_LOOPS, 1)
- PARAM(Solver.GS_THRESHOLD, 99)
+ PARAM(Solver.GS_THRESHOLD, 6)
PARAM(Solver.ITERATIVE, "SOR")
PARAM(Solver.PARALLEL, 1)
PARAM(Solver.SOR_FACTOR, 1.00)
@@ -452,7 +468,7 @@ NETLIST_START(kidniki_interface)
ALIAS(I_SINH0, SINH_DUMMY.2)
#endif
- NET_MODEL(".model AY8910PORT FAMILY(OVL=0.05 OVH=4.95 ORL=100.0 ORH=0.5k)")
+ NET_MODEL("AY8910PORT FAMILY(OVL=0.05 OVH=4.95 ORL=100.0 ORH=0.5k)")
LOGIC_INPUT(I_SD0, 1, "AY8910PORT")
//CLOCK(I_SD0, 5)
@@ -496,13 +512,11 @@ static MACHINE_CONFIG_FRAGMENT( irem_audio_base )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("irem_audio", IREM_AUDIO, 0)
-
MCFG_SOUND_ADD("ay_45m", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */
MCFG_AY8910_OUTPUT_TYPE(AY8910_RESISTOR_OUTPUT)
MCFG_AY8910_RES_LOADS(2000.0, 2000.0, 2000.0)
- MCFG_AY8910_PORT_A_READ_CB(READ8(driver_device, soundlatch_byte_r))
- MCFG_AY8910_PORT_B_WRITE_CB(DEVWRITE8("irem_audio", irem_audio_device, ay8910_45M_portb_w))
+ MCFG_AY8910_PORT_A_READ_CB(DEVREAD8(":", driver_device, soundlatch_byte_r))
+ MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(irem_audio_device, ay8910_45M_portb_w))
MCFG_SOUND_ROUTE_EX(0, "snd_nl", 1.0, 0)
MCFG_SOUND_ROUTE_EX(1, "snd_nl", 1.0, 1)
MCFG_SOUND_ROUTE_EX(2, "snd_nl", 1.0, 2)
@@ -510,13 +524,13 @@ static MACHINE_CONFIG_FRAGMENT( irem_audio_base )
MCFG_SOUND_ADD("ay_45l", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */
MCFG_AY8910_OUTPUT_TYPE(AY8910_RESISTOR_OUTPUT)
MCFG_AY8910_RES_LOADS(2000.0, 2000.0, 2000.0)
- MCFG_AY8910_PORT_A_WRITE_CB(DEVWRITE8("irem_audio", irem_audio_device, ay8910_45L_porta_w))
+ MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(irem_audio_device, ay8910_45L_porta_w))
MCFG_SOUND_ROUTE_EX(0, "snd_nl", 1.0, 3)
MCFG_SOUND_ROUTE_EX(1, "snd_nl", 1.0, 4)
MCFG_SOUND_ROUTE_EX(2, "snd_nl", 1.0, 5)
MCFG_SOUND_ADD("msm1", MSM5205, XTAL_384kHz) /* verified on pcb */
- MCFG_MSM5205_VCLK_CB(DEVWRITELINE("irem_audio", irem_audio_device, adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(irem_audio_device, adpcm_int)) /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* default to 4KHz, but can be changed at run time */
MCFG_SOUND_ROUTE_EX(0, "snd_nl", 1.0, 6)
@@ -567,23 +581,21 @@ MACHINE_CONFIG_FRAGMENT( m52_sound_c_audio )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("irem_audio", IREM_AUDIO, 0)
-
MCFG_SOUND_ADD("ay_45m", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */
MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT | AY8910_DISCRETE_OUTPUT)
MCFG_AY8910_RES_LOADS(470, 0, 0)
- MCFG_AY8910_PORT_A_READ_CB(READ8(driver_device, soundlatch_byte_r))
- MCFG_AY8910_PORT_B_WRITE_CB(DEVWRITE8("irem_audio", irem_audio_device, ay8910_45M_portb_w))
+ MCFG_AY8910_PORT_A_READ_CB(DEVREAD8(":", driver_device, soundlatch_byte_r))
+ MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(irem_audio_device, ay8910_45M_portb_w))
MCFG_SOUND_ROUTE_EX(0, "filtermix", 1.0, 0)
MCFG_SOUND_ADD("ay_45l", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */
MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT | AY8910_DISCRETE_OUTPUT)
MCFG_AY8910_RES_LOADS(470, 0, 0)
- MCFG_AY8910_PORT_A_WRITE_CB(DEVWRITE8("irem_audio", irem_audio_device, ay8910_45L_porta_w))
+ MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(irem_audio_device, ay8910_45L_porta_w))
MCFG_SOUND_ROUTE_EX(0, "filtermix", 1.0, 1)
MCFG_SOUND_ADD("msm1", MSM5205, XTAL_384kHz) /* verified on pcb */
- MCFG_MSM5205_VCLK_CB(DEVWRITELINE("irem_audio", irem_audio_device, adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(irem_audio_device, adpcm_int)) /* interrupt function */
MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* default to 4KHz, but can be changed at run time */
MCFG_SOUND_ROUTE_EX(0, "filtermix", 1.0, 2)
@@ -593,11 +605,38 @@ MACHINE_CONFIG_FRAGMENT( m52_sound_c_audio )
MACHINE_CONFIG_END
-MACHINE_CONFIG_DERIVED( m52_large_audio, irem_audio_base ) /* 10 yard fight */
+MACHINE_CONFIG_FRAGMENT( m52_large_audio) /* 10 yard fight */
/* basic machine hardware */
- MCFG_CPU_MODIFY("iremsound")
+ MCFG_CPU_ADD("iremsound", M6803, XTAL_3_579545MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(m52_large_sound_map)
+ MCFG_CPU_IO_MAP(irem_sound_portmap)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_SOUND_ADD("ay_45m", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */
+ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT | AY8910_DISCRETE_OUTPUT)
+ MCFG_AY8910_RES_LOADS(470, 0, 0)
+ MCFG_AY8910_PORT_A_READ_CB(DEVREAD8(":", driver_device, soundlatch_byte_r))
+ MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(irem_audio_device, ay8910_45M_portb_w))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_SOUND_ADD("ay_45l", AY8910, XTAL_3_579545MHz/4) /* verified on pcb */
+ MCFG_AY8910_OUTPUT_TYPE(AY8910_SINGLE_OUTPUT | AY8910_DISCRETE_OUTPUT)
+ MCFG_AY8910_RES_LOADS(470, 0, 0)
+ MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(irem_audio_device, ay8910_45L_porta_w))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_SOUND_ADD("msm1", MSM5205, XTAL_384kHz) /* verified on pcb */
+ MCFG_MSM5205_VCLK_CB(WRITELINE(irem_audio_device, adpcm_int)) /* interrupt function */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S96_4B) /* default to 4KHz, but can be changed at run time */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_SOUND_ADD("msm2", MSM5205, XTAL_384kHz) /* verified on pcb */
+ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* default to 4KHz, but can be changed at run time, slave */
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
MACHINE_CONFIG_END
@@ -608,10 +647,17 @@ MACHINE_CONFIG_DERIVED( m62_audio, irem_audio_base )
MCFG_CPU_PROGRAM_MAP(m62_sound_map)
MACHINE_CONFIG_END
-//-------------------------------------------------
-// sound_stream_update - handle a stream update
-//-------------------------------------------------
+machine_config_constructor m62_audio_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( m62_audio );
+}
+
+machine_config_constructor m52_soundc_audio_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( m52_sound_c_audio );
+}
-void irem_audio_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
+machine_config_constructor m52_large_audio_device::device_mconfig_additions() const
{
+ return MACHINE_CONFIG_NAME( m52_large_audio );
}
diff --git a/src/mame/audio/irem.h b/src/mame/audio/irem.h
index aa59e4e5c63..4e7fd6161a8 100644
--- a/src/mame/audio/irem.h
+++ b/src/mame/audio/irem.h
@@ -4,11 +4,10 @@
#include "sound/msm5205.h"
#include "machine/netlist.h"
-class irem_audio_device : public device_t,
- public device_sound_interface
+class irem_audio_device : public device_t
{
public:
- irem_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ irem_audio_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
~irem_audio_device() {}
DECLARE_WRITE8_MEMBER( cmd_w );
@@ -31,9 +30,6 @@ protected:
virtual void device_config_complete();
virtual void device_start();
- // sound stream update overrides
- virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
-
private:
// internal state
UINT8 m_port1;
@@ -53,8 +49,31 @@ private:
netlist_mame_logic_input_t * m_audio_CH;
};
-MACHINE_CONFIG_EXTERN( m52_sound_c_audio );
-MACHINE_CONFIG_EXTERN( m52_large_audio );
-MACHINE_CONFIG_EXTERN( m62_audio );
+class m62_audio_device : public irem_audio_device
+{
+public:
+ m62_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ virtual machine_config_constructor device_mconfig_additions() const;
+};
+
+class m52_soundc_audio_device : public irem_audio_device
+{
+public:
+ m52_soundc_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ virtual machine_config_constructor device_mconfig_additions() const;
+};
+
+class m52_large_audio_device : public irem_audio_device
+{
+public:
+ m52_large_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ virtual machine_config_constructor device_mconfig_additions() const;
+};
+
+//MACHINE_CONFIG_EXTERN( m52_sound_c_audio );
+//MACHINE_CONFIG_EXTERN( m52_large_audio );
+//MACHINE_CONFIG_EXTERN( m62_audio );
-extern const device_type IREM_AUDIO;
+extern const device_type IREM_M62_AUDIO;
+extern const device_type IREM_M52_SOUNDC_AUDIO;
+extern const device_type IREM_M52_LARGE_AUDIO;
diff --git a/src/mame/audio/leland.c b/src/mame/audio/leland.c
index 1e3ba863bce..d860cf43a2a 100644
--- a/src/mame/audio/leland.c
+++ b/src/mame/audio/leland.c
@@ -128,7 +128,7 @@ WRITE_LINE_MEMBER(leland_80186_sound_device::i80186_tmr1_w)
{
if (m_ext_active && (m_ext_start < m_ext_stop))
{
- m_dac_sample[7] = (m_ext_base[m_ext_start] << 8) - 0x8000;
+ m_dac4->write_signed8(m_ext_base[m_ext_start]);
m_ext_start++;
}
}
@@ -137,7 +137,19 @@ WRITE_LINE_MEMBER(leland_80186_sound_device::i80186_tmr1_w)
static MACHINE_CONFIG_FRAGMENT( leland_80186_sound )
MCFG_SPEAKER_STANDARD_MONO("speaker")
- MCFG_SOUND_ADD("dac", DAC, 0)
+ MCFG_SOUND_ADD("dac1", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac2", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac3", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac4", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac5", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac6", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac7", DAC, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.00)
MCFG_DEVICE_ADD("pit0", PIT8254, 0)
@@ -159,8 +171,22 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT( redline_80186_sound )
MCFG_SPEAKER_STANDARD_MONO("speaker")
- MCFG_SOUND_ADD("dac", DAC, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.00)
+ MCFG_SOUND_ADD("dac1", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac2", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac3", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac4", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac5", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac6", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac7", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac8", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
MCFG_DEVICE_ADD("pit0", PIT8254, 0)
MCFG_PIT8253_CLK0(7000000)
@@ -186,7 +212,15 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT( ataxx_80186_sound )
MCFG_SPEAKER_STANDARD_MONO("speaker")
- MCFG_SOUND_ADD("dac", DAC, 0)
+ MCFG_SOUND_ADD("dac1", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac2", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac3", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac4", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac7", DAC, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.00)
MCFG_DEVICE_ADD("pit0", PIT8254, 0)
@@ -200,7 +234,15 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_FRAGMENT( wsf_80186_sound )
MCFG_SPEAKER_STANDARD_MONO("speaker")
- MCFG_SOUND_ADD("dac", DAC, 0)
+ MCFG_SOUND_ADD("dac1", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac2", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac3", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac4", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.40)
+ MCFG_SOUND_ADD("dac7", DAC, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.00)
/* sound hardware */
@@ -255,8 +297,6 @@ void leland_80186_sound_device::device_start()
save_item(NAME(m_ext_start));
save_item(NAME(m_ext_stop));
save_item(NAME(m_ext_active));
- save_item(NAME(m_dac_sample));
- save_item(NAME(m_dac_volume));
// zerofill
m_peripheral = 0;
@@ -269,25 +309,12 @@ void leland_80186_sound_device::device_start()
m_ext_stop = 0;
m_ext_active = 0;
m_ext_base = NULL;
- memset(m_dac_sample, 0, sizeof(m_dac_sample));
- memset(m_dac_volume, 0x80, sizeof(m_dac_volume));
m_audiocpu = downcast<i80186_cpu_device *>(machine().device("audiocpu"));
/* determine which sound hardware is installed */
if (m_type == TYPE_WSF)
m_ext_base = machine().root_device().memregion("dac")->base();
-
- m_dac_timer = timer_alloc();
-}
-
-void leland_80186_sound_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
-{
- INT32 out = 0;
- for (int i = 0; i < 8; i++)
- out += m_dac_sample[i] * m_dac_volume[i];
-
- m_dac->write(out >> 10);
}
void leland_80186_sound_device::device_reset()
@@ -298,17 +325,20 @@ void leland_80186_sound_device::device_reset()
m_ext_start = 0;
m_ext_stop = 0;
m_ext_active = 0;
- memset(m_dac_sample, 0, sizeof(m_dac_sample));
- memset(m_dac_volume, 0x80, sizeof(m_dac_volume));
-
- m_dac_timer->adjust(attotime::from_hz(48000), 0, attotime::from_hz(48000));
}
const device_type LELAND_80186 = &device_creator<leland_80186_sound_device>;
leland_80186_sound_device::leland_80186_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
: device_t(mconfig, LELAND_80186, "80186 DAC (Leland)", tag, owner, clock, "leland_80186_sound", __FILE__),
- m_dac(*this, "dac"),
+ m_dac1(*this, "dac1"),
+ m_dac2(*this, "dac2"),
+ m_dac3(*this, "dac3"),
+ m_dac4(*this, "dac4"),
+ m_dac5(*this, "dac5"),
+ m_dac6(*this, "dac6"),
+ m_dac7(*this, "dac7"),
+ m_dac8(*this, "dac8"),
m_pit0(*this, "pit0"),
m_pit1(*this, "pit1"),
m_pit2(*this, "pit2"),
@@ -319,7 +349,14 @@ leland_80186_sound_device::leland_80186_sound_device(const machine_config &mconf
leland_80186_sound_device::leland_80186_sound_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
- m_dac(*this, "dac"),
+ m_dac1(*this, "dac1"),
+ m_dac2(*this, "dac2"),
+ m_dac3(*this, "dac3"),
+ m_dac4(*this, "dac4"),
+ m_dac5(*this, "dac5"),
+ m_dac6(*this, "dac6"),
+ m_dac7(*this, "dac7"),
+ m_dac8(*this, "dac8"),
m_pit0(*this, "pit0"),
m_pit1(*this, "pit1"),
m_pit2(*this, "pit2"),
@@ -395,7 +432,7 @@ WRITE8_MEMBER( leland_80186_sound_device::leland_80186_control_w )
if (LOG_COMM)
{
- logerror("%04X:80186 control = %02X", m_audiocpu->device_t::safe_pcbase(), data);
+ logerror("%04X:80186 control = %02X", m_audiocpu->device_t::safe_pc(), data);
if (!(data & 0x80)) logerror(" /RESET");
if (!(data & 0x40)) logerror(" ZNMI");
if (!(data & 0x20)) logerror(" INT0");
@@ -447,7 +484,7 @@ WRITE8_MEMBER( leland_80186_sound_device::leland_80186_command_lo_w )
WRITE8_MEMBER( leland_80186_sound_device::leland_80186_command_hi_w )
{
- if (LOG_COMM) logerror("%04X:Write sound command latch hi = %02X\n", m_audiocpu->device_t::safe_pcbase(), data);
+ if (LOG_COMM) logerror("%04X:Write sound command latch hi = %02X\n", m_audiocpu->device_t::safe_pc(), data);
m_sound_command = (m_sound_command & 0x00ff) | (data << 8);
}
@@ -494,7 +531,8 @@ void leland_80186_sound_device::delayed_response_r(void *ptr, int param)
READ8_MEMBER( leland_80186_sound_device::leland_80186_response_r )
{
- offs_t pc = m_audiocpu->device_t::safe_pcbase();
+ cpu_device *master = machine().device<cpu_device>("master");
+ offs_t pc = master->device_t::safe_pcbase();
if (LOG_COMM) logerror("%04X:Read sound response latch = %02X\n", pc, m_sound_response);
@@ -525,13 +563,65 @@ WRITE16_MEMBER( leland_80186_sound_device::dac_w )
/* handle value changes */
if (ACCESSING_BITS_0_7)
{
- m_dac_sample[which] = (data << 8 & 0xff00) - 0x8000;
+ switch(which)
+ {
+ case 0:
+ m_dac1->write_signed8(data & 0xff);
+ break;
+ case 1:
+ m_dac2->write_signed8(data & 0xff);
+ break;
+ case 2:
+ m_dac3->write_signed8(data & 0xff);
+ break;
+ case 3:
+ m_dac4->write_signed8(data & 0xff);
+ break;
+ case 4:
+ m_dac5->write_signed8(data & 0xff);
+ break;
+ case 5:
+ m_dac6->write_signed8(data & 0xff);
+ break;
+ case 6:
+ m_dac7->write_signed8(data & 0xff);
+ break;
+ case 7:
+ m_dac8->write_signed8(data & 0xff);
+ break;
+ }
m_clock_active &= ~(1<<which);
}
/* handle volume changes */
if (ACCESSING_BITS_8_15)
- m_dac_volume[which] = data >> 8;
+ switch(which)
+ {
+ case 0:
+ m_dac1->set_output_gain(ALL_OUTPUTS, (data >> 8)/255.0f);
+ break;
+ case 1:
+ m_dac2->set_output_gain(ALL_OUTPUTS, (data >> 8)/255.0f);
+ break;
+ case 2:
+ m_dac3->set_output_gain(ALL_OUTPUTS, (data >> 8)/255.0f);
+ break;
+ case 3:
+ m_dac4->set_output_gain(ALL_OUTPUTS, (data >> 8)/255.0f);
+ break;
+ case 4:
+ m_dac5->set_output_gain(ALL_OUTPUTS, (data >> 8)/255.0f);
+ break;
+ case 5:
+ m_dac6->set_output_gain(ALL_OUTPUTS, (data >> 8)/255.0f);
+ break;
+ case 6:
+ m_dac7->set_output_gain(ALL_OUTPUTS, (data >> 8)/255.0f);
+ break;
+ case 7:
+ m_dac8->set_output_gain(ALL_OUTPUTS, (data >> 8)/255.0f);
+ break;
+ }
}
@@ -556,9 +646,9 @@ WRITE16_MEMBER( leland_80186_sound_device::ataxx_dac_control )
case 0x03:
if(ACCESSING_BITS_0_7)
{
- m_dac_volume[0] = ((data & 7) * 0x49) >> 1;
- m_dac_volume[1] = (((data >> 3) & 7) * 0x49) >> 1;
- m_dac_volume[2] = ((data >> 6) & 3) * 0x55;
+ m_dac1->set_output_gain(ALL_OUTPUTS, (((data & 7) * 0x49) >> 1) / 255.0f);
+ m_dac2->set_output_gain(ALL_OUTPUTS, ((((data >> 3) & 7) * 0x49) >> 1) / 255.0f);
+ m_dac3->set_output_gain(ALL_OUTPUTS, (((data >> 6) & 3) * 0x55) / 255.0f);
}
return;
@@ -704,7 +794,7 @@ WRITE16_MEMBER( leland_80186_sound_device::peripheral_w )
}
else if (mem_mask == 0xffff)
{
- m_dac_sample[6] = (data << 6) - 0x8000;
+ m_dac7->write_signed16(data << 6);
m_clock_active &= ~(1<<6);
}
break;
diff --git a/src/mess/audio/lynx.c b/src/mame/audio/lynx.c
index 2e17abde91f..2e17abde91f 100644
--- a/src/mess/audio/lynx.c
+++ b/src/mame/audio/lynx.c
diff --git a/src/mess/audio/lynx.h b/src/mame/audio/lynx.h
index b99d2b04873..b99d2b04873 100644
--- a/src/mess/audio/lynx.h
+++ b/src/mame/audio/lynx.h
diff --git a/src/mess/audio/mac.c b/src/mame/audio/mac.c
index 7a0b7a93a62..7a0b7a93a62 100644
--- a/src/mess/audio/mac.c
+++ b/src/mame/audio/mac.c
diff --git a/src/mess/audio/mea8000.c b/src/mame/audio/mea8000.c
index 6936205b79f..6936205b79f 100644
--- a/src/mess/audio/mea8000.c
+++ b/src/mame/audio/mea8000.c
diff --git a/src/mess/audio/mea8000.h b/src/mame/audio/mea8000.h
index 5d09ee938c9..5d09ee938c9 100644
--- a/src/mess/audio/mea8000.h
+++ b/src/mame/audio/mea8000.h
diff --git a/src/mame/audio/micro3d.c b/src/mame/audio/micro3d.c
index e0ba3722bc9..b2bd2cb09ec 100644
--- a/src/mame/audio/micro3d.c
+++ b/src/mame/audio/micro3d.c
@@ -343,7 +343,7 @@ WRITE8_MEMBER(micro3d_state::micro3d_sound_io_w)
{
case 0x01:
{
- micro3d_sound_device *noise = machine().device<micro3d_sound_device>(data & 4 ? "noise_2" : "noise_1");
+ micro3d_sound_device *noise = (data & 4) ? m_noise_2 : m_noise_1;
noise->noise_sh_w(data);
break;
}
@@ -360,7 +360,7 @@ READ8_MEMBER(micro3d_state::micro3d_sound_io_r)
{
switch (offset)
{
- case 0x01: return (m_sound_port_latch[offset] & 0x7f) | ioport("SOUND_SW")->read();
+ case 0x01: return (m_sound_port_latch[offset] & 0x7f) | m_sound_sw->read();
case 0x03: return (m_sound_port_latch[offset] & 0xf7) | (m_upd7759->busy_r() ? 0x08 : 0);
default: return 0;
}
diff --git a/src/mame/audio/nl_kidniki.c b/src/mame/audio/nl_kidniki.c
index 71f6ea1a14a..bdb178f82c4 100644
--- a/src/mame/audio/nl_kidniki.c
+++ b/src/mame/audio/nl_kidniki.c
@@ -15,20 +15,6 @@
#ifndef __PLIB_PREPROCESSOR__
-#define MC14584B_GATE(_name) \
- NET_REGISTER_DEV(MC14584B_GATE, _name)
-
-#define MC14584B_DIP(_name) \
- NET_REGISTER_DEV(MC14584B_DIP, _name)
-
-#define LM324_DIP(_name) \
- NET_REGISTER_DEV(LM324_DIP, _name)
-
-#define LM358_DIP(_name) \
- NET_REGISTER_DEV(LM358_DIP, _name)
-
-NETLIST_EXTERNAL(kidniki_lib)
-
#endif
/* ----------------------------------------------------------------------------
@@ -47,9 +33,6 @@ NETLIST_START(kidniki_schematics)
// IGNORED O_AUDIO0: O_AUDIO0 49 0
// .END
- LOCAL_SOURCE(kidniki_lib)
- INCLUDE(kidniki_lib)
-
/*
* Workaround: The simplified opamp model does not correctly
* model the internals of the inputs.
@@ -119,8 +102,6 @@ NETLIST_START(kidniki_schematics)
LM324_DIP(XU1)
LM358_DIP(XU2)
- //SUBMODEL(LM324_DIP,XU1)
- //SUBMODEL(LM358_DIP,XU2)
MC14584B_DIP(XU3)
@@ -219,9 +200,9 @@ NETLIST_START(kidniki_schematics)
NET_C(XU3.6, R105.1, R106.2)
#if USE_FIXED_STV
//FIXME: We should have a NET_C_REMOVE
- NET_C(/*XU3.7,*/ C69.2, C73.2, C72.2, C77.2, C67.2, C68.2, R65.2, R38.2, XU1.11, R54.2, Q4.E, R63.2, C47.2, R72.2, R67.2, R71.2, R68.2, C48.2, R46.2, C28.1, C32.1, R43.2, XU2.4, C56.1, C52.1,/* R77.2, C58.1, */ R48.2, R93.2, R94.2, R119.2, R104.2, R53.2, R34.2, R81.2, R92.2, R89.2, C33.1, R37.2, R36.1, R91.1, I_V0.Q, RV1.3)
+ NET_C(XU3.7, C69.2, C73.2, C72.2, C77.2, C67.2, C68.2, R65.2, R38.2, XU1.11, R54.2, Q4.E, R63.2, C47.2, R72.2, R67.2, R71.2, R68.2, C48.2, R46.2, C28.1, C32.1, R43.2, XU2.4, C56.1, C52.1,/* R77.2, C58.1, */ R48.2, R93.2, R94.2, R119.2, R104.2, R53.2, R34.2, R81.2, R92.2, R89.2, C33.1, R37.2, R36.1, R91.1, I_V0.Q, RV1.3)
#else
- NET_C(/*XU3.7,*/ C69.2, C73.2, C72.2, C77.2, C67.2, C68.2, R65.2, R38.2, XU1.11, R54.2, Q4.E, R63.2, C47.2, R72.2, R67.2, R71.2, R68.2, C48.2, R46.2, C28.1, C32.1, R43.2, XU2.4, C56.1, C52.1, R77.2, C58.1, R48.2, R93.2, R94.2, R119.2, R104.2, R53.2, R34.2, R81.2, R92.2, R89.2, C33.1, R37.2, R36.1, R91.1, I_V0.Q, RV1.3)
+ NET_C(XU3.7, C69.2, C73.2, C72.2, C77.2, C67.2, C68.2, R65.2, R38.2, XU1.11, R54.2, Q4.E, R63.2, C47.2, R72.2, R67.2, R71.2, R68.2, C48.2, R46.2, C28.1, C32.1, R43.2, XU2.4, C56.1, C52.1, R77.2, C58.1, R48.2, R93.2, R94.2, R119.2, R104.2, R53.2, R34.2, R81.2, R92.2, R89.2, C33.1, R37.2, R36.1, R91.1, I_V0.Q, RV1.3)
#endif
NET_C(XU3.8, R108.1, R107.2)
NET_C(XU3.9, R108.2, C77.1)
@@ -230,9 +211,9 @@ NETLIST_START(kidniki_schematics)
NET_C(XU3.12, R98.1, R97.2)
NET_C(XU3.13, R98.2, C68.1)
#if USE_FIXED_STV
- NET_C(/*XU3.14,*/ XU1.4, R66.1, R70.1, Q6.C, Q5.C, XU2.8, /* R78.1, */ R86.1, R83.1, Q3.C, I_V5.Q)
+ NET_C(XU3.14, XU1.4, R66.1, R70.1, Q6.C, Q5.C, XU2.8, /* R78.1, */ R86.1, R83.1, Q3.C, I_V5.Q)
#else
- NET_C(/*XU3.14,*/ XU1.4, R66.1, R70.1, Q6.C, Q5.C, XU2.8, R78.1, R86.1, R83.1, Q3.C, I_V5.Q)
+ NET_C(XU3.14, XU1.4, R66.1, R70.1, Q6.C, Q5.C, XU2.8, R78.1, R86.1, R83.1, Q3.C, I_V5.Q)
#endif
NET_C(R96.1, R102.1, R106.1, R107.1, R101.1, R97.1, R65.1, C63.2)
NET_C(C63.1, R65_1.2)
@@ -324,161 +305,3 @@ NETLIST_START(kidniki_schematics)
NET_C(R26.2, C29.2, GND)
NETLIST_END()
-
-/* ----------------------------------------------------------------------------
- * Library section body START
- * ---------------------------------------------------------------------------*/
-
-NETLIST_START(opamp)
-
- /* Opamp model from
- *
- * http://www.ecircuitcenter.com/Circuits/opmodel1/opmodel1.htm
- *
- * Bandwidth 1Mhz
- *
- */
-
- /* Terminal definitions for calling netlists */
-
- ALIAS(PLUS, G1.IP) // Positive input
- ALIAS(MINUS, G1.IN) // Negative input
- ALIAS(OUT, EBUF.OP) // Opamp output ...
-
- ALIAS(GND, EBUF.ON) // GND terminal
- ALIAS(VCC, DUMMY.I) // VCC terminal
- DUMMY_INPUT(DUMMY)
-
- /* The opamp model */
-
- VCCS(G1)
- PARAM(G1.RI, RES_K(1000))
-#if 1
- PARAM(G1.G, 100) // typical OP-AMP amplification 100 * 1000 = 100000
- RES(RP1, 1000)
- CAP(CP1, 1.59e-5) // <== change to 1.59e-3 for 10Khz bandwidth
-#else
- PARAM(G1.G, 1) // typical OP-AMP amplification 100 * 1000 = 100000
- RES(RP1, 100000)
- CAP(CP1, 1.59e-7) // <== change to 1.59e-3 for 10Khz bandwidth
-#endif
- VCVS(EBUF)
- PARAM(EBUF.RO, 50)
- PARAM(EBUF.G, 1)
-
-// PARAM(EBUF.RI, 1e20)
-// NET_C(EBUF.ON, GND)
-
- NET_C(G1.ON, GND)
- NET_C(RP1.2, GND)
- NET_C(CP1.2, GND)
- NET_C(EBUF.IN, GND)
-
- NET_C(RP1.1, G1.OP)
- NET_C(CP1.1, RP1.1)
-
- DIODE(DP,"1N914")
- DIODE(DN,"1N914")
-
- NET_C(DP.K, VCC)
-#if 1
- NET_C(DP.A, DN.K, RP1.1)
-#else
- RES(RDP, 1000)
- RES(RDN, 1000)
- NET_C(RDP.1, DP.A)
- NET_C(RDN.1, DN.K)
- NET_C(RDP.2, RDN.2, RP1.1)
-#endif
- NET_C(DN.A, GND)
-
- NET_C(EBUF.IP, RP1.1)
-
-NETLIST_END()
-
-NETLIST_START(LM324_DIP)
- SUBMODEL(opamp, op1)
- SUBMODEL(opamp, op2)
- SUBMODEL(opamp, op3)
- SUBMODEL(opamp, op4)
-
- ALIAS( 1, op1.OUT)
- ALIAS( 2, op1.MINUS)
- ALIAS( 3, op1.PLUS)
-
- ALIAS( 7, op2.OUT)
- ALIAS( 6, op2.MINUS)
- ALIAS( 5, op2.PLUS)
-
- ALIAS( 8, op3.OUT)
- ALIAS( 9, op3.MINUS)
- ALIAS(10, op3.PLUS)
-
- ALIAS(14, op4.OUT)
- ALIAS(13, op4.MINUS)
- ALIAS(12, op4.PLUS)
-
- NET_C(op1.GND, op2.GND, op3.GND, op4.GND)
- NET_C(op1.VCC, op2.VCC, op3.VCC, op4.VCC)
-
- ALIAS(11, op1.GND)
- ALIAS( 4, op1.VCC)
-NETLIST_END()
-
-NETLIST_START(LM358_DIP)
- SUBMODEL(opamp, op1)
- SUBMODEL(opamp, op2)
-
- ALIAS( 1, op1.OUT)
- ALIAS( 2, op1.MINUS)
- ALIAS( 3, op1.PLUS)
-
- ALIAS( 7, op2.OUT)
- ALIAS( 6, op2.MINUS)
- ALIAS( 5, op2.PLUS)
-
-
- NET_C(op1.GND, op2.GND)
- NET_C(op1.VCC, op2.VCC)
-
- ALIAS( 4, op1.GND)
- ALIAS( 8, op1.VCC)
-NETLIST_END()
-
-NETLIST_START(MC14584B_DIP)
- MC14584B_GATE(s1)
- MC14584B_GATE(s2)
- MC14584B_GATE(s3)
- MC14584B_GATE(s4)
- MC14584B_GATE(s5)
- MC14584B_GATE(s6)
-
- ALIAS( 1, s1.A)
- ALIAS( 2, s1.Q)
- ALIAS( 3, s2.A)
- ALIAS( 4, s2.Q)
- ALIAS( 5, s3.A)
- ALIAS( 6, s3.Q)
-
- ALIAS( 8, s4.Q)
- ALIAS( 9, s4.A)
- ALIAS(10, s5.Q)
- ALIAS(11, s5.A)
- ALIAS(12, s6.Q)
- ALIAS(13, s6.A)
-NETLIST_END()
-
-NETLIST_START(kidniki_lib)
- TRUTHTABLE_START(MC14584B_GATE, 1, 1, 0, "")
- TT_HEAD(" A | Q ")
- TT_LINE(" 0 | 1 |100")
- TT_LINE(" 1 | 0 |100")
- TT_FAMILY(".model MC14584B FAMILY(IVL=2.1 IVH=2.7 OVL=0.05 OVH=4.95 ORL=10.0 ORH=10.0)")
- TRUTHTABLE_END()
-
- LOCAL_LIB_ENTRY(LM324_DIP)
- LOCAL_LIB_ENTRY(LM358_DIP)
- LOCAL_LIB_ENTRY(MC14584B_DIP)
-
-NETLIST_END()
-
diff --git a/src/mame/audio/scramble.c b/src/mame/audio/scramble.c
index cd9b499a77d..b91d363bf2b 100644
--- a/src/mame/audio/scramble.c
+++ b/src/mame/audio/scramble.c
@@ -162,15 +162,18 @@ void scramble_state::sh_init()
}
-// Harem
+// Harem (same as scorpion)
-WRITE8_MEMBER( scramble_state::harem_portA_w )
+READ8_MEMBER(scramble_state::harem_digitalker_intr_r)
{
- // Speech?
+ return m_digitalker->digitalker_0_intr_r();
}
-WRITE8_MEMBER( scramble_state::harem_portB_w )
+
+WRITE8_MEMBER(scramble_state::harem_digitalker_control_w)
{
- // Speech?
+ m_digitalker->digitalker_0_cs_w (data & 1 ? ASSERT_LINE : CLEAR_LINE);
+ m_digitalker->digitalker_0_cms_w(data & 2 ? ASSERT_LINE : CLEAR_LINE);
+ m_digitalker->digitalker_0_wr_w (data & 4 ? ASSERT_LINE : CLEAR_LINE);
}
diff --git a/src/mame/audio/seibu.h b/src/mame/audio/seibu.h
index ca3fa2f11c2..dcfe0ecec39 100644
--- a/src/mame/audio/seibu.h
+++ b/src/mame/audio/seibu.h
@@ -195,22 +195,22 @@ extern const device_type SEIBU_ADPCM;
MCFG_CPU_PROGRAM_MAP(seibu3_adpcm_sound_map) \
MCFG_DEVICE_ADD("seibu_sound", SEIBU_SOUND, 0)
-#define SEIBU_SOUND_SYSTEM_ENCRYPTED_LOW() \
- MCFG_DEVICE_MODIFY("seibu_sound") \
- downcast<seibu_sound_device *>(device)->set_encryption(1); \
- MCFG_DEVICE_MODIFY("audiocpu") \
+#define SEIBU_SOUND_SYSTEM_ENCRYPTED_LOW() \
+ MCFG_DEVICE_MODIFY("seibu_sound") \
+ downcast<seibu_sound_device *>(device)->set_encryption(1); \
+ MCFG_DEVICE_MODIFY("audiocpu") \
MCFG_CPU_DECRYPTED_OPCODES_MAP(seibu_sound_decrypted_opcodes_map)
-#define SEIBU_SOUND_SYSTEM_ENCRYPTED_FULL() \
- MCFG_DEVICE_MODIFY("seibu_sound") \
- downcast<seibu_sound_device *>(device)->set_encryption(2); \
- MCFG_DEVICE_MODIFY("audiocpu") \
+#define SEIBU_SOUND_SYSTEM_ENCRYPTED_FULL() \
+ MCFG_DEVICE_MODIFY("seibu_sound") \
+ downcast<seibu_sound_device *>(device)->set_encryption(2); \
+ MCFG_DEVICE_MODIFY("audiocpu") \
MCFG_CPU_DECRYPTED_OPCODES_MAP(seibu_sound_decrypted_opcodes_map)
-#define SEIBU_SOUND_SYSTEM_ENCRYPTED_CUSTOM() \
- MCFG_DEVICE_MODIFY("seibu_sound") \
- downcast<seibu_sound_device *>(device)->set_encryption(3); \
- MCFG_DEVICE_MODIFY("audiocpu") \
+#define SEIBU_SOUND_SYSTEM_ENCRYPTED_CUSTOM() \
+ MCFG_DEVICE_MODIFY("seibu_sound") \
+ downcast<seibu_sound_device *>(device)->set_encryption(3); \
+ MCFG_DEVICE_MODIFY("audiocpu") \
MCFG_CPU_DECRYPTED_OPCODES_MAP(seibu_sound_decrypted_opcodes_map)
#define SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(freq1,freq2) \
diff --git a/src/mess/audio/socrates.c b/src/mame/audio/socrates.c
index c35896e5c25..c35896e5c25 100644
--- a/src/mess/audio/socrates.c
+++ b/src/mame/audio/socrates.c
diff --git a/src/mess/audio/socrates.h b/src/mame/audio/socrates.h
index f1d2b1dd002..f1d2b1dd002 100644
--- a/src/mess/audio/socrates.h
+++ b/src/mame/audio/socrates.h
diff --git a/src/mess/audio/specimx_snd.c b/src/mame/audio/specimx_snd.c
index 2b56c6b25f8..2b56c6b25f8 100644
--- a/src/mess/audio/specimx_snd.c
+++ b/src/mame/audio/specimx_snd.c
diff --git a/src/mess/audio/specimx_snd.h b/src/mame/audio/specimx_snd.h
index 0e07b27dc4b..0e07b27dc4b 100644
--- a/src/mess/audio/specimx_snd.h
+++ b/src/mame/audio/specimx_snd.h
diff --git a/src/mess/audio/svis_snd.c b/src/mame/audio/svis_snd.c
index 86408d26820..86408d26820 100644
--- a/src/mess/audio/svis_snd.c
+++ b/src/mame/audio/svis_snd.c
diff --git a/src/mess/audio/svis_snd.h b/src/mame/audio/svis_snd.h
index 7d21bc4fdfb..7d21bc4fdfb 100644
--- a/src/mess/audio/svis_snd.h
+++ b/src/mame/audio/svis_snd.h
diff --git a/src/mame/audio/targ.c b/src/mame/audio/targ.c
index 3ebfe9b2708..52aec287409 100644
--- a/src/mame/audio/targ.c
+++ b/src/mame/audio/targ.c
@@ -37,6 +37,12 @@ void exidy_state::adjust_sample(UINT8 freq)
{
m_tone_freq = freq;
+ if (!m_samples->playing(3))
+ {
+ m_samples->set_volume(3, 0);
+ m_samples->start_raw(3, sine_wave, 32, 1000, true);
+ }
+
if ((m_tone_freq == 0xff) || (m_tone_freq == 0x00))
m_samples->set_volume(3, 0);
else
@@ -136,8 +142,13 @@ void exidy_state::common_audio_start(int freq)
m_tone_freq = 0;
m_tone_active = 0;
- m_samples->set_volume(3, 0);
- m_samples->start_raw(3, sine_wave, 32, 1000, true);
+ /* start_raw can't be called here: chan.source will be set by
+ samples_device::device_start and then nulled out by samples_device::device_reset
+ at the soft_reset stage of init_machine() and will never be set again.
+ Thus, I've moved it to exidy_state::adjust_sample() were it will be set after
+ machine initialization. */
+ //m_samples->set_volume(3, 0);
+ //m_samples->start_raw(3, sine_wave, 32, 1000, true);
save_item(NAME(m_port_1_last));
save_item(NAME(m_port_2_last));
diff --git a/src/mess/audio/tvc_snd.c b/src/mame/audio/tvc_snd.c
index 29d61b5dc7c..29d61b5dc7c 100644
--- a/src/mess/audio/tvc_snd.c
+++ b/src/mame/audio/tvc_snd.c
diff --git a/src/mess/audio/tvc_snd.h b/src/mame/audio/tvc_snd.h
index b8b955d3c45..b8b955d3c45 100644
--- a/src/mess/audio/tvc_snd.h
+++ b/src/mame/audio/tvc_snd.h
diff --git a/src/mess/audio/upd1771.c b/src/mame/audio/upd1771.c
index 96b3b2bb062..96b3b2bb062 100644
--- a/src/mess/audio/upd1771.c
+++ b/src/mame/audio/upd1771.c
diff --git a/src/mess/audio/upd1771.h b/src/mame/audio/upd1771.h
index e0757757e9c..e0757757e9c 100644
--- a/src/mess/audio/upd1771.h
+++ b/src/mame/audio/upd1771.h
diff --git a/src/mess/audio/vboy.c b/src/mame/audio/vboy.c
index b808ee8a333..b808ee8a333 100644
--- a/src/mess/audio/vboy.c
+++ b/src/mame/audio/vboy.c
diff --git a/src/mess/audio/vboy.h b/src/mame/audio/vboy.h
index 8849ecf292e..8849ecf292e 100644
--- a/src/mess/audio/vboy.h
+++ b/src/mame/audio/vboy.h
diff --git a/src/mess/audio/vc4000snd.c b/src/mame/audio/vc4000snd.c
index 00b33d308ae..00b33d308ae 100644
--- a/src/mess/audio/vc4000snd.c
+++ b/src/mame/audio/vc4000snd.c
diff --git a/src/mess/audio/vc4000snd.h b/src/mame/audio/vc4000snd.h
index 611ad0188d8..611ad0188d8 100644
--- a/src/mess/audio/vc4000snd.h
+++ b/src/mame/audio/vc4000snd.h
diff --git a/src/mess/audio/wswan_snd.c b/src/mame/audio/wswan_snd.c
index 77a21d7cb3b..77a21d7cb3b 100644
--- a/src/mess/audio/wswan_snd.c
+++ b/src/mame/audio/wswan_snd.c
diff --git a/src/mess/audio/wswan_snd.h b/src/mame/audio/wswan_snd.h
index 42ba3ed5160..42ba3ed5160 100644
--- a/src/mess/audio/wswan_snd.h
+++ b/src/mame/audio/wswan_snd.h
diff --git a/src/mame/drivers/1942.c b/src/mame/drivers/1942.c
index c9418fe9ad5..b5856656097 100644
--- a/src/mame/drivers/1942.c
+++ b/src/mame/drivers/1942.c
@@ -61,9 +61,14 @@ correctly.
***************************************************************************/
-#define MAIN_CPU_CLOCK (XTAL_12MHz/3) /* 12MHz is the only OSC on the PCB */
-#define SOUND_CPU_CLOCK (XTAL_12MHz/4) /* 12MHz is the only OSC on the PCB */
-#define AUDIO_CLOCK (XTAL_12MHz/8) /* 12MHz is the only OSC on the PCB */
+/* 12mhz OSC */
+#define MAIN_CPU_CLOCK (XTAL_12MHz/3)
+#define SOUND_CPU_CLOCK (XTAL_12MHz/4)
+#define AUDIO_CLOCK (XTAL_12MHz/8)
+/* 20mhz OSC - both Z80s are 4 MHz */
+#define MAIN_CPU_CLOCK_1942P (XTAL_20MHz/5)
+#define SOUND_CPU_CLOCK_1942P (XTAL_20MHz/5)
+#define AUDIO_CLOCK_1942P (XTAL_20MHz/16)
#include "emu.h"
#include "cpu/z80/z80.h"
@@ -168,6 +173,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(_1942_state::c1942_scanline)
}
+
+
static ADDRESS_MAP_START( c1942_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
@@ -203,6 +210,12 @@ WRITE8_MEMBER(_1942_state::c1942p_palette_w)
m_palette->set_indirect_color(offset, rgb_t(r<<5,g<<5,b<<6));
}
+WRITE8_MEMBER(_1942_state::c1942p_soundlatch_w)
+{
+ soundlatch_byte_w(space, 0, data);
+ m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+}
+
static ADDRESS_MAP_START( c1942p_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
@@ -221,7 +234,7 @@ static ADDRESS_MAP_START( c1942p_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_WRITE(c1942p_palette_w) AM_SHARE("protopal")
AM_RANGE(0xf400, 0xf400) AM_WRITE(c1942_bankswitch_w)
- AM_RANGE(0xf500, 0xf500) AM_WRITE(soundlatch_byte_w)
+ AM_RANGE(0xf500, 0xf500) AM_WRITE(c1942p_soundlatch_w)
AM_RANGE(0xf600, 0xf600) AM_WRITE(c1942p_f600_w)
AM_RANGE(0xf700, 0xf700) AM_READ_PORT("DSWA")
@@ -231,6 +244,23 @@ static ADDRESS_MAP_START( c1942p_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0xf704, 0xf704) AM_READ_PORT("P2")
ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(c1942p_sound_map, AS_PROGRAM, 8, _1942_state )
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x4000, 0x47ff) AM_RAM
+
+ AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( c1942p_sound_io, AS_IO, 8, _1942_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x0000, 0x0000) AM_WRITENOP
+ AM_RANGE(0x0014, 0x0015) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
+ AM_RANGE(0x0018, 0x0019) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
+ADDRESS_MAP_END
+
+
+
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, _1942_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x47ff) AM_RAM
@@ -595,12 +625,13 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( 1942p, _1942_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK) /* 4 MHz ??? */
+ MCFG_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK_1942P) /* 4 MHz - verified on PCB */
MCFG_CPU_PROGRAM_MAP(c1942p_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", _1942_state, c1942_scanline, "screen", 0, 1)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", _1942_state, irq0_line_hold) // note, powerups won't move down the screen with the original '1942' logic.
- MCFG_CPU_ADD("audiocpu", Z80, SOUND_CPU_CLOCK) /* 3 MHz ??? */
- MCFG_CPU_PROGRAM_MAP(sound_map)
+ MCFG_CPU_ADD("audiocpu", Z80, SOUND_CPU_CLOCK_1942P) /* 4 MHz - verified on PCB */
+ MCFG_CPU_PROGRAM_MAP(c1942p_sound_map)
+ MCFG_CPU_IO_MAP(c1942p_sound_io)
MCFG_CPU_PERIODIC_INT_DRIVER(_1942_state, irq0_line_hold, 4*60)
@@ -624,9 +655,9 @@ static MACHINE_CONFIG_START( 1942p, _1942_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("ay1", AY8910, AUDIO_CLOCK) /* 1.5 MHz */
+ MCFG_SOUND_ADD("ay1", AY8910, AUDIO_CLOCK_1942P) /* 1.25 MHz - verified on PCB */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
- MCFG_SOUND_ADD("ay2", AY8910, AUDIO_CLOCK) /* 1.5 MHz */
+ MCFG_SOUND_ADD("ay2", AY8910, AUDIO_CLOCK_1942P) /* 1.25 MHz - verified on PCB */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
MACHINE_CONFIG_END
@@ -891,8 +922,7 @@ ROM_START( 1942p )
ROM_LOAD( "3.bin", 0x14000, 0x4000, CRC(108fda63) SHA1(6ffdf57a04bcfae9fdb2343f30cff50926188cbf) ) // sldh
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "snd.bin", 0x0000, 0x4000, BAD_DUMP CRC(43d6df9f) SHA1(c34579c73faa7e9552a6721ef8050b33ca158588) ) // sldh - looks bad, window was smashed, likely dead.
- ROM_LOAD( "sr-01.c11", 0x0000, 0x4000, CRC(bd87f06b) SHA1(821f85cf157f81117eeaba0c3cf0337eac357e58) ) // works but we can't be 100% sure it was the same.
+ ROM_LOAD( "04.bin", 0x0000, 0x4000, CRC(b4efd1af) SHA1(015b687b1714f892c3b2528bceb2df8ca48b6b8e) )
ROM_REGION( 0x2000, "gfx1", ROMREGION_INVERT )
ROM_LOAD( "8.bin", 0x0000, 0x2000, CRC(6ebca191) SHA1(0dbddadde54a0ab66994c4a8726be05c6ca88a0e) ) /* characters */ // sldh
@@ -920,10 +950,10 @@ DRIVER_INIT_MEMBER(_1942_state,1942)
}
-GAME( 1984, 1942, 0, 1942, 1942, _1942_state, 1942, ROT270, "Capcom", "1942 (Revision B)", GAME_SUPPORTS_SAVE )
-GAME( 1984, 1942a, 1942, 1942, 1942, _1942_state, 1942, ROT270, "Capcom", "1942 (Revision A)", GAME_SUPPORTS_SAVE )
-GAME( 1984, 1942abl, 1942, 1942, 1942, _1942_state, 1942, ROT270, "bootleg", "1942 (Revision A, bootleg)", GAME_SUPPORTS_SAVE ) // data is the same as 1942a set, different rom format
-GAME( 198?, 1942h, 1942, 1942, 1942, _1942_state, 1942, ROT270, "hack (Two Bit Score?)", "42", GAME_SUPPORTS_SAVE )
-GAME( 1984, 1942b, 1942, 1942, 1942, _1942_state, 1942, ROT270, "Capcom", "1942 (First Version)", GAME_SUPPORTS_SAVE )
-GAME( 1985, 1942w, 1942, 1942, 1942, _1942_state, 1942, ROT270, "Capcom (Williams Electronics license)", "1942 (Williams Electronics license)", GAME_SUPPORTS_SAVE ) /* Based on 1942 (Revision B) */
-GAME( 1984, 1942p, 1942, 1942p,1942p,_1942_state, 1942, ROT270, "Capcom", "1942 (prototype)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1984, 1942, 0, 1942, 1942, _1942_state, 1942, ROT270, "Capcom", "1942 (Revision B)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, 1942a, 1942, 1942, 1942, _1942_state, 1942, ROT270, "Capcom", "1942 (Revision A)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, 1942abl, 1942, 1942, 1942, _1942_state, 1942, ROT270, "bootleg", "1942 (Revision A, bootleg)", MACHINE_SUPPORTS_SAVE ) // data is the same as 1942a set, different rom format
+GAME( 198?, 1942h, 1942, 1942, 1942, _1942_state, 1942, ROT270, "hack (Two Bit Score?)", "42", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, 1942b, 1942, 1942, 1942, _1942_state, 1942, ROT270, "Capcom", "1942 (First Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, 1942w, 1942, 1942, 1942, _1942_state, 1942, ROT270, "Capcom (Williams Electronics license)", "1942 (Williams Electronics license)", MACHINE_SUPPORTS_SAVE ) /* Based on 1942 (Revision B) */
+GAME( 1984, 1942p, 1942, 1942p,1942p,_1942_state, 1942, ROT270, "bootleg", "1942 (Tecfri PCB, bootleg?)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/1943.c b/src/mame/drivers/1943.c
index 5fc09aaa9ba..fc092b0c224 100644
--- a/src/mame/drivers/1943.c
+++ b/src/mame/drivers/1943.c
@@ -703,9 +703,9 @@ DRIVER_INIT_MEMBER(_1943_state,1943b)
}
/* Game Drivers */
-GAME( 1987, 1943, 0, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943: The Battle of Midway (Euro)", GAME_SUPPORTS_SAVE )
-GAME( 1987, 1943u, 1943, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943: The Battle of Midway (US, Rev C)", GAME_SUPPORTS_SAVE )
-GAME( 1987, 1943j, 1943, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943: Midway Kaisen (Japan, Rev B)", GAME_SUPPORTS_SAVE )
-GAME( 1987, 1943ja, 1943, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943: Midway Kaisen (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, 1943b, 1943, 1943, 1943, _1943_state, 1943b,ROT270, "bootleg", "1943: Battle of Midway (bootleg, hack of Japan set)", GAME_SUPPORTS_SAVE )
-GAME( 1987, 1943kai, 0, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943 Kai: Midway Kaisen (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1987, 1943, 0, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943: The Battle of Midway (Euro)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, 1943u, 1943, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943: The Battle of Midway (US, Rev C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, 1943j, 1943, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943: Midway Kaisen (Japan, Rev B)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, 1943ja, 1943, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943: Midway Kaisen (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, 1943b, 1943, 1943, 1943, _1943_state, 1943b,ROT270, "bootleg", "1943: Battle of Midway (bootleg, hack of Japan set)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, 1943kai, 0, 1943, 1943, _1943_state, 1943, ROT270, "Capcom", "1943 Kai: Midway Kaisen (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/1945kiii.c b/src/mame/drivers/1945kiii.c
index 597ef620784..44564dccd8a 100644
--- a/src/mame/drivers/1945kiii.c
+++ b/src/mame/drivers/1945kiii.c
@@ -70,7 +70,6 @@ public:
required_shared_ptr<UINT16> m_spriteram_1;
required_shared_ptr<UINT16> m_spriteram_2;
required_shared_ptr<UINT16> m_bgram;
-// UINT16 * m_paletteram16; // currently this uses generic palette handling
/* video-related */
tilemap_t *m_bg_tilemap;
@@ -162,7 +161,7 @@ static ADDRESS_MAP_START( k3_map, AS_PROGRAM, 16, k3_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM
AM_RANGE(0x100000, 0x10ffff) AM_RAM // Main Ram
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette
+ AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x240000, 0x240fff) AM_RAM AM_SHARE("spritera1")
AM_RANGE(0x280000, 0x280fff) AM_RAM AM_SHARE("spritera2")
AM_RANGE(0x2c0000, 0x2c0fff) AM_RAM_WRITE(k3_bgram_w) AM_SHARE("bgram")
@@ -311,4 +310,4 @@ ROM_START( 1945kiii )
ROM_LOAD( "m16m-3.u61", 0x00000, 0x200000, CRC(32fc80dd) SHA1(bee32493a250e9f21997114bba26b9535b1b636c) )
ROM_END
-GAME( 2000, 1945kiii, 0, k3, k3, driver_device, 0, ROT270, "Oriental Soft", "1945k III", GAME_SUPPORTS_SAVE )
+GAME( 2000, 1945kiii, 0, k3, k3, driver_device, 0, ROT270, "Oriental Soft", "1945k III", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/20pacgal.c b/src/mame/drivers/20pacgal.c
index 6dfb98d446e..00df8eaecda 100644
--- a/src/mame/drivers/20pacgal.c
+++ b/src/mame/drivers/20pacgal.c
@@ -535,12 +535,12 @@ DRIVER_INIT_MEMBER(_20pacgal_state,25pacman)
*
*************************************/
-GAME( 2006, 25pacman, 0, 25pacman, 25pacman, _20pacgal_state, 25pacman, ROT90, "Namco / Cosmodog", "Pac-Man - 25th Anniversary Edition (Rev 3.00)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
-GAME( 2005, 25pacmano, 25pacman, 20pacgal, 25pacmano,_20pacgal_state, 25pacman, ROT90, "Namco / Cosmodog", "Pac-Man - 25th Anniversary Edition (Rev 2.00)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
-
-GAME( 2000, 20pacgal, 0, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.08)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
-GAME( 2000, 20pacgalr4, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.04)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
-GAME( 2000, 20pacgalr3, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.03)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
-GAME( 2000, 20pacgalr2, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.02)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
-GAME( 2000, 20pacgalr1, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.01)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
-GAME( 2000, 20pacgalr0, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.00)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
+GAME( 2006, 25pacman, 0, 25pacman, 25pacman, _20pacgal_state, 25pacman, ROT90, "Namco / Cosmodog", "Pac-Man - 25th Anniversary Edition (Rev 3.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 2005, 25pacmano, 25pacman, 20pacgal, 25pacmano,_20pacgal_state, 25pacman, ROT90, "Namco / Cosmodog", "Pac-Man - 25th Anniversary Edition (Rev 2.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+
+GAME( 2000, 20pacgal, 0, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.08)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+GAME( 2000, 20pacgalr4, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+GAME( 2000, 20pacgalr3, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+GAME( 2000, 20pacgalr2, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+GAME( 2000, 20pacgalr1, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.01)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+GAME( 2000, 20pacgalr0, 20pacgal, 20pacgal, 20pacgal, _20pacgal_state, 20pacgal, ROT90, "Namco / Cosmodog", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/24cdjuke.c b/src/mame/drivers/24cdjuke.c
index 3dd1d34237d..d0f05a437a4 100644
--- a/src/mame/drivers/24cdjuke.c
+++ b/src/mame/drivers/24cdjuke.c
@@ -313,4 +313,4 @@ ROM_START( 24cdjuke )
ROM_END
-GAME( 1988, 24cdjuke, 0, midcoin24cdjuke, midcoin24cdjuke, driver_device, 0, ROT0, "Midcoin", "Midcoin Juke Box 24CD", GAME_NO_SOUND | GAME_NOT_WORKING ) // what name was it sold under? name is from the PCB text
+GAME( 1988, 24cdjuke, 0, midcoin24cdjuke, midcoin24cdjuke, driver_device, 0, ROT0, "Midcoin", "Midcoin Juke Box 24CD", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) // what name was it sold under? name is from the PCB text
diff --git a/src/mame/drivers/2mindril.c b/src/mame/drivers/2mindril.c
index c02432f95a5..758fb4518ce 100644
--- a/src/mame/drivers/2mindril.c
+++ b/src/mame/drivers/2mindril.c
@@ -561,4 +561,4 @@ DRIVER_INIT_MEMBER(_2mindril_state,drill)
tile_decode();
}
-GAME( 1993, 2mindril, 0, drill, drill, _2mindril_state, drill, ROT0, "Taito", "Two Minute Drill", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_MECHANICAL)
+GAME( 1993, 2mindril, 0, drill, drill, _2mindril_state, drill, ROT0, "Taito", "Two Minute Drill", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_MECHANICAL)
diff --git a/src/mame/drivers/30test.c b/src/mame/drivers/30test.c
index 5ba29c5f890..f61b28a93cb 100644
--- a/src/mame/drivers/30test.c
+++ b/src/mame/drivers/30test.c
@@ -267,4 +267,4 @@ ROM_START( 30test )
ROM_LOAD( "tt1-voi0.7p", 0x0000, 0x80000, CRC(b4fc5921) SHA1(92a88d5adb50dae48715847f12e88a35e37ef78c) )
ROM_END
-GAMEL( 1997, 30test, 0, 30test, 30test, driver_device, 0, ROT0, "Namco", "30 Test (Remake)", GAME_SUPPORTS_SAVE | GAME_CLICKABLE_ARTWORK, layout_30test )
+GAMEL( 1997, 30test, 0, 30test, 30test, driver_device, 0, ROT0, "Namco", "30 Test (Remake)", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK, layout_30test )
diff --git a/src/mame/drivers/39in1.c b/src/mame/drivers/39in1.c
index 902018c9932..a82e646440f 100644
--- a/src/mame/drivers/39in1.c
+++ b/src/mame/drivers/39in1.c
@@ -4,7 +4,7 @@
*
* 39in1.c - bootleg MAME-based "39-in-1" arcade PCB
* Skeleton by R. Belmont, thanks to the Guru
- * PXA255 Peripheral hookup by MooglyGuy
+ * PXA255 Peripheral hookup by Ryan Holtz
* Decrypt by Andreas Naive
*
* CPU: Intel Xscale PXA255 series @ 200 MHz, configured little-endian
@@ -1718,11 +1718,11 @@ ROM_START( 19in1 )
ROM_LOAD16_WORD_SWAP( "19in1_eeprom.bin", 0x000, 0x200, NO_DUMP )
ROM_END
-GAME(2004, 4in1a, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "4 in 1 MAME bootleg (set 1, ver 3.00)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND)
-GAME(2004, 4in1b, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "4 in 1 MAME bootleg (set 2)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND)
-GAME(2004, 19in1, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "19 in 1 MAME bootleg", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND)
-GAME(2004, 39in1, 0, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "39 in 1 MAME bootleg", GAME_IMPERFECT_SOUND)
-GAME(2004, 48in1, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 1, ver 3.09)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND)
-GAME(2004, 48in1b, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 2, ver 3.09, alt flash)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND)
-GAME(2004, 48in1a, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 3, ver 3.02)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND)
-GAME(2004, 60in1, 39in1, 60in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "60 in 1 MAME bootleg (ver 3.00)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND)
+GAME(2004, 4in1a, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "4 in 1 MAME bootleg (set 1, ver 3.00)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND)
+GAME(2004, 4in1b, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "4 in 1 MAME bootleg (set 2)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND)
+GAME(2004, 19in1, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "19 in 1 MAME bootleg", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND)
+GAME(2004, 39in1, 0, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "39 in 1 MAME bootleg", MACHINE_IMPERFECT_SOUND)
+GAME(2004, 48in1, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 1, ver 3.09)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND)
+GAME(2004, 48in1b, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 2, ver 3.09, alt flash)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND)
+GAME(2004, 48in1a, 39in1, 39in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "48 in 1 MAME bootleg (set 3, ver 3.02)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND)
+GAME(2004, 60in1, 39in1, 60in1, 39in1, _39in1_state, 39in1, ROT270, "bootleg", "60 in 1 MAME bootleg (ver 3.00)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/drivers/3do.c b/src/mame/drivers/3do.c
index 87813e11020..6aab517506c 100644
--- a/src/mame/drivers/3do.c
+++ b/src/mame/drivers/3do.c
@@ -247,8 +247,8 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-CONS( 1991, 3do, 0, 0, 3do, 3do, driver_device, 0, "The 3DO Company", "3DO (NTSC)", GAME_NOT_WORKING | GAME_NO_SOUND )
-CONS( 1991, 3do_pal, 3do, 0, 3do_pal, 3do, driver_device, 0, "The 3DO Company", "3DO (PAL)", GAME_NOT_WORKING | GAME_NO_SOUND )
+CONS( 1991, 3do, 0, 0, 3do, 3do, driver_device, 0, "The 3DO Company", "3DO (NTSC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+CONS( 1991, 3do_pal, 3do, 0, 3do_pal, 3do, driver_device, 0, "The 3DO Company", "3DO (PAL)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 1991, 3dobios, 0, 3do, 3do, driver_device, 0, ROT0, "The 3DO Company", "3DO Bios", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IS_BIOS_ROOT )
-GAME( 199?, orbatak, 3dobios,3do, 3do, driver_device, 0, ROT0, "<unknown>", "Orbatak (prototype)", GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( 1991, 3dobios, 0, 3do, 3do, driver_device, 0, ROT0, "The 3DO Company", "3DO Bios", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_BIOS_ROOT )
+GAME( 199?, orbatak, 3dobios,3do, 3do, driver_device, 0, ROT0, "<unknown>", "Orbatak (prototype)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/3x3puzzl.c b/src/mame/drivers/3x3puzzl.c
index 833d3ead2ca..36a2059ce39 100644
--- a/src/mame/drivers/3x3puzzl.c
+++ b/src/mame/drivers/3x3puzzl.c
@@ -501,6 +501,6 @@ ROM_END
-GAME( 1998, 3x3puzzl, 0, _3x3puzzle, _3x3puzzle, driver_device, 0, ROT0, "Ace Enterprise", "3X3 Puzzle (Enterprise)", GAME_SUPPORTS_SAVE ) // 1998. 5. 28
-GAME( 1998, 3x3puzzla, 3x3puzzl, _3x3puzzle, _3x3puzzle, driver_device, 0, ROT0, "Ace Enterprise", "3X3 Puzzle (Normal)", GAME_SUPPORTS_SAVE ) // 1998. 5. 28
-GAME( 199?, casanova, 0, _3x3puzzle, casanova, driver_device, 0, ROT0, "Promat", "Casanova", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1998, 3x3puzzl, 0, _3x3puzzle, _3x3puzzle, driver_device, 0, ROT0, "Ace Enterprise", "3X3 Puzzle (Enterprise)", MACHINE_SUPPORTS_SAVE ) // 1998. 5. 28
+GAME( 1998, 3x3puzzla, 3x3puzzl, _3x3puzzle, _3x3puzzle, driver_device, 0, ROT0, "Ace Enterprise", "3X3 Puzzle (Normal)", MACHINE_SUPPORTS_SAVE ) // 1998. 5. 28
+GAME( 199?, casanova, 0, _3x3puzzle, casanova, driver_device, 0, ROT0, "Promat", "Casanova", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/4004clk.c b/src/mame/drivers/4004clk.c
index fad1af5d1e6..0d750822b7c 100644
--- a/src/mess/drivers/4004clk.c
+++ b/src/mame/drivers/4004clk.c
@@ -19,11 +19,13 @@ public:
nixieclock_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_dac(*this, "dac")
- { }
+ m_dac(*this, "dac"),
+ m_input(*this, "INPUT")
+ { }
required_device<i4004_cpu_device> m_maincpu;
required_device<dac_device> m_dac;
+ required_ioport m_input;
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( nixie_w );
DECLARE_WRITE8_MEMBER( neon_w );
@@ -39,7 +41,7 @@ public:
READ8_MEMBER(nixieclock_state::data_r)
{
- return ioport("INPUT")->read() & 0x0f;
+ return m_input->read() & 0x0f;
}
UINT8 nixieclock_state::nixie_to_num(UINT16 val)
@@ -153,7 +155,6 @@ static MACHINE_CONFIG_START( 4004clk, nixieclock_state )
MCFG_CPU_DATA_MAP(4004clk_mem)
MCFG_CPU_IO_MAP(4004clk_io)
-
/* video hardware */
MCFG_DEFAULT_LAYOUT(layout_4004clk)
@@ -188,5 +189,5 @@ ROM_END
/* Driver */
-/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-SYST( 2008, 4004clk, 0, 0, 4004clk, 4004clk, driver_device, 0, "John L. Weinrich", "4004 Nixie Clock", GAME_SUPPORTS_SAVE)
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
+SYST( 2008, 4004clk, 0, 0, 4004clk, 4004clk, driver_device, 0, "John L. Weinrich", "4004 Nixie Clock", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/40love.c b/src/mame/drivers/40love.c
index ebd5a8677b5..a002c30a502 100644
--- a/src/mame/drivers/40love.c
+++ b/src/mame/drivers/40love.c
@@ -1264,6 +1264,6 @@ ROM_START( undoukai )
ROM_LOAD( "a17-18.23v", 0x0c00, 0x0400, CRC(3023a1da) SHA1(08ce4c6e99d04b358d66f0588852311d07183619) ) /* ??? */
ROM_END
-GAME( 1984, 40love, 0, 40love, 40love, fortyl_state, 40love, ROT0, "Taito Corporation", "Forty-Love", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-GAME( 1984, fieldday, 0, undoukai, undoukai, fortyl_state, undoukai, ROT0, "Taito Corporation", "Field Day", GAME_SUPPORTS_SAVE )
-GAME( 1984, undoukai, fieldday, undoukai, undoukai, fortyl_state, undoukai, ROT0, "Taito Corporation", "The Undoukai (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1984, 40love, 0, 40love, 40love, fortyl_state, 40love, ROT0, "Taito Corporation", "Forty-Love", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1984, fieldday, 0, undoukai, undoukai, fortyl_state, undoukai, ROT0, "Taito Corporation", "Field Day", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, undoukai, fieldday, undoukai, undoukai, fortyl_state, undoukai, ROT0, "Taito Corporation", "The Undoukai (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/4enlinea.c b/src/mame/drivers/4enlinea.c
index 3e3dbd5a9bc..338d8e37c01 100644
--- a/src/mame/drivers/4enlinea.c
+++ b/src/mame/drivers/4enlinea.c
@@ -549,4 +549,4 @@ ROM_END
***********************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1991, 4enlinea, 0, 4enlinea, 4enlinea, driver_device, 0, ROT0, "Compumatic", "Cuatro en Linea", GAME_NOT_WORKING )
+GAME( 1991, 4enlinea, 0, 4enlinea, 4enlinea, driver_device, 0, ROT0, "Compumatic", "Cuatro en Linea", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/4enraya.c b/src/mame/drivers/4enraya.c
index 5b44789b76c..4e5d18abc21 100644
--- a/src/mame/drivers/4enraya.c
+++ b/src/mame/drivers/4enraya.c
@@ -442,8 +442,7 @@ static MACHINE_CONFIG_START( 4enraya, _4enraya_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", 4enraya)
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(_4enraya_state, _4enraya)
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -531,6 +530,6 @@ DRIVER_INIT_MEMBER(_4enraya_state, unkpacg)
***********************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1990, 4enraya, 0, 4enraya, 4enraya, driver_device, 0, ROT0, "IDSA", "4 En Raya (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1990, 4enrayaa, 4enraya, 4enraya, 4enraya, driver_device, 0, ROT0, "IDSA", "4 En Raya (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 199?, unkpacg, 0, unkpacg, unkpacg, _4enraya_state, unkpacg, ROT0, "<unknown>", "unknown Pac-Man gambling game", GAME_SUPPORTS_SAVE )
+GAME( 1990, 4enraya, 0, 4enraya, 4enraya, driver_device, 0, ROT0, "IDSA", "4 En Raya (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, 4enrayaa, 4enraya, 4enraya, 4enraya, driver_device, 0, ROT0, "IDSA", "4 En Raya (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 199?, unkpacg, 0, unkpacg, unkpacg, _4enraya_state, unkpacg, ROT0, "<unknown>", "unknown Pac-Man gambling game", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/4roses.c b/src/mame/drivers/4roses.c
index fdd2ea15eaa..acfa158233b 100644
--- a/src/mame/drivers/4roses.c
+++ b/src/mame/drivers/4roses.c
@@ -462,6 +462,6 @@ DRIVER_INIT_MEMBER(_4roses_state,4roses)
*************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1999, 4roses, 0, 4roses, 4roses, _4roses_state, 4roses, ROT0, "<unknown>", "Four Roses (encrypted, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 1999, 4rosesa, 4roses, 4roses, 4roses, _4roses_state, 4roses, ROT0, "<unknown>", "Four Roses (encrypted, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 1999, rugby, 0, 4roses, 4roses, _4roses_state, 4roses, ROT0, "C.M.C.", "Rugby? (four roses hardware)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
+GAME( 1999, 4roses, 0, 4roses, 4roses, _4roses_state, 4roses, ROT0, "<unknown>", "Four Roses (encrypted, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 1999, 4rosesa, 4roses, 4roses, 4roses, _4roses_state, 4roses, ROT0, "<unknown>", "Four Roses (encrypted, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 1999, rugby, 0, 4roses, 4roses, _4roses_state, 4roses, ROT0, "C.M.C.", "Rugby? (four roses hardware)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/5clown.c b/src/mame/drivers/5clown.c
index 03bdbc722e3..5d301b6aa7f 100644
--- a/src/mame/drivers/5clown.c
+++ b/src/mame/drivers/5clown.c
@@ -1224,6 +1224,6 @@ DRIVER_INIT_MEMBER(_5clown_state,fclown)
*************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS... */
-GAME( 1993, 5clown, 0, fclown, fclown, _5clown_state, fclown, ROT0, "IGS", "Five Clown (English, set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1993, 5clowna, 5clown, fclown, fclown, _5clown_state, fclown, ROT0, "IGS", "Five Clown (English, set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1993, 5clownsp, 5clown, fclown, fclown, _5clown_state, fclown, ROT0, "IGS", "Five Clown (Spanish hack)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1993, 5clown, 0, fclown, fclown, _5clown_state, fclown, ROT0, "IGS", "Five Clown (English, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, 5clowna, 5clown, fclown, fclown, _5clown_state, fclown, ROT0, "IGS", "Five Clown (English, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, 5clownsp, 5clown, fclown, fclown, _5clown_state, fclown, ROT0, "IGS", "Five Clown (Spanish hack)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/68ksbc.c b/src/mame/drivers/68ksbc.c
index ae80462bbb7..2ff1bc85cac 100644
--- a/src/mess/drivers/68ksbc.c
+++ b/src/mame/drivers/68ksbc.c
@@ -95,4 +95,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 2002, 68ksbc, 0, 0, c68ksbc, c68ksbc, driver_device, 0, "Wichit Sirichote", "68k Single Board Computer", GAME_NO_SOUND_HW)
+COMP( 2002, 68ksbc, 0, 0, c68ksbc, c68ksbc, driver_device, 0, "Wichit Sirichote", "68k Single Board Computer", MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/8080bw.c b/src/mame/drivers/8080bw.c
index ec488e6c447..a17fe5f1665 100644
--- a/src/mame/drivers/8080bw.c
+++ b/src/mame/drivers/8080bw.c
@@ -421,6 +421,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( invadpt2, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
MACHINE_CONFIG_END
@@ -623,6 +625,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( cosmo, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_cosmo)
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
+
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
MACHINE_CONFIG_END
@@ -784,6 +788,8 @@ MACHINE_CONFIG_START( spacecom, _8080bw_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_spacecom)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_audio)
MACHINE_CONFIG_END
@@ -893,6 +899,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( invrvnge, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1056,6 +1064,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( lrescue, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1385,6 +1395,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( schaser, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_schaser)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1490,6 +1502,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( schasercv, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_schasercv)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -1570,6 +1584,9 @@ static MACHINE_CONFIG_DERIVED_CLASS( sflush, mw8080bw_root, _8080bw_state )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_sflush)
+
+ MCFG_PALETTE_ADD("palette", 8)
+ MCFG_PALETTE_INIT_OWNER(_8080bw_state, sflush)
MACHINE_CONFIG_END
@@ -1670,6 +1687,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( lupin3, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_indianbt)
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1714,6 +1733,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( lupin3a, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_lupin3)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1865,6 +1886,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( polaris, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_polaris)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1989,6 +2012,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( ballbomb, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_ballbomb)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -2230,6 +2255,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( indianbt, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_indianbt)
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
+
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
@@ -2253,6 +2280,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( indianbtbr, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_indianbt)
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
+
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
MACHINE_CONFIG_END
@@ -2324,6 +2353,8 @@ static MACHINE_CONFIG_DERIVED_CLASS( steelwkr, mw8080bw_root, _8080bw_state )
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_invadpt2)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
MACHINE_CONFIG_END
@@ -2499,6 +2530,8 @@ MACHINE_CONFIG_START( shuttlei, _8080bw_state )
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1)
MCFG_SCREEN_UPDATE_DRIVER(_8080bw_state, screen_update_shuttlei)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+
/* sound hardware */
MCFG_FRAGMENT_ADD(invaders_samples_audio)
MACHINE_CONFIG_END
@@ -4698,117 +4731,117 @@ ROM_END
/* board # rom parent machine inp init monitor, .. */
// Taito games (+clones), starting with Space Invaders
-GAME( 1978, sisv1, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 1)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1978, sisv2, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1978, sisv3, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 3)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1978, sisv, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 4)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAMEL(1978, sitv1, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (TV Version rev 1)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1978, sitv, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (TV Version rev 2)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAME( 1979, sicv, invaders, invadpt2, sicv, driver_device, 0, ROT270, "Taito", "Space Invaders (CV Version)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAMEL(1978, invadrmr, invaders, invaders, invadrmr, driver_device, 0, ROT270, "Taito / Model Racing", "Space Invaders (Model Racing)", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
-GAMEL(1978, invaderl, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Logitec", "Space Invaders (Logitec)", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
-GAMEL(1978, spcewars, invaders, spcewars, spcewars, driver_device, 0, ROT270, "Taito / Sanritsu", "Space War (Sanritsu)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
-GAMEL(1978, spceking, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Leijac Corporation", "Space King", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
-GAMEL(1979, cosmicmo, invaders, cosmicmo, cosmicmo, driver_device, 0, ROT270, "Taito / Universal", "Cosmic Monsters (version II)", GAME_SUPPORTS_SAVE, layout_cosmicm ) // unclassified, licensed or bootleg?
-GAMEL(1979, cosmicm2, invaders, cosmicmo, cosmicmo, driver_device, 0, ROT270, "Taito / Universal", "Cosmic Monsters 2", GAME_SUPPORTS_SAVE, layout_cosmicm ) // unclassified, licensed or bootleg?
-GAMEL(1980?,sinvzen, invaders, invaders, sinvzen, driver_device, 0, ROT270, "Taito / Zenitone-Microsec Ltd.", "Super Invaders (Zenitone-Microsec)", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
-GAMEL(1980, ultrainv, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Konami", "Ultra Invaders", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
-GAMEL(1978, spaceatt, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bootleg of Space Invaders)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1978, spaceattbp, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bproms)(bootleg of Space Invaders)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1978, spaceatt2k, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (2k roms)(bootleg of Space Invaders)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1978, galmonst, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Laguna S.A.)", "Galaxy Monsters (Laguna S.A. Spanish bootleg of Space Invaders)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1980, spaceat2, invaders, invaders, spaceat2, driver_device, 0, ROT270, "bootleg (Video Games UK)", "Space Attack II (bootleg of Super Invaders)", GAME_SUPPORTS_SAVE, layout_invaders ) // bootleg of Zenitone-Microsec Super Invaders
-GAMEL(1979, spacecom, invaders, spacecom, spacecom, _8080bw_state, spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_spacecom )
-GAME( 1978, spacerng, invaders, spacerng, sitv, driver_device, 0, ROT90, "bootleg (Leisure Time Electronics)", "Space Ranger (bootleg of Space Invaders)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // many modifications
-GAMEL(19??, invasion, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg (Sidam)", "Invasion (Sidam)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(19??, invasiona, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg", "Invasion (bootleg set 1, normal graphics)", GAME_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX
-GAMEL(19??, invasionb, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg", "Invasion (bootleg set 2, no copyright)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(19??, invasionrz, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 3, R Z SRL Bologna)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING, layout_invaders )
-GAMEL(19??, invasionrza,invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 4, R Z SRL Bologna)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING, layout_invaders )
-GAMEL(19??, invadersem, invaders, invaders, sitv, driver_device, 0, ROT270, "Electromar", "Space Invaders (Electromar, Spanish)", GAME_SUPPORTS_SAVE, layout_invaders ) // possibly licensed
-GAMEL(1978, superinv, invaders, invaders, superinv, driver_device, 0, ROT270, "bootleg", "Super Invaders (bootleg set 1)", GAME_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version
-GAMEL(1978, sinvemag, invaders, invaders, sinvemag, driver_device, 0, ROT270, "bootleg (Emag)", "Super Invaders (bootleg set 2)", GAME_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version
-GAMEL(1980, searthin, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg (Competitive Video)", "Super Earth Invasion (set 1)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1980, searthina, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg (Competitive Video)", "Super Earth Invasion (set 2)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1980, searthie, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg (Electrocoin)", "Super Earth Invasion (set 3)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(19??, alieninv, invaders, invaders, alieninv, driver_device, 0, ROT270, "bootleg (Margamatics)", "Alien Invasion", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(19??, alieninvp2, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg", "Alien Invasion Part II", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1979, jspecter, invaders, invaders, jspecter, driver_device, 0, ROT270, "bootleg (Jatre)", "Jatre Specter (set 1)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1979, jspecter2, invaders, invaders, jspecter, driver_device, 0, ROT270, "bootleg (Jatre)", "Jatre Specter (set 2)", GAME_SUPPORTS_SAVE, layout_invaders )
-GAMEL(1978, spacewr3, invaders, spcewars, sicv, driver_device, 0, ROT270, "bootleg", "Space War Part 3", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_invaders ) // unrelated to Sanritsu's version?
-GAMEL(1978, invader4, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg", "Space Invaders Part Four", GAME_SUPPORTS_SAVE, layout_invaders )
-GAME( 1978, darthvdr, invaders, darthvdr, darthvdr, driver_device, 0, ROT270, "bootleg", "Darth Vader (bootleg of Space Invaders)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAMEL(19??, tst_invd, invaders, invaders, sicv, driver_device, 0, ROT0, "<unknown>", "Space Invaders Test ROM", GAME_SUPPORTS_SAVE, layout_invaders )
+GAME( 1978, sisv1, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1978, sisv2, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1978, sisv3, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1978, sisv, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (SV Version rev 4)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAMEL(1978, sitv1, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (TV Version rev 1)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1978, sitv, invaders, invaders, sitv, driver_device, 0, ROT270, "Taito", "Space Invaders (TV Version rev 2)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAME( 1979, sicv, invaders, invadpt2, sicv, driver_device, 0, ROT270, "Taito", "Space Invaders (CV Version)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAMEL(1978, invadrmr, invaders, invaders, invadrmr, driver_device, 0, ROT270, "Taito / Model Racing", "Space Invaders (Model Racing)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
+GAMEL(1978, invaderl, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Logitec", "Space Invaders (Logitec)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
+GAMEL(1978, spcewars, invaders, spcewars, spcewars, driver_device, 0, ROT270, "Taito / Sanritsu", "Space War (Sanritsu)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
+GAMEL(1978, spceking, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Leijac Corporation", "Space King", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
+GAMEL(1979, cosmicmo, invaders, cosmicmo, cosmicmo, driver_device, 0, ROT270, "Taito / Universal", "Cosmic Monsters (version II)", MACHINE_SUPPORTS_SAVE, layout_cosmicm ) // unclassified, licensed or bootleg?
+GAMEL(1979, cosmicm2, invaders, cosmicmo, cosmicmo, driver_device, 0, ROT270, "Taito / Universal", "Cosmic Monsters 2", MACHINE_SUPPORTS_SAVE, layout_cosmicm ) // unclassified, licensed or bootleg?
+GAMEL(1980?,sinvzen, invaders, invaders, sinvzen, driver_device, 0, ROT270, "Taito / Zenitone-Microsec Ltd.", "Super Invaders (Zenitone-Microsec)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
+GAMEL(1980, ultrainv, invaders, invaders, sicv, driver_device, 0, ROT270, "Taito / Konami", "Ultra Invaders", MACHINE_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg?
+GAMEL(1978, spaceatt, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1978, spaceattbp, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bproms)(bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1978, spaceatt2k, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (2k roms)(bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1978, galmonst, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Laguna S.A.)", "Galaxy Monsters (Laguna S.A. Spanish bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1980, spaceat2, invaders, invaders, spaceat2, driver_device, 0, ROT270, "bootleg (Video Games UK)", "Space Attack II (bootleg of Super Invaders)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // bootleg of Zenitone-Microsec Super Invaders
+GAMEL(1979, spacecom, invaders, spacecom, spacecom, _8080bw_state, spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_spacecom )
+GAME( 1978, spacerng, invaders, spacerng, sitv, driver_device, 0, ROT90, "bootleg (Leisure Time Electronics)", "Space Ranger (bootleg of Space Invaders)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // many modifications
+GAMEL(19??, invasion, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg (Sidam)", "Invasion (Sidam)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(19??, invasiona, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg", "Invasion (bootleg set 1, normal graphics)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX
+GAMEL(19??, invasionb, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg", "Invasion (bootleg set 2, no copyright)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(19??, invasionrz, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 3, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders )
+GAMEL(19??, invasionrza,invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg (R Z SRL Bologna)", "Invasion (bootleg set 4, R Z SRL Bologna)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_invaders )
+GAMEL(19??, invadersem, invaders, invaders, sitv, driver_device, 0, ROT270, "Electromar", "Space Invaders (Electromar, Spanish)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // possibly licensed
+GAMEL(1978, superinv, invaders, invaders, superinv, driver_device, 0, ROT270, "bootleg", "Super Invaders (bootleg set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version
+GAMEL(1978, sinvemag, invaders, invaders, sinvemag, driver_device, 0, ROT270, "bootleg (Emag)", "Super Invaders (bootleg set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders ) // not related to Zenitone-Microsec version
+GAMEL(1980, searthin, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg (Competitive Video)", "Super Earth Invasion (set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1980, searthina, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg (Competitive Video)", "Super Earth Invasion (set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1980, searthie, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg (Electrocoin)", "Super Earth Invasion (set 3)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(19??, alieninv, invaders, invaders, alieninv, driver_device, 0, ROT270, "bootleg (Margamatics)", "Alien Invasion", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(19??, alieninvp2, invaders, invaders, searthin, driver_device, 0, ROT270, "bootleg", "Alien Invasion Part II", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1979, jspecter, invaders, invaders, jspecter, driver_device, 0, ROT270, "bootleg (Jatre)", "Jatre Specter (set 1)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1979, jspecter2, invaders, invaders, jspecter, driver_device, 0, ROT270, "bootleg (Jatre)", "Jatre Specter (set 2)", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAMEL(1978, spacewr3, invaders, spcewars, sicv, driver_device, 0, ROT270, "bootleg", "Space War Part 3", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_invaders ) // unrelated to Sanritsu's version?
+GAMEL(1978, invader4, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg", "Space Invaders Part Four", MACHINE_SUPPORTS_SAVE, layout_invaders )
+GAME( 1978, darthvdr, invaders, darthvdr, darthvdr, driver_device, 0, ROT270, "bootleg", "Darth Vader (bootleg of Space Invaders)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAMEL(19??, tst_invd, invaders, invaders, sicv, driver_device, 0, ROT0, "<unknown>", "Space Invaders Test ROM", MACHINE_SUPPORTS_SAVE, layout_invaders )
// other Taito
-GAME( 1979, invadpt2, 0, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito", "Space Invaders Part II (Taito)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1979, invadpt2br, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito do Brasil", "Space Invaders Part II (Brazil)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1980, invaddlx, invadpt2, invaders, invadpt2, driver_device, 0, ROT270, "Taito (Midway license)", "Space Invaders Deluxe", GAME_SUPPORTS_SAVE )
-GAME( 1979, moonbase, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito / Nichibutsu", "Moon Base (set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // this has a 'Taito Corp' string hidden away in the rom - how do you get it to display?
-GAME( 1979, moonbasea, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito / Nichibutsu", "Moon Base (set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // this has the same string replaced with Nichibutsu, no other differences
-GAME( 1980, spclaser, 0, invadpt2, spclaser, driver_device, 0, ROT270, "Taito", "Space Laser", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1980, intruder, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "Taito (Game Plan license)", "Intruder", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1980, laser, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "bootleg (Leisure Time Electronics Inc.)", "Astro Laser (bootleg of Space Laser)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1979, spcewarl, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "Leijac Corporation", "Space War (Leijac Corporation)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) // Taito's version is actually a spin-off of this?
-GAME( 1979, lrescue, 0, lrescue, lrescue, driver_device, 0, ROT270, "Taito", "Lunar Rescue", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1979, grescue, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "Taito (Universal license?)", "Galaxy Rescue", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1980, mlander, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Leisure Time Electronics)", "Moon Lander (bootleg of Lunar Rescue)", GAME_SUPPORTS_SAVE )
-GAME( 1979, lrescuem, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1979, lrescuem2, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1979, desterth, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg", "Destination Earth (bootleg of Lunar Rescue)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1979, schaser, 0, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1979, schasera, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1979, schaserb, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1979, schaserc, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 4)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS )
-GAME( 1979, schasercv, schaser, schasercv, schasercv, driver_device, 0, ROT270, "Taito", "Space Chaser (CV version - set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS )
-GAME( 1979, sflush, 0, sflush, sflush, driver_device, 0, ROT270, "Taito", "Straight Flush", GAME_SUPPORTS_SAVE | GAME_NO_SOUND | GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL)
-GAME( 1980, lupin3, 0, lupin3, lupin3, driver_device, 0, ROT270, "Taito", "Lupin III (set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1980, lupin3a, lupin3, lupin3a, lupin3a, driver_device, 0, ROT270, "Taito", "Lupin III (set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1980, polaris, 0, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (Latest version)", GAME_SUPPORTS_SAVE )
-GAME( 1980, polarisa, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (First revision)", GAME_SUPPORTS_SAVE )
-GAME( 1980, polariso, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (Original version)", GAME_SUPPORTS_SAVE )
-GAME( 1981, polarisbr, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito do Brasil", "Polaris (Brazil)", GAME_SUPPORTS_SAVE )
-GAME( 1980, ballbomb, 0, ballbomb, ballbomb, driver_device, 0, ROT270, "Taito", "Balloon Bomber", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS ) /* missing clouds */
-GAME( 1980, indianbt, 0, indianbt, indianbt, driver_device, 0, ROT270, "Taito", "Indian Battle", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1983, indianbtbr, indianbt, indianbtbr,indianbtbr,driver_device, 0, ROT270, "Taito do Brasil", "Indian Battle (Brazil)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1980, steelwkr, 0, steelwkr, steelwkr, driver_device, 0, ROT0 , "Taito", "Steel Worker", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAMEL(1980?,galactic, 0, invaders, galactic, driver_device, 0, ROT270, "Taito do Brasil", "Galactica - Batalha Espacial", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_galactic )
-GAMEL(1980?,spacmiss, galactic, invaders, galactic, driver_device, 0, ROT270, "bootleg?", "Space Missile - Space Fighting Game", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_galactic )
+GAME( 1979, invadpt2, 0, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito", "Space Invaders Part II (Taito)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1979, invadpt2br, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito do Brasil", "Space Invaders Part II (Brazil)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1980, invaddlx, invadpt2, invaders, invadpt2, driver_device, 0, ROT270, "Taito (Midway license)", "Space Invaders Deluxe", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, moonbase, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito / Nichibutsu", "Moon Base (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // this has a 'Taito Corp' string hidden away in the rom - how do you get it to display?
+GAME( 1979, moonbasea, invadpt2, invadpt2, invadpt2, driver_device, 0, ROT270, "Taito / Nichibutsu", "Moon Base (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // this has the same string replaced with Nichibutsu, no other differences
+GAME( 1980, spclaser, 0, invadpt2, spclaser, driver_device, 0, ROT270, "Taito", "Space Laser", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, intruder, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "Taito (Game Plan license)", "Intruder", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1980, laser, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "bootleg (Leisure Time Electronics Inc.)", "Astro Laser (bootleg of Space Laser)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, spcewarl, spclaser, invadpt2, spclaser, driver_device, 0, ROT270, "Leijac Corporation", "Space War (Leijac Corporation)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Taito's version is actually a spin-off of this?
+GAME( 1979, lrescue, 0, lrescue, lrescue, driver_device, 0, ROT270, "Taito", "Lunar Rescue", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1979, grescue, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "Taito (Universal license?)", "Galaxy Rescue", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1980, mlander, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Leisure Time Electronics)", "Moon Lander (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, lrescuem, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1979, lrescuem2, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg (Model Racing)", "Lunar Rescue (Model Racing bootleg, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1979, desterth, lrescue, lrescue, lrescue, driver_device, 0, ROT270, "bootleg", "Destination Earth (bootleg of Lunar Rescue)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1979, schaser, 0, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, schasera, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, schaserb, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, schaserc, schaser, schaser, schaser, driver_device, 0, ROT270, "Taito", "Space Chaser (set 4)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS )
+GAME( 1979, schasercv, schaser, schasercv, schasercv, driver_device, 0, ROT270, "Taito", "Space Chaser (CV version - set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS )
+GAME( 1979, sflush, 0, sflush, sflush, driver_device, 0, ROT270, "Taito", "Straight Flush", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL)
+GAME( 1980, lupin3, 0, lupin3, lupin3, driver_device, 0, ROT270, "Taito", "Lupin III (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1980, lupin3a, lupin3, lupin3a, lupin3a, driver_device, 0, ROT270, "Taito", "Lupin III (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1980, polaris, 0, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (Latest version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, polarisa, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (First revision)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, polariso, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito", "Polaris (Original version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, polarisbr, polaris, polaris, polaris, driver_device, 0, ROT270, "Taito do Brasil", "Polaris (Brazil)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, ballbomb, 0, ballbomb, ballbomb, driver_device, 0, ROT270, "Taito", "Balloon Bomber", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) /* missing clouds */
+GAME( 1980, indianbt, 0, indianbt, indianbt, driver_device, 0, ROT270, "Taito", "Indian Battle", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1983, indianbtbr, indianbt, indianbtbr,indianbtbr,driver_device, 0, ROT270, "Taito do Brasil", "Indian Battle (Brazil)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1980, steelwkr, 0, steelwkr, steelwkr, driver_device, 0, ROT0 , "Taito", "Steel Worker", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAMEL(1980?,galactic, 0, invaders, galactic, driver_device, 0, ROT270, "Taito do Brasil", "Galactica - Batalha Espacial", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_galactic )
+GAMEL(1980?,spacmiss, galactic, invaders, galactic, driver_device, 0, ROT270, "bootleg?", "Space Missile - Space Fighting Game", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_galactic )
// Misc. manufacturers
-GAME( 1979, galxwars, 0, invadpt2, galxwars, driver_device, 0, ROT270, "Universal", "Galaxy Wars (Universal set 1)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1979, galxwars2, galxwars, invadpt2, galxwars, driver_device, 0, ROT270, "Universal", "Galaxy Wars (Universal set 2)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1979, galxwarst, galxwars, invadpt2, galxwars, driver_device, 0, ROT270, "Universal (Taito license?)", "Galaxy Wars (Taito?)" , GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) // Copyright not displayed
-GAME( 1979, starw, galxwars, invaders, galxwars, driver_device, 0, ROT270, "bootleg", "Star Wars (bootleg of Galaxy Wars, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1979, starw1, galxwars, starw1, galxwars, driver_device, 0, ROT270, "bootleg (Yamashita)", "Star Wars (bootleg of Galaxy Wars, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1979, cosmo, 0, cosmo, cosmo, driver_device, 0, ROT90, "TDS & MINTS", "Cosmo", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1980?,invrvnge, 0, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 1)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND ) // copyright is either late-1980, or early-1981
-GAME( 1980?,invrvngea, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 2)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND )
-GAME( 1980?,invrvngeb, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 3)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND )
-GAME( 1980?,invrvngedu, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd. (Dutchford license)", "Invader's Revenge (Dutchford, single PCB)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND )
-GAME( 1980?,invrvngegw, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd. (Game World license)", "Invader's Revenge (Game World, single PCB)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND )
-GAME( 1980, vortex, 0, vortex, vortex, _8080bw_state, vortex, ROT270, "Zilec Electronics", "Vortex", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) /* Encrypted 8080/IO */
-GAME( 1979, rollingc, 0, rollingc, rollingc, driver_device, 0, ROT270, "Nichibutsu", "Rolling Crash / Moon Base", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1979, ozmawars, 0, invaders, ozmawars, driver_device, 0, ROT270, "SNK", "Ozma Wars (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1979, ozmawars2, ozmawars, invaders, ozmawars, driver_device, 0, ROT270, "SNK", "Ozma Wars (set 2)", GAME_SUPPORTS_SAVE ) /* Uses Taito's three board color version of Space Invaders PCB */
-GAME( 1979, spaceph, ozmawars, invaders, spaceph, driver_device, 0, ROT270, "bootleg? (Zilec Games)", "Space Phantoms (bootleg of Ozma Wars)", GAME_SUPPORTS_SAVE )
-GAME( 1979, solfight, ozmawars, invaders, ozmawars, driver_device, 0, ROT270, "bootleg", "Solar Fight (bootleg of Ozma Wars)", GAME_SUPPORTS_SAVE )
-GAME( 1979, yosakdon, 0, yosakdon, yosakdon, driver_device, 0, ROT270, "Wing", "Yosaku To Donbei (set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAME( 1979, yosakdona, yosakdon, yosakdon, yosakdon, driver_device, 0, ROT270, "Wing", "Yosaku To Donbei (set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAMEL(1979, shuttlei, 0, shuttlei, shuttlei, driver_device, 0, ROT270, "Omori Electric Co., Ltd.", "Shuttle Invader", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_shuttlei )
-GAMEL(1979, skylove, 0, shuttlei, skylove, driver_device, 0, ROT270, "Omori Electric Co., Ltd.", "Sky Love", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_shuttlei )
-GAME (1978, claybust, 0, claybust, claybust, driver_device, 0, ROT0, "Model Racing", "Claybuster", GAME_SUPPORTS_SAVE | GAME_NO_SOUND ) // no titlescreen, Claybuster according to flyers
-GAMEL(1980, gunchamp, 0, claybust, gunchamp, driver_device, 0, ROT0, "Model Racing", "Gun Champ", GAME_SUPPORTS_SAVE | GAME_NO_SOUND, layout_gunchamp ) // no titlescreen, Gun Champ according to original cab
-GAME( 1980?,astropal, 0, astropal, astropal, driver_device, 0, ROT0, "Sidam?", "Astropal", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAMEL(1979?,attackfc, 0, attackfc, attackfc, _8080bw_state, attackfc, ROT0, "Electronic Games Systems", "Attack Force", GAME_SUPPORTS_SAVE | GAME_NO_SOUND, layout_attackfc )
-
-GAME( 2002, invmulti, 0, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03D)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2002, invmultim3a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03A)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2002, invmultim2c,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.02C)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2002, invmultim2a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.02A)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2002, invmultim1a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.01A)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2002, invmultit3d,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (T8.03D)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2002, invmultis3a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.83A)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2002, invmultis2a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.82A)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2002, invmultis1a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.81A)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2002, invmultip, invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (prototype)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1979, galxwars, 0, invadpt2, galxwars, driver_device, 0, ROT270, "Universal", "Galaxy Wars (Universal set 1)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galxwars2, galxwars, invadpt2, galxwars, driver_device, 0, ROT270, "Universal", "Galaxy Wars (Universal set 2)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galxwarst, galxwars, invadpt2, galxwars, driver_device, 0, ROT270, "Universal (Taito license?)", "Galaxy Wars (Taito?)" , MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // Copyright not displayed
+GAME( 1979, starw, galxwars, invaders, galxwars, driver_device, 0, ROT270, "bootleg", "Star Wars (bootleg of Galaxy Wars, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, starw1, galxwars, starw1, galxwars, driver_device, 0, ROT270, "bootleg (Yamashita)", "Star Wars (bootleg of Galaxy Wars, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, cosmo, 0, cosmo, cosmo, driver_device, 0, ROT90, "TDS & MINTS", "Cosmo", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1980?,invrvnge, 0, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // copyright is either late-1980, or early-1981
+GAME( 1980?,invrvngea, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
+GAME( 1980?,invrvngeb, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd.", "Invader's Revenge (set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
+GAME( 1980?,invrvngedu, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd. (Dutchford license)", "Invader's Revenge (Dutchford, single PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
+GAME( 1980?,invrvngegw, invrvnge, invrvnge, invrvnge, driver_device, 0, ROT270, "Zenitone-Microsec Ltd. (Game World license)", "Invader's Revenge (Game World, single PCB)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
+GAME( 1980, vortex, 0, vortex, vortex, _8080bw_state, vortex, ROT270, "Zilec Electronics", "Vortex", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) /* Encrypted 8080/IO */
+GAME( 1979, rollingc, 0, rollingc, rollingc, driver_device, 0, ROT270, "Nichibutsu", "Rolling Crash / Moon Base", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, ozmawars, 0, invaders, ozmawars, driver_device, 0, ROT270, "SNK", "Ozma Wars (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, ozmawars2, ozmawars, invaders, ozmawars, driver_device, 0, ROT270, "SNK", "Ozma Wars (set 2)", MACHINE_SUPPORTS_SAVE ) /* Uses Taito's three board color version of Space Invaders PCB */
+GAME( 1979, spaceph, ozmawars, invaders, spaceph, driver_device, 0, ROT270, "bootleg? (Zilec Games)", "Space Phantoms (bootleg of Ozma Wars)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, solfight, ozmawars, invaders, ozmawars, driver_device, 0, ROT270, "bootleg", "Solar Fight (bootleg of Ozma Wars)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, yosakdon, 0, yosakdon, yosakdon, driver_device, 0, ROT270, "Wing", "Yosaku To Donbei (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAME( 1979, yosakdona, yosakdon, yosakdon, yosakdon, driver_device, 0, ROT270, "Wing", "Yosaku To Donbei (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAMEL(1979, shuttlei, 0, shuttlei, shuttlei, driver_device, 0, ROT270, "Omori Electric Co., Ltd.", "Shuttle Invader", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_shuttlei )
+GAMEL(1979, skylove, 0, shuttlei, skylove, driver_device, 0, ROT270, "Omori Electric Co., Ltd.", "Sky Love", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_shuttlei )
+GAME (1978, claybust, 0, claybust, claybust, driver_device, 0, ROT0, "Model Racing", "Claybuster", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // no titlescreen, Claybuster according to flyers
+GAMEL(1980, gunchamp, 0, claybust, gunchamp, driver_device, 0, ROT0, "Model Racing", "Gun Champ", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_gunchamp ) // no titlescreen, Gun Champ according to original cab
+GAME( 1980?,astropal, 0, astropal, astropal, driver_device, 0, ROT0, "Sidam?", "Astropal", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAMEL(1979?,attackfc, 0, attackfc, attackfc, _8080bw_state, attackfc, ROT0, "Electronic Games Systems", "Attack Force", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_attackfc )
+
+GAME( 2002, invmulti, 0, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, invmultim3a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.03A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, invmultim2c,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.02C)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, invmultim2a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.02A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, invmultim1a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (M8.01A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, invmultit3d,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (T8.03D)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, invmultis3a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.83A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, invmultis2a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.82A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, invmultis1a,invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (S0.81A)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, invmultip, invmulti, invmulti, invmulti, _8080bw_state, invmulti, ROT270, "hack (Braze Technologies)", "Space Invaders Multigame (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/88games.c b/src/mame/drivers/88games.c
index 234d3e0cde3..81695376892 100644
--- a/src/mame/drivers/88games.c
+++ b/src/mame/drivers/88games.c
@@ -285,10 +285,7 @@ void _88games_state::machine_start()
save_item(NAME(m_videobank));
save_item(NAME(m_zoomreadroms));
save_item(NAME(m_speech_chip));
- save_item(NAME(m_layer_colorbase));
save_item(NAME(m_k88games_priority));
- save_item(NAME(m_sprite_colorbase));
- save_item(NAME(m_zoom_colorbase));
}
void _88games_state::machine_reset()
@@ -297,11 +294,6 @@ void _88games_state::machine_reset()
m_zoomreadroms = 0;
m_speech_chip = 0;
m_k88games_priority = 0;
- m_layer_colorbase[0] = 64;
- m_layer_colorbase[1] = 0;
- m_layer_colorbase[2] = 16;
- m_sprite_colorbase = 32;
- m_zoom_colorbase = 48;
}
static MACHINE_CONFIG_START( 88games, _88games_state )
@@ -336,6 +328,7 @@ static MACHINE_CONFIG_START( 88games, _88games_state )
MCFG_DEVICE_ADD("k051960", K051960, 0)
MCFG_GFX_PALETTE("palette")
+ MCFG_K051960_SCREEN_TAG("screen")
MCFG_K051960_CB(_88games_state, sprite_callback)
MCFG_DEVICE_ADD("k051316", K051316, 0)
@@ -533,6 +526,6 @@ ROM_END
*
*************************************/
-GAME( 1988, 88games, 0, 88games, 88games, driver_device, 0, ROT0, "Konami", "'88 Games", GAME_SUPPORTS_SAVE )
-GAME( 1988, konami88, 88games, 88games, 88games, driver_device, 0, ROT0, "Konami", "Konami '88", GAME_SUPPORTS_SAVE )
-GAME( 1988, hypsptsp, 88games, 88games, 88games, driver_device, 0, ROT0, "Konami", "Hyper Sports Special (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1988, 88games, 0, 88games, 88games, driver_device, 0, ROT0, "Konami", "'88 Games", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, konami88, 88games, 88games, 88games, driver_device, 0, ROT0, "Konami", "Konami '88", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, hypsptsp, 88games, 88games, 88games, driver_device, 0, ROT0, "Konami", "Hyper Sports Special (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/a1supply.c b/src/mame/drivers/a1supply.c
index 142f9e6b54f..456103daf37 100644
--- a/src/mame/drivers/a1supply.c
+++ b/src/mame/drivers/a1supply.c
@@ -164,6 +164,6 @@ ROM_START( tvpoker )
ROM_END
-GAME( 197?, tv21, 0, a1supply, 0, driver_device, 0, ROT0, "A-1 Supply", "T.V. 21", GAME_IS_SKELETON )
-GAME( 197?, tv21_3, 0, a1supply, 0, driver_device, 0, ROT0, "A-1 Supply", "T.V. 21 III", GAME_IS_SKELETON )
-GAME( 197?, tvpoker, 0, a1supply, 0, driver_device, 0, ROT0, "A-1 Supply", "T.V. Poker", GAME_IS_SKELETON )
+GAME( 197?, tv21, 0, a1supply, 0, driver_device, 0, ROT0, "A-1 Supply", "T.V. 21", MACHINE_IS_SKELETON )
+GAME( 197?, tv21_3, 0, a1supply, 0, driver_device, 0, ROT0, "A-1 Supply", "T.V. 21 III", MACHINE_IS_SKELETON )
+GAME( 197?, tvpoker, 0, a1supply, 0, driver_device, 0, ROT0, "A-1 Supply", "T.V. Poker", MACHINE_IS_SKELETON )
diff --git a/src/mess/drivers/a2600.c b/src/mame/drivers/a2600.c
index 35c9dacf0c5..cf61e133b62 100644
--- a/src/mess/drivers/a2600.c
+++ b/src/mame/drivers/a2600.c
@@ -37,7 +37,9 @@ public:
m_cart(*this, "cartslot"),
m_tia(*this, "tia_video"),
m_maincpu(*this, "maincpu"),
- m_screen(*this, "screen") { }
+ m_screen(*this, "screen"),
+ m_swb(*this, "SWB")
+ { }
required_shared_ptr<UINT8> m_riot_ram;
UINT16 m_current_screen_height;
@@ -66,6 +68,7 @@ protected:
unsigned long detect_2600controllers();
required_device<m6502_device> m_maincpu;
required_device<screen_device> m_screen;
+ required_ioport m_swb;
};
@@ -124,7 +127,7 @@ WRITE_LINE_MEMBER(a2600_state::irq_callback)
READ8_MEMBER(a2600_state::riot_input_port_8_r)
{
- return ioport("SWB")->read();
+ return m_swb->read();
}
@@ -168,7 +171,7 @@ READ8_MEMBER(a2600_state::a2600_get_databus_contents)
UINT8 last_byte, prev_byte;
address_space& prog_space = m_maincpu->space(AS_PROGRAM);
- last_address = m_maincpu->pc() - 1;
+ last_address = m_maincpu->pc() + 1;
if ( ! ( last_address & 0x1080 ) )
{
return offset;
@@ -545,5 +548,5 @@ ROM_END
#define rom_a2600p rom_a2600
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-CONS( 1977, a2600, 0, 0, a2600, a2600, driver_device, 0, "Atari", "Atari 2600 (NTSC)" , GAME_SUPPORTS_SAVE )
-CONS( 1978, a2600p, a2600, 0, a2600p, a2600, driver_device, 0, "Atari", "Atari 2600 (PAL)", GAME_SUPPORTS_SAVE )
+CONS( 1977, a2600, 0, 0, a2600, a2600, driver_device, 0, "Atari", "Atari 2600 (NTSC)" , MACHINE_SUPPORTS_SAVE )
+CONS( 1978, a2600p, a2600, 0, a2600p, a2600, driver_device, 0, "Atari", "Atari 2600 (PAL)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/a310.c b/src/mame/drivers/a310.c
index 91018398b42..61764ca4cbd 100644
--- a/src/mess/drivers/a310.c
+++ b/src/mame/drivers/a310.c
@@ -448,6 +448,6 @@ ROM_START( a3020 )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1988, a310, 0, 0, a310, a310, a310_state, a310, "Acorn", "Archimedes 310", GAME_NOT_WORKING)
-COMP( 1988, a3010, a310, 0, a310, a310, a310_state, a310, "Acorn", "Archimedes 3010", GAME_NOT_WORKING)
-COMP( 1988, a3020, a310, 0, a310, a310, a310_state, a310, "Acorn", "Archimedes 3020", GAME_NOT_WORKING)
+COMP( 1988, a310, 0, 0, a310, a310, a310_state, a310, "Acorn", "Archimedes 310", MACHINE_NOT_WORKING)
+COMP( 1988, a3010, a310, 0, a310, a310, a310_state, a310, "Acorn", "Archimedes 3010", MACHINE_NOT_WORKING)
+COMP( 1988, a3020, a310, 0, a310, a310, a310_state, a310, "Acorn", "Archimedes 3020", MACHINE_NOT_WORKING)
diff --git a/src/mess/drivers/a5105.c b/src/mame/drivers/a5105.c
index 82229b29329..03be992da60 100644
--- a/src/mess/drivers/a5105.c
+++ b/src/mame/drivers/a5105.c
@@ -621,4 +621,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1989, a5105, 0, 0, a5105, a5105, driver_device, 0, "VEB Robotron", "BIC A5105", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1989, a5105, 0, 0, a5105, a5105, driver_device, 0, "VEB Robotron", "BIC A5105", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/a51xx.c b/src/mame/drivers/a51xx.c
index 44f89c7223e..2155fce0124 100644
--- a/src/mess/drivers/a51xx.c
+++ b/src/mame/drivers/a51xx.c
@@ -173,5 +173,5 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, a5120, 0, 0, a5120, a5120, driver_device, 0, "VEB Robotron", "A5120", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1983, a5130, a5120, 0, a5130, a5130, driver_device, 0, "VEB Robotron", "A5130", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1982, a5120, 0, 0, a5120, a5120, driver_device, 0, "VEB Robotron", "A5120", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1983, a5130, a5120, 0, a5130, a5130, driver_device, 0, "VEB Robotron", "A5130", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/a6809.c b/src/mame/drivers/a6809.c
index 38a455614ca..38a455614ca 100644
--- a/src/mess/drivers/a6809.c
+++ b/src/mame/drivers/a6809.c
diff --git a/src/mess/drivers/a7150.c b/src/mame/drivers/a7150.c
index 171fc9476dc..47935cf9b79 100644
--- a/src/mess/drivers/a7150.c
+++ b/src/mame/drivers/a7150.c
@@ -80,4 +80,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1986, a7150, 0, 0, a7150, a7150, driver_device, 0, "VEB Robotron", "A7150", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1986, a7150, 0, 0, a7150, a7150, driver_device, 0, "VEB Robotron", "A7150", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/a7800.c b/src/mame/drivers/a7800.c
index b9b7bcdc65c..0d979502d7d 100644
--- a/src/mess/drivers/a7800.c
+++ b/src/mame/drivers/a7800.c
@@ -287,12 +287,13 @@ static ADDRESS_MAP_START( a7800_mem, AS_PROGRAM, 8, a7800_state )
AM_RANGE(0x0280, 0x029f) AM_MIRROR(0x60) AM_DEVICE("riot", mos6532_t, io_map)
AM_RANGE(0x0480, 0x04ff) AM_MIRROR(0x100) AM_DEVICE("riot", mos6532_t, ram_map)
AM_RANGE(0x1800, 0x1fff) AM_RAM AM_SHARE("6116_1")
- AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("6116_2") AM_MIRROR(0x0800)
+ AM_RANGE(0x2000, 0x27ff) AM_RAM AM_SHARE("6116_2")
// According to the official Software Guide, the RAM at 0x2000 is
// repeatedly mirrored up to 0x3fff, but this is evidently incorrect
// because the High Score Cartridge maps ROM at 0x3000-0x3fff
- // Hardware tests show that only the mirror at 0x2800-0x2fff actually
- // exists, and only on some hardware (MARIA? motherboard?) revisions
+ // Hardware tests show that only the page at 0x2700 appears at
+ // 0x2800, and only on some hardware (MARIA? motherboard?) revisions,
+ // and even then with inconsistent and unreliable results.
AM_RANGE(0x4000, 0xffff) AM_DEVWRITE("cartslot", a78_cart_slot_device, write_40xx)
AM_RANGE(0x4000, 0xbfff) AM_DEVREAD("cartslot", a78_cart_slot_device, read_40xx)
AM_RANGE(0xc000, 0xffff) AM_READ(bios_or_cart_r) // here also the BIOS can be accessed
diff --git a/src/mess/drivers/abc1600.c b/src/mame/drivers/abc1600.c
index 57580466632..bdaa4823471 100644
--- a/src/mess/drivers/abc1600.c
+++ b/src/mame/drivers/abc1600.c
@@ -964,4 +964,4 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1985, abc1600, 0, 0, abc1600, abc1600, driver_device, 0, "Luxor", "ABC 1600", GAME_NOT_WORKING )
+COMP( 1985, abc1600, 0, 0, abc1600, abc1600, driver_device, 0, "Luxor", "ABC 1600", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/abc80.c b/src/mame/drivers/abc80.c
index 101f4e8865e..5bfb37c94db 100644
--- a/src/mess/drivers/abc80.c
+++ b/src/mame/drivers/abc80.c
@@ -627,4 +627,4 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1978, abc80, 0, 0, abc80, abc80, driver_device, 0, "Luxor Datorer AB", "ABC 80", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_KEYBOARD )
+COMP( 1978, abc80, 0, 0, abc80, abc80, driver_device, 0, "Luxor Datorer AB", "ABC 80", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_KEYBOARD )
diff --git a/src/mess/drivers/abc80x.c b/src/mame/drivers/abc80x.c
index f98139ad1a6..a328baa87c0 100644
--- a/src/mess/drivers/abc80x.c
+++ b/src/mame/drivers/abc80x.c
@@ -1635,7 +1635,7 @@ DRIVER_INIT_MEMBER(abc806_state,driver_init)
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1981, abc800c, 0, 0, abc800c, abc800, abc800c_state, driver_init, "Luxor Datorer AB", "ABC 800 C/HR", GAME_SUPPORTS_SAVE )
-COMP( 1981, abc800m, abc800c, 0, abc800m, abc800, abc800m_state, driver_init, "Luxor Datorer AB", "ABC 800 M/HR", GAME_SUPPORTS_SAVE )
-COMP( 1983, abc802, 0, 0, abc802, abc802, abc802_state, driver_init, "Luxor Datorer AB", "ABC 802", GAME_SUPPORTS_SAVE )
-COMP( 1983, abc806, 0, 0, abc806, abc806, abc806_state, driver_init, "Luxor Datorer AB", "ABC 806", GAME_SUPPORTS_SAVE )
+COMP( 1981, abc800c, 0, 0, abc800c, abc800, abc800c_state, driver_init, "Luxor Datorer AB", "ABC 800 C/HR", MACHINE_SUPPORTS_SAVE )
+COMP( 1981, abc800m, abc800c, 0, abc800m, abc800, abc800m_state, driver_init, "Luxor Datorer AB", "ABC 800 M/HR", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, abc802, 0, 0, abc802, abc802, abc802_state, driver_init, "Luxor Datorer AB", "ABC 802", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, abc806, 0, 0, abc806, abc806, abc806_state, driver_init, "Luxor Datorer AB", "ABC 806", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/ac1.c b/src/mame/drivers/ac1.c
index 46683958e08..bf67bbfff9e 100644
--- a/src/mess/drivers/ac1.c
+++ b/src/mame/drivers/ac1.c
@@ -53,7 +53,7 @@ ADDRESS_MAP_END
/* Input ports */
static INPUT_PORTS_START( ac1 )
- PORT_START("LINE0")
+ PORT_START("LINE.0")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
@@ -63,7 +63,7 @@ static INPUT_PORTS_START( ac1 )
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
- PORT_START("LINE1")
+ PORT_START("LINE.1")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('*')
@@ -73,7 +73,7 @@ static INPUT_PORTS_START( ac1 )
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('>') PORT_CHAR('.')
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('?') PORT_CHAR('/')
- PORT_START("LINE2")
+ PORT_START("LINE.2")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('@') PORT_CHAR('`')
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('a')
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('b')
@@ -83,7 +83,7 @@ static INPUT_PORTS_START( ac1 )
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('f')
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR('g')
- PORT_START("LINE3")
+ PORT_START("LINE.3")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('h')
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('i')
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHAR('j')
@@ -93,7 +93,7 @@ static INPUT_PORTS_START( ac1 )
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n')
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o')
- PORT_START("LINE4")
+ PORT_START("LINE.4")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('p')
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHAR('q')
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('r')
@@ -103,7 +103,7 @@ static INPUT_PORTS_START( ac1 )
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('v')
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHAR('w')
- PORT_START("LINE5")
+ PORT_START("LINE.5")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('x')
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHAR('y')
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('z')
@@ -113,7 +113,7 @@ static INPUT_PORTS_START( ac1 )
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNUSED)
- PORT_START("LINE6")
+ PORT_START("LINE.6")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL)
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
diff --git a/src/mame/drivers/ace.c b/src/mame/drivers/ace.c
index 5bf83282855..e7e93754b03 100644
--- a/src/mame/drivers/ace.c
+++ b/src/mame/drivers/ace.c
@@ -357,4 +357,4 @@ ROM_START( ace )
ROM_END
-GAMEL(1976, ace, 0, ace, ace, driver_device, 0, ROT0, "Allied Leisure", "Ace", GAME_SUPPORTS_SAVE | GAME_NO_SOUND, layout_ace )
+GAMEL(1976, ace, 0, ace, ace, driver_device, 0, ROT0, "Allied Leisure", "Ace", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND, layout_ace )
diff --git a/src/mame/drivers/acefruit.c b/src/mame/drivers/acefruit.c
index 04fed7b246b..b06240105df 100644
--- a/src/mame/drivers/acefruit.c
+++ b/src/mame/drivers/acefruit.c
@@ -768,8 +768,8 @@ ROM_START( acefruit )
ROM_END
-GAMEL( 1981?, sidewndr, 0, acefruit, sidewndr, acefruit_state, sidewndr, ROT270, "ACE", "Sidewinder", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND, layout_sidewndr )
-GAMEL( 1981?, spellbnd, 0, acefruit, spellbnd, driver_device, 0, ROT270, "ACE", "Spellbound", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND, layout_sidewndr )
-GAME ( 1982?, starspnr, 0, acefruit, starspnr, driver_device, 0, ROT270, "ACE", "Starspinner (Dutch/Nederlands)", GAME_NOT_WORKING | GAME_NO_SOUND )
-GAME ( 1982?, acefruit, 0, acefruit, spellbnd, driver_device, 0, ROT270, "ACE", "Silhouette", GAME_NOT_WORKING | GAME_NO_SOUND ) // inputs and video in bonus game need fixing on this one
+GAMEL( 1981?, sidewndr, 0, acefruit, sidewndr, acefruit_state, sidewndr, ROT270, "ACE", "Sidewinder", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND, layout_sidewndr )
+GAMEL( 1981?, spellbnd, 0, acefruit, spellbnd, driver_device, 0, ROT270, "ACE", "Spellbound", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND, layout_sidewndr )
+GAME ( 1982?, starspnr, 0, acefruit, starspnr, driver_device, 0, ROT270, "ACE", "Starspinner (Dutch/Nederlands)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME ( 1982?, acefruit, 0, acefruit, spellbnd, driver_device, 0, ROT270, "ACE", "Silhouette", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // inputs and video in bonus game need fixing on this one
// not dumped: Magnum?
diff --git a/src/mame/drivers/aces1.c b/src/mame/drivers/aces1.c
index bc421716105..35c6327a500 100644
--- a/src/mame/drivers/aces1.c
+++ b/src/mame/drivers/aces1.c
@@ -839,50 +839,50 @@ DRIVER_INIT_MEMBER(aces1_state,aces1)
{
}
-GAME( 199?, ac1clbmn ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Money (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1gogld ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Go For Gold (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1hotpf ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Hot Profit (Ace) (ACESYS1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1pster ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Pound Sterling (Ace) (ACESYS1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1pstrt ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Pcp", "Pound Stretcher (Pcp) (ACESYS1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1primt ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Primetime (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1taklv ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Take It Or Leave It (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1cshtw ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Cash Towers (Ace) (ACESYS1)",GAME_IS_SKELETON_MECHANICAL ) // same ROM as above, combined, original machine apparently plays the same, reskinned machine?
-GAME( 199?, ac1bbclb ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Big Break Club (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1bbclba ,ac1bbclb ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Big Break Club (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1clbsv ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Sovereign (Ace) (ACESYS1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1clbxt ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Xtra (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1clbxta ,ac1clbxt ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Xtra (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1piaca ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Casino (Ace) (ACESYS1)",GAME_IS_SKELETON_MECHANICAL ) // Same ROMs were in 'Play It Again Deluxe'
-GAME( 199?, ac1piacl ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1piacla ,ac1piacl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1piaclb ,ac1piacl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1piaclc ,ac1piacl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1prmcl ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1prmcla ,ac1prmcl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1prmclb ,ac1prmcl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1prmclc ,ac1prmcl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1rundx ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Runner Deluxe Club (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1rundxa ,ac1rundx ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Runner Deluxe Club (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1totb ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Top Of The Bill (Ace) (ACESYS1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1shid ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Super Hi De Hi (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, ac1shida ,ac1shid ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Super Hi De Hi (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1dbldx ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Double Deluxe (Pcp) (ACESYS1)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1nudbk ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1nudbka ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1nudbkb ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1nudbkc ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1nudbkd ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1sstrk ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1sstrka ,ac1sstrk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1sstrkb ,ac1sstrk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1xpres ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Xpress (Pcp) (ACESYS1)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1roll ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1rolla ,ac1roll ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1rollb ,ac1roll ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1bluec ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1blueca ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1bluecb ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1bluecc ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1bluecd ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, ac1hideh ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Ace", "Hi De Hi Deluxe (Ace) (ACESYS1) (set 1)",GAME_IS_SKELETON_MECHANICAL ) // was in Hi De Hi (Ace) (sp.ACE) set
-GAME(199?, ac1hideha ,sp_hideh ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Ace", "Hi De Hi Deluxe (Ace) (ACESYS1) (set 2)",GAME_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 199?, ac1clbmn ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Money (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1gogld ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Go For Gold (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1hotpf ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Hot Profit (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1pster ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Pound Sterling (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1pstrt ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Pcp", "Pound Stretcher (Pcp) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1primt ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Primetime (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1taklv ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Take It Or Leave It (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1cshtw ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Cash Towers (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL ) // same ROM as above, combined, original machine apparently plays the same, reskinned machine?
+GAME( 199?, ac1bbclb ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Big Break Club (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1bbclba ,ac1bbclb ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Big Break Club (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1clbsv ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Sovereign (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1clbxt ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Xtra (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1clbxta ,ac1clbxt ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Club Xtra (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1piaca ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Casino (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL ) // Same ROMs were in 'Play It Again Deluxe'
+GAME( 199?, ac1piacl ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1piacla ,ac1piacl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1piaclb ,ac1piacl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1piaclc ,ac1piacl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Play It Again Club (Ace) (ACESYS1) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1prmcl ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1prmcla ,ac1prmcl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1prmclb ,ac1prmcl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1prmclc ,ac1prmcl ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Premier Club (Ace) (ACESYS1) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1rundx ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Runner Deluxe Club (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1rundxa ,ac1rundx ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Runner Deluxe Club (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1totb ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Top Of The Bill (Ace) (ACESYS1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1shid ,0 ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Super Hi De Hi (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, ac1shida ,ac1shid ,aces1 ,aces1 , aces1_state,aces1 ,ROT0 ,"Ace", "Super Hi De Hi (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1dbldx ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Double Deluxe (Pcp) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1nudbk ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1nudbka ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1nudbkb ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1nudbkc ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1nudbkd ,ac1nudbk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Nudge Break (Pcp) (ACESYS1) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1sstrk ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1sstrka ,ac1sstrk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1sstrkb ,ac1sstrk ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Starstruck (Pcp) (ACESYS1) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1xpres ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Xpress (Pcp) (ACESYS1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1roll ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1rolla ,ac1roll ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1rollb ,ac1roll ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Roll Up (Pcp) (ACESYS1) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1bluec ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1blueca ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1bluecb ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1bluecc ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1bluecd ,ac1bluec ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Pcp", "Blue Chip (Pcp) (ACESYS1) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, ac1hideh ,0 ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Ace", "Hi De Hi Deluxe (Ace) (ACESYS1) (set 1)",MACHINE_IS_SKELETON_MECHANICAL ) // was in Hi De Hi (Ace) (sp.ACE) set
+GAME(199?, ac1hideha ,sp_hideh ,aces1 ,aces1 , aces1_state,aces1, ROT0, "Ace", "Hi De Hi Deluxe (Ace) (ACESYS1) (set 2)",MACHINE_IS_SKELETON_MECHANICAL ) // ^^
diff --git a/src/mame/drivers/acesp.c b/src/mame/drivers/acesp.c
index aa052919ad1..1a83aa85aa4 100644
--- a/src/mame/drivers/acesp.c
+++ b/src/mame/drivers/acesp.c
@@ -3876,559 +3876,559 @@ DRIVER_INIT_MEMBER(ace_sp_state,ace_sp)
{
}
-GAME( 199?, sp_cbowl ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowla ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlb ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlc ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowld ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowle ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlf ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlg ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlh ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowli ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlj ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlk ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowll ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlm ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowln ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlo ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlp ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 17)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlq ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 18)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlr ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 19)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowls ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 20)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlt ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 21)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cbowlu ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 22)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_crime ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crimea ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crimeb ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crimec ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crimed ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crimee ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crimef ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crimeg ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crimeh ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowl ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowla ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlb ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlc ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowld ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowle ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlf ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlg ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlh ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowli ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlj ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlk ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowll ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlm ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowln ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlo ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlp ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 17)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlq ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 18)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlr ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 19)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowls ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 20)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlt ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 21)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cbowlu ,sp_cbowl ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Cash Bowl (Ace) (sp.ACE) (set 22)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_crime ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crimea ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crimeb ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crimec ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crimed ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crimee ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crimef ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crimeg ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crimeh ,sp_crime ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Crime Watch (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
// seems to be very closely related to Woolpack, looks like the same basic game with different strings, these have "GO TO EMMERDALE"
-GAME( 1995, sp_emmrd ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrda ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdb ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdc ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdd ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrde ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdf ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdg ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdh ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdi ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdj ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdk ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdn ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_emmrdo ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrd ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrda ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdb ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdc ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdd ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrde ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdf ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdg ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdh ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdi ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdj ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdk ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdn ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_emmrdo ,sp_emmrd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Emmerdale (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
// seems to be very closely related to Emmerdale, looks like the same basic game with different strings, these have "GO T' WOOLPACK"
-GAME( 1995, sp_woolp ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpa ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpb ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpc ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpd ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpe ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpf ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL ) // incomplete
-GAME( 1995, sp_woolpg ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL ) // incomplete
-GAME( 1995, sp_woolph ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL ) // incomplete
-GAME( 1995, sp_woolpi ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL ) // incomplete
-GAME( 1995, sp_woolpj ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpk ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpl ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpm ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpn ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 1995, sp_woolpo ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolp ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpa ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpb ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpc ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpd ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpe ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpf ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL ) // incomplete
+GAME( 1995, sp_woolpg ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL ) // incomplete
+GAME( 1995, sp_woolph ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL ) // incomplete
+GAME( 1995, sp_woolpi ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL ) // incomplete
+GAME( 1995, sp_woolpj ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpk ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpl ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpm ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpn ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 1995, sp_woolpo ,sp_woolp ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Woolpack (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
// this has 'Emmerdale' padding, but seems to be a unique game, contains "ZIGZAG" strings
-GAME( 199?, sp_zigzg ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzga ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgb ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgc ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgd ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzge ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgf ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgg ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgh ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgi ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgj ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgk ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgl ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_zigzgm ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzg ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzga ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgb ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgc ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgd ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzge ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgf ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgg ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgh ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgi ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgj ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgk ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgl ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_zigzgm ,sp_zigzg ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Zig Zag (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
// some of these have additional Whitbread copyright, many appear to be 'Golden Mile Showcase', several have a 'Golden Mile Prize' padding instead of the regular
-GAME( 199?, sp_goldm ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldma ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmb ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmc ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmd ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldme ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmf ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmg ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmh ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmi ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmj ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmk ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldml ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmm ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmn ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmo ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmp ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 17)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmq ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 18)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmr ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 19)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldms ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 20)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmt ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 21)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmu ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 22)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmv ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 23)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmw ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 24)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmx ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 25)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmy ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 26)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldmz ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 27)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldm0 ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 28)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldm1 ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 29)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldm2 ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 30)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldm3 ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 31)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldm ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldma ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmb ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmc ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmd ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldme ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmf ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmg ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmh ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmi ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmj ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmk ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldml ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmm ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmn ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmo ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmp ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 17)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmq ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 18)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmr ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 19)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldms ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 20)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmt ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 21)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmu ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 22)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmv ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 23)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmw ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 24)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmx ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 25)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmy ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 26)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldmz ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 27)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldm0 ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 28)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldm1 ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 29)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldm2 ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 30)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldm3 ,sp_goldm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Mile (Ace) (sp.ACE) (set 31)",MACHINE_IS_SKELETON_MECHANICAL )
// one of the types here have blanked out padding, possibly a BWB re-release?
-GAME( 199?, sp_gnat ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnata ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnatb ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnatc ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnatd ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnate ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnatf ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnatg ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnath ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnati ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnatj ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnatk ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnatl ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnatm ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnatn ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gnato ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnat ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnata ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnatb ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnatc ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnatd ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnate ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnatf ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnatg ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnath ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnati ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnatj ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnatk ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnatl ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnatm ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnatn ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gnato ,sp_gnat ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand National (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
// seems to be a variation on Grand National (prize cabinet?)
-GAME( 199?, sp_przna ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_prznaa ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_prznab ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_prznac ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_prznad ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_prznae ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_prznaf ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_prznag ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_gprix ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gprixa ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gprixb ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gprixc ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gprixd ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gprixe ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gprixf ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gprixg ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_gprixh ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_hideh ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hideha ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehb ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehc ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehd ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehe ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehf ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehg ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehh ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehi ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehj ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehk ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehl ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehm ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehn ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hideho ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hidehp ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 17)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_hifly ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflya ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyb ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyc ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyd ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflye ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyf ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyg ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyh ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyi ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyj ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyk ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyl ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflym ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyn ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyo ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hiflyp ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 17)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_juras ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Jurassic Trail (Ace) (sp.ACE)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_openb ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_openba ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_openbb ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_openbc ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_openbd ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_openbe ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_openbf ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_openbg ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_openbh ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_openbi ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_payrs ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_payrsa ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_payrsb ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_payrsc ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_payrsd ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_payrse ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_payrsf ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_payrsg ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_payrsh ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_playa ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_playaa ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_playab ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL ) // incomplete
-GAME( 199?, sp_playac ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL ) // incomplete
-GAME( 199?, sp_playad ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL ) // possible bad pairing
-GAME( 199?, sp_playae ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL ) // possible bad pairing
-GAME( 199?, sp_playaf ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL ) // possible bad pairing
-GAME( 199?, sp_playag ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL ) // possible bad pairing
-GAME( 199?, sp_playah ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL ) // possible bad pairing
-GAME( 199?, sp_playai ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL ) // possible bad pairing
-
-GAME( 199?, sp_spell ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_spella ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_spellb ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_spellc ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_spelld ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_spelle ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_spellf ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_spellg ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_spelli ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_spellj ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_swop ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_swopa ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_swopb ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_swopc ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_swopd ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_swope ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_swopf ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_swopg ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_timem ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timema ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timemb ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timemc ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timemd ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timeme ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timemf ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timemg ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timemh ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timemi ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timemj ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_timemk ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_tz ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tza ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzb ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzc ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzd ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tze ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzf ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzg ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzh ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzbwb ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Twilight Zone (Ace/Bwb) (sp.ACE)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_tzfe ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfea ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfeb ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfec ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfed ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfee ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfef ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfeg ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfeh ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfei ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfej ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfek ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfel ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfem ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfen ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfeo ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfep ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 17)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfeq ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 18)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfer ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 19)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfes ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 20)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfet ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 21)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tzfeu ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 22)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_beau ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beaua ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beaub ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beauc ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beaud ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beaue ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beauf ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beaug ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beauh ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_bigbd ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Big Break Deluxe Club (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_bigbda ,sp_bigbd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Big Break Deluxe Club (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_brkbk ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Break The Bank (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_brkbka ,sp_brkbk ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Break The Bank (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_brkbkb ,sp_brkbk ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Break The Bank (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_brkbkc ,sp_brkbk ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Break The Bank (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_brkbkd ,sp_brkbk ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Break The Bank (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_camel ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camela ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camelb ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camelc ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cameld ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camele ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camelf ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camelg ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camelh ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cameli ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camelj ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camelk ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camell ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camelm ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cameln ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_camelo ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_clbna ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Club National (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_clbnaa ,sp_clbna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Club National (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_coder ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_codera ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_coderb ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_coderc ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_coderd ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_codere ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_coderf ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_coderg ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_criss ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crissa ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crissb ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crissc ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crissd ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crisse ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crissf ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_crissg ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_daytr ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Daytripper (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_daytra ,sp_daytr ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Daytripper (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_daytrb ,sp_daytr ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Daytripper (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_daytrc ,sp_daytr ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Daytripper (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_donky ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_donkya ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_donkyb ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_donkyc ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_donkyd ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_donkye ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_donkyf ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_donkyg ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_dyour ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Double Your Money (Ace) (sp.ACE)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_festi ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Festival (Spanish) (Ace) (sp.ACE)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_beau2 ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beau2a ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beau2b ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beau2c ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beau2d ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beau2e ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_beau2f ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_ghost ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghosta ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostb ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostc ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostd ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghoste ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostf ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostg ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghosth ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghosti ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostj ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostk ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostl ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostm ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostn ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghosto ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostp ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 17)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostq ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 18)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghostr ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 19)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_ghosts ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 20)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_globe ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_globea ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_globeb ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_globec ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_globed ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_globee ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_globef ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_globeg ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_gol ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Gol (Spanish) (Ace) (sp.ACE)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_golda ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Arrow Club (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldaa ,sp_golda ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Arrow Club (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_przna ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_prznaa ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_prznab ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_prznac ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_prznad ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_prznae ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_prznaf ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_prznag ,sp_przna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Prize National (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_gprix ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gprixa ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gprixb ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gprixc ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gprixd ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gprixe ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gprixf ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gprixg ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_gprixh ,sp_gprix ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Grand Prix (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_hideh ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hideha ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehb ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehc ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehd ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehe ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehf ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehg ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehh ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehi ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehj ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehk ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehl ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehm ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehn ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hideho ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hidehp ,sp_hideh ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi De Hi (Ace) (sp.ACE) (set 17)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_hifly ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflya ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyb ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyc ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyd ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflye ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyf ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyg ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyh ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyi ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyj ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyk ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyl ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflym ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyn ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyo ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hiflyp ,sp_hifly ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Hi Flyer (Ace) (sp.ACE) (set 17)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_juras ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Jurassic Trail (Ace) (sp.ACE)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_openb ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_openba ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_openbb ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_openbc ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_openbd ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_openbe ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_openbf ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_openbg ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_openbh ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_openbi ,sp_openb ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Open The Box (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_payrs ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_payrsa ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_payrsb ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_payrsc ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_payrsd ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_payrse ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_payrsf ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_payrsg ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_payrsh ,sp_payrs ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Payrise (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_playa ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_playaa ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_playab ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL ) // incomplete
+GAME( 199?, sp_playac ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL ) // incomplete
+GAME( 199?, sp_playad ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL ) // possible bad pairing
+GAME( 199?, sp_playae ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL ) // possible bad pairing
+GAME( 199?, sp_playaf ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL ) // possible bad pairing
+GAME( 199?, sp_playag ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL ) // possible bad pairing
+GAME( 199?, sp_playah ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL ) // possible bad pairing
+GAME( 199?, sp_playai ,sp_playa ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Play It Again (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL ) // possible bad pairing
+
+GAME( 199?, sp_spell ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_spella ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_spellb ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_spellc ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_spelld ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_spelle ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_spellf ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_spellg ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_spelli ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_spellj ,sp_spell ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Spellbound (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_swop ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_swopa ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_swopb ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_swopc ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_swopd ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_swope ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_swopf ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_swopg ,sp_swop ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Swop Shop (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_timem ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timema ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timemb ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timemc ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timemd ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timeme ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timemf ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timemg ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timemh ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timemi ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timemj ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_timemk ,sp_timem ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Time Machine (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_tz ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tza ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzb ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzc ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzd ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tze ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzf ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzg ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzh ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzbwb ,sp_tz ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Twilight Zone (Ace/Bwb) (sp.ACE)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_tzfe ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfea ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfeb ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfec ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfed ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfee ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfef ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfeg ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfeh ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfei ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfej ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfek ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfel ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfem ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfen ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfeo ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfep ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 17)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfeq ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 18)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfer ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 19)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfes ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 20)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfet ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 21)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tzfeu ,sp_tzfe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 22)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_beau ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beaua ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beaub ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beauc ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beaud ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beaue ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beauf ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beaug ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beauh ,sp_beau ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Beau Peep (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_bigbd ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Big Break Deluxe Club (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_bigbda ,sp_bigbd ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Big Break Deluxe Club (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_brkbk ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Break The Bank (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_brkbka ,sp_brkbk ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Break The Bank (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_brkbkb ,sp_brkbk ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Break The Bank (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_brkbkc ,sp_brkbk ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Break The Bank (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_brkbkd ,sp_brkbk ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Break The Bank (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_camel ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camela ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camelb ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camelc ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cameld ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camele ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camelf ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camelg ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camelh ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cameli ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camelj ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camelk ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camell ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camelm ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_cameln ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_camelo ,sp_camel ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Camelot (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_clbna ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Club National (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_clbnaa ,sp_clbna ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Club National (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_coder ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_codera ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_coderb ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_coderc ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_coderd ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_codere ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_coderf ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_coderg ,sp_coder ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Code Red (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_criss ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crissa ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crissb ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crissc ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crissd ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crisse ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crissf ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_crissg ,sp_criss ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Criss Cross Cash (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_daytr ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Daytripper (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_daytra ,sp_daytr ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Daytripper (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_daytrb ,sp_daytr ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Daytripper (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_daytrc ,sp_daytr ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Daytripper (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_donky ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_donkya ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_donkyb ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_donkyc ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_donkyd ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_donkye ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_donkyf ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_donkyg ,sp_donky ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Donkey Derby (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_dyour ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Double Your Money (Ace) (sp.ACE)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_festi ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Festival (Spanish) (Ace) (sp.ACE)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_beau2 ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beau2a ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beau2b ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beau2c ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beau2d ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beau2e ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_beau2f ,sp_beau2 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_ghost ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghosta ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostb ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostc ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostd ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghoste ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostf ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostg ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghosth ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghosti ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostj ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostk ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostl ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostm ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostn ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghosto ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostp ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 17)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostq ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 18)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghostr ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 19)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_ghosts ,sp_ghost ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Ghost Trapper (Ace) (sp.ACE) (set 20)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_globe ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_globea ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_globeb ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_globec ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_globed ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_globee ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_globef ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_globeg ,sp_globe ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Globe Trotter (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_gol ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Gol (Spanish) (Ace) (sp.ACE)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_golda ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Arrow Club (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldaa ,sp_golda ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Arrow Club (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
// These contain lots of 'Golden Streak' strings, as well as 'Have you got the Golden Touch?' strings
-GAME( 199?, sp_golds ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldsa ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldsb ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldsc ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldsd ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldse ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldsf ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldsg ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_goldsh ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_golds ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldsa ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldsb ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldsc ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldsd ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldse ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldsf ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldsg ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldsh ,sp_golds ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
// Very similar to above, but many of the 'Golden Streak' strings have been changed to Golden Touch, header still says Golden Streak tho
-GAME( 199?, sp_goldt ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Golden Touch) (Ace) (sp.ACE)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_here ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_herea ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hereb ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_herec ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hered ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_heree ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_heref ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_hereg ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_holid ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Holiday Club (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_holida ,sp_holid ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Holiday Club (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_lotto ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Lotto (Spanish) (Ace) (sp.ACE)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_magmo ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Magic Money (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_magmoa ,sp_magmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Magic Money (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_magmob ,sp_magmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Magic Money (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_magmoc ,sp_magmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Magic Money (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_magmod ,sp_magmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Magic Money (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_megmo ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_megmoa ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_megmob ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_megmoc ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_megmod ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_megmoe ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_megmof ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_megmog ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_monma ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Magic (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmaa ,sp_monma ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Magic (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmab ,sp_monma ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Magic (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmac ,sp_monma ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Magic (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmad ,sp_monma ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Magic (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_monmo ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmoa ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmob ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmoc ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmod ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmoe ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmof ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_monmog ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_nudex ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Nudge Explosion (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_nudexa ,sp_nudex ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Nudge Explosion (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_onbox ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxa ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxb ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxc ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxd ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxe ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxf ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxg ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxh ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxi ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxj ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxk ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxl ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxm ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_onboxn ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_piste ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pistea ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pisteb ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pistec ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pisted ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pistee ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pistef ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pisteg ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pisteh ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pistei ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pistej ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pistek ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pistel ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pistem ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pisten ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pisteo ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pistep ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 17)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_pound ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pounda ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundb ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundc ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundd ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_pounde ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundf ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundg ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundh ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 9)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundi ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 10)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundj ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 11)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundk ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 12)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundl ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 13)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundm ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 14)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundn ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 15)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundo ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 16)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundp ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 17)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundbwb ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundbwba ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundbwbb ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundbwbc ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundbwbd ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundbwbe ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundbwbf ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_poundbwbg ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 8)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_road ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Road To Hell (Ace) (sp.ACE)",GAME_IS_SKELETON_MECHANICAL ) // incomplete program
-
-GAME( 199?, sp_skylm ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "The Sky's The Limit Club (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_skylma ,sp_skylm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "The Sky's The Limit Club (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 199?, sp_tkpik ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tkpika ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tkpikb ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 3)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tkpikc ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 4)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tkpikd ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 5)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tkpike ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 6)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_tkpikf ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 7)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_goldt ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Golden Streak (Golden Touch) (Ace) (sp.ACE)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_here ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_herea ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hereb ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_herec ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hered ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_heree ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_heref ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_hereg ,sp_here ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Here We Go (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_holid ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Holiday Club (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_holida ,sp_holid ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Holiday Club (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_lotto ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Lotto (Spanish) (Ace) (sp.ACE)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_magmo ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Magic Money (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_magmoa ,sp_magmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Magic Money (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_magmob ,sp_magmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Magic Money (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_magmoc ,sp_magmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Magic Money (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_magmod ,sp_magmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Magic Money (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_megmo ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_megmoa ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_megmob ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_megmoc ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_megmod ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_megmoe ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_megmof ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_megmog ,sp_megmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Mega Money (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_monma ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Magic (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmaa ,sp_monma ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Magic (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmab ,sp_monma ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Magic (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmac ,sp_monma ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Magic (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmad ,sp_monma ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Magic (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_monmo ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmoa ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmob ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmoc ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmod ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmoe ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmof ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_monmog ,sp_monmo ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Money Mountain (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_nudex ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Nudge Explosion (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_nudexa ,sp_nudex ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Nudge Explosion (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_onbox ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxa ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxb ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxc ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxd ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxe ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxf ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxg ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxh ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxi ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxj ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxk ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxl ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxm ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_onboxn ,sp_onbox ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Box (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_piste ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pistea ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pisteb ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pistec ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pisted ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pistee ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pistef ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pisteg ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pisteh ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pistei ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pistej ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pistek ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pistel ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pistem ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pisten ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pisteo ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pistep ,sp_piste ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "On The Piste (Ace) (sp.ACE) (set 17)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_pound ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pounda ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundb ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundc ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundd ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_pounde ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundf ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundg ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundh ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 9)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundi ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 10)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundj ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 11)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundk ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 12)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundl ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 13)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundm ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 14)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundn ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 15)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundo ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 16)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundp ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Pound For Pound (Ace) (sp.ACE) (set 17)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundbwb ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundbwba ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundbwbb ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundbwbc ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundbwbd ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundbwbe ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundbwbf ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_poundbwbg ,sp_pound ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace / Bwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 8)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_road ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Road To Hell (Ace) (sp.ACE)",MACHINE_IS_SKELETON_MECHANICAL ) // incomplete program
+
+GAME( 199?, sp_skylm ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "The Sky's The Limit Club (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_skylma ,sp_skylm ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "The Sky's The Limit Club (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 199?, sp_tkpik ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tkpika ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tkpikb ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tkpikc ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 4)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tkpikd ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 5)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tkpike ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 6)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_tkpikf ,sp_tkpik ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Take Your Pick (Ace) (sp.ACE) (set 7)",MACHINE_IS_SKELETON_MECHANICAL )
// not sure.. looks like 6303 code to me
-GAME( 199?, sp_carry ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Pcp", "Carry On (Pcp) (sp.ACE?) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_carrya ,sp_carry ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Pcp", "Carry On (Pcp) (sp.ACE?) (set 2)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_carry ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Pcp", "Carry On (Pcp) (sp.ACE?) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_carrya ,sp_carry ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Pcp", "Carry On (Pcp) (sp.ACE?) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
// not sure.. looks like 6303 code to me
-GAME( 199?, sp_front ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Bwb", "Final Frontier (Bwb) (sp.ACE?)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_front ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Bwb", "Final Frontier (Bwb) (sp.ACE?)",MACHINE_IS_SKELETON_MECHANICAL )
// not sure.. looks like 6303 code to me
-GAME(199?, sp_atw ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp, ROT0, "Crystal","Around The World In Eighty Days (Crystal) (sp.ACE?)",GAME_IS_SKELETON_MECHANICAL )
+GAME(199?, sp_atw ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp, ROT0, "Crystal","Around The World In Eighty Days (Crystal) (sp.ACE?)",MACHINE_IS_SKELETON_MECHANICAL )
// not sure.. looks like 6303 code to me
-GAME(199?, sp_five ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_cr, ROT0, "Crystal","Fiver Fever (Crystal) (sp.ACE?) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, sp_fivea ,sp_five ,ace_sp ,ace_sp , ace_sp_state,ace_cr, ROT0, "Crystal","Fiver Fever (Crystal) (sp.ACE?) (set 2)",GAME_IS_SKELETON_MECHANICAL )
+GAME(199?, sp_five ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_cr, ROT0, "Crystal","Fiver Fever (Crystal) (sp.ACE?) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, sp_fivea ,sp_five ,ace_sp ,ace_sp , ace_sp_state,ace_cr, ROT0, "Crystal","Fiver Fever (Crystal) (sp.ACE?) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
// not sure.. looks like 6303 code to me
-GAME(199?, sp_crun ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_cr, ROT0, "Crystal","Cash Run (Crystal) (sp.ACE?) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, sp_cruna ,sp_crun ,ace_sp ,ace_sp , ace_sp_state,ace_cr, ROT0, "Crystal","Cash Run (Crystal) (sp.ACE?) (set 2)",GAME_IS_SKELETON_MECHANICAL )
-GAME(199?, sp_crunb ,sp_crun ,ace_sp ,ace_sp , ace_sp_state,ace_cr, ROT0, "Crystal","Cash Run (Crystal) (sp.ACE?) (set 3)",GAME_IS_SKELETON_MECHANICAL )
+GAME(199?, sp_crun ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_cr, ROT0, "Crystal","Cash Run (Crystal) (sp.ACE?) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, sp_cruna ,sp_crun ,ace_sp ,ace_sp , ace_sp_state,ace_cr, ROT0, "Crystal","Cash Run (Crystal) (sp.ACE?) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME(199?, sp_crunb ,sp_crun ,ace_sp ,ace_sp , ace_sp_state,ace_cr, ROT0, "Crystal","Cash Run (Crystal) (sp.ACE?) (set 3)",MACHINE_IS_SKELETON_MECHANICAL )
// incomplete dump (was mixed with the IMPACT rebuild)
-GAME( 199?, sp_roof ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Thru' The Roof (Ace) (sp.ACE) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_roofa ,sp_roof ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Thru' The Roof (Ace) (sp.ACE) (set 2)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_roof ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Thru' The Roof (Ace) (sp.ACE) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, sp_roofa ,sp_roof ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Thru' The Roof (Ace) (sp.ACE) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
-GAME( 199?, sp_cpal ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Caesars Palace (Ace) (sp.ACE?)",GAME_IS_SKELETON_MECHANICAL ) // was in an IMPACT set, might be a different game but CPU seems correct for here
+GAME( 199?, sp_cpal ,0 ,ace_sp ,ace_sp , ace_sp_state,ace_sp ,ROT0 ,"Ace", "Caesars Palace (Ace) (sp.ACE?)",MACHINE_IS_SKELETON_MECHANICAL ) // was in an IMPACT set, might be a different game but CPU seems correct for here
diff --git a/src/mame/drivers/acommand.c b/src/mame/drivers/acommand.c
index 58a7ad05581..b3aff9cbad6 100644
--- a/src/mame/drivers/acommand.c
+++ b/src/mame/drivers/acommand.c
@@ -674,4 +674,4 @@ ROM_START( acommand )
ROM_LOAD( "jalmr17.bin", 0x080000, 0x080000, CRC(9d428fb7) SHA1(02f72938d73db932bd217620a175a05215f6016a) )
ROM_END
-GAME( 1994, acommand, 0, acommand, acommand, driver_device, 0, ROT0, "Jaleco", "Alien Command" , GAME_NOT_WORKING | GAME_MECHANICAL)
+GAME( 1994, acommand, 0, acommand, acommand, driver_device, 0, ROT0, "Jaleco", "Alien Command" , MACHINE_NOT_WORKING | MACHINE_MECHANICAL)
diff --git a/src/mess/drivers/acrnsys1.c b/src/mame/drivers/acrnsys1.c
index 23d35f2807a..23d35f2807a 100644
--- a/src/mess/drivers/acrnsys1.c
+++ b/src/mame/drivers/acrnsys1.c
diff --git a/src/mame/drivers/actfancr.c b/src/mame/drivers/actfancr.c
index 781303ef6b5..c9acefba01c 100644
--- a/src/mame/drivers/actfancr.c
+++ b/src/mame/drivers/actfancr.c
@@ -566,8 +566,8 @@ ROM_END
/******************************************************************************/
-GAME( 1989, actfancr, 0, actfancr, actfancr, driver_device, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (World revision 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, actfancr1,actfancr, actfancr, actfancr, driver_device, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (World revision 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, actfancrj,actfancr, actfancr, actfancr, driver_device, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (Japan revision 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, triothep, 0, triothep, triothep, driver_device, 0, ROT0, "Data East Corporation", "Trio The Punch - Never Forget Me... (World)", GAME_SUPPORTS_SAVE )
-GAME( 1989, triothepj,triothep, triothep, triothep, driver_device, 0, ROT0, "Data East Corporation", "Trio The Punch - Never Forget Me... (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1989, actfancr, 0, actfancr, actfancr, driver_device, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (World revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, actfancr1,actfancr, actfancr, actfancr, driver_device, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (World revision 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, actfancrj,actfancr, actfancr, actfancr, driver_device, 0, ROT0, "Data East Corporation", "Act-Fancer Cybernetick Hyper Weapon (Japan revision 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, triothep, 0, triothep, triothep, driver_device, 0, ROT0, "Data East Corporation", "Trio The Punch - Never Forget Me... (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, triothepj,triothep, triothep, triothep, driver_device, 0, ROT0, "Data East Corporation", "Trio The Punch - Never Forget Me... (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/adam.c b/src/mame/drivers/adam.c
index d0d228aebff..75682bad25d 100644
--- a/src/mess/drivers/adam.c
+++ b/src/mame/drivers/adam.c
@@ -1144,4 +1144,4 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1982, adam, 0, coleco, adam, adam, driver_device, 0, "Coleco", "Adam", GAME_SUPPORTS_SAVE )
+COMP( 1982, adam, 0, coleco, adam, adam, driver_device, 0, "Coleco", "Adam", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/adp.c b/src/mame/drivers/adp.c
index 7a06f384054..d8271bdba30 100644
--- a/src/mame/drivers/adp.c
+++ b/src/mame/drivers/adp.c
@@ -719,11 +719,11 @@ ROM_START( fstation )
ROM_END
-GAME( 1990, backgamn, 0, backgamn, skattv, driver_device, 0, ROT0, "ADP", "Backgammon", GAME_NOT_WORKING )
-GAME( 1993, quickjac, 0, quickjac, quickjac, driver_device, 0, ROT0, "ADP", "Quick Jack", GAME_NOT_WORKING )
-GAME( 1994, skattv, 0, skattv, skattv, driver_device, 0, ROT0, "ADP", "Skat TV", GAME_NOT_WORKING )
-GAME( 1995, skattva, skattv, skattva, skattva, driver_device, 0, ROT0, "ADP", "Skat TV (version TS3)", GAME_NOT_WORKING )
-GAME( 1997, fashiong, 0, fashiong, skattv, driver_device, 0, ROT0, "ADP", "Fashion Gambler (set 1)", GAME_NOT_WORKING )
-GAME( 1997, fashiong2, fashiong, fashiong, skattv, driver_device, 0, ROT0, "ADP", "Fashion Gambler (set 2)", GAME_NOT_WORKING )
-GAME( 1999, funlddlx, 0, funland, skattv, driver_device, 0, ROT0, "Stella", "Funny Land de Luxe", GAME_NOT_WORKING )
-GAME( 2000, fstation, 0, fstation, fstation, driver_device, 0, ROT0, "ADP", "Fun Station Spielekoffer 9 Spiele", GAME_NOT_WORKING )
+GAME( 1990, backgamn, 0, backgamn, skattv, driver_device, 0, ROT0, "ADP", "Backgammon", MACHINE_NOT_WORKING )
+GAME( 1993, quickjac, 0, quickjac, quickjac, driver_device, 0, ROT0, "ADP", "Quick Jack", MACHINE_NOT_WORKING )
+GAME( 1994, skattv, 0, skattv, skattv, driver_device, 0, ROT0, "ADP", "Skat TV", MACHINE_NOT_WORKING )
+GAME( 1995, skattva, skattv, skattva, skattva, driver_device, 0, ROT0, "ADP", "Skat TV (version TS3)", MACHINE_NOT_WORKING )
+GAME( 1997, fashiong, 0, fashiong, skattv, driver_device, 0, ROT0, "ADP", "Fashion Gambler (set 1)", MACHINE_NOT_WORKING )
+GAME( 1997, fashiong2, fashiong, fashiong, skattv, driver_device, 0, ROT0, "ADP", "Fashion Gambler (set 2)", MACHINE_NOT_WORKING )
+GAME( 1999, funlddlx, 0, funland, skattv, driver_device, 0, ROT0, "Stella", "Funny Land de Luxe", MACHINE_NOT_WORKING )
+GAME( 2000, fstation, 0, fstation, fstation, driver_device, 0, ROT0, "ADP", "Fun Station Spielekoffer 9 Spiele", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/advision.c b/src/mame/drivers/advision.c
index 324e04ba842..5dfb5985964 100644
--- a/src/mess/drivers/advision.c
+++ b/src/mame/drivers/advision.c
@@ -110,4 +110,4 @@ ROM_END
/* Game Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-CONS( 1982, advision, 0, 0, advision, advision, driver_device, 0, "Entex", "Adventure Vision", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+CONS( 1982, advision, 0, 0, advision, advision, driver_device, 0, "Entex", "Adventure Vision", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/aeroboto.c b/src/mame/drivers/aeroboto.c
index 5f5de0b18b8..39f96ae7375 100644
--- a/src/mame/drivers/aeroboto.c
+++ b/src/mame/drivers/aeroboto.c
@@ -330,5 +330,5 @@ ROM_END
-GAME( 1984, formatz, 0, formatz, formatz, driver_device, 0, ROT0, "Jaleco", "Formation Z", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-GAME( 1984, aeroboto, formatz, formatz, formatz, driver_device, 0, ROT0, "Jaleco (Williams license)", "Aeroboto", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
+GAME( 1984, formatz, 0, formatz, formatz, driver_device, 0, ROT0, "Jaleco", "Formation Z", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1984, aeroboto, formatz, formatz, formatz, driver_device, 0, ROT0, "Jaleco (Williams license)", "Aeroboto", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/aerofgt.c b/src/mame/drivers/aerofgt.c
index 26913e4af62..29d55d4fb3c 100644
--- a/src/mame/drivers/aerofgt.c
+++ b/src/mame/drivers/aerofgt.c
@@ -1521,8 +1521,8 @@ static MACHINE_CONFIG_START( karatblzbl, aerofgt_state )
MCFG_CPU_ADD("audiocpu",Z80,8000000/2) /* 4 MHz ??? */
MCFG_CPU_PROGRAM_MAP(karatblzbl_sound_map)
-// MCFG_MACHINE_START_OVERRIDE(aerofgt_state,aerofgt)
-// MCFG_MACHINE_RESET_OVERRIDE(aerofgt_state,aerofgt)
+// MCFG_MACHINE_START_OVERRIDE(aerofgt_state,aerofgt)
+// MCFG_MACHINE_RESET_OVERRIDE(aerofgt_state,aerofgt)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -1554,7 +1554,7 @@ static MACHINE_CONFIG_START( karatblzbl, aerofgt_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- // NEC D7759c + YM????
+ // NEC D7759c + YM????
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( spinlbrk, aerofgt_state )
@@ -2015,6 +2015,40 @@ ROM_START( pspikesb )
ROM_COPY( "user1", 0x060000, 0x0e0000, 0x020000)
ROM_END
+ROM_START( pspikesba )
+ ROM_REGION( 0x40000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "2.ic63", 0x00000, 0x20000, CRC(dd87d28a) SHA1(09ab75bcd62db1a49af123648812852780ac9d60) ) // sldh
+ ROM_LOAD16_BYTE( "3.ic62", 0x00001, 0x20000, CRC(ec505317) SHA1(1e2b9e52654b08169827dbd877de2e724140e50c) ) // sldh
+
+ ROM_REGION( 0x080000, "gfx1", ROMREGION_INVERT )
+ ROM_LOAD( "4.ic122", 0x00000, 0x20000, CRC(ea1c05a7) SHA1(adfdfeac80df287ffa6f469dc38ea94698817cf4) )
+ ROM_LOAD( "5.ic120", 0x20000, 0x20000, CRC(bfdc60f4) SHA1(2b1893fac2651ac82f5a05b8f891b20c928ced7e) )
+ ROM_LOAD( "6.ic118", 0x40000, 0x20000, CRC(96a5c235) SHA1(dad4ef9069d3130f719a402737909bb48225b73c) )
+ ROM_LOAD( "7.ic116", 0x60000, 0x20000, CRC(a7e00b36) SHA1(2b5e85ec02e8893d7d730aad4d690883b1d236cc) )
+
+ ROM_REGION( 0x100000, "gfx2", ROMREGION_INVERT )
+ ROM_LOAD( "8.ic121", 0x00000, 0x40000, CRC(fc096cfc) SHA1(75af810c97361b6f08767949b90c394a7a03f60b) )
+ ROM_LOAD( "9.ic119", 0x40000, 0x40000, CRC(a45ec985) SHA1(16357f5df7841e11889ac6fced1e2a9288585a29) )
+ ROM_LOAD( "10.ic117", 0x80000, 0x40000, CRC(3976b372) SHA1(72feec5a6fe7995f39d4b431dbbf25435359b04d) )
+ ROM_LOAD( "11.ic115", 0xc0000, 0x40000, CRC(f9249937) SHA1(5993e5ab7295ca2fa5c8f4c05ce23731741f4e97) )
+
+ ROM_REGION( 0x080000, "user1", 0 ) /* Samples */
+ ROM_LOAD( "1.ic21", 0x000000, 0x80000, CRC(1b78ed0b) SHA1(886bfd78709c295839dd51c7f5a13f5c452c0ab3) )
+
+ /* $00000-$20000 stays the same in all sound banks, */
+ /* the second half of the bank is what gets switched */
+ ROM_REGION( 0x100000, "oki", 0 ) /* Samples */
+ ROM_COPY( "user1", 0x000000, 0x000000, 0x020000)
+ ROM_COPY( "user1", 0x000000, 0x020000, 0x020000)
+ ROM_COPY( "user1", 0x000000, 0x040000, 0x020000)
+ ROM_COPY( "user1", 0x020000, 0x060000, 0x020000)
+ ROM_COPY( "user1", 0x000000, 0x080000, 0x020000)
+ ROM_COPY( "user1", 0x040000, 0x0a0000, 0x020000)
+ ROM_COPY( "user1", 0x000000, 0x0c0000, 0x020000)
+ ROM_COPY( "user1", 0x060000, 0x0e0000, 0x020000)
+ROM_END
+
+
/*
1991 Spikes (Italian bootleg)
@@ -2446,7 +2480,7 @@ ROM_START( karatblzbl )
ROM_LOAD16_BYTE( "gfx21.u71", 0x2c0000, 0x020000, CRC(ffd66ea0) SHA1(fc1b2fa27d28a61b381e3d4f15809c740082d07f) )
ROM_LOAD16_BYTE( "gfx26.u76", 0x2c0001, 0x020000, CRC(7ae76103) SHA1(5c42fbe133cbf600d2150295a70a1541b79706b5) )
ROM_LOAD16_BYTE( "gfx25.u67", 0x300000, 0x020000, CRC(1195b559) SHA1(2fd00b3360df5f0a762569ab49c445b68568cf2e) )
- ROM_LOAD16_BYTE( "gfx30.u72", 0x300001, 0x020000, CRC(7593679f) SHA1(3a6199d1dc60d2c05084fe41c639228613831d99) )
+ ROM_LOAD16_BYTE( "gfx30.u72", 0x300001, 0x020000, CRC(7593679f) SHA1(3a6199d1dc60d2c05084fe41c639228613831d99) )
ROM_REGION( 0x100000, "gfx4", 0 )
ROM_LOAD16_BYTE( "5.u62", 0x000000, 0x040000, CRC(1ed12174) SHA1(1e4fc511ad644aaf90505f7930957b4adf9f6c2a) )
@@ -2688,32 +2722,33 @@ ROM_START( wbbc97 )
ROM_END
-GAME( 1990, spinlbrk, 0, spinlbrk, spinlbrk, driver_device, 0, ROT0, "V-System Co.", "Spinal Breakers (World)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1990, spinlbrku,spinlbrk, spinlbrk, spinlbrku, driver_device,0, ROT0, "V-System Co.", "Spinal Breakers (US)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1990, spinlbrkj,spinlbrk, spinlbrk, spinlbrk, driver_device, 0, ROT0, "V-System Co.", "Spinal Breakers (Japan)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
+GAME( 1990, spinlbrk, 0, spinlbrk, spinlbrk, driver_device, 0, ROT0, "V-System Co.", "Spinal Breakers (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1990, spinlbrku,spinlbrk, spinlbrk, spinlbrku, driver_device,0, ROT0, "V-System Co.", "Spinal Breakers (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1990, spinlbrkj,spinlbrk, spinlbrk, spinlbrk, driver_device, 0, ROT0, "V-System Co.", "Spinal Breakers (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
-GAME( 1991, pspikes, 0, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Power Spikes (World)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1991, pspikesk, pspikes, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Power Spikes (Korea)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1991, pspikesu, pspikes, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Power Spikes (US)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1991, svolly91, pspikes, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Super Volley '91 (Japan)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1991, pspikesb, pspikes, pspikesb, pspikesb, driver_device, 0, ROT0, "bootleg", "Power Spikes (bootleg)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1991, spikes91, pspikes, spikes91, pspikes, driver_device, 0, ROT0, "bootleg", "1991 Spikes (Italian bootleg, set 1)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND | GAME_NO_COCKTAIL )
-GAME( 1991, spikes91b,pspikes, spikes91, pspikes, driver_device, 0, ROT0, "bootleg", "1991 Spikes (Italian bootleg, set 2)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND | GAME_NO_COCKTAIL )
-GAME( 1991, pspikesc, pspikes, pspikesc, pspikesc, driver_device, 0, ROT0, "bootleg", "Power Spikes (China)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND )
-GAME( 1997, wbbc97, 0, wbbc97, wbbc97, driver_device, 0, ROT0, "Comad", "Beach Festival World Championship 1997", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) // based on power spikes codebase
+GAME( 1991, pspikes, 0, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Power Spikes (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1991, pspikesk, pspikes, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Power Spikes (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1991, pspikesu, pspikes, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Power Spikes (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1991, svolly91, pspikes, pspikes, pspikes, driver_device, 0, ROT0, "Video System Co.", "Super Volley '91 (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1991, pspikesb, pspikes, pspikesb, pspikesb, driver_device, 0, ROT0, "bootleg", "Power Spikes (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1991, pspikesba,pspikes, pspikesb, pspikesb, driver_device, 0, ROT0, "bootleg (Playmark?)","Power Spikes (Italian bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1991, spikes91, pspikes, spikes91, pspikes, driver_device, 0, ROT0, "bootleg", "1991 Spikes (Italian bootleg, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL )
+GAME( 1991, spikes91b,pspikes, spikes91, pspikes, driver_device, 0, ROT0, "bootleg", "1991 Spikes (Italian bootleg, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND | MACHINE_NO_COCKTAIL )
+GAME( 1991, pspikesc, pspikes, pspikesc, pspikesc, driver_device, 0, ROT0, "bootleg", "Power Spikes (China)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, wbbc97, 0, wbbc97, wbbc97, driver_device, 0, ROT0, "Comad", "Beach Festival World Championship 1997", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // based on power spikes codebase
-GAME( 1991, karatblz, 0, karatblz, karatblz, driver_device, 0, ROT0, "Video System Co.", "Karate Blazers (World)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1991, karatblzu,karatblz, karatblz, karatblz, driver_device, 0, ROT0, "Video System Co.", "Karate Blazers (US)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1991, karatblzj,karatblz, karatblz, karatblz, driver_device, 0, ROT0, "Video System Co.", "Karate Blazers (Japan)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1991, karatblzbl,karatblz,karatblzbl,karatblz,driver_device, 0, ROT0, "bootleg", "Karate Blazers (bootleg)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL | GAME_NO_SOUND )
+GAME( 1991, karatblz, 0, karatblz, karatblz, driver_device, 0, ROT0, "Video System Co.", "Karate Blazers (World)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1991, karatblzu,karatblz, karatblz, karatblz, driver_device, 0, ROT0, "Video System Co.", "Karate Blazers (US)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1991, karatblzj,karatblz, karatblz, karatblz, driver_device, 0, ROT0, "Video System Co.", "Toushin Blazers (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1991, karatblzbl,karatblz,karatblzbl,karatblz,driver_device, 0, ROT0, "bootleg", "Karate Blazers (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_NO_SOUND )
-GAME( 1991, turbofrc, 0, turbofrc, turbofrc, driver_device, 0, ROT270, "Video System Co.", "Turbo Force (old revision)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
+GAME( 1991, turbofrc, 0, turbofrc, turbofrc, driver_device, 0, ROT270, "Video System Co.", "Turbo Force (old revision)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
// there's also an undumped Turbo Force (new revision). Most notable thing in there is the points value of the rocks in level 6 (5.000 versus 500).
// the tiles on these also contain an alt title 'The Final War' for both the title screen and attract logo was it ever used?
-GAME( 1992, aerofgt, 0, aerofgt, aerofgt, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters (World / USA + Canada / Korea / Hong Kong / Taiwan) (newer hardware)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) // this has the newer sprite chip etc. unlike all other games in this driver..
-GAME( 1992, aerofgtb, aerofgt, aerofgtb, aerofgtb, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters (Taiwan / Japan, set 1)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL ) // probably intended for Taiwan because the Japanese name is Sonic Wings (below)
-GAME( 1992, aerofgtc, aerofgt, aerofgtb, aerofgtb, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters (Taiwan / Japan, set 2)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1992, sonicwi, aerofgt, aerofgtb, aerofgtb, driver_device, 0, ROT270, "Video System Co.", "Sonic Wings (Japan)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1992, aerfboot, aerofgt, aerfboot, aerofgtb, driver_device, 0, ROT270, "bootleg", "Aero Fighters (bootleg set 1)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND )
-GAME( 1992, aerfboo2, aerofgt, aerfboo2, aerofgtb, driver_device, 0, ROT270, "bootleg", "Aero Fighters (bootleg set 2)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND )
+GAME( 1992, aerofgt, 0, aerofgt, aerofgt, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters (World / USA + Canada / Korea / Hong Kong / Taiwan) (newer hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // this has the newer sprite chip etc. unlike all other games in this driver..
+GAME( 1992, aerofgtb, aerofgt, aerofgtb, aerofgtb, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters (Taiwan / Japan, set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL ) // probably intended for Taiwan because the Japanese name is Sonic Wings (below)
+GAME( 1992, aerofgtc, aerofgt, aerofgtb, aerofgtb, driver_device, 0, ROT270, "Video System Co.", "Aero Fighters (Taiwan / Japan, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1992, sonicwi, aerofgt, aerofgtb, aerofgtb, driver_device, 0, ROT270, "Video System Co.", "Sonic Wings (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1992, aerfboot, aerofgt, aerfboot, aerofgtb, driver_device, 0, ROT270, "bootleg", "Aero Fighters (bootleg set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
+GAME( 1992, aerfboo2, aerofgt, aerfboo2, aerofgtb, driver_device, 0, ROT270, "bootleg", "Aero Fighters (bootleg set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mess/drivers/aim65.c b/src/mame/drivers/aim65.c
index 170042842d7..163ea0e2774 100644
--- a/src/mess/drivers/aim65.c
+++ b/src/mame/drivers/aim65.c
@@ -285,4 +285,4 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP(1977, aim65, 0, 0, aim65, aim65, driver_device, 0, "Rockwell", "AIM 65", GAME_NO_SOUND_HW )
+COMP(1977, aim65, 0, 0, aim65, aim65, driver_device, 0, "Rockwell", "AIM 65", MACHINE_NO_SOUND_HW )
diff --git a/src/mess/drivers/aim65_40.c b/src/mame/drivers/aim65_40.c
index 1d4aba0c836..df749db8493 100644
--- a/src/mess/drivers/aim65_40.c
+++ b/src/mame/drivers/aim65_40.c
@@ -142,4 +142,4 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1981, aim65_40, 0, 0, aim65_40, aim65_40, driver_device, 0, "Rockwell", "AIM-65/40", GAME_NOT_WORKING | GAME_NO_SOUND )
+COMP( 1981, aim65_40, 0, 0, aim65_40, aim65_40, driver_device, 0, "Rockwell", "AIM-65/40", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/airbustr.c b/src/mame/drivers/airbustr.c
index 347688d4194..51d80cbcf71 100644
--- a/src/mame/drivers/airbustr.c
+++ b/src/mame/drivers/airbustr.c
@@ -755,6 +755,6 @@ DRIVER_INIT_MEMBER(airbustr_state,airbustr)
/* Game Drivers */
-GAME( 1990, airbustr, 0, airbustr, airbustr, airbustr_state, airbustr, ROT0, "Kaneko (Namco license)", "Air Buster: Trouble Specialty Raid Unit (World)", GAME_SUPPORTS_SAVE ) // 891220
-GAME( 1990, airbustrj, airbustr, airbustr, airbustrj, airbustr_state,airbustr, ROT0, "Kaneko (Namco license)", "Air Buster: Trouble Specialty Raid Unit (Japan)", GAME_SUPPORTS_SAVE) // 891229
-GAME( 1990, airbustrb, airbustr, airbustrb,airbustrj, driver_device,0, ROT0, "bootleg", "Air Buster: Trouble Specialty Raid Unit (bootleg)", GAME_SUPPORTS_SAVE) // based on Japan set (891229)
+GAME( 1990, airbustr, 0, airbustr, airbustr, airbustr_state, airbustr, ROT0, "Kaneko (Namco license)", "Air Buster: Trouble Specialty Raid Unit (World)", MACHINE_SUPPORTS_SAVE ) // 891220
+GAME( 1990, airbustrj, airbustr, airbustr, airbustrj, airbustr_state,airbustr, ROT0, "Kaneko (Namco license)", "Air Buster: Trouble Specialty Raid Unit (Japan)", MACHINE_SUPPORTS_SAVE) // 891229
+GAME( 1990, airbustrb, airbustr, airbustrb,airbustrj, driver_device,0, ROT0, "bootleg", "Air Buster: Trouble Specialty Raid Unit (bootleg)", MACHINE_SUPPORTS_SAVE) // based on Japan set (891229)
diff --git a/src/mame/drivers/ajax.c b/src/mame/drivers/ajax.c
index cb69d46f275..9ac2ffcfcd7 100644
--- a/src/mame/drivers/ajax.c
+++ b/src/mame/drivers/ajax.c
@@ -167,9 +167,8 @@ WRITE8_MEMBER(ajax_state::volume_callback1)
static MACHINE_CONFIG_START( ajax, ajax_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", KONAMI, 3000000) /* 12/4 MHz*/
+ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 052001 12/4 MHz*/
MCFG_CPU_PROGRAM_MAP(ajax_main_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", ajax_state, ajax_interrupt) /* IRQs triggered by the 051960 */
MCFG_CPU_ADD("sub", M6809, 3000000) /* ? */
MCFG_CPU_PROGRAM_MAP(ajax_sub_map)
@@ -181,10 +180,9 @@ static MACHINE_CONFIG_START( ajax, ajax_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/3, 528, 112, 400, 256, 16, 240)
+// 6MHz dotclock is more realistic, however needs drawing updates. replace when ready
+// MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4, 396, hbend, hbstart, 256, 16, 240)
MCFG_SCREEN_UPDATE_DRIVER(ajax_state, screen_update_ajax)
MCFG_SCREEN_PALETTE("palette")
@@ -198,7 +196,9 @@ static MACHINE_CONFIG_START( ajax, ajax_state )
MCFG_DEVICE_ADD("k051960", K051960, 0)
MCFG_GFX_PALETTE("palette")
+ MCFG_K051960_SCREEN_TAG("screen")
MCFG_K051960_CB(ajax_state, sprite_callback)
+ MCFG_K051960_IRQ_HANDLER(INPUTLINE("maincpu", KONAMI_IRQ_LINE))
MCFG_DEVICE_ADD("k051316", K051316, 0)
MCFG_GFX_PALETTE("palette")
@@ -376,6 +376,6 @@ ROM_START( ajaxj )
ROM_END
-GAME( 1987, ajax, 0, ajax, ajax, driver_device, 0, ROT90, "Konami", "Ajax", GAME_SUPPORTS_SAVE )
-GAME( 1987, typhoon, ajax, ajax, ajax, driver_device, 0, ROT90, "Konami", "Typhoon", GAME_SUPPORTS_SAVE )
-GAME( 1987, ajaxj, ajax, ajax, ajax, driver_device, 0, ROT90, "Konami", "Ajax (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1987, ajax, 0, ajax, ajax, driver_device, 0, ROT90, "Konami", "Ajax", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, typhoon, ajax, ajax, ajax, driver_device, 0, ROT90, "Konami", "Typhoon", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ajaxj, ajax, ajax, ajax, driver_device, 0, ROT90, "Konami", "Ajax (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/albazc.c b/src/mame/drivers/albazc.c
index ab211fa7c55..122f6783c52 100644
--- a/src/mame/drivers/albazc.c
+++ b/src/mame/drivers/albazc.c
@@ -309,4 +309,4 @@ ROM_START( hanaroku )
ROM_END
-GAME( 1988, hanaroku, 0, hanaroku, hanaroku, driver_device, 0, ROT0, "Alba", "Hanaroku", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1988, hanaroku, 0, hanaroku, hanaroku, driver_device, 0, ROT0, "Alba", "Hanaroku", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/albazg.c b/src/mame/drivers/albazg.c
index 15a3decd8b1..fa1d54ca83f 100644
--- a/src/mame/drivers/albazg.c
+++ b/src/mame/drivers/albazg.c
@@ -406,4 +406,4 @@ ROM_START( yumefuda )
ROM_LOAD("zg1-007.u13", 0x000, 0x100, NO_DUMP ) //could be either PROM or PAL
ROM_END
-GAME( 1991, yumefuda, 0, yumefuda, yumefuda, driver_device, 0, ROT0, "Alba", "Yumefuda [BET]", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1991, yumefuda, 0, yumefuda, yumefuda, driver_device, 0, ROT0, "Alba", "Yumefuda [BET]", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/aleck64.c b/src/mame/drivers/aleck64.c
index 745d761cc32..26499c7b9b2 100644
--- a/src/mame/drivers/aleck64.c
+++ b/src/mame/drivers/aleck64.c
@@ -164,7 +164,7 @@ Notes:
- ALL components are listed for completeness. However, many are power or
logic devices that most people need not be concerned about :-)
- - The Seta/N64 Aleck64 hardware is similar also, but instead of the hich capacity
+ - The Seta/N64 Aleck64 hardware is similar also, but instead of the high capacity
serial MASKROM being on the main board, it's in a cart that plugs into a slot.
*/
@@ -192,6 +192,7 @@ public:
DECLARE_READ16_MEMBER(e90_prot_r);
DECLARE_WRITE16_MEMBER(e90_prot_w);
UINT32 screen_update_e90(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+
private:
UINT32 m_dip_read_offset;
};
@@ -262,7 +263,7 @@ READ32_MEMBER(aleck64_state::aleck_dips_r)
Some of these are big, every game adds a mapping for 4MB at 0xc0000000 physical.
Some add more than one 4MB mapping. As some of the boards are only 4MB RAM,
it seems likely that the programmers expected main RAM to be mirrored at 0xc0000000.
- Some of the games have a further 4MB mapping to a pgysical segment contiguous with
+ Some of the games have a further 4MB mapping to a physical segment contiguous with
the first at 0xc0000000, so if these games are on the E92 8MB boards, this would
add a bit of support to the mirror idea.
@@ -856,6 +857,7 @@ static MACHINE_CONFIG_START( aleck64, aleck64_state )
MCFG_SCREEN_SIZE(640, 525)
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 239)
MCFG_SCREEN_UPDATE_DRIVER(aleck64_state, screen_update_n64)
+ MCFG_SCREEN_VBLANK_DRIVER(aleck64_state, screen_eof_n64)
MCFG_PALETTE_ADD("palette", 0x1000)
@@ -1063,7 +1065,7 @@ ROM_START( twrshaft )
PIF_BOOTROM
ROM_REGION32_BE( 0x4000000, "user2", 0 )
- ROM_LOAD16_WORD_SWAP( "ua3012--all02.u3", 0x000000, 0x1000000, CRC(904a91a7) SHA1(7dfa3447d2c489c0448c4004dc12d3037c05a0f3) )
+ ROM_LOAD16_WORD_SWAP( "ua3012-all02.u3", 0x000000, 0x1000000, CRC(904a91a7) SHA1(7dfa3447d2c489c0448c4004dc12d3037c05a0f3) )
ROM_REGION32_BE( 0x800000, "user3", 0 )
ROM_LOAD16_WORD_SWAP( "nus-zsij-0.u1", 0x000000, 0x800000, CRC(2389576f) SHA1(dc22b2eab4d7a02cb918827a62e6c120b3a84e6c) )
@@ -1158,16 +1160,16 @@ ROM_END
// BIOS
-GAME( 1998, aleck64, 0, aleck64, aleck64, aleck64_state, aleck64, ROT0, "Nintendo / Seta", "Aleck64 PIF BIOS", GAME_IS_BIOS_ROOT)
+GAME( 1998, aleck64, 0, aleck64, aleck64, aleck64_state, aleck64, ROT0, "Nintendo / Seta", "Aleck64 PIF BIOS", MACHINE_IS_BIOS_ROOT)
// games
-GAME( 1998, 11beat, aleck64, aleck64, 11beat, aleck64_state, aleck64, ROT0, "Hudson", "Eleven Beat", GAME_NOT_WORKING ) // crashes at kick off / during attract with DRC
-GAME( 1998, mtetrisc, aleck64, a64_e90, mtetrisc, aleck64_state, aleck64, ROT0, "Capcom", "Magical Tetris Challenge (981009 Japan)", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, starsldr, aleck64, aleck64, starsldr, aleck64_state, aleck64, ROT0, "Hudson / Seta", "Star Soldier: Vanishing Earth", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, vivdolls, aleck64, aleck64, aleck64, aleck64_state, aleck64, ROT0, "Visco", "Vivid Dolls", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, srmvs, aleck64, aleck64, srmvs, aleck64_state, aleck64, ROT0, "Seta", "Super Real Mahjong VS", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
-GAME( 2003, twrshaft, aleck64, aleck64, twrshaft, aleck64_state, aleck64, ROT0, "Aruze", "Tower & Shaft", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
-GAME( 2003, hipai, aleck64, aleck64, hipai, aleck64_state, aleck64, ROT0, "Aruze / Seta", "Hi Pai Paradise", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
-GAME( 2003, doncdoon, aleck64, aleck64, doncdoon, aleck64_state, aleck64, ROT0, "Aruze", "Hanabi de Doon! - Don-chan Puzzle", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
-GAME( 2003, kurufev, aleck64, aleck64, kurufev, aleck64_state, aleck64, ROT0, "Aruze / Takumi", "Kurukuru Fever", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
-GAME( 2000, mayjin3, aleck64, aleck64, aleck64, aleck64_state, aleck64, ROT0, "Seta / Able Corporation", "Mayjinsen 3", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
+GAME( 1998, 11beat, aleck64, aleck64, 11beat, aleck64_state, aleck64, ROT0, "Hudson", "Eleven Beat", MACHINE_NOT_WORKING ) // crashes at kick off / during attract with DRC
+GAME( 1998, mtetrisc, aleck64, a64_e90, mtetrisc, aleck64_state, aleck64, ROT0, "Capcom", "Magical Tetris Challenge (981009 Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, starsldr, aleck64, aleck64, starsldr, aleck64_state, aleck64, ROT0, "Hudson / Seta", "Star Soldier: Vanishing Earth", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, vivdolls, aleck64, aleck64, aleck64, aleck64_state, aleck64, ROT0, "Visco", "Vivid Dolls", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, srmvs, aleck64, aleck64, srmvs, aleck64_state, aleck64, ROT0, "Seta", "Super Real Mahjong VS", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2003, twrshaft, aleck64, aleck64, twrshaft, aleck64_state, aleck64, ROT0, "Aruze", "Tower & Shaft", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2003, hipai, aleck64, aleck64, hipai, aleck64_state, aleck64, ROT0, "Aruze / Seta", "Hi Pai Paradise", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2003, doncdoon, aleck64, aleck64, doncdoon, aleck64_state, aleck64, ROT0, "Aruze", "Hanabi de Doon! - Don-chan Puzzle", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2003, kurufev, aleck64, aleck64, kurufev, aleck64_state, aleck64, ROT0, "Aruze / Takumi", "Kurukuru Fever", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
+GAME( 2000, mayjin3, aleck64, aleck64, aleck64, aleck64_state, aleck64, ROT0, "Seta / Able Corporation", "Mayjinsen 3", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/aleisttl.c b/src/mame/drivers/aleisttl.c
index 2b8fe06c97f..46582d7b25c 100644
--- a/src/mame/drivers/aleisttl.c
+++ b/src/mame/drivers/aleisttl.c
@@ -7,7 +7,7 @@
Chase (aka Chase1) (1976)
Deluxe Soccer (1973)
Fire Power (1975) EG-1020-2
- Fütsball (1975)
+ F??tsball (1975)
Galaxy Raider (1974)
Hesitation (1974) AL-6500?
Hockey, Soccer, Tennis (1974)
@@ -131,4 +131,4 @@ ROM_START( sburners )
ROM_END
-GAME( 1975, sburners, 0, sburners, 0, driver_device, 0, ROT0, "Allied Leisure", "Street Burners [TTL]", GAME_IS_SKELETON )
+GAME( 1975, sburners, 0, sburners, 0, driver_device, 0, ROT0, "Allied Leisure", "Street Burners [TTL]", MACHINE_IS_SKELETON )
diff --git a/src/mess/drivers/alesis.c b/src/mame/drivers/alesis.c
index 6b72c21ed86..605305b6b64 100644
--- a/src/mess/drivers/alesis.c
+++ b/src/mame/drivers/alesis.c
@@ -27,17 +27,17 @@ READ8_MEMBER( alesis_state::kb_r )
UINT8 data = 0xff;
if (!(m_kb_matrix & 0x01))
- data &= ioport("COL1")->read();
+ data &= m_col1->read();
if (!(m_kb_matrix & 0x02))
- data &= ioport("COL2")->read();
+ data &= m_col2->read();
if (!(m_kb_matrix & 0x04))
- data &= ioport("COL3")->read();
+ data &= m_col3->read();
if (!(m_kb_matrix & 0x08))
- data &= ioport("COL4")->read();
+ data &= m_col4->read();
if (!(m_kb_matrix & 0x10))
- data &= ioport("COL5")->read();
+ data &= m_col5->read();
if (!(m_kb_matrix & 0x20))
- data &= ioport("COL6")->read();
+ data &= m_col6->read();
return data;
}
@@ -479,7 +479,7 @@ DRIVER_INIT_MEMBER(alesis_state,hr16)
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-SYST( 1987, hr16, 0, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16", GAME_NOT_WORKING | GAME_NO_SOUND)
-SYST( 1987, mmt8, 0, 0, mmt8, mmt8, driver_device, 0, "Alesis", "MMT-8", GAME_NOT_WORKING | GAME_NO_SOUND)
-SYST( 1989, hr16b, hr16, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16B", GAME_NOT_WORKING | GAME_NO_SOUND)
-SYST( 1990, sr16, 0, 0, sr16, sr16, driver_device, 0, "Alesis", "SR-16 (Alesis)", GAME_NOT_WORKING | GAME_NO_SOUND)
+SYST( 1987, hr16, 0, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+SYST( 1987, mmt8, 0, 0, mmt8, mmt8, driver_device, 0, "Alesis", "MMT-8", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+SYST( 1989, hr16b, hr16, 0, hr16, hr16, alesis_state, hr16, "Alesis", "HR-16B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+SYST( 1990, sr16, 0, 0, sr16, sr16, driver_device, 0, "Alesis", "SR-16 (Alesis)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/alg.c b/src/mame/drivers/alg.c
index bd674b5fb79..bedde2b9362 100644
--- a/src/mame/drivers/alg.c
+++ b/src/mame/drivers/alg.c
@@ -36,7 +36,13 @@ class alg_state : public amiga_state
public:
alg_state(const machine_config &mconfig, device_type type, const char *tag)
: amiga_state(mconfig, type, tag),
- m_laserdisc(*this, "laserdisc") { }
+ m_laserdisc(*this, "laserdisc"),
+ m_gun1x(*this, "GUN1X"),
+ m_gun1y(*this, "GUN1Y"),
+ m_gun2x(*this, "GUN2X"),
+ m_gun2y(*this, "GUN2Y"),
+ m_triggers(*this, "TRIGGERS")
+ { }
DECLARE_CUSTOM_INPUT_MEMBER(lightgun_pos_r);
DECLARE_CUSTOM_INPUT_MEMBER(lightgun_trigger_r);
@@ -55,9 +61,15 @@ public:
protected:
// amiga_state overrides
virtual void potgo_w(UINT16 data);
+ int get_lightgun_pos(int player, int *x, int *y);
private:
required_device<sony_ldp1450_device> m_laserdisc;
+ required_ioport m_gun1x;
+ required_ioport m_gun1y;
+ optional_ioport m_gun2x;
+ optional_ioport m_gun2y;
+ optional_ioport m_triggers;
UINT16 m_input_select;
};
@@ -72,12 +84,12 @@ private:
*
*************************************/
-static int get_lightgun_pos(screen_device &screen, int player, int *x, int *y)
+int alg_state::get_lightgun_pos(int player, int *x, int *y)
{
- const rectangle &visarea = screen.visible_area();
+ const rectangle &visarea = m_screen->visible_area();
- int xpos = screen.ioport((player == 0) ? "GUN1X" : "GUN2X")->read_safe(0xffffffff);
- int ypos = screen.ioport((player == 0) ? "GUN1Y" : "GUN2Y")->read_safe(0xffffffff);
+ int xpos = (player == 0) ? m_gun1x->read() : (m_gun2x ? m_gun2x->read() : 0xffffffff);
+ int ypos = (player == 0) ? m_gun1y->read() : (m_gun2y ? m_gun2y->read() : 0xffffffff);
if (xpos == -1 || ypos == -1)
return FALSE;
@@ -128,7 +140,7 @@ CUSTOM_INPUT_MEMBER(alg_state::lightgun_pos_r)
int x = 0, y = 0;
/* get the position based on the input select */
- get_lightgun_pos(*m_screen, m_input_select, &x, &y);
+ get_lightgun_pos(m_input_select, &x, &y);
return (y << 8) | (x >> 2);
}
@@ -136,14 +148,14 @@ CUSTOM_INPUT_MEMBER(alg_state::lightgun_pos_r)
CUSTOM_INPUT_MEMBER(alg_state::lightgun_trigger_r)
{
/* read the trigger control based on the input select */
- return (ioport("TRIGGERS")->read() >> m_input_select) & 1;
+ return (m_triggers->read() >> m_input_select) & 1;
}
CUSTOM_INPUT_MEMBER(alg_state::lightgun_holster_r)
{
/* read the holster control based on the input select */
- return (ioport("TRIGGERS")->read() >> (2 + m_input_select)) & 1;
+ return (m_triggers->read() >> (2 + m_input_select)) & 1;
}
@@ -769,48 +781,48 @@ DRIVER_INIT_MEMBER(alg_state,aplatoon)
*************************************/
/* BIOS */
-GAME( 199?, alg_bios, 0, alg_r1, alg, alg_state, ntsc, ROT0, "American Laser Games", "American Laser Games BIOS", GAME_IS_BIOS_ROOT )
+GAME( 199?, alg_bios, 0, alg_r1, alg, alg_state, ntsc, ROT0, "American Laser Games", "American Laser Games BIOS", MACHINE_IS_BIOS_ROOT )
/* Rev. A board */
/* PAL R1 */
-GAME( 1990, maddoga, maddog, alg_r1, alg, alg_state, palr1, ROT0, "American Laser Games", "Mad Dog McCree v1C board rev.A", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1990, maddoga, maddog, alg_r1, alg, alg_state, palr1, ROT0, "American Laser Games", "Mad Dog McCree v1C board rev.A", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
/* PAL R3 */
-GAME( 1991, wsjr, alg_bios, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.6", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1991, wsjr_15, wsjr, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.5", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1991, wsjr, alg_bios, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.6", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1991, wsjr_15, wsjr, alg_r1, alg, alg_state, palr3, ROT0, "American Laser Games", "Who Shot Johnny Rock? v1.5", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
/* Rev. B board */
/* PAL R6 */
-GAME( 1990, maddog, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.03 board rev.B", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1990, maddog_202, maddog, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.02 board rev.B", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1990, maddog, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.03 board rev.B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1990, maddog_202, maddog, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog McCree v2.02 board rev.B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
/* works ok but uses right player (2) controls only for trigger and holster */
-GAME( 1992, maddog2, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.04", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1992, maddog2_202, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.02", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1992, maddog2_110, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v1.10", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1992, maddog2_100, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v1.00", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1992, maddog2, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.04", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, maddog2_202, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v2.02", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, maddog2_110, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v1.10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, maddog2_100, maddog2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Mad Dog II: The Lost Gold v1.00", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
/* works ok but uses right player (2) controls only for trigger and holster */
-GAME( 1992, spacepir, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Space Pirates v2.2", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1992, spacepir_14, spacepir, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Space Pirates v1.4", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1992, spacepir, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Space Pirates v2.2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, spacepir_14, spacepir, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Space Pirates v1.4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1992, gallgall, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Gallagher's Gallery v2.2", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1992, gallgall_21, gallgall, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Gallagher's Gallery v2.1", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1992, gallgall, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Gallagher's Gallery v2.2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, gallgall_21, gallgall, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Gallagher's Gallery v2.1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
/* all good, but no holster */
-GAME( 1993, crimepat, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.51", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1993, crimepat_14, crimepat, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.4", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1993, crimepat_12, crimepat, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.2", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-
-GAME( 1993, crimep2, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol 2: Drug Wars v1.3", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1993, crimep2_11, crimep2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol 2: Drug Wars v1.1", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1994, lastbh, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v1.01", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1994, lastbh_006, lastbh, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v0.06", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1995, fastdraw, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT90, "American Laser Games", "Fast Draw Showdown v1.31", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1995, fastdraw_130,fastdraw, alg_r2, alg_2p, alg_state, palr6, ROT90, "American Laser Games", "Fast Draw Showdown v1.30", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1993, crimepat, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.51", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1993, crimepat_14, crimepat, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1993, crimepat_12, crimepat, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol v1.2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+
+GAME( 1993, crimep2, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol 2: Drug Wars v1.3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1993, crimep2_11, crimep2, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "Crime Patrol 2: Drug Wars v1.1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, lastbh, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v1.01", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, lastbh_006, lastbh, alg_r2, alg_2p, alg_state, palr6, ROT0, "American Laser Games", "The Last Bounty Hunter v0.06", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1995, fastdraw, alg_bios, alg_r2, alg_2p, alg_state, palr6, ROT90, "American Laser Games", "Fast Draw Showdown v1.31", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1995, fastdraw_130,fastdraw, alg_r2, alg_2p, alg_state, palr6, ROT90, "American Laser Games", "Fast Draw Showdown v1.30", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
/* works ok but uses right player (2) controls only for trigger and holster */
/* NOVA games on ALG hardware with own address scramble */
-GAME( 199?, aplatoon, alg_bios, alg_r2, alg, alg_state, aplatoon, ROT0, "Nova?", "Platoon V.3.1 US", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 199?, aplatoon, alg_bios, alg_r2, alg, alg_state, aplatoon, ROT0, "Nova?", "Platoon V.3.1 US", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
/* Web Picmatic games PAL tv standard, own rom board */
-GAME( 1993, zortonbr, alg_bios, picmatic, alg, alg_state, pal, ROT0, "Web Picmatic", "Zorton Brothers (Los Justicieros)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1993, zortonbr, alg_bios, picmatic, alg, alg_state, pal, ROT0, "Web Picmatic", "Zorton Brothers (Los Justicieros)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/alien.c b/src/mame/drivers/alien.c
index c76c0225441..935c06d4403 100644
--- a/src/mame/drivers/alien.c
+++ b/src/mame/drivers/alien.c
@@ -120,4 +120,4 @@ ROM_START( alien )
ROM_END
-GAME( 2005, alien, 0, alien, alien, driver_device, 0, ROT0, "Capcom", "Alien: The Arcade Medal Edition", GAME_NO_SOUND | GAME_NOT_WORKING )
+GAME( 2005, alien, 0, alien, alien, driver_device, 0, ROT0, "Capcom", "Alien: The Arcade Medal Edition", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/aliens.c b/src/mame/drivers/aliens.c
index 5b803dd0ad5..f73935d1b57 100644
--- a/src/mame/drivers/aliens.c
+++ b/src/mame/drivers/aliens.c
@@ -16,11 +16,6 @@ Preliminary driver by:
#include "includes/konamipt.h"
#include "includes/aliens.h"
-INTERRUPT_GEN_MEMBER(aliens_state::aliens_interrupt)
-{
- if (m_k051960->k051960_is_irq_enabled())
- device.execute().set_input_line(KONAMI_IRQ_LINE, HOLD_LINE);
-}
WRITE8_MEMBER(aliens_state::aliens_coin_counter_w)
{
@@ -90,7 +85,7 @@ WRITE8_MEMBER(aliens_state::k052109_051960_w)
static ADDRESS_MAP_START( aliens_map, AS_PROGRAM, 8, aliens_state )
AM_RANGE(0x0000, 0x03ff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
AM_RANGE(0x0400, 0x1fff) AM_RAM
- AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("bank1") /* banked ROM */
+ AM_RANGE(0x2000, 0x3fff) AM_ROMBANK("rombank") /* banked ROM */
AM_RANGE(0x5f80, 0x5f80) AM_READ_PORT("DSW3")
AM_RANGE(0x5f81, 0x5f81) AM_READ_PORT("P1")
AM_RANGE(0x5f82, 0x5f82) AM_READ_PORT("P2")
@@ -179,8 +174,8 @@ WRITE8_MEMBER(aliens_state::volume_callback)
void aliens_state::machine_start()
{
- membank("bank1")->configure_entries(0, 24, memregion("maincpu")->base(), 0x2000);
- membank("bank1")->set_entry(0);
+ m_rombank->configure_entries(0, 24, memregion("maincpu")->base(), 0x2000);
+ m_rombank->set_entry(0);
}
void aliens_state::machine_reset()
@@ -190,15 +185,14 @@ void aliens_state::machine_reset()
WRITE8_MEMBER( aliens_state::banking_callback )
{
- membank("bank1")->set_entry(data & 0x1f);
+ m_rombank->set_entry(data & 0x1f);
}
static MACHINE_CONFIG_START( aliens, aliens_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/8) /* 052001 (verified on pcb) */
+ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 052001 (verified on pcb) */
MCFG_CPU_PROGRAM_MAP(aliens_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", aliens_state, aliens_interrupt)
MCFG_KONAMICPU_LINE_CB(WRITE8(aliens_state, banking_callback))
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
@@ -213,10 +207,9 @@ static MACHINE_CONFIG_START( aliens, aliens_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/3, 528, 112, 400, 256, 16, 240) // measured 59.17
+// 6MHz dotclock is more realistic, however needs drawing updates. replace when ready
+// MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4, 396, hbend, hbstart, 256, 16, 240)
MCFG_SCREEN_UPDATE_DRIVER(aliens_state, screen_update_aliens)
MCFG_SCREEN_PALETTE("palette")
@@ -230,7 +223,9 @@ static MACHINE_CONFIG_START( aliens, aliens_state )
MCFG_DEVICE_ADD("k051960", K051960, 0)
MCFG_GFX_PALETTE("palette")
+ MCFG_K051960_SCREEN_TAG("screen")
MCFG_K051960_CB(aliens_state, sprite_callback)
+ MCFG_K051960_IRQ_HANDLER(INPUTLINE("maincpu", KONAMI_IRQ_LINE))
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -477,10 +472,10 @@ ROM_END
***************************************************************************/
-GAME( 1990, aliens, 0, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (World set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1990, aliens2, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (World set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1990, aliens3, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (World set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1990, aliensu, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (US)", GAME_SUPPORTS_SAVE )
-GAME( 1990, aliensj, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (Japan set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1990, aliensj2, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (Japan set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1990, aliensa, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (Asia)", GAME_SUPPORTS_SAVE )
+GAME( 1990, aliens, 0, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (World set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, aliens2, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (World set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, aliens3, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (World set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, aliensu, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, aliensj, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (Japan set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, aliensj2, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (Japan set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, aliensa, aliens, aliens, aliens, driver_device, 0, ROT0, "Konami", "Aliens (Asia)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/alinvade.c b/src/mame/drivers/alinvade.c
index cb5dcd12892..3ce130711fe 100644
--- a/src/mame/drivers/alinvade.c
+++ b/src/mame/drivers/alinvade.c
@@ -237,4 +237,4 @@ ROM_START( alinvade )
ROM_END
-GAMEL( 198?, alinvade, 0, alinvade, alinvade, driver_device, 0, ROT90, "Forbes?", "Alien Invaders", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_alinvade )
+GAMEL( 198?, alinvade, 0, alinvade, alinvade, driver_device, 0, ROT90, "Forbes?", "Alien Invaders", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_alinvade )
diff --git a/src/mame/drivers/allied.c b/src/mame/drivers/allied.c
index 01c840bb647..03bcf5afdfc 100644
--- a/src/mame/drivers/allied.c
+++ b/src/mame/drivers/allied.c
@@ -708,15 +708,15 @@ ROM_END
#define rom_starshot rom_allied
-GAME(1977, allied, 0, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Allied System", GAME_IS_BIOS_ROOT)
-GAME(1977, suprpick, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Super Picker", GAME_MECHANICAL)
-GAME(1977, royclark, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Roy Clark - The Entertainer", GAME_MECHANICAL)
-GAME(1977, thndbolt, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Thunderbolt", GAME_MECHANICAL)
-GAME(1978, hoedown, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hoe Down", GAME_MECHANICAL)
-GAME(1978, takefive, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Take Five", GAME_MECHANICAL)
-GAME(1978, heartspd, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hearts & Spades", GAME_MECHANICAL)
-GAME(1978, foathens, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Flame of Athens", GAME_MECHANICAL)
-GAME(1979, disco79, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Disco '79", GAME_MECHANICAL)
-GAME(1979, erosone, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Eros One", GAME_MECHANICAL)
-GAME(1979, circa33, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Circa 1933", GAME_MECHANICAL)
-GAME(1979, starshot, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Star Shooter", GAME_MECHANICAL)
+GAME(1977, allied, 0, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Allied System", MACHINE_IS_BIOS_ROOT)
+GAME(1977, suprpick, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Super Picker", MACHINE_MECHANICAL)
+GAME(1977, royclark, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Roy Clark - The Entertainer", MACHINE_MECHANICAL)
+GAME(1977, thndbolt, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Thunderbolt", MACHINE_MECHANICAL)
+GAME(1978, hoedown, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hoe Down", MACHINE_MECHANICAL)
+GAME(1978, takefive, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Take Five", MACHINE_MECHANICAL)
+GAME(1978, heartspd, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Hearts & Spades", MACHINE_MECHANICAL)
+GAME(1978, foathens, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Flame of Athens", MACHINE_MECHANICAL)
+GAME(1979, disco79, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Disco '79", MACHINE_MECHANICAL)
+GAME(1979, erosone, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Eros One", MACHINE_MECHANICAL)
+GAME(1979, circa33, allied, allied, allied, driver_device, 0, ROT0, "Fascination Int.", "Circa 1933", MACHINE_MECHANICAL)
+GAME(1979, starshot, allied, allied, allied, driver_device, 0, ROT0, "Allied Leisure", "Star Shooter", MACHINE_MECHANICAL)
diff --git a/src/mame/drivers/alpha68k.c b/src/mame/drivers/alpha68k.c
index bcc51a934e8..42ae3dc31ba 100644
--- a/src/mame/drivers/alpha68k.c
+++ b/src/mame/drivers/alpha68k.c
@@ -3457,41 +3457,41 @@ DRIVER_INIT_MEMBER(alpha68k_state,tnextspc)
/******************************************************************************/
-GAME( 1986, sstingry, 0, sstingry, sstingry, alpha68k_state, sstingry, ROT90, "Alpha Denshi Co.", "Super Stingray (Japan)", GAME_SUPPORTS_SAVE | GAME_UNEMULATED_PROTECTION )
+GAME( 1986, sstingry, 0, sstingry, sstingry, alpha68k_state, sstingry, ROT90, "Alpha Denshi Co.", "Super Stingray (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1987, kyros, 0, kyros, kyros, alpha68k_state, kyros, ROT90, "Alpha Denshi Co. (World Games Inc. license)", "Kyros", GAME_SUPPORTS_SAVE )
-GAME( 1986, kyrosj, kyros, kyros, kyros, alpha68k_state, kyros, ROT90, "Alpha Denshi Co.", "Kyros No Yakata (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1987, kyros, 0, kyros, kyros, alpha68k_state, kyros, ROT90, "Alpha Denshi Co. (World Games Inc. license)", "Kyros", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, kyrosj, kyros, kyros, kyros, alpha68k_state, kyros, ROT90, "Alpha Denshi Co.", "Kyros No Yakata (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, jongbou, 0, jongbou, jongbou, alpha68k_state, jongbou, ROT90, "SNK", "Mahjong Block Jongbou (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1987, jongbou, 0, jongbou, jongbou, alpha68k_state, jongbou, ROT90, "SNK", "Mahjong Block Jongbou (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, paddlema, 0, alpha68k_I, paddlema, alpha68k_state, paddlema, ROT90, "SNK", "Paddle Mania", GAME_SUPPORTS_SAVE )
+GAME( 1988, paddlema, 0, alpha68k_I, paddlema, alpha68k_state, paddlema, ROT90, "SNK", "Paddle Mania", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, timesold, 0, alpha68k_II, timesold, alpha68k_state, timesold, ROT90, "Alpha Denshi Co. (SNK/Romstar license)", "Time Soldiers (US Rev 3)", GAME_SUPPORTS_SAVE )
-GAME( 1987, timesold1, timesold, alpha68k_II, timesold, alpha68k_state, timesold1,ROT90, "Alpha Denshi Co. (SNK/Romstar license)", "Time Soldiers (US Rev 1)", GAME_SUPPORTS_SAVE )
+GAME( 1987, timesold, 0, alpha68k_II, timesold, alpha68k_state, timesold, ROT90, "Alpha Denshi Co. (SNK/Romstar license)", "Time Soldiers (US Rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, timesold1, timesold, alpha68k_II, timesold, alpha68k_state, timesold1,ROT90, "Alpha Denshi Co. (SNK/Romstar license)", "Time Soldiers (US Rev 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, btlfield, timesold, alpha68k_II, btlfield, alpha68k_state, btlfield, ROT90, "Alpha Denshi Co. (SNK license)", "Battle Field (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, btlfieldb, timesold, btlfieldb, btlfieldb, alpha68k_state,btlfieldb,ROT90, "bootleg", "Battle Field (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1987, btlfield, timesold, alpha68k_II, btlfield, alpha68k_state, btlfield, ROT90, "Alpha Denshi Co. (SNK license)", "Battle Field (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, btlfieldb, timesold, btlfieldb, btlfieldb, alpha68k_state,btlfieldb,ROT90, "bootleg", "Battle Field (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, skysoldr, 0, alpha68k_II, skysoldr, alpha68k_state, skysoldr, ROT90, "Alpha Denshi Co. (SNK of America/Romstar license)", "Sky Soldiers (US)", GAME_SUPPORTS_SAVE )
-GAME( 1988, skysoldrbl,skysoldr, alpha68k_II, skysoldr, alpha68k_state, skysoldr, ROT90, "bootleg", "Sky Soldiers (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1988, skysoldr, 0, alpha68k_II, skysoldr, alpha68k_state, skysoldr, ROT90, "Alpha Denshi Co. (SNK of America/Romstar license)", "Sky Soldiers (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, skysoldrbl,skysoldr, alpha68k_II, skysoldr, alpha68k_state, skysoldr, ROT90, "bootleg", "Sky Soldiers (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, goldmedl, 0, alpha68k_II_gm, goldmedl, alpha68k_state, goldmedl, ROT0, "SNK", "Gold Medalist (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1988, goldmedla, goldmedl, alpha68k_II_gm, goldmedl, alpha68k_state, goldmedla,ROT0, "SNK", "Gold Medalist (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1988, goldmedlb, goldmedl, alpha68k_II_gm, goldmedl, alpha68k_state, goldmedla,ROT0, "bootleg", "Gold Medalist (bootleg)", GAME_NOT_WORKING )
+GAME( 1988, goldmedl, 0, alpha68k_II_gm, goldmedl, alpha68k_state, goldmedl, ROT0, "SNK", "Gold Medalist (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, goldmedla, goldmedl, alpha68k_II_gm, goldmedl, alpha68k_state, goldmedla,ROT0, "SNK", "Gold Medalist (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, goldmedlb, goldmedl, alpha68k_II_gm, goldmedl, alpha68k_state, goldmedla,ROT0, "bootleg", "Gold Medalist (bootleg)", MACHINE_NOT_WORKING )
-GAME( 1989, skyadvnt, 0, alpha68k_V, skyadvnt, alpha68k_state, skyadvnt, ROT90, "Alpha Denshi Co.", "Sky Adventure (World)", GAME_SUPPORTS_SAVE )
-GAME( 1989, skyadvntu, skyadvnt, alpha68k_V, skyadvntu, alpha68k_state,skyadvntu,ROT90, "Alpha Denshi Co. (SNK of America license)", "Sky Adventure (US)", GAME_SUPPORTS_SAVE )
-GAME( 1989, skyadvntj, skyadvnt, alpha68k_V, skyadvnt, alpha68k_state, skyadvnt, ROT90, "Alpha Denshi Co.", "Sky Adventure (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1989, skyadvnt, 0, alpha68k_V, skyadvnt, alpha68k_state, skyadvnt, ROT90, "Alpha Denshi Co.", "Sky Adventure (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, skyadvntu, skyadvnt, alpha68k_V, skyadvntu, alpha68k_state,skyadvntu,ROT90, "Alpha Denshi Co. (SNK of America license)", "Sky Adventure (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, skyadvntj, skyadvnt, alpha68k_V, skyadvnt, alpha68k_state, skyadvnt, ROT90, "Alpha Denshi Co.", "Sky Adventure (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, gangwars, 0, alpha68k_V, gangwars, alpha68k_state, gangwars, ROT0, "Alpha Denshi Co.", "Gang Wars", GAME_SUPPORTS_SAVE )
-GAME( 1989, gangwarsj, gangwars, alpha68k_V, gangwars, alpha68k_state, gangwars, ROT0, "Alpha Denshi Co.", "Gang Wars (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, gangwarsu, gangwars, alpha68k_V, gangwarsu, alpha68k_state,gangwarsu,ROT0, "Alpha Denshi Co.", "Gang Wars (US)", GAME_SUPPORTS_SAVE )
-GAME( 1989, gangwarsb, gangwars, alpha68k_V, gangwars, alpha68k_state, gangwars, ROT0, "bootleg", "Gang Wars (bootleg)", GAME_SUPPORTS_SAVE ) // has (undumped) 68705 MCU in place of Alpha MCU, otherwise the same as 'gangwars'
+GAME( 1989, gangwars, 0, alpha68k_V, gangwars, alpha68k_state, gangwars, ROT0, "Alpha Denshi Co.", "Gang Wars", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, gangwarsj, gangwars, alpha68k_V, gangwars, alpha68k_state, gangwars, ROT0, "Alpha Denshi Co.", "Gang Wars (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, gangwarsu, gangwars, alpha68k_V, gangwarsu, alpha68k_state,gangwarsu,ROT0, "Alpha Denshi Co.", "Gang Wars (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, gangwarsb, gangwars, alpha68k_V, gangwars, alpha68k_state, gangwars, ROT0, "bootleg", "Gang Wars (bootleg)", MACHINE_SUPPORTS_SAVE ) // has (undumped) 68705 MCU in place of Alpha MCU, otherwise the same as 'gangwars'
-GAME( 1989, sbasebal, 0, alpha68k_V_sb, sbasebal, alpha68k_state, sbasebal, ROT0, "Alpha Denshi Co. (SNK of America license)", "Super Champion Baseball (US)", GAME_SUPPORTS_SAVE | GAME_UNEMULATED_PROTECTION )
-GAME( 1989, sbasebalj, sbasebal, alpha68k_V_sb, sbasebalj,alpha68k_state, sbasebalj,ROT0, "Alpha Denshi Co.", "Super Champion Baseball (Japan)", GAME_SUPPORTS_SAVE | GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1989, sbasebal, 0, alpha68k_V_sb, sbasebal, alpha68k_state, sbasebal, ROT0, "Alpha Denshi Co. (SNK of America license)", "Super Champion Baseball (US)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1989, sbasebalj, sbasebal, alpha68k_V_sb, sbasebalj,alpha68k_state, sbasebalj,ROT0, "Alpha Denshi Co.", "Super Champion Baseball (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
-GAME( 1989, tnextspc, 0, tnextspc, tnextspc, alpha68k_state, tnextspc, ROT90, "SNK", "The Next Space (set 1)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1989, tnextspc2, tnextspc, tnextspc, tnextspc, alpha68k_state, tnextspc, ROT90, "SNK", "The Next Space (set 2)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1989, tnextspcj, tnextspc, tnextspc, tnextspc, alpha68k_state, tnextspc, ROT90, "SNK (Pasadena International Corp. license)", "The Next Space (Japan)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
+GAME( 1989, tnextspc, 0, tnextspc, tnextspc, alpha68k_state, tnextspc, ROT90, "SNK", "The Next Space (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1989, tnextspc2, tnextspc, tnextspc, tnextspc, alpha68k_state, tnextspc, ROT90, "SNK", "The Next Space (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1989, tnextspcj, tnextspc, tnextspc, tnextspc, alpha68k_state, tnextspc, ROT90, "SNK (Pasadena International Corp. license)", "The Next Space (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
diff --git a/src/mess/drivers/alphasma.c b/src/mame/drivers/alphasma.c
index 5510dc9e45b..d20012238d4 100644
--- a/src/mess/drivers/alphasma.c
+++ b/src/mame/drivers/alphasma.c
@@ -475,5 +475,5 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1995, asmapro, 0, 0, alphasmart, alphasmart, driver_device, 0, "Intelligent Peripheral Devices", "AlphaSmart Pro" , GAME_NOT_WORKING | GAME_NO_SOUND )
-COMP( 1997, asma2k , 0, 0, asma2k , alphasmart, driver_device, 0, "Intelligent Peripheral Devices", "AlphaSmart 2000", GAME_NOT_WORKING | GAME_NO_SOUND )
+COMP( 1995, asmapro, 0, 0, alphasmart, alphasmart, driver_device, 0, "Intelligent Peripheral Devices", "AlphaSmart Pro" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1997, asma2k , 0, 0, asma2k , alphasmart, driver_device, 0, "Intelligent Peripheral Devices", "AlphaSmart 2000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/alphatro.c b/src/mame/drivers/alphatro.c
index 355ad41a8d8..f13841c8dc8 100644
--- a/src/mess/drivers/alphatro.c
+++ b/src/mame/drivers/alphatro.c
@@ -514,4 +514,4 @@ ROM_START( alphatro )
ROM_LOAD( "2732.ic-1067", 0x0000, 0x1000, CRC(61f38814) SHA1(35ba31c58a10d5bd1bdb202717792ca021dbe1a8) )
ROM_END
-COMP( 1983, alphatro, 0, 0, alphatro, alphatro, driver_device, 0, "Triumph-Adler", "Alphatronic PC", GAME_NOT_WORKING )
+COMP( 1983, alphatro, 0, 0, alphatro, alphatro, driver_device, 0, "Triumph-Adler", "Alphatronic PC", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/altair.c b/src/mame/drivers/altair.c
index af578f2d56f..e324a807478 100644
--- a/src/mess/drivers/altair.c
+++ b/src/mame/drivers/altair.c
@@ -129,4 +129,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1975, al8800bt, 0, 0, altair, altair, driver_device, 0, "MITS", "Altair 8800bt", GAME_NOT_WORKING | GAME_NO_SOUND_HW)
+COMP( 1975, al8800bt, 0, 0, altair, altair, driver_device, 0, "MITS", "Altair 8800bt", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
diff --git a/src/mess/drivers/alto2.c b/src/mame/drivers/alto2.c
index 00d570320c9..c2142b0c304 100644
--- a/src/mess/drivers/alto2.c
+++ b/src/mame/drivers/alto2.c
@@ -300,4 +300,4 @@ DRIVER_INIT_MEMBER( alto2_state, alto2 )
/* Game Drivers */
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1977, alto2, 0, 0, alto2, alto2, alto2_state, alto2, "Xerox", "Alto-II", GAME_NO_SOUND )
+COMP( 1977, alto2, 0, 0, alto2, alto2, alto2_state, alto2, "Xerox", "Alto-II", MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/altos5.c b/src/mame/drivers/altos5.c
index db9876fc1d0..24136a110d7 100644
--- a/src/mess/drivers/altos5.c
+++ b/src/mame/drivers/altos5.c
@@ -434,7 +434,9 @@ static MACHINE_CONFIG_START( altos5, altos5_state )
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(altos5_state, fdc_intrq_w))
MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("z80dma", z80dma_device, rdy_w))
MCFG_FLOPPY_DRIVE_ADD("fdc:0", altos5_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", altos5_floppies, "525qd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_SOFTWARE_LIST_ADD("flop_list", "altos5")
MACHINE_CONFIG_END
@@ -452,4 +454,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP(1982, altos5, 0, 0, altos5, altos5, altos5_state, altos5, "Altos", "Altos 5-15", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP(1982, altos5, 0, 0, altos5, altos5, altos5_state, altos5, "Altos", "Altos 5-15", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/alvg.c b/src/mame/drivers/alvg.c
index 2ebf4a96395..4b851177f04 100644
--- a/src/mame/drivers/alvg.c
+++ b/src/mame/drivers/alvg.c
@@ -274,12 +274,12 @@ ROM_START(usafootb)
ROM_END
-GAME(1991, agsoccer, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "A.G. Soccer Ball", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, wrldtour, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Al's Garage Band Goes On A World Tour", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, wrldtour2, wrldtour, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Al's Garage Band Goes On A World Tour R02b", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, usafootb, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "U.S.A. Football", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, mystcast, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Mystery Castle", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, mystcasta, mystcast, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Mystery Castle (alternate set)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, pstlpkr, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Pistol Poker", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, punchy, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Punchy The Clown", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, dinoeggs, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Dinosaur Eggs", GAME_IS_SKELETON_MECHANICAL)
+GAME(1991, agsoccer, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "A.G. Soccer Ball", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, wrldtour, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Al's Garage Band Goes On A World Tour", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, wrldtour2, wrldtour, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Al's Garage Band Goes On A World Tour R02b", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, usafootb, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "U.S.A. Football", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, mystcast, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Mystery Castle", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, mystcasta, mystcast, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Mystery Castle (alternate set)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, pstlpkr, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Pistol Poker", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, punchy, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Punchy The Clown", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, dinoeggs, 0, alvg, alvg, alvg_state, alvg, ROT0, "Alvin G", "Dinosaur Eggs", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/amaticmg.c b/src/mame/drivers/amaticmg.c
index 6fda811d370..673491c65c5 100644
--- a/src/mame/drivers/amaticmg.c
+++ b/src/mame/drivers/amaticmg.c
@@ -1082,11 +1082,11 @@ DRIVER_INIT_MEMBER(amaticmg_state,ama8000_3_o)
************************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
-GAMEL( 1996, suprstar, 0, amaticmg, amaticmg, amaticmg_state, ama8000_1_x, ROT90, "Amatic Trading GmbH", "Super Stars", GAME_IMPERFECT_SOUND, layout_suprstar )
-GAME( 2000, am_mg24, 0, amaticmg2, amaticmg, amaticmg_state, ama8000_2_i, ROT0, "Amatic Trading GmbH", "Multi Game I (V.Ger 2.4)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 2000, am_mg3, 0, amaticmg2, amaticmg, amaticmg_state, ama8000_2_i, ROT0, "Amatic Trading GmbH", "Multi Game III (V.Ger 3.5)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 2000, am_mg3a, 0, amaticmg2, amaticmg, amaticmg_state, ama8000_2_v, ROT0, "Amatic Trading GmbH", "Multi Game III (V.Ger 3.64)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 2000, am_mg35i, 0, amaticmg2, amaticmg, amaticmg_state, ama8000_3_o, ROT0, "Amatic Trading GmbH", "Multi Game III (S.Ita 3.5)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 2000, am_mg34i, am_mg35i, amaticmg2, amaticmg, amaticmg_state, ama8000_3_o, ROT0, "Amatic Trading GmbH", "Multi Game III (S.Ita 3.4)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 2000, am_mg33i, am_mg35i, amaticmg2, amaticmg, amaticmg_state, ama8000_3_o, ROT0, "Amatic Trading GmbH", "Multi Game III (S.Ita 3.3)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 2000, am_mg31i, am_mg35i, amaticmg2, amaticmg, amaticmg_state, ama8000_3_o, ROT0, "Amatic Trading GmbH", "Multi Game III (S.Ita 3.1)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_NOT_WORKING )
+GAMEL( 1996, suprstar, 0, amaticmg, amaticmg, amaticmg_state, ama8000_1_x, ROT90, "Amatic Trading GmbH", "Super Stars", MACHINE_IMPERFECT_SOUND, layout_suprstar )
+GAME( 2000, am_mg24, 0, amaticmg2, amaticmg, amaticmg_state, ama8000_2_i, ROT0, "Amatic Trading GmbH", "Multi Game I (V.Ger 2.4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 2000, am_mg3, 0, amaticmg2, amaticmg, amaticmg_state, ama8000_2_i, ROT0, "Amatic Trading GmbH", "Multi Game III (V.Ger 3.5)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 2000, am_mg3a, 0, amaticmg2, amaticmg, amaticmg_state, ama8000_2_v, ROT0, "Amatic Trading GmbH", "Multi Game III (V.Ger 3.64)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 2000, am_mg35i, 0, amaticmg2, amaticmg, amaticmg_state, ama8000_3_o, ROT0, "Amatic Trading GmbH", "Multi Game III (S.Ita 3.5)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 2000, am_mg34i, am_mg35i, amaticmg2, amaticmg, amaticmg_state, ama8000_3_o, ROT0, "Amatic Trading GmbH", "Multi Game III (S.Ita 3.4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 2000, am_mg33i, am_mg35i, amaticmg2, amaticmg, amaticmg_state, ama8000_3_o, ROT0, "Amatic Trading GmbH", "Multi Game III (S.Ita 3.3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 2000, am_mg31i, am_mg35i, amaticmg2, amaticmg, amaticmg_state, ama8000_3_o, ROT0, "Amatic Trading GmbH", "Multi Game III (S.Ita 3.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/ambush.c b/src/mame/drivers/ambush.c
index 0e3e4a8ab33..b4d9479edaa 100644
--- a/src/mame/drivers/ambush.c
+++ b/src/mame/drivers/ambush.c
@@ -333,7 +333,7 @@ ROM_END
*
*************************************/
-GAME( 1983, ambush, 0, ambush, ambusht, driver_device, 0, ROT0, "Tecfri", "Ambush", GAME_SUPPORTS_SAVE )
-GAME( 1983, ambushh, ambush, ambush, ambusht, driver_device, 0, ROT0, "Tecfri", "Ambush (hack?)", GAME_SUPPORTS_SAVE )
-GAME( 1983, ambushj, ambush, ambush, ambush, driver_device, 0, ROT0, "Tecfri (Nippon Amuse license)", "Ambush (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1983, ambushv, ambush, ambush, ambush, driver_device, 0, ROT0, "Tecfri (Volt Electronics license)", "Ambush (Volt Electronics)", GAME_SUPPORTS_SAVE )
+GAME( 1983, ambush, 0, ambush, ambusht, driver_device, 0, ROT0, "Tecfri", "Ambush", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ambushh, ambush, ambush, ambusht, driver_device, 0, ROT0, "Tecfri", "Ambush (hack?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ambushj, ambush, ambush, ambush, driver_device, 0, ROT0, "Tecfri (Nippon Amuse license)", "Ambush (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ambushv, ambush, ambush, ambush, driver_device, 0, ROT0, "Tecfri (Volt Electronics license)", "Ambush (Volt Electronics)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/amico2k.c b/src/mame/drivers/amico2k.c
index a903c188232..4a1c9667c51 100644
--- a/src/mess/drivers/amico2k.c
+++ b/src/mame/drivers/amico2k.c
@@ -238,4 +238,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1978, amico2k, 0, 0, amico2k, amico2k, driver_device, 0, "A.S.E.L.", "Amico 2000", GAME_NO_SOUND_HW)
+COMP( 1978, amico2k, 0, 0, amico2k, amico2k, driver_device, 0, "A.S.E.L.", "Amico 2000", MACHINE_NO_SOUND_HW)
diff --git a/src/mess/drivers/amiga.c b/src/mame/drivers/amiga.c
index 48403a7fff6..d464a27591e 100644
--- a/src/mess/drivers/amiga.c
+++ b/src/mame/drivers/amiga.c
@@ -2114,31 +2114,31 @@ ROM_END
//**************************************************************************
// OCS Chipset
-COMP( 1985, a1000, 0, 0, a1000, amiga, a1000_state, pal, "Commodore", "Amiga 1000 (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1985, a1000n, a1000, 0, a1000n, amiga, a1000_state, ntsc, "Commodore", "Amiga 1000 (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1987, a2000, 0, 0, a2000, amiga, a2000_state, pal, "Commodore", "Amiga 2000 (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1987, a2000n, a2000, 0, a2000n, amiga, a2000_state, ntsc, "Commodore", "Amiga 2000 (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1987, a500, 0, 0, a500, amiga, a500_state, pal, "Commodore", "Amiga 500 (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1987, a500n, a500, 0, a500n, amiga, a500_state, ntsc, "Commodore", "Amiga 500 (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1990, cdtv, 0, 0, cdtv, amiga, cdtv_state, pal, "Commodore", "CDTV (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1990, cdtvn, cdtv, 0, cdtvn, amiga, cdtv_state, ntsc, "Commodore", "CDTV (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
+COMP( 1985, a1000, 0, 0, a1000, amiga, a1000_state, pal, "Commodore", "Amiga 1000 (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1985, a1000n, a1000, 0, a1000n, amiga, a1000_state, ntsc, "Commodore", "Amiga 1000 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1987, a2000, 0, 0, a2000, amiga, a2000_state, pal, "Commodore", "Amiga 2000 (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1987, a2000n, a2000, 0, a2000n, amiga, a2000_state, ntsc, "Commodore", "Amiga 2000 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1987, a500, 0, 0, a500, amiga, a500_state, pal, "Commodore", "Amiga 500 (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1987, a500n, a500, 0, a500n, amiga, a500_state, ntsc, "Commodore", "Amiga 500 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1990, cdtv, 0, 0, cdtv, amiga, cdtv_state, pal, "Commodore", "CDTV (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1990, cdtvn, cdtv, 0, cdtvn, amiga, cdtv_state, ntsc, "Commodore", "CDTV (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
// ECS Chipset
-COMP( 1990, a3000, 0, 0, a3000, amiga, a3000_state, pal, "Commodore", "Amiga 3000 (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1990, a3000n, a3000, 0, a3000n, amiga, a3000_state, ntsc, "Commodore", "Amiga 3000 (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1992, a500p, 0, 0, a500p, amiga, a500p_state, pal, "Commodore", "Amiga 500 Plus (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1992, a500pn, a500p, 0, a500pn, amiga, a500p_state, ntsc, "Commodore", "Amiga 500 Plus (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1992, a600, 0, 0, a600, amiga, a600_state, pal, "Commodore", "Amiga 600 (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1992, a600n, a600, 0, a600n, amiga, a600_state, ntsc, "Commodore", "Amiga 600 (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
+COMP( 1990, a3000, 0, 0, a3000, amiga, a3000_state, pal, "Commodore", "Amiga 3000 (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1990, a3000n, a3000, 0, a3000n, amiga, a3000_state, ntsc, "Commodore", "Amiga 3000 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1992, a500p, 0, 0, a500p, amiga, a500p_state, pal, "Commodore", "Amiga 500 Plus (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1992, a500pn, a500p, 0, a500pn, amiga, a500p_state, ntsc, "Commodore", "Amiga 500 Plus (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1992, a600, 0, 0, a600, amiga, a600_state, pal, "Commodore", "Amiga 600 (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1992, a600n, a600, 0, a600n, amiga, a600_state, ntsc, "Commodore", "Amiga 600 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
// AGA Chipset
-COMP( 1992, a1200, 0, 0, a1200, amiga, a1200_state, pal, "Commodore", "Amiga 1200 (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1992, a1200n, a1200, 0, a1200n, amiga, a1200_state, ntsc, "Commodore", "Amiga 1200 (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1992, a4000, 0, 0, a4000, amiga, a4000_state, pal, "Commodore", "Amiga 4000/040 (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1992, a4000n, a4000, 0, a4000n, amiga, a4000_state, ntsc, "Commodore", "Amiga 4000/040 (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1993, a400030, a4000, 0, a400030, amiga, a4000_state, pal, "Commodore", "Amiga 4000/030 (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1993, a400030n, a4000, 0, a400030n, amiga, a4000_state, ntsc, "Commodore", "Amiga 4000/030 (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1993, cd32, 0, 0, cd32, cd32, cd32_state, pal, "Commodore", "Amiga CD32 (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1993, cd32n, cd32, 0, cd32n, cd32, cd32_state, ntsc, "Commodore", "Amiga CD32 (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1994, a4000t, 0, 0, a4000t, amiga, a4000_state, pal, "Commodore", "Amiga 4000T (PAL)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-COMP( 1994, a4000tn, a4000t, 0, a4000tn, amiga, a4000_state, ntsc, "Commodore", "Amiga 4000T (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
+COMP( 1992, a1200, 0, 0, a1200, amiga, a1200_state, pal, "Commodore", "Amiga 1200 (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1992, a1200n, a1200, 0, a1200n, amiga, a1200_state, ntsc, "Commodore", "Amiga 1200 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1992, a4000, 0, 0, a4000, amiga, a4000_state, pal, "Commodore", "Amiga 4000/040 (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1992, a4000n, a4000, 0, a4000n, amiga, a4000_state, ntsc, "Commodore", "Amiga 4000/040 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1993, a400030, a4000, 0, a400030, amiga, a4000_state, pal, "Commodore", "Amiga 4000/030 (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1993, a400030n, a4000, 0, a400030n, amiga, a4000_state, ntsc, "Commodore", "Amiga 4000/030 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1993, cd32, 0, 0, cd32, cd32, cd32_state, pal, "Commodore", "Amiga CD32 (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1993, cd32n, cd32, 0, cd32n, cd32, cd32_state, ntsc, "Commodore", "Amiga CD32 (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1994, a4000t, 0, 0, a4000t, amiga, a4000_state, pal, "Commodore", "Amiga 4000T (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+COMP( 1994, a4000tn, a4000t, 0, a4000tn, amiga, a4000_state, ntsc, "Commodore", "Amiga 4000T (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/ampoker2.c b/src/mame/drivers/ampoker2.c
index d3e9a15071d..3092d7f0101 100644
--- a/src/mame/drivers/ampoker2.c
+++ b/src/mame/drivers/ampoker2.c
@@ -1440,16 +1440,16 @@ DRIVER_INIT_MEMBER(ampoker2_state,piccolop)
*************************/
// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT
-GAMEL( 1990, ampoker2, 0, ampoker2, ampoker2, driver_device, 0, ROT0, "Novomatic", "American Poker II", GAME_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1990, ampkr2b1, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 1)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1990, ampkr2b2, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 2)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1994, ampkr2b3, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 3)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1994, ampkr2b4, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 4)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1994, ampkr228, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg?", "American Poker II (iamp2 v28)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1995, ampkr95, ampoker2, ampoker2, ampkr95, driver_device, 0, ROT0, "bootleg", "American Poker 95", GAME_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1990, pkrdewin, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "Poker De Win", GAME_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1990, videomat, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "Videomat (Polish bootleg)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1990, rabbitpk, ampoker2, ampoker2, ampoker2, ampoker2_state, rabbitpk, ROT0, "bootleg", "Rabbit Poker (Arizona Poker v1.1?)", GAME_SUPPORTS_SAVE, layout_ampoker2 )
-GAMEL( 1995, sigmapkr, 0, ampoker2, sigmapkr, driver_device, 0, ROT0, "Sigma Inc.", "Sigma Poker", GAME_SUPPORTS_SAVE, layout_sigmapkr )
-GAMEL( 1998, sigma2k, 0, sigma2k, sigma2k, driver_device, 0, ROT0, "Sigma Inc.", "Sigma Poker 2000", GAME_SUPPORTS_SAVE, layout_sigmapkr )
-GAME( 1990, piccolop, ampoker2, ampoker2, piccolop, ampoker2_state, piccolop, ROT0, "Admiral/Novomatic", "Piccolo Poker 100", GAME_SUPPORTS_SAVE )
+GAMEL( 1990, ampoker2, 0, ampoker2, ampoker2, driver_device, 0, ROT0, "Novomatic", "American Poker II", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, ampkr2b1, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 1)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, ampkr2b2, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 2)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr2b3, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 3)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr2b4, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "American Poker II (bootleg, set 4)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1994, ampkr228, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg?", "American Poker II (iamp2 v28)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1995, ampkr95, ampoker2, ampoker2, ampkr95, driver_device, 0, ROT0, "bootleg", "American Poker 95", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, pkrdewin, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "Poker De Win", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, videomat, ampoker2, ampoker2, ampoker2, driver_device, 0, ROT0, "bootleg", "Videomat (Polish bootleg)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1990, rabbitpk, ampoker2, ampoker2, ampoker2, ampoker2_state, rabbitpk, ROT0, "bootleg", "Rabbit Poker (Arizona Poker v1.1?)", MACHINE_SUPPORTS_SAVE, layout_ampoker2 )
+GAMEL( 1995, sigmapkr, 0, ampoker2, sigmapkr, driver_device, 0, ROT0, "Sigma Inc.", "Sigma Poker", MACHINE_SUPPORTS_SAVE, layout_sigmapkr )
+GAMEL( 1998, sigma2k, 0, sigma2k, sigma2k, driver_device, 0, ROT0, "Sigma Inc.", "Sigma Poker 2000", MACHINE_SUPPORTS_SAVE, layout_sigmapkr )
+GAME( 1990, piccolop, ampoker2, ampoker2, piccolop, ampoker2_state, piccolop, ROT0, "Admiral/Novomatic", "Piccolo Poker 100", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/ampro.c b/src/mame/drivers/ampro.c
index 8dccc887192..3cd31d47e29 100644
--- a/src/mess/drivers/ampro.c
+++ b/src/mame/drivers/ampro.c
@@ -181,6 +181,7 @@ static MACHINE_CONFIG_START( ampro, ampro_state )
MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc_tick", ampro_state, ctc_tick, attotime::from_hz(XTAL_16MHz / 8))
MCFG_WD1772_ADD("fdc", XTAL_16MHz / 2)
MCFG_FLOPPY_DRIVE_ADD("fdc:0", ampro_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_SOFTWARE_LIST_ADD("flop_list", "ampro")
MACHINE_CONFIG_END
@@ -198,4 +199,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1980, ampro, 0, 0, ampro, ampro, ampro_state, ampro, "Ampro", "Little Z80 Board", GAME_NO_SOUND_HW)
+COMP( 1980, ampro, 0, 0, ampro, ampro, ampro_state, ampro, "Ampro", "Little Z80 Board", MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/amspdwy.c b/src/mame/drivers/amspdwy.c
index 5fa553cf476..9a846b1dc95 100644
--- a/src/mame/drivers/amspdwy.c
+++ b/src/mame/drivers/amspdwy.c
@@ -77,7 +77,7 @@ WRITE8_MEMBER(amspdwy_state::amspdwy_sound_w)
static ADDRESS_MAP_START( amspdwy_map, AS_PROGRAM, 8, amspdwy_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x801f) AM_WRITE(amspdwy_paletteram_w) AM_SHARE("palette")
+ AM_RANGE(0x8000, 0x801f) AM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x9000, 0x93ff) AM_MIRROR(0x0400) AM_RAM_WRITE(amspdwy_videoram_w) AM_SHARE("videoram")
AM_RANGE(0x9800, 0x9bff) AM_RAM_WRITE(amspdwy_colorram_w) AM_SHARE("colorram")
AM_RANGE(0x9c00, 0x9fff) AM_RAM // unused?
@@ -272,7 +272,7 @@ static MACHINE_CONFIG_START( amspdwy, amspdwy_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", amspdwy)
MCFG_PALETTE_ADD("palette", 32)
- MCFG_PALETTE_FORMAT(BBGGGRRR)
+ MCFG_PALETTE_FORMAT(BBGGGRRR_inverted)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -379,5 +379,5 @@ ROM_END
/* (C) 1987 ETI 8402 MAGNOLIA ST. #C SANTEE, CA 92071 */
-GAME( 1987, amspdwy, 0, amspdwy, amspdwy, driver_device, 0, ROT0, "Enerdyne Technologies Inc.", "American Speedway (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, amspdwya, amspdwy, amspdwy, amspdwya, driver_device, 0, ROT0, "Enerdyne Technologies Inc.", "American Speedway (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1987, amspdwy, 0, amspdwy, amspdwy, driver_device, 0, ROT0, "Enerdyne Technologies Inc.", "American Speedway (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, amspdwya, amspdwy, amspdwy, amspdwya, driver_device, 0, ROT0, "Enerdyne Technologies Inc.", "American Speedway (set 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/amstr_pc.c b/src/mame/drivers/amstr_pc.c
index d825cc30a95..8ba877cd182 100644
--- a/src/mess/drivers/amstr_pc.c
+++ b/src/mame/drivers/amstr_pc.c
@@ -651,9 +651,9 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1987, ppc512, ibm5150, 0, ppc512, pc200, driver_device, 0, "Amstrad plc", "Amstrad PPC512", GAME_NOT_WORKING)
-COMP( 1987, ppc640, ibm5150, 0, ppc640, pc200, driver_device, 0, "Amstrad plc", "Amstrad PPC640", GAME_NOT_WORKING)
-COMP( 1988, pc20, ibm5150, 0, pc200, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC20" , GAME_NOT_WORKING)
-COMP( 1988, pc200, ibm5150, 0, pc200, pc200, driver_device, 0, "Sinclair Research Ltd", "PC200 Professional Series", GAME_NOT_WORKING)
-COMP( 1988, pc2086, ibm5150, 0, pc200, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC2086", GAME_NOT_WORKING )
-COMP( 1990, pc3086, ibm5150, 0, pc200, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC3086", GAME_NOT_WORKING )
+COMP( 1987, ppc512, ibm5150, 0, ppc512, pc200, driver_device, 0, "Amstrad plc", "Amstrad PPC512", MACHINE_NOT_WORKING)
+COMP( 1987, ppc640, ibm5150, 0, ppc640, pc200, driver_device, 0, "Amstrad plc", "Amstrad PPC640", MACHINE_NOT_WORKING)
+COMP( 1988, pc20, ibm5150, 0, pc200, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC20" , MACHINE_NOT_WORKING)
+COMP( 1988, pc200, ibm5150, 0, pc200, pc200, driver_device, 0, "Sinclair Research Ltd", "PC200 Professional Series", MACHINE_NOT_WORKING)
+COMP( 1988, pc2086, ibm5150, 0, pc200, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC2086", MACHINE_NOT_WORKING )
+COMP( 1990, pc3086, ibm5150, 0, pc200, pc200, driver_device, 0, "Amstrad plc", "Amstrad PC3086", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/amstrad.c b/src/mame/drivers/amstrad.c
index e38f820c85b..8e88e135151 100644
--- a/src/mess/drivers/amstrad.c
+++ b/src/mame/drivers/amstrad.c
@@ -106,11 +106,10 @@ Some bugs left :
#include "imagedev/snapquik.h"
#include "imagedev/cassette.h"
#include "formats/tzx_cas.h"
+#include "formats/msx_dsk.h"
#include "machine/ram.h"
-
-
#define MANUFACTURER_NAME 0x07
#define TV_REFRESH_RATE 0x10
@@ -784,9 +783,13 @@ static SLOT_INTERFACE_START( amstrad_floppies )
SLOT_INTERFACE_END
static SLOT_INTERFACE_START( aleste_floppies )
- SLOT_INTERFACE( "525hd", FLOPPY_525_HD )
+ SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
SLOT_INTERFACE_END
+FLOPPY_FORMATS_MEMBER( amstrad_state::aleste_floppy_formats )
+ FLOPPY_MSX_FORMAT
+FLOPPY_FORMATS_END
+
static MACHINE_CONFIG_FRAGMENT( cpcplus_cartslot )
MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "gx4000_cart")
MCFG_GENERIC_EXTENSIONS("bin,cpr")
@@ -843,6 +846,23 @@ SLOT_INTERFACE_START(cpcplus_exp_cards)
SLOT_INTERFACE("hd20", CPC_HD20)
SLOT_INTERFACE_END
+SLOT_INTERFACE_START(aleste_exp_cards)
+ SLOT_INTERFACE("ssa1", CPC_SSA1)
+ SLOT_INTERFACE("dkspeech", CPC_DKSPEECH)
+ SLOT_INTERFACE("rom", CPC_ROM)
+ SLOT_INTERFACE("multiface2", CPC_MFACE2)
+ SLOT_INTERFACE("pds", CPC_PDS)
+ SLOT_INTERFACE("rs232", CPC_RS232)
+ SLOT_INTERFACE("amsrs232", CPC_RS232_AMS)
+ SLOT_INTERFACE("sf2", CPC_SYMBIFACE2)
+ SLOT_INTERFACE("amdrum", CPC_AMDRUM)
+ SLOT_INTERFACE("playcity", CPC_PLAYCITY)
+ SLOT_INTERFACE("smartwatch", CPC_SMARTWATCH)
+ SLOT_INTERFACE("brunword4", CPC_BRUNWORD_MK4)
+ SLOT_INTERFACE("hd20", CPC_HD20)
+ SLOT_INTERFACE("magicsound", AL_MAGICSOUND)
+SLOT_INTERFACE_END
+
SLOT_INTERFACE_START(amstrad_centronics_devices)
SLOT_INTERFACE("pl80", COMX_PL80)
SLOT_INTERFACE("ex800", EPSON_EX800)
@@ -1125,8 +1145,16 @@ static MACHINE_CONFIG_DERIVED( aleste, cpc6128 )
MCFG_DEVICE_REMOVE("upd765")
MCFG_I8272A_ADD("upd765", true)
- MCFG_FLOPPY_DRIVE_ADD("upd765:0", aleste_floppies, "525hd", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("upd765:1", aleste_floppies, "525hd", floppy_image_device::default_floppy_formats)
+ MCFG_DEVICE_REMOVE("exp")
+ MCFG_DEVICE_ADD("exp", CPC_EXPANSION_SLOT, 0)
+ MCFG_DEVICE_SLOT_INTERFACE(aleste_exp_cards, NULL, false)
+ MCFG_CPC_EXPANSION_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0))
+ MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI))
+ MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(WRITELINE(amstrad_state, cpc_romdis)) // ROMDIS
+ MCFG_CPC_EXPANSION_SLOT_ROM_SELECT(WRITE8(amstrad_state,rom_select))
+
+ MCFG_FLOPPY_DRIVE_ADD("upd765:0", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("upd765:1", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats)
MCFG_DEVICE_REMOVE("flop_list")
MCFG_SOFTWARE_LIST_ADD("flop_list", "aleste")
@@ -1256,4 +1284,4 @@ COMP( 1990, cpc464p, 0, 0, cpcplus, plus, driver_device,
COMP( 1990, cpc6128p, 0, 0, cpcplus, plus, driver_device, 0, "Amstrad plc", "Amstrad CPC6128+", 0 )
CONS( 1990, gx4000, 0, 0, gx4000, gx4000, driver_device, 0, "Amstrad plc", "Amstrad GX4000", 0 )
COMP( 1989, kccomp, cpc464, 0, kccomp, kccomp, driver_device, 0, "VEB Mikroelektronik", "KC Compact", 0 )
-COMP( 1993, al520ex, cpc464, 0, aleste, aleste, driver_device, 0, "Patisonic", "Aleste 520EX", GAME_IMPERFECT_SOUND )
+COMP( 1993, al520ex, cpc464, 0, aleste, aleste, driver_device, 0, "Patisonic", "Aleste 520EX", MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/amusco.c b/src/mame/drivers/amusco.c
index aa9b04d5000..1cd32549340 100644
--- a/src/mame/drivers/amusco.c
+++ b/src/mame/drivers/amusco.c
@@ -97,7 +97,6 @@ public:
DECLARE_WRITE16_MEMBER(amusco_videoram_w);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
virtual void video_start();
- DECLARE_PALETTE_INIT(amusco);
DECLARE_READ8_MEMBER(mc6845_r);
DECLARE_WRITE8_MEMBER(mc6845_w);
DECLARE_WRITE16_MEMBER(vram_w);
@@ -113,7 +112,6 @@ public:
INTERRUPT_GEN_MEMBER(amusco_timer_irq);
UINT16 m_mc6845_address;
UINT16 m_video_update_address;
- DECLARE_PALETTE_INIT(amusco_palette_init);
};
@@ -125,18 +123,6 @@ WRITE16_MEMBER(amusco_state::amusco_videoram_w)
{
}
-PALETTE_INIT_MEMBER(amusco_state, amusco_palette_init)
-{
- int i;
-
- for (i = 0; i < 8; i++)
- {
- palette.set_pen_color(i, pal1bit(i >> 2), pal1bit(i >> 0), pal1bit(i >> 1));
- }
-}
-
-
-
TILE_GET_INFO_MEMBER(amusco_state::get_bg_tile_info)
{
/* - bits -
@@ -166,10 +152,6 @@ UINT32 amusco_state::screen_update_amusco(screen_device &screen, bitmap_ind16 &b
return 0;
}
-PALETTE_INIT_MEMBER(amusco_state, amusco)
-{
-}
-
/**************************
* Read / Write Handlers *
@@ -528,8 +510,7 @@ static MACHINE_CONFIG_START( amusco, amusco_state )
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", amusco)
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(amusco_state, amusco_palette_init)
+ MCFG_PALETTE_ADD_3BIT_GBR("palette")
MCFG_MC6845_ADD("crtc", R6545_1, "screen", CRTC_CLOCK) /* guess */
MCFG_MC6845_SHOW_BORDER_AREA(false)
@@ -540,7 +521,6 @@ static MACHINE_CONFIG_START( amusco, amusco_state )
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("sn", SN76489, SND_CLOCK)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
-
MACHINE_CONFIG_END
@@ -573,4 +553,4 @@ ROM_END
*************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1987, amusco, 0, amusco, amusco, driver_device, 0, ROT0, "Amusco", "American Music Poker (V1.4)", GAME_NOT_WORKING )
+GAME( 1987, amusco, 0, amusco, amusco, driver_device, 0, ROT0, "Amusco", "American Music Poker (V1.4)", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/amust.c b/src/mame/drivers/amust.c
index fe471686a14..1fee6824934 100644
--- a/src/mess/drivers/amust.c
+++ b/src/mame/drivers/amust.c
@@ -54,7 +54,7 @@ Stuff that doesn't make sense:
------------------------------
1. To access the screen, it waits for IRQ presumably from sync pulse. It sets INT
mode 0 which means a page-zero jump, but doesn't write anything to the zero-page ram.
-That's why I added a RETI at 0008 and set the vector to there. A bit later it writes
+That's why I added a RETI at 0038 and set the vector to there. A bit later it writes
a jump at 0000. Then it sets the interrupting device to the fdc (not sure how yet),
then proceeds to overwrite all of page-zero with the disk contents. This of course
kills the jump it just wrote, and my RETI. So it runs into the weeds at high speed.
@@ -192,11 +192,23 @@ static ADDRESS_MAP_START(amust_io, AS_IO, 8, amust_state)
ADDRESS_MAP_END
static SLOT_INTERFACE_START( amust_floppies )
- SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
+ SLOT_INTERFACE( "drive0", FLOPPY_525_QD )
+ SLOT_INTERFACE( "drive1", FLOPPY_525_QD )
SLOT_INTERFACE_END
/* Input ports */
static INPUT_PORTS_START( amust )
+ PORT_START("P9")
+ // bits 6,7 not used?
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // code @ FB83
+ PORT_DIPNAME( 0x10, 0x10, "Boot to Monitor" ) // code @ F895
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0f, 0x01, "Unknown" ) // code @ FC99
+ PORT_DIPSETTING( 0x01, "1" )
+ PORT_DIPSETTING( 0x02, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_DIPSETTING( 0x08, "4" )
INPUT_PORTS_END
READ8_MEMBER( amust_state::port00_r )
@@ -214,7 +226,7 @@ READ8_MEMBER( amust_state::port01_r )
// bodgy
INTERRUPT_GEN_MEMBER( amust_state::irq_vs )
{
- m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0xcf);
+ m_maincpu->set_input_line_and_vector(INPUT_LINE_IRQ0, ASSERT_LINE, 0xff);
}
READ8_MEMBER( amust_state::port04_r )
@@ -267,7 +279,7 @@ d7 -
READ8_MEMBER( amust_state::port09_r )
{
printf("%s\n",machine().describe_context());
- return 0xff;
+ return ioport("P9")->read();
}
READ8_MEMBER( amust_state::port0a_r )
@@ -359,8 +371,8 @@ MACHINE_RESET_MEMBER( amust_state, amust )
membank("bankw0")->set_entry(0); // always write to ram
m_beep->set_frequency(800);
address_space &space = m_maincpu->space(AS_PROGRAM);
- space.write_byte(8, 0xed);
- space.write_byte(9, 0x4d);
+ space.write_byte(0x38, 0xed);
+ space.write_byte(0x39, 0x4d);
m_port04 = 0;
m_port06 = 0;
m_port08 = 0;
@@ -409,8 +421,10 @@ static MACHINE_CONFIG_START( amust, amust_state )
MCFG_DEVICE_ADD("keybd", GENERIC_KEYBOARD, 0)
MCFG_GENERIC_KEYBOARD_CB(WRITE8(amust_state, kbd_put))
MCFG_UPD765A_ADD("fdc", false, true)
- MCFG_FLOPPY_DRIVE_ADD("fdc:0", amust_floppies, "525dd", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("fdc:1", amust_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", amust_floppies, "drive0", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", amust_floppies, "drive1", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
//MCFG_DEVICE_ADD("uart1", I8251, 0)
//MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
@@ -461,4 +475,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1983, amust, 0, 0, amust, amust, amust_state, amust, "Amust", "Amust Executive 816", GAME_NOT_WORKING )
+COMP( 1983, amust, 0, 0, amust, amust, amust_state, amust, "Amust", "Amust Executive 816", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/angelkds.c b/src/mame/drivers/angelkds.c
index 8bd36d7b37c..db73d337800 100644
--- a/src/mame/drivers/angelkds.c
+++ b/src/mame/drivers/angelkds.c
@@ -754,5 +754,5 @@ DRIVER_INIT_MEMBER(angelkds_state,spcpostn)
}
-GAME( 1988, angelkds, 0, angelkds, angelkds, angelkds_state, angelkds, ROT90, "Sega / Nasco?", "Angel Kids (Japan)" , GAME_SUPPORTS_SAVE) /* Nasco not displayed but 'Exa Planning' is */
-GAME( 1986, spcpostn, 0, spcpostn, spcpostn, angelkds_state, spcpostn, ROT90, "Sega / Nasco", "Space Position (Japan)" , GAME_SUPPORTS_SAVE) /* encrypted */
+GAME( 1988, angelkds, 0, angelkds, angelkds, angelkds_state, angelkds, ROT90, "Sega / Nasco?", "Angel Kids (Japan)" , MACHINE_SUPPORTS_SAVE) /* Nasco not displayed but 'Exa Planning' is */
+GAME( 1986, spcpostn, 0, spcpostn, spcpostn, angelkds_state, spcpostn, ROT90, "Sega / Nasco", "Space Position (Japan)" , MACHINE_SUPPORTS_SAVE) /* encrypted */
diff --git a/src/mess/drivers/apc.c b/src/mame/drivers/apc.c
index 82f41811669..78a08b343da 100644
--- a/src/mess/drivers/apc.c
+++ b/src/mame/drivers/apc.c
@@ -144,7 +144,6 @@ public:
DECLARE_WRITE8_MEMBER(apc_dma_write_byte);
DECLARE_DRIVER_INIT(apc);
- DECLARE_PALETTE_INIT(apc);
int m_dack;
UINT8 m_dma_offset[4];
@@ -908,16 +907,6 @@ static SLOT_INTERFACE_START( apc_floppies )
SLOT_INTERFACE( "8", FLOPPY_8_DSDD )
SLOT_INTERFACE_END
-PALETTE_INIT_MEMBER(apc_state,apc)
-{
- int i;
-
- for(i=0;i<8;i++)
- palette.set_pen_color(i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
- for(i=8;i<palette.entries();i++)
- palette.set_pen_color(i, pal1bit(0), pal1bit(0), pal1bit(0));
-}
-
static MACHINE_CONFIG_START( apc, apc_state )
/* basic machine hardware */
@@ -964,6 +953,8 @@ static MACHINE_CONFIG_START( apc, apc_state )
MCFG_SCREEN_SIZE(640, 494)
MCFG_SCREEN_VISIBLE_AREA(0*8, 640-1, 0*8, 494-1)
+ MCFG_PALETTE_ADD_3BIT_BRG("palette")
+
MCFG_GFXDECODE_ADD("gfxdecode", "palette", apc)
MCFG_DEVICE_ADD("upd7220_chr", UPD7220, 3579545) // unk clock
@@ -974,9 +965,6 @@ static MACHINE_CONFIG_START( apc, apc_state )
MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_2_map)
MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(apc_state, hgdc_display_pixels)
- MCFG_PALETTE_ADD("palette", 16)
- MCFG_PALETTE_INIT_OWNER(apc_state,apc)
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD( "upd1771c", UPD1771C, MAIN_CLOCK ) //uPD1771C-006
@@ -1009,4 +997,4 @@ DRIVER_INIT_MEMBER(apc_state,apc)
// ...
}
-COMP( 1982, apc, 0, 0, apc, apc, apc_state, apc, "NEC", "APC", GAME_NOT_WORKING | GAME_NO_SOUND )
+COMP( 1982, apc, 0, 0, apc, apc, apc_state, apc, "NEC", "APC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/apexc.c b/src/mame/drivers/apexc.c
index bc5515274e9..afeeae693bc 100644
--- a/src/mess/drivers/apexc.c
+++ b/src/mame/drivers/apexc.c
@@ -907,5 +907,5 @@ ROM_START(apexc)
ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-//COMP( 1951, apexc53, 0, 0, apexc53, apexc, apexc_state, apexc, "Andrew Donald Booth", "All Purpose Electronic X-ray Computer (as described in 1953)" , GAME_NOT_WORKING | GAME_NO_SOUND_HW)
-COMP( 1955, apexc, 0, 0, apexc, apexc, apexc_state, apexc, "Andrew Donald Booth", "All Purpose Electronic X-ray Computer (as described in 1957)" , GAME_NO_SOUND_HW)
+//COMP( 1951, apexc53, 0, 0, apexc53, apexc, apexc_state, apexc, "Andrew Donald Booth", "All Purpose Electronic X-ray Computer (as described in 1953)" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
+COMP( 1955, apexc, 0, 0, apexc, apexc, apexc_state, apexc, "Andrew Donald Booth", "All Purpose Electronic X-ray Computer (as described in 1957)" , MACHINE_NO_SOUND_HW)
diff --git a/src/mess/drivers/apf.c b/src/mame/drivers/apf.c
index c46b7dd3701..8509777d21b 100644
--- a/src/mess/drivers/apf.c
+++ b/src/mame/drivers/apf.c
@@ -562,7 +562,9 @@ static MACHINE_CONFIG_DERIVED( apfimag, apfm1000 )
MCFG_FD1771_ADD("fdc", 1000000) // guess
MCFG_FLOPPY_DRIVE_ADD("fdc:0", apf_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", apf_floppies, "525dd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_SOFTWARE_LIST_ADD("cass_list", "apfimag_cass")
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/apogee.c b/src/mame/drivers/apogee.c
index c6e6b5897f4..c6e6b5897f4 100644
--- a/src/mess/drivers/apogee.c
+++ b/src/mame/drivers/apogee.c
diff --git a/src/mess/drivers/apollo.c b/src/mame/drivers/apollo.c
index d6ddecf3fd9..1c41ed2c7d9 100644
--- a/src/mess/drivers/apollo.c
+++ b/src/mame/drivers/apollo.c
@@ -1260,7 +1260,7 @@ ROM_END
#define DN_FLAGS 0
#define DSP_FLAGS 0
-//#define DSP_FLAGS GAME_NO_SOUND
+//#define DSP_FLAGS MACHINE_NO_SOUND
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1989, dn3500, 0, 0, dn3500_15i, dn3500, apollo_state, dn3500, "Apollo", "Apollo DN3500", DN_FLAGS )
@@ -1271,6 +1271,6 @@ COMP( 1988, dn3000, dn3500, 0, dn3000_15i, dn3500, apollo_state, dn3000
COMP( 1988, dsp3000, dn3500, 0, dsp3000, dsp3500, apollo_state,dsp3000,"Apollo", "Apollo DSP3000", DSP_FLAGS )
COMP( 1988, dn3000_19i, dn3500, 0, dn3000_19i, dn3500, apollo_state, dn3000, "Apollo", "Apollo DN3000 19\" Monochrome", DN_FLAGS )
-COMP( 1991, dn5500, dn3500, 0, dn5500_15i, dn3500, apollo_state, dn5500, "Apollo", "Apollo DN5500", GAME_NOT_WORKING )
-COMP( 1991, dsp5500, dn3500, 0, dsp5500, dsp3500, apollo_state,dsp5500,"Apollo", "Apollo DSP5500", GAME_NOT_WORKING )
-COMP( 1991, dn5500_19i, dn3500, 0, dn5500_19i, dn3500, apollo_state, dn5500, "Apollo", "Apollo DN5500 19\" Monochrome", GAME_NOT_WORKING )
+COMP( 1991, dn5500, dn3500, 0, dn5500_15i, dn3500, apollo_state, dn5500, "Apollo", "Apollo DN5500", MACHINE_NOT_WORKING )
+COMP( 1991, dsp5500, dn3500, 0, dsp5500, dsp3500, apollo_state,dsp5500,"Apollo", "Apollo DSP5500", MACHINE_NOT_WORKING )
+COMP( 1991, dn5500_19i, dn3500, 0, dn5500_19i, dn3500, apollo_state, dn5500, "Apollo", "Apollo DN5500 19\" Monochrome", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/apple1.c b/src/mame/drivers/apple1.c
index 3f6afe2be77..7af5cf2d8ae 100644
--- a/src/mess/drivers/apple1.c
+++ b/src/mame/drivers/apple1.c
@@ -328,4 +328,4 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1976, apple1, 0, 0, apple1, apple1, apple1_state, apple1, "Apple Computer", "Apple I" , GAME_NO_SOUND )
+COMP( 1976, apple1, 0, 0, apple1, apple1, apple1_state, apple1, "Apple Computer", "Apple I" , MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/apple2.c b/src/mame/drivers/apple2.c
index b6b71ffcdd3..8cf74588ffc 100644
--- a/src/mess/drivers/apple2.c
+++ b/src/mame/drivers/apple2.c
@@ -368,7 +368,7 @@ PALETTE_INIT_MEMBER(napple2_state, apple2)
UINT32 napple2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
// always update the flash timer here so it's smooth regardless of mode switches
- m_video->m_flash = ((machine().time() * 4).seconds & 1) ? true : false;
+ m_video->m_flash = ((machine().time() * 4).seconds() & 1) ? true : false;
if (m_video->m_graphics)
{
@@ -377,7 +377,14 @@ UINT32 napple2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
if (m_video->m_mix)
{
m_video->hgr_update(screen, bitmap, cliprect, 0, 159);
- m_video->text_update_orig(screen, bitmap, cliprect, 160, 191);
+ if (!strcmp(machine().system().name, "ivelultr"))
+ {
+ m_video->text_update_ultr(screen, bitmap, cliprect, 160, 191);
+ }
+ else
+ {
+ m_video->text_update_orig(screen, bitmap, cliprect, 160, 191);
+ }
}
else
{
@@ -389,7 +396,14 @@ UINT32 napple2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
if (m_video->m_mix)
{
m_video->lores_update(screen, bitmap, cliprect, 0, 159);
- m_video->text_update_orig(screen, bitmap, cliprect, 160, 191);
+ if (!strcmp(machine().system().name, "ivelultr"))
+ {
+ m_video->text_update_ultr(screen, bitmap, cliprect, 160, 191);
+ }
+ else
+ {
+ m_video->text_update_orig(screen, bitmap, cliprect, 160, 191);
+ }
}
else
{
@@ -399,7 +413,14 @@ UINT32 napple2_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
}
else
{
- m_video->text_update_orig(screen, bitmap, cliprect, 0, 191);
+ if (!strcmp(machine().system().name, "ivelultr"))
+ {
+ m_video->text_update_ultr(screen, bitmap, cliprect, 0, 191);
+ }
+ else
+ {
+ m_video->text_update_orig(screen, bitmap, cliprect, 0, 191);
+ }
}
return 0;
@@ -722,7 +743,7 @@ UINT8 napple2_state::read_floatingbus()
// machine state switches
//
- Hires = m_video->m_hires ? 1 : 0;
+ Hires = (m_video->m_hires && m_video->m_graphics) ? 1 : 0;
Mixed = m_video->m_mix ? 1 : 0;
Page2 = m_page2 ? 1 : 0;
_80Store = 0;
@@ -1245,10 +1266,7 @@ static MACHINE_CONFIG_START( apple2_common, napple2_state )
MCFG_DEVICE_ADD(A2_VIDEO_TAG, APPLE2_VIDEO, XTAL_14_31818MHz)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(280*2, 262)
- MCFG_SCREEN_VISIBLE_AREA(0, (280*2)-1,0,192-1)
+ MCFG_SCREEN_RAW_PARAMS(1021800*14, (65*7)*2, 0, (40*7)*2, 262, 0, 192)
MCFG_SCREEN_UPDATE_DRIVER(napple2_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
@@ -1430,6 +1448,20 @@ ROM_START(uniap2en)
ROM_LOAD ( "unitron.f0" , 0x3000, 0x1000, CRC(8e047c4a) SHA1(78c57c0e00dfce7fdec9437fe2b4c25def447e5d))
ROM_END
+ROM_START(uniap2ti) /* "Teclado Inteligente" means "smart keyboard" in brazilian portuguese */
+ ROM_REGION(0x1000,"gfx1",0)
+ ROM_LOAD ( "unitron.chr", 0x0000, 0x1000, CRC(7fdd1af6) SHA1(2f4f90d90f2f3a8c1fbea304e1072780fb22e698))
+
+ ROM_REGION(0x4000,"maincpu",0)
+ ROM_LOAD ( "unitron_pt.d0", 0x1000, 0x1000, CRC(311beae6) SHA1(f6379aba9ac982850edc314c93a393844a3349ef))
+ ROM_LOAD ( "unitron.e0" , 0x2000, 0x1000, CRC(0d494efd) SHA1(a2fd1223a3ca0cfee24a6afe66ea3c4c144dd98e))
+ ROM_LOAD ( "unitron.f0" , 0x3000, 0x1000, CRC(8e047c4a) SHA1(78c57c0e00dfce7fdec9437fe2b4c25def447e5d))
+
+ ROM_REGION(0x4000,"keyboard",0)
+ ROM_LOAD ( "unitron_apii+_keyboard.ic3", 0x0800, 0x0800, CRC(edc43205) SHA1(220cc21d86f1ab63a301ae7a9c5ff0f3f6cddb70))
+ROM_END
+
+
/*
J-Plus ROM numbers confirmed by:
http://mirrors.apple2.org.za/Apple%20II%20Documentation%20Project/Computers/Apple%20II/Apple%20II%20j-plus/Photos/Apple%20II%20j-plus%20-%20Motherboard.jpg
@@ -1562,20 +1594,21 @@ ROM_END
#endif
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1977, apple2, 0, 0, apple2, apple2, driver_device, 0, "Apple Computer", "Apple ][", GAME_SUPPORTS_SAVE )
-COMP( 1979, apple2p, apple2, 0, apple2p, apple2p, driver_device, 0, "Apple Computer", "Apple ][+", GAME_SUPPORTS_SAVE )
-COMP( 1980, apple2jp, apple2, 0, apple2p, apple2p, driver_device, 0, "Apple Computer", "Apple ][ J-Plus", GAME_SUPPORTS_SAVE )
-COMP( 198?, elppa, apple2, 0, apple2p, apple2p, driver_device, 0, "Victor do Brasil", "Elppa II+", GAME_SUPPORTS_SAVE )
-COMP( 1982, maxxi, apple2, 0, apple2p, apple2p, driver_device, 0, "Polymax", "Maxxi", GAME_SUPPORTS_SAVE )
-COMP( 1982, prav82, apple2, 0, apple2p, apple2p, driver_device, 0, "Pravetz", "Pravetz 82", GAME_SUPPORTS_SAVE )
-COMP( 1982, ace100, apple2, 0, apple2, apple2p, driver_device, 0, "Franklin Computer", "Franklin Ace 100", GAME_SUPPORTS_SAVE )
-COMP( 1982, uniap2en, apple2, 0, apple2p, apple2p, driver_device, 0, "Unitron Eletrônica", "Unitron AP II (in English)", GAME_SUPPORTS_SAVE )
-COMP( 1982, uniap2pt, apple2, 0, apple2p, apple2p, driver_device, 0, "Unitron Eletrônica", "Unitron AP II (in Brazilian Portuguese)", GAME_SUPPORTS_SAVE )
-COMP( 1983, agat7, apple2, 0, apple2p, apple2p, driver_device, 0, "Agat", "Agat-7", GAME_NOT_WORKING) // disk controller ROM JSRs to $FCA8 which is a delay on apple II, illegal instruction crash here :(
+COMP( 1977, apple2, 0, 0, apple2, apple2, driver_device, 0, "Apple Computer", "Apple ][", MACHINE_SUPPORTS_SAVE )
+COMP( 1979, apple2p, apple2, 0, apple2p, apple2p, driver_device, 0, "Apple Computer", "Apple ][+", MACHINE_SUPPORTS_SAVE )
+COMP( 1980, apple2jp, apple2, 0, apple2p, apple2p, driver_device, 0, "Apple Computer", "Apple ][ J-Plus", MACHINE_SUPPORTS_SAVE )
+COMP( 198?, elppa, apple2, 0, apple2p, apple2p, driver_device, 0, "Victor do Brasil", "Elppa II+", MACHINE_SUPPORTS_SAVE )
+COMP( 1982, maxxi, apple2, 0, apple2p, apple2p, driver_device, 0, "Polymax", "Maxxi", MACHINE_SUPPORTS_SAVE )
+COMP( 1982, prav82, apple2, 0, apple2p, apple2p, driver_device, 0, "Pravetz", "Pravetz 82", MACHINE_SUPPORTS_SAVE )
+COMP( 1982, ace100, apple2, 0, apple2, apple2p, driver_device, 0, "Franklin Computer", "Franklin Ace 100", MACHINE_SUPPORTS_SAVE )
+COMP( 1982, uniap2en, apple2, 0, apple2p, apple2p, driver_device, 0, "Unitron Eletronica", "Unitron AP II (in English)", MACHINE_SUPPORTS_SAVE )
+COMP( 1982, uniap2pt, apple2, 0, apple2p, apple2p, driver_device, 0, "Unitron Eletronica", "Unitron AP II (in Brazilian Portuguese)", MACHINE_SUPPORTS_SAVE )
+COMP( 1984, uniap2ti, apple2, 0, apple2p, apple2p, driver_device, 0, "Unitron Eletronica", "Unitron AP II+ (Teclado Inteligente)", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, agat7, apple2, 0, apple2p, apple2p, driver_device, 0, "Agat", "Agat-7", MACHINE_NOT_WORKING) // disk controller ROM JSRs to $FCA8 which is a delay on apple II, illegal instruction crash here :(
// reverse font direction -\/
-COMP( 1984, ivelultr, apple2, 0, apple2p, apple2p, driver_device, 0, "Ivasim", "Ivel Ultra", GAME_SUPPORTS_SAVE )
-COMP( 1984, agat9, apple2, 0, apple2p, apple2p, driver_device, 0, "Agat", "Agat-9", GAME_NOT_WORKING)
-COMP( 1985, prav8m, apple2, 0, apple2p, apple2p, driver_device, 0, "Pravetz", "Pravetz 8M", GAME_SUPPORTS_SAVE )
-COMP( 1985, space84, apple2, 0, space84, apple2p, driver_device, 0, "ComputerTechnik/IBS", "Space 84", GAME_NOT_WORKING )
-COMP( 1985, am64, apple2, 0, space84, apple2p, driver_device, 0, "ASEM", "AM 64", GAME_SUPPORTS_SAVE )
-//COMP( 19??, laba2p, apple2, 0, laba2p, apple2p, driver_device, 0, "<unknown>", "Lab equipment Apple II Plus clone", GAME_SUPPORTS_SAVE )
+COMP( 1984, ivelultr, apple2, 0, apple2p, apple2p, driver_device, 0, "Ivasim", "Ivel Ultra", MACHINE_SUPPORTS_SAVE )
+COMP( 1984, agat9, apple2, 0, apple2p, apple2p, driver_device, 0, "Agat", "Agat-9", MACHINE_NOT_WORKING)
+COMP( 1985, prav8m, apple2, 0, apple2p, apple2p, driver_device, 0, "Pravetz", "Pravetz 8M", MACHINE_SUPPORTS_SAVE )
+COMP( 1985, space84, apple2, 0, space84, apple2p, driver_device, 0, "ComputerTechnik/IBS", "Space 84", MACHINE_NOT_WORKING )
+COMP( 1985, am64, apple2, 0, space84, apple2p, driver_device, 0, "ASEM", "AM 64", MACHINE_SUPPORTS_SAVE )
+//COMP( 19??, laba2p, apple2, 0, laba2p, apple2p, driver_device, 0, "<unknown>", "Lab equipment Apple II Plus clone", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/apple2e.c b/src/mame/drivers/apple2e.c
index 62b97a5b930..e5eb2193aa8 100644
--- a/src/mess/drivers/apple2e.c
+++ b/src/mame/drivers/apple2e.c
@@ -610,8 +610,11 @@ void apple2e_state::machine_start()
if (m_a2eauxslot)
{
m_auxslotdevice = m_a2eauxslot->get_a2eauxslot_card();
- m_aux_ptr = m_auxslotdevice->get_vram_ptr();
- m_aux_bank_ptr = m_auxslotdevice->get_auxbank_ptr();
+ if (m_auxslotdevice)
+ {
+ m_aux_ptr = m_auxslotdevice->get_vram_ptr();
+ m_aux_bank_ptr = m_auxslotdevice->get_auxbank_ptr();
+ }
}
else // IIc has 128K right on the motherboard
{
@@ -822,7 +825,7 @@ UINT32 apple2e_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap,
}
// always update the flash timer here so it's smooth regardless of mode switches
- m_video->m_flash = ((machine().time() * 4).seconds & 1) ? true : false;
+ m_video->m_flash = ((machine().time() * 4).seconds() & 1) ? true : false;
if (m_video->m_graphics)
{
@@ -2118,7 +2121,7 @@ UINT8 apple2e_state::read_floatingbus()
// machine state switches
//
- Hires = m_video->m_hires ? 1 : 0;
+ Hires = (m_video->m_hires && m_video->m_graphics) ? 1 : 0;
Mixed = m_video->m_mix ? 1 : 0;
Page2 = m_page2 ? 1 : 0;
_80Store = m_80store ? 1 : 0;
@@ -3034,10 +3037,7 @@ static MACHINE_CONFIG_START( apple2e, apple2e_state )
MCFG_DEVICE_ADD(A2_VIDEO_TAG, APPLE2_VIDEO, XTAL_14_31818MHz)
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(280*2, 262)
- MCFG_SCREEN_VISIBLE_AREA(0, (280*2)-1,0,192-1)
+ MCFG_SCREEN_RAW_PARAMS(1021800*14, (65*7)*2, 0, (40*7)*2, 262, 0, 192)
MCFG_SCREEN_UPDATE_DRIVER(apple2e_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
@@ -3564,19 +3564,19 @@ ROM_START(apple2cp)
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1983, apple2e, 0, apple2, apple2e, apple2e, driver_device, 0, "Apple Computer", "Apple //e", GAME_SUPPORTS_SAVE )
-COMP( 1983, apple2euk,apple2e, 0, apple2e, apple2euk,driver_device, 0, "Apple Computer", "Apple //e (UK)", GAME_SUPPORTS_SAVE )
-COMP( 1983, mprof3, apple2e, 0, mprof3, apple2e, driver_device, 0, "Multitech", "Microprofessor III", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-COMP( 1985, apple2ee, apple2e, 0, apple2ee, apple2e, driver_device, 0, "Apple Computer", "Apple //e (enhanced)", GAME_SUPPORTS_SAVE )
-COMP( 1985, apple2eeuk,apple2e, 0, apple2ee, apple2euk, driver_device,0, "Apple Computer", "Apple //e (enhanced, UK)", GAME_SUPPORTS_SAVE )
-COMP( 1987, apple2ep, apple2e, 0, apple2ep, apple2ep, driver_device, 0, "Apple Computer", "Apple //e (Platinum)", GAME_SUPPORTS_SAVE )
-COMP( 1984, apple2c, 0, apple2, apple2c, apple2c, driver_device, 0, "Apple Computer", "Apple //c" , GAME_SUPPORTS_SAVE )
-COMP( 1986, tk3000, apple2c, 0, tk3000, apple2e, driver_device, 0, "Microdigital", "TK3000//e" , GAME_SUPPORTS_SAVE )
-COMP( 1989, prav8c, apple2e, 0, apple2e, apple2e, driver_device, 0, "Pravetz", "Pravetz 8C", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-COMP( 1987, laser128, apple2c, 0, laser128, apple2e, driver_device, 0, "Video Technology", "Laser 128 (version 4.2)", GAME_SUPPORTS_SAVE )
-COMP( 1988, las128ex, apple2c, 0, laser128, apple2e, driver_device, 0, "Video Technology", "Laser 128ex (version 4.5)", GAME_SUPPORTS_SAVE )
-COMP( 1988, las128e2, apple2c, 0, laser128ex2, apple2e, driver_device, 0, "Video Technology", "Laser 128ex2 (version 6.1)", GAME_SUPPORTS_SAVE )
-COMP( 1985, apple2c0, apple2c, 0, apple2c_iwm, apple2c, driver_device, 0, "Apple Computer", "Apple //c (UniDisk 3.5)", GAME_SUPPORTS_SAVE )
-COMP( 1986, apple2c3, apple2c, 0, apple2c_mem, apple2c, driver_device, 0, "Apple Computer", "Apple //c (Original Memory Expansion)", GAME_SUPPORTS_SAVE )
-COMP( 1986, apple2c4, apple2c, 0, apple2c_mem, apple2c, driver_device, 0, "Apple Computer", "Apple //c (rev 4)", GAME_SUPPORTS_SAVE )
-COMP( 1988, apple2cp, apple2c, 0, apple2cp, apple2c, driver_device, 0, "Apple Computer", "Apple //c Plus", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+COMP( 1983, apple2e, 0, apple2, apple2e, apple2e, driver_device, 0, "Apple Computer", "Apple //e", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, apple2euk,apple2e, 0, apple2e, apple2euk,driver_device, 0, "Apple Computer", "Apple //e (UK)", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, mprof3, apple2e, 0, mprof3, apple2e, driver_device, 0, "Multitech", "Microprofessor III", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+COMP( 1985, apple2ee, apple2e, 0, apple2ee, apple2e, driver_device, 0, "Apple Computer", "Apple //e (enhanced)", MACHINE_SUPPORTS_SAVE )
+COMP( 1985, apple2eeuk,apple2e, 0, apple2ee, apple2euk, driver_device,0, "Apple Computer", "Apple //e (enhanced, UK)", MACHINE_SUPPORTS_SAVE )
+COMP( 1987, apple2ep, apple2e, 0, apple2ep, apple2ep, driver_device, 0, "Apple Computer", "Apple //e (Platinum)", MACHINE_SUPPORTS_SAVE )
+COMP( 1984, apple2c, 0, apple2, apple2c, apple2c, driver_device, 0, "Apple Computer", "Apple //c" , MACHINE_SUPPORTS_SAVE )
+COMP( 1986, tk3000, apple2c, 0, tk3000, apple2e, driver_device, 0, "Microdigital", "TK3000//e" , MACHINE_SUPPORTS_SAVE )
+COMP( 1989, prav8c, apple2e, 0, apple2e, apple2e, driver_device, 0, "Pravetz", "Pravetz 8C", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+COMP( 1987, laser128, apple2c, 0, laser128, apple2e, driver_device, 0, "Video Technology", "Laser 128 (version 4.2)", MACHINE_SUPPORTS_SAVE )
+COMP( 1988, las128ex, apple2c, 0, laser128, apple2e, driver_device, 0, "Video Technology", "Laser 128ex (version 4.5)", MACHINE_SUPPORTS_SAVE )
+COMP( 1988, las128e2, apple2c, 0, laser128ex2, apple2e, driver_device, 0, "Video Technology", "Laser 128ex2 (version 6.1)", MACHINE_SUPPORTS_SAVE )
+COMP( 1985, apple2c0, apple2c, 0, apple2c_iwm, apple2c, driver_device, 0, "Apple Computer", "Apple //c (UniDisk 3.5)", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, apple2c3, apple2c, 0, apple2c_mem, apple2c, driver_device, 0, "Apple Computer", "Apple //c (Original Memory Expansion)", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, apple2c4, apple2c, 0, apple2c_mem, apple2c, driver_device, 0, "Apple Computer", "Apple //c (rev 4)", MACHINE_SUPPORTS_SAVE )
+COMP( 1988, apple2cp, apple2c, 0, apple2cp, apple2c, driver_device, 0, "Apple Computer", "Apple //c Plus", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/apple2gs.c b/src/mame/drivers/apple2gs.c
index 707e8f434ef..54c4674f9df 100644
--- a/src/mess/drivers/apple2gs.c
+++ b/src/mame/drivers/apple2gs.c
@@ -588,10 +588,10 @@ ROM_START(apple2gsr0p2) // 3/10/1986 Cortland prototype, boots as "Apple //'ing
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1989, apple2gs, 0, apple2, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03)", GAME_SUPPORTS_SAVE )
-COMP( 198?, apple2gsr3p, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 prototype)", GAME_NOT_WORKING )
-COMP( 1989, apple2gsr3lp, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 late prototype?)", GAME_NOT_WORKING )
-COMP( 1987, apple2gsr1, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM01)", GAME_SUPPORTS_SAVE )
-COMP( 1986, apple2gsr0, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00)", GAME_SUPPORTS_SAVE )
-COMP( 1986, apple2gsr0p,apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 6/19/1986)", GAME_SUPPORTS_SAVE )
-COMP( 1986, apple2gsr0p2,apple2gs,0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 3/10/1986)", GAME_SUPPORTS_SAVE )
+COMP( 1989, apple2gs, 0, apple2, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03)", MACHINE_SUPPORTS_SAVE )
+COMP( 198?, apple2gsr3p, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 prototype)", MACHINE_NOT_WORKING )
+COMP( 1989, apple2gsr3lp, apple2gs, 0, apple2gs, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM03 late prototype?)", MACHINE_NOT_WORKING )
+COMP( 1987, apple2gsr1, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM01)", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, apple2gsr0, apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00)", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, apple2gsr0p,apple2gs, 0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 6/19/1986)", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, apple2gsr0p2,apple2gs,0, apple2gsr1, apple2gs, driver_device, 0, "Apple Computer", "Apple IIgs (ROM00 prototype 3/10/1986)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/apple3.c b/src/mame/drivers/apple3.c
index 0352e1f1c10..22c27441640 100644
--- a/src/mess/drivers/apple3.c
+++ b/src/mame/drivers/apple3.c
@@ -346,4 +346,4 @@ ROM_START(apple3)
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1980, apple3, 0, 0, apple3, apple3, apple3_state, apple3, "Apple Computer", "Apple ///", GAME_SUPPORTS_SAVE )
+COMP( 1980, apple3, 0, 0, apple3, apple3, apple3_state, apple3, "Apple Computer", "Apple ///", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/applix.c b/src/mame/drivers/applix.c
index 752a9b8af2c..2b5097470ee 100644
--- a/src/mess/drivers/applix.c
+++ b/src/mame/drivers/applix.c
@@ -886,7 +886,9 @@ static MACHINE_CONFIG_START( applix, applix_state )
MCFG_WD1772_ADD("fdc", XTAL_16MHz / 2) //connected to Z80H clock pin
MCFG_FLOPPY_DRIVE_ADD("fdc:0", applix_floppies, "35dd", applix_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", applix_floppies, "35dd", applix_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_TIMER_DRIVER_ADD_PERIODIC("applix_c", applix_state, cass_timer, attotime::from_hz(100000))
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/appoooh.c b/src/mame/drivers/appoooh.c
index 103d034f01e..c860ccc7ccc 100644
--- a/src/mame/drivers/appoooh.c
+++ b/src/mame/drivers/appoooh.c
@@ -393,7 +393,7 @@ GFXDECODE_END
void appoooh_state::machine_start()
{
membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0xa000, 0x6000);
-
+
save_item(NAME(m_adpcm_data));
save_item(NAME(m_adpcm_address));
}
@@ -638,6 +638,6 @@ DRIVER_INIT_MEMBER(appoooh_state,robowresb)
*
*************************************/
-GAME( 1984, appoooh, 0, appoooh, appoooh, driver_device, 0, ROT0, "Sanritsu / Sega", "Appoooh", GAME_SUPPORTS_SAVE )
-GAME( 1986, robowres, 0, robowres, robowres, appoooh_state, robowres, ROT0, "Sanritsu / Sega", "Robo Wres 2001", GAME_SUPPORTS_SAVE )
-GAME( 1986, robowresb, robowres, robowres, robowres, appoooh_state, robowresb,ROT0, "bootleg", "Robo Wres 2001 (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1984, appoooh, 0, appoooh, appoooh, driver_device, 0, ROT0, "Sanritsu / Sega", "Appoooh", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, robowres, 0, robowres, robowres, appoooh_state, robowres, ROT0, "Sanritsu / Sega", "Robo Wres 2001", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, robowresb, robowres, robowres, robowres, appoooh_state, robowresb,ROT0, "bootleg", "Robo Wres 2001 (bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/apricot.c b/src/mame/drivers/apricot.c
index 943acc251d2..575c2672c02 100644
--- a/src/mess/drivers/apricot.c
+++ b/src/mame/drivers/apricot.c
@@ -505,5 +505,5 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
-COMP( 1983, apricot, 0, 0, apricot, 0, driver_device, 0, "ACT", "Apricot PC", GAME_NOT_WORKING )
-COMP( 1984, apricotxi, apricot, 0, apricotxi, 0, driver_device, 0, "ACT", "Apricot Xi", GAME_NOT_WORKING )
+COMP( 1983, apricot, 0, 0, apricot, 0, driver_device, 0, "ACT", "Apricot PC", MACHINE_NOT_WORKING )
+COMP( 1984, apricotxi, apricot, 0, apricotxi, 0, driver_device, 0, "ACT", "Apricot Xi", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/apricotf.c b/src/mame/drivers/apricotf.c
index bd9cec58e96..9ea574b7a1d 100644
--- a/src/mess/drivers/apricotf.c
+++ b/src/mame/drivers/apricotf.c
@@ -429,7 +429,7 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1984, f1, 0, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F1", GAME_NOT_WORKING | GAME_NO_SOUND )
-COMP( 1984, f1e, f1, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F1e", GAME_NOT_WORKING | GAME_NO_SOUND )
-COMP( 1984, f2, f1, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F2", GAME_NOT_WORKING | GAME_NO_SOUND )
-COMP( 1985, f10, f1, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F10", GAME_NOT_WORKING | GAME_NO_SOUND )
+COMP( 1984, f1, 0, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1984, f1e, f1, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F1e", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1984, f2, f1, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1985, f10, f1, 0, act_f1, act, driver_device, 0, "ACT", "Apricot F10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/apricotp.c b/src/mame/drivers/apricotp.c
index d9132dfd2bd..be9384b4c04 100644
--- a/src/mess/drivers/apricotp.c
+++ b/src/mame/drivers/apricotp.c
@@ -687,4 +687,4 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1984, fp, 0, 0, fp, fp, driver_device, 0, "ACT", "Apricot Portable / FP", GAME_NOT_WORKING )
+COMP( 1984, fp, 0, 0, fp, fp, driver_device, 0, "ACT", "Apricot Portable / FP", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/aquarium.c b/src/mame/drivers/aquarium.c
index 43e6426d756..6a8b8ec234d 100644
--- a/src/mame/drivers/aquarium.c
+++ b/src/mame/drivers/aquarium.c
@@ -366,4 +366,4 @@ ROM_START( aquarium )
ROM_LOAD( "aquar4", 0x000000, 0x80000, CRC(9a4af531) SHA1(bb201b7a6c9fd5924a0d79090257efffd8d4aba1) )
ROM_END
-GAME( 1996, aquarium, 0, aquarium, aquarium, aquarium_state, aquarium, ROT0, "Excellent System", "Aquarium (Japan)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
+GAME( 1996, aquarium, 0, aquarium, aquarium, aquarium_state, aquarium, ROT0, "Excellent System", "Aquarium (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
diff --git a/src/mess/drivers/aquarius.c b/src/mame/drivers/aquarius.c
index 7fbbe616e1e..84df8234eac 100644
--- a/src/mess/drivers/aquarius.c
+++ b/src/mame/drivers/aquarius.c
@@ -417,4 +417,4 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1983, aquarius, 0, 0, aquarius, aquarius, aquarius_state, aquarius, "Mattel", "Aquarius (NTSC)", 0 )
-//COMP( 1984, aquariu2, aquarius, 0, aquarius, aquarius, driver_device, 0, "Mattel", "Aquarius II", GAME_NOT_WORKING )
+//COMP( 1984, aquariu2, aquarius, 0, aquarius, aquarius, driver_device, 0, "Mattel", "Aquarius II", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/arabian.c b/src/mame/drivers/arabian.c
index 6979d7d9d59..ef74167bab0 100644
--- a/src/mame/drivers/arabian.c
+++ b/src/mame/drivers/arabian.c
@@ -418,5 +418,5 @@ ROM_END
*
*************************************/
-GAME( 1983, arabian, 0, arabian, arabian, driver_device, 0, ROT270, "Sun Electronics", "Arabian", GAME_SUPPORTS_SAVE )
-GAME( 1983, arabiana, arabian, arabian, arabiana, driver_device, 0, ROT270, "Sun Electronics (Atari license)", "Arabian (Atari)", GAME_SUPPORTS_SAVE )
+GAME( 1983, arabian, 0, arabian, arabian, driver_device, 0, ROT270, "Sun Electronics", "Arabian", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, arabiana, arabian, arabian, arabiana, driver_device, 0, ROT270, "Sun Electronics (Atari license)", "Arabian (Atari)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/arachnid.c b/src/mame/drivers/arachnid.c
index 0d8867f27da..7dde92ce45d 100644
--- a/src/mame/drivers/arachnid.c
+++ b/src/mame/drivers/arachnid.c
@@ -470,4 +470,4 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-GAME( 1990, arac6000, 0, arachnid, arachnid, driver_device, 0, ROT0, "Arachnid", "Super Six Plus II English Mark Darts", GAME_MECHANICAL | GAME_NOT_WORKING )
+GAME( 1990, arac6000, 0, arachnid, arachnid, driver_device, 0, ROT0, "Arachnid", "Super Six Plus II English Mark Darts", MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/arcadecl.c b/src/mame/drivers/arcadecl.c
index fc6e9cb096a..dd261cac975 100644
--- a/src/mame/drivers/arcadecl.c
+++ b/src/mame/drivers/arcadecl.c
@@ -396,5 +396,5 @@ ROM_END
*
*************************************/
-GAME( 1992, arcadecl, 0, arcadecl, arcadecl, driver_device, 0, ROT0, "Atari Games", "Arcade Classics (prototype)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sparkz, 0, sparkz, sparkz, driver_device, 0, ROT0, "Atari Games", "Sparkz (prototype)", GAME_SUPPORTS_SAVE )
+GAME( 1992, arcadecl, 0, arcadecl, arcadecl, driver_device, 0, ROT0, "Atari Games", "Arcade Classics (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sparkz, 0, sparkz, sparkz, driver_device, 0, ROT0, "Atari Games", "Sparkz (prototype)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/arcadia.c b/src/mame/drivers/arcadia.c
index d7540505e8a..c6eb8bd58d2 100644
--- a/src/mame/drivers/arcadia.c
+++ b/src/mame/drivers/arcadia.c
@@ -1,1004 +1,842 @@
-// license:BSD-3-Clause
-// copyright-holders:Ernesto Corvi, Mariusz Wojcieszek
-/***************************************************************************
-
- Arcadia System - (c) 1988 Arcadia Systems
-
- Driver by Ernesto Corvi and Mariusz Wojcieszek
-
- Games supported:
-
- SportTime Bowling
- Leader Board
- Ninja Mission
- Road Wars
- Sidewinder
- Space Ranger
- SportTime Table Hockey
- Spot
- Magic Johnson's Fast Break
- World Darts
- Xenon
- World Trophy Soccer
- Delta Command (N.Y Warriors)
- Blastaball
- Aaargh
- Pharaohs Match
-
- Other Arcadia games (not dumped):
-
- Pool
- Rockford
-
- Hardware description (from targets.mame.net):
-
- In the late 80s, Arcadia collaborated with Mastertronic to create their own
- ten-interchangeable-game arcade platform called the Arcadia Multi Select system,
- using the same hardware as the beloved Commodore Amiga computer.
+// license:GPL-2.0+
+// copyright-holders:Peter Trauner
+/******************************************************************************
+Consolidation and enhancement of documentation by Manfred Schneider based on previous work from
+ PeT mess@utanet.at and Paul Robson (autismuk@aol.com) minor updates by incog
+
+ Schematics, manuals and anything you can desire for at http://amigan.classicgaming.gamespy.com/
+
+ TODO: implement the RESET key on the front panel
+ find a dump of the character ROM
+ convert the drawing code to tilemap
+
+
+ 1. General
+ SYSTEM
+- Signetics 2650 CPU at 3.58/4 MHz(for NTSC) or at 4,433/5 (for PAL)
+- 1k x 8 of RAM (physically present but only 512 byte available)
+- 2 x 2 axis Analogue Joysticks
+- 2 x 12 button Controllers
+- 3 buttons on system unit and CPU Reset
+ VIDEO
+- 128 x 208 pixel resolution (alternate 128 x 104 mode available)
+- 16 x 26 (can be 16x13) background display (2 colour 8 x 8 pixel characters)
+- 4 x 8 x 8 Sprites (2 colour 8 x 8 pixels)
+- total of 8 user defined characters available
+ SOUND
+- Single channel beeper
+
+
+2. Memory map
+The memory map of the 2001 is below.
+0000 - 0FFF 4k ROM Block 1 (first 4k of a cartridge)
+1000 - 13FF mirror of $1800-$1BFF
+1400 - 17FF mirror of $1800-$1BFF
+1800 - 1BFF UVI2637 Area (detail description in video/arcadia.c)
+ 1800 - 18CF Screen display , upper 13 lines, characters/palette high bits
+ 18D0 - 18EF Free for user programs.
+ 18F0 - 18F7 Sprite coordinates y0x0y1x1y2x2y3x3
+ 18F8 - 1908 registers of UVI
+ 1909 - 197F Unmapped
+ 1980 - 19BF User defined characters (8 possible, 8 bytes per character)
+ 19C0 - 19F7 Unmapped
+ 19F8 - 19FF registers of UVI
+ 1A00 - 1ACF Screen display , lower 13 lines, characters/palette high bits
+ 1AD0 - 1AFF User memory
+ 1B00 - 1BFF mirror of 1900-19FF
+1C00 - 1FFF mirror of 1800-1BFF
+2000 - 2FFF 4k ROM Block 2 (for 8k carts such as Jungler)
+3000 - 3FFF mirror of 1000-1FFF
+4000 - 4FFF mirror of 0000-0FFF
+5000 - 5FFF mirror of 1000-1FFF
+6000 - 6FFF mirror of 0000-0FFF
+7000 - 7FFF mirror of 1000-1FFF
+
+The Palladium VCG memory map is as follows.
+0000 - 0FFF 4k ROM Block 1 (first 4k of a cartridge)
+1000 - 17FF could be ROM or RAM but no Cartridge uses this
+1800 - 1BFF UVI2637 Area (detail description in video/arcadia.c)
+ 1800 - 18CF Screen display , upper 13 lines, characters/palette high bits
+ 18D0 - 18EF Free for user programs.
+ 18F0 - 18F7 Sprite coordinates y0x0y1x1y2x2y3x3
+ 18F8 - 1908 registers of UVI
+ 1909 - 197F Unmapped
+ 1980 - 19BF User defined characters (8 possible, 8 bytes per character)
+ 19C0 - 19F7 Unmapped
+ 19F8 - 19FF registers of UVI
+ 1A00 - 1ACF Screen display , lower 13 lines, characters/palette high bits
+ 1AD0 - 1AFF User memory
+ 1B00 - 1BFF mirror of 1900-19FF
+1C00 - 1FFF could be ROM or RAM but no Cartridge uses this
+2000 - 2FFF 4k ROM Block (for 8k carts such as Jungler)
+3000 - 3FFF could be ROM or RAM but no Cartridge uses this
+4000 - 4FFF 4k ROM Block (first 2K used by Golf)
+5000 - 5FFF 4k ROM Block
+6000 - 6FFF 4k ROM Block
+7000 - 7FFF 4k ROM Block
+
+
+3. ROM Images
+ROM Images are loaded into 0000-0FFF. If the ROM is an 8k ROM the
+second half of the Rom is located at 2000-2FFF. Except for the Golf cart
+which is located from 0x0000-0x0FFF and a 2kbyte block from 0x4000 only on
+Palladium VCG.
+
+
+4. Controls
+All key controls are indicated by a bit going to '1'. Unused bits at
+the memory location are set to zero.
+
+Keypads
+
+1900-1902 (Player 1) 1904-1906 (Player 2)
+The keypads are arranged as follows :-
+
+ 1 2 3
+ 4 5 6
+ 7 8 9
+ Enter 0 Clear
+
+Row 1/4/7 is 1900/4, Row 2/5/8/0 is 1901/5 and Row 3/6/9 is 1902/6
+The topmost key is bit 3, the lowermost key is bit 0.
+
+Location $1908 contains bit 0 Start,bit 1 Option,bit 2 Difficulty.
+These keys are "latched" i.e. a press causes a logic 1 to appear
+on the current frame.
+
+The fire buttons are equivalent to Keypad #2 e.g. they are 1901 and
+1905 bit 3.
+
+Palladium has 4 additional key per keypad which are mapped at
+1903 palladium player 1
+1907 palladium player 2
+
+
+5. Other information
+Interrupts are not supported
+The Read/Write 2650 CPU Port-Commands do not appear to be connected to
+anything in hardware. No cartridge has been found which uses them.
+
+******************************************************************************/
+
+#include "includes/arcadia.h"
+
+static ADDRESS_MAP_START( arcadia_mem, AS_PROGRAM, 8, arcadia_state )
+ AM_RANGE( 0x0000, 0x0fff) AM_DEVREAD("cartslot", arcadia_cart_slot_device, read_rom)
+ AM_RANGE( 0x1800, 0x1aff) AM_READWRITE(video_r, video_w)
+ADDRESS_MAP_END
- (In fact, the Multi Select's main PCB is an A500 motherboard, to which the ROM
- cage is attached through the external expansion port).
+static ADDRESS_MAP_START( arcadia_io, AS_IO, 8, arcadia_state )
+ AM_RANGE( S2650_SENSE_PORT,S2650_SENSE_PORT) AM_READ(vsync_r)
+ADDRESS_MAP_END
- Reportedly the system was also (or was originally) supposed to have been released
- in two five-game Super Select versions--"Arcade Action" and "Sports Simulation"
- -- but no specimens of these have ever been seen.
+/* The Emerson Arcadia 2001 controllers have 2 fire buttons on the side,
+ but actually they are wired to keypad button #2. The following definitions
+ are meant to document this fact. The keypad has the following layout:
- NOTES and TODO:
- - To get into service mode, hold down F2 before pressing a button after
- the 'INITIALIZATION OK' message. Pressing F2 during game brings service
- mode also.
+ 1 2 3
+ 4 5 6
+ 7 8 9
+ Cl 0 En */
-***************************************************************************/
-
-#include "emu.h"
-#include "cpu/m68000/m68000.h"
-#include "includes/amiga.h"
-#include "machine/nvram.h"
-#include "machine/amigafdc.h"
+static INPUT_PORTS_START( arcadia )
+ PORT_START("panel")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Start")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Option") PORT_CODE(KEYCODE_O)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_NAME("Select")
+// PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_R) Not implemented
+
+ PORT_START("controller1_col1")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 1") PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 4") PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 7") PORT_CODE(KEYCODE_7_PAD)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad Clear") PORT_CODE(KEYCODE_MINUS_PAD)
+
+ PORT_START("controller1_col2")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 2/Button") PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 5") PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 8") PORT_CODE(KEYCODE_8_PAD)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 0") PORT_CODE(KEYCODE_0_PAD)
+
+ PORT_START("controller1_col3")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 3") PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 6") PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 9") PORT_CODE(KEYCODE_9_PAD)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad Enter") PORT_CODE(KEYCODE_PLUS_PAD)
+
+ PORT_START("controller1_extra")
+ PORT_BIT( 0xff, 0xf0, IPT_UNUSED) // used in palladium
+
+ PORT_START("controller2_col1")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 1") PORT_CODE(KEYCODE_Z)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 4") PORT_CODE(KEYCODE_A)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 7") PORT_CODE(KEYCODE_Q)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad Clear") PORT_CODE(KEYCODE_V)
+
+ PORT_START("controller2_col2")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 2/Button") PORT_CODE(KEYCODE_X)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 5") PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 8") PORT_CODE(KEYCODE_W)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 0") PORT_CODE(KEYCODE_F)
+
+ PORT_START("controller2_col3")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 3") PORT_CODE(KEYCODE_C)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 6") PORT_CODE(KEYCODE_D)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 9") PORT_CODE(KEYCODE_E)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad Enter") PORT_CODE(KEYCODE_R)
+
+ PORT_START("controller2_extra")
+ PORT_BIT( 0xff, 0xf0, IPT_UNUSED) // used in palladium
+
+/* FIXME: the joystick are analog - the actual definition is merely an hack */
+
+#if 0
+ // auto centering too slow, so only using 5 bits, and scaling at videoside
+ PORT_START("controller1_joy_x")
+ PORT_BIT( 0x1fe,0x10,IPT_AD_STICK_X)
+ PORT_SENSITIVITY(1)
+ PORT_KEYDELTA(2000)
+ PORT_MINMAX(0,0x1f)
+ PORT_CODE_DEC(KEYCODE_LEFT)
+ PORT_CODE_INC(KEYCODE_RIGHT)
+ PORT_CODE_DEC(JOYCODE_1_LEFT)
+ PORT_CODE_INC(JOYCODE_1_RIGHT)
+ PORT_PLAYER(1)
+ PORT_RESET
+
+ PORT_START("controller1_joy_y")
+ PORT_BIT( 0x1fe,0x10,IPT_AD_STICK_Y)
+ PORT_SENSITIVITY(1)
+ PORT_KEYDELTA(2000)
+ PORT_MINMAX(0,0x1f)
+ PORT_CODE_DEC(KEYCODE_UP)
+ PORT_CODE_INC(KEYCODE_DOWN)
+ PORT_CODE_DEC(JOYCODE_1_UP)
+ PORT_CODE_INC(JOYCODE_1_DOWN)
+ PORT_PLAYER(1)
+ PORT_RESET
+
+ PORT_START("controller2_joy_x")
+ PORT_BIT( 0x1ff,0x10,IPT_AD_STICK_X)
+ PORT_SENSITIVITY(100)
+ PORT_KEYDELTA(10)
+ PORT_MINMAX(0,0x1f)
+ PORT_CODE_DEC(KEYCODE_DEL)
+ PORT_CODE_INC(KEYCODE_PGDN)
+ PORT_CODE_DEC(JOYCODE_2_LEFT)
+ PORT_CODE_INC(JOYCODE_2_RIGHT)
+ PORT_PLAYER(2)
+ PORT_RESET
+
+ PORT_START("controller2_joy_y")
+ PORT_BIT( 0x1ff,0x10,IPT_AD_STICK_Y)
+ PORT_SENSITIVITY(100)
+ PORT_KEYDELTA(10)
+ PORT_MINMAX(0,0x1f)
+ PORT_CODE_DEC(KEYCODE_HOME)
+ PORT_CODE_INC(KEYCODE_END)
+ PORT_CODE_DEC(JOYCODE_2_UP)
+ PORT_CODE_INC(JOYCODE_2_DOWN)
+ PORT_PLAYER(2)
+ PORT_RESET
+#else
+ PORT_START("joysticks")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
+#endif
+INPUT_PORTS_END
+/* The Palladium Video-Computer-Game controllers have no fire buttons on their side
+ but have a 16 keys unlabeled keypad. The keys are fully independent and layed out
+ according to this weird scheme, which keeps backward compatibility to Arcadia 2001's
+ electrical wiring.
+
+ 2
+ 13 14 15
+ 1 16 3
+ 4 5 6
+ 7 8 9
+ 10 11 12 */
+
+static INPUT_PORTS_START( plldium )
+ PORT_START("panel")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_NAME("Start")
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_NAME("Selector A")
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Selector B") PORT_CODE(KEYCODE_O)
+// PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Reset") PORT_CODE(KEYCODE_R) Not implemented
+
+ PORT_START("controller1_col1")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED) // some bits must be high
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 1") PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 4") PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 7") PORT_CODE(KEYCODE_7_PAD)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 10") PORT_CODE(KEYCODE_MINUS_PAD)
+
+ PORT_START("controller1_col2")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 2/Button") PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 5") PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 8") PORT_CODE(KEYCODE_8_PAD)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 11") PORT_CODE(KEYCODE_0_PAD)
+
+ PORT_START("controller1_col3")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 3") PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 6") PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 9") PORT_CODE(KEYCODE_9_PAD)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 12") PORT_CODE(KEYCODE_PLUS_PAD)
+
+ PORT_START("controller1_extra")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 13") PORT_CODE(KEYCODE_ENTER_PAD)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 14") PORT_CODE(KEYCODE_SLASH_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 15") PORT_CODE(KEYCODE_ASTERISK)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P1 Keypad 16") PORT_CODE(KEYCODE_DEL_PAD)
+
+ PORT_START("controller2_col1")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 1") PORT_CODE(KEYCODE_Z)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 4") PORT_CODE(KEYCODE_A)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 7") PORT_CODE(KEYCODE_Q)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 10") PORT_CODE(KEYCODE_V)
+
+ PORT_START("controller2_col2")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 2/Button") PORT_CODE(KEYCODE_X)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 5") PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 8") PORT_CODE(KEYCODE_W)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 11") PORT_CODE(KEYCODE_F)
+
+ PORT_START("controller2_col3")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 3") PORT_CODE(KEYCODE_C)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 6") PORT_CODE(KEYCODE_D)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 9") PORT_CODE(KEYCODE_E)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 12") PORT_CODE(KEYCODE_R)
+
+ PORT_START("controller2_extra")
+ PORT_BIT( 0xf0, 0xf0, IPT_UNUSED)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 13") PORT_CODE(KEYCODE_B)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 14") PORT_CODE(KEYCODE_G)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 15") PORT_CODE(KEYCODE_T)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYPAD ) PORT_NAME("P2 Keypad 16") PORT_CODE(KEYCODE_H)
+
+/* FIXME: the joystick are analog - the actual definition is merely an hack */
+
+#if 0
+ // auto centering too slow, so only using 5 bits, and scaling at videoside
+ PORT_START("controller1_joy_x")
+ PORT_BIT( 0x1fe,0x10,IPT_AD_STICK_X)
+ PORT_SENSITIVITY(1)
+ PORT_KEYDELTA(2000)
+ PORT_MINMAX(0,0x1f)
+ PORT_CODE_DEC(KEYCODE_LEFT)
+ PORT_CODE_INC(KEYCODE_RIGHT)
+ PORT_CODE_DEC(JOYCODE_1_LEFT)
+ PORT_CODE_INC(JOYCODE_1_RIGHT)
+ PORT_PLAYER(1)
+ PORT_RESET
+
+ PORT_START("controller1_joy_y")
+ PORT_BIT( 0x1fe,0x10,IPT_AD_STICK_Y)
+ PORT_SENSITIVITY(1)
+ PORT_KEYDELTA(2000)
+ PORT_MINMAX(0,0x1f)
+ PORT_CODE_DEC(KEYCODE_UP)
+ PORT_CODE_INC(KEYCODE_DOWN)
+ PORT_CODE_DEC(JOYCODE_1_UP)
+ PORT_CODE_INC(JOYCODE_1_DOWN)
+ PORT_PLAYER(1)
+ PORT_RESET
+
+ PORT_START("controller2_joy_x")
+ PORT_BIT( 0x1ff,0x10,IPT_AD_STICK_X)
+ PORT_SENSITIVITY(100)
+ PORT_KEYDELTA(10)
+ PORT_MINMAX(0,0x1f)
+ PORT_CODE_DEC(KEYCODE_DEL)
+ PORT_CODE_INC(KEYCODE_PGDN)
+ PORT_CODE_DEC(JOYCODE_2_LEFT)
+ PORT_CODE_INC(JOYCODE_2_RIGHT)
+ PORT_PLAYER(2)
+ PORT_RESET
+
+ PORT_START("controller2_joy_y")
+ PORT_BIT( 0x1ff,0x10,IPT_AD_STICK_Y)
+ PORT_SENSITIVITY(100)
+ PORT_KEYDELTA(10)
+ PORT_MINMAX(0,0x1f)
+ PORT_CODE_DEC(KEYCODE_HOME)
+ PORT_CODE_INC(KEYCODE_END)
+ PORT_CODE_DEC(JOYCODE_2_UP)
+ PORT_CODE_INC(JOYCODE_2_DOWN)
+ PORT_PLAYER(2)
+ PORT_RESET
+#else
+ PORT_START("joysticks")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_8WAY
+#endif
+INPUT_PORTS_END
-// arcadia_state was also defined in mess/includes/arcadia.h
-class arcadia_amiga_state : public amiga_state
+static const gfx_layout arcadia_charlayout =
{
-public:
- arcadia_amiga_state(const machine_config &mconfig, device_type type, const char *tag)
- : amiga_state(mconfig, type, tag) { }
-
- UINT8 m_coin_counter[2];
-
- DECLARE_WRITE16_MEMBER(arcadia_multibios_change_game);
- DECLARE_CUSTOM_INPUT_MEMBER(coin_counter_r);
- DECLARE_INPUT_CHANGED_MEMBER(coin_changed_callback);
- DECLARE_WRITE8_MEMBER(arcadia_cia_0_portb_w);
-
- DECLARE_DRIVER_INIT(arcadia);
- DECLARE_DRIVER_INIT(xeon);
- DECLARE_DRIVER_INIT(sdwr);
- DECLARE_DRIVER_INIT(dart);
- DECLARE_DRIVER_INIT(bowl);
- DECLARE_DRIVER_INIT(sprg);
- DECLARE_DRIVER_INIT(rdwr);
- DECLARE_DRIVER_INIT(ninj);
- DECLARE_DRIVER_INIT(airh);
- DECLARE_DRIVER_INIT(ldrb);
- DECLARE_DRIVER_INIT(socc);
- DECLARE_DRIVER_INIT(blast);
- DECLARE_DRIVER_INIT(pm);
- DECLARE_DRIVER_INIT(dlta);
- DECLARE_DRIVER_INIT(argh);
-
- inline void generic_decode(const char *tag, int bit7, int bit6, int bit5, int bit4, int bit3, int bit2, int bit1, int bit0);
-
-protected:
- virtual void machine_reset();
+ 8, /*width*/
+ 1, /*height*/
+ 256, /* 256 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes; 1 bit per pixel */
+ { 0, 1, 2, 3, 4, 5, 6, 7 }, /* x offsets */
+ { 0 }, /* y offsets */
+ 1*8
};
+static GFXDECODE_START( arcadia )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, arcadia_charlayout, 0, 68 )
+GFXDECODE_END
-
-/*************************************
- *
- * Dynamic installation of ROM board
- *
- *************************************/
-
-WRITE16_MEMBER(arcadia_amiga_state::arcadia_multibios_change_game)
-{
- if (data == 0)
- space.install_read_bank(0x800000, 0x97ffff, "bank2");
- else
- space.nop_read(0x800000, 0x97ffff);
-}
-
-
-
-
-/*************************************
- *
- * CIA-A port B access:
- *
- * PB7 = parallel data 7
- * PB6 = parallel data 6
- * PB5 = parallel data 5
- * PB4 = parallel data 4
- * PB3 = parallel data 3
- * PB2 = parallel data 2
- * PB1 = parallel data 1
- * PB0 = parallel data 0
- *
- *************************************/
-
-WRITE8_MEMBER(arcadia_amiga_state::arcadia_cia_0_portb_w)
+static const rgb_t arcadia_colors[] =
{
- /* writing a 0 in the low bit clears one of the coins */
- if ((data & 1) == 0)
- {
- if (m_coin_counter[0] > 0)
- m_coin_counter[0]--;
- else if (m_coin_counter[1] > 0)
- m_coin_counter[1]--;
- }
-}
-
-
-
-/*************************************
- *
- * Coin counters
- *
- *************************************/
+ rgb_t::white, /* white */
+ rgb_t(0xff, 0xff, 0x00), /* yellow */
+ rgb_t(0x00, 0xff, 0xff), /* cyan */
+ rgb_t(0x00, 0xff, 0x00), /* green */
+ rgb_t(0xff, 0x00, 0xff), /* magenta */
+ rgb_t(0xff, 0x00, 0x00), /* red */
+ rgb_t(0x00, 0x00, 0xff), /* blue */
+ rgb_t::black /* black */
+};
-CUSTOM_INPUT_MEMBER(arcadia_amiga_state::coin_counter_r)
+static const unsigned short arcadia_palette[128+8] = /* bgnd, fgnd */
{
- int coin = (FPTR)param;
-
- /* return coin counter values */
- return m_coin_counter[coin] & 3;
-}
-
+ 0,1,2,3,4,5,6,7,
+
+ 0,0, 0,1, 0,2, 0,3, 0,4, 0,5, 0,6, 0,7,
+ 1,0, 1,1, 1,2, 1,3, 1,4, 1,5, 1,6, 1,7,
+ 2,0, 2,1, 2,2, 2,3, 2,4, 2,5, 2,6, 2,7,
+ 3,0, 3,1, 3,2, 3,3, 3,4, 3,5, 3,6, 3,7,
+ 4,0, 4,1, 4,2, 4,3, 4,4, 4,5, 4,6, 4,7,
+ 5,0, 5,1, 5,2, 5,3, 5,4, 5,5, 5,6, 5,7,
+ 6,0, 6,1, 6,2, 6,3, 6,4, 6,5, 6,6, 6,7,
+ 7,0, 7,1, 7,2, 7,3, 7,4, 7,5, 7,6, 7,7
+};
-INPUT_CHANGED_MEMBER(arcadia_amiga_state::coin_changed_callback)
+PALETTE_INIT_MEMBER(arcadia_state, arcadia)
{
- int coin = (FPTR)param;
+ for (int i = 0; i < 8; i++)
+ palette.set_indirect_color(i, arcadia_colors[i]);
- /* check for a 0 -> 1 transition */
- if (!oldval && newval && m_coin_counter[coin] < 3)
- m_coin_counter[coin] += 1;
+ for (int i = 0; i < 128+8; i++)
+ palette.set_pen_indirect(i, arcadia_palette[i]);
}
-
-void arcadia_amiga_state::machine_reset()
+void arcadia_state::machine_start()
{
- // reset base machine
- amiga_state::machine_reset();
-
- // reset coin counters
- m_coin_counter[0] = m_coin_counter[1] = 0;
+ if (m_cart->exists())
+ {
+ switch (m_cart->get_type())
+ {
+ case ARCADIA_STD:
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0xffff, read8_delegate(FUNC(arcadia_cart_slot_device::extra_rom),(arcadia_cart_slot_device*)m_cart));
+ break;
+ case ARCADIA_GOLF:
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x4fff, read8_delegate(FUNC(arcadia_cart_slot_device::extra_rom),(arcadia_cart_slot_device*)m_cart));
+ break;
+ }
+ }
}
+static SLOT_INTERFACE_START(arcadia_cart)
+ SLOT_INTERFACE_INTERNAL("std", ARCADIA_ROM_STD)
+ SLOT_INTERFACE_INTERNAL("golf", ARCADIA_ROM_GOLF)
+SLOT_INTERFACE_END
-/*************************************
- *
- * Memory map
- *
- *************************************/
-
-static ADDRESS_MAP_START( overlay_512kb_map, AS_PROGRAM, 16, arcadia_amiga_state )
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram")
- AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( a500_mem, AS_PROGRAM, 16, arcadia_amiga_state )
- ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
- AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
- AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xd80000, 0xddffff) AM_NOP
- AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
- AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
- AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
- AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( arcadia_map, AS_PROGRAM, 16, arcadia_amiga_state )
- AM_IMPORT_FROM(a500_mem)
- AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0)
- AM_RANGE(0x980000, 0x9fbfff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x9fc000, 0x9ffffd) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x9ffffe, 0x9fffff) AM_WRITE(arcadia_multibios_change_game)
- AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user2", 0)
-ADDRESS_MAP_END
-
-static ADDRESS_MAP_START( argh_map, AS_PROGRAM, 16, arcadia_amiga_state )
- AM_IMPORT_FROM(a500_mem)
- AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0)
-// AM_RANGE(0x980000, 0x9fefff) AM_ROM AM_REGION("user3", 0)
- AM_RANGE(0x9ff000, 0x9fffff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user3", 0)
-ADDRESS_MAP_END
-
-/*************************************
- *
- * Input ports
- *
- *************************************/
-
-static INPUT_PORTS_START( arcadia )
- PORT_START("CIA0PORTA")
- PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_SPECIAL )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
-
- PORT_START("CIA0PORTB")
- PORT_DIPNAME( 0x01, 0x01, "DSW1 1" )
- PORT_DIPSETTING( 0x01, "Reset" )
- PORT_DIPSETTING( 0x00, "Set" )
- PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_counter_r, 0)
- PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_counter_r, 1)
-
- PORT_START("joy_0_dat")
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,amiga_joystick_convert, 0)
- PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("joy_1_dat")
- PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,amiga_joystick_convert, 1)
- PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("potgo")
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
- PORT_BIT( 0xaaff, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- PORT_START("p1_joy")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
-
- PORT_START("p2_joy")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
-
- PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_changed_callback, 0)
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_changed_callback, 1)
-INPUT_PORTS_END
-
-
-
-/*************************************
- *
- * Machine driver
- *
- *************************************/
+static MACHINE_CONFIG_START( arcadia, arcadia_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", S2650, 3580000/4) /* 0.895 MHz */
+ MCFG_CPU_PROGRAM_MAP(arcadia_mem)
+ MCFG_CPU_IO_MAP(arcadia_io)
+ MCFG_CPU_PERIODIC_INT_DRIVER(arcadia_state, video_line, 262*60)
+ MCFG_QUANTUM_TIME(attotime::from_hz(60))
-static MACHINE_CONFIG_START( arcadia, arcadia_amiga_state )
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(128+2*XPOS, 262)
+ MCFG_SCREEN_VISIBLE_AREA(0, 2*XPOS+128-1, 0, 262-1)
+ MCFG_SCREEN_UPDATE_DRIVER(arcadia_state, screen_update_arcadia)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", arcadia )
+ MCFG_PALETTE_ADD("palette", ARRAY_LENGTH(arcadia_palette))
+ MCFG_PALETTE_INDIRECT_ENTRIES(8)
+ MCFG_PALETTE_INIT_OWNER(arcadia_state, arcadia)
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_NTSC)
- MCFG_CPU_PROGRAM_MAP(arcadia_map)
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_ARCADIA_SOUND_ADD("custom")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- MCFG_DEVICE_ADD("overlay", ADDRESS_MAP_BANK, 0)
- MCFG_DEVICE_PROGRAM_MAP(overlay_512kb_map)
- MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG)
- MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(16)
- MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(22)
- MCFG_ADDRESS_MAP_BANK_STRIDE(0x200000)
+ /* cartridge */
+ MCFG_ARCADIA_CARTRIDGE_ADD("cartslot", arcadia_cart, NULL)
- MCFG_NVRAM_ADD_0FILL("nvram")
+ /* Software lists */
+ MCFG_SOFTWARE_LIST_ADD("cart_list","arcadia")
+MACHINE_CONFIG_END
- /* video hardware */
- MCFG_FRAGMENT_ADD(ntsc_video)
- MCFG_PALETTE_ADD("palette", 4096)
- MCFG_PALETTE_INIT_OWNER(arcadia_amiga_state,amiga)
+ROM_START(advsnha)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
- MCFG_VIDEO_START_OVERRIDE(arcadia_amiga_state,amiga)
+ROM_START(bndarc)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
- /* sound hardware */
- MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
-
- MCFG_SOUND_ADD("amiga", AMIGA, amiga_state::CLK_C1_NTSC)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
- MCFG_SOUND_ROUTE(2, "rspeaker", 0.50)
- MCFG_SOUND_ROUTE(3, "lspeaker", 0.50)
-
- /* cia */
- MCFG_DEVICE_ADD("cia_0", MOS8520, amiga_state::CLK_E_NTSC)
- MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(amiga_state, cia_0_irq))
- MCFG_MOS6526_PA_INPUT_CALLBACK(IOPORT("CIA0PORTA"))
- MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(amiga_state, cia_0_port_a_write))
- MCFG_MOS6526_PB_INPUT_CALLBACK(IOPORT("CIA0PORTB"))
- MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(arcadia_amiga_state,arcadia_cia_0_portb_w))
- MCFG_DEVICE_ADD("cia_1", MOS8520, amiga_state::CLK_E_NTSC)
- MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(amiga_state, cia_1_irq))
-
- /* fdc */
- MCFG_DEVICE_ADD("fdc", AMIGA_FDC, amiga_state::CLK_7M_NTSC)
- MCFG_AMIGA_FDC_INDEX_CALLBACK(DEVWRITELINE("cia_1", mos8520_device, flag_w))
-MACHINE_CONFIG_END
+ROM_START(arcadia)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-static MACHINE_CONFIG_DERIVED( argh, arcadia )
+ROM_START(tccosmos)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
- /* basic machine hardware */
- MCFG_CPU_MODIFY("maincpu")
- MCFG_CPU_PROGRAM_MAP(argh_map)
-MACHINE_CONFIG_END
+ROM_START(dynavisn)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
+ROM_START(ekusera)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-/*************************************
- *
- * BIOS definition
- *
- *************************************/
-
-#define ROM_LOAD16_BYTE_BIOS(bios,name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_SKIP(1) | ROM_BIOS(bios+1))
-
-#define ARCADIA_BIOS \
- ROM_REGION16_BE(0x80000, "kickstart", 0 ) \
- ROM_LOAD16_WORD("315093-01.u2", 0x000000, 0x040000, CRC(a6ce1636) SHA1(11f9e62cf299f72184835b7b2a70a16333fc0d88)) \
- ROM_COPY("kickstart", 0x000000, 0x040000, 0x040000) \
- \
- ROM_REGION16_BE( 0x80000, "user2", 0 ) \
- ROM_SYSTEM_BIOS(0, "onep300", "OnePlay 3.00") \
- ROM_LOAD16_BYTE_BIOS( 0, "scpa_01-hi_v3.0.u12", 0x000000, 0x10000, CRC(2d8e1a06) SHA1(be187f34624aeda110017c4a09242f7c00ef56a4) ) \
- ROM_LOAD16_BYTE_BIOS( 0, "scpa_01-lo_v3.0.u16", 0x000001, 0x10000, CRC(e4f38fab) SHA1(01c2eb5965070893be6734eb1372576727716476) ) \
- ROM_SYSTEM_BIOS(1, "onep220", "OnePlay 2.20" ) \
- ROM_LOAD16_BYTE_BIOS( 1, "scpa_01-hi_v2.20.u12", 0x000000, 0x10000, CRC(79450b4b) SHA1(a1e508a89fc62e1c4994064f2786f491b1dc8bc6) ) \
- ROM_LOAD16_BYTE_BIOS( 1, "scpa_01-lo_v2.20.u16", 0x000001, 0x10000, CRC(d2825511) SHA1(747a37c6073224472bf261ae376ac9abfbe07554) ) \
- ROM_SYSTEM_BIOS(2, "onep211", "OnePlay 2.11" ) \
- ROM_LOAD16_BYTE_BIOS( 2, "scpa_01-hi_v2.11.u12", 0x000000, 0x10000, CRC(be9dbdc5) SHA1(1554da09f051ec53937d65d4e451de51bc0c69e5) ) \
- ROM_LOAD16_BYTE_BIOS( 2, "scpa_01-lo_v2.11.u16", 0x000001, 0x10000, CRC(95b84504) SHA1(99999fc40909001b37aa1b543918118becc81800) ) \
- ROM_SYSTEM_BIOS(3, "tenp211", "TenPlay 2.11" ) \
- ROM_LOAD16_BYTE_BIOS( 3, "gcp-1-hi", 0x000000, 0x10000, CRC(67d44523) SHA1(f3e3699132cdf741518accb890c04d17374c4049) ) \
- ROM_LOAD16_BYTE_BIOS( 3, "gcp-1-lo", 0x000001, 0x10000, CRC(65d9b9cf) SHA1(5c60a0dd4a0a7d9b938ce6b0446a6ad2ecaf07ec) ) \
- ROM_LOAD16_BYTE_BIOS( 3, "gcp-2-hi", 0x020000, 0x10000, CRC(1d7594ae) SHA1(6173bbfecf18d7d9ee6bc2b6753ca9d42fabd781) ) \
- ROM_LOAD16_BYTE_BIOS( 3, "gcp-2-lo", 0x020001, 0x10000, CRC(e776198d) SHA1(694ca4cc99ed84a95d18201c94a3332f8599654f) ) \
- ROM_LOAD16_BYTE_BIOS( 3, "gcp-3-hi", 0x040000, 0x10000, CRC(3e7364be) SHA1(26e10d0ddc031a891138db36ce4f1732722e6847) ) \
- ROM_LOAD16_BYTE_BIOS( 3, "gcp-3-lo", 0x040001, 0x10000, CRC(87229e0d) SHA1(0b18544801e529f954b9e03226bd2e5475f36351) ) \
- ROM_SYSTEM_BIOS(4, "tenp311", "TenPlay 3.11" ) /* Rom labels are printed as 3.11, but it runs as 3.10 */ \
- ROM_LOAD16_BYTE_BIOS( 4, "gcp_v311_1-hi.u16", 0x000000, 0x10000, CRC(0b486a85) SHA1(b406f1db5abf28d9072b7940989ffd176aeee5cb) ) \
- ROM_LOAD16_BYTE_BIOS( 4, "gcp_v311_1-lo.u11", 0x000001, 0x10000, CRC(80e8e863) SHA1(ab04dfcda7544f4ed9b67771cd8aefe0300c6d4b) ) \
- ROM_LOAD16_BYTE_BIOS( 4, "gcp_v311_2-hi.u17", 0x020000, 0x10000, CRC(d20a4d7f) SHA1(1dc0a79efa946333149f68ddac046fd44b5f2abe) ) \
- ROM_LOAD16_BYTE_BIOS( 4, "gcp_v311_2-lo.u12", 0x020001, 0x10000, CRC(5bf4c74c) SHA1(1f7b17170accdf9e448c1a5d8bc430aa2d1d931b) ) \
- ROM_SYSTEM_BIOS(5, "tenp400", "TenPlay 4.00" ) /* needs printer switch hooked up so it can be turned off */ \
- ROM_LOAD16_BYTE_BIOS( 5, "gcp_v400_1-hi.u16", 0x000000, 0x10000, CRC(69295167) SHA1(855f53abbb9dc15e5518e16c5c2dfe4134d07306) ) \
- ROM_LOAD16_BYTE_BIOS( 5, "gcp_v400_1-lo.u11", 0x000001, 0x10000, CRC(504c2171) SHA1(a93367f520afb86c97c0a191714b72823c95cdd2) ) \
- ROM_LOAD16_BYTE_BIOS( 5, "gcp_v400_2-hi.u17", 0x020000, 0x10000, CRC(13fb4e2d) SHA1(3eef07aecc3a201ae0b20634c7fd0c87c89fd7f1) ) \
- ROM_LOAD16_BYTE_BIOS( 5, "gcp_v400_2-lo.u12", 0x020001, 0x10000, CRC(a5cc4515) SHA1(80070521476e92323a6baa6e55928ca5b751a332) )
-
-ROM_START( ar_bios )
- ARCADIA_BIOS
-
- ROM_REGION16_BE(0x180000, "user3", ROMREGION_ERASEFF)
-ROM_END
-
-
-/*************************************
- *
- * Specific games
- *
- *************************************/
-
-/* AIRH */
-ROM_START( ar_airh )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "airh_1h.bin", 0x00000, 0x10000, CRC(290e8e9e) SHA1(9215e36f02adf4064934aab99accefcb17ea6d3f) )
- ROM_LOAD16_BYTE( "airh_1l.bin", 0x00001, 0x10000, CRC(155452b6) SHA1(aeaa67ea9cc543c9a43094545450159e4784fb5c) )
-ROM_END
-
-ROM_START( ar_airh2 )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "arcadia4.u10", 0x00000, 0x10000, CRC(baf8d886) SHA1(77efbc27c1cf717dfee2686009a957029eb1b113) )
- ROM_LOAD16_BYTE( "arcadia4.u6", 0x00001, 0x10000, CRC(ccff38ee) SHA1(ae89dbc9533358c80423b2dc21f101816730be7c) )
-
- ROM_REGION( 0x104, "misc", ROMREGION_ERASEFF )
- ROM_LOAD( "arcadia.u14.bin", 0x000, 0x104, CRC(1af35582) SHA1(a78aa61a56dea9b5c9df8b734f99adb0383d135b) ) // bad/protected?
-ROM_END
-
-
-/* BOWL V 2.1 */
-ROM_START( ar_bowl )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "bowl_1h.bin", 0x00000, 0x10000, CRC(c0c20422) SHA1(3576df08e7a4cdadaf9dea5da0770efe5f461b07) )
- ROM_LOAD16_BYTE( "bowl_1l.bin", 0x00001, 0x10000, CRC(1c7fe75c) SHA1(b1830b91b53ec24d4b072898acac02552e2eae97) )
- ROM_LOAD16_BYTE( "bowl_2h.bin", 0x20000, 0x10000, CRC(a1e497d8) SHA1(4b4885c6937b7cfb24921e84a80d6d4f56844a73) )
- ROM_LOAD16_BYTE( "bowl_2l.bin", 0x20001, 0x10000, CRC(ce23aa34) SHA1(4b17a8447286aeb775c4edb1968978e281422421) )
- ROM_LOAD16_BYTE( "bowl_3h.bin", 0x40000, 0x10000, CRC(0c55da71) SHA1(db8a1494fca3aa044da27ea1d3acf68be415be23) )
- ROM_LOAD16_BYTE( "bowl_3l.bin", 0x40001, 0x10000, CRC(5ce00809) SHA1(d7f336df28a033b38b5296537826d164aaf5e8c9) )
-ROM_END
-
-
-/* DART V 2.1 */
-ROM_START( ar_dart )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "dart_1h.bin", 0x00000, 0x10000, CRC(4d6a33e2) SHA1(1a227b5b0b4aca40d46af62e44deebca60582363) )
- ROM_LOAD16_BYTE( "dart_1l.bin", 0x00001, 0x10000, CRC(3fa66973) SHA1(66b59870f8ed1bb5b46b2887d99a6a71ff0514ba) )
- ROM_LOAD16_BYTE( "dart_2h.bin", 0x20000, 0x10000, CRC(3a30426a) SHA1(bf9226d2bfd1fb2d70e55e30aa3dde953baf5792) )
- ROM_LOAD16_BYTE( "dart_2l.bin", 0x20001, 0x10000, CRC(479c0b73) SHA1(2ad958f4f2d902635d030cf3f466097da3cc421c) )
- ROM_LOAD16_BYTE( "dart_3h.bin", 0x40000, 0x10000, CRC(dd217562) SHA1(80e21112a87259785e5d172249dfe8058970fd4d) )
- ROM_LOAD16_BYTE( "dart_3l.bin", 0x40001, 0x10000, CRC(12cff829) SHA1(3826e5442bb125dff4f10ef8b0b65a2d5b8d9985) )
- ROM_LOAD16_BYTE( "dart_4h.bin", 0x60000, 0x10000, CRC(98b27f13) SHA1(eb4fe813be4f202badfb947291e75ec0df915c25) )
- ROM_LOAD16_BYTE( "dart_4l.bin", 0x60001, 0x10000, CRC(a059204c) SHA1(01fb21175957fa8e92f918ea560ceecc809ed0b7) )
- ROM_LOAD16_BYTE( "dart_5h.bin", 0x80000, 0x10000, CRC(38f4c236) SHA1(1a5501ed8e94cff584f40c3b984aff7aea9ec956) )
- ROM_LOAD16_BYTE( "dart_5l.bin", 0x80001, 0x10000, CRC(df4103cc) SHA1(c792cc52148afa7bde6458704d9de2550b6eb636) )
- ROM_LOAD16_BYTE( "dart_6h.bin", 0xa0000, 0x10000, CRC(e21cc8be) SHA1(04280eef26f4a97c2280bdec19b1bc586fceffb0) )
- ROM_LOAD16_BYTE( "dart_6l.bin", 0xa0001, 0x10000, CRC(21112d4e) SHA1(95e49aa2f23c6d005a0de3cf96a1c06adeacf2a9) )
-ROM_END
-
-ROM_START( ar_dart2 )
- ARCADIA_BIOS
-
- ROM_REGION16_BE(0x200000, "user3", 0)
- ROM_LOAD16_BYTE( "arcadia3.u10", 0x00000, 0x10000, CRC(7166c736) SHA1(9892725b4d0aac6486950f8153083ba3f6982ad8) )
- ROM_LOAD16_BYTE( "arcadia3.u6", 0x00001, 0x10000, CRC(f226137e) SHA1(61540885ff83420f5adc1087547e0ece33383ffd) )
- ROM_LOAD16_BYTE( "arcadia3.u11", 0x20000, 0x10000, CRC(5d9a7804) SHA1(acd8eb7fd28594e8008eb953f843a72f12782ea2) )
- ROM_LOAD16_BYTE( "arcadia3.u7", 0x20001, 0x10000, CRC(a4876410) SHA1(668d120f688d31d86645fa67e01cd7e6356ca340) )
- ROM_LOAD16_BYTE( "arcadia3.u12", 0x40000, 0x10000, CRC(0cb77441) SHA1(cadd5656d2a97a852bcc231c7df22965f751a80a) )
- ROM_LOAD16_BYTE( "arcadia3.u8", 0x40001, 0x10000, CRC(97caab85) SHA1(9fd1b90d9cce073db81724ddd62f3e4ec610792b) )
- ROM_LOAD16_BYTE( "arcadia3.u13", 0x60000, 0x10000, CRC(9ccf347e) SHA1(9c2b5276543d20006e115459ac5451e2e807b28f) )
- ROM_LOAD16_BYTE( "arcadia3.u9", 0x60001, 0x10000, CRC(39c6675a) SHA1(6b79c2afab5b42b83d673836b94d7baa7a4e3214) )
- ROM_LOAD16_BYTE( "arcadia3.u19", 0x80000, 0x10000, CRC(2495a19e) SHA1(2cfb4c1ebb67b534d7c6df28512c80b52931e244) )
- ROM_LOAD16_BYTE( "arcadia3.u15", 0x80001, 0x10000, BAD_DUMP CRC(6d7006df) SHA1(eb6a0c9df3ec1bf5d0a180e138a591f374555f1c) ) // FIXED BITS (0000x000)
- ROM_LOAD16_BYTE( "arcadia3.u20", 0xa0000, 0x10000, CRC(efb0f2e2) SHA1(7ba1d85ac573db9bbd1ef04d0770c7c1277bc10e) )
- ROM_LOAD16_BYTE( "arcadia3.u16", 0xa0001, 0x10000, CRC(a9c5e939) SHA1(75de7c0fb4654b6738ecd0c170589f3a46012f33) )
-
- ROM_REGION( 0x104, "misc", ROMREGION_ERASEFF )
- ROM_LOAD( "arcadia.u14.bin", 0x000, 0x104, CRC(1af35582) SHA1(a78aa61a56dea9b5c9df8b734f99adb0383d135b) ) // bad/protected?
-ROM_END
-
-
-/*
- Magic Johnson's Fast Break
-
- PIGGYBACK 1.5 MBYTE ROM BOARD REV A
-
- 3h 7h x
- 2h 6h x
- 1h 5h x
- scpa1h 4h 8h
- 3l 7l x
- 2l 6l x
- DS1220Y 1l 5l x
- sec-scpa scpa1l 4l 8l
-
-Labeled Like this:
-
-*FAST - V:28
-<----1-LO
-(C)1989 Arcadia Sys
-
-
-*/
-ROM_START( ar_fast )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "fast-v28_1-hi.u11", 0x000000, 0x10000, CRC(091e4533) SHA1(61a16deecd32b386d62aab95e8d4a61bddcd8af4) )
- ROM_LOAD16_BYTE( "fast-v28_1-lo.u15", 0x000001, 0x10000, CRC(8f7685c1) SHA1(b379c1a47618401cfbfcc7bd2d13ae51f5e73e46) )
- ROM_LOAD16_BYTE( "fast-v28_2-hi.u10", 0x020000, 0x10000, CRC(3a3dd931) SHA1(7be3316e2acf6b14b29ef2e36d8f76999d5d4e94) )
- ROM_LOAD16_BYTE( "fast-v28_2-lo.u14", 0x020001, 0x10000, CRC(4838d7e5) SHA1(d2ae5b8f25df51936937ddf62001347fccdf830a) )
- ROM_LOAD16_BYTE( "fast-v28_3-hi.u9", 0x040000, 0x10000, CRC(db94fa62) SHA1(4fe79a4226161b15ecdda9d85c1ad84cf31b6a30) )
- ROM_LOAD16_BYTE( "fast-v28_3-lo.u13", 0x040001, 0x10000, CRC(a400367d) SHA1(a4362beeb35fa0c9020883eab0a71194f3a90b9a) )
- ROM_LOAD16_BYTE( "fast-v28_4-hi.u20", 0x060000, 0x10000, CRC(c0a021dd) SHA1(c4c40c05050a2831b55683d85ee39b8870e0bf88) )
- ROM_LOAD16_BYTE( "fast-v28_4-lo.u24", 0x060001, 0x10000, CRC(870e60f1) SHA1(0f0566da96dfc898dbbc35dfaba489d1fc9ab435) )
- ROM_LOAD16_BYTE( "fast-v28_5-hi.u19", 0x080000, 0x10000, CRC(6daf4817) SHA1(ca0bf79e77a3e878da1f97ff9a64107e8c112aee) )
- ROM_LOAD16_BYTE( "fast-v28_5-lo.u23", 0x080001, 0x10000, CRC(f489da29) SHA1(5e70183acfd0d849ae9691b312ca98698b1a2252) )
- ROM_LOAD16_BYTE( "fast-v28_6-hi.u18", 0x0a0000, 0x10000, CRC(b23dbcfd) SHA1(67495235016e4bcbf6251e4073d6938a3c5b0eea) )
- ROM_LOAD16_BYTE( "fast-v28_6-lo.u22", 0x0a0001, 0x10000, CRC(4e23e807) SHA1(69c910d70fb85d037257b19a1be9e99c617bf1c4) )
- ROM_LOAD16_BYTE( "fast-v28_7-hi.u17", 0x0c0000, 0x10000, CRC(74d598eb) SHA1(9434169d316fc2802e7790e5b09be086fccab351) )
- ROM_LOAD16_BYTE( "fast-v28_7-lo.u21", 0x0c0001, 0x10000, CRC(b0649050) SHA1(a8efdfc82a63fc16ee2103b4c96b92d6f9e7afc6) )
- ROM_LOAD16_BYTE( "fast-v28_8-hi.u28", 0x0e0000, 0x10000, CRC(3650aaf0) SHA1(cc37aa94360159f45076eafaae8140a661bd52f6) )
- ROM_LOAD16_BYTE( "fast-v28_8-lo.u32", 0x0e0001, 0x10000, CRC(82603f68) SHA1(8affe73e97b966b8e63bff2c7914fb5ead7b60ff) )
-
- ROM_REGION( 0x0200, "plds", 0 )
- ROM_LOAD( "pal16l8-sec-scpa.u8", 0x0000, 0x0104, CRC(3a4df3aa) SHA1(d0e64af4e1602347af60cd97c6b5b1a9d65cb270) ) /* PAL is read protected */
-ROM_END
-
-
-/* Arcadia Magic Johnson's Fast Break V 2.7 on PIGGYBACK 1.5 MBYTE ROM BOARD REV A */
-ROM_START( ar_fasta )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "fast-v27_1-hi.u11", 0x000000, 0x10000, CRC(58ce7e02) SHA1(73fa33858dceb924e86b95130f8d6a0d3ae5cc6f) )
- ROM_LOAD16_BYTE( "fast-v27_1-lo.u15", 0x000001, 0x10000, CRC(6bf75490) SHA1(3df610dd488e0711a190a9ec47adfd047313a597) )
- ROM_LOAD16_BYTE( "fast-v27_2-hi.u10", 0x020000, 0x10000, CRC(3a3dd931) SHA1(7be3316e2acf6b14b29ef2e36d8f76999d5d4e94) ) /* matches v2.8 */
- ROM_LOAD16_BYTE( "fast-v27_2-lo.u14", 0x020001, 0x10000, CRC(4838d7e5) SHA1(d2ae5b8f25df51936937ddf62001347fccdf830a) ) /* matches v2.8 */
- ROM_LOAD16_BYTE( "fast-v27_3-hi.u9", 0x040000, 0x10000, CRC(db94fa62) SHA1(4fe79a4226161b15ecdda9d85c1ad84cf31b6a30) ) /* matches v2.8 */
- ROM_LOAD16_BYTE( "fast-v27_3-lo.u13", 0x040001, 0x10000, CRC(a400367d) SHA1(a4362beeb35fa0c9020883eab0a71194f3a90b9a) ) /* matches v2.8 */
- ROM_LOAD16_BYTE( "fast-v27_4-hi.u20", 0x060000, 0x10000, CRC(c0a021dd) SHA1(c4c40c05050a2831b55683d85ee39b8870e0bf88) ) /* matches v2.8 */
- ROM_LOAD16_BYTE( "fast-v27_4-lo.u24", 0x060001, 0x10000, CRC(870e60f1) SHA1(0f0566da96dfc898dbbc35dfaba489d1fc9ab435) ) /* matches v2.8 */
- ROM_LOAD16_BYTE( "fast-v27_5-hi.u19", 0x080000, 0x10000, CRC(6daf4817) SHA1(ca0bf79e77a3e878da1f97ff9a64107e8c112aee) ) /* matches v2.8 */
- ROM_LOAD16_BYTE( "fast-v27_5-lo.u23", 0x080001, 0x10000, CRC(f489da29) SHA1(5e70183acfd0d849ae9691b312ca98698b1a2252) ) /* matches v2.8 */
- ROM_LOAD16_BYTE( "fast-v27_6-hi.u18", 0x0a0000, 0x10000, CRC(e36424a4) SHA1(e17375de39dccb7bec6aaaa06879a20b532d0199) )
- ROM_LOAD16_BYTE( "fast-v27_6-lo.u22", 0x0a0001, 0x10000, CRC(23441bac) SHA1(25fd776cdafbb88b5f63201d30d42eeafde88733) )
- ROM_LOAD16_BYTE( "fast-v27_7-hi.u17", 0x0c0000, 0x10000, CRC(2ac2f165) SHA1(5d7501de510efc4ca34765d99ed8c2c374309659) )
- ROM_LOAD16_BYTE( "fast-v27_7-lo.u21", 0x0c0001, 0x10000, CRC(41255827) SHA1(494e3da21845c6d62ce3c7ba75e2557fb016b91a) )
- ROM_LOAD16_BYTE( "fast-v27_8-hi.u28", 0x0e0000, 0x10000, CRC(8e838770) SHA1(73ad9e925f725b173ce554e97c28426cb20ec194) )
- ROM_LOAD16_BYTE( "fast-v27_8-lo.u32", 0x0e0001, 0x10000, CRC(2d55af35) SHA1(5a6a3b12c222d16c30bc7f2a7904433614448e10) )
-
- ROM_REGION( 0x0200, "plds", 0 )
- ROM_LOAD( "pal16l8-sec-scpa.u8", 0x0000, 0x0104, CRC(3a4df3aa) SHA1(d0e64af4e1602347af60cd97c6b5b1a9d65cb270) )
-ROM_END
-
-
-/* Arcadia LEADER BOARD V 2.5 on PIGGYBACK 1.5 MBYTE ROM BOARD REV A */
-ROM_START( ar_ldrb )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "leader_board_01-hi_v2.5.u11", 0x00000, 0x10000, CRC(0236511c) SHA1(22b2ee076ed57ba38413c16a52510383d8488e25) )
- ROM_LOAD16_BYTE( "leader_board_01-lo_v2.5.u15", 0x00001, 0x10000, CRC(786d34b9) SHA1(5fd6ef94f65c6fd503d3682154b576d6509a3aa9) )
- ROM_LOAD16_BYTE( "leader_board_02-hi_v2.5.u10", 0x20000, 0x10000, CRC(64e5fbae) SHA1(0dde0d05b05f232aac9ad44398cedd8c7627f146) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "leader_board_02-lo_v2.5.u14", 0x20001, 0x10000, CRC(bb115e1c) SHA1(768cf51661f630b1c0a4b83b9f6124c78a517d0a) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "leader_board_03-hi_v2.5.u9", 0x40000, 0x10000, CRC(1d290e28) SHA1(0d589628fe59de9d7e2a57ddeabca991d1c79fdf) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "leader_board_03-lo_v2.5.u13", 0x40001, 0x10000, CRC(b1352a77) SHA1(ac7337a3778442d444002f730e2880f61f32cf2a) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "leader_board_04-hi_v2.5.u20", 0x60000, 0x10000, CRC(b621c688) SHA1(f2a50ebfc50725cdef77bb8a4864405dbb203784) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "leader_board_04-lo_v2.5.u24", 0x60001, 0x10000, CRC(13f9c4b0) SHA1(08a1fab271307191c5caa108c4ae284f92c270e4) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "leader_board_05-hi_v2.5.u19", 0x80000, 0x10000, CRC(71273172) SHA1(2b6204fdf03268e920b5948c999aa725fc66cac6) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "leader_board_05-lo_v2.5.u23", 0x80001, 0x10000, CRC(d9028183) SHA1(009b496da31f67b11de54e50254a9897ea68cd92) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "leader_board_06-hi_v2.5.u18", 0xa0000, 0x10000, CRC(a6ce61a4) SHA1(6cd64b7d589c91aeee06293f473fd1b3c56b19e0) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "leader_board_06-lo_v2.5.u22", 0xa0001, 0x10000, CRC(13c71422) SHA1(93e6dca2b28e1b5235b922f064be96eed0bedd8c) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "leader_board_07-hi_v2.5.u17", 0xc0000, 0x10000, CRC(4ebb8d12) SHA1(c328a26139ba0792cab1020b32eb4b8e39d51a22) )
- ROM_LOAD16_BYTE( "leader_board_07-lo_v2.5.u21", 0xc0001, 0x10000, CRC(1afa9a4f) SHA1(3e5ca56e03d693a72424b9ad0717494ea8eb561e) )
- ROM_LOAD16_BYTE( "leader_board_08-hi_v2.5.u28", 0xe0000, 0x10000, CRC(fbdca9af) SHA1(9612eb777a00ba4153f40eaefd162ca5b5efdb54) )
- ROM_LOAD16_BYTE( "leader_board_08-lo_v2.5.u32", 0xe0001, 0x10000, CRC(322f52eb) SHA1(3033eb753fb8b3bf56b152377bf567b06a0c8144) )
-
- ROM_REGION( 0x0200, "plds", 0 )
- ROM_LOAD( "pal16l8-sec-scpa.u8", 0x0000, 0x0104, CRC(3a4df3aa) SHA1(d0e64af4e1602347af60cd97c6b5b1a9d65cb270) )
-ROM_END
-
-
-/* Arcadia LEADER BOARD V 2.4 on PIGGYBACK 1.5 MBYTE ROM BOARD REV A */
-ROM_START( ar_ldrba )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "leader_board_01-hi_v2.4.u11", 0x00000, 0x10000, CRC(fe1287e9) SHA1(34088416d970614b31b25e982ef40fd950080b3e) )
- ROM_LOAD16_BYTE( "leader_board_01-lo_v2.4.u15", 0x00001, 0x10000, CRC(7c7bb9ee) SHA1(5c76445732ab139db82fe21c16f49e2609bb03aa) )
- ROM_LOAD16_BYTE( "leader_board_02-hi_v2.4.u10", 0x20000, 0x10000, CRC(64e5fbae) SHA1(0dde0d05b05f232aac9ad44398cedd8c7627f146) )
- ROM_LOAD16_BYTE( "leader_board_02-lo_v2.4.u14", 0x20001, 0x10000, CRC(bb115e1c) SHA1(768cf51661f630b1c0a4b83b9f6124c78a517d0a) )
- ROM_LOAD16_BYTE( "leader_board_03-hi_v2.4.u9", 0x40000, 0x10000, CRC(1d290e28) SHA1(0d589628fe59de9d7e2a57ddeabca991d1c79fdf) )
- ROM_LOAD16_BYTE( "leader_board_03-lo_v2.4.u13", 0x40001, 0x10000, CRC(b1352a77) SHA1(ac7337a3778442d444002f730e2880f61f32cf2a) )
- ROM_LOAD16_BYTE( "leader_board_04-hi_v2.4.u20", 0x60000, 0x10000, CRC(b621c688) SHA1(f2a50ebfc50725cdef77bb8a4864405dbb203784) )
- ROM_LOAD16_BYTE( "leader_board_04-lo_v2.4.u24", 0x60001, 0x10000, CRC(13f9c4b0) SHA1(08a1fab271307191c5caa108c4ae284f92c270e4) )
- ROM_LOAD16_BYTE( "leader_board_05-hi_v2.4.u19", 0x80000, 0x10000, CRC(71273172) SHA1(2b6204fdf03268e920b5948c999aa725fc66cac6) )
- ROM_LOAD16_BYTE( "leader_board_05-lo_v2.4.u23", 0x80001, 0x10000, CRC(d9028183) SHA1(009b496da31f67b11de54e50254a9897ea68cd92) )
- ROM_LOAD16_BYTE( "leader_board_06-hi_v2.4.u18", 0xa0000, 0x10000, CRC(a6ce61a4) SHA1(6cd64b7d589c91aeee06293f473fd1b3c56b19e0) )
- ROM_LOAD16_BYTE( "leader_board_06-lo_v2.4.u22", 0xa0001, 0x10000, CRC(13c71422) SHA1(93e6dca2b28e1b5235b922f064be96eed0bedd8c) )
- ROM_LOAD16_BYTE( "leader_board_07-hi_v2.4.u17", 0xc0000, 0x10000, CRC(61807fa9) SHA1(9d7097b921cf4026bb2828780e3fb87e0a3a24a0) )
- ROM_LOAD16_BYTE( "leader_board_07-lo_v2.4.u21", 0xc0001, 0x10000, CRC(c62dae9f) SHA1(59b8e1c2469edd57024a4f3ca4222811442fa077) )
- ROM_LOAD16_BYTE( "leader_board_08-hi_v2.4.u28", 0xe0000, 0x10000, CRC(b5911807) SHA1(b2995b308b2618f312005f130048e73c151311ae) )
- ROM_LOAD16_BYTE( "leader_board_08-lo_v2.4.u32", 0xe0001, 0x10000, CRC(1f1ea828) SHA1(4af463bc6d58d64d4f082971c71654a6bb0c26bc) )
-
- ROM_REGION( 0x0200, "plds", 0 )
- ROM_LOAD( "pal16l8-sec-scpa.u8", 0x0000, 0x0104, CRC(3a4df3aa) SHA1(d0e64af4e1602347af60cd97c6b5b1a9d65cb270) )
-ROM_END
-
-/* Arcadia LEADER BOARD v 2.6? on PIGGYBACK 1.5 MBYTE ROM BOARD REV ? */
-ROM_START( ar_ldrbb ) /* Later then v2.5?? as 7H & 7L match v2.5 and are newer then v2.4 */
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "ldrb_1h.u11", 0x00000, 0x10000, CRC(97dcde78) SHA1(d324415b853de17646b5266581bea27e571fa08f) )
- ROM_LOAD16_BYTE( "ldrb_1l_gcp_22.u15", 0x00001, 0x10000, CRC(b51d17f7) SHA1(56add2f69c35e5082926bd59be7f98a6a223c549) )
- ROM_LOAD16_BYTE( "ldrb_2h.u10", 0x20000, 0x10000, CRC(64e5fbae) SHA1(0dde0d05b05f232aac9ad44398cedd8c7627f146) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "ldrb_2l.u14", 0x20001, 0x10000, CRC(bb115e1c) SHA1(768cf51661f630b1c0a4b83b9f6124c78a517d0a) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "ldrb_3h.u9", 0x40000, 0x10000, CRC(1d290e28) SHA1(0d589628fe59de9d7e2a57ddeabca991d1c79fdf) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "ldrb_3l.u13", 0x40001, 0x10000, CRC(b1352a77) SHA1(ac7337a3778442d444002f730e2880f61f32cf2a) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "ldrb_4h.u20", 0x60000, 0x10000, CRC(b621c688) SHA1(f2a50ebfc50725cdef77bb8a4864405dbb203784) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "ldrb_4l.u24", 0x60001, 0x10000, CRC(13f9c4b0) SHA1(08a1fab271307191c5caa108c4ae284f92c270e4) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "ldrb_5h.u19", 0x80000, 0x10000, CRC(71273172) SHA1(2b6204fdf03268e920b5948c999aa725fc66cac6) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "ldrb_5l.u23", 0x80001, 0x10000, CRC(d9028183) SHA1(009b496da31f67b11de54e50254a9897ea68cd92) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "ldrb_6h.u18", 0xa0000, 0x10000, CRC(a6ce61a4) SHA1(6cd64b7d589c91aeee06293f473fd1b3c56b19e0) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "ldrb_6l.u22", 0xa0001, 0x10000, CRC(13c71422) SHA1(93e6dca2b28e1b5235b922f064be96eed0bedd8c) ) /* matches v2.4 */
- ROM_LOAD16_BYTE( "ldrb_7h.u17", 0xc0000, 0x10000, CRC(4ebb8d12) SHA1(c328a26139ba0792cab1020b32eb4b8e39d51a22) ) /* matches v2.5 */
- ROM_LOAD16_BYTE( "ldrb_7l.u21", 0xc0001, 0x10000, CRC(1afa9a4f) SHA1(3e5ca56e03d693a72424b9ad0717494ea8eb561e) ) /* matches v2.5 */
- ROM_LOAD16_BYTE( "ldrb_8h.u28", 0xe0000, 0x10000, CRC(701f50ba) SHA1(4ea6be00aa2d32d739fa6ec70ec8bce470b28f90) )
- ROM_LOAD16_BYTE( "ldrb_8l.u32", 0xe0001, 0x10000, CRC(80642c1d) SHA1(fc2101b749db3ebb3499c8870026c05acf46fa4d) )
-
- ROM_REGION( 0x0200, "plds", 0 )
- ROM_LOAD( "pal16l8-sec-scpa.u8", 0x0000, 0x0104, CRC(3a4df3aa) SHA1(d0e64af4e1602347af60cd97c6b5b1a9d65cb270) )
-ROM_END
-
-/* NINJ V 2.5 */
-ROM_START( ar_ninj )
- ARCADIA_BIOS
-
- ROM_REGION16_BE(0x200000, "user3", 0)
- ROM_LOAD16_BYTE( "ninj_1h.bin", 0x00000, 0x10000, CRC(53b07b4d) SHA1(4852005adf60fe63f2da880dd32740d18fd31169) )
- ROM_LOAD16_BYTE( "ninj_1l.bin", 0x00001, 0x10000, CRC(3337a6c1) SHA1(be9719f0cd5872b51f4c6d32fcac2638c0dedaf4) )
- ROM_LOAD16_BYTE( "ninj_2h.bin", 0x20000, 0x10000, CRC(e28a5fa8) SHA1(150e26aea24706b72d2e6612280d5dddc527061b) )
- ROM_LOAD16_BYTE( "ninj_2l.bin", 0x20001, 0x10000, CRC(4f52c008) SHA1(c26bf9a7a21a5b78697a684bada90ff70160f868) )
- ROM_LOAD16_BYTE( "ninj_3h.bin", 0x40000, 0x10000, CRC(c6e4dd36) SHA1(a8dcea97e0eb1da462ad55fd543c637544bfd059) )
- ROM_LOAD16_BYTE( "ninj_3l.bin", 0x40001, 0x10000, CRC(1dca7ea5) SHA1(2950ea2e9267d27e0ebe785a08e2d6627ae5eb17) )
- ROM_LOAD16_BYTE( "ninj_4h.bin", 0x60000, 0x10000, CRC(dc1a21d4) SHA1(76463837e0da8fd61de334e00adb807c7ef92523) )
- ROM_LOAD16_BYTE( "ninj_4l.bin", 0x60001, 0x10000, CRC(64660b15) SHA1(9e9c5f61add1439613400fee0c2376dc4000e6c6) )
- ROM_LOAD16_BYTE( "ninj_5h.bin", 0x80000, 0x10000, CRC(49cda31b) SHA1(e9579b9d47f7e638f933b8ce659bc63c8bdeb0a4) )
- ROM_LOAD16_BYTE( "ninj_5l.bin", 0x80001, 0x10000, CRC(1c5ef815) SHA1(7e88c1545ee15efd928220989f8b29207a8fec7e) )
- ROM_LOAD16_BYTE( "ninj_6h.bin", 0xa0000, 0x10000, CRC(b647f31e) SHA1(18367b96418ab950ba97d656e1466234af3bca80) )
- ROM_LOAD16_BYTE( "ninj_6l.bin", 0xa0001, 0x10000, CRC(9e5407e3) SHA1(85a8383573f3cd120f323e867c7fa2b6badd5aad) )
-ROM_END
-
-ROM_START( ar_ninj2 )
- ARCADIA_BIOS
-
- ROM_REGION16_BE(0x200000, "user3", 0)
- ROM_LOAD16_BYTE( "arcadia5.u10", 0x00000, 0x10000, CRC(217cb8eb) SHA1(7cb1da4d5d5b5af5f42c10848c7535bdeebbcd94) )
- ROM_LOAD16_BYTE( "arcadia5.u6", 0x00001, 0x10000, CRC(009bee8f) SHA1(ff61a0770643400ecddc70e603ca6589424b6831) )
- ROM_LOAD16_BYTE( "arcadia5.u11", 0x20000, 0x10000, CRC(f5c84e48) SHA1(8149a225a406ffb7c9faaa48af4947c2f66f750d) )
- ROM_LOAD16_BYTE( "arcadia5.u7", 0x20001, 0x10000, CRC(62d32d21) SHA1(3b80e0a4543d64f905139224f333a913cde60f30) )
- ROM_LOAD16_BYTE( "arcadia5.u12", 0x40000, 0x10000, CRC(c6e4dd36) SHA1(a8dcea97e0eb1da462ad55fd543c637544bfd059) )
- ROM_LOAD16_BYTE( "arcadia5.u8", 0x40001, 0x10000, CRC(1dca7ea5) SHA1(2950ea2e9267d27e0ebe785a08e2d6627ae5eb17) )
- ROM_LOAD16_BYTE( "arcadia5.u13", 0x60000, 0x10000, CRC(1bca3231) SHA1(57bd0516c30c4b7d8b4ca27580f770732b1a56bd) )
- ROM_LOAD16_BYTE( "arcadia5.u9", 0x60001, 0x10000, CRC(df2f98ae) SHA1(cbad0371109aab9fa6c72a022a496e9b85c5fcd4) )
- ROM_LOAD16_BYTE( "arcadia5.u19", 0x80000, 0x10000, CRC(49cda31b) SHA1(e9579b9d47f7e638f933b8ce659bc63c8bdeb0a4) )
- ROM_LOAD16_BYTE( "arcadia5.u15", 0x80001, 0x10000, CRC(1c5ef815) SHA1(7e88c1545ee15efd928220989f8b29207a8fec7e) )
- ROM_LOAD16_BYTE( "arcadia5.u20", 0xa0000, 0x10000, CRC(7359920b) SHA1(72c7438f9f5ef5d6a23f11fc58d32f8e1ff0ae44) )
- ROM_LOAD16_BYTE( "arcadia5.u16", 0xa0001, 0x10000, CRC(85a639bb) SHA1(22bfadfe6c8fd366e45ec172c070d9811e1ea8a9) )
-
- ROM_REGION( 0x104, "misc", ROMREGION_ERASEFF )
- ROM_LOAD( "arcadia.u14.bin", 0x000, 0x104, CRC(1af35582) SHA1(a78aa61a56dea9b5c9df8b734f99adb0383d135b) ) // bad/protected?
-ROM_END
-
-
-
-/* RDWR V 2.3 */
-ROM_START( ar_rdwr )
- ARCADIA_BIOS
-
- ROM_REGION16_BE(0x200000, "user3", 0)
- ROM_LOAD16_BYTE( "rdwr_1h.bin", 0x00000, 0x10000, CRC(f52cb704) SHA1(cce8c7484ae8c3a3d14b2e79a981780a277c9b1c) )
- ROM_LOAD16_BYTE( "rdwr_1l.bin", 0x00001, 0x10000, CRC(fde0de6d) SHA1(7f62ce854a040775548c5ba3b05e6a4dcb0d7cfb) )
- ROM_LOAD16_BYTE( "rdwr_2h.bin", 0x20000, 0x10000, CRC(8f3c1a2c) SHA1(e473e55457c04ebd597375e9936aeb0473507ed7) )
- ROM_LOAD16_BYTE( "rdwr_2l.bin", 0x20001, 0x10000, CRC(21865e15) SHA1(be4b0e77a17edeb77f6a9d4bec6d49d4a46242ea) )
- ROM_LOAD16_BYTE( "rdwr_3h.bin", 0x40000, 0x10000, CRC(0cb3bc66) SHA1(5e22abcd38fc74f472cc5090b7c2893aaabc37bd) )
- ROM_LOAD16_BYTE( "rdwr_3l.bin", 0x40001, 0x10000, CRC(d863a958) SHA1(d27b8ff2daa51319d5c44700c6dd74e4bc8d99a4) )
- ROM_LOAD16_BYTE( "rdwr_4h.bin", 0x60000, 0x10000, CRC(466fe771) SHA1(1cc65887e097302bd504b8c4da5f7d2b760d7f74) )
- ROM_LOAD16_BYTE( "rdwr_4l.bin", 0x60001, 0x10000, CRC(fff39238) SHA1(05b4a70e1f808254e1fb20a15c460655d14d4216) )
-ROM_END
-
-
-/* SDWR V 2.1 */
-ROM_START( ar_sdwr )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "sdwr_1h.bin", 0x00000, 0x10000, CRC(aef3eea8) SHA1(4bf7619f52395fcbde3c8f7af3fd7da4af03c673) )
- ROM_LOAD16_BYTE( "sdwr_1l.bin", 0x00001, 0x10000, CRC(daed4add) SHA1(a9404a87f1958d7ab829fbb48855d2deb64c5aec) )
- ROM_LOAD16_BYTE( "sdwr_2h.bin", 0x20000, 0x10000, CRC(d67ba564) SHA1(2afba72a77806e3925c9ca1e13c16c442a6cfc3a) )
- ROM_LOAD16_BYTE( "sdwr_2l.bin", 0x20001, 0x10000, CRC(97f58a6d) SHA1(161bc8b3e14e5efca7b988f80cc16345280ca4bd) )
- ROM_LOAD16_BYTE( "sdwr_3h.bin", 0x40000, 0x10000, CRC(b31ad2b2) SHA1(66003bd331f61d1bd2e8f4d595b61503dad4e4b8) )
- ROM_LOAD16_BYTE( "sdwr_3l.bin", 0x40001, 0x10000, CRC(af929620) SHA1(5fde0f199016abf8fd9db821ee492feeba21b604) )
- ROM_LOAD16_BYTE( "sdwr_4h.bin", 0x60000, 0x10000, CRC(7502a271) SHA1(aa318619c0b98873b435b5bbf7feb2d5d51198f9) )
- ROM_LOAD16_BYTE( "sdwr_4l.bin", 0x60001, 0x10000, CRC(942d50b4) SHA1(eb0c9057ffd0d03dc2cde1158ce9f07de8ea6905) )
- ROM_LOAD16_BYTE( "sdwr_5h.bin", 0x80000, 0x10000, CRC(c25ac91d) SHA1(da4d46a2c987e2be2e31c081557b2de1744fa237) )
- ROM_LOAD16_BYTE( "sdwr_5l.bin", 0x80001, 0x10000, CRC(ecd1fbd3) SHA1(0b859d608859ccbff03db655219dfea4e609454d) )
- ROM_LOAD16_BYTE( "sdwr_6h.bin", 0xa0000, 0x10000, CRC(ea3c8ab3) SHA1(95cb5b9dd29c19862a2659867474cbf49192f830) )
- ROM_LOAD16_BYTE( "sdwr_6l.bin", 0xa0001, 0x10000, CRC(2544ccd7) SHA1(953aa00f2610ecd31db6e36964cbe7c2866050b9) )
-ROM_END
-
-ROM_START( ar_sdwr2 )
- ARCADIA_BIOS
-
- ROM_REGION16_BE(0x200000, "user3", 0)
- ROM_LOAD16_BYTE( "arcadia1.u10", 0x00000, 0x10000, CRC(30949f1f) SHA1(270cd449f994eda76afd5532018bad636ac4cf68) )
- ROM_LOAD16_BYTE( "arcadia1.u6", 0x00001, 0x10000, CRC(c760d1c4) SHA1(7d311e8b192e493da9501755e096599e1e8e8d3e) )
- ROM_LOAD16_BYTE( "arcadia1.u11", 0x20000, 0x10000, CRC(d67ba564) SHA1(2afba72a77806e3925c9ca1e13c16c442a6cfc3a) )
- ROM_LOAD16_BYTE( "arcadia1.u7", 0x20001, 0x10000, CRC(97f58a6d) SHA1(161bc8b3e14e5efca7b988f80cc16345280ca4bd) )
- ROM_LOAD16_BYTE( "arcadia1.u12", 0x40000, 0x10000, CRC(b31ad2b2) SHA1(66003bd331f61d1bd2e8f4d595b61503dad4e4b8) )
- ROM_LOAD16_BYTE( "arcadia1.u8", 0x40001, 0x10000, CRC(af929620) SHA1(5fde0f199016abf8fd9db821ee492feeba21b604) )
- ROM_LOAD16_BYTE( "arcadia1.u13", 0x60000, 0x10000, CRC(360b17a6) SHA1(db7e1ce1c545139142804ce68ce5232d153fb0f2) )
- ROM_LOAD16_BYTE( "arcadia1.u9", 0x60001, 0x10000, CRC(d724e563) SHA1(0012bc6354642a761fc223627401542ae48aea6e) )
- ROM_LOAD16_BYTE( "arcadia1.u19", 0x80000, 0x10000, CRC(c25ac91d) SHA1(da4d46a2c987e2be2e31c081557b2de1744fa237) )
- ROM_LOAD16_BYTE( "arcadia1.u15", 0x80001, 0x10000, CRC(ecd1fbd3) SHA1(0b859d608859ccbff03db655219dfea4e609454d) )
- ROM_LOAD16_BYTE( "arcadia1.u20", 0xa0000, 0x10000, CRC(5791440b) SHA1(fc9297343ddc2e6e1e22b7ed9a986777519061db) )
- ROM_LOAD16_BYTE( "arcadia1.u16", 0xa0001, 0x10000, CRC(e63e1679) SHA1(0762bff0018e006905a2e58141fdf05910f06e29) )
-
- ROM_REGION( 0x104, "misc", ROMREGION_ERASEFF )
- ROM_LOAD( "arcadia.u14.bin", 0x000, 0x104, CRC(1af35582) SHA1(a78aa61a56dea9b5c9df8b734f99adb0383d135b) ) // bad/protected?
-ROM_END
-
-
-/* SOCC */
-ROM_START( ar_socc )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "socc30.1hi", 0x00000, 0x10000, CRC(b4df41cf) SHA1(681cecef390f82be420cd9f4d32afddace3da3c8) )
- ROM_LOAD16_BYTE( "socc30.1lo", 0x00001, 0x10000, CRC(28b5e119) SHA1(3fff3252b855e6ca1aceff89ec0c61688c954d88) )
- ROM_LOAD16_BYTE( "socc30.2hi", 0x20000, 0x10000, CRC(b3c14026) SHA1(be4e05cbf5b14a1dc77eff70bb44c8cdae57e59a) )
- ROM_LOAD16_BYTE( "socc30.2lo", 0x20001, 0x10000, CRC(f7f9a734) SHA1(064adbfb919c7422190b5e4146fbc335a2a97091) )
- ROM_LOAD16_BYTE( "socc30.3hi", 0x40000, 0x10000, CRC(2a2bd2a0) SHA1(9a9a0463ecf99941f88a163dcb111bf8c3508d78) )
- ROM_LOAD16_BYTE( "socc30.3lo", 0x40001, 0x10000, CRC(f335bb8b) SHA1(a15ee6b27d6e2aab25f3260edd0803fe1fa05f0e) )
- ROM_LOAD16_BYTE( "socc30.4hi", 0x60000, 0x10000, CRC(4f2f28dc) SHA1(cd419c80e7112163fd182d2cc58148d3674ccd8c) )
- ROM_LOAD16_BYTE( "socc30.4lo", 0x60001, 0x10000, CRC(b326d36c) SHA1(5ac2df36754c97065f74695a9c46e2a558e8e112) )
- ROM_LOAD16_BYTE( "socc30.5hi", 0x80000, 0x10000, CRC(4fcaec4a) SHA1(1286c57a81358a69573df6f6cedf44c564476320) )
- ROM_LOAD16_BYTE( "socc30.5lo", 0x80001, 0x10000, CRC(f131115e) SHA1(a9050878cbc1923bb88d46ecdad8f5bd69d389ea) )
- ROM_LOAD16_BYTE( "socc30.6hi", 0xa0000, 0x10000, CRC(9380644f) SHA1(01da02f9397c7b8fd44a78a533f09264eb4f3d0c) )
- ROM_LOAD16_BYTE( "socc30.6lo", 0xa0001, 0x10000, CRC(b93e13ea) SHA1(0fac9cb54099f0d0ad61eb6f5bd3686c27a045b9) )
-ROM_END
-
-
-/* SPOT */
-ROM_START( ar_spot )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "spotv2.1h", 0x00000, 0x10000, CRC(a8440838) SHA1(8d64ddb603754c85aad47bd079d0a7d80d57b36c) )
- ROM_LOAD16_BYTE( "spotv2.1l", 0x00001, 0x10000, CRC(2abd2835) SHA1(b419da47c6390334ed8af56bc21430e5b43d6d58) )
- ROM_LOAD16_BYTE( "spotv2.2h", 0x20000, 0x10000, CRC(f4c95f77) SHA1(46c70755e3c6d06bec4b1bd164a586292a59249d) )
- ROM_LOAD16_BYTE( "spotv2.2l", 0x20001, 0x10000, CRC(58d7bf54) SHA1(0da63d32d738f8ed3675c6d14b2d12039af5ff21) )
- ROM_LOAD16_BYTE( "spotv2.3h", 0x40000, 0x10000, CRC(c9d2f3b7) SHA1(1b4693bcde14dc5eefe7456d4d613e6cb674c972) )
- ROM_LOAD16_BYTE( "spotv2.3l", 0x40001, 0x10000, CRC(adf94e81) SHA1(5ad56044008236edea0a44393daee06e572b1cc2) )
- ROM_LOAD16_BYTE( "spotv2.4h", 0x60000, 0x10000, CRC(cdea2feb) SHA1(4bb24b8cb5dd1e88d3f468979e2f350568414668) )
- ROM_LOAD16_BYTE( "spotv2.4l", 0x60001, 0x10000, CRC(214c353b) SHA1(819283248eac2a516f9fcdda060284ffe9c39bc8) )
- ROM_LOAD16_BYTE( "spotv2.5h", 0x80000, 0x10000, CRC(809d0f5c) SHA1(d1bae86090db8e5cc066afb76203704e7d217fde) )
- ROM_LOAD16_BYTE( "spotv2.5l", 0x80001, 0x10000, CRC(b86d8153) SHA1(42a564fa608e806d04052e67263afc4a5a417d40) )
- ROM_LOAD16_BYTE( "spotv2.6h", 0xa0000, 0x10000, CRC(8c221a34) SHA1(8f246bbcb79f5e508932d776fbfa648392f7f78d) )
- ROM_LOAD16_BYTE( "spotv2.6l", 0xa0001, 0x10000, CRC(821fa69a) SHA1(f037853be96158b8a6dd5f34e15ddfc16b6410c3) )
- ROM_LOAD16_BYTE( "spotv2.7h", 0xc0000, 0x10000, CRC(054355db) SHA1(6f4a46230b6dfd4727816737c31bce9483d3a3f7) )
- ROM_LOAD16_BYTE( "spotv2.7l", 0xc0001, 0x10000, CRC(30d396d8) SHA1(2a56727554a823f56b37b9e8d324e9f53524eb02) )
- ROM_LOAD16_BYTE( "spotv2.8h", 0xe0000, 0x10000, CRC(94dbb239) SHA1(0c475c8e102cc835d01e3de4604c1323219048f1) )
- ROM_LOAD16_BYTE( "spotv2.8l", 0xe0001, 0x10000, CRC(4d7f8f05) SHA1(04690717cec5912cd12ccb7135614842f5597898) )
-ROM_END
-
-
-/* SPRG */
-ROM_START( ar_sprg )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "sprg_1h.bin", 0x00000, 0x10000, CRC(90b45dc5) SHA1(7cf1fc27e95bf207ed94cc5c20cf0c0ae7799d83) )
- ROM_LOAD16_BYTE( "sprg_1l.bin", 0x00001, 0x10000, CRC(e5ce68e9) SHA1(dfda2e0bffc499a497865bc214450653880eccf2) )
- ROM_LOAD16_BYTE( "sprg_2h.bin", 0x20000, 0x10000, CRC(02ef780f) SHA1(d21d6e8a379a2b38de7f3ec0540f67dd6425cbc9) )
- ROM_LOAD16_BYTE( "sprg_2l.bin", 0x20001, 0x10000, CRC(fa1f5b23) SHA1(4f808d8ee9cd672061995d0bfab65851bf1c01d3) )
- ROM_LOAD16_BYTE( "sprg_3h.bin", 0x40000, 0x10000, CRC(48130e6e) SHA1(479555c4a5c041c04135f01fbdd5c5f78f4422cf) )
- ROM_LOAD16_BYTE( "sprg_3l.bin", 0x40001, 0x10000, CRC(4b968cc6) SHA1(fbf3bcb5803dbe75e5a9bcde39c98c9c30bd1699) )
- ROM_LOAD16_BYTE( "sprg_4h.bin", 0x60000, 0x10000, CRC(23c8f667) SHA1(da75def3a34f6e7d48f2c6cefff608348c09cf70) )
- ROM_LOAD16_BYTE( "sprg_4l.bin", 0x60001, 0x10000, CRC(13ba011f) SHA1(75da2fbbfe2e957992b2a73609737d777fe9a151) )
-ROM_END
-
-
-/* XEON V 2.3 */
-ROM_START( ar_xeon )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "xeon_1h.bin", 0x00000, 0x10000, CRC(ca422811) SHA1(fa6f82e1d91b48d58b61f916d5b04dc1a13774fb) )
- ROM_LOAD16_BYTE( "xeon_1l.bin", 0x00001, 0x10000, CRC(97edf967) SHA1(57fca524e01ba21f7420472f14aaf3fa63a326fa) )
- ROM_LOAD16_BYTE( "xeon_2h.bin", 0x20000, 0x10000, CRC(8078c10e) SHA1(599995374b23da7187556e2f4f285b60d818f885) )
- ROM_LOAD16_BYTE( "xeon_2l.bin", 0x20001, 0x10000, CRC(a8845d8f) SHA1(2d54dc25af68c46bbbdf8f9ed8014ae7d8564e09) )
- ROM_LOAD16_BYTE( "xeon_3h.bin", 0x40000, 0x10000, CRC(9d013152) SHA1(7a3bec56d564efbca9721d308b3eddc76763ec41) )
- ROM_LOAD16_BYTE( "xeon_3l.bin", 0x40001, 0x10000, CRC(331b1449) SHA1(0e282d04b2c7e68051e5ea1671737b11dfb71521) )
- ROM_LOAD16_BYTE( "xeon_4h.bin", 0x60000, 0x10000, CRC(fbf43d5c) SHA1(6d335b7b1d3b75887526cb8ea3518661b5554774) )
- ROM_LOAD16_BYTE( "xeon_4l.bin", 0x60001, 0x10000, CRC(47b60bf5) SHA1(10d8addc090ad3fa2663c40e22f736ac3522b177) )
-ROM_END
-
-
-ROM_START( ar_blast )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "blsb-v2-1_1-hi.bin", 0x00000, 0x10000, CRC(6d2e38e5) SHA1(ef9b9ae7644b10892b09f15a3e916c3f51cbbe06) )
- ROM_LOAD16_BYTE( "blsb-v2-1_1-lo.bin", 0x00001, 0x10000, CRC(28b6db63) SHA1(09c4998f021ae7e25ec4a4009e6c8177fb6649c8) )
- ROM_LOAD16_BYTE( "blsb-v2-1_2-hi.bin", 0x20000, 0x10000, CRC(8b3c629c) SHA1(34872cd6cf5627517f43c7174f2b263bb1cf33ef) )
- ROM_LOAD16_BYTE( "blsb-v2-1_2-lo.bin", 0x20001, 0x10000, CRC(966c733c) SHA1(32d711fdea43d9c61532b71627afa5e518d3fb11) )
- ROM_LOAD16_BYTE( "blsb-v2-1_3-hi.bin", 0x40000, 0x10000, CRC(6013b0d2) SHA1(88b2adb76a60d8160673a3abfe97a4f3f97c1825) )
- ROM_LOAD16_BYTE( "blsb-v2-1_3-lo.bin", 0x40001, 0x10000, CRC(8c5d602d) SHA1(17f7fb2727210286f85d0b356411ee5302f59bef) )
- ROM_LOAD16_BYTE( "blsb-v2-1_4-hi.bin", 0x60000, 0x10000, CRC(cc091362) SHA1(2a3e945a17bd8b7b70b3a7efb00d62a37f0ececa) )
- ROM_LOAD16_BYTE( "blsb-v2-1_4-lo.bin", 0x60001, 0x10000, CRC(16b7618a) SHA1(9857255eb47aff683893d6fe1bdf64a2ea2492a7) )
-ROM_END
-
-ROM_START( ar_pm )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "pm-1hi.bin", 0x00000, 0x10000, CRC(ed65f3db) SHA1(71022cd9f379e9511e472aa1cc60d9629dfb69d5) )
- ROM_LOAD16_BYTE( "pm-1lo.bin", 0x00001, 0x10000, CRC(7189a482) SHA1(d2daba2f3ce7991b0a6f4f5fbda44e1c95554cfc) )
- ROM_LOAD16_BYTE( "pm-2hi.bin", 0x20000, 0x10000, CRC(a33fd701) SHA1(9101c2bedefc7f480adf02542d335fadc28ba7bc) )
- ROM_LOAD16_BYTE( "pm-2lo.bin", 0x20001, 0x10000, CRC(17dee8b9) SHA1(695c53c3317f8b82414101404950fe6b7f93912a) )
-ROM_END
-
-ROM_START( ar_dlta )
- ARCADIA_BIOS
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "dlta_v3_1-hi.bin", 0x00000, 0x10000, CRC(3d428b49) SHA1(a1b1173a2128115768634b23392f1536ffcb6f51) )
- ROM_LOAD16_BYTE( "dlta_v3_1-lo.bin", 0x00001, 0x10000, CRC(e5d6508b) SHA1(f0d54f2b8c3f0752a77a33267c1c2333fcf6ecae) )
- ROM_LOAD16_BYTE( "dlta_v3_2-hi.bin", 0x20000, 0x10000, CRC(e8a23dfe) SHA1(5d60162da160a6121d11d36a45c92f75ba5002d5) )
- ROM_LOAD16_BYTE( "dlta_v3_2-lo.bin", 0x20001, 0x10000, CRC(84d82a8f) SHA1(851961e41796fc97af8f98214bd87d306db3b3d3) )
- ROM_LOAD16_BYTE( "dlta_v3_3-hi.bin", 0x40000, 0x10000, CRC(75563b80) SHA1(ff35376c1db36b3e635f698190679697f3dc44cc) )
- ROM_LOAD16_BYTE( "dlta_v3_3-lo.bin", 0x40001, 0x10000, CRC(30b911b2) SHA1(68f116d8d041aa482b9b578ba57dbd3fd2afe5b9) )
- ROM_LOAD16_BYTE( "dlta_v3_4-hi.bin", 0x60000, 0x10000, CRC(80cd42a5) SHA1(67a7cba3778de9205ba9c31b533404e3afef8798) )
- ROM_LOAD16_BYTE( "dlta_v3_4-lo.bin", 0x60001, 0x10000, CRC(2fe13d9e) SHA1(3240719383df436ba66111a2b4fe93a3b474d7a8) )
- ROM_LOAD16_BYTE( "dlta_v3_5-hi.bin", 0x80000, 0x10000, CRC(960c9a17) SHA1(66b82b2f96ea473f20c306252c51370e3bd93754) )
- ROM_LOAD16_BYTE( "dlta_v3_5-lo.bin", 0x80001, 0x10000, CRC(79cbc0dd) SHA1(11cd144e0f30feac1ecb8abc006e428eda71c63c) )
- ROM_LOAD16_BYTE( "dlta_v3_6-hi.bin", 0xa0000, 0x10000, CRC(9df96431) SHA1(4d68ee592d4de1fc112a4579785d17443d8a0cfd) )
- ROM_LOAD16_BYTE( "dlta_v3_6-lo.bin", 0xa0001, 0x10000, CRC(5b0d7f30) SHA1(e4ca74de30c325a18204446c3e547ca728402e74) )
- ROM_LOAD16_BYTE( "dlta_v3_7-hi.bin", 0xc0000, 0x10000, CRC(8e966e69) SHA1(f0935710ad031c69b2aa758d3c78331838ac3f3d) )
- ROM_LOAD16_BYTE( "dlta_v3_7-lo.bin", 0xc0001, 0x10000, CRC(42553743) SHA1(4df836b6cff80bde737a52a3ea45eb1bda14fa52) )
- ROM_LOAD16_BYTE( "dlta_v3_8-hi.bin", 0xe0000, 0x10000, CRC(9ef08c31) SHA1(837d8b49e23e4ad493a1a167f477f5aeea48544a) )
- ROM_LOAD16_BYTE( "dlta_v3_8-lo.bin", 0xe0001, 0x10000, CRC(7088bb88) SHA1(c57ea00c87252060a10660555f140ed2ace29b53) )
-ROM_END
-
-
-ROM_START( ar_argh ) // this plugs directly into the a500 motherboard, no arcadia bios, just the a500 kickstart and game ROMs
- ROM_REGION16_BE(0x80000, "kickstart", 0 )
- ROM_LOAD16_WORD("315093-01.u2", 0x00000, 0x40000, CRC(a6ce1636) SHA1(11f9e62cf299f72184835b7b2a70a16333fc0d88))
- ROM_COPY("kickstart", 0x00000, 0x40000, 0x40000 )
-
- ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
- ROM_LOAD16_BYTE( "argh-1-hi-11-28-87.u12", 0x000000, 0x10000, CRC(3b1f8075) SHA1(61aeff9f6a2dff6efe4276cb0bcbb80b495e26b6) )
- ROM_LOAD16_BYTE( "argh-1-lo-11-28-87.u16", 0x000001, 0x10000, CRC(78b77071) SHA1(5848e30cfd08f9241f8ff9267fdcf2c87c72cdb0) )
- ROM_LOAD16_BYTE( "argh-2-hi-11-28-87.u11", 0x020000, 0x10000, CRC(9604e1e9) SHA1(03c010fc7075db953b47282ce54097c4921e3560) )
- ROM_LOAD16_BYTE( "argh-2-lo-11-28-87.u15", 0x020001, 0x10000, CRC(0c7c8133) SHA1(cd8013fa7c2d1c3a518c3e26e5b10c6c78b2a8ee) )
- ROM_LOAD16_BYTE( "argh-3-hi-11-28-87.u10", 0x040000, 0x10000, CRC(84d60a2c) SHA1(7284db16642bd598390d63408113a0e9622f0b3d) )
- ROM_LOAD16_BYTE( "argh-3-lo-11-28-87.u14", 0x040001, 0x10000, CRC(f43a6107) SHA1(2075739d7cbd8565df7a0333c1a16838df9aa97c) )
- ROM_LOAD16_BYTE( "argh-4-hi-11-28-87.u9", 0x060000, 0x10000, CRC(7d9d514d) SHA1(a77a4db1ab0ae41e75fe334fcb1c16bb7627fa6d) )
- ROM_LOAD16_BYTE( "argh-4-lo-11-28-87.u13", 0x060001, 0x10000, CRC(da797e5c) SHA1(59f000fa43f80d7730e8a5ca3f13571ff150ead2) )
- ROM_LOAD16_BYTE( "argh-5-hi-11-28-87.u20", 0x080000, 0x10000, CRC(75a395c5) SHA1(3064028b78025bc3d9f96884d155f449ef285be9) )
- ROM_LOAD16_BYTE( "argh-5-lo-11-28-87.u24", 0x080001, 0x10000, CRC(b69db0ed) SHA1(b47b46e0a69ba40c8b59864469b9836ff7a9b3fb) )
- ROM_LOAD16_BYTE( "argh-6-hi-11-28-87.u19", 0x0a0000, 0x10000, CRC(f06ee4d5) SHA1(2555c97666ff319089d4e767b99718d21ab43f7d) )
- ROM_LOAD16_BYTE( "argh-6-lo-11-28-87.u23", 0x0a0001, 0x10000, CRC(9d49526a) SHA1(604731ebdeb6961d6faccc44dc7c762275bc7b3e) )
- ROM_LOAD16_BYTE( "argh-7-hi-11-28-87.u18", 0x0c0000, 0x10000, CRC(2fda9f36) SHA1(26431fad4aeaa068fa15de9803e818b93547edd6) )
- ROM_LOAD16_BYTE( "argh-7-lo-11-28-87.u22", 0x0c0001, 0x10000, CRC(ad6f16d4) SHA1(91fb41db567eeccc0088ba3530049921d19f2df2) )
- ROM_LOAD16_BYTE( "argh-8-hi-11-28-87.u17", 0x0e0000, 0x10000, CRC(06be1705) SHA1(dbbd0471a82075775279ef149862379211dead17) )
- ROM_LOAD16_BYTE( "argh-8-lo-11-28-87.u21", 0x0e0001, 0x10000, CRC(48f7bed1) SHA1(9864de95f0ad73ec5982b37d35d3fc9776bb18fa) )
- ROM_LOAD16_BYTE( "argh-9-hi-11-28-87.u28", 0x100000, 0x10000, CRC(f6ef5a54) SHA1(db8df6dd29392154fba65de73a641321baecba3c) )
- ROM_LOAD16_BYTE( "argh-9-lo-11-28-87.u32", 0x100001, 0x10000, CRC(209fc834) SHA1(d190b84eb18ea6d9aee4279b63e7fe6029e173a9) )
- ROM_LOAD16_BYTE( "argh-10-hi-11-28-87.u27", 0x120000, 0x10000, CRC(e75c9ac1) SHA1(5f1678e6946beaeb2e79853a2416d8565a84a815) )
- ROM_LOAD16_BYTE( "argh-10-lo-11-28-87.u31", 0x120001, 0x10000, CRC(dc4da335) SHA1(449c1de89cb6ea6296196051bef5470765872285) )
- ROM_LOAD16_BYTE( "argh-11-hi-11-28-87.u26", 0x140000, 0x10000, CRC(2932054f) SHA1(f03e71170bd24719c26427c3fbf4fdf1363bc64f) )
- ROM_LOAD16_BYTE( "argh-11-lo-11-28-87.u30", 0x140001, 0x10000, CRC(3ebf8c30) SHA1(b2018b55cf2339fcf67b338fa2804afa2e47d577) )
- ROM_LOAD16_BYTE( "argh-12-hi-11-28-87.u25", 0x160000, 0x10000, CRC(0e055d4a) SHA1(8993596018e90107623e04c24e91b02887d6252c) )
- ROM_LOAD16_BYTE( "argh-12-lo-11-28-87.u29", 0x160001, 0x10000, CRC(940168b0) SHA1(7f86226d533a5d5a84fbcaeea5c4ac08e0e7df09) )
-ROM_END
-
-/*************************************
- *
- * Low byte ROM decoding
- *
- *************************************/
-
-void arcadia_amiga_state::generic_decode(const char *tag, int bit7, int bit6, int bit5, int bit4, int bit3, int bit2, int bit1, int bit0)
-{
- UINT16 *rom = (UINT16 *)memregion(tag)->base();
- int i;
+ROM_START(hanihac)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
- /* only the low byte of ROMs are encrypted in these games */
- for (i = 0; i < 0x20000/2; i++)
- rom[i] = BITSWAP16(rom[i], 15,14,13,12,11,10,9,8, bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0);
+ROM_START(hmg2650)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
- #if 0
- {
- UINT8 *ROM = memregion(tag)->base();
- // int size = memregion(tag)->bytes();
-
- FILE *fp;
- char filename[256];
- sprintf(filename,"decrypted_%s", machine().system().name);
- fp=fopen(filename, "w+b");
- if (fp)
- {
- for (i = 0; i < 0x20000; i++)
- fwrite(&ROM[i*2], 1, 1, fp);
+ROM_START(intmpt03)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
- fclose(fp);
- }
- }
- #endif
-}
+ROM_START(ixl2000)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
+ROM_START(intervsn)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
+ROM_START(itmcmtp3)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-/*************************************
- *
- * Generic driver init
- *
- *************************************/
+ROM_START(lvision)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-DRIVER_INIT_MEMBER( arcadia_amiga_state, arcadia )
-{
- m_agnus_id = AGNUS_HR_NTSC;
- m_denise_id = DENISE;
+ROM_START(leonardo)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
- /* OnePlay bios is encrypted, TenPlay is not */
- UINT16 *biosrom = (UINT16 *)memregion("user2")->base();
+ROM_START(mratlus)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
- if (biosrom)
- if (biosrom[0] != 0x4afc)
- generic_decode("user2", 6, 1, 0, 2, 3, 4, 5, 7);
-}
+ROM_START(ormatu)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
+ROM_START(plldium)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
+ROM_START(polyvcg)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
+ROM_START(poppympt)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-/*************************************
- *
- * Per-game decryption
- *
- *************************************/
+ROM_START(prestmpt)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-DRIVER_INIT_MEMBER(arcadia_amiga_state,airh) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 5, 0, 2, 4, 7, 6, 1, 3); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,bowl) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 7, 6, 0, 1, 2, 3, 4, 5); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,blast){ DRIVER_INIT_CALL(arcadia); generic_decode("user3", 4, 1, 7, 6, 2, 0, 3, 5); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,dart) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 4, 0, 7, 6, 3, 1, 2, 5); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,ldrb) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 2, 3, 4, 1, 0, 7, 5, 6); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,ninj) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 1, 6, 5, 7, 4, 2, 0, 3); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,rdwr) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 3, 1, 6, 4, 0, 5, 2, 7); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,sdwr) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 6, 3, 4, 5, 2, 1, 0, 7); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,socc) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 0, 7, 1, 6, 5, 4, 3, 2); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,sprg) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 4, 7, 3, 0, 6, 5, 2, 1); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,xeon) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 3, 1, 2, 4, 0, 5, 6, 7); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,pm) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 7, 6, 5, 4, 3, 2, 1, 0); } // no scramble
-DRIVER_INIT_MEMBER(arcadia_amiga_state,dlta) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 4, 1, 7, 6, 2, 0, 3, 5); }
-DRIVER_INIT_MEMBER(arcadia_amiga_state,argh) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 5, 0, 2, 4, 7, 6, 1, 3); }
+ROM_START(rowtrn2k)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
+ROM_START(tvg2000)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-/*************************************
- *
- * Game drivers
- *
- *************************************/
+ROM_START(sheenhvc)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-/* BIOS */
-GAME( 1988, ar_bios, 0, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Arcadia System BIOS", GAME_IS_BIOS_ROOT )
+ROM_START(soundic)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-GAME( 1988, ar_blast, ar_bios, arcadia, arcadia, arcadia_amiga_state, blast, ROT0, "Arcadia Systems", "Blastaball (Arcadia, V 2.1)", 0 )
+ROM_START(telefevr)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-GAME( 1988, ar_airh, ar_bios, arcadia, arcadia, arcadia_amiga_state, airh, ROT0, "Arcadia Systems", "SportTime Table Hockey (Arcadia, set 1, V 2.1)", 0 )
-GAME( 1988, ar_airh2, ar_airh, arcadia, arcadia, arcadia_amiga_state, airh, ROT0, "Arcadia Systems", "SportTime Table Hockey (Arcadia, set 2)", 0 )
+ROM_START(tempestm)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-GAME( 1988, ar_bowl, ar_bios, arcadia, arcadia, arcadia_amiga_state, bowl, ROT0, "Arcadia Systems", "SportTime Bowling (Arcadia, V 2.1)", 0 )
+ROM_START(tbbympt3)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-GAME( 1987, ar_dart, ar_bios, arcadia, arcadia, arcadia_amiga_state, dart, ROT0, "Arcadia Systems", "World Darts (Arcadia, set 1, V 2.1)", 0 )
-GAME( 1987, ar_dart2, ar_dart, arcadia, arcadia, arcadia_amiga_state, dart, ROT0, "Arcadia Systems", "World Darts (Arcadia, set 2)", GAME_NOT_WORKING ) // bad dump
+ROM_START(trakcvg)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-GAME( 1988, ar_fast, ar_bios, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Magic Johnson's Fast Break (Arcadia, V 2.8)", 0 )
-GAME( 1988, ar_fasta, ar_fast, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Magic Johnson's Fast Break (Arcadia, V 2.7)", 0 )
+ROM_START(tunixha)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-GAME( 1988, ar_ldrb, ar_bios, arcadia, arcadia, arcadia_amiga_state, ldrb, ROT0, "Arcadia Systems", "Leader Board (Arcadia, set 1, V 2.5)", 0 )
-GAME( 1988, ar_ldrba, ar_ldrb, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Leader Board (Arcadia, set 2, V 2.4)", 0 )
-GAME( 1988, ar_ldrbb, ar_ldrb, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Leader Board (Arcadia, set 3)", 0 )
+ROM_START(tryomvgc)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-GAME( 1987, ar_ninj, ar_bios, arcadia, arcadia, arcadia_amiga_state, ninj, ROT0, "Arcadia Systems", "Ninja Mission (Arcadia, set 1, V 2.5)", 0 )
-GAME( 1987, ar_ninj2, ar_ninj, arcadia, arcadia, arcadia_amiga_state, ninj, ROT0, "Arcadia Systems", "Ninja Mission (Arcadia, set 2)", 0 )
+ROM_START(orbituvi)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-GAME( 1988, ar_rdwr, ar_bios, arcadia, arcadia, arcadia_amiga_state, rdwr, ROT0, "Arcadia Systems", "RoadWars (Arcadia, V 2.3)", 0 )
+ROM_START(vdmaster)
+ ROM_REGION(0x8000,"maincpu", ROMREGION_ERASEFF)
+ ROM_REGION(0x100,"gfx1", ROMREGION_ERASEFF)
+ROM_END
-GAME( 1988, ar_sdwr, ar_bios, arcadia, arcadia, arcadia_amiga_state, sdwr, ROT0, "Arcadia Systems", "Sidewinder (Arcadia, set 1, V 2.1)", 0 )
-GAME( 1988, ar_sdwr2, ar_sdwr, arcadia, arcadia, arcadia_amiga_state, sdwr, ROT0, "Arcadia Systems", "Sidewinder (Arcadia, set 2)", 0 )
-GAME( 1989, ar_socc, ar_bios, arcadia, arcadia, arcadia_amiga_state, socc, ROT0, "Arcadia Systems", "World Trophy Soccer (Arcadia, V 3.0)", 0 )
+/***************************************************************************
-GAME( 1990, ar_spot, ar_bios, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Spot (Arcadia, V 2.0)", 0 )
+ Game driver(s)
-GAME( 1987, ar_sprg, ar_bios, arcadia, arcadia, arcadia_amiga_state, sprg, ROT0, "Arcadia Systems", "Space Ranger (Arcadia, V 2.0)", 0 )
+***************************************************************************/
-GAME( 1988, ar_xeon, ar_bios, arcadia, arcadia, arcadia_amiga_state, xeon, ROT0, "Arcadia Systems", "Xenon (Arcadia, V 2.3)", 0 )
+DRIVER_INIT_MEMBER(arcadia_state,arcadia)
+{
+ int i;
+ UINT8 *gfx=memregion("gfx1")->base();
+ for (i=0; i<256; i++) gfx[i]=i;
+#if 0
+ // this is here to allow developement of some simple testroutines
+ // for a real console
+ {
+ UINT8 *rom=memregion("maincpu")->base();
+ /* this is a simple routine to display all rom characters
+ on the display for a snapshot */
+ static const UINT8 prog[]={ // address 0 of course
+ 0x20, // eorz, 0
+ 0x1b, 0x01, // bctr,a $0004
+ 0x17, // retc a
+ 0x76, 0x20, // ppsu ii
+
+ // fill screen
+ 0x04, 0x00, // lodi,0 0
+ 0x04|1, 0x00, // lodi,1 0
+ 0xcc|1, 0x78, 0x10, //a: stra,0 $1800,r1
+ 0x75,9, //cpsl wc|c
+ 0x84,0x41, // addi,0 0x41
+ 0x75,9, //cpsl wc|c
+ 0x84|1, 0x01, // addi,1 1
+ 0xe4|1, 0x40, // comi,1 40
+ 0x98, 0x80-15, // bcfr,0 a
+
+ 0x04, 0xff, // lodi,0 7
+ 0xcc, 0x18, 0xfc, // stra,0 $19f8
+ 0x04, 0x00, // lodi,0 7
+ 0xcc, 0x18, 0xfd, // stra,0 $18fd
+ 0x04, 0x07, // lodi,0 7
+ 0xcc, 0x19, 0xf9, // stra,0 $19f9
+
+ 0x04, 0x00, // lodi,0 7
+ 0xcc, 0x19, 0xbe, // stra,0 $19bf
+ 0x04, 0x00, // lodi,0 7
+ 0xcc, 0x19, 0xbf, // stra,0 $19bf
+
+ //loop: 0x0021
+ // print keyboards
+ 0x04|1, 0x00, //y:lodi,1 0
+ 0x0c|1, 0x79, 0x00, //x: ldra,0 1900,r1
+ 0x44|0, 0x0f, //andi,0 0f
+ 0x64|0, 0x10, //ori,0 10
+ 0xcc|1, 0x78, 0x01, //stra,0 1840,r1
+ 0x75,9, //cpsl wc|c
+ 0x84|1, 0x01, //addi,1 1
+ 0xe4|1, 0x09, //comi,1 9
+ 0x98, 0x80-18, //bcfr,0 x
+
+ // cycle colors
+ 0x0c|1, 0x19, 0x00, //ldra,1 1900
+ 0x44|1, 0xf, //andi,0 0f
+ 0xe4|1, 1, //comi,1 1
+ 0x98, +10, //bcfr,0 c
+ 0x0c, 0x19, 0xbf,//ldra,0 19f9,0
+ 0x84, 1, //addi,0 1
+ 0xcc, 0x19, 0xbf, //stra,0 19f9,0
+ 0x18|3, 12, // bctr,a
+ 0xe4|1, 2, //c:comi,1 2
+ 0x98, +10, //bcfr,0 d
+ 0x0c, 0x19, 0xbf, //ldra,0 19f9,0
+ 0x84, 8, //addi,0 8
+ 0xcc, 0x19, 0xbf, //stra,0 19f9,0
+ 0x18|3, 12, // bctr,a
+
+ // cycle colors
+ 0xe4|1, 4, //comi,1 4
+ 0x98, +10, //bcfr,0 c
+ 0x0c, 0x19, 0xbe,//ldra,0 19f9,0
+ 0x84, 1, //addi,0 1
+ 0xcc, 0x19, 0xbe, //stra,0 19f9,0
+ 0x18|3, 12, // bctr,a
+ 0xe4|1, 8, //c:comi,1 2
+ 0x98, +8+9, //bcfr,0 d
+ 0x0c, 0x19, 0xbe, //ldra,0 19f9,0
+ 0x84, 8, //addi,0 8
+ 0xcc, 0x19, 0xbe, //stra,0 19f9,0
+
+ 0x0c, 0x19, 0x00, //b: ldra,0 1900
+ 0x44|0, 0xf, //andi,0 0f
+ 0xe4, 0, //comi,0 0
+ 0x98, 0x80-9, //bcfr,0 b
+
+ 0x0c, 0x19, 0xbe, //ldra,0 19bf
+ 0xcc, 0x19, 0xf8, //stra,0 19f8
+ 0x0c, 0x19, 0xbf, //ldra,0 19bf
+ 0xcc, 0x19, 0xf9, //stra,0 19f8
+
+ 0x0c, 0x19, 0xbe, //ldra,0 17ff
+ 0x44|0, 0xf, //andi,0 7
+ 0x64|0, 0x10, //ori,0 10
+ 0xcc, 0x18, 0x0d, //stra,0 180f
+ 0x0c, 0x19, 0xbe, //x: ldra,0 19bf
+ 0x50, 0x50, 0x50, 0x50, //shr,0 4
+ 0x44|0, 0xf, //andi,0 7
+ 0x64|0, 0x10, //ori,0 10
+ 0xcc, 0x18, 0x0c, //stra,0 180e
+
+ 0x0c, 0x19, 0xbf, //ldra,0 17ff
+ 0x44|0, 0xf, //andi,0 7
+ 0x64|0, 0x10, //ori,0 10
+ 0xcc, 0x18, 0x0f, //stra,0 180f
+ 0x0c, 0x19, 0xbf, //x: ldra,0 19bf
+ 0x50, 0x50, 0x50, 0x50, //shr,0 4
+ 0x44|0, 0xf, //andi,0 7
+ 0x64|0, 0x10, //ori,0 10
+ 0xcc, 0x18, 0x0e, //stra,0 180e
+
+ 0x0c, 0x18, 0x00, //ldra,0 1800
+ 0x84, 1, //addi,0 1
+ 0xcc, 0x18, 0x00, //stra,0 1800
+
+// 0x1b, 0x80-20-29-26-9-8-2 // bctr,a y
+ 0x1c|3, 0, 0x32, // bcta,3 loop
+
+ // calling too many subdirectories causes cpu to reset!
+ // bxa causes trap
+ };
+#if 1
+ FILE *f;
+ f=fopen("chartest.bin","wb");
+ fwrite(prog, ARRAY_LENGTH(prog), sizeof(prog[0]), f);
+ fclose(f);
+#endif
+ for (i=0; i<ARRAY_LENGTH(prog); i++) rom[i]=prog[i];
-GAME( 1988, ar_pm, ar_bios, arcadia, arcadia, arcadia_amiga_state, pm, ROT0, "Arcadia Systems", "Pharaohs Match (Arcadia)", 0 )
+ }
+#endif
+}
-GAME( 1988, ar_dlta, ar_bios, arcadia, arcadia, arcadia_amiga_state, dlta, ROT0, "Arcadia Systems", "Delta Command (Arcadia)", 0 )
-GAME( 1988, ar_argh, ar_bios, argh, arcadia, arcadia_amiga_state, argh, ROT0, "Arcadia Systems", "Aaargh (Arcadia)", 0 )
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
+CONS(1983, advsnha, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Advision", "Advision Home Arcade", MACHINE_IMPERFECT_SOUND ) /* France */
+CONS(1982, bndarc, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Bandai", "Arcadia", MACHINE_IMPERFECT_SOUND ) /* Japan */
+CONS(1982, arcadia, 0, 0, arcadia, arcadia, arcadia_state, arcadia, "Emerson", "Arcadia 2001", MACHINE_IMPERFECT_SOUND ) /* U.S.A. */
+CONS(198?, tccosmos, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Mobilar?", "Tele-Computer Cosmos", MACHINE_IMPERFECT_SOUND ) /* Spain? I have only found pictures of a German Cosmos ( http://www.pong-picture-page.de/catalog/product_info.php?products_id=2170 ) */
+CONS(1982, dynavisn, intmpt03, 0, arcadia, arcadia, arcadia_state, arcadia, "Yamagiwa", "Dynavision", MACHINE_IMPERFECT_SOUND ) /* Japan */
+CONS(1982, ekusera, intmpt03, 0, arcadia, arcadia, arcadia_state, arcadia, "P.I.C", "Ekusera", MACHINE_IMPERFECT_SOUND ) /* Japan */
+CONS(1982, hanihac, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Hanimex", "Hanimex Home Arcade Centre", MACHINE_IMPERFECT_SOUND ) /* UK */
+CONS(1982, hmg2650, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Hanimex", "HMG-2650", MACHINE_IMPERFECT_SOUND ) /* Germany */
+CONS(198?, intmpt03, 0, arcadia, arcadia, arcadia, arcadia_state, arcadia, "Intelligent Game", "Intelligent Game MPT-03", MACHINE_IMPERFECT_SOUND ) /* U.S.A */
+CONS(198?, ixl2000, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Intercord", "Intercord XL 2000 System", MACHINE_IMPERFECT_SOUND ) /* Germany */
+CONS(198?, intervsn, ormatu, 0, arcadia, arcadia, arcadia_state, arcadia, "Intervision", "Intervision 2001", MACHINE_IMPERFECT_SOUND ) /* Switzerland */
+CONS(198?, itmcmtp3, intmpt03, 0, arcadia, arcadia, arcadia_state, arcadia, "ITMC", "ITMC MPT-03", MACHINE_IMPERFECT_SOUND ) /* France */
+CONS(1982, lvision, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Leisure-Dynamics", "Leisure-Vision", MACHINE_IMPERFECT_SOUND ) /* Canada */
+CONS(1982, leonardo, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "GiG Electronics", "Leonardo", MACHINE_IMPERFECT_SOUND ) /* Italy */
+CONS(1983, mratlus, plldium, 0, arcadia, arcadia, arcadia_state, arcadia, "H.G.S.", "Mr. Altus Tele Brain", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* Germany */
+CONS(198?, ormatu, 0, arcadia, arcadia, arcadia, arcadia_state, arcadia, "Ormatu Electronics", "Ormatu 2001", MACHINE_IMPERFECT_SOUND ) /* Netherlands */
+CONS(198?, plldium, 0, arcadia, arcadia, plldium, arcadia_state, arcadia, "Neckermann", "Palladium Video-Computer-Game", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* Germany, 16 keys instead of 12 */
+CONS(1983, polyvcg, plldium, 0, arcadia, arcadia, arcadia_state, arcadia, "Polybrain", "Polybrain Video Computer Game", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* Germany */
+CONS(198?, poppympt, intmpt03, 0, arcadia, arcadia, arcadia_state, arcadia, "Transonic", "Poppy MPT-03 Tele Computer Spiel", MACHINE_IMPERFECT_SOUND ) /* Germany */
+CONS(198?, prestmpt, intmpt03, 0, arcadia, arcadia, arcadia_state, arcadia, "Prestige", "Prestige Video Computer Game MPT-03", MACHINE_IMPERFECT_SOUND ) /* France */
+CONS(198?, rowtrn2k, intmpt03, 0, arcadia, arcadia, arcadia_state, arcadia, "Rowtron", "Rowtron 2000", MACHINE_IMPERFECT_SOUND ) /* UK */
+CONS(1982, tvg2000, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Schmid", "Schmid TVG 2000", MACHINE_IMPERFECT_SOUND ) /* Germany */
+CONS(198?, sheenhvc, ormatu, 0, arcadia, arcadia, arcadia_state, arcadia, "Sheen", "Sheen Home Video Centre 2001", MACHINE_IMPERFECT_SOUND ) /* Australia */
+CONS(198?, soundic, intmpt03, 0, arcadia, arcadia, arcadia_state, arcadia, "Soundic", "Soundic MPT-03", MACHINE_IMPERFECT_SOUND ) /* Finland */
+CONS(198?, telefevr, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Tchibo", "Tele-Fever", MACHINE_IMPERFECT_SOUND ) /* Germany */
+CONS(198?, tempestm, intmpt03, 0, arcadia, arcadia, arcadia_state, arcadia, "Tempest", "Tempest MPT-03", MACHINE_IMPERFECT_SOUND ) /* Australia */
+CONS(198?, tbbympt3, intmpt03, 0, arcadia, arcadia, arcadia_state, arcadia, "Tobby", "Tobby MPT-03", MACHINE_IMPERFECT_SOUND ) /* ? */
+CONS(198?, trakcvg, plldium, 0, arcadia, arcadia, arcadia_state, arcadia, "Trakton", "Trakton Computer Video Game", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) /* Australia */
+CONS(1982, tunixha, arcadia, 0, arcadia, arcadia, arcadia_state, arcadia, "Monaco Leisure", "Tunix Home Arcade", MACHINE_IMPERFECT_SOUND ) /* New Zealand */
+CONS(198?, tryomvgc, intmpt03, 0, arcadia, arcadia, arcadia_state, arcadia, "Tryom", "Tryom Video Game Center", MACHINE_IMPERFECT_SOUND ) /* U.S.A */
+CONS(198?, orbituvi, 0, arcadia, arcadia, arcadia, arcadia_state, arcadia, "Orbit Electronics", "UVI Compu-Game", MACHINE_IMPERFECT_SOUND ) /* New Zealand */
+CONS(198?, vdmaster, orbituvi, 0, arcadia, arcadia, arcadia_state, arcadia, "Grandstand", "Video Master", MACHINE_IMPERFECT_SOUND ) /* New Zealand */
diff --git a/src/mess/drivers/argo.c b/src/mame/drivers/argo.c
index 4520b96eaa4..34ea530a86f 100644
--- a/src/mess/drivers/argo.c
+++ b/src/mame/drivers/argo.c
@@ -379,4 +379,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1986, argo, 0, 0, argo, argo, argo_state, argo, "<unknown>", "Argo", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1986, argo, 0, 0, argo, argo, argo_state, argo, "<unknown>", "Argo", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/argus.c b/src/mame/drivers/argus.c
index bb4da4494d1..b6c6cf16e95 100644
--- a/src/mame/drivers/argus.c
+++ b/src/mame/drivers/argus.c
@@ -800,7 +800,7 @@ ROM_END
/* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME ) */
-GAME( 1986, argus, 0, argus, argus, driver_device, 0, ROT270, "NMK (Jaleco license)", "Argus", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1986, valtric, 0, valtric, valtric, driver_device, 0, ROT270, "NMK (Jaleco license)", "Valtric", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1987, butasan, 0, butasan, butasan, driver_device, 0, ROT0, "NMK (Jaleco license)", "Butasan - Pig's & Bomber's (Japan, English)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1987, butasanj, butasan,butasan, butasan, driver_device, 0, ROT0, "NMK (Jaleco license)", "Butasan (Japan, Japanese)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1986, argus, 0, argus, argus, driver_device, 0, ROT270, "NMK (Jaleco license)", "Argus", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, valtric, 0, valtric, valtric, driver_device, 0, ROT270, "NMK (Jaleco license)", "Valtric", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, butasan, 0, butasan, butasan, driver_device, 0, ROT0, "NMK (Jaleco license)", "Butasan - Pig's & Bomber's (Japan, English)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, butasanj, butasan,butasan, butasan, driver_device, 0, ROT0, "NMK (Jaleco license)", "Butasan (Japan, Japanese)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/aristmk4.c b/src/mame/drivers/aristmk4.c
index 166e01c0be1..1e7d7b7981b 100644
--- a/src/mame/drivers/aristmk4.c
+++ b/src/mame/drivers/aristmk4.c
@@ -2359,7 +2359,7 @@ ROM_START( gunnrose ) // MK2.5
ROM_END
-GAMEL( 1985, 86lions, 0, 86lions, aristmk4, aristmk4_state, aristmk4, ROT0, "Aristocrat", "86 Lions", GAME_NOT_WORKING, layout_topgear )
+GAMEL( 1985, 86lions, 0, 86lions, aristmk4, aristmk4_state, aristmk4, ROT0, "Aristocrat", "86 Lions", MACHINE_NOT_WORKING, layout_topgear )
GAMEL( 1996, eforest, 0, aristmk4, eforest, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Enchanted Forest (12XF528902, US)", 0, layout_eforest )
GAMEL( 1995, eforesta, eforest, aristmk4, aristmk4, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Enchanted Forest (4VXFC818, NSW)", 0, layout_aristmk4 ) // 10c, $1 = 10 credits
GAMEL( 1996, eforestb, eforest, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Enchanted Forest (3VXFC5343, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits
@@ -2377,7 +2377,7 @@ GAMEL( 1996, goldenc, 0, aristmk4, goldenc, aristmk4_state, aristmk4, R
GAMEL( 1999, autmoon, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Autumn Moon (1VXFC5488, New Zealand)", 0, layout_arimk4nz ) // 5c, $2 = 40 credits
GAMEL( 2000, coralr2, 0, aristmk4, arimk4nz, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Coral Riches II (1VXFC5472, New Zealand)", 0, layout_arimk4nz ) // 2c, $2 = 100 credits
GAMEL( 1986, gtroppo, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Gone Troppo (1VXEC542, New Zealand)", 0, layout_topgear ) // possibly 20c, 1 coin = 1 credit
-GAMEL( 1986, clkwise, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Clockwise (1VXEC534, New Zealand)", GAME_NOT_WORKING, layout_topgear ) // 20c, 1 coin = 1 credit
+GAMEL( 1986, clkwise, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Clockwise (1VXEC534, New Zealand)", MACHINE_NOT_WORKING, layout_topgear ) // 20c, 1 coin = 1 credit
GAMEL( 1986, cgold, 0, aristmk4, topgear, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Caribbean Gold (3VXEC449, USA)", 0, layout_topgear ) // 25c, 1 coin = 1 credit
GAMEL( 1995, cgold2, 0, aristmk4, cgold2, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Caribbean Gold II (3XF5182H04, USA)", 0, layout_cgold2 )
GAMEL( 1996, fhunter, 0, aristmk4, fhunter, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Fortune Hunter (2XF5196I01, USA)", 0, layout_fhunter )
@@ -2385,4 +2385,4 @@ GAMEL( 1996, fhuntera, fhunter, aristmk4, fhunter, aristmk4_state, aristmk4, R
GAMEL( 1996, arcwins, 0, aristmk4, arcwins, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Arctic Wins (4XF5227H03, USA)", 0, layout_arcwins )
GAMEL( 1997, wildone, 0, aristmk4_poker, wildone, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Wild One (4VXEC5357, New Zealand)", 0, layout_wildone ) // 20c, $2 = 10 credits, video poker
GAMEL( 1986, gldnpkr, 0, aristmk4_poker, gldnpkr, aristmk4_state, aristmk4, ROT0, "Ainsworth Nominees P.L.", "Golden Poker (8VXEC037, New Zealand)", 0, layout_gldnpkr ) // possibly 20c, 1 coin = 1 credit, video poker
-GAMEL( 1993, gunnrose, 0, aristmk4_poker, wildone, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Guns and Roses (C606191SMP, Australia)", GAME_WRONG_COLORS, layout_gunnrose )
+GAMEL( 1993, gunnrose, 0, aristmk4_poker, wildone, aristmk4_state, aristmk4, ROT0, "Aristocrat", "Guns and Roses (C606191SMP, Australia)", MACHINE_WRONG_COLORS, layout_gunnrose )
diff --git a/src/mame/drivers/aristmk5.c b/src/mame/drivers/aristmk5.c
index 6e2a1b7cc89..8c64c6d31ba 100644
--- a/src/mame/drivers/aristmk5.c
+++ b/src/mame/drivers/aristmk5.c
@@ -738,20 +738,20 @@ ROM_START( magicmsk )
ROM_REGION( 0x20000*4, "sram", ROMREGION_ERASE00 )
ROM_END
-GAME( 1995, aristmk5, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "MKV Set/Clear Chips (USA)", GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
+GAME( 1995, aristmk5, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "MKV Set/Clear Chips (USA)", MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT )
// Dates listed below are for the combination (reel layout), not release dates
-GAME( 1995, enchfrst, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Enchanted Forest (0400122V, Local)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // 570/3, E - 23/06/95
-GAME( 1995, swthrt2v, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweet Hearts II (01J01986, Venezuela)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // 577/1, C - 07/09/95
-GAME( 1996, dolphntr, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0200424V, NSW/ACT)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // 602/1, B - 06/12/96
-GAME( 1996, dolphtra, dolphntr, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0100424V, NSW/ACT)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // 602/1, B - 06/12/96
-GAME( 1997, goldprmd, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (MV4091, USA)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // MV4091, B - 13/05/97
-GAME( 1997, qotn, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0200439V, NSW/ACT)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // 602/4, B - 13/05/97
-GAME( 1997, dmdtouch, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Diamond Touch (0400433V, Local)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // 604, E - 30/06/97
-GAME( 1998, adonis, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (0200751V, NSW/ACT)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // 602/9, A - 25/05/98
-GAME( 1998, reelrock, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Reelin-n-Rockin (0100779V, Local)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // 628, A - 13/07/98
-GAME( 1998, indiandr, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Indian Dreaming (0100845V, Local)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // 628/1, B - 15/12/98
-GAME( 1999, wtiger, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // 638/1, B - 08/07/99
-GAME( 2000, magicmsk, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Mask (MV4115, Export)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // MV4115, A - 09/05/2000
-GAME( 2000, margmgc, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // JB005, A - 07/07/2000
-GAME( 2001, geishanz, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Geisha (0101408V, New Zealand)", GAME_NOT_WORKING|GAME_IMPERFECT_SOUND ) // MV4127, A - 05/03/01
+GAME( 1995, enchfrst, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Enchanted Forest (0400122V, Local)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 570/3, E - 23/06/95
+GAME( 1995, swthrt2v, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Sweet Hearts II (01J01986, Venezuela)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 577/1, C - 07/09/95
+GAME( 1996, dolphntr, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0200424V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/1, B - 06/12/96
+GAME( 1996, dolphtra, dolphntr, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Dolphin Treasure (0100424V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/1, B - 06/12/96
+GAME( 1997, goldprmd, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Golden Pyramids (MV4091, USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4091, B - 13/05/97
+GAME( 1997, qotn, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Queen of the Nile (0200439V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/4, B - 13/05/97
+GAME( 1997, dmdtouch, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Diamond Touch (0400433V, Local)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 604, E - 30/06/97
+GAME( 1998, adonis, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Adonis (0200751V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 602/9, A - 25/05/98
+GAME( 1998, reelrock, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Reelin-n-Rockin (0100779V, Local)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 628, A - 13/07/98
+GAME( 1998, indiandr, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Indian Dreaming (0100845V, Local)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 628/1, B - 15/12/98
+GAME( 1999, wtiger, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "White Tiger Classic (0200954V, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // 638/1, B - 08/07/99
+GAME( 2000, magicmsk, aristmk5, aristmk5_usa, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Magic Mask (MV4115, Export)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4115, A - 09/05/2000
+GAME( 2000, margmgc, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Margarita Magic (01J00101, NSW/ACT)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // JB005, A - 07/07/2000
+GAME( 2001, geishanz, 0, aristmk5, aristmk5, aristmk5_state, aristmk5, ROT0, "Aristocrat", "Geisha (0101408V, New Zealand)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_SOUND ) // MV4127, A - 05/03/01
diff --git a/src/mame/drivers/aristmk6.c b/src/mame/drivers/aristmk6.c
index 7ec076a6a2c..e06fed3411d 100644
--- a/src/mame/drivers/aristmk6.c
+++ b/src/mame/drivers/aristmk6.c
@@ -250,20 +250,20 @@ ROM_START( thaiprin )
ROM_LOAD32_WORD("30127721.u72", 0x0800002, 0x0100000, BAD_DUMP CRC(613cea6b) SHA1(f04a3ee53074b7cd84879d752df5dbb80437475e) ) // wrong size?!
ROM_END
-GAME( 200?, aristmk6, 0, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Aristocrat MK6 Base (15011025, Malaysia)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IS_BIOS_ROOT)
-GAME( 200?, mk6nsw11, 0, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Aristocrat MK6 Base (11011901, NSW/ACT)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_IS_BIOS_ROOT)
+GAME( 200?, aristmk6, 0, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Aristocrat MK6 Base (15011025, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_BIOS_ROOT)
+GAME( 200?, mk6nsw11, 0, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Aristocrat MK6 Base (11011901, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IS_BIOS_ROOT)
// Dates listed below are for the combination (reel layout), not release dates
-GAME( 2004, antcleo, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Antony and Cleopatra (10177211, Malaysia)", GAME_NOT_WORKING | GAME_NO_SOUND ) // 754, B - 12/07/04
-GAME( 2002, 50lions, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "50 Lions (10120511, NSW/ACT)", GAME_NOT_WORKING | GAME_NO_SOUND ) // 717, A - 11/10/02
-GAME( 2003, 50lionsa, 50lions, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "50 Lions (10156111, Malaysia)", GAME_NOT_WORKING | GAME_NO_SOUND ) // 717, D - 20/10/03
-GAME( 2003, choysun, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Choy Sun Doa (20131511, Malaysia)", GAME_NOT_WORKING | GAME_NO_SOUND ) // 688, D - 23/01/03
-GAME( 2003, crystals, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Crystal Springs (10155811, Malaysia)", GAME_NOT_WORKING | GAME_NO_SOUND ) // 740, A - 28/05/03
-GAME( 2003, indianmm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Indian Dreaming - Maximillion$ (10130711, NSW/ACT)", GAME_NOT_WORKING | GAME_NO_SOUND ) // 628/12, A - 17/01/03
-GAME( 2004, wheregld, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Where's the Gold (20177111, Malaysia)", GAME_NOT_WORKING | GAME_NO_SOUND ) // 756, C - 17/06/04
-GAME( 2002, whalecsh, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Whales of Cash (20155711, Malaysia)", GAME_NOT_WORKING | GAME_NO_SOUND ) // 695, A - 14/06/02
-GAME( 2003, wildways, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Ways (10130111, Malaysia)", GAME_NOT_WORKING | GAME_NO_SOUND ) // 698/1, A - 25/02/03
-GAME( 2003, thaiprin, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Thai Princess (30127721, Malaysia)", GAME_NOT_WORKING | GAME_NO_SOUND ) // 707, E - 21/03/03
+GAME( 2004, antcleo, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Antony and Cleopatra (10177211, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 754, B - 12/07/04
+GAME( 2002, 50lions, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "50 Lions (10120511, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717, A - 11/10/02
+GAME( 2003, 50lionsa, 50lions, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "50 Lions (10156111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 717, D - 20/10/03
+GAME( 2003, choysun, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Choy Sun Doa (20131511, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 688, D - 23/01/03
+GAME( 2003, crystals, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Crystal Springs (10155811, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 740, A - 28/05/03
+GAME( 2003, indianmm, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Indian Dreaming - Maximillion$ (10130711, NSW/ACT)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 628/12, A - 17/01/03
+GAME( 2004, wheregld, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Where's the Gold (20177111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 756, C - 17/06/04
+GAME( 2002, whalecsh, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Whales of Cash (20155711, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 695, A - 14/06/02
+GAME( 2003, wildways, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Wild Ways (10130111, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 698/1, A - 25/02/03
+GAME( 2003, thaiprin, aristmk6, aristmk6, aristmk6, driver_device, 0, ROT0, "Aristocrat", "Thai Princess (30127721, Malaysia)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // 707, E - 21/03/03
/*
List of known MK6 games, excluding Hyperlink variations
diff --git a/src/mame/drivers/arkanoid.c b/src/mame/drivers/arkanoid.c
index 64693872fea..3ed22627d6b 100644
--- a/src/mame/drivers/arkanoid.c
+++ b/src/mame/drivers/arkanoid.c
@@ -1366,38 +1366,38 @@ MACHINE_CONFIG_END
/* ROMs */
/* rom numbering, with guesses:
- A75 01 = Z80 code 1/2 v1.0 Japan
- A75 01-1 = Z80 code 1/2 v1.1 Japan and USA/Romstar
- A75 02 = Z80 code 2/2 v1.0 Japan
- A75 03 = GFX 1/3
- A75 04 = GFX 2/3
- A75 05 = GFX 3/3
- A75 06 = MC68705P5 MCU code, v1.0 Japan and v1.0 USA/Romstar
- A75 07 = PROM red
- A75 08 = PROM green
- A75 09 = PROM blue
- A75 10 = Z80 code 2/2 v1.1 USA/Romstar
- A75 11 = Z80 code 2/2 v1.2 Japan (paired with 01-1 v1.1 Japan)
- (A75 12 through 17 are unknown, could be another two sets of z80 code plus mc68705p5)
- A75 18 = Z80 code v2.0 2/2 USA/Romstar
- A75 19 = Z80 code v2.0 1/2 USA/Romstar
- A75 20 = MC68705P5 MCU code, v2.0 USA/Romstar
- A75 21 = Z80 code v2.0 1/2 Japan
- A75 22 = Z80 code v2.0 2/2 Japan
- A75 23 = MC68705P5 MCU code, v2.0 Japan
- A75 24 = Z80 code v2.1 1/2 Japan
- A75 25 = Z80 code v2.1 2/2 Japan
- A75 26 = MC68705P5 MCU code, v2.1 Japan
- A75 27 = Z80 code 1/2 Tournament
- A75 28 = Z80 code 2/2 Tournament
- A75 29 = GFX 1/3 Tournament
- A75 30 = GFX 2/3 Tournament
- A75 31 = GFX 3/3 Tournament
- A75 32 = MC68705P5 MCU code, Tournament
- A75 33 = PROM red Tournament
- A75 34 = PROM green Tournament
- A75 35 = PROM blue Tournament
- (one of the 21/22/23 or 24/25/26 sets is likely 'world'? or are these really two japan sets?)
+ A75 01 = Z80 code 1/2 v1.0 Japan
+ A75 01-1 = Z80 code 1/2 v1.1 Japan and USA/Romstar
+ A75 02 = Z80 code 2/2 v1.0 Japan
+ A75 03 = GFX 1/3
+ A75 04 = GFX 2/3
+ A75 05 = GFX 3/3
+ A75 06 = MC68705P5 MCU code, v1.0 Japan and v1.0 USA/Romstar
+ A75 07 = PROM red
+ A75 08 = PROM green
+ A75 09 = PROM blue
+ A75 10 = Z80 code 2/2 v1.1 USA/Romstar
+ A75 11 = Z80 code 2/2 v1.2 Japan (paired with 01-1 v1.1 Japan)
+ (A75 12 through 17 are unknown, could be another two sets of z80 code plus mc68705p5)
+ A75 18 = Z80 code v2.0 2/2 USA/Romstar
+ A75 19 = Z80 code v2.0 1/2 USA/Romstar
+ A75 20 = MC68705P5 MCU code, v2.0 USA/Romstar
+ A75 21 = Z80 code v2.0 1/2 Japan
+ A75 22 = Z80 code v2.0 2/2 Japan
+ A75 23 = MC68705P5 MCU code, v2.0 Japan
+ A75 24 = Z80 code v2.1 1/2 Japan
+ A75 25 = Z80 code v2.1 2/2 Japan
+ A75 26 = MC68705P5 MCU code, v2.1 Japan
+ A75 27 = Z80 code 1/2 Tournament
+ A75 28 = Z80 code 2/2 Tournament
+ A75 29 = GFX 1/3 Tournament
+ A75 30 = GFX 2/3 Tournament
+ A75 31 = GFX 3/3 Tournament
+ A75 32 = MC68705P5 MCU code, Tournament
+ A75 33 = PROM red Tournament
+ A75 34 = PROM green Tournament
+ A75 35 = PROM blue Tournament
+ (one of the 21/22/23 or 24/25/26 sets is likely 'world'? or are these really two japan sets?)
*/
ROM_START( arkanoid )
@@ -2049,33 +2049,33 @@ DRIVER_INIT_MEMBER(arkanoid_state,brixian)
/* Game Drivers */
// original sets of Arkanoid
-GAME( 1986, arkanoid, 0, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito Corporation Japan", "Arkanoid (World, oldest rev)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkanoidu, arkanoid, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkanoiduo, arkanoid, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US, oldest rev)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkanoidj, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkanoidja, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan, older rev)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkanoidjb, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan, oldest rev)", GAME_SUPPORTS_SAVE )
+GAME( 1986, arkanoid, 0, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito Corporation Japan", "Arkanoid (World, oldest rev)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoidu, arkanoid, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoiduo, arkanoid, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Arkanoid (US, oldest rev)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoidj, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoidja, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan, older rev)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoidjb, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "Taito Corporation", "Arkanoid (Japan, oldest rev)", MACHINE_SUPPORTS_SAVE )
// bootlegs of Arkanoid
-GAME( 1986, arkanoidjbl, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "bootleg", "Arkanoid (bootleg with MCU, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkanoidjbl2,arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "bootleg (Beta)", "Arkanoid (bootleg with MCU, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, ark1ball, arkanoid, arkanoid, ark1ball, driver_device, 0, ROT90, "bootleg", "Arkanoid (bootleg with MCU, harder)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkangc, arkanoid, bootleg, arkangc, arkanoid_state, arkangc, ROT90, "bootleg (Game Corporation)", "Arkanoid (Game Corporation bootleg, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkangc2, arkanoid, bootleg, arkangc2, arkanoid_state, arkangc2, ROT90, "bootleg (Game Corporation)", "Arkanoid (Game Corporation bootleg, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkblock, arkanoid, bootleg, arkangc, arkanoid_state, arkblock, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkbloc2, arkanoid, bootleg, arkangc, arkanoid_state, arkbloc2, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkbloc3, arkanoid, bootleg, block2, arkanoid_state, block2, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 3)", GAME_SUPPORTS_SAVE ) // Both these sets have an extra unknown rom
-GAME( 1986, block2, arkanoid, bootleg, block2, arkanoid_state, block2, ROT90, "bootleg (S.P.A. Co.)", "Block 2 (S.P.A. Co. bootleg)", GAME_SUPPORTS_SAVE ) // and scrambled gfx roms with 'space invader' themed gfx
-GAME( 1986, arkgcbl, arkanoid, bootleg, arkgcbl, arkanoid_state, arkgcbl, ROT90, "bootleg", "Arkanoid (bootleg on Block hardware, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkgcbla, arkanoid, bootleg, arkgcbl, arkanoid_state, arkgcbl, ROT90, "bootleg", "Arkanoid (bootleg on Block hardware, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1988, paddle2, arkanoid, bootleg, paddle2, arkanoid_state, paddle2, ROT90, "bootleg", "Paddle 2 (bootleg on Block hardware)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arkatayt, arkanoid, bootleg, arkatayt, driver_device, 0, ROT90, "bootleg (Tayto)", "Arkanoid (Tayto bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1986, arktayt2, arkanoid, bootleg, arktayt2, driver_device, 0, ROT90, "bootleg (Tayto)", "Arkanoid (Tayto bootleg, harder)", GAME_SUPPORTS_SAVE )
+GAME( 1986, arkanoidjbl, arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "bootleg", "Arkanoid (bootleg with MCU, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkanoidjbl2,arkanoid, arkanoid, arkanoidj, driver_device,0, ROT90, "bootleg (Beta)", "Arkanoid (bootleg with MCU, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ark1ball, arkanoid, arkanoid, ark1ball, driver_device, 0, ROT90, "bootleg", "Arkanoid (bootleg with MCU, harder)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkangc, arkanoid, bootleg, arkangc, arkanoid_state, arkangc, ROT90, "bootleg (Game Corporation)", "Arkanoid (Game Corporation bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkangc2, arkanoid, bootleg, arkangc2, arkanoid_state, arkangc2, ROT90, "bootleg (Game Corporation)", "Arkanoid (Game Corporation bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkblock, arkanoid, bootleg, arkangc, arkanoid_state, arkblock, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkbloc2, arkanoid, bootleg, arkangc, arkanoid_state, arkbloc2, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkbloc3, arkanoid, bootleg, block2, arkanoid_state, block2, ROT90, "bootleg (Game Corporation)", "Block (Game Corporation bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) // Both these sets have an extra unknown rom
+GAME( 1986, block2, arkanoid, bootleg, block2, arkanoid_state, block2, ROT90, "bootleg (S.P.A. Co.)", "Block 2 (S.P.A. Co. bootleg)", MACHINE_SUPPORTS_SAVE ) // and scrambled gfx roms with 'space invader' themed gfx
+GAME( 1986, arkgcbl, arkanoid, bootleg, arkgcbl, arkanoid_state, arkgcbl, ROT90, "bootleg", "Arkanoid (bootleg on Block hardware, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkgcbla, arkanoid, bootleg, arkgcbl, arkanoid_state, arkgcbl, ROT90, "bootleg", "Arkanoid (bootleg on Block hardware, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, paddle2, arkanoid, bootleg, paddle2, arkanoid_state, paddle2, ROT90, "bootleg", "Paddle 2 (bootleg on Block hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arkatayt, arkanoid, bootleg, arkatayt, driver_device, 0, ROT90, "bootleg (Tayto)", "Arkanoid (Tayto bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, arktayt2, arkanoid, bootleg, arktayt2, driver_device, 0, ROT90, "bootleg (Tayto)", "Arkanoid (Tayto bootleg, harder)", MACHINE_SUPPORTS_SAVE )
// Other games
-GAME( 1987, arkatour, 0, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Tournament Arkanoid (US)", GAME_SUPPORTS_SAVE )
+GAME( 1987, arkatour, 0, arkanoid, arkanoid, driver_device, 0, ROT90, "Taito America Corporation (Romstar license)", "Tournament Arkanoid (US)", MACHINE_SUPPORTS_SAVE )
-GAME( 19??, tetrsark, 0, bootleg, tetrsark, arkanoid_state, tetrsark, ROT0, "D.R. Korea", "Tetris (D.R. Korea)", GAME_SUPPORTS_SAVE )
+GAME( 19??, tetrsark, 0, bootleg, tetrsark, arkanoid_state, tetrsark, ROT0, "D.R. Korea", "Tetris (D.R. Korea)", MACHINE_SUPPORTS_SAVE )
-GAME( 199?, hexa, 0, hexa, hexa, arkanoid_state, hexa, ROT0, "D.R. Korea", "Hexa", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 199?, hexaa, hexa, hexaa, hexa, arkanoid_state, hexa, ROT0, "D.R. Korea", "Hexa (with 2xZ80, protected)", GAME_NOT_WORKING )
+GAME( 199?, hexa, 0, hexa, hexa, arkanoid_state, hexa, ROT0, "D.R. Korea", "Hexa", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 199?, hexaa, hexa, hexaa, hexa, arkanoid_state, hexa, ROT0, "D.R. Korea", "Hexa (with 2xZ80, protected)", MACHINE_NOT_WORKING )
-GAME( 1993, brixian, 0, brixian, brixian, arkanoid_state, brixian, ROT0, "Cheil Computer System", "Brixian", GAME_SUPPORTS_SAVE )
+GAME( 1993, brixian, 0, brixian, brixian, arkanoid_state, brixian, ROT0, "Cheil Computer System", "Brixian", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/armedf.c b/src/mame/drivers/armedf.c
index 05bc05f6c58..352de671596 100644
--- a/src/mame/drivers/armedf.c
+++ b/src/mame/drivers/armedf.c
@@ -2182,23 +2182,23 @@ DRIVER_INIT_MEMBER(bigfghtr_state,bigfghtr)
*************************************/
/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS */
-GAME( 1987, legion, 0, legion, legion, armedf_state, legion, ROT270, "Nichibutsu", "Legion - Spinner-87 (World ver 2.03)", GAME_SUPPORTS_SAVE )
-GAME( 1987, legionj, legion, legion, legion, armedf_state, legion, ROT270, "Nichibutsu", "Chouji Meikyuu Legion (Japan ver 1.05)", GAME_SUPPORTS_SAVE )
-GAME( 1987, legionjb, legion, legionjb, legion, armedf_state, legionjb, ROT270, "bootleg", "Chouji Meikyuu Legion (Japan ver 1.05, bootleg)", GAME_SUPPORTS_SAVE) /* blitter protection removed */
+GAME( 1987, legion, 0, legion, legion, armedf_state, legion, ROT270, "Nichibutsu", "Legion - Spinner-87 (World ver 2.03)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, legionj, legion, legion, legion, armedf_state, legion, ROT270, "Nichibutsu", "Chouji Meikyuu Legion (Japan ver 1.05)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, legionjb, legion, legionjb, legion, armedf_state, legionjb, ROT270, "bootleg", "Chouji Meikyuu Legion (Japan ver 1.05, bootleg)", MACHINE_SUPPORTS_SAVE) /* blitter protection removed */
-GAME( 1987, terraf, 0, terraf, terraf, armedf_state, terrafu, ROT0, "Nichibutsu", "Terra Force", GAME_SUPPORTS_SAVE )
-GAME( 1987, terrafu, terraf, terraf, terraf, armedf_state, terrafu, ROT0, "Nichibutsu USA", "Terra Force (US)", GAME_SUPPORTS_SAVE )
-GAME( 1987, terrafj, terraf, terraf, terraf, armedf_state, terrafu, ROT0, "Nichibutsu Japan", "Terra Force (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, terrafjb, terraf, terrafjb, terraf, armedf_state, terrafjb, ROT0, "bootleg", "Terra Force (Japan, bootleg with additional Z80)", GAME_SUPPORTS_SAVE )
-GAME( 1987, terrafb, terraf, terraf, terraf, armedf_state, terraf, ROT0, "bootleg", "Terra Force (Japan, bootleg set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1987, terraf, 0, terraf, terraf, armedf_state, terrafu, ROT0, "Nichibutsu", "Terra Force", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, terrafu, terraf, terraf, terraf, armedf_state, terrafu, ROT0, "Nichibutsu USA", "Terra Force (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, terrafj, terraf, terraf, terraf, armedf_state, terrafu, ROT0, "Nichibutsu Japan", "Terra Force (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, terrafjb, terraf, terrafjb, terraf, armedf_state, terrafjb, ROT0, "bootleg", "Terra Force (Japan, bootleg with additional Z80)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, terrafb, terraf, terraf, terraf, armedf_state, terraf, ROT0, "bootleg", "Terra Force (Japan, bootleg set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1987, kozure, 0, kozure, kozure, armedf_state, kozure, ROT0, "Nichibutsu", "Kozure Ookami (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1987, kozure, 0, kozure, kozure, armedf_state, kozure, ROT0, "Nichibutsu", "Kozure Ookami (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, cclimbr2, 0, cclimbr2, cclimbr2, armedf_state, cclimbr2, ROT0, "Nichibutsu", "Crazy Climber 2 (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, cclimbr2a,cclimbr2, cclimbr2, cclimbr2, armedf_state, cclimbr2, ROT0, "Nichibutsu", "Crazy Climber 2 (Japan, Harder)", GAME_SUPPORTS_SAVE )
+GAME( 1988, cclimbr2, 0, cclimbr2, cclimbr2, armedf_state, cclimbr2, ROT0, "Nichibutsu", "Crazy Climber 2 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cclimbr2a,cclimbr2, cclimbr2, cclimbr2, armedf_state, cclimbr2, ROT0, "Nichibutsu", "Crazy Climber 2 (Japan, Harder)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, armedf, 0, armedf, armedf, armedf_state, armedf, ROT270, "Nichibutsu", "Armed Formation", GAME_SUPPORTS_SAVE )
-GAME( 1988, armedff, armedf, armedf, armedf, armedf_state, armedf, ROT270, "Nichibutsu (Fillmore license)", "Armed Formation (Fillmore license)", GAME_SUPPORTS_SAVE )
+GAME( 1988, armedf, 0, armedf, armedf, armedf_state, armedf, ROT270, "Nichibutsu", "Armed Formation", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, armedff, armedf, armedf, armedf, armedf_state, armedf, ROT270, "Nichibutsu (Fillmore license)", "Armed Formation (Fillmore license)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, skyrobo, 0, bigfghtr, bigfghtr, bigfghtr_state, bigfghtr, ROT0, "Nichibutsu", "Sky Robo", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1989, bigfghtr, skyrobo, bigfghtr, bigfghtr, bigfghtr_state, bigfghtr, ROT0, "Nichibutsu", "Tatakae! Big Fighter (Japan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
+GAME( 1989, skyrobo, 0, bigfghtr, bigfghtr, bigfghtr_state, bigfghtr, ROT0, "Nichibutsu", "Sky Robo", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1989, bigfghtr, skyrobo, bigfghtr, bigfghtr, bigfghtr_state, bigfghtr, ROT0, "Nichibutsu", "Tatakae! Big Fighter (Japan)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/arsystems.c b/src/mame/drivers/arsystems.c
new file mode 100644
index 00000000000..c017004843f
--- /dev/null
+++ b/src/mame/drivers/arsystems.c
@@ -0,0 +1,1004 @@
+// license:BSD-3-Clause
+// copyright-holders:Ernesto Corvi, Mariusz Wojcieszek
+/***************************************************************************
+
+ Arcadia System - (c) 1988 Arcadia Systems
+
+ Driver by Ernesto Corvi and Mariusz Wojcieszek
+
+ Games supported:
+
+ SportTime Bowling
+ Leader Board
+ Ninja Mission
+ Road Wars
+ Sidewinder
+ Space Ranger
+ SportTime Table Hockey
+ Spot
+ Magic Johnson's Fast Break
+ World Darts
+ Xenon
+ World Trophy Soccer
+ Delta Command (N.Y Warriors)
+ Blastaball
+ Aaargh
+ Pharaohs Match
+
+ Other Arcadia games (not dumped):
+
+ Pool
+ Rockford
+
+ Hardware description (from targets.mame.net):
+
+ In the late 80s, Arcadia collaborated with Mastertronic to create their own
+ ten-interchangeable-game arcade platform called the Arcadia Multi Select system,
+ using the same hardware as the beloved Commodore Amiga computer.
+
+ (In fact, the Multi Select's main PCB is an A500 motherboard, to which the ROM
+ cage is attached through the external expansion port).
+
+ Reportedly the system was also (or was originally) supposed to have been released
+ in two five-game Super Select versions--"Arcade Action" and "Sports Simulation"
+ -- but no specimens of these have ever been seen.
+
+ NOTES and TODO:
+ - To get into service mode, hold down F2 before pressing a button after
+ the 'INITIALIZATION OK' message. Pressing F2 during game brings service
+ mode also.
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/m68000/m68000.h"
+#include "includes/amiga.h"
+#include "machine/nvram.h"
+#include "machine/amigafdc.h"
+
+
+// arcadia_state was also defined in mess/includes/arcadia.h
+class arcadia_amiga_state : public amiga_state
+{
+public:
+ arcadia_amiga_state(const machine_config &mconfig, device_type type, const char *tag)
+ : amiga_state(mconfig, type, tag) { }
+
+ UINT8 m_coin_counter[2];
+
+ DECLARE_WRITE16_MEMBER(arcadia_multibios_change_game);
+ DECLARE_CUSTOM_INPUT_MEMBER(coin_counter_r);
+ DECLARE_INPUT_CHANGED_MEMBER(coin_changed_callback);
+ DECLARE_WRITE8_MEMBER(arcadia_cia_0_portb_w);
+
+ DECLARE_DRIVER_INIT(arcadia);
+ DECLARE_DRIVER_INIT(xeon);
+ DECLARE_DRIVER_INIT(sdwr);
+ DECLARE_DRIVER_INIT(dart);
+ DECLARE_DRIVER_INIT(bowl);
+ DECLARE_DRIVER_INIT(sprg);
+ DECLARE_DRIVER_INIT(rdwr);
+ DECLARE_DRIVER_INIT(ninj);
+ DECLARE_DRIVER_INIT(airh);
+ DECLARE_DRIVER_INIT(ldrb);
+ DECLARE_DRIVER_INIT(socc);
+ DECLARE_DRIVER_INIT(blast);
+ DECLARE_DRIVER_INIT(pm);
+ DECLARE_DRIVER_INIT(dlta);
+ DECLARE_DRIVER_INIT(argh);
+
+ inline void generic_decode(const char *tag, int bit7, int bit6, int bit5, int bit4, int bit3, int bit2, int bit1, int bit0);
+
+protected:
+ virtual void machine_reset();
+};
+
+
+
+/*************************************
+ *
+ * Dynamic installation of ROM board
+ *
+ *************************************/
+
+WRITE16_MEMBER(arcadia_amiga_state::arcadia_multibios_change_game)
+{
+ if (data == 0)
+ space.install_read_bank(0x800000, 0x97ffff, "bank2");
+ else
+ space.nop_read(0x800000, 0x97ffff);
+}
+
+
+
+
+/*************************************
+ *
+ * CIA-A port B access:
+ *
+ * PB7 = parallel data 7
+ * PB6 = parallel data 6
+ * PB5 = parallel data 5
+ * PB4 = parallel data 4
+ * PB3 = parallel data 3
+ * PB2 = parallel data 2
+ * PB1 = parallel data 1
+ * PB0 = parallel data 0
+ *
+ *************************************/
+
+WRITE8_MEMBER(arcadia_amiga_state::arcadia_cia_0_portb_w)
+{
+ /* writing a 0 in the low bit clears one of the coins */
+ if ((data & 1) == 0)
+ {
+ if (m_coin_counter[0] > 0)
+ m_coin_counter[0]--;
+ else if (m_coin_counter[1] > 0)
+ m_coin_counter[1]--;
+ }
+}
+
+
+
+/*************************************
+ *
+ * Coin counters
+ *
+ *************************************/
+
+CUSTOM_INPUT_MEMBER(arcadia_amiga_state::coin_counter_r)
+{
+ int coin = (FPTR)param;
+
+ /* return coin counter values */
+ return m_coin_counter[coin] & 3;
+}
+
+
+INPUT_CHANGED_MEMBER(arcadia_amiga_state::coin_changed_callback)
+{
+ int coin = (FPTR)param;
+
+ /* check for a 0 -> 1 transition */
+ if (!oldval && newval && m_coin_counter[coin] < 3)
+ m_coin_counter[coin] += 1;
+}
+
+
+void arcadia_amiga_state::machine_reset()
+{
+ // reset base machine
+ amiga_state::machine_reset();
+
+ // reset coin counters
+ m_coin_counter[0] = m_coin_counter[1] = 0;
+}
+
+
+
+/*************************************
+ *
+ * Memory map
+ *
+ *************************************/
+
+static ADDRESS_MAP_START( overlay_512kb_map, AS_PROGRAM, 16, arcadia_amiga_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram")
+ AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( a500_mem, AS_PROGRAM, 16, arcadia_amiga_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x000000, 0x1fffff) AM_DEVICE("overlay", address_map_bank_device, amap16)
+ AM_RANGE(0xa00000, 0xbfffff) AM_READWRITE(cia_r, cia_w)
+ AM_RANGE(0xc00000, 0xd7ffff) AM_READWRITE(custom_chip_r, custom_chip_w)
+ AM_RANGE(0xd80000, 0xddffff) AM_NOP
+ AM_RANGE(0xde0000, 0xdeffff) AM_READWRITE(custom_chip_r, custom_chip_w)
+ AM_RANGE(0xdf0000, 0xdfffff) AM_READWRITE(custom_chip_r, custom_chip_w)
+ AM_RANGE(0xe00000, 0xe7ffff) AM_WRITENOP AM_READ(rom_mirror_r)
+ AM_RANGE(0xe80000, 0xefffff) AM_NOP // autoconfig space (installed by devices)
+ AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( arcadia_map, AS_PROGRAM, 16, arcadia_amiga_state )
+ AM_IMPORT_FROM(a500_mem)
+ AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0)
+ AM_RANGE(0x980000, 0x9fbfff) AM_ROM AM_REGION("user2", 0)
+ AM_RANGE(0x9fc000, 0x9ffffd) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0x9ffffe, 0x9fffff) AM_WRITE(arcadia_multibios_change_game)
+ AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user2", 0)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( argh_map, AS_PROGRAM, 16, arcadia_amiga_state )
+ AM_IMPORT_FROM(a500_mem)
+ AM_RANGE(0x800000, 0x97ffff) AM_ROMBANK("bank2") AM_REGION("user3", 0)
+// AM_RANGE(0x980000, 0x9fefff) AM_ROM AM_REGION("user3", 0)
+ AM_RANGE(0x9ff000, 0x9fffff) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0xf00000, 0xf7ffff) AM_ROM AM_REGION("user3", 0)
+ADDRESS_MAP_END
+
+/*************************************
+ *
+ * Input ports
+ *
+ *************************************/
+
+static INPUT_PORTS_START( arcadia )
+ PORT_START("CIA0PORTA")
+ PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_SPECIAL )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
+
+ PORT_START("CIA0PORTB")
+ PORT_DIPNAME( 0x01, 0x01, "DSW1 1" )
+ PORT_DIPSETTING( 0x01, "Reset" )
+ PORT_DIPSETTING( 0x00, "Set" )
+ PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_counter_r, 0)
+ PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_counter_r, 1)
+
+ PORT_START("joy_0_dat")
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,amiga_joystick_convert, 0)
+ PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("joy_1_dat")
+ PORT_BIT( 0x0303, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, arcadia_amiga_state,amiga_joystick_convert, 1)
+ PORT_BIT( 0xfcfc, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("potgo")
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
+ PORT_BIT( 0xaaff, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("p1_joy")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
+
+ PORT_START("p2_joy")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(2)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)
+
+ PORT_START("COINS")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_changed_callback, 0)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, arcadia_amiga_state,coin_changed_callback, 1)
+INPUT_PORTS_END
+
+
+
+/*************************************
+ *
+ * Machine driver
+ *
+ *************************************/
+
+static MACHINE_CONFIG_START( arcadia, arcadia_amiga_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, amiga_state::CLK_7M_NTSC)
+ MCFG_CPU_PROGRAM_MAP(arcadia_map)
+
+ MCFG_DEVICE_ADD("overlay", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(overlay_512kb_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(16)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(22)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x200000)
+
+ MCFG_NVRAM_ADD_0FILL("nvram")
+
+ /* video hardware */
+ MCFG_FRAGMENT_ADD(ntsc_video)
+
+ MCFG_PALETTE_ADD("palette", 4096)
+ MCFG_PALETTE_INIT_OWNER(arcadia_amiga_state,amiga)
+
+ MCFG_VIDEO_START_OVERRIDE(arcadia_amiga_state,amiga)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
+
+ MCFG_SOUND_ADD("amiga", AMIGA, amiga_state::CLK_C1_NTSC)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
+ MCFG_SOUND_ROUTE(2, "rspeaker", 0.50)
+ MCFG_SOUND_ROUTE(3, "lspeaker", 0.50)
+
+ /* cia */
+ MCFG_DEVICE_ADD("cia_0", MOS8520, amiga_state::CLK_E_NTSC)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(amiga_state, cia_0_irq))
+ MCFG_MOS6526_PA_INPUT_CALLBACK(IOPORT("CIA0PORTA"))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(amiga_state, cia_0_port_a_write))
+ MCFG_MOS6526_PB_INPUT_CALLBACK(IOPORT("CIA0PORTB"))
+ MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(arcadia_amiga_state,arcadia_cia_0_portb_w))
+ MCFG_DEVICE_ADD("cia_1", MOS8520, amiga_state::CLK_E_NTSC)
+ MCFG_MOS6526_IRQ_CALLBACK(WRITELINE(amiga_state, cia_1_irq))
+
+ /* fdc */
+ MCFG_DEVICE_ADD("fdc", AMIGA_FDC, amiga_state::CLK_7M_NTSC)
+ MCFG_AMIGA_FDC_INDEX_CALLBACK(DEVWRITELINE("cia_1", mos8520_device, flag_w))
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( argh, arcadia )
+
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(argh_map)
+MACHINE_CONFIG_END
+
+
+/*************************************
+ *
+ * BIOS definition
+ *
+ *************************************/
+
+#define ROM_LOAD16_BYTE_BIOS(bios,name,offset,length,hash) ROMX_LOAD(name, offset, length, hash, ROM_SKIP(1) | ROM_BIOS(bios+1))
+
+#define ARCADIA_BIOS \
+ ROM_REGION16_BE(0x80000, "kickstart", 0 ) \
+ ROM_LOAD16_WORD("315093-01.u2", 0x000000, 0x040000, CRC(a6ce1636) SHA1(11f9e62cf299f72184835b7b2a70a16333fc0d88)) \
+ ROM_COPY("kickstart", 0x000000, 0x040000, 0x040000) \
+ \
+ ROM_REGION16_BE( 0x80000, "user2", 0 ) \
+ ROM_SYSTEM_BIOS(0, "onep300", "OnePlay 3.00") \
+ ROM_LOAD16_BYTE_BIOS( 0, "scpa_01-hi_v3.0.u12", 0x000000, 0x10000, CRC(2d8e1a06) SHA1(be187f34624aeda110017c4a09242f7c00ef56a4) ) \
+ ROM_LOAD16_BYTE_BIOS( 0, "scpa_01-lo_v3.0.u16", 0x000001, 0x10000, CRC(e4f38fab) SHA1(01c2eb5965070893be6734eb1372576727716476) ) \
+ ROM_SYSTEM_BIOS(1, "onep220", "OnePlay 2.20" ) \
+ ROM_LOAD16_BYTE_BIOS( 1, "scpa_01-hi_v2.20.u12", 0x000000, 0x10000, CRC(79450b4b) SHA1(a1e508a89fc62e1c4994064f2786f491b1dc8bc6) ) \
+ ROM_LOAD16_BYTE_BIOS( 1, "scpa_01-lo_v2.20.u16", 0x000001, 0x10000, CRC(d2825511) SHA1(747a37c6073224472bf261ae376ac9abfbe07554) ) \
+ ROM_SYSTEM_BIOS(2, "onep211", "OnePlay 2.11" ) \
+ ROM_LOAD16_BYTE_BIOS( 2, "scpa_01-hi_v2.11.u12", 0x000000, 0x10000, CRC(be9dbdc5) SHA1(1554da09f051ec53937d65d4e451de51bc0c69e5) ) \
+ ROM_LOAD16_BYTE_BIOS( 2, "scpa_01-lo_v2.11.u16", 0x000001, 0x10000, CRC(95b84504) SHA1(99999fc40909001b37aa1b543918118becc81800) ) \
+ ROM_SYSTEM_BIOS(3, "tenp211", "TenPlay 2.11" ) \
+ ROM_LOAD16_BYTE_BIOS( 3, "gcp-1-hi", 0x000000, 0x10000, CRC(67d44523) SHA1(f3e3699132cdf741518accb890c04d17374c4049) ) \
+ ROM_LOAD16_BYTE_BIOS( 3, "gcp-1-lo", 0x000001, 0x10000, CRC(65d9b9cf) SHA1(5c60a0dd4a0a7d9b938ce6b0446a6ad2ecaf07ec) ) \
+ ROM_LOAD16_BYTE_BIOS( 3, "gcp-2-hi", 0x020000, 0x10000, CRC(1d7594ae) SHA1(6173bbfecf18d7d9ee6bc2b6753ca9d42fabd781) ) \
+ ROM_LOAD16_BYTE_BIOS( 3, "gcp-2-lo", 0x020001, 0x10000, CRC(e776198d) SHA1(694ca4cc99ed84a95d18201c94a3332f8599654f) ) \
+ ROM_LOAD16_BYTE_BIOS( 3, "gcp-3-hi", 0x040000, 0x10000, CRC(3e7364be) SHA1(26e10d0ddc031a891138db36ce4f1732722e6847) ) \
+ ROM_LOAD16_BYTE_BIOS( 3, "gcp-3-lo", 0x040001, 0x10000, CRC(87229e0d) SHA1(0b18544801e529f954b9e03226bd2e5475f36351) ) \
+ ROM_SYSTEM_BIOS(4, "tenp311", "TenPlay 3.11" ) /* Rom labels are printed as 3.11, but it runs as 3.10 */ \
+ ROM_LOAD16_BYTE_BIOS( 4, "gcp_v311_1-hi.u16", 0x000000, 0x10000, CRC(0b486a85) SHA1(b406f1db5abf28d9072b7940989ffd176aeee5cb) ) \
+ ROM_LOAD16_BYTE_BIOS( 4, "gcp_v311_1-lo.u11", 0x000001, 0x10000, CRC(80e8e863) SHA1(ab04dfcda7544f4ed9b67771cd8aefe0300c6d4b) ) \
+ ROM_LOAD16_BYTE_BIOS( 4, "gcp_v311_2-hi.u17", 0x020000, 0x10000, CRC(d20a4d7f) SHA1(1dc0a79efa946333149f68ddac046fd44b5f2abe) ) \
+ ROM_LOAD16_BYTE_BIOS( 4, "gcp_v311_2-lo.u12", 0x020001, 0x10000, CRC(5bf4c74c) SHA1(1f7b17170accdf9e448c1a5d8bc430aa2d1d931b) ) \
+ ROM_SYSTEM_BIOS(5, "tenp400", "TenPlay 4.00" ) /* needs printer switch hooked up so it can be turned off */ \
+ ROM_LOAD16_BYTE_BIOS( 5, "gcp_v400_1-hi.u16", 0x000000, 0x10000, CRC(69295167) SHA1(855f53abbb9dc15e5518e16c5c2dfe4134d07306) ) \
+ ROM_LOAD16_BYTE_BIOS( 5, "gcp_v400_1-lo.u11", 0x000001, 0x10000, CRC(504c2171) SHA1(a93367f520afb86c97c0a191714b72823c95cdd2) ) \
+ ROM_LOAD16_BYTE_BIOS( 5, "gcp_v400_2-hi.u17", 0x020000, 0x10000, CRC(13fb4e2d) SHA1(3eef07aecc3a201ae0b20634c7fd0c87c89fd7f1) ) \
+ ROM_LOAD16_BYTE_BIOS( 5, "gcp_v400_2-lo.u12", 0x020001, 0x10000, CRC(a5cc4515) SHA1(80070521476e92323a6baa6e55928ca5b751a332) )
+
+ROM_START( ar_bios )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE(0x180000, "user3", ROMREGION_ERASEFF)
+ROM_END
+
+
+/*************************************
+ *
+ * Specific games
+ *
+ *************************************/
+
+/* AIRH */
+ROM_START( ar_airh )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "airh_1h.bin", 0x00000, 0x10000, CRC(290e8e9e) SHA1(9215e36f02adf4064934aab99accefcb17ea6d3f) )
+ ROM_LOAD16_BYTE( "airh_1l.bin", 0x00001, 0x10000, CRC(155452b6) SHA1(aeaa67ea9cc543c9a43094545450159e4784fb5c) )
+ROM_END
+
+ROM_START( ar_airh2 )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "arcadia4.u10", 0x00000, 0x10000, CRC(baf8d886) SHA1(77efbc27c1cf717dfee2686009a957029eb1b113) )
+ ROM_LOAD16_BYTE( "arcadia4.u6", 0x00001, 0x10000, CRC(ccff38ee) SHA1(ae89dbc9533358c80423b2dc21f101816730be7c) )
+
+ ROM_REGION( 0x104, "misc", ROMREGION_ERASEFF )
+ ROM_LOAD( "arcadia.u14.bin", 0x000, 0x104, CRC(1af35582) SHA1(a78aa61a56dea9b5c9df8b734f99adb0383d135b) ) // bad/protected?
+ROM_END
+
+
+/* BOWL V 2.1 */
+ROM_START( ar_bowl )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "bowl_1h.bin", 0x00000, 0x10000, CRC(c0c20422) SHA1(3576df08e7a4cdadaf9dea5da0770efe5f461b07) )
+ ROM_LOAD16_BYTE( "bowl_1l.bin", 0x00001, 0x10000, CRC(1c7fe75c) SHA1(b1830b91b53ec24d4b072898acac02552e2eae97) )
+ ROM_LOAD16_BYTE( "bowl_2h.bin", 0x20000, 0x10000, CRC(a1e497d8) SHA1(4b4885c6937b7cfb24921e84a80d6d4f56844a73) )
+ ROM_LOAD16_BYTE( "bowl_2l.bin", 0x20001, 0x10000, CRC(ce23aa34) SHA1(4b17a8447286aeb775c4edb1968978e281422421) )
+ ROM_LOAD16_BYTE( "bowl_3h.bin", 0x40000, 0x10000, CRC(0c55da71) SHA1(db8a1494fca3aa044da27ea1d3acf68be415be23) )
+ ROM_LOAD16_BYTE( "bowl_3l.bin", 0x40001, 0x10000, CRC(5ce00809) SHA1(d7f336df28a033b38b5296537826d164aaf5e8c9) )
+ROM_END
+
+
+/* DART V 2.1 */
+ROM_START( ar_dart )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "dart_1h.bin", 0x00000, 0x10000, CRC(4d6a33e2) SHA1(1a227b5b0b4aca40d46af62e44deebca60582363) )
+ ROM_LOAD16_BYTE( "dart_1l.bin", 0x00001, 0x10000, CRC(3fa66973) SHA1(66b59870f8ed1bb5b46b2887d99a6a71ff0514ba) )
+ ROM_LOAD16_BYTE( "dart_2h.bin", 0x20000, 0x10000, CRC(3a30426a) SHA1(bf9226d2bfd1fb2d70e55e30aa3dde953baf5792) )
+ ROM_LOAD16_BYTE( "dart_2l.bin", 0x20001, 0x10000, CRC(479c0b73) SHA1(2ad958f4f2d902635d030cf3f466097da3cc421c) )
+ ROM_LOAD16_BYTE( "dart_3h.bin", 0x40000, 0x10000, CRC(dd217562) SHA1(80e21112a87259785e5d172249dfe8058970fd4d) )
+ ROM_LOAD16_BYTE( "dart_3l.bin", 0x40001, 0x10000, CRC(12cff829) SHA1(3826e5442bb125dff4f10ef8b0b65a2d5b8d9985) )
+ ROM_LOAD16_BYTE( "dart_4h.bin", 0x60000, 0x10000, CRC(98b27f13) SHA1(eb4fe813be4f202badfb947291e75ec0df915c25) )
+ ROM_LOAD16_BYTE( "dart_4l.bin", 0x60001, 0x10000, CRC(a059204c) SHA1(01fb21175957fa8e92f918ea560ceecc809ed0b7) )
+ ROM_LOAD16_BYTE( "dart_5h.bin", 0x80000, 0x10000, CRC(38f4c236) SHA1(1a5501ed8e94cff584f40c3b984aff7aea9ec956) )
+ ROM_LOAD16_BYTE( "dart_5l.bin", 0x80001, 0x10000, CRC(df4103cc) SHA1(c792cc52148afa7bde6458704d9de2550b6eb636) )
+ ROM_LOAD16_BYTE( "dart_6h.bin", 0xa0000, 0x10000, CRC(e21cc8be) SHA1(04280eef26f4a97c2280bdec19b1bc586fceffb0) )
+ ROM_LOAD16_BYTE( "dart_6l.bin", 0xa0001, 0x10000, CRC(21112d4e) SHA1(95e49aa2f23c6d005a0de3cf96a1c06adeacf2a9) )
+ROM_END
+
+ROM_START( ar_dart2 )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE(0x200000, "user3", 0)
+ ROM_LOAD16_BYTE( "arcadia3.u10", 0x00000, 0x10000, CRC(7166c736) SHA1(9892725b4d0aac6486950f8153083ba3f6982ad8) )
+ ROM_LOAD16_BYTE( "arcadia3.u6", 0x00001, 0x10000, CRC(f226137e) SHA1(61540885ff83420f5adc1087547e0ece33383ffd) )
+ ROM_LOAD16_BYTE( "arcadia3.u11", 0x20000, 0x10000, CRC(5d9a7804) SHA1(acd8eb7fd28594e8008eb953f843a72f12782ea2) )
+ ROM_LOAD16_BYTE( "arcadia3.u7", 0x20001, 0x10000, CRC(a4876410) SHA1(668d120f688d31d86645fa67e01cd7e6356ca340) )
+ ROM_LOAD16_BYTE( "arcadia3.u12", 0x40000, 0x10000, CRC(0cb77441) SHA1(cadd5656d2a97a852bcc231c7df22965f751a80a) )
+ ROM_LOAD16_BYTE( "arcadia3.u8", 0x40001, 0x10000, CRC(97caab85) SHA1(9fd1b90d9cce073db81724ddd62f3e4ec610792b) )
+ ROM_LOAD16_BYTE( "arcadia3.u13", 0x60000, 0x10000, CRC(9ccf347e) SHA1(9c2b5276543d20006e115459ac5451e2e807b28f) )
+ ROM_LOAD16_BYTE( "arcadia3.u9", 0x60001, 0x10000, CRC(39c6675a) SHA1(6b79c2afab5b42b83d673836b94d7baa7a4e3214) )
+ ROM_LOAD16_BYTE( "arcadia3.u19", 0x80000, 0x10000, CRC(2495a19e) SHA1(2cfb4c1ebb67b534d7c6df28512c80b52931e244) )
+ ROM_LOAD16_BYTE( "arcadia3.u15", 0x80001, 0x10000, BAD_DUMP CRC(6d7006df) SHA1(eb6a0c9df3ec1bf5d0a180e138a591f374555f1c) ) // FIXED BITS (0000x000)
+ ROM_LOAD16_BYTE( "arcadia3.u20", 0xa0000, 0x10000, CRC(efb0f2e2) SHA1(7ba1d85ac573db9bbd1ef04d0770c7c1277bc10e) )
+ ROM_LOAD16_BYTE( "arcadia3.u16", 0xa0001, 0x10000, CRC(a9c5e939) SHA1(75de7c0fb4654b6738ecd0c170589f3a46012f33) )
+
+ ROM_REGION( 0x104, "misc", ROMREGION_ERASEFF )
+ ROM_LOAD( "arcadia.u14.bin", 0x000, 0x104, CRC(1af35582) SHA1(a78aa61a56dea9b5c9df8b734f99adb0383d135b) ) // bad/protected?
+ROM_END
+
+
+/*
+ Magic Johnson's Fast Break
+
+ PIGGYBACK 1.5 MBYTE ROM BOARD REV A
+
+ 3h 7h x
+ 2h 6h x
+ 1h 5h x
+ scpa1h 4h 8h
+ 3l 7l x
+ 2l 6l x
+ DS1220Y 1l 5l x
+ sec-scpa scpa1l 4l 8l
+
+Labeled Like this:
+
+*FAST - V:28
+<----1-LO
+(C)1989 Arcadia Sys
+
+
+*/
+ROM_START( ar_fast )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "fast-v28_1-hi.u11", 0x000000, 0x10000, CRC(091e4533) SHA1(61a16deecd32b386d62aab95e8d4a61bddcd8af4) )
+ ROM_LOAD16_BYTE( "fast-v28_1-lo.u15", 0x000001, 0x10000, CRC(8f7685c1) SHA1(b379c1a47618401cfbfcc7bd2d13ae51f5e73e46) )
+ ROM_LOAD16_BYTE( "fast-v28_2-hi.u10", 0x020000, 0x10000, CRC(3a3dd931) SHA1(7be3316e2acf6b14b29ef2e36d8f76999d5d4e94) )
+ ROM_LOAD16_BYTE( "fast-v28_2-lo.u14", 0x020001, 0x10000, CRC(4838d7e5) SHA1(d2ae5b8f25df51936937ddf62001347fccdf830a) )
+ ROM_LOAD16_BYTE( "fast-v28_3-hi.u9", 0x040000, 0x10000, CRC(db94fa62) SHA1(4fe79a4226161b15ecdda9d85c1ad84cf31b6a30) )
+ ROM_LOAD16_BYTE( "fast-v28_3-lo.u13", 0x040001, 0x10000, CRC(a400367d) SHA1(a4362beeb35fa0c9020883eab0a71194f3a90b9a) )
+ ROM_LOAD16_BYTE( "fast-v28_4-hi.u20", 0x060000, 0x10000, CRC(c0a021dd) SHA1(c4c40c05050a2831b55683d85ee39b8870e0bf88) )
+ ROM_LOAD16_BYTE( "fast-v28_4-lo.u24", 0x060001, 0x10000, CRC(870e60f1) SHA1(0f0566da96dfc898dbbc35dfaba489d1fc9ab435) )
+ ROM_LOAD16_BYTE( "fast-v28_5-hi.u19", 0x080000, 0x10000, CRC(6daf4817) SHA1(ca0bf79e77a3e878da1f97ff9a64107e8c112aee) )
+ ROM_LOAD16_BYTE( "fast-v28_5-lo.u23", 0x080001, 0x10000, CRC(f489da29) SHA1(5e70183acfd0d849ae9691b312ca98698b1a2252) )
+ ROM_LOAD16_BYTE( "fast-v28_6-hi.u18", 0x0a0000, 0x10000, CRC(b23dbcfd) SHA1(67495235016e4bcbf6251e4073d6938a3c5b0eea) )
+ ROM_LOAD16_BYTE( "fast-v28_6-lo.u22", 0x0a0001, 0x10000, CRC(4e23e807) SHA1(69c910d70fb85d037257b19a1be9e99c617bf1c4) )
+ ROM_LOAD16_BYTE( "fast-v28_7-hi.u17", 0x0c0000, 0x10000, CRC(74d598eb) SHA1(9434169d316fc2802e7790e5b09be086fccab351) )
+ ROM_LOAD16_BYTE( "fast-v28_7-lo.u21", 0x0c0001, 0x10000, CRC(b0649050) SHA1(a8efdfc82a63fc16ee2103b4c96b92d6f9e7afc6) )
+ ROM_LOAD16_BYTE( "fast-v28_8-hi.u28", 0x0e0000, 0x10000, CRC(3650aaf0) SHA1(cc37aa94360159f45076eafaae8140a661bd52f6) )
+ ROM_LOAD16_BYTE( "fast-v28_8-lo.u32", 0x0e0001, 0x10000, CRC(82603f68) SHA1(8affe73e97b966b8e63bff2c7914fb5ead7b60ff) )
+
+ ROM_REGION( 0x0200, "plds", 0 )
+ ROM_LOAD( "pal16l8-sec-scpa.u8", 0x0000, 0x0104, CRC(3a4df3aa) SHA1(d0e64af4e1602347af60cd97c6b5b1a9d65cb270) ) /* PAL is read protected */
+ROM_END
+
+
+/* Arcadia Magic Johnson's Fast Break V 2.7 on PIGGYBACK 1.5 MBYTE ROM BOARD REV A */
+ROM_START( ar_fasta )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "fast-v27_1-hi.u11", 0x000000, 0x10000, CRC(58ce7e02) SHA1(73fa33858dceb924e86b95130f8d6a0d3ae5cc6f) )
+ ROM_LOAD16_BYTE( "fast-v27_1-lo.u15", 0x000001, 0x10000, CRC(6bf75490) SHA1(3df610dd488e0711a190a9ec47adfd047313a597) )
+ ROM_LOAD16_BYTE( "fast-v27_2-hi.u10", 0x020000, 0x10000, CRC(3a3dd931) SHA1(7be3316e2acf6b14b29ef2e36d8f76999d5d4e94) ) /* matches v2.8 */
+ ROM_LOAD16_BYTE( "fast-v27_2-lo.u14", 0x020001, 0x10000, CRC(4838d7e5) SHA1(d2ae5b8f25df51936937ddf62001347fccdf830a) ) /* matches v2.8 */
+ ROM_LOAD16_BYTE( "fast-v27_3-hi.u9", 0x040000, 0x10000, CRC(db94fa62) SHA1(4fe79a4226161b15ecdda9d85c1ad84cf31b6a30) ) /* matches v2.8 */
+ ROM_LOAD16_BYTE( "fast-v27_3-lo.u13", 0x040001, 0x10000, CRC(a400367d) SHA1(a4362beeb35fa0c9020883eab0a71194f3a90b9a) ) /* matches v2.8 */
+ ROM_LOAD16_BYTE( "fast-v27_4-hi.u20", 0x060000, 0x10000, CRC(c0a021dd) SHA1(c4c40c05050a2831b55683d85ee39b8870e0bf88) ) /* matches v2.8 */
+ ROM_LOAD16_BYTE( "fast-v27_4-lo.u24", 0x060001, 0x10000, CRC(870e60f1) SHA1(0f0566da96dfc898dbbc35dfaba489d1fc9ab435) ) /* matches v2.8 */
+ ROM_LOAD16_BYTE( "fast-v27_5-hi.u19", 0x080000, 0x10000, CRC(6daf4817) SHA1(ca0bf79e77a3e878da1f97ff9a64107e8c112aee) ) /* matches v2.8 */
+ ROM_LOAD16_BYTE( "fast-v27_5-lo.u23", 0x080001, 0x10000, CRC(f489da29) SHA1(5e70183acfd0d849ae9691b312ca98698b1a2252) ) /* matches v2.8 */
+ ROM_LOAD16_BYTE( "fast-v27_6-hi.u18", 0x0a0000, 0x10000, CRC(e36424a4) SHA1(e17375de39dccb7bec6aaaa06879a20b532d0199) )
+ ROM_LOAD16_BYTE( "fast-v27_6-lo.u22", 0x0a0001, 0x10000, CRC(23441bac) SHA1(25fd776cdafbb88b5f63201d30d42eeafde88733) )
+ ROM_LOAD16_BYTE( "fast-v27_7-hi.u17", 0x0c0000, 0x10000, CRC(2ac2f165) SHA1(5d7501de510efc4ca34765d99ed8c2c374309659) )
+ ROM_LOAD16_BYTE( "fast-v27_7-lo.u21", 0x0c0001, 0x10000, CRC(41255827) SHA1(494e3da21845c6d62ce3c7ba75e2557fb016b91a) )
+ ROM_LOAD16_BYTE( "fast-v27_8-hi.u28", 0x0e0000, 0x10000, CRC(8e838770) SHA1(73ad9e925f725b173ce554e97c28426cb20ec194) )
+ ROM_LOAD16_BYTE( "fast-v27_8-lo.u32", 0x0e0001, 0x10000, CRC(2d55af35) SHA1(5a6a3b12c222d16c30bc7f2a7904433614448e10) )
+
+ ROM_REGION( 0x0200, "plds", 0 )
+ ROM_LOAD( "pal16l8-sec-scpa.u8", 0x0000, 0x0104, CRC(3a4df3aa) SHA1(d0e64af4e1602347af60cd97c6b5b1a9d65cb270) )
+ROM_END
+
+
+/* Arcadia LEADER BOARD V 2.5 on PIGGYBACK 1.5 MBYTE ROM BOARD REV A */
+ROM_START( ar_ldrb )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "leader_board_01-hi_v2.5.u11", 0x00000, 0x10000, CRC(0236511c) SHA1(22b2ee076ed57ba38413c16a52510383d8488e25) )
+ ROM_LOAD16_BYTE( "leader_board_01-lo_v2.5.u15", 0x00001, 0x10000, CRC(786d34b9) SHA1(5fd6ef94f65c6fd503d3682154b576d6509a3aa9) )
+ ROM_LOAD16_BYTE( "leader_board_02-hi_v2.5.u10", 0x20000, 0x10000, CRC(64e5fbae) SHA1(0dde0d05b05f232aac9ad44398cedd8c7627f146) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "leader_board_02-lo_v2.5.u14", 0x20001, 0x10000, CRC(bb115e1c) SHA1(768cf51661f630b1c0a4b83b9f6124c78a517d0a) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "leader_board_03-hi_v2.5.u9", 0x40000, 0x10000, CRC(1d290e28) SHA1(0d589628fe59de9d7e2a57ddeabca991d1c79fdf) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "leader_board_03-lo_v2.5.u13", 0x40001, 0x10000, CRC(b1352a77) SHA1(ac7337a3778442d444002f730e2880f61f32cf2a) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "leader_board_04-hi_v2.5.u20", 0x60000, 0x10000, CRC(b621c688) SHA1(f2a50ebfc50725cdef77bb8a4864405dbb203784) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "leader_board_04-lo_v2.5.u24", 0x60001, 0x10000, CRC(13f9c4b0) SHA1(08a1fab271307191c5caa108c4ae284f92c270e4) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "leader_board_05-hi_v2.5.u19", 0x80000, 0x10000, CRC(71273172) SHA1(2b6204fdf03268e920b5948c999aa725fc66cac6) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "leader_board_05-lo_v2.5.u23", 0x80001, 0x10000, CRC(d9028183) SHA1(009b496da31f67b11de54e50254a9897ea68cd92) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "leader_board_06-hi_v2.5.u18", 0xa0000, 0x10000, CRC(a6ce61a4) SHA1(6cd64b7d589c91aeee06293f473fd1b3c56b19e0) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "leader_board_06-lo_v2.5.u22", 0xa0001, 0x10000, CRC(13c71422) SHA1(93e6dca2b28e1b5235b922f064be96eed0bedd8c) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "leader_board_07-hi_v2.5.u17", 0xc0000, 0x10000, CRC(4ebb8d12) SHA1(c328a26139ba0792cab1020b32eb4b8e39d51a22) )
+ ROM_LOAD16_BYTE( "leader_board_07-lo_v2.5.u21", 0xc0001, 0x10000, CRC(1afa9a4f) SHA1(3e5ca56e03d693a72424b9ad0717494ea8eb561e) )
+ ROM_LOAD16_BYTE( "leader_board_08-hi_v2.5.u28", 0xe0000, 0x10000, CRC(fbdca9af) SHA1(9612eb777a00ba4153f40eaefd162ca5b5efdb54) )
+ ROM_LOAD16_BYTE( "leader_board_08-lo_v2.5.u32", 0xe0001, 0x10000, CRC(322f52eb) SHA1(3033eb753fb8b3bf56b152377bf567b06a0c8144) )
+
+ ROM_REGION( 0x0200, "plds", 0 )
+ ROM_LOAD( "pal16l8-sec-scpa.u8", 0x0000, 0x0104, CRC(3a4df3aa) SHA1(d0e64af4e1602347af60cd97c6b5b1a9d65cb270) )
+ROM_END
+
+
+/* Arcadia LEADER BOARD V 2.4 on PIGGYBACK 1.5 MBYTE ROM BOARD REV A */
+ROM_START( ar_ldrba )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "leader_board_01-hi_v2.4.u11", 0x00000, 0x10000, CRC(fe1287e9) SHA1(34088416d970614b31b25e982ef40fd950080b3e) )
+ ROM_LOAD16_BYTE( "leader_board_01-lo_v2.4.u15", 0x00001, 0x10000, CRC(7c7bb9ee) SHA1(5c76445732ab139db82fe21c16f49e2609bb03aa) )
+ ROM_LOAD16_BYTE( "leader_board_02-hi_v2.4.u10", 0x20000, 0x10000, CRC(64e5fbae) SHA1(0dde0d05b05f232aac9ad44398cedd8c7627f146) )
+ ROM_LOAD16_BYTE( "leader_board_02-lo_v2.4.u14", 0x20001, 0x10000, CRC(bb115e1c) SHA1(768cf51661f630b1c0a4b83b9f6124c78a517d0a) )
+ ROM_LOAD16_BYTE( "leader_board_03-hi_v2.4.u9", 0x40000, 0x10000, CRC(1d290e28) SHA1(0d589628fe59de9d7e2a57ddeabca991d1c79fdf) )
+ ROM_LOAD16_BYTE( "leader_board_03-lo_v2.4.u13", 0x40001, 0x10000, CRC(b1352a77) SHA1(ac7337a3778442d444002f730e2880f61f32cf2a) )
+ ROM_LOAD16_BYTE( "leader_board_04-hi_v2.4.u20", 0x60000, 0x10000, CRC(b621c688) SHA1(f2a50ebfc50725cdef77bb8a4864405dbb203784) )
+ ROM_LOAD16_BYTE( "leader_board_04-lo_v2.4.u24", 0x60001, 0x10000, CRC(13f9c4b0) SHA1(08a1fab271307191c5caa108c4ae284f92c270e4) )
+ ROM_LOAD16_BYTE( "leader_board_05-hi_v2.4.u19", 0x80000, 0x10000, CRC(71273172) SHA1(2b6204fdf03268e920b5948c999aa725fc66cac6) )
+ ROM_LOAD16_BYTE( "leader_board_05-lo_v2.4.u23", 0x80001, 0x10000, CRC(d9028183) SHA1(009b496da31f67b11de54e50254a9897ea68cd92) )
+ ROM_LOAD16_BYTE( "leader_board_06-hi_v2.4.u18", 0xa0000, 0x10000, CRC(a6ce61a4) SHA1(6cd64b7d589c91aeee06293f473fd1b3c56b19e0) )
+ ROM_LOAD16_BYTE( "leader_board_06-lo_v2.4.u22", 0xa0001, 0x10000, CRC(13c71422) SHA1(93e6dca2b28e1b5235b922f064be96eed0bedd8c) )
+ ROM_LOAD16_BYTE( "leader_board_07-hi_v2.4.u17", 0xc0000, 0x10000, CRC(61807fa9) SHA1(9d7097b921cf4026bb2828780e3fb87e0a3a24a0) )
+ ROM_LOAD16_BYTE( "leader_board_07-lo_v2.4.u21", 0xc0001, 0x10000, CRC(c62dae9f) SHA1(59b8e1c2469edd57024a4f3ca4222811442fa077) )
+ ROM_LOAD16_BYTE( "leader_board_08-hi_v2.4.u28", 0xe0000, 0x10000, CRC(b5911807) SHA1(b2995b308b2618f312005f130048e73c151311ae) )
+ ROM_LOAD16_BYTE( "leader_board_08-lo_v2.4.u32", 0xe0001, 0x10000, CRC(1f1ea828) SHA1(4af463bc6d58d64d4f082971c71654a6bb0c26bc) )
+
+ ROM_REGION( 0x0200, "plds", 0 )
+ ROM_LOAD( "pal16l8-sec-scpa.u8", 0x0000, 0x0104, CRC(3a4df3aa) SHA1(d0e64af4e1602347af60cd97c6b5b1a9d65cb270) )
+ROM_END
+
+/* Arcadia LEADER BOARD v 2.6? on PIGGYBACK 1.5 MBYTE ROM BOARD REV ? */
+ROM_START( ar_ldrbb ) /* Later then v2.5?? as 7H & 7L match v2.5 and are newer then v2.4 */
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "ldrb_1h.u11", 0x00000, 0x10000, CRC(97dcde78) SHA1(d324415b853de17646b5266581bea27e571fa08f) )
+ ROM_LOAD16_BYTE( "ldrb_1l_gcp_22.u15", 0x00001, 0x10000, CRC(b51d17f7) SHA1(56add2f69c35e5082926bd59be7f98a6a223c549) )
+ ROM_LOAD16_BYTE( "ldrb_2h.u10", 0x20000, 0x10000, CRC(64e5fbae) SHA1(0dde0d05b05f232aac9ad44398cedd8c7627f146) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "ldrb_2l.u14", 0x20001, 0x10000, CRC(bb115e1c) SHA1(768cf51661f630b1c0a4b83b9f6124c78a517d0a) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "ldrb_3h.u9", 0x40000, 0x10000, CRC(1d290e28) SHA1(0d589628fe59de9d7e2a57ddeabca991d1c79fdf) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "ldrb_3l.u13", 0x40001, 0x10000, CRC(b1352a77) SHA1(ac7337a3778442d444002f730e2880f61f32cf2a) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "ldrb_4h.u20", 0x60000, 0x10000, CRC(b621c688) SHA1(f2a50ebfc50725cdef77bb8a4864405dbb203784) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "ldrb_4l.u24", 0x60001, 0x10000, CRC(13f9c4b0) SHA1(08a1fab271307191c5caa108c4ae284f92c270e4) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "ldrb_5h.u19", 0x80000, 0x10000, CRC(71273172) SHA1(2b6204fdf03268e920b5948c999aa725fc66cac6) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "ldrb_5l.u23", 0x80001, 0x10000, CRC(d9028183) SHA1(009b496da31f67b11de54e50254a9897ea68cd92) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "ldrb_6h.u18", 0xa0000, 0x10000, CRC(a6ce61a4) SHA1(6cd64b7d589c91aeee06293f473fd1b3c56b19e0) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "ldrb_6l.u22", 0xa0001, 0x10000, CRC(13c71422) SHA1(93e6dca2b28e1b5235b922f064be96eed0bedd8c) ) /* matches v2.4 */
+ ROM_LOAD16_BYTE( "ldrb_7h.u17", 0xc0000, 0x10000, CRC(4ebb8d12) SHA1(c328a26139ba0792cab1020b32eb4b8e39d51a22) ) /* matches v2.5 */
+ ROM_LOAD16_BYTE( "ldrb_7l.u21", 0xc0001, 0x10000, CRC(1afa9a4f) SHA1(3e5ca56e03d693a72424b9ad0717494ea8eb561e) ) /* matches v2.5 */
+ ROM_LOAD16_BYTE( "ldrb_8h.u28", 0xe0000, 0x10000, CRC(701f50ba) SHA1(4ea6be00aa2d32d739fa6ec70ec8bce470b28f90) )
+ ROM_LOAD16_BYTE( "ldrb_8l.u32", 0xe0001, 0x10000, CRC(80642c1d) SHA1(fc2101b749db3ebb3499c8870026c05acf46fa4d) )
+
+ ROM_REGION( 0x0200, "plds", 0 )
+ ROM_LOAD( "pal16l8-sec-scpa.u8", 0x0000, 0x0104, CRC(3a4df3aa) SHA1(d0e64af4e1602347af60cd97c6b5b1a9d65cb270) )
+ROM_END
+
+/* NINJ V 2.5 */
+ROM_START( ar_ninj )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE(0x200000, "user3", 0)
+ ROM_LOAD16_BYTE( "ninj_1h.bin", 0x00000, 0x10000, CRC(53b07b4d) SHA1(4852005adf60fe63f2da880dd32740d18fd31169) )
+ ROM_LOAD16_BYTE( "ninj_1l.bin", 0x00001, 0x10000, CRC(3337a6c1) SHA1(be9719f0cd5872b51f4c6d32fcac2638c0dedaf4) )
+ ROM_LOAD16_BYTE( "ninj_2h.bin", 0x20000, 0x10000, CRC(e28a5fa8) SHA1(150e26aea24706b72d2e6612280d5dddc527061b) )
+ ROM_LOAD16_BYTE( "ninj_2l.bin", 0x20001, 0x10000, CRC(4f52c008) SHA1(c26bf9a7a21a5b78697a684bada90ff70160f868) )
+ ROM_LOAD16_BYTE( "ninj_3h.bin", 0x40000, 0x10000, CRC(c6e4dd36) SHA1(a8dcea97e0eb1da462ad55fd543c637544bfd059) )
+ ROM_LOAD16_BYTE( "ninj_3l.bin", 0x40001, 0x10000, CRC(1dca7ea5) SHA1(2950ea2e9267d27e0ebe785a08e2d6627ae5eb17) )
+ ROM_LOAD16_BYTE( "ninj_4h.bin", 0x60000, 0x10000, CRC(dc1a21d4) SHA1(76463837e0da8fd61de334e00adb807c7ef92523) )
+ ROM_LOAD16_BYTE( "ninj_4l.bin", 0x60001, 0x10000, CRC(64660b15) SHA1(9e9c5f61add1439613400fee0c2376dc4000e6c6) )
+ ROM_LOAD16_BYTE( "ninj_5h.bin", 0x80000, 0x10000, CRC(49cda31b) SHA1(e9579b9d47f7e638f933b8ce659bc63c8bdeb0a4) )
+ ROM_LOAD16_BYTE( "ninj_5l.bin", 0x80001, 0x10000, CRC(1c5ef815) SHA1(7e88c1545ee15efd928220989f8b29207a8fec7e) )
+ ROM_LOAD16_BYTE( "ninj_6h.bin", 0xa0000, 0x10000, CRC(b647f31e) SHA1(18367b96418ab950ba97d656e1466234af3bca80) )
+ ROM_LOAD16_BYTE( "ninj_6l.bin", 0xa0001, 0x10000, CRC(9e5407e3) SHA1(85a8383573f3cd120f323e867c7fa2b6badd5aad) )
+ROM_END
+
+ROM_START( ar_ninj2 )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE(0x200000, "user3", 0)
+ ROM_LOAD16_BYTE( "arcadia5.u10", 0x00000, 0x10000, CRC(217cb8eb) SHA1(7cb1da4d5d5b5af5f42c10848c7535bdeebbcd94) )
+ ROM_LOAD16_BYTE( "arcadia5.u6", 0x00001, 0x10000, CRC(009bee8f) SHA1(ff61a0770643400ecddc70e603ca6589424b6831) )
+ ROM_LOAD16_BYTE( "arcadia5.u11", 0x20000, 0x10000, CRC(f5c84e48) SHA1(8149a225a406ffb7c9faaa48af4947c2f66f750d) )
+ ROM_LOAD16_BYTE( "arcadia5.u7", 0x20001, 0x10000, CRC(62d32d21) SHA1(3b80e0a4543d64f905139224f333a913cde60f30) )
+ ROM_LOAD16_BYTE( "arcadia5.u12", 0x40000, 0x10000, CRC(c6e4dd36) SHA1(a8dcea97e0eb1da462ad55fd543c637544bfd059) )
+ ROM_LOAD16_BYTE( "arcadia5.u8", 0x40001, 0x10000, CRC(1dca7ea5) SHA1(2950ea2e9267d27e0ebe785a08e2d6627ae5eb17) )
+ ROM_LOAD16_BYTE( "arcadia5.u13", 0x60000, 0x10000, CRC(1bca3231) SHA1(57bd0516c30c4b7d8b4ca27580f770732b1a56bd) )
+ ROM_LOAD16_BYTE( "arcadia5.u9", 0x60001, 0x10000, CRC(df2f98ae) SHA1(cbad0371109aab9fa6c72a022a496e9b85c5fcd4) )
+ ROM_LOAD16_BYTE( "arcadia5.u19", 0x80000, 0x10000, CRC(49cda31b) SHA1(e9579b9d47f7e638f933b8ce659bc63c8bdeb0a4) )
+ ROM_LOAD16_BYTE( "arcadia5.u15", 0x80001, 0x10000, CRC(1c5ef815) SHA1(7e88c1545ee15efd928220989f8b29207a8fec7e) )
+ ROM_LOAD16_BYTE( "arcadia5.u20", 0xa0000, 0x10000, CRC(7359920b) SHA1(72c7438f9f5ef5d6a23f11fc58d32f8e1ff0ae44) )
+ ROM_LOAD16_BYTE( "arcadia5.u16", 0xa0001, 0x10000, CRC(85a639bb) SHA1(22bfadfe6c8fd366e45ec172c070d9811e1ea8a9) )
+
+ ROM_REGION( 0x104, "misc", ROMREGION_ERASEFF )
+ ROM_LOAD( "arcadia.u14.bin", 0x000, 0x104, CRC(1af35582) SHA1(a78aa61a56dea9b5c9df8b734f99adb0383d135b) ) // bad/protected?
+ROM_END
+
+
+
+/* RDWR V 2.3 */
+ROM_START( ar_rdwr )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE(0x200000, "user3", 0)
+ ROM_LOAD16_BYTE( "rdwr_1h.bin", 0x00000, 0x10000, CRC(f52cb704) SHA1(cce8c7484ae8c3a3d14b2e79a981780a277c9b1c) )
+ ROM_LOAD16_BYTE( "rdwr_1l.bin", 0x00001, 0x10000, CRC(fde0de6d) SHA1(7f62ce854a040775548c5ba3b05e6a4dcb0d7cfb) )
+ ROM_LOAD16_BYTE( "rdwr_2h.bin", 0x20000, 0x10000, CRC(8f3c1a2c) SHA1(e473e55457c04ebd597375e9936aeb0473507ed7) )
+ ROM_LOAD16_BYTE( "rdwr_2l.bin", 0x20001, 0x10000, CRC(21865e15) SHA1(be4b0e77a17edeb77f6a9d4bec6d49d4a46242ea) )
+ ROM_LOAD16_BYTE( "rdwr_3h.bin", 0x40000, 0x10000, CRC(0cb3bc66) SHA1(5e22abcd38fc74f472cc5090b7c2893aaabc37bd) )
+ ROM_LOAD16_BYTE( "rdwr_3l.bin", 0x40001, 0x10000, CRC(d863a958) SHA1(d27b8ff2daa51319d5c44700c6dd74e4bc8d99a4) )
+ ROM_LOAD16_BYTE( "rdwr_4h.bin", 0x60000, 0x10000, CRC(466fe771) SHA1(1cc65887e097302bd504b8c4da5f7d2b760d7f74) )
+ ROM_LOAD16_BYTE( "rdwr_4l.bin", 0x60001, 0x10000, CRC(fff39238) SHA1(05b4a70e1f808254e1fb20a15c460655d14d4216) )
+ROM_END
+
+
+/* SDWR V 2.1 */
+ROM_START( ar_sdwr )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "sdwr_1h.bin", 0x00000, 0x10000, CRC(aef3eea8) SHA1(4bf7619f52395fcbde3c8f7af3fd7da4af03c673) )
+ ROM_LOAD16_BYTE( "sdwr_1l.bin", 0x00001, 0x10000, CRC(daed4add) SHA1(a9404a87f1958d7ab829fbb48855d2deb64c5aec) )
+ ROM_LOAD16_BYTE( "sdwr_2h.bin", 0x20000, 0x10000, CRC(d67ba564) SHA1(2afba72a77806e3925c9ca1e13c16c442a6cfc3a) )
+ ROM_LOAD16_BYTE( "sdwr_2l.bin", 0x20001, 0x10000, CRC(97f58a6d) SHA1(161bc8b3e14e5efca7b988f80cc16345280ca4bd) )
+ ROM_LOAD16_BYTE( "sdwr_3h.bin", 0x40000, 0x10000, CRC(b31ad2b2) SHA1(66003bd331f61d1bd2e8f4d595b61503dad4e4b8) )
+ ROM_LOAD16_BYTE( "sdwr_3l.bin", 0x40001, 0x10000, CRC(af929620) SHA1(5fde0f199016abf8fd9db821ee492feeba21b604) )
+ ROM_LOAD16_BYTE( "sdwr_4h.bin", 0x60000, 0x10000, CRC(7502a271) SHA1(aa318619c0b98873b435b5bbf7feb2d5d51198f9) )
+ ROM_LOAD16_BYTE( "sdwr_4l.bin", 0x60001, 0x10000, CRC(942d50b4) SHA1(eb0c9057ffd0d03dc2cde1158ce9f07de8ea6905) )
+ ROM_LOAD16_BYTE( "sdwr_5h.bin", 0x80000, 0x10000, CRC(c25ac91d) SHA1(da4d46a2c987e2be2e31c081557b2de1744fa237) )
+ ROM_LOAD16_BYTE( "sdwr_5l.bin", 0x80001, 0x10000, CRC(ecd1fbd3) SHA1(0b859d608859ccbff03db655219dfea4e609454d) )
+ ROM_LOAD16_BYTE( "sdwr_6h.bin", 0xa0000, 0x10000, CRC(ea3c8ab3) SHA1(95cb5b9dd29c19862a2659867474cbf49192f830) )
+ ROM_LOAD16_BYTE( "sdwr_6l.bin", 0xa0001, 0x10000, CRC(2544ccd7) SHA1(953aa00f2610ecd31db6e36964cbe7c2866050b9) )
+ROM_END
+
+ROM_START( ar_sdwr2 )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE(0x200000, "user3", 0)
+ ROM_LOAD16_BYTE( "arcadia1.u10", 0x00000, 0x10000, CRC(30949f1f) SHA1(270cd449f994eda76afd5532018bad636ac4cf68) )
+ ROM_LOAD16_BYTE( "arcadia1.u6", 0x00001, 0x10000, CRC(c760d1c4) SHA1(7d311e8b192e493da9501755e096599e1e8e8d3e) )
+ ROM_LOAD16_BYTE( "arcadia1.u11", 0x20000, 0x10000, CRC(d67ba564) SHA1(2afba72a77806e3925c9ca1e13c16c442a6cfc3a) )
+ ROM_LOAD16_BYTE( "arcadia1.u7", 0x20001, 0x10000, CRC(97f58a6d) SHA1(161bc8b3e14e5efca7b988f80cc16345280ca4bd) )
+ ROM_LOAD16_BYTE( "arcadia1.u12", 0x40000, 0x10000, CRC(b31ad2b2) SHA1(66003bd331f61d1bd2e8f4d595b61503dad4e4b8) )
+ ROM_LOAD16_BYTE( "arcadia1.u8", 0x40001, 0x10000, CRC(af929620) SHA1(5fde0f199016abf8fd9db821ee492feeba21b604) )
+ ROM_LOAD16_BYTE( "arcadia1.u13", 0x60000, 0x10000, CRC(360b17a6) SHA1(db7e1ce1c545139142804ce68ce5232d153fb0f2) )
+ ROM_LOAD16_BYTE( "arcadia1.u9", 0x60001, 0x10000, CRC(d724e563) SHA1(0012bc6354642a761fc223627401542ae48aea6e) )
+ ROM_LOAD16_BYTE( "arcadia1.u19", 0x80000, 0x10000, CRC(c25ac91d) SHA1(da4d46a2c987e2be2e31c081557b2de1744fa237) )
+ ROM_LOAD16_BYTE( "arcadia1.u15", 0x80001, 0x10000, CRC(ecd1fbd3) SHA1(0b859d608859ccbff03db655219dfea4e609454d) )
+ ROM_LOAD16_BYTE( "arcadia1.u20", 0xa0000, 0x10000, CRC(5791440b) SHA1(fc9297343ddc2e6e1e22b7ed9a986777519061db) )
+ ROM_LOAD16_BYTE( "arcadia1.u16", 0xa0001, 0x10000, CRC(e63e1679) SHA1(0762bff0018e006905a2e58141fdf05910f06e29) )
+
+ ROM_REGION( 0x104, "misc", ROMREGION_ERASEFF )
+ ROM_LOAD( "arcadia.u14.bin", 0x000, 0x104, CRC(1af35582) SHA1(a78aa61a56dea9b5c9df8b734f99adb0383d135b) ) // bad/protected?
+ROM_END
+
+
+/* SOCC */
+ROM_START( ar_socc )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "socc30.1hi", 0x00000, 0x10000, CRC(b4df41cf) SHA1(681cecef390f82be420cd9f4d32afddace3da3c8) )
+ ROM_LOAD16_BYTE( "socc30.1lo", 0x00001, 0x10000, CRC(28b5e119) SHA1(3fff3252b855e6ca1aceff89ec0c61688c954d88) )
+ ROM_LOAD16_BYTE( "socc30.2hi", 0x20000, 0x10000, CRC(b3c14026) SHA1(be4e05cbf5b14a1dc77eff70bb44c8cdae57e59a) )
+ ROM_LOAD16_BYTE( "socc30.2lo", 0x20001, 0x10000, CRC(f7f9a734) SHA1(064adbfb919c7422190b5e4146fbc335a2a97091) )
+ ROM_LOAD16_BYTE( "socc30.3hi", 0x40000, 0x10000, CRC(2a2bd2a0) SHA1(9a9a0463ecf99941f88a163dcb111bf8c3508d78) )
+ ROM_LOAD16_BYTE( "socc30.3lo", 0x40001, 0x10000, CRC(f335bb8b) SHA1(a15ee6b27d6e2aab25f3260edd0803fe1fa05f0e) )
+ ROM_LOAD16_BYTE( "socc30.4hi", 0x60000, 0x10000, CRC(4f2f28dc) SHA1(cd419c80e7112163fd182d2cc58148d3674ccd8c) )
+ ROM_LOAD16_BYTE( "socc30.4lo", 0x60001, 0x10000, CRC(b326d36c) SHA1(5ac2df36754c97065f74695a9c46e2a558e8e112) )
+ ROM_LOAD16_BYTE( "socc30.5hi", 0x80000, 0x10000, CRC(4fcaec4a) SHA1(1286c57a81358a69573df6f6cedf44c564476320) )
+ ROM_LOAD16_BYTE( "socc30.5lo", 0x80001, 0x10000, CRC(f131115e) SHA1(a9050878cbc1923bb88d46ecdad8f5bd69d389ea) )
+ ROM_LOAD16_BYTE( "socc30.6hi", 0xa0000, 0x10000, CRC(9380644f) SHA1(01da02f9397c7b8fd44a78a533f09264eb4f3d0c) )
+ ROM_LOAD16_BYTE( "socc30.6lo", 0xa0001, 0x10000, CRC(b93e13ea) SHA1(0fac9cb54099f0d0ad61eb6f5bd3686c27a045b9) )
+ROM_END
+
+
+/* SPOT */
+ROM_START( ar_spot )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "spotv2.1h", 0x00000, 0x10000, CRC(a8440838) SHA1(8d64ddb603754c85aad47bd079d0a7d80d57b36c) )
+ ROM_LOAD16_BYTE( "spotv2.1l", 0x00001, 0x10000, CRC(2abd2835) SHA1(b419da47c6390334ed8af56bc21430e5b43d6d58) )
+ ROM_LOAD16_BYTE( "spotv2.2h", 0x20000, 0x10000, CRC(f4c95f77) SHA1(46c70755e3c6d06bec4b1bd164a586292a59249d) )
+ ROM_LOAD16_BYTE( "spotv2.2l", 0x20001, 0x10000, CRC(58d7bf54) SHA1(0da63d32d738f8ed3675c6d14b2d12039af5ff21) )
+ ROM_LOAD16_BYTE( "spotv2.3h", 0x40000, 0x10000, CRC(c9d2f3b7) SHA1(1b4693bcde14dc5eefe7456d4d613e6cb674c972) )
+ ROM_LOAD16_BYTE( "spotv2.3l", 0x40001, 0x10000, CRC(adf94e81) SHA1(5ad56044008236edea0a44393daee06e572b1cc2) )
+ ROM_LOAD16_BYTE( "spotv2.4h", 0x60000, 0x10000, CRC(cdea2feb) SHA1(4bb24b8cb5dd1e88d3f468979e2f350568414668) )
+ ROM_LOAD16_BYTE( "spotv2.4l", 0x60001, 0x10000, CRC(214c353b) SHA1(819283248eac2a516f9fcdda060284ffe9c39bc8) )
+ ROM_LOAD16_BYTE( "spotv2.5h", 0x80000, 0x10000, CRC(809d0f5c) SHA1(d1bae86090db8e5cc066afb76203704e7d217fde) )
+ ROM_LOAD16_BYTE( "spotv2.5l", 0x80001, 0x10000, CRC(b86d8153) SHA1(42a564fa608e806d04052e67263afc4a5a417d40) )
+ ROM_LOAD16_BYTE( "spotv2.6h", 0xa0000, 0x10000, CRC(8c221a34) SHA1(8f246bbcb79f5e508932d776fbfa648392f7f78d) )
+ ROM_LOAD16_BYTE( "spotv2.6l", 0xa0001, 0x10000, CRC(821fa69a) SHA1(f037853be96158b8a6dd5f34e15ddfc16b6410c3) )
+ ROM_LOAD16_BYTE( "spotv2.7h", 0xc0000, 0x10000, CRC(054355db) SHA1(6f4a46230b6dfd4727816737c31bce9483d3a3f7) )
+ ROM_LOAD16_BYTE( "spotv2.7l", 0xc0001, 0x10000, CRC(30d396d8) SHA1(2a56727554a823f56b37b9e8d324e9f53524eb02) )
+ ROM_LOAD16_BYTE( "spotv2.8h", 0xe0000, 0x10000, CRC(94dbb239) SHA1(0c475c8e102cc835d01e3de4604c1323219048f1) )
+ ROM_LOAD16_BYTE( "spotv2.8l", 0xe0001, 0x10000, CRC(4d7f8f05) SHA1(04690717cec5912cd12ccb7135614842f5597898) )
+ROM_END
+
+
+/* SPRG */
+ROM_START( ar_sprg )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "sprg_1h.bin", 0x00000, 0x10000, CRC(90b45dc5) SHA1(7cf1fc27e95bf207ed94cc5c20cf0c0ae7799d83) )
+ ROM_LOAD16_BYTE( "sprg_1l.bin", 0x00001, 0x10000, CRC(e5ce68e9) SHA1(dfda2e0bffc499a497865bc214450653880eccf2) )
+ ROM_LOAD16_BYTE( "sprg_2h.bin", 0x20000, 0x10000, CRC(02ef780f) SHA1(d21d6e8a379a2b38de7f3ec0540f67dd6425cbc9) )
+ ROM_LOAD16_BYTE( "sprg_2l.bin", 0x20001, 0x10000, CRC(fa1f5b23) SHA1(4f808d8ee9cd672061995d0bfab65851bf1c01d3) )
+ ROM_LOAD16_BYTE( "sprg_3h.bin", 0x40000, 0x10000, CRC(48130e6e) SHA1(479555c4a5c041c04135f01fbdd5c5f78f4422cf) )
+ ROM_LOAD16_BYTE( "sprg_3l.bin", 0x40001, 0x10000, CRC(4b968cc6) SHA1(fbf3bcb5803dbe75e5a9bcde39c98c9c30bd1699) )
+ ROM_LOAD16_BYTE( "sprg_4h.bin", 0x60000, 0x10000, CRC(23c8f667) SHA1(da75def3a34f6e7d48f2c6cefff608348c09cf70) )
+ ROM_LOAD16_BYTE( "sprg_4l.bin", 0x60001, 0x10000, CRC(13ba011f) SHA1(75da2fbbfe2e957992b2a73609737d777fe9a151) )
+ROM_END
+
+
+/* XEON V 2.3 */
+ROM_START( ar_xeon )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "xeon_1h.bin", 0x00000, 0x10000, CRC(ca422811) SHA1(fa6f82e1d91b48d58b61f916d5b04dc1a13774fb) )
+ ROM_LOAD16_BYTE( "xeon_1l.bin", 0x00001, 0x10000, CRC(97edf967) SHA1(57fca524e01ba21f7420472f14aaf3fa63a326fa) )
+ ROM_LOAD16_BYTE( "xeon_2h.bin", 0x20000, 0x10000, CRC(8078c10e) SHA1(599995374b23da7187556e2f4f285b60d818f885) )
+ ROM_LOAD16_BYTE( "xeon_2l.bin", 0x20001, 0x10000, CRC(a8845d8f) SHA1(2d54dc25af68c46bbbdf8f9ed8014ae7d8564e09) )
+ ROM_LOAD16_BYTE( "xeon_3h.bin", 0x40000, 0x10000, CRC(9d013152) SHA1(7a3bec56d564efbca9721d308b3eddc76763ec41) )
+ ROM_LOAD16_BYTE( "xeon_3l.bin", 0x40001, 0x10000, CRC(331b1449) SHA1(0e282d04b2c7e68051e5ea1671737b11dfb71521) )
+ ROM_LOAD16_BYTE( "xeon_4h.bin", 0x60000, 0x10000, CRC(fbf43d5c) SHA1(6d335b7b1d3b75887526cb8ea3518661b5554774) )
+ ROM_LOAD16_BYTE( "xeon_4l.bin", 0x60001, 0x10000, CRC(47b60bf5) SHA1(10d8addc090ad3fa2663c40e22f736ac3522b177) )
+ROM_END
+
+
+ROM_START( ar_blast )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "blsb-v2-1_1-hi.bin", 0x00000, 0x10000, CRC(6d2e38e5) SHA1(ef9b9ae7644b10892b09f15a3e916c3f51cbbe06) )
+ ROM_LOAD16_BYTE( "blsb-v2-1_1-lo.bin", 0x00001, 0x10000, CRC(28b6db63) SHA1(09c4998f021ae7e25ec4a4009e6c8177fb6649c8) )
+ ROM_LOAD16_BYTE( "blsb-v2-1_2-hi.bin", 0x20000, 0x10000, CRC(8b3c629c) SHA1(34872cd6cf5627517f43c7174f2b263bb1cf33ef) )
+ ROM_LOAD16_BYTE( "blsb-v2-1_2-lo.bin", 0x20001, 0x10000, CRC(966c733c) SHA1(32d711fdea43d9c61532b71627afa5e518d3fb11) )
+ ROM_LOAD16_BYTE( "blsb-v2-1_3-hi.bin", 0x40000, 0x10000, CRC(6013b0d2) SHA1(88b2adb76a60d8160673a3abfe97a4f3f97c1825) )
+ ROM_LOAD16_BYTE( "blsb-v2-1_3-lo.bin", 0x40001, 0x10000, CRC(8c5d602d) SHA1(17f7fb2727210286f85d0b356411ee5302f59bef) )
+ ROM_LOAD16_BYTE( "blsb-v2-1_4-hi.bin", 0x60000, 0x10000, CRC(cc091362) SHA1(2a3e945a17bd8b7b70b3a7efb00d62a37f0ececa) )
+ ROM_LOAD16_BYTE( "blsb-v2-1_4-lo.bin", 0x60001, 0x10000, CRC(16b7618a) SHA1(9857255eb47aff683893d6fe1bdf64a2ea2492a7) )
+ROM_END
+
+ROM_START( ar_pm )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "pm-1hi.bin", 0x00000, 0x10000, CRC(ed65f3db) SHA1(71022cd9f379e9511e472aa1cc60d9629dfb69d5) )
+ ROM_LOAD16_BYTE( "pm-1lo.bin", 0x00001, 0x10000, CRC(7189a482) SHA1(d2daba2f3ce7991b0a6f4f5fbda44e1c95554cfc) )
+ ROM_LOAD16_BYTE( "pm-2hi.bin", 0x20000, 0x10000, CRC(a33fd701) SHA1(9101c2bedefc7f480adf02542d335fadc28ba7bc) )
+ ROM_LOAD16_BYTE( "pm-2lo.bin", 0x20001, 0x10000, CRC(17dee8b9) SHA1(695c53c3317f8b82414101404950fe6b7f93912a) )
+ROM_END
+
+ROM_START( ar_dlta )
+ ARCADIA_BIOS
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "dlta_v3_1-hi.bin", 0x00000, 0x10000, CRC(3d428b49) SHA1(a1b1173a2128115768634b23392f1536ffcb6f51) )
+ ROM_LOAD16_BYTE( "dlta_v3_1-lo.bin", 0x00001, 0x10000, CRC(e5d6508b) SHA1(f0d54f2b8c3f0752a77a33267c1c2333fcf6ecae) )
+ ROM_LOAD16_BYTE( "dlta_v3_2-hi.bin", 0x20000, 0x10000, CRC(e8a23dfe) SHA1(5d60162da160a6121d11d36a45c92f75ba5002d5) )
+ ROM_LOAD16_BYTE( "dlta_v3_2-lo.bin", 0x20001, 0x10000, CRC(84d82a8f) SHA1(851961e41796fc97af8f98214bd87d306db3b3d3) )
+ ROM_LOAD16_BYTE( "dlta_v3_3-hi.bin", 0x40000, 0x10000, CRC(75563b80) SHA1(ff35376c1db36b3e635f698190679697f3dc44cc) )
+ ROM_LOAD16_BYTE( "dlta_v3_3-lo.bin", 0x40001, 0x10000, CRC(30b911b2) SHA1(68f116d8d041aa482b9b578ba57dbd3fd2afe5b9) )
+ ROM_LOAD16_BYTE( "dlta_v3_4-hi.bin", 0x60000, 0x10000, CRC(80cd42a5) SHA1(67a7cba3778de9205ba9c31b533404e3afef8798) )
+ ROM_LOAD16_BYTE( "dlta_v3_4-lo.bin", 0x60001, 0x10000, CRC(2fe13d9e) SHA1(3240719383df436ba66111a2b4fe93a3b474d7a8) )
+ ROM_LOAD16_BYTE( "dlta_v3_5-hi.bin", 0x80000, 0x10000, CRC(960c9a17) SHA1(66b82b2f96ea473f20c306252c51370e3bd93754) )
+ ROM_LOAD16_BYTE( "dlta_v3_5-lo.bin", 0x80001, 0x10000, CRC(79cbc0dd) SHA1(11cd144e0f30feac1ecb8abc006e428eda71c63c) )
+ ROM_LOAD16_BYTE( "dlta_v3_6-hi.bin", 0xa0000, 0x10000, CRC(9df96431) SHA1(4d68ee592d4de1fc112a4579785d17443d8a0cfd) )
+ ROM_LOAD16_BYTE( "dlta_v3_6-lo.bin", 0xa0001, 0x10000, CRC(5b0d7f30) SHA1(e4ca74de30c325a18204446c3e547ca728402e74) )
+ ROM_LOAD16_BYTE( "dlta_v3_7-hi.bin", 0xc0000, 0x10000, CRC(8e966e69) SHA1(f0935710ad031c69b2aa758d3c78331838ac3f3d) )
+ ROM_LOAD16_BYTE( "dlta_v3_7-lo.bin", 0xc0001, 0x10000, CRC(42553743) SHA1(4df836b6cff80bde737a52a3ea45eb1bda14fa52) )
+ ROM_LOAD16_BYTE( "dlta_v3_8-hi.bin", 0xe0000, 0x10000, CRC(9ef08c31) SHA1(837d8b49e23e4ad493a1a167f477f5aeea48544a) )
+ ROM_LOAD16_BYTE( "dlta_v3_8-lo.bin", 0xe0001, 0x10000, CRC(7088bb88) SHA1(c57ea00c87252060a10660555f140ed2ace29b53) )
+ROM_END
+
+
+ROM_START( ar_argh ) // this plugs directly into the a500 motherboard, no arcadia bios, just the a500 kickstart and game ROMs
+ ROM_REGION16_BE(0x80000, "kickstart", 0 )
+ ROM_LOAD16_WORD("315093-01.u2", 0x00000, 0x40000, CRC(a6ce1636) SHA1(11f9e62cf299f72184835b7b2a70a16333fc0d88))
+ ROM_COPY("kickstart", 0x00000, 0x40000, 0x40000 )
+
+ ROM_REGION16_BE( 0x180000, "user3", ROMREGION_ERASEFF )
+ ROM_LOAD16_BYTE( "argh-1-hi-11-28-87.u12", 0x000000, 0x10000, CRC(3b1f8075) SHA1(61aeff9f6a2dff6efe4276cb0bcbb80b495e26b6) )
+ ROM_LOAD16_BYTE( "argh-1-lo-11-28-87.u16", 0x000001, 0x10000, CRC(78b77071) SHA1(5848e30cfd08f9241f8ff9267fdcf2c87c72cdb0) )
+ ROM_LOAD16_BYTE( "argh-2-hi-11-28-87.u11", 0x020000, 0x10000, CRC(9604e1e9) SHA1(03c010fc7075db953b47282ce54097c4921e3560) )
+ ROM_LOAD16_BYTE( "argh-2-lo-11-28-87.u15", 0x020001, 0x10000, CRC(0c7c8133) SHA1(cd8013fa7c2d1c3a518c3e26e5b10c6c78b2a8ee) )
+ ROM_LOAD16_BYTE( "argh-3-hi-11-28-87.u10", 0x040000, 0x10000, CRC(84d60a2c) SHA1(7284db16642bd598390d63408113a0e9622f0b3d) )
+ ROM_LOAD16_BYTE( "argh-3-lo-11-28-87.u14", 0x040001, 0x10000, CRC(f43a6107) SHA1(2075739d7cbd8565df7a0333c1a16838df9aa97c) )
+ ROM_LOAD16_BYTE( "argh-4-hi-11-28-87.u9", 0x060000, 0x10000, CRC(7d9d514d) SHA1(a77a4db1ab0ae41e75fe334fcb1c16bb7627fa6d) )
+ ROM_LOAD16_BYTE( "argh-4-lo-11-28-87.u13", 0x060001, 0x10000, CRC(da797e5c) SHA1(59f000fa43f80d7730e8a5ca3f13571ff150ead2) )
+ ROM_LOAD16_BYTE( "argh-5-hi-11-28-87.u20", 0x080000, 0x10000, CRC(75a395c5) SHA1(3064028b78025bc3d9f96884d155f449ef285be9) )
+ ROM_LOAD16_BYTE( "argh-5-lo-11-28-87.u24", 0x080001, 0x10000, CRC(b69db0ed) SHA1(b47b46e0a69ba40c8b59864469b9836ff7a9b3fb) )
+ ROM_LOAD16_BYTE( "argh-6-hi-11-28-87.u19", 0x0a0000, 0x10000, CRC(f06ee4d5) SHA1(2555c97666ff319089d4e767b99718d21ab43f7d) )
+ ROM_LOAD16_BYTE( "argh-6-lo-11-28-87.u23", 0x0a0001, 0x10000, CRC(9d49526a) SHA1(604731ebdeb6961d6faccc44dc7c762275bc7b3e) )
+ ROM_LOAD16_BYTE( "argh-7-hi-11-28-87.u18", 0x0c0000, 0x10000, CRC(2fda9f36) SHA1(26431fad4aeaa068fa15de9803e818b93547edd6) )
+ ROM_LOAD16_BYTE( "argh-7-lo-11-28-87.u22", 0x0c0001, 0x10000, CRC(ad6f16d4) SHA1(91fb41db567eeccc0088ba3530049921d19f2df2) )
+ ROM_LOAD16_BYTE( "argh-8-hi-11-28-87.u17", 0x0e0000, 0x10000, CRC(06be1705) SHA1(dbbd0471a82075775279ef149862379211dead17) )
+ ROM_LOAD16_BYTE( "argh-8-lo-11-28-87.u21", 0x0e0001, 0x10000, CRC(48f7bed1) SHA1(9864de95f0ad73ec5982b37d35d3fc9776bb18fa) )
+ ROM_LOAD16_BYTE( "argh-9-hi-11-28-87.u28", 0x100000, 0x10000, CRC(f6ef5a54) SHA1(db8df6dd29392154fba65de73a641321baecba3c) )
+ ROM_LOAD16_BYTE( "argh-9-lo-11-28-87.u32", 0x100001, 0x10000, CRC(209fc834) SHA1(d190b84eb18ea6d9aee4279b63e7fe6029e173a9) )
+ ROM_LOAD16_BYTE( "argh-10-hi-11-28-87.u27", 0x120000, 0x10000, CRC(e75c9ac1) SHA1(5f1678e6946beaeb2e79853a2416d8565a84a815) )
+ ROM_LOAD16_BYTE( "argh-10-lo-11-28-87.u31", 0x120001, 0x10000, CRC(dc4da335) SHA1(449c1de89cb6ea6296196051bef5470765872285) )
+ ROM_LOAD16_BYTE( "argh-11-hi-11-28-87.u26", 0x140000, 0x10000, CRC(2932054f) SHA1(f03e71170bd24719c26427c3fbf4fdf1363bc64f) )
+ ROM_LOAD16_BYTE( "argh-11-lo-11-28-87.u30", 0x140001, 0x10000, CRC(3ebf8c30) SHA1(b2018b55cf2339fcf67b338fa2804afa2e47d577) )
+ ROM_LOAD16_BYTE( "argh-12-hi-11-28-87.u25", 0x160000, 0x10000, CRC(0e055d4a) SHA1(8993596018e90107623e04c24e91b02887d6252c) )
+ ROM_LOAD16_BYTE( "argh-12-lo-11-28-87.u29", 0x160001, 0x10000, CRC(940168b0) SHA1(7f86226d533a5d5a84fbcaeea5c4ac08e0e7df09) )
+ROM_END
+
+/*************************************
+ *
+ * Low byte ROM decoding
+ *
+ *************************************/
+
+void arcadia_amiga_state::generic_decode(const char *tag, int bit7, int bit6, int bit5, int bit4, int bit3, int bit2, int bit1, int bit0)
+{
+ UINT16 *rom = (UINT16 *)memregion(tag)->base();
+ int i;
+
+ /* only the low byte of ROMs are encrypted in these games */
+ for (i = 0; i < 0x20000/2; i++)
+ rom[i] = BITSWAP16(rom[i], 15,14,13,12,11,10,9,8, bit7,bit6,bit5,bit4,bit3,bit2,bit1,bit0);
+
+ #if 0
+ {
+ UINT8 *ROM = memregion(tag)->base();
+ // int size = memregion(tag)->bytes();
+
+ FILE *fp;
+ char filename[256];
+ sprintf(filename,"decrypted_%s", machine().system().name);
+ fp=fopen(filename, "w+b");
+ if (fp)
+ {
+ for (i = 0; i < 0x20000; i++)
+ fwrite(&ROM[i*2], 1, 1, fp);
+
+ fclose(fp);
+ }
+ }
+ #endif
+}
+
+
+
+/*************************************
+ *
+ * Generic driver init
+ *
+ *************************************/
+
+DRIVER_INIT_MEMBER( arcadia_amiga_state, arcadia )
+{
+ m_agnus_id = AGNUS_HR_NTSC;
+ m_denise_id = DENISE;
+
+ /* OnePlay bios is encrypted, TenPlay is not */
+ UINT16 *biosrom = (UINT16 *)memregion("user2")->base();
+
+ if (biosrom)
+ if (biosrom[0] != 0x4afc)
+ generic_decode("user2", 6, 1, 0, 2, 3, 4, 5, 7);
+}
+
+
+
+
+/*************************************
+ *
+ * Per-game decryption
+ *
+ *************************************/
+
+DRIVER_INIT_MEMBER(arcadia_amiga_state,airh) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 5, 0, 2, 4, 7, 6, 1, 3); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,bowl) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 7, 6, 0, 1, 2, 3, 4, 5); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,blast){ DRIVER_INIT_CALL(arcadia); generic_decode("user3", 4, 1, 7, 6, 2, 0, 3, 5); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,dart) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 4, 0, 7, 6, 3, 1, 2, 5); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,ldrb) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 2, 3, 4, 1, 0, 7, 5, 6); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,ninj) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 1, 6, 5, 7, 4, 2, 0, 3); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,rdwr) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 3, 1, 6, 4, 0, 5, 2, 7); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,sdwr) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 6, 3, 4, 5, 2, 1, 0, 7); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,socc) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 0, 7, 1, 6, 5, 4, 3, 2); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,sprg) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 4, 7, 3, 0, 6, 5, 2, 1); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,xeon) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 3, 1, 2, 4, 0, 5, 6, 7); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,pm) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 7, 6, 5, 4, 3, 2, 1, 0); } // no scramble
+DRIVER_INIT_MEMBER(arcadia_amiga_state,dlta) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 4, 1, 7, 6, 2, 0, 3, 5); }
+DRIVER_INIT_MEMBER(arcadia_amiga_state,argh) { DRIVER_INIT_CALL(arcadia); generic_decode("user3", 5, 0, 2, 4, 7, 6, 1, 3); }
+
+
+/*************************************
+ *
+ * Game drivers
+ *
+ *************************************/
+
+/* BIOS */
+GAME( 1988, ar_bios, 0, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Arcadia System BIOS", MACHINE_IS_BIOS_ROOT )
+
+GAME( 1988, ar_blast, ar_bios, arcadia, arcadia, arcadia_amiga_state, blast, ROT0, "Arcadia Systems", "Blastaball (Arcadia, V 2.1)", 0 )
+
+GAME( 1988, ar_airh, ar_bios, arcadia, arcadia, arcadia_amiga_state, airh, ROT0, "Arcadia Systems", "SportTime Table Hockey (Arcadia, set 1, V 2.1)", 0 )
+GAME( 1988, ar_airh2, ar_airh, arcadia, arcadia, arcadia_amiga_state, airh, ROT0, "Arcadia Systems", "SportTime Table Hockey (Arcadia, set 2)", 0 )
+
+GAME( 1988, ar_bowl, ar_bios, arcadia, arcadia, arcadia_amiga_state, bowl, ROT0, "Arcadia Systems", "SportTime Bowling (Arcadia, V 2.1)", 0 )
+
+GAME( 1987, ar_dart, ar_bios, arcadia, arcadia, arcadia_amiga_state, dart, ROT0, "Arcadia Systems", "World Darts (Arcadia, set 1, V 2.1)", 0 )
+GAME( 1987, ar_dart2, ar_dart, arcadia, arcadia, arcadia_amiga_state, dart, ROT0, "Arcadia Systems", "World Darts (Arcadia, set 2)", MACHINE_NOT_WORKING ) // bad dump
+
+GAME( 1988, ar_fast, ar_bios, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Magic Johnson's Fast Break (Arcadia, V 2.8)", 0 )
+GAME( 1988, ar_fasta, ar_fast, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Magic Johnson's Fast Break (Arcadia, V 2.7)", 0 )
+
+GAME( 1988, ar_ldrb, ar_bios, arcadia, arcadia, arcadia_amiga_state, ldrb, ROT0, "Arcadia Systems", "Leader Board (Arcadia, set 1, V 2.5)", 0 )
+GAME( 1988, ar_ldrba, ar_ldrb, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Leader Board (Arcadia, set 2, V 2.4)", 0 )
+GAME( 1988, ar_ldrbb, ar_ldrb, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Leader Board (Arcadia, set 3)", 0 )
+
+GAME( 1987, ar_ninj, ar_bios, arcadia, arcadia, arcadia_amiga_state, ninj, ROT0, "Arcadia Systems", "Ninja Mission (Arcadia, set 1, V 2.5)", 0 )
+GAME( 1987, ar_ninj2, ar_ninj, arcadia, arcadia, arcadia_amiga_state, ninj, ROT0, "Arcadia Systems", "Ninja Mission (Arcadia, set 2)", 0 )
+
+GAME( 1988, ar_rdwr, ar_bios, arcadia, arcadia, arcadia_amiga_state, rdwr, ROT0, "Arcadia Systems", "RoadWars (Arcadia, V 2.3)", 0 )
+
+GAME( 1988, ar_sdwr, ar_bios, arcadia, arcadia, arcadia_amiga_state, sdwr, ROT0, "Arcadia Systems", "Sidewinder (Arcadia, set 1, V 2.1)", 0 )
+GAME( 1988, ar_sdwr2, ar_sdwr, arcadia, arcadia, arcadia_amiga_state, sdwr, ROT0, "Arcadia Systems", "Sidewinder (Arcadia, set 2)", 0 )
+
+GAME( 1989, ar_socc, ar_bios, arcadia, arcadia, arcadia_amiga_state, socc, ROT0, "Arcadia Systems", "World Trophy Soccer (Arcadia, V 3.0)", 0 )
+
+GAME( 1990, ar_spot, ar_bios, arcadia, arcadia, arcadia_amiga_state, arcadia, ROT0, "Arcadia Systems", "Spot (Arcadia, V 2.0)", 0 )
+
+GAME( 1987, ar_sprg, ar_bios, arcadia, arcadia, arcadia_amiga_state, sprg, ROT0, "Arcadia Systems", "Space Ranger (Arcadia, V 2.0)", 0 )
+
+GAME( 1988, ar_xeon, ar_bios, arcadia, arcadia, arcadia_amiga_state, xeon, ROT0, "Arcadia Systems", "Xenon (Arcadia, V 2.3)", 0 )
+
+GAME( 1988, ar_pm, ar_bios, arcadia, arcadia, arcadia_amiga_state, pm, ROT0, "Arcadia Systems", "Pharaohs Match (Arcadia)", 0 )
+
+GAME( 1988, ar_dlta, ar_bios, arcadia, arcadia, arcadia_amiga_state, dlta, ROT0, "Arcadia Systems", "Delta Command (Arcadia)", 0 )
+
+GAME( 1988, ar_argh, ar_bios, argh, arcadia, arcadia_amiga_state, argh, ROT0, "Arcadia Systems", "Aaargh (Arcadia)", 0 )
diff --git a/src/mame/drivers/artmagic.c b/src/mame/drivers/artmagic.c
index 628eb869c26..dba800e1a3d 100644
--- a/src/mame/drivers/artmagic.c
+++ b/src/mame/drivers/artmagic.c
@@ -1169,9 +1169,9 @@ DRIVER_INIT_MEMBER(artmagic_state,shtstar)
*
*************************************/
-GAME( 1993, ultennis, 0, artmagic, ultennis, artmagic_state, ultennis, ROT0, "Art & Magic", "Ultimate Tennis", GAME_SUPPORTS_SAVE )
-GAME( 1993, ultennisj,ultennis, artmagic, ultennis, artmagic_state, ultennis, ROT0, "Art & Magic (Banpresto license)", "Ultimate Tennis (v 1.4, Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1994, cheesech, 0, cheesech, cheesech, artmagic_state, cheesech, ROT0, "Art & Magic", "Cheese Chase", GAME_SUPPORTS_SAVE )
-GAME( 1994, stonebal, 0, stonebal, stonebal, artmagic_state, stonebal, ROT0, "Art & Magic", "Stone Ball (4 Players)", GAME_SUPPORTS_SAVE )
-GAME( 1994, stonebal2,stonebal, stonebal, stoneba2, artmagic_state, stonebal, ROT0, "Art & Magic", "Stone Ball (2 Players)", GAME_SUPPORTS_SAVE )
-GAME( 1994, shtstar, 0, shtstar, shtstar, artmagic_state, shtstar, ROT0, "Nova", "Shooting Star", GAME_NOT_WORKING )
+GAME( 1993, ultennis, 0, artmagic, ultennis, artmagic_state, ultennis, ROT0, "Art & Magic", "Ultimate Tennis", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ultennisj,ultennis, artmagic, ultennis, artmagic_state, ultennis, ROT0, "Art & Magic (Banpresto license)", "Ultimate Tennis (v 1.4, Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, cheesech, 0, cheesech, cheesech, artmagic_state, cheesech, ROT0, "Art & Magic", "Cheese Chase", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, stonebal, 0, stonebal, stonebal, artmagic_state, stonebal, ROT0, "Art & Magic", "Stone Ball (4 Players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, stonebal2,stonebal, stonebal, stoneba2, artmagic_state, stonebal, ROT0, "Art & Magic", "Stone Ball (2 Players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, shtstar, 0, shtstar, shtstar, artmagic_state, shtstar, ROT0, "Nova", "Shooting Star", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/ashnojoe.c b/src/mame/drivers/ashnojoe.c
index 5e57c75bc76..18b4496d6fb 100644
--- a/src/mame/drivers/ashnojoe.c
+++ b/src/mame/drivers/ashnojoe.c
@@ -443,5 +443,5 @@ DRIVER_INIT_MEMBER(ashnojoe_state,ashnojoe)
membank("bank4")->set_entry(0);
}
-GAME( 1990, scessjoe, 0, ashnojoe, ashnojoe, ashnojoe_state, ashnojoe, ROT0, "Taito Corporation / Wave", "Success Joe (World)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ashnojoe, scessjoe, ashnojoe, ashnojoe, ashnojoe_state, ashnojoe, ROT0, "Taito Corporation / Wave", "Ashita no Joe (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1990, scessjoe, 0, ashnojoe, ashnojoe, ashnojoe_state, ashnojoe, ROT0, "Taito Corporation / Wave", "Success Joe (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ashnojoe, scessjoe, ashnojoe, ashnojoe, ashnojoe_state, ashnojoe, ROT0, "Taito Corporation / Wave", "Ashita no Joe (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/asst128.c b/src/mame/drivers/asst128.c
index 4f24b3a4370..0aab5a981d7 100644
--- a/src/mess/drivers/asst128.c
+++ b/src/mame/drivers/asst128.c
@@ -58,8 +58,9 @@ public:
void asst128_state::machine_start()
{
- memory_region* font = memregion(":isa_cga:cga_mc1502:gfx1");
- memcpy(font->base(), memregion("gfx1")->base(), 0x2000);
+ memory_region* font = memregion(":board0:cga_mc1502:gfx1");
+ memcpy(font->base(), memregion("maincpu")->base()+0xffa6e, 0x0400);
+ memcpy(font->base()+0x0400, memregion("maincpu")->base()+0xf4000, 0x0400);
}
WRITE8_MEMBER(asst128_state::asst128_fdc_dor_w)
@@ -107,13 +108,14 @@ static MACHINE_CONFIG_START( asst128, asst128_state )
asst128_mb_device::static_set_cputag(*device, "maincpu");
MCFG_DEVICE_INPUT_DEFAULTS(asst128)
+// MCFG_DEVICE_REMOVE("mb:dma8237")
+
MCFG_DEVICE_REMOVE("mb:cassette")
MCFG_CASSETTE_ADD("mb:cassette")
MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa_cga", pc_isa8_cards, "cga_mc1502", true)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa_lpt", pc_isa8_cards, "lpt", true)
- MCFG_ISA8_SLOT_ADD("mb:isa", "isa_com", pc_isa8_cards, "com", true)
+ MCFG_ISA8_SLOT_ADD("mb:isa", "board0", pc_isa8_cards, "cga_mc1502", true)
+ MCFG_ISA8_SLOT_ADD("mb:isa", "board1", pc_isa8_cards, "lpt", true)
MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_IBM_PC_XT_83)
@@ -124,26 +126,20 @@ static MACHINE_CONFIG_START( asst128, asst128_state )
MCFG_PC_JOY_ADD("pc_joy")
- /* internal ram */
MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("640K")
MACHINE_CONFIG_END
ROM_START( asst128 )
ROM_REGION16_LE(0x100000,"maincpu", 0)
- ROM_DEFAULT_BIOS("floppy")
- /* BASIC ROM taken from IBM 5150 and needs dumping */
- ROM_LOAD( "basic-1.10.rom", 0xf6000, 0x8000, CRC(ebacb791) SHA1(07449ebca18f979b9ab748582b736e402f2bf940))
- ROM_LOAD( "asf400-f600.bin", 0xf4000, 0x2000, CRC(e3bf22de) SHA1(d4319edc82c0015ca0adc6c8771e887659717e62))
- ROM_SYSTEM_BIOS(0, "floppy", "3rd party floppy support")
- ROMX_LOAD( "rombios7.bin", 0xfc001, 0x2000, CRC(7d7c8d6a) SHA1(a731a65ee547f1d78cfc91461f38166da014f3dc), ROM_SKIP(1) | ROM_BIOS(1))
- ROMX_LOAD( "rombios8.bin", 0xfc000, 0x2000, CRC(ba304663) SHA1(b2533b8f8240f72b7315f27c7b64f95ac52687ca), ROM_SKIP(1) | ROM_BIOS(1))
- ROM_SYSTEM_BIOS(1, "stock", "cassette-only BIOS?")
- ROMX_LOAD( "mainbios.bin", 0xfe000, 0x2000, CRC(8426cbf5) SHA1(41d14137ffa651977041da22aa8071c0f7854158), ROM_BIOS(2))
+ ROM_LOAD( "extbios.bin", 0xf4000, 0x2000, CRC(e3bf22de) SHA1(d4319edc82c0015ca0adc6c8771e887659717e62))
+ ROM_LOAD( "basic.bin", 0xf6000, 0x8000, CRC(a4ec66f6) SHA1(80e934986022681ccde180e92aa108e716c4f19b))
+ ROM_LOAD( "mainbios.bin", 0xfe000, 0x2000, CRC(8426cbf5) SHA1(41d14137ffa651977041da22aa8071c0f7854158))
+
+ // XXX needs dumping
ROM_REGION(0x2000,"gfx1", ROMREGION_ERASE00)
- ROM_COPY( "maincpu", 0xffa6e, 0x0000, 0x0400 )
- ROM_COPY( "maincpu", 0xfc000, 0x0400, 0x0400 )
+ ROM_LOAD( "asst128cg.bin", 0, 0x2000, NO_DUMP )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 198?, asst128, ibm5150, 0, asst128, 0, driver_device, 0, "Schetmash", "Assistent 128", GAME_NOT_WORKING)
+COMP( 198?, asst128, ibm5150, 0, asst128, 0, driver_device, 0, "Schetmash", "Assistent 128", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/asterix.c b/src/mame/drivers/asterix.c
index 0c9ede70076..a0dd353246b 100644
--- a/src/mame/drivers/asterix.c
+++ b/src/mame/drivers/asterix.c
@@ -433,8 +433,8 @@ DRIVER_INIT_MEMBER(asterix_state,asterix)
}
-GAME( 1992, asterix, 0, asterix, asterix, asterix_state, asterix, ROT0, "Konami", "Asterix (ver EAD)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1992, asterixeac, asterix, asterix, asterix, asterix_state, asterix, ROT0, "Konami", "Asterix (ver EAC)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1992, asterixeaa, asterix, asterix, asterix, asterix_state, asterix, ROT0, "Konami", "Asterix (ver EAA)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1992, asterixaad, asterix, asterix, asterix, asterix_state, asterix, ROT0, "Konami", "Asterix (ver AAD)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1992, asterixj, asterix, asterix, asterix, asterix_state, asterix, ROT0, "Konami", "Asterix (ver JAD)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1992, asterix, 0, asterix, asterix, asterix_state, asterix, ROT0, "Konami", "Asterix (ver EAD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, asterixeac, asterix, asterix, asterix, asterix_state, asterix, ROT0, "Konami", "Asterix (ver EAC)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, asterixeaa, asterix, asterix, asterix, asterix_state, asterix, ROT0, "Konami", "Asterix (ver EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, asterixaad, asterix, asterix, asterix, asterix_state, asterix, ROT0, "Konami", "Asterix (ver AAD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, asterixj, asterix, asterix, asterix, asterix_state, asterix, ROT0, "Konami", "Asterix (ver JAD)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/asteroid.c b/src/mame/drivers/asteroid.c
index a6e14b211eb..b8b8720c2bb 100644
--- a/src/mame/drivers/asteroid.c
+++ b/src/mame/drivers/asteroid.c
@@ -1019,21 +1019,21 @@ DRIVER_INIT_MEMBER(asteroid_state,asterock)
*
*************************************/
-GAME( 1979, asteroid, 0, asteroid, asteroid, driver_device, 0, ROT0, "Atari", "Asteroids (rev 4)", GAME_SUPPORTS_SAVE )
-GAME( 1979, asteroid2, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "Atari", "Asteroids (rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1979, asteroid1, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "Atari", "Asteroids (rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1979, asteroidb, asteroid, asteroid, asteroidb, asteroid_state, asteroidb, ROT0, "bootleg", "Asteroids (bootleg on Lunar Lander hardware)", GAME_SUPPORTS_SAVE )
-GAME( 1980, aerolitos, asteroid, asteroid, aerolitos, driver_device, 0, ROT0, "bootleg (Rodmar Elec.)","Aerolitos (Spanish bootleg of Asteroids)", GAME_SUPPORTS_SAVE ) // 'Aerolitos' appears on the cabinet, this was distributed in Spain, the Spanish text is different to that contained in the original version (corrected)
-GAME( 1979, asterock, asteroid, asterock, asterock, asteroid_state, asterock, ROT0, "bootleg (Sidam)", "Asterock (Sidam bootleg of Asteroids)", GAME_SUPPORTS_SAVE )
-GAME( 1979, asterockv, asteroid, asterock, asterock, asteroid_state, asterock, ROT0, "bootleg (Videotron)", "Asterock (Videotron bootleg of Asteroids)", GAME_SUPPORTS_SAVE )
-GAME( 1979, meteorts, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "bootleg (VGG)", "Meteorites (bootleg of Asteroids)", GAME_SUPPORTS_SAVE )
-GAME( 1979, meteorho, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "bootleg (Hoei)", "Meteor (bootleg of Asteroids)", GAME_SUPPORTS_SAVE )
-GAME( 1979, hyperspc, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "bootleg (Rumiano)", "Hyperspace (bootleg of Asteroids)", GAME_SUPPORTS_SAVE )
-
-GAMEL(1980, astdelux, 0, astdelux, astdelux, driver_device, 0, ROT0, "Atari", "Asteroids Deluxe (rev 3)", GAME_SUPPORTS_SAVE, layout_astdelux )
-GAMEL(1980, astdelux2, astdelux, astdelux, astdelux, driver_device, 0, ROT0, "Atari", "Asteroids Deluxe (rev 2)", GAME_SUPPORTS_SAVE, layout_astdelux )
-GAMEL(1980, astdelux1, astdelux, astdelux, astdelux, driver_device, 0, ROT0, "Atari", "Asteroids Deluxe (rev 1)", GAME_SUPPORTS_SAVE, layout_astdelux )
-
-GAME( 1979, llander, 0, llander, llander, driver_device, 0, ROT0, "Atari", "Lunar Lander (rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1979, llander1, llander, llander, llander1, driver_device, 0, ROT0, "Atari", "Lunar Lander (rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1979, llandert, llander, llander, llandert, driver_device, 0, ROT0, "Atari", "Lunar Lander (screen test)", GAME_SUPPORTS_SAVE ) // no copyright shown, assume it's an in-house diagnostics romset (PCB came from a seller that has had Atari prototypes in his possession before)
+GAME( 1979, asteroid, 0, asteroid, asteroid, driver_device, 0, ROT0, "Atari", "Asteroids (rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, asteroid2, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "Atari", "Asteroids (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, asteroid1, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "Atari", "Asteroids (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, asteroidb, asteroid, asteroid, asteroidb, asteroid_state, asteroidb, ROT0, "bootleg", "Asteroids (bootleg on Lunar Lander hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, aerolitos, asteroid, asteroid, aerolitos, driver_device, 0, ROT0, "bootleg (Rodmar Elec.)","Aerolitos (Spanish bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE ) // 'Aerolitos' appears on the cabinet, this was distributed in Spain, the Spanish text is different to that contained in the original version (corrected)
+GAME( 1979, asterock, asteroid, asterock, asterock, asteroid_state, asterock, ROT0, "bootleg (Sidam)", "Asterock (Sidam bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, asterockv, asteroid, asterock, asterock, asteroid_state, asterock, ROT0, "bootleg (Videotron)", "Asterock (Videotron bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, meteorts, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "bootleg (VGG)", "Meteorites (bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, meteorho, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "bootleg (Hoei)", "Meteor (bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, hyperspc, asteroid, asteroid, asteroid, driver_device, 0, ROT0, "bootleg (Rumiano)", "Hyperspace (bootleg of Asteroids)", MACHINE_SUPPORTS_SAVE )
+
+GAMEL(1980, astdelux, 0, astdelux, astdelux, driver_device, 0, ROT0, "Atari", "Asteroids Deluxe (rev 3)", MACHINE_SUPPORTS_SAVE, layout_astdelux )
+GAMEL(1980, astdelux2, astdelux, astdelux, astdelux, driver_device, 0, ROT0, "Atari", "Asteroids Deluxe (rev 2)", MACHINE_SUPPORTS_SAVE, layout_astdelux )
+GAMEL(1980, astdelux1, astdelux, astdelux, astdelux, driver_device, 0, ROT0, "Atari", "Asteroids Deluxe (rev 1)", MACHINE_SUPPORTS_SAVE, layout_astdelux )
+
+GAME( 1979, llander, 0, llander, llander, driver_device, 0, ROT0, "Atari", "Lunar Lander (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, llander1, llander, llander, llander1, driver_device, 0, ROT0, "Atari", "Lunar Lander (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, llandert, llander, llander, llandert, driver_device, 0, ROT0, "Atari", "Lunar Lander (screen test)", MACHINE_SUPPORTS_SAVE ) // no copyright shown, assume it's an in-house diagnostics romset (PCB came from a seller that has had Atari prototypes in his possession before)
diff --git a/src/mame/drivers/astinvad.c b/src/mame/drivers/astinvad.c
index 1fccbbf344c..4f4be0977a2 100644
--- a/src/mame/drivers/astinvad.c
+++ b/src/mame/drivers/astinvad.c
@@ -57,6 +57,7 @@ public:
m_maincpu(*this, "maincpu"),
m_ppi8255_0(*this, "ppi8255_0"),
m_ppi8255_1(*this, "ppi8255_1"),
+ m_palette(*this, "palette"),
m_videoram(*this, "videoram"),
m_samples(*this, "samples"),
m_screen(*this, "screen"){ }
@@ -64,6 +65,7 @@ public:
required_device<cpu_device> m_maincpu;
optional_device<i8255_device> m_ppi8255_0;
optional_device<i8255_device> m_ppi8255_1;
+ required_device<palette_device> m_palette;
required_shared_ptr<UINT8> m_videoram;
UINT8 * m_colorram;
@@ -144,17 +146,16 @@ WRITE8_MEMBER(astinvad_state::spaceint_videoram_w)
void astinvad_state::plot_byte( bitmap_rgb32 &bitmap, UINT8 y, UINT8 x, UINT8 data, UINT8 color )
{
- pen_t fore_pen = rgb_t(pal1bit(color >> 0), pal1bit(color >> 2), pal1bit(color >> 1));
UINT8 flip_xor = m_screen_flip & 7;
- bitmap.pix32(y, x + (0 ^ flip_xor)) = (data & 0x01) ? fore_pen : 0;
- bitmap.pix32(y, x + (1 ^ flip_xor)) = (data & 0x02) ? fore_pen : 0;
- bitmap.pix32(y, x + (2 ^ flip_xor)) = (data & 0x04) ? fore_pen : 0;
- bitmap.pix32(y, x + (3 ^ flip_xor)) = (data & 0x08) ? fore_pen : 0;
- bitmap.pix32(y, x + (4 ^ flip_xor)) = (data & 0x10) ? fore_pen : 0;
- bitmap.pix32(y, x + (5 ^ flip_xor)) = (data & 0x20) ? fore_pen : 0;
- bitmap.pix32(y, x + (6 ^ flip_xor)) = (data & 0x40) ? fore_pen : 0;
- bitmap.pix32(y, x + (7 ^ flip_xor)) = (data & 0x80) ? fore_pen : 0;
+ bitmap.pix32(y, x + (0 ^ flip_xor)) = (data & 0x01) ? m_palette->pen_color(color) : rgb_t::black;
+ bitmap.pix32(y, x + (1 ^ flip_xor)) = (data & 0x02) ? m_palette->pen_color(color) : rgb_t::black;
+ bitmap.pix32(y, x + (2 ^ flip_xor)) = (data & 0x04) ? m_palette->pen_color(color) : rgb_t::black;
+ bitmap.pix32(y, x + (3 ^ flip_xor)) = (data & 0x08) ? m_palette->pen_color(color) : rgb_t::black;
+ bitmap.pix32(y, x + (4 ^ flip_xor)) = (data & 0x10) ? m_palette->pen_color(color) : rgb_t::black;
+ bitmap.pix32(y, x + (5 ^ flip_xor)) = (data & 0x20) ? m_palette->pen_color(color) : rgb_t::black;
+ bitmap.pix32(y, x + (6 ^ flip_xor)) = (data & 0x40) ? m_palette->pen_color(color) : rgb_t::black;
+ bitmap.pix32(y, x + (7 ^ flip_xor)) = (data & 0x80) ? m_palette->pen_color(color) : rgb_t::black;
}
@@ -170,7 +171,7 @@ UINT32 astinvad_state::screen_update_astinvad(screen_device &screen, bitmap_rgb3
{
UINT8 color = color_prom[((y & 0xf8) << 2) | (x >> 3)] >> (m_screen_flip ? 0 : 4);
UINT8 data = m_videoram[(((y ^ m_screen_flip) + yoffs) << 5) | ((x ^ m_screen_flip) >> 3)];
- plot_byte(bitmap, y, x, data, m_screen_red ? 1 : color);
+ plot_byte(bitmap, y, x, data, m_screen_red ? 1 : color & 0x07);
}
return 0;
@@ -651,6 +652,8 @@ static MACHINE_CONFIG_START( kamikaze, astinvad_state )
MCFG_SCREEN_RAW_PARAMS(VIDEO_CLOCK, 320, 0, 256, 256, 32, 256)
MCFG_SCREEN_UPDATE_DRIVER(astinvad_state, screen_update_astinvad)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -695,6 +698,8 @@ static MACHINE_CONFIG_START( spaceint, astinvad_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_UPDATE_DRIVER(astinvad_state, screen_update_spaceint)
+ MCFG_PALETTE_ADD_3BIT_RBG("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -817,9 +822,9 @@ DRIVER_INIT_MEMBER(astinvad_state,spcking2)
*
*************************************/
-GAME( 1979, kamikaze, 0, kamikaze, kamikaze, astinvad_state, kamikaze, ROT270, "Leijac Corporation", "Kamikaze", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, astinvad, kamikaze, kamikaze, astinvad, astinvad_state, kamikaze, ROT270, "Leijac Corporation (Stern Electronics license)", "Astro Invader", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 19??, kosmokil, kamikaze, kamikaze, kamikaze, astinvad_state, kamikaze, ROT270, "bootleg (BEM)", "Kosmo Killer", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // says >BEM< Mi Italy but it looks hacked in, dif revision of game tho.
-GAME( 1979, spcking2, 0, spcking2, spcking2, astinvad_state, spcking2, ROT270, "Konami", "Space King 2", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, spaceint, 0, spaceint, spaceint, driver_device, 0, ROT90, "Shoei", "Space Intruder", GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1980, spaceintj,spaceint, spaceint, spaceintj, driver_device, 0, ROT90, "Shoei", "Space Intruder (Japan)", GAME_IMPERFECT_SOUND | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1979, kamikaze, 0, kamikaze, kamikaze, astinvad_state, kamikaze, ROT270, "Leijac Corporation", "Kamikaze", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, astinvad, kamikaze, kamikaze, astinvad, astinvad_state, kamikaze, ROT270, "Leijac Corporation (Stern Electronics license)", "Astro Invader", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 19??, kosmokil, kamikaze, kamikaze, kamikaze, astinvad_state, kamikaze, ROT270, "bootleg (BEM)", "Kosmo Killer", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // says >BEM< Mi Italy but it looks hacked in, dif revision of game tho.
+GAME( 1979, spcking2, 0, spcking2, spcking2, astinvad_state, spcking2, ROT270, "Konami", "Space King 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, spaceint, 0, spaceint, spaceint, driver_device, 0, ROT90, "Shoei", "Space Intruder", MACHINE_IMPERFECT_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, spaceintj,spaceint, spaceint, spaceintj, driver_device, 0, ROT90, "Shoei", "Space Intruder (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/astrafr.c b/src/mame/drivers/astrafr.c
index 62386cea1d8..bbf281e33ba 100644
--- a/src/mame/drivers/astrafr.c
+++ b/src/mame/drivers/astrafr.c
@@ -2137,202 +2137,202 @@ DRIVER_INIT_MEMBER(astrafr_state,astradec_sml_dual)
}
// Single games?
-GAME( 200?, as_srb, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V004)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_srba, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V100)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_srbb, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V101)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_srbc, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V201)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_srbd, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V202)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_srbe, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V203)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_srb, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V004)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_srba, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V100)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_srbb, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V101)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_srbc, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V201)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_srbd, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V202)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_srbe, as_srb , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Ring a Bell (Astra, V203)", MACHINE_IS_SKELETON_MECHANICAL)
// Linked games (single rom per CPU with master/slave?)
-GAME( 200?, as_party, 0 , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V105)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_partya, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V110)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_partyb, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V112)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_partyc, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V206)" ,GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_partyd, as_party , astrafr_dual_37, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V401)", GAME_IS_SKELETON_MECHANICAL) // significantly different set
-GAME( 200?, as_partye, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V907)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_partyf, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V906)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_party, 0 , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V105)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_partya, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V110)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_partyb, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V112)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_partyc, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V206)" ,MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_partyd, as_party , astrafr_dual_37, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V401)", MACHINE_IS_SKELETON_MECHANICAL) // significantly different set
+GAME( 200?, as_partye, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V907)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_partyf, as_party , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Party Time (Astra, V906)", MACHINE_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_letsp, 0 , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Let's Party (Astra, V904)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_letsp, 0 , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Let's Party (Astra, V904)", MACHINE_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_topsl, 0 , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V103)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_topsla, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V104)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_topslb, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V201)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_topslc, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V203)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_topsld, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V205)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_topsl, 0 , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V103)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_topsla, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V104)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_topslb, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V201)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_topslc, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V203)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_topsld, as_topsl , astrafr_dual_2e, astrafr, driver_device, 0, ROT0, "Astra", "Top Slot (Astra, V205)", MACHINE_IS_SKELETON_MECHANICAL)
// Other HW? (has u1/u2 pairing)
-GAME( 200?, as_bigtm, 0 , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Big Time (Astra, V003)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_acp, 0 , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "unknown Astra 'ACP' (Astra, V403)", GAME_IS_SKELETON_MECHANICAL) // no sound data in here?
-GAME( 200?, as_celeb, 0 , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V100)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_celeba, as_celeb , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V101)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_celebb, as_celeb , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V201)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_bigtm, 0 , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Big Time (Astra, V003)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_acp, 0 , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "unknown Astra 'ACP' (Astra, V403)", MACHINE_IS_SKELETON_MECHANICAL) // no sound data in here?
+GAME( 200?, as_celeb, 0 , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V100)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_celeba, as_celeb , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V101)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_celebb, as_celeb , astra_single , astrafr, astrafr_state, astradec, ROT0, "Astra", "Celebration (Astra, V201)", MACHINE_IS_SKELETON_MECHANICAL)
// u1/u2 pairing and Linked?
-GAME( 200?, as_hc, 0 , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V107)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_hca, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V109)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_hcb, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V110)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_hcc, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V111)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_hcd, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V909)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_hc, 0 , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V107)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_hca, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V109)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_hcb, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V110)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_hcc, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V111)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_hcd, as_hc , astrafr_dual_37 , astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Hokey Cokey (Astra, V909)", MACHINE_IS_SKELETON_MECHANICAL)
// Non-Astra, same hw?
-GAME( 200?, as_cshah, 0 , astra_single_alt_57 , astrafr, astrafr_state, astradec, ROT0, "Lowen", "Cash Ahoi (Lowen, V105)", GAME_IS_SKELETON_MECHANICAL)
-
-
-GAME( 200?, as_big10, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V500)", GAME_IS_SKELETON_MECHANICAL) // BB96
-GAME( 200?, as_big10a, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V503)", GAME_IS_SKELETON_MECHANICAL) // BB96
-GAME( 200?, as_big10b, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V507)", GAME_IS_SKELETON_MECHANICAL) // BB96
-GAME( 200?, as_big10c, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V601)", GAME_IS_SKELETON_MECHANICAL) // BB96
-GAME( 200?, as_big10d, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V605)", GAME_IS_SKELETON_MECHANICAL) // BB96
-GAME( 200?, as_big15, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 15 (Astra, V101)", GAME_IS_SKELETON_MECHANICAL) // DL98
-GAME( 200?, as_bigcs, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big Cash (Astra, V101)", GAME_IS_SKELETON_MECHANICAL) // CF97/CF98
-GAME( 200?, as_bigcsa, as_bigcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big Cash (Astra, V103)", GAME_IS_SKELETON_MECHANICAL) // CF97/CF98
-
-GAME( 200?, as_bbr, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V101)" , GAME_IS_SKELETON_MECHANICAL) // FA00/CU98
-GAME( 200?, as_bbra, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V102,alt)" , GAME_IS_SKELETON_MECHANICAL) // FA00/CU98
-GAME( 200?, as_bbrb, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V201)" , GAME_IS_SKELETON_MECHANICAL) // FA00/CU98
-GAME( 200?, as_bbrc, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V003)" , GAME_IS_SKELETON_MECHANICAL) // CU98
-GAME( 200?, as_bbrd, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL) // CU98
-GAME( 200?, as_bbre, as_bbr , astra_single_37, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V105)" , GAME_IS_SKELETON_MECHANICAL) // FG01
-GAME( 200?, as_bbrf, as_bbr , astra_single_37, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V004)" , GAME_IS_SKELETON_MECHANICAL) // FN01
-
-GAME( 200?, as_dblcs, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V110)" , GAME_IS_SKELETON_MECHANICAL) // BR97
-GAME( 200?, as_dblcsa, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V112)" , GAME_IS_SKELETON_MECHANICAL) // BR97
-GAME( 200?, as_dblcsb, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V108)" , GAME_IS_SKELETON_MECHANICAL) // BR97
-GAME( 200?, as_dblcsc, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V109)" , GAME_IS_SKELETON_MECHANICAL) // CN97
-GAME( 200?, as_dblcsd, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V106)" , GAME_IS_SKELETON_MECHANICAL) // CN97
-GAME( 200?, as_dblcse, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL) // FB00
-GAME( 200?, as_dblcsf, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V100)" , GAME_IS_SKELETON_MECHANICAL) // FB00
-GAME( 200?, as_dblcsg, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V100, alt)" , GAME_IS_SKELETON_MECHANICAL) // DN98
-GAME( 200?, as_dblcsh, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V004)" , GAME_IS_SKELETON_MECHANICAL) // FO01
-
-GAME( 200?, as_fortn, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Fortune Teller (Astra, V009)" , GAME_IS_SKELETON_MECHANICAL)
-
-GAME( 200?, as_gof, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Lowen", "Game Of Fortune (Lowen, V208)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_hog, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Hearts Of Gold (Astra, V002)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_hxr, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Hot Cross Run (Astra, V108)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_hr, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Hot Reel (Astra, V004)" , GAME_IS_SKELETON_MECHANICAL)
-
-GAME( 200?, as_djp, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Double Jackpot (Astra, V107)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_djpa, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Double Jackpot (Astra, V004)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_djpb, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Double Jackpot (Astra, V109)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_cshcs, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Lowen", "Cash Castle (Lowen, V006)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_colmn, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Colour Of Money (Astra, V200)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_colmna, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V107)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_colmnb, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V108)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_colmnc, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V109)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_colmnd, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V908)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jackb, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jackpot Bell (Astra, V104)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jpx, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V100)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jpxa, as_jpx , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V101)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jpxb, as_jpx , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V002)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jolly, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jolly Roger (Astra, V103)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jmpj, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jumping Jackpots (Astra, V100)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jmpja, as_jmpj , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jumping Jackpots (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jjive, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V107)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jjivea, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V106)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jjiveb, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V104)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jjivec, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jjived, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V101)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jjivee, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V101, alt)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jjivef, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V004)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_jjiveg, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V005)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_kingc, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Cash (Astra, V106)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_kingca, as_kingc , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Cash (Astra, V103)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_koc, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Of Clubs (Astra, V200)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_koca, as_koc , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Of Clubs (Astra, V101)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_lbt, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Big 10 (Astra, V103)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_lbta, as_lbt , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Big 10 (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL)
-
-GAME( 200?, as_ldl, 0 , astra_single_2e, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V700)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_ldla, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V600)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_ldlb, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V312)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_ldlc, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V003)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_ldld, as_ldl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Devils (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_ldle, as_ldl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Devils (Astra, V103)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_mp, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Lowen", "Mission Possible (Lowen, V118)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_mp2, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Lowen", "Mission Possible 2 (Lowen, V114)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_otr, 0 , astra_single_2e, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Over The Rainbow (Astra, V104)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_otra, as_otr , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Over The Rainbow (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL) // incomplete set
-GAME( 200?, as_ptf, 0 , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL) // strange extra sound(?) roms in here
-GAME( 200?, as_ptfa, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V803)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_ptfb, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V905)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_ptfc, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_pia, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Pay It Again (Astra, V202)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_piaa, as_pia , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Pay It Again (Astra, V206)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_piab, as_pia , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Pay It Again (Astra, V904)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_pharg, 0 , astra_single_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V005)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_pharga, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V101)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_phargb, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_phargc, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V104)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_phargd, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V106)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_pharge, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V107)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_pb, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Piggy Banking (Astra, V105)" , GAME_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_cshah, 0 , astra_single_alt_57 , astrafr, astrafr_state, astradec, ROT0, "Lowen", "Cash Ahoi (Lowen, V105)", MACHINE_IS_SKELETON_MECHANICAL)
+
+
+GAME( 200?, as_big10, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V500)", MACHINE_IS_SKELETON_MECHANICAL) // BB96
+GAME( 200?, as_big10a, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V503)", MACHINE_IS_SKELETON_MECHANICAL) // BB96
+GAME( 200?, as_big10b, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V507)", MACHINE_IS_SKELETON_MECHANICAL) // BB96
+GAME( 200?, as_big10c, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V601)", MACHINE_IS_SKELETON_MECHANICAL) // BB96
+GAME( 200?, as_big10d, as_big10 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 10 (Astra, V605)", MACHINE_IS_SKELETON_MECHANICAL) // BB96
+GAME( 200?, as_big15, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big 15 (Astra, V101)", MACHINE_IS_SKELETON_MECHANICAL) // DL98
+GAME( 200?, as_bigcs, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big Cash (Astra, V101)", MACHINE_IS_SKELETON_MECHANICAL) // CF97/CF98
+GAME( 200?, as_bigcsa, as_bigcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Big Cash (Astra, V103)", MACHINE_IS_SKELETON_MECHANICAL) // CF97/CF98
+
+GAME( 200?, as_bbr, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL) // FA00/CU98
+GAME( 200?, as_bbra, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V102,alt)" , MACHINE_IS_SKELETON_MECHANICAL) // FA00/CU98
+GAME( 200?, as_bbrb, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V201)" , MACHINE_IS_SKELETON_MECHANICAL) // FA00/CU98
+GAME( 200?, as_bbrc, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V003)" , MACHINE_IS_SKELETON_MECHANICAL) // CU98
+GAME( 200?, as_bbrd, as_bbr , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // CU98
+GAME( 200?, as_bbre, as_bbr , astra_single_37, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL) // FG01
+GAME( 200?, as_bbrf, as_bbr , astra_single_37, astrafr, driver_device, 0, ROT0, "Astra", "Bullion Bars (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) // FN01
+
+GAME( 200?, as_dblcs, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V110)" , MACHINE_IS_SKELETON_MECHANICAL) // BR97
+GAME( 200?, as_dblcsa, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V112)" , MACHINE_IS_SKELETON_MECHANICAL) // BR97
+GAME( 200?, as_dblcsb, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V108)" , MACHINE_IS_SKELETON_MECHANICAL) // BR97
+GAME( 200?, as_dblcsc, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V109)" , MACHINE_IS_SKELETON_MECHANICAL) // CN97
+GAME( 200?, as_dblcsd, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL) // CN97
+GAME( 200?, as_dblcse, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // FB00
+GAME( 200?, as_dblcsf, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) // FB00
+GAME( 200?, as_dblcsg, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V100, alt)" , MACHINE_IS_SKELETON_MECHANICAL) // DN98
+GAME( 200?, as_dblcsh, as_dblcs , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Double Cash (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL) // FO01
+
+GAME( 200?, as_fortn, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Fortune Teller (Astra, V009)" , MACHINE_IS_SKELETON_MECHANICAL)
+
+GAME( 200?, as_gof, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Lowen", "Game Of Fortune (Lowen, V208)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_hog, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Hearts Of Gold (Astra, V002)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_hxr, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Hot Cross Run (Astra, V108)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_hr, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Hot Reel (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL)
+
+GAME( 200?, as_djp, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Double Jackpot (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_djpa, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Double Jackpot (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_djpb, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Double Jackpot (Astra, V109)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_cshcs, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Lowen", "Cash Castle (Lowen, V006)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_colmn, 0 , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Colour Of Money (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_colmna, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_colmnb, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V108)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_colmnc, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V109)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_colmnd, as_colmn , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Colour Of Money (Astra, V908)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jackb, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jackpot Bell (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jpx, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jpxa, as_jpx , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jpxb, as_jpx , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jackpot X (Astra, V002)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jolly, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jolly Roger (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jmpj, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jumping Jackpots (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jmpja, as_jmpj , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Jumping Jackpots (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jjive, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jjivea, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jjiveb, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jjivec, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jjived, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jjivee, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V101, alt)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jjivef, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V004)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_jjiveg, as_jjive , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Jungle Jive (Astra, V005)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_kingc, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Cash (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_kingca, as_kingc , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Cash (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_koc, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Of Clubs (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_koca, as_koc , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "King Of Clubs (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_lbt, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Big 10 (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_lbta, as_lbt , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Big 10 (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL)
+
+GAME( 200?, as_ldl, 0 , astra_single_2e, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V700)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_ldla, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V600)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_ldlb, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V312)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_ldlc, as_ldl , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Little Devils (Astra, V003)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_ldld, as_ldl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Devils (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_ldle, as_ldl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Little Devils (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_mp, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Lowen", "Mission Possible (Lowen, V118)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_mp2, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Lowen", "Mission Possible 2 (Lowen, V114)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_otr, 0 , astra_single_2e, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Over The Rainbow (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_otra, as_otr , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Over The Rainbow (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // incomplete set
+GAME( 200?, as_ptf, 0 , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL) // strange extra sound(?) roms in here
+GAME( 200?, as_ptfa, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V803)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_ptfb, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra, V905)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_ptfc, as_ptf , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Astra", "Party Fruits (Astra)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_pia, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Pay It Again (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_piaa, as_pia , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Pay It Again (Astra, V206)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_piab, as_pia , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Pay It Again (Astra, V904)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_pharg, 0 , astra_single_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V005)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_pharga, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_phargb, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_phargc, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_phargd, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_pharge, as_pharg , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Pharaoh's Gold (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_pb, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Piggy Banking (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL)
// this might be another mix of master / slave sets, and multiple games....
-GAME( 200?, as_rtr, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rtra, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 1)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rtrb, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 2)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rtrc, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 3)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rtrd, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V100, )" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rtre, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V100, alt)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rtrf, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V200)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rtrg, as_rtr , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V200, alt)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rtrh, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V202)" , GAME_IS_SKELETON_MECHANICAL)
-
-GAME( 200?, as_rab, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V105)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_raba, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V106)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rabb, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V107)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rabc, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V104)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rbg, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V304)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rbga, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V303)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rbgb, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V104)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rbgc, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rbgd, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V101)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rbge, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V008)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rbglo, 0 , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Lowen", "River Boat Gambler (Lowen, V106)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_rox, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Roll X (Astra, V006)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_csv, 0 , astra_single_37, astrafr, driver_device, 0, ROT0, "Astra", "Slot Slant (?) (Astra, V202)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_sltcl, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Slots Classic (?) (Astra)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_stp, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V103)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_stpa, as_stp , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_stpb, as_stp , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V105)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_siu, 0 , astra_single_37, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Step It Up (Astra, V202)" , GAME_IS_SKELETON_MECHANICAL) // extra sound roms(?) in this set
-GAME( 200?, as_siua, as_siu , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Step It Up (Astra, V203)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_sld, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V700)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_slda, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V600)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_sldb, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V500)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_sldc, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V400)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_sldd, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V200)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_slde, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V101)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_tem, 0 , astra_single_alt_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Temptation (Astra, V101)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_tema, as_tem , astra_single_alt_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Temptation (Astra, V006)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_tbl, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V104)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_tbla, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V105)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_tblb, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V106)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_tblc, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V103)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_tbld, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V304)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_tble, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V303)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_tblf, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V301)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_td, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Twin Dragons (Astra, V103)" , GAME_IS_SKELETON_MECHANICAL)
-
-GAME( 200?, as_twp, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Twin Pots (Astra, V106)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_twpa, as_twp , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Twin Pots (Astra, V104)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_vn, 0 , astrafr_dual_alt_37, astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Vegas Nights (Astra, V205)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_vcv, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V005)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_vcva, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V107)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_vcvb, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V106)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_vcvc, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V104)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_vcvd, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_vcve, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V101)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_ww, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V203)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_wwa, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V204)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_wwb, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V205)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_wwc, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V104)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_wwd, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V103)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_wwe, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V102)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 200?, as_ws, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Win Streak (Astra, V100)" , GAME_IS_SKELETON_MECHANICAL) // incomplete dump
+GAME( 200?, as_rtr, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rtra, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 1)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rtrb, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 2)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rtrc, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V101, alt 3)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rtrd, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V100, )" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rtre, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V100, alt)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rtrf, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rtrg, as_rtr , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V200, alt)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rtrh, as_rtr , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Ready To Roll (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL)
+
+GAME( 200?, as_rab, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_raba, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rabb, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rabc, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Ring A Bell (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rbg, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V304)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rbga, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V303)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rbgb, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rbgc, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rbgd, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rbge, as_rab , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "River Boat Gambler (Astra, V008)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rbglo, 0 , astrafr_dual_37, astrafr, astrafr_state, astradec_sml_dual, ROT0, "Lowen", "River Boat Gambler (Lowen, V106)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_rox, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Roll X (Astra, V006)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_csv, 0 , astra_single_37, astrafr, driver_device, 0, ROT0, "Astra", "Slot Slant (?) (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_sltcl, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Slots Classic (?) (Astra)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_stp, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_stpa, as_stp , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_stpb, as_stp , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Stampede (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_siu, 0 , astra_single_37, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Step It Up (Astra, V202)" , MACHINE_IS_SKELETON_MECHANICAL) // extra sound roms(?) in this set
+GAME( 200?, as_siua, as_siu , astra_single, astrafr, astrafr_state, astradec_sml, ROT0, "Astra", "Step It Up (Astra, V203)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_sld, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V700)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_slda, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V600)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_sldb, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V500)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_sldc, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V400)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_sldd, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V200)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_slde, as_sld , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Super Little Devil (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_tem, 0 , astra_single_alt_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Temptation (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_tema, as_tem , astra_single_alt_37, astrafr, astrafr_state, astradec, ROT0, "Astra", "Temptation (Astra, V006)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_tbl, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_tbla, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V105)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_tblb, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_tblc, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_tbld, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V304)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_tble, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V303)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_tblf, as_tbl , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Triple Bells (Astra, V301)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_td, 0 , astra_single_2e, astrafr, astrafr_state, astradec, ROT0, "Astra", "Twin Dragons (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL)
+
+GAME( 200?, as_twp, 0 , astra_single_2e, astrafr, driver_device, 0, ROT0, "Astra", "Twin Pots (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_twpa, as_twp , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Twin Pots (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_vn, 0 , astrafr_dual_alt_37, astrafr, astrafr_state, astradec_dual, ROT0, "Astra", "Vegas Nights (Astra, V205)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_vcv, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V005)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_vcva, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V107)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_vcvb, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V106)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_vcvc, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_vcvd, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_vcve, as_vcv , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Viva Cash Vegas (Astra, V101)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_ww, 0 , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V203)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_wwa, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V204)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_wwb, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V205)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_wwc, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V104)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_wwd, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V103)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_wwe, as_ww , astra_single, astrafr, driver_device, 0, ROT0, "Astra", "Wicked Willy (Astra, V102)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 200?, as_ws, 0 , astra_single, astrafr, astrafr_state, astradec, ROT0, "Astra", "Win Streak (Astra, V100)" , MACHINE_IS_SKELETON_MECHANICAL) // incomplete dump
diff --git a/src/mame/drivers/astrcorp.c b/src/mame/drivers/astrcorp.c
index 5fc7c200566..caa7bbfe118 100644
--- a/src/mame/drivers/astrcorp.c
+++ b/src/mame/drivers/astrcorp.c
@@ -21,6 +21,7 @@ Year + Game PCB ID CPU Video Chips
02 Skill Drop GA None JX-1689F1028N ASTRO V02 pLSI1016-60LJ
02? Keno 21 ? ASTRO V102? ASTRO V05 ASTRO F02? not dumped
03 Speed Drop None JX-1689HP ASTRO V05 pLSI1016-60LJ
+03? Dino Dino T-3802A ASTRO V102PX-010? ASTRO V05 ASTRO F02 2003-03-12 Encrypted
04? Stone Age L1 ASTRO V102PX-012? ASTRO V05x2 ASTRO F02 2004-09-04 Encrypted
05? Zoo M1.1 ASTRO V102PX-005? ASTRO V06 ASTRO F02 2005-02-18 Encrypted
05? Win Win Bingo M1.2 ASTRO V102PX-006? ASTRO V06 ASTRO F02 2005-09-17 Encrypted
@@ -47,17 +48,25 @@ class astrocorp_state : public driver_device
public:
astrocorp_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_spriteram(*this, "spriteram"),
m_maincpu(*this, "maincpu"),
m_oki(*this, "oki"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette"),
+ m_spriteram(*this, "spriteram")
+ { }
- /* memory pointers */
+ // devices
+ required_device<cpu_device> m_maincpu;
+ required_device<okim6295_device> m_oki;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+
+ // memory pointers
required_shared_ptr<UINT16> m_spriteram;
- /* video-related */
+ // video-related
bitmap_ind16 m_bitmap;
UINT16 m_screen_enable;
UINT16 m_draw_sprites;
@@ -76,11 +85,6 @@ public:
UINT32 screen_update_astrocorp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_DEVICE_CALLBACK_MEMBER(skilldrp_scanline);
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
- required_device<cpu_device> m_maincpu;
- required_device<okim6295_device> m_oki;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
};
/***************************************************************************
@@ -92,8 +96,8 @@ VIDEO_START_MEMBER(astrocorp_state,astrocorp)
m_screen->register_screen_bitmap(m_bitmap);
save_item(NAME(m_bitmap));
- save_item (NAME(m_screen_enable));
- save_item (NAME(m_draw_sprites));
+ save_item(NAME(m_screen_enable));
+ save_item(NAME(m_draw_sprites));
}
/***************************************************************************
@@ -1121,6 +1125,53 @@ ROM_START( astoneag )
ROM_LOAD( "93c46.ic99", 0x0000, 0x0080, CRC(2fd85a9b) SHA1(3240e40debf5af15f08072b76d6910808d3d282f) )
ROM_END
+/***************************************************************************
+
+Dino Dino
+Astro Corp.
+
+PCB Layout
+----------
+
+ASTRO T-3802A PCB with ASTRO F02 2003-03-12
+|--------------------------------------------|
+| |------| TDA2003 |
+|ULN2003 |ASTRO | V62C51864 VOL |
+| |F02 | ROM4 |
+| |------| ROM2 |
+|ULN2003 ROM3 M6295 |
+| |-------| |
+|8 |ASTRO | |
+|L |V102PX | ROM5|
+|I |-010 | |
+|N |-------| |------| |
+|E |ASTRO | |
+|R ROM1 |V05 | |
+| |------| |
+| V62C51864 |
+| 24MHz|
+| 93C46 6116 6116 HM628128 |
+| SW1 6116 6116 HM628128 |
+|--------------------------------------------|
+
+***************************************************************************/
+
+ROM_START( dinodino )
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "dd_rom1.u20", 0x00000, 0x20000, CRC(056613dd) SHA1(e8481177b1dacda222fe4fae2b50841ddb0c87ba) )
+ ROM_LOAD16_BYTE( "dd_rom2.u19", 0x00001, 0x20000, CRC(575519c5) SHA1(249fe33b6ea0bc154125a988315f571a30b9375c) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD( "dd_rom3.u26", 0x000000, 0x200000, CRC(47c95b43) SHA1(43e9a13c38f2f7d13dd4dcb105c65e43b18ccdbf) )
+ ROM_LOAD( "dd_rom4.u24", 0x200000, 0x200000, CRC(2cf4be21) SHA1(831d7d125c4161b42b017a69fc05e30a51172620) )
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "dd_rom5.u33", 0x00000, 0x80000, CRC(482e456a) SHA1(c7111522383c4e1fd98b0f759153be98dcbe06c1) )
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 )
+ ROM_LOAD( "93c46.u10", 0x0000, 0x0080, CRC(6769bfb8) SHA1(bf6b905805c2c61a89fbc4c046b23069431e4709) )
+ROM_END
+
DRIVER_INIT_MEMBER(astrocorp_state,showhand)
{
@@ -1302,15 +1353,16 @@ DRIVER_INIT_MEMBER(astrocorp_state,astoneag)
#endif
}
-GAME( 2000, showhand, 0, showhand, showhand, astrocorp_state, showhand, ROT0, "Astro Corp.", "Show Hand (Italy)", GAME_SUPPORTS_SAVE )
-GAME( 2000, showhanc, showhand, showhanc, showhanc, astrocorp_state, showhanc, ROT0, "Astro Corp.", "Wang Pai Dui Jue (China)", GAME_SUPPORTS_SAVE )
-GAME( 2002, skilldrp, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Skill Drop Georgia (Ver. G1.0S)", GAME_SUPPORTS_SAVE )
-GAME( 2003, speeddrp, 0, speeddrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Speed Drop (Ver. 1.06)", GAME_SUPPORTS_SAVE )
+GAME( 2000, showhand, 0, showhand, showhand, astrocorp_state, showhand, ROT0, "Astro Corp.", "Show Hand (Italy)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, showhanc, showhand, showhanc, showhanc, astrocorp_state, showhanc, ROT0, "Astro Corp.", "Wang Pai Dui Jue (China)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, skilldrp, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Skill Drop Georgia (Ver. G1.0S)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, speeddrp, 0, speeddrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Speed Drop (Ver. 1.06)", MACHINE_SUPPORTS_SAVE )
// Encrypted games (not working):
-GAME( 2004?, astoneag, 0, skilldrp, skilldrp, astrocorp_state, astoneag, ROT0, "Astro Corp.", "Stone Age (Astro, Ver. ENG.03.A)", GAME_NOT_WORKING )
-GAME( 2005?, winbingo, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Win Win Bingo (set 1)", GAME_NOT_WORKING )
-GAME( 2005?, winbingoa, winbingo, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Win Win Bingo (set 2)", GAME_NOT_WORKING )
-GAME( 2005?, hacher, winbingo, skilldrp, skilldrp, driver_device, 0, ROT0, "bootleg (Gametron)", "Hacher (hack of Win Win Bingo)", GAME_NOT_WORKING )
-GAME( 2005?, zoo, 0, showhand, showhand, driver_device, 0, ROT0, "Astro Corp.", "Zoo (Ver. ZO.02.D)", GAME_NOT_WORKING )
-GAME( 2007?, westvent, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Western Venture (Ver. AA.02.D)", GAME_NOT_WORKING )
+GAME( 2003?, dinodino, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Dino Dino", MACHINE_NOT_WORKING )
+GAME( 2004?, astoneag, 0, skilldrp, skilldrp, astrocorp_state, astoneag, ROT0, "Astro Corp.", "Stone Age (Astro, Ver. ENG.03.A)", MACHINE_NOT_WORKING )
+GAME( 2005?, winbingo, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Win Win Bingo (set 1)", MACHINE_NOT_WORKING )
+GAME( 2005?, winbingoa, winbingo, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Win Win Bingo (set 2)", MACHINE_NOT_WORKING )
+GAME( 2005?, hacher, winbingo, skilldrp, skilldrp, driver_device, 0, ROT0, "bootleg (Gametron)", "Hacher (hack of Win Win Bingo)", MACHINE_NOT_WORKING )
+GAME( 2005?, zoo, 0, showhand, showhand, driver_device, 0, ROT0, "Astro Corp.", "Zoo (Ver. ZO.02.D)", MACHINE_NOT_WORKING )
+GAME( 2007?, westvent, 0, skilldrp, skilldrp, driver_device, 0, ROT0, "Astro Corp.", "Western Venture (Ver. AA.02.D)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/astrocde.c b/src/mame/drivers/astrocde.c
index d6a8fa0a33f..0012d083afd 100644
--- a/src/mame/drivers/astrocde.c
+++ b/src/mame/drivers/astrocde.c
@@ -231,10 +231,11 @@ WRITE8_MEMBER(astrocde_state::seawolf2_sound_2_w)// Port 41
*
*************************************/
+IOPORT_ARRAY_MEMBER(astrocde_state::trackball_inputs) { "TRACKX2", "TRACKY2", "TRACKX1", "TRACKY1" };
+
CUSTOM_INPUT_MEMBER(astrocde_state::ebases_trackball_r)
{
- static const char *const names[] = { "TRACKX2", "TRACKY2", "TRACKX1", "TRACKY1" };
- return ioport(names[m_input_select])->read();
+ return m_trackball[m_input_select]->read();
}
@@ -261,7 +262,7 @@ READ8_MEMBER(astrocde_state::spacezap_io_r)
{
coin_counter_w(machine(), 0, (offset >> 8) & 1);
coin_counter_w(machine(), 1, (offset >> 9) & 1);
- return ioport("P3HANDLE")->read_safe(0xff);
+ return m_p3handle ? m_p3handle->read() : 0xff;
}
@@ -394,51 +395,32 @@ READ8_MEMBER(astrocde_state::profpac_io_2_r)
}
-WRITE8_MEMBER(astrocde_state::profpac_banksw_w)
+WRITE8_MEMBER(astrocde_state::demndrgn_banksw_w)
{
int bank = (data >> 5) & 3;
+ m_bank4000->set_bank(bank);
+ m_bank8000->set_entry(bank);
+}
- /* this is accessed from I/O space but modifies program space, so we normalize here */
- address_space &prog_space = space.device().memory().space(AS_PROGRAM);
-
- /* remember the banking bits for save state support */
- m_profpac_bank = data;
-
- /* set the main banking */
- prog_space.install_read_bank(0x4000, 0xbfff, "bank1");
- membank("bank1")->set_base(memregion("user1")->base() + 0x8000 * bank);
- /* bank 0 reads video RAM in the 4000-7FFF range */
- if (bank == 0)
- prog_space.install_read_handler(0x4000, 0x7fff, read8_delegate(FUNC(astrocde_state::profpac_videoram_r), this));
+WRITE8_MEMBER(astrocde_state::profpac_banksw_w)
+{
+ demndrgn_banksw_w(space, 0, data);
- /* if we have a 640k EPROM board, map that on top of the 4000-7FFF range if specified */
- if ((data & 0x80) && memregion("user2")->base() != NULL)
+ if (data & 0x80)
{
/* Note: There is a jumper which could change the base offset to 0xa8 instead */
- bank = data - 0x80;
+ int bank = data - 0x80;
/* if the bank is in range, map the appropriate bank */
if (bank < 0x28)
- {
- prog_space.install_read_bank(0x4000, 0x7fff, "bank2");
- membank("bank2")->set_base(memregion("user2")->base() + 0x4000 * bank);
- }
+ m_bank4000->set_bank(4 + bank);
else
- prog_space.unmap_read(0x4000, 0x7fff);
+ m_bank4000->set_bank(4 + 0x28);
}
}
-void astrocde_state::profbank_banksw_restore()
-{
- address_space &space = m_maincpu->space(AS_IO);
-
- profpac_banksw_w(space, 0, m_profpac_bank);
-}
-
-
-
/*************************************
*
* Demons & Dragons specific input/output
@@ -456,10 +438,12 @@ READ8_MEMBER(astrocde_state::demndrgn_io_r)
}
+IOPORT_ARRAY_MEMBER(astrocde_state::joystick_inputs) { "MOVEX", "MOVEY" };
+
+
CUSTOM_INPUT_MEMBER(astrocde_state::demndragn_joystick_r)
{
- static const char *const names[] = { "MOVEX", "MOVEY" };
- return ioport(names[m_input_select])->read();
+ return m_joystick[m_input_select]->read();
}
@@ -581,26 +565,35 @@ static ADDRESS_MAP_START( robby_map, AS_PROGRAM, 8, astrocde_state )
ADDRESS_MAP_END
-static ADDRESS_MAP_START( profpac_map, AS_PROGRAM, 8, astrocde_state )
+static ADDRESS_MAP_START( demndrgn_map, AS_PROGRAM, 8, astrocde_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w)
- AM_RANGE(0x4000, 0x7fff) AM_READWRITE(profpac_videoram_r, profpac_videoram_w)
- AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("bank1")
+ AM_RANGE(0x4000, 0x7fff) AM_DEVREAD("bank4000", address_map_bank_device, read8) AM_WRITE(profpac_videoram_w)
+ AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank8000")
AM_RANGE(0xc000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(protected_ram_r, protected_ram_w) AM_SHARE("protected_ram")
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xe800, 0xffff) AM_RAM
ADDRESS_MAP_END
-static ADDRESS_MAP_START( demndrgn_map, AS_PROGRAM, 8, astrocde_state )
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x0000, 0x3fff) AM_WRITE(astrocade_funcgen_w)
- AM_RANGE(0x4000, 0x7fff) AM_READWRITE(profpac_videoram_r, profpac_videoram_w)
- AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xdfff) AM_ROM
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xe800, 0xffff) AM_RAM
+static ADDRESS_MAP_START( profpac_map, AS_PROGRAM, 8, astrocde_state )
+ AM_RANGE(0xe000, 0xe1ff) AM_READWRITE(protected_ram_r, protected_ram_w) AM_SHARE("protected_ram")
+ AM_IMPORT_FROM(demndrgn_map)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( bank4000_map, AS_PROGRAM, 8, astrocde_state )
+ AM_RANGE(0x0000, 0x3fff) AM_READ(profpac_videoram_r)
+ AM_RANGE(0x4000, 0x7fff) AM_ROM AM_REGION("banks", 0x08000)
+ AM_RANGE(0x8000, 0xbfff) AM_ROM AM_REGION("banks", 0x10000)
+ AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("banks", 0x18000)
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( profpac_bank4000_map, AS_PROGRAM, 8, astrocde_state )
+ AM_RANGE(0x10000, 0xaffff) AM_ROM AM_REGION("epromboard", 0)
+ AM_RANGE(0xb0000, 0xb3fff) AM_READNOP
+ AM_IMPORT_FROM(bank4000_map)
ADDRESS_MAP_END
@@ -656,7 +649,7 @@ static ADDRESS_MAP_START( port_map_16col_pattern_nosound, AS_IO, 8, astrocde_sta
AM_RANGE(0x00bf, 0x00bf) AM_MIRROR(0xff00) AM_WRITE(profpac_page_select_w)
AM_RANGE(0x00c3, 0x00c3) AM_MIRROR(0xff00) AM_READ(profpac_intercept_r)
AM_RANGE(0x00c0, 0x00c5) AM_MIRROR(0xff00) AM_WRITE(profpac_screenram_ctrl_w)
- AM_RANGE(0x00f3, 0x00f3) AM_MIRROR(0xff00) AM_WRITE(profpac_banksw_w)
+ AM_RANGE(0x00f3, 0x00f3) AM_MIRROR(0xff00) AM_WRITE(demndrgn_banksw_w)
AM_RANGE(0xa55b, 0xa55b) AM_WRITE(protected_ram_enable_w)
ADDRESS_MAP_END
@@ -1250,6 +1243,13 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( astrocade_16color_base, astrocade_base )
/* basic machine hardware */
+ MCFG_DEVICE_ADD("bank4000", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(bank4000_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(16)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x4000)
+
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
@@ -1417,6 +1417,10 @@ static MACHINE_CONFIG_DERIVED( profpac, astrocade_16color_base )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(profpac_map)
MCFG_CPU_IO_MAP(port_map_16col_pattern)
+
+ MCFG_DEVICE_MODIFY("bank4000")
+ MCFG_DEVICE_PROGRAM_MAP(profpac_bank4000_map)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(20)
MACHINE_CONFIG_END
@@ -1573,7 +1577,7 @@ ROM_START( profpac )
ROM_LOAD( "pps2", 0x2000, 0x2000, CRC(8a9a6653) SHA1(b730b24088dcfddbe954670ff9212b7383c923f6) )
ROM_LOAD( "pps9", 0xc000, 0x2000, CRC(17a0b418) SHA1(8b7ed84090dbc5181deef6f55ec755c05d4c0d5e) )
- ROM_REGION( 0x20000, "user1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x20000, "banks", ROMREGION_ERASEFF )
ROM_LOAD( "pps3", 0x04000, 0x2000, CRC(15717fd8) SHA1(ffbb156f417d20478117b39de28a15680993b528) )
ROM_LOAD( "pps4", 0x06000, 0x2000, CRC(36540598) SHA1(33c797c690801afded45091d822347e1ecc72b54) )
ROM_LOAD( "pps5", 0x08000, 0x2000, CRC(8dc89a59) SHA1(fb4d3ba40697425d69ee19bfdcf00aea1df5fa80) )
@@ -1581,7 +1585,7 @@ ROM_START( profpac )
ROM_LOAD( "pps7", 0x0c000, 0x2000, CRC(f9c26aba) SHA1(201b930cca9669114ffc97978cade69587e34a0f) )
ROM_LOAD( "pps8", 0x0e000, 0x2000, CRC(4d201e41) SHA1(786b30cd7a7db55bdde05909d7a1a7f122b6e546) )
- ROM_REGION( 0xa0000, "user2", ROMREGION_ERASEFF )
+ ROM_REGION( 0xa0000, "epromboard", ROMREGION_ERASEFF )
ROM_LOAD( "ppq1", 0x00000, 0x4000, CRC(dddc2ccc) SHA1(d81caaa639f63d971a0d3199b9da6359211edf3d) )
ROM_LOAD( "ppq2", 0x04000, 0x4000, CRC(33bbcabe) SHA1(f9455868c70f479ede0e0621f21f69da165d9b7a) )
ROM_LOAD( "ppq3", 0x08000, 0x4000, CRC(3534d895) SHA1(24fb14c6b31b7f27e0737605cfbf963d29dd3fc5) )
@@ -1617,7 +1621,7 @@ ROM_START( demndrgn )
ROM_LOAD( "dd-x2.bin", 0x2000, 0x2000, CRC(0c63b624) SHA1(3eaeb4e0820e9dda7233a13bb146acc44402addd) )
ROM_LOAD( "dd-x9.bin", 0xc000, 0x2000, CRC(3792d632) SHA1(da053df344f39a8f25a2c57fb1a908131c10f248) )
- ROM_REGION( 0x20000, "user1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x20000, "banks", ROMREGION_ERASEFF )
ROM_LOAD( "dd-x5.bin", 0x08000, 0x2000, CRC(e377e831) SHA1(f53e74b3138611f9385845d6bdeab891b5d15931) )
ROM_LOAD( "dd-x6.bin", 0x0a000, 0x2000, CRC(0fcb46ad) SHA1(5611135f9e341bd394d6da7912167b05fff17a93) )
ROM_LOAD( "dd-x7.bin", 0x0c000, 0x2000, CRC(0675e4fa) SHA1(59668e32271ff9bac0b4411cc0c541d2825ee145) )
@@ -1640,7 +1644,7 @@ ROM_START( tenpindx )
ROM_REGION( 0x4000, "sub", 0 )
ROM_LOAD( "tpd_axfd.bin", 0x0000, 0x4000, CRC(0aed11f3) SHA1(09575cceda38178a77c6753074be82825d368334) )
- ROM_REGION( 0x20000, "user1", ROMREGION_ERASEFF )
+ ROM_REGION( 0x20000, "banks", ROMREGION_ERASEFF )
ROM_LOAD( "tpd_x3.bin", 0x04000, 0x2000, CRC(d4645f6d) SHA1(185bcd58f1ba69e26274475c57219de0353267e1) )
ROM_LOAD( "tpd_x4.bin", 0x06000, 0x2000, CRC(acf474ba) SHA1(b324dccac0991660f8ba2a70cbbdb06c9d25c361) )
ROM_LOAD( "tpd_x5.bin", 0x08000, 0x2000, CRC(e206913f) SHA1(bb9476516bca7bf7066df058db36e4fdd52a6ed2) )
@@ -1731,9 +1735,9 @@ DRIVER_INIT_MEMBER(astrocde_state,profpac)
iospace.install_read_handler(0x14, 0x14, 0x0fff, 0xff00, read8_delegate(FUNC(astrocde_state::profpac_io_1_r), this));
iospace.install_read_handler(0x15, 0x15, 0x77ff, 0xff00, read8_delegate(FUNC(astrocde_state::profpac_io_2_r), this));
- /* reset banking */
- profpac_banksw_w(iospace, 0, 0);
- machine().save().register_postload(save_prepost_delegate(FUNC(astrocde_state::profbank_banksw_restore), this));
+ /* configure banking */
+ m_bank8000->configure_entries(0, 4, memregion("banks")->base() + 0x4000, 0x8000);
+ m_bank8000->set_entry(0);
}
@@ -1747,9 +1751,9 @@ DRIVER_INIT_MEMBER(astrocde_state,demndrgn)
iospace.install_read_port(0x1d, 0x1d, 0x0000, 0xff00, "FIREY");
iospace.install_write_handler(0x97, 0x97, 0x0000, 0xff00, write8_delegate(FUNC(astrocde_state::demndrgn_sound_w), this));
- /* reset banking */
- profpac_banksw_w(iospace, 0, 0);
- machine().save().register_postload(save_prepost_delegate(FUNC(astrocde_state::profbank_banksw_restore), this));
+ /* configure banking */
+ m_bank8000->configure_entries(0, 4, memregion("banks")->base() + 0x4000, 0x8000);
+ m_bank8000->set_entry(0);
}
@@ -1768,9 +1772,9 @@ DRIVER_INIT_MEMBER(astrocde_state,tenpindx)
iospace.install_write_handler(0x68, 0x68, 0x0000, 0xff00, write8_delegate(FUNC(astrocde_state::tenpindx_lights_w), this));
iospace.install_write_handler(0x97, 0x97, 0x0000, 0xff00, write8_delegate(FUNC(astrocde_state::tenpindx_sound_w), this));
- /* reset banking */
- profpac_banksw_w(iospace, 0, 0);
- machine().save().register_postload(save_prepost_delegate(FUNC(astrocde_state::profbank_banksw_restore), this));
+ /* configure banking */
+ m_bank8000->configure_entries(0, 4, memregion("banks")->base() + 0x4000, 0x8000);
+ m_bank8000->set_entry(0);
}
@@ -1782,29 +1786,29 @@ DRIVER_INIT_MEMBER(astrocde_state,tenpindx)
*************************************/
/* 90002 CPU board + 90700 game board + 91312 "characterization card" */
-GAMEL(1978, seawolf2, 0, seawolf2, seawolf2, astrocde_state, seawolf2, ROT0, "Dave Nutting Associates / Midway", "Sea Wolf II", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_seawolf2 )
+GAMEL(1978, seawolf2, 0, seawolf2, seawolf2, astrocde_state, seawolf2, ROT0, "Dave Nutting Associates / Midway", "Sea Wolf II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_seawolf2 )
/* 91354 CPU board + 90700 game board + 91356 RAM board */
-GAMEL(1980, ebases, 0, ebases, ebases, astrocde_state, ebases, ROT0, "Dave Nutting Associates / Midway", "Extra Bases", GAME_SUPPORTS_SAVE, layout_spacezap )
+GAMEL(1980, ebases, 0, ebases, ebases, astrocde_state, ebases, ROT0, "Dave Nutting Associates / Midway", "Extra Bases", MACHINE_SUPPORTS_SAVE, layout_spacezap )
/* 91354 CPU board + 90706 game board + 91356 RAM board + 91355 pattern board */
-GAMEL(1980, spacezap, 0, spacezap, spacezap, astrocde_state, spacezap, ROT0, "Midway", "Space Zap", GAME_SUPPORTS_SAVE, layout_spacezap )
+GAMEL(1980, spacezap, 0, spacezap, spacezap, astrocde_state, spacezap, ROT0, "Midway", "Space Zap", MACHINE_SUPPORTS_SAVE, layout_spacezap )
/* 91354 CPU board + 90708 game board + 91356 RAM board + 91355 pattern board + 91397 memory board */
-GAME( 1980, wow, 0, wow, wow, astrocde_state, wow, ROT0, "Dave Nutting Associates / Midway", "Wizard of Wor", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, wowg, wow, wow, wowg, astrocde_state, wow, ROT0, "Dave Nutting Associates / Midway", "Wizard of Wor (with German Language ROM)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1980, wow, 0, wow, wow, astrocde_state, wow, ROT0, "Dave Nutting Associates / Midway", "Wizard of Wor", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, wowg, wow, wow, wowg, astrocde_state, wow, ROT0, "Dave Nutting Associates / Midway", "Wizard of Wor (with German Language ROM)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
/* 91354 CPU board + 90708 game board + 91356 RAM board + 91355 pattern board + 91364 ROM/RAM board */
-GAMEL(1981, gorf, 0, gorf, gorf, astrocde_state, gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_gorf )
-GAMEL(1981, gorfpgm1, gorf, gorf, gorf, astrocde_state, gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf (program 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_gorf )
-GAMEL(1981, gorfpgm1g,gorf, gorf, gorfpgm1g, astrocde_state,gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf (program 1, with German Language ROM)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_gorf )
+GAMEL(1981, gorf, 0, gorf, gorf, astrocde_state, gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gorf )
+GAMEL(1981, gorfpgm1, gorf, gorf, gorf, astrocde_state, gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf (program 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gorf )
+GAMEL(1981, gorfpgm1g,gorf, gorf, gorfpgm1g, astrocde_state,gorf, ROT270, "Dave Nutting Associates / Midway", "Gorf (program 1, with German Language ROM)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_gorf )
/* 91354 CPU board + 90708 game board + 91356 RAM board + 91355 pattern board + 91423 memory board */
-GAME( 1981, robby, 0, robby, robby, astrocde_state, robby, ROT0, "Dave Nutting Associates / Bally Midway", "The Adventures of Robby Roto!", GAME_SUPPORTS_SAVE )
+GAME( 1981, robby, 0, robby, robby, astrocde_state, robby, ROT0, "Dave Nutting Associates / Bally Midway", "The Adventures of Robby Roto!", MACHINE_SUPPORTS_SAVE )
/* 91465 CPU board + 91469 game board + 91466 RAM board + 91488 pattern board + 91467 memory board + 91846 EPROM board */
-GAME( 1983, profpac, 0, profpac, profpac, astrocde_state, profpac, ROT0, "Dave Nutting Associates / Bally Midway", "Professor Pac-Man", GAME_SUPPORTS_SAVE )
+GAME( 1983, profpac, 0, profpac, profpac, astrocde_state, profpac, ROT0, "Dave Nutting Associates / Bally Midway", "Professor Pac-Man", MACHINE_SUPPORTS_SAVE )
/* 91465 CPU board + 91699 game board + 91466 RAM board + 91488 pattern board + 91467 memory board */
-GAME( 1982, demndrgn, 0, demndrgn, demndrgn, astrocde_state, demndrgn, ROT0, "Dave Nutting Associates / Bally Midway", "Demons & Dragons (prototype)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAMEL(1983, tenpindx, 0, tenpindx, tenpindx, astrocde_state, tenpindx, ROT0, "Dave Nutting Associates / Bally Midway", "Ten Pin Deluxe", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE | GAME_MECHANICAL, layout_tenpindx )
+GAME( 1982, demndrgn, 0, demndrgn, demndrgn, astrocde_state, demndrgn, ROT0, "Dave Nutting Associates / Bally Midway", "Demons & Dragons (prototype)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAMEL(1983, tenpindx, 0, tenpindx, tenpindx, astrocde_state, tenpindx, ROT0, "Dave Nutting Associates / Bally Midway", "Ten Pin Deluxe", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL, layout_tenpindx )
diff --git a/src/mame/drivers/astrof.c b/src/mame/drivers/astrof.c
index d4ea68ce8e0..ddab7938b15 100644
--- a/src/mame/drivers/astrof.c
+++ b/src/mame/drivers/astrof.c
@@ -1325,19 +1325,19 @@ DRIVER_INIT_MEMBER(astrof_state,acombat3)
*
*************************************/
-GAME( 1979, astrof, 0, astrof, astrof, driver_device, 0, ROT90, "Data East", "Astro Fighter (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, astrof2, astrof, astrof, astrof, driver_device, 0, ROT90, "Data East", "Astro Fighter (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, astrof3, astrof, astrof, astrof, driver_device, 0, ROT90, "Data East", "Astro Fighter (set 3)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, abattle, astrof, abattle, abattle, astrof_state, abattle, ROT90, "bootleg? (Sidam)", "Astro Battle (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, abattle2, astrof, abattle, abattle, astrof_state, abattle, ROT90, "bootleg? (Sidam)", "Astro Battle (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, afire, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg (Rene Pierre)", "Astro Fire", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, acombat, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg", "Astro Combat (newer, CB)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, acombato, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg", "Astro Combat (older, PZ)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, acombat3, astrof, abattle, abattle, astrof_state, acombat3,ROT90, "bootleg (Proel)", "Astro Combat (unencrypted)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, sstarbtl, astrof, abattle, abattle, astrof_state, sstarbtl,ROT90, "bootleg", "Super Star Battle", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-
-GAME( 1979, spfghmk2, 0, spfghmk2, spfghmk2, driver_device,0, ROT90, "Data East", "Space Fighter Mark II (set 1)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, spfghmk22,spfghmk2, spfghmk2, spfghmk22,driver_device,0, ROT90, "Data East", "Space Fighter Mark II (set 2)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-
-GAME( 1980, tomahawk, 0, tomahawk, tomahawk, driver_device,0, ROT90, "Data East", "Tomahawk 777 (rev 5)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, tomahawk1,tomahawk, tomahawk, tomahawk1,driver_device,0, ROT90, "Data East", "Tomahawk 777 (rev 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1979, astrof, 0, astrof, astrof, driver_device, 0, ROT90, "Data East", "Astro Fighter (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, astrof2, astrof, astrof, astrof, driver_device, 0, ROT90, "Data East", "Astro Fighter (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, astrof3, astrof, astrof, astrof, driver_device, 0, ROT90, "Data East", "Astro Fighter (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, abattle, astrof, abattle, abattle, astrof_state, abattle, ROT90, "bootleg? (Sidam)", "Astro Battle (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, abattle2, astrof, abattle, abattle, astrof_state, abattle, ROT90, "bootleg? (Sidam)", "Astro Battle (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, afire, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg (Rene Pierre)", "Astro Fire", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, acombat, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg", "Astro Combat (newer, CB)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, acombato, astrof, abattle, abattle, astrof_state, afire, ROT90, "bootleg", "Astro Combat (older, PZ)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, acombat3, astrof, abattle, abattle, astrof_state, acombat3,ROT90, "bootleg (Proel)", "Astro Combat (unencrypted)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, sstarbtl, astrof, abattle, abattle, astrof_state, sstarbtl,ROT90, "bootleg", "Super Star Battle", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1979, spfghmk2, 0, spfghmk2, spfghmk2, driver_device,0, ROT90, "Data East", "Space Fighter Mark II (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, spfghmk22,spfghmk2, spfghmk2, spfghmk22,driver_device,0, ROT90, "Data East", "Space Fighter Mark II (set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1980, tomahawk, 0, tomahawk, tomahawk, driver_device,0, ROT90, "Data East", "Tomahawk 777 (rev 5)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, tomahawk1,tomahawk, tomahawk, tomahawk1,driver_device,0, ROT90, "Data East", "Tomahawk 777 (rev 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/astrocde.c b/src/mame/drivers/astrohome.c
index 2943c3a9056..a3149dd048c 100644
--- a/src/mess/drivers/astrocde.c
+++ b/src/mame/drivers/astrohome.c
@@ -267,6 +267,6 @@ MACHINE_START_MEMBER(astrocde_mess_state, astrocde)
*************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-CONS( 1978, astrocde, 0, 0, astrocde, astrocde, astrocde_state, astrocde, "Bally Manufacturing", "Bally Professional Arcade", GAME_SUPPORTS_SAVE )
-CONS( 1977, astrocdl, astrocde, 0, astrocde, astrocde, astrocde_state, astrocde, "Bally Manufacturing", "Bally Home Library Computer", GAME_SUPPORTS_SAVE )
-CONS( 1977, astrocdw, astrocde, 0, astrocde, astrocde, astrocde_state, astrocde, "Bally Manufacturing", "Bally Computer System", GAME_SUPPORTS_SAVE )
+CONS( 1978, astrocde, 0, 0, astrocde, astrocde, astrocde_state, astrocde, "Bally Manufacturing", "Bally Professional Arcade", MACHINE_SUPPORTS_SAVE )
+CONS( 1977, astrocdl, astrocde, 0, astrocde, astrocde, astrocde_state, astrocde, "Bally Manufacturing", "Bally Home Library Computer", MACHINE_SUPPORTS_SAVE )
+CONS( 1977, astrocdw, astrocde, 0, astrocde, astrocde, astrocde_state, astrocde, "Bally Manufacturing", "Bally Computer System", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/astropc.c b/src/mame/drivers/astropc.c
index 7deed2b4d96..a58eb2335eb 100644
--- a/src/mame/drivers/astropc.c
+++ b/src/mame/drivers/astropc.c
@@ -162,15 +162,15 @@ DRIVER_INIT_MEMBER(astropc_state,astropc)
{
}
-GAME( 2002, blackbd, 0, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Black Beard (Russia, set 1)", GAME_IS_SKELETON )
-GAME( 2002, blackbda, blackbd, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Black Beard (Russia, set 2)", GAME_IS_SKELETON )
-GAME( 2002, blackbdb, blackbd, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Black Beard (Russia, set 3)", GAME_IS_SKELETON )
+GAME( 2002, blackbd, 0, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Black Beard (Russia, set 1)", MACHINE_IS_SKELETON )
+GAME( 2002, blackbda, blackbd, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Black Beard (Russia, set 2)", MACHINE_IS_SKELETON )
+GAME( 2002, blackbdb, blackbd, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Black Beard (Russia, set 3)", MACHINE_IS_SKELETON )
-GAME( 2002, dslayrr, 0, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Dragon Slayer (Russia, set 1)", GAME_IS_SKELETON )
-GAME( 2002, dslayrra, dslayrr, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Dragon Slayer (Russia, set 2)", GAME_IS_SKELETON )
+GAME( 2002, dslayrr, 0, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Dragon Slayer (Russia, set 1)", MACHINE_IS_SKELETON )
+GAME( 2002, dslayrra, dslayrr, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Dragon Slayer (Russia, set 2)", MACHINE_IS_SKELETON )
-GAME( 2002, hawaii, 0, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Hawaii (Russia)", GAME_IS_SKELETON )
+GAME( 2002, hawaii, 0, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Hawaii (Russia)", MACHINE_IS_SKELETON )
-GAME( 2002, oligam, 0, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Olympian Games (Russia)", GAME_IS_SKELETON )
+GAME( 2002, oligam, 0, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Olympian Games (Russia)", MACHINE_IS_SKELETON )
-GAME( 2002, rasce, 0, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Ra Sceptor (Russia)", GAME_IS_SKELETON )
+GAME( 2002, rasce, 0, astropc, astropc, astropc_state, astropc, ROT0, "Astro", "Ra Sceptor (Russia)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/asuka.c b/src/mame/drivers/asuka.c
index 9bd425858ec..46b93c81042 100644
--- a/src/mame/drivers/asuka.c
+++ b/src/mame/drivers/asuka.c
@@ -1344,56 +1344,56 @@ ROM_END
ROM_START( asuka )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
- ROM_LOAD16_BYTE( "b68-13.bin", 0x00000, 0x20000, CRC(855efb3e) SHA1(644e02e207adeaec7839c824688d88ab8d046418) )
- ROM_LOAD16_BYTE( "b68-12.bin", 0x00001, 0x20000, CRC(271eeee9) SHA1(c08e347be4aae929c0ab95ff7618edaa1a7d6da9) )
+ ROM_LOAD16_BYTE( "b68-13.ic23", 0x00000, 0x20000, CRC(855efb3e) SHA1(644e02e207adeaec7839c824688d88ab8d046418) )
+ ROM_LOAD16_BYTE( "b68-12.ic8", 0x00001, 0x20000, CRC(271eeee9) SHA1(c08e347be4aae929c0ab95ff7618edaa1a7d6da9) )
/* 0x040000 - 0x7ffff is intentionally empty */
- ROM_LOAD16_WORD( "b68-03.bin", 0x80000, 0x80000, CRC(d3a59b10) SHA1(35a2ff18b64e73ac5e17484354c0cc58bc2cd7fc) ) /* Fix ROM */
+ ROM_LOAD16_WORD( "b68-03.ic30", 0x80000, 0x80000, CRC(d3a59b10) SHA1(35a2ff18b64e73ac5e17484354c0cc58bc2cd7fc) ) /* Fix ROM */
ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b68-01.bin", 0x00000, 0x80000, CRC(89f32c94) SHA1(74fbb699e05e2336509cb5ac06ed94335ff870d5) ) /* SCR tiles (8 x 8) */
+ ROM_LOAD( "b68-01.ic3", 0x00000, 0x80000, CRC(89f32c94) SHA1(74fbb699e05e2336509cb5ac06ed94335ff870d5) ) /* SCR tiles (8 x 8) */
ROM_REGION( 0xa0000, "gfx2", 0 )
- ROM_LOAD ( "b68-02.bin", 0x00000, 0x80000, CRC(f5018cd3) SHA1(860ce140ae369556d03d5d78987b87c0d6070df5) ) /* Sprites (16 x 16) */
- ROM_LOAD16_BYTE( "b68-07.bin", 0x80000, 0x10000, CRC(c113acc8) SHA1(613c61a78df73dcb0b9c9018ae829e865baac772) )
- ROM_LOAD16_BYTE( "b68-06.bin", 0x80001, 0x10000, CRC(f517e64d) SHA1(8be491bfe0f7eed58521de9d31da677acf635c23) )
+ ROM_LOAD ( "b68-02.ic6", 0x00000, 0x80000, CRC(f5018cd3) SHA1(860ce140ae369556d03d5d78987b87c0d6070df5) ) /* Sprites (16 x 16) */
+ ROM_LOAD16_BYTE( "b68-07.ic5", 0x80000, 0x10000, CRC(c113acc8) SHA1(613c61a78df73dcb0b9c9018ae829e865baac772) )
+ ROM_LOAD16_BYTE( "b68-06.ic4", 0x80001, 0x10000, CRC(f517e64d) SHA1(8be491bfe0f7eed58521de9d31da677acf635c23) )
ROM_REGION( 0x1c000, "audiocpu", 0 ) /* sound cpu */
- ROM_LOAD( "b68-11.bin", 0x00000, 0x04000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) )
- ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
+ ROM_LOAD( "b68-11.ic27", 0x00000, 0x04000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) )
+ ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
ROM_REGION( 0x10000, "ymsnd", 0 ) /* ADPCM samples */
- ROM_LOAD( "b68-10.bin", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) )
+ ROM_LOAD( "b68-10.ic24", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) )
ROM_REGION( 0x144, "pals", 0 )
- ROM_LOAD( "b68-04.bin", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
- ROM_LOAD( "b68-05.bin", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
+ ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
+ ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
ROM_END
-ROM_START( asukaj )
+ROM_START( asukaj ) /* Known to exist but not dumped: revision 1 with B68 08-1 & B68 09-1 program roms */
ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
- ROM_LOAD16_BYTE( "b68-09.bin", 0x00000, 0x20000, CRC(1eaa1bbb) SHA1(01ca6a5f3c47dab49654b84601119714eb329cc5) )
- ROM_LOAD16_BYTE( "b68-08.bin", 0x00001, 0x20000, CRC(8cc96e60) SHA1(dc94f3fd48c0407ec72e8330bc688e9e16d39213) )
+ ROM_LOAD16_BYTE( "b68-09.ic23", 0x00000, 0x20000, CRC(1eaa1bbb) SHA1(01ca6a5f3c47dab49654b84601119714eb329cc5) )
+ ROM_LOAD16_BYTE( "b68-08.ic8", 0x00001, 0x20000, CRC(8cc96e60) SHA1(dc94f3fd48c0407ec72e8330bc688e9e16d39213) )
/* 0x040000 - 0x7ffff is intentionally empty */
- ROM_LOAD16_WORD( "b68-03.bin", 0x80000, 0x80000, CRC(d3a59b10) SHA1(35a2ff18b64e73ac5e17484354c0cc58bc2cd7fc) ) /* Fix ROM */
+ ROM_LOAD16_WORD( "b68-03.ic30", 0x80000, 0x80000, CRC(d3a59b10) SHA1(35a2ff18b64e73ac5e17484354c0cc58bc2cd7fc) ) /* Fix ROM */
ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "b68-01.bin", 0x00000, 0x80000, CRC(89f32c94) SHA1(74fbb699e05e2336509cb5ac06ed94335ff870d5) ) /* SCR tiles (8 x 8) */
+ ROM_LOAD( "b68-01.ic3", 0x00000, 0x80000, CRC(89f32c94) SHA1(74fbb699e05e2336509cb5ac06ed94335ff870d5) ) /* SCR tiles (8 x 8) */
ROM_REGION( 0xa0000, "gfx2", 0 )
- ROM_LOAD ( "b68-02.bin", 0x00000, 0x80000, CRC(f5018cd3) SHA1(860ce140ae369556d03d5d78987b87c0d6070df5) ) /* Sprites (16 x 16) */
- ROM_LOAD16_BYTE( "b68-07.bin", 0x80000, 0x10000, CRC(c113acc8) SHA1(613c61a78df73dcb0b9c9018ae829e865baac772) )
- ROM_LOAD16_BYTE( "b68-06.bin", 0x80001, 0x10000, CRC(f517e64d) SHA1(8be491bfe0f7eed58521de9d31da677acf635c23) )
+ ROM_LOAD ( "b68-02.ic6", 0x00000, 0x80000, CRC(f5018cd3) SHA1(860ce140ae369556d03d5d78987b87c0d6070df5) ) /* Sprites (16 x 16) */
+ ROM_LOAD16_BYTE( "b68-07.ic5", 0x80000, 0x10000, CRC(c113acc8) SHA1(613c61a78df73dcb0b9c9018ae829e865baac772) )
+ ROM_LOAD16_BYTE( "b68-06.ic4", 0x80001, 0x10000, CRC(f517e64d) SHA1(8be491bfe0f7eed58521de9d31da677acf635c23) )
ROM_REGION( 0x1c000, "audiocpu", 0 ) /* sound cpu */
- ROM_LOAD( "b68-11.bin", 0x00000, 0x04000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) )
- ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
+ ROM_LOAD( "b68-11.ic27", 0x00000, 0x04000, CRC(c378b508) SHA1(1b145fe736b924f298e02532cf9f26cc18b42ca7) )
+ ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
ROM_REGION( 0x10000, "ymsnd", 0 ) /* ADPCM samples */
- ROM_LOAD( "b68-10.bin", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) )
+ ROM_LOAD( "b68-10.ic24", 0x00000, 0x10000, CRC(387aaf40) SHA1(47c583564ef1d49ece15f97221b2e073e8fb0544) )
ROM_REGION( 0x144, "pals", 0 )
- ROM_LOAD( "b68-04.bin", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
- ROM_LOAD( "b68-05.bin", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
+ ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
+ ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
ROM_END
ROM_START( mofflott )
@@ -1665,117 +1665,117 @@ ROM_END
ROM_START( galmedes )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
- ROM_LOAD16_BYTE( "gm-prg1.bin", 0x00000, 0x20000, CRC(32a70753) SHA1(3bd094b7ae600dbc87ba74e8b2d6b86a68346f4f) )
- ROM_LOAD16_BYTE( "gm-prg0.bin", 0x00001, 0x20000, CRC(fae546a4) SHA1(484cad5287daa495b347f6b5b065f3b3d02d8f0e) )
+ ROM_LOAD16_BYTE( "gm-prg1.ic23", 0x00000, 0x20000, CRC(32a70753) SHA1(3bd094b7ae600dbc87ba74e8b2d6b86a68346f4f) )
+ ROM_LOAD16_BYTE( "gm-prg0.ic8", 0x00001, 0x20000, CRC(fae546a4) SHA1(484cad5287daa495b347f6b5b065f3b3d02d8f0e) )
/* 0x40000 - 0x7ffff is intentionally empty */
- ROM_LOAD16_WORD( "gm-30.rom", 0x80000, 0x80000, CRC(4da2a407) SHA1(7bd0eb629dd7022a16e328612c786c544267f7bc) ) /* Fix ROM */
+ ROM_LOAD16_WORD( "gm-30.ic30", 0x80000, 0x80000, CRC(4da2a407) SHA1(7bd0eb629dd7022a16e328612c786c544267f7bc) ) /* Fix ROM */
ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "gm-scn.bin", 0x00000, 0x80000, CRC(3bab0581) SHA1(56b79a4ffd9f4880a63450b7d1b79f029de75e20) ) /* SCR tiles (8 x 8) */
+ ROM_LOAD( "gm-scn.ic3", 0x00000, 0x80000, CRC(3bab0581) SHA1(56b79a4ffd9f4880a63450b7d1b79f029de75e20) ) /* SCR tiles (8 x 8) */
ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "gm-obj.bin", 0x00000, 0x80000, CRC(7a4a1315) SHA1(e2010ee4222415fd55ba3102003be4151d29e39b) ) /* Sprites (16 x 16) */
+ ROM_LOAD( "gm-obj.ic6", 0x00000, 0x80000, CRC(7a4a1315) SHA1(e2010ee4222415fd55ba3102003be4151d29e39b) ) /* Sprites (16 x 16) */
ROM_REGION( 0x1c000, "audiocpu", 0 ) /* sound cpu */
- ROM_LOAD( "gm-snd.bin", 0x00000, 0x04000, CRC(d6f56c21) SHA1(ff9743448ac8ce57a2f8c33a26145e7b92cbe3c3) )
- ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
+ ROM_LOAD( "gm-snd.ic27", 0x00000, 0x04000, CRC(d6f56c21) SHA1(ff9743448ac8ce57a2f8c33a26145e7b92cbe3c3) )
+ ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
ROM_REGION( 0x144, "pals", 0 )
- ROM_LOAD( "b68-04.bin", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
- ROM_LOAD( "b68-05.bin", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
+ ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
+ ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
ROM_END
ROM_START( earthjkr )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
- ROM_LOAD16_BYTE( "ej_3b.rom", 0x00000, 0x20000, CRC(bdd86fc2) SHA1(96578860ed03718f8a68847b367eac6c81b79ca2) )
- ROM_LOAD16_BYTE( "ej_3a.rom", 0x00001, 0x20000, CRC(9c8050c6) SHA1(076c882f75787e8120de66ff0dcd2cb820513c45) )
+ ROM_LOAD16_BYTE( "ej_3b.ic23", 0x00000, 0x20000, CRC(bdd86fc2) SHA1(96578860ed03718f8a68847b367eac6c81b79ca2) )
+ ROM_LOAD16_BYTE( "ej_3a.ic8", 0x00001, 0x20000, CRC(9c8050c6) SHA1(076c882f75787e8120de66ff0dcd2cb820513c45) )
/* 0x40000 - 0x7ffff is intentionally empty */
- ROM_LOAD16_WORD( "ej_30e.rom", 0x80000, 0x80000, CRC(49d1f77f) SHA1(f6c9b2fc88b77cc9baa5be48da5c3eb72310e471) ) /* Fix ROM */
+ ROM_LOAD16_WORD( "ej_30e.ic30", 0x80000, 0x80000, CRC(49d1f77f) SHA1(f6c9b2fc88b77cc9baa5be48da5c3eb72310e471) ) /* Fix ROM */
ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "ej_chr.rom", 0x00000, 0x80000, CRC(ac675297) SHA1(2a34e1eae3a4be84dbf709053f5e8a781b1073fc) ) /* SCR tiles (8 x 8) */
+ ROM_LOAD( "ej_chr.ic3", 0x00000, 0x80000, CRC(ac675297) SHA1(2a34e1eae3a4be84dbf709053f5e8a781b1073fc) ) /* SCR tiles (8 x 8) */
ROM_REGION( 0xa0000, "gfx2", 0 )
- ROM_LOAD ( "ej_obj.rom", 0x00000, 0x80000, CRC(5f21ac47) SHA1(45c94ffb53ee9b822b0676f6fb151fed4ce6d967) ) /* Sprites (16 x 16) */
- ROM_LOAD16_BYTE( "ej_1.rom", 0x80000, 0x10000, CRC(cb4891db) SHA1(af1112608cdd897ef6028ef617f5ca69d7964861) )
- ROM_LOAD16_BYTE( "ej_0.rom", 0x80001, 0x10000, CRC(b612086f) SHA1(625748fcb698ec57b7b3ce46019cf85de99aaaa1) )
+ ROM_LOAD ( "ej_obj.ic6", 0x00000, 0x80000, CRC(5f21ac47) SHA1(45c94ffb53ee9b822b0676f6fb151fed4ce6d967) ) /* Sprites (16 x 16) */
+ ROM_LOAD16_BYTE( "ej_1.ic5", 0x80000, 0x10000, CRC(cb4891db) SHA1(af1112608cdd897ef6028ef617f5ca69d7964861) )
+ ROM_LOAD16_BYTE( "ej_0.ic4", 0x80001, 0x10000, CRC(b612086f) SHA1(625748fcb698ec57b7b3ce46019cf85de99aaaa1) )
ROM_REGION( 0x1c000, "audiocpu", 0 ) /* sound cpu */
- ROM_LOAD( "ej_2.rom", 0x00000, 0x04000, CRC(42ba2566) SHA1(c437388684b565c7504d6bad6accd73aa000faca) )
- ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
+ ROM_LOAD( "ej_2.ic27", 0x00000, 0x04000, CRC(42ba2566) SHA1(c437388684b565c7504d6bad6accd73aa000faca) )
+ ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
ROM_REGION( 0x144, "pals", 0 )
- ROM_LOAD( "b68-04.bin", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
- ROM_LOAD( "b68-05.bin", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
+ ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
+ ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
ROM_END
ROM_START( earthjkrp ) // was production PCB complete with MASK rom, could just be an early revision, not proto
ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
- ROM_LOAD16_BYTE( "3.bin", 0x00001, 0x20000, CRC(26c33225) SHA1(b039c47d0776c90813ab52c867e95989cab2c567) )
- ROM_LOAD16_BYTE( "4.bin", 0x00000, 0x20000, CRC(e9b1ef0c) SHA1(5e104146d37922a8c7e93696c2c156223653025b) )
+ ROM_LOAD16_BYTE( "3.ic23", 0x00001, 0x20000, CRC(26c33225) SHA1(b039c47d0776c90813ab52c867e95989cab2c567) )
+ ROM_LOAD16_BYTE( "4.ic8", 0x00000, 0x20000, CRC(e9b1ef0c) SHA1(5e104146d37922a8c7e93696c2c156223653025b) )
/* 0x40000 - 0x7ffff is intentionally empty */
- ROM_LOAD16_WORD( "5.bin", 0x80000, 0x80000, CRC(bf760b2d) SHA1(4aff36623e5a31ab86c77461fa93e40e77f08edd) ) /* Fix ROM */
+ ROM_LOAD16_WORD( "5.ic30", 0x80000, 0x80000, CRC(bf760b2d) SHA1(4aff36623e5a31ab86c77461fa93e40e77f08edd) ) /* Fix ROM */
ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "ej_chr.rom", 0x00000, 0x80000, CRC(ac675297) SHA1(2a34e1eae3a4be84dbf709053f5e8a781b1073fc) ) /* SCR tiles (8 x 8) */
+ ROM_LOAD( "ej_chr.ic3", 0x00000, 0x80000, CRC(ac675297) SHA1(2a34e1eae3a4be84dbf709053f5e8a781b1073fc) ) /* SCR tiles (8 x 8) */
ROM_REGION( 0xa0000, "gfx2", 0 )
- ROM_LOAD ( "ej_obj.rom", 0x00000, 0x80000, CRC(5f21ac47) SHA1(45c94ffb53ee9b822b0676f6fb151fed4ce6d967) ) /* Sprites (16 x 16) */
- ROM_LOAD16_BYTE( "ej_1.rom", 0x80000, 0x10000, CRC(cb4891db) SHA1(af1112608cdd897ef6028ef617f5ca69d7964861) )
- ROM_LOAD16_BYTE( "ej_0.rom", 0x80001, 0x10000, CRC(b612086f) SHA1(625748fcb698ec57b7b3ce46019cf85de99aaaa1) )
+ ROM_LOAD ( "ej_obj.ic6", 0x00000, 0x80000, CRC(5f21ac47) SHA1(45c94ffb53ee9b822b0676f6fb151fed4ce6d967) ) /* Sprites (16 x 16) */
+ ROM_LOAD16_BYTE( "ej_1.ic5", 0x80000, 0x10000, CRC(cb4891db) SHA1(af1112608cdd897ef6028ef617f5ca69d7964861) )
+ ROM_LOAD16_BYTE( "ej_0.ic4", 0x80001, 0x10000, CRC(b612086f) SHA1(625748fcb698ec57b7b3ce46019cf85de99aaaa1) )
ROM_REGION( 0x1c000, "audiocpu", 0 ) /* sound cpu */
- ROM_LOAD( "ej_2.rom", 0x00000, 0x04000, CRC(42ba2566) SHA1(c437388684b565c7504d6bad6accd73aa000faca) )
- ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
+ ROM_LOAD( "ej_2.ic27", 0x00000, 0x04000, CRC(42ba2566) SHA1(c437388684b565c7504d6bad6accd73aa000faca) )
+ ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
ROM_REGION( 0x144, "pals", 0 )
- ROM_LOAD( "b68-04.bin", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
- ROM_LOAD( "b68-05.bin", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
+ ROM_LOAD( "b68-04.ic32", 0x00000, 0x144, CRC(9be618d1) SHA1(61ee33c3db448a05ff8f455e77fe17d51106baec) )
+ ROM_LOAD( "b68-05.ic43", 0x00000, 0x104, CRC(d6524ccc) SHA1(f3b56253692aebb63278d47832fc27b8b212b59c) )
ROM_END
ROM_START( eto )
ROM_REGION( 0x100000, "maincpu", 0 ) /* 1024k for 68000 code */
- ROM_LOAD16_BYTE( "eto-1.23", 0x00000, 0x20000, CRC(44286597) SHA1(ac37e5edbf9d187f60232adc5e9ebed45b3d2fe2) )
- ROM_LOAD16_BYTE( "eto-0.8", 0x00001, 0x20000, CRC(57b79370) SHA1(25f83eada982ef654260fe92016d42a90005a05c) )
+ ROM_LOAD16_BYTE( "eto-1.ic23", 0x00000, 0x20000, CRC(44286597) SHA1(ac37e5edbf9d187f60232adc5e9ebed45b3d2fe2) )
+ ROM_LOAD16_BYTE( "eto-0.ic8", 0x00001, 0x20000, CRC(57b79370) SHA1(25f83eada982ef654260fe92016d42a90005a05c) )
/* 0x40000 - 0x7ffff is intentionally empty */
- ROM_LOAD16_WORD( "eto-2.30", 0x80000, 0x80000, CRC(12f46fb5) SHA1(04db8b6ccd0051668bd2930275efa0265c0cfd2b) ) /* Fix ROM */
+ ROM_LOAD16_WORD( "eto-2.ic30", 0x80000, 0x80000, CRC(12f46fb5) SHA1(04db8b6ccd0051668bd2930275efa0265c0cfd2b) ) /* Fix ROM */
ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "eto-4.3", 0x00000, 0x80000, CRC(a8768939) SHA1(a2cbbd3e10ed48ba32a680b2e40ea03900cf33fa) ) /* Sprites (16 x 16) */
+ ROM_LOAD( "eto-4.ic3", 0x00000, 0x80000, CRC(a8768939) SHA1(a2cbbd3e10ed48ba32a680b2e40ea03900cf33fa) ) /* Sprites (16 x 16) */
ROM_REGION( 0x80000, "gfx2", 0 )
- ROM_LOAD( "eto-3.6", 0x00000, 0x80000, CRC(dd247397) SHA1(53a7bf877fd7e5f3daf295a698f4012447b6f113) ) /* SCR tiles (8 x 8) */
+ ROM_LOAD( "eto-3.ic6", 0x00000, 0x80000, CRC(dd247397) SHA1(53a7bf877fd7e5f3daf295a698f4012447b6f113) ) /* SCR tiles (8 x 8) */
ROM_REGION( 0x1c000, "audiocpu", 0 ) /* sound cpu */
- ROM_LOAD( "eto-5.27", 0x00000, 0x04000, CRC(b3689da0) SHA1(812d2e0a794403df9f0a5035784f14cd070ea080) )
- ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
+ ROM_LOAD( "eto-5.ic27", 0x00000, 0x04000, CRC(b3689da0) SHA1(812d2e0a794403df9f0a5035784f14cd070ea080) )
+ ROM_CONTINUE( 0x10000, 0x0c000 ) /* banked stuff */
ROM_END
-GAME( 1988, bonzeadv, 0, bonzeadv, bonzeadv, driver_device, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, Newer)", GAME_SUPPORTS_SAVE )
-GAME( 1988, bonzeadvo, bonzeadv, bonzeadv, bonzeadv, driver_device, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, Older)", GAME_SUPPORTS_SAVE )
-GAME( 1988, bonzeadvu, bonzeadv, bonzeadv, jigkmgri, driver_device, 0, ROT0, "Taito America Corporation", "Bonze Adventure (US)", GAME_SUPPORTS_SAVE )
-GAME( 1988, jigkmgri, bonzeadv, bonzeadv, jigkmgri, driver_device, 0, ROT0, "Taito Corporation", "Jigoku Meguri (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, bonzeadvp, bonzeadv, bonzeadv, jigkmgri, driver_device, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, prototype)", GAME_SUPPORTS_SAVE )
+GAME( 1988, bonzeadv, 0, bonzeadv, bonzeadv, driver_device, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, Newer)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, bonzeadvo, bonzeadv, bonzeadv, bonzeadv, driver_device, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, Older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, bonzeadvu, bonzeadv, bonzeadv, jigkmgri, driver_device, 0, ROT0, "Taito America Corporation", "Bonze Adventure (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, jigkmgri, bonzeadv, bonzeadv, jigkmgri, driver_device, 0, ROT0, "Taito Corporation", "Jigoku Meguri (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, bonzeadvp, bonzeadv, bonzeadv, jigkmgri, driver_device, 0, ROT0, "Taito Corporation Japan", "Bonze Adventure (World, prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, asuka, 0, asuka, asuka, driver_device, 0, ROT270, "Taito Corporation", "Asuka & Asuka (World)", GAME_SUPPORTS_SAVE )
-GAME( 1988, asukaj, asuka, asuka, asuka, driver_device, 0, ROT270, "Taito Corporation", "Asuka & Asuka (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1988, asuka, 0, asuka, asuka, driver_device, 0, ROT270, "Taito Corporation", "Asuka & Asuka (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, asukaj, asuka, asuka, asuka, driver_device, 0, ROT270, "Taito Corporation", "Asuka & Asuka (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, mofflott, 0, mofflott, mofflott, driver_device, 0, ROT270, "Taito Corporation", "Maze of Flott (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1989, mofflott, 0, mofflott, mofflott, driver_device, 0, ROT270, "Taito Corporation", "Maze of Flott (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1989, cadash, 0, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (World)", GAME_SUPPORTS_SAVE )
-GAME( 1989, cadashj, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, version 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, cadashj1, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, version 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, cadashjo, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, oldest version)", GAME_SUPPORTS_SAVE )
-GAME( 1989, cadashu, cadash, cadash, cadashu, driver_device, 0, ROT0, "Taito America Corporation", "Cadash (US, version 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, cadashi, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (Italy)", GAME_SUPPORTS_SAVE )
-GAME( 1989, cadashf, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (France)", GAME_SUPPORTS_SAVE )
-GAME( 1989, cadashg, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (Germany, version 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, cadashp, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (World, prototype)", GAME_SUPPORTS_SAVE )
+GAME( 1989, cadash, 0, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cadashj, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, version 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cadashj1, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, version 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cadashjo, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation", "Cadash (Japan, oldest version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cadashu, cadash, cadash, cadashu, driver_device, 0, ROT0, "Taito America Corporation", "Cadash (US, version 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cadashi, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (Italy)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cadashf, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (France)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cadashg, cadash, cadash, cadash, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (Germany, version 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cadashp, cadash, cadash, cadashj, driver_device, 0, ROT0, "Taito Corporation Japan", "Cadash (World, prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1992, galmedes, 0, galmedes, galmedes, driver_device, 0, ROT270, "Visco", "Galmedes (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1992, galmedes, 0, galmedes, galmedes, driver_device, 0, ROT270, "Visco", "Galmedes (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1993, earthjkr, 0, galmedes, earthjkr, driver_device, 0, ROT270, "Visco", "U.N. Defense Force: Earth Joker (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1993, earthjkrp, earthjkr, galmedes, earthjkr, driver_device, 0, ROT270, "Visco", "U.N. Defense Force: Earth Joker (Japan, prototype?)", GAME_SUPPORTS_SAVE )
+GAME( 1993, earthjkr, 0, galmedes, earthjkr, driver_device, 0, ROT270, "Visco", "U.N. Defense Force: Earth Joker (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, earthjkrp, earthjkr, galmedes, earthjkr, driver_device, 0, ROT270, "Visco", "U.N. Defense Force: Earth Joker (Japan, prototype?)", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, eto, 0, eto, eto, driver_device, 0, ROT0, "Visco", "Kokontouzai Eto Monogatari (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1994, eto, 0, eto, eto, driver_device, 0, ROT0, "Visco", "Kokontouzai Eto Monogatari (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/at.c b/src/mame/drivers/at.c
index a385b3af933..e02423a3b32 100644
--- a/src/mess/drivers/at.c
+++ b/src/mame/drivers/at.c
@@ -58,6 +58,16 @@ static ADDRESS_MAP_START( at586_map, AS_PROGRAM, 32, at586_state )
AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("isa", 0x20000)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( ficpio_map, AS_PROGRAM, 32, at_state )
+ AM_RANGE(0x00000000, 0x0009ffff) AM_RAMBANK("bank10")
+ AM_RANGE(0x000a0000, 0x000bffff) AM_NOP
+ AM_RANGE(0x000c0000, 0x000c7fff) AM_NOP
+ AM_RANGE(0x000c8000, 0x000cffff) AM_NOP
+ AM_RANGE(0x000d0000, 0x000effff) AM_RAM
+ AM_RANGE(0x000f0000, 0x000fffff) AM_RAM
+ AM_RANGE(0x00800000, 0x00800bff) AM_RAM AM_SHARE("nvram")
+ AM_RANGE(0xfffe0000, 0xffffffff) AM_ROM AM_REGION("isa", 0x20000)
+ADDRESS_MAP_END
READ8_MEMBER( at_state::at_dma8237_2_r )
@@ -196,6 +206,25 @@ static ADDRESS_MAP_START( at586_io, AS_IO, 32, at586_state )
AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( ficpio_io, AS_IO, 32, at_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237_1", am9517a_device, read, write, 0xffffffff)
+ AM_RANGE(0x0020, 0x003f) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0xffffffff)
+ AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffffffff)
+ AM_RANGE(0x0060, 0x0063) AM_READWRITE8(at_keybc_r, at_keybc_w, 0xffff)
+ AM_RANGE(0x0064, 0x0067) AM_DEVREADWRITE8("keybc", at_keyboard_controller_device, status_r, command_w, 0xffff)
+ AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE8("rtc", mc146818_device, read, write , 0xffffffff)
+ AM_RANGE(0x0080, 0x009f) AM_READWRITE8(at_page8_r, at_page8_w, 0xffffffff)
+ AM_RANGE(0x00a0, 0x00a7) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0xffffffff)
+ AM_RANGE(0x00a8, 0x00af) AM_DEVREADWRITE8("chipset", vt82c496_device, read, write, 0xffffffff)
+ AM_RANGE(0x00c0, 0x00df) AM_READWRITE8(at_dma8237_2_r, at_dma8237_2_w, 0xffffffff)
+ AM_RANGE(0x0170, 0x0177) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs0, write_cs0)
+ AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs0, write_cs0)
+ AM_RANGE(0x0370, 0x0377) AM_DEVREADWRITE("ide2", ide_controller_32_device, read_cs1, write_cs1)
+ AM_RANGE(0x03f0, 0x03f7) AM_DEVREADWRITE("ide", ide_controller_32_device, read_cs1, write_cs1)
+ AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_device, read, write)
+ADDRESS_MAP_END
+
DRIVER_INIT_MEMBER(megapc_state, megapc)
{
UINT8* ROM = memregion("bios")->base();
@@ -214,7 +243,7 @@ DRIVER_INIT_MEMBER(at_state, megapcpla)
{
UINT8* ROM = memregion("maincpu")->base();
- init_at_common();
+ init_at_common(0xa0000);
ROM[0xf3c2a] = 0x45; // hack to fix keyboard. To be removed when the keyboard controller from the MegaPC is dumped
ROM[0xfaf37] = 0x45;
@@ -264,28 +293,6 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( atcga )
- PORT_START("DSW0")
- PORT_DIPNAME( 0xc0, 0x40, "Number of floppy drives")
- PORT_DIPSETTING( 0x00, "1" )
- PORT_DIPSETTING( 0x40, "2" )
- PORT_DIPSETTING( 0x80, "3" )
- PORT_DIPSETTING( 0xc0, "4" )
- PORT_DIPNAME( 0x30, 0x00, "Graphics adapter")
- PORT_DIPSETTING( 0x00, "EGA/VGA" )
- PORT_DIPSETTING( 0x10, "Color 40x25" )
- PORT_DIPSETTING( 0x20, "Color 80x25" )
- PORT_DIPSETTING( 0x30, "Monochrome" )
- PORT_DIPNAME( 0x0c, 0x0c, "RAM banks")
- PORT_DIPSETTING( 0x00, "1 - 16 64 256K" )
- PORT_DIPSETTING( 0x04, "2 - 32 128 512K" )
- PORT_DIPSETTING( 0x08, "3 - 48 192 576K" )
- PORT_DIPSETTING( 0x0c, "4 - 64 256 640K" )
- PORT_DIPNAME( 0x02, 0x00, "80387 installed")
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x01, 0x01, "Floppy installed")
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
INPUT_PORTS_END
static INPUT_PORTS_START( atvga )
@@ -302,29 +309,6 @@ static INPUT_PORTS_START( atvga )
PORT_DIPNAME( 0x01, 0x01, "VGA 4")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW0")
- PORT_DIPNAME( 0xc0, 0x40, "Number of floppy drives")
- PORT_DIPSETTING( 0x00, "1" )
- PORT_DIPSETTING( 0x40, "2" )
- PORT_DIPSETTING( 0x80, "3" )
- PORT_DIPSETTING( 0xc0, "4" )
- PORT_DIPNAME( 0x30, 0x00, "Graphics adapter")
- PORT_DIPSETTING( 0x00, "EGA/VGA" )
- PORT_DIPSETTING( 0x10, "Color 40x25" )
- PORT_DIPSETTING( 0x20, "Color 80x25" )
- PORT_DIPSETTING( 0x30, "Monochrome" )
- PORT_DIPNAME( 0x0c, 0x0c, "RAM banks")
- PORT_DIPSETTING( 0x00, "1 - 16 64 256K" )
- PORT_DIPSETTING( 0x04, "2 - 32 128 512K" )
- PORT_DIPSETTING( 0x08, "3 - 48 192 576K" )
- PORT_DIPSETTING( 0x0c, "4 - 64 256 640K" )
- PORT_DIPNAME( 0x02, 0x00, "80387 installed")
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x01, 0x01, "Floppy installed")
- PORT_DIPSETTING( 0x00, DEF_STR( No ) )
- PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
INPUT_PORTS_END
WRITE_LINE_MEMBER( at_state::at_mc146818_irq )
@@ -722,6 +706,7 @@ static SLOT_INTERFACE_START( pci_devices )
SLOT_INTERFACE_INTERNAL("i82439tx", I82439TX)
SLOT_INTERFACE_INTERNAL("i82371ab", I82371AB)
SLOT_INTERFACE_INTERNAL("i82371sb", I82371SB)
+ SLOT_INTERFACE_INTERNAL("vt82c505", VT82C505)
SLOT_INTERFACE_END
@@ -908,6 +893,47 @@ static MACHINE_CONFIG_START( megapcpla, at_state )
MCFG_SOFTWARE_LIST_ADD("disk_list","megapc")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_START( ficpio2, at_state )
+ MCFG_CPU_ADD("maincpu", I486, 25000000)
+ MCFG_CPU_PROGRAM_MAP(ficpio_map)
+ MCFG_CPU_IO_MAP(ficpio_io)
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("pic8259_master", pic8259_device, inta_cb)
+
+ MCFG_FRAGMENT_ADD(at_motherboard)
+
+ MCFG_DEVICE_REMOVE("rtc")
+ MCFG_DS12885_ADD("rtc")
+ MCFG_MC146818_IRQ_HANDLER(WRITELINE(at_state, at_mc146818_irq))
+ MCFG_MC146818_CENTURY_INDEX(0x32)
+
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("4M")
+ MCFG_RAM_EXTRA_OPTIONS("1M,2M,8M,16M,32M,64M,128M")
+
+ // on board devices
+ MCFG_ISA16_SLOT_ADD("isabus","board1", pc_isa16_cards, "fdcsmc", true)
+ MCFG_ISA16_SLOT_ADD("isabus","board2", pc_isa16_cards, "comat", true)
+ MCFG_ISA16_SLOT_ADD("isabus","board3", pc_isa16_cards, "lpt", true)
+
+ MCFG_IDE_CONTROLLER_32_ADD("ide", ata_devices, "hdd", NULL, true)
+ MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir6_w))
+ MCFG_IDE_CONTROLLER_32_ADD("ide2", ata_devices, "cdrom", NULL, true)
+ MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_slave", pic8259_device, ir7_w))
+
+ MCFG_PCI_BUS_ADD("pcibus", 0)
+ MCFG_PCI_BUS_DEVICE("pcibus:0", pci_devices, "vt82c505", true)
+ MCFG_ISA16_SLOT_ADD("isabus","isa1", pc_isa16_cards, "svga_et4k", false)
+ MCFG_ISA16_SLOT_ADD("isabus","isa2", pc_isa16_cards, NULL, false)
+ MCFG_ISA16_SLOT_ADD("isabus","isa3", pc_isa16_cards, NULL, false)
+ MCFG_ISA16_SLOT_ADD("isabus","isa4", pc_isa16_cards, NULL, false)
+ MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_MICROSOFT_NATURAL)
+
+ MCFG_VT82C496_ADD("chipset")
+ MCFG_VT82C496_CPU("maincpu")
+ MCFG_VT82C496_REGION("isa")
+
+ MCFG_FRAGMENT_ADD( at_softlists )
+MACHINE_CONFIG_END
#if 0
// ibm at
@@ -1400,17 +1426,17 @@ ROM_END
// FIC 486-PIO-2 (4 ISA, 4 PCI)
-// VIA VT82C505 + VT82C496G + VT82C406MV, NS311/312 or NS332 I/O
+// VIA VT82C505 (ISA/VL to PCI bridge) + VT82C496G (system chipset) + VT82C406MV (keyboard controller, RTC, CMOS), NS311/312 or NS332 I/O
ROM_START( ficpio2 )
- ROM_REGION(0x1000000, "maincpu", 0)
- ROM_SYSTEM_BIOS(0, "ficpio2c7", "FIC 486-PIO-2 1.15C701") /* pnp, i/o core: NS 332 */
- ROMX_LOAD("115c701.awd", 0x0e0000, 0x20000, CRC(b0dd7975) SHA1(bfde13b0fbd141bc945d37d92faca9f4f59b716d), ROM_BIOS(1))
- ROM_SYSTEM_BIOS(1, "ficpio2b7", "FIC 486-PIO-2 1.15B701") /* pnp, i/o core: NS 311/312 */
- ROMX_LOAD("115b701.awd", 0x0e0000, 0x20000, CRC(ac24abad) SHA1(01174d84ed32fb1d95cd632d09f773acb8666c83), ROM_BIOS(2))
- ROM_SYSTEM_BIOS(2, "ficpio2c1", "FIC 486-PIO-2 1.15C101") /* non-pnp, i/o core: NS 332 */
- ROMX_LOAD("115c101.awd", 0x0e0000, 0x20000, CRC(5fadde88) SHA1(eff79692c1ecf34b6ea3f02409d14ce1f5c51bf9), ROM_BIOS(3))
- ROM_SYSTEM_BIOS(3, "ficpio2b1", "FIC 486-PIO-2 1.15B101") /* non-pnp, i/o core: NS 311/312 */
- ROMX_LOAD("115b101.awd", 0x0e0000, 0x20000, CRC(ff69617d) SHA1(ecbfc7315dcf6bd3e5b59e3ae9258759f64fe7a0), ROM_BIOS(4))
+ ROM_REGION(0x40000, "isa", 0)
+ ROM_SYSTEM_BIOS(0, "ficpio2c7", "FIC 486-PIO-2 1.15C701") /* pnp, i/o core: NS 332, doesn't boot, requires cache emulation? */
+ ROMX_LOAD("115c701.awd", 0x020000, 0x20000, CRC(b0dd7975) SHA1(bfde13b0fbd141bc945d37d92faca9f4f59b716d), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS(1, "ficpio2b7", "FIC 486-PIO-2 1.15B701") /* pnp, i/o core: NS 311/312, doesn't boot, requires cache emulation? */
+ ROMX_LOAD("115b701.awd", 0x020000, 0x20000, CRC(ac24abad) SHA1(01174d84ed32fb1d95cd632d09f773acb8666c83), ROM_BIOS(2))
+ ROM_SYSTEM_BIOS(2, "ficpio2c1", "FIC 486-PIO-2 1.15C101") /* non-pnp, i/o core: NS 332, working */
+ ROMX_LOAD("115c101.awd", 0x020000, 0x20000, CRC(5fadde88) SHA1(eff79692c1ecf34b6ea3f02409d14ce1f5c51bf9), ROM_BIOS(3))
+ ROM_SYSTEM_BIOS(3, "ficpio2b1", "FIC 486-PIO-2 1.15B101") /* non-pnp, i/o core: NS 311/312, working */
+ ROMX_LOAD("115b101.awd", 0x020000, 0x20000, CRC(ff69617d) SHA1(ecbfc7315dcf6bd3e5b59e3ae9258759f64fe7a0), ROM_BIOS(4))
ROM_END
@@ -1627,56 +1653,56 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP ( 1984, ibm5170, 0, ibm5150, ibm5170, atcga, at_state, atcga, "International Business Machines", "IBM PC/AT 5170", GAME_NOT_WORKING )
-COMP ( 1985, ibm5170a, ibm5170, 0, ibm5170a, atcga, at_state, atcga, "International Business Machines", "IBM PC/AT 5170 8MHz", GAME_NOT_WORKING )
-COMP ( 1985, ibm5162, ibm5170, 0, ibm5162, atcga, at_state, atcga, "International Business Machines", "IBM PC/XT-286 5162", GAME_NOT_WORKING )
-COMP ( 1990, i8530h31, ibm5170, 0, ps2m30286, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8530-H31 (Model 30/286)", GAME_NOT_WORKING )
-COMP ( 1988, i8530286, ibm5170, 0, ps2m30286, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 Model 30-286", GAME_NOT_WORKING )
-COMP ( 198?, i8535043, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8535-043 (Model 35)", GAME_NOT_WORKING )
-COMP ( 198?, i8550021, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8550-021 (Model 50)", GAME_NOT_WORKING )
-COMP ( 198?, i8550061, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8550-061 (Model 50Z)", GAME_NOT_WORKING )
-COMP ( 1989, i8555081, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8550-081 (Model 55SX)", GAME_NOT_WORKING )
-COMP ( 198?, i8580071, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8580-071 (Model 80)", GAME_NOT_WORKING )
-COMP ( 198?, i8580111, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8580-111 (Model 80)", GAME_NOT_WORKING )
-COMP ( 1989, ibmps1es, ibm5170, 0, ibmps1, atvga, at_state, atvga, "International Business Machines", "IBM PS/1 (Spanish)", GAME_NOT_WORKING )
-COMP ( 1987, at, ibm5170, 0, ibm5162, atcga, at_state, atcga, "<generic>", "PC/AT (CGA, MF2 Keyboard)", GAME_NOT_WORKING )
-COMP ( 1987, atvga, ibm5170, 0, atvga, atvga, at_state, atvga, "<generic>", "PC/AT (VGA, MF2 Keyboard)" , GAME_NOT_WORKING )
-COMP ( 1988, at386, ibm5170, 0, at386, atvga, at_state, atvga, "<generic>", "PC/AT 386 (VGA, MF2 Keyboard)", GAME_NOT_WORKING )
-COMP ( 1988, ct386sx, ibm5170, 0, ct386sx, atvga, at_state, atvga, "<generic>", "NEAT 386SX (VGA, MF2 Keyboard)", GAME_NOT_WORKING )
-//COMP ( 1988, at386sx, ibm5170, 0, ct386sx, atvga, at_state, atvga, "<generic>", "PC/AT 386SX (VGA, MF2 Keyboard)", GAME_NOT_WORKING )
-COMP ( 1990, at486, ibm5170, 0, at486, atvga, at_state, atvga, "<generic>", "PC/AT 486 (VGA, MF2 Keyboard)", GAME_NOT_WORKING )
-COMP ( 1990, at586, ibm5170, 0, at586, atvga, at586_state, at586, "<generic>", "PC/AT 586 (PIIX4)", GAME_NOT_WORKING )
-COMP ( 1990, at586x3, ibm5170, 0, at586x3, atvga, at586_state, at586, "<generic>", "PC/AT 586 (PIIX3)", GAME_NOT_WORKING )
-COMP ( 1989, neat, ibm5170, 0, neat, atvga, at_state, atvga, "<generic>", "NEAT (VGA, MF2 Keyboard)", GAME_NOT_WORKING )
-COMP ( 1989, ec1842, ibm5150, 0, ec1842, atcga, at_state, atcga, "<unknown>", "EC-1842", GAME_NOT_WORKING )
-COMP ( 1993, ec1849, ibm5170, 0, ec1849, atcga, at_state, atcga, "<unknown>", "EC-1849", GAME_NOT_WORKING )
-COMP ( 1993, megapc, 0, 0, megapc, 0, megapc_state,megapc, "Amstrad plc", "MegaPC", GAME_NOT_WORKING )
-COMP ( 199?, megapcpl, megapc, 0, megapcpl, 0, megapc_state,megapcpl, "Amstrad plc", "MegaPC Plus", GAME_NOT_WORKING )
-COMP ( 199?, megapcpla, megapc, 0, megapcpla, 0, at_state, megapcpla,"Amstrad plc", "MegaPC Plus (WINBUS chipset)", GAME_NOT_WORKING )
-COMP ( 1989, pc2386, ibm5170, 0, at386, atvga, at_state, atvga, "Amstrad plc", "Amstrad PC2386", GAME_NOT_WORKING )
-COMP ( 1991, aprfte, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot FT//ex 486 (J3 Motherboard)", GAME_NOT_WORKING )
-COMP ( 1991, ftsserv, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot FTs (Scorpion)", GAME_NOT_WORKING )
-COMP ( 1992, aprpand, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot FTs (Panther Rev F 1.02.26)", GAME_NOT_WORKING )
-COMP ( 1990, aplanst, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot LANstation (Krypton Motherboard)", GAME_NOT_WORKING )
-COMP ( 1990, aplannb, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot LANstation (Novell Remote Boot)", GAME_NOT_WORKING )
-COMP ( 1992, aplscar, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot LS Pro (Caracal Motherboard)", GAME_NOT_WORKING )
-COMP ( 1992, aplsbon, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot LS Pro (Bonsai Motherboard)", GAME_NOT_WORKING )
-COMP ( 1988, xb42663, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot Qi 300 (Rev D,E & F Motherboard)", GAME_NOT_WORKING )
-COMP ( 1988, qi600, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot Qi 600 (Neptune Motherboard)", GAME_NOT_WORKING )
-COMP ( 1990, qi900, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot Qi 900 (Scorpion Motherboard)", GAME_NOT_WORKING )
-COMP ( 1989, apvxft, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot VX FT server", GAME_NOT_WORKING )
-COMP ( 1991, apxenls3, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot XEN-LS (Venus IV Motherboard)", GAME_NOT_WORKING )
-COMP ( 1993, apxlsam, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot XEN-LS II (Samurai Motherboard)", GAME_NOT_WORKING )
-COMP ( 1987, apxeni, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot XEN-i 386 (Leopard Motherboard)" , GAME_NOT_WORKING )
-COMP ( 1989, xb42639, ibm5170, 0, xb42639, atvga, at_state, atvga, "Apricot", "Apricot XEN-S (Venus I Motherboard 286)" , GAME_NOT_WORKING )
-COMP ( 1990, xb42639a, ibm5170, 0, xb42639, atvga, at_state, atvga, "Apricot", "Apricot XEN-S (Venus II Motherboard 286)" , GAME_NOT_WORKING )
-COMP ( 1989, xb42664, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot XEN-S (Venus I Motherboard 386)" , GAME_NOT_WORKING )
-COMP ( 1990, xb42664a, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot XEN-S (Venus II Motherboard 386)" , GAME_NOT_WORKING )
-COMP ( 1993, apxena1, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot XEN PC (A1 Motherboard)", GAME_NOT_WORKING )
-COMP ( 1993, apxenp2, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot XEN PC (P2 Motherboard)", GAME_NOT_WORKING )
-COMP ( 1990, c386sx16, ibm5170, 0, at386sx, atvga, at_state, atvga, "Commodore Business Machines", "Commodore 386SX-16", GAME_NOT_WORKING )
-COMP ( 1988, cmdpc30, ibm5170, 0, ibm5162, atcga, at_state, atcga, "Commodore Business Machines", "PC 30 III", GAME_NOT_WORKING )
-COMP ( 1995, ficpio2, ibm5170, 0, at486, atvga, at_state, atvga, "FIC", "486-PIO-2", GAME_NOT_WORKING )
-COMP ( 1997, ficvt503, ibm5170, 0, at586, atvga, driver_device, 0, "FIC", "VT-503", GAME_NOT_WORKING )
-COMP ( 1985, k286i, ibm5170, 0, k286i, atcga, at_state, atcga, "Kaypro", "286i", GAME_NOT_WORKING )
-COMP ( 1991, t2000sx, ibm5170, 0, at386sx, atvga, at_state, atvga, "Toshiba", "T2000SX", GAME_NOT_WORKING )
+COMP ( 1984, ibm5170, 0, ibm5150, ibm5170, atcga, at_state, atcga, "International Business Machines", "IBM PC/AT 5170", MACHINE_NOT_WORKING )
+COMP ( 1985, ibm5170a, ibm5170, 0, ibm5170a, atcga, at_state, atcga, "International Business Machines", "IBM PC/AT 5170 8MHz", MACHINE_NOT_WORKING )
+COMP ( 1985, ibm5162, ibm5170, 0, ibm5162, atcga, at_state, atcga, "International Business Machines", "IBM PC/XT-286 5162", MACHINE_NOT_WORKING )
+COMP ( 1990, i8530h31, ibm5170, 0, ps2m30286, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8530-H31 (Model 30/286)", MACHINE_NOT_WORKING )
+COMP ( 1988, i8530286, ibm5170, 0, ps2m30286, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 Model 30-286", MACHINE_NOT_WORKING )
+COMP ( 198?, i8535043, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8535-043 (Model 35)", MACHINE_NOT_WORKING )
+COMP ( 198?, i8550021, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8550-021 (Model 50)", MACHINE_NOT_WORKING )
+COMP ( 198?, i8550061, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8550-061 (Model 50Z)", MACHINE_NOT_WORKING )
+COMP ( 1989, i8555081, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8550-081 (Model 55SX)", MACHINE_NOT_WORKING )
+COMP ( 198?, i8580071, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8580-071 (Model 80)", MACHINE_NOT_WORKING )
+COMP ( 198?, i8580111, ibm5170, 0, at386, atvga, at_state, atvga, "International Business Machines", "IBM PS/2 8580-111 (Model 80)", MACHINE_NOT_WORKING )
+COMP ( 1989, ibmps1es, ibm5170, 0, ibmps1, atvga, at_state, atvga, "International Business Machines", "IBM PS/1 (Spanish)", MACHINE_NOT_WORKING )
+COMP ( 1987, at, ibm5170, 0, ibm5162, atcga, at_state, atcga, "<generic>", "PC/AT (CGA, MF2 Keyboard)", MACHINE_NOT_WORKING )
+COMP ( 1987, atvga, ibm5170, 0, atvga, atvga, at_state, atvga, "<generic>", "PC/AT (VGA, MF2 Keyboard)" , MACHINE_NOT_WORKING )
+COMP ( 1988, at386, ibm5170, 0, at386, atvga, at_state, atvga, "<generic>", "PC/AT 386 (VGA, MF2 Keyboard)", MACHINE_NOT_WORKING )
+COMP ( 1988, ct386sx, ibm5170, 0, ct386sx, atvga, at_state, atvga, "<generic>", "NEAT 386SX (VGA, MF2 Keyboard)", MACHINE_NOT_WORKING )
+//COMP ( 1988, at386sx, ibm5170, 0, ct386sx, atvga, at_state, atvga, "<generic>", "PC/AT 386SX (VGA, MF2 Keyboard)", MACHINE_NOT_WORKING )
+COMP ( 1990, at486, ibm5170, 0, at486, atvga, at_state, atvga, "<generic>", "PC/AT 486 (VGA, MF2 Keyboard)", MACHINE_NOT_WORKING )
+COMP ( 1990, at586, ibm5170, 0, at586, atvga, at586_state, at586, "<generic>", "PC/AT 586 (PIIX4)", MACHINE_NOT_WORKING )
+COMP ( 1990, at586x3, ibm5170, 0, at586x3, atvga, at586_state, at586, "<generic>", "PC/AT 586 (PIIX3)", MACHINE_NOT_WORKING )
+COMP ( 1989, neat, ibm5170, 0, neat, atvga, at_state, atvga, "<generic>", "NEAT (VGA, MF2 Keyboard)", MACHINE_NOT_WORKING )
+COMP ( 1989, ec1842, ibm5150, 0, ec1842, atcga, at_state, atcga, "<unknown>", "EC-1842", MACHINE_NOT_WORKING )
+COMP ( 1993, ec1849, ibm5170, 0, ec1849, atcga, at_state, atcga, "<unknown>", "EC-1849", MACHINE_NOT_WORKING )
+COMP ( 1993, megapc, 0, 0, megapc, 0, megapc_state,megapc, "Amstrad plc", "MegaPC", MACHINE_NOT_WORKING )
+COMP ( 199?, megapcpl, megapc, 0, megapcpl, 0, megapc_state,megapcpl, "Amstrad plc", "MegaPC Plus", MACHINE_NOT_WORKING )
+COMP ( 199?, megapcpla, megapc, 0, megapcpla, 0, at_state, megapcpla,"Amstrad plc", "MegaPC Plus (WINBUS chipset)", MACHINE_NOT_WORKING )
+COMP ( 1989, pc2386, ibm5170, 0, at386, atvga, at_state, atvga, "Amstrad plc", "Amstrad PC2386", MACHINE_NOT_WORKING )
+COMP ( 1991, aprfte, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot FT//ex 486 (J3 Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1991, ftsserv, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot FTs (Scorpion)", MACHINE_NOT_WORKING )
+COMP ( 1992, aprpand, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot FTs (Panther Rev F 1.02.26)", MACHINE_NOT_WORKING )
+COMP ( 1990, aplanst, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot LANstation (Krypton Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1990, aplannb, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot LANstation (Novell Remote Boot)", MACHINE_NOT_WORKING )
+COMP ( 1992, aplscar, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot LS Pro (Caracal Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1992, aplsbon, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot LS Pro (Bonsai Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1988, xb42663, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot Qi 300 (Rev D,E & F Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1988, qi600, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot Qi 600 (Neptune Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1990, qi900, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot Qi 900 (Scorpion Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1989, apvxft, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot VX FT server", MACHINE_NOT_WORKING )
+COMP ( 1991, apxenls3, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot XEN-LS (Venus IV Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1993, apxlsam, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot XEN-LS II (Samurai Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1987, apxeni, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot XEN-i 386 (Leopard Motherboard)" , MACHINE_NOT_WORKING )
+COMP ( 1989, xb42639, ibm5170, 0, xb42639, atvga, at_state, atvga, "Apricot", "Apricot XEN-S (Venus I Motherboard 286)" , MACHINE_NOT_WORKING )
+COMP ( 1990, xb42639a, ibm5170, 0, xb42639, atvga, at_state, atvga, "Apricot", "Apricot XEN-S (Venus II Motherboard 286)" , MACHINE_NOT_WORKING )
+COMP ( 1989, xb42664, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot XEN-S (Venus I Motherboard 386)" , MACHINE_NOT_WORKING )
+COMP ( 1990, xb42664a, ibm5170, 0, at386, atvga, at_state, atvga, "Apricot", "Apricot XEN-S (Venus II Motherboard 386)" , MACHINE_NOT_WORKING )
+COMP ( 1993, apxena1, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot XEN PC (A1 Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1993, apxenp2, ibm5170, 0, at486, atvga, at_state, atvga, "Apricot", "Apricot XEN PC (P2 Motherboard)", MACHINE_NOT_WORKING )
+COMP ( 1990, c386sx16, ibm5170, 0, at386sx, atvga, at_state, atvga, "Commodore Business Machines", "Commodore 386SX-16", MACHINE_NOT_WORKING )
+COMP ( 1988, cmdpc30, ibm5170, 0, ibm5162, atcga, at_state, atcga, "Commodore Business Machines", "PC 30 III", MACHINE_NOT_WORKING )
+COMP ( 1995, ficpio2, ibm5170, 0, ficpio2, atvga, at_state, atpci, "FIC", "486-PIO-2", MACHINE_NOT_WORKING )
+COMP ( 1997, ficvt503, ibm5170, 0, at586, atvga, driver_device, 0, "FIC", "VT-503", MACHINE_NOT_WORKING )
+COMP ( 1985, k286i, ibm5170, 0, k286i, atcga, at_state, atcga, "Kaypro", "286i", MACHINE_NOT_WORKING )
+COMP ( 1991, t2000sx, ibm5170, 0, at386sx, atvga, at_state, atvga, "Toshiba", "T2000SX", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/atari400.c b/src/mame/drivers/atari400.c
index 5722e2c6d79..73844078019 100644
--- a/src/mess/drivers/atari400.c
+++ b/src/mame/drivers/atari400.c
@@ -50,7 +50,7 @@
#include "machine/atarifdc.h"
#include "bus/a800/a800_slot.h"
#include "bus/a800/a800_carts.h"
-#include "bus/a8sio/a8sio.h"
+#include "bus/a800/a8sio.h"
/******************************************************************************
@@ -2467,14 +2467,14 @@ COMP ( 1979, a400, 0, 0, a400, a800, driver_device, 0,
COMP ( 1979, a400pal, a400, 0, a400pal, a800, driver_device, 0, "Atari", "Atari 400 (PAL)", 0)
COMP ( 1979, a800, 0, 0, a800, a800, driver_device, 0, "Atari", "Atari 800 (NTSC)", 0)
COMP ( 1979, a800pal, a800, 0, a800pal, a800, driver_device, 0, "Atari", "Atari 800 (PAL)", 0)
-COMP ( 1982, a1200xl, a800, 0, a1200xl, a800xl, driver_device, 0, "Atari", "Atari 1200XL", GAME_NOT_WORKING ) // 64k RAM
-COMP ( 1983, a600xl, a800xl, 0, a600xl, a800xl, driver_device, 0, "Atari", "Atari 600XL", GAME_IMPERFECT_GRAPHICS ) // 16k RAM
-COMP ( 1983, a800xl, 0, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 800XL (NTSC)", GAME_IMPERFECT_GRAPHICS ) // 64k RAM
-COMP ( 1983, a800xlp, a800xl, 0, a800xlpal, a800xl, driver_device, 0, "Atari", "Atari 800XL (PAL)", GAME_IMPERFECT_GRAPHICS ) // 64k RAM
-COMP ( 1986, a65xe, a800xl, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 65XE", GAME_IMPERFECT_GRAPHICS ) // 64k RAM
-COMP ( 1986, a65xea, a800xl, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 65XE (Arabic)", GAME_NOT_WORKING )
-COMP ( 1986, a130xe, a800xl, 0, a130xe, a800xl, driver_device, 0, "Atari", "Atari 130XE", GAME_NOT_WORKING ) // 128k RAM
-COMP ( 1986, a800xe, a800xl, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 800XE", GAME_IMPERFECT_GRAPHICS ) // 64k RAM
-COMP ( 1987, xegs, 0, 0, xegs, a800xl, driver_device, 0, "Atari", "Atari XE Game System", GAME_IMPERFECT_GRAPHICS ) // 64k RAM
+COMP ( 1982, a1200xl, a800, 0, a1200xl, a800xl, driver_device, 0, "Atari", "Atari 1200XL", MACHINE_NOT_WORKING ) // 64k RAM
+COMP ( 1983, a600xl, a800xl, 0, a600xl, a800xl, driver_device, 0, "Atari", "Atari 600XL", MACHINE_IMPERFECT_GRAPHICS ) // 16k RAM
+COMP ( 1983, a800xl, 0, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 800XL (NTSC)", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM
+COMP ( 1983, a800xlp, a800xl, 0, a800xlpal, a800xl, driver_device, 0, "Atari", "Atari 800XL (PAL)", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM
+COMP ( 1986, a65xe, a800xl, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 65XE", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM
+COMP ( 1986, a65xea, a800xl, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 65XE (Arabic)", MACHINE_NOT_WORKING )
+COMP ( 1986, a130xe, a800xl, 0, a130xe, a800xl, driver_device, 0, "Atari", "Atari 130XE", MACHINE_NOT_WORKING ) // 128k RAM
+COMP ( 1986, a800xe, a800xl, 0, a800xl, a800xl, driver_device, 0, "Atari", "Atari 800XE", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM
+COMP ( 1987, xegs, 0, 0, xegs, a800xl, driver_device, 0, "Atari", "Atari XE Game System", MACHINE_IMPERFECT_GRAPHICS ) // 64k RAM
CONS ( 1982, a5200, 0, 0, a5200, a5200, driver_device, 0, "Atari", "Atari 5200", 0)
diff --git a/src/mame/drivers/atari_s1.c b/src/mame/drivers/atari_s1.c
index 77be78fafa4..7f2b5d10c8d 100644
--- a/src/mame/drivers/atari_s1.c
+++ b/src/mame/drivers/atari_s1.c
@@ -517,8 +517,8 @@ ROM_START(spcrider)
ROM_END
-GAME( 1976, atarians, 0, atarians, atari_s1, driver_device, 0, ROT0, "Atari", "The Atarians", GAME_MECHANICAL | GAME_IMPERFECT_SOUND)
-GAME( 1977, time2000, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari", "Time 2000", GAME_MECHANICAL | GAME_IMPERFECT_SOUND)
-GAME( 1977, aavenger, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari", "Airborne Avenger", GAME_MECHANICAL | GAME_IMPERFECT_SOUND)
-GAME( 1978, midearth, 0, midearth, atari_s1, driver_device, 0, ROT0, "Atari", "Middle Earth", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1978, spcrider, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari", "Space Riders", GAME_MECHANICAL | GAME_IMPERFECT_SOUND)
+GAME( 1976, atarians, 0, atarians, atari_s1, driver_device, 0, ROT0, "Atari", "The Atarians", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
+GAME( 1977, time2000, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari", "Time 2000", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
+GAME( 1977, aavenger, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari", "Airborne Avenger", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
+GAME( 1978, midearth, 0, midearth, atari_s1, driver_device, 0, ROT0, "Atari", "Middle Earth", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1978, spcrider, 0, atari_s1, atari_s1, driver_device, 0, ROT0, "Atari", "Space Riders", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/drivers/atari_s2.c b/src/mame/drivers/atari_s2.c
index f9279395f91..02f965ccd01 100644
--- a/src/mame/drivers/atari_s2.c
+++ b/src/mame/drivers/atari_s2.c
@@ -535,7 +535,7 @@ ROM_START(fourx4)
ROM_LOAD("82s130.bin", 0x0000, 0x0200, CRC(da1f77b4) SHA1(b21fdc1c6f196c320ec5404013d672c35f95890b))
ROM_END
-GAME( 1979, supermap, 0, atari_s2, atari_s2, driver_device, 0, ROT0, "Atari", "Superman (Pinball)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND)
-GAME( 1979, hercules, 0, atari_s2, atari_s2, driver_device, 0, ROT0, "Atari", "Hercules", GAME_MECHANICAL | GAME_IMPERFECT_SOUND)
-GAME( 1979, roadrunr, 0, atari_s3, atari_s2, driver_device, 0, ROT0, "Atari", "Road Runner", GAME_MECHANICAL | GAME_IMPERFECT_SOUND)
-GAME( 1982, fourx4, 0, atari_s3, atari_s2, driver_device, 0, ROT0, "Atari", "4x4", GAME_IS_SKELETON_MECHANICAL)
+GAME( 1979, supermap, 0, atari_s2, atari_s2, driver_device, 0, ROT0, "Atari", "Superman (Pinball)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
+GAME( 1979, hercules, 0, atari_s2, atari_s2, driver_device, 0, ROT0, "Atari", "Hercules", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
+GAME( 1979, roadrunr, 0, atari_s3, atari_s2, driver_device, 0, ROT0, "Atari", "Road Runner", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND)
+GAME( 1982, fourx4, 0, atari_s3, atari_s2, driver_device, 0, ROT0, "Atari", "4x4", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/atarifb.c b/src/mame/drivers/atarifb.c
index b4ba38bd94d..8349fdc7f7a 100644
--- a/src/mame/drivers/atarifb.c
+++ b/src/mame/drivers/atarifb.c
@@ -787,10 +787,10 @@ ROM_END
*************************************/
/* YEAR NAME PARENT MACHINE INPUT */
-GAMEL( 1978, atarifb, 0, atarifb, atarifb, driver_device, 0, ROT0, "Atari", "Atari Football (revision 2)", GAME_SUPPORTS_SAVE, layout_atarifb )
-GAMEL( 1978, atarifb1, atarifb, atarifb, atarifb, driver_device, 0, ROT0, "Atari", "Atari Football (revision 1)", GAME_SUPPORTS_SAVE, layout_atarifb )
-GAMEL( 1978, atarifb2, atarifb, atarifb, atarifb, driver_device, 0, ROT0, "Atari", "Atari Football II", GAME_SUPPORTS_SAVE, layout_atarifb )
-GAMEL( 1979, atarifb4, atarifb, atarifb4, atarifb4, driver_device, 0, ROT0, "Atari", "Atari Football (4 players)", GAME_SUPPORTS_SAVE, layout_atarifb4 )
-GAMEL( 1979, abaseb, 0, abaseb, abaseb, driver_device, 0, ROT0, "Atari", "Atari Baseball (set 1)", GAME_SUPPORTS_SAVE, layout_abaseb )
-GAMEL( 1979, abaseb2, abaseb, abaseb, abaseb, driver_device, 0, ROT0, "Atari", "Atari Baseball (set 2)", GAME_SUPPORTS_SAVE, layout_abaseb )
-GAME ( 1980, soccer, 0, soccer, soccer, driver_device, 0, ROT0, "Atari", "Atari Soccer", GAME_SUPPORTS_SAVE )
+GAMEL( 1978, atarifb, 0, atarifb, atarifb, driver_device, 0, ROT0, "Atari", "Atari Football (revision 2)", MACHINE_SUPPORTS_SAVE, layout_atarifb )
+GAMEL( 1978, atarifb1, atarifb, atarifb, atarifb, driver_device, 0, ROT0, "Atari", "Atari Football (revision 1)", MACHINE_SUPPORTS_SAVE, layout_atarifb )
+GAMEL( 1978, atarifb2, atarifb, atarifb, atarifb, driver_device, 0, ROT0, "Atari", "Atari Football II", MACHINE_SUPPORTS_SAVE, layout_atarifb )
+GAMEL( 1979, atarifb4, atarifb, atarifb4, atarifb4, driver_device, 0, ROT0, "Atari", "Atari Football (4 players)", MACHINE_SUPPORTS_SAVE, layout_atarifb4 )
+GAMEL( 1979, abaseb, 0, abaseb, abaseb, driver_device, 0, ROT0, "Atari", "Atari Baseball (set 1)", MACHINE_SUPPORTS_SAVE, layout_abaseb )
+GAMEL( 1979, abaseb2, abaseb, abaseb, abaseb, driver_device, 0, ROT0, "Atari", "Atari Baseball (set 2)", MACHINE_SUPPORTS_SAVE, layout_abaseb )
+GAME ( 1980, soccer, 0, soccer, soccer, driver_device, 0, ROT0, "Atari", "Atari Soccer", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/atarig1.c b/src/mame/drivers/atarig1.c
index 5c16f59afed..45bb3e8af4a 100644
--- a/src/mame/drivers/atarig1.c
+++ b/src/mame/drivers/atarig1.c
@@ -1228,15 +1228,15 @@ DRIVER_INIT_MEMBER(atarig1_state,pitfightb) { init_common(0x038000, -1, 1); }
*
*************************************/
-GAME( 1990, hydra, 0, hydra, hydra, atarig1_state, hydra, ROT0, "Atari Games", "Hydra", GAME_SUPPORTS_SAVE )
-GAME( 1990, hydrap, hydra, hydra, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/14/90)", GAME_SUPPORTS_SAVE )
-GAME( 1990, hydrap2, hydra, hydra, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/25/90)", GAME_SUPPORTS_SAVE )
-
-GAME( 1990, pitfight, 0, pitfight, pitfight, atarig1_state, pitfight9, ROT0, "Atari Games", "Pit Fighter (rev 9)", GAME_SUPPORTS_SAVE )
-GAME( 1990, pitfight7, pitfight, pitfight, pitfight, atarig1_state, pitfight7, ROT0, "Atari Games", "Pit Fighter (rev 7)", GAME_SUPPORTS_SAVE )
-GAME( 1990, pitfight6, pitfight, pitfight, pitfight, atarig1_state, pitfightj, ROT0, "Atari Games", "Pit Fighter (rev 6)", GAME_SUPPORTS_SAVE )
-GAME( 1990, pitfight5, pitfight, pitfight, pitfight, atarig1_state, pitfight7, ROT0, "Atari Games", "Pit Fighter (rev 5)", GAME_SUPPORTS_SAVE )
-GAME( 1990, pitfight4, pitfight, pitfight, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 4)", GAME_SUPPORTS_SAVE )
-GAME( 1990, pitfight3, pitfight, pitfight, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 3)", GAME_SUPPORTS_SAVE )
-GAME( 1990, pitfightj, pitfight, pitfight, pitfightj, atarig1_state,pitfightj, ROT0, "Atari Games", "Pit Fighter (Japan, 2 players)", GAME_SUPPORTS_SAVE )
-GAME( 1990, pitfightb, pitfight, pitfight, pitfight, atarig1_state, pitfightb, ROT0, "bootleg", "Pit Fighter (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1990, hydra, 0, hydra, hydra, atarig1_state, hydra, ROT0, "Atari Games", "Hydra", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, hydrap, hydra, hydra, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/14/90)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, hydrap2, hydra, hydra, hydra, atarig1_state, hydrap, ROT0, "Atari Games", "Hydra (prototype 5/25/90)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1990, pitfight, 0, pitfight, pitfight, atarig1_state, pitfight9, ROT0, "Atari Games", "Pit Fighter (rev 9)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfight7, pitfight, pitfight, pitfight, atarig1_state, pitfight7, ROT0, "Atari Games", "Pit Fighter (rev 7)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfight6, pitfight, pitfight, pitfight, atarig1_state, pitfightj, ROT0, "Atari Games", "Pit Fighter (rev 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfight5, pitfight, pitfight, pitfight, atarig1_state, pitfight7, ROT0, "Atari Games", "Pit Fighter (rev 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfight4, pitfight, pitfight, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfight3, pitfight, pitfight, pitfight, atarig1_state, pitfight, ROT0, "Atari Games", "Pit Fighter (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfightj, pitfight, pitfight, pitfightj, atarig1_state,pitfightj, ROT0, "Atari Games", "Pit Fighter (Japan, 2 players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, pitfightb, pitfight, pitfight, pitfight, atarig1_state, pitfightb, ROT0, "bootleg", "Pit Fighter (bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/atarig42.c b/src/mame/drivers/atarig42.c
index 8b07d836187..b44f1f901dd 100644
--- a/src/mame/drivers/atarig42.c
+++ b/src/mame/drivers/atarig42.c
@@ -849,6 +849,6 @@ DRIVER_INIT_MEMBER(atarig42_state,guardian)
*
*************************************/
-GAME( 1991, roadriot, 0, atarig42_0x200, roadriot, atarig42_state, roadriot, ROT0, "Atari Games", "Road Riot 4WD (set 1, 13 Nov 1991)", GAME_UNEMULATED_PROTECTION )
-GAME( 1991, roadrioto,roadriot, atarig42_0x200, roadriot, atarig42_state, roadriot, ROT0, "Atari Games", "Road Riot 4WD (set 2, 04 Jun 1991)", GAME_UNEMULATED_PROTECTION )
+GAME( 1991, roadriot, 0, atarig42_0x200, roadriot, atarig42_state, roadriot, ROT0, "Atari Games", "Road Riot 4WD (set 1, 13 Nov 1991)", MACHINE_UNEMULATED_PROTECTION )
+GAME( 1991, roadrioto,roadriot, atarig42_0x200, roadriot, atarig42_state, roadriot, ROT0, "Atari Games", "Road Riot 4WD (set 2, 04 Jun 1991)", MACHINE_UNEMULATED_PROTECTION )
GAME( 1992, guardian, 0, atarig42_0x400, guardian, atarig42_state, guardian, ROT0, "Atari Games", "Guardians of the 'Hood", 0 )
diff --git a/src/mame/drivers/atarigt.c b/src/mame/drivers/atarigt.c
index fdece26607a..4fe11fdd654 100644
--- a/src/mame/drivers/atarigt.c
+++ b/src/mame/drivers/atarigt.c
@@ -1331,10 +1331,10 @@ DRIVER_INIT_MEMBER(atarigt_state,primrage)
*
*************************************/
-GAME( 1994, tmek, 0, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v5.1, The Warlords)", GAME_UNEMULATED_PROTECTION )
-GAME( 1994, tmek51p, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v5.1, prototype)", GAME_UNEMULATED_PROTECTION )
-GAME( 1994, tmek45, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v4.5)", GAME_UNEMULATED_PROTECTION )
-GAME( 1994, tmek44, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v4.4)", GAME_UNEMULATED_PROTECTION )
+GAME( 1994, tmek, 0, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v5.1, The Warlords)", MACHINE_UNEMULATED_PROTECTION )
+GAME( 1994, tmek51p, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v5.1, prototype)", MACHINE_UNEMULATED_PROTECTION )
+GAME( 1994, tmek45, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v4.5)", MACHINE_UNEMULATED_PROTECTION )
+GAME( 1994, tmek44, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v4.4)", MACHINE_UNEMULATED_PROTECTION )
GAME( 1994, tmek20, tmek, tmek, tmek, atarigt_state, tmek, ROT0, "Atari Games", "T-MEK (v2.0, prototype)", 0 )
-GAME( 1994, primrage, 0, primrage, primrage, atarigt_state, primrage, ROT0, "Atari Games", "Primal Rage (version 2.3)", GAME_UNEMULATED_PROTECTION )
-GAME( 1994, primrage20, primrage, primrage20,primrage, atarigt_state, primrage, ROT0, "Atari Games", "Primal Rage (version 2.0)", GAME_UNEMULATED_PROTECTION )
+GAME( 1994, primrage, 0, primrage, primrage, atarigt_state, primrage, ROT0, "Atari Games", "Primal Rage (version 2.3)", MACHINE_UNEMULATED_PROTECTION )
+GAME( 1994, primrage20, primrage, primrage20,primrage, atarigt_state, primrage, ROT0, "Atari Games", "Primal Rage (version 2.0)", MACHINE_UNEMULATED_PROTECTION )
diff --git a/src/mame/drivers/atarigx2.c b/src/mame/drivers/atarigx2.c
index 0f65788f923..847d4747c4b 100644
--- a/src/mame/drivers/atarigx2.c
+++ b/src/mame/drivers/atarigx2.c
@@ -2273,16 +2273,16 @@ DRIVER_INIT_MEMBER(atarigx2_state,rrreveng)
*
*************************************/
-GAME( 1992, spclords, 0, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev C)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1992, spclordsb, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev B)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1992, spclordsg, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev A, German)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1992, spclordsa, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev A)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-
-GAME( 1992, motofren, 0, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1992, motofrenmd, motofren, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy (Mini Deluxe)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1992, motofrenft, motofren, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy (Field Test Version)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1992, motofrenmf, motofren, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy (Mini Deluxe Field Test Version)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-
-GAME( 1993, rrreveng, 0, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Sep 06, 1994)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1993, rrrevenga, rrreveng, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Jan 27, 1994, set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1993, rrrevengb, rrreveng, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Jan 27, 1994, set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, spclords, 0, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev C)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, spclordsb, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev B)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, spclordsg, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev A, German)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, spclordsa, spclords, atarigx2_0x400, spclords, atarigx2_state, spclords, ROT0, "Atari Games", "Space Lords (rev A)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+
+GAME( 1992, motofren, 0, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, motofrenmd, motofren, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy (Mini Deluxe)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, motofrenft, motofren, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy (Field Test Version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1992, motofrenmf, motofren, atarigx2_0x200, motofren, atarigx2_state, motofren, ROT0, "Atari Games", "Moto Frenzy (Mini Deluxe Field Test Version)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+
+GAME( 1993, rrreveng, 0, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Sep 06, 1994)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1993, rrrevenga, rrreveng, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Jan 27, 1994, set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1993, rrrevengb, rrreveng, atarigx2_0x400, rrreveng, atarigx2_state, rrreveng, ROT0, "Atari Games", "Road Riot's Revenge (prototype, Jan 27, 1994, set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/atarist.c b/src/mame/drivers/atarist.c
index 719433bd0ad..1bc2c0eb8cf 100644
--- a/src/mess/drivers/atarist.c
+++ b/src/mame/drivers/atarist.c
@@ -3182,43 +3182,43 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1985, st, 0, 0, st, st, driver_device, 0, "Atari", "ST (USA)", GAME_NOT_WORKING )
-COMP( 1985, st_uk, st, 0, st, st, driver_device, 0, "Atari", "ST (UK)", GAME_NOT_WORKING )
-COMP( 1985, st_de, st, 0, st, st, driver_device, 0, "Atari", "ST (Germany)", GAME_NOT_WORKING )
-COMP( 1985, st_es, st, 0, st, st, driver_device, 0, "Atari", "ST (Spain)", GAME_NOT_WORKING )
-COMP( 1985, st_fr, st, 0, st, st, driver_device, 0, "Atari", "ST (France)", GAME_NOT_WORKING )
-COMP( 1985, st_nl, st, 0, st, st, driver_device, 0, "Atari", "ST (Netherlands)", GAME_NOT_WORKING )
-COMP( 1985, st_se, st, 0, st, st, driver_device, 0, "Atari", "ST (Sweden)", GAME_NOT_WORKING )
-COMP( 1985, st_sg, st, 0, st, st, driver_device, 0, "Atari", "ST (Switzerland)", GAME_NOT_WORKING )
-COMP( 1987, megast, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (USA)", GAME_NOT_WORKING )
-COMP( 1987, megast_uk, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (UK)", GAME_NOT_WORKING )
-COMP( 1987, megast_de, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (Germany)", GAME_NOT_WORKING )
-COMP( 1987, megast_fr, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (France)", GAME_NOT_WORKING )
-COMP( 1987, megast_se, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (Sweden)", GAME_NOT_WORKING )
-COMP( 1987, megast_sg, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (Switzerland)",GAME_NOT_WORKING )
-COMP( 1989, ste, 0, 0, ste, ste, driver_device, 0, "Atari", "STE (USA)", GAME_NOT_WORKING )
-COMP( 1989, ste_uk, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (UK)", GAME_NOT_WORKING )
-COMP( 1989, ste_de, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Germany)", GAME_NOT_WORKING )
-COMP( 1989, ste_es, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Spain)", GAME_NOT_WORKING )
-COMP( 1989, ste_fr, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (France)", GAME_NOT_WORKING )
-COMP( 1989, ste_it, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Italy)", GAME_NOT_WORKING )
-COMP( 1989, ste_se, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Sweden)", GAME_NOT_WORKING )
-COMP( 1989, ste_sg, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Switzerland)", GAME_NOT_WORKING )
-//COMP( 1990, stbook, ste, 0, stbook, stbook, driver_device, 0, "Atari", "STBook", GAME_NOT_WORKING )
-COMP( 1990, tt030, 0, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (USA)", GAME_NOT_WORKING )
-COMP( 1990, tt030_uk, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (UK)", GAME_NOT_WORKING )
-COMP( 1990, tt030_de, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (Germany)", GAME_NOT_WORKING )
-COMP( 1990, tt030_fr, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (France)", GAME_NOT_WORKING )
-COMP( 1990, tt030_pl, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (Poland)", GAME_NOT_WORKING )
-COMP( 1991, megaste, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (USA)", GAME_NOT_WORKING )
-COMP( 1991, megaste_uk, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (UK)", GAME_NOT_WORKING )
-COMP( 1991, megaste_de, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Germany)", GAME_NOT_WORKING )
-COMP( 1991, megaste_es, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Spain)", GAME_NOT_WORKING )
-COMP( 1991, megaste_fr, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (France)", GAME_NOT_WORKING )
-COMP( 1991, megaste_it, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Italy)", GAME_NOT_WORKING )
-COMP( 1991, megaste_se, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Sweden)", GAME_NOT_WORKING )
-COMP( 1992, falcon30, 0, 0, falcon, falcon, driver_device, 0, "Atari", "Falcon030", GAME_NOT_WORKING )
-COMP( 1992, falcon40, falcon30, 0, falcon40, falcon, driver_device, 0, "Atari", "Falcon040 (prototype)",GAME_NOT_WORKING )
-//COMP( 1989, stacy, st, 0, stacy, stacy, driver_device, 0, "Atari", "Stacy", GAME_NOT_WORKING )
-//COMP( 1991, stpad, ste, 0, stpad, stpad, driver_device, 0, "Atari", "STPad (prototype)", GAME_NOT_WORKING )
-//COMP( 1992, fx1, 0, 0, falcon, falcon, driver_device, 0, "Atari", "FX-1 (prototype)", GAME_NOT_WORKING )
+COMP( 1985, st, 0, 0, st, st, driver_device, 0, "Atari", "ST (USA)", MACHINE_NOT_WORKING )
+COMP( 1985, st_uk, st, 0, st, st, driver_device, 0, "Atari", "ST (UK)", MACHINE_NOT_WORKING )
+COMP( 1985, st_de, st, 0, st, st, driver_device, 0, "Atari", "ST (Germany)", MACHINE_NOT_WORKING )
+COMP( 1985, st_es, st, 0, st, st, driver_device, 0, "Atari", "ST (Spain)", MACHINE_NOT_WORKING )
+COMP( 1985, st_fr, st, 0, st, st, driver_device, 0, "Atari", "ST (France)", MACHINE_NOT_WORKING )
+COMP( 1985, st_nl, st, 0, st, st, driver_device, 0, "Atari", "ST (Netherlands)", MACHINE_NOT_WORKING )
+COMP( 1985, st_se, st, 0, st, st, driver_device, 0, "Atari", "ST (Sweden)", MACHINE_NOT_WORKING )
+COMP( 1985, st_sg, st, 0, st, st, driver_device, 0, "Atari", "ST (Switzerland)", MACHINE_NOT_WORKING )
+COMP( 1987, megast, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (USA)", MACHINE_NOT_WORKING )
+COMP( 1987, megast_uk, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (UK)", MACHINE_NOT_WORKING )
+COMP( 1987, megast_de, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (Germany)", MACHINE_NOT_WORKING )
+COMP( 1987, megast_fr, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (France)", MACHINE_NOT_WORKING )
+COMP( 1987, megast_se, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (Sweden)", MACHINE_NOT_WORKING )
+COMP( 1987, megast_sg, st, 0, megast, st, driver_device, 0, "Atari", "MEGA ST (Switzerland)",MACHINE_NOT_WORKING )
+COMP( 1989, ste, 0, 0, ste, ste, driver_device, 0, "Atari", "STE (USA)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_uk, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (UK)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_de, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Germany)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_es, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Spain)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_fr, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (France)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_it, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Italy)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_se, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Sweden)", MACHINE_NOT_WORKING )
+COMP( 1989, ste_sg, ste, 0, ste, ste, driver_device, 0, "Atari", "STE (Switzerland)", MACHINE_NOT_WORKING )
+//COMP( 1990, stbook, ste, 0, stbook, stbook, driver_device, 0, "Atari", "STBook", MACHINE_NOT_WORKING )
+COMP( 1990, tt030, 0, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (USA)", MACHINE_NOT_WORKING )
+COMP( 1990, tt030_uk, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (UK)", MACHINE_NOT_WORKING )
+COMP( 1990, tt030_de, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (Germany)", MACHINE_NOT_WORKING )
+COMP( 1990, tt030_fr, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (France)", MACHINE_NOT_WORKING )
+COMP( 1990, tt030_pl, tt030, 0, tt030, tt030, driver_device, 0, "Atari", "TT030 (Poland)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (USA)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_uk, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (UK)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_de, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Germany)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_es, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Spain)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_fr, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (France)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_it, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Italy)", MACHINE_NOT_WORKING )
+COMP( 1991, megaste_se, ste, 0, megaste, st, driver_device, 0, "Atari", "MEGA STE (Sweden)", MACHINE_NOT_WORKING )
+COMP( 1992, falcon30, 0, 0, falcon, falcon, driver_device, 0, "Atari", "Falcon030", MACHINE_NOT_WORKING )
+COMP( 1992, falcon40, falcon30, 0, falcon40, falcon, driver_device, 0, "Atari", "Falcon040 (prototype)",MACHINE_NOT_WORKING )
+//COMP( 1989, stacy, st, 0, stacy, stacy, driver_device, 0, "Atari", "Stacy", MACHINE_NOT_WORKING )
+//COMP( 1991, stpad, ste, 0, stpad, stpad, driver_device, 0, "Atari", "STPad (prototype)", MACHINE_NOT_WORKING )
+//COMP( 1992, fx1, 0, 0, falcon, falcon, driver_device, 0, "Atari", "FX-1 (prototype)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/atarisy1.c b/src/mame/drivers/atarisy1.c
index 395c2530ff9..0d674b89268 100644
--- a/src/mame/drivers/atarisy1.c
+++ b/src/mame/drivers/atarisy1.c
@@ -814,7 +814,7 @@ MACHINE_CONFIG_END
#define MOTHERBOARD_ALPHA \
ROM_LOAD_BIOS(0, "136032.104.f5", 0x00000, 0x02000, CRC(7a29dc07) SHA1(72ba464da01bd6d3a91b8d9997d5ac14b6f47aad) ) \
ROM_LOAD_BIOS(1, "136032.104.f5", 0x00000, 0x02000, CRC(7a29dc07) SHA1(72ba464da01bd6d3a91b8d9997d5ac14b6f47aad) ) \
- ROM_LOAD_BIOS(2, "136032.107.b2", 0x00000, 0x02000, CRC(315e4bea) SHA1(a00ea23fbdbf075f8f3f184275be83387e8ac82b) )
+ ROM_LOAD_BIOS(2, "136032.107.b2", 0x00000, 0x02000, CRC(315e4bea) SHA1(a00ea23fbdbf075f8f3f184275be83387e8ac82b) ) /* is this bad? it just seems to be missing upper nibbles and hence some of the planes? */
#define MOTHERBOARD_PROMS \
ROM_LOAD_BIOS(0, "136032.101.e3", 0x00000, 0x00100, CRC(7e84972a) SHA1(84d422b53547271e3a07342704a05ef481db3f99) ) \
@@ -1752,6 +1752,86 @@ ROM_START( roadblstg )
MOTHERBOARD_PROMS
ROM_END
+/*
+Road Blasters (German upright Rev xx)(Atari 1987)
+Dumped from the original Atari
+(System 1 motherboard Rev. C)
+(System 1 daughterboard). "Road Blasters Cartridge 3 PCB Assy: A043972-01 Rev.A"
+*/
+
+// different IC positions and different GFX rom configuration.
+ROM_START( roadblstgu )
+ ROM_REGION( 0x88000, "maincpu", 0 ) /* 8.5*64k for 68000 code & slapstic ROM */
+ // expects bios roms 114/115, does not work properly with others (corrupt insert coin text)
+ ROM_LOAD16_BYTE( "136032-114.j7", 0x00000, 0x04000, CRC(195c54ad) SHA1(d7cda3cd3db4c6f77074ca05e96ae11b62e048b7) )
+ ROM_LOAD16_BYTE( "136032-115.j8", 0x00001, 0x04000, CRC(7275b4dc) SHA1(0896ab37ea832a1335046353612c1b4c86d8d040) )
+
+ ROM_LOAD16_BYTE( "136048-1257.c11", 0x010000, 0x008000, CRC(604a5cc0) SHA1(a057a2e47ac7b7c727e9c1bfce28ba955ce75442) )
+ ROM_LOAD16_BYTE( "136048-1258.a11", 0x010001, 0x008000, CRC(3d10929d) SHA1(aa4d568e5d5b62fb8ea11094bad78bb8f713404e) )
+ ROM_LOAD16_BYTE( "136048-1259.c13", 0x020000, 0x008000, CRC(b9c807ac) SHA1(ca955790c98037045aa49425392581f21d33caa9) )
+ ROM_LOAD16_BYTE( "136048-1260.a13", 0x020001, 0x008000, CRC(eaeb1196) SHA1(82bf14244b342c97adde893f19a050baab30ab1e) )
+
+ ROM_LOAD16_BYTE( "136048-1163.c12", 0x050000, 0x008000, CRC(054273b2) SHA1(4c820c00d3b67825c361edc9615c89c2a9a1c6d3) )//
+ ROM_LOAD16_BYTE( "136048-1164.a12", 0x050001, 0x008000, CRC(49181bec) SHA1(79e042e4f079a9806ef12c5c8dfdc2e6e4f90011) )//
+ ROM_LOAD16_BYTE( "136048-1165.c14", 0x060000, 0x008000, CRC(f63dc29a) SHA1(e54637b9d0b271aa9b58e89a442ac03ec812e1eb) )//
+ ROM_LOAD16_BYTE( "136048-1166.a14", 0x060001, 0x008000, CRC(b1fc5955) SHA1(b860213a9b5ae7547c258812045e71795129598f) )//
+ ROM_LOAD16_BYTE( "136048-1167.c16", 0x070000, 0x008000, CRC(c6d30d6f) SHA1(acb552976b2dcfa585097ea246ca88034549c8ab) )//
+ ROM_LOAD16_BYTE( "136048-1168.a16", 0x070001, 0x008000, CRC(16951020) SHA1(5e5a6ad4ae87723060232c7ecb837f5fc2a9be68) )//
+ ROM_LOAD16_BYTE( "136048-2147.c17", 0x080000, 0x004000, CRC(5c1adf67) SHA1(53838a2f5059797991aa337a7bec32f7e694610a) )//
+ ROM_LOAD16_BYTE( "136048-2148.a17", 0x080001, 0x004000, CRC(d9ac8966) SHA1(7d056c1eb8184b4261c5713b0d5799b2fd8bde2a) )//
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for 6502 code */
+ ROM_LOAD( "136048-1149.e14", 0x4000, 0x4000, CRC(2e54f95e) SHA1(5056ddec3c88384ada1d2ee9b1532b9ba9f34e08) )
+ ROM_LOAD( "136048-1169.e15", 0x8000, 0x4000, CRC(ee318052) SHA1(f66ff39499697b7439dc62567e727fec769c1505) )//
+ ROM_LOAD( "136048-1170.e17", 0xc000, 0x4000, CRC(75dfec33) SHA1(3092348b98419bb23181d21406733d5d21cd3d82) )//
+
+ ROM_REGION( 0x2000, "alpha", 0 )
+ ROM_LOAD( "136032.107.b2", 0x00000, 0x02000, CRC(7a29dc07) SHA1(72ba464da01bd6d3a91b8d9997d5ac14b6f47aad) )
+
+ ROM_REGION( 0x380000, "tiles", ROMREGION_INVERT | ROMREGION_ERASEFF )
+ ROM_LOAD( "136048-1101.b4", 0x000000, 0x008000, CRC(fe342d27) SHA1(72deac16ab9b6b811f49d70d700d6bc3a904f9d5) ) /* bank 1, plane 0 *///
+ ROM_LOAD( "136048-1102.b9", 0x010000, 0x008000, CRC(17c7e780) SHA1(675a2fe5ac55c97d54153eacabf863a525e4b71f) ) /* bank 1, plane 1 *///
+ ROM_LOAD( "136048-1103.f4", 0x020000, 0x008000, CRC(39688e01) SHA1(1b273e26b48a2f69b0895c29c9b3e762c686661d) ) /* bank 1, plane 2 *///
+ ROM_LOAD( "136048-1104.f9", 0x030000, 0x008000, CRC(c8f9bd8e) SHA1(452194efafd5f9562434dafcb14b72f400fc4a49) ) /* bank 1, plane 3 *///
+ ROM_LOAD( "136048-1105.h4", 0x040000, 0x008000, CRC(c69e439e) SHA1(c933637820c04bdbc56990423adfb9067e09fad7) ) /* bank 1, plane 4 *///
+ ROM_LOAD( "136048-1106.h9", 0x050000, 0x008000, CRC(4ee55796) SHA1(045635cd4f80a5f2c378cb4c55996e09c21b5859) ) /* bank 1, plane 5 *///
+
+ ROM_LOAD( "136048-1119.b3", 0x080000, 0x008000, CRC(2533be39) SHA1(4dc5c85fe5388ed62806742c8bb27957b9ffb321) ) /* bank 2/3, plane 0 */
+ ROM_LOAD( "136048-1120.b8", 0x090000, 0x008000, CRC(3de4f4db) SHA1(a3c19ef52f31b924b7eaa7bd864fe942d2e581f9) ) /* bank 2/3, plane 1 */
+ ROM_LOAD( "136048-1121.f3", 0x0a0000, 0x008000, CRC(4a1b6b9f) SHA1(c0c6de17573b314954c02fdd57cf57c9cd59c783) ) /* bank 2/3, plane 2 */
+ ROM_LOAD( "136048-1122.f8", 0x0b0000, 0x008000, CRC(680bdb7d) SHA1(6a66560a8ef983055b250d59022e3d9a2ea25861) ) /* bank 2/3, plane 3 */
+
+ ROM_LOAD( "136048-1123.b2", 0x100000, 0x008000, CRC(a405d8bf) SHA1(c5bb7c54caf04e8f6a6534de7fd1127d9777dded) ) /* bank 2/3, plane 0 */
+ ROM_LOAD( "136048-1124.b7", 0x110000, 0x008000, CRC(b9070c2e) SHA1(4b912cc35d0f4d445a6e619fc52e8c131bbb7899) ) /* bank 2/3, plane 1 */
+ ROM_LOAD( "136048-1125.f2", 0x120000, 0x008000, CRC(5dfac572) SHA1(46eee972944766b7ba3a88937da3b3ac785c5741) ) /* bank 2/3, plane 2 */
+ ROM_LOAD( "136048-1126.f7", 0x130000, 0x008000, CRC(a0416c6d) SHA1(bdaa2d828035206f0662c0c920b654cf4d314ca6) ) /* bank 2/3, plane 3 */
+
+ ROM_LOAD( "136048-1127.b1", 0x180000, 0x008000, CRC(0138b391) SHA1(3d22c93c5ffb1a998f85a27eb9f58061f2ffe19d) ) /* bank 4/5, plane 0 */
+ ROM_LOAD( "136048-1128.b6", 0x190000, 0x008000, CRC(5136fb4b) SHA1(0b2a8d96e573907e11d4fe7288069e9735c1d072) ) /* bank 4/5, plane 1 */
+ ROM_LOAD( "136048-1129.f1", 0x1a0000, 0x008000, CRC(7d75bb12) SHA1(bbaf4c991bb21b32dc1c6fdc23673e27c33f4edf) ) /* bank 4/5, plane 2 */
+ ROM_LOAD( "136048-1130.f6", 0x1b0000, 0x008000, CRC(81bb54d9) SHA1(134a6280183595b5b5989d8cc593b8fbd6a74577) ) /* bank 4/5, plane 3 */
+
+ ROM_LOAD( "136048-1131.d4", 0x200000, 0x008000, CRC(72233889) SHA1(e5596c9f450a00947bd0ab4b7b7b2623d4ce8d89) ) /* bank 4/5, plane 0 */
+ ROM_LOAD( "136048-1132.d9", 0x210000, 0x008000, CRC(6a82b8a7) SHA1(8b9f65617601cb39d37110074e99ab27fd5fa274) ) /* bank 4/5, plane 1 */
+ ROM_LOAD( "136048-1133.d2", 0x220000, 0x008000, CRC(845dd347) SHA1(47ab870a808898c819d48454099b44ccf507c341) ) /* bank 4/5, plane 2 */
+ ROM_LOAD( "136048-1134.d7", 0x230000, 0x008000, CRC(54e4c9e6) SHA1(cfd989b6237c95bac1717025a895eb4b1df28365) ) /* bank 4/5, plane 3 */
+
+ ROM_LOAD( "136048-1115.d3", 0x300000, 0x008000, CRC(a47bc79d) SHA1(367f21c355c0af55629d2c5746cd5cb06272abc0) ) /* bank 7/6, plane 0 *///
+ ROM_CONTINUE( 0x280000, 0x008000 )
+ ROM_LOAD( "136048-1116.d8", 0x310000, 0x008000, CRC(b8a5c215) SHA1(2594f2a865fb73c8a7829e50ff19a6494a35c088) ) /* bank 7/6, plane 0 *///
+ ROM_CONTINUE( 0x290000, 0x008000 )
+ ROM_LOAD( "136048-1117.d1", 0x320000, 0x008000, CRC(2d1c1f64) SHA1(66141b9a7ae8d6dd3f1315d60cf0e99cd802d2e5) ) /* bank 7/6, plane 0 *///
+ ROM_CONTINUE( 0x2a0000, 0x008000 )
+ ROM_LOAD( "136048-1118.d6", 0x330000, 0x008000, CRC(be879b8e) SHA1(dc1d1f7bdb511e922b650fac88307a08ab37ac4c) ) /* bank 7/6, plane 0 *///
+ ROM_CONTINUE( 0x2b0000, 0x008000 )
+
+ ROM_REGION( 0x400, "proms", 0 ) /* graphics mapping PROMs */
+ ROM_LOAD( "136048-1174.a7", 0x000000, 0x000200, CRC(db4a4d53) SHA1(c5468f3585ec9bc23c9ee990b3ae3738b0309823) )//
+ ROM_LOAD( "136048-1173.a5", 0x000200, 0x000200, CRC(c80574af) SHA1(9a3dc83f70e79915ce0db3e6e69b5dcfee3acb6f) )//
+
+ ROM_REGION( 0x201, "motherbrd_proms", 0) /* Motherboard PROM's (Only used by TTL version.) */
+ MOTHERBOARD_PROMS
+ROM_END
ROM_START( roadblst3 )
ROM_REGION( 0x88000, "maincpu", 0 ) /* 8.5*64k for 68000 code & slapstic ROM */
@@ -2160,10 +2240,19 @@ ROM_START( roadblstc )
MOTHERBOARD_PROMS
ROM_END
+/*
+Road Blasters (German Cockpit Rev xx)(Atari 1987)
+Dumped from an original Atari (Dedicated System 1) cocktail board. "Road Blasters Cart. 5 PCB Assy: A044203-01 Rev.A"
+
+Note: The text on the board says "cocktail" but I suppose this is the cockpit version.
+ 136048-1150.d7 is a sound rom.
+*/
ROM_START( roadblstcg )
ROM_REGION( 0x88000, "maincpu", 0 ) /* 8.5*64k for 68000 code & slapstic ROM */
- MOTHERBOARD_BIOS
+ ROM_LOAD16_BYTE( "136032-117-l9", 0x000001, 0x004000, CRC(9af9fe29) SHA1(1d5077662e4111ece9f8a5124394dad8b1abdc13) ) // alt bios roms? (to put in bios structure, or are they specific to this set?)
+ ROM_LOAD16_BYTE( "136032-116.m9", 0x000000, 0x004000, CRC(195c54ad) SHA1(d7cda3cd3db4c6f77074ca05e96ae11b62e048b7) ) //
+
ROM_LOAD16_BYTE( "136048-1235.7p", 0x010000, 0x008000, CRC(58b2998f) SHA1(7e9f4ca2b15cf60c61e0615f214f9fcc518cb194) )
ROM_LOAD16_BYTE( "136048-1236.8p", 0x010001, 0x008000, CRC(02e23a40) SHA1(6525351669e95dab869c7adc7d992d12d9313aee) )
ROM_LOAD16_BYTE( "136048-1237.7r", 0x020000, 0x008000, CRC(5e0a7c5d) SHA1(fb3688fbadc05f96980c67f5446ccb250d20b1a3) )
@@ -2177,13 +2266,13 @@ ROM_START( roadblstcg )
ROM_LOAD16_BYTE( "136048-2147.7k", 0x080000, 0x004000, CRC(5c1adf67) SHA1(53838a2f5059797991aa337a7bec32f7e694610a) )
ROM_LOAD16_BYTE( "136048-2148.8k", 0x080001, 0x004000, CRC(d9ac8966) SHA1(7d056c1eb8184b4261c5713b0d5799b2fd8bde2a) )
+
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for 6502 code */
- ROM_LOAD( "136048-1149.14e", 0x4000, 0x4000, CRC(2e54f95e) SHA1(5056ddec3c88384ada1d2ee9b1532b9ba9f34e08) )
- ROM_LOAD( "136048-1169.1516e", 0x8000, 0x4000, CRC(ee318052) SHA1(f66ff39499697b7439dc62567e727fec769c1505) )
- ROM_LOAD( "136048-1170.17e", 0xc000, 0x4000, CRC(75dfec33) SHA1(3092348b98419bb23181d21406733d5d21cd3d82) )
+ ROM_LOAD( "136048-1149.c8", 0x4000, 0x4000, CRC(2e54f95e) SHA1(5056ddec3c88384ada1d2ee9b1532b9ba9f34e08) ) //
+ ROM_LOAD( "136048-1150.d7", 0x8000, 0x8000, CRC(e89e7fc8) SHA1(d944bc27de2f2f675680c62d999cacf84a08fd4b) )
- ROM_REGION( 0x2000, "alpha", 0 )
- MOTHERBOARD_ALPHA
+ ROM_REGION( 0x4000, "alpha", 0 )
+ ROM_LOAD( "136032-120.p1", 0x00000, 0x04000, CRC(90a1950d) SHA1(fba32c255850312175d1e3c03d677ffb57e09e07) ) //
ROM_REGION( 0x380000, "tiles", ROMREGION_INVERT | ROMREGION_ERASEFF )
ROM_LOAD( "136048-1101.2s", 0x000000, 0x008000, CRC(fe342d27) SHA1(72deac16ab9b6b811f49d70d700d6bc3a904f9d5) ) /* bank 1, plane 0 */
@@ -2221,6 +2310,13 @@ ROM_START( roadblstcg )
ROM_CONTINUE( 0x2b0000, 0x008000 )
ROM_REGION( 0x400, "proms", 0 ) /* graphics mapping PROMs */
+ // these 2 proms were present on this board, an earlier revision to the other games, however they don't give correct
+ // gfx, so we load the regular ones over, might need different GFX rom loading? investigate further.
+ // (the failure to use these roms properly might be the reason we have the IMPERFECT_GRAPHICS flag on this
+ // set in the first place)
+ ROM_LOAD( "135048-1172.d1", 0x000000, 0x000200, CRC(b79d1903) SHA1(8319fab8b39f708457eb1efe47789b26adc61249) )
+ ROM_LOAD( "135048-1171.d2", 0x000200, 0x000200, CRC(29248a95) SHA1(c9467d495676d323121c92c6757e73b2ed3fb3d7) )
+
ROM_LOAD( "136048-1174.12d", 0x000000, 0x000200, CRC(db4a4d53) SHA1(c5468f3585ec9bc23c9ee990b3ae3738b0309823) )
ROM_LOAD( "136048-1173.2d", 0x000200, 0x000200, CRC(c80574af) SHA1(9a3dc83f70e79915ce0db3e6e69b5dcfee3acb6f) )
@@ -2298,6 +2394,9 @@ ROM_END
+
+
+
/*************************************
*
* Driver initialization
@@ -2365,7 +2464,7 @@ DRIVER_INIT_MEMBER(atarisy1_state,roadb110)
*
*************************************/
-GAME( 1984, atarisy1, 0, atarisy1, peterpak, atarisy1_state, peterpak, ROT0, "Atari Games", "Atari System 1 BIOS", GAME_IS_BIOS_ROOT )
+GAME( 1984, atarisy1, 0, atarisy1, peterpak, atarisy1_state, peterpak, ROT0, "Atari Games", "Atari System 1 BIOS", MACHINE_IS_BIOS_ROOT )
GAME( 1984, marble, atarisy1, atarisy1, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 1)", 0 )
GAME( 1984, marble2, marble, atarisy1, marble, atarisy1_state, marble, ROT0, "Atari Games", "Marble Madness (set 2)", 0 )
@@ -2380,7 +2479,7 @@ GAME( 1985, indytemp2,indytemp, atarisy1, indytemp, atarisy1_state, indytemp, RO
GAME( 1985, indytemp3,indytemp, atarisy1, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 3)", 0 )
GAME( 1985, indytemp4,indytemp, atarisy1, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (set 4)", 0 )
GAME( 1985, indytempd,indytemp, atarisy1, indytemp, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (German)", 0 )
-GAME( 1985, indytempc,indytemp, atarisy1, indytemc, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (Cocktail)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1985, indytempc,indytemp, atarisy1, indytemc, atarisy1_state, indytemp, ROT0, "Atari Games", "Indiana Jones and the Temple of Doom (Cocktail)", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1985, roadrunn, atarisy1, atarisy1, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 2)", 0 )
GAME( 1985, roadrunn2,roadrunn, atarisy1, roadrunn, atarisy1_state, roadrunn, ROT0, "Atari Games", "Road Runner (rev 1+)", 0 )
@@ -2394,5 +2493,6 @@ GAME( 1987, roadblst2, roadblst, atarisy1, roadblst, atarisy1_state, roadb110,
GAME( 1987, roadblstg1, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (upright, German, rev 1)", 0 )
GAME( 1987, roadblst1, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (upright, rev 1)", 0 )
GAME( 1987, roadblstc, roadblst, atarisy1, roadblst, atarisy1_state, roadb110, ROT0, "Atari Games", "Road Blasters (cockpit, rev 2)", 0 )
-GAME( 1987, roadblstcg, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (cockpit, German, rev 1)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1987, roadblstc1, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (cockpit, rev 1)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1987, roadblstcg, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (cockpit, German, rev 1)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1987, roadblstc1, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (cockpit, rev 1)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1987, roadblstgu, roadblst, atarisy1, roadblst, atarisy1_state, roadb109, ROT0, "Atari Games", "Road Blasters (upright, German, rev ?)", 0 )
diff --git a/src/mame/drivers/atarisy2.c b/src/mame/drivers/atarisy2.c
index f989596d660..1486979e4f9 100644
--- a/src/mame/drivers/atarisy2.c
+++ b/src/mame/drivers/atarisy2.c
@@ -277,27 +277,27 @@ WRITE16_MEMBER(atarisy2_state::bankselect_w)
{
/*static const int bankoffset[64] =
{
- 12, 8, 4, 0,
- 13, 9, 5, 1,
- 14, 10, 6, 2,
- 15, 11, 7, 3,
- 28, 24, 20, 16,
- 29, 25, 21, 17,
- 30, 26, 22, 18,
- 31, 27, 23, 19,
- 44, 40, 36, 32,
- 45, 41, 37, 33,
- 46, 42, 38, 34,
- 47, 43, 39, 35,
- 60, 56, 52, 48,
- 61, 57, 53, 49,
- 62, 58, 54, 50,
- 63, 59, 55, 51
+ 12, 8, 4, 0,
+ 13, 9, 5, 1,
+ 14, 10, 6, 2,
+ 15, 11, 7, 3,
+ 28, 24, 20, 16,
+ 29, 25, 21, 17,
+ 30, 26, 22, 18,
+ 31, 27, 23, 19,
+ 44, 40, 36, 32,
+ 45, 41, 37, 33,
+ 46, 42, 38, 34,
+ 47, 43, 39, 35,
+ 60, 56, 52, 48,
+ 61, 57, 53, 49,
+ 62, 58, 54, 50,
+ 63, 59, 55, 51
};*/
int banknumber = ((data >> 10) & 0x3f) ^ 0x03;
banknumber = BITSWAP16(banknumber, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 1, 0, 3, 2);
-
+
if (offset)
m_rombank2->set_entry(banknumber);
else
@@ -751,7 +751,7 @@ WRITE8_MEMBER(atarisy2_state::coincount_w)
/* full memory map derived from schematics */
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, atarisy2_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM
- AM_RANGE(0x1000, 0x11ff) AM_MIRROR(0x0200) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0x1000, 0x11ff) AM_MIRROR(0x0200) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1400, 0x1403) AM_MIRROR(0x007c) AM_READWRITE(adc_r, bankselect_w)
AM_RANGE(0x1480, 0x1487) AM_MIRROR(0x0078) AM_WRITE(adc_strobe_w)
AM_RANGE(0x1580, 0x1581) AM_MIRROR(0x001e) AM_WRITE(int0_ack_w)
@@ -1203,6 +1203,7 @@ static MACHINE_CONFIG_START( atarisy2, atarisy2_state )
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", "palette", atarisy2)
MCFG_PALETTE_ADD("palette", 256)
+ MCFG_PALETTE_FORMAT_CLASS(2, atarisy2_state, RRRRGGGGBBBBIIII)
MCFG_TILEMAP_ADD_STANDARD("playfield", "gfxdecode", 2, atarisy2_state, get_playfield_tile_info, 8,8, SCAN_ROWS, 128,64)
MCFG_TILEMAP_ADD_STANDARD_TRANSPEN("alpha", "gfxdecode", 2, atarisy2_state, get_alpha_tile_info, 8,8, SCAN_ROWS, 64,48, 0)
@@ -3208,40 +3209,40 @@ DRIVER_INIT_MEMBER(atarisy2_state,apb)
*
*************************************/
-GAME( 1984, paperboy, 0, atarisy2, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 3)", GAME_SUPPORTS_SAVE )
-GAME( 1984, paperboyr2,paperboy, atarisy2, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1984, paperboyr1,paperboy, atarisy2, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 1)", GAME_SUPPORTS_SAVE )
-
-GAME( 1986, 720, 0, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 4)", GAME_SUPPORTS_SAVE )
-GAME( 1986, 720r3, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 3)", GAME_SUPPORTS_SAVE )
-GAME( 1986, 720r2, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, 720r1, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, 720g, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, 720gr1, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 1)", GAME_SUPPORTS_SAVE )
-
-GAME( 1986, ssprint, 0, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 4)", GAME_SUPPORTS_SAVE )
-GAME( 1986, ssprint3, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 3)", GAME_SUPPORTS_SAVE )
-GAME( 1986, ssprint1, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, ssprintg, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, ssprintg1,ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, ssprintf, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (French)", GAME_SUPPORTS_SAVE )
-GAME( 1986, ssprints, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (Spanish)", GAME_SUPPORTS_SAVE )
-
-GAME( 1986, csprint, 0, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 3)", GAME_SUPPORTS_SAVE )
-GAME( 1986, csprint2, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, csprint1, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, csprintg, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, csprintg1,csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, csprintf, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (French)", GAME_SUPPORTS_SAVE )
-GAME( 1986, csprints, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, csprints1,csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 1)", GAME_SUPPORTS_SAVE )
-
-GAME( 1987, apb, 0, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 7)", GAME_SUPPORTS_SAVE )
-GAME( 1987, apb6, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 6)", GAME_SUPPORTS_SAVE )
-GAME( 1987, apb5, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 5)", GAME_SUPPORTS_SAVE )
-GAME( 1987, apb4, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 4)", GAME_SUPPORTS_SAVE )
-GAME( 1987, apb3, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 3)", GAME_SUPPORTS_SAVE )
-GAME( 1987, apb2, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, apb1, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, apbg, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (German)", GAME_SUPPORTS_SAVE )
-GAME( 1987, apbf, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (French)", GAME_SUPPORTS_SAVE )
+GAME( 1984, paperboy, 0, atarisy2, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, paperboyr2,paperboy, atarisy2, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, paperboyr1,paperboy, atarisy2, paperboy, atarisy2_state, paperboy, ROT0, "Atari Games", "Paperboy (rev 1)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, 720, 0, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, 720r3, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, 720r2, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, 720r1, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, 720g, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, 720gr1, 720, atarisy2, 720, atarisy2_state, 720, ROT0, "Atari Games", "720 Degrees (German, rev 1)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, ssprint, 0, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprint3, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprint1, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprintg, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprintg1,ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (German, rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprintf, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ssprints, ssprint, sprint, ssprint, atarisy2_state, ssprint, ROT0, "Atari Games", "Super Sprint (Spanish)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, csprint, 0, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprint2, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprint1, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprintg, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprintg1,csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (German, rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprintf, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprints, csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, csprints1,csprint, sprint, csprint, atarisy2_state, csprint, ROT0, "Atari Games", "Championship Sprint (Spanish, rev 1)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1987, apb, 0, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 7)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb6, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb5, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb4, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb3, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb2, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apb1, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apbg, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (German)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, apbf, apb, atarisy2, apb, atarisy2_state, apb, ROT270, "Atari Games", "APB - All Points Bulletin (French)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/atarisy4.c b/src/mame/drivers/atarisy4.c
index 7a69f5b80ce..6c38292c851 100644
--- a/src/mame/drivers/atarisy4.c
+++ b/src/mame/drivers/atarisy4.c
@@ -1047,5 +1047,5 @@ MACHINE_RESET_MEMBER(atarisy4_state,airrace)
*
*************************************/
-GAME( 1984, laststar, 0, atarisy4, atarisy4, atarisy4_state, laststar, ROT0, "Atari Games", "The Last Starfighter (prototype)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND_HW )
-GAME( 1985, airrace, 0, airrace, atarisy4, atarisy4_state, airrace, ROT0, "Atari Games", "Air Race (prototype)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND_HW )
+GAME( 1984, laststar, 0, atarisy4, atarisy4, atarisy4_state, laststar, ROT0, "Atari Games", "The Last Starfighter (prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND_HW )
+GAME( 1985, airrace, 0, airrace, atarisy4, atarisy4_state, airrace, ROT0, "Atari Games", "Air Race (prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/atarittl.c b/src/mame/drivers/atarittl.c
index 6ae411bcf5f..b58b2b44a22 100644
--- a/src/mame/drivers/atarittl.c
+++ b/src/mame/drivers/atarittl.c
@@ -23,7 +23,7 @@
TM-015 Cocktail Pong/Coup Franc (1974) ??????? NO
TM-048 Crash 'N Score/Stock Car (1975) A004256 YES 003186(x2), 003187(x2), 004248, 004247
TM-030 Crossfire (1975) ??????? NO?
- TM-003,005,011,020 Gran Trak 10/Trak 10/Formula K/Race Circuit (1974) A000872,A000872 K3RT YES 74186 Racetrack Prom (K5)
+ TM-003,005,011,020 Gran Trak 10/Trak 10/Formula K (1974) A000872,A000872 K3RT YES 74186 Racetrack Prom (K5)
TM-004,021 Gran Trak 20/Trak 20/Twin Racer (1974) A001791(RT20),A001793(A20-K4DRTA) YES 74186 Racetrack prom (K5)
TM-006,035 Goal 4/World Cup/Coupe De Monde (1975) A000823 NO
TM-016 Gotcha/Gotcha Color? (1973) A000816 NO
@@ -31,13 +31,13 @@
TM-055 Indy 4 (1976) A003000,A006268,A006270 YES 003186, 003187, 005502-01, 05503-01
TM-026 Indy 800 (1975) A003000,A003170,A003182 YES 003186-003189 (4)
A003184,A003191,A003198,A003199
- TM-027 Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (1975) A004254,A004255 YES 004250-004252, 004253-01 to 03 (3)
+ TM-027,052 Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (1975) A004254,A004255 YES 004250-004252, 004253-01 to 03 (3)
TM-077 LeMans (1976) A005844,A005845 YES 005837-01, 005838-01, 005839-01
TM-040 Outlaw (1976) A003213 YES 003323 - ROM (8205 @ J4)
TM-007 Pin Pong (1974) A001660 NO
TM-013 Pong/Super Pong (1972) A001433,A000423 NO
TM-014 Pong Doubles/Coupe Davis (1974) A000785 NO
- TM-018 Pursuit (1975) K8P-B 90128 NO
+ TM-019 Pursuit (1975) K8P-B 90128 NO
TM-012,022,034 Quadrapong/Elimination (1974) A000845 NO
TM-009 Qwak!/Quack (1974) A000937,A000953 YES 72074/37-2530N (K9)
TM-001,032 Rebound/Volleyball (1974) A000517,A000846 NO
@@ -52,7 +52,7 @@
- Not Known to be released or produced, but at least announced.
TM-0?? Arcade Driver/Driver First Person (Not Produced/Released) (197?)
- TM-0?? Dodgeball/Dodgem (Not Produced/Released) (1975)
+ TM-018 Dodgeball/Dodgem (Not Produced/Released) (1975)
TM-024 Qwakers (Not Produced/Released) (1974?)
TM-017 World Cup Football (Not Produced/Released) (1974)
@@ -416,35 +416,35 @@ ROM_END
-GAME(1975, antiairc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Anti-Aircraft [TTL]", GAME_IS_SKELETON)
-GAME(1975, crashnsc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Crash 'n Score/Stock Car [TTL]", GAME_IS_SKELETON)
-GAME(1976, indy4, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Indy 4 [TTL]", GAME_IS_SKELETON)
-GAME(1975, indy800, 0, atarikee, 0, driver_device, 0, ROT90, "Atari/Kee", "Indy 800 [TTL]", GAME_IS_SKELETON)
-GAME(1975, jetfight, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 1) [TTL]", GAME_IS_SKELETON)
-GAME(1975, jetfighta, jetfight, atarikee, 0, driver_device, 0, ROT0, "Atari", "Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 2) [TTL]", GAME_IS_SKELETON)
-GAME(1976, outlaw, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Outlaw [TTL]", GAME_IS_SKELETON)
-GAME(1975, sharkjaw, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Horror Games", "Shark JAWS [TTL]",GAME_IS_SKELETON)
-GAME(1975, steeplec, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Steeplechase [TTL]", GAME_IS_SKELETON)
-GAME(1976, stuntcyc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Stunt Cycle [TTL]", GAME_IS_SKELETON)
-GAME(1974, tank, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Tank/Tank Cocktail/Tank II [TTL]", GAME_IS_SKELETON)
+GAME(1975, antiairc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Anti-Aircraft [TTL]", MACHINE_IS_SKELETON)
+GAME(1975, crashnsc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Crash 'n Score/Stock Car [TTL]", MACHINE_IS_SKELETON)
+GAME(1976, indy4, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Indy 4 [TTL]", MACHINE_IS_SKELETON)
+GAME(1975, indy800, 0, atarikee, 0, driver_device, 0, ROT90, "Atari/Kee", "Indy 800 [TTL]", MACHINE_IS_SKELETON)
+GAME(1975, jetfight, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 1) [TTL]", MACHINE_IS_SKELETON)
+GAME(1975, jetfighta, jetfight, atarikee, 0, driver_device, 0, ROT0, "Atari", "Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 2) [TTL]", MACHINE_IS_SKELETON)
+GAME(1976, outlaw, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Outlaw [TTL]", MACHINE_IS_SKELETON)
+GAME(1975, sharkjaw, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Horror Games", "Shark JAWS [TTL]",MACHINE_IS_SKELETON)
+GAME(1975, steeplec, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Steeplechase [TTL]", MACHINE_IS_SKELETON)
+GAME(1976, stuntcyc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Stunt Cycle [TTL]", MACHINE_IS_SKELETON)
+GAME(1974, tank, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Tank/Tank Cocktail/Tank II [TTL]", MACHINE_IS_SKELETON)
// MISSING ROM DUMPS
-//GAME(1975, astrotrf, steeplec, atarikee, 0, driver_device, 0, ROT0, "Atari", "Astroturf [TTL]", GAME_IS_SKELETON)
-//GAME(1974, gtrak10, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Gran Trak 10/Trak 10/Formula K/Race Circuit [TTL]", GAME_IS_SKELETON) //?
-//GAME(1974, gtrak20, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Gran Trak 20/Trak 20/Twin Racer [TTL]", GAME_IS_SKELETON) //?
-//GAME(1976, lemans, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "LeMans [TTL]", GAME_IS_SKELETON)
-//GAME(1974, quack, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Qwak!/Quack [TTL]", GAME_IS_SKELETON)
+//GAME(1975, astrotrf, steeplec, atarikee, 0, driver_device, 0, ROT0, "Atari", "Astroturf [TTL]", MACHINE_IS_SKELETON)
+//GAME(1974, gtrak10, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Gran Trak 10/Trak 10/Formula K [TTL]", MACHINE_IS_SKELETON) //?
+//GAME(1974, gtrak20, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Gran Trak 20/Trak 20/Twin Racer [TTL]", MACHINE_IS_SKELETON) //?
+//GAME(1976, lemans, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "LeMans [TTL]", MACHINE_IS_SKELETON)
+//GAME(1974, quack, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Qwak!/Quack [TTL]", MACHINE_IS_SKELETON)
// 100% TTL
-//GAME(1974, coupedem, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Coupe De Monde [TTL]", GAME_IS_SKELETON)
-//GAME(1975, crossfir, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Crossfire [TTL]", GAME_IS_SKELETON)
-//GAME(1975, goal4, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Goal 4/World Cup/Coupe De Monde [TTL]", GAME_IS_SKELETON)
-//GAME(1973, gotchaat, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Gotcha [TTL]", GAME_IS_SKELETON) //?
-//GAME(1973, gotchaatc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Gotcha Color [TTL]", GAME_IS_SKELETON) //?
-//GAME(1975, highway, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Highway/Hiway [TTL]", GAME_IS_SKELETON)
-//GAME(1974, pinpong, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Pin Pong [TTL]", GAME_IS_SKELETON)
-//GAME(1975, pursuit, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Pursuit [TTL]", GAME_IS_SKELETON)
-//GAME(1973, quadpong, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Quadrapong/Elimination [TTL]", GAME_IS_SKELETON)
-//GAME(1974, rebound, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Rebound/Spike/Volleyball [TTL]", GAME_IS_SKELETON)
-//GAME(1974, spacrace, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Space Race [TTL]", GAME_IS_SKELETON)
-//GAME(1974, touchme, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Touch Me [TTL]", GAME_IS_SKELETON) //?
+//GAME(1974, coupedem, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Coupe De Monde [TTL]", MACHINE_IS_SKELETON)
+//GAME(1975, crossfir, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Crossfire [TTL]", MACHINE_IS_SKELETON)
+//GAME(1975, goal4, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Goal 4/World Cup/Coupe De Monde [TTL]", MACHINE_IS_SKELETON)
+//GAME(1973, gotchaat, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Gotcha [TTL]", MACHINE_IS_SKELETON) //?
+//GAME(1973, gotchaatc, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Gotcha Color [TTL]", MACHINE_IS_SKELETON) //?
+//GAME(1975, highway, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Highway/Hiway [TTL]", MACHINE_IS_SKELETON)
+//GAME(1974, pinpong, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Pin Pong [TTL]", MACHINE_IS_SKELETON)
+//GAME(1975, pursuit, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Pursuit [TTL]", MACHINE_IS_SKELETON)
+//GAME(1973, quadpong, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Quadrapong/Elimination [TTL]", MACHINE_IS_SKELETON)
+//GAME(1974, rebound, 0, atarikee, 0, driver_device, 0, ROT0, "Atari/Kee", "Rebound/Spike/Volleyball [TTL]", MACHINE_IS_SKELETON)
+//GAME(1974, spacrace, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Space Race [TTL]", MACHINE_IS_SKELETON)
+//GAME(1974, touchme, 0, atarikee, 0, driver_device, 0, ROT0, "Atari", "Touch Me [TTL]", MACHINE_IS_SKELETON) //?
diff --git a/src/mame/drivers/atetris.c b/src/mame/drivers/atetris.c
index 08f12e6a93a..76a157c57a7 100644
--- a/src/mame/drivers/atetris.c
+++ b/src/mame/drivers/atetris.c
@@ -557,10 +557,10 @@ DRIVER_INIT_MEMBER(atetris_state,atetris)
*
*************************************/
-GAME( 1988, atetris, 0, atetris, atetris, atetris_state, atetris, ROT0, "Atari Games", "Tetris (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1988, atetrisa, atetris, atetris, atetris, atetris_state, atetris, ROT0, "Atari Games", "Tetris (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1988, atetrisb, atetris, atetris, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1988, atetrisb2,atetris, atetrisb2, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1988, atetrisb3,atetris, atetrisb3, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 3)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1989, atetrisc, atetris, atetris, atetrisc, atetris_state, atetris, ROT270, "Atari Games", "Tetris (cocktail set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, atetrisc2,atetris, atetris, atetrisc, atetris_state, atetris, ROT270, "Atari Games", "Tetris (cocktail set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1988, atetris, 0, atetris, atetris, atetris_state, atetris, ROT0, "Atari Games", "Tetris (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, atetrisa, atetris, atetris, atetris, atetris_state, atetris, ROT0, "Atari Games", "Tetris (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, atetrisb, atetris, atetris, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, atetrisb2,atetris, atetrisb2, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, atetrisb3,atetris, atetrisb3, atetris, atetris_state, atetris, ROT0, "bootleg", "Tetris (bootleg set 3)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1989, atetrisc, atetris, atetris, atetrisc, atetris_state, atetris, ROT270, "Atari Games", "Tetris (cocktail set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, atetrisc2,atetris, atetris, atetrisc, atetris_state, atetris, ROT270, "Atari Games", "Tetris (cocktail set 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/atlantis.c b/src/mame/drivers/atlantis.c
index eb10a109bfb..70312ac53fd 100644
--- a/src/mame/drivers/atlantis.c
+++ b/src/mame/drivers/atlantis.c
@@ -253,6 +253,6 @@ DRIVER_INIT_MEMBER(atlantis_state,mwskins)
*
*************************************/
-GAME( 2000, mwskins, 0, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.06)", GAME_NOT_WORKING | GAME_NO_SOUND )
-GAME( 2000, mwskinsa, mwskins, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.06, alt)", GAME_NOT_WORKING | GAME_NO_SOUND )
-GAME( 2000, mwskinso, mwskins, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.04)", GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( 2000, mwskins, 0, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.06)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2000, mwskinsa, mwskins, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.06, alt)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2000, mwskinso, mwskins, mwskins, mwskins, atlantis_state, mwskins, ROT0, "Midway", "Skins Game (1.04)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/atm.c b/src/mame/drivers/atm.c
index 7f76fea6e8a..300f503d90e 100644
--- a/src/mess/drivers/atm.c
+++ b/src/mame/drivers/atm.c
@@ -242,7 +242,7 @@ ROM_START( atmtb2 )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
-COMP( 1991, atm, spec128, 0, atm, spec_plus, driver_device, 0, "MicroART", "ATM", GAME_NOT_WORKING)
-//COMP( 1991, atmtb1, spec128, 0, atm, spec_plus, driver_device, 0, "MicroART", "ATM-turbo1", GAME_NOT_WORKING)
-COMP( 1993, atmtb2, spec128, 0, atmtb2, spec_plus, driver_device, 0, "MicroART", "ATM-turbo2", GAME_NOT_WORKING)
-//COMP( 1994, turbo2, spec128, 0, atm, spec_plus, driver_device, 0, "MicroART", "TURBO 2+", GAME_NOT_WORKING)
+COMP( 1991, atm, spec128, 0, atm, spec_plus, driver_device, 0, "MicroART", "ATM", MACHINE_NOT_WORKING)
+//COMP( 1991, atmtb1, spec128, 0, atm, spec_plus, driver_device, 0, "MicroART", "ATM-turbo1", MACHINE_NOT_WORKING)
+COMP( 1993, atmtb2, spec128, 0, atmtb2, spec_plus, driver_device, 0, "MicroART", "ATM-turbo2", MACHINE_NOT_WORKING)
+//COMP( 1994, turbo2, spec128, 0, atm, spec_plus, driver_device, 0, "MicroART", "TURBO 2+", MACHINE_NOT_WORKING)
diff --git a/src/mess/drivers/atom.c b/src/mame/drivers/atom.c
index 88d142d15c4..9403c7c62e5 100644
--- a/src/mess/drivers/atom.c
+++ b/src/mame/drivers/atom.c
@@ -247,7 +247,7 @@ READ8_MEMBER( atomeb_state::dos_r )
static ADDRESS_MAP_START( atom_mem, AS_PROGRAM, 8, atom_state )
AM_RANGE(0x0000, 0x09ff) AM_RAM
- AM_RANGE(0x0a00, 0x0a03) AM_MIRROR(0x1f8) AM_DEVREADWRITE(I8271_TAG, i8271_device, read, write)
+ AM_RANGE(0x0a00, 0x0a03) AM_MIRROR(0x1f8) AM_DEVICE(I8271_TAG, i8271_device, map)
AM_RANGE(0x0a04, 0x0a04) AM_MIRROR(0x1f8) AM_DEVREADWRITE(I8271_TAG, i8271_device, data_r, data_w)
AM_RANGE(0x0a05, 0x7fff) AM_RAM
AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("video_ram")
@@ -583,30 +583,11 @@ WRITE_LINE_MEMBER( atom_state::atom_8271_interrupt_callback )
m_previous_i8271_int_state = state;
}
-/*-------------------------------------------------
- LEGACY_FLOPPY_OPTIONS( atom )
--------------------------------------------------*/
-
-static LEGACY_FLOPPY_OPTIONS_START( atom )
- LEGACY_FLOPPY_OPTION(atom, "dsk,40t", "Atom disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
- HEADS([1])
- TRACKS([40])
- SECTORS([10])
- SECTOR_LENGTH([256])
- FIRST_SECTOR_ID([0]))
-LEGACY_FLOPPY_OPTIONS_END
-
-/*-------------------------------------------------
- floppy_interface atom_floppy_interface
--------------------------------------------------*/
-
-static const floppy_interface atom_floppy_interface =
+WRITE_LINE_MEMBER( atom_state::motor_w )
{
- FLOPPY_STANDARD_5_25_SSDD_40,
- LEGACY_FLOPPY_OPTIONS_NAME(atom),
- "floppy_5_25"
-};
-
+ m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(!state);
+ m_fdc->subdevice<floppy_connector>("1")->get_device()->mon_w(!state);
+}
TIMER_DEVICE_CALLBACK_MEMBER(atom_state::cassette_output_tick)
{
@@ -687,6 +668,13 @@ int atom_state::load_cart(device_image_interface &image, generic_slot_device *sl
return IMAGE_INIT_PASS;
}
+static SLOT_INTERFACE_START(atom_floppies)
+ SLOT_INTERFACE("525sssd", FLOPPY_525_SSSD)
+SLOT_INTERFACE_END
+
+FLOPPY_FORMATS_MEMBER(atom_state::floppy_formats)
+ FLOPPY_ATOM_FORMAT
+FLOPPY_FORMATS_END
/*-------------------------------------------------
MACHINE_DRIVER( atom )
@@ -722,10 +710,11 @@ static MACHINE_CONFIG_START( atom, atom_state )
MCFG_I8255_IN_PORTC_CB(READ8(atom_state, ppi_pc_r))
MCFG_I8255_OUT_PORTC_CB(WRITE8(atom_state, ppi_pc_w))
- MCFG_DEVICE_ADD(I8271_TAG, I8271, 0)
+ MCFG_DEVICE_ADD(I8271_TAG, I8271 , 0)
MCFG_I8271_IRQ_CALLBACK(WRITELINE(atom_state, atom_8271_interrupt_callback))
- MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1)
- MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(atom_floppy_interface)
+ MCFG_I8271_HDL_CALLBACK(WRITELINE(atom_state, motor_w))
+ MCFG_FLOPPY_DRIVE_ADD(I8271_TAG ":0", atom_floppies, "525sssd", atom_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD(I8271_TAG ":1", atom_floppies, "525sssd", atom_state::floppy_formats)
MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1))
diff --git a/src/mame/drivers/atronic.c b/src/mame/drivers/atronic.c
index 0e2c6489431..f366fab1187 100644
--- a/src/mame/drivers/atronic.c
+++ b/src/mame/drivers/atronic.c
@@ -814,33 +814,33 @@ ROM_END
-GAME( 1999, atronic, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 1)", GAME_IS_SKELETON)
-GAME( 1999, atronica, atronic, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 2)", GAME_IS_SKELETON)
-
-GAME( 2002, atlantca, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 1)", GAME_IS_SKELETON)
-GAME( 2002, atlantcaa, atlantca, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 2)", GAME_IS_SKELETON)
-GAME( 2002, baboshka, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Baboshka (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, cfblue, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 1)", GAME_IS_SKELETON)
-GAME( 2002, cfbluea, cfblue, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 2)", GAME_IS_SKELETON)
-GAME( 2002, cfgreen, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Crazy Fruits Green (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, chicken, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Chicken (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, aclown, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Clown (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, goldglen, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Golden Glenn (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, iccash, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "I C Cash (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, shpinxii, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Sphinx II (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, bearnec, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Bear Necessities (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, beachpt, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Beach Patrol (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, beetleup, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Beetles Unplugged (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, abigchs, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Big Cheese (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, bigblue, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Big Blue (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, castaway, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 1)", GAME_IS_SKELETON)
-GAME( 2002, castawaya, castaway, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 2)", GAME_IS_SKELETON)
-GAME( 2002, dncsprt, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Dancing Spirit (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, drmmake, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Dream Maker (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, goldcity, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Gold City (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, jumpjkpt, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Jumping Jackpots (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, mushmagi, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Mushroom Magic (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, santam, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Santa Maria (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, splmastr, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Spell Master (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, tajmah, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Tajmahal (Russia) (Atronic)", GAME_IS_SKELETON)
-GAME( 2002, 3wishrd, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Three Wishes Red (Russia) (Atronic)", GAME_IS_SKELETON)
+GAME( 1999, atronic, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 1)", MACHINE_IS_SKELETON)
+GAME( 1999, atronica, atronic, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atronic SetUp/Clear Chips (Russia, set 2)", MACHINE_IS_SKELETON)
+
+GAME( 2002, atlantca, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 1)", MACHINE_IS_SKELETON)
+GAME( 2002, atlantcaa, atlantca, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Atlantica (Russia) (Atronic) (set 2)", MACHINE_IS_SKELETON)
+GAME( 2002, baboshka, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Baboshka (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, cfblue, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 1)", MACHINE_IS_SKELETON)
+GAME( 2002, cfbluea, cfblue, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Crazy Fruits Blue (Russia) (Atronic) (set 2)", MACHINE_IS_SKELETON)
+GAME( 2002, cfgreen, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Crazy Fruits Green (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, chicken, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Chicken (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, aclown, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Clown (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, goldglen, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Golden Glenn (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, iccash, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "I C Cash (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, shpinxii, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Sphinx II (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, bearnec, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Bear Necessities (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, beachpt, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Beach Patrol (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, beetleup, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Beetles Unplugged (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, abigchs, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Big Cheese (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, bigblue, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Big Blue (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, castaway, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 1)", MACHINE_IS_SKELETON)
+GAME( 2002, castawaya, castaway, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Castaway (Russia) (Atronic) (set 2)", MACHINE_IS_SKELETON)
+GAME( 2002, dncsprt, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Dancing Spirit (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, drmmake, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Dream Maker (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, goldcity, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Gold City (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, jumpjkpt, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Jumping Jackpots (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, mushmagi, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Mushroom Magic (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, santam, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Santa Maria (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, splmastr, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Spell Master (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, tajmah, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Tajmahal (Russia) (Atronic)", MACHINE_IS_SKELETON)
+GAME( 2002, 3wishrd, 0, atronic, atronic, driver_device, 0, ROT0, "Atronic", "Three Wishes Red (Russia) (Atronic)", MACHINE_IS_SKELETON)
diff --git a/src/mess/drivers/attache.c b/src/mame/drivers/attache.c
index 6d587ac48e5..223a60d82f1 100644
--- a/src/mess/drivers/attache.c
+++ b/src/mame/drivers/attache.c
@@ -988,27 +988,10 @@ ROM_START( attache )
ROM_FILL(0x0000,0x10000,0x00)
ROM_REGION(0x1000, "boot", 0)
- ROM_LOAD("u252revg.bin", 0x0000, 0x1000, CRC(113136b7) SHA1(845afd9ed2fd2b28c39921d8f2ba99e5295e0330) )
-
- ROM_REGION(0x1000, "video", 0)
- ROM_LOAD("u416vid.bin", 0x0000, 0x1000, CRC(e376ec59) SHA1(7b9e9db575e77ce2f479eb9ae913528e4f0d125d) )
-
- ROM_REGION(0x100, "attr", 0)
- ROM_LOAD("u413.bin", 0x0000, 0x0100, CRC(5b60e622) SHA1(43450c747db1394466eabe5c26a61bf75a4f3b52) )
-
- ROM_REGION(0x200, "iosel", 0)
- ROM_LOAD("u110.bin", 0x0000, 0x0200, CRC(70dd255a) SHA1(36dcce07a2c14eefc069433459c422341bd47efb) )
-
- ROM_REGION(0x100, "floppy", 0)
- ROM_LOAD("u630.bin", 0x0000, 0x0100, CRC(f7a5c821) SHA1(fea07d9ac7e4e5f4f72aa7b2159deaedbd662ead) )
-ROM_END
-
-ROM_START( attachef )
- ROM_REGION(0x10000, "maincpu", 0)
- ROM_FILL(0x0000,0x10000,0x00)
-
- ROM_REGION(0x1000, "boot", 0)
- ROM_LOAD("u252revf.bin", 0x0000, 0x1000, CRC(b49eb3b2) SHA1(5b1b348301b2f76b1f250ba68bb8733fc15d18c2) )
+ ROM_SYSTEM_BIOS(0, "u252revg", "Boot Rev.G")
+ ROMX_LOAD("u252revg.bin", 0x0000, 0x1000, CRC(113136b7) SHA1(845afd9ed2fd2b28c39921d8f2ba99e5295e0330), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS(1, "u252revf", "Boot Rev.F")
+ ROMX_LOAD("u252revf.bin", 0x0000, 0x1000, CRC(b49eb3b2) SHA1(5b1b348301b2f76b1f250ba68bb8733fc15d18c2), ROM_BIOS(2))
ROM_REGION(0x1000, "video", 0)
ROM_LOAD("u416vid.bin", 0x0000, 0x1000, CRC(e376ec59) SHA1(7b9e9db575e77ce2f479eb9ae913528e4f0d125d) )
@@ -1024,5 +1007,4 @@ ROM_START( attachef )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, attache, 0, 0, attache, attache, driver_device, 0, "Otrona", "Attache (boot rev G)", GAME_IMPERFECT_GRAPHICS|GAME_NOT_WORKING)
-COMP( 1982, attachef,attache,0, attache, attache, driver_device, 0, "Otrona", "Attache (boot rev F)", GAME_IMPERFECT_GRAPHICS|GAME_NOT_WORKING)
+COMP( 1982, attache, 0, 0, attache, attache, driver_device, 0, "Otrona", "Attach\xC3\xA9", MACHINE_IMPERFECT_GRAPHICS|MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/attckufo.c b/src/mame/drivers/attckufo.c
index 9714df9fb24..3a099bf917f 100644
--- a/src/mame/drivers/attckufo.c
+++ b/src/mame/drivers/attckufo.c
@@ -172,4 +172,4 @@ ROM_START( attckufo )
ROM_LOAD( "8", 0x3c00, 0x0400, CRC(9ce93eb0) SHA1(68753e88db4e920446b9582b5cb713b1beec3b27) )
ROM_END
-GAME( 1980, attckufo, 0, attckufo, attckufo, driver_device, 0, ROT270, "Ryoto Electric Co.", "Attack Ufo", GAME_SUPPORTS_SAVE )
+GAME( 1980, attckufo, 0, attckufo, attckufo, driver_device, 0, ROT270, "Ryoto Electric Co.", "Attack Ufo", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/atvtrack.c b/src/mame/drivers/atvtrack.c
index 4f03012a798..6a9b1da99e8 100644
--- a/src/mame/drivers/atvtrack.c
+++ b/src/mame/drivers/atvtrack.c
@@ -595,8 +595,8 @@ ROM_START( smashdrv )
// ic21 unpopulated
ROM_END
-GAME( 2002, atvtrack, 0, atvtrack, atvtrack, driver_device, 0, ROT0, "Gaelco", "ATV Track (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND )
-GAME( 2002, atvtracka, atvtrack, atvtrack, atvtrack, driver_device, 0, ROT0, "Gaelco", "ATV Track (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( 2002, atvtrack, 0, atvtrack, atvtrack, driver_device, 0, ROT0, "Gaelco", "ATV Track (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2002, atvtracka, atvtrack, atvtrack, atvtrack, driver_device, 0, ROT0, "Gaelco", "ATV Track (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
// almost identical PCB, FlashROM mapping and master registers addresses different
-GAME( 2000, smashdrv, 0, smashdrv, atvtrack, driver_device, 0, ROT0, "Gaelco", "Smashing Drive", GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( 2000, smashdrv, 0, smashdrv, atvtrack, driver_device, 0, ROT0, "Gaelco", "Smashing Drive", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/aussiebyte.c b/src/mame/drivers/aussiebyte.c
new file mode 100644
index 00000000000..4980be8204d
--- /dev/null
+++ b/src/mame/drivers/aussiebyte.c
@@ -0,0 +1,574 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/*************************************************************************************************
+
+ The Aussie Byte II Single-Board Computer, created by SME Systems, Melbourne, Australia.
+ Also known as the Knight 2000 Microcomputer.
+
+ Status:
+ Boots up from floppy.
+ Output to serial terminal and to 6545 are working. Serial keyboard works.
+
+ Developed in conjunction with members of the MSPP. Written in July, 2015.
+
+ ToDo:
+ - CRT8002 attributes controller
+ - Graphics
+ - Hard drive controllers and drives
+ - Test Centronics printer
+ - PIO connections
+ - RTC not working
+
+ Note of MAME restrictions:
+ - Votrax doesn't sound anything like the real thing
+ - WD1001/WD1002 device is not emulated
+ - CRT8002 device is not emulated
+
+**************************************************************************************************/
+
+/***********************************************************
+
+ Includes
+
+************************************************************/
+#include "includes/aussiebyte.h"
+
+
+/***********************************************************
+
+ Address Maps
+
+************************************************************/
+
+static ADDRESS_MAP_START( aussiebyte_map, AS_PROGRAM, 8, aussiebyte_state )
+ AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bankr0") AM_WRITE_BANK("bankw0")
+ AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("bank1")
+ AM_RANGE(0x8000, 0xbfff) AM_RAMBANK("bank2")
+ AM_RANGE(0xc000, 0xffff) AM_RAM AM_REGION("mram", 0x0000)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( aussiebyte_io, AS_IO, 8, aussiebyte_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("sio1", z80sio0_device, ba_cd_r, ba_cd_w)
+ AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("pio1", z80pio_device, read, write)
+ AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
+ AM_RANGE(0x0c, 0x0f) AM_NOP // winchester interface
+ AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", wd2797_t, read, write)
+ AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("dma", z80dma_device, read, write)
+ AM_RANGE(0x15, 0x15) AM_WRITE(port15_w) // boot rom disable
+ AM_RANGE(0x16, 0x16) AM_WRITE(port16_w) // fdd select
+ AM_RANGE(0x17, 0x17) AM_WRITE(port17_w) // DMA mux
+ AM_RANGE(0x18, 0x18) AM_WRITE(port18_w) // fdc select
+ AM_RANGE(0x19, 0x19) AM_READ(port19_r) // info port
+ AM_RANGE(0x1a, 0x1a) AM_WRITE(port1a_w) // membank
+ AM_RANGE(0x1b, 0x1b) AM_WRITE(port1b_w) // winchester control
+ AM_RANGE(0x1c, 0x1f) AM_WRITE(port1c_w) // gpebh select
+ AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("pio2", z80pio_device, read, write)
+ AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("sio2", z80sio0_device, ba_cd_r, ba_cd_w)
+ AM_RANGE(0x28, 0x28) AM_READ(port28_r) AM_DEVWRITE("votrax", votrax_sc01_device, write)
+ AM_RANGE(0x2c, 0x2c) AM_DEVWRITE("votrax", votrax_sc01_device, inflection_w)
+ AM_RANGE(0x30, 0x30) AM_WRITE(address_w)
+ AM_RANGE(0x31, 0x31) AM_DEVREAD("crtc", mc6845_device, status_r)
+ AM_RANGE(0x32, 0x32) AM_WRITE(register_w)
+ AM_RANGE(0x33, 0x33) AM_READ(port33_r)
+ AM_RANGE(0x34, 0x34) AM_WRITE(port34_w) // video control
+ AM_RANGE(0x35, 0x35) AM_WRITE(port35_w) // data to vram and aram
+ AM_RANGE(0x36, 0x36) AM_READ(port36_r) // data from vram and aram
+ AM_RANGE(0x37, 0x37) AM_READ(port37_r) // read dispen flag
+ AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("rtc", msm5832_device, data_r, data_w)
+ADDRESS_MAP_END
+
+/***********************************************************
+
+ Keyboard
+
+************************************************************/
+static INPUT_PORTS_START( aussiebyte )
+INPUT_PORTS_END
+
+/***********************************************************
+
+ I/O Ports
+
+************************************************************/
+WRITE8_MEMBER( aussiebyte_state::port15_w )
+{
+ membank("bankr0")->set_entry(m_port15); // point at ram
+ m_port15 = true;
+}
+
+/* FDD select
+0 Drive Select bit O
+1 Drive Select bit 1
+2 Drive Select bit 2
+3 Drive Select bit 3
+ - These bits connect to a 74LS145 binary to BCD converter.
+ - Drives 0 to 3 are 5.25 inch, 4 to 7 are 8 inch, 9 and 0 are not used.
+ - Currently we only support drive 0.
+4 Side Select to Disk Drives.
+5 Disable 5.25 inch floppy spindle motors.
+6 Unused.
+7 Enable write precompensation on WD2797 controller. */
+WRITE8_MEMBER( aussiebyte_state::port16_w )
+{
+ floppy_image_device *m_floppy = NULL;
+ if ((data & 15) == 0)
+ m_floppy = m_floppy0->get_device();
+ else
+ if ((data & 15) == 1)
+ m_floppy = m_floppy1->get_device();
+
+ m_fdc->set_floppy(m_floppy);
+
+ if (m_floppy)
+ {
+ m_floppy->mon_w(BIT(data, 5));
+ m_floppy->ss_w(BIT(data, 4));
+ }
+}
+
+/* DMA select
+0 - FDC
+1 - SIO Ch A
+2 - SIO Ch B
+3 - Winchester bus
+4 - SIO Ch C
+5 - SIO Ch D
+6 - Ext ready 1
+7 - Ext ready 2 */
+WRITE8_MEMBER( aussiebyte_state::port17_w )
+{
+ m_port17 = data & 7;
+ m_dma->rdy_w(BIT(m_port17_rdy, data));
+}
+
+/* FDC params
+2 EXC: WD2797 clock frequency. H = 5.25"; L = 8"
+3 WIEN: WD2797 Double density select. */
+WRITE8_MEMBER( aussiebyte_state::port18_w )
+{
+ m_fdc->set_unscaled_clock(BIT(data, 2) ? 1e6 : 2e6);
+ m_fdc->dden_w(BIT(data, 3));
+}
+
+READ8_MEMBER( aussiebyte_state::port19_r )
+{
+ return m_port19;
+}
+
+// Memory banking
+WRITE8_MEMBER( aussiebyte_state::port1a_w )
+{
+ data &= 7;
+ switch (data)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ m_port1a = data*3+1;
+ if (m_port15)
+ membank("bankr0")->set_entry(data*3+1);
+ membank("bankw0")->set_entry(data*3+1);
+ membank("bank1")->set_entry(data*3+2);
+ membank("bank2")->set_entry(data*3+3);
+ break;
+ case 5:
+ m_port1a = 1;
+ if (m_port15)
+ membank("bankr0")->set_entry(1);
+ membank("bankw0")->set_entry(1);
+ membank("bank1")->set_entry(2);
+ membank("bank2")->set_entry(13);
+ break;
+ case 6:
+ m_port1a = 14;
+ if (m_port15)
+ membank("bankr0")->set_entry(14);
+ membank("bankw0")->set_entry(14);
+ membank("bank1")->set_entry(15);
+ //membank("bank2")->set_entry(0); // open bus
+ break;
+ case 7:
+ m_port1a = 1;
+ if (m_port15)
+ membank("bankr0")->set_entry(1);
+ membank("bankw0")->set_entry(1);
+ membank("bank1")->set_entry(4);
+ membank("bank2")->set_entry(13);
+ break;
+ }
+}
+
+// Winchester control
+WRITE8_MEMBER( aussiebyte_state::port1b_w )
+{
+}
+
+// GPEHB control
+WRITE8_MEMBER( aussiebyte_state::port1c_w )
+{
+}
+
+WRITE8_MEMBER( aussiebyte_state::port20_w )
+{
+ m_speaker->level_w(BIT(data, 7));
+}
+
+READ8_MEMBER( aussiebyte_state::port28_r )
+{
+ return m_port28;
+}
+
+/***********************************************************
+
+ DMA
+
+************************************************************/
+READ8_MEMBER( aussiebyte_state::memory_read_byte )
+{
+ address_space& prog_space = m_maincpu->space(AS_PROGRAM);
+ return prog_space.read_byte(offset);
+}
+
+WRITE8_MEMBER( aussiebyte_state::memory_write_byte )
+{
+ address_space& prog_space = m_maincpu->space(AS_PROGRAM);
+ prog_space.write_byte(offset, data);
+}
+
+READ8_MEMBER( aussiebyte_state::io_read_byte )
+{
+ address_space& prog_space = m_maincpu->space(AS_IO);
+ return prog_space.read_byte(offset);
+}
+
+WRITE8_MEMBER( aussiebyte_state::io_write_byte )
+{
+ address_space& prog_space = m_maincpu->space(AS_IO);
+ prog_space.write_byte(offset, data);
+}
+
+WRITE_LINE_MEMBER( aussiebyte_state::busreq_w )
+{
+// since our Z80 has no support for BUSACK, we assume it is granted immediately
+ m_maincpu->set_input_line(Z80_INPUT_LINE_BUSRQ, state);
+ m_dma->bai_w(state); // tell dma that bus has been granted
+}
+
+/***********************************************************
+
+ DMA selector
+
+************************************************************/
+WRITE_LINE_MEMBER( aussiebyte_state::sio1_rdya_w )
+{
+ m_port17_rdy = (m_port17_rdy & 0xfd) | (UINT8)(state << 1);
+ if (m_port17 == 1)
+ m_dma->rdy_w(state);
+}
+
+WRITE_LINE_MEMBER( aussiebyte_state::sio1_rdyb_w )
+{
+ m_port17_rdy = (m_port17_rdy & 0xfb) | (UINT8)(state << 2);
+ if (m_port17 == 2)
+ m_dma->rdy_w(state);
+}
+
+WRITE_LINE_MEMBER( aussiebyte_state::sio2_rdya_w )
+{
+ m_port17_rdy = (m_port17_rdy & 0xef) | (UINT8)(state << 4);
+ if (m_port17 == 4)
+ m_dma->rdy_w(state);
+}
+
+WRITE_LINE_MEMBER( aussiebyte_state::sio2_rdyb_w )
+{
+ m_port17_rdy = (m_port17_rdy & 0xdf) | (UINT8)(state << 5);
+ if (m_port17 == 5)
+ m_dma->rdy_w(state);
+}
+
+
+/***********************************************************
+
+ Video
+
+************************************************************/
+
+/* F4 Character Displayer */
+static const gfx_layout crt8002_charlayout =
+{
+ 8, 12, /* 7 x 11 characters */
+ 128, /* 128 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ /* y offsets */
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8 },
+ 8*16 /* every char takes 16 bytes */
+};
+
+static GFXDECODE_START( crt8002 )
+ GFXDECODE_ENTRY( "chargen", 0x0000, crt8002_charlayout, 0, 1 )
+GFXDECODE_END
+
+/***************************************************************
+
+ Daisy Chain
+
+****************************************************************/
+
+static const z80_daisy_config daisy_chain_intf[] =
+{
+ { "dma" },
+ { "pio2" },
+ { "sio1" },
+ { "sio2" },
+ { "pio1" },
+ { "ctc" },
+ { NULL }
+};
+
+
+/***********************************************************
+
+ CTC
+
+************************************************************/
+
+// baud rate generator. All inputs are 1.2288MHz.
+TIMER_DEVICE_CALLBACK_MEMBER( aussiebyte_state::ctc_tick )
+{
+ m_ctc->trg0(1);
+ m_ctc->trg0(0);
+ m_ctc->trg1(1);
+ m_ctc->trg1(0);
+ m_ctc->trg2(1);
+ m_ctc->trg2(0);
+}
+
+WRITE_LINE_MEMBER( aussiebyte_state::ctc_z0_w )
+{
+ m_sio1->rxca_w(state);
+ m_sio1->txca_w(state);
+}
+
+WRITE_LINE_MEMBER( aussiebyte_state::ctc_z1_w )
+{
+ m_sio1->rxtxcb_w(state);
+ m_sio2->rxca_w(state);
+ m_sio2->txca_w(state);
+}
+
+WRITE_LINE_MEMBER( aussiebyte_state::ctc_z2_w )
+{
+ m_sio2->rxtxcb_w(state);
+ m_ctc->trg3(1);
+ m_ctc->trg3(0);
+}
+
+/***********************************************************
+
+ Centronics ack
+
+************************************************************/
+WRITE_LINE_MEMBER( aussiebyte_state::write_centronics_busy )
+{
+ m_centronics_busy = state;
+}
+
+/***********************************************************
+
+ Speech ack
+
+************************************************************/
+WRITE_LINE_MEMBER( aussiebyte_state::votrax_w )
+{
+ m_port28 = state;
+}
+
+
+/***********************************************************
+
+ Floppy Disk
+
+************************************************************/
+
+WRITE_LINE_MEMBER( aussiebyte_state::fdc_intrq_w )
+{
+ UINT8 data = (m_port19 & 0xbf) | (state ? 0x40 : 0);
+ m_port19 = data;
+}
+
+WRITE_LINE_MEMBER( aussiebyte_state::fdc_drq_w )
+{
+ UINT8 data = (m_port19 & 0x7f) | (state ? 0x80 : 0);
+ m_port19 = data;
+ state ^= 1; // inverter on pin38 of fdc
+ m_port17_rdy = (m_port17_rdy & 0xfe) | (UINT8)state;
+ if (m_port17 == 0)
+ m_dma->rdy_w(state);
+}
+
+static SLOT_INTERFACE_START( aussiebyte_floppies )
+ SLOT_INTERFACE( "drive0", FLOPPY_525_QD )
+ SLOT_INTERFACE( "drive1", FLOPPY_525_QD )
+SLOT_INTERFACE_END
+
+/***********************************************************
+
+ Machine Driver
+
+************************************************************/
+MACHINE_RESET_MEMBER( aussiebyte_state, aussiebyte )
+{
+ m_port15 = false;
+ m_port17 = 0;
+ m_port17_rdy = 0;
+ m_port1a = 1;
+ m_alpha_address = 0;
+ m_graph_address = 0;
+ m_p_chargen = memregion("chargen")->base();
+ m_p_videoram = memregion("vram")->base();
+ m_p_attribram = memregion("aram")->base();
+ membank("bankr0")->set_entry(16); // point at rom
+ membank("bankw0")->set_entry(1); // always write to ram
+ membank("bank1")->set_entry(2);
+ membank("bank2")->set_entry(3);
+ m_maincpu->reset();
+}
+
+static MACHINE_CONFIG_START( aussiebyte, aussiebyte_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4)
+ MCFG_CPU_PROGRAM_MAP(aussiebyte_map)
+ MCFG_CPU_IO_MAP(aussiebyte_io)
+ MCFG_CPU_CONFIG(daisy_chain_intf)
+
+ MCFG_MACHINE_RESET_OVERRIDE(aussiebyte_state, aussiebyte )
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_SIZE(640, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", sy6545_1_device, screen_update)
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", crt8002)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+ MCFG_DEVICE_ADD("votrax", VOTRAX_SC01, 720000) /* 720kHz? needs verify */
+ MCFG_VOTRAX_SC01_REQUEST_CB(WRITELINE(aussiebyte_state, votrax_w))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+
+ /* devices */
+ MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
+ MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in")
+ MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(aussiebyte_state, write_centronics_busy))
+ MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0)
+ MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+
+ MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_16MHz / 4)
+ MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ MCFG_Z80CTC_ZC0_CB(WRITELINE(aussiebyte_state, ctc_z0_w)) // SIO1 Ch A
+ MCFG_Z80CTC_ZC1_CB(WRITELINE(aussiebyte_state, ctc_z1_w)) // SIO1 Ch B, SIO2 Ch A
+ MCFG_Z80CTC_ZC2_CB(WRITELINE(aussiebyte_state, ctc_z2_w)) // SIO2 Ch B, CTC Ch 3
+
+ MCFG_DEVICE_ADD("dma", Z80DMA, XTAL_16MHz / 4)
+ MCFG_Z80DMA_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ MCFG_Z80DMA_OUT_BUSREQ_CB(WRITELINE(aussiebyte_state, busreq_w))
+ // BAO, not used
+ MCFG_Z80DMA_IN_MREQ_CB(READ8(aussiebyte_state, memory_read_byte))
+ MCFG_Z80DMA_OUT_MREQ_CB(WRITE8(aussiebyte_state, memory_write_byte))
+ MCFG_Z80DMA_IN_IORQ_CB(READ8(aussiebyte_state, io_read_byte))
+ MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(aussiebyte_state, io_write_byte))
+
+ MCFG_DEVICE_ADD("pio1", Z80PIO, XTAL_16MHz / 4)
+ MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("cent_data_out", output_latch_device, write))
+ MCFG_Z80PIO_IN_PB_CB(DEVREAD8("cent_data_in", input_buffer_device, read))
+ MCFG_Z80PIO_OUT_ARDY_CB(DEVWRITELINE("centronics", centronics_device, write_strobe)) MCFG_DEVCB_INVERT
+
+ MCFG_DEVICE_ADD("pio2", Z80PIO, XTAL_16MHz / 4)
+ MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ MCFG_Z80PIO_OUT_PA_CB(WRITE8(aussiebyte_state, port20_w))
+
+ MCFG_Z80SIO0_ADD("sio1", XTAL_16MHz / 4, 0, 0, 0, 0)
+ MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ MCFG_Z80DART_OUT_WRDYA_CB(WRITELINE(aussiebyte_state, sio1_rdya_w))
+ MCFG_Z80DART_OUT_WRDYB_CB(WRITELINE(aussiebyte_state, sio1_rdyb_w))
+
+ MCFG_Z80SIO0_ADD("sio2", XTAL_16MHz / 4, 0, 0, 0, 0)
+ MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ MCFG_Z80DART_OUT_WRDYA_CB(WRITELINE(aussiebyte_state, sio2_rdya_w))
+ MCFG_Z80DART_OUT_WRDYB_CB(WRITELINE(aussiebyte_state, sio2_rdyb_w))
+ MCFG_Z80DART_OUT_TXDA_CB(DEVWRITELINE("rs232", rs232_port_device, write_txd))
+ MCFG_Z80DART_OUT_DTRA_CB(DEVWRITELINE("rs232", rs232_port_device, write_dtr))
+ MCFG_Z80DART_OUT_RTSA_CB(DEVWRITELINE("rs232", rs232_port_device, write_rts))
+
+ MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "keyboard")
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio2", z80sio0_device, rxa_w))
+
+ MCFG_WD2797_ADD("fdc", XTAL_16MHz / 16)
+ MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(aussiebyte_state, fdc_intrq_w))
+ MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(aussiebyte_state, fdc_drq_w))
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", aussiebyte_floppies, "drive0", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", aussiebyte_floppies, "drive1", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+
+ /* devices */
+ MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_16MHz / 8)
+ MCFG_MC6845_SHOW_BORDER_AREA(false)
+ MCFG_MC6845_CHAR_WIDTH(8)
+ MCFG_MC6845_UPDATE_ROW_CB(aussiebyte_state, crtc_update_row)
+ MCFG_MC6845_ADDR_CHANGED_CB(aussiebyte_state, crtc_update_addr)
+
+ MCFG_MSM5832_ADD("rtc", XTAL_32_768kHz)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc_tick", aussiebyte_state, ctc_tick, attotime::from_hz(XTAL_4_9152MHz / 4))
+MACHINE_CONFIG_END
+
+
+DRIVER_INIT_MEMBER( aussiebyte_state, aussiebyte )
+{
+ // Main ram is divided into 16k blocks (0-15). The boot rom is block number 16.
+ // For convenience, bank 0 is permanently assigned to C000-FFFF
+ UINT8 *main = memregion("roms")->base();
+ UINT8 *ram = memregion("mram")->base();
+
+ membank("bankr0")->configure_entries(0, 16, &ram[0x0000], 0x4000);
+ membank("bankw0")->configure_entries(0, 16, &ram[0x0000], 0x4000);
+ membank("bank1")->configure_entries(0, 16, &ram[0x0000], 0x4000);
+ membank("bank2")->configure_entries(0, 16, &ram[0x0000], 0x4000);
+ membank("bankr0")->configure_entry(16, &main[0x0000]);
+}
+
+
+/***********************************************************
+
+ Game driver
+
+************************************************************/
+
+
+ROM_START(aussieby)
+ ROM_REGION(0x4000, "roms", 0) // Size of bank 16
+ ROM_LOAD( "knight_boot_0000.u27", 0x0000, 0x1000, CRC(1f200437) SHA1(80d1d208088b325c16a6824e2da605fb2b00c2ce) )
+
+ ROM_REGION(0x800, "chargen", 0)
+ ROM_LOAD( "8002.bin", 0x0000, 0x0800, CRC(fdd6eb13) SHA1(a094d416e66bdab916e72238112a6265a75ca690) )
+
+ ROM_REGION(0x40000, "mram", ROMREGION_ERASE00) // main ram, 256k dynamic
+ ROM_REGION(0x10000, "vram", ROMREGION_ERASEFF) // video ram, 64k dynamic
+ ROM_REGION(0x00800, "aram", ROMREGION_ERASEFF) // attribute ram, 2k static
+ROM_END
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP( 1984, aussieby, 0, 0, aussiebyte, aussiebyte, aussiebyte_state, aussiebyte, "SME Systems", "Aussie Byte II" , MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/avalnche.c b/src/mame/drivers/avalnche.c
index 8b3f2f97019..6fa16e5616e 100644
--- a/src/mame/drivers/avalnche.c
+++ b/src/mame/drivers/avalnche.c
@@ -324,6 +324,6 @@ ROM_END
*
*************************************/
-GAMEL( 1978, avalnche, 0, avalnche, avalnche, driver_device, 0, ROT0, "Atari", "Avalanche", GAME_SUPPORTS_SAVE, layout_avalnche )
-GAMEL( 1978, cascade, avalnche, avalnche, cascade, driver_device, 0, ROT0, "bootleg? (Sidam)", "Cascade", GAME_SUPPORTS_SAVE, layout_avalnche )
-GAME ( 1977, catchp, 0, catch, catch, driver_device, 0, ROT0, "Atari", "Catch (prototype)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND ) // pre-production board, evolved into Avalanche
+GAMEL( 1978, avalnche, 0, avalnche, avalnche, driver_device, 0, ROT0, "Atari", "Avalanche", MACHINE_SUPPORTS_SAVE, layout_avalnche )
+GAMEL( 1978, cascade, avalnche, avalnche, cascade, driver_device, 0, ROT0, "bootleg? (Sidam)", "Cascade", MACHINE_SUPPORTS_SAVE, layout_avalnche )
+GAME ( 1977, catchp, 0, catch, catch, driver_device, 0, ROT0, "Atari", "Catch (prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND ) // pre-production board, evolved into Avalanche
diff --git a/src/mess/drivers/avigo.c b/src/mame/drivers/avigo.c
index 6f5de43c06b..f9730f56c90 100644
--- a/src/mess/drivers/avigo.c
+++ b/src/mame/drivers/avigo.c
@@ -1010,8 +1010,8 @@ ROM_START(avigo_it)
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP(1997, avigo, 0, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA", GAME_SUPPORTS_SAVE)
-COMP(1997, avigo_de, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (German)", GAME_SUPPORTS_SAVE)
-COMP(1997, avigo_fr, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (French)", GAME_SUPPORTS_SAVE)
-COMP(1997, avigo_es, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (Spanish)", GAME_SUPPORTS_SAVE)
-COMP(1997, avigo_it, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (Italian)", GAME_SUPPORTS_SAVE)
+COMP(1997, avigo, 0, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA", MACHINE_SUPPORTS_SAVE)
+COMP(1997, avigo_de, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (German)", MACHINE_SUPPORTS_SAVE)
+COMP(1997, avigo_fr, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (French)", MACHINE_SUPPORTS_SAVE)
+COMP(1997, avigo_es, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (Spanish)", MACHINE_SUPPORTS_SAVE)
+COMP(1997, avigo_it, avigo, 0, avigo, avigo, driver_device, 0, "Texas Instruments", "TI Avigo 10 PDA (Italian)", MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/avt.c b/src/mame/drivers/avt.c
index e4a9ec8fa8d..552245ff1d6 100644
--- a/src/mame/drivers/avt.c
+++ b/src/mame/drivers/avt.c
@@ -962,7 +962,7 @@ ROM_END
*********************************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1985, avtsym14, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Symbols (ver 1.4)", GAME_NOT_WORKING )
-GAME( 1985, avtsym25, avtsym14, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Symbols (ver 2.5)", GAME_NOT_WORKING )
-GAME( 1985, avtbingo, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Arrow Bingo", GAME_NOT_WORKING )
-GAME( 1989, avtnfl, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "NFL (ver 109)", GAME_NOT_WORKING )
+GAME( 1985, avtsym14, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Symbols (ver 1.4)", MACHINE_NOT_WORKING )
+GAME( 1985, avtsym25, avtsym14, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Symbols (ver 2.5)", MACHINE_NOT_WORKING )
+GAME( 1985, avtbingo, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "Arrow Bingo", MACHINE_NOT_WORKING )
+GAME( 1989, avtnfl, 0, avt, symbols, driver_device, 0, ROT0, "Advanced Video Technology", "NFL (ver 109)", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/ax20.c b/src/mame/drivers/ax20.c
index 9e8ec2268e0..d5025a92952 100644
--- a/src/mess/drivers/ax20.c
+++ b/src/mame/drivers/ax20.c
@@ -155,4 +155,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, ax20, 0, 0, ax20, ax20, driver_device, 0, "Axel", "AX-20", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1982, ax20, 0, 0, ax20, ax20, driver_device, 0, "Axel", "AX-20", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/aztarac.c b/src/mame/drivers/aztarac.c
index 76f0b68896e..b427530a3de 100644
--- a/src/mame/drivers/aztarac.c
+++ b/src/mame/drivers/aztarac.c
@@ -220,4 +220,4 @@ ROM_END
*
*************************************/
-GAME( 1983, aztarac, 0, aztarac, aztarac, driver_device, 0, ROT0, "Centuri", "Aztarac", GAME_SUPPORTS_SAVE )
+GAME( 1983, aztarac, 0, aztarac, aztarac, driver_device, 0, ROT0, "Centuri", "Aztarac", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/b16.c b/src/mame/drivers/b16.c
index f228e15b80c..64904bff3c6 100644
--- a/src/mess/drivers/b16.c
+++ b/src/mame/drivers/b16.c
@@ -309,4 +309,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1983, b16, 0, 0, b16, b16, driver_device, 0, "Hitachi", "B16", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1983, b16, 0, 0, b16, b16, driver_device, 0, "Hitachi", "B16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/b2m.c b/src/mame/drivers/b2m.c
index 724dfb4fadf..99a3b03ccd6 100644
--- a/src/mess/drivers/b2m.c
+++ b/src/mame/drivers/b2m.c
@@ -269,5 +269,5 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1989, b2m, 0, 0, b2m, b2m, b2m_state, b2m, "BNPO", "Bashkiria-2M", GAME_SUPPORTS_SAVE)
-COMP( 1989, b2mrom, b2m, 0, b2mrom, b2m, b2m_state, b2m, "BNPO", "Bashkiria-2M ROM-disk", GAME_SUPPORTS_SAVE)
+COMP( 1989, b2m, 0, 0, b2m, b2m, b2m_state, b2m, "BNPO", "Bashkiria-2M", MACHINE_SUPPORTS_SAVE)
+COMP( 1989, b2mrom, b2m, 0, b2mrom, b2m, b2m_state, b2m, "BNPO", "Bashkiria-2M ROM-disk", MACHINE_SUPPORTS_SAVE)
diff --git a/src/mess/drivers/babbage.c b/src/mame/drivers/babbage.c
index b20bbd574df..e89bd9b3e75 100644
--- a/src/mess/drivers/babbage.c
+++ b/src/mame/drivers/babbage.c
@@ -275,4 +275,4 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1986, babbage, 0, 0, babbage, babbage, driver_device, 0, "Mr Takafumi Aihara", "Babbage-2nd" , GAME_NO_SOUND_HW )
+COMP( 1986, babbage, 0, 0, babbage, babbage, driver_device, 0, "Mr Takafumi Aihara", "Babbage-2nd" , MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/backfire.c b/src/mame/drivers/backfire.c
index b029c8a5c41..fdeddfbbde8 100644
--- a/src/mame/drivers/backfire.c
+++ b/src/mame/drivers/backfire.c
@@ -726,5 +726,5 @@ DRIVER_INIT_MEMBER(backfire_state,backfire)
m_maincpu->space(AS_PROGRAM).install_read_handler(0x0170018, 0x017001b, read32_delegate(FUNC(backfire_state::backfire_speedup_r), this));
}
-GAME( 1995, backfire, 0, backfire, backfire, backfire_state, backfire, ROT0, "Data East Corporation", "Backfire! (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1995, backfirea, backfire, backfire, backfire, backfire_state, backfire, ROT0, "Data East Corporation", "Backfire! (set 2)", GAME_SUPPORTS_SAVE ) // defaults to wheel controls, must change to joystick to play
+GAME( 1995, backfire, 0, backfire, backfire, backfire_state, backfire, ROT0, "Data East Corporation", "Backfire! (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, backfirea, backfire, backfire, backfire, backfire_state, backfire, ROT0, "Data East Corporation", "Backfire! (set 2)", MACHINE_SUPPORTS_SAVE ) // defaults to wheel controls, must change to joystick to play
diff --git a/src/mame/drivers/badlands.c b/src/mame/drivers/badlands.c
index a2064425a86..0159c213cdc 100644
--- a/src/mame/drivers/badlands.c
+++ b/src/mame/drivers/badlands.c
@@ -810,5 +810,5 @@ ROM_END
-GAME( 1989, badlandsb, badlands, badlandsb, badlandsb, driver_device, 0, ROT0, "bootleg (Playmark)", "Bad Lands (bootleg)", GAME_NOT_WORKING )
-GAME( 1989, badlandsb2,badlands, badlandsb, badlandsb, driver_device, 0, ROT0, "bootleg (Playmark)", "Bad Lands (bootleg, alternate)", GAME_NOT_WORKING )
+GAME( 1989, badlandsb, badlands, badlandsb, badlandsb, driver_device, 0, ROT0, "bootleg (Playmark)", "Bad Lands (bootleg)", MACHINE_NOT_WORKING )
+GAME( 1989, badlandsb2,badlands, badlandsb, badlandsb, driver_device, 0, ROT0, "bootleg (Playmark)", "Bad Lands (bootleg, alternate)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/bagman.c b/src/mame/drivers/bagman.c
index fec12b9f626..0d2f28aab57 100644
--- a/src/mame/drivers/bagman.c
+++ b/src/mame/drivers/bagman.c
@@ -993,19 +993,19 @@ DRIVER_INIT_MEMBER(bagman_state,bagman)
}
-GAME( 1982, bagman, 0, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Bagman", GAME_SUPPORTS_SAVE )
-GAME( 1982, bagnard, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Le Bagnard (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1982, bagnarda, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Le Bagnard (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1982, bagnardi, bagman, bagman, bagman, bagman_state, bagman, ROT90, "Valadon Automation (Itisa license)", "Le Bagnard (Itisa, Spain)", GAME_SUPPORTS_SAVE )
-GAME( 1982, bagmans, bagman, bagman, bagmans, bagman_state, bagman, ROT270, "Valadon Automation (Stern Electronics license)", "Bagman (Stern Electronics, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1982, bagmans2, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation (Stern Electronics license)", "Bagman (Stern Electronics, set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1982, bagman, 0, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Bagman", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, bagnard, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Le Bagnard (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, bagnarda, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation", "Le Bagnard (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, bagnardi, bagman, bagman, bagman, bagman_state, bagman, ROT90, "Valadon Automation (Itisa license)", "Le Bagnard (Itisa, Spain)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, bagmans, bagman, bagman, bagmans, bagman_state, bagman, ROT270, "Valadon Automation (Stern Electronics license)", "Bagman (Stern Electronics, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, bagmans2, bagman, bagman, bagman, bagman_state, bagman, ROT270, "Valadon Automation (Stern Electronics license)", "Bagman (Stern Electronics, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, sbagman, 0, bagman, sbagman, driver_device, 0, ROT270, "Valadon Automation", "Super Bagman", GAME_SUPPORTS_SAVE )
-GAME( 1984, sbagmans, sbagman, bagman, sbagman, driver_device, 0, ROT270, "Valadon Automation (Stern Electronics license)", "Super Bagman (Stern Electronics)", GAME_SUPPORTS_SAVE )
+GAME( 1984, sbagman, 0, bagman, sbagman, driver_device, 0, ROT270, "Valadon Automation", "Super Bagman", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, sbagmans, sbagman, bagman, sbagman, driver_device, 0, ROT270, "Valadon Automation (Stern Electronics license)", "Super Bagman (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, pickin, 0, pickin, pickin, driver_device, 0, ROT270, "Valadon Automation", "Pickin'", GAME_SUPPORTS_SAVE )
+GAME( 1983, pickin, 0, pickin, pickin, driver_device, 0, ROT270, "Valadon Automation", "Pickin'", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, botanic, 0, botanic, botanici,driver_device, 0, ROT90, "Itisa", "Botanic (English / Spanish)", GAME_SUPPORTS_SAVE )
-GAME( 1984, botanicf, botanic, botanic, botanicf,driver_device, 0, ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", GAME_SUPPORTS_SAVE )
+GAME( 1983, botanic, 0, botanic, botanici,driver_device, 0, ROT90, "Itisa", "Botanic (English / Spanish)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, botanicf, botanic, botanic, botanicf,driver_device, 0, ROT270, "Itisa (Valadon Automation license)", "Botanic (French)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, squaitsa, 0, squaitsa,squaitsa, driver_device,0, ROT0, "Itisa", "Squash (Itisa)", GAME_SUPPORTS_SAVE )
+GAME( 1984, squaitsa, 0, squaitsa,squaitsa, driver_device,0, ROT0, "Itisa", "Squash (Itisa)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bailey.c b/src/mame/drivers/bailey.c
index 9ba1600648f..54800fbe8ff 100644
--- a/src/mame/drivers/bailey.c
+++ b/src/mame/drivers/bailey.c
@@ -152,5 +152,5 @@ ROM_START( fun4a )
ROM_END
-GAME( 1976, fun4, 0, bailey, 0, driver_device, 0, ROT0, "Bailey International", "Fun Four (set 1) [TTL]", GAME_IS_SKELETON )
-GAME( 1976, fun4a, fun4, bailey, 0, driver_device, 0, ROT0, "Bailey International", "Fun Four (set 2) [TTL]", GAME_IS_SKELETON )
+GAME( 1976, fun4, 0, bailey, 0, driver_device, 0, ROT0, "Bailey International", "Fun Four (set 1) [TTL]", MACHINE_IS_SKELETON )
+GAME( 1976, fun4a, fun4, bailey, 0, driver_device, 0, ROT0, "Bailey International", "Fun Four (set 2) [TTL]", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/balsente.c b/src/mame/drivers/balsente.c
index 879d8b0cc03..64bad2a1f6b 100644
--- a/src/mame/drivers/balsente.c
+++ b/src/mame/drivers/balsente.c
@@ -2236,52 +2236,52 @@ DRIVER_INIT_MEMBER(balsente_state,shrike)
*************************************/
/* Board: Unknown */
-GAME( 1984, sentetst, 0, balsente, sentetst, balsente_state, sentetst, ROT0, "Bally/Sente", "Sente Diagnostic Cartridge", GAME_SUPPORTS_SAVE )
-GAME( 1984, cshift, 0, balsente, cshift, balsente_state, cshift, ROT0, "Bally/Sente", "Chicken Shift", GAME_SUPPORTS_SAVE )
-GAME( 1984, gghost, 0, balsente, gghost, balsente_state, gghost, ROT0, "Bally/Sente", "Goalie Ghost", GAME_SUPPORTS_SAVE )
+GAME( 1984, sentetst, 0, balsente, sentetst, balsente_state, sentetst, ROT0, "Bally/Sente", "Sente Diagnostic Cartridge", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, cshift, 0, balsente, cshift, balsente_state, cshift, ROT0, "Bally/Sente", "Chicken Shift", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gghost, 0, balsente, gghost, balsente_state, gghost, ROT0, "Bally/Sente", "Goalie Ghost", MACHINE_SUPPORTS_SAVE )
/* Board: 006-8003-01-0D Rev D */
-GAME( 1984, hattrick, 0, balsente, hattrick, balsente_state, hattrick, ROT0, "Bally/Sente", "Hat Trick", GAME_SUPPORTS_SAVE )
-GAME( 1984, trivia12, triviag1, balsente, triviag1, balsente_state, triviag1, ROT0, "Bally/Sente", "Trivial Pursuit (Think Tank - Genus Edition) (12/14/84)", GAME_SUPPORTS_SAVE )
+GAME( 1984, hattrick, 0, balsente, hattrick, balsente_state, hattrick, ROT0, "Bally/Sente", "Hat Trick", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, trivia12, triviag1, balsente, triviag1, balsente_state, triviag1, ROT0, "Bally/Sente", "Trivial Pursuit (Think Tank - Genus Edition) (12/14/84)", MACHINE_SUPPORTS_SAVE )
/* Board: Unknown (From a picture on eBay Snacks'n Jaxson does not match any documented types here.) */
-GAME( 1984, otwalls, 0, balsente, otwalls, balsente_state, otwalls, ROT0, "Bally/Sente", "Off the Wall (Sente)", GAME_SUPPORTS_SAVE )
-GAME( 1984, snakepit, 0, balsente, sentetst, balsente_state, snakepit, ROT0, "Bally/Sente", "Snake Pit", GAME_SUPPORTS_SAVE )
-GAME( 1984, snakepit2,snakepit, balsente, sentetst, balsente_state, snakepit, ROT0, "Sente Technologies Inc.", "Snake Pit (9/14/84)", GAME_SUPPORTS_SAVE ) // 1984, even though titlescreen says 1983
-GAME( 1984, snakjack, 0, balsente, snakjack, balsente_state, snakjack, ROT0, "Bally/Sente", "Snacks'n Jaxson", GAME_SUPPORTS_SAVE )
+GAME( 1984, otwalls, 0, balsente, otwalls, balsente_state, otwalls, ROT0, "Bally/Sente", "Off the Wall (Sente)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, snakepit, 0, balsente, sentetst, balsente_state, snakepit, ROT0, "Bally/Sente", "Snake Pit", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, snakepit2,snakepit, balsente, sentetst, balsente_state, snakepit, ROT0, "Sente Technologies Inc.", "Snake Pit (9/14/84)", MACHINE_SUPPORTS_SAVE ) // 1984, even though titlescreen says 1983
+GAME( 1984, snakjack, 0, balsente, snakjack, balsente_state, snakjack, ROT0, "Bally/Sente", "Snacks'n Jaxson", MACHINE_SUPPORTS_SAVE )
/* Board: 006-8025-01-0B Rev B */
-GAMEL(1984, stocker, 0, balsente, stocker, balsente_state, stocker, ROT0, "Bally/Sente", "Stocker (3/19/85)", GAME_SUPPORTS_SAVE, layout_stocker ) // date from ROM chips
-GAME( 1985, gimeabrk, 0, balsente, gimeabrk, balsente_state, gimeabrk, ROT0, "Bally/Sente", "Gimme A Break (7/7/85)", GAME_SUPPORTS_SAVE )
-GAME( 1985, minigolf, 0, balsente, minigolf, balsente_state, minigolf, ROT0, "Bally/Sente", "Mini Golf (11/25/85)", GAME_SUPPORTS_SAVE )
-GAME( 1985, minigolf2,minigolf, balsente, minigolf2, balsente_state,minigolf2,ROT0, "Bally/Sente", "Mini Golf (10/8/85)", GAME_SUPPORTS_SAVE )
-GAME( 1984, triviabb, 0, balsente, triviag1, balsente_state, triviag2, ROT0, "Bally/Sente", "Trivial Pursuit (Baby Boomer Edition) (3/20/85)", GAME_SUPPORTS_SAVE )
+GAMEL(1984, stocker, 0, balsente, stocker, balsente_state, stocker, ROT0, "Bally/Sente", "Stocker (3/19/85)", MACHINE_SUPPORTS_SAVE, layout_stocker ) // date from ROM chips
+GAME( 1985, gimeabrk, 0, balsente, gimeabrk, balsente_state, gimeabrk, ROT0, "Bally/Sente", "Gimme A Break (7/7/85)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, minigolf, 0, balsente, minigolf, balsente_state, minigolf, ROT0, "Bally/Sente", "Mini Golf (11/25/85)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, minigolf2,minigolf, balsente, minigolf2, balsente_state,minigolf2,ROT0, "Bally/Sente", "Mini Golf (10/8/85)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, triviabb, 0, balsente, triviag1, balsente_state, triviag2, ROT0, "Bally/Sente", "Trivial Pursuit (Baby Boomer Edition) (3/20/85)", MACHINE_SUPPORTS_SAVE )
/* Board: Unknown */
-GAME( 1984, triviag1, 0, balsente, triviag1, balsente_state, triviag1, ROT0, "Bally/Sente", "Trivial Pursuit (Think Tank - Genus Edition) (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1984, triviag2, 0, balsente, triviag1, balsente_state, triviag2, ROT0, "Bally/Sente", "Trivial Pursuit (Genus II Edition)", GAME_SUPPORTS_SAVE )
-GAME( 1984, triviasp, 0, balsente, triviag1, balsente_state, triviag2, ROT0, "Bally/Sente", "Trivial Pursuit (All Star Sports Edition)", GAME_SUPPORTS_SAVE )
-GAME( 1984, triviayp, 0, balsente, triviag1, balsente_state, triviag2, ROT0, "Bally/Sente", "Trivial Pursuit (Young Players Edition)", GAME_SUPPORTS_SAVE )
-GAME( 1987, triviaes, 0, balsente, triviaes, balsente_state, triviaes, ROT0, "Bally/Sente", "Trivial Pursuit (Spanish)", GAME_SUPPORTS_SAVE )
-GAME( 1985, toggle, 0, balsente, toggle, balsente_state, toggle, ROT0, "Bally/Sente", "Toggle (prototype)", GAME_SUPPORTS_SAVE )
-GAME( 1986, nametune, 0, balsente, nametune, balsente_state, nametune, ROT0, "Bally/Sente", "Name That Tune (set 1)", GAME_SUPPORTS_SAVE )
+GAME( 1984, triviag1, 0, balsente, triviag1, balsente_state, triviag1, ROT0, "Bally/Sente", "Trivial Pursuit (Think Tank - Genus Edition) (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, triviag2, 0, balsente, triviag1, balsente_state, triviag2, ROT0, "Bally/Sente", "Trivial Pursuit (Genus II Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, triviasp, 0, balsente, triviag1, balsente_state, triviag2, ROT0, "Bally/Sente", "Trivial Pursuit (All Star Sports Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, triviayp, 0, balsente, triviag1, balsente_state, triviag2, ROT0, "Bally/Sente", "Trivial Pursuit (Young Players Edition)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, triviaes, 0, balsente, triviaes, balsente_state, triviaes, ROT0, "Bally/Sente", "Trivial Pursuit (Spanish)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, toggle, 0, balsente, toggle, balsente_state, toggle, ROT0, "Bally/Sente", "Toggle (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, nametune, 0, balsente, nametune, balsente_state, nametune, ROT0, "Bally/Sente", "Name That Tune (set 1)", MACHINE_SUPPORTS_SAVE )
/* Board: 006-8030-01-0A Rev A */
-GAME( 1986, nametune2,nametune, balsente, nametune, balsente_state, nametune, ROT0, "Bally/Sente", "Name That Tune (3/23/86)", GAME_SUPPORTS_SAVE )
+GAME( 1986, nametune2,nametune, balsente, nametune, balsente_state, nametune, ROT0, "Bally/Sente", "Name That Tune (3/23/86)", MACHINE_SUPPORTS_SAVE )
/* Board: 006-8027-01-0B Rev B */
-GAME( 1986, nstocker, 0, balsente, nstocker, balsente_state, nstocker, ROT0, "Bally/Sente", "Night Stocker (10/6/86)", GAME_SUPPORTS_SAVE )
-GAME( 1986, nstocker2,nstocker, balsente, nstocker, balsente_state, nstocker, ROT0, "Bally/Sente", "Night Stocker (8/27/86)", GAME_SUPPORTS_SAVE )
-GAME( 1986, sfootbal, 0, balsente, sfootbal, balsente_state, sfootbal, ROT0, "Bally/Sente", "Street Football (11/12/86)", GAME_SUPPORTS_SAVE )
-GAME( 1986, spiker, 0, balsente, spiker, balsente_state, spiker, ROT0, "Bally/Sente", "Spiker", GAME_SUPPORTS_SAVE )
-GAME( 1986, spiker2, spiker, balsente, spiker, balsente_state, spiker, ROT0, "Bally/Sente", "Spiker (5/5/86)", GAME_SUPPORTS_SAVE )
-GAME( 1986, spiker3, spiker, balsente, spiker, balsente_state, spiker, ROT0, "Bally/Sente", "Spiker (6/9/86)", GAME_SUPPORTS_SAVE )
-GAME( 1986, stompin, 0, balsente, stompin, balsente_state, stompin, ROT0, "Bally/Sente", "Stompin' (4/4/86)", GAME_SUPPORTS_SAVE )
+GAME( 1986, nstocker, 0, balsente, nstocker, balsente_state, nstocker, ROT0, "Bally/Sente", "Night Stocker (10/6/86)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, nstocker2,nstocker, balsente, nstocker, balsente_state, nstocker, ROT0, "Bally/Sente", "Night Stocker (8/27/86)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sfootbal, 0, balsente, sfootbal, balsente_state, sfootbal, ROT0, "Bally/Sente", "Street Football (11/12/86)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, spiker, 0, balsente, spiker, balsente_state, spiker, ROT0, "Bally/Sente", "Spiker", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, spiker2, spiker, balsente, spiker, balsente_state, spiker, ROT0, "Bally/Sente", "Spiker (5/5/86)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, spiker3, spiker, balsente, spiker, balsente_state, spiker, ROT0, "Bally/Sente", "Spiker (6/9/86)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, stompin, 0, balsente, stompin, balsente_state, stompin, ROT0, "Bally/Sente", "Stompin' (4/4/86)", MACHINE_SUPPORTS_SAVE )
/* Board: A084-91889-A000 (Not a cartridge, but dedicated board) */
-GAME( 1987, rescraid, 0, balsente, rescraid, balsente_state, rescraid, ROT0, "Bally Midway", "Rescue Raider (5/11/87) (non-cartridge)", GAME_SUPPORTS_SAVE )
+GAME( 1987, rescraid, 0, balsente, rescraid, balsente_state, rescraid, ROT0, "Bally Midway", "Rescue Raider (5/11/87) (non-cartridge)", MACHINE_SUPPORTS_SAVE )
/* Board: Unknown */
-GAME( 1986, shrike, 0, shrike, shrike, balsente_state, shrike, ROT0, "Bally/Sente", "Shrike Avenger (prototype)", GAME_SUPPORTS_SAVE )
-GAME( 1987, rescraida,rescraid, balsente, rescraid, balsente_state, rescraid, ROT0, "Bally Midway", "Rescue Raider (stand-alone)", GAME_SUPPORTS_SAVE )
-GAME( 198?, grudge, 0, balsente, grudge, balsente_state, grudge, ROT0, "Bally Midway", "Grudge Match (prototype)", GAME_SUPPORTS_SAVE )
+GAME( 1986, shrike, 0, shrike, shrike, balsente_state, shrike, ROT0, "Bally/Sente", "Shrike Avenger (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, rescraida,rescraid, balsente, rescraid, balsente_state, rescraid, ROT0, "Bally Midway", "Rescue Raider (stand-alone)", MACHINE_SUPPORTS_SAVE )
+GAME( 198?, grudge, 0, balsente, grudge, balsente_state, grudge, ROT0, "Bally Midway", "Grudge Match (prototype)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/banctec.c b/src/mame/drivers/banctec.c
index 809959c1645..4a25e665b67 100644
--- a/src/mess/drivers/banctec.c
+++ b/src/mame/drivers/banctec.c
@@ -130,4 +130,4 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT MONITOR COMPANY FULLNAME */
-CONS( 1989, banctec, 0, 0, banctec, 0, driver_device, 0, "DALE Electronics", "BancTec ESeries Panel", GAME_NOT_WORKING | GAME_NO_SOUND)
+CONS( 1989, banctec, 0, 0, banctec, 0, driver_device, 0, "DALE Electronics", "BancTec ESeries Panel", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/bankp.c b/src/mame/drivers/bankp.c
index e5f88da087e..c26ddec4220 100644
--- a/src/mame/drivers/bankp.c
+++ b/src/mame/drivers/bankp.c
@@ -394,5 +394,5 @@ ROM_END
*
*************************************/
-GAME( 1984, bankp, 0, bankp, bankp, driver_device, 0, ROT0, "Sanritsu / Sega", "Bank Panic", GAME_SUPPORTS_SAVE )
-GAME( 1987, combh, 0, bankp, combh, driver_device, 0, ROT270, "Sanritsu / Sega", "Combat Hawk", GAME_SUPPORTS_SAVE )
+GAME( 1984, bankp, 0, bankp, bankp, driver_device, 0, ROT0, "Sanritsu / Sega", "Bank Panic", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, combh, 0, bankp, combh, driver_device, 0, ROT270, "Sanritsu / Sega", "Combat Hawk", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/barata.c b/src/mame/drivers/barata.c
index b5bde4e0f93..f41391919e8 100644
--- a/src/mame/drivers/barata.c
+++ b/src/mame/drivers/barata.c
@@ -329,4 +329,4 @@ ROM_END
/*************************
* Game Drivers *
*************************/
-GAME( 2002, barata, 0, barata, barata, driver_device, 0, ROT0, "Eletro Matic Equipamentos Eletromec??nicos", "Dona Barata (early prototype)", GAME_IMPERFECT_GRAPHICS )
+GAME( 2002, barata, 0, barata, barata, driver_device, 0, ROT0, "Eletro Matic Equipamentos Eletromec??nicos", "Dona Barata (early prototype)", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/bartop52.c b/src/mame/drivers/bartop52.c
index beca6acecda..62aa569b796 100644
--- a/src/mame/drivers/bartop52.c
+++ b/src/mame/drivers/bartop52.c
@@ -160,4 +160,4 @@ ROM_START(barbball)
ROM_LOAD( "5200.rom", 0xf800, 0x0800, BAD_DUMP CRC(4248d3e3) SHA1(6ad7a1e8c9fad486fbec9498cb48bf5bc3adc530) )
ROM_END
-GAME( 1983, barbball, 0, a5200, bartop52, driver_device, 0, ROT0, "Atari", "Barroom Baseball (prototype)", GAME_NOT_WORKING )
+GAME( 1983, barbball, 0, a5200, bartop52, driver_device, 0, ROT0, "Atari", "Barroom Baseball (prototype)", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/basic52.c b/src/mame/drivers/basic52.c
index 16af655f2b0..c8369c8b5c5 100644
--- a/src/mess/drivers/basic52.c
+++ b/src/mame/drivers/basic52.c
@@ -154,5 +154,5 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1985, basic52, 0, 0, basic52, basic52, driver_device, 0, "Intel", "MCS BASIC 52", GAME_NO_SOUND_HW)
-COMP( 1985, basic31, basic52, 0, basic31, basic52, driver_device, 0, "Intel", "MCS BASIC 31", GAME_NO_SOUND_HW)
+COMP( 1985, basic52, 0, 0, basic52, basic52, driver_device, 0, "Intel", "MCS BASIC 52", MACHINE_NO_SOUND_HW)
+COMP( 1985, basic31, basic52, 0, basic31, basic52, driver_device, 0, "Intel", "MCS BASIC 31", MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/batman.c b/src/mame/drivers/batman.c
index cf43ea1d7cb..00e1c69c5e6 100644
--- a/src/mame/drivers/batman.c
+++ b/src/mame/drivers/batman.c
@@ -306,4 +306,4 @@ ROM_END
*
*************************************/
-GAME( 1991, batman, 0, batman, batman, driver_device, 0, ROT0, "Atari Games", "Batman", GAME_SUPPORTS_SAVE )
+GAME( 1991, batman, 0, batman, batman, driver_device, 0, ROT0, "Atari Games", "Batman", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/battlane.c b/src/mame/drivers/battlane.c
index 622d0e46f04..bacf394c722 100644
--- a/src/mame/drivers/battlane.c
+++ b/src/mame/drivers/battlane.c
@@ -398,6 +398,6 @@ ROM_END
*
*************************************/
-GAME( 1986, battlane, 0, battlane, battlane, driver_device, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, battlane2, battlane, battlane, battlane, driver_device, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, battlane3, battlane, battlane, battlane, driver_device, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 3)", GAME_SUPPORTS_SAVE )
+GAME( 1986, battlane, 0, battlane, battlane, driver_device, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, battlane2, battlane, battlane, battlane, driver_device, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, battlane3, battlane, battlane, battlane, driver_device, 0, ROT90, "Technos Japan (Taito license)", "Battle Lane! Vol. 5 (set 3)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/battlera.c b/src/mame/drivers/battlera.c
index 00f9bcebbda..3ec503d7771 100644
--- a/src/mame/drivers/battlera.c
+++ b/src/mame/drivers/battlera.c
@@ -301,6 +301,6 @@ ROM_END
/******************************************************************************/
-GAME( 1988, battlera, 0, battlera, battlera, driver_device, 0, ROT0, "Data East Corporation", "Battle Rangers (World)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1988, bldwolf, battlera, battlera, battlera, driver_device, 0, ROT0, "Data East USA", "Bloody Wolf (US)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1988, bldwolfj, battlera, battlera, battlera, driver_device, 0, ROT0, "Data East Corporation", "Narazumono Sentoubutai Bloody Wolf (Japan)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1988, battlera, 0, battlera, battlera, driver_device, 0, ROT0, "Data East Corporation", "Battle Rangers (World)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, bldwolf, battlera, battlera, battlera, driver_device, 0, ROT0, "Data East USA", "Bloody Wolf (US)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, bldwolfj, battlera, battlera, battlera, driver_device, 0, ROT0, "Data East Corporation", "Narazumono Sentoubutai Bloody Wolf (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/battlex.c b/src/mame/drivers/battlex.c
index 780a82477eb..49a7d78c2c5 100644
--- a/src/mame/drivers/battlex.c
+++ b/src/mame/drivers/battlex.c
@@ -334,4 +334,4 @@ DRIVER_INIT_MEMBER(battlex_state,battlex)
*
*************************************/
-GAME( 1982, battlex, 0, battlex, battlex, battlex_state, battlex, ROT180, "Omori Electric Co., Ltd.", "Battle Cross", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1982, battlex, 0, battlex, battlex, battlex_state, battlex, ROT180, "Omori Electric Co., Ltd.", "Battle Cross", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/battlnts.c b/src/mame/drivers/battlnts.c
index 6b2cb895589..d3596e2d1b5 100644
--- a/src/mame/drivers/battlnts.c
+++ b/src/mame/drivers/battlnts.c
@@ -217,13 +217,10 @@ void battlnts_state::machine_start()
m_rombank->configure_entries(0, 4, &ROM[0x10000], 0x4000);
save_item(NAME(m_spritebank));
- save_item(NAME(m_layer_colorbase));
}
void battlnts_state::machine_reset()
{
- m_layer_colorbase[0] = 0;
- m_layer_colorbase[1] = 0;
m_spritebank = 0;
}
@@ -376,9 +373,9 @@ ROM_END
*
*************************************/
-GAME( 1987, battlnts, 0, battlnts, battlnts, driver_device, 0, ROT90, "Konami", "Battlantis (program code G)", GAME_SUPPORTS_SAVE )
-GAME( 1987, battlntsa, battlnts, battlnts, battlnts, driver_device, 0, ROT90, "Konami", "Battlantis (program code F)", GAME_SUPPORTS_SAVE )
-GAME( 1987, battlntsj, battlnts, battlnts, battlnts, driver_device, 0, ROT90, "Konami", "Battlantis (Japan, program code E)", GAME_SUPPORTS_SAVE )
-GAME( 1987, rackemup, 0, battlnts, rackemup, driver_device, 0, ROT90, "Konami", "Rack 'em Up (program code L)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1987, thehustl, rackemup, battlnts, thehustl, driver_device, 0, ROT90, "Konami", "The Hustler (Japan, program code M)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1987, thehustlj, rackemup, battlnts, thehustl, driver_device, 0, ROT90, "Konami", "The Hustler (Japan, program code J)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1987, battlnts, 0, battlnts, battlnts, driver_device, 0, ROT90, "Konami", "Battlantis (program code G)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, battlntsa, battlnts, battlnts, battlnts, driver_device, 0, ROT90, "Konami", "Battlantis (program code F)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, battlntsj, battlnts, battlnts, battlnts, driver_device, 0, ROT90, "Konami", "Battlantis (Japan, program code E)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, rackemup, 0, battlnts, rackemup, driver_device, 0, ROT90, "Konami", "Rack 'em Up (program code L)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, thehustl, rackemup, battlnts, thehustl, driver_device, 0, ROT90, "Konami", "The Hustler (Japan, program code M)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, thehustlj, rackemup, battlnts, thehustl, driver_device, 0, ROT90, "Konami", "The Hustler (Japan, program code J)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/bbc.c b/src/mame/drivers/bbc.c
index 5dfce63e4ef..8438eb87289 100644
--- a/src/mess/drivers/bbc.c
+++ b/src/mame/drivers/bbc.c
@@ -48,7 +48,6 @@
#include "cpu/m6502/m6502.h"
#include "cpu/m6502/m65sc02.h"
#include "machine/6522via.h"
-#include "machine/mc146818.h" /* RTC & CMOS RAM */
#include "bus/centronics/ctronics.h"
#include "bus/econet/econet.h"
#include "sound/tms5220.h" /* Speech */
@@ -58,7 +57,6 @@
/* Devices */
#include "imagedev/flopdrv.h"
#include "formats/bbc_dsk.h"
-#include "formats/basicdsk.h"
#include "imagedev/cassette.h"
#include "formats/uef_cas.h"
#include "formats/csw_cas.h"
@@ -138,120 +136,120 @@ READ8_MEMBER(bbc_state::bbc_fe_r)
}
static ADDRESS_MAP_START( bbca_mem, AS_PROGRAM, 8, bbc_state )
- ADDRESS_MAP_UNMAP_HIGH /* Hardware marked with a # is not present in a Model A */
+ ADDRESS_MAP_UNMAP_HIGH /* Hardware marked with a # is not present in a Model A */
+
+ AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */
+ AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Repeat of the Regular Ram */
+ AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */
+ AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */
+ AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */
+ /* fe00-feff SHEILA Address Page */
+ AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */
+ AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w)
+ AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w) /* fe08-fe0F 6850 ACIA Serial controller */
+ AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
+ AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */
+ AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID # ECONET Interrupt Off / ID No. */
+ AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON # ECONET Interrupt On */
+ /* W: fe20-fe2f Video ULA Video system chip */
+ AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w) /* R: fe30-fe3f NC Not Connected */
+ /* W: fe30-fe3f 84LS161 Paged ROM selector */
+ AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */
+ AM_RANGE(0xfe60, 0xfe7f) AM_NOP /* fe60-fe7f 6522 VIA # USER VIA */
+ AM_RANGE(0xfe80, 0xfe9f) AM_NOP /* fe80-fe9f 8271/1770 FDC # Floppy disc controller */
+ AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC # ECONET controller */
+ AM_RANGE(0xfec0, 0xfedf) AM_NOP /* fec0-fedf uPD7002 # Analogue to digital converter */
+ AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA # Tube system interface */
+ AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */
+ADDRESS_MAP_END
- AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Repeat of the Regular Ram */
- AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") /* 8000-bfff Paged ROM */
- AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */
- AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */
- /* fe00-feff Shiela Address Page */
- AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w) /* fe00-fe07 6845 CRTC Video controller */
- AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
+
+static ADDRESS_MAP_START( bbc_base, AS_PROGRAM, 8, bbc_state )
+ ADDRESS_MAP_UNMAP_HIGH
+
+ AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */
+ AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */
+ /* fe00-feff SHEILA Address Page */
+ AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */
+ AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w)
+ AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w) /* fe08-fe0F 6850 ACIA Serial controller */
AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
- AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */
- AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID # ECONET Interrupt Off / ID No. */
- AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON # ECONET Interrupt On */
- /* W: fe20-fe2f Video ULA Video system chip */
- AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w) /* R: fe30-fe3f NC Not Connected */
- /* W: fe30-fe3f 84LS161 Paged ROM selector */
- AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */
- AM_RANGE(0xfe60, 0xfe7f) AM_NOP /* fe60-fe7f 6522 VIA # USER VIA */
- AM_RANGE(0xfe80, 0xfe9f) AM_NOP /* fe80-fe9f 8271/1770 FDC # Floppy disc controller */
- AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC # ECONET controller */
- AM_RANGE(0xfec0, 0xfedf) AM_NOP /* fec0-fedf uPD7002 # Analogue to digital converter */
- AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA # Tube system interface */
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */
+ AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */
+ AM_RANGE(0xfe18, 0xfe1f) AM_READ_PORT("S11") /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */
+ AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */
+ /* W: fe20-fe2f Video ULA Video system chip */
+ AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */
+ AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */
+ /* fe80-fe9f FDC Floppy disc controller */
+ AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */
+ AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */
+ AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */
+ AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS ROM (continued) */
ADDRESS_MAP_END
static ADDRESS_MAP_START( bbcb_mem, AS_PROGRAM, 8, bbc_state )
- ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */
+ AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Regular Ram */
+ AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */
+ AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w) /* R: fe30-fe3f NC Not Connected */
+ /* W: fe30-fe3f 84LS161 Paged ROM selector */
+ AM_RANGE(0xfe80, 0xfe83) AM_DEVICE("i8271" , i8271_device, map) /* fe80-fe9f 8271 FDC Floppy disc controller */
+ AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("i8271", i8271_device, data_r, data_w) /* fe80-fe9f 8271 FDC Floppy disc controller */
+ AM_IMPORT_FROM(bbc_base)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(bbcb1770_mem, AS_PROGRAM, 8, bbc_state)
AM_RANGE(0x0000, 0x3fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorya1_w) /* 0000-3fff Regular Ram */
- AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Repeat of the Regular Ram */
+ AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Regular Ram */
AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */
- AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */
- AM_RANGE(0xfc00, 0xfdff) AM_READWRITE(bbc_opus_read, bbc_opus_write) /* fc00-fdff OPUS Disc Controller */
- /* fe00-feff Shiela Address Page */
- AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w) /* fe00-fe07 6845 CRTC Video controller */
- AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
- AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
- AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */
- AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */
- AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */
- /* W: fe20-fe2f Video ULA Video system chip */
AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w) /* R: fe30-fe3f NC Not Connected */
/* W: fe30-fe3f 84LS161 Paged ROM selector */
- AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */
- AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */
- AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_disc_r, bbc_disc_w) /* fe80-fe9f 8271 FDC Floppy disc controller */
- AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */
- AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */
- AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */
+ AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */
+ AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */
+ AM_IMPORT_FROM(bbc_base)
ADDRESS_MAP_END
static ADDRESS_MAP_START( bbcbp_mem, AS_PROGRAM, 8, bbc_state )
- ADDRESS_MAP_UNMAP_HIGH
-
AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */
AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */
AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w) /* 8000-afff Paged ROM or 12K of SWRAM */
AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") /* b000-bfff Rest of paged ROM area */
- AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */
- AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */
- /* fe00-feff Shiela Address Page */
- AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w) /* fe00-fe07 6845 CRTC Video controller */
- AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
- AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
- AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */
- AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */
- AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */
- /* W: fe20-fe2f Video ULA Video system chip */
AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */
/* W: fe30-fe3f 84LS161 Paged ROM selector */
- AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */
- AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */
- AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_wd1770_read, bbc_wd1770_write) /* fe80-fe9f 1770 FDC Floppy disc controller */
- AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */
- AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */
- AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */
+ AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */
+ AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */
+ AM_IMPORT_FROM(bbc_base)
ADDRESS_MAP_END
static ADDRESS_MAP_START( bbcbp128_mem, AS_PROGRAM, 8, bbc_state )
- ADDRESS_MAP_UNMAP_HIGH
-
AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */
AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */
AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_128_w) /* 8000-afff Paged ROM or 12K of SWRAM */
AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE(bbc_memorybp6_128_w) /* b000-bfff Rest of paged ROM area */
- AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */
- AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */
- /* fe00-feff Shiela Address Page */
- AM_RANGE(0xfe00, 0xfe07) AM_READWRITE(bbc_6845_r, bbc_6845_w) /* fe00-fe07 6845 CRTC Video controller */
- AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)
- AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
- AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */
- AM_RANGE(0xfe10, 0xfe17) AM_NOP /* fe10-fe17 Serial ULA Serial system chip */
- AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */
- AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */
- /* W: fe20-fe2f Video ULA Video system chip */
AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */
/* W: fe30-fe3f 84LS161 Paged ROM selector */
- AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */
- AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */
- AM_RANGE(0xfe80, 0xfe9f) AM_READWRITE(bbc_wd1770_read, bbc_wd1770_write) /* fe80-fe9f 1770 FDC Floppy disc controller */
- AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */
- AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */
- AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS Rom (continued) */
+ AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */
+ AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */
+ AM_IMPORT_FROM(bbc_base)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( reutapm_mem, AS_PROGRAM, 8, bbc_state )
+ AM_RANGE(0x0000, 0x2fff) AM_READ_BANK("bank1") AM_WRITE(bbc_memorybp1_w) /* 0000-2fff Regular Ram */
+ AM_RANGE(0x3000, 0x7fff) AM_READ_BANK("bank2") AM_WRITE(bbc_memorybp2_w) /* 3000-7fff Video/Shadow Ram */
+ AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w) /* 8000-afff Paged ROM or 12K of SWRAM */
+ AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") /* b000-bfff Rest of paged ROM area */
+ AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */
+ /* W: fe30-fe3f 84LS161 Paged ROM selector */
+ AM_RANGE(0xfe80, 0xfe83) AM_NOP /* fe80-fe83 1770 FDC Drive control register */
+ AM_RANGE(0xfe84, 0xfe9f) AM_NOP /* fe84-fe9f 1770 FDC Floppy disc controller */
+ AM_IMPORT_FROM(bbc_base)
+ADDRESS_MAP_END
+
/******************************************************************************
&FC00-&FCFF FRED
&FD00-&FDFF JIM
@@ -263,7 +261,7 @@ ADDRESS_MAP_END
&20-&23 Video ULA - Video system chip 4 ( 2 bytes x 2 )
&24-&27 FDC Latch 1770 Control latch 1770 Control latch 4 ( 1 byte x 4 )
-&28-&2F 1770 registers 1770 Disc Controller 1170 Disc Controller 8 ( 4 bytes x 2 )
+&28-&2F 1770 registers 1770 Disc Controller 1770 Disc Controller 8 ( 4 bytes x 2 )
&30-&33 ROMSEL - ROM Select 4 ( 1 byte x 4 )
&34-&37 ACCCON ACCCON select reg. ACCCON select reg 4 ( 1 byte x 4 )
&38-&3F NC - -
@@ -282,9 +280,9 @@ static ADDRESS_MAP_START(bbcm_mem, AS_PROGRAM, 8, bbc_state )
AM_RANGE(0x8000, 0x8fff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybm4_w) /* 8000-8fff Paged ROM/RAM or 4K of RAM ANDY */
AM_RANGE(0x9000, 0xbfff) AM_READ_BANK("bank5") AM_WRITE(bbc_memorybm5_w) /* 9000-bfff Rest of paged ROM/RAM area */
AM_RANGE(0xc000, 0xdfff) AM_READ_BANK("bank7") AM_WRITE(bbc_memorybm7_w) /* c000-dfff OS ROM or 8K of RAM HAZEL */
- AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("os", 0x2000) /* e000-fbff OS ROM */
- AM_RANGE(0xfc00, 0xfeff) AM_READ_BANK("bank8") AM_WRITE(bbcm_w) /* this is now processed directly because it can be ROM or hardware */
- AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS ROM (continued) */
+ AM_RANGE(0xe000, 0xfbff) AM_ROM AM_REGION("os", 0x2000) /* e000-fbff OS ROM */
+ AM_RANGE(0xfc00, 0xfeff) AM_READ_BANK("bank8") AM_WRITE(bbcm_w) /* processed directly because it can be ROM or hardware */
+ AM_RANGE(0xff00, 0xffff) AM_ROM AM_REGION("os", 0x3f00) /* ff00-ffff OS ROM (continued) */
ADDRESS_MAP_END
@@ -464,47 +462,105 @@ INPUT_PORTS_END
static INPUT_PORTS_START(bbc_dipswitch)
PORT_MODIFY("COL2")
- PORT_DIPNAME(0x01, 0x01, "DIP 8 (Default File System)")
+ PORT_DIPNAME(0x01, 0x01, "Default File System") PORT_DIPLOCATION("KBD:1")
PORT_DIPSETTING( 0x00, "NFS" )
PORT_DIPSETTING( 0x01, "DFS" )
PORT_MODIFY("COL3")
- PORT_DIPNAME(0x01, 0x01, "DIP 7 (Not Used)")
+ PORT_DIPNAME(0x01, 0x01, "Not Used") PORT_DIPLOCATION("KBD:2")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x01, DEF_STR( On ))
PORT_MODIFY("COL4")
- PORT_DIPNAME(0x01, 0x01, "DIP 6 (Disc Timings)")
+ PORT_DIPNAME(0x01, 0x01, "Disc Timings") PORT_DIPLOCATION("KBD:3")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x01, DEF_STR( On ))
PORT_MODIFY("COL5")
- PORT_DIPNAME(0x01, 0x01, "DIP 5 (Disc Timings)")
+ PORT_DIPNAME(0x01, 0x01, "Disc Timings") PORT_DIPLOCATION("KBD:4")
PORT_DIPSETTING( 0x00, DEF_STR( Off ))
PORT_DIPSETTING( 0x01, DEF_STR( On ))
PORT_MODIFY("COL6")
- PORT_DIPNAME(0x01, 0x01, "DIP 4 (Boot)")
+ PORT_DIPNAME(0x01, 0x01, "Boot") PORT_DIPLOCATION("KBD:5")
PORT_DIPSETTING( 0x00, "SHIFT" )
PORT_DIPSETTING( 0x01, "SHIFT-BREAK" )
PORT_MODIFY("COL7")
- PORT_DIPNAME(0x01, 0x01, "DIP 3 (Screen Mode)")
+ PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:6")
PORT_DIPSETTING( 0x00, "+0" )
PORT_DIPSETTING( 0x01, "+4" )
PORT_MODIFY("COL8")
- PORT_DIPNAME(0x01, 0x01, "DIP 2 (Screen Mode)")
+ PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:7")
PORT_DIPSETTING( 0x00, "+0" )
PORT_DIPSETTING( 0x01, "+2" )
PORT_MODIFY("COL9")
- PORT_DIPNAME(0x01, 0x01, "DIP 1 (Screen Mode)")
+ PORT_DIPNAME(0x01, 0x01, "Screen Mode") PORT_DIPLOCATION("KBD:8")
PORT_DIPSETTING( 0x00, "+0" )
PORT_DIPSETTING( 0x01, "+1" )
INPUT_PORTS_END
+static INPUT_PORTS_START(bbc_links)
+ PORT_START("S11")
+ PORT_DIPNAME(0xff, 0xfe, "Econet ID") PORT_DIPLOCATION("S11:1,2,3,4,5,6,7,8")
+ PORT_DIPSETTING( 0x00, "0" ) PORT_DIPSETTING( 0x01, "1" ) PORT_DIPSETTING( 0x02, "2" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPSETTING( 0x04, "4" )
+ PORT_DIPSETTING( 0x05, "5" ) PORT_DIPSETTING( 0x06, "6" ) PORT_DIPSETTING( 0x07, "7" ) PORT_DIPSETTING( 0x08, "8" ) PORT_DIPSETTING( 0x09, "9" )
+ PORT_DIPSETTING( 0x0a, "10" ) PORT_DIPSETTING( 0x0b, "11" ) PORT_DIPSETTING( 0x0c, "12" ) PORT_DIPSETTING( 0x0d, "13" ) PORT_DIPSETTING( 0x0e, "14" )
+ PORT_DIPSETTING( 0x0f, "15" ) PORT_DIPSETTING( 0x10, "16" ) PORT_DIPSETTING( 0x11, "17" ) PORT_DIPSETTING( 0x12, "18" ) PORT_DIPSETTING( 0x13, "19" )
+ PORT_DIPSETTING( 0x14, "20" ) PORT_DIPSETTING( 0x15, "21" ) PORT_DIPSETTING( 0x16, "22" ) PORT_DIPSETTING( 0x17, "23" ) PORT_DIPSETTING( 0x18, "24" )
+ PORT_DIPSETTING( 0x19, "25" ) PORT_DIPSETTING( 0x1a, "26" ) PORT_DIPSETTING( 0x1b, "27" ) PORT_DIPSETTING( 0x1c, "28" ) PORT_DIPSETTING( 0x1d, "29" )
+ PORT_DIPSETTING( 0x1e, "30" ) PORT_DIPSETTING( 0x1f, "31" ) PORT_DIPSETTING( 0x20, "32" ) PORT_DIPSETTING( 0x21, "33" ) PORT_DIPSETTING( 0x22, "34" )
+ PORT_DIPSETTING( 0x23, "35" ) PORT_DIPSETTING( 0x24, "36" ) PORT_DIPSETTING( 0x25, "37" ) PORT_DIPSETTING( 0x26, "38" ) PORT_DIPSETTING( 0x27, "39" )
+ PORT_DIPSETTING( 0x28, "40" ) PORT_DIPSETTING( 0x29, "41" ) PORT_DIPSETTING( 0x2a, "42" ) PORT_DIPSETTING( 0x2b, "43" ) PORT_DIPSETTING( 0x2c, "44" )
+ PORT_DIPSETTING( 0x2d, "45" ) PORT_DIPSETTING( 0x2e, "46" ) PORT_DIPSETTING( 0x2f, "47" ) PORT_DIPSETTING( 0x30, "48" ) PORT_DIPSETTING( 0x31, "49" )
+ PORT_DIPSETTING( 0x32, "50" ) PORT_DIPSETTING( 0x33, "51" ) PORT_DIPSETTING( 0x34, "52" ) PORT_DIPSETTING( 0x35, "53" ) PORT_DIPSETTING( 0x36, "54" )
+ PORT_DIPSETTING( 0x37, "15" ) PORT_DIPSETTING( 0x38, "56" ) PORT_DIPSETTING( 0x39, "57" ) PORT_DIPSETTING( 0x3a, "58" ) PORT_DIPSETTING( 0x3b, "59" )
+ PORT_DIPSETTING( 0x3c, "60" ) PORT_DIPSETTING( 0x3d, "61" ) PORT_DIPSETTING( 0x3e, "62" ) PORT_DIPSETTING( 0x3f, "63" ) PORT_DIPSETTING( 0x40, "64" )
+ PORT_DIPSETTING( 0x41, "65" ) PORT_DIPSETTING( 0x42, "66" ) PORT_DIPSETTING( 0x43, "67" ) PORT_DIPSETTING( 0x44, "68" ) PORT_DIPSETTING( 0x45, "69" )
+ PORT_DIPSETTING( 0x46, "70" ) PORT_DIPSETTING( 0x47, "71" ) PORT_DIPSETTING( 0x48, "72" ) PORT_DIPSETTING( 0x49, "73" ) PORT_DIPSETTING( 0x4a, "74" )
+ PORT_DIPSETTING( 0x4b, "75" ) PORT_DIPSETTING( 0x4c, "76" ) PORT_DIPSETTING( 0x4d, "77" ) PORT_DIPSETTING( 0x4e, "78" ) PORT_DIPSETTING( 0x4f, "79" )
+ PORT_DIPSETTING( 0x50, "80" ) PORT_DIPSETTING( 0x51, "81" ) PORT_DIPSETTING( 0x52, "82" ) PORT_DIPSETTING( 0x53, "83" ) PORT_DIPSETTING( 0x54, "84" )
+ PORT_DIPSETTING( 0x55, "85" ) PORT_DIPSETTING( 0x56, "86" ) PORT_DIPSETTING( 0x57, "87" ) PORT_DIPSETTING( 0x58, "88" ) PORT_DIPSETTING( 0x59, "89" )
+ PORT_DIPSETTING( 0x5a, "90" ) PORT_DIPSETTING( 0x5b, "91" ) PORT_DIPSETTING( 0x5c, "92" ) PORT_DIPSETTING( 0x5d, "93" ) PORT_DIPSETTING( 0x5e, "94" )
+ PORT_DIPSETTING( 0x5f, "95" ) PORT_DIPSETTING( 0x60, "96" ) PORT_DIPSETTING( 0x61, "97" ) PORT_DIPSETTING( 0x62, "98" ) PORT_DIPSETTING( 0x63, "99" )
+ PORT_DIPSETTING( 0x64, "100" ) PORT_DIPSETTING( 0x65, "101" ) PORT_DIPSETTING( 0x66, "102" ) PORT_DIPSETTING( 0x67, "103" ) PORT_DIPSETTING( 0x68, "104" )
+ PORT_DIPSETTING( 0x69, "105" ) PORT_DIPSETTING( 0x6a, "106" ) PORT_DIPSETTING( 0x6b, "107" ) PORT_DIPSETTING( 0x6c, "108" ) PORT_DIPSETTING( 0x6d, "109" )
+ PORT_DIPSETTING( 0x6e, "110" ) PORT_DIPSETTING( 0x6f, "111" ) PORT_DIPSETTING( 0x70, "112" ) PORT_DIPSETTING( 0x71, "113" ) PORT_DIPSETTING( 0x72, "114" )
+ PORT_DIPSETTING( 0x73, "115" ) PORT_DIPSETTING( 0x74, "116" ) PORT_DIPSETTING( 0x75, "117" ) PORT_DIPSETTING( 0x76, "118" ) PORT_DIPSETTING( 0x77, "119" )
+ PORT_DIPSETTING( 0x78, "120" ) PORT_DIPSETTING( 0x79, "121" ) PORT_DIPSETTING( 0x7a, "122" ) PORT_DIPSETTING( 0x7b, "123" ) PORT_DIPSETTING( 0x7c, "124" )
+ PORT_DIPSETTING( 0x7d, "125" ) PORT_DIPSETTING( 0x7e, "126" ) PORT_DIPSETTING( 0x7f, "127" ) PORT_DIPSETTING( 0x80, "128" ) PORT_DIPSETTING( 0x81, "129" )
+ PORT_DIPSETTING( 0x82, "130" ) PORT_DIPSETTING( 0x83, "131" ) PORT_DIPSETTING( 0x84, "132" ) PORT_DIPSETTING( 0x85, "133" ) PORT_DIPSETTING( 0x86, "134" )
+ PORT_DIPSETTING( 0x87, "135" ) PORT_DIPSETTING( 0x88, "136" ) PORT_DIPSETTING( 0x89, "137" ) PORT_DIPSETTING( 0x8a, "138" ) PORT_DIPSETTING( 0x8b, "139" )
+ PORT_DIPSETTING( 0x8c, "140" ) PORT_DIPSETTING( 0x8d, "141" ) PORT_DIPSETTING( 0x8e, "142" ) PORT_DIPSETTING( 0x8f, "143" ) PORT_DIPSETTING( 0x90, "144" )
+ PORT_DIPSETTING( 0x91, "145" ) PORT_DIPSETTING( 0x92, "146" ) PORT_DIPSETTING( 0x93, "147" ) PORT_DIPSETTING( 0x94, "148" ) PORT_DIPSETTING( 0x95, "149" )
+ PORT_DIPSETTING( 0x96, "150" ) PORT_DIPSETTING( 0x97, "151" ) PORT_DIPSETTING( 0x98, "152" ) PORT_DIPSETTING( 0x99, "153" ) PORT_DIPSETTING( 0x9a, "154" )
+ PORT_DIPSETTING( 0x9b, "155" ) PORT_DIPSETTING( 0x9c, "156" ) PORT_DIPSETTING( 0x9d, "157" ) PORT_DIPSETTING( 0x9e, "158" ) PORT_DIPSETTING( 0x9f, "159" )
+ PORT_DIPSETTING( 0xa0, "160" ) PORT_DIPSETTING( 0xa1, "161" ) PORT_DIPSETTING( 0xa2, "162" ) PORT_DIPSETTING( 0xa3, "163" ) PORT_DIPSETTING( 0xa4, "164" )
+ PORT_DIPSETTING( 0xa5, "165" ) PORT_DIPSETTING( 0xa6, "166" ) PORT_DIPSETTING( 0xa7, "167" ) PORT_DIPSETTING( 0xa8, "168" ) PORT_DIPSETTING( 0xa9, "169" )
+ PORT_DIPSETTING( 0xaa, "170" ) PORT_DIPSETTING( 0xab, "171" ) PORT_DIPSETTING( 0xac, "172" ) PORT_DIPSETTING( 0xad, "173" ) PORT_DIPSETTING( 0xae, "174" )
+ PORT_DIPSETTING( 0xaf, "175" ) PORT_DIPSETTING( 0xb0, "176" ) PORT_DIPSETTING( 0xb1, "177" ) PORT_DIPSETTING( 0xb2, "178" ) PORT_DIPSETTING( 0xb3, "179" )
+ PORT_DIPSETTING( 0xb4, "180" ) PORT_DIPSETTING( 0xb5, "181" ) PORT_DIPSETTING( 0xb6, "182" ) PORT_DIPSETTING( 0xb7, "183" ) PORT_DIPSETTING( 0xb8, "184" )
+ PORT_DIPSETTING( 0xb9, "185" ) PORT_DIPSETTING( 0xba, "186" ) PORT_DIPSETTING( 0xbb, "187" ) PORT_DIPSETTING( 0xbc, "188" ) PORT_DIPSETTING( 0xbd, "189" )
+ PORT_DIPSETTING( 0xbe, "190" ) PORT_DIPSETTING( 0xbf, "191" ) PORT_DIPSETTING( 0xc0, "192" ) PORT_DIPSETTING( 0xc1, "193" ) PORT_DIPSETTING( 0xc2, "194" )
+ PORT_DIPSETTING( 0xc3, "195" ) PORT_DIPSETTING( 0xc4, "196" ) PORT_DIPSETTING( 0xc5, "197" ) PORT_DIPSETTING( 0xc6, "198" ) PORT_DIPSETTING( 0xc7, "199" )
+ PORT_DIPSETTING( 0xc8, "200" ) PORT_DIPSETTING( 0xc9, "201" ) PORT_DIPSETTING( 0xca, "202" ) PORT_DIPSETTING( 0xcb, "203" ) PORT_DIPSETTING( 0xcc, "204" )
+ PORT_DIPSETTING( 0xcd, "205" ) PORT_DIPSETTING( 0xce, "206" ) PORT_DIPSETTING( 0xcf, "207" ) PORT_DIPSETTING( 0xd0, "208" ) PORT_DIPSETTING( 0xd1, "209" )
+ PORT_DIPSETTING( 0xd2, "210" ) PORT_DIPSETTING( 0xd3, "211" ) PORT_DIPSETTING( 0xd4, "212" ) PORT_DIPSETTING( 0xd5, "213" ) PORT_DIPSETTING( 0xd6, "214" )
+ PORT_DIPSETTING( 0xd7, "215" ) PORT_DIPSETTING( 0xd8, "216" ) PORT_DIPSETTING( 0xd9, "217" ) PORT_DIPSETTING( 0xda, "218" ) PORT_DIPSETTING( 0xdb, "219" )
+ PORT_DIPSETTING( 0xdc, "220" ) PORT_DIPSETTING( 0xdd, "221" ) PORT_DIPSETTING( 0xde, "222" ) PORT_DIPSETTING( 0xdf, "223" ) PORT_DIPSETTING( 0xe0, "224" )
+ PORT_DIPSETTING( 0xe1, "225" ) PORT_DIPSETTING( 0xe2, "226" ) PORT_DIPSETTING( 0xe3, "227" ) PORT_DIPSETTING( 0xe4, "228" ) PORT_DIPSETTING( 0xe5, "229" )
+ PORT_DIPSETTING( 0xe6, "230" ) PORT_DIPSETTING( 0xe7, "231" ) PORT_DIPSETTING( 0xe8, "232" ) PORT_DIPSETTING( 0xe9, "233" ) PORT_DIPSETTING( 0xea, "234" )
+ PORT_DIPSETTING( 0xeb, "235" ) PORT_DIPSETTING( 0xec, "236" ) PORT_DIPSETTING( 0xed, "237" ) PORT_DIPSETTING( 0xee, "238" ) PORT_DIPSETTING( 0xef, "239" )
+ PORT_DIPSETTING( 0xf0, "240" ) PORT_DIPSETTING( 0xf1, "241" ) PORT_DIPSETTING( 0xf2, "242" ) PORT_DIPSETTING( 0xf3, "243" ) PORT_DIPSETTING( 0xf4, "244" )
+ PORT_DIPSETTING( 0xf5, "245" ) PORT_DIPSETTING( 0xf6, "246" ) PORT_DIPSETTING( 0xf7, "247" ) PORT_DIPSETTING( 0xf8, "248" ) PORT_DIPSETTING( 0xf9, "249" )
+ PORT_DIPSETTING( 0xfa, "250" ) PORT_DIPSETTING( 0xfb, "251" ) PORT_DIPSETTING( 0xfc, "252" ) PORT_DIPSETTING( 0xfd, "253" ) PORT_DIPSETTING( 0xfe, "254" )
+ PORT_DIPSETTING( 0xff, "255" )
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START(bbc_joy)
PORT_START("JOY0")
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_MINMAX(0x0,0xff ) PORT_PLAYER(1)
@@ -523,19 +579,9 @@ INPUT_PORTS_END
static INPUT_PORTS_START(bbc_config)
PORT_START("BBCCONFIG")
-// PORT_CONFNAME( 0x01, 0x00, "Speech Upgrade" )
-// PORT_CONFSETTING( 0x00, DEF_STR( On ) )
-// PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
-
- PORT_CONFNAME( 0x07, 0x00, "DFS Select" )
- PORT_CONFSETTING( 0x00, "Acorn DFS 0.90 (read only)" )
- PORT_CONFSETTING( 0x01, "Acorn DNFS 1.20 (read only)" )
- PORT_CONFSETTING( 0x02, "Watford DFS 1.44 (read only)" )
- PORT_CONFSETTING( 0x03, "Acorn DFS E00 (hack / read only)" )
- PORT_CONFSETTING( 0x04, "Acorn DDFS" )
- PORT_CONFSETTING( 0x05, "Watford DDFS (not working)" )
- PORT_CONFSETTING( 0x06, "Opus Challenger 512K (RAM drive only)" )
- PORT_CONFSETTING( 0x07, DEF_STR( None ) )
+ PORT_CONFNAME( 0x01, 0x00, "Speech Upgrade" )
+ PORT_CONFSETTING( 0x00, DEF_STR( On ) )
+ PORT_CONFSETTING( 0x01, DEF_STR( Off ) )
PORT_CONFNAME( 0x18, 0x00, "Sideways RAM Type" )
PORT_CONFSETTING( 0x00, DEF_STR( None ) )
@@ -554,6 +600,15 @@ static INPUT_PORTS_START(bbcb)
PORT_INCLUDE(bbc_config)
PORT_INCLUDE(bbc_keyboard)
PORT_INCLUDE(bbc_dipswitch)
+ PORT_INCLUDE(bbc_links)
+ PORT_INCLUDE(bbc_joy)
+INPUT_PORTS_END
+
+static INPUT_PORTS_START(abc)
+ PORT_INCLUDE(bbc_keyboard)
+ PORT_INCLUDE(bbc_keypad)
+ PORT_INCLUDE(bbc_dipswitch)
+ PORT_INCLUDE(bbc_links)
PORT_INCLUDE(bbc_joy)
INPUT_PORTS_END
@@ -572,15 +627,6 @@ INTERRUPT_GEN_MEMBER(bbc_state::bbcb_vsync)
}
-//static const struct TMS5220interface tms5220_interface =
-//{
-// 680000L,
-// 50,
-// bbc_TMSint
-//};
-
-
-
WRITE_LINE_MEMBER(bbc_state::bbcb_acia6850_irq_w)
{
m_acia_irq = state;
@@ -588,33 +634,23 @@ WRITE_LINE_MEMBER(bbc_state::bbcb_acia6850_irq_w)
check_interrupts();
}
-static LEGACY_FLOPPY_OPTIONS_START(bbc)
- LEGACY_FLOPPY_OPTION( ssd80, "bbc,img,ssd", "BBC SSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
- HEADS([1])
- TRACKS([80])
- SECTORS([10])
- SECTOR_LENGTH([256])
- FIRST_SECTOR_ID([0]))
- LEGACY_FLOPPY_OPTION( dsd80, "dsd", "BBC DSD disk image", basicdsk_identify_default, basicdsk_construct_default, NULL,
- HEADS([2])
- TRACKS([80])
- SECTORS([10])
- SECTOR_LENGTH([256])
- FIRST_SECTOR_ID([0]))
-LEGACY_FLOPPY_OPTIONS_END
-
-static const floppy_interface bbc_floppy_interface =
-{
- FLOPPY_STANDARD_5_25_DSDD,
- LEGACY_FLOPPY_OPTIONS_NAME(bbc),
- "floppy_5_25"
-};
-FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats )
- FLOPPY_BBC_FORMAT
+FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525sd )
+ FLOPPY_BBC_SSD_525_FORMAT,
+ FLOPPY_BBC_DSD_525_FORMAT
FLOPPY_FORMATS_END
-static SLOT_INTERFACE_START( bbc_floppies )
+FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_525dd )
+ FLOPPY_BBC_SSD_525_FORMAT,
+ FLOPPY_BBC_DSD_525_FORMAT,
+ FLOPPY_BBC_ADF_525_FORMAT
+FLOPPY_FORMATS_END
+
+FLOPPY_FORMATS_MEMBER( bbc_state::floppy_formats_35dd )
+ FLOPPY_BBC_ADF_35_FORMAT
+FLOPPY_FORMATS_END
+
+static SLOT_INTERFACE_START( bbc_floppies_525 )
SLOT_INTERFACE("sssd", FLOPPY_525_SSSD)
SLOT_INTERFACE("sd", FLOPPY_525_SD)
SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD)
@@ -623,6 +659,10 @@ static SLOT_INTERFACE_START( bbc_floppies )
SLOT_INTERFACE("qd", FLOPPY_525_QD)
SLOT_INTERFACE_END
+static SLOT_INTERFACE_START( bbc_floppies_35 )
+ SLOT_INTERFACE("qd", FLOPPY_35_DD)
+SLOT_INTERFACE_END
+
WRITE_LINE_MEMBER(bbc_state::econet_clk_w)
{
m_adlc->rxc_w(state);
@@ -649,6 +689,13 @@ static MACHINE_CONFIG_FRAGMENT( bbc_eprom_sockets )
MACHINE_CONFIG_END
+/***************************************************************************
+
+ BBC Micro
+
+****************************************************************************/
+
+
static MACHINE_CONFIG_START( bbca, bbc_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6502, 2000000) /* 2.00 MHz */
@@ -747,8 +794,9 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca )
MCFG_RAM_DEFAULT_VALUE(0x00)
/* speech hardware */
-// MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
-// MCFG_TMS52XX_SPEECHROM("vsm")
+ MCFG_DEVICE_ADD("vsm", SPEECHROM, 0)
+ MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
+ MCFG_TMS52XX_SPEECHROM("vsm")
/* user via */
MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
@@ -766,22 +814,15 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca )
/* printer */
MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
-
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
/* fdc */
- MCFG_DEVICE_ADD("i8271", I8271, 0)
+ MCFG_DEVICE_ADD("i8271" , I8271 , 0)
MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt))
- MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1)
-
- MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
-
- MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
- MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
- MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
-
- MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
+ MCFG_I8271_HDL_CALLBACK(WRITELINE(bbc_state, motor_w))
+ MCFG_I8271_OPT_CALLBACK(WRITELINE(bbc_state, side_w))
+ MCFG_FLOPPY_DRIVE_ADD("i8271:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525sd)
+ MCFG_FLOPPY_DRIVE_ADD("i8271:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525sd)
/* software lists */
MCFG_DEVICE_REMOVE("cass_ls_a")
@@ -790,71 +831,48 @@ static MACHINE_CONFIG_DERIVED( bbcb, bbca )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( bbcb_us, bbca )
+static MACHINE_CONFIG_DERIVED(bbcb1770, bbcb)
/* basic machine hardware */
- MCFG_CPU_MODIFY( "maincpu" )
- MCFG_CPU_PROGRAM_MAP(bbcb_mem)
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(bbcb1770_mem)
- MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcb )
- MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcb )
- MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcb )
+ /* fdc */
+ MCFG_DEVICE_REMOVE("i8271")
- /* internal ram */
- MCFG_RAM_MODIFY(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("32K")
- MCFG_RAM_DEFAULT_VALUE(0x00)
+ MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2)
+ MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
+ MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
+
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( bbcb_de, bbcb )
+ /* software lists */
+ MCFG_DEVICE_REMOVE("cass_ls_b")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_b_de", "bbcb_de_cass")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
+MACHINE_CONFIG_END
- /* speech hardware */
-// MCFG_SOUND_ADD("tms5220", TMS5220, 640000)
-// MCFG_TMS52XX_SPEECHROM("vsm")
+static MACHINE_CONFIG_DERIVED( bbcb_us, bbcb )
/* video hardware */
MCFG_SCREEN_MODIFY("screen")
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_REFRESH_RATE(60)
- /* system via */
- MCFG_DEVICE_ADD("via6522_1", VIA6522, 1000000)
- MCFG_VIA6522_READPB_HANDLER(READ8(bbc_state, bbcb_via_user_read_portb))
- MCFG_VIA6522_WRITEPA_HANDLER(DEVWRITE8("cent_data_out", output_latch_device, write))
- MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(bbc_state, bbcb_via_user_write_portb))
- MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE("centronics", centronics_device, write_strobe))
- MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w))
-
- /* adc */
- MCFG_DEVICE_ADD("upd7002", UPD7002, 0)
- MCFG_UPD7002_GET_ANALOGUE_CB(bbc_state, BBC_get_analogue_input)
- MCFG_UPD7002_EOC_CB(bbc_state, BBC_uPD7002_EOC)
-
- /* printer */
- MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
- MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
-
- MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
-
- /* fdc */
- MCFG_DEVICE_ADD("i8271", I8271, 0)
- MCFG_I8271_IRQ_CALLBACK(WRITELINE(bbc_state, bbc_i8271_interrupt))
- MCFG_I8271_FLOPPIES(FLOPPY_0, FLOPPY_1)
-
- MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(bbc_floppy_interface)
-
- MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
- MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
- MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
-
- MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
-
/* software lists */
- MCFG_DEVICE_REMOVE("cass_ls_a")
- MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass")
- MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_a", "bbca_cass")
+ MCFG_DEVICE_REMOVE("cass_ls_b")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_b_us", "bbcb_us_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( bbcbp, bbcb )
+static MACHINE_CONFIG_DERIVED( bbcbp, bbcb1770 )
/* basic machine hardware */
MCFG_CPU_MODIFY( "maincpu" ) /* M6512 */
MCFG_CPU_PROGRAM_MAP(bbcbp_mem)
@@ -867,18 +885,14 @@ static MACHINE_CONFIG_DERIVED( bbcbp, bbcb )
MCFG_RAM_MODIFY(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("64K")
MCFG_RAM_DEFAULT_VALUE(0x00)
-
- /* fdc */
- MCFG_DEVICE_REMOVE("i8271")
- MCFG_DEVICE_REMOVE(FLOPPY_0)
- MCFG_DEVICE_REMOVE(FLOPPY_1)
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( bbcbp128, bbcbp )
+static MACHINE_CONFIG_DERIVED( bbcbp128, bbcb1770 )
/* basic machine hardware */
MCFG_CPU_MODIFY( "maincpu" ) /* M6512 */
MCFG_CPU_PROGRAM_MAP(bbcbp128_mem)
+
MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcbp)
MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcbp)
MCFG_VIDEO_START_OVERRIDE(bbc_state, bbcbp)
@@ -890,7 +904,90 @@ static MACHINE_CONFIG_DERIVED( bbcbp128, bbcbp )
MACHINE_CONFIG_END
-/* BBC Master Series */
+/***************************************************************************
+
+ Acorn Business Computers
+
+****************************************************************************/
+
+
+static MACHINE_CONFIG_DERIVED( abc110, bbcbp )
+ /* fdc */
+ MCFG_DEVICE_REMOVE("wd1770:1")
+
+ /* Add Z80 co-processor */
+
+ /* Add ADAPTEC ACB-4000 Winchester Disc Controller */
+
+ /* Add 10MB ST-412 Winchester */
+
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( abc210, bbcbp )
+ /* fdc */
+ MCFG_DEVICE_REMOVE("wd1770:1")
+
+ /* Add 32016 co-processor */
+
+ /* Add ADAPTEC ACB-4000 Winchester Disc Controller */
+
+ /* Add 10MB ST-412 Winchester ABC210 */
+
+ /* Add 20MB ST-412 Winchester Cambridge */
+
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_DERIVED( abc310, bbcbp )
+ /* fdc */
+ MCFG_DEVICE_REMOVE("wd1770:1")
+
+ /* Add 80286 co-processor */
+
+ /* Add ADAPTEC ACB-4000 Winchester Disc Controller */
+
+ /* Add 10MB ST-412 Winchester */
+
+MACHINE_CONFIG_END
+
+
+/***************************************************************************
+
+ Reuters APM Board (Application Processor Module)
+
+****************************************************************************/
+
+
+static MACHINE_CONFIG_DERIVED( reutapm, bbcbp )
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY( "maincpu" ) /* M6512 */
+ MCFG_CPU_PROGRAM_MAP(reutapm_mem)
+
+ /* sound hardware */
+ MCFG_DEVICE_REMOVE("mono")
+ MCFG_DEVICE_REMOVE("sn76489")
+ MCFG_DEVICE_REMOVE("vsm")
+ MCFG_DEVICE_REMOVE("tms5220")
+
+ /* cassette */
+ MCFG_DEVICE_REMOVE( "cassette" )
+
+ /* fdc */
+ MCFG_DEVICE_REMOVE("wd1770")
+
+ /* software lists */
+ MCFG_DEVICE_REMOVE("cass_ls_a")
+ MCFG_DEVICE_REMOVE("cass_ls_b")
+MACHINE_CONFIG_END
+
+
+/***************************************************************************
+
+ BBC Master Series
+
+****************************************************************************/
+
static MACHINE_CONFIG_START( bbcm, bbc_state )
/* basic machine hardware */
@@ -943,7 +1040,6 @@ static MACHINE_CONFIG_START( bbcm, bbc_state )
/* printer */
MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer")
MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("via6522_1", via6522_device, write_ca1)) MCFG_DEVCB_INVERT /* ack seems to be inverted? */
-
MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
/* cassette */
@@ -1001,12 +1097,14 @@ static MACHINE_CONFIG_START( bbcm, bbc_state )
MCFG_VIA6522_IRQ_HANDLER(WRITELINE(bbc_state, bbcb_via_user_irq_w))
/* fdc */
- MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
+ MCFG_WD1770_ADD("wd1770", XTAL_16MHz / 2)
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
- MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:0", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("wd1770:1", bbc_floppies_525, "qd", bbc_state::floppy_formats_525dd)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
/* econet */
MCFG_DEVICE_ADD("mc6854", MC6854, 0)
@@ -1037,15 +1135,12 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( bbcmet, bbcm )
-
- /* Remove all devices not present in this model */
-
/* sound hardware */
-// MCFG_DEVICE_REMOVE("mono")
-// MCFG_DEVICE_REMOVE("sn76489")
+ MCFG_DEVICE_REMOVE("mono")
+ MCFG_DEVICE_REMOVE("sn76489")
/* printer */
-// MCFG_DEVICE_REMOVE("centronics")
+ MCFG_DEVICE_REMOVE("centronics")
/* cassette */
MCFG_DEVICE_REMOVE("cassette")
@@ -1056,15 +1151,16 @@ static MACHINE_CONFIG_DERIVED( bbcmet, bbcm )
MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
/* acia */
-// MCFG_DEVICE_REMOVE("acia6850")
+ MCFG_DEVICE_REMOVE("acia6850")
MCFG_DEVICE_REMOVE(RS232_TAG)
+ MCFG_DEVICE_REMOVE("acia_clock")
/* devices */
-// MCFG_DEVICE_REMOVE("upd7002")
-// MCFG_DEVICE_REMOVE("via6522_1")
+ MCFG_DEVICE_REMOVE("upd7002")
+ MCFG_DEVICE_REMOVE("via6522_1")
/* fdc */
-// MCFG_DEVICE_REMOVE("wd177x")
+ MCFG_DEVICE_REMOVE("wd1770")
MACHINE_CONFIG_END
@@ -1082,27 +1178,49 @@ static MACHINE_CONFIG_DERIVED( bbcmarm, bbcm )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( bbcmc, bbcm )
+/***************************************************************************
+
+ BBC Master Compact
+
+****************************************************************************/
-// MCFG_DEVICE_REMOVE("rtc")
+
+static MACHINE_CONFIG_DERIVED( bbcmc, bbcm )
+ /* cassette */
+ MCFG_DEVICE_REMOVE("cassette")
/* fdc */
- MCFG_DEVICE_REMOVE("wd177x")
+ MCFG_DEVICE_REMOVE("wd1770")
-// MCFG_WD1772_ADD("wd177x", XTAL_16MHz / 2)
- MCFG_WD1770_ADD("wd177x", XTAL_16MHz / 2)
+ MCFG_WD1772_ADD("wd1772", XTAL_16MHz / 2)
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_intrq_w))
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bbc_state, bbc_wd177x_drq_w))
- MCFG_FLOPPY_DRIVE_ADD("wd177x:0", bbc_floppies, "qd", bbc_state::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD("wd177x:1", bbc_floppies, "qd", bbc_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("wd1772:0", bbc_floppies_35, "qd", bbc_state::floppy_formats_35dd)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("wd1772:1", bbc_floppies_35, NULL, bbc_state::floppy_formats_35dd)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+
+ /* eeprom pcd8572 */
+ //MCFG_DEVICE_REMOVE("rtc")
/* software lists */
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_m")
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
+ MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
MCFG_SOFTWARE_LIST_REMOVE("cart_ls_m")
MCFG_SOFTWARE_LIST_ADD("flop_ls_mc", "bbcmc_flop")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED(pro128s, bbcmc)
+ /* software lists */
+ MCFG_SOFTWARE_LIST_REMOVE("flop_ls_mc")
+ MCFG_SOFTWARE_LIST_ADD("flop_ls_pro128s", "pro128s_flop")
+ MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_mc", "bbcmc_flop")
+MACHINE_CONFIG_END
+
+
/* the BBC came with 4 rom sockets on the motherboard as shown in the model A driver */
/* you could get a number of rom upgrade boards that took this up to 16 roms as in the */
/* model B driver */
@@ -1111,9 +1229,9 @@ ROM_START(bbca)
ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
ROM_REGION(0x14000,"option",0) /* ROM */
- /* rom page 0 00000 */
- /* rom page 1 04000 */
- /* rom page 2 08000 */
+ /* rom page 0 00000 SPARE SOCKET */
+ /* rom page 1 04000 SPARE SOCKET */
+ /* rom page 2 08000 SPARE SOCKET */
/* rom page 3 0c000 BASIC */
ROM_DEFAULT_BIOS("os12b2")
ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
@@ -1128,6 +1246,7 @@ ROM_START(bbca)
ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" )
ROMX_LOAD("os10.rom", 0x10000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
ROMX_LOAD("basic1.rom", 0x0c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 3 0c000 */
+ /* OS0.1 does not support rom paging, load BASIC into all pages */
ROM_SYSTEM_BIOS( 4, "os01b2", "OS 0.10 / BASIC2" )
ROMX_LOAD("os01.rom", 0x10000, 0x4000, CRC(45ee0980) SHA1(4b0ece6dc139d5d3f4fabd023716fb6f25149b80), ROM_BIOS(5)) /* os */
ROMX_LOAD("basic2.rom", 0x00000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(5)) /* rom page 0 00000 */
@@ -1146,7 +1265,6 @@ ROM_START(bbca)
ROM_END
-
/* 0000- 7fff ram */
/* 8000- bfff this area is mapped over with one of the roms from "option" region 0x00000-0x40000 */
/* c000- ffff OS rom and memory mapped hardware at fc00-feff, from "option" region 0x40000-0x44000 */
@@ -1168,9 +1286,9 @@ ROM_START(bbcb)
/* rom page 9 24000 */
/* rom page 10 28000 */
/* rom page 11 2c000 */
- /* rom page 12 30000 */
- /* rom page 13 34000 */
- /* rom page 14 38000 */
+ /* rom page 12 30000 SPARE SOCKET */
+ /* rom page 13 34000 SPARE SOCKET */
+ /* rom page 14 38000 DFS */
/* rom page 15 3c000 BASIC */
ROM_DEFAULT_BIOS("os12b2")
ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
@@ -1186,29 +1304,60 @@ ROM_START(bbcb)
ROMX_LOAD("os10.rom", 0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 15 3c000 */
+ ROM_LOAD("dnfs.rom", 0x38000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
+
ROM_REGION(0x4000, "os", 0)
ROM_COPY("option", 0x40000, 0, 0x4000)
- ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */
- ROM_LOAD("dfs09.rom", 0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732))
- ROM_RELOAD( 0x02000, 0x2000 )
- ROM_LOAD("dnfs.rom", 0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
- ROM_LOAD("dfs144.rom", 0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5))
- ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8))
- ROM_LOAD("ddfs223.rom", 0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
- ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a))
- ROM_LOAD("ch103.rom", 0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33))
- /*NONE*/
- ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */
-
- //ROM_REGION(0x2000, "torch", 0)
- //ROM_LOAD("torchz80_094.bin", 0x0000, 0x2000, CRC(49989bd4) SHA1(62b57c858a3baa4ff943c31f77d331c414772a61))
- //ROM_LOAD("torchz80_102.bin", 0x0000, 0x2000, CRC(2eb40a21) SHA1(e6ee738e5f2f8556002b79d18caa8ef21f14e08d))
-
- //ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
- //ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
+ ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
+ ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
ROM_END
+
+ROM_START(bbcb1770)
+ ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
+
+ ROM_REGION(0x44000,"option",0) /* ROM */
+ /* rom page 0 00000 */
+ /* rom page 1 04000 */
+ /* rom page 2 08000 */
+ /* rom page 3 0c000 */
+ /* rom page 4 10000 */
+ /* rom page 5 14000 */
+ /* rom page 6 18000 */
+ /* rom page 7 1c000 */
+ /* rom page 8 20000 */
+ /* rom page 9 24000 */
+ /* rom page 10 28000 */
+ /* rom page 11 2c000 */
+ /* rom page 12 30000 SPARE SOCKET */
+ /* rom page 13 34000 SPARE SOCKET */
+ /* rom page 14 38000 DDFS */
+ /* rom page 15 3c000 BASIC */
+ ROM_DEFAULT_BIOS("os12b2")
+ ROM_SYSTEM_BIOS( 0, "os12b2", "OS 1.20 / BASIC2" )
+ ROMX_LOAD("os12.rom", 0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(1)) /* os */
+ ROMX_LOAD("basic2.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(1)) /* rom page 15 3c000 */
+ ROM_SYSTEM_BIOS( 1, "os12b1", "OS 1.20 / BASIC1" )
+ ROMX_LOAD("os12.rom", 0x40000, 0x4000, CRC(3c14fc70) SHA1(0d9bcaf6a393c9ce2359ed700ddb53c232c2c45d), ROM_BIOS(2)) /* os */
+ ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(2)) /* rom page 15 3c000 */
+ ROM_SYSTEM_BIOS( 2, "os10b2", "OS 1.00 / BASIC2" )
+ ROMX_LOAD("os10.rom", 0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(3)) /* os */
+ ROMX_LOAD("basic2.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(3)) /* rom page 15 3c000 */
+ ROM_SYSTEM_BIOS( 3, "os10b1", "OS 1.00 / BASIC1" )
+ ROMX_LOAD("os10.rom", 0x40000, 0x4000, CRC(9679b8f8) SHA1(d35f6723132aabe3c4d00fc16fd9ecc6768df753), ROM_BIOS(4)) /* os */
+ ROMX_LOAD("basic1.rom", 0x3c000, 0x4000, CRC(b3364108) SHA1(890f6e3e7fab3340f75b85e93ff29332bc9ecb2e), ROM_BIOS(4)) /* rom page 15 3c000 */
+
+ ROM_LOAD("ddfs223.rom", 0x38000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
+
+ ROM_REGION(0x4000, "os", 0)
+ ROM_COPY("option", 0x40000, 0, 0x4000)
+
+ ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
+ ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
+ROM_END
+
+
ROM_START(bbcb_de)
ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
@@ -1225,32 +1374,25 @@ ROM_START(bbcb_de)
/* rom page 9 24000 */
/* rom page 10 28000 */
/* rom page 11 2c000 */
- /* rom page 12 30000 */
- /* rom page 13 34000 */
- /* rom page 14 38000 */
+ /* rom page 12 30000 SPARE SOCKET */
+ /* rom page 13 34000 SPARE SOCKET */
+ /* rom page 14 38000 DFS */
/* rom page 15 3c000 BASIC */
ROM_DEFAULT_BIOS("os12")
ROM_SYSTEM_BIOS( 0, "os12", "OS 1.20 / BASIC2" )
ROMX_LOAD("os_de.rom", 0x40000, 0x4000, CRC(b7262caf) SHA1(aadf90338ee9d1c85dfa73beba50e930c2a38f10), ROM_BIOS(1))
ROMX_LOAD("basic2.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281), ROM_BIOS(1)) /* rom page 15 3c000 */
+ ROM_LOAD("dfs10.rom", 0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
+
ROM_REGION(0x4000, "os", 0)
ROM_COPY("option", 0x40000, 0, 0x4000)
- ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */
- ROM_LOAD("dfs09.rom", 0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732))
- ROM_RELOAD( 0x02000, 0x2000 )
-
- ROM_LOAD("dnfs.rom", 0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
- ROM_LOAD("dfs144.rom", 0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5))
- ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8))
- ROM_LOAD("ddfs223.rom", 0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
- ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a))
- ROM_LOAD("ch103.rom", 0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33))
- /*NONE*/
- ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */
+ ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
+ ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
ROM_END
+
ROM_START(bbcb_us)
ROM_REGION(0x08000,"maincpu",ROMREGION_ERASEFF) /* RAM */
@@ -1267,35 +1409,25 @@ ROM_START(bbcb_us)
/* rom page 9 24000 */
/* rom page 10 28000 */
/* rom page 11 2c000 */
- /* rom page 12 30000 */
- /* rom page 13 34000 */
- /* rom page 14 38000 */
+ /* rom page 12 30000 SPARE SOCKET */
+ /* rom page 13 34000 SPARE SOCKET */
+ /* rom page 14 38000 DFS */
/* rom page 15 3c000 BASIC */
ROM_DEFAULT_BIOS("os10b3")
ROM_SYSTEM_BIOS( 0, "os10b3", "OS A1.0 / BASIC3" )
ROMX_LOAD("os10_us.rom", 0x40000, 0x4000, CRC(c8e946a9) SHA1(83d91d089dca092d2c8b7c3650ff8143c9069b89), ROM_BIOS(1))
ROMX_LOAD("basic3.rom", 0x3c000, 0x4000, CRC(161b9539) SHA1(b39014610a968789afd7695aa04d1277d874405c), ROM_BIOS(1)) /* rom page 15 3c000 */
+ ROM_LOAD("dfs10.rom", 0x38000, 0x4000, CRC(7e367e8c) SHA1(161f585dc45665ea77433c84afd2f95049f7f5a0))
+
ROM_REGION(0x4000, "os", 0)
ROM_COPY("option", 0x40000, 0, 0x4000)
- ROM_REGION(0x20000,"dfs",0) /* DFS ROMS */
- ROM_LOAD("dfs09.rom", 0x00000, 0x2000, CRC(3ce609cf) SHA1(5cc0f14b8f46855c70eaa653cca4ad079b458732))
- ROM_RELOAD( 0x02000, 0x2000 )
-
- ROM_LOAD("dnfs.rom", 0x04000, 0x4000, CRC(8ccd2157) SHA1(7e3c536baeae84d6498a14e8405319e01ee78232))
- ROM_LOAD("dfs144.rom", 0x08000, 0x4000, CRC(9fb8d13f) SHA1(387d2468c6e1360f5b531784ce95d5f71a50c2b5))
- ROM_LOAD("zdfs-0.90.rom",0x0C000, 0x2000, CRC(ea579d4d) SHA1(59ad2a8994f4bddad6687891f1a2bc29f2fd32b8))
- ROM_LOAD("ddfs223.rom", 0x10000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
- ROM_LOAD("ddfs-1.53.rom",0x14000, 0x4000, CRC(e1be4ee4) SHA1(6719dc958f2631e6dc8f045429797b289bfe649a))
- ROM_LOAD("ch103.rom", 0x18000, 0x4000, CRC(98367cf4) SHA1(eca3631aa420691f96b72bfdf2e9c2b613e1bf33))
- /*NONE*/
- ROM_REGION(0x80000, "disks", ROMREGION_ERASEFF) /* Opus Ram Disc Space */
-
ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
ROM_LOAD("phrom_us.bin", 0x0000, 0x4000, CRC(bf4b3b64) SHA1(66876702d1d95eecc034d20f25047f893a27cde5))
ROM_END
+
ROM_START(bbcbp)
ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
@@ -1309,7 +1441,7 @@ ROM_START(bbcbp)
/* rom page 2 08000 32K IN PAGE 3 */
/* rom page 3 0c000 SPARE SOCKET */
/* rom page 4 10000 32K IN PAGE 5 */
- /* rom page 5 14000 SPARE SOCKET */
+ /* rom page 5 14000 ADFS */
/* rom page 6 18000 32K IN PAGE 7 */
/* rom page 7 1c000 DDFS */
/* rom page 8 20000 32K IN PAGE 9 */
@@ -1320,11 +1452,14 @@ ROM_START(bbcbp)
/* rom page 13 34000 */
/* rom page 14 38000 32K IN PAGE 15 */
/* rom page 15 3C000 BASIC */
- /* ddfs 2.23 this is acorns 1770 disc controller Double density disc filing system */
+ ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
ROM_REGION(0x4000, "os", 0)
ROM_COPY("option", 0x40000, 0, 0x4000)
+
+ ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
+ ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
ROM_END
@@ -1341,7 +1476,7 @@ ROM_START(bbcbp128)
/* rom page 2 08000 32K IN PAGE 3 */
/* rom page 3 0c000 SPARE SOCKET */
/* rom page 4 10000 32K IN PAGE 5 */
- /* rom page 5 14000 SPARE SOCKET */
+ /* rom page 5 14000 ADFS */
/* rom page 6 18000 32K IN PAGE 7 */
/* rom page 7 1c000 DDFS */
/* rom page 8 20000 32K IN PAGE 9 */
@@ -1352,11 +1487,159 @@ ROM_START(bbcbp128)
/* rom page 13 34000 */
/* rom page 14 38000 32K IN PAGE 15 */
/* rom page 15 3C000 BASIC */
- /* ddfs 2.23 this is acorns 1770 disc controller Double density disc filing system */
+ ROM_LOAD("adfs130.rom", 0x14000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
ROM_LOAD("ddfs223.rom", 0x1c000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
ROM_REGION(0x4000, "os", 0)
ROM_COPY("option", 0x40000, 0, 0x4000)
+
+ ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
+ ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
+ROM_END
+
+
+ROM_START(abc110)
+ ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
+
+ ROM_REGION(0x44000,"option",0) /* ROM */
+ ROM_DEFAULT_BIOS("mos200")
+ ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
+ ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
+ ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
+ ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
+ ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
+ /* rom page 0 00000 */
+ /* rom page 1 04000 */
+ /* rom page 2 08000 32K IN PAGE 3 */
+ /* rom page 3 0c000 SPARE SOCKET */
+ /* rom page 4 10000 32K IN PAGE 5 */
+ /* rom page 5 14000 DDFS */
+ /* rom page 6 18000 32K IN PAGE 7 */
+ /* rom page 7 1c000 ADFS */
+ /* rom page 8 20000 32K IN PAGE 9 */
+ /* rom page 9 24000 SPARE SOCKET */
+ /* rom page 10 28000 32K IN PAGE 11 */
+ /* rom page 11 2c000 SPARE SOCKET */
+ /* rom page 12 30000 */
+ /* rom page 13 34000 */
+ /* rom page 14 38000 32K IN PAGE 15 */
+ /* rom page 15 3C000 BASIC */
+ ROM_LOAD("ddfs223.rom", 0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
+ ROM_LOAD("adfs130.rom", 0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
+ ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
+
+ ROM_REGION(0x4000, "os", 0)
+ ROM_COPY("option", 0x40000, 0, 0x4000)
+
+ ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
+ ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
+ROM_END
+
+
+ROM_START(abc210)
+ ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
+
+ ROM_REGION(0x44000,"option",0) /* ROM */
+ ROM_DEFAULT_BIOS("mos200")
+ ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
+ ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
+ ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
+ ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
+ ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
+ /* rom page 0 00000 */
+ /* rom page 1 04000 */
+ /* rom page 2 08000 32K IN PAGE 3 */
+ /* rom page 3 0c000 SPARE SOCKET */
+ /* rom page 4 10000 32K IN PAGE 5 */
+ /* rom page 5 14000 DDFS */
+ /* rom page 6 18000 32K IN PAGE 7 */
+ /* rom page 7 1c000 ADFS */
+ /* rom page 8 20000 32K IN PAGE 9 */
+ /* rom page 9 24000 SPARE SOCKET */
+ /* rom page 10 28000 32K IN PAGE 11 */
+ /* rom page 11 2c000 SPARE SOCKET */
+ /* rom page 12 30000 */
+ /* rom page 13 34000 */
+ /* rom page 14 38000 32K IN PAGE 15 */
+ /* rom page 15 3C000 BASIC */
+ ROM_LOAD("ddfs223.rom", 0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
+ ROM_LOAD("adfs130.rom", 0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
+ ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
+
+ ROM_REGION(0x4000, "os", 0)
+ ROM_COPY("option", 0x40000, 0, 0x4000)
+
+ ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
+ ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
+ROM_END
+
+
+ROM_START(abc310)
+ ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
+
+ ROM_REGION(0x44000,"option",0) /* ROM */
+ ROM_DEFAULT_BIOS("mos200")
+ ROM_SYSTEM_BIOS( 0, "mos200", "MOS2.00" )
+ ROMX_LOAD("mos200.rom", 0x40000, 0x4000, CRC(5e88f994) SHA1(76235ff15d736f5def338f73ac7497c41b916505), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS( 1, "mos123", "MOS1.23" )
+ ROMX_LOAD("mos123.rom", 0x40000, 0x4000, CRC(90d31d08) SHA1(42a01892cf8bd2ada4db1c8b36aff80c85eb5dcb), ROM_BIOS(2))
+ ROM_SYSTEM_BIOS( 2, "mos120", "MOS1.20" )
+ ROMX_LOAD("mos120.rom", 0x40000, 0x4000, CRC(0a1e83a0) SHA1(21dc3a94eef7c003b194686730fb461779f44925), ROM_BIOS(3))
+ /* rom page 0 00000 */
+ /* rom page 1 04000 */
+ /* rom page 2 08000 32K IN PAGE 3 */
+ /* rom page 3 0c000 SPARE SOCKET */
+ /* rom page 4 10000 32K IN PAGE 5 */
+ /* rom page 5 14000 DDFS */
+ /* rom page 6 18000 32K IN PAGE 7 */
+ /* rom page 7 1c000 ADFS */
+ /* rom page 8 20000 32K IN PAGE 9 */
+ /* rom page 9 24000 SPARE SOCKET */
+ /* rom page 10 28000 32K IN PAGE 11 */
+ /* rom page 11 2c000 SPARE SOCKET */
+ /* rom page 12 30000 */
+ /* rom page 13 34000 */
+ /* rom page 14 38000 32K IN PAGE 15 */
+ /* rom page 15 3C000 BASIC */
+ ROM_LOAD("ddfs223.rom", 0x14000, 0x4000, CRC(7891f9b7) SHA1(0d7ed0b0b3852cb61970ada1993244f2896896aa))
+ ROM_LOAD("adfs130.rom", 0x1c000, 0x4000, CRC(d3855588) SHA1(301fd05c475a629c4bec70510d4507256a5b00d8))
+ ROM_LOAD("basic200.rom", 0x3c000, 0x4000, CRC(79434781) SHA1(4a7393f3a45ea309f744441c16723e2ef447a281))
+
+ ROM_REGION(0x4000, "os", 0)
+ ROM_COPY("option", 0x40000, 0, 0x4000)
+
+ ROM_REGION(0x8000, "vsm", 0) /* system speech PHROM */
+ ROM_LOAD("phroma.bin", 0x0000, 0x4000, CRC(98e1bf9e) SHA1(b369809275cb67dfd8a749265e91adb2d2558ae6))
+ROM_END
+
+
+ROM_START(reutapm)
+ ROM_REGION(0x10000,"maincpu",ROMREGION_ERASEFF) /* ROM MEMORY */
+
+ ROM_REGION(0x44000,"option",0) /* ROM */
+ /* rom page 0 00000 */
+ /* rom page 1 04000 */
+ /* rom page 2 08000 32K IN PAGE 3 */
+ /* rom page 3 0c000 SPARE SOCKET */
+ /* rom page 4 10000 32K IN PAGE 5 */
+ /* rom page 5 14000 SPARE SOCKET */
+ /* rom page 6 18000 32K IN PAGE 7 */
+ /* rom page 7 1c000 SPARE SOCKET */
+ /* rom page 8 20000 32K IN PAGE 9 */
+ /* rom page 9 24000 SPARE SOCKET */
+ /* rom page 10 28000 32K IN PAGE 11 */
+ /* rom page 11 2c000 SPARE SOCKET */
+ /* rom page 12 30000 */
+ /* rom page 13 34000 */
+ /* rom page 14 38000 32K IN PAGE 15 */
+ /* rom page 15 3C000 SPARE SOCKET */
+ ROM_LOAD("reutera100.rom", 0x1c000, 0x4000, CRC(98ebabfb) SHA1(a7887e1e5c206203491e1e06682b9508b0fef49d))
+ ROM_LOAD("reuterb.rom", 0x2c000, 0x4000, CRC(9e02f59b) SHA1(1e63aa3bf4b37bf9ba41e454f95db05c3d15bfbf))
+
+ ROM_REGION(0x4000, "os", 0)
+ ROM_LOAD("mos_r030.rom", 0x0000, 0x4000, CRC(8b652337) SHA1(6a5c7ace255c8ac96c983d5ba67084fbd71ff61e))
ROM_END
@@ -1480,10 +1763,10 @@ ROM_START(bbcmet)
ROM_REGION(0x44000,"option",0) /* ROM */
ROM_DEFAULT_BIOS("mos400")
ROM_SYSTEM_BIOS( 0, "mos400", "Econet MOS 4.00" )
- ROMX_LOAD("mos400.ic24", 0x20000, 0x10000, BAD_DUMP CRC(81729034) SHA1(d4bc2c7f5e66b5298786138f395908e70c772971), ROM_BIOS(1)) /* Merged individual ROM bank dumps */
- ROM_COPY("option", 0x24000, 0x34000, 0xC000) /* Mirror */
- ROM_COPY("option", 0x20000, 0x40000, 0x4000) /* Move loaded roms into place */
- ROM_FILL(0x20000, 0x4000, 0xFFFF)
+ ROMX_LOAD("mos400.ic24", 0x30000, 0x10000, BAD_DUMP CRC(81729034) SHA1(d4bc2c7f5e66b5298786138f395908e70c772971), ROM_BIOS(1)) /* Merged individual ROM bank dumps */
+ ROM_COPY("option", 0x34000, 0x24000, 0xC000) /* Mirror */
+ ROM_COPY("option", 0x30000, 0x40000, 0x4000) /* Move loaded roms into place */
+ ROM_FILL(0x30000, 0x4000, 0xFFFF)
/* 00000 rom 0 Rear Cartridge bottom 16K */
/* 04000 rom 1 Rear Cartridge top 16K */
/* 08000 rom 2 Front Cartridge bottom 16K */
@@ -1659,18 +1942,58 @@ ROM_START(bbcmc_ar)
ROM_END
-/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
-COMP ( 1981, bbcb, 0, bbca, bbcb, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B", 0)
-COMP ( 1981, bbca, bbcb, 0, bbca, bbca, bbc_state, bbc, "Acorn", "BBC Micro Model A", 0)
-COMP ( 1981, bbcb_us, bbcb, 0, bbcb_us, bbcb, bbc_state, bbc, "Acorn", "Acorn Proton (US)", 0)
-COMP ( 1981, bbcb_de, bbcb, 0, bbcb, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B (German)", 0)
-COMP ( 1985, bbcbp, 0, bbcb, bbcbp, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B+ 64K", 0)
-COMP ( 1985, bbcbp128, bbcbp, 0, bbcbp128, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B+ 128K", 0)
-COMP ( 1986, bbcm, 0, bbcb, bbcm, bbcm, bbc_state, bbcm, "Acorn", "BBC Master 128", 0)
-COMP ( 1986, bbcmt, bbcm, 0, bbcmt, bbcm, bbc_state, bbcm, "Acorn", "BBC Master Turbo", GAME_NOT_WORKING)
-COMP ( 1986, bbcmaiv, bbcm, 0, bbcmaiv, bbcm, bbc_state, bbcm, "Acorn", "BBC Master AIV", GAME_NOT_WORKING)
-COMP ( 1986, bbcmet, bbcm, 0, bbcmet, bbcm, bbc_state, bbcm, "Acorn", "BBC Master ET", 0)
-COMP ( 1986, bbcm512, bbcm, 0, bbcm512, bbcm, bbc_state, bbcm, "Acorn", "BBC Master 512", GAME_NOT_WORKING)
-COMP ( 1986, bbcmarm, bbcm, 0, bbcmarm, bbcm, bbc_state, bbcm, "Acorn", "ARM Evaluation System", GAME_NOT_WORKING)
-COMP ( 1986, bbcmc, 0, bbcm, bbcmc, bbcm, bbc_state, bbcm, "Acorn", "BBC Master Compact", 0)
-COMP ( 1986, bbcmc_ar, bbcmc, 0, bbcmc, bbcm, bbc_state, bbcm, "Acorn", "BBC Master Compact (Arabic)", 0)
+ROM_START(pro128s)
+ ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) /* ROM MEMORY */
+
+ ROM_REGION(0x44000, "option", 0) /* ROM */
+ ROM_DEFAULT_BIOS("mos510o")
+ ROM_SYSTEM_BIOS(0, "mos510o", "Olivetti MOS 5.10")
+ ROMX_LOAD("mos510o.ic49", 0x30000, 0x10000, CRC(c16858d3) SHA1(ad231ed21a55e493b553703285530d1cacd3de7a), ROM_BIOS(1))
+ ROM_COPY("option", 0x30000, 0x40000, 0x4000) /* Move loaded roms into place */
+ ROM_FILL(0x30000, 0x4000, 0xFFFF)
+ /* 00000 rom 0 EXTERNAL */
+ /* 04000 rom 1 EXTERNAL */
+ /* 08000 rom 2 SPARE SOCKET */
+ /* 0c000 rom 3 SPARE SOCKET */
+ /* 10000 rom 4 SWRAM */
+ /* 14000 rom 5 SWRAM */
+ /* 18000 rom 6 SWRAM */
+ /* 1c000 rom 7 SWRAM */
+ /* 20000 rom 8 SPARE SOCKET */
+ /* 24000 rom 9 UNUSED */
+ /* 28000 rom 10 UNUSED */
+ /* 2c000 rom 11 UNUSED */
+ /* 30000 rom 12 UNUSED */
+ /* 34000 rom 13 ADFS */
+ /* 38000 rom 14 BASIC */
+ /* 3c000 rom 15 Utils */
+
+ ROM_REGION(0x4000, "os", 0)
+ ROM_COPY("option", 0x40000, 0, 0x4000)
+
+ // ROM_REGION(0x80,"eeprom",0) /* pcd8572 */
+ /* Factory defaulted EEPROM, sets default language ROM, etc. */
+ // ROM_LOAD("mos510o.epr", 0x00, 0x80, CRC(d8458039) SHA1(72c056d493e74ceca41f48936012b012b496a226))
+ROM_END
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP ( 1981, bbcb, 0, bbca, bbcb, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B w/8271 FDC", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1981, bbca, bbcb, 0, bbca, bbca, bbc_state, bbc, "Acorn", "BBC Micro Model A", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1981, bbcb_de, bbcb, 0, bbcb_de, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B (German)", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1983, bbcb_us, bbcb, 0, bbcb_us, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B (US)", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1985, bbcb1770, bbcb, 0, bbcb1770, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B w/1770 FDC", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1985, bbcbp, 0, bbcb, bbcbp, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B+ 64K", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1985, bbcbp128, bbcbp, 0, bbcbp128, bbcb, bbc_state, bbc, "Acorn", "BBC Micro Model B+ 128K", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1985, abc110, abc210, 0, abc110, abc, bbc_state, bbc, "Acorn", "ABC 110", MACHINE_NOT_WORKING)
+COMP ( 1985, abc210, 0, 0, abc210, abc, bbc_state, bbc, "Acorn", "ABC 210/Cambridge Workstation", MACHINE_NOT_WORKING)
+COMP ( 1985, abc310, abc210, 0, abc310, abc, bbc_state, bbc, "Acorn", "ABC 310", MACHINE_NOT_WORKING)
+COMP ( 1985, reutapm, 0, 0, reutapm, bbcb, bbc_state, bbc, "Acorn", "Reuters APM", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
+COMP ( 1986, bbcm, 0, bbcb, bbcm, bbcm, bbc_state, bbc, "Acorn", "BBC Master 128", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1986, bbcmt, bbcm, 0, bbcmt, bbcm, bbc_state, bbc, "Acorn", "BBC Master Turbo", MACHINE_NOT_WORKING)
+COMP ( 1986, bbcmaiv, bbcm, 0, bbcmaiv, bbcm, bbc_state, bbc, "Acorn", "BBC Master AIV", MACHINE_NOT_WORKING)
+COMP ( 1986, bbcmet, bbcm, 0, bbcmet, bbcm, bbc_state, bbc, "Acorn", "BBC Master ET", MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1986, bbcm512, bbcm, 0, bbcm512, bbcm, bbc_state, bbc, "Acorn", "BBC Master 512", MACHINE_NOT_WORKING)
+COMP ( 1986, bbcmarm, bbcm, 0, bbcmarm, bbcm, bbc_state, bbc, "Acorn", "ARM Evaluation System", MACHINE_NOT_WORKING)
+COMP ( 1986, bbcmc, 0, bbcm, bbcmc, bbcm, bbc_state, bbc, "Acorn", "BBC Master Compact", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1986, bbcmc_ar, bbcmc, 0, bbcmc, bbcm, bbc_state, bbc, "Acorn", "BBC Master Compact (Arabic)", MACHINE_IMPERFECT_GRAPHICS)
+COMP ( 1987, pro128s, bbcmc, 0, pro128s, bbcm, bbc_state, bbc, "Olivetti", "Prodest PC 128S", MACHINE_IMPERFECT_GRAPHICS)
diff --git a/src/mess/drivers/bbcbc.c b/src/mame/drivers/bbcbc.c
index 93c76d83d79..8a11968e0c4 100644
--- a/src/mess/drivers/bbcbc.c
+++ b/src/mame/drivers/bbcbc.c
@@ -161,4 +161,4 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-CONS(1985, bbcbc, 0, 0, bbcbc, bbcbc, driver_device, 0, "BBC", "Bridge Companion", GAME_NO_SOUND_HW )
+CONS(1985, bbcbc, 0, 0, bbcbc, bbcbc, driver_device, 0, "BBC", "Bridge Companion", MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/bbusters.c b/src/mame/drivers/bbusters.c
index 8d615cd422a..f3cde4a2359 100644
--- a/src/mame/drivers/bbusters.c
+++ b/src/mame/drivers/bbusters.c
@@ -1068,11 +1068,11 @@ ROM_END
/******************************************************************************/
// as soon as you calibrate the guns in test mode the game refuses to boot
-GAME( 1989, bbusters, 0, bbusters, bbusters, driver_device, 0, ROT0, "SNK", "Beast Busters (World)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1989, bbustersu, bbusters, bbusters, bbusters, driver_device, 0, ROT0, "SNK", "Beast Busters (US, Version 3)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1989, bbustersua, bbusters, bbusters, bbusters, driver_device, 0, ROT0, "SNK", "Beast Busters (US, Version 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-
-GAME( 1989, mechatt, 0, mechatt, mechatt, driver_device, 0, ROT0, "SNK", "Mechanized Attack (World)", GAME_SUPPORTS_SAVE )
-GAME( 1989, mechattj, mechatt, mechatt, mechattj, driver_device, 0, ROT0, "SNK", "Mechanized Attack (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, mechattu, mechatt, mechatt, mechattu, driver_device, 0, ROT0, "SNK", "Mechanized Attack (US)", GAME_SUPPORTS_SAVE )
-GAME( 1989, mechattu1, mechatt, mechatt, mechattu, driver_device, 0, ROT0, "SNK", "Mechanized Attack (US, Version 1, Single Player)", GAME_SUPPORTS_SAVE )
+GAME( 1989, bbusters, 0, bbusters, bbusters, driver_device, 0, ROT0, "SNK", "Beast Busters (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1989, bbustersu, bbusters, bbusters, bbusters, driver_device, 0, ROT0, "SNK", "Beast Busters (US, Version 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1989, bbustersua, bbusters, bbusters, bbusters, driver_device, 0, ROT0, "SNK", "Beast Busters (US, Version 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1989, mechatt, 0, mechatt, mechatt, driver_device, 0, ROT0, "SNK", "Mechanized Attack (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mechattj, mechatt, mechatt, mechattj, driver_device, 0, ROT0, "SNK", "Mechanized Attack (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mechattu, mechatt, mechatt, mechattu, driver_device, 0, ROT0, "SNK", "Mechanized Attack (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mechattu1, mechatt, mechatt, mechattu, driver_device, 0, ROT0, "SNK", "Mechanized Attack (US, Version 1, Single Player)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bcs3.c b/src/mame/drivers/bcs3.c
new file mode 100644
index 00000000000..8292aedd270
--- /dev/null
+++ b/src/mame/drivers/bcs3.c
@@ -0,0 +1,492 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/***************************************************************************
+
+ BCS 3
+
+ 2009-05-12 Skeleton driver.
+ 2015-09-25 Improvements
+
+ http://hc-ddr.hucki.net/wiki/doku.php/homecomputer:bcs3
+
+ East German home built computer. No sound facilities.
+ All documents are in German.
+
+ Main CPU is a U880 (Z80 equivalent). Other ICs also have unusual names.
+
+ The CTC sends an interrupt every so often. This uses a lookup table to
+ jump to an address in the range 38xx-39xx. This seems to work much the
+ same as reading video memory in the ZX80. This, I think, is to stop snow
+ appearing on the screen. It also slows everything down noticeably.
+
+ It appears that a read of 1400 activates the Z80's /WAIT pin. This will
+ be released by a VS pulse. (Not emulated)
+
+ Cassette is hooked up according to the documentation, but it doesn't work.
+
+ Known Memory Map:
+ 0000 - 0FFF: Main ROM
+ 1000 - 13FF: Keyboard
+ 1400 - 17FF: /WAIT circuit
+ 1800 - 1BFF: Output one character's scanline to the monitor. ZX-video process.
+ 1C00 - 1FFF: Video RAM
+ 2000 - 3FFF: Mirror of 0000 - 1FFF.
+ 4000 - up : Extra RAM (required for hack versions)
+
+ Hack versions:
+ - They are fitted with Basic 3.x, require more RAM, and use hardware scrolling.
+ - No schematic has been found, so the code is educated guesswork.
+ - The ZX process is still to be worked out. For now, we return 0xF7 to finish.
+ - There is a machine-language monitor fitted to some models. To access:
+ -- Y = USR(0F000H)
+ -- Commands are S (substitute), M (move), T (test), G (go), Q (quit)
+
+ To Do:
+ - Need software
+ - Fix cassette
+ - Hack versions: fix the ZX process
+
+****************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "cpu/z80/z80daisy.h"
+#include "machine/z80ctc.h"
+#include "imagedev/cassette.h"
+
+
+class bcs3_state : public driver_device
+{
+public:
+ bcs3_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_ctc(*this, "ctc")
+ , m_p_chargen(*this, "chargen")
+ , m_p_videoram(*this, "videoram")
+ , m_cass(*this, "cassette")
+ , m_io_keyboard(*this, "KEY")
+ { }
+
+ DECLARE_READ8_MEMBER(keyboard_r);
+ DECLARE_READ8_MEMBER(video_r);
+ DECLARE_READ8_MEMBER(zx_r);
+ DECLARE_WRITE_LINE_MEMBER(ctc_z0_w);
+ DECLARE_WRITE_LINE_MEMBER(ctc_z1_w);
+ DECLARE_DRIVER_INIT(bcs3a);
+ DECLARE_DRIVER_INIT(bcs3b);
+ DECLARE_DRIVER_INIT(bcs3c);
+ DECLARE_DRIVER_INIT(bcs3d);
+ UINT32 screen_update_bcs3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT32 screen_update_bcs3a(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+private:
+ bool m_cass_bit;
+ UINT8 s_curs;
+ UINT8 s_init;
+ UINT8 s_rows;
+ UINT8 s_cols;
+
+ required_device<cpu_device> m_maincpu;
+ required_device<z80ctc_device> m_ctc;
+ required_memory_region m_p_chargen;
+ required_shared_ptr<UINT8> m_p_videoram;
+ required_device<cassette_image_device> m_cass;
+ required_ioport_array<10> m_io_keyboard;
+};
+
+READ8_MEMBER( bcs3_state::keyboard_r )
+{
+ UINT8 i, data = 0;
+
+ if (offset == 0)
+ data = (m_cass->input() > +0.01) ? 0x80 : 0;
+
+ offset ^= 0x3ff;
+
+ for (i = 0; i < 10; i++)
+ if BIT(offset, i)
+ data |= m_io_keyboard[i]->read();
+
+ return data;
+}
+
+// 00-7F = NUL, 0xE0 = end of line.
+READ8_MEMBER( bcs3_state::video_r )
+{
+ UINT8 data = m_p_videoram[offset];
+ return BIT(data, 7) ? data : 0;
+}
+
+// Unsure of how this works.
+// 00-7F = NUL, 0xFF = end of line, 0xF7 = finish.
+READ8_MEMBER( bcs3_state::zx_r )
+{
+ return 0xf7;
+}
+
+static ADDRESS_MAP_START(bcs3_mem, AS_PROGRAM, 8, bcs3_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE( 0x0000, 0x0fff ) AM_MIRROR(0x2000) AM_ROM AM_REGION("roms", 0)
+ AM_RANGE( 0x1000, 0x13ff ) AM_MIRROR(0x2000) AM_READ(keyboard_r)
+ AM_RANGE( 0x1400, 0x17ff ) AM_MIRROR(0x2000) AM_NOP // /WAIT circuit
+ AM_RANGE( 0x1800, 0x1bff ) AM_MIRROR(0x2000) AM_READ(video_r)
+ AM_RANGE( 0x1c00, 0x1fff ) AM_MIRROR(0x2000) AM_RAM AM_SHARE("videoram")
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(bcs3a_mem, AS_PROGRAM, 8, bcs3_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE( 0x0000, 0x0fff ) AM_MIRROR(0x2000) AM_ROM AM_REGION("roms", 0)
+ AM_RANGE( 0x1000, 0x13ff ) AM_MIRROR(0x2000) AM_READ(keyboard_r)
+ AM_RANGE( 0x1400, 0x17ff ) AM_MIRROR(0x2000) AM_NOP // /WAIT circuit
+ AM_RANGE( 0x1800, 0x1bff ) AM_MIRROR(0x2000) AM_READ(zx_r)
+ AM_RANGE( 0x3c00, 0x7fff ) AM_RAM AM_SHARE("videoram")
+ AM_RANGE( 0xf000, 0xf3ff ) AM_ROM AM_REGION("roms", 0x1000)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( bcs3_io, AS_IO, 8, bcs3_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ ADDRESS_MAP_GLOBAL_MASK(3)
+ // coded in the rom as F8 to FB
+ AM_RANGE( 0x00, 0x03 ) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
+ADDRESS_MAP_END
+
+/* Input ports */
+static INPUT_PORTS_START( bcs3 )
+ PORT_START("KEY.0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('U')
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("K :") PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR(':')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A &") PORT_CODE(KEYCODE_A) PORT_CHAR('A')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+
+ PORT_START("KEY.1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V')
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("L ;") PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR(';')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B '") PORT_CODE(KEYCODE_B) PORT_CHAR('B')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
+
+ PORT_START("KEY.2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("M <") PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('<')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C (") PORT_CODE(KEYCODE_C) PORT_CHAR('C')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("2 \"") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR(34)
+
+ PORT_START("KEY.3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('X')
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("N =") PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('=')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D )") PORT_CODE(KEYCODE_D) PORT_CHAR('D')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3 #") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
+
+ PORT_START("KEY.4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("O >") PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('>')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E *") PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('*')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4 $") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
+
+ PORT_START("KEY.5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('P')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F +") PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('+')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("5 %") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
+
+ PORT_START("KEY.6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(32)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G ,") PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR(',')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
+
+ PORT_START("KEY.7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('R')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("H -") PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('-')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7 '") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR(39)
+
+ PORT_START("KEY.8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('S')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("I .") PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('.')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8 (") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
+
+ PORT_START("KEY.9")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('T')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("J /") PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHAR('/')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9 )") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
+INPUT_PORTS_END
+
+// Official version
+UINT32 bcs3_state::screen_update_bcs3(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ UINT8 y,ra,chr,gfx,rat;
+ UINT16 sy=0,ma=0x50,x;
+
+ for (y = 0; y < 12; y++)
+ {
+ for (ra = 0; ra < 10; ra++)
+ {
+ UINT16 *p = &bitmap.pix16(sy++);
+ rat = (ra + 1) & 7;
+
+ for (x = ma; x < ma + 28; x++)
+ {
+ if (ra < 8)
+ {
+ chr = m_p_videoram[x] & 0x7f;
+
+ /* get pattern of pixels for that character scanline */
+ gfx = m_p_chargen->base()[(chr<<3) | rat ] ^ 0xff;
+ }
+ else
+ gfx = 0xff;
+
+ /* Display a scanline of a character (8 pixels) */
+ *p++ = BIT(gfx, 7);
+ *p++ = BIT(gfx, 6);
+ *p++ = BIT(gfx, 5);
+ *p++ = BIT(gfx, 4);
+ *p++ = BIT(gfx, 3);
+ *p++ = BIT(gfx, 2);
+ *p++ = BIT(gfx, 1);
+ *p++ = BIT(gfx, 0);
+ }
+ }
+ ma+=28;
+ }
+ return 0;
+}
+
+/* Hacks: When it starts, it has 4 lines of data. Pressing enter causes it to allocate 100 lines.
+ I'm assuming that it only shows a portion of this, with the cursor always in sight. */
+UINT32 bcs3_state::screen_update_bcs3a(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ UINT8 y,ra,chr,gfx,rat;
+ UINT16 sy = 0, ma = s_init, x;
+ UINT16 cursor = (m_p_videoram[s_curs] | (m_p_videoram[s_curs+1] << 8)) - 0x3c00 - ma; // get cursor relative position
+ rat = cursor / (s_cols+1);
+ if (rat > (s_rows-1)) ma += (rat-(s_rows-1)) * (s_cols+1);
+
+ for (y = 0; y < s_rows; y++)
+ {
+ for (ra = 0; ra < 10; ra++)
+ {
+ UINT16 *p = &bitmap.pix16(sy++);
+ rat = (ra + 1) & 7;
+
+ for (x = ma; x < ma + s_cols; x++)
+ {
+ if (ra < 8)
+ {
+ chr = m_p_videoram[x] & 0x7f;
+
+ /* get pattern of pixels for that character scanline */
+ gfx = m_p_chargen->base()[(chr<<3) | rat ] ^ 0xff;
+ }
+ else
+ gfx = 0xff;
+
+ /* Display a scanline of a character (8 pixels) */
+ *p++ = BIT(gfx, 7);
+ *p++ = BIT(gfx, 6);
+ *p++ = BIT(gfx, 5);
+ *p++ = BIT(gfx, 4);
+ *p++ = BIT(gfx, 3);
+ *p++ = BIT(gfx, 2);
+ *p++ = BIT(gfx, 1);
+ *p++ = BIT(gfx, 0);
+ }
+ }
+ ma+=(s_cols+1);
+ }
+ return 0;
+}
+
+
+/* F4 Character Displayer */
+static const gfx_layout bcs3_charlayout =
+{
+ 8, 8, /* 8 x 8 characters */
+ 128, /* 128 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ /* y offsets */
+ { 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 0*8 },
+ 8*8 /* every char takes 8 bytes */
+};
+
+static GFXDECODE_START( bcs3 )
+ GFXDECODE_ENTRY( "chargen", 0x0000, bcs3_charlayout, 0, 1 )
+GFXDECODE_END
+
+WRITE_LINE_MEMBER( bcs3_state::ctc_z0_w )
+{
+ m_ctc->trg1(state);
+ if (state)
+ {
+ m_cass_bit ^= 1;
+ m_cass->output(m_cass_bit ? -1.0 : +1.0);
+ }
+}
+
+WRITE_LINE_MEMBER( bcs3_state::ctc_z1_w )
+{
+ m_ctc->trg2(state);
+}
+
+static const z80_daisy_config daisy_chain_intf[] =
+{
+ { "ctc" },
+ { NULL }
+};
+
+DRIVER_INIT_MEMBER( bcs3_state, bcs3a )
+{
+ s_curs = 0x7a;
+ s_init = 0x80;
+ s_rows = 12;
+ s_cols = 29;
+}
+
+DRIVER_INIT_MEMBER( bcs3_state, bcs3b )
+{
+ s_curs = 0x7a;
+ s_init = 0x80;
+ s_rows = 24;
+ s_cols = 40;
+}
+
+DRIVER_INIT_MEMBER( bcs3_state, bcs3c )
+{
+ s_curs = 0x08;
+ s_init = 0xa0;
+ s_rows = 12;
+ s_cols = 29;
+}
+
+DRIVER_INIT_MEMBER( bcs3_state, bcs3d )
+{
+ s_curs = 0x08;
+ s_init = 0xb4;
+ s_rows = 12;
+ s_cols = 29;
+}
+
+static MACHINE_CONFIG_START( bcs3, bcs3_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_5MHz /2)
+ MCFG_CPU_PROGRAM_MAP(bcs3_mem)
+ MCFG_CPU_IO_MAP(bcs3_io)
+ MCFG_CPU_CONFIG(daisy_chain_intf)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(28*8, 12*10)
+ MCFG_SCREEN_VISIBLE_AREA(0,28*8-1,0,12*10-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bcs3_state, screen_update_bcs3)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", bcs3)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+
+ MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_5MHz / 2)
+ MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ MCFG_Z80CTC_ZC0_CB(WRITELINE(bcs3_state, ctc_z0_w))
+ MCFG_Z80CTC_ZC1_CB(WRITELINE(bcs3_state, ctc_z1_w))
+
+ MCFG_CASSETTE_ADD( "cassette" )
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( bcs3a, bcs3_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_7MHz /2)
+ MCFG_CPU_PROGRAM_MAP(bcs3a_mem)
+ MCFG_CPU_IO_MAP(bcs3_io)
+ MCFG_CPU_CONFIG(daisy_chain_intf)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(29*8, 12*10)
+ MCFG_SCREEN_VISIBLE_AREA(0,29*8-1,0,12*10-1)
+ MCFG_SCREEN_UPDATE_DRIVER(bcs3_state, screen_update_bcs3a)
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", bcs3)
+ MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
+
+ MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_7MHz / 2)
+ MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ MCFG_Z80CTC_ZC0_CB(WRITELINE(bcs3_state, ctc_z0_w))
+ MCFG_Z80CTC_ZC1_CB(WRITELINE(bcs3_state, ctc_z1_w))
+
+ MCFG_CASSETTE_ADD( "cassette" )
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( bcs3b, bcs3a )
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(40*8, 24*10)
+ MCFG_SCREEN_VISIBLE_AREA(0,40*8-1,0,24*10-1)
+MACHINE_CONFIG_END
+
+
+/* ROM definition */
+ROM_START( bcs3 )
+ ROM_REGION( 0x2000, "roms", ROMREGION_ERASEFF )
+ //ROM_LOAD( "se24.bin", 0x0000, 0x0800, CRC(268de5ee) SHA1(78784945956c1b0282a4e82ad55e7c3a77389e50))
+ ROM_LOAD( "se24_000.d6", 0x0000, 0x0400, CRC(157a0d28) SHA1(0a6666c289b95d98128fd282478dff6319031b6e) )
+ ROM_LOAD( "se24_400.d7", 0x0400, 0x0400, CRC(2159de0f) SHA1(09b567e750931019de914f25d5ab1e4910465de6) )
+
+ ROM_REGION( 0x0400, "chargen", 0 )
+ ROM_LOAD( "bcs_zg_24.d21", 0x0000, 0x0400, CRC(eaed9d84) SHA1(7023a6187cd6bd0c6489d76ff662453f14e5b636))
+ROM_END
+
+ROM_START( bcs3a )
+ ROM_REGION( 0x2000, "roms", ROMREGION_ERASEFF )
+ //ROM_LOAD( "se31_29.bin", 0x0000, 0x1000, CRC(e9b55544) SHA1(82bae68c4bcaecf66632f5b43913b50a1acba316))
+ ROM_LOAD( "se31_000.d6", 0x0000, 0x0400, CRC(0765bd83) SHA1(137ceffd50eeaf21caab286d3e01161ba3267ea4) )
+ ROM_LOAD( "se31_400.d7", 0x0400, 0x0400, CRC(1a87a3ed) SHA1(c8121ff198f8cf0c7bc7bc7e258ecfa51d3bb02c) )
+ ROM_LOAD( "se31_800.d8", 0x0800, 0x0400, CRC(05654a8f) SHA1(b42fa6cf5710dab23f062dbeea81e85b4c18e1b0) )
+ ROM_LOAD( "se31_c00.d9", 0x0c00, 0x0400, CRC(858ca28b) SHA1(90f943b0c1d102dd058a859ba139057a0bd278a6) )
+ ROM_LOAD( "se31mceditor.bin", 0x1000, 0x0400, CRC(8eac92ec) SHA1(8950a3ef05d02abf34269bfce002c46d273ce113))
+
+ ROM_REGION( 0x0400, "chargen", 0 )
+ ROM_LOAD( "bcs_zg_31.d21", 0x0000, 0x0400, CRC(a20c93c9) SHA1(b2be1c0d98b7ac05713349b099b392975968be1d))
+ROM_END
+
+ROM_START( bcs3b )
+ ROM_REGION( 0x2000, "roms", ROMREGION_ERASEFF )
+ ROM_LOAD( "se31_40.bin", 0x0000, 0x1000, CRC(4e993152) SHA1(6bb01ff5779627fa2eb2df432fffcfccc1e33231))
+ ROM_LOAD( "se31mceditor.bin", 0x1000, 0x0400, CRC(8eac92ec) SHA1(8950a3ef05d02abf34269bfce002c46d273ce113))
+
+ ROM_REGION( 0x0400, "chargen", 0 )
+ ROM_LOAD( "bcs_zg_31.d21", 0x0000, 0x0400, CRC(a20c93c9) SHA1(b2be1c0d98b7ac05713349b099b392975968be1d))
+ROM_END
+
+ROM_START( bcs3c )
+ ROM_REGION( 0x2000, "roms", ROMREGION_ERASEFF )
+ ROM_LOAD( "bcs32.bin", 0x0000, 0x1000, CRC(1523b846) SHA1(ca5e3213707a604e02d9e7a7ebfc362ef294ddb8) )
+
+ ROM_REGION( 0x0400, "chargen", 0 )
+ ROM_LOAD( "bcs_zg_32.d21", 0x0000, 0x0400, CRC(abe9e820) SHA1(03a8792d08774cd67b98efd3f83a78e897b4e001) )
+ROM_END
+
+ROM_START( bcs3d )
+ ROM_REGION( 0x2000, "roms", ROMREGION_ERASEFF )
+ ROM_LOAD( "sp33_29.bin", 0x0000, 0x1000, CRC(1c851eb2) SHA1(4f8bb5274ea1861a35a840e8f3482bdc693047c4))
+
+ ROM_REGION( 0x0400, "chargen", 0 )
+ ROM_LOAD( "bcs_zg_33.d21", 0x0000, 0x0400, CRC(b27f1c07) SHA1(61c80c585f198370ba5e856839c12b15acdc58ee))
+ROM_END
+
+/* Driver */
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP( 1984, bcs3, 0, 0, bcs3, bcs3, driver_device, 0, "Eckhard Schiller", "BCS 3 rev 2.4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1986, bcs3a, bcs3, 0, bcs3a, bcs3, bcs3_state, bcs3a, "Eckhard Schiller", "BCS 3 rev 3.1 29-column", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1986, bcs3b, bcs3, 0, bcs3b, bcs3, bcs3_state, bcs3b, "Eckhard Schiller", "BCS 3 rev 3.1 40-column", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1986, bcs3c, bcs3, 0, bcs3a, bcs3, bcs3_state, bcs3c, "Eckhard Schiller", "BCS 3 rev 3.2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1986, bcs3d, bcs3, 0, bcs3a, bcs3, bcs3_state, bcs3d, "Eckhard Schiller", "BCS 3 rev 3.3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/beaminv.c b/src/mame/drivers/beaminv.c
index 6674f67287e..ebbad402512 100644
--- a/src/mame/drivers/beaminv.c
+++ b/src/mame/drivers/beaminv.c
@@ -387,5 +387,5 @@ ROM_END
*
*************************************/
-GAMEL( 1979, beaminv, 0, beaminv, beaminv, driver_device, 0, ROT270, "Teknon Kogyo", "Beam Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv )
-GAMEL( 1979, pacominv, beaminv, beaminv, pacominv, driver_device, 0, ROT270, "Pacom Corporation", "Pacom Invader", GAME_NO_SOUND | GAME_SUPPORTS_SAVE, layout_beaminv )
+GAMEL( 1979, beaminv, 0, beaminv, beaminv, driver_device, 0, ROT270, "Teknon Kogyo", "Beam Invader", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv )
+GAMEL( 1979, pacominv, beaminv, beaminv, pacominv, driver_device, 0, ROT270, "Pacom Corporation", "Pacom Invader", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_beaminv )
diff --git a/src/mess/drivers/bebox.c b/src/mame/drivers/bebox.c
index 62000bd3388..cd3aec4c163 100644
--- a/src/mess/drivers/bebox.c
+++ b/src/mame/drivers/bebox.c
@@ -17,23 +17,15 @@
#include "bus/lpci/cirrus.h"
#include "cpu/powerpc/ppc.h"
#include "sound/3812intf.h"
-#include "machine/ins8250.h"
-#include "machine/pic8259.h"
#include "machine/mc146818.h"
-#include "bus/lpci/pci.h"
-#include "machine/am9517a.h"
#include "machine/pckeybrd.h"
-#include "machine/idectrl.h"
#include "bus/lpci/mpc105.h"
-#include "machine/intelfsh.h"
#include "bus/scsi/scsi.h"
-#include "machine/53c810.h"
/* Devices */
#include "bus/scsi/scsicd.h"
#include "bus/scsi/scsihd.h"
#include "formats/pc_dsk.h"
-#include "machine/ram.h"
#include "machine/8042kbdc.h"
READ8_MEMBER(bebox_state::at_dma8237_1_r) { return m_dma8237_2->read(space, offset / 2); }
@@ -80,15 +72,13 @@ ADDRESS_MAP_END
READ64_MEMBER(bebox_state::bb_slave_64be_r)
{
- pci_bus_device *device = machine().device<pci_bus_device>("pcibus");
-
// 2e94 is the real address, 2e84 is where the PC appears to be under full DRC
if ((space.device().safe_pc() == 0xfff02e94) || (space.device().safe_pc() == 0xfff02e84))
{
return 0x108000ff; // indicate slave CPU
}
- return device->read_64be(space, offset, mem_mask);
+ return m_pcibus->read_64be(space, offset, mem_mask);
}
static ADDRESS_MAP_START( bebox_slave_mem, AS_PROGRAM, 64, bebox_state )
@@ -267,5 +257,5 @@ ROM_START(bebox2)
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1995, bebox, 0, 0, bebox, bebox, bebox_state, bebox, "Be Inc", "BeBox Dual603-66", GAME_NOT_WORKING )
-COMP( 1996, bebox2, bebox, 0, bebox2, bebox, bebox_state, bebox, "Be Inc", "BeBox Dual603-133", GAME_NOT_WORKING )
+COMP( 1995, bebox, 0, 0, bebox, bebox, bebox_state, bebox, "Be Inc", "BeBox Dual603-66", MACHINE_NOT_WORKING )
+COMP( 1996, bebox2, bebox, 0, bebox2, bebox, bebox_state, bebox, "Be Inc", "BeBox Dual603-133", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/beehive.c b/src/mame/drivers/beehive.c
index 0a0e1f82948..a751969f919 100644
--- a/src/mess/drivers/beehive.c
+++ b/src/mame/drivers/beehive.c
@@ -319,4 +319,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, beehive, 0, 0, beehive, beehive, driver_device, 0, "BeeHive", "DM3270", GAME_NO_SOUND)
+COMP( 1982, beehive, 0, 0, beehive, beehive, driver_device, 0, "BeeHive", "DM3270", MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/beezer.c b/src/mame/drivers/beezer.c
index 3f9363ff2f9..ab4cbbe31f1 100644
--- a/src/mame/drivers/beezer.c
+++ b/src/mame/drivers/beezer.c
@@ -181,5 +181,5 @@ ROM_START( beezer1 )
ROM_LOAD( "e1.cpu", 0x100, 0x0100, CRC(3c775c5e) SHA1(ac86f45938c0c9d5fec1245bf86718442baf445b) )
ROM_END
-GAME( 1982, beezer, 0, beezer, beezer, beezer_state, beezer, ROT90, "Tong Electronic", "Beezer (set 1)", GAME_IMPERFECT_SOUND )
-GAME( 1982, beezer1, beezer, beezer, beezer, beezer_state, beezer, ROT90, "Tong Electronic", "Beezer (set 2)", GAME_IMPERFECT_SOUND )
+GAME( 1982, beezer, 0, beezer, beezer, beezer_state, beezer, ROT90, "Tong Electronic", "Beezer (set 1)", MACHINE_IMPERFECT_SOUND )
+GAME( 1982, beezer1, beezer, beezer, beezer, beezer_state, beezer, ROT90, "Tong Electronic", "Beezer (set 2)", MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/belatra.c b/src/mame/drivers/belatra.c
index 17e2d458295..cb996f09781 100644
--- a/src/mame/drivers/belatra.c
+++ b/src/mame/drivers/belatra.c
@@ -120,12 +120,12 @@ ROM_START( ldrinka )
ROM_END
-GAME( 2004, fairyl2 ,0, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (set 1)", GAME_IS_SKELETON )
-GAME( 2004, fairyl2a ,fairyl2, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (set 2)", GAME_IS_SKELETON )
-GAME( 2004, fairyl2b ,fairyl2, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (set 3)", GAME_IS_SKELETON )
-GAME( 2004, fairyl2bl ,fairyl2, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (bootleg)", GAME_IS_SKELETON )
+GAME( 2004, fairyl2 ,0, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (set 1)", MACHINE_IS_SKELETON )
+GAME( 2004, fairyl2a ,fairyl2, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (set 2)", MACHINE_IS_SKELETON )
+GAME( 2004, fairyl2b ,fairyl2, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (set 3)", MACHINE_IS_SKELETON )
+GAME( 2004, fairyl2bl ,fairyl2, belatra, belatra, driver_device, 0, ROT0, "Belatra","Fairy Land 2 (bootleg)", MACHINE_IS_SKELETON )
-GAME( 2004, ldrink ,0, belatra, belatra, driver_device, 0, ROT0, "Belatra","Lucky Drink (set 1)", GAME_IS_SKELETON )
-GAME( 2004, ldrinka ,ldrink, belatra, belatra, driver_device, 0, ROT0, "Belatra","Lucky Drink (set 2)", GAME_IS_SKELETON )
+GAME( 2004, ldrink ,0, belatra, belatra, driver_device, 0, ROT0, "Belatra","Lucky Drink (set 1)", MACHINE_IS_SKELETON )
+GAME( 2004, ldrinka ,ldrink, belatra, belatra, driver_device, 0, ROT0, "Belatra","Lucky Drink (set 2)", MACHINE_IS_SKELETON )
-GAME( 2004, merryjn ,0, belatra, belatra, driver_device, 0, ROT0, "Belatra","Merry Joiner", GAME_IS_SKELETON )
+GAME( 2004, merryjn ,0, belatra, belatra, driver_device, 0, ROT0, "Belatra","Merry Joiner", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/berzerk.c b/src/mame/drivers/berzerk.c
index eedbedb5668..6e35c91a8d3 100644
--- a/src/mame/drivers/berzerk.c
+++ b/src/mame/drivers/berzerk.c
@@ -1338,10 +1338,10 @@ DRIVER_INIT_MEMBER(berzerk_state,moonwarp)
*
*************************************/
-GAME( 1980, berzerk, 0, berzerk, berzerk, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, berzerk1, berzerk, berzerk, berzerk, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1980, berzerkf, berzerk, berzerk, berzerkf, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (French Speech)", GAME_SUPPORTS_SAVE )
-GAME( 1980, berzerkg, berzerk, berzerk, berzerkg, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (German Speech)", GAME_SUPPORTS_SAVE )
-GAME( 1980, berzerks, berzerk, berzerk, berzerks, driver_device, 0, ROT0, "Stern Electronics (Sonic License)", "Berzerk (Spanish Speech)", GAME_SUPPORTS_SAVE )
-GAME( 1981, frenzy, 0, frenzy, frenzy, driver_device, 0, ROT0, "Stern Electronics", "Frenzy", GAME_SUPPORTS_SAVE )
-GAME( 1981, moonwarp, 0, frenzy, moonwarp, berzerk_state, moonwarp, ROT0, "Stern Electronics", "Moon War (prototype on Frenzy hardware)", GAME_SUPPORTS_SAVE )
+GAME( 1980, berzerk, 0, berzerk, berzerk, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, berzerk1, berzerk, berzerk, berzerk, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, berzerkf, berzerk, berzerk, berzerkf, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (French Speech)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, berzerkg, berzerk, berzerk, berzerkg, driver_device, 0, ROT0, "Stern Electronics", "Berzerk (German Speech)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, berzerks, berzerk, berzerk, berzerks, driver_device, 0, ROT0, "Stern Electronics (Sonic License)", "Berzerk (Spanish Speech)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, frenzy, 0, frenzy, frenzy, driver_device, 0, ROT0, "Stern Electronics", "Frenzy", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, moonwarp, 0, frenzy, moonwarp, berzerk_state, moonwarp, ROT0, "Stern Electronics", "Moon War (prototype on Frenzy hardware)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/besta.c b/src/mame/drivers/besta.c
index 7191f3d4ee9..32b19329c20 100644
--- a/src/mess/drivers/besta.c
+++ b/src/mame/drivers/besta.c
@@ -10,6 +10,7 @@
#include "emu.h"
#include "cpu/m68000/m68000.h"
+#include "machine/68230pit.h"
#include "machine/terminal.h"
#define VERBOSE_DBG 1 /* general debug messages */
@@ -32,6 +33,8 @@ public:
besta_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
+ m_pit1 (*this, "pit1"),
+ m_pit2 (*this, "pit2"),
m_terminal(*this, TERMINAL_TAG),
m_p_ram(*this, "p_ram")
{
@@ -44,6 +47,8 @@ public:
UINT8 m_mpcc_regs[32];
required_device<cpu_device> m_maincpu;
+ required_device<pit68230_device> m_pit1;
+ required_device<pit68230_device> m_pit2;
virtual void machine_reset();
required_device<generic_terminal_device> m_terminal;
@@ -97,16 +102,17 @@ WRITE8_MEMBER( besta_state::kbd_put )
static ADDRESS_MAP_START(besta_mem, AS_PROGRAM, 32, besta_state)
AM_RANGE(0x00000000, 0x001fffff) AM_RAM AM_SHARE("p_ram") // local bus DRAM, 4MB
// AM_RANGE(0x08010000, 0x08011fff) AM_RAM // unknown -- accessed by cp31dssp
- AM_RANGE(0xff000000, 0xff00ffff) AM_ROM AM_REGION("user1",0) // actual mapping is up to 0xff03ffff
+// AM_RANGE(0xfca03500, 0xfca0350f) AM_READWRITE8(iscsi_reg_r, iscsi_reg_w, 0xffffffff)
+ AM_RANGE(0xff000000, 0xff00ffff) AM_ROM AM_REGION("user1", 0) // actual mapping is up to 0xff03ffff
AM_RANGE(0xff040000, 0xff07ffff) AM_RAM // onboard SRAM
-// 68561 MPCC (console)
// AM_RANGE(0xff800000, 0xff80001f) AM_DEVREADWRITE8("mpcc", mpcc68561_t, reg_r, reg_w, 0xffffffff)
- AM_RANGE(0xff800000, 0xff80001f) AM_READWRITE8(mpcc_reg_r, mpcc_reg_w, 0xffffffff)
-// AM_RANGE(0xff800200, 0xff800xxx) // 68230 PIT2
+ AM_RANGE(0xff800000, 0xff80001f) AM_READWRITE8(mpcc_reg_r, mpcc_reg_w, 0xffffffff) // console
+ AM_RANGE(0xff800200, 0xff800237) AM_DEVREADWRITE8 ("pit2", pit68230_device, read, write, 0xffffffff)
// AM_RANGE(0xff800400, 0xff800xxx) // ??? -- shows up in cp31dssp log
-// AM_RANGE(0xff800800, 0xff800xxx) // BIM
+// AM_RANGE(0xff800800, 0xff800xxx) // 68153 BIM
// AM_RANGE(0xff800a00, 0xff800xxx) // 62421 RTC
-// AM_RANGE(0xff800c00, 0xff800xxx) // 68230 PIT
+ AM_RANGE(0xff800c00, 0xff800c37) AM_DEVREADWRITE8 ("pit1", pit68230_device, read, write, 0xffffffff)
+// AM_RANGE(0xff800e00, 0xff800xxx) // PIT3?
ADDRESS_MAP_END
/* Input ports */
@@ -131,6 +137,10 @@ static MACHINE_CONFIG_START( besta, besta_state )
MCFG_CPU_ADD("maincpu", M68030, 2*16670000)
MCFG_CPU_PROGRAM_MAP(besta_mem)
+ MCFG_DEVICE_ADD ("pit1", PIT68230, 16670000 / 2) // XXX verify clock
+
+ MCFG_DEVICE_ADD ("pit2", PIT68230, 16670000 / 2) // XXX verify clock
+
MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(besta_state, kbd_put))
MACHINE_CONFIG_END
@@ -151,4 +161,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1988, besta88, 0, 0, besta, besta, driver_device, 0, "Sapsan", "Besta-88", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1988, besta88, 0, 0, besta, besta, driver_device, 0, "Sapsan", "Besta-88", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/bestleag.c b/src/mame/drivers/bestleag.c
index 30898c3e7ec..e3d2d7511cb 100644
--- a/src/mame/drivers/bestleag.c
+++ b/src/mame/drivers/bestleag.c
@@ -472,5 +472,5 @@ ROM_END
/* GAME drivers */
-GAME( 1993, bestleag, bigstrik, bestleag, bestleag, driver_device, 0, ROT0, "bootleg", "Best League (bootleg of Big Striker, Italian Serie A)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1993, bestleaw, bigstrik, bestleaw, bestleag, driver_device, 0, ROT0, "bootleg", "Best League (bootleg of Big Striker, World Cup)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1993, bestleag, bigstrik, bestleag, bestleag, driver_device, 0, ROT0, "bootleg", "Best League (bootleg of Big Striker, Italian Serie A)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, bestleaw, bigstrik, bestleaw, bestleag, driver_device, 0, ROT0, "bootleg", "Best League (bootleg of Big Striker, World Cup)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/beta.c b/src/mame/drivers/beta.c
index d441b6fc2cd..c545a4622a8 100644
--- a/src/mess/drivers/beta.c
+++ b/src/mame/drivers/beta.c
@@ -375,4 +375,4 @@ ROM_END
/* System Drivers */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1984, beta, 0, 0, beta, beta, driver_device, 0, "Pitronics", "Beta", GAME_SUPPORTS_SAVE )
+COMP( 1984, beta, 0, 0, beta, beta, driver_device, 0, "Pitronics", "Beta", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bfcobra.c b/src/mame/drivers/bfcobra.c
index a65b185aebe..e7a37317504 100644
--- a/src/mame/drivers/bfcobra.c
+++ b/src/mame/drivers/bfcobra.c
@@ -1929,11 +1929,11 @@ ROM_START( qosb )
ROM_END
-GAME( 1989, inquiztr, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "Inquizitor", GAME_NOT_WORKING )
-GAME( 1990, escounts, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "Every Second Counts (39-360-053)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1991, trebltop, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "Treble Top (39-360-070)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1991, beeline, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "Beeline (39-360-075)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS )
-GAME( 1991, quizvadr, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "Quizvaders (39-360-078)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1992, qos, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "A Question of Sport (set 1, 39-960-107)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1992, qosa, qos , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "A Question of Sport (set 2, 39-960-099)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1992, qosb, qos , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "A Question of Sport (set 3, 39-960-089)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1989, inquiztr, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "Inquizitor", MACHINE_NOT_WORKING )
+GAME( 1990, escounts, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "Every Second Counts (39-360-053)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1991, trebltop, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "Treble Top (39-360-070)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1991, beeline, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "Beeline (39-360-075)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1991, quizvadr, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "Quizvaders (39-360-078)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, qos, 0 , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "A Question of Sport (set 1, 39-960-107)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, qosa, qos , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "A Question of Sport (set 2, 39-960-099)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, qosb, qos , bfcobra, bfcobra, bfcobra_state, bfcobra, ROT0, "BFM", "A Question of Sport (set 3, 39-960-089)", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/bfm_ad5sw.c b/src/mame/drivers/bfm_ad5sw.c
index 4abf560196d..9818afb3a86 100644
--- a/src/mame/drivers/bfm_ad5sw.c
+++ b/src/mame/drivers/bfm_ad5sw.c
@@ -1755,351 +1755,351 @@ ROM_END
// PR3255 CASINO COPS TRIPLE CASINO COPS ARCADE PR3255 COPS & ROBBERS SOUNDS11
-GAME( 200?, ad5crcpt ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers Community Party (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5crcpta ,ad5crcpt, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers Community Party (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5crcpt ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers Community Party (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5crcpta ,ad5crcpt, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers Community Party (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PROJECT NUMBER PR2334 BULLSEYE_PFP ITSBULLSEYE SOUNDS BULLSEYE_PFP S.SITE
-GAME( 200?, ad5bpfpm ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Bullseye Pounds For Points (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5bpfpma ,ad5bpfpm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Bullseye Pounds For Points (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5bpfpmb ,ad5bpfpm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Bullseye Pounds For Points (Mazooma) (Adder 5) (set 3)", GAME_IS_SKELETON )
+GAME( 200?, ad5bpfpm ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Bullseye Pounds For Points (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5bpfpma ,ad5bpfpm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Bullseye Pounds For Points (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5bpfpmb ,ad5bpfpm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Bullseye Pounds For Points (Mazooma) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
// PROJECT NUMBER PR2334 BULLSEYE_PFP BULLSEYEPFP SOUNDS BULLSEYE_PFP S.SITE
-GAME( 200?, ad5bpfpmc ,ad5bpfpm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Bullseye Pounds For Points (Mazooma) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5bpfpmd ,ad5bpfpm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Bullseye Pounds For Points (Mazooma) (Adder 5) (set 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5bpfpmc ,ad5bpfpm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Bullseye Pounds For Points (Mazooma) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5bpfpmd ,ad5bpfpm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Bullseye Pounds For Points (Mazooma) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
// PR1601 AWP CRAZY MONEY CRAZY MONEY S.SITE PR1601 CRAZY MONEY SOUNDS11
-GAME( 200?, ad5cmons ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Crazy Money (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5cmonsa ,ad5cmons, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Crazy Money (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5cmons ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Crazy Money (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5cmonsa ,ad5cmons, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Crazy Money (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR3314 AWP DEAL OR NO DEAL PLATINUM SCORP5 PR3314 DOND PLATINUM SOUNDS11
-GAME( 200?, ad5dndpl ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndpla ,ad5dndpl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndplb ,ad5dndpl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndplc ,ad5dndpl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
+GAME( 200?, ad5dndpl ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndpla ,ad5dndpl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndplb ,ad5dndpl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndplc ,ad5dndpl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
// PROJECT NUMBER PR3401 AWP HI ROLLER SCORP5 PR3401 HI ROLLER SOUNDS11 HI ROLLER S.SITE
-GAME( 200?, ad5hir ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5hira ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5hirb ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5hirc ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
+GAME( 200?, ad5hir ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5hira ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5hirb ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5hirc ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
// PROJECT NUMBER PR1755 HI ROLLER PR1755 HI ROLLER SOUNDS12
-GAME( 200?, ad5hircl ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller Club (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5hircla ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller Club (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5hirclb ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller Club (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
+GAME( 200?, ad5hircl ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller Club (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5hircla ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller Club (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5hirclb ,ad5hir, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Hi Roller Club (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
// PROJECT NUMBER PR1965 CASINO DOND TRIPLE CASINO DOND ARCADE PR1965 CASINO DOND R SOUNDS11
-GAME( 200?, ad5dnd ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5dnda ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndb ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndc ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndd ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5dnde ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 6)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndf ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 7)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndg ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 8)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndh ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 9)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndi ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 10)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndj ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 11)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndk ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 12)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndl ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 13)", GAME_IS_SKELETON )
+GAME( 200?, ad5dnd ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dnda ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndb ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndc ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndd ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dnde ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 6)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndf ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 7)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndg ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 8)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndh ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 9)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndi ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 10)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndj ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 11)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndk ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 12)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndl ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 13)", MACHINE_IS_SKELETON )
// PROJECT NUMBER PR1945 VIDEO CASINO DOND VID CASINO DOND ARCADE PR1945 CASINO D O N D SOUNDS12
-GAME( 200?, ad5dndm ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 14)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndn ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 15)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndo ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 16)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndp ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 17)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndq ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 18)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndr ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 19)", GAME_IS_SKELETON )
+GAME( 200?, ad5dndm ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 14)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndn ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 15)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndo ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 16)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndp ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 17)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndq ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 18)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndr ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 19)", MACHINE_IS_SKELETON )
// PROJECT NUMBER PR1945 DEAL OR NO DEAL - BFG*DEAL ( PR1945 CASINO D O N D SOUNDS11 )
-GAME( 200?, ad5dndu ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 22)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndv ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 23)", GAME_IS_SKELETON )
+GAME( 200?, ad5dndu ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 22)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndv ,ad5dnd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Adder 5) (set 23)", MACHINE_IS_SKELETON )
// PROJECT NUMBER PR3078 DEAL OR NO DEAL - BFG*BDTS ( PR3078 DOND TWIN SOUNDS11 ) (twin screen)
-GAME( 200?, ad5dndcl ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndcla ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndclb ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndclc ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndcld ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndcle ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 6)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndclf ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 20)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndclg ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 21)", GAME_IS_SKELETON )
+GAME( 200?, ad5dndcl ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndcla ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndclb ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndclc ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndcld ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndcle ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 6)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndclf ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 20)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndclg ,ad5dndcl, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Adder 5) (set 21)", MACHINE_IS_SKELETON )
// PR3402 AWP DOND DOUBLE DELUXE S5 PR3402 DOUBLE DELUXE SOUNDS11
-GAME( 200?, ad5dnddd ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5dnddda ,ad5dnddd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5dnddd ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dnddda ,ad5dnddd, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR3526 DEAL OR NO DEAL THE PERFECT GAME - BFGNVVPG ( R3526 DOND PERFG CLUB SOUNDS12 ) (twin screen)
-GAME( 200?, ad5dndpg ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndpga ,ad5dndpg, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndpgb ,ad5dndpg, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5dndpgc ,ad5dndpg, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
+GAME( 200?, ad5dndpg ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndpga ,ad5dndpg, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndpgb ,ad5dndpg, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5dndpgc ,ad5dndpg, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
// PR3206 AWP COPS N ROBBERS PR3206 COPS N ROBBERS SOUNDS11
-GAME( 200?, ad5copsr ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsra ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrb ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrd ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsre ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrf ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 6)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrk ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 7)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrl ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 8)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrm ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 9)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsro ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 10)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrp ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 11)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrq ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 12)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrv ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 13)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrw ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 14)", GAME_IS_SKELETON )
+GAME( 200?, ad5copsr ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsra ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrb ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrd ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsre ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrf ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 6)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrk ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 7)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrl ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 8)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrm ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 9)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsro ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 10)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrp ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 11)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrq ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 12)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrv ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 13)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrw ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 14)", MACHINE_IS_SKELETON )
// PR1965 CASINO COPS TRIPLE CASINO COPS ARCADE PR3255 COPS & ROBBERS SOUNDS11
-GAME( 200?, ad5copsrc ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrg ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrn ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrr ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrx ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsry ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 6)", GAME_IS_SKELETON )
+GAME( 200?, ad5copsrc ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrg ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrn ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrr ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrx ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsry ,ad5copsr, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 6)", MACHINE_IS_SKELETON )
// PR2476 COPSNROBB3 COPNROB SOUNDS COPSNROBB3 S.SITE ` MAZNSCBT
-GAME( 200?, ad5crsc ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5crsca ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5crscb ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5crscc ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrj ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsru ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 6)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsr0 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 7)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsr2 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 8)", GAME_IS_SKELETON )
+GAME( 200?, ad5crsc ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5crsca ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5crscb ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5crscc ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrj ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsru ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 6)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsr0 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 7)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsr2 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 8)", MACHINE_IS_SKELETON )
// PR2495 COPSNROB COPNROB SOUNDS COPSNROB S.SITE ` MAZNSCBF
-GAME( 200?, ad5copsrh ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsri ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrs ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsrt ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsr4 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsr6 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 6)", GAME_IS_SKELETON )
-GAME( 200?, ad5crscd ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 7)", GAME_IS_SKELETON )
-GAME( 200?, ad5crsce ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 8)", GAME_IS_SKELETON )
-GAME( 200?, ad5crscf ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 9)", GAME_IS_SKELETON )
-GAME( 200?, ad5crscg ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 10)", GAME_IS_SKELETON )
+GAME( 200?, ad5copsrh ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsri ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrs ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsrt ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsr4 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsr6 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 6)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5crscd ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 7)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5crsce ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 8)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5crscf ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 9)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5crscg ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 10)", MACHINE_IS_SKELETON )
// PR2628 COPSNROB COPNROB SOUNDS COPSNROB S.SITE ` MAZ*CRBF
-GAME( 200?, ad5copsr3 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsr5 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5crsch ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsr7 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 4)", GAME_IS_SKELETON )
+GAME( 200?, ad5copsr3 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsr5 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5crsch ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsr7 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
// PR2497 COPSNROB COPNROB CD SOUNDS COPSNROB S.SITE ` MAZ*COPV
-GAME( 200?, ad5copsrz ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2497) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5copsr1 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2497) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5copsrz ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2497) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5copsr1 ,ad5crsc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Cops 'n' Robbers (PR2497) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR3217 AWP GOLD MINE PR3217 GOLD MINE SOUNDS11 GOLD MINE S.SITE
-GAME( 200?, ad5gldmn ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmna ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmnb ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmnc ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmnd ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmne ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 6)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmnf ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 7)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmng ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 8)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmnh ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 9)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmni ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 10)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmnj ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 11)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldmnk ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 12)", GAME_IS_SKELETON )
+GAME( 200?, ad5gldmn ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmna ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmnb ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmnc ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmnd ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmne ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 6)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmnf ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 7)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmng ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 8)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmnh ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 9)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmni ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 10)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmnj ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 11)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldmnk ,ad5gldmn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Gold Mine (Bellfruit) (Adder 5) (set 12)", MACHINE_IS_SKELETON )
// PR2365 MONOPOLYWOW WOW SOUNDS MONOPOLYWOW S.SITE ` MAZ*BPFP
-GAME( 200?, ad5mowow ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZNBPFP) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5mowowl ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZNBPFP) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5mowowe ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZPBPFP) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5mowowm ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZPBPFP) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5mowow ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZNBPFP) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mowowl ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZNBPFP) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mowowe ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZPBPFP) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mowowm ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZPBPFP) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR2365 MONOPOLYWOW WOW SOUNDS MONOPOLYWOW S.SITE ` MAZ*MWOW
-GAME( 200?, ad5mowowd ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZNMWOW) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5mowowi ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZPMWOW) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5mowowd ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZNMWOW) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mowowi ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZPMWOW) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
// PR2365 MONOPOLYWOW WOWT SOUNDS MONOPOLYWOW S.SITE ` MAZ*WOWT
-GAME( 200?, ad5mowowa ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZNWOWT) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5mowowb ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZNWOWT) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5mowowf ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZPWOWT) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5mowowg ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZPWOWT) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5mowowa ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZNWOWT) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mowowb ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZNWOWT) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mowowf ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZPWOWT) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mowowg ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2365, MAZPWOWT) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR2389 MONOPOLYWOW WOWT SOUNDS MONOPOLYWOW S.SITE ` MAZ*WWBU
-GAME( 200?, ad5mowowc ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2389, MAZNWWBU) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5mowowh ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2389, MAZPWWBU) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5mowowc ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2389, MAZNWWBU) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mowowh ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR2389, MAZPWWBU) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
// PR3075 VIDEO CASINO WOW CASINO DOND WOW ARCADE PR3075 CASINO DOND WOW SOUNDS11 (wrong game?)
-GAME( 200?, ad5mowowj ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR3075) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5mowowk ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR3075) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5mowowj ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR3075) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mowowk ,ad5mowow, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (PR3075) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR2283 PINK PANTHER ` QPS*PINK (PINK PANTHER SOUNDS)
-GAME( 200?, ad5pp ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2283, QPSNPINK) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5ppa ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2283, QPSNPINK) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5ppf ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2283, QPSPPINK) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5ppg ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2283, QPSPPINK) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5pp ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2283, QPSNPINK) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5ppa ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2283, QPSNPINK) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5ppf ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2283, QPSPPINK) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5ppg ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2283, QPSPPINK) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR2267 PINK PANTHER ` MAZ*PINK (SD_PANTHER SNDS)
-GAME( 200?, ad5ppb ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2267, MAZNPINK) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5ppc ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2267, MAZNPINK) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5pph ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2267, MAZPPINK) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5ppb ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2267, MAZNPINK) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5ppc ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2267, MAZNPINK) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5pph ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (PR2267, MAZPPINK) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
/* (no main ident string) MAZ.PINKP SOUNDS */
-GAME( 200?, ad5ppd ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (MAZNPINK) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5ppe ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (MAZNPINK) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5ppi ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (MAZPPINK) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5ppj ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (MAZPPINK) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5ppd ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (MAZNPINK) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5ppe ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (MAZNPINK) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5ppi ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (MAZPPINK) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5ppj ,ad5pp, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Pink Panther (MAZPPINK) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR1669 RANDOM SPINNER ` BFGNRNDN ( PR1669 RANDOM SPINNER SNDS11 )
-GAME( 200?, ad5rsclb ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsclbc ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsclbd ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsclbe ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsclbf ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsclbi ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsclbj ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
+GAME( 200?, ad5rsclb ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsclbc ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsclbd ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsclbe ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsclbf ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsclbi ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsclbj ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
// PR1826 RANDOM SPINNER ` BFGNRNDN ( PR1826 RANDOM SPINNER SOUNDS12 )
-GAME( 200?, ad5rsclba ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1826, BFGNRNDN) (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsclbb ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1826, BFGNRNDN) (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsclbg ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1826, BFGPRNDN) (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsclbh ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1826, BFGPRNDN) (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5rsclba ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1826, BFGNRNDN) (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsclbb ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1826, BFGNRNDN) (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsclbg ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1826, BFGPRNDN) (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsclbh ,ad5rsclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner Club (PR1826, BFGPRNDN) (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR2217 RANDOM MONOPOLY ` MAZ*RNDN - S16MONOP SOUNDS
-GAME( 200?, ad5monop ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5monopa ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5monopb ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5monopc ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5monopf ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5monopg ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5monoph ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5monopi ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 4)", GAME_IS_SKELETON )
+GAME( 200?, ad5monop ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5monopa ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5monopb ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5monopc ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5monopf ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5monopg ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5monoph ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5monopi ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
// PR2221 RANDOM MONOPOLY ` MAZ*RNDN - S16MONOP SOUNDS
-GAME( 200?, ad5monopd ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2221, MAZNRNDN) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5monope ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2221, MAZNRNDN) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5monopj ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2221, MAZPRNDN) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5monopk ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2221, MAZPRNDN) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5monopd ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2221, MAZNRNDN) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5monope ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2221, MAZNRNDN) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5monopj ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2221, MAZPRNDN) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5monopk ,ad5monop, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly (PR2221, MAZPRNDN) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR1669 RANDOM SPINNER ` BFGNRNDN ( PR1669 RANDOM SPINNER SNDS11 )
-GAME( 200?, ad5rspin ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rspinb ,ad5rspin, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5rspin ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rspinb ,ad5rspin, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR1872 HOT SPINNER ASTURIAS 2.00 (wrong game?) ( PR1506 RANDOM SPINNER ) (non-english, can't find a sound string)
-GAME( 200?, ad5rspinc ,ad5rspin, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
+GAME( 200?, ad5rspinc ,ad5rspin, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Spinner (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
// PR1758 BULLSEYE TRIPLE ` BFG*BULS ( PR1758 BULLSEYE TRIPLE SOUNDS11 )
-GAME( 200?, ad5btc ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Bullseye Triple Club (PR1758, BFGPBULS) (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5btca ,ad5btc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Bullseye Triple Club (PR1758, BFGPBULS) (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5btcb ,ad5btc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Bullseye Triple Club (PR1758, BFGNBULS) (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
+GAME( 200?, ad5btc ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Bullseye Triple Club (PR1758, BFGPBULS) (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5btca ,ad5btc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Bullseye Triple Club (PR1758, BFGPBULS) (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5btcb ,ad5btc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Bullseye Triple Club (PR1758, BFGNBULS) (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
// PR2226 RANDOM SPINNWIN ` MAZ*RNDN ( S16RSPINNWIN SOUNDS )
-GAME( 200?, ad5rsnw ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Spin 'n' Win (PR2226, MAZNRNDN) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsnwa ,ad5rsnw, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Spin 'n' Win (PR2226, MAZNRNDN) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsnwb ,ad5rsnw, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Spin 'n' Win (PR2226, MAZPRNDN) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsnwc ,ad5rsnw, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Spin 'n' Win (PR2226, MAZPRNDN) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5rsnw ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Spin 'n' Win (PR2226, MAZNRNDN) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsnwa ,ad5rsnw, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Spin 'n' Win (PR2226, MAZNRNDN) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsnwb ,ad5rsnw, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Spin 'n' Win (PR2226, MAZPRNDN) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsnwc ,ad5rsnw, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Spin 'n' Win (PR2226, MAZPRNDN) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR3084 VIDEO SUPER SLAM VIDEO SUPER SLAM CLUB PR3084 SUPER SLAM VID SOUNDS11
-GAME( 200?, ad5sslam ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5sslama ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5sslamb ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5sslamc ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5sslamd ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5sslame ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 6)", GAME_IS_SKELETON )
-GAME( 200?, ad5sslamf ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 7)", GAME_IS_SKELETON )
+GAME( 200?, ad5sslam ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5sslama ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5sslamb ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5sslamc ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5sslamd ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5sslame ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 6)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5sslamf ,ad5sslam, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Super Slam (Bellfruit) (Adder 5) (set 7)", MACHINE_IS_SKELETON )
// PR2419 ROAD TO RICHES MR2R SOUNDS
-GAME( 200?, ad5mr2r ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5mr2ra ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5mr2rb ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5mr2rc ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5mr2rd ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5mr2re ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 6)", GAME_IS_SKELETON )
-GAME( 200?, ad5mr2rf ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 7)", GAME_IS_SKELETON )
-GAME( 200?, ad5mr2rg ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 8)", GAME_IS_SKELETON )
-GAME( 200?, ad5mr2rh ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 9)", GAME_IS_SKELETON )
+GAME( 200?, ad5mr2r ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mr2ra ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mr2rb ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mr2rc ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mr2rd ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mr2re ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 6)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mr2rf ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 7)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mr2rg ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 8)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mr2rh ,ad5mr2r, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Adder 5) (set 9)", MACHINE_IS_SKELETON )
// PR1756 RANDOM WINNER ` BFG*RWSX ( PR1756 RANDOM WINNER SOUNDS12 )
-GAME( 200?, ad5rwclb ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1756, BFGNRWSX) (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rwclba ,ad5rwclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1756, BFGNRWSX) (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5rwclbb ,ad5rwclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1756, BFGPRWSX) (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rwclbc ,ad5rwclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1756, BFGPRWSX) (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5rwclb ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1756, BFGNRWSX) (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rwclba ,ad5rwclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1756, BFGNRWSX) (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rwclbb ,ad5rwclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1756, BFGPRWSX) (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rwclbc ,ad5rwclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1756, BFGPRWSX) (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR1757 RANDOM WINNER ` BFG*RWCL ( PR1756 RANDOM WINNER SOUNDS12 )
-GAME( 200?, ad5rwclbd ,ad5rwclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1757, BFGPRWCL) (Bellfruit) (Adder 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5rwclbe ,ad5rwclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1757, BFGNRWCL) (Bellfruit) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5rwclbd ,ad5rwclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1757, BFGPRWCL) (Bellfruit) (Adder 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rwclbe ,ad5rwclb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Random Winner Club (PR1757, BFGNRWCL) (Bellfruit) (Adder 5)", MACHINE_IS_SKELETON )
// PR2258 GOLDEN WINNER
-GAME( 200?, ad5gldwn ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Golden Winner (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5gldwna ,ad5gldwn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Golden Winner (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5gldwn ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Golden Winner (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5gldwna ,ad5gldwn, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Golden Winner (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR1712 RAPID PAY PR1712 RAPID PAY SOUNDS11
-GAME( 200?, ad5rapid ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Rapid Pay (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rapida ,ad5rapid, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Rapid Pay (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5rapid ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Rapid Pay (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rapida ,ad5rapid, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Rapid Pay (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR2226 JACKPOT MONOPOLY ` MAZ*JACM (JPMONP SOUNDS)
-GAME( 200?, ad5jckmo ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5jckmoa ,ad5jckmo, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5jckmoc ,ad5jckmo, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5jckmod ,ad5jckmo, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2226, MAZPJACM) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5jckmoe ,ad5jckmo, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2226, MAZPJACM) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5jckmo ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5jckmoa ,ad5jckmo, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5jckmoc ,ad5jckmo, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5jckmod ,ad5jckmo, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2226, MAZPJACM) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5jckmoe ,ad5jckmo, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2226, MAZPJACM) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR2253 JACKPOT MONOPOLY ` MAZNJACM (JPMONP SOUNDS)
-GAME( 200?, ad5jckmob ,ad5jckmo, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2253, MAZNJACM) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5jckmob ,ad5jckmo, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Jackpot Monopoly (PR2253, MAZNJACM) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
// PR2304 PINKP_BTB PPBTB SOUNDS PINKP_BTB S.SITE ` QPSNPPBB
-GAME( 200?, ad5ppbtb ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Pink Panther Break The Bank (PR2304, QPSNPPBB) (Qps) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5ppbtba ,ad5ppbtb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Pink Panther Break The Bank (PR2304, QPSNPPBB) (Qps) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5ppbtbb ,ad5ppbtb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Pink Panther Break The Bank (PR2304, QPSPPPBB) (Qps) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5ppbtbc ,ad5ppbtb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Pink Panther Break The Bank (PR2304, QPSPPPBB) (Qps) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5ppbtb ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Pink Panther Break The Bank (PR2304, QPSNPPBB) (Qps) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5ppbtba ,ad5ppbtb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Pink Panther Break The Bank (PR2304, QPSNPPBB) (Qps) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5ppbtbb ,ad5ppbtb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Pink Panther Break The Bank (PR2304, QPSPPPBB) (Qps) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5ppbtbc ,ad5ppbtb, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Pink Panther Break The Bank (PR2304, QPSPPPBB) (Qps) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR3507 AWP VIVA LAS VEGAS SCORP5 PR3507 VIVA LAS VEGAS SOUNDS11
-GAME( 200?, ad5vlv ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5vlvb ,ad5vlv, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5vlvc ,ad5vlv, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5vlvd ,ad5vlv, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
-GAME( 200?, ad5vlve ,ad5vlv, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5vlvf ,ad5vlv, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 6)", GAME_IS_SKELETON )
+GAME( 200?, ad5vlv ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5vlvb ,ad5vlv, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5vlvc ,ad5vlv, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5vlvd ,ad5vlv, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5vlve ,ad5vlv, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5vlvf ,ad5vlv, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Viva Las Vegas (Bellfruit) (Adder 5) (set 6)", MACHINE_IS_SKELETON )
// PR2331 RROULETTE REEL ROULETTE SOUNDS RROULETTE S.SITE ` QPS*RLRO
-GAME( 200?, ad5rroul ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Roulette (QPSNRLRO) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5rroula ,ad5rroul, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Roulette (QPSPRLRO) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5rroul ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Roulette (QPSNRLRO) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rroula ,ad5rroul, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Roulette (QPSPRLRO) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
// PR2331 RROULETTE REEL ROULETTE SOUNDS RROULETTE S.SITE ` MAZ*RERO
-GAME( 200?, ad5rroulb ,ad5rroul, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Roulette (MAZNRERO) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5rroulc ,ad5rroul, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Roulette (MAZPRERO) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5rroulb ,ad5rroul, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Roulette (MAZNRERO) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rroulc ,ad5rroul, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Roulette (MAZPRERO) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
// PR2444 MONTE CARLO OR BUST MONTE SOUNDS
-GAME( 200?, ad5mcob ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Monte Carlo Or Bust (Qps) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5mcoba ,ad5mcob, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Monte Carlo Or Bust (Qps) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5mcobb ,ad5mcob, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Monte Carlo Or Bust (Qps) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5mcobc ,ad5mcob, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Monte Carlo Or Bust (Qps) (Adder 5) (set 4)", GAME_IS_SKELETON )
+GAME( 200?, ad5mcob ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Monte Carlo Or Bust (Qps) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mcoba ,ad5mcob, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Monte Carlo Or Bust (Qps) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mcobb ,ad5mcob, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Monte Carlo Or Bust (Qps) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5mcobc ,ad5mcob, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Qps","Monte Carlo Or Bust (Qps) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
// PR1625 POKER KING PR1625 POKER KING SOUNDS11 POKER KING S.SITE
-GAME( 200?, ad5pking ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Poker King (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5pkinga ,ad5pking, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Poker King (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5pking ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Poker King (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5pkinga ,ad5pking, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Poker King (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR3073 VIDEO POKER ACE VID POKER ACE ARCADE PR3073 POKER ACE SOUNDS11
-GAME( 200?, ad5vpa ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Video Poker Ace (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5vpaa ,ad5vpa, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Video Poker Ace (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5vpab ,ad5vpa, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Video Poker Ace (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5vpac ,ad5vpa, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Video Poker Ace (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
+GAME( 200?, ad5vpa ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Video Poker Ace (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5vpaa ,ad5vpa, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Video Poker Ace (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5vpab ,ad5vpa, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Video Poker Ace (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5vpac ,ad5vpa, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Video Poker Ace (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
// PR1629 TORNADO 5.5 (Revision 8) ` BFG*TORD ( PR1627 TORNADO CLUB SOUNDS11 )
-GAME( 200?, ad5tornc ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1629, 5.5, rv 8, BFGNTORD) (Bellfruit) (Adder 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5torncb ,ad5tornc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1629, 5.5, rv 8, BFGPTORD) (Bellfruit) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5tornc ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1629, 5.5, rv 8, BFGNTORD) (Bellfruit) (Adder 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5torncb ,ad5tornc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1629, 5.5, rv 8, BFGPTORD) (Bellfruit) (Adder 5)", MACHINE_IS_SKELETON )
// PR1629 TORNADO 5.8 (Revision 7) ` BFGPTORD ( PR1627 TORNADO CLUB SOUNDS11 )
-GAME( 200?, ad5tornca ,ad5tornc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1629, 5.8, rv 7, BFGNTORD) (Bellfruit) (Adder 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5torncc ,ad5tornc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1629, 5.8, rv 7, BFGPTORD) (Bellfruit) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5tornca ,ad5tornc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1629, 5.8, rv 7, BFGNTORD) (Bellfruit) (Adder 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5torncc ,ad5tornc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1629, 5.8, rv 7, BFGPTORD) (Bellfruit) (Adder 5)", MACHINE_IS_SKELETON )
// PR1627 TORNADO 0.1 (Revision 1) ` BFG*TORN ( PR1627 TORNADO CLUB SOUNDS11 )
-GAME( 200?, ad5tornce ,ad5tornc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1627, 0.1, rv 1, BFGNTORN) (Bellfruit) (Adder 5)", GAME_IS_SKELETON )
-GAME( 200?, ad5torncd ,ad5tornc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1627, 0.1, rv 1, BFGPTORN) (Bellfruit) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5tornce ,ad5tornc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1627, 0.1, rv 1, BFGNTORN) (Bellfruit) (Adder 5)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5torncd ,ad5tornc, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Tornado Club (PR1627, 0.1, rv 1, BFGPTORN) (Bellfruit) (Adder 5)", MACHINE_IS_SKELETON )
// PR2268 REEL CASH
-GAME( 200?, ad5rcash ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Cash (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rcasha ,ad5rcash, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Cash (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5rcash ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Cash (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rcasha ,ad5rcash, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Reel Cash (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR2284 RANDOM MONOPOLY WOTW ( S16MONOPWOW SOUNDS )
-GAME( 200?, ad5mww ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly Wonders Of The World (PR2284) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5mww ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly Wonders Of The World (PR2284) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
// PR2291 RANDOM MONOPOLY WOTW ( S16MONOPWOW SOUNDS )
-GAME( 200?, ad5mwwa ,ad5mww, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly Wonders Of The World (PR2291) (Mazooma) (Adder 5)", GAME_IS_SKELETON )
+GAME( 200?, ad5mwwa ,ad5mww, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Random Monopoly Wonders Of The World (PR2291) (Mazooma) (Adder 5)", MACHINE_IS_SKELETON )
// PR2242 EYES DOWN ` MAZ*EYDW
-GAME( 200?, ad5eyes ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2242, MAZNEYDW) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5eyesa ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2242, MAZNEYDW) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5eyesd ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2242, MAZPEYDW) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5eyese ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2242, MAZPEYDW) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5eyes ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2242, MAZNEYDW) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5eyesa ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2242, MAZNEYDW) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5eyesd ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2242, MAZPEYDW) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5eyese ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2242, MAZPEYDW) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR2246 EYES DOWN ` MAZ*EYDW
-GAME( 200?, ad5eyesb ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2246, MAZNEYDW) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5eyesg ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2246, MAZNEYDW) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5eyesc ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2246, MAZPEYDW) (Mazooma) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5eyesf ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2246, MAZPEYDW) (Mazooma) (Adder 5) (set 2)", GAME_IS_SKELETON )
+GAME( 200?, ad5eyesb ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2246, MAZNEYDW) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5eyesg ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2246, MAZNEYDW) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5eyesc ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2246, MAZPEYDW) (Mazooma) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5eyesf ,ad5eyes, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "Mazooma","Eyes Down (PR2246, MAZPEYDW) (Mazooma) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
// PR3302 AWP RONNIE O SULLIVANS ROCKET MONEY SCORP5 PR3302 RONNIE ROCKET SOUNDS11
-GAME( 200?, ad5rsrm ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 1)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsrma ,ad5rsrm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 2)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsrr ,ad5rsrm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 3)", GAME_IS_SKELETON )
-GAME( 200?, ad5rsrra ,ad5rsrm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 4)", GAME_IS_SKELETON )
+GAME( 200?, ad5rsrm ,0, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 1)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsrma ,ad5rsrm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 2)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsrr ,ad5rsrm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 3)", MACHINE_IS_SKELETON )
+GAME( 200?, ad5rsrra ,ad5rsrm, bfm_ad5, bfm_ad5, adder5_state, ad5, ROT0, "BFM","Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 4)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/bfm_sc1.c b/src/mame/drivers/bfm_sc1.c
index 924f43f1f66..e6c8de85375 100644
--- a/src/mame/drivers/bfm_sc1.c
+++ b/src/mame/drivers/bfm_sc1.c
@@ -2597,10 +2597,10 @@ ROM_END
/////////////////////////////////////////////////////////////////////////////////////
-#define GAME_FLAGS GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL
+#define GAME_FLAGS MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL
//Adder 2
-GAME( 1996, m_tppokr , 0 , scorpion1_adder2 , toppoker , bfm_sc1_state, toppoker , 0, "BFM/ELAM", "Top Poker (Dutch, Game Card 95-750-899)", GAME_SUPPORTS_SAVE|GAME_NOT_WORKING )
+GAME( 1996, m_tppokr , 0 , scorpion1_adder2 , toppoker , bfm_sc1_state, toppoker , 0, "BFM/ELAM", "Top Poker (Dutch, Game Card 95-750-899)", MACHINE_SUPPORTS_SAVE|MACHINE_NOT_WORKING )
/********************************************************************************************************************************************************************************************************************
@@ -3108,7 +3108,7 @@ GAME( 1988, sc1lotusa , sc1lotus , scorpion1 , scorpion1 , bfm_sc
GAME( 1988, sc1roul , 0 , scorpion1 , scorpion1 , bfm_sc1_state, rou029 , 0, "BFM/ELAM", "Roulette (Dutch, Game Card 39-360-129?)", GAME_FLAGS )
// PROJECT NUMBER 6045 ARMADA GAME No 39-370-729 - 28-AUG-1992 14:37:00
-GAME( 198?, sc1armad , 0 , scorpion1 , scorpion1 , bfm_sc1_state, lotse , 0, "BFM/ELAM", "Armada (Dutch) (Bellfruit) (Scorpion 1)", GAME_FLAGS )
+GAME( 198?, sc1armad , 0 , scorpion1 , scorpion1 , bfm_sc1_state, lotse , 0, "BFM/ELAM", "Armada (Dutch) (Bellfruit) (Scorpion 1)", GAME_FLAGS )
// PROJECT NUMBER 6043 CALYPSO GAME No 39-370-754 - 08-DEC-1992 13:20:00
GAME( 198?, sc1calyp , 0 , scorpion1 , scorpion1 , bfm_sc1_state, lotse , 0, "BFM/ELAM", "Calypso (Dutch) (Bellfruit) (Scorpion 1)", GAME_FLAGS )
@@ -3147,7 +3147,7 @@ GAME( 198?, sc1copdd , 0 , scorpion1 , scorpion1 , bfm_sc
GAME( 198?, sc1disc , 0 , scorpion1 , scorpion1 , bfm_sc1_state, lotse , 0, "BFM/ELAM", "Discovey (Dutch) (Bellfruit) (Scorpion 1)", GAME_FLAGS )
// PROJECT NUMBER 5956 FLASH GAME No 95-750-771 - 17-JUN-1996 09:30:53
-GAME( 198?, sc1flash , 0 , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "BFM/ELAM", "Flash (Dutch) (Bellfruit) (Scorpion 1)", GAME_FLAGS )
+GAME( 198?, sc1flash , 0 , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "BFM/ELAM", "Flash (Dutch) (Bellfruit) (Scorpion 1)", GAME_FLAGS )
// PROJECT NUMBER 5391 FRUIT LINES GAME No 39-370-653 - 30-JUL-1992 09:31:10
GAME( 198?, sc1fruit , 0 , scorpion1 , scorpion1 , bfm_sc1_state, lotse , 0, "BFM/ELAM", "Fruit Lines (Dutch) (Bellfruit) (set 1) (Scorpion 1)", GAME_FLAGS )
@@ -3284,19 +3284,19 @@ GAME( 199?, sc1lamb , 0 , scorpion1 , scorpion1 , bfm_sc
// Misc 3rd Party
-GAME( 199?, sc1smoke , 0 , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Smokey Vs The Bandit (Mdm) (set 1) (Scorpion 2/3?)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_NO_SOUND )
-GAME( 199?, sc1smokea , sc1smoke , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Smokey Vs The Bandit (Mdm) (set 2) (Scorpion 2/3?)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_NO_SOUND )
+GAME( 199?, sc1smoke , 0 , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Smokey Vs The Bandit (Mdm) (set 1) (Scorpion 2/3?)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NO_SOUND )
+GAME( 199?, sc1smokea , sc1smoke , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Smokey Vs The Bandit (Mdm) (set 2) (Scorpion 2/3?)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NO_SOUND )
-GAME( 199?, sc1ccroc , 0 , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Crazy Crocs (Mdm) (set 1) (Scorpion 2/3?)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_NO_SOUND )
-GAME( 199?, sc1ccroca , sc1ccroc , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Crazy Crocs (Mdm) (set 2) (Scorpion 2/3?)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_NO_SOUND )
-GAME( 199?, sc1ccrocb , sc1ccroc , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Crazy Crocs (Mdm) (set 3) (Scorpion 2/3?)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_NO_SOUND )
-GAME( 199?, sc1ccrocc , sc1ccroc , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Crazy Crocs (Mdm) (set 4) (Scorpion 2/3?)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_NO_SOUND )
+GAME( 199?, sc1ccroc , 0 , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Crazy Crocs (Mdm) (set 1) (Scorpion 2/3?)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NO_SOUND )
+GAME( 199?, sc1ccroca , sc1ccroc , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Crazy Crocs (Mdm) (set 2) (Scorpion 2/3?)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NO_SOUND )
+GAME( 199?, sc1ccrocb , sc1ccroc , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Crazy Crocs (Mdm) (set 3) (Scorpion 2/3?)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NO_SOUND )
+GAME( 199?, sc1ccrocc , sc1ccroc , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Crazy Crocs (Mdm) (set 4) (Scorpion 2/3?)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NO_SOUND )
-GAME( 199?, sc1crocr , 0 , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Croc And Roll (Mdm) (Scorpion 2/3?)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_NO_SOUND )
+GAME( 199?, sc1crocr , 0 , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Croc And Roll (Mdm) (Scorpion 2/3?)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NO_SOUND )
-GAME( 199?, sc1btclk , 0 , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Beat The Clock (Mdm) (set 1) (Scorpion 2/3?)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_NO_SOUND )
-GAME( 199?, sc1btclka , sc1btclk , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Beat The Clock (Mdm) (set 2) (Scorpion 2/3?)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_NO_SOUND )
-GAME( 199?, sc1btclkb , sc1btclk , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Beat The Clock (Mdm) (set 3) (Scorpion 2/3?)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_NO_SOUND )
+GAME( 199?, sc1btclk , 0 , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Beat The Clock (Mdm) (set 1) (Scorpion 2/3?)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NO_SOUND )
+GAME( 199?, sc1btclka , sc1btclk , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Beat The Clock (Mdm) (set 2) (Scorpion 2/3?)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NO_SOUND )
+GAME( 199?, sc1btclkb , sc1btclk , scorpion1 , scorpion1 , bfm_sc1_state, nocrypt , 0, "Mdm", "Beat The Clock (Mdm) (set 3) (Scorpion 2/3?)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_NO_SOUND )
GAME( 199?, sc1days , 0 , scorpion1 , scorpion1 , bfm_sc1_state, lotse , 0, "Global", "All In A Days Work (Global) (set 1)", GAME_FLAGS)
GAME( 199?, sc1daysa , sc1days , scorpion1 , scorpion1 , bfm_sc1_state, lotse , 0, "Global", "All In A Days Work (Global) (set 2)", GAME_FLAGS)
diff --git a/src/mame/drivers/bfm_sc2.c b/src/mame/drivers/bfm_sc2.c
index b2a3fc48507..e96c5f86687 100644
--- a/src/mame/drivers/bfm_sc2.c
+++ b/src/mame/drivers/bfm_sc2.c
@@ -7474,29 +7474,29 @@ ROM_END
/* Video Based (Adder 2) */
-#define GAME_FLAGS GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL
+#define GAME_FLAGS MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL
-GAMEL( 1993, quintoon, 0, scorpion2_vid, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-750-206)", GAME_SUPPORTS_SAVE|GAME_IMPERFECT_SOUND,layout_quintoon ) //Current samples need verification
-GAMEL( 1993, quintond, quintoon, scorpion2_vid, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-751-206, Datapak)",GAME_SUPPORTS_SAVE|GAME_IMPERFECT_SOUND|GAME_NOT_WORKING,layout_quintoon ) //Current samples need verification
-GAMEL( 1993, quintono, quintoon, scorpion2_vid, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-750-203)", GAME_SUPPORTS_SAVE|GAME_IMPERFECT_SOUND,layout_quintoon ) //Current samples need verification
+GAMEL( 1993, quintoon, 0, scorpion2_vid, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-750-206)", MACHINE_SUPPORTS_SAVE|MACHINE_IMPERFECT_SOUND,layout_quintoon ) //Current samples need verification
+GAMEL( 1993, quintond, quintoon, scorpion2_vid, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-751-206, Datapak)",MACHINE_SUPPORTS_SAVE|MACHINE_IMPERFECT_SOUND|MACHINE_NOT_WORKING,layout_quintoon ) //Current samples need verification
+GAMEL( 1993, quintono, quintoon, scorpion2_vid, quintoon, bfm_sc2_state, quintoon, 0, "BFM", "Quintoon (UK, Game Card 95-750-203)", MACHINE_SUPPORTS_SAVE|MACHINE_IMPERFECT_SOUND,layout_quintoon ) //Current samples need verification
-GAMEL( 1993, qntoond, 0, scorpion2_vid, qntoond, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Quintoon (Dutch, Game Card 95-750-243)", GAME_SUPPORTS_SAVE,layout_quintoon )
-GAMEL( 1993, qntoondo, qntoond, scorpion2_vid, qntoond, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Quintoon (Dutch, Game Card 95-750-136)", GAME_SUPPORTS_SAVE,layout_quintoon )
+GAMEL( 1993, qntoond, 0, scorpion2_vid, qntoond, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Quintoon (Dutch, Game Card 95-750-243)", MACHINE_SUPPORTS_SAVE,layout_quintoon )
+GAMEL( 1993, qntoondo, qntoond, scorpion2_vid, qntoond, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Quintoon (Dutch, Game Card 95-750-136)", MACHINE_SUPPORTS_SAVE,layout_quintoon )
-GAMEL( 1994, pokio, 0, scorpion2_vid, pokio, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Pokio (Dutch, Game Card 95-750-278)", GAME_SUPPORTS_SAVE,layout_pokio )
+GAMEL( 1994, pokio, 0, scorpion2_vid, pokio, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Pokio (Dutch, Game Card 95-750-278)", MACHINE_SUPPORTS_SAVE,layout_pokio )
-GAMEL( 1995, paradice, 0, scorpion2_vid, paradice, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Paradice (Dutch, Game Card 95-750-615)", GAME_SUPPORTS_SAVE,layout_paradice )
+GAMEL( 1995, paradice, 0, scorpion2_vid, paradice, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Paradice (Dutch, Game Card 95-750-615)", MACHINE_SUPPORTS_SAVE,layout_paradice )
-GAMEL( 1996, pyramid, 0, scorpion2_vid, pyramid, bfm_sc2_state, pyramid, 0, "BFM/ELAM", "Pyramid (Dutch, Game Card 95-750-898)", GAME_SUPPORTS_SAVE,layout_pyramid )
+GAMEL( 1996, pyramid, 0, scorpion2_vid, pyramid, bfm_sc2_state, pyramid, 0, "BFM/ELAM", "Pyramid (Dutch, Game Card 95-750-898)", MACHINE_SUPPORTS_SAVE,layout_pyramid )
-GAMEL( 1995, slotsnl, 0, scorpion2_vid, slotsnl, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Slots (Dutch, Game Card 95-750-368)", GAME_SUPPORTS_SAVE,layout_slots )
+GAMEL( 1995, slotsnl, 0, scorpion2_vid, slotsnl, bfm_sc2_state, adder_dutch,0, "BFM/ELAM", "Slots (Dutch, Game Card 95-750-368)", MACHINE_SUPPORTS_SAVE,layout_slots )
-GAMEL( 1996, sltblgtk, 0, scorpion2_vid, sltblgtk, bfm_sc2_state, sltsbelg, 0, "BFM/ELAM", "Slots (Belgian Token, Game Card 95-750-943)", GAME_SUPPORTS_SAVE,layout_sltblgtk )
+GAMEL( 1996, sltblgtk, 0, scorpion2_vid, sltblgtk, bfm_sc2_state, sltsbelg, 0, "BFM/ELAM", "Slots (Belgian Token, Game Card 95-750-943)", MACHINE_SUPPORTS_SAVE,layout_sltblgtk )
-GAMEL( 1996, sltblgpo, 0, scorpion2_vid, sltblgpo, bfm_sc2_state, sltsbelg, 0, "BFM/ELAM", "Slots (Belgian Cash, Game Card 95-750-938)", GAME_SUPPORTS_SAVE,layout_sltblgpo )
-GAMEL( 1996, sltblgp1, sltblgpo, scorpion2_vid, sltblgpo, bfm_sc2_state, sltsbelg, 0, "BFM/ELAM", "Slots (Belgian Cash, Game Card 95-752-008)", GAME_SUPPORTS_SAVE,layout_sltblgpo )
+GAMEL( 1996, sltblgpo, 0, scorpion2_vid, sltblgpo, bfm_sc2_state, sltsbelg, 0, "BFM/ELAM", "Slots (Belgian Cash, Game Card 95-750-938)", MACHINE_SUPPORTS_SAVE,layout_sltblgpo )
+GAMEL( 1996, sltblgp1, sltblgpo, scorpion2_vid, sltblgpo, bfm_sc2_state, sltsbelg, 0, "BFM/ELAM", "Slots (Belgian Cash, Game Card 95-752-008)", MACHINE_SUPPORTS_SAVE,layout_sltblgpo )
-GAMEL( 1997, gldncrwn, 0, scorpion2_vid, gldncrwn, bfm_sc2_state, gldncrwn, 0, "BFM/ELAM", "Golden Crown (Dutch, Game Card 95-752-011)", GAME_SUPPORTS_SAVE,layout_gldncrwn )
+GAMEL( 1997, gldncrwn, 0, scorpion2_vid, gldncrwn, bfm_sc2_state, gldncrwn, 0, "BFM/ELAM", "Golden Crown (Dutch, Game Card 95-752-011)", MACHINE_SUPPORTS_SAVE,layout_gldncrwn )
/* Non-Video */
@@ -7510,38 +7510,38 @@ GAMEL( 1997, gldncrwn, 0, scorpion2_vid, gldncrwn, bfm_sc2_state, gldnc
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6305 DR WHO TIMELORD - 28-SEP-1994 11:14:58
-GAMEL( 1994, sc2drwho , 0 , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 1, UK, Single Site) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-288
-GAMEL( 1994, sc2drwhou , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwhon , 0, "BFM", "Dr.Who The Timelord (set 1, UK, Single Site) (Scorpion 2/3) (not encrypted)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-288 (unencrypted bootleg?)
-GAMEL( 1994, sc2drwhop , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 1, UK, Single Site Protocol) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-751-288
+GAMEL( 1994, sc2drwho , 0 , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 1, UK, Single Site) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-288
+GAMEL( 1994, sc2drwhou , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwhon , 0, "BFM", "Dr.Who The Timelord (set 1, UK, Single Site) (Scorpion 2/3) (not encrypted)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-288 (unencrypted bootleg?)
+GAMEL( 1994, sc2drwhop , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 1, UK, Single Site Protocol) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-751-288
// PROJECT NUMBER 6305 DR WHO TIMELORD IRISH ALL CASH - 28-SEP-1994 11:20:17
-GAMEL( 1994, sc2drwho1 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 2, UK, Arcade) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-290
-GAMEL( 1994, sc2drwho1p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 2, UK, Arcade, Protocol) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-751-290
+GAMEL( 1994, sc2drwho1 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 2, UK, Arcade) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-290
+GAMEL( 1994, sc2drwho1p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 2, UK, Arcade, Protocol) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-751-290
// PROJECT NUMBER 6305 DR WHO TIMELORD NO JP SPIN - 17-NOV-1994 09:34:50
-GAMEL( 1994, sc2drwho2 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 3, UK, no Jackpot spin) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-309
-GAMEL( 1994, sc2drwho2p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 3, UK, no Jackpot spin, Protocol) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-751-309
+GAMEL( 1994, sc2drwho2 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 3, UK, no Jackpot spin) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-309
+GAMEL( 1994, sc2drwho2p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 3, UK, no Jackpot spin, Protocol) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-751-309
// PROJECT NUMBER 6305 DR WHO TIMELORD ARCADE - 24-OCT-1995 16:12:44
-GAMEL( 1994, sc2drwho3 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 4, UK, Arcade) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-536
-GAMEL( 1994, sc2drwho3p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 4, UK, Arcade, Protocol) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-751-536
+GAMEL( 1994, sc2drwho3 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 4, UK, Arcade) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-536
+GAMEL( 1994, sc2drwho3p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 4, UK, Arcade, Protocol) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-751-536
// PROJECT NUMBER 6305 DR WHO TIMELORD 4/8 - 24-OCT-1995 16:14:30
-GAMEL( 1994, sc2drwho4 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 5, UK) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-535
-GAMEL( 1994, sc2drwho4p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 5, UK, Protocol) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-751-535
+GAMEL( 1994, sc2drwho4 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 5, UK) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-535
+GAMEL( 1994, sc2drwho4p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 5, UK, Protocol) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-751-535
// PROJECT NUMBER 6305 DR WHO TIMELORD IRISH ALL CASH 4/8 - 25-OCT-1995 09:50:12
-GAMEL( 1994, sc2drwho5 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 6, UK, Arcade, 8GBP Jackpot) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-531
-GAMEL( 1994, sc2drwho5p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 6, UK, Arcade, 8GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-751-531
+GAMEL( 1994, sc2drwho5 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 6, UK, Arcade, 8GBP Jackpot) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-531
+GAMEL( 1994, sc2drwho5p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 6, UK, Arcade, 8GBP Jackpot, Protocol) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-751-531
// PROJECT NUMBER 6305 TIMELORD ARCADE 10P PLAY 4/8 - 25-OCT-1995 09:53:06
-GAMEL( 1994, sc2drwho6 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 7, UK, Arcade) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-533
-GAMEL( 1994, sc2drwho6p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 7, UK, Arcade, Protocol) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-751-533
+GAMEL( 1994, sc2drwho6 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 7, UK, Arcade) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-533
+GAMEL( 1994, sc2drwho6p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 7, UK, Arcade, Protocol) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-751-533
// PROJECT NUMBER 6305 DR WHO TIMELORD 10 POUNDS - 28-MAR-1996 13:21:58
-GAMEL( 1994, sc2drwho7 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 8, UK, Arcade, 10GBP Jackpot) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-661
-GAMEL( 1994, sc2drwho7p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 8, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-751-661
+GAMEL( 1994, sc2drwho7 , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 8, UK, Arcade, 10GBP Jackpot) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-661
+GAMEL( 1994, sc2drwho7p , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord (set 8, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-751-661
// PROJECT NUMBER 6419 DR WHO TIMELORD DELUXE - 8-MAR-1995 15:37:53
-GAMEL( 1994, sc2drwhodx , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord Deluxe (set 1) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-370
+GAMEL( 1994, sc2drwhodx , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord Deluxe (set 1) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-370
// PROJECT NUMBER 6419 TIMELORD DELUXE MULTI-SITE ALL CASH - 4-DEC-1995 10:48:34
-GAMEL( 1994, sc2drwhodx1, sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord Deluxe (set 2) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL,layout_drwho) // GAME No 95-750-572
+GAMEL( 1994, sc2drwhodx1, sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM", "Dr.Who The Timelord Deluxe (set 2) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL,layout_drwho) // GAME No 95-750-572
// PROJECT NUMBER 6999 TIMELORD AT PLAYMAKER 5P/10p 500P - 15-SEP-1997 10:02:47
-GAMEL( 1994, sc2drwhomz , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM/Mazooma", "Dr.Who The Timelord (Mazooma) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL | GAME_NOT_WORKING,layout_drwho) // GAME No TLVMAZ12_N, error 99
+GAMEL( 1994, sc2drwhomz , sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM/Mazooma", "Dr.Who The Timelord (Mazooma) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL | MACHINE_NOT_WORKING,layout_drwho) // GAME No TLVMAZ12_N, error 99
// PROJECT NUMBER TLP12 TIMELORD AT PLAYMAKER 5P/10p 500P - 15-SEP-1997 10:03:49
-GAMEL( 1994, sc2drwhomzp, sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM/Mazooma", "Dr.Who The Timelord (Mazooma, Protocol) (Scorpion 2/3)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL | GAME_NOT_WORKING,layout_drwho) // GAME No TLVMAZ12_P, error 99
+GAMEL( 1994, sc2drwhomzp, sc2drwho , scorpion2 , drwho , bfm_sc2_state, drwho , 0, "BFM/Mazooma", "Dr.Who The Timelord (Mazooma, Protocol) (Scorpion 2/3)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL | MACHINE_NOT_WORKING,layout_drwho) // GAME No TLVMAZ12_P, error 99
/********************************************************************************************************************************************************************************************************************
The Big Breakfast
@@ -7810,11 +7810,11 @@ GAME( 199?, sc2downt3p , sc2downt , scorpion2 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER PR6591 CLUB GRAND SLAM - 7-AUG-1996 12:32:05
-GAME( 1996, sc2gslam1 , sc2gslam , scorpion2 , bfmcgslm , bfm_sc2_state, bfmcgslm , 0, "BFM", "Club Grand Slam (UK, set 1) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-843
-GAME( 1996, sc2gslam1p , sc2gslam , scorpion2 , bfmcgslm , bfm_sc2_state, bfmcgslm , 0, "BFM", "Club Grand Slam (UK, set 1, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-843
+GAME( 1996, sc2gslam1 , sc2gslam , scorpion2 , bfmcgslm , bfm_sc2_state, bfmcgslm , 0, "BFM", "Club Grand Slam (UK, set 1) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-843
+GAME( 1996, sc2gslam1p , sc2gslam , scorpion2 , bfmcgslm , bfm_sc2_state, bfmcgslm , 0, "BFM", "Club Grand Slam (UK, set 1, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-843
// PROJECT NUMBER PR6591 CLUB GRAND SLAM - 29-OCT-2001 14:48:47
-GAME( 1996, sc2gslam , 0 , scorpion2 , bfmcgslm , bfm_sc2_state, bfmcgslm , 0, "BFM", "Club Grand Slam (UK, set 2) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-752-056
-GAME( 1996, sc2gslamp , sc2gslam , scorpion2 , bfmcgslm , bfm_sc2_state, bfmcgslm , 0, "BFM", "Club Grand Slam (UK, set 2, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-753-056
+GAME( 1996, sc2gslam , 0 , scorpion2 , bfmcgslm , bfm_sc2_state, bfmcgslm , 0, "BFM", "Club Grand Slam (UK, set 2) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-752-056
+GAME( 1996, sc2gslamp , sc2gslam , scorpion2 , bfmcgslm , bfm_sc2_state, bfmcgslm , 0, "BFM", "Club Grand Slam (UK, set 2, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-753-056
/********************************************************************************************************************************************************************************************************************
Make A Million
@@ -8252,7 +8252,7 @@ GAME( 199?, sc2maina , 0 , scorpion2 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6346 FOCUS - 23-JAN-1995 15:31:32
-GAME( 1995, sc2focus , 0 , scorpion3 , scorpion3 , bfm_sc2_state, focus , 0, "BFM/ELAM", "Focus (Dutch, Game Card 95-750-347) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-347
+GAME( 1995, sc2focus , 0 , scorpion3 , scorpion3 , bfm_sc2_state, focus , 0, "BFM/ELAM", "Focus (Dutch, Game Card 95-750-347) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-347
/********************************************************************************************************************************************************************************************************************
Public Enemy No.1 (German)
@@ -8344,19 +8344,19 @@ GAME( 198?, sc2cexplb , sc2cexpl , scorpion2 , drwho , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6569 (6224) LUVVLY JUBBLY GALA S+P 95 - 30-JAN-1996 11:12:00
-GAME( 1996, sc2luvv6p , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 1, UK, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-621
+GAME( 1996, sc2luvv6p , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 1, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-621
// PROJECT NUMBER 6569 (6224) LUVVLY JUBBLY MULTISITE S+P 95 - 30-JAN-1996 11:14:05
-GAME( 1996, sc2luvv2 , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 2, UK, Multisite) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-622
-GAME( 1996, sc2luvv2p , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 2, UK, Multisite, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-622
+GAME( 1996, sc2luvv2 , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 2, UK, Multisite) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-622
+GAME( 1996, sc2luvv2p , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 2, UK, Multisite, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-622
// PROJECT NUMBER 6569 (6224) LUVVLY JUBBLY MULTISITE #10/25P - 2-JUL-1996 16:32:17
-GAME( 1996, sc2luvv , 0 , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/25p) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-808
-GAME( 1996, sc2luvvp , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/25p, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-808
+GAME( 1996, sc2luvv , 0 , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/25p) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-808
+GAME( 1996, sc2luvvp , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/25p, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-808
// PROJECT NUMBER 6569 (6224) LUVVLY JUBBLY MULTISITE #4/5P PLAY - 4-JUL-1996 10:56:24
-GAME( 1996, sc2luvv4 , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 4, UK, Multisite 4GBP/5p) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-810
-GAME( 1996, sc2luvv4p , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 4, UK, Multisite 4GBP/5p, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-810
+GAME( 1996, sc2luvv4 , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 4, UK, Multisite 4GBP/5p) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-810
+GAME( 1996, sc2luvv4p , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 4, UK, Multisite 4GBP/5p, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-810
// PROJECT NUMBER 6569 (6224) LUVVLY JUBBLY MULTISITE #10/20P - 12-SEP-1996 14:07:57
-GAME( 1996, sc2luvv1 , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/20p) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-866
-GAME( 1996, sc2luvv1p , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/20p, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-866
+GAME( 1996, sc2luvv1 , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/20p) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-866
+GAME( 1996, sc2luvv1p , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_state, luvjub , 0, "BFM", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/20p, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-866
/********************************************************************************************************************************************************************************************************************
@@ -8365,20 +8365,20 @@ GAME( 1996, sc2luvv1p , sc2luvv , scorpion2_dm01 , luvjub , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER PR6331 PUBLIC ENEMY NO.1 - 26-JUL-1994 09:24:19
-GAME( 1996, sc2cpe3 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 1, UK) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-257
-GAME( 1996, sc2cpe3p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 1, UK, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-257
+GAME( 1996, sc2cpe3 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 1, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-257
+GAME( 1996, sc2cpe3p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 1, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-257
// PROJECT NUMBER PR6331 PUBLIC ENEMY NO.1 FIXED 65% - 10-AUG-1994 11:26:30
-GAME( 1996, sc2cpe4 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 2, UK) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-273
-GAME( 1996, sc2cpe4p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 2, UK, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-273
+GAME( 1996, sc2cpe4 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 2, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-273
+GAME( 1996, sc2cpe4p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 2, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-273
// PROJECT NUMBER PR6574 PUBLIC ENEMY NO.1 S+P 25P/#250 STENA SEALINK - 3-JAN-1996 12:17:33
-GAME( 1996, sc2cpe2 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 3, UK) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-597
-GAME( 1996, sc2cpe2p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 3, UK, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-597
+GAME( 1996, sc2cpe2 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 3, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-597
+GAME( 1996, sc2cpe2p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 3, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-597
// PROJECT NUMBER PR6574 PUBLIC ENEMY NO.1 S+P 25P/#250 FIXED 65% - 3-JAN-1996 12:19:01
-GAME( 1996, sc2cpe1 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 4, UK) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-598
-GAME( 1996, sc2cpe1p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 4, UK, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-598
+GAME( 1996, sc2cpe1 , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 4, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-598
+GAME( 1996, sc2cpe1p , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 4, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-598
// PROJECT NUMBER PR6574 PUBLIC ENEMY NO.1 S+P 25P/#250 - 20-AUG-1996 10:05:21
-GAME( 1996, sc2cpe , 0 , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 5, UK) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-750-846
-GAME( 1996, sc2cpep , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 5, UK, Protocol) (Scorpion 2/3)", GAME_NOT_WORKING|GAME_REQUIRES_ARTWORK|GAME_MECHANICAL) // GAME No 95-751-846
+GAME( 1996, sc2cpe , 0 , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 5, UK) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-750-846
+GAME( 1996, sc2cpep , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_state, cpeno1 , 0, "BFM", "Club Public Enemy No.1 (set 5, UK, Protocol) (Scorpion 2/3)", MACHINE_NOT_WORKING|MACHINE_REQUIRES_ARTWORK|MACHINE_MECHANICAL) // GAME No 95-751-846
/********************************************************************************************************************************************************************************************************************
Cops 'n' Robbers
@@ -8386,19 +8386,19 @@ GAME( 1996, sc2cpep , sc2cpe , scorpion2_dm01 , cpeno1 , bfm_sc2_st
********************************************************************************************************************************************************************************************************************/
// PROJECT NUMBER 6012 COPS & ROBBERS #3/#6 - 29-DEC-1992 21:26:28
-GAME( 199?, sc2cops5 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-044
+GAME( 199?, sc2cops5 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-044
// PROJECT NUMBER 6012 COPS AND ROBBERS S+P 10P - 7-JUL-1993 10:17:18
GAME( 199?, sc2cops2 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-110
// PROJECT NUMBER 6589 (6012) COPS & ROBBERS (SINGLE SITE 5P/10P/20P) - 4-DEC-1995 10:52:08
-GAME( 199?, sc2cops3 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 3) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-577
-GAME( 199?, sc2cops3p , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 3, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-577
+GAME( 199?, sc2cops3 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 3) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-577
+GAME( 199?, sc2cops3p , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 3, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-577
// PROJECT NUMBER 6589 (6012) COPS & ROBBERS (ARCADE 5P/10P/20P) - 4-DEC-1995 10:53:58
-GAME( 199?, sc2copsp , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 4, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-578
+GAME( 199?, sc2copsp , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 4, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-578
// PROJECT NUMBER 6589 (6012) COPS & ROBBERS (IRISH ALL CASH 5P/10P/20P) - 7-MAR-1996 15:07:40
GAME( 199?, sc2cops4 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 5) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-645
// PROJECT NUMBER 6589 (6012) COPS & ROBBERS (#10 ALL CASH 20P/25P) - 15-MAR-1996 11:52:02
GAME( 199?, sc2cops , 0 , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 6) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-652
-GAME( 199?, sc2cops1p , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 6, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-652
+GAME( 199?, sc2cops1p , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Cops 'n' Robbers (Bellfruit) (set 6, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-652
/********************************************************************************************************************************************************************************************************************
@@ -8409,7 +8409,7 @@ GAME( 199?, sc2cops1p , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_st
// PROJECT NUMBER 6622 BINGO COPS N ROBBERS #8/#10 ALL CASH - 9-JUL-1996 17:08:15
GAME( 199?, sc2copsc , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-814
-GAME( 199?, sc2copscp , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 1, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-814
+GAME( 199?, sc2copscp , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 1, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-814
// PROJECT NUMBER 6622 BINGO COPS N ROBBERS SWITCHABLE BINGO/ARCADE - 9-JUL-1996 17:12:33
GAME( 199?, sc2copsc1 , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-750-816
GAME( 199?, sc2copsc1p , sc2cops , scorpion2_dm01 , drwho , bfm_sc2_state, ofah , 0, "BFM", "Casino Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3)", GAME_FLAGS) // GAME No 95-751-816
diff --git a/src/mame/drivers/bfm_sc4.c b/src/mame/drivers/bfm_sc4.c
index d8808a7de89..a610e0097b7 100644
--- a/src/mame/drivers/bfm_sc4.c
+++ b/src/mame/drivers/bfm_sc4.c
@@ -23459,7 +23459,7 @@ ROM_END
/* Scorpion 4 */
-GAMEL( 200?, sc4tst ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Scorpion 4 Test Rig (Bellfruit) (Scorpion ?)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tst ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Scorpion 4 Test Rig (Bellfruit) (Scorpion ?)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pstat)
{
@@ -23523,32 +23523,32 @@ INPUT_PORTS_END
// can't get past 'read meters'
// PR2516 PAYSTATIONV2.0 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstat ,0, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatb ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstat ,0, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatb ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2516 PAYSTATIONV2.1 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstata ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.1) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatc ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.1) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstata ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatc ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2516 PAYSTATIONV2.2 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstatd ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.2) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatd ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.2) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2516 PAYSTATIONV2.3 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstate ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.3) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstate ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V2.3) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// ones below can be 'played' (skip 'read meters' with cancel)
// PR2516 PAYSTATIONV4.0 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstath ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V4.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatm ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V4.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstath ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V4.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatm ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V4.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2516 PAYSTATIONV011 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstatf ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstati ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatf ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstati ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2516 PAYSTATION 012 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstatn ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V012) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatp ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V012) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatn ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatp ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2516 PAYSTATIONV041 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstatg ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V041) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatj ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V041) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatg ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatj ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat_mbus, ROT0, "QPS","Paystation (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2516 PAYSTATION 042 PAYSTATIONSND PAYSTATION
-GAMEL( 200?, sc4pstato ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V042) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pstatq ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V042) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstato ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V042) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pstatq ,sc4pstat, sc4_4reel, sc4pstat, sc4_state, sc4pstat, ROT0, "QPS","Paystation (V042) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cvani)
@@ -23603,16 +23603,16 @@ INPUT_PORTS_START( sc4cvani ) // this structure is generated
INPUT_PORTS_END
// PR2052 CASHLVANIA VANIASND CASH'!'VANIA
-GAMEL( 200?, sc4cvani ,0, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvania ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanib ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanic ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanid ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanie ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanif ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanig ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanih ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvanii ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvani ,0, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvania ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanib ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanic ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanid ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanie ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanif ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanig ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanih ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvanii ,sc4cvani, sc4_200_4rb, sc4cvani, sc4_state, sc4cvani, ROT0, "QPS","Cashvania (Qps) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cvclb)
@@ -23676,16 +23676,16 @@ INPUT_PORTS_START( sc4cvclb ) // this structure is generated
INPUT_PORTS_END
// PRXXXX CLUBCASHLVANIA V1.0 CLUBVANIASND CLUB CASH!VANIA
-GAMEL( 200?, sc4cvclb ,0, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvclba ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvclbc ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvclbd ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclb ,0, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclba ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbc ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbd ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PRXXXX CLUBCASHLVANIA V2.0 CLUBVANIASND CLUB CASH!VANIA
-GAMEL( 200?, sc4cvclbb ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvclbe ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbb ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbe ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb, ROT0, "QPS","Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PRXXXX CLUBCASHLVANIA 411 CLUBVANIASND CLUB CASH!VANIA
-GAMEL( 200?, sc4cvclbf ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb_mbus, ROT0, "QPS","Cashvania Club (V411) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cvclbg ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb_mbus, ROT0, "QPS","Cashvania Club (V411) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbf ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb_mbus, ROT0, "QPS","Cashvania Club (V411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cvclbg ,sc4cvclb, sc4_200_4rb, sc4cvclb, sc4_state, sc4cvclb_mbus, ROT0, "QPS","Cashvania Club (V411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -23756,26 +23756,26 @@ INPUT_PORTS_END
// this was marked (and has the header) GRAND CASINO, and was paired with some (bad dumps) of 'Grand Casino' sound roms, but it actually
// appears to be a version of Grandslam and expects the Grandslam sounds
// PR7194 GRAND CASINO PR6934 SLM2 SOUNDS11 GRAND CASINO
-GAMEL( 200?, sc4gcclb ,0, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclba ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbb ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbc ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbd ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbe ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbf ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbg ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbh ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbi ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbj ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbk ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclb ,0, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclba ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbb ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbc ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbd ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbe ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbf ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbg ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbh ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbi ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbj ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbk ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7194 GRAND CASINO PR6934 SLM2 SOUNDS11 GRAND CASINO GRAND CASINO CLUB
-GAMEL( 200?, sc4gcclbl ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbm ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbn ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbp ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbl ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbm ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbn ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbp ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7149 GRAND CASINO GRAND CASINO CLUB PR6934 SLM2 SOUNDS11 GRAND CASINO
-GAMEL( 200?, sc4gcclbo ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcclbq ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbo ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcclbq ,sc4gcclb, sc4, sc4gcclbl, sc4_state, sc4gcclb_mbus, ROT0, "BFM","Grandslam Casino (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4botn)
@@ -23829,8 +23829,8 @@ INPUT_PORTS_START( sc4botn ) // this structure is generated
INPUT_PORTS_END
// PR2538 BACK OF THE NET V011 BACKOFTHENETSND BACK OF THE NET
-GAMEL( 200?, sc4botn ,0, sc4_4reel, sc4botn, sc4_state, sc4botn, ROT0, "Qps","Back Of The Net (Qps) (Scorpion 4) (set 1, 011)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4botna ,sc4botn, sc4_4reel, sc4botn, sc4_state, sc4botn, ROT0, "Qps","Back Of The Net (Qps) (Scorpion 4) (set 2, 011)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4botn ,0, sc4_4reel, sc4botn, sc4_state, sc4botn, ROT0, "Qps","Back Of The Net (Qps) (Scorpion 4) (set 1, 011)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4botna ,sc4botn, sc4_4reel, sc4botn, sc4_state, sc4botn, ROT0, "Qps","Back Of The Net (Qps) (Scorpion 4) (set 2, 011)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
//fourth reel is tested strangely
@@ -23893,13 +23893,13 @@ INPUT_PORTS_END
// doesn't play
// PRXXXX CLUB BANKETY BANK VER1.0 CLUBBANKSND CLUB BANKETYBANK
-GAMEL( 200?, sc4bbclb ,0, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb, ROT0, "Qps","Bankety Bank Club (V1.0) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bbclb ,0, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb, ROT0, "Qps","Bankety Bank Club (V1.0) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PRXXXX CLUB BANKETY BANK VER1.1 CLUBBANKSND CLUB BANKETYBANK
-GAMEL( 200?, sc4bbclba ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb, ROT0, "Qps","Bankety Bank Club (V1.1) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bbclba ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb, ROT0, "Qps","Bankety Bank Club (V1.1) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// can be played
// PRXXXX CLUB BANKETY BANK 411 CLUBBANKSND CLUB BANKETYBANK
-GAMEL( 200?, sc4bbclbb ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb_mbus, ROT0, "Qps","Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bbclbc ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb_mbus, ROT0, "Qps","Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bbclbb ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb_mbus, ROT0, "Qps","Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bbclbc ,sc4bbclb, sc4_200_std, sc4bbclb, sc4_state, sc4bbclb_mbus, ROT0, "Qps","Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4captn)
@@ -23955,14 +23955,14 @@ INPUT_PORTS_START( sc4captn ) // this structure is generated
INPUT_PORTS_END
// PR2013 CAPTAIN CASH CCASH SOUNDS CAPTAIN CASH
-GAMEL( 200?, sc4captn ,0, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4captnb ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4captnc ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4captn ,0, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4captnb ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4captnc ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR9999 CAPTAIN CASH CCASH SOUNDS CAPTAIN CASH (invalid project number)
-GAMEL( 200?, sc4captna ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4captnd ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4captne ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4captnf ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4captna ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4captnd ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4captne ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4captnf ,sc4captn, sc4_4reel, sc4captn, sc4_state, sc4captn, ROT0, "Qps","Captain Cash (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cmous)
@@ -24017,11 +24017,11 @@ INPUT_PORTS_START( sc4cmous ) // this structure is generated
INPUT_PORTS_END
// PR2534 CASH AND MOUSE V041 CASHANDMOUSESND CASH AND MOUSE
-GAMEL( 200?, sc4cmous ,0, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V041) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cmousb ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V041) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmous ,0, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmousb ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2534 CASH AND MOUSE V011 CASHANDMOUSESND CASH AND MOUSE
-GAMEL( 200?, sc4cmousa ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cmousc ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmousa ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmousc ,sc4cmous, sc4_5reel, sc4cmous, sc4_state, sc4cmous, ROT0, "Qps","Cash & Mouse (V011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -24082,31 +24082,31 @@ INPUT_PORTS_START( sc4cad ) // this structure is generated
INPUT_PORTS_END
// PR2528 CASH ADDER V1.0 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cad ,0, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cada ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadf ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadg ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cad ,0, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cada ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadf ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadg ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V1.0) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2528 CASH ADDER 011 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cadb ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadh ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadb ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadh ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2528 CASH ADDER 041 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cadc ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V041) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadi ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V041) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadc ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadi ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad_mbus, ROT0, "Qps","Cash Adder (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2528 CASH ADDER 012 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cadd ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V012) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadj ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V012) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadd ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadj ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2528 CASH ADDER 042 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cade ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V042) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadk ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V042) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cade ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V042) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadk ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V042) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2528 CASH ADDER 013 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cadl ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V013) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadm ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V013) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadl ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V013) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadm ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V013) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2528 CASH ADDER 014 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cadn ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V014) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadp ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V014) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadn ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V014) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadp ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V014) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2528 CASH ADDER 043 CASHADDERSND CASH ADDER
-GAMEL( 200?, sc4cado ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V043) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadq ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V043) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cado ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V043) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadq ,sc4cad, sc4_5reel, sc4cad, sc4_state, sc4cad, ROT0, "Qps","Cash Adder (V043) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cadcl)
{
@@ -24162,8 +24162,8 @@ INPUT_PORTS_START( sc4cadcl ) // this structure is generated
INPUT_PORTS_END
// PRXXXX QPS155 CLUB CASH ADDER Version 411 CLUBCASHADDERSND CLUB CASH ADDER
-GAMEL( 200?, sc4cadcl ,0, sc4_5reel, sc4cadcl, sc4_state, sc4cadcl, ROT0, "Qps","Cash Adder Club (411) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cadcla ,sc4cadcl, sc4_5reel, sc4cadcl, sc4_state, sc4cadcl, ROT0, "Qps","Cash Adder Club (411) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadcl ,0, sc4_5reel, sc4cadcl, sc4_state, sc4cadcl, ROT0, "Qps","Cash Adder Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cadcla ,sc4cadcl, sc4_5reel, sc4cadcl, sc4_state, sc4cadcl, ROT0, "Qps","Cash Adder Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cr)
@@ -24222,15 +24222,15 @@ INPUT_PORTS_END
// PR2061 CASHRAKER RAKERSND CASHRAKER
-GAMEL( 200?, sc4cr ,0, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cra ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crb ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cr ,0, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cra ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crb ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2061 CASHRAKER V2.1 RAKERSND CASHRAKER
-GAMEL( 200?, sc4crc ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.1) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cre ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.1) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crc ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cre ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2061 CASHRAKER V2.2 RAKERSND CASHRAKER
-GAMEL( 200?, sc4crd ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.2) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crf ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.2) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crd ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.2) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crf ,sc4cr, sc4_4reel_alt, sc4cr, sc4_state, sc4cr, ROT0, "Qps","Cash Raker (V2.2) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -24293,16 +24293,16 @@ INPUT_PORTS_START( sc4crcl ) // this structure is generated
INPUT_PORTS_END
// PR???? CLUB CASHRAKER V1.0 CLUBRAKERSND CLUB CASHRAKER
-GAMEL( 200?, sc4crcl ,0, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crclb ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcl ,0, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crclb ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR???? CLUB CASHRAKER V1.1 CLUBRAKERSND CLUB CASHRAKER
-GAMEL( 200?, sc4crcla ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crclc ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcla ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crclc ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR???? CLUB CASHRAKER V1.3 CLUBRAKERSND CLUB CASHRAKER
-GAMEL( 200?, sc4crcld ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.3) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcld ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl, ROT0, "Qps","Cash Raker Club (V1.3) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR???? CLUB CASHRAKER 411 CLUBRAKERSND CLUB CASHRAKER
-GAMEL( 200?, sc4crcle ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl_mbus, ROT0, "Qps","Cash Raker Club (411) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crclf ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl_mbus, ROT0, "Qps","Cash Raker Club (411) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcle ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl_mbus, ROT0, "Qps","Cash Raker Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crclf ,sc4crcl, sc4_5reel, sc4crcl, sc4_state, sc4crcl_mbus, ROT0, "Qps","Cash Raker Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cashm)
@@ -24351,12 +24351,12 @@ INPUT_PORTS_START( sc4cashm ) // this structure is generated
INPUT_PORTS_END
// PR2008 CASHANOVA CASH SOUNDS
-GAMEL( 200?, sc4cashm ,0, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cashma ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cashmb ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cashmc ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cashmd ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cashme ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashm ,0, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashma ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashmb ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashmc ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashmd ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashme ,sc4cashm, sc4_4reel, sc4cashm, sc4_state, sc4cashm, ROT0, "Mazooma","Cashanova (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -24434,15 +24434,15 @@ INPUT_PORTS_END
// this seems to need all the units connected to function
// PR2360 CASINO KING X BARKX SOUNDS 8 KING X
-GAMEL( 200?, sc4ckx ,0, sc4_3reel_200, sc4, sc4_state, sc4ckxtb, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Top Box, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
-GAMEL( 200?, sc4ckxd ,sc4ckx, sc4_3reel_200, sc4, sc4_state, sc4ckxtb, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Top Box, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4ckx ,0, sc4_3reel_200, sc4, sc4_state, sc4ckxtb, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4ckxd ,sc4ckx, sc4_3reel_200, sc4, sc4_state, sc4ckxtb, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
// PR2360 CASINO KING X KING X MAZ BARKX SOUNDS KING X 3P
-GAMEL( 200?, sc4ckxa ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ckxb ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ckxc ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ckxe ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ckxf ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ckxg ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxa ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxb ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxc ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxe ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxf ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ckxg ,sc4ckx, sc4_3reel_200, sc4ckxg, sc4_state, sc4ckx3p, ROT0, "Mazooma","Casino King X (Mazooma) (Scorpion 4) (Base, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4chick)
@@ -24491,7 +24491,7 @@ INPUT_PORTS_START( sc4chick ) // this structure is generated
INPUT_PORTS_END
// PR7060CASINO CHICKEN DALES TTTWO SOUNDS CHICKEN DALES
-GAMEL( 200?, sc4chick ,0, sc4_3reel, sc4chick, sc4_state, sc4chick, ROT0, "Mazooma","Chickendales (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chick ,0, sc4_3reel, sc4chick, sc4_state, sc4chick, ROT0, "Mazooma","Chickendales (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ccogs)
@@ -24546,7 +24546,7 @@ INPUT_PORTS_START( sc4ccogs ) // this structure is generated
INPUT_PORTS_END
// PR2522 CLEVERCOGS V1.0 CLEVERCOGSSND CLEVER COGS
-GAMEL( 200?, sc4ccogs ,0, sc4_4reel, sc4ccogs, sc4_state, sc4ccogs, ROT0, "Qps","Clever Cogs (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccogs ,0, sc4_4reel, sc4ccogs, sc4_state, sc4ccogs, ROT0, "Qps","Clever Cogs (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -24621,29 +24621,29 @@ INPUT_PORTS_START( sc4cclime ) // this structure is generated
INPUT_PORTS_END
// PR1129 CASINO CRAZY CLIMBER PR1129 CRAZY CLIMBER SOUNDS11
-GAMEL( 200?, sc4cclim ,0, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclima ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimb ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimc ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimd ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimh ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimi ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimm ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimn ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimo ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimp ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclims ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclim ,0, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclima ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimb ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimc ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimd ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimh ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimi ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimm ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimn ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimo ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimp ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclims ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1129 CASINO CRAZY CLIMBER CRAZY CLIMBER S.SITE PR1129 CRAZY CLIMBER SOUNDS11
-GAMEL( 200?, sc4cclime ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimf ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimg ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimj ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimk ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ccliml ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimq ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 19)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimr ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 20)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimt ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 21)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclimu ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 22)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclime ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimf ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimg ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimj ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimk ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccliml ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimq ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimr ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimt ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclimu ,sc4cclim, sc4_3reel, sc4cclime, sc4_state, sc4cclim_mbus, ROT0, "BFM","Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -24710,36 +24710,36 @@ INPUT_PORTS_END
// PR6813 CRAZY FRUITS PR6813 CRAZY FRUITS SOUNDS11
// these 3 have a unique attract style
-GAMEL( 200?, sc4cfqps ,0, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsb ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsd ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqps ,0, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsb ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsd ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// the attract style changes below
-GAMEL( 200?, sc4cfqpsa ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsk ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // why are these 2 CCAS? a mistake? or different version?
-GAMEL( 200?, sc4czfrc ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrb ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfre ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrg ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrh ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrj ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrk ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfrf ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4czfri ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsa ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsk ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // why are these 2 CCAS? a mistake? or different version?
+GAMEL( 200?, sc4czfrc ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrb ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfre ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrg ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrh ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrj ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrk ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfrf ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfri ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2521 CRAZY FRUITS V1.0 PR6813 CRAZY FRUITS SOUNDS11
-GAMEL( 200?, sc4cfqpsc ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpse ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsc ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpse ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// 4 sets below use reels 1,2,3,5 instead of 1,2,3,4 ?!
-GAMEL( 200?, sc4cfqpsf ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsg ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsh ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsi ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsf ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsg ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsh ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsi ,sc4cfqps, sc4_4reel_alt, sc4cfqpsf, sc4_state, sc4cfqps_alt, ROT0, "Qps","Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR4613 CRAZY FRUITS SP98 PR6813 CRAZY FRUITS SOUNDS11
-GAMEL( 200?, sc4cfqpsj ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits SP98 (PR4613) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsl ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsn ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsp ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpsm ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfqpso ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsj ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "Qps","Crazy Fruits SP98 (PR4613) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsl ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsn ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsp ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM","Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpsm ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfqpso ,sc4cfqps, sc4_4reel, sc4cfqpsf, sc4_state, sc4cfqps, ROT0, "BFM / Whitbread","Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -24814,31 +24814,31 @@ INPUT_PORTS_START( sc4crzkyi ) // this structure is generated
INPUT_PORTS_END
// PR1128 CASINO CRAZY KEYS PR1128 CRAZY KEYS SOUNDS11
-GAMEL( 200?, sc4crzky ,0, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkya ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyb ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyc ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyd ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkye ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyf ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyg ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4crzkyh ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyl ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkym ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyn ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyt ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyu ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzky ,0, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkya ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyb ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyc ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyd ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkye ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyf ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyg ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4crzkyh ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyl ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkym ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyn ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyt ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyu ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky, ROT0, "BFM","Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1128 CASINO CRAZY KEYS CRAZY KEYS ARCADE PR1128 CRAZY KEYS SOUNDS11
-GAMEL( 200?, sc4crzkyi ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyj ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyk ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyo ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyp ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyq ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyr ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkys ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyv ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzkyw ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyi ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyj ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyk ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyo ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyp ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyq ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyr ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkys ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyv ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzkyw ,sc4crzky, sc4_3reel, sc4crzkyi, sc4_state, sc4crzky_mbus, ROT0, "BFM","Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -24893,10 +24893,10 @@ INPUT_PORTS_START( sc4deepi ) // this structure is generated
INPUT_PORTS_END
// PR2099 DEEP IMPACT DIMP SOUNDS DEEP IMPACT
-GAMEL( 200?, sc4deepi ,0, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4deepia ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4deepib ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4deepid ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4deepi ,0, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4deepia ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4deepib ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4deepid ,sc4deepi, sc4_5reel, sc4deepi, sc4_state, sc4deepi, ROT0, "Mazooma","Deep Impact (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -24942,13 +24942,13 @@ INPUT_PORTS_START( sc4dblfr ) // this structure is generated
INPUT_PORTS_END
// PR7060 DOUBLE FRENZY DFRZYSND
-GAMEL( 200?, sc4dblfr ,0, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dblfra ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dblfrb ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dblfrc ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfr ,0, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfra ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfrb ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfrc ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2276 DOUBLE FRENZY 212 DFRZYSND
-GAMEL( 200?, sc4dblfrd ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dblfre ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfrd ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dblfre ,sc4dblfr, sc4_200_4r, sc4dblfr, sc4_state, sc4dblfr, ROT0, "Qps","Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4darw)
{
@@ -25002,10 +25002,10 @@ INPUT_PORTS_START( sc4darw ) // this structure is generated
INPUT_PORTS_END
// PR2026 DOUGH AND ARROW DOUGHSND DOUGH AND ARROW
-GAMEL( 200?, sc4darw ,0, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4darwa ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4darwb ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4darwc ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4darw ,0, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4darwa ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4darwb ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4darwc ,sc4darw, sc4_4reel_alt, sc4darw, sc4_state, sc4darw, ROT0, "Qps","Dough & Arrow (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4duckq)
@@ -25057,8 +25057,8 @@ INPUT_PORTS_START( sc4duckq ) // this structure is generated
INPUT_PORTS_END
// PR2519 THEDUCKSOFHAZZARD V1.0 DUCKSOFHAZZARDSND DUCKS OF HAZZARD
-GAMEL( 200?, sc4duckq ,0, sc4_4reel_alt, sc4duckq, sc4_state, sc4duckq, ROT0, "Qps","Ducks Of Hazzard (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4duckqa ,sc4duckq, sc4_4reel_alt, sc4duckq, sc4_state, sc4duckq, ROT0, "Qps","Ducks Of Hazzard (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4duckq ,0, sc4_4reel_alt, sc4duckq, sc4_state, sc4duckq, ROT0, "Qps","Ducks Of Hazzard (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4duckqa ,sc4duckq, sc4_4reel_alt, sc4duckq, sc4_state, sc4duckq, ROT0, "Qps","Ducks Of Hazzard (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4eascs)
@@ -25124,18 +25124,18 @@ INPUT_PORTS_START( sc4eascs ) // this structure is generated
INPUT_PORTS_END
// PR1326 CASINO EASY STREAK PR1326 EASY STREAK SOUNDS11 (actually expects PR1326_CAS_EASY_STREAK_SOUNDS11 ? )
-GAMEL( 200?, sc4eascs ,0, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsa ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsb ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsc ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsd ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascse ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsf ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsg ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsh ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsi ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsj ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4eascsk ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascs ,0, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsa ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsb ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsc ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsd ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascse ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsf ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsg ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsh ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsi ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsj ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4eascsk ,sc4eascs, sc4_3reel, sc4eascs, sc4_state, sc4eascs, ROT0, "BFM","Casino Easy Streak (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fastf)
@@ -25195,10 +25195,10 @@ INPUT_PORTS_START( sc4fastf ) // this structure is generated
INPUT_PORTS_END
// PR2071 FAST 'N' FURIOUS FNF SOUNDS FAST 'N' FURIOUS
-GAMEL( 200?, sc4fastf ,0, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fastfa ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fastfb ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fastfc ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fastf ,0, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fastfa ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fastfb ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fastfc ,sc4fastf, sc4_200_4rb, sc4fastf, sc4_state, sc4fastf, ROT0, "Mazooma","Fast 'n' Furious (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ffru)
@@ -25255,12 +25255,12 @@ INPUT_PORTS_START( sc4ffru ) // this structure is generated
INPUT_PORTS_END
// PR7070 FAST FRUIT FFRUIT SOUNDS FAST FRUIT
-GAMEL( 200?, sc4ffru ,0, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps / Mazooma","Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // has 'MAZ' game code in roms
-GAMEL( 200?, sc4ffrub ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps / Mazooma","Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // has 'MAZ' game code in roms
-GAMEL( 200?, sc4ffrua ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ffruc ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ffrud ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ffrue ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ffru ,0, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps / Mazooma","Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // has 'MAZ' game code in roms
+GAMEL( 200?, sc4ffrub ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps / Mazooma","Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // has 'MAZ' game code in roms
+GAMEL( 200?, sc4ffrua ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ffruc ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ffrud ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ffrue ,sc4ffru, sc4_4reel, sc4ffru, sc4_state, sc4ffru, ROT0, "Qps","Fast Fruit (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fire)
@@ -25311,8 +25311,8 @@ INPUT_PORTS_START( sc4fire ) // this structure is generated
INPUT_PORTS_END
// PR2082 FIRE POWER FPOW SOUNDS FIRE POWER
-GAMEL( 200?, sc4fire ,0, sc4_4reel_alt, sc4fire, sc4_state, sc4fire, ROT0, "Mazooma","Firepower (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4firea ,sc4fire, sc4_4reel_alt, sc4fire, sc4_state, sc4fire, ROT0, "Mazooma","Firepower (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fire ,0, sc4_4reel_alt, sc4fire, sc4_state, sc4fire, ROT0, "Mazooma","Firepower (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4firea ,sc4fire, sc4_4reel_alt, sc4fire, sc4_state, sc4fire, ROT0, "Mazooma","Firepower (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4frenz)
@@ -25381,12 +25381,12 @@ INPUT_PORTS_START( sc4frenz ) // this structure is generated
INPUT_PORTS_END
// PR1101 FRUIT FRENZY PR1101 FRUIT FRENZY SOUNDS11
-GAMEL( 200?, sc4frenz ,0, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frenza ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frenzb ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frenzc ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frenzd ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frenze ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenz ,0, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenza ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenzb ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenzc ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenzd ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frenze ,sc4frenz, sc4_4reel_alt, sc4frenz, sc4_state, sc4frenz, ROT0, "BFM","Fruit Frenzy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ftopi)
{
@@ -25439,19 +25439,19 @@ INPUT_PORTS_START( sc4ftopi ) // this structure is generated
INPUT_PORTS_END
// PR2027 FRUITOPIA FRUITOPIASND FRUITOPIA
-GAMEL( 200?, sc4ftopi ,0, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopia ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopib ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopic ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopi ,0, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopia ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopib ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopic ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2027 FRUITOPIA_17/04/03 V1.1 FRUITOPIASND FRUITOPIA
-GAMEL( 200?, sc4ftopif ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V1.1) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopii ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V1.1) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopif ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopii ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2027 FRUITOPIA V2.1 FRUITOPIASND FRUITOPIA
-GAMEL( 200?, sc4ftopid ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.1) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopig ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.1) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopid ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopig ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2027 FRUITOPIA V2.2 FRUITOPIASND FRUITOPIA
-GAMEL( 200?, sc4ftopie ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.2) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ftopih ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.2) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopie ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.2) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ftopih ,sc4ftopi, sc4_4reel_alt, sc4ftopi, sc4_state, sc4ftopi, ROT0, "Qps","Fruitopia (V2.2) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fullt)
{
@@ -25506,20 +25506,20 @@ INPUT_PORTS_START( sc4fullt ) // this structure is generated
INPUT_PORTS_END
// PR2537 FULL THROTTLE 011 FULLTHROTTLESND FULL THROTTLE
-GAMEL( 200?, sc4fullt ,0, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fulltb ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fullt ,0, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fulltb ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2537 FULL THROTTLE 041 FULLTHROTTLESND FULL THROTTLE
-GAMEL( 200?, sc4fullta ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (041) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fulltc ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (041) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fullta ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fulltc ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2537 FULL THROTTLE 012 FULLTHROTTLESND FULL THROTTLE
-GAMEL( 200?, sc4fulltd ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (012) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fulltg ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (012) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fulltd ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fulltg ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2537 FULL THROTTLE 042 FULLTHROTTLESND FULL THROTTLE
-GAMEL( 200?, sc4fullte ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (042) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fullth ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (042) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fullte ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (042) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fullth ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (042) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// R2537 FULL THROTTLE 013 FULLTHROTTLESND FULL THROTTLE
-GAMEL( 200?, sc4fulltf ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (013) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fullti ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (013) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fulltf ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (013) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fullti ,sc4fullt, sc4_5reel, sc4fullt, sc4_state, sc4fullt, ROT0, "Qps","Full Throttle (013) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ziggy)
@@ -25580,14 +25580,14 @@ INPUT_PORTS_START( sc4ziggy ) // this structure is generated
INPUT_PORTS_END
// PR2162 GETTIN' ZIGGY ZIGY SOUNDS GETTIN' ZIGGY
-GAMEL( 200?, sc4ziggy ,0, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggya ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggyb ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggyc ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggyd ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggye ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggyf ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ziggyg ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggy ,0, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggya ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggyb ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggyc ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggyd ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggye ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggyf ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ziggyg ,sc4ziggy, sc4_200_4ra, sc4ziggy, sc4_state, sc4ziggy, ROT0, "Mazooma","Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4gldcl)
{
@@ -25653,8 +25653,8 @@ INPUT_PORTS_START( sc4gldcl ) // this structure is generated
INPUT_PORTS_END
// PR2292 CLUB GLADIATOR CLUB GLADIATOR CLUB CLUB GLAD SOUNDS CLUB GLADIATOR
-GAMEL( 200?, sc4gldcl ,0, sc4_5reel, sc4gldcl, sc4_state, sc4gldcl, ROT0, "QPS","Gladiator Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gldcla ,sc4gldcl, sc4_5reel, sc4gldcl, sc4_state, sc4gldcl, ROT0, "QPS","Gladiator Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gldcl ,0, sc4_5reel, sc4gldcl, sc4_state, sc4gldcl, ROT0, "QPS","Gladiator Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gldcla ,sc4gldcl, sc4_5reel, sc4gldcl, sc4_state, sc4gldcl, ROT0, "QPS","Gladiator Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -25724,16 +25724,16 @@ INPUT_PORTS_START( sc4ghost ) // this structure is generated
INPUT_PORTS_END
// PR7090 GOLDEN GHOST GOLDEN GHOST MAZ GHOST SOUNDS GOLDEN GHOST
-GAMEL( 200?, sc4ghost ,0, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghostb ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghostc ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghoste ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghostf ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghostg ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghost ,0, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghostb ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghostc ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghoste ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghostf ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghostg ,sc4ghost, sc4_3reel_200, sc4ghost, sc4_state, sc4ghost, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7090 GOLD GHOST TRIPLE GHOST SOUNDS 8 GOLDEN GHOST
-GAMEL( 200?, sc4ghosta ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghostd ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ghosth ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghosta ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghostd ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ghosth ,sc4ghost, sc4_3reel, sc4ghost, sc4_state, sc4ghosttb, ROT0, "Mazooma","Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -25794,26 +25794,26 @@ INPUT_PORTS_START( sc4ggrid ) // this structure is generated
INPUT_PORTS_END
// PR2518 GOLDEN GRID V1.0 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggrid ,0, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggrida ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggride ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridf ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggrid ,0, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggrida ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggride ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridf ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.0) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2518 GOLDEN GRID V1.1 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggridb ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridc ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridg ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridh ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridb ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridc ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridg ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridh ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.1) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2518 GOLDEN GRID V1.3 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggridd ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.3) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridd ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid, ROT0, "Qps","Golden Grid (V1.3) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2518 GOLDEN GRID V011 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggridi ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V011) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridk ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V011) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridi ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V011) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridk ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V011) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2518 GOLDEN GRID V041 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggridj ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V041) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridl ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V041) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridj ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridl ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2518 GOLDEN GRID V012 GOLDENGRIDSND GOLDEN GRID
-GAMEL( 200?, sc4ggridm ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V012) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggridn ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V012) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridm ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggridn ,sc4ggrid, sc4_4reel, sc4ggrid, sc4_state, sc4ggrid_mbus, ROT0, "Qps","Golden Grid (V012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ggcl)
@@ -25874,13 +25874,13 @@ INPUT_PORTS_START( sc4ggcl ) // this structure is generated
INPUT_PORTS_END
// PR???? CLUB GOLDEN GRID V1.0 CLUBGOLDENGRIDSND CLUB GOLDEN GRID
-GAMEL( 200?, sc4ggcl ,0, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl, ROT0, "Qps","Golden Grid Club (V1.0) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcl ,0, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl, ROT0, "Qps","Golden Grid Club (V1.0) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR???? CLUB GOLDEN GRID 411 CLUBGOLDENGRIDSND CLUB GOLDEN GRID
-GAMEL( 200?, sc4ggcla ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V411) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggclb ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V411) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcla ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggclb ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR???? CLUB GOLDEN GRID 412 CLUBGOLDENGRIDSND CLUB GOLDEN GRID
-GAMEL( 200?, sc4ggclc ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V412) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggcld ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V412) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggclc ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V412) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcld ,sc4ggcl, sc4_5reel, sc4ggcl, sc4_state, sc4ggcl_mbus, ROT0, "Qps","Golden Grid Club (V412) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -26004,15 +26004,15 @@ INPUT_PORTS_END
// the dot matrix calls these 'classic crazy fruits' was it not shown or is Golden Winner a subtitle?
// PR1431 GOLDEN WINNER PR1431 GOLDEN WINNER SND11
-GAMEL( 200?, sc4goldw ,0, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwa ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwb ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwc ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldw ,0, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwa ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwb ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwc ,sc4goldw, sc4_3reel, sc4goldw, sc4_state, sc4goldw, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1437 GOLDEN WINNER PR1436 TRIPLE CASINO SOUNDS11 // these show init comms
-GAMEL( 200?, sc4goldwd ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwe ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwf ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldwg ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwd ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwe ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwf ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldwg ,sc4goldw, sc4, sc4goldwd, sc4_state, sc4, ROT0, "BFM","Golden Winner (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4ggdlx ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -26059,16 +26059,16 @@ INPUT_PORTS_END
// GGDX
// these were in the golden game sets
// PR2201 GOLDEN X GOLDEN GAME MAZ GXDX SOUNDS GOLDEN GAME DLX
-GAMEL( 200?, sc4ggdlx ,0, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggdlxc ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggdlx ,0, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggdlxc ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// PR2201 GOLDEN X GOLDEN GAME DLX MAZ GXDX SOUNDS GOLDEN X
-GAMEL( 200?, sc4ggdlxa ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggdlxb ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggdlxd ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggdlxe ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggdlxa ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggdlxb ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggdlxd ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggdlxe ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// PR2201 GOLDEN GAME DELUXE GOLDEN GAME MAZ GXDX SOUNDS GOLDEN GAME DLX
-GAMEL( 200?, sc4ggdlxf ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggdlxg ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggdlxf ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggdlxg ,sc4ggdlx, sc4, sc4ggdlx, sc4_state, sc4ggame, ROT0, "Mazooma","Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
@@ -26139,8 +26139,8 @@ INPUT_PORTS_START( sc4greed ) // this structure is generated
INPUT_PORTS_END
// PR1401 AWP GREEDY GONZALEZ PR1401 GREEDY GONZ SOUNDS11
-GAMEL( 200?, sc4greed ,0, sc4_4reel_alt, sc4greed, sc4_state, sc4greed, ROT0, "BFM","Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4greeda ,sc4greed, sc4_4reel_alt, sc4greed, sc4_state, sc4greed, ROT0, "BFM","Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4greed ,0, sc4_4reel_alt, sc4greed, sc4_state, sc4greed, ROT0, "BFM","Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4greeda ,sc4greed, sc4_4reel_alt, sc4greed, sc4_state, sc4greed, ROT0, "BFM","Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hf)
@@ -26205,14 +26205,14 @@ INPUT_PORTS_START( sc4hf ) // this structure is generated
INPUT_PORTS_END
//PR1011 HAPPY FRUITS PR1011 HAPPY FRUITS SOUNDS11
-GAMEL( 200?, sc4hf ,0, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfa ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfb ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfc ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfd ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfe ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hff ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfg ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hf ,0, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfa ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfb ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfc ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfd ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfe ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hff ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfg ,sc4hf, sc4_4reel, sc4hf, sc4_state, sc4hf, ROT0, "BFM","Happy Fruits (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4himi)
@@ -26263,18 +26263,18 @@ INPUT_PORTS_START( sc4himi ) // this structure is generated
INPUT_PORTS_END
// PR2999 HIGH 'N' MIGHTY MITY SOUNDS HIGH 'N' MIGHTY
-GAMEL( 200?, sc4himi ,0, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himic ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himif ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himig ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himih ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himii ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himi ,0, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himic ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himif ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himig ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himih ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himii ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2119 HIGH 'N' MIGHTY MITY SOUNDS HIGH 'N' MIGHTY
-GAMEL( 200?, sc4himia ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himie ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himia ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himie ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2067 HIGH 'N' MIGHTY MITY SOUNDS HIGH 'N' MIGHTY
-GAMEL( 200?, sc4himib ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4himid ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himib ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4himid ,sc4himi, sc4_4reel_alt, sc4himi, sc4_state, sc4himi, ROT0, "Mazooma","High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -26341,14 +26341,14 @@ INPUT_PORTS_START( sc4hi5 ) // this structure is generated
INPUT_PORTS_END
// PR1003 HIGH FIVE PR1003 HIGH FIVE SOUNDS11
-GAMEL( 200?, sc4hi5 ,0, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5b ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5d ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5f ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5a ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5c ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5e ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hi5g ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5 ,0, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5b ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5d ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5f ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM","High 5 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5a ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5c ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5e ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hi5g ,sc4hi5, sc4_4reel, sc4hi5, sc4_state, sc4hi5, ROT0, "BFM / Whitbread","High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sprng)
@@ -26403,7 +26403,7 @@ INPUT_PORTS_START( sc4sprng ) // this structure is generated
INPUT_PORTS_END
// PR2066 HIGHLY SPRUNG HIGH SOUNDS HIGHLY SPRUNG
-GAMEL( 200?, sc4sprng ,0, sc4_4reel_alt, sc4sprng, sc4_state, sc4sprng, ROT0, "Mazooma","Highly Sprung (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sprng ,0, sc4_4reel_alt, sc4sprng, sc4_state, sc4sprng, ROT0, "Mazooma","Highly Sprung (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hilo)
@@ -26482,18 +26482,18 @@ INPUT_PORTS_START( sc4hilo ) // this structure is generated
INPUT_PORTS_END
// PR1013 HILOWATHA PR1013 HILOWATHA SOUNDS11
-GAMEL( 200?, sc4hilo ,0, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloa ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilob ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloc ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilod ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloe ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilof ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilog ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloh ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloi ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hiloj ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilok ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilo ,0, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloa ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilob ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloc ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilod ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloe ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilof ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilog ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloh ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloi ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiloj ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilok ,sc4hilo, sc4_200_4ra, sc4hilo, sc4_state, sc4hilo, ROT0, "BFM","Hilowatha (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -26574,12 +26574,12 @@ INPUT_PORTS_START( sc4hitsh ) // this structure is generated
INPUT_PORTS_END
// PR1112 HIT SHOT PR1112 HIT SHOT SOUNDS11
-GAMEL( 200?, sc4hitsh ,0, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hitsha ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hitshb ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hitshc ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hitshd ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hitshe ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitsh ,0, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitsha ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitshb ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitshc ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitshd ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hitshe ,sc4hitsh, sc4_200_4rb, sc4hitsh, sc4_state, sc4hitsh, ROT0, "BFM","Hit Shot (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4h6cl)
{
@@ -26647,10 +26647,10 @@ INPUT_PORTS_START( sc4h6cl ) // this structure is generated
INPUT_PORTS_END
// PR1759 CLUB HOT SIX HOT SIX CLUB PR1759 HOSX SOUNDS11
-GAMEL( 200?, sc4h6cl ,0, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4h6cla ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4h6clb ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4h6clc ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4h6cl ,0, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4h6cla ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4h6clb ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4h6clc ,sc4h6cl, sc4, sc4h6cl, sc4_state, sc4h6cl, ROT0, "BFM","Hot Six Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -26716,7 +26716,7 @@ INPUT_PORTS_START( sc4ijclb ) // this structure is generated
INPUT_PORTS_END
// PR2403 CLUB ITALIAN JOB CLUB ITALIAN JOB CLUB CLUB ITJB SOUNDS
-GAMEL( 200?, sc4ijclb ,0, sc4, sc4ijclb, sc4_state, sc4ijclb, ROT0, "Mazooma","Italian Job Club (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijclb ,0, sc4, sc4ijclb, sc4_state, sc4ijclb, ROT0, "Mazooma","Italian Job Club (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4jack)
{
@@ -26771,14 +26771,14 @@ INPUT_PORTS_START( sc4jack ) // this structure is generated
INPUT_PORTS_END
// PR2078 JACK THE KIPPER JKIP SOUNDS JACK THE KIPPER
-GAMEL( 200?, sc4jack ,0, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jacka ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jackb ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jackc ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jackd ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jacke ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jackf ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jackg ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jack ,0, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jacka ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jackb ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jackc ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jackd ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jacke ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jackf ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jackg ,sc4jack, sc4_200_5ra, sc4jack, sc4_state, sc4jack, ROT0, "Mazooma","Jack The Kipper (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -26850,16 +26850,16 @@ INPUT_PORTS_START( sc4jjunc ) // this structure is generated
INPUT_PORTS_END
// PR1304 JACKPOT JUNCTION PR1304 JACKPOT JUNCTION SOUNDS11
-GAMEL( 2002, sc4jjunc ,0, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjunca ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjuncb ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjuncc ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjuncd ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjunce ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjuncf ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjuncg ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjunch ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2002, sc4jjunci ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjunc ,0, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjunca ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjuncb ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjuncc ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjuncd ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjunce ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjuncf ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjuncg ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjunch ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2002, sc4jjunci ,sc4jjunc, sc4, sc4jjunc, sc4_state, sc4jjunc, ROT0, "BFM","Jackpot Junction (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
//should R6 have a reel?
@@ -26936,14 +26936,14 @@ INPUT_PORTS_END
// REEL7 ERR 27 (where does reel 7 connect?!)
// PR1422 CLUB JACKPOT JUNCTION PR1422 JACKPOT JUNCTION SOUNDS11
-GAMEL( 200?, sc4jjucl ,0, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjuclb ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjucl ,0, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjuclb ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1422 CLUB JACKPOT JUNCTION JACKPOT JUNCTION CLUB PR1422 JACKPOT JUNCTION SOUNDS11
-GAMEL( 200?, sc4jjucld ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl_mbus, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjucle ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl_mbus, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjucld ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl_mbus, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjucle ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl_mbus, ROT0, "BFM","Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1422 CLUB JACKPOT JUNCTION FERRY PR1422 JACKPOT JUNCTION SOUNDS11
-GAMEL( 200?, sc4jjucla ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjuclc ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjucla ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjuclc ,sc4jjucl, sc4_5reel, sc4jjucl, sc4_state, sc4jjucl, ROT0, "BFM","Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4jolly)
@@ -27002,8 +27002,8 @@ INPUT_PORTS_START( sc4jolly ) // this structure is generated
INPUT_PORTS_END
// PR2054 JOLLY JOUSTINGV2.0 JJOLLSND JOLLY JOUSTING
-GAMEL( 200?, sc4jolly ,0, sc4_200_5r, sc4jolly, sc4_state, sc4jolly, ROT0, "Qps","Jolly Jousting (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jollya ,sc4jolly, sc4_200_5r, sc4jolly, sc4_state, sc4jolly, ROT0, "Qps","Jolly Jousting (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jolly ,0, sc4_200_5r, sc4jolly, sc4_state, sc4jolly, ROT0, "Qps","Jolly Jousting (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jollya ,sc4jolly, sc4_200_5r, sc4jolly, sc4_state, sc4jolly, ROT0, "Qps","Jolly Jousting (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -27064,20 +27064,20 @@ INPUT_PORTS_START( sc4juicy ) // this structure is generated
INPUT_PORTS_END
// PR1136 JUICY JACKPOTS 65% FERRY PR1136 JUICY JACKPOTS SOUNDS11
-GAMEL( 200?, sc4juicy ,0, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicyb ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicy ,0, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyb ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1136 JUICY JACKPOTS PR1136 JUICY JACKPOTS SOUNDS11
-GAMEL( 200?, sc4juicyd ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicye ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicyf ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicyg ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyd ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicye ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyf ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyg ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1136 JUICY JACKPOTS JUICY JACKPOTS CLUB PR1136 JUICY JACKPOTS SOUNDS11
-GAMEL( 200?, sc4juicyi ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy_mbus, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicyj ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy_mbus, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyi ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy_mbus, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyj ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy_mbus, ROT0, "BFM","Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// this has a different (wrong?) product ID and issues with the VFD even during startup, maybe a buggy release?
// PR1123 JUICY JACKPOTS PR1136 JUICY JACKPOTS SOUNDS11
-GAMEL( 200?, sc4juicya ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4juicyc ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicya ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4juicyc ,sc4juicy, sc4_5reel, sc4juicy, sc4_state, sc4juicy, ROT0, "BFM","Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4kalei)
@@ -27133,14 +27133,14 @@ INPUT_PORTS_START( sc4kalei ) // this structure is generated
INPUT_PORTS_END
// PR2538 KALEIDOSCOPE 011 KALEIDOSCOPESND KALEIDOSCOPE
-GAMEL( 200?, sc4kalei ,0, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kaleib ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (011) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kalei ,0, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kaleib ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (011) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2538 KALEIDOSCOPE 041 KALEIDOSCOPESND KALEIDOSCOPE
-GAMEL( 200?, sc4kaleia ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (041) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kaleic ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (041) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kaleia ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kaleic ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (041) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2538 KALEIDOSCOPE 051 KALEIDOSCOPESND KALEIDOSCOPE
-GAMEL( 200?, sc4kaleid ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (051) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kaleie ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (051) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kaleid ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (051) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kaleie ,sc4kalei, sc4_4reel_alt, sc4kalei, sc4_state, sc4kalei, ROT0, "Qps","Kaleidoscope (051) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4lir)
@@ -27193,16 +27193,16 @@ INPUT_PORTS_START( sc4lir ) // this structure is generated
INPUT_PORTS_END
// PR1001 LET IT ROLL PR1001 LETITROLL SOUNDS11
-GAMEL( 200?, sc4lir ,0, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lira ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lirb ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lirc ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lird ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lire ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lirf ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lirg ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lirh ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4liri ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lir ,0, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lira ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lirb ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lirc ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lird ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lire ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lirf ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lirg ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lirh ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4liri ,sc4lir, sc4_4reel, sc4lir, sc4_state, sc4lir, ROT0, "BFM","Let It Roll (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -27270,7 +27270,7 @@ INPUT_PORTS_START( sc4ldvcl ) // this structure is generated
INPUT_PORTS_END
// PR2421 LITTLEDEVIL CLUB LITTLEDEVIL CLUB CLILDEV SOUNDS CLUB LITTLEDEVIL
-GAMEL( 200?, sc4ldvcl ,0, sc4_5reel, sc4ldvcl, sc4_state, sc4ldvcl, ROT0, "Mazooma","Little Devil Club (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldvcl ,0, sc4_5reel, sc4ldvcl, sc4_state, sc4ldvcl, ROT0, "Mazooma","Little Devil Club (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4lockb)
{
@@ -27340,14 +27340,14 @@ INPUT_PORTS_START( sc4lockb ) // this structure is generated
INPUT_PORTS_END
// PR1108 LOCKBUSTER PR1108 LOCKBUSTER SOUNDS11
-GAMEL( 200?, sc4lockb ,0, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockba ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbb ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbc ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbd ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbe ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbf ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lockbg ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockb ,0, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockba ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbb ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbc ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbd ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbe ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbf ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lockbg ,sc4lockb, sc4_4reel_alt, sc4lockb, sc4_state, sc4lockb, ROT0, "BFM","Lock Buster (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -27420,19 +27420,19 @@ INPUT_PORTS_START( sc4lkbcl ) // this structure is generated
INPUT_PORTS_END
// PR1321 CLUB LOCKBUSTER PR1321 CLUB LOCKBUSTER SOUNDS11
-GAMEL( 200?, sc4lkbcl ,0, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbclb ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbcle ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbclg ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbcl ,0, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbclb ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbcle ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbclg ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1321 CLUB LOCKBUSTER CLUB LOCKBUSTER CLUB PR1321 CLUB LOCKBUSTER SOUNDS11
-GAMEL( 200?, sc4lkbclh ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl_mbus, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbcli ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl_mbus, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbclh ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl_mbus, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbcli ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl_mbus, ROT0, "BFM","Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1321 CLUB LOCKBUSTER EURO PR1321 CLUB LOCKBUSTER SOUNDS11
-GAMEL( 200?, sc4lkbcla ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbclc ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbcla ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbclc ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1321 CLUB LOCKBUSTER FERRY PR1321 CLUB LOCKBUSTER SOUNDS11
-GAMEL( 200?, sc4lkbcld ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lkbclf ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbcld ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lkbclf ,sc4lkbcl, sc4_5reel, sc4lkbcl, sc4_state, sc4lkbcl, ROT0, "BFM","Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -27503,17 +27503,17 @@ INPUT_PORTS_START( sc4lotrf ) // this structure is generated
INPUT_PORTS_END
// PR1115 LORD OF THE RINGS PR1115 L O T RINGS SOUNDS11
-GAMEL( 200?, sc4lotrf ,0, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrfa ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrf ,0, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfa ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1115 LORD OF THE RINGS ISS 2 PR1115 L O T RINGS SOUNDS11
-GAMEL( 200?, sc4lotrfb ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrfc ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrfd ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrfe ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrff ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrfg ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrt ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // these were marked LOTR Trilogy and paired with different (wrong, now oprhaned, sound roms)
-GAMEL( 200?, sc4lotrta ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfb ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfc ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfd ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfe ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrff ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrfg ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrt ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // these were marked LOTR Trilogy and paired with different (wrong, now oprhaned, sound roms)
+GAMEL( 200?, sc4lotrta ,sc4lotrf, sc4_4reel_alt, sc4lotrf, sc4_state, sc4lotrf, ROT0, "BFM","Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -27591,21 +27591,21 @@ INPUT_PORTS_END
// PR1315 TWO TOWERS PR1313 TWO TOWERS SOUNDS11
-GAMEL( 200?, sc4lotr2 ,0, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2a ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2b ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2c ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2d ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2e ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2j ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2k ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2l ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2m ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2 ,0, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2a ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2b ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2c ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2d ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2e ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2j ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2k ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2l ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2m ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1315 TWO TOWERS PR1313 TWO TOWERS SOUNDS11 TWO TOWERS S.SITE
-GAMEL( 200?, sc4lotr2f ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2g ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2h ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotr2i ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2f ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2g ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2h ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotr2i ,sc4lotr2, sc4_200_5r, sc4lotr2, sc4_state, sc4lotr2_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ltr2c)
@@ -27677,19 +27677,19 @@ INPUT_PORTS_START( sc4ltr2c ) // this structure is generated
INPUT_PORTS_END
// PR1420 CLUB LOTR TWO TOWERS PR1420 CLUB TWOTOWERS SOUNDS11
-GAMEL( 200?, sc4ltr2c ,0, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2ca ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cb ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cc ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cd ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2ce ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cf ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cg ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2c ,0, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2ca ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cb ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cc ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cd ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2ce ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cf ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cg ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1420 CLUB LOTR TWO TOWERS PR1420 CLUB TWOTOWERS SOUNDS11 CLUB TWO TOWERS
-GAMEL( 200?, sc4ltr2ch ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2ci ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2cj ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ltr2ck ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2ch ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2ci ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2cj ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ltr2ck ,sc4ltr2c, sc4_200_std, sc4ltr2c, sc4_state, sc4ltr2c_mbus, ROT0, "BFM","Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4magic)
{
@@ -27741,10 +27741,10 @@ INPUT_PORTS_START( sc4magic ) // this structure is generated
INPUT_PORTS_END
// PR2520 MAGIC POUND ABOUT V1.0 MAGICPOUNDABOUTSND MAGIC POUNDABOUT
-GAMEL( 200?, sc4magic ,0, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magica ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magicb ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magicc ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magic ,0, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magica ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magicb ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magicc ,sc4magic, sc4_4reel, sc4magic, sc4_state, sc4magic, ROT0, "Qps","Magic Poundabout (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4maxim)
@@ -27799,14 +27799,14 @@ INPUT_PORTS_START( sc4maxim ) // this structure is generated
INPUT_PORTS_END
// PR2019 MAXIMUS CASH MAX SOUNDS MAXIMUS CASH
-GAMEL( 200?, sc4maxim ,0, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maxima ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maximb ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maximc ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maximd ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maxime ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maximf ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maximg ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxim ,0, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxima ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maximb ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maximc ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maximd ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxime ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maximf ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maximg ,sc4maxim, sc4_4reel, sc4maxim, sc4_state, sc4maxim, ROT0, "Mazooma","Maximus Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4monob)
@@ -27859,20 +27859,20 @@ INPUT_PORTS_START( sc4monob ) // this structure is generated
INPUT_PORTS_END
// PR2121 MONOPOLY MPLY SOUNDS MONOPOLY
-GAMEL( 200?, sc4monob ,0, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monoba ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobb ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobc ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobd ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobe ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobf ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobg ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobh ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobi ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobj ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobk ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobl ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monobm ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monob ,0, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monoba ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobb ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobc ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobd ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobe ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobf ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobg ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobh ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobi ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobj ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobk ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobl ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monobm ,sc4monob, sc4_4reel_alt, sc4monob, sc4_state, sc4monob, ROT0, "BFM","Monopoly (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -27927,17 +27927,17 @@ INPUT_PORTS_END
// So which Top Box roms should thse use? Why do some play without one?
// Waits for Top Box
-GAMEL( 200?, sc4mondxd ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2202 MONOPOLY DELUXE MONOPOLY DELUXE MAZ MONOPOLY TRIPLE
-GAMEL( 200?, sc4mondxg ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mondxd ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2202 MONOPOLY DELUXE MONOPOLY DELUXE MAZ MONOPOLY TRIPLE
+GAMEL( 200?, sc4mondxg ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// Plays without Top Box
-GAMEL( 200?, sc4mondxe ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2202 MONOPOLY MONOPOLY TRIPLE MAZ MONOPOLY DELUXE
-GAMEL( 200?, sc4mondxf ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mondxe ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2202 MONOPOLY MONOPOLY TRIPLE MAZ MONOPOLY DELUXE
+GAMEL( 200?, sc4mondxf ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// Waits for Top Box
-GAMEL( 200?, sc4mondx ,0, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2202 MONOPOLY DELUXE MONOPOLY DELUXE MAZ MPDX SOUNDS MONOPOLY
-GAMEL( 200?, sc4mondxa ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mondx ,0, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2202 MONOPOLY DELUXE MONOPOLY DELUXE MAZ MPDX SOUNDS MONOPOLY
+GAMEL( 200?, sc4mondxa ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// Plays without Top Box
-GAMEL( 200?, sc4mondxb ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mondxc ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mondxb ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mondxc ,sc4mondx, sc4_3reel_200, sc4mondx, sc4_state, sc4mondx, ROT0, "Mazooma","Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
@@ -27995,16 +27995,16 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mont)
// PR2510 MONTEGO PAY LOWTECHSND MONTEGO PAY
-GAMEL( 200?, sc4mont ,0, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monta ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4montb ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4montc ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4montd ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monte ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4montf ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4montg ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4month ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monti ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mont ,0, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monta ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4montb ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4montc ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4montd ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monte ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4montf ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4montg ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4month ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monti ,sc4mont, sc4, sc4mont, sc4_state, sc4mont, ROT0, "Qps","Montego Pay (Qps) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -28064,9 +28064,9 @@ INPUT_PORTS_START( sc4mou ) // this structure is generated
INPUT_PORTS_END
// PR2523 MOVE ON UP V1.0 MOVEONUPSND MOVE ON UP
-GAMEL( 200?, sc4mou ,0, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4moua ,sc4mou, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4moub ,sc4mou, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mou ,0, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4moua ,sc4mou, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4moub ,sc4mou, sc4_4reel_alt, sc4mou, sc4_state, sc4mou, ROT0, "Qps","Move On Up (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4nmtj)
@@ -28127,11 +28127,11 @@ INPUT_PORTS_START( sc4nmtj ) // this structure is generated
INPUT_PORTS_END
// PR2171 NEVER MIND JPS NMTJ SOUNDS NEVER MIND JPS
-GAMEL( 200?, sc4nmtj ,0, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (011)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmtja ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmtjc ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmtjb ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmtjd ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmtj ,0, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (011)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmtja ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmtjc ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmtjb ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmtjd ,sc4nmtj, sc4_200_4ra, sc4nmtj, sc4_state, sc4nmtj, ROT0, "Mazooma","Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4oyf)
@@ -28203,8 +28203,8 @@ INPUT_PORTS_START( sc4oyf ) // this structure is generated
INPUT_PORTS_END
// PR1310 AWP OFF YOUR FACE PR1310 OFF YOUR FACE SOUNDS11
-GAMEL( 200?, sc4oyf ,0, sc4_4reel_alt, sc4oyf, sc4_state, sc4oyf, ROT0, "BFM","Off Your Face (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4oyfa ,sc4oyf, sc4_4reel_alt, sc4oyf, sc4_state, sc4oyf, ROT0, "BFM","Off Your Face (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4oyf ,0, sc4_4reel_alt, sc4oyf, sc4_state, sc4oyf, ROT0, "BFM","Off Your Face (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4oyfa ,sc4oyf, sc4_4reel_alt, sc4oyf, sc4_state, sc4oyf, ROT0, "BFM","Off Your Face (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -28276,8 +28276,8 @@ INPUT_PORTS_START( sc4opses ) // this structure is generated
INPUT_PORTS_END
// PR1106 OPEN SESAME PR1106 OPEN SESAME SOUNDS11
-GAMEL( 200?, sc4opses ,0, sc4_200_5r, sc4opses, sc4_state, sc4opses, ROT0, "BFM","Open Sesame (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4opsesa ,sc4opses, sc4_200_5r, sc4opses, sc4_state, sc4opses, ROT0, "BFM","Open Sesame (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4opses ,0, sc4_200_5r, sc4opses, sc4_state, sc4opses, ROT0, "BFM","Open Sesame (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4opsesa ,sc4opses, sc4_200_5r, sc4opses, sc4_state, sc4opses, ROT0, "BFM","Open Sesame (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4paccl)
@@ -28334,10 +28334,10 @@ INPUT_PORTS_START( sc4paccl ) // this structure is generated
INPUT_PORTS_END
// PR2018 PACMAN CLUB CLUB PACMAN SOUNDS PACMAN C L U B
-GAMEL( 200?, sc4paccl ,0, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccla ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacclb ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacclc ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccl ,0, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccla ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacclb ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacclc ,sc4paccl, sc4_5reel, sc4paccl, sc4_state, sc4paccl, ROT0, "Mazooma","Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// REEL 4 ERR 24 (what type should be here??)
@@ -28395,8 +28395,8 @@ INPUT_PORTS_END
// REEL 4 ERR 24
// PR2031 PACMANIA ANIA SOUNDS PACMANIA
-GAMEL( 200?, sc4pmani ,0, sc4_200_4rb, sc4pmani, sc4_state, sc4pmani, ROT0, "Mazooma","Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pmania ,sc4pmani, sc4_200_4rb, sc4pmani, sc4_state, sc4pmani, ROT0, "Mazooma","Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pmani ,0, sc4_200_4rb, sc4pmani, sc4_state, sc4pmani, ROT0, "Mazooma","Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pmania ,sc4pmani, sc4_200_4rb, sc4pmani, sc4_state, sc4pmani, ROT0, "Mazooma","Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pgold)
@@ -28467,12 +28467,12 @@ INPUT_PORTS_START( sc4pgold ) // this structure is generated
INPUT_PORTS_END
// PR1012 PHARAOH'S GOLD PR1012 PHARAOHS GOLD SOUNDS11
-GAMEL( 200?, sc4pgold ,0, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pgolda ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pgoldb ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pgoldc ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pgoldd ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pgoldf ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgold ,0, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgolda ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgoldb ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgoldc ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgoldd ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pgoldf ,sc4pgold, sc4_200_5r, sc4pgold, sc4_state, sc4pgold, ROT0, "BFM","Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -28532,11 +28532,11 @@ INPUT_PORTS_START( sc4ppclb ) // this structure is generated
INPUT_PORTS_END
// PR2236 CLUB PINK PANTHER 411 CLUBPINKPANTHERSND CLUB PINKPANTHER
-GAMEL( 200?, sc4ppclb ,0, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (411) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // also in a set marked 'Pink Pannther Think Pink'
-GAMEL( 200?, sc4ppclbb ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (411) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppclb ,0, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // also in a set marked 'Pink Pannther Think Pink'
+GAMEL( 200?, sc4ppclbb ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2236 CLUB PINK PANTHER 412 CLUBPINKPANTHERSND CLUB PINKPANTHER
-GAMEL( 200?, sc4ppclba ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (412) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppclbc ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (412) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppclba ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (412) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppclbc ,sc4ppclb, sc4, sc4ppclb, sc4_state, sc4ppclb, ROT0, "Qps","Pink Panther Club (412) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pipe)
@@ -28592,8 +28592,8 @@ INPUT_PORTS_START( sc4pipe ) // this structure is generated
INPUT_PORTS_END
// PR2110 PIPING HOT PIPE SOUNDS PIPING HOT
-GAMEL( 200?, sc4pipe ,0, sc4_4reel_alt, sc4pipe, sc4_state, sc4pipe, ROT0, "Mazooma","Piping Hot (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pipea ,sc4pipe, sc4_4reel_alt, sc4pipe, sc4_state, sc4pipe, ROT0, "Mazooma","Piping Hot (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pipe ,0, sc4_4reel_alt, sc4pipe, sc4_state, sc4pipe, ROT0, "Mazooma","Piping Hot (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pipea ,sc4pipe, sc4_4reel_alt, sc4pipe, sc4_state, sc4pipe, ROT0, "Mazooma","Piping Hot (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4plumb)
{
@@ -28647,14 +28647,14 @@ INPUT_PORTS_START( sc4plumb ) // this structure is generated
INPUT_PORTS_END
// QPS142 CLUB PLUMB CRAZY 413 CLUBPLUMBCRAZYSND CLUB PLUMB CRAZY
-GAMEL( 200?, sc4plumb ,0, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4plumba ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumb ,0, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumba ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// QPS142 CLUB PLUMB CRAZY 411 CLUBPLUMBCRAZYSND CLUB PLUMB CRAZY
-GAMEL( 200?, sc4plumbb ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4plumbc ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumbb ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumbc ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// QPS142 CLUB PLUMB CRAZY 412 CLUBPLUMBCRAZYSND CLUB PLUMB CRAZY
-GAMEL( 200?, sc4plumbd ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4plumbe ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumbd ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4plumbe ,sc4plumb, sc4_5reel, sc4plumb, sc4_state, sc4plumb, ROT0, "Qps","Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4polic)
@@ -28704,11 +28704,11 @@ INPUT_PORTS_START( sc4polic ) // this structure is generated
INPUT_PORTS_END
// PR2514 POLICE SQUID V1.0 POLICESQUIDSND POLICE SQUID
-GAMEL( 200?, sc4polic ,0, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V1.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4policb ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V1.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polic ,0, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4policb ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2514 POLICE SQUID V2.0 POLICESQUIDSND POLICE SQUID
-GAMEL( 200?, sc4polica ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V2.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4policc ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V2.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polica ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4policc ,sc4polic, sc4_5reel, sc4polic, sc4_state, sc4polic, ROT0, "Qps","Police Squid (V2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -28761,8 +28761,8 @@ INPUT_PORTS_START( sc4potsh ) // this structure is generated
INPUT_PORTS_END
// QPS143 POT SHOT V1.0 POTSHOTSND POT SHOT
-GAMEL( 200?, sc4potsh ,0, sc4_4reel, sc4potsh, sc4_state, sc4potsh, ROT0, "Qps","Pot Shot (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4potsha ,sc4potsh, sc4_4reel, sc4potsh, sc4_state, sc4potsh, ROT0, "Qps","Pot Shot (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4potsh ,0, sc4_4reel, sc4potsh, sc4_state, sc4potsh, ROT0, "Qps","Pot Shot (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4potsha ,sc4potsh, sc4_4reel, sc4potsh, sc4_state, sc4potsh, ROT0, "Qps","Pot Shot (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pogbl)
@@ -28826,12 +28826,12 @@ INPUT_PORTS_START( sc4pogbl ) // this structure is generated
INPUT_PORTS_END
// PR3083 CLUB POTS OF GOLD POTS OF GOLD CLUB PR3082 C POTS OF GOLD SOUNDS11 POTS OF GOLD
-GAMEL( 200?, sc4pogbl ,0, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogbla ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogblb ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogblc ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogbld ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogble ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogbl ,0, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogbla ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogblb ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogblc ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogbld ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogble ,sc4pogbl, sc4_5reel, sc4pogbl, sc4_state, sc4pogbl, ROT0, "BFM","Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pwrsg)
{
@@ -28883,10 +28883,10 @@ INPUT_PORTS_START( sc4pwrsg ) // this structure is generated
INPUT_PORTS_END
// PR2053 POWERSURGE SURGESND POWERSURGE
-GAMEL( 200?, sc4pwrsg ,0, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrsga ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrsgb ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrsgc ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrsg ,0, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrsga ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrsgb ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrsgc ,sc4pwrsg, sc4_200_5r, sc4pwrsg, sc4_state, sc4pwrsg, ROT0, "Qps","Power Surge (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pir)
@@ -28957,14 +28957,14 @@ INPUT_PORTS_START( sc4pir ) // this structure is generated
INPUT_PORTS_END
// PR1303 THE PRIZE IS RIGHT PR1303 T PRIZE I R SOUNDS11
-GAMEL( 200?, sc4pir ,0, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pira ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pirb ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pirc ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pird ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pire ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pirf ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pirg ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pir ,0, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pira ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pirb ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pirc ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pird ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pire ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pirf ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pirg ,sc4pir, sc4_200_5r, sc4pir, sc4_state, sc4pir, ROT0, "BFM","The Prize Is Right (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4qmodo)
@@ -29011,11 +29011,11 @@ INPUT_PORTS_START( sc4qmodo ) // this structure is generated
INPUT_PORTS_END
// QUAZZI MO' DOUGH..........QUAZZSND....... (no standard header)
-GAMEL( 200?, sc4qmodo , 0, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4qmodoa ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4qmodob ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4qmodoc ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4qmodod ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4qmodo , 0, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4qmodoa ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4qmodob ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4qmodoc ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4qmodod ,sc4qmodo, sc4_4reel, sc4qmodo, sc4_state, sc4qmodo, ROT0, "Qps","Quazzi Mo' Dough (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -29069,10 +29069,10 @@ INPUT_PORTS_START( sc4quidr ) // this structure is generated
// 0x0010 - "hopdmp" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4quidr ,0, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidra ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidrb ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidrc ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidr ,0, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidra ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidrb ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidrc ,sc4quidr, sc4_4reel, sc4quidr, sc4_state, sc4quidr, ROT0, "Qps","Quid Rock (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rdrag)
@@ -29127,11 +29127,11 @@ INPUT_PORTS_START( sc4rdrag ) // this structure is generated
INPUT_PORTS_END
// PR2542 RED DRAGON 011 REDDRAGONSND RED DRAGON
-GAMEL( 200?, sc4rdrag ,0, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rdraga ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdrag ,0, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdraga ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2542 RED DRAGON 021 REDDRAGONSND RED DRAGON
-GAMEL( 200?, sc4rdragc ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (021) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rdragf ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (021) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdragc ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (021) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdragf ,sc4rdrag, sc4_5reel, sc4rdrag, sc4_state, sc4rdrag, ROT0, "Qps","Red Dragon (021) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rdrcl)
@@ -29187,10 +29187,10 @@ INPUT_PORTS_START( sc4rdrcl ) // this structure is generated
INPUT_PORTS_END
// QPS160 CLUB RED DRAGON 411 CLUBREDDRAGONSND CLUB RED DRAGON
-GAMEL( 200?, sc4rdrcl ,0, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (411) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rdrclb ,sc4rdrcl, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (411) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdrcl ,0, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (411) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdrclb ,sc4rdrcl, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (411) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// QPS160 CLUB RED DRAGON 412 CLUBREDDRAGONSND CLUB RED DRAGON
-GAMEL( 200?, sc4rdrcla ,sc4rdrcl, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (412) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rdrcla ,sc4rdrcl, sc4_5reel, sc4rdrcl, sc4_state, sc4rdrcl, ROT0, "Qps","Red Dragon Club (412) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4relcz)
@@ -29261,10 +29261,10 @@ INPUT_PORTS_START( sc4relcz ) // this structure is generated
INPUT_PORTS_END
// PR1015 REELY CRAZY PR1015 REELY CRAZY SOUNDS11
-GAMEL( 200?, sc4relcz ,0, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4relcza ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4relczb ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4relczc ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4relcz ,0, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4relcza ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4relczb ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4relczc ,sc4relcz, sc4_4reel, sc4relcz, sc4_state, sc4relcz, ROT0, "BFM","Reely Crazy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rotc)
@@ -29319,11 +29319,11 @@ INPUT_PORTS_START( sc4rotc ) // this structure is generated
INPUT_PORTS_END
// PR2132 RETURN OF THE COUNT ROTC SOUNDS THE COUNT
-GAMEL( 200?, sc4rotc ,0, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rotca ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rotcb ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rotcc ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rotcd ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rotc ,0, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rotca ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rotcb ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rotcc ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rotcd ,sc4rotc, sc4_4reel_alt, sc4rotc, sc4_state, sc4rotc, ROT0, "Mazooma","Return Of The Count (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rttt)
@@ -29380,12 +29380,12 @@ INPUT_PORTS_START( sc4rttt ) // this structure is generated
INPUT_PORTS_END
// PR2089 RISE TO THE TOP RISE SOUNDS RISE TO THE TOP
-GAMEL( 200?, sc4rttt ,0, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rttta ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtttb ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtttc ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtttd ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rttte ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rttt ,0, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rttta ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtttb ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtttc ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtttd ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rttte ,sc4rttt, sc4_4reel_alt, sc4rttt, sc4_state, sc4rttt_mbus, ROT0, "Mazooma","Rise To The Top (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4roksc)
{
@@ -29439,11 +29439,11 @@ INPUT_PORTS_START( sc4roksc ) // this structure is generated
INPUT_PORTS_END
// PR2527 ROCKET SCIENCE V1.1 ROCKETSCIENCESND ROCKET SCIENCE
-GAMEL( 200?, sc4roksc ,0, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (V1.1) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rokscb ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (V1.1) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roksc ,0, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rokscb ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2527 ROCKET SCIENCE 011 ROCKETSCIENCESND ROCKET SCIENCE
-GAMEL( 200?, sc4roksca ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rokscc ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roksca ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rokscc ,sc4roksc, sc4_4reel_alt, sc4roksc, sc4_state, sc4roksc, ROT0, "Qps","Rocket Science (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4blast)
{
@@ -29498,14 +29498,14 @@ INPUT_PORTS_END
// only starts 2nd time (requires valid ram?)
// PR2539 BLAST OFF011 ROCKETSCIENCESND BLAST OFF
-GAMEL( 200?, sc4blast ,0, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blastb ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blast ,0, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blastb ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2539 BLAST OFF041 ROCKETSCIENCESND BLAST OFF
-GAMEL( 200?, sc4blasta ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (041) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blastc ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (041) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blasta ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blastc ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2539 BLAST OFF 042 ROCKETSCIENCESND BLAST OFF
-GAMEL( 200?, sc4blastd ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (042) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blaste ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (042) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blastd ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (042) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blaste ,sc4blast, sc4_4reel_alt, sc4blast, sc4_state, sc4blast, ROT0, "Qps","Blast Off (042) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -29562,17 +29562,17 @@ INPUT_PORTS_END
// PR2060 ROGAN DOSH ROGANSND ROGAN DOSH
-GAMEL( 200?, sc4rogds ,0, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rogdsa ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rogdsb ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rogdsc ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogds ,0, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsa ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsb ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsc ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2060 ROGAN DOSH V1.6 ROGANSND ROGAN DOSH
-GAMEL( 200?, sc4rogdse ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v1.6) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdse ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v1.6) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2060 ROGAN DOSH V2.0 ROGANSND ROGAN DOSH
-GAMEL( 200?, sc4rogdsd ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rogdsf ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsd ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsf ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2060 ROGAN DOSH V2.1 ROGANSND ROGAN DOSH
-GAMEL( 200?, sc4rogdsg ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.1) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rogdsg ,sc4rogds, sc4_200_4ra, sc4rogds, sc4_state, sc4rogds, ROT0, "Qps","Rogan Dosh (v2.1) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -29632,11 +29632,11 @@ INPUT_PORTS_END
// PR2034 ROLLING THUNDER ROL SOUNDS ROLLING THUNDER
-GAMEL( 200?, sc4rt ,0, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rta ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtb ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtc ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtd ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rt ,0, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rta ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtb ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtc ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtd ,sc4rt, sc4_200_4ra, sc4rt, sc4_state, sc4rt, ROT0, "Mazooma","Rolling Thunder (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -29691,10 +29691,10 @@ INPUT_PORTS_END
// missing sound roms, doesn't play, same game code and sound ident as Rolling Thunder?
// PR2034 BANK ROLL ROL SOUNDS BANK ROLL
-GAMEL( 200?, sc4broll ,0, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brolla ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brollb ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brollc ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4broll ,0, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brolla ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brollb ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brollc ,sc4broll, sc4_200_4ra, sc4broll, sc4_state, sc4, ROT0, "Mazooma","Bank Roll (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -29767,10 +29767,10 @@ INPUT_PORTS_START( sc4rbank ) // this structure is generated
INPUT_PORTS_END
// PR1111 ROYAL BANKER PR1111 ROYLEBANKER SOUNDS11
-GAMEL( 200?, sc4rbank ,0, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rbanka ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rbankb ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rbankc ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rbank ,0, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rbanka ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rbankb ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rbankc ,sc4rbank, sc4_200_5r, sc4rbank, sc4_state, sc4rbank, ROT0, "BFM","Royle Banker (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4royle)
@@ -29849,21 +29849,21 @@ INPUT_PORTS_START( sc4royle ) // this structure is generated
INPUT_PORTS_END
// PR1102 ROYLEFAMILY PR1102 ROYLEFAMILY SOUNDS11
-GAMEL( 200?, sc4royle ,0, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylea ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4royleb ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylec ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4royled ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylee ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4royleh ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylei ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4royle ,0, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylea ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4royleb ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylec ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4royled ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylee ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4royleh ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylei ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1102 ROYLEFAMILY REV2 PR1102 ROYLEFAMILY SOUNDS11
-GAMEL( 200?, sc4roylef ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4royleg ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylej ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylek ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylel ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4roylem ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylef ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4royleg ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylej ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylek ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylel ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4roylem ,sc4royle, sc4_200_4ra, sc4royle, sc4_state, sc4royle, ROT0, "BFM","Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sidsp)
@@ -29917,10 +29917,10 @@ INPUT_PORTS_START( sc4sidsp ) // this structure is generated
INPUT_PORTS_END
// PR2117 SIDE SPLITTER SSPT SOUNDS SIDE SPLITTER
-GAMEL( 200?, sc4sidsp ,0, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sidspa ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sidspb ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sidspc ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sidsp ,0, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sidspa ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sidspb ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sidspc ,sc4sidsp, sc4_4reel_alt, sc4sidsp, sc4_state, sc4sidsp, ROT0, "Mazooma","Side Splitter (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4srr)
@@ -29991,10 +29991,10 @@ INPUT_PORTS_END
// PR1105 SNAKE RATTLE 'N' ROLL PR1105 SNAKERR SOUNDS11
-GAMEL( 200?, sc4srr ,0, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srra ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrb ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrc ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srr ,0, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srra ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrb ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrc ,sc4srr, sc4_4reel_alt, sc4srr, sc4_state, sc4srr, ROT0, "BFM","Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4slc)
@@ -30066,22 +30066,22 @@ INPUT_PORTS_START( sc4slc ) // this structure is generated
INPUT_PORTS_END
// PR1423 CLUB SNAKES N LADDERS PR1423 CSNK SOUNDS11 SNAKES N LADDERS
-GAMEL( 2003, sc4slc ,0, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcb ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcc ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slce ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slci ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcm ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcn ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slc ,0, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcb ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcc ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slce ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slci ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcm ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcn ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1423 CLUB SNAKES N LADDERS SNAKES N LADDERS CLUB PR1423 CSNK SOUNDS11 SNAKES N LADDERS
-GAMEL( 2003, sc4slca ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcd ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcf ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcg ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcj ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slck ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slcl ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4slch ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slca ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcd ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcf ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcg ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcj ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slck ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc_mbus, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slcl ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4slch ,sc4slc, sc4_5reel, sc4slc, sc4_state, sc4slc, ROT0, "BFM","Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -30158,10 +30158,10 @@ INPUT_PORTS_START( sc4solgl ) // this structure is generated
INPUT_PORTS_END
// PR1010 SOLID GOLD PR1010 SOLID GOLD SOUNDS11
-GAMEL( 200?, sc4solgl ,0, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4solgla ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4solglb ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4solglc ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4solgl ,0, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4solgla ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4solglb ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4solglc ,sc4solgl, sc4_200_4ra, sc4solgl, sc4_state, sc4solgl, ROT0, "BFM","Solid Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sace)
@@ -30214,8 +30214,8 @@ INPUT_PORTS_END
// PR2509 SPACE ACE V2.2 SPACESND SPACE ACE
-GAMEL( 200?, sc4sace ,0, sc4_4reel_alt, sc4sace, sc4_state, sc4sace, ROT0, "Qps","Space Ace (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sacea ,sc4sace, sc4_4reel_alt, sc4sace, sc4_state, sc4sace, ROT0, "Qps","Space Ace (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sace ,0, sc4_4reel_alt, sc4sace, sc4_state, sc4sace, ROT0, "Qps","Space Ace (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sacea ,sc4sace, sc4_4reel_alt, sc4sace, sc4_state, sc4sace, ROT0, "Qps","Space Ace (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -30268,8 +30268,8 @@ INPUT_PORTS_START( sc4sbust ) // this structure is generated
INPUT_PORTS_END
// PR2506 SPACEBUSTER BUSTERSND SPACEBUSTER
-GAMEL( 200?, sc4sbust ,0, sc4_4reel_alt, sc4sbust, sc4_state, sc4sbust, ROT0, "Qps","Space Buster (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sbusta ,sc4sbust, sc4_4reel_alt, sc4sbust, sc4_state, sc4sbust, ROT0, "Qps","Space Buster (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sbust ,0, sc4_4reel_alt, sc4sbust, sc4_state, sc4sbust, ROT0, "Qps","Space Buster (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sbusta ,sc4sbust, sc4_4reel_alt, sc4sbust, sc4_state, sc4sbust, ROT0, "Qps","Space Buster (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -30327,17 +30327,17 @@ INPUT_PORTS_START( sc4stirc ) // this structure is generated
INPUT_PORTS_END
// PR2005 STIR CRAZY STIR SOUNDS STIR CRAZY
-GAMEL( 200?, sc4stirc ,0, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stirca ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircb ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircc ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircd ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stirce ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircf ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircg ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stirch ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stirci ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stircj ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stirc ,0, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stirca ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircb ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircc ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircd ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stirce ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircf ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircg ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stirch ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stirci ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stircj ,sc4stirc, sc4_4reel, sc4stirc, sc4_state, sc4stirc, ROT0, "Mazooma","Stir Crazy (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -30398,9 +30398,9 @@ INPUT_PORTS_START( sc4sahed ) // this structure is generated
INPUT_PORTS_END
// PRxxxx STREAKS AHEAD V1.0 STREAKSSND STREAKS AHEAD
-GAMEL( 200?, sc4sahed ,0, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4saheda ,sc4sahed, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sahedb ,sc4sahed, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sahed ,0, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4saheda ,sc4sahed, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sahedb ,sc4sahed, sc4_200_4rb, sc4sahed, sc4_state, sc4sahed, ROT0, "Qps","Streaks Ahead (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4strx)
@@ -30471,10 +30471,10 @@ INPUT_PORTS_END
// PR1114 STRIKE X PR1114 STRIKX SOUNDS11
-GAMEL( 200?, sc4strx ,0, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strxa ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strxb ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strxc ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strx ,0, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strxa ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strxb ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strxc ,sc4strx, sc4_4reel_alt, sc4strx, sc4_state, sc4strx, ROT0, "BFM","Strike X (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -30543,10 +30543,10 @@ INPUT_PORTS_START( sc4suscl ) // this structure is generated
INPUT_PORTS_END
// PR2357 CLUB SUITS U SIR SUITS U SIR CLUB CLUB SUIT SOUNDS
-GAMEL( 200?, sc4suscl ,0, sc4_5reel, sc4suscl, sc4_state, sc4suscl, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susclb ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susclc ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl_mbus, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4suscla ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl_mbus, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4suscl ,0, sc4_5reel, sc4suscl, sc4_state, sc4suscl, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4susclb ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4susclc ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl_mbus, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4suscla ,sc4suscl, sc4_5reel, sc4suscl, sc4_state, sc4suscl_mbus, ROT0, "Qps","Suits U Sir Club (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -30610,17 +30610,17 @@ INPUT_PORTS_END
// PR2515 TAE KWON DOUGH TAEKWONSND TAE KWON DOUGH
-GAMEL( 200?, sc4taekw ,0, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwa ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwb ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwg ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwh ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwi ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwj ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwc ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwd ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwe ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taekwf ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekw ,0, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwa ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwb ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwg ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwh ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwi ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwj ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwc ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwd ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwe ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taekwf ,sc4taekw, sc4_200_4rb, sc4taekw, sc4_state, sc4taekw_mbus, ROT0, "Qps","Tae Kwon Dough (Qps) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -30693,8 +30693,8 @@ INPUT_PORTS_START( sc4taknt ) // this structure is generated
INPUT_PORTS_END
// PR1302 AWP TAKE NOTE PR1302 TAKE NOTE SOUNDS11
-GAMEL( 200?, sc4taknt ,0, sc4_4reel_alt, sc4taknt, sc4_state, sc4taknt, ROT0, "BFM","Take Note (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4taknta ,sc4taknt, sc4_4reel_alt, sc4taknt, sc4_state, sc4taknt, ROT0, "BFM","Take Note (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taknt ,0, sc4_4reel_alt, sc4taknt, sc4_state, sc4taknt, ROT0, "BFM","Take Note (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4taknta ,sc4taknt, sc4_4reel_alt, sc4taknt, sc4_state, sc4taknt, ROT0, "BFM","Take Note (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4takcl)
{
@@ -30763,20 +30763,20 @@ INPUT_PORTS_START( sc4takcl ) // this structure is generated
INPUT_PORTS_END
// PR1323 CLUB TAKE NOTE PR1323 CNOT SOUNDS11
-GAMEL( 200?, sc4takcl ,0, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takcld ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takcli ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takclj ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takcl ,0, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takcld ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takcli ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclj ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1323 CLUB TAKE NOTE CLUB TAKE NOTE CLUB PR1323 CNOT SOUNDS11
-GAMEL( 200?, sc4takclg ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl_mbus, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takclh ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl_mbus, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclg ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl_mbus, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclh ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl_mbus, ROT0, "BFM","Take Note Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1323 CLUB TAKE NOTE 500 PR1323 CNOT SOUNDS11
-GAMEL( 200?, sc4takcla ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club 500 (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takcla ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club 500 (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1323 CLUB TAKE NOTE FERRY PR1323 CNOT SOUNDS11
-GAMEL( 200?, sc4takclb ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takclc ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takcle ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4takclf ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclb ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclc ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takcle ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4takclf ,sc4takcl, sc4_5reel, sc4takcl, sc4_state, sc4takcl, ROT0, "BFM","Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4tetri)
{
@@ -30825,18 +30825,18 @@ INPUT_PORTS_END
// PR7077 TETRIS TETR SOUNDS
-GAMEL( 200?, sc4tetri ,0, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetria ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrib ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetric ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrid ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrie ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrif ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrig ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrih ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrii ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrij ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tetrik ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetri ,0, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetria ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrib ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetric ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrid ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrie ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrif ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrig ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrih ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrii ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrij ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tetrik ,sc4tetri, sc4_4reel, sc4tetri, sc4_state, sc4tetri, ROT0, "Mazooma","Tetris (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4tbana)
@@ -30906,8 +30906,8 @@ INPUT_PORTS_START( sc4tbana ) // this structure is generated
INPUT_PORTS_END
// PR1110 TOP BANANA PR1110 TOP BANANA SOUNDS11
-GAMEL( 200?, sc4tbana ,0, sc4_200_5rb, sc4tbana, sc4_state, sc4tbana, ROT0, "BFM","Top Banana (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tbanaa ,sc4tbana, sc4_200_5rb, sc4tbana, sc4_state, sc4tbana, ROT0, "BFM","Top Banana (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tbana ,0, sc4_200_5rb, sc4tbana, sc4_state, sc4tbana, ROT0, "BFM","Top Banana (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tbanaa ,sc4tbana, sc4_200_5rb, sc4tbana, sc4_state, sc4tbana, ROT0, "BFM","Top Banana (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// REEL 4 ERR 24 (what should be here?)
@@ -30960,14 +30960,14 @@ INPUT_PORTS_END
// REEL 4 ERR 24
// PR7062 TOP GEARS GEARS SOUNDS TOP GEARS
-GAMEL( 200?, sc4tgear ,0, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgeara ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgearb ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgearc ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgeard ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgeare ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgearf ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tgearg ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgear ,0, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgeara ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgearb ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgearc ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgeard ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgeare ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgearf ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tgearg ,sc4tgear, sc4_4reel, sc4tgear, sc4_state, sc4tgear, ROT0, "Mazooma","Top Gears (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -31021,7 +31021,7 @@ INPUT_PORTS_START( sc4tload ) // this structure is generated
INPUT_PORTS_END
// PR2112 TOP LOADER LOAD SOUNDS TOP LOADER
-GAMEL( 200?, sc4tload ,0, sc4_4reel_alt, sc4tload, sc4_state, sc4tload, ROT0, "Mazooma","Top Loader (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tload ,0, sc4_4reel_alt, sc4tload, sc4_state, sc4tload, ROT0, "Mazooma","Top Loader (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -31102,10 +31102,10 @@ INPUT_PORTS_START( sc4ttomb ) // this structure is generated
INPUT_PORTS_END
// PR1305 TREASURE TOMB PR1305 TRES TOMB SOUNDS11 / HIT SHOT
-GAMEL( 200?, sc4ttomb ,0, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttomba ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttombb ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttombc ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttomb ,0, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttomba ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttombb ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttombc ,sc4ttomb, sc4_200_4rb, sc4ttomb, sc4_state, sc4ttomb, ROT0, "BFM","Treasure Tomb (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -31155,8 +31155,8 @@ INPUT_PORTS_START( sc4tridn ) // this structure is generated
INPUT_PORTS_END
// PR2103 THE TRIDENT TRID SOUNDS THE TRIDENT
-GAMEL( 200?, sc4tridn ,0, sc4_5reel, sc4tridn, sc4_state, sc4tridn, ROT0, "Mazooma","The Trident (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tridna ,sc4tridn, sc4_5reel, sc4tridn, sc4_state, sc4tridn, ROT0, "Mazooma","The Trident (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tridn ,0, sc4_5reel, sc4tridn, sc4_state, sc4tridn, ROT0, "Mazooma","The Trident (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tridna ,sc4tridn, sc4_5reel, sc4tridn, sc4_state, sc4tridn, ROT0, "Mazooma","The Trident (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -31237,17 +31237,17 @@ INPUT_PORTS_START( sc4vrgcl ) // this structure is generated
INPUT_PORTS_END
// PR1037 CLUB VERY RICH GEEZER PR1037 RICH SOUNDS11 VERY RICH GEEZER
-GAMEL( 200?, sc4vrgcl ,0, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgcla ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgclb ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgclc ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgcld ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgcle ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgclf ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgclg ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgcl ,0, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgcla ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgclb ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgclc ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgcld ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgcle ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgclf ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgclg ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1037 CLUB VERY RICH GEEZER VERY RICH GEEZER CLUB PR1037 RICH SOUNDS11 VERY RICH GEEZER
-GAMEL( 200?, sc4vrgclh ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl_mbus, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vrgcli ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl_mbus, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgclh ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl_mbus, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vrgcli ,sc4vrgcl, sc4_200_5rb, sc4vrgcl, sc4_state, sc4vrgcl_mbus, ROT0, "BFM","Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4leg)
@@ -31320,16 +31320,16 @@ INPUT_PORTS_START( sc4leg ) // this structure is generated
INPUT_PORTS_END
// PR7120 WHO WANTS TO BE A LEGIONNAIRE PR7120 LEGIONNAIRE SOUNDS11
-GAMEL( 200?, sc4leg ,0, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lega ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legb ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legc ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legd ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lege ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legf ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legg ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4leg ,0, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lega ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legb ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legc ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legd ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lege ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legf ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legg ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legh ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // doesn't do anything?
+GAMEL( 200?, sc4legh ,sc4leg, sc4_200_5rb, sc4leg, sc4_state, sc4leg, ROT0, "BFM","Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // doesn't do anything?
DRIVER_INIT_MEMBER(sc4_state,sc4cleg)
@@ -31405,14 +31405,14 @@ INPUT_PORTS_START( sc4legcb ) // this structure is generated
INPUT_PORTS_END
// PR1038 CLUB WHO WANTS TO BE A LEGIONNAIRE PR1038 CLUB WWTBAL SOUNDS11
-GAMEL( 200?, sc4legcb ,0, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legcba ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legcbb ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legcbc ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcb ,0, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcba ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcbb ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcbc ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// Alarms through startup, doesn't start game
// PR1038 CLUB WHO WANTS TO BE A LEGIONNAIRE WWTB LEGIONNAIRE CLUB PR1038 CLUB WWTBAL SOUNDS11
-GAMEL( 200?, sc4legcbd ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg_mbus, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4legcbe ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg_mbus, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcbd ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg_mbus, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4legcbe ,sc4legcb, sc4_200_std, sc4legcb, sc4_state, sc4cleg_mbus, ROT0, "BFM","Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4wspin)
@@ -31462,11 +31462,11 @@ INPUT_PORTS_START( sc4wspin ) // this structure is generated
INPUT_PORTS_END
// QPS162 WIN SPINNER Arcade Version 011 WINSPINNERSND WIN SPINNER
-GAMEL( 200?, sc4wspin ,0, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wspinc ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wspin ,0, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wspinc ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// QPS162 WIN SPINNER SP Arcade Version 011 WINSPINNERSND WIN SPINNER
-GAMEL( 200?, sc4wspinb ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wspind ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wspinb ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wspind ,sc4wspin, sc4_200_4rb, sc4wspin, sc4_state, sc4wspin, ROT0, "Qps","Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4wwys)
@@ -31542,8 +31542,8 @@ INPUT_PORTS_START( sc4wwys ) // this structure is generated
INPUT_PORTS_END
// PR1301 WIN WHEN YOUR SPINNING PR1301 WIN W Y S SOUNDS11
-GAMEL( 200?, sc4wwys ,0, sc4_200_5ra, sc4wwys, sc4_state, sc4wwys, ROT0, "BFM","Win When Your Spinning (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wwysa ,sc4wwys, sc4_200_5ra, sc4wwys, sc4_state, sc4wwys, ROT0, "BFM","Win When Your Spinning (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wwys ,0, sc4_200_5ra, sc4wwys, sc4_state, sc4wwys, ROT0, "BFM","Win When Your Spinning (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wwysa ,sc4wwys, sc4_200_5ra, sc4wwys, sc4_state, sc4wwys, ROT0, "BFM","Win When Your Spinning (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4winsptb)
@@ -31600,47 +31600,47 @@ INPUT_PORTS_START( sc4winspa ) // this structure is generated
INPUT_PORTS_END
// PR2526 WINNING SPIN TOP BOX WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winsp ,0, sc4_3reel, sc4, sc4_state, sc4winsptb, ROT0, "Qps","Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winsp ,0, sc4_3reel, sc4, sc4_state, sc4winsptb, ROT0, "Qps","Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2526 WINNING SPIN TOP BOX WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winsp0 ,sc4winsp, sc4_3reel, sc4, sc4_state, sc4winsptb, ROT0, "Qps","Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // was in a Win Spinner set, but probably belongs here
+GAMEL( 200?, sc4winsp0 ,sc4winsp, sc4_3reel, sc4, sc4_state, sc4winsptb, ROT0, "Qps","Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // was in a Win Spinner set, but probably belongs here
// PR2546 WINNING SPIN Bingo Version011 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspa ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winsph ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspa ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winsph ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2546 WINNING SPIN Bingo Version 012 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspe ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspl ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspq ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspw ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspe ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspl ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspq ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspw ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2546 WINNING SPIN Arcade Version011 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspd ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspk ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspd ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspk ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2546 WINNING SPIN Arcade Version 012 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspt ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspz ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspt ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspz ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2546 WINNING SPIN Version 021 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspb ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V021) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspi ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V021) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspb ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V021) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspi ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V021) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2546 WINNING SPIN Version 022 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspf ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspm ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspr ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspx ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspf ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspm ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspr ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspx ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V022) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2546 WINNING SPIN Version 031 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspc ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V031) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspj ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V031) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspc ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V031) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspj ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V031) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2546 WINNING SPIN Version 032 WINNINGSPINSND WINNING SPIN
-GAMEL( 200?, sc4winspg ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspn ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winsps ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspy ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspg ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspn ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winsps ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspy ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (V032) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2546 WINNING SPIN Arcade Version 061 WINNINGSPINSND WINNING SPIN
// these can be booted
-GAMEL( 200?, sc4winspo ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspu ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspo ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspu ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2546 WINNING SPIN Arcade Version 062 WINNINGSPINSND WINNING SPIN
// these can be booted
-GAMEL( 200?, sc4winspp ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4winspv ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspp ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winspv ,sc4winsp, sc4_200_4r, sc4winspa, sc4_state, sc4winsp, ROT0, "Qps","Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4wondw)
@@ -31708,8 +31708,8 @@ INPUT_PORTS_START( sc4wondw ) // this structure is generated
INPUT_PORTS_END
// PR1318 WONDER WHEEL PR1314 WONDER WHEEL SOUNDS11
-GAMEL( 200?, sc4wondw ,0, sc4_200_5ra, sc4wondw, sc4_state, sc4wondw, ROT0, "BFM","Wonder Wheel (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wondwa ,sc4wondw, sc4_200_5ra, sc4wondw, sc4_state, sc4wondw, ROT0, "BFM","Wonder Wheel (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wondw ,0, sc4_200_5ra, sc4wondw, sc4_state, sc4wondw, ROT0, "BFM","Wonder Wheel (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wondwa ,sc4wondw, sc4_200_5ra, sc4wondw, sc4_state, sc4wondw, ROT0, "BFM","Wonder Wheel (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4xmark)
{
@@ -31788,8 +31788,8 @@ INPUT_PORTS_START( sc4xmark ) // this structure is generated
INPUT_PORTS_END
// PR1116 X MARKS THE SPOT PR1116 X MARKS THE SPOT SOUNDS11
-GAMEL( 200?, sc4xmark ,0, sc4_200_4rb, sc4xmark, sc4_state, sc4xmark, ROT0, "BFM","X Marks The Spot (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4xmarka ,sc4xmark, sc4_200_4rb, sc4xmark, sc4_state, sc4xmark, ROT0, "BFM","X Marks The Spot (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4xmark ,0, sc4_200_4rb, sc4xmark, sc4_state, sc4xmark, ROT0, "BFM","X Marks The Spot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4xmarka ,sc4xmark, sc4_200_4rb, sc4xmark, sc4_state, sc4xmark, ROT0, "BFM","X Marks The Spot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -31853,14 +31853,14 @@ INPUT_PORTS_START( sc4blokq ) // this structure is generated
INPUT_PORTS_END
// PR2025 BLOCK BUSTER BUSTERSND BLOCK BUSTER
-GAMEL( 200?, sc4blokq ,0, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blokqa ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blokqb ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blokqc ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blokqd ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blokqe ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokq ,0, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokqa ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokqb ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokqc ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokqd ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blokqe ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Qps","Blockbuster (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2025 BLOCK BUSTER BUSTERSND BLOCK BUSTER (same as sc4blokq ?)
-GAMEL( 200?, sc4bbust ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Mazooma","Blockbuster (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bbust ,sc4blokq, sc4_200_4ra, sc4blokq, sc4_state, sc4blokq, ROT0, "Mazooma","Blockbuster (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -31920,8 +31920,8 @@ INPUT_PORTS_START( sc4onup ) // this structure is generated
INPUT_PORTS_END
// PR2076 ON THE UP HYPE SOUNDS ON THE UP
-GAMEL( 200?, sc4onup ,0, sc4_200_5r, sc4onup, sc4_state, sc4onup, ROT0, "BFM","On The Up (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4onupa ,sc4onup, sc4_200_5r, sc4onup, sc4_state, sc4onup, ROT0, "BFM","On The Up (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4onup ,0, sc4_200_5r, sc4onup, sc4_state, sc4onup, ROT0, "BFM","On The Up (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4onupa ,sc4onup, sc4_200_5r, sc4onup, sc4_state, sc4onup, ROT0, "BFM","On The Up (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hyper)
@@ -31979,8 +31979,8 @@ INPUT_PORTS_START( sc4hyper ) // this structure is generated
INPUT_PORTS_END
// PR2053 HYPERACTIVEL HYPE SOUNDS HYPERACTIVE
-GAMEL( 200?, sc4hyper ,0, sc4_5reel, sc4hyper, sc4_state, sc4hyper, ROT0, "Mazooma","Hyperactive (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hypera ,sc4hyper, sc4_5reel, sc4hyper, sc4_state, sc4hyper, ROT0, "Mazooma","Hyperactive (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hyper ,0, sc4_5reel, sc4hyper, sc4_state, sc4hyper, ROT0, "Mazooma","Hyperactive (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hypera ,sc4hyper, sc4_5reel, sc4hyper, sc4_state, sc4hyper, ROT0, "Mazooma","Hyperactive (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pglcl)
@@ -32035,15 +32035,15 @@ INPUT_PORTS_START( sc4pglcl ) // this structure is generated
INPUT_PORTS_END
// PR1623 PHARAOHS GOLD PHARAOHS GOLD CLUB PR1623 CLASS PHAR GOLD SOUNDS11
-GAMEL( 200?, sc4pglcl ,0, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PAY UNIT ERR 17
-GAMEL( 200?, sc4pglcla ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglclb ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglclc ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglcld ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglcle ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglclf ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglclg ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglclh ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcl ,0, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PAY UNIT ERR 17
+GAMEL( 200?, sc4pglcla ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglclb ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglclc ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcld ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcle ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglclf ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglclg ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglclh ,sc4pglcl, sc4_5reel, sc4pglcl, sc4_state, sc4pglcl, ROT0, "BFM","Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4po8)
{
@@ -32102,26 +32102,26 @@ INPUT_PORTS_START( sc4po8 ) // this structure is generated
INPUT_PORTS_END
// PR2530 PIECES OF EIGHT V1.0 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8 ,0, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8e ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8f ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8 ,0, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8e ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8f ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2530 PIECES OF EIGHT V1.1 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8a ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8b ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8g ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8h ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8a ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8b ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8g ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8h ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2530 PIECES OF EIGHT 011 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8c ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "Qps","Pieces Of Eight (011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8m ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "QPS","Pieces Of Eight (011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8c ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "Qps","Pieces Of Eight (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8m ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "QPS","Pieces Of Eight (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2530 PIECES OF EIGHT 012 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8i ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (012) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8k ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (012) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8i ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8k ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2530 PIECES OF EIGHT 041 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8d ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "Qps","Pieces Of Eight (041) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8n ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "QPS","Pieces Of Eight (041) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8d ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "Qps","Pieces Of Eight (041) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8n ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8_mbus, ROT0, "QPS","Pieces Of Eight (041) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2530 PIECES OF EIGHT 042 PIECESOFEIGHTSND PIECES OF EIGHT
-GAMEL( 200?, sc4po8j ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (042) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4po8l ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (042) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8j ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (042) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4po8l ,sc4po8, sc4_4reel, sc4po8, sc4_state, sc4po8, ROT0, "Qps","Pieces Of Eight (042) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -32197,16 +32197,16 @@ INPUT_PORTS_START( sc4adjb ) // this structure is generated
INPUT_PORTS_END
// PR3039 AWP ANT N DECS JIGGY BANK S4 PR3009 JIGGY BANK SOUNDS11 JIGGY BANK S.SITE
-GAMEL( 200?, sc4adjb ,0, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjba ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbb ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbc ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbd ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbe ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbf ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbg ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbh ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adjbi ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjb ,0, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjba ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbb ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbc ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbd ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbe ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbf ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbg ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbh ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adjbi ,sc4adjb, sc4_5reel_alt, sc4adjb, sc4_state, sc4adjb, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4adwta)
@@ -32279,8 +32279,8 @@ INPUT_PORTS_START( sc4adwta ) // this structure is generated
INPUT_PORTS_END
// PR1940 AWP ANT N DECS WTAD S4 PR1940 ADSNT SHOWTIME SOUNDS11 ANTNDECSWTAD S.SITE
-GAMEL( 200?, sc4adwta ,0, sc4_5reel, sc4adwta, sc4_state, sc4adwta, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adwtaa ,sc4adwta, sc4_5reel, sc4adwta, sc4_state, sc4adwta, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adwta ,0, sc4_5reel, sc4adwta, sc4_state, sc4adwta, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adwtaa ,sc4adwta, sc4_5reel, sc4adwta, sc4_state, sc4adwta, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4a40)
@@ -32336,10 +32336,10 @@ INPUT_PORTS_START( sc4a40 ) // this structure is generated
INPUT_PORTS_END
// PR2200 AROUND THE BOARD AROU SOUNDS AROUND THE BOARD
-GAMEL( 200?, sc4a40 ,0, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40a ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40b ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40c ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40 ,0, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40a ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40b ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40c ,sc4a40, sc4_5reel, sc4a40, sc4_state, sc4a40, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4a40cl)
{
@@ -32404,10 +32404,10 @@ INPUT_PORTS_START( sc4a40cl ) // this structure is generated
INPUT_PORTS_END
// PR2154 CLUB AROUND BOAR CLB AROUND BOARD CLUB AROU SOUNDS
-GAMEL( 200?, sc4a40cl ,0, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40cla ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40clb ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4a40clc ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40cl ,0, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40cla ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40clb ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4a40clc ,sc4a40cl, sc4_5reel, sc4a40cl, sc4_state, sc4a40cl, ROT0, "Mazooma","Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bantm)
@@ -32483,10 +32483,10 @@ INPUT_PORTS_START( sc4bantm ) // this structure is generated
INPUT_PORTS_END
// PR2301 BANTAM OF THE OPERA BANTAM SOUNDS BANTAMOFTHEOPERA
-GAMEL( 200?, sc4bantm ,0, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bantma ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bantmb ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bantmc ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bantm ,0, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bantma ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bantmb ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bantmc ,sc4bantm, sc4_200_4ra, sc4bantm, sc4_state, sc4bantm, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -32608,14 +32608,14 @@ INPUT_PORTS_START( sc4bar7b ) // this structure is generated
INPUT_PORTS_END
// PR1433 BAR7S PR1433 BAR SEVENS SOUNDS11
-GAMEL( 200?, sc4bar7 ,0, sc4_3reel, sc4bar7, sc4_state, sc4bar7, ROT0, "BFM","Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bar7a ,sc4bar7, sc4_3reel, sc4bar7, sc4_state, sc4bar7, ROT0, "BFM","Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7 ,0, sc4_3reel, sc4bar7, sc4_state, sc4bar7, ROT0, "BFM","Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7a ,sc4bar7, sc4_3reel, sc4bar7, sc4_state, sc4bar7, ROT0, "BFM","Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// INIT COMMS (optional top box for above maybe?)
// PR1438 BAR7S PR1436 TRIPLE CASINO SOUNDS11
-GAMEL( 200?, sc4bar7b ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bar7c ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bar7d ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bar7e ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7b ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7c ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7d ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bar7e ,sc4bar7, sc4_3reel, sc4bar7b, sc4_state, sc4, ROT0, "BFM","Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4batl)
@@ -32686,8 +32686,8 @@ INPUT_PORTS_START( sc4batl ) // this structure is generated
INPUT_PORTS_END
// PR1724 AWP BATTLESHIPS AND CRUISERS S4 PR1704 B AND C SOUNDS11 BATTLESHIPSCRUIS S.SITE
-GAMEL( 200?, sc4batl ,0, sc4, sc4batl, sc4_state, sc4batl, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4batla ,sc4batl, sc4, sc4batl, sc4_state, sc4batl, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4batl ,0, sc4, sc4batl, sc4_state, sc4batl, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4batla ,sc4batl, sc4, sc4batl, sc4_state, sc4batl, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -32760,10 +32760,10 @@ INPUT_PORTS_START( sc4bull ) // this structure is generated
INPUT_PORTS_END
// PR1722 AWP BULLSEYE SCORP4 PR1702 BULLSEYE SOUNDS11 BULLSEYE S.SITE
-GAMEL( 200?, sc4bull ,0, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulla ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bullb ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bullc ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bull ,0, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulla ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bullb ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bullc ,sc4bull, sc4_200_4ra, sc4bull, sc4_state, sc4bull, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bullcs)
@@ -32834,10 +32834,10 @@ INPUT_PORTS_START( sc4bulcs ) // this structure is generated
INPUT_PORTS_END
// PR1740 AWP BULLSEYE CLASSIC SCORP4 PR1702 BULLSEYE SOUNDS11 BULLSEYE CLASSIC S.SITE
-GAMEL( 200?, sc4bulcs ,0, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcsa ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcsb ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcsc ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcs ,0, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcsa ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcsb ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcsc ,sc4bulcs, sc4_200_4ra, sc4bulcs, sc4_state, sc4bullcs, ROT0, "BFM","Bullseye Classic (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4butch)
@@ -32912,14 +32912,14 @@ INPUT_PORTS_START( sc4butch ) // this structure is generated
INPUT_PORTS_END
// PR1930 AWP BUTCH CASHIDY AND THE SUNDANCE QUID S4 PR1910 B C AND THE S Q SOUNDS11 BUTCH N SUNDANCE S.SITE
-GAMEL( 200?, sc4butch ,0, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butcha ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butchb ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butchc ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butchd ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butche ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butchf ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4butchg ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4butch ,0, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4butcha ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4butchb ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4butchc ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4butchd ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4butche ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4butchf ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4butchg ,sc4butch, sc4_4reel_alt, sc4butch, sc4_state, sc4butch, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
//was sc4_200_4ra, but that spins forever, so wrong
@@ -32981,20 +32981,20 @@ INPUT_PORTS_START( sc4cabin ) // this structure is generated
INPUT_PORTS_END
// PR2209 CABIN FEVER CABF SOUNDS CABIN FEVER
-GAMEL( 200?, sc4cabin ,0, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabina ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinb ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinc ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabind ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabine ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinf ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabing ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinh ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabini ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinj ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabink ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinl ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cabinm ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabin ,0, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabina ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinb ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinc ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabind ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabine ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinf ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabing ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinh ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabini ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinj ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabink ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinl ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cabinm ,sc4cabin, sc4, sc4cabin, sc4_state, sc4cabin, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cari)
@@ -33056,12 +33056,12 @@ INPUT_PORTS_START( sc4cari ) // this structure is generated
INPUT_PORTS_END
// PR2326 CARIBBEAN CASH CABC SOUNDS CARIBBEAN CASH
-GAMEL( 200?, sc4cari ,0, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4caria ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4carib ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4caric ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4carid ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4carie ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cari ,0, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4caria ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4carib ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4caric ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4carid ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4carie ,sc4cari, sc4_200_4ra, sc4cari, sc4_state, sc4cari, ROT0, "Mazooma","Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cariq)
@@ -33119,14 +33119,14 @@ INPUT_PORTS_START( sc4cariq ) // this structure is generated
INPUT_PORTS_END
// these lack identification strings, and it's not the same game as above
-GAMEL( 200?, sc4cariq ,0, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqa ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqb ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqc ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqd ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqe ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqf ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cariqg ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariq ,0, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqa ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqb ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqc ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqd ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqe ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqf ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cariqg ,sc4cariq, sc4_4reel, sc4cariq, sc4_state, sc4cariq, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cblas)
@@ -33199,8 +33199,8 @@ INPUT_PORTS_START( sc4cblas ) // this structure is generated
INPUT_PORTS_END
// PR1683 BLAS14
-GAMEL( 200?, sc4cblas ,0, sc4_4reel_alt, sc4cblas, sc4_state, sc4cblas, ROT0, "Voodoo Games","Cash Blast (Voodoo Games) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cblasa ,sc4cblas, sc4_4reel_alt, sc4cblas, sc4_state, sc4cblas, ROT0, "Voodoo Games","Cash Blast (Voodoo Games) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cblas ,0, sc4_4reel_alt, sc4cblas, sc4_state, sc4cblas, ROT0, "Voodoo Games","Cash Blast (Voodoo Games) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cblasa ,sc4cblas, sc4_4reel_alt, sc4cblas, sc4_state, sc4cblas, ROT0, "Voodoo Games","Cash Blast (Voodoo Games) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -33267,12 +33267,12 @@ INPUT_PORTS_START( sc4casxt ) // this structure is generated
INPUT_PORTS_END
// PR2338 XTRAVAGANZA XTRV SOUNDS XTRAVAGANZA
-GAMEL( 200?, sc4casxt ,0, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casxta ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casxtb ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casxtc ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casxtd ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casxte ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxt ,0, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxta ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxtb ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxtc ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxtd ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casxte ,sc4casxt, sc4_3reel_200_48, sc4casxt, sc4_state, sc4casxt, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4chavi)
@@ -33338,14 +33338,14 @@ INPUT_PORTS_START( sc4chavi ) // this structure is generated
INPUT_PORTS_END
// PR1731 AWP CHAV IT SCORP4 PR1711 CHAV IT SOUNDS11 CHAV IT S.SITE
-GAMEL( 200?, sc4chavi ,0, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavia ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavib ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavic ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavid ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavie ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavif ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavig ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavi ,0, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavia ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavib ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavic ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavid ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavie ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavif ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavig ,sc4chavi, sc4, sc4chavi, sc4_state, sc4chavi, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4chavy)
@@ -33402,14 +33402,14 @@ INPUT_PORTS_START( sc4chavy ) // this structure is generated
INPUT_PORTS_END
// PR2305 CHAVVY CHASE CHVY SOUNDS
-GAMEL( 200?, sc4chavy ,0, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavya ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavyb ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavyc ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavyd ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavye ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavyf ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chavyg ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavy ,0, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavya ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavyb ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavyc ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavyd ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavye ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavyf ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chavyg ,sc4chavy, sc4_5reel_alt, sc4chavy, sc4_state, sc4chavy, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cmani)
@@ -33489,8 +33489,8 @@ INPUT_PORTS_START( sc4cmani ) // this structure is generated
INPUT_PORTS_END
// PR1308 COLOUR MANIA PR1308 COLOUR MAN SOUNDS11
-GAMEL( 200?, sc4cmani ,0, sc4_200_4rb, sc4cmani, sc4_state, sc4cmani, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cmania ,sc4cmani, sc4_200_4rb, sc4cmani, sc4_state, sc4cmani, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmani ,0, sc4_200_4rb, sc4cmani, sc4_state, sc4cmani, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cmania ,sc4cmani, sc4_200_4rb, sc4cmani, sc4_state, sc4cmani, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ctl)
@@ -33562,12 +33562,12 @@ INPUT_PORTS_END
// PR1109 AWP COP THE LOT PR1109 CTLOT SOUNDS11
-GAMEL( 200?, sc4ctl ,0, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctla ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctlb ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctlc ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctld ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctle ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctl ,0, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctla ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlb ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlc ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctld ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctle ,sc4ctl, sc4_200_5r, sc4ctl, sc4_state, sc4ctl, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4crsc ) // this structure is generated
@@ -33634,14 +33634,14 @@ INPUT_PORTS_START( sc4crsc ) // this structure is generated
INPUT_PORTS_END
// PR3035 AWP COPS AND ROBBERS SAFE CRACKER S4 PR3005 SAFE CRACKER SOUNDS11 SAFE CRACKER S.SITE
-GAMEL( 200?, sc4crsc ,0, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crsca ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crscb ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crscc ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crscd ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crsce ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crscf ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crscg ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crsc ,0, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crsca ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crscb ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crscc ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crscd ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crsce ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crscf ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crscg ,sc4crsc, sc4, sc4crsc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4coro)
@@ -33701,14 +33701,14 @@ INPUT_PORTS_START( sc4coro ) // this structure is generated
INPUT_PORTS_END
// PR2252 CORONATION ST CORRY SOUNDS CORONATION ST
-GAMEL( 200?, sc4coro ,0, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4coroa ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corof ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corog ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4coroj ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corok ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corol ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corom ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4coro ,0, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4coroa ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corof ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corog ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4coroj ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corok ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corol ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corom ,sc4coro, sc4_4reel_alt, sc4coro, sc4_state, sc4coro, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4corod)
@@ -33826,16 +33826,16 @@ INPUT_PORTS_END
// PR2249 CORONATION ST Arcade Version 012 COROST_TRIPLE SOUNDS CORONATION ST
// PAY UINT ERR 17
-GAMEL( 200?, sc4coroc ,0, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4coroh ,sc4coroc, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4coroc ,0, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4coroh ,sc4coroc, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// P_2_4_ _O_O_A_I_N_S_ _i_g_ _e_s_o_ _1_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _O_O_T_T_I_L_ _O_N_S_ _ _ _ _ _ _ _C_R_N_T_O_ _S_ _ _ _
-GAMEL( 200?, sc4coron ,sc4coroc, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Bingo Version ?1) (PR2?4?) (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pair, was in 'show me the money' set 'Bingo Version' is a guess
+GAMEL( 200?, sc4coron ,sc4coroc, sc4, sc4coroc, sc4_state, sc4, ROT0, "Mazooma","Coronation Street Triple (Bingo Version ?1) (PR2?4?) (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pair, was in 'show me the money' set 'Bingo Version' is a guess
// PR2249 CORONATION STREET CORS MAZ COROST_TRIPLE SOUNDS
-GAMEL( 200?, sc4corod ,sc4coroc, sc4_4reel, sc4corod, sc4_state, sc4corod, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4coroi ,sc4coroc, sc4_4reel, sc4corod, sc4_state, sc4corod, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corod ,sc4coroc, sc4_4reel, sc4corod, sc4_state, sc4corod, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4coroi ,sc4coroc, sc4_4reel, sc4corod, sc4_state, sc4corod, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2526 CORONATION ST TOP BOX COROST_TRIPLE SOUNDS CORONATION ST
-GAMEL( 200?, sc4corotb ,sc4coroc, sc4_4reel_alt, sc4, sc4_state, sc4corotb, ROT0, "Mazooma","Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corotba ,sc4coroc, sc4_4reel_alt, sc4, sc4_state, sc4corotb, ROT0, "Mazooma","Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corotb ,sc4coroc, sc4_4reel_alt, sc4, sc4_state, sc4corotb, ROT0, "Mazooma","Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corotba ,sc4coroc, sc4_4reel_alt, sc4, sc4_state, sc4corotb, ROT0, "Mazooma","Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4corcl)
{
@@ -33905,8 +33905,8 @@ INPUT_PORTS_START( sc4corcl ) // this structure is generated
INPUT_PORTS_END
// PR2383 CLUBCORONATIONSTREET CLUBCORONATIONST CLUB CCORO SOUNDS CLUB CORO ST
-GAMEL( 200?, sc4corcl ,0, sc4_5reel, sc4corcl, sc4_state, sc4corcl, ROT0, "Mazooma","Coronation Street Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4corcla ,sc4corcl, sc4_5reel, sc4corcl, sc4_state, sc4corcl, ROT0, "Mazooma","Coronation Street Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corcl ,0, sc4_5reel, sc4corcl, sc4_state, sc4corcl, ROT0, "Mazooma","Coronation Street Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4corcla ,sc4corcl, sc4_5reel, sc4corcl, sc4_state, sc4corcl, ROT0, "Mazooma","Coronation Street Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4count)
@@ -33975,8 +33975,8 @@ INPUT_PORTS_START( sc4count ) // this structure is generated
INPUT_PORTS_END
// PR1929 AWP COUNTDOWN S4 PR1909 COUNTDOWN SOUNDS11 COUNTDOWN S.SITE
-GAMEL( 200?, sc4count ,0, sc4_200_5ra, sc4count, sc4_state, sc4count, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4counta ,sc4count, sc4_200_5ra, sc4count, sc4_state, sc4count, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4count ,0, sc4_200_5ra, sc4count, sc4_state, sc4count, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4counta ,sc4count, sc4_200_5ra, sc4count, sc4_state, sc4count, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -34065,22 +34065,22 @@ INPUT_PORTS_START( sc4dnd35 )
INPUT_PORTS_END
// PR1927 AWP DEAL OR NO DEAL S4 PR1907 DEAL OR NO DEAL SOUNDS11
-GAMEL( 200?, sc4dnd ,0, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 016
-GAMEL( 200?, sc4dndb ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 016
-GAMEL( 200?, sc4dnde ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 017
-GAMEL( 200?, sc4dndh ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 017
-GAMEL( 200?, sc4dndf ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 018
-GAMEL( 200?, sc4dndi ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 018
-GAMEL( 200?, sc4dndd ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 402
-GAMEL( 200?, sc4dndg ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 402
-GAMEL( 200?, sc4dndj ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 406
-GAMEL( 200?, sc4dndl ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 406
-GAMEL( 200?, sc4dndc ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 422
-GAMEL( 200?, sc4dnda ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 422, incomplete pairing
-GAMEL( 200?, sc4dndn ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 424
-GAMEL( 200?, sc4dndo ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 424
-GAMEL( 200?, sc4dndk ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 428
-GAMEL( 200?, sc4dndm ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 428
+GAMEL( 200?, sc4dnd ,0, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 016
+GAMEL( 200?, sc4dndb ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 016
+GAMEL( 200?, sc4dnde ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 017
+GAMEL( 200?, sc4dndh ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 017
+GAMEL( 200?, sc4dndf ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 018
+GAMEL( 200?, sc4dndi ,sc4dnd, sc4, sc4dnd25, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 018
+GAMEL( 200?, sc4dndd ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 402
+GAMEL( 200?, sc4dndg ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 402
+GAMEL( 200?, sc4dndj ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 406
+GAMEL( 200?, sc4dndl ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 406
+GAMEL( 200?, sc4dndc ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 422
+GAMEL( 200?, sc4dnda ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd ) // DONL 422, incomplete pairing
+GAMEL( 200?, sc4dndn ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 424
+GAMEL( 200?, sc4dndo ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 424
+GAMEL( 200?, sc4dndk ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 428
+GAMEL( 200?, sc4dndm ,sc4dnd, sc4, sc4dnd35, sc4_state, sc4dnd, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnd )// DONL 428
DRIVER_INIT_MEMBER(sc4_state,sc4dndcs)
@@ -34158,12 +34158,12 @@ INPUT_PORTS_START( sc4dndcs5 )
INPUT_PORTS_END
// PR1967 AWP CLASSIC DEAL OR NO DEAL S4 PR1907 DEAL OR NO DEAL SOUNDS11
-GAMEL( 200?, sc4dndcs ,0, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 211
-GAMEL( 200?, sc4dndcsb ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 211
-GAMEL( 200?, sc4dndcsa ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 212
-GAMEL( 200?, sc4dndcsc ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 212
-GAMEL( 200?, sc4dndcsd ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 215
-GAMEL( 200?, sc4dndcse ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 215
+GAMEL( 200?, sc4dndcs ,0, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 211
+GAMEL( 200?, sc4dndcsb ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 211
+GAMEL( 200?, sc4dndcsa ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 212
+GAMEL( 200?, sc4dndcsc ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 212
+GAMEL( 200?, sc4dndcsd ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 215
+GAMEL( 200?, sc4dndcse ,sc4dndcs, sc4, sc4dndcs5, sc4_state, sc4dndcs, ROT0, "BFM","Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CLDD 215
DRIVER_INIT_MEMBER(sc4_state,sc4dndbb)
@@ -34254,16 +34254,16 @@ INPUT_PORTS_END
// PR3229 AWP DEAL OR NO DEAL BREAK THE BANK SCORP4 PR3209 BREAK THE BANK SOUNDS11
-GAMEL( 200?, sc4dndbb ,0, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 471
-GAMEL( 200?, sc4dndbbb ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 471
-GAMEL( 200?, sc4dndbba ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 472
-GAMEL( 200?, sc4dndbbc ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 472
-GAMEL( 200?, sc4dndbbd ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 473
-GAMEL( 200?, sc4dndbbg ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 473
-GAMEL( 200?, sc4dndbbe ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 571
-GAMEL( 200?, sc4dndbbh ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 571
-GAMEL( 200?, sc4dndbbf ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 572
-GAMEL( 200?, sc4dndbbi ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// CRBE 572
+GAMEL( 200?, sc4dndbb ,0, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 471
+GAMEL( 200?, sc4dndbbb ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 471
+GAMEL( 200?, sc4dndbba ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 472
+GAMEL( 200?, sc4dndbbc ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 472
+GAMEL( 200?, sc4dndbbd ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 473
+GAMEL( 200?, sc4dndbbg ,sc4dndbb, sc4_5reel_alt, sc4dndbb35, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 473
+GAMEL( 200?, sc4dndbbe ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 571
+GAMEL( 200?, sc4dndbbh ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 571
+GAMEL( 200?, sc4dndbbf ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRBE 572
+GAMEL( 200?, sc4dndbbi ,sc4dndbb, sc4_5reel_alt, sc4dndbb70, sc4_state, sc4dndbb, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// CRBE 572
@@ -34347,14 +34347,14 @@ INPUT_PORTS_START( sc4dndcl500 )
INPUT_PORTS_END
// PR1949 CLUB DEAL OR NO DEAL DEAL OR NO DEAL CLUB PR1949 DEAL O N D SOUNDS11
-GAMEL( 200?, sc4dndclc ,sc4dndcl, sc4, sc4dndcl, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 181 CLUB $500 (no key req?)
-GAMEL( 200?, sc4dndclg ,sc4dndcl, sc4, sc4dndcl, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 181 CLUB $500 (no key req?)
-GAMEL( 200?, sc4dndcla ,sc4dndcl, sc4, sc4dndcl500, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 212 CLUB ?500
-GAMEL( 200?, sc4dndcle ,sc4dndcl, sc4, sc4dndcl500, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 212 CLUB ?500
-GAMEL( 200?, sc4dndcl ,0, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 313 CLUB ?250
-GAMEL( 200?, sc4dndcld ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 313 CLUB ?250
-GAMEL( 200?, sc4dndclb ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 391 CLUB ?250
-GAMEL( 200?, sc4dndclf ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 391 CLUB ?250
+GAMEL( 200?, sc4dndclc ,sc4dndcl, sc4, sc4dndcl, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 181 CLUB $500 (no key req?)
+GAMEL( 200?, sc4dndclg ,sc4dndcl, sc4, sc4dndcl, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 181 CLUB $500 (no key req?)
+GAMEL( 200?, sc4dndcla ,sc4dndcl, sc4, sc4dndcl500, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 212 CLUB ?500
+GAMEL( 200?, sc4dndcle ,sc4dndcl, sc4, sc4dndcl500, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 212 CLUB ?500
+GAMEL( 200?, sc4dndcl ,0, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 313 CLUB ?250
+GAMEL( 200?, sc4dndcld ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 313 CLUB ?250
+GAMEL( 200?, sc4dndclb ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 391 CLUB ?250
+GAMEL( 200?, sc4dndclf ,sc4dndcl, sc4, sc4dndcl250, sc4_state, sc4dndcl, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNDL 391 CLUB ?250
DRIVER_INIT_MEMBER(sc4_state,sc4dnddd)
@@ -34441,14 +34441,14 @@ INPUT_PORTS_END
// PR3235 AWP DEAL OR NO DEAL DOUBLE S4 PR3215 DOND DOUBLE SOUNDS11 DOUBLE DOND S.SITE
-GAMEL( 200?, sc4dnddd ,0, sc4_5reel_alt, sc4dnddd35, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 471
-GAMEL( 200?, sc4dndddd ,sc4dnddd, sc4_5reel_alt, sc4dnddd35, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 471
-GAMEL( 200?, sc4dnddda ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 571
-GAMEL( 200?, sc4dnddde ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 571
-GAMEL( 200?, sc4dndddb ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 572
-GAMEL( 200?, sc4dndddf ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 572
-GAMEL( 200?, sc4dndddc ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 573
-GAMEL( 200?, sc4dndddg ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 573
+GAMEL( 200?, sc4dnddd ,0, sc4_5reel_alt, sc4dnddd35, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 471
+GAMEL( 200?, sc4dndddd ,sc4dnddd, sc4_5reel_alt, sc4dnddd35, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 471
+GAMEL( 200?, sc4dnddda ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 571
+GAMEL( 200?, sc4dnddde ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 571
+GAMEL( 200?, sc4dndddb ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 572
+GAMEL( 200?, sc4dndddf ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 572
+GAMEL( 200?, sc4dndddc ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 573
+GAMEL( 200?, sc4dndddg ,sc4dnddd, sc4_5reel_alt, sc4dnddd70, sc4_state, sc4dnddd, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DDNO 573
@@ -34536,19 +34536,19 @@ INPUT_PORTS_START( sc4dndhf70 )
INPUT_PORTS_END
// PR3038 DEAL OR NO DEAL HALL OF FAME SCORP4 PR3008 HALL OF FAME SOUNDS11 HALL OF FAME S.SITE
-GAMEL( 200?, sc4dndhff ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 471
-GAMEL( 200?, sc4dndhfh ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 471
-GAMEL( 200?, sc4dndhfg ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 472
-GAMEL( 200?, sc4dndhfi ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 472
-GAMEL( 200?, sc4dndhf ,0, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 473
-GAMEL( 200?, sc4dndhfa ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 473
-GAMEL( 200?, sc4dndhfj ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA476)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 476
-GAMEL( 200?, sc4dndhfb ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 477
-GAMEL( 200?, sc4dndhfd ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 477
-GAMEL( 200?, sc4dndhfc ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 571
-GAMEL( 200?, sc4dndhfe ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 571
-GAMEL( 200?, sc4dndhfk ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 1, bad?)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // error 51 (bad rom?)
-GAMEL( 200?, sc4dndhfl ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 2, bad?)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // error 51 (bad rom?)
+GAMEL( 200?, sc4dndhff ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 471
+GAMEL( 200?, sc4dndhfh ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 471
+GAMEL( 200?, sc4dndhfg ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 472
+GAMEL( 200?, sc4dndhfi ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 472
+GAMEL( 200?, sc4dndhf ,0, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 473
+GAMEL( 200?, sc4dndhfa ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 473
+GAMEL( 200?, sc4dndhfj ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA476)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 476
+GAMEL( 200?, sc4dndhfb ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 477
+GAMEL( 200?, sc4dndhfd ,sc4dndhf, sc4_5reel_alt, sc4dndhf35, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 477
+GAMEL( 200?, sc4dndhfc ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 571
+GAMEL( 200?, sc4dndhfe ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DNHA 571
+GAMEL( 200?, sc4dndhfk ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 1, bad?)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // error 51 (bad rom?)
+GAMEL( 200?, sc4dndhfl ,sc4dndhf, sc4_5reel_alt, sc4dndhf70, sc4_state, sc4dndhf, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 2, bad?)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // error 51 (bad rom?)
DRIVER_INIT_MEMBER(sc4_state,sc4dndys)
{
@@ -34645,10 +34645,10 @@ INPUT_PORTS_END
// PR3227 AWP DEAL OR NO DEAL ITS YOUR SHOW SCORP4 PR3207 ITS YOUR SHOW SOUNDS11 ITS YOUR SHOW S.SITE
-GAMEL( 200?, sc4dndys ,0, sc4_200_5rc, sc4dndys70, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 571
-GAMEL( 200?, sc4dndysb ,sc4dndys, sc4_200_5rc, sc4dndys70, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 571
-GAMEL( 200?, sc4dndysa ,sc4dndys, sc4_200_5rc, sc4dndys35, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 474
-GAMEL( 200?, sc4dndysc ,sc4dndys, sc4_200_5rc, sc4dndys35, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 474
+GAMEL( 200?, sc4dndys ,0, sc4_200_5rc, sc4dndys70, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 571
+GAMEL( 200?, sc4dndysb ,sc4dndys, sc4_200_5rc, sc4dndys70, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 571
+GAMEL( 200?, sc4dndysa ,sc4dndys, sc4_200_5rc, sc4dndys35, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 474
+GAMEL( 200?, sc4dndysc ,sc4dndys, sc4_200_5rc, sc4dndys35, sc4_state, sc4dndys, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DOBO 474
DRIVER_INIT_MEMBER(sc4_state,sc4dndlp)
{
@@ -34737,12 +34737,12 @@ INPUT_PORTS_END
// PR3212 AWP DEAL OR NO DEAL LETS PLAY DEAL OR NO DEAL SCORP4 PR3212 LETS PLAY DOND SOUNDS11 LETS PLAY DOND S.SITE
-GAMEL( 200?, sc4dndlp ,0, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 571
-GAMEL( 200?, sc4dndlpc ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 571
-GAMEL( 200?, sc4dndlpa ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 572
-GAMEL( 200?, sc4dndlpd ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 572
-GAMEL( 200?, sc4dndlpb ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 573
-GAMEL( 200?, sc4dndlpe ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 573
+GAMEL( 200?, sc4dndlp ,0, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 571
+GAMEL( 200?, sc4dndlpc ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 571
+GAMEL( 200?, sc4dndlpa ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 572
+GAMEL( 200?, sc4dndlpd ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 572
+GAMEL( 200?, sc4dndlpb ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 573
+GAMEL( 200?, sc4dndlpe ,sc4dndlp, sc4_5reel, sc4dndlp70, sc4_state, sc4dndlp, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// LPDN 573
DRIVER_INIT_MEMBER(sc4_state,sc4dndra)
{
@@ -34830,12 +34830,12 @@ INPUT_PORTS_START( sc4dndra70 )
INPUT_PORTS_END
// PR3221 AWP DEAL OR NO DEAL RED ALERT SCORP4 PR3201 DOND RED ALERT SOUNDS11 RED ALERT S.SITE
-GAMEL( 200?, sc4dndra ,0, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 471
-GAMEL( 200?, sc4dndraa ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 471
-GAMEL( 200?, sc4dndrab ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 474
-GAMEL( 200?, sc4dndrad ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 474
-GAMEL( 200?, sc4dndrac ,sc4dndra, sc4_5reel_alt, sc4dndra70, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 572
-GAMEL( 200?, sc4dndrae ,sc4dndra, sc4_5reel_alt, sc4dndra70, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 572
+GAMEL( 200?, sc4dndra ,0, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 471
+GAMEL( 200?, sc4dndraa ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 471
+GAMEL( 200?, sc4dndrab ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 474
+GAMEL( 200?, sc4dndrad ,sc4dndra, sc4_5reel_alt, sc4dndra35, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 474
+GAMEL( 200?, sc4dndrac ,sc4dndra, sc4_5reel_alt, sc4dndra70, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 572
+GAMEL( 200?, sc4dndrae ,sc4dndra, sc4_5reel_alt, sc4dndra70, sc4_state, sc4dndra, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // REDT 572
DRIVER_INIT_MEMBER(sc4_state,sc4dndbd)
@@ -34926,12 +34926,12 @@ INPUT_PORTS_END
// PR3230 AWP DEAL OR NO DEAL THE BIG DEAL SCORP4 PR3210 THE BIG DEAL SOUNDS11 THE BIG DEAL S.SITE
-GAMEL( 200?, sc4dndbd ,0, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 471
-GAMEL( 200?, sc4dndbda ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 471
-GAMEL( 200?, sc4dndbdb ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 472
-GAMEL( 200?, sc4dndbdd ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 472
-GAMEL( 200?, sc4dndbdc ,sc4dndbd, sc4_5reel, sc4dndbd70, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 571
-GAMEL( 200?, sc4dndbde ,sc4dndbd, sc4_5reel, sc4dndbd70, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 571
+GAMEL( 200?, sc4dndbd ,0, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 471
+GAMEL( 200?, sc4dndbda ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 471
+GAMEL( 200?, sc4dndbdb ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 472
+GAMEL( 200?, sc4dndbdd ,sc4dndbd, sc4_5reel, sc4dndbd35, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 472
+GAMEL( 200?, sc4dndbdc ,sc4dndbd, sc4_5reel, sc4dndbd70, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 571
+GAMEL( 200?, sc4dndbde ,sc4dndbd, sc4_5reel, sc4dndbd70, sc4_state, sc4dndbd, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BGDA 571
DRIVER_INIT_MEMBER(sc4_state,sc4dndbr)
@@ -35019,14 +35019,14 @@ INPUT_PORTS_END
// PR3041 AWP DEAL OR NO DEAL THE BIG REDS S4 PR3011 THE BIG REDS SOUNDS11 THE BIG REDS S.SITE
-GAMEL( 200?, sc4dndbr ,0, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 471
-GAMEL( 200?, sc4dndbrb ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 471
-GAMEL( 200?, sc4dndbra ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 472
-GAMEL( 200?, sc4dndbrc ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 472
-GAMEL( 200?, sc4dndbrd ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 475
-GAMEL( 200?, sc4dndbrf ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 475
-GAMEL( 200?, sc4dndbre ,sc4dndbr, sc4_5reel_alt, sc4dndbr70, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 571
-GAMEL( 200?, sc4dndbrg ,sc4dndbr, sc4_5reel_alt, sc4dndbr70, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 571
+GAMEL( 200?, sc4dndbr ,0, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 471
+GAMEL( 200?, sc4dndbrb ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 471
+GAMEL( 200?, sc4dndbra ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 472
+GAMEL( 200?, sc4dndbrc ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 472
+GAMEL( 200?, sc4dndbrd ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 475
+GAMEL( 200?, sc4dndbrf ,sc4dndbr, sc4_5reel_alt, sc4dndbr35, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 475
+GAMEL( 200?, sc4dndbre ,sc4dndbr, sc4_5reel_alt, sc4dndbr70, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 571
+GAMEL( 200?, sc4dndbrg ,sc4dndbr, sc4_5reel_alt, sc4dndbr70, sc4_state, sc4dndbr, ROT0, "BFM","Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BIGD 571
DRIVER_INIT_MEMBER(sc4_state,sc4dndcc)
@@ -35117,13 +35117,13 @@ INPUT_PORTS_END
// PR3047 AWP DEAL OR NO DEAL THE CRAZY CHAIR SCORP4 PR3017 CRAZY CHAIR SOUNDS11 CRAZY CHAIR S.SITE
-GAMEL( 200?, sc4dndcc ,0, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 471
-GAMEL( 200?, sc4dndccb ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 471, incomplete pairing
-GAMEL( 200?, sc4dndcca ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR474)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 474
-GAMEL( 200?, sc4dndccc ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 475
-GAMEL( 200?, sc4dndcce ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 475
-GAMEL( 200?, sc4dndccd ,sc4dndcc, sc4_5reel, sc4dndcc70, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 571
-GAMEL( 200?, sc4dndccf ,sc4dndcc, sc4_5reel, sc4dndcc70, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 571
+GAMEL( 200?, sc4dndcc ,0, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 471
+GAMEL( 200?, sc4dndccb ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 471, incomplete pairing
+GAMEL( 200?, sc4dndcca ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR474)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 474
+GAMEL( 200?, sc4dndccc ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 475
+GAMEL( 200?, sc4dndcce ,sc4dndcc, sc4_5reel, sc4dndcc35, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 475
+GAMEL( 200?, sc4dndccd ,sc4dndcc, sc4_5reel, sc4dndcc70, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 571
+GAMEL( 200?, sc4dndccf ,sc4dndcc, sc4_5reel, sc4dndcc70, sc4_state, sc4dndcc, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CRZR 571
DRIVER_INIT_MEMBER(sc4_state,sc4dnddw)
{
@@ -35212,14 +35212,14 @@ INPUT_PORTS_START( sc4dnddw70 )
INPUT_PORTS_END
// PR3043 AWP THE DEAL WHEEL S4 PR3202 THE DEAL WHEEL SOUNDS11 THE DEAL WHEEL S.SITE
-GAMEL( 200?, sc4dnddw ,0, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 471
-GAMEL( 200?, sc4dnddwb ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 471
-GAMEL( 200?, sc4dnddwa ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 473
-GAMEL( 200?, sc4dnddwc ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 473
-GAMEL( 200?, sc4dnddwd ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 475
-GAMEL( 200?, sc4dnddwf ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 475
-GAMEL( 200?, sc4dnddwe ,sc4dnddw, sc4_200_5ra, sc4dnddw70, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 572
-GAMEL( 200?, sc4dnddwg ,sc4dnddw, sc4_200_5ra, sc4dnddw70, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 572
+GAMEL( 200?, sc4dnddw ,0, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 471
+GAMEL( 200?, sc4dnddwb ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 471
+GAMEL( 200?, sc4dnddwa ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 473
+GAMEL( 200?, sc4dnddwc ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 473
+GAMEL( 200?, sc4dnddwd ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 475
+GAMEL( 200?, sc4dnddwf ,sc4dnddw, sc4_200_5ra, sc4dnddw35, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 475
+GAMEL( 200?, sc4dnddwe ,sc4dnddw, sc4_200_5ra, sc4dnddw70, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 572
+GAMEL( 200?, sc4dnddwg ,sc4dnddw, sc4_200_5ra, sc4dnddw70, sc4_state, sc4dnddw, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dnddw ) // DOFN 572
DRIVER_INIT_MEMBER(sc4_state,sc4dnddf)
{
@@ -35305,12 +35305,12 @@ INPUT_PORTS_START( sc4dnddf70 )
INPUT_PORTS_END
// PR3044 AWP DEAL OR NO DEAL THE DREAM FACTORY SCORP4 PR3014 DREAM FACTORY SOUNDS11 DREAM FACTORY S.SITE
-GAMEL( 200?, sc4dnddf ,0, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 471
-GAMEL( 200?, sc4dnddfa ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 471, incomplete pairing
-GAMEL( 200?, sc4dnddfb ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 475
-GAMEL( 200?, sc4dnddfd ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 475
-GAMEL( 200?, sc4dnddfc ,sc4dnddf, sc4_200_alt, sc4dnddf70, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 571
-GAMEL( 200?, sc4dnddfe ,sc4dnddf, sc4_200_alt, sc4dnddf70, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 571
+GAMEL( 200?, sc4dnddf ,0, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 471
+GAMEL( 200?, sc4dnddfa ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 471, incomplete pairing
+GAMEL( 200?, sc4dnddfb ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 475
+GAMEL( 200?, sc4dnddfd ,sc4dnddf, sc4_200_alt, sc4dnddf35, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 475
+GAMEL( 200?, sc4dnddfc ,sc4dnddf, sc4_200_alt, sc4dnddf70, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 571
+GAMEL( 200?, sc4dnddfe ,sc4dnddf, sc4_200_alt, sc4dnddf70, sc4_state, sc4dnddf, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TDFC 571
DRIVER_INIT_MEMBER(sc4_state,sc4dndpg)
@@ -35401,12 +35401,12 @@ INPUT_PORTS_END
// PR3240 AWP DEAL OR NO DEAL THE PERFECT GAME SCORP4 PR3220 DOND PERFECT SOUNDS11 THE PERFECT GAME S.SITE
-GAMEL( 200?, sc4dndpg ,0, sc4_5reel, sc4dndpg35, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 471
-GAMEL( 200?, sc4dndpgc ,sc4dndpg, sc4_5reel, sc4dndpg35, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPBG 471
-GAMEL( 200?, sc4dndpga ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 571
-GAMEL( 200?, sc4dndpgd ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 571
-GAMEL( 200?, sc4dndpgb ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG572, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 572
-GAMEL( 200?, sc4dndpge ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB572, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 572
+GAMEL( 200?, sc4dndpg ,0, sc4_5reel, sc4dndpg35, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 471
+GAMEL( 200?, sc4dndpgc ,sc4dndpg, sc4_5reel, sc4dndpg35, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPBG 471
+GAMEL( 200?, sc4dndpga ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 571
+GAMEL( 200?, sc4dndpgd ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 571
+GAMEL( 200?, sc4dndpgb ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG572, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 572
+GAMEL( 200?, sc4dndpge ,sc4dndpg, sc4_5reel, sc4dndpg70, sc4_state, sc4dndpg, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB572, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TPGB 572
DRIVER_INIT_MEMBER(sc4_state,sc4dndtp)
@@ -35483,20 +35483,20 @@ INPUT_PORTS_START( sc4dndtp35 )
INPUT_PORTS_END
// PR3033 AWP DOND THE POWER 5 SCORP4 PR3033 POWER FIVE SOUNDS11 DOND THE POWER 5 S.SITE
-GAMEL( 200?, sc4dndtp ,0, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 411
-GAMEL( 200?, sc4dndtpe ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 411
-GAMEL( 200?, sc4dndtpa ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 412
-GAMEL( 200?, sc4dndtpf ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 412
-GAMEL( 200?, sc4dndtpb ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 413
-GAMEL( 200?, sc4dndtpg ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 413
-GAMEL( 200?, sc4dndtpc ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 1, bad)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 414 EEPROM error (bad rom?) (botched release?)
-GAMEL( 200?, sc4dndtph ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 2, bad)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 414 EEPROM error (bad rom?) (botched release?)
-GAMEL( 200?, sc4dndtpd ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 415
-GAMEL( 200?, sc4dndtpi ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 415
-GAMEL( 200?, sc4dndtpl ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 416
-GAMEL( 200?, sc4dndtpm ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 416
-GAMEL( 200?, sc4dndtpj ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 41A
-GAMEL( 200?, sc4dndtpk ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 41A
+GAMEL( 200?, sc4dndtp ,0, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 411
+GAMEL( 200?, sc4dndtpe ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 411
+GAMEL( 200?, sc4dndtpa ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 412
+GAMEL( 200?, sc4dndtpf ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 412
+GAMEL( 200?, sc4dndtpb ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 413
+GAMEL( 200?, sc4dndtpg ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 413
+GAMEL( 200?, sc4dndtpc ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 1, bad)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 414 EEPROM error (bad rom?) (botched release?)
+GAMEL( 200?, sc4dndtph ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 2, bad)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 414 EEPROM error (bad rom?) (botched release?)
+GAMEL( 200?, sc4dndtpd ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp ) // TPRV 415
+GAMEL( 200?, sc4dndtpi ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 415
+GAMEL( 200?, sc4dndtpl ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 416
+GAMEL( 200?, sc4dndtpm ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 416
+GAMEL( 200?, sc4dndtpj ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 41A
+GAMEL( 200?, sc4dndtpk ,sc4dndtp, sc4_5reel, sc4dndtp35, sc4_state, sc4dndtp, ROT0, "BFM","Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4dndtp )// TPRV 41A
@@ -35584,12 +35584,12 @@ INPUT_PORTS_END
// PR3006 AWP DEAL OR NO DEAL THE WALK OF WEALTH SCORP4 PR3006 WALK OF WEALTH SOUNDS11 WALK OF WEALTH S.SITE
-GAMEL( 200?, sc4dndww ,0, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 411
-GAMEL( 200?, sc4dndwwb ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 411
-GAMEL( 200?, sc4dndwwa ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 412
-GAMEL( 200?, sc4dndwwe ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 412
-GAMEL( 200?, sc4dndwwc ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 415
-GAMEL( 200?, sc4dndwwd ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 415
+GAMEL( 200?, sc4dndww ,0, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 411
+GAMEL( 200?, sc4dndwwb ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 411
+GAMEL( 200?, sc4dndwwa ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 412
+GAMEL( 200?, sc4dndwwe ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 412
+GAMEL( 200?, sc4dndwwc ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 415
+GAMEL( 200?, sc4dndwwd ,sc4dndww, sc4, sc4dndww35, sc4_state, sc4dndww, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // TWOH 415
DRIVER_INIT_MEMBER(sc4_state,sc4dndcw)
{
@@ -35674,10 +35674,10 @@ INPUT_PORTS_END
// PR3027 AWP CLASSIC DEAL OR NO DEAL THE WALK OF WEALTH SCORP4 PR3006 WALK OF WEALTH SOUNDS11 WALK OF WEALTH S.SITE
-GAMEL( 200?, sc4dndcw ,0, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 271
-GAMEL( 200?, sc4dndcwb ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 271
-GAMEL( 200?, sc4dndcwa ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 272
-GAMEL( 200?, sc4dndcwc ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 272
+GAMEL( 200?, sc4dndcw ,0, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 271
+GAMEL( 200?, sc4dndcwb ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 271
+GAMEL( 200?, sc4dndcwa ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 272
+GAMEL( 200?, sc4dndcwc ,sc4dndcw, sc4, sc4dndcw5, sc4_state, sc4dndcw, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // CWOH 272
DRIVER_INIT_MEMBER(sc4_state,sc4dndtr)
@@ -35758,8 +35758,8 @@ INPUT_PORTS_END
// PR3329 DOND THINK RED S4 PR3304 THINK RED SOUNDS11 THINK RED S.SITE
-GAMEL( 200?, sc4dndtr ,0, sc4_5reel_alt, sc4dndtr70, sc4_state, sc4dndtr, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // THRE 571
-GAMEL( 200?, sc4dndtra ,sc4dndtr, sc4_5reel_alt, sc4dndtr70, sc4_state, sc4dndtr, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // THRE 571
+GAMEL( 200?, sc4dndtr ,0, sc4_5reel_alt, sc4dndtr70, sc4_state, sc4dndtr, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // THRE 571
+GAMEL( 200?, sc4dndtra ,sc4dndtr, sc4_5reel_alt, sc4dndtr70, sc4_state, sc4dndtr, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // THRE 571
DRIVER_INIT_MEMBER(sc4_state,sc4dndwb)
{
@@ -35844,14 +35844,14 @@ INPUT_PORTS_START( sc4dndwb35 )
INPUT_PORTS_END
// PR1982 AWP DEAL OR NO DEAL WHATS IN YOUR BOX SCORP4 PR1962 WHATS IN Y BOX SOUNDS11 WHATS IN YOUR BX S.SITE
-GAMEL( 200?, sc4dndwb ,0, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 412
-GAMEL( 200?, sc4dndwbb ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 412
-GAMEL( 200?, sc4dndwba ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 414
-GAMEL( 200?, sc4dndwbc ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 414
-GAMEL( 200?, sc4dndwbd ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 415
-GAMEL( 200?, sc4dndwbe ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 415
-GAMEL( 200?, sc4dndwbf ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 419
-GAMEL( 200?, sc4dndwbg ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 419
+GAMEL( 200?, sc4dndwb ,0, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 412
+GAMEL( 200?, sc4dndwbb ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 412
+GAMEL( 200?, sc4dndwba ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 414
+GAMEL( 200?, sc4dndwbc ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 414
+GAMEL( 200?, sc4dndwbd ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 415
+GAMEL( 200?, sc4dndwbe ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 415
+GAMEL( 200?, sc4dndwbf ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 419
+GAMEL( 200?, sc4dndwbg ,sc4dndwb, sc4_200_5ra, sc4dndwb35, sc4_state, sc4dndwb, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // WIYX 419
DRIVER_INIT_MEMBER(sc4_state,sc4dndbe)
{
@@ -35936,20 +35936,20 @@ INPUT_PORTS_START( sc4dndbe35 )
INPUT_PORTS_END
// PR1935 AWP DEAL OR NO DEAL BEAT THE BANKER S4 PR1915 BEAT THE BANKER SOUNDS11 BEAT THE BANKER S.SITE
-GAMEL( 200?, sc4dndbe ,0, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 012
-GAMEL( 200?, sc4dndbec ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 012
-GAMEL( 200?, sc4dndbeg ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 013
-GAMEL( 200?, sc4dndbek ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 013
-GAMEL( 200?, sc4dndbeh ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 014
-GAMEL( 200?, sc4dndbel ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 014
-GAMEL( 200?, sc4dndbeb ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 422
-GAMEL( 200?, sc4dndbed ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 422
-GAMEL( 200?, sc4dndbee ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 423
-GAMEL( 200?, sc4dndbei ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 423
-GAMEL( 200?, sc4dndbef ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 425
-GAMEL( 200?, sc4dndbej ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 425
-GAMEL( 200?, sc4dndbem ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 426
-GAMEL( 200?, sc4dndben ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 426
+GAMEL( 200?, sc4dndbe ,0, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 012
+GAMEL( 200?, sc4dndbec ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 012
+GAMEL( 200?, sc4dndbeg ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 013
+GAMEL( 200?, sc4dndbek ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 013
+GAMEL( 200?, sc4dndbeh ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 014
+GAMEL( 200?, sc4dndbel ,sc4dndbe, sc4_5reel_alt, sc4dndbe25, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 014
+GAMEL( 200?, sc4dndbeb ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 422
+GAMEL( 200?, sc4dndbed ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 422
+GAMEL( 200?, sc4dndbee ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 423
+GAMEL( 200?, sc4dndbei ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 423
+GAMEL( 200?, sc4dndbef ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 425
+GAMEL( 200?, sc4dndbej ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 425
+GAMEL( 200?, sc4dndbem ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 426
+GAMEL( 200?, sc4dndben ,sc4dndbe, sc4_5reel_alt, sc4dndbe35, sc4_state, sc4dndbe, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // DBTK 426
DRIVER_INIT_MEMBER(sc4_state,sc4dndbc)
@@ -36034,8 +36034,8 @@ INPUT_PORTS_END
// PR3337 AWP DEAL OR NO DEAL BOX CLEVER SCORP4 PR3312 DOND BOXCLEVER SOUNDS11 BOX CLEVER S.SITE
-GAMEL( 200?, sc4dndbc ,0, sc4_5reel, sc4dndbc70, sc4_state, sc4dndbc, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BOXR 571
-GAMEL( 200?, sc4dndbca ,sc4dndbc, sc4_5reel, sc4dndbc70, sc4_state, sc4dndbc, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BOXR 571
+GAMEL( 200?, sc4dndbc ,0, sc4_5reel, sc4dndbc70, sc4_state, sc4dndbc, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BOXR 571
+GAMEL( 200?, sc4dndbca ,sc4dndbc, sc4_5reel, sc4dndbc70, sc4_state, sc4dndbc, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // BOXR 571
DRIVER_INIT_MEMBER(sc4_state,sc4dmine)
@@ -36106,12 +36106,12 @@ INPUT_PORTS_START( sc4dmine ) // this structure is generated
INPUT_PORTS_END
// PR1307 AWP DIAMOND MINE PR1307 DIAM MINE SOUNDS11
-GAMEL( 200?, sc4dmine ,0, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dminea ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dmineb ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dminec ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dmined ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dminee ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dmine ,0, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dminea ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dmineb ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dminec ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dmined ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dminee ,sc4dmine, sc4_5reel, sc4dmine, sc4_state, sc4dmine, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -36191,23 +36191,23 @@ INPUT_PORTS_END
// saw a crash on exit with this game, why?
// PR1309 AWP DOCTOR DOSH PR1309 DOCTOR DOSH SOUNDS11
-GAMEL( 200?, sc4ddosh ,0, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddosha ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshb ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshc ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshd ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshe ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshl ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshm ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshn ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddosho ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddosh ,0, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddosha ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshb ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshc ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshd ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshe ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshl ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshm ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshn ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddosho ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1309 AWP DOCTOR DOSH PR1309 DOCTOR DOSH SOUNDS11 DOCTOR DOSH S.SITE
-GAMEL( 200?, sc4ddoshf ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshg ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshh ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshi ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshj ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ddoshk ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshf ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshg ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshh ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshi ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshj ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ddoshk ,sc4ddosh, sc4_200_4r, sc4ddosh, sc4_state, sc4ddosh_mbus, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4dhh ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -36277,12 +36277,12 @@ INPUT_PORTS_END
// board positions & steppa feature don't light anything, investigate (might only be a problem in demo mode?)
// PR1736 AWP DOUGH HO HO S4 PR1716 DOUGH HO HO SOUNDS11 DOUGH HO HO S.SITE
-GAMEL( 200?, sc4dhh ,0, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dhha ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dhhb ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dhhc ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dhhd ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dhhe ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhh ,0, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhha ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhhb ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhhc ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhhd ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dhhe ,sc4dhh, sc4, sc4dhh, sc4_state, sc4mbus, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4dough)
{
@@ -36353,8 +36353,8 @@ INPUT_PORTS_START( sc4dough ) // this structure is generated
INPUT_PORTS_END
// PR1615 AWP DOUGH SELECTA SCORP4 PR1615 DOUGH SELECTA SOUNDS11 DOUGH SELECTA S.SITE
-GAMEL( 200?, sc4dough ,0, sc4_4reel_alt, sc4dough, sc4_state, sc4dough, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dougha ,sc4dough, sc4_4reel_alt, sc4dough, sc4_state, sc4dough, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dough ,0, sc4_4reel_alt, sc4dough, sc4_state, sc4dough, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dougha ,sc4dough, sc4_4reel_alt, sc4dough, sc4_state, sc4dough, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4emmer)
@@ -36424,10 +36424,10 @@ INPUT_PORTS_START( sc4emmer ) // this structure is generated
INPUT_PORTS_END
// PR2313 EMMERDALE EMMR SOUNDS EMMERDALE
-GAMEL( 200?, sc4emmer ,0, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4emmera ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4emmerb ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4emmerc ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4emmer ,0, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4emmera ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4emmerb ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4emmerc ,sc4emmer, sc4_4reel_alt, sc4emmer, sc4_state, sc4emmer, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4evol)
{
@@ -36479,14 +36479,14 @@ INPUT_PORTS_START( sc4evol ) // this structure is generated
INPUT_PORTS_END
// PR2135 EVOLUTION EVOL SOUNDS EVOLUTION
-GAMEL( 200?, sc4evol ,0, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evola ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evolb ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evolc ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evold ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evole ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evolf ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4evolg ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4evol ,0, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4evola ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4evolb ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4evolc ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4evold ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4evole ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4evolf ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4evolg ,sc4evol, sc4_4reel_alt, sc4evol, sc4_state, sc4evol, ROT0, "Qps","Evolution (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fguy)
{
@@ -36572,12 +36572,12 @@ INPUT_PORTS_START( sc4fguy70 )
INPUT_PORTS_END
// PR3233 AWP FAMILY GUY S4 PR3213 FAMILY GUY SOUNDS11 FAMILY GUY S.SITE
-GAMEL( 200?, sc4fguy ,0, sc4_5reel_alt, sc4fguy35, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 471
-GAMEL( 200?, sc4fguyb ,sc4fguy, sc4_5reel_alt, sc4fguy35, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 471
-GAMEL( 200?, sc4fguya ,sc4fguy, sc4_5reel_alt, sc4fguy70, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 572
-GAMEL( 200?, sc4fguyc ,sc4fguy, sc4_5reel_alt, sc4fguy70, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 572
-GAMEL( 200?, sc4fguyd ,sc4fguy, sc4_5reel_alt, sc4fguy, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fguye ,sc4fguy, sc4_5reel_alt, sc4fguy, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fguy ,0, sc4_5reel_alt, sc4fguy35, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 471
+GAMEL( 200?, sc4fguyb ,sc4fguy, sc4_5reel_alt, sc4fguy35, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 471
+GAMEL( 200?, sc4fguya ,sc4fguy, sc4_5reel_alt, sc4fguy70, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 572
+GAMEL( 200?, sc4fguyc ,sc4fguy, sc4_5reel_alt, sc4fguy70, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // FAMY 572
+GAMEL( 200?, sc4fguyd ,sc4fguy, sc4_5reel_alt, sc4fguy, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fguye ,sc4fguy, sc4_5reel_alt, sc4fguy, sc4_state, sc4fguy, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fbspn)
{
@@ -36643,10 +36643,10 @@ INPUT_PORTS_START( sc4fbspn ) // this structure is generated
INPUT_PORTS_END
// PR1721 AWP FAT BOY SPIN SCORP4 PR1701 FAT BOY SPIN SOUNDS11 FAT BOY SPIN S.SITE
-GAMEL( 200?, sc4fbspn ,0, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbspna ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbspnb ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbspnc ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbspn ,0, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbspna ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbspnb ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbspnc ,sc4fbspn, sc4_5reel, sc4fbspn, sc4_state, sc4fbspn, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -36716,10 +36716,10 @@ INPUT_PORTS_START( sc4fmj ) // this structure is generated
INPUT_PORTS_END
// PR2328 FULL METAL JACKPOT FULLM SOUNDS F METAL JACKPOT
-GAMEL( 200?, sc4fmj ,0, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fmja ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fmjb ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fmjc ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fmj ,0, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fmja ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fmjb ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fmjc ,sc4fmj, sc4_4reel_alt, sc4fmj, sc4_state, sc4fmj, ROT0, "QPS / Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -36791,14 +36791,14 @@ INPUT_PORTS_START( sc4gd ) // this structure is generated
INPUT_PORTS_END
// PR1016 GOLD DIGGER PR1016 GOLD DIGGER SOUNDS11
-GAMEL( 200?, sc4gd ,0, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gda ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdb ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdc ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdd ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gde ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdf ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdg ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gd ,0, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gda ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdb ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdc ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdd ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gde ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdf ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdg ,sc4gd, sc4_200_4r, sc4gd, sc4_state, sc4gd, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4gdclb)
{
@@ -36861,18 +36861,18 @@ INPUT_PORTS_START( sc4gdclb ) // this structure is generated
INPUT_PORTS_END
// PR1137 CLUB GOLD DIGGER PR1137 GOLDD CL SOUNDS11
-GAMEL( 200?, sc4gdclb ,0, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclba ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbb ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbc ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbd ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbe ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbf ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbg ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbh ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbi ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbj ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gdclbk ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclb ,0, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclba ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbb ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbc ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbd ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbe ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbf ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbg ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbh ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbi ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbj ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gdclbk ,sc4gdclb, sc4_200_std, sc4gdclb, sc4_state, sc4gdclb, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4gball)
@@ -36941,10 +36941,10 @@ INPUT_PORTS_END
// this is a football themed game... completely different to golden balls casino
// PR1604 AWP GOLDEN BALLS PR1604 GOLDEN BALLS SOUNDS12 GOLDEN BALLS S.SITE
-GAMEL( 200?, sc4gball ,0, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gballa ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gballb ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gballc ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gball ,0, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gballa ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gballb ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gballc ,sc4gball, sc4_4reel_alt, sc4gball, sc4_state, sc4gball, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4gunp)
@@ -37017,14 +37017,14 @@ INPUT_PORTS_START( sc4gunp ) // this structure is generated
INPUT_PORTS_END
// PR3046 AWP THE GUNPOWDER SLOT S4 PR3016 GUNPOWDER SLOT SOUNDS11 GUNPOWDER SLOT S.SITE
-GAMEL( 200?, sc4gunp ,0, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpa ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpb ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpc ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpd ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpe ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpf ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gunpg ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunp ,0, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpa ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpb ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpc ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpd ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpe ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpf ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gunpg ,sc4gunp, sc4_5reel_alt, sc4gunp, sc4_state, sc4gunp, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hapnt)
{
@@ -37088,12 +37088,12 @@ INPUT_PORTS_START( sc4hapnt ) // this structure is generated
INPUT_PORTS_END
// PR1306 AWP HAPPY NOTES PR1306 HAPPY NOTES SOUNDS11
-GAMEL( 200?, sc4hapnt ,0, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hapnta ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hapntb ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hapntc ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hapntd ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hapnte ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapnt ,0, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapnta ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapntb ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapntc ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapntd ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hapnte ,sc4hapnt, sc4_4reel_alt, sc4hapnt, sc4_state, sc4hapnt, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4hellb ) // this structure is generated
@@ -37156,18 +37156,18 @@ INPUT_PORTS_START( sc4hellb ) // this structure is generated
INPUT_PORTS_END
// PR1419 AWP HELLS BELLS PR1402 HELLS BELLS SOUNDS11
-GAMEL( 200?, sc4hellb ,0, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbb ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbc ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbd ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbe ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbf ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellb ,0, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbb ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbc ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbd ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbe ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbf ,sc4hellb, sc4, sc4hellb, sc4_state, sc4, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PAY UINT ERR 17
// PR1419 AWP HELLS BELLS PR1402 HELLS BELLS SOUNDS11 HELLS BELLS S.SITE
-GAMEL( 200?, sc4hellbg ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbh ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbi ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hellbj ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbg ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbh ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbi ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hellbj ,sc4hellb, sc4, sc4hellb, sc4_state, sc4mbus, ROT0, "BFM","Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// seem to be issues with reel 4
DRIVER_INIT_MEMBER(sc4_state,sc4hill)
@@ -37244,8 +37244,8 @@ INPUT_PORTS_START( sc4hill ) // this structure is generated
INPUT_PORTS_END
// PR1643 AWP HILLBILLIONAIRE SCORP4 PR1613 HILLBILLIONAIRE SOUNDS11 HILLBILLIONAIRE S.SITE
-GAMEL( 200?, sc4hill ,0, sc4, sc4hill, sc4_state, sc4hill, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hilla ,sc4hill, sc4, sc4hill, sc4_state, sc4hill, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hill ,0, sc4, sc4hill, sc4_state, sc4hill, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hilla ,sc4hill, sc4, sc4hill, sc4_state, sc4hill, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -37307,14 +37307,14 @@ INPUT_PORTS_START( sc4hiss ) // this structure is generated
INPUT_PORTS_END
// PR2176 HISSING QUID VIPA SOUNDS HISSING QUID
-GAMEL( 200?, sc4hiss ,0, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissa ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissb ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissc ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissd ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hisse ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissf ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hissg ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hiss ,0, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissa ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissb ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissc ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissd ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hisse ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissf ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hissg ,sc4hiss, sc4_200_4r, sc4hiss, sc4_state, sc4hiss, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -37389,8 +37389,8 @@ INPUT_PORTS_START( sc4hotrd ) // this structure is generated
INPUT_PORTS_END
// PR1733 AWP HOT ROD SCORP4 PR1713 HOT ROD SOUNDS11 HOT ROD S.SITE
-GAMEL( 200?, sc4hotrd ,0, sc4_4reel, sc4hotrd, sc4_state, sc4hotrd, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotrda ,sc4hotrd, sc4_4reel, sc4hotrd, sc4_state, sc4hotrd, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotrd ,0, sc4_4reel, sc4hotrd, sc4_state, sc4hotrd, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotrda ,sc4hotrd, sc4_4reel, sc4hotrd, sc4_state, sc4hotrd, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hotsh)
@@ -37467,8 +37467,8 @@ INPUT_PORTS_START( sc4hotsh ) // this structure is generated
INPUT_PORTS_END
// PR3231 AWP HOT SHOT SCORP4 PR3211 HOT SHOT SOUNDS11 HOT SHOT S.SITE
-GAMEL( 200?, sc4hotsh ,0, sc4, sc4hotsh, sc4_state, sc4hotsh, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotsha ,sc4hotsh, sc4, sc4hotsh, sc4_state, sc4hotsh, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotsh ,0, sc4, sc4hotsh, sc4_state, sc4hotsh, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotsha ,sc4hotsh, sc4, sc4hotsh, sc4_state, sc4hotsh, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hotwd)
@@ -37538,14 +37538,14 @@ INPUT_PORTS_START( sc4hotwd ) // this structure is generated
INPUT_PORTS_END
// PR1311 HOT WAD PR1311 HOT WAD SOUNDS11
-GAMEL( 200?, sc4hotwd ,0, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotwda ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwd ,0, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwda ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PAY UNIT ERR 17
// PR1311 HOT WAD PR1311 HOT WAD SOUNDS11 2 HOT WAD S.SITE
-GAMEL( 200?, sc4hotwdb ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotwdc ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotwdd ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotwde ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwdb ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwdc ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwdd ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotwde ,sc4hotwd, sc4_4reel_alt, sc4hotwd, sc4_state, sc4hotwd, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4celeb)
@@ -37615,11 +37615,11 @@ INPUT_PORTS_START( sc4celeb ) // this structure is generated
INPUT_PORTS_END
// PR1603 AWP IM A CELEBRITY PR1603 IM A CELEB SOUNDS11 IM A CELEBRITY S.SITE
-GAMEL( 200?, sc4celeb ,0, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4celeba ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4celebb ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4celebc ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4celebd ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4celeb ,0, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4celeba ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4celebb ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4celebc ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4celebd ,sc4celeb, sc4_4reel_alt, sc4celeb, sc4_state, sc4celeb, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4inspn)
@@ -37672,8 +37672,8 @@ INPUT_PORTS_START( sc4inspn ) // this structure is generated
INPUT_PORTS_END
// PR2555 INNER SPIN V013 INNERSPINSND INNER SPIN
-GAMEL( 200?, sc4inspn ,0, sc4_200_5ra, sc4inspn, sc4_state, sc4inspn, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4inspna ,sc4inspn, sc4_200_5ra, sc4inspn, sc4_state, sc4inspn, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4inspn ,0, sc4_200_5ra, sc4inspn, sc4_state, sc4inspn, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4inspna ,sc4inspn, sc4_200_5ra, sc4inspn, sc4_state, sc4inspn, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -37747,20 +37747,20 @@ INPUT_PORTS_END
// PR2366 AWP THE ITALIAN JOB S4 PR2366 THE ITALIAN JOB SOUNDS11 ITALIAN JOB S.SITE
-GAMEL( 200?, sc4ijob ,0, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijoba ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobb ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobc ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobd ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobe ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobf ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobg ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobh ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobi ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobj ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobk ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobl ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ijobm ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijob ,0, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijoba ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobb ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobc ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobd ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobe ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobf ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobg ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobh ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobi ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobj ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobk ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobl ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ijobm ,sc4ijob, sc4_5reel_alt, sc4ijob, sc4_state, sc4ijob, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ldvl)
@@ -37831,10 +37831,10 @@ INPUT_PORTS_START( sc4ldvl ) // this structure is generated
INPUT_PORTS_END
// PR2376 LITTLE DEVIL LDEVIL SOUNDS LITTLE DEVIL
-GAMEL( 200?, sc4ldvl ,0, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldvla ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldvlb ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldvlc ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldvl ,0, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldvla ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldvlb ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldvlc ,sc4ldvl, sc4_4reel_alt, sc4ldvl, sc4_state, sc4ldvl, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -37903,13 +37903,13 @@ INPUT_PORTS_START( sc4lotrr ) // this structure is generated
INPUT_PORTS_END
// PR1427 AWP RETURN OF THE KING PR1413 RETURN OF THE SOUNDS11 RETURN OF KING S.SITE
-GAMEL( 200?, sc4lotrr ,0, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrra ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrrb ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrrc ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrr ,0, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrra ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrrb ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrrc ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PAY UNIT ERR 17
-GAMEL( 200?, sc4lotrrd ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lotrre ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrrd ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lotrre ,sc4lotrr, sc4_4reel_alt, sc4lotrr, sc4_state, sc4lotrr, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4manic)
{
@@ -37979,14 +37979,14 @@ INPUT_PORTS_START( sc4manic ) // this structure is generated
INPUT_PORTS_END
// PR3034 AWP MANIC MINER SCORP4 PR3004 MANIC MINER SOUNDS11 MANIC MINER S.SITE
-GAMEL( 200?, sc4manic ,0, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manica ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manicb ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manicc ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manicd ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manice ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manicf ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4manicg ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4manic ,0, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4manica ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4manicb ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4manicc ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4manicd ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4manice ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4manicf ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4manicg ,sc4manic, sc4_200_5ra, sc4manic, sc4_state, sc4manic, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mmm)
{
@@ -38057,14 +38057,14 @@ INPUT_PORTS_END
// PR2282 MENTALMONEYMONSTERS MMMO SOUNDS MONEY MONSTERS
-GAMEL( 200?, sc4mmm ,0, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmma ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmmb ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmmc ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmmd ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmme ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmmf ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmmg ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmm ,0, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmma ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmmb ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmmc ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmmd ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmme ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmmf ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmmg ,sc4mmm, sc4_4reel_alt, sc4mmm, sc4_state, sc4mmm, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mmad)
{
@@ -38127,15 +38127,15 @@ INPUT_PORTS_START( sc4mmad ) // this structure is generated
INPUT_PORTS_END
// PR2533 MONEY MADNESS MONM SOUNDS MONEY MADNESS
-GAMEL( 200?, sc4mmad ,0, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmada ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmadb ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmadc ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmad ,0, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmada ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmadb ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmadc ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR0000 MONEY MADNESS MONM SOUNDS MONEY MADNESS (did Mazooma mess up this release? it has an invalid project code of PR0000, and 3 of the sets are missing their other half)
-GAMEL( 200?, sc4mmadd ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmade ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4mmadf ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4mmadg ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4mmadd ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmade ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4mmadf ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4mmadg ,sc4mmad, sc4_200_5rc, sc4mmad, sc4_state, sc4mmad, ROT0, "Mazooma","Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
@@ -38209,8 +38209,8 @@ INPUT_PORTS_START( sc4mdm ) // this structure is generated
INPUT_PORTS_END
// PR3333 AWP MONOPOLY DOUBLE MONEY S4 PR3308 MPOLY D MONEY SOUNDS11 DOUBLE MONEY S.SITE
-GAMEL( 200?, sc4mdm ,0, sc4_5reel_alt, sc4mdm, sc4_state, sc4mdm, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mdma ,sc4mdm, sc4_5reel_alt, sc4mdm, sc4_state, sc4mdm, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mdm ,0, sc4_5reel_alt, sc4mdm, sc4_state, sc4mdm, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mdma ,sc4mdm, sc4_5reel_alt, sc4mdm, sc4_state, sc4mdm, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mhn)
{
@@ -38285,8 +38285,8 @@ INPUT_PORTS_START( sc4mhn ) // this structure is generated
INPUT_PORTS_END
// PR2380 MONOPOLY HERE AND NOW MR2R SOUNDS NITH
-GAMEL( 200?, sc4mhn ,0, sc4_200_4r, sc4mhn, sc4_state, sc4mhn, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mhna ,sc4mhn, sc4_200_4r, sc4mhn, sc4_state, sc4mhn, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mhn ,0, sc4_200_4r, sc4mhn, sc4_state, sc4mhn, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mhna ,sc4mhn, sc4_200_4r, sc4mhn, sc4_state, sc4mhn, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mhp)
@@ -38358,22 +38358,22 @@ INPUT_PORTS_START( sc4mhp ) // this structure is generated
INPUT_PORTS_END
// PR2345 AWP MONOPOLY HOT PROPERTY S4 PR2345 HOT PROPERTY SOUNDS11 HOT PROPERTY S.SITE
-GAMEL( 200?, sc4mhp ,0, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 471
-GAMEL( 200?, sc4mhpa ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 472
-GAMEL( 200?, sc4mhpb ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 271
-GAMEL( 200?, sc4mhpc ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 471
-GAMEL( 200?, sc4mhpd ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 472
-GAMEL( 200?, sc4mhpe ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 271
-GAMEL( 200?, sc4mhpf ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 475
-GAMEL( 200?, sc4mhpg ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 571
-GAMEL( 200?, sc4mhph ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 572
-GAMEL( 200?, sc4mhpi ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 475
-GAMEL( 200?, sc4mhpj ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 571
-GAMEL( 200?, sc4mhpk ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 572
-GAMEL( 200?, sc4mhpl ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 411
-GAMEL( 200?, sc4mhpm ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 272
-GAMEL( 200?, sc4mhpn ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 272
-GAMEL( 200?, sc4mhpo ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mhp ,0, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 471
+GAMEL( 200?, sc4mhpa ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 472
+GAMEL( 200?, sc4mhpb ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 271
+GAMEL( 200?, sc4mhpc ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 471
+GAMEL( 200?, sc4mhpd ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 472
+GAMEL( 200?, sc4mhpe ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 271
+GAMEL( 200?, sc4mhpf ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 475
+GAMEL( 200?, sc4mhpg ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 571
+GAMEL( 200?, sc4mhph ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 572
+GAMEL( 200?, sc4mhpi ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 475
+GAMEL( 200?, sc4mhpj ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 571
+GAMEL( 200?, sc4mhpk ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 572
+GAMEL( 200?, sc4mhpl ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 411
+GAMEL( 200?, sc4mhpm ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 272
+GAMEL( 200?, sc4mhpn ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 272
+GAMEL( 200?, sc4mhpo ,sc4mhp, sc4_5reel_alt, sc4mhp, sc4_state, sc4mhp, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mmb)
{
@@ -38440,8 +38440,8 @@ INPUT_PORTS_START( sc4mmb ) // this structure is generated
INPUT_PORTS_END
// PR1931 AWP MONOLOLY MONEY BAGS SCORP4 PR1911 MPOLY MONEYBAGS SOUNDS11 MONEYBAGS S.SITE
-GAMEL( 200?, sc4mmb ,0, sc4_4reel_alt, sc4mmb, sc4_state, sc4mmb, ROT0, "BFM","Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mmba ,sc4mmb, sc4_4reel_alt, sc4mmb, sc4_state, sc4mmb, ROT0, "BFM","Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmb ,0, sc4_4reel_alt, sc4mmb, sc4_state, sc4mmb, ROT0, "BFM","Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mmba ,sc4mmb, sc4_4reel_alt, sc4mmb, sc4_state, sc4mmb, ROT0, "BFM","Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mrh)
{
@@ -38506,12 +38506,12 @@ INPUT_PORTS_START( sc4mrh ) // this structure is generated
INPUT_PORTS_END
// PR2363 RED HOT MONOP MONOPOLY ARCADE MONO SOUNDS MONOPOLY
-GAMEL( 200?, sc4mrh ,0, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mrha ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mrhb ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mrhc ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mrhd ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mrhe ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrh ,0, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrha ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrhb ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrhc ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrhd ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mrhe ,sc4mrh, sc4_3reel_200_48, sc4mrh, sc4_state, sc4mrh, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mr2r)
@@ -38582,12 +38582,12 @@ INPUT_PORTS_START( sc4mr2r ) // this structure is generated
INPUT_PORTS_END
// PR2329 MONOPOLY ROAD TO RICHES MR2R SOUNDS ROAD TO RICHES
-GAMEL( 200?, sc4mr2r ,0, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mr2ra ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mr2rb ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mr2rc ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mr2rd ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mr2re ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2r ,0, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2ra ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2rb ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2rc ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2rd ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mr2re ,sc4mr2r, sc4_4reel_alt, sc4mr2r, sc4_state, sc4mr2r, ROT0, "Mazooma","Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4nmare)
@@ -38661,10 +38661,10 @@ INPUT_PORTS_START( sc4nmare ) // this structure is generated
INPUT_PORTS_END
// PR3032 AWP NIGHTMARE ON ELM STREET S4 PR3002 ELM STREET SOUNDS11 NIGHTMARE ELM ST S.SITE
-GAMEL( 200?, sc4nmare ,0, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmarea ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmareb ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nmarec ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmare ,0, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmarea ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmareb ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nmarec ,sc4nmare, sc4_5reel, sc4nmare, sc4_state, sc4nmare, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4potp)
@@ -38735,8 +38735,8 @@ INPUT_PORTS_START( sc4potp ) // this structure is generated
INPUT_PORTS_END
// PR1612 PICK OF THE PACK PR1612 PICK OF THE PACK SOUNDS11 PICK OF THE PACK S.SITE
-GAMEL( 200?, sc4potp ,0, sc4_4reel_alt, sc4potp, sc4_state, sc4potp, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4potpa ,sc4potp, sc4_4reel_alt, sc4potp, sc4_state, sc4potp, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4potp ,0, sc4_4reel_alt, sc4potp, sc4_state, sc4potp, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4potpa ,sc4potp, sc4_4reel_alt, sc4potp, sc4_state, sc4potp, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4ppcr ) // this structure is generated
@@ -38795,18 +38795,18 @@ INPUT_PORTS_START( sc4ppcr ) // this structure is generated
INPUT_PORTS_END
// PR2279 PINK PANTHER CLOUSEAUS REVENGE REVENGE QPS REVENGE SOUNDS
-GAMEL( 200?, sc4ppcr ,0, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcra ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrb ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrd ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcre ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrf ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrg ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrh ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcri ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppcrj ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcr ,0, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcra ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrb ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrd ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcre ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrf ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrg ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrh ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcri ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrj ,sc4ppcr, sc4, sc4ppcr, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2279 CLOUSEAU TOP BOX COROST_TRIPLE SOUNDS REVENGE TIME
-GAMEL( 200?, sc4ppcrtb ,sc4ppcr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge Top Box (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppcrtb ,sc4ppcr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Clouseau's Revenge Top Box (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ppctc)
@@ -38885,14 +38885,14 @@ INPUT_PORTS_START( sc4ppctc ) // this structure is generated
INPUT_PORTS_END
// PR2407 AWP PINK PANTHER CRACK THE CODE SCORP4 PR2407 CRACK THE CODE SOUNDS11 CRACK THE CODE S.SITE
-GAMEL( 200?, sc4ppctc ,0, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctca ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctcb ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctcc ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctcd ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctce ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctcf ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppctcg ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctc ,0, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctca ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctcb ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctcc ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctcd ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctce ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctcf ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppctcg ,sc4ppctc, sc4, sc4ppctc, sc4_state, sc4ppctc, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4ppdym ) // this structure is generated
@@ -38952,17 +38952,17 @@ INPUT_PORTS_START( sc4ppdym ) // this structure is generated
INPUT_PORTS_END
// PR2330 PINK PANTHER DYM PINK PANTHER DYM QPS DYMT SOUNDS PINK PANTHER DYM -
-GAMEL( 200?, sc4ppdym ,0, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymb ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymc ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymd ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymf ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymg ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymh ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymi ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdym ,0, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymb ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymc ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymd ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymf ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymg ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymh ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymi ,sc4ppdym, sc4, sc4ppdym, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2333 PINK PANTHER TOP BOX DYMT SOUNDS ALL YOUR BASE
-GAMEL( 200?, sc4ppdymtb ,sc4ppdym, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppdymtba ,sc4ppdym, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymtb ,sc4ppdym, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppdymtba ,sc4ppdym, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pony)
{
@@ -39031,12 +39031,12 @@ INPUT_PORTS_START( sc4pony ) // this structure is generated
INPUT_PORTS_END
// PR1408 PONY EXPRESS PR1408 PONY EXPRESS SOUNDS11 PONY EXPRESS S.SITE
-GAMEL( 200?, sc4pony ,0, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ponya ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ponyb ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ponyc ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ponyd ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ponye ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4pony ,0, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ponya ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ponyb ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ponyc ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ponyd ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ponye ,sc4pony, sc4_200_5r, sc4pony, sc4_state, sc4pony, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
DRIVER_INIT_MEMBER(sc4_state,sc4popey)
@@ -39108,12 +39108,12 @@ INPUT_PORTS_START( sc4popey ) // this structure is generated
INPUT_PORTS_END
// PR2417 AWP POPEYE S4 PR2417 POPEYE SOUNDS11 POPEYE S.SITE
-GAMEL( 200?, sc4popey ,0, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4popeya ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4popeyb ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4popeyc ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4popeyd ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4popeye ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4popey ,0, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4popeya ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4popeyb ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4popeyc ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4popeyd ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4popeye ,sc4popey, sc4_5reel_alt, sc4popey, sc4_state, sc4popey, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pwrbl)
@@ -39195,8 +39195,8 @@ INPUT_PORTS_END
// sequel to gamball, mechanical?
// PR1614 AWP POWERBALL POWERBALL S.SITE PR1614 POWERBALL SOUNDS11
-GAMEL( 200?, sc4pwrbl ,0, sc4_4reel, sc4pwrbl, sc4_state, sc4pwrbl, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrbla ,sc4pwrbl, sc4_4reel, sc4pwrbl, sc4_state, sc4pwrbl, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrbl ,0, sc4_4reel, sc4pwrbl, sc4_state, sc4pwrbl, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrbla ,sc4pwrbl, sc4_4reel, sc4pwrbl, sc4_state, sc4pwrbl, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4quidv)
{
@@ -39264,10 +39264,10 @@ INPUT_PORTS_START( sc4quidv ) // this structure is generated
INPUT_PORTS_END
// PR2342 QUID VICIOUS QUIDV SOUNDS QUID VICIOUS
-GAMEL( 200?, sc4quidv ,0, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidva ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidvb ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quidvc ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidv ,0, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidva ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidvb ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quidvc ,sc4quidv, sc4_4reel_alt, sc4quidv, sc4_state, sc4quidv, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rhxcs)
{
@@ -39332,12 +39332,12 @@ INPUT_PORTS_START( sc4rhxcs ) // this structure is generated
INPUT_PORTS_END
// PR2364 CASINO RED HOT X RED HOT X CRHX SOUNDS RED HOT X
-GAMEL( 200?, sc4rhxcs ,0, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcsa ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcsb ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcsc ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcsd ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcse ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcs ,0, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcsa ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcsb ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcsc ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcsd ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcse ,sc4rhxcs, sc4_3reel_200_48, sc4rhxcs, sc4_state, sc4rhxcs, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -39398,10 +39398,10 @@ INPUT_PORTS_END
// PR2557 RED SQUARE REDS SOUNDS RED SQUARE
-GAMEL( 200?, sc4redsq ,0, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4redsqa ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4redsqb ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4redsqc ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4redsq ,0, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4redsqa ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4redsqb ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4redsqc ,sc4redsq, sc4_4reel, sc4redsq, sc4_state, sc4redsq, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -39468,14 +39468,14 @@ INPUT_PORTS_START( sc4rosts ) // this structure is generated
INPUT_PORTS_END
// PR3256 CLUB RONNIE O SULLIVANS TOURNAMENT SCORP4 RONNIE OSULLIVAN CLUB PR3256 RONNIE O SOUNDS11 RONNIE SULLIVAN
-GAMEL( 200?, sc4rosts ,0, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsa ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsb ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsc ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsd ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostse ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsf ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rostsg ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rosts ,0, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsa ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsb ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsc ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsd ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostse ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsf ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rostsg ,sc4rosts, sc4_5reel, sc4rosts, sc4_state, sc4rosts, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rovrt)
@@ -39551,12 +39551,12 @@ INPUT_PORTS_START( sc4rovrt ) // this structure is generated
INPUT_PORTS_END
// PR2311 ROVERS RETURN ROVERS RETURN SOUNDS ROVERS RETURN
-GAMEL( 200?, sc4rovrt ,0, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rovrta ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rovrtb ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rovrtc ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rovrtd ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rovrte ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrt ,0, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrta ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrtb ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrtc ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrtd ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rovrte ,sc4rovrt, sc4_200_4ra, sc4rovrt, sc4_state, sc4rovrt, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4showt)
{
@@ -39629,13 +39629,13 @@ INPUT_PORTS_START( sc4showt ) // this structure is generated
INPUT_PORTS_END
// PR3043 AWP SHOW TIME S4 PR3013 SHOWTIME SOUNDS11 SHOW TIME S.SITE
-GAMEL( 200?, sc4showt ,0, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showta ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showtb ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showtc ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showtd ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showte ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4showtf ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4showt ,0, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4showta ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4showtb ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4showtc ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4showtd ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4showte ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4showtf ,sc4showt, sc4_200_5rc, sc4showt, sc4_state, sc4showt, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4spice)
@@ -39698,10 +39698,10 @@ INPUT_PORTS_START( sc4spice ) // this structure is generated
INPUT_PORTS_END
// PR1921 AWP SPICE IT UP SCORP4 PR1901 SPICE IT UP SOUNDS11 SPICE IT UP S.SITE
-GAMEL( 200?, sc4spice ,0, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4spicea ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4spiceb ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4spicec ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4spice ,0, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4spicea ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4spiceb ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4spicec ,sc4spice, sc4_4reel_alt, sc4spice, sc4_state, sc4spice, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sus)
{
@@ -39769,14 +39769,14 @@ INPUT_PORTS_START( sc4sus ) // this structure is generated
INPUT_PORTS_END
// PR2255 SUITUSIR SUIT SOUNDS SUITS U SIR
-GAMEL( 200?, sc4sus ,0, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susc ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susf ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susg ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sush ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susi ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susj ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4susk ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sus ,0, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4susc ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4susf ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4susg ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sush ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4susi ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4susj ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4susk ,sc4sus, sc4_4reel_alt, sc4sus, sc4_state, sc4sus, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sslam)
@@ -39838,8 +39838,8 @@ INPUT_PORTS_START( sc4sslam ) // this structure is generated
INPUT_PORTS_END
// PR3081 CLUB SUPER SLAM SUPER SLAM CLUB PR3080 SUPER SLAM SOUNDS11
-GAMEL( 200?, sc4sslam ,0, sc4_5reel, sc4sslam, sc4_state, sc4sslam, ROT0, "BFM","Super Slam (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sslama ,sc4sslam, sc4_5reel, sc4sslam, sc4_state, sc4sslam, ROT0, "BFM","Super Slam (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sslam ,0, sc4_5reel, sc4sslam, sc4_state, sc4sslam, ROT0, "BFM","Super Slam (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sslama ,sc4sslam, sc4_5reel, sc4sslam, sc4_state, sc4sslam, ROT0, "BFM","Super Slam (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// reel setup NOT correct, this will spin forever on some things
@@ -39909,10 +39909,10 @@ INPUT_PORTS_START( sc4swbak ) // this structure is generated
INPUT_PORTS_END
// PR2235 SWITCHBACK SWBK SOUNDS SWITCHBACK
-GAMEL( 200?, sc4swbak ,0, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swbaka ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swbakb ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swbakc ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swbak ,0, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swbaka ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swbakb ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swbakc ,sc4swbak, sc4_200_5ra, sc4swbak, sc4_state, sc4swbak, ROT0, "QPS","Switch Back (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ttpie)
@@ -39981,15 +39981,15 @@ INPUT_PORTS_START( sc4ttpie ) // this structure is generated
INPUT_PORTS_END
// PR1714 AWP TAKE THE PIECE S4 PR1714 TAKE THE PIECE SOUNDS11 TAKETHEPIECE S.SITE
-GAMEL( 200?, sc4ttpie ,0, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpiec ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpie ,0, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpiec ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1734 AWP TAKE THE PIECE S4 PR1714 TAKE THE PIECE SOUNDS11 TAKETHEPIECE S.SITE
-GAMEL( 200?, sc4ttpiea ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpieb ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpied ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpiee ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpief ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpieg ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpiea ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpieb ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpied ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpiee ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpief ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpieg ,sc4ttpie, sc4_5reel, sc4ttpie, sc4_state, sc4ttpie, ROT0, "BFM","Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4typ)
@@ -40062,10 +40062,10 @@ INPUT_PORTS_START( sc4typ ) // this structure is generated
INPUT_PORTS_END
// PR3031 AWP TAKE YOUR PICK S4 PR3001 TAKE YOUR PICK SOUNDS11 TAKE YOUR PICK S.SITE
-GAMEL( 200?, sc4typ ,0, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4typa ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4typb ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4typc ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4typ ,0, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4typa ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4typb ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4typc ,sc4typ, sc4, sc4typ, sc4_state, sc4typ, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4trail)
{
@@ -40119,10 +40119,10 @@ INPUT_PORTS_START( sc4trail ) // this structure is generated
INPUT_PORTS_END
// PR2170 TRAIL BLAZER TRAB SOUNDS TRAIL BLAZER
-GAMEL( 200?, sc4trail ,0, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4traila ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4trailb ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4trailc ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4trail ,0, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4traila ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4trailb ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4trailc ,sc4trail, sc4_4reel_alt, sc4trail, sc4_state, sc4trail, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -40194,13 +40194,13 @@ INPUT_PORTS_START( sc4bpb ) // this structure is generated
INPUT_PORTS_END
// PR1728 AWP BULLY'S PRIZE BOARD PR1708 B PRIZE BOARD SOUNDS11 BULLYSPRIZEBOARD S.SITE
-GAMEL( 200?, sc4bpb ,0, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bpbc ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpb ,0, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpbc ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1728 AWP BULLY'S PRIZE BOARD S4 PR1708 B PRIZE BOARD SOUNDS11 BULLYSPRIZEBOARD S.SITE
-GAMEL( 200?, sc4bpba ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bpbb ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bpbd ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bpbe ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpba ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpbb ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpbd ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bpbe ,sc4bpb, sc4_5reel, sc4bpb, sc4_state, sc4bpb, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bsp)
@@ -40271,15 +40271,15 @@ INPUT_PORTS_START( sc4bsp ) // this structure is generated
INPUT_PORTS_END
// PR3040 AWP BULLYS STAR PRIZE SCORP4 PR3012 BULLYS STAR P SOUNDS11 BULLYS STARPRIZE S.SITE
-GAMEL( 200?, sc4bsp ,0, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspa ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspb ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspc ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspd ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspg ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bsp ,0, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspa ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspb ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspc ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspd ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspg ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR3042 AWP BULLYS STAR PRIZE SCORP4 PR3012 BULLYS STAR P SOUNDS11 BULLYS STARPRIZE S.SITE
-GAMEL( 200?, sc4bspe ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bspf ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspe ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bspf ,sc4bsp, sc4_200_5ra, sc4bsp, sc4_state, sc4bsp, ROT0, "BFM","Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4chain)
@@ -40356,10 +40356,10 @@ INPUT_PORTS_START( sc4chain ) // this structure is generated
INPUT_PORTS_END
// PR1316 AWP CHAIN REACTION PR1312 CHAIN REACT SOUNDS11
-GAMEL( 200?, sc4chain ,0, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chaina ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chainb ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chainc ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chain ,0, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chaina ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chainb ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chainc ,sc4chain, sc4_5reel_alt, sc4chain, sc4_state, sc4chain, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4clown)
@@ -40435,14 +40435,14 @@ INPUT_PORTS_START( sc4clown ) // this structure is generated
INPUT_PORTS_END
// PR1727 AWP CLOWN AROUND SCORP4 PR1707 CLOWN AROUND SOUNDS11 CLOWN AROUND S.SITE
-GAMEL( 200?, sc4clown ,0, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clowna ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clownb ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clownc ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clownd ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clowne ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clownf ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clowng ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clown ,0, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clowna ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clownb ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clownc ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clownd ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clowne ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clownf ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clowng ,sc4clown, sc4_200_5rc, sc4clown, sc4_state, sc4clown, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4mowow ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -40492,16 +40492,16 @@ INPUT_PORTS_START( sc4mowow ) // this structure is generated
INPUT_PORTS_END
/* wrong sound roms */
-GAMEL( 200?, sc4mowow ,0, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2118 MONOPOLY WOTW WOTW SOUNDS MONOPOLY WOTW 8P
-GAMEL( 200?, sc4mowowa ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mowowb ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mowowc ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mowow ,0, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2118 MONOPOLY WOTW WOTW SOUNDS MONOPOLY WOTW 8P
+GAMEL( 200?, sc4mowowa ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mowowb ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mowowc ,sc4mowow, sc4, sc4mowow, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mwwtb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2389 WHEEL OF WEALTH WOWT SOUNDS WHEEL OF WEAL
-GAMEL( 200?, sc4mwwtba ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mwwtbb ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mwwtbc ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mwwtbd ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mwwtb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2389 WHEEL OF WEALTH WOWT SOUNDS WHEEL OF WEAL
+GAMEL( 200?, sc4mwwtba ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mwwtbb ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mwwtbc ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mwwtbd ,sc4mwwtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
DRIVER_INIT_MEMBER(sc4_state,sc4bwow)
@@ -40571,8 +40571,8 @@ INPUT_PORTS_START( sc4bwow ) // this structure is generated
// 0x0010 - "hopdmp" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4bwow ,0, sc4_200_5ra, sc4bwow, sc4_state, sc4bwow, ROT0, "BFM","Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1726 AWP WHEEL OF WEALTH PR1706 WHEEL OF WEALTH SOUNDS11 WHEEL OF WEALTH S.SITE
-GAMEL( 200?, sc4bwowa ,sc4bwow, sc4_200_5ra, sc4bwow, sc4_state, sc4bwow, ROT0, "BFM","Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4bwow ,0, sc4_200_5ra, sc4bwow, sc4_state, sc4bwow, ROT0, "BFM","Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1726 AWP WHEEL OF WEALTH PR1706 WHEEL OF WEALTH SOUNDS11 WHEEL OF WEALTH S.SITE
+GAMEL( 200?, sc4bwowa ,sc4bwow, sc4_200_5ra, sc4bwow, sc4_state, sc4bwow, ROT0, "BFM","Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
DRIVER_INIT_MEMBER(sc4_state,sc4nunsm)
@@ -40634,16 +40634,16 @@ INPUT_PORTS_START( sc4nunsm ) // this structure is generated
INPUT_PORTS_END
// PR2166 NUN N ROSES NANR SOUNDS NUNS N ROSES
-GAMEL( 200?, sc4nunsm ,0, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmb ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmc ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmd ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsme ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmf ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmg ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmh ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmi ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nunsmj ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsm ,0, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmb ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmc ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmd ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsme ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmf ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmg ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmh ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmi ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nunsmj ,sc4nunsm, sc4_200_4ra, sc4nunsm, sc4_state, sc4nunsm, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4acesh)
@@ -40695,10 +40695,10 @@ INPUT_PORTS_START( sc4acesh ) // this structure is generated
INPUT_PORTS_END
// PR2070 ACES HIGH ACEHI SOUNDS ACES HIGH
-GAMEL( 200?, sc4acesh ,0, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4acesha ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4aceshb ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4aceshc ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4acesh ,0, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4acesha ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4aceshb ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4aceshc ,sc4acesh, sc4_200_5rc, sc4acesh, sc4_state, sc4acesh, ROT0, "Mazooma","Aces High (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bed)
@@ -40757,12 +40757,12 @@ INPUT_PORTS_START( sc4bed ) // this structure is generated
INPUT_PORTS_END
// PR2094 BEDAZZLED BEDZ SOUNDS BEDAZZLED
-GAMEL( 200?, sc4bed ,0, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4beda ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedb ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedc ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedd ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bede ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bed ,0, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4beda ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedb ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedc ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedd ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bede ,sc4bed, sc4_4reel_alt, sc4bed, sc4_state, sc4bed, ROT0, "Mazooma","Bedazzled (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bedcl)
@@ -40829,12 +40829,12 @@ INPUT_PORTS_START( sc4bedcl ) // this structure is generated
INPUT_PORTS_END
// PR2102 CLUB BEDAZZLED CBED SOUNDS CLUB BEDAZZLED
-GAMEL( 200?, sc4bedcl ,0, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedcl ,0, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2102 CLUB BEDAZZLED CLUB BEDAZZLED CLUB CBED SOUNDS CLUB BEDAZZLED
-GAMEL( 200?, sc4bedcla ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedclb ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedclc ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bedcld ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedcla ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedclb ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedclc ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bedcld ,sc4bedcl, sc4_5reel, sc4bedcl, sc4_state, sc4bedcl, ROT0, "Mazooma","Bedazzled Club (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bblas)
{
@@ -40891,13 +40891,13 @@ INPUT_PORTS_START( sc4bblas ) // this structure is generated
INPUT_PORTS_END
// PR2083 BIG BLASTER BBST SOUNDS BIG BLASTER
-GAMEL( 200?, sc4bblas ,0, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblasa ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblasb ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblasc ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblasd ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblase ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bblasf ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblas ,0, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblasa ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblasb ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblasc ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblasd ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblase ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bblasf ,sc4bblas, sc4_4reel_alt, sc4bblas, sc4_state, sc4bblas_mbus, ROT0, "Mazooma","Big Blaster (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bankb)
{
@@ -40950,11 +40950,11 @@ INPUT_PORTS_START( sc4bankb ) // this structure is generated
INPUT_PORTS_END
// PR???? BANKETYBANK V1.0 BANKETYBANKSND BANKETY BANK
-GAMEL( 200?, sc4bankb ,0, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bankba ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bankb ,0, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bankba ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR???? BANKETYBANK 011 BANKETYBANKSND BANKETY BANK
-GAMEL( 200?, sc4bb ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bba ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bb ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bba ,sc4bankb, sc4_200_5r, sc4bankb, sc4_state, sc4bankb, ROT0, "Qps","Bankety Bank (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bobcl)
{
@@ -41024,8 +41024,8 @@ INPUT_PORTS_START( sc4bobcl ) // this structure is generated
INPUT_PORTS_END
// PR2298 CLUB BOBBY DAZZLER CLUB BOB DAZZLER CLUB CLUBBOBD SOUNDS
-GAMEL( 200?, sc4bobcl ,0, sc4_5reel, sc4bobcl, sc4_state, sc4bobcl, ROT0, "Mazooma","Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobcla ,sc4bobcl, sc4_5reel, sc4bobcl, sc4_state, sc4bobcl, ROT0, "Mazooma","Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobcl ,0, sc4_5reel, sc4bobcl, sc4_state, sc4bobcl, ROT0, "Mazooma","Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobcla ,sc4bobcl, sc4_5reel, sc4bobcl, sc4_state, sc4bobcl, ROT0, "Mazooma","Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4brksp)
{
@@ -41080,8 +41080,8 @@ INPUT_PORTS_START( sc4brksp ) // this structure is generated
INPUT_PORTS_END
// PR2033 BREAK THE SPELL SPELL SOUNDS BREAK THE SPELL
-GAMEL( 200?, sc4brksp ,0, sc4_5reel, sc4brksp, sc4_state, sc4brksp, ROT0, "Mazooma","Break The Spell (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brkspa ,sc4brksp, sc4_5reel, sc4brksp, sc4_state, sc4brksp, ROT0, "Mazooma","Break The Spell (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brksp ,0, sc4_5reel, sc4brksp, sc4_state, sc4brksp, ROT0, "Mazooma","Break The Spell (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brkspa ,sc4brksp, sc4_5reel, sc4brksp, sc4_state, sc4brksp, ROT0, "Mazooma","Break The Spell (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bulcl)
{
@@ -41147,16 +41147,16 @@ INPUT_PORTS_START( sc4bulcl ) // this structure is generated
INPUT_PORTS_END
// PR1753 CLUB BULLSEYE BULLSEYE CLUB PR1751 BULLSEYE SOUNDS11 BULLSYE
-GAMEL( 200?, sc4bulcl ,0, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcla ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulclb ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulclc ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcld ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcle ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulclf ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulclg ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulclh ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bulcli ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcl ,0, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcla ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulclb ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulclc ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcld ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcle ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulclf ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulclg ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulclh ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bulcli ,sc4bulcl, sc4_5reel, sc4bulcl, sc4_state, sc4bulcl, ROT0, "BFM","Bullseye Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4carry)
{
@@ -41222,8 +41222,8 @@ INPUT_PORTS_START( sc4carry ) // this structure is generated
INPUT_PORTS_END
// PR1113 CARRY ON WINNING PR1113 CARRY ON WINNING SOUNDS11
-GAMEL( 200?, sc4carry ,0, sc4_4reel_alt, sc4carry, sc4_state, sc4carry, ROT0, "BFM","Carry On Winning (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4carrya ,sc4carry, sc4_4reel_alt, sc4carry, sc4_state, sc4carry, ROT0, "BFM","Carry On Winning (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4carry ,0, sc4_4reel_alt, sc4carry, sc4_state, sc4carry, ROT0, "BFM","Carry On Winning (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4carrya ,sc4carry, sc4_4reel_alt, sc4carry, sc4_state, sc4carry, ROT0, "BFM","Carry On Winning (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cbaz ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -41285,20 +41285,20 @@ INPUT_PORTS_START( sc4cbaz ) // this structure is generated
INPUT_PORTS_END
// PR1349 CLUB CASH BAZAAR PR1349 CLUB CASH BAZAAR SOUNDS11
-GAMEL( 200?, sc4cbaz ,0, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbaza ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazb ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazc ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazd ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbaze ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazf ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazg ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazh ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazi ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbaz ,0, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbaza ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazb ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazc ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazd ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbaze ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazf ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazg ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazh ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazi ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// These alarm through startup and don't boot, are they missing something like a DMD?
// PR1349 CLUB CASH BAZAAR CLUB CASH BAZAAR CLUB PR1349 CLUB CASH BAZAAR SOUNDS11
-GAMEL( 200?, sc4cbazj ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4mbus, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cbazk ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4mbus, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazj ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4mbus, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cbazk ,sc4cbaz, sc4, sc4cbaz, sc4_state, sc4mbus, ROT0, "BFM","Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -41349,14 +41349,14 @@ INPUT_PORTS_START( sc4clash ) // this structure is generated
INPUT_PORTS_END
// PR2118 CASH ON THE LASH COTL SOUNDS CASH ON THE LASH
-GAMEL( 200?, sc4clash ,0, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clasha ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashb ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashc ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashd ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashe ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashf ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clashg ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clash ,0, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clasha ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashb ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashc ,sc4clash, sc4, sc4clash, sc4_state, sc4mbus, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashd ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashe ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashf ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clashg ,sc4clash, sc4, sc4clash, sc4_state, sc4, ROT0, "Mazooma","Cash On The Lash (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cckey ) // this structure is generated
@@ -41416,22 +41416,22 @@ INPUT_PORTS_START( sc4cckey ) // this structure is generated
INPUT_PORTS_END
// PR1426 CASINO CRAZY FRUITS GOLD PR1426 CRAZY F GOLD SOUNDS11 CRAZY FRUIT GOLD S.SITE (set was marked as Casino Crazy Keys)
-GAMEL( 200?, sc4cckey ,0, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeya ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyb ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyc ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyd ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeye ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyf ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyg ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyh ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyj ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyi ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyk ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyl ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeym ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyn ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cckeyo ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckey ,0, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeya ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyb ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyc ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyd ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeye ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyf ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyg ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyh ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyj ,sc4cckey, sc4, sc4cckey, sc4_state, sc4, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyi ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyk ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyl ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeym ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyn ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cckeyo ,sc4cckey, sc4, sc4cckey, sc4_state, sc4mbus, ROT0, "BFM","Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4clclo)
{
@@ -41497,7 +41497,7 @@ INPUT_PORTS_START( sc4clclo ) // this structure is generated
INPUT_PORTS_END
// PR2383 CLUBCLOUSEAU CLUBCLOUSEAU CLUB CCLOU SOUNDS CLUB CLOSEAU
-GAMEL( 200?, sc4clclo ,0, sc4_5reel, sc4clclo, sc4_state, sc4clclo, ROT0, "QPS","Club Clouseau (QPS) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clclo ,0, sc4_5reel, sc4clclo, sc4_state, sc4clclo, ROT0, "QPS","Club Clouseau (QPS) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cjcl)
@@ -41567,13 +41567,13 @@ INPUT_PORTS_START( sc4cjcl ) // this structure is generated
INPUT_PORTS_END
// PR1621 CLUB COOL JEWELS PR1621 COOL SOUNDS11 CLUB COOL JEWELS CLUB
-GAMEL( 200?, sc4cjcl ,0, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjcla ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjclb ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjclc ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjcld ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjcle ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjclf ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjcl ,0, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjcla ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjclb ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjclc ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjcld ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjcle ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjclf ,sc4cjcl, sc4_5reel, sc4cjcl, sc4_state, sc4cjcl, ROT0, "BFM","Cool Jewels Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4crcp ) // this structure is generated
@@ -41634,16 +41634,16 @@ INPUT_PORTS_START( sc4crcp ) // this structure is generated
INPUT_PORTS_END
// PR3241 CLUB COPS AND ROBBERS PLATINUM SCORP4 COPS & ROBRS PLT CLUB PR3241 C N R PLATINUM SOUNDS11 COPS AND ROBBERS
-GAMEL( 200?, sc4crcp ,0, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpa ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpc ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpd ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpe ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpf ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpg ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcph ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpi ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crcpj ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcp ,0, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpa ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpc ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpd ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpe ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpf ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpg ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcph ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpi ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crcpj ,sc4crcp, sc4, sc4crcp, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4crgc ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -41703,32 +41703,32 @@ INPUT_PORTS_START( sc4crgc ) // this structure is generated
INPUT_PORTS_END
// PR1348 CLUB COPS AND ROBBERS GOLD PR1348 CCRG SOUNDS11 COPS AND ROBBERS
-GAMEL( 2003, sc4crgc ,0, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgca ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcb ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcc ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcd ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgce ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcf ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcg ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgch ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgci ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcj ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgck ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcl ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcm ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgco ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcq ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgct ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcw ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgc ,0, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgca ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcb ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcc ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcd ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgce ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcf ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcg ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgch ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgci ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcj ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgck ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcl ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcm ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgco ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcq ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgct ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcw ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1348 CLUB COPS AND ROBBERS GOLD COPS & ROBRS GLD CLUB PR1348 CCRG SOUNDS11 COPS AND ROBBERS
-GAMEL( 2003, sc4crgcr ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 21)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcu ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 22)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcn ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 19)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcp ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 20)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcr ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcu ,sc4crgc, sc4, sc4crgc, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcn ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcp ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1348 !500 CLUB COPS AND ROBBERS GOLD COPS & ROBRS GLD CLUB PR1348 CCRG SOUNDS11 COPS AND ROBBERS
-GAMEL( 2003, sc4crgcs ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 23)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 2003, sc4crgcv ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 24)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcs ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 2003, sc4crgcv ,sc4crgc, sc4, sc4crgc, sc4_state, sc4mbus, ROT0, "BFM","Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -41795,12 +41795,12 @@ INPUT_PORTS_START( sc4cfcla ) // this structure is generated
INPUT_PORTS_END
// PR1396 CLASSIC CRAZY FRUITS PR1396 CLSIC CRAZY FRUITS SND11
-GAMEL( 200?, sc4cfcla ,0, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclab ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclac ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclad ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclae ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclaf ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcla ,0, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclab ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclac ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclad ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclae ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclaf ,sc4cfcla, sc4_3reel, sc4cfcla, sc4_state, sc4cfcla, ROT0, "BFM","Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cfdu)
@@ -41865,10 +41865,10 @@ INPUT_PORTS_START( sc4cfdu ) // this structure is generated
INPUT_PORTS_END
// PR1107 CRAZY FRUITS DOWNUNDER PR1107 DOWN UNDER SOUNDS11
-GAMEL( 200?, sc4cfdu ,0, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfdua ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfdub ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfduc ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfdu ,0, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfdua ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfdub ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfduc ,sc4cfdu, sc4_4reel_alt, sc4cfdu, sc4_state, sc4cfdu, ROT0, "BFM","Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cfgcl)
@@ -41938,10 +41938,10 @@ INPUT_PORTS_START( sc4cfgcl ) // this structure is generated
INPUT_PORTS_END
// PR1620 CLUB CRAZY FRUITS GOLD PR1620 CRAZY SOUNDS11 CRAZY FRUITS CLUB
-GAMEL( 200?, sc4cfgcl ,0, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfgcla ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfgclb ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfgclc ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfgcl ,0, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfgcla ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfgclb ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfgclc ,sc4cfgcl, sc4_5reel, sc4cfgcl, sc4_state, sc4cfgcl, ROT0, "BFM","Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4derby)
@@ -42012,12 +42012,12 @@ INPUT_PORTS_START( sc4derby ) // this structure is generated
INPUT_PORTS_END
// PR1006 DEMOLITION DERBY PR1006 DEMDERBY SOUNDS11
-GAMEL( 200?, sc4derby ,0, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4derbya ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4derbyb ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4derbyc ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4derbyd ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4derbye ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4derby ,0, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4derbya ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4derbyb ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4derbyc ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4derbyd ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4derbye ,sc4derby, sc4_200_5r, sc4derby, sc4_state, sc4derby, ROT0, "BFM","Demolition Derby (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4dbldm ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -42069,7 +42069,7 @@ INPUT_PORTS_START( sc4dbldm ) // this structure is generated
INPUT_PORTS_END
// PR2558 DOUBLE DIAMOND 011 DOUBLEDIAMONDSND DOUBLE DIAMOND
-GAMEL( 200?, sc4dbldm ,0, sc4, sc4dbldm, sc4_state, sc4, ROT0, "Qps","Double Diamond (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dbldm ,0, sc4, sc4dbldm, sc4_state, sc4, ROT0, "Qps","Double Diamond (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4dyna ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -42116,8 +42116,8 @@ INPUT_PORTS_START( sc4dyna ) // this structure is generated
INPUT_PORTS_END
// PR1104 DYNAMITE PR1104 DYNAMITE SOUNDS11
-GAMEL( 200?, sc4dyna ,0, sc4, sc4dyna, sc4_state, sc4, ROT0, "BFM","Dynamite (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dynaa ,sc4dyna, sc4, sc4dyna, sc4_state, sc4, ROT0, "BFM","Dynamite (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dyna ,0, sc4, sc4dyna, sc4_state, sc4, ROT0, "BFM","Dynamite (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dynaa ,sc4dyna, sc4, sc4dyna, sc4_state, sc4, ROT0, "BFM","Dynamite (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4easy ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -42182,13 +42182,13 @@ INPUT_PORTS_START( sc4easy ) // this structure is generated
INPUT_PORTS_END
// PR1017 EASY STREAK PR1017 EASY STREAK SOUNDS11 EASY STREAK
-GAMEL( 200?, sc4easy ,0, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easya ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easyb ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easyc ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easyd ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easye ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4easyf ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4easy ,0, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4easya ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4easyb ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4easyc ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4easyd ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4easye ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4easyf ,sc4easy, sc4, sc4easy, sc4_state, sc4, ROT0, "BFM","Easy Streak (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4clbmn ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -42250,10 +42250,10 @@ INPUT_PORTS_START( sc4clbmn ) // this structure is generated
INPUT_PORTS_END
//PROJECT NUMBER PR1955 CLUB MONEYBAGS MONEY BAGS CLUB PR1955 C M MONEYBAGS SOUNDS11 DEAL OR NO DEAL 5-10-20 10-20-30 20-30-50 30-50-100
-GAMEL( 200?, sc4clbmn ,0, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clbmna ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clbmnb ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clbmnc ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clbmn ,0, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clbmna ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clbmnb ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clbmnc ,sc4clbmn, sc4, sc4clbmn, sc4_state, sc4mbus, ROT0, "BFM","Club Moneybags (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4boomb)
@@ -42325,8 +42325,8 @@ INPUT_PORTS_START( sc4boomb ) // this structure is generated
INPUT_PORTS_END
//PROJECT NUMBER PR3332 AWP MONOPOLY BOOM OR BUST S4 PR3307 MPOLY BOOM OR B SOUNDS11 BOOM OR BUST S.SITE
-GAMEL( 200?, sc4boomb ,0, sc4_5reel_alt, sc4boomb, sc4_state, sc4boomb, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4boomba ,sc4boomb, sc4_5reel_alt, sc4boomb, sc4_state, sc4boomb, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4boomb ,0, sc4_5reel_alt, sc4boomb, sc4_state, sc4boomb, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4boomba ,sc4boomb, sc4_5reel_alt, sc4boomb, sc4_state, sc4boomb, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fever)
@@ -42399,16 +42399,16 @@ INPUT_PORTS_END
// we have FEVER SOUNDS12 but it accepts those?
// PR1007 FEVER PR1007 FEVER SOUNDS11
-GAMEL( 200?, sc4fever ,0, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fevera ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverb ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverc ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverd ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fevere ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverf ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverg ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverh ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4feverk ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fever ,0, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevera ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverb ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverc ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverd ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevere ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverf ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverg ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverh ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4feverk ,sc4fever, sc4_200_alta, sc4fever, sc4_state, sc4fever, ROT0, "BFM","Fever (PR1007) (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -42474,8 +42474,8 @@ INPUT_PORTS_START( sc4aztec ) // this structure is generated
// 0x0010 - "boekho" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4aztec ,0, sc4, sc4aztec, sc4_state, sc4aztec, ROT0, "BFG / Eurocoin","Aztec Casino (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR1225 AZTEC CASINO
-GAMEL( 200?, sc4azteca ,sc4aztec, sc4, sc4, sc4_state, sc4aztec, ROT0, "BFG / Eurocoin","Aztec (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1215 AZTEC EURO
+GAMEL( 200?, sc4aztec ,0, sc4, sc4aztec, sc4_state, sc4aztec, ROT0, "BFG / Eurocoin","Aztec Casino (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR1225 AZTEC CASINO
+GAMEL( 200?, sc4azteca ,sc4aztec, sc4, sc4, sc4_state, sc4aztec, ROT0, "BFG / Eurocoin","Aztec (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1215 AZTEC EURO
DRIVER_INIT_MEMBER(sc4_state,sc4helrd)
@@ -42538,8 +42538,8 @@ INPUT_PORTS_START( sc4helrd ) // this structure is generated
INPUT_PORTS_END
// PR1254 HELLRAISER ART12 95004326 HELLRAISER PR1254
-GAMEL( 200?, sc4helrd ,0, sc4_4reel, sc4helrd, sc4_state, sc4helrd, ROT0, "BFM","Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4helrs ,sc4helrd, sc4_4reel, sc4helrd, sc4_state, sc4helrd, ROT0, "BFM","Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4helrd ,0, sc4_4reel, sc4helrd, sc4_state, sc4helrd, ROT0, "BFM","Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4helrs ,sc4helrd, sc4_4reel, sc4helrd, sc4_state, sc4helrd, ROT0, "BFM","Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4heatw)
@@ -42601,7 +42601,7 @@ INPUT_PORTS_START( sc4heatw ) // this structure is generated
INPUT_PORTS_END
// PR1216 HEATWAVE ART 12 95004287 HEATWAVE PR1156
-GAMEL( 200?, sc4heatw ,0, sc4, sc4heatw, sc4_state, sc4heatw, ROT0, "BFM","Heatwave (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4heatw ,0, sc4, sc4heatw, sc4_state, sc4heatw, ROT0, "BFM","Heatwave (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -42666,7 +42666,7 @@ INPUT_PORTS_START( sc4colos ) // this structure is generated
INPUT_PORTS_END
// PR1208 COLOSSUS 95004235 COLOSSUS PR7155 COLOSSUS
-GAMEL( 200?, sc4colos ,0, sc4, sc4colos, sc4_state, sc4colos, ROT0, "BFM","Colossus (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4colos ,0, sc4, sc4colos, sc4_state, sc4colos, ROT0, "BFM","Colossus (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fevdt)
{
@@ -42727,9 +42727,9 @@ INPUT_PORTS_START( sc4fevdt ) // this structure is generated
INPUT_PORTS_END
// PR1202 FEVER 95004239 FEVER PR7157
-GAMEL( 200?, sc4fevdt ,0, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fevdta ,sc4fevdt, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fevdtb ,sc4fevdt, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevdt ,0, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevdta ,sc4fevdt, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevdtb ,sc4fevdt, sc4, sc4fevdt, sc4_state, sc4fevdt, ROT0, "BFM","Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4fevnx)
@@ -42792,8 +42792,8 @@ INPUT_PORTS_START( sc4fevnx ) // this structure is generated
INPUT_PORTS_END
// PR1216 FEVER ART12 95004318 FEVER T N PR1251
-GAMEL( 200?, sc4fevnx ,0, sc4, sc4fevnx, sc4_state, sc4fevnx, ROT0, "BFM","Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fevnxa ,sc4fevnx, sc4, sc4fevnx, sc4_state, sc4fevnx, ROT0, "BFM","Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevnx ,0, sc4, sc4fevnx, sc4_state, sc4fevnx, ROT0, "BFM","Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fevnxa ,sc4fevnx, sc4, sc4fevnx, sc4_state, sc4fevnx, ROT0, "BFM","Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4game)
{
@@ -42903,8 +42903,8 @@ INPUT_PORTS_START( sc4game ) // this structure is generated
// 0x0010 - "boekho" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4gamcs ,0, sc4_3reel, sc4gamcs, sc4_state, sc4game, ROT0, "BFM","The Game Casino (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1224 THE GAME CASINO 95004285 THEGAME PR1153
-GAMEL( 200?, sc4game ,sc4gamcs, sc4_3reel, sc4game, sc4_state, sc4game, ROT0, "BFM","The Game (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1213 THE GAME 95004285 THEGAME PR1153
+GAMEL( 200?, sc4gamcs ,0, sc4_3reel, sc4gamcs, sc4_state, sc4game, ROT0, "BFM","The Game Casino (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1224 THE GAME CASINO 95004285 THEGAME PR1153
+GAMEL( 200?, sc4game ,sc4gamcs, sc4_3reel, sc4game, sc4_state, sc4game, ROT0, "BFM","The Game (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1213 THE GAME 95004285 THEGAME PR1153
DRIVER_INIT_MEMBER(sc4_state,sc4goud)
{
@@ -42975,7 +42975,7 @@ INPUT_PORTS_END
// PR1211 GOUDKOORTS 95004288 GOUDKOORTS PR1151
-GAMEL( 200?, sc4goud ,0, sc4_200_5r, sc4goud, sc4_state, sc4goud, ROT0, "BFM","Goudkoorts (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goud ,0, sc4_200_5r, sc4goud, sc4_state, sc4goud, ROT0, "BFM","Goudkoorts (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4lasv)
{
@@ -43027,8 +43027,8 @@ INPUT_PORTS_START( sc4lasv ) // this structure is generated
INPUT_PORTS_END
// PR1209 LAS VEGAS 95004261 LASVEGAS PR7159
-GAMEL( 200?, sc4lasv ,0, sc4, sc4lasv, sc4_state, sc4lasv, ROT0, "BFM","Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lasva ,sc4lasv, sc4, sc4lasv, sc4_state, sc4lasv, ROT0, "BFM","Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lasv ,0, sc4, sc4lasv, sc4_state, sc4lasv, ROT0, "BFM","Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lasva ,sc4lasv, sc4, sc4lasv, sc4_state, sc4lasv, ROT0, "BFM","Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4miljo)
{
@@ -43142,8 +43142,8 @@ INPUT_PORTS_START( sc4milja ) // this structure is generated
// 0x0010 - "boekho" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4miljo ,0, sc4, sc4miljo, sc4_state, sc4miljo, ROT0, "BFM","Miljonairs (Dutch) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1217 MILJONAIRSART12 95004305 MILJONAIRE PR1157
-GAMEL( 200?, sc4milja ,sc4miljo, sc4, sc4milja, sc4_state, sc4miljo, ROT0, "BFM","Miljonairs Arcade (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1223 MILJONAIRS 95004305 MILJONAIRE PR1157
+GAMEL( 200?, sc4miljo ,0, sc4, sc4miljo, sc4_state, sc4miljo, ROT0, "BFM","Miljonairs (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1217 MILJONAIRSART12 95004305 MILJONAIRE PR1157
+GAMEL( 200?, sc4milja ,sc4miljo, sc4, sc4milja, sc4_state, sc4miljo, ROT0, "BFM","Miljonairs Arcade (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR1223 MILJONAIRS 95004305 MILJONAIRE PR1157
DRIVER_INIT_MEMBER(sc4_state,sc4paytm)
{
@@ -43205,7 +43205,7 @@ INPUT_PORTS_START( sc4paytm ) // this structure is generated
INPUT_PORTS_END
// PR1205 PAY TIME 95004224 PAYTIME PR7156 PAY TIME
-GAMEL( 200?, sc4paytm ,0, sc4, sc4paytm, sc4_state, sc4paytm, ROT0, "BFM","Pay Time (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paytm ,0, sc4, sc4paytm, sc4_state, sc4paytm, ROT0, "BFM","Pay Time (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pglcs)
@@ -43263,9 +43263,9 @@ INPUT_PORTS_START( sc4pglcs ) // this structure is generated
INPUT_PORTS_END
// PR1261 PHARAOH'S GOLD 95004316 CAS PHAR GOLD PR1261
-GAMEL( 200?, sc4pglcs ,0, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglcsa ,sc4pglcs, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pglcsb ,sc4pglcs, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcs ,0, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcsa ,sc4pglcs, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pglcsb ,sc4pglcs, sc4_3reel, sc4pglcs, sc4_state, sc4pglcs, ROT0, "BFM","Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4redad)
@@ -43328,8 +43328,8 @@ INPUT_PORTS_START( sc4redad ) // this structure is generated
INPUT_PORTS_END
// PR1206 RED ALERT 95004266 REDALERT PR1051
-GAMEL( 200?, sc4redad ,0, sc4, sc4redad, sc4_state, sc4redad, ROT0, "BFM","Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4redada ,sc4redad, sc4, sc4redad, sc4_state, sc4redad, ROT0, "BFM","Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4redad ,0, sc4, sc4redad, sc4_state, sc4redad, ROT0, "BFM","Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4redada ,sc4redad, sc4, sc4redad, sc4_state, sc4redad, ROT0, "BFM","Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rvlnx)
@@ -43390,7 +43390,7 @@ INPUT_PORTS_START( sc4rvlnx ) // this structure is generated
INPUT_PORTS_END
// PR1252 REVOLUTION NEXT 95004320 REVOLUTIONTN PR1252
-GAMEL( 200?, sc4rvlnx ,0, sc4_200_5r, sc4rvlnx, sc4_state, sc4rvlnx, ROT0, "BFM","Revolution The Next (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rvlnx ,0, sc4_200_5r, sc4rvlnx, sc4_state, sc4rvlnx, ROT0, "BFM","Revolution The Next (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rvl)
{
@@ -43453,7 +43453,7 @@ INPUT_PORTS_START( sc4rvl ) // this structure is generated
INPUT_PORTS_END
// PR1203 REVOLUTION 95004259 REVOLUTION PR7158
-GAMEL( 200?, sc4rvl ,0, sc4_200_5r, sc4rvl, sc4_state, sc4rvl, ROT0, "BFM","Revolution (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rvl ,0, sc4_200_5r, sc4rvl, sc4_state, sc4rvl, ROT0, "BFM","Revolution (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rio)
{
@@ -43515,7 +43515,7 @@ INPUT_PORTS_START( sc4rio ) // this structure is generated
INPUT_PORTS_END
// PR1222 RIO GRANDE 95004309 RIO GRANDE SOUNDS11
-GAMEL( 200?, sc4rio ,0, sc4, sc4rio, sc4_state, sc4rio, ROT0, "BFM","Rio Grande (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rio ,0, sc4, sc4rio, sc4_state, sc4rio, ROT0, "BFM","Rio Grande (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4strbr)
@@ -43633,12 +43633,12 @@ INPUT_PORTS_START( sc4strbra ) // this structure is generated
INPUT_PORTS_END
// PR1219 STARS 'N BARS 95004290 STARSNBARS PR1159
-GAMEL( 200?, sc4strbr ,0, sc4, sc4strbr, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strbrb ,sc4strbr, sc4, sc4strbr, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strbr ,0, sc4, sc4strbr, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strbrb ,sc4strbr, sc4, sc4strbr, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1263 SNBA ART13 STARS 'N' BARS ARCADE - ART13 95004290 STARSNBARS PR1159
-GAMEL( 200?, sc4strbra ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strbrc ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strbrd ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strbra ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strbrc ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strbrd ,sc4strbr, sc4, sc4strbra, sc4_state, sc4strbr, ROT0, "BFM","Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4twilt)
@@ -43702,7 +43702,7 @@ INPUT_PORTS_START( sc4twilt ) // this structure is generated
INPUT_PORTS_END
// PR1214 TWILIGHT 95004299 TWILIGHT PR1154
-GAMEL( 200?, sc4twilt ,0, sc4_4reel, sc4twilt, sc4_state, sc4twilt, ROT0, "BFM","Twilight (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4twilt ,0, sc4_4reel, sc4twilt, sc4_state, sc4twilt, ROT0, "BFM","Twilight (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4monsp)
@@ -43765,7 +43765,7 @@ INPUT_PORTS_START( sc4monsp ) // this structure is generated
INPUT_PORTS_END
// PR1218 MONEY SPINNER ART12 95004291 MONEYSPINNER PR1158
-GAMEL( 200?, sc4monsp ,0, sc4_200_5r, sc4monsp, sc4_state, sc4monsp, ROT0, "BFM","Money Spinner (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monsp ,0, sc4_200_5r, sc4monsp, sc4_state, sc4monsp, ROT0, "BFM","Money Spinner (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -43831,7 +43831,7 @@ INPUT_PORTS_END
// PR1227 4PLAY ART13 95004313 4PLAY PR1227
-GAMEL( 200?, sc4ivply ,0, sc4_4reel, sc4ivply, sc4_state, sc4ivply, ROT0, "BFM","4 Play (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ivply ,0, sc4_4reel, sc4ivply, sc4_state, sc4ivply, ROT0, "BFM","4 Play (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ccc)
@@ -43896,7 +43896,7 @@ INPUT_PORTS_START( sc4ccc ) // this structure is generated
INPUT_PORTS_END
// PR1221 CRISSCROSSCRAZY ART13 95004282 CRISSCROSS PR1161
-GAMEL( 200?, sc4ccc ,0, sc4_4reel, sc4ccc, sc4_state, sc4ccc, ROT0, "BFM","Criss Cross Crazy (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccc ,0, sc4_4reel, sc4ccc, sc4_state, sc4ccc, ROT0, "BFM","Criss Cross Crazy (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4valqp)
@@ -43958,7 +43958,7 @@ INPUT_PORTS_START( sc4valqp ) // this structure is generated
INPUT_PORTS_END
// PR2040E VALHALLA...PR2040 SOUNDS V1.... (non-standard header)
-GAMEL( 200?, sc4valqp ,0, sc4_3reel, sc4valqp, sc4_state, sc4valqp, ROT0, "Qps / Eurocoin","Valhalla (Dutch) (Qps) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4valqp ,0, sc4_3reel, sc4valqp, sc4_state, sc4valqp, ROT0, "Qps / Eurocoin","Valhalla (Dutch) (Qps) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4winxp)
@@ -44021,7 +44021,7 @@ INPUT_PORTS_START( sc4winxp ) // this structure is generated
INPUT_PORTS_END
// PR1207 WIN XPLOSION 95004265 WINXPLOSION PR1053
-GAMEL( 200?, sc4winxp ,0, sc4_4reel, sc4winxp, sc4_state, sc4winxp, ROT0, "BFM","Win X-plosion (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4winxp ,0, sc4_4reel, sc4winxp, sc4_state, sc4winxp, ROT0, "BFM","Win X-plosion (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4xcash)
@@ -44079,7 +44079,7 @@ INPUT_PORTS_START( sc4xcash ) // this structure is generated
INPUT_PORTS_END
// PR1264 XTRA CASH ART13 XTRA CASH CASINO (LOTECH) - ART13 95004321 XTRACASH PR1264
-GAMEL( 200?, sc4xcash ,0, sc4_3reel, sc4xcash, sc4_state, sc4xcash, ROT0, "BFM","Xtra Cash Casino (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4xcash ,0, sc4_3reel, sc4xcash, sc4_state, sc4xcash, ROT0, "BFM","Xtra Cash Casino (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4helld)
{
@@ -44141,7 +44141,7 @@ INPUT_PORTS_START( sc4helld ) // this structure is generated
INPUT_PORTS_END
// PR1201 HELLS BELLS 95004211 HELLS BELLS PR6945 HELLS BELLS (non english?)
-GAMEL( 200?, sc4helld ,0, sc4_3reel, sc4helld, sc4_state, sc4helld, ROT0, "BFM / Eurocoin","Hells Bells (PR1201) (Dutch) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4helld ,0, sc4_3reel, sc4helld, sc4_state, sc4helld, ROT0, "BFM / Eurocoin","Hells Bells (PR1201) (Dutch) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cashn)
{
@@ -44202,7 +44202,7 @@ INPUT_PORTS_END
// PR2038E Dutch12 Cashanova (not a standard string)
-GAMEL( 200?, sc4cashn ,0, sc4_3reel, sc4cashn, sc4_state, sc4cashn, ROT0, "Mazooma / Eurocoin","Cashanova (Dutch) (Mazooma / Eurocoin) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashn ,0, sc4_3reel, sc4cashn, sc4_state, sc4cashn, ROT0, "Mazooma / Eurocoin","Cashanova (Dutch) (Mazooma / Eurocoin) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4czfra)
@@ -44266,7 +44266,7 @@ INPUT_PORTS_START( sc4czfra ) // this structure is generated
INPUT_PORTS_END
// PR1212 CRAZY FRUITS PR1152 CRAZY FRUITS SOUNDS11
-GAMEL( 200?, sc4czfra ,0, sc4_5reel, sc4czfra, sc4_state, sc4czfra, ROT0, "BFM","Crazy Fruits (Dutch) (PR1212, CRAZ) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4czfra ,0, sc4_5reel, sc4czfra, sc4_state, sc4czfra, ROT0, "BFM","Crazy Fruits (Dutch) (PR1212, CRAZ) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -44339,8 +44339,8 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR1611 AWP ANT AND DECS PR1611 ANT AND DECS SOUNDS11 ANT AND DECS S.SITE
-GAMEL( 200?, sc4adsnt ,0, sc4, sc4adsnt, sc4_state, sc4, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adsnta ,sc4adsnt, sc4, sc4adsnt, sc4_state, sc4, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adsnt ,0, sc4, sc4adsnt, sc4_state, sc4, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adsnta ,sc4adsnt, sc4, sc4adsnt, sc4_state, sc4, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4slad ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44400,15 +44400,15 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR1411 AWP SNAKES AND LADDERS PR1411 SNAKES A L SOUNDS11 SNAKES & LADDERS S.SITE
-GAMEL( 200?, sc4slad ,0, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slada ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladb ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladc ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladd ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slade ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladf ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladg ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sladh ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4slad ,0, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4slada ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladb ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladc ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladd ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4slade ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladf ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladg ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sladh ,sc4slad, sc4, sc4slad, sc4_state, sc4, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4magci ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44453,37 +44453,37 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR2535 MAGIC CIRCLE STANDARD 011 MAGICSND
-GAMEL( 200?, sc4magci ,0, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (011) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcik ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (011) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magci ,0, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (011) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcik ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (011) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 021 MAGICSND
-GAMEL( 200?, sc4magcia ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (021) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcil ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (021) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcia ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (021) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcil ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (021) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 031 MAGICSND
-GAMEL( 200?, sc4magcib ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (031) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcim ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (031) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcib ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (031) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcim ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (031) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 012 MAGICSND
-GAMEL( 200?, sc4magcic ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcin ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcid ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcio ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcic ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcin ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcid ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcio ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (012) (Qps) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
//P R2535 MAGIC CIRCLE STANDARD 022 MAGICSND
-GAMEL( 200?, sc4magcie ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (022) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcip ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (022) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcie ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (022) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcip ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (022) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 032 MAGICSND
-GAMEL( 200?, sc4magcif ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (032) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magciq ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (032) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcif ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (032) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magciq ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (032) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 013 MAGICSND
-GAMEL( 200?, sc4magcig ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (013) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcir ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (013) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcig ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (013) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcir ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (013) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 014 MAGICSND
-GAMEL( 200?, sc4magcih ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (014) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcis ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (014) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcih ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (014) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcis ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (014) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 024 MAGICSND
-GAMEL( 200?, sc4magcii ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (024) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magcit ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (024) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcii ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (024) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcit ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (024) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2535 MAGIC CIRCLE STANDARD 034 MAGICSND
-GAMEL( 200?, sc4magcij ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (034) (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4magciu ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (034) (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magcij ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (034) (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4magciu ,sc4magci, sc4, sc4magci, sc4_state, sc4, ROT0, "Qps","Magic Circle (034) (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4dcrls ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44528,23 +44528,23 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR2544 DOUBLE CRAZY REELS 021 DCRZYSND
-GAMEL( 200?, sc4dcrls ,0, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsf ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrls ,0, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsf ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2544 DOUBLE CRAZY REELS 031 DCRZYSND
-GAMEL( 200?, sc4dcrlsa ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsg ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsa ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsg ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2544 DOUBLE CRAZY REELS 022 DCRZYSND
-GAMEL( 200?, sc4dcrlsb ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsh ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsb ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsh ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2544 DOUBLE CRAZY REELS 032 DCRZYSND
-GAMEL( 200?, sc4dcrlsc ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsi ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsc ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsi ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2544 DOUBLE CRAZY REELS 023 DCRZYSND
-GAMEL( 200?, sc4dcrlsd ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsj ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsd ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsj ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2544 DOUBLE CRAZY REELS 033 DCRZYSND
-GAMEL( 200?, sc4dcrlse ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dcrlsk ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlse ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dcrlsk ,sc4dcrls, sc4, sc4dcrls, sc4_state, sc4, ROT0, "Mazooma","Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4gshot ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44589,11 +44589,11 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR2564 GOLDEN SHOT Standard Version GOLDENSHOTLOTECHSND
-GAMEL( 200?, sc4gshot ,0, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gshotb ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gshot ,0, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gshotb ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2564 GOLDEN SHOT Arcade Version GOLDENSHOTLOTECHSND
-GAMEL( 200?, sc4gshota ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot Arcade (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gshotc ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot Arcade (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gshota ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot Arcade (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gshotc ,sc4gshot, sc4, sc4gshot, sc4_state, sc4, ROT0, "Qps","Golden Shot Arcade (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cj ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44660,11 +44660,11 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR1416 COOL JEWELS PR1416 COOL JEWELS SOUNDS11 COOL JEWELS S.SITE
-GAMEL( 200?, sc4cj ,0, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cja ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjb ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjc ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cjd ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4cj ,0, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cja ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjb ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjc ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cjd ,sc4cj, sc4, sc4cj, sc4_state, sc4, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
INPUT_PORTS_START( sc4crnjw ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44733,8 +44733,8 @@ INPUT_PORTS_END
// PAY UNIT ERROR 17
// PR1638 AWP CROWN JEWELS PR1608 CROWN JEWELS SOUNDS11 CROWN JEWELS S.SITE
-GAMEL( 200?, sc4crnjw ,0, sc4, sc4crnjw, sc4_state, sc4, ROT0, "BFM","Crown Jewels (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crnjwa ,sc4crnjw, sc4, sc4crnjw, sc4_state, sc4, ROT0, "BFM","Crown Jewels (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crnjw ,0, sc4, sc4crnjw, sc4_state, sc4, ROT0, "BFM","Crown Jewels (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crnjwa ,sc4crnjw, sc4, sc4crnjw, sc4_state, sc4, ROT0, "BFM","Crown Jewels (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4jjok ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44805,8 +44805,8 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR1609 JACKPOT JOKERS PR1609 JACKPOT JOKERS SOUNDS11 JACKPOT JOKERS S.SITE
-GAMEL( 200?, sc4jjok ,0, sc4, sc4jjok, sc4_state, sc4, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjoka ,sc4jjok, sc4, sc4jjok, sc4_state, sc4, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjok ,0, sc4, sc4jjok, sc4_state, sc4, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjoka ,sc4jjok, sc4, sc4jjok, sc4_state, sc4, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4copsr ) // this structure is generated
@@ -44867,16 +44867,16 @@ INPUT_PORTS_END
// PAY UNIT ERR 17
// PR1412 AWP COPS AND ROBBERS PR1412 COPS AND ROBBERS SOUNDS11 COPS AND ROBBERS S.SITE
-GAMEL( 200?, sc4copsr ,0, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsra ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrb ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrc ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrd ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsre ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrf ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrg ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsrh ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4copsri ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsr ,0, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsra ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrb ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrc ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrd ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsre ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrf ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrg ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsrh ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4copsri ,sc4copsr, sc4, sc4copsr, sc4_state, sc4, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4druby ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -44936,11 +44936,11 @@ INPUT_PORTS_END
// gives an 'init comms' countdown
// PR1439 DIAMONDS & RUBIES PR1436 TRIPLE CASINO SOUNDS11
-GAMEL( 200?, sc4druby ,0, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4drubya ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4drubyb ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4drubyc ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4drubyd ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4druby ,0, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4drubya ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4drubyb ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4drubyc ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4drubyd ,sc4druby, sc4, sc4druby, sc4_state, sc4, ROT0, "BFM","Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
/****************************************************************************************************************************************************************************************************************/
@@ -45013,12 +45013,12 @@ INPUT_PORTS_END
// missing sound roms
// PR2540 ABRACADABRA ABRA SOUNDS ABRACADABRA
-GAMEL( 200?, sc4abra ,0, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 1, 041)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4abraa ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 2, 041)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4abrab ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 3, 044)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4abrac ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 4, 044)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4abrad ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 5, 014)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4abrae ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 6, 014)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4abra ,0, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 1, 041)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4abraa ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 2, 041)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4abrab ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 3, 044)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4abrac ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 4, 044)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4abrad ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 5, 014)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4abrae ,sc4abra, sc4_200_4r, sc4abra, sc4_state, sc4abra, ROT0, "Qps","Abracadabra (Qps) (Scorpion 4) (set 6, 014)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4alad ) // this structure is generated
@@ -45063,8 +45063,8 @@ INPUT_PORTS_END
// bad / missing sound roms
// PR7068 ALADDIN'S CAVE CAVE SOUNDS
-GAMEL( 200?, sc4alad ,0, sc4, sc4alad, sc4_state, sc4, ROT0, "Mazooma","Aladdin's Cave (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4alada ,sc4alad, sc4, sc4alad, sc4_state, sc4, ROT0, "Mazooma","Aladdin's Cave (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4alad ,0, sc4, sc4alad, sc4_state, sc4, ROT0, "Mazooma","Aladdin's Cave (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4alada ,sc4alad, sc4, sc4alad, sc4_state, sc4, ROT0, "Mazooma","Aladdin's Cave (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -45121,8 +45121,8 @@ INPUT_PORTS_END
// missing sound roms, doesn't play
// PR2501 BIG DEAL BIGDEALSND BIG DEAL
-GAMEL( 200?, sc4bigdl ,0, sc4_200_5r, sc4bigdl, sc4_state, sc4bigdl, ROT0, "Qps","Big Deal (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bigdla ,sc4bigdl, sc4_200_5r, sc4bigdl, sc4_state, sc4bigdl, ROT0, "Qps","Big Deal (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bigdl ,0, sc4_200_5r, sc4bigdl, sc4_state, sc4bigdl, ROT0, "Qps","Big Deal (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bigdla ,sc4bigdl, sc4_200_5r, sc4bigdl, sc4_state, sc4bigdl, ROT0, "Qps","Big Deal (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -45188,11 +45188,11 @@ INPUT_PORTS_END
// no sound roms
// PR7038 CASH CONNEXION MTOM SOUNDS
-GAMEL( 200?, sc4cconx ,0, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cconxa ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cconxb ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cconxc ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cconxd ,sc4cconx, sc4_200_4r, sc4cconxd, sc4_state, sc4cconxd, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // this one won't init without a 200 step reel
+GAMEL( 200?, sc4cconx ,0, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cconxa ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cconxb ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cconxc ,sc4cconx, sc4_4reel, sc4, sc4_state, sc4cconx, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cconxd ,sc4cconx, sc4_200_4r, sc4cconxd, sc4_state, sc4cconxd, ROT0, "Mazooma","Cash Connexion (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // this one won't init without a 200 step reel
DRIVER_INIT_MEMBER(sc4_state,sc4ccrus)
{
@@ -45252,9 +45252,9 @@ INPUT_PORTS_END
// no sound roms (probably doesn't want cashanova, but check)
// PR2006 CASH CRUSADERS CASH SOUNDS CASH CRUSADERS
-GAMEL( 200?, sc4ccrus ,0, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ccrusa ,sc4ccrus, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ccrusb ,sc4ccrus, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccrus ,0, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccrusa ,sc4ccrus, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ccrusb ,sc4ccrus, sc4_4reel, sc4ccrus, sc4_state, sc4ccrus, ROT0, "Mazooma","Cash Crusaders (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -45315,16 +45315,16 @@ INPUT_PORTS_START( sc4jjc ) // this structure is generated
INPUT_PORTS_END
// PR2152 JUMPIN JACK CASH JACK SOUNDS JUMPIN JACK CASH
-GAMEL( 200?, sc4jjc ,0, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjca ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjcb ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjcc ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjcd ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjce ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjcf ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjcg ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjch ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjci ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjc ,0, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjca ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjcb ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjcc ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjcd ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjce ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjcf ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjcg ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjch ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjci ,sc4jjc, sc4_200_4ra, sc4jjc, sc4_state, sc4jjc, ROT0, "Mazooma","Jumping Jack Cash (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4kkong ) // this structure is generated
@@ -45375,17 +45375,17 @@ INPUT_PORTS_START( sc4kkong ) // this structure is generated
INPUT_PORTS_END
// PR2161 KING KONG CASH 000 KKCSH SOUNDS KING KONG CASH
-GAMEL( 200?, sc4kkong ,0, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkonga ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongb ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongc ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongd ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkonge ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongf ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongg ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongh ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongi ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4kkongj ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkong ,0, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkonga ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongb ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongc ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongd ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkonge ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongf ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongg ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongh ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongi ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4kkongj ,sc4kkong, sc4, sc4kkong, sc4_state, sc4, ROT0, "Mazooma","King Kong Cash (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4knok)
@@ -45442,8 +45442,8 @@ INPUT_PORTS_END
// PR7061 KNOCKOUT KOUT SOUNDS
-GAMEL( 200?, sc4knok ,0, sc4_4reel, sc4knok, sc4_state, sc4knok, ROT0, "Mazooma","Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4knoka ,sc4knok, sc4_4reel, sc4knok, sc4_state, sc4knok, ROT0, "Mazooma","Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4knok ,0, sc4_4reel, sc4knok, sc4_state, sc4knok, ROT0, "Mazooma","Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4knoka ,sc4knok, sc4_4reel, sc4knok, sc4_state, sc4knok, ROT0, "Mazooma","Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4knokb ) // this structure is generated
@@ -45491,8 +45491,8 @@ INPUT_PORTS_END
// This is a different game
// PR2057 KNOCK OUT PKOT SOUNDS KNOCK OUT
-GAMEL( 200?, sc4knokb ,0, sc4_200_5r, sc4knokb, sc4_state, sc4knokb, ROT0, "Mazooma","Knock Out (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4knokc ,sc4knokb, sc4_200_5r, sc4knokb, sc4_state, sc4knokb, ROT0, "Mazooma","Knock Out (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4knokb ,0, sc4_200_5r, sc4knokb, sc4_state, sc4knokb, ROT0, "Mazooma","Knock Out (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4knokc ,sc4knokb, sc4_200_5r, sc4knokb, sc4_state, sc4knokb, ROT0, "Mazooma","Knock Out (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4maxcc)
@@ -45565,10 +45565,10 @@ INPUT_PORTS_START( sc4maxcc ) // this structure is generated
INPUT_PORTS_END
// PR2130 CLUB MAXIMUS CASH MAXIMUS CASH CLUB CMAX SOUNDS MAXIMUS CASH
-GAMEL( 200?, sc4maxcc ,0, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maxcca ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maxccb ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4maxccc ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxcc ,0, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxcca ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxccb ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4maxccc ,sc4maxcc, sc4_200_5r, sc4maxcc, sc4_state, sc4maxcc, ROT0, "Mazooma","Maximus Cash Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4wadzl)
@@ -45625,8 +45625,8 @@ INPUT_PORTS_START( sc4wadzl ) // this structure is generated
INPUT_PORTS_END
// PR2052 WADZILLA WADZ SOUNDS WADZILLA
-GAMEL( 200?, sc4wadzl ,0, sc4_200_5r, sc4wadzl, sc4_state, sc4wadzl, ROT0, "Mazooma","Wadzilla (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wadzla ,sc4wadzl, sc4_200_5r, sc4wadzl, sc4_state, sc4wadzl, ROT0, "Mazooma","Wadzilla (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wadzl ,0, sc4_200_5r, sc4wadzl, sc4_state, sc4wadzl, ROT0, "Mazooma","Wadzilla (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wadzla ,sc4wadzl, sc4_200_5r, sc4wadzl, sc4_state, sc4wadzl, ROT0, "Mazooma","Wadzilla (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4s16 ) // this structure is generated
@@ -45676,8 +45676,8 @@ INPUT_PORTS_END
// RNG ERR 99
// PR21xx SECTION 16 SECT SOUNDS SECTION 16
-GAMEL( 200?, sc4s16 ,0, sc4, sc4s16, sc4_state, sc4, ROT0, "Mazooma","Section 16 (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s16a ,sc4s16, sc4, sc4s16, sc4_state, sc4, ROT0, "Mazooma","Section 16 (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s16 ,0, sc4, sc4s16, sc4_state, sc4, ROT0, "Mazooma","Section 16 (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s16a ,sc4s16, sc4, sc4s16, sc4_state, sc4, ROT0, "Mazooma","Section 16 (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4bob ) // this structure is generated
@@ -45732,16 +45732,16 @@ INPUT_PORTS_START( sc4bob ) // this structure is generated
INPUT_PORTS_END
// PR2170 BOBBY DAZZLER BOBD SOUNDS BOBBY DAZZLER
-GAMEL( 200?, sc4bob ,0, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4boba ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobb ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobc ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobd ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobe ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobf ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobg ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobh ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bobi ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bob ,0, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4boba ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobb ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobc ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobd ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobe ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobf ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobg ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobh ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bobi ,sc4bob, sc4, sc4bob, sc4_state, sc4, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4clue ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -45807,14 +45807,14 @@ INPUT_PORTS_START( sc4clue ) // this structure is generated
INPUT_PORTS_END
// PR2230 CLUEDO CLUE SOUNDS CLUEDO
-GAMEL( 200?, sc4clue ,0, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cluea ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clueb ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cluec ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clued ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cluee ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cluef ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clueg ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clue ,0, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cluea ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clueb ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cluec ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clued ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cluee ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cluef ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clueg ,sc4clue, sc4, sc4clue, sc4_state, sc4, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4ducks ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -45862,10 +45862,10 @@ INPUT_PORTS_START( sc4ducks ) // this structure is generated
INPUT_PORTS_END
// PR2118 DUCKS OF HAZZARD DUCKSOFHAZZARDSND DUCKS OF HAZZARD
-GAMEL( 200?, sc4ducks ,0, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ducksa ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ducksb ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ducksc ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ducks ,0, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ducksa ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ducksb ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ducksc ,sc4ducks, sc4, sc4ducks, sc4_state, sc4, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4glad)
{
@@ -45937,14 +45937,14 @@ INPUT_PORTS_START( sc4glad ) // this structure is generated
INPUT_PORTS_END
// PR2255 GLADIATOR GLAD SOUNDS GLADIATOR
-GAMEL( 200?, sc4glad ,0, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4glada ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gladb ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gladc ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gladd ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4glade ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gladf ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gladg ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4glad ,0, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4glada ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gladb ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gladc ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gladd ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4glade ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gladf ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gladg ,sc4glad, sc4_200_4rb, sc4glad, sc4_state, sc4glad, ROT0, "QPS / Mazooma","Gladiator (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4hotdg ) // this structure is generated
@@ -46006,10 +46006,10 @@ INPUT_PORTS_START( sc4hotdg ) // this structure is generated
INPUT_PORTS_END
// PR1936 AWP HOT DOG SCORP4 PR1916 HOT DOG SOUNDS11 HOT DOG S.SITE
-GAMEL( 200?, sc4hotdg ,0, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotdga ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4hotdgb ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotdgc ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotdg ,0, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotdga ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4hotdgb ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotdgc ,sc4hotdg, sc4, sc4hotdg, sc4_state, sc4mbus, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4pp)
{
@@ -46085,11 +46085,11 @@ INPUT_PORTS_END
// doesn't like any of the sound roms we have
// PR2562 PINK PANTHER PINK SOUNDS PINK PANTHER
-GAMEL( 200?, sc4pp ,0, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppa ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppb ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppc ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppd ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pp ,0, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppa ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppb ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppc ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppd ,sc4pp, sc4_200_4ra, sc4pp, sc4_state, sc4pp, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4ppsag ) // this structure is generated
@@ -46145,16 +46145,16 @@ INPUT_PORTS_START( sc4ppsag ) // this structure is generated
INPUT_PORTS_END
// PR2303 STRIKES AGAIN PPSA SOUNDS STRIKES AGAIN
-GAMEL( 200?, sc4ppsag ,0, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsaga ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagb ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagc ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagd ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsage ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagf ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagg ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagh ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ppsagi ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsag ,0, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsaga ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagb ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagc ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagd ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsage ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagf ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagg ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagh ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ppsagi ,sc4ppsag, sc4, sc4ppsag, sc4_state, sc4, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4pog ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46222,16 +46222,16 @@ INPUT_PORTS_START( sc4pog ) // this structure is generated
INPUT_PORTS_END
// PR1938 AWP POTS OF GOLD SCORP4 PR1918 POTS OF GOLD SOUNDS11 POTS OF GOLD S.SITE
-GAMEL( 200?, sc4pog ,0, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4poga ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogb ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogc ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogd ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4poge ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogf ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogg ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogh ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pogi ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pog ,0, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4poga ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogb ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogc ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogd ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4poge ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogf ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogg ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogh ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pogi ,sc4pog, sc4, sc4pog, sc4_state, sc4mbus, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4pwrpl ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46281,10 +46281,10 @@ INPUT_PORTS_START( sc4pwrpl ) // this structure is generated
INPUT_PORTS_END
// PR2272 POWER PLAY PPLY SOUNDS
-GAMEL( 200?, sc4pwrpl ,0, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrpla ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrplb ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrplc ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrpl ,0, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrpla ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrplb ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrplc ,sc4pwrpl, sc4, sc4pwrpl, sc4_state, sc4, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4swywm)
@@ -46341,14 +46341,14 @@ INPUT_PORTS_END
// PR2232 SPIN WHEN YOU'RE WINNING SPIN SOUNDS
-GAMEL( 200?, sc4swywm ,0, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywma ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywmb ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywmc ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywmd ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywme ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywmf ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4swywmg ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywm ,0, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywma ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywmb ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywmc ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywmd ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywme ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywmf ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4swywmg ,sc4swywm, sc4_200_5ra, sc4swywm, sc4_state, sc4swywm, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sumit)
{
@@ -46423,10 +46423,10 @@ INPUT_PORTS_START( sc4sumit ) // this structure is generated
INPUT_PORTS_END
// PR2176 SUMMIT UP SUMMIT SOUNDS SUMMIT UP (was in the Suits U Sir set)
-GAMEL( 200?, sc4sumit ,0, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sumita ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sumitb ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sumitc ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sumit ,0, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sumita ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sumitb ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sumitc ,sc4sus, sc4_200_4ra, sc4sumit, sc4_state, sc4sumit, ROT0, "Mazooma","Summit Up (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4tpsht ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46475,14 +46475,14 @@ INPUT_PORTS_START( sc4tpsht ) // this structure is generated
INPUT_PORTS_END
// PR2211 TOP OF THE SHOTS TOTS SOUNDS TOP OF THE SHOTS
-GAMEL( 200?, sc4tpsht ,0, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshta ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshtb ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshtc ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshtd ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshte ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshtf ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tpshtg ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpsht ,0, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshta ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshtb ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshtc ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshtd ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshte ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshtf ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tpshtg ,sc4tpsht, sc4, sc4tpsht, sc4_state, sc4, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4adren ) // this structure is generated
@@ -46531,10 +46531,10 @@ INPUT_PORTS_END
// does not want the 'COTL SOUNDS' from Cash On The Lash
// PR2118 ADRENALIN COTL SOUNDS ADRENALIN
-GAMEL( 200?, sc4adren ,0, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adrena ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adrenb ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4adrenc ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adren ,0, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adrena ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adrenb ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4adrenc ,sc4adren, sc4, sc4adren, sc4_state, sc4, ROT0, "Mazooma","Adrenalin (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4bingb ) // this structure is generated
@@ -46589,8 +46589,8 @@ INPUT_PORTS_END
// check if Side Splitter sound is correct
// RNG ERROR 99
// PR21xx BINGO BELLE SSPT SOUNDS BINGO BELLE
-GAMEL( 200?, sc4bingb ,0, sc4, sc4bingb, sc4_state, sc4, ROT0, "Mazooma","Bingo Belle (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bingba ,sc4bingb, sc4, sc4bingb, sc4_state, sc4, ROT0, "Mazooma","Bingo Belle (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bingb ,0, sc4, sc4bingb, sc4_state, sc4, ROT0, "Mazooma","Bingo Belle (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bingba ,sc4bingb, sc4, sc4bingb, sc4_state, sc4, ROT0, "Mazooma","Bingo Belle (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cerup ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46641,7 +46641,7 @@ INPUT_PORTS_END
// PR2020 CASH ERUPTION ERUP SOUNDS CASH ERUPTION
-GAMEL( 200?, sc4cerup ,0, sc4, sc4cerup, sc4_state, sc4, ROT0, "Mazooma","Cash Eruption (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cerup ,0, sc4, sc4cerup, sc4_state, sc4, ROT0, "Mazooma","Cash Eruption (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cexpl ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46693,22 +46693,22 @@ INPUT_PORTS_START( sc4cexpl ) // this structure is generated
INPUT_PORTS_END
// PR2076 CASH EXPLOSION CEXP SOUNDS CASH EXPLSION
-GAMEL( 200?, sc4cexpl ,0, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexpla ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexplb ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexplc ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexplf ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexplg ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexpl ,0, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexpla ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexplb ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexplc ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexplf ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexplg ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2120 CASH EXPLOSION CEXP SOUNDS CASH EXPLSION
-GAMEL( 200?, sc4cexpld ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cexple ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexpld ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cexple ,sc4cexpl, sc4, sc4cexpl, sc4_state, sc4, ROT0, "Mazooma","Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2062 CASINO ROYALE CROY SOUNDS CASINO ROYALE
-GAMEL( 200?, sc4casry ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casryc ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casry ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casryc ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2075 CASINO ROYALE DUCRV46 CROY CROY SOUNDS CASINO ROYALE (Jumping Bean copyright?)
-GAMEL( 200?, sc4casryd ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casrye ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casryd ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casrye ,sc4casry, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// I guess this isn't a fruit machine
INPUT_PORTS_START( sc4casrya ) // this structure is generated
@@ -46753,8 +46753,8 @@ INPUT_PORTS_START( sc4casrya ) // this structure is generated
INPUT_PORTS_END
// PR2073, CZECH CASINO ROYALE.......................CROY SOUNDS... (not standard header)
-GAMEL( 200?, sc4casrya ,sc4casry, sc4, sc4casrya, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4casryb ,sc4casry, sc4, sc4casrya, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casrya ,sc4casry, sc4, sc4casrya, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4casryb ,sc4casry, sc4, sc4casrya, sc4_state, sc4, ROT0, "Mazooma","Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4clucl ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46814,8 +46814,8 @@ INPUT_PORTS_START( sc4clucl ) // this structure is generated
INPUT_PORTS_END
// PR2237 CLUB CLUEDO CLUB CLUEDO CLUB CCLU SOUNDS CLUB CLUEDO
-GAMEL( 200?, sc4clucl ,0, sc4, sc4clucl, sc4_state, sc4, ROT0, "Mazooma","Cluedo Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4clucla ,sc4clucl, sc4, sc4clucl, sc4_state, sc4, ROT0, "Mazooma","Cluedo Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clucl ,0, sc4, sc4clucl, sc4_state, sc4, ROT0, "Mazooma","Cluedo Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4clucla ,sc4clucl, sc4, sc4clucl, sc4_state, sc4, ROT0, "Mazooma","Cluedo Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cyc ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46881,11 +46881,11 @@ INPUT_PORTS_END
// half size sound rom, or missing a rom
// PR2058 COUNT YER CASH PR2058 COUNT YER CASH SOUNDS11
-GAMEL( 200?, sc4cyc ,0, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cyca ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cycb ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cycc ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cycd ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cyc ,0, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cyca ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cycb ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cycc ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cycd ,sc4cyc, sc4, sc4cyc, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4cyccl ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46951,10 +46951,10 @@ INPUT_PORTS_END
// half size sound rom, or missing a rom
// PR2092 CLUB COUNT YER CASH COUNT YER CASH CLUB CLCC SOUNDS
-GAMEL( 200?, sc4cyccl ,0, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cyccla ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cycclb ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cycclc ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cyccl ,0, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cyccla ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cycclb ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cycclc ,sc4cyccl, sc4, sc4cyccl, sc4_state, sc4, ROT0, "Mazooma","Count Yer Cash Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4supst ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -46998,8 +46998,8 @@ INPUT_PORTS_START( sc4supst ) // this structure is generated
INPUT_PORTS_END
// PR2206 STREAKX STRX SOUNDS SUPER STREAX
-GAMEL( 200?, sc4supst ,0, sc4, sc4supst, sc4_state, sc4, ROT0, "Mazooma","Super Streax (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4supsta ,sc4supst, sc4, sc4supst, sc4_state, sc4, ROT0, "Mazooma","Super Streax (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4supst ,0, sc4, sc4supst, sc4_state, sc4, ROT0, "Mazooma","Super Streax (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4supsta ,sc4supst, sc4, sc4supst, sc4_state, sc4, ROT0, "Mazooma","Super Streax (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4sf ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47049,11 +47049,11 @@ INPUT_PORTS_START( sc4sf ) // this structure is generated
INPUT_PORTS_END
// NUMBER PR2024 STREET FIGHTER STRF SOUNDS STREET FIGHTER
-GAMEL( 200?, sc4sf ,0, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sfa ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sfb ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sfc ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sfd ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sf ,0, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sfa ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sfb ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sfc ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sfd ,sc4sf, sc4, sc4sf, sc4_state, sc4, ROT0, "Mazooma","Street Fighter (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4hyde ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47106,10 +47106,10 @@ INPUT_PORTS_START( sc4hyde ) // this structure is generated
INPUT_PORTS_END
// PR2036 HYDE & STREAK HYDE SOUNDS HYDE & STREAK
-GAMEL( 200?, sc4hyde ,0, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hydea ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hydeb ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hydec ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hyde ,0, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hydea ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hydeb ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hydec ,sc4hyde, sc4, sc4hyde, sc4_state, sc4, ROT0, "Mazooma","Hyde & Streak (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4rtclb ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47176,19 +47176,19 @@ INPUT_PORTS_START( sc4rtclb ) // this structure is generated
INPUT_PORTS_END
// PR2051 CLUB ROLLING THUNDER CLRT SOUNDS ROLLING THUNDER
-GAMEL( 200?, sc4rtclb ,0, sc4, sc4rtclb, sc4_state, sc4, ROT0, "Mazooma","Rolling Thunder Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rtclba ,sc4rtclb, sc4, sc4rtclb, sc4_state, sc4, ROT0, "Mazooma","Rolling Thunder Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtclb ,0, sc4, sc4rtclb, sc4_state, sc4, ROT0, "Mazooma","Rolling Thunder Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rtclba ,sc4rtclb, sc4, sc4rtclb, sc4_state, sc4, ROT0, "Mazooma","Rolling Thunder Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// doesn't like the sound roms we have (WILDJACK SOUNDS)
// PR0000 WILD JACKPOTS WJPT SOUNDS WILD JACKPOTS
-GAMEL( 200?, sc4wldjk ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjka ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjkb ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjkc ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjkd ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjke ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjkf ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldjkg ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjk ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjka ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjkb ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjkc ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjkd ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjke ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjkf ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldjkg ,sc4wldjk, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// only sc4jive has this structure intact
INPUT_PORTS_START( sc4jive ) // this structure is generated
@@ -47239,12 +47239,12 @@ INPUT_PORTS_START( sc4jive ) // this structure is generated
INPUT_PORTS_END
// PR2096 JIVE MONEY JIVE SOUNDS JIVE MONEY
-GAMEL( 200?, sc4jive ,0, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2096) (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jive ,0, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2096) (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2160 JIVE MONEY JMON SOUNDS JIVE MONEY
-GAMEL( 200?, sc4jivea ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jiveb ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jivec ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jived ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jivea ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiveb ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jivec ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jived ,sc4jive, sc4, sc4jive, sc4_state, sc4, ROT0, "Mazooma","Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4mclb ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47305,12 +47305,12 @@ INPUT_PORTS_END
// no sound roms
// PR2164 CLUB MONOPOLY CLB MONOPOLY WOW CLUB CWOW SOUNDS CLUB MONOPOLOY
-GAMEL( 200?, sc4mclb ,0, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mclba ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mclbb ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mclbc ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mclbd ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mclbe ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclb ,0, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclba ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclbb ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclbc ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclbd ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mclbe ,sc4mclb, sc4, sc4mclb, sc4_state, sc4, ROT0, "Mazooma","Monopoly Club (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4monot ) // this structure is generated
@@ -47353,10 +47353,10 @@ INPUT_PORTS_START( sc4monot ) // this structure is generated
// 0x0010 - "deflt" // standard input (expected here)
INPUT_PORTS_END
-GAMEL( 200?, sc4monot ,0, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2133MONOPOLY TTT MONOPOLY TTT MAZ MONL SOUNDS MONOPOLY
-GAMEL( 200?, sc4monota ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monotb ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monotc ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2133MONOPOLY TTT MONOPOLY TTT ARCADE MONL SOUNDS MONOPOLY
+GAMEL( 200?, sc4monot ,0, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2133MONOPOLY TTT MONOPOLY TTT MAZ MONL SOUNDS MONOPOLY
+GAMEL( 200?, sc4monota ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monotb ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monotc ,sc4monot, sc4, sc4monot, sc4_state, sc4, ROT0, "Mazooma","Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2133MONOPOLY TTT MONOPOLY TTT ARCADE MONL SOUNDS MONOPOLY
INPUT_PORTS_START( sc4r2r ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47410,10 +47410,10 @@ INPUT_PORTS_START( sc4r2r ) // this structure is generated
INPUT_PORTS_END
// PR2037 REEL TO REEL RTOR SOUNDS REEL 2 REEL
-GAMEL( 200?, sc4r2r ,0, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4r2ra ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4r2rb ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4r2rc ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4r2r ,0, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4r2ra ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4r2rb ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4r2rc ,sc4r2r, sc4, sc4r2r, sc4_state, sc4, ROT0, "Mazooma","Reel To Reel (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4revo ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47466,12 +47466,12 @@ INPUT_PORTS_START( sc4revo ) // this structure is generated
INPUT_PORTS_END
// PR2020 REVOLVER REV SOUNDS REVOLVER
-GAMEL( 200?, sc4revo ,0, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4revoa ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4revob ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4revoc ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4revod ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4revoe ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4revo ,0, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4revoa ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4revob ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4revoc ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4revod ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4revoe ,sc4revo, sc4, sc4revo, sc4_state, sc4, ROT0, "Mazooma","Revolver (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4slih ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47521,12 +47521,12 @@ INPUT_PORTS_END
// half size sound roms
// PR2145 SOME LIKE IT HOT SLIH SOUNDS SOME LIKE IT HOT
-GAMEL( 200?, sc4slih ,0, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sliha ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slihb ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slihc ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slihd ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4slihe ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4slih ,0, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sliha ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4slihb ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4slihc ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4slihd ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4slihe ,sc4slih, sc4, sc4slih, sc4_state, sc4, ROT0, "Mazooma","Some Like It Hot (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
INPUT_PORTS_START( sc4gcb ) // this structure is generated
PORT_INCLUDE( sc4_base )
@@ -47581,17 +47581,17 @@ INPUT_PORTS_END
// no sound roms
// PR2125 GRAND BLASTER CASH GRAN SOUNDS GRAND BLASTER
-GAMEL( 200?, sc4gcb ,0, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcba ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbb ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbc ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbd ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbe ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbf ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbg ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbh ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbi ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gcbj ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcb ,0, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcba ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbb ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbc ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbd ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbe ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbf ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbg ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbh ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbi ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gcbj ,sc4gcb, sc4, sc4gcb, sc4_state, sc4, ROT0, "Mazooma","Grand Blaster Cash (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
/****************************************************************************************************************************************************************************************************************/
@@ -47614,12 +47614,12 @@ DRIVER_INIT_MEMBER(sc4_state,sc4spark)
// PR6912 SOUTH PARK PR6912 SOUTH PARK SOUNDS11 SOUTH PARK
-GAMEL( 200?, sc4spark ,0, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sparka ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sparkb ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sparkc ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sparkd ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sparke ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4spark ,0, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sparka ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sparkb ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sparkc ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sparkd ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sparke ,sc4spark, sc4_4reel, sc4, sc4_state, sc4spark, ROT0, "BFM","South Park (BFM) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -47630,10 +47630,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4brkfs)
// PR6910 BIG BREAKFAST PR6910 BRKF SOUNDS11 BIG BREAKFAST
-GAMEL( 200?, sc4brkfs ,0, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brkfsa ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brkfsb ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brkfsc ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brkfs ,0, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brkfsa ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brkfsb ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brkfsc ,sc4brkfs, sc4_4reel, sc4, sc4_state, sc4brkfs, ROT0, "BFM","The Big Breakfast (BFM) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -47643,13 +47643,13 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gslam)
}
// PR6934 GRAND SLAM PR6934 SLM2 SOUNDS11 GRAND SLAM
-GAMEL( 200?, sc4gslam ,0, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslama ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslamb ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslamc ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslamd ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslame ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gslamf ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslam ,0, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslama ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslamb ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslamc ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslamd ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslame ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gslamf ,sc4gslam, sc4, sc4, sc4_state, sc4gslam, ROT0, "BFM","Grandslam Club (BFM) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -47661,10 +47661,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4canca)
}
// PR7017CASINO CAN CAN CASH PR7017,Casino CAN CAN CASH, LINE SOUNDS CAN CAN CASH
-GAMEL( 200?, sc4canca ,0, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cancaa ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cancab ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cancac ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4canca ,0, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cancaa ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cancab ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cancac ,sc4canca, sc4_4reel, sc4, sc4_state, sc4canca, ROT0, "Mazooma","Can Can Cash Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -47674,17 +47674,17 @@ DRIVER_INIT_MEMBER(sc4_state,sc4hotpr)
}
// PR6911 HOT PROPERTY PR6911 HOT PROPERTY SOUNDS11 HOT PROPERTY
-GAMEL( 200?, sc4hotpr ,0, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotprb ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotprd ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotpre ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotpra ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM / Whitbread", "Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hotprc ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM / Whitbread", "Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotpr ,0, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotprb ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotprd ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotpre ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM", "Hot Property (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotpra ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM / Whitbread", "Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hotprc ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "BFM / Whitbread", "Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// is this some kind of reworked / licensed version of Hot Property?
// PR6911 HOT PROPERTY PR6911 HOT PROPERTY SOUNDS11 $$ CASH 'N' BURN
-GAMEL( 200?, sc4cburn ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "Qps","Cash 'n' Burn (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cburn ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "Qps","Cash 'n' Burn (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6911 HOT PROPERTY V4.0 PR6911 HOT PROPERTY SOUNDS11 $ CASH 'N' BURN
-GAMEL( 200?, sc4cburna ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "Qps","Cash 'n' Burn (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cburna ,sc4hotpr, sc4_4reel, sc4, sc4_state, sc4hotpr, ROT0, "Qps","Cash 'n' Burn (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -47696,17 +47696,17 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cnfr)
// PR6815 CASH N FRUIT PR6815 CASH N FRUIT SOUNDS11
-GAMEL( 200?, sc4cnfr ,0, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfra ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfrb ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfre ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfrf ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfrg ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfr ,0, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfra ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrb ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfre ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrf ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrg ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR4615 CASH N FRUIT S+P98 PR6815 CASH N FRUIT SOUNDS11
-GAMEL( 200?, sc4cnfrc ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfrd ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfrh ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cnfri ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrc ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrd ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfrh ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cnfri ,sc4cnfr, sc4_4reel, sc4, sc4_state, sc4cnfr, ROT0, "BFM","Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -47716,10 +47716,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cla7)
}
// PR2111 CLASSIC 7'S CLASS SOUNDS CLASSIC 7'S
-GAMEL( 200?, sc4cla7 ,0, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cla7a ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cla7b ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cla7c ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cla7 ,0, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cla7a ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cla7b ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cla7c ,sc4cla7, sc4_200_altb, sc4, sc4_state, sc4cla7, ROT0, "Mazooma","Classic 7s (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4cclas)
@@ -47733,40 +47733,40 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cclas_mbus)
}
// PR7148 CLUB CLASS PR7148 CLUB CLASS SOUNDS11 CLUB CLASS
-GAMEL( 200?, sc4cclas ,0, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasa ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasb ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasc ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasd ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasf ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasi ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasj ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclask ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasl ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasm ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasn ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclaso ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasq ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasr ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclass ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclast ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasu ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasv ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 19)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasw ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 20)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas ,0, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasa ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasb ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasc ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasd ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasf ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasi ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasj ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclask ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasl ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasm ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasn ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclaso ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasq ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasr ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclass ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclast ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasu ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasv ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasw ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7148 CLUB CLASS CLUB CLASS CLUB PR7148 CLUB CLASS SOUNDS11 CLUB CLASS
-GAMEL( 200?, sc4cclasx ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 21)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasy ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 22)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasz ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 23)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclas0 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 24)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclas1 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 25)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclas2 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 26)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclas3 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 27)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclas4 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 28)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasx ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasy ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasz ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas0 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas1 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 25)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas2 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 26)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas3 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 27)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclas4 ,sc4cclas, sc4, sc4, sc4_state, sc4cclas_mbus, ROT0, "BFM","Club Class (Bellfruit) (Scorpion 4) (set 28)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7148 CLUB CLASS 65% FERRY PR7148 CLUB CLASS SOUNDS11 CLUB CLASS
-GAMEL( 200?, sc4cclase ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasg ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclash ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cclasp ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclase ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasg ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclash ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cclasp ,sc4cclas, sc4, sc4, sc4_state, sc4cclas, ROT0, "BFM","Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4crcc)
@@ -47776,12 +47776,12 @@ DRIVER_INIT_MEMBER(sc4_state,sc4crcc)
// PR6837 CLASSIC CLUB COPS AND ROBBERS PR6837 COPS SOUNDS11 COPS AND ROBBERS
-GAMEL( 200?, sc4crcc ,0, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4crcca ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4crcc ,0, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4crcca ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
// PR6837 CLASSIC CLUB COPS AND ROBBERS 65% PR6837 COPS SOUNDS11
// the roms are a weird size, and the code is invalid, bad dumps? can they be fixed?
-GAMEL( 200?, sc4crccb ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4crccc ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4crccb ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4crccc ,sc4crcc, sc4dmd, sc4, sc4_state, sc4crcc, ROT0, "BFM","Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
@@ -47793,9 +47793,9 @@ DRIVER_INIT_MEMBER(sc4_state,sc4czfr)
// the unusual sound rom numbering suggests a non-English market version, although the startup messages are in English
// PR6982 CRAZY FRUITS 1.02 95004150 CRAZY FRUITS PR6982 CRAZY FRUITS
-GAMEL( 200?, sc4czfr ,0, sc4_4reel, sc4, sc4_state, sc4czfr, ROT0, "BFM","Crazy Fruits (Germany?) (PR6982, GCRF, 1.02) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // German set?
+GAMEL( 200?, sc4czfr ,0, sc4_4reel, sc4, sc4_state, sc4czfr, ROT0, "BFM","Crazy Fruits (Germany?) (PR6982, GCRF, 1.02) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // German set?
// P_6_8_ _R_Z_ _R_I_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _5_0_1_0_C_A_Y_F_U_T_ _R_9_2_ _
-GAMEL( 200?, sc4czfrd ,sc4czfr, sc4_4reel, sc4, sc4_state, sc4czfr, ROT0, "BFM","Crazy Fruits (Germany?) (PR6982, GCRF) (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing (in 'up for it' set)
+GAMEL( 200?, sc4czfrd ,sc4czfr, sc4_4reel, sc4, sc4_state, sc4czfr, ROT0, "BFM","Crazy Fruits (Germany?) (PR6982, GCRF) (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing (in 'up for it' set)
DRIVER_INIT_MEMBER(sc4_state,sc4cfcas)
@@ -47809,58 +47809,58 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cfcas_mbus)
}
// PR6923 CASINO CRAZY FRUITS PR6923 CRAZY FRUITS SOUNDS11
-GAMEL( 200?, sc4cfcas ,0, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasa ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasb ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcase ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasf ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcask ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasm ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasp ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasq ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcass ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcast ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasu ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasv ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasw ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasx ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasy ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasz ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas0 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas1 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 19)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas2 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 20)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas6 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 21)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas7 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 22)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas8 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 23)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasaa ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 24)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasaf ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 25)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasag ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 26)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasah ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 27)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasai ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 28)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasaj ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 29)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasak ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 30)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasal ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 31)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasam ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 32)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas ,0, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasa ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasb ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcase ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasf ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcask ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasm ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasp ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasq ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcass ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcast ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasu ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasv ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasw ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasx ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasy ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasz ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas0 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas1 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas2 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas6 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas7 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas8 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasaa ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasaf ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 25)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasag ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 26)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasah ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 27)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasai ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 28)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasaj ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 29)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasak ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 30)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasal ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 31)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasam ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas, ROT0, "BFM","Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 32)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// OK
-GAMEL( 200?, sc4cfcasr ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasl ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasi ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasj ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasn ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcaso ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasr ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasl ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasi ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasj ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasn ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcaso ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PAY UNIT ERR 17
-GAMEL( 200?, sc4cfcasc ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasd ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasg ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcash ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas3 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas9 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasab ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasac ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas4 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcas5 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasad ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfcasae ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasc ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasd ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasg ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcash ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas3 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas9 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasab ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasac ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas4 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcas5 ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasad ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfcasae ,sc4cfcas, sc4_3reel, sc4, sc4_state, sc4cfcas_mbus, ROT0, "BFM","Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -47870,52 +47870,52 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cfclb)
}
// PR6931 CLUB CRAZY FRUITS PR6931 CRZY SOUNDS11
-GAMEL( 200?, sc4cfclb ,0, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclba ,sc4cfclb, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cfclbb ,sc4cfclb, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclb ,0, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclba ,sc4cfclb, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cfclbb ,sc4cfclb, sc4_5reel, sc4, sc4_state, sc4cfclb, ROT0, "BFM","Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7141 CRAZY GANG PR7141 CRAZY GANG SOUNDS11 CRAZY GANG
-GAMEL( 200?, sc4crzgn ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 1, Top Box)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
-GAMEL( 200?, sc4crzgnb ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 2, Top Box)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
-GAMEL( 200?, sc4crzgng ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 3, Top Box)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
-GAMEL( 200?, sc4crzgnj ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 4, Top Box)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4crzgn ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 1, Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4crzgnb ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 2, Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4crzgng ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 3, Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
+GAMEL( 200?, sc4crzgnj ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 4, Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Top Box
// none of these do anything with the reels, probably waiting for the Top Box?
-GAMEL( 200?, sc4crzgna ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnc ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnd ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgne ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnf ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnh ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgni ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnk ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnl ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnm ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnn ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgno ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnp ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnq ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnx ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4crzgny ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnz ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn0 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn1 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 19)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn2 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 20)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgna ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnc ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnd ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgne ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnf ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnh ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgni ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnk ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnl ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnm ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnn ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgno ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnp ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnq ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnx ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4crzgny ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnz ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn0 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn1 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn2 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// NUMBER PR7141 CRAZY GANG PR7141 CRAZY GANG SOUNDS11 CRAZY GANG ARCADE
-GAMEL( 200?, sc4crzgnr ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgns ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnt ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnu ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnv ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgnw ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn3 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn4 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn5 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn6 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn7 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzgn8 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnr ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgns ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnt ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnu ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnv ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgnw ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn3 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn4 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn5 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn6 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn7 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzgn8 ,sc4crzgn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -47927,12 +47927,12 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cccsh)
// SWP, different buttons to most games, no reels
// PR7023 CRISS CROSS CASH CCC SOUNDS
-GAMEL( 200?, sc4cccsh ,0, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cccsha ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cccshb ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cccshc ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cccshd ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cccshe ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccsh ,0, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccsha ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccshb ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccshc ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccshd ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cccshe ,sc4cccsh, sc4_no_reels, sc4, sc4_state, sc4cccsh, ROT0, "Mazooma","Criss Cross Cash (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4daylt)
@@ -47943,21 +47943,21 @@ DRIVER_INIT_MEMBER(sc4_state,sc4daylt)
// PR6801 DAYLIGHT ROBBERY PR6801 DAYLIGHT SOUNDS
-GAMEL( 200?, sc4daylt ,0, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4daylta ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltb ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltc ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltg ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4daylth ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4daylti ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltj ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4daylt ,0, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4daylta ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltb ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltc ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltg ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4daylth ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4daylti ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltj ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR4601 DAYLIGHT ROBBERY SP98 PR6801 DAYLIGHT SOUNDS
-GAMEL( 200?, sc4dayltd ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4daylte ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltf ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltk ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltl ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4dayltm ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltd ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4daylte ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltf ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltk ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltl ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4dayltm ,sc4daylt, sc4_4reel_200, sc4, sc4_state, sc4daylt, ROT0, "BFM","Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -47968,11 +47968,11 @@ DRIVER_INIT_MEMBER(sc4_state,sc4disco)
}
// PR7048 DISCO INFERNO DISCO SOUNDS DISCO INFERNO
-GAMEL( 200?, sc4disco ,0, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4discob ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4discoa ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4discoc ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4discod ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4disco ,0, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4discob ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4discoa ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4discoc ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4discod ,sc4disco, sc4_200_4r, sc4, sc4_state, sc4disco, ROT0, "Mazooma","Disco Inferno (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -47983,9 +47983,9 @@ DRIVER_INIT_MEMBER(sc4_state,sc4sstep)
// SUPER STEP..........................................................................................SUPERSTEPSND. (non-standard header)
-GAMEL( 200?, sc4sstep ,0, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps","Super Step (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Dough & Arrow clone? Super Step in header
-GAMEL( 200?, sc4sstepa ,sc4sstep, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps","Super Step (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Dough & Arrow clone? Super Step in header
-GAMEL( 200?, sc4sstepb ,sc4sstep, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps / 21 Casino","Super Step (Qps / 21 Casino) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // This one contains 21-Casino and Super Step strings
+GAMEL( 200?, sc4sstep ,0, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps","Super Step (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Dough & Arrow clone? Super Step in header
+GAMEL( 200?, sc4sstepa ,sc4sstep, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps","Super Step (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // Dough & Arrow clone? Super Step in header
+GAMEL( 200?, sc4sstepb ,sc4sstep, sc4, sc4, sc4_state, sc4sstep, ROT0, "Qps / 21 Casino","Super Step (Qps / 21 Casino) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // This one contains 21-Casino and Super Step strings
@@ -47995,19 +47995,19 @@ DRIVER_INIT_MEMBER(sc4_state,sc4fpitc)
}
// PR7119 FEVER_PITCH PR7119 FEVER PITCH SOUNDS11
-GAMEL( 200?, sc4fpitc ,0, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitca ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitcb ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitcd ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitce ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitcf ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitch ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitci ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitcj ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitck ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitc ,0, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitca ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcb ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcd ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitce ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcf ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitch ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitci ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcj ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitck ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// these 2 fail to show anything
-GAMEL( 200?, sc4fpitcc ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fpitcg ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcc ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fpitcg ,sc4fpitc, sc4_4reel, sc4, sc4_state, sc4fpitc, ROT0, "BFM","Fever Pitch (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48018,10 +48018,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4fcc)
}
// PR6835 FIRE CRACKER PR6835 FIRE SOUNDS11
-GAMEL( 200?, sc4fcc ,0, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4fcca ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4fccb ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4fccc ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4fcc ,0, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4fcca ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4fccb ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4fccc ,sc4fcc, sc4dmd, sc4, sc4_state, sc4fcc, ROT0, "BFM","Firecracker Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
@@ -48033,13 +48033,13 @@ DRIVER_INIT_MEMBER(sc4_state,sc4fwp)
// PR2016 WAYSPAYS PR2016,5WAYSPAYS, FWAY SOUNDS 5 WAYS PAYS
-GAMEL( 200?, sc4fwp ,0, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fwpa ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fwpb ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fwpc ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fwpcs ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // marked as 'casino'
-GAMEL( 200?, sc4fwpcsa ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fwpcsb ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwp ,0, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwpa ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwpb ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwpc ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwpcs ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // marked as 'casino'
+GAMEL( 200?, sc4fwpcsa ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fwpcsb ,sc4fwp, sc4_4reel, sc4, sc4_state, sc4fwp, ROT0, "Mazooma","Five Ways Pays (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48051,17 +48051,17 @@ DRIVER_INIT_MEMBER(sc4_state,sc4fd7th)
// PR6804 FRANKIE DETTORI PR6804 FRANKIE SOUNDS
-GAMEL( 200?, sc4fd7th ,0, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7tha ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thb ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7the ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thf ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thg ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7th ,0, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7tha ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thb ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7the ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thf ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thg ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6804 FRANKIE DETTORI SP98 PR6804 FRANKIE SOUNDS
-GAMEL( 200?, sc4fd7thc ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thd ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thh ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fd7thi ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thc ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thd ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thh ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fd7thi ,sc4fd7th, sc4_4reel, sc4, sc4_state, sc4fd7th, ROT0, "BFM","Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4frsu)
@@ -48070,14 +48070,14 @@ DRIVER_INIT_MEMBER(sc4_state,sc4frsu)
}
// PR6928 CASINO FRUIT N SUITS PR6928 FRUIT N SUITS SOUNDS11
-GAMEL( 200?, sc4frsu ,0, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsua ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsub ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsuc ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsud ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsue ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsuf ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frsug ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsu ,0, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsua ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsub ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsuc ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsud ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsue ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsuf ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frsug ,sc4frsu, sc4, sc4, sc4_state, sc4frsu, ROT0, "BFM","Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48089,12 +48089,12 @@ DRIVER_INIT_MEMBER(sc4_state,sc4goldo)
// PR7024 GOLDEN OLDIE OLDIE SOUNDS
-GAMEL( 200?, sc4goldo ,0, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldoa ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldob ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4goldoc ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gocas ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gocasa ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldo ,0, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldoa ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldob ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4goldoc ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gocas ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gocasa ,sc4goldo, sc4_4reel, sc4, sc4_state, sc4goldo, ROT0, "Mazooma","Casino Golden Oldie (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48124,31 +48124,31 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gx)
// Listed as Bonus Bar X, what's the correct title?
// PR7036GOLDEN X GOLDEN X ARCADE BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4bonbx ,0, sc4_3reel_200, sc4bonbx4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxc ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxd ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxe ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxf ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbx ,0, sc4_3reel_200, sc4bonbx4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxc ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxd ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxe ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxf ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbxm, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7036GOLDEN X BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4bonbxa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxg ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxh ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxi ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxj ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxk ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bonbxl ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxg ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxh ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxi ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxj ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxk ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bonbxl ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4bonbx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7036 GOLDEN X BARX SOUNDS (these were listed as Golden X Casino but seem to be Bar X / Bonus Bar X)
-GAMEL( 200?, sc4gx ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxcasa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxcasb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxcasc ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxcasd ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxcasa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxcasb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxcasc ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxcasd ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7036GOLDEN X BARX SOUNDS GOLDEN
-GAMEL( 200?, sc4gxcase ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxcasf ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gxa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // wasn't marked as Casino
-GAMEL( 200?, sc4gxb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // wasn't marked as Casino
+GAMEL( 200?, sc4gxcase ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxcasf ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gxa ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // wasn't marked as Casino
+GAMEL( 200?, sc4gxb ,sc4bonbx, sc4_3reel_200, sc4, sc4_state, sc4gx, ROT0, "Mazooma","Bar X (Mazooma) (Scorpion 4) (BARX, set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // wasn't marked as Casino
@@ -48162,14 +48162,14 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gggtb)
// TBOX
// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
-GAMEL( 200?, sc4ggtb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
-GAMEL( 200?, sc4ggtba ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggtbb ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggtb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
+GAMEL( 200?, sc4ggtba ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggtbb ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
// PR2056 GOLD X TRIPLE BARX SOUNDS J GOLD X TRIPLE (this was in a set just called 'top box')
-GAMEL( 200?, sc4tbox ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tbox ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE (these were in a Monopoly set, did it use the same top box code?, could be for Monopoly Deluxe?)
-GAMEL( 200?, sc4monog ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
-GAMEL( 200?, sc4monoga ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
+GAMEL( 200?, sc4monog ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
+GAMEL( 200?, sc4monoga ,sc4ggtb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
@@ -48192,79 +48192,79 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gx3)
// GLDX
// 25GBP sets
// PR2056 GOLDEN X GOLDEN GAME ARCADE BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4ggame ,0, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggamei ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamep ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameq ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamer ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame ,0, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggamei ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamep ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameq ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamer ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// 35GBP sets
-GAMEL( 200?, sc4ggame7 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame8 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame9 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameaa ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameab ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameac ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamead ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameae ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame7 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame8 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame9 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameaa ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameab ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameac ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamead ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameae ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// pay unit error
-GAMEL( 200?, sc4ggamel ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamem ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamew ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamex ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamey ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamez ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame1 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame2 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamel ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamem ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamew ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamex ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamey ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamez ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame1 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame2 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggamem, ROT0, "Mazooma","Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// 25GBP, no 41 check
// PR2056 GOLDEN X BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4ggamea ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggameb ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggamec ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggamed ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggames ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamet ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggameu ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamea ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggameb ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggamec ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggamed ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggames ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamet ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggameu ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// 30GBP, no 41 check
-GAMEL( 200?, sc4ggamef ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggameg ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggamej ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamek ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggamev ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame3 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame4 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame5 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame6 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamef ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggameg ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggamej ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamek ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamev ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame3 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame4 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame5 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame6 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// pay unit error
-GAMEL( 200?, sc4ggamen ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4ggame0 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggamen ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4ggame0 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// PR2056 GOLDEN X BARX SOUNDS GOLDEN X (are these really Gold Diggers?)
-GAMEL( 200?, sc4gdmz ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // GLDX
-GAMEL( 200?, sc4gdmza ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // GLDX
+GAMEL( 200?, sc4gdmz ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // GLDX
+GAMEL( 200?, sc4gdmza ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4ggame, ROT0, "Mazooma","Golden X (Mazooma) (PR2056) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // GLDX
// boot as GLDX, not happy with this sound rom..
// PR2056 GOLDEN X BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4gx3 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3a ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3b ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3c ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3d ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3e ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3f ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gx3g ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3 ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3a ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3b ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3c ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3d ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3e ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3f ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gx3g ,sc4ggame, sc4_3reel_200, sc4, sc4_state, sc4gx3, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// GLDX
// PR2056 GOLDEN X BARX SOUNDS GOLDEN X (was Golden Game Casino)
-GAMEL( 200?, sc4ggcas ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggcasa ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggcasb ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ggcasc ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcas ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcasa ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcasb ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggcasc ,sc4ggame, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden X (Mazooma) (Scorpion 4) (GLDX, set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// GLDC
// PR2056 GOLDEN X BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4gnc ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gnca ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gncb ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gncc ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gncd ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gnce ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gnc ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gnca ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gncb ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gncc ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gncd ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gnce ,sc4gnc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4ggg)
@@ -48274,29 +48274,29 @@ DRIVER_INIT_MEMBER(sc4_state,sc4ggg)
// do these sets have the wrong project name / ID strings? they boot at GGGB (Grand Golden Game) but their product ID in the header suggests standard Golden Game, looks like they forgot to update it at first, the topbox has the same issue
// PR2056 GOLDEN X GOLDEN GAME ARCADE BARX SOUNDS GOLDEN X
-GAMEL( 200?, sc4ggg ,0, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gggb ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4gggc ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4gggd ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4ggge ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4gggf ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4gggk ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggl ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggm ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggn ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggo ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggp ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggg ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ggg ,0, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gggb ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4gggc ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4gggd ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4ggge ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4gggf ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4gggk ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggl ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggm ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggn ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggo ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggp ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggg ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2353 GRAND GOLDEN GAME GRAND GOLDEN GAME MAZ BARX SOUNDS GOLDEN GAME
-GAMEL( 200?, sc4gggh ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4gggi ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggq ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggr ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4gggs ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggh ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4gggi ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggq ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggr ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggs ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4ggg, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// PR2056 GOLD X TRIPLE BARX SOUNDS 0 GOLD X TRIPLE (these were in a Grand Golden Game set)
-GAMEL( 200?, sc4gggtb ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4gggtb, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
-GAMEL( 200?, sc4gggtba ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4gggtb, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4gggtb ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4gggtb, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 GOLD X TRIPLE BARX SOUNDS GOLD X TRIPLE
+GAMEL( 200?, sc4gggtba ,sc4ggg, sc4_3reel_200, sc4, sc4_state, sc4gggtb, ROT0, "Mazooma","Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
@@ -48308,10 +48308,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gag)
// the (PR7019, GRAN) sets requires 3:2 and 3:3 ON to boot, (PR7019, GRAB) I'm not sure
// PR7019 GRAB A GRANNY GRANNY SOUNDS
-GAMEL( 200?, sc4gag ,0, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gagb ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gaga ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gagc ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gag ,0, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gagb ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gaga ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gagc ,sc4gag, sc4_4reel, sc4, sc4_state, sc4gag, ROT0, "Mazooma","Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48324,8 +48324,8 @@ DRIVER_INIT_MEMBER(sc4_state,sc4hfcl)
// PR1021 CLUB HAPPY FRUITS PR1021 HAPPY SOUNDS11 HAPPY FRUITS
-GAMEL( 200?, sc4hfcl ,0, sc4_5reel, sc4, sc4_state, sc4hfcl, ROT0, "BFM","Happy Fruits Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hfcla ,sc4hfcl, sc4_5reel, sc4, sc4_state, sc4hfcl, ROT0, "BFM","Happy Fruits Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfcl ,0, sc4_5reel, sc4, sc4_state, sc4hfcl, ROT0, "BFM","Happy Fruits Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hfcla ,sc4hfcl, sc4_5reel, sc4, sc4_state, sc4hfcl, ROT0, "BFM","Happy Fruits Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48335,10 +48335,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4holyw)
}
// PR7115 HOLLYWOOD PR7115 HOLLYWOOD SOUNDS11
-GAMEL( 200?, sc4holyw ,0, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM","Hollywood (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4holywb ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM","Hollywood (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4holywa ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM / Whitbread","Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4holywc ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM / Whitbread","Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4holyw ,0, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM","Hollywood (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4holywb ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM","Hollywood (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4holywa ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM / Whitbread","Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4holywc ,sc4holyw, sc4_4reel, sc4, sc4_state, sc4holyw, ROT0, "BFM / Whitbread","Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48349,21 +48349,21 @@ DRIVER_INIT_MEMBER(sc4_state,sc4jjf)
// PR6807 JUMPING JACK FLASH PR6807 JUMP SOUNDS11
-GAMEL( 200?, sc4jjf ,0, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfa ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfb ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfg ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfh ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfi ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjf ,0, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfa ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfb ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfg ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfh ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfi ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR4607 JUMPING JACK FLASH SP98 PR6807 JUMP SOUNDS11
-GAMEL( 200?, sc4jjfc ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfd ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfe ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjff ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfj ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfk ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfl ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jjfm ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfc ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfd ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfe ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjff ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfj ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfk ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfl ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jjfm ,sc4jjf, sc4_4reel, sc4, sc4_state, sc4jjf, ROT0, "BFM","Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48378,27 +48378,27 @@ DRIVER_INIT_MEMBER(sc4_state,sc4lined_mbus)
}
// PR7067CASINO LINE DANCER LINE SOUNDS LINE DANCER
-GAMEL( 200?, sc4lined ,0, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lineda ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lined ,0, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lineda ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PAY UNIT ERR 17 alarm during startup
-GAMEL( 200?, sc4linedb ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4linedc ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedb ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedc ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7067CASINO LINE DANCER LINE DANCER ARCADE LINE SOUNDS LINE DANCER
// PAY UNIT ERR 17 alarm during startup
-GAMEL( 200?, sc4linedd ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined_mbus, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4linede ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined_mbus, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedd ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined_mbus, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linede ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined_mbus, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// ok
-GAMEL( 200?, sc4linedf ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4linedg ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4linedh ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4linedi ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedf ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedg ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedh ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4linedi ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7067CASINO LINE DANCER LINE SOUNDS LINE DANCER (same as above?)
-GAMEL( 200?, sc4ldcas ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldcasa ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldcasb ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldcasc ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldcasd ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ldcase ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcas ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcasa ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcasb ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcasc ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcasd ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ldcase ,sc4lined, sc4_3reel, sc4, sc4_state, sc4lined, ROT0, "Mazooma","Line Dancer Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48415,13 +48415,13 @@ DRIVER_INIT_MEMBER(sc4_state,sc4luck7)
// PR2085 LUCKY SEVENS LUCKY SOUNDS
-GAMEL( 200?, sc4luck7 ,0, sc4_3reel, sc4, sc4_state, sc4luck7tb, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (Top Box)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luck7 ,0, sc4_3reel, sc4, sc4_state, sc4luck7tb, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PAY UNIT ERR 17
-GAMEL( 200?, sc4luck7a ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luck7b ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luck7c ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luck7a ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luck7b ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luck7c ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2085 LUCKY SEVENS LUCKY SEVENS ARCADE LUCKY SOUNDS LUCKY SEVENS
-GAMEL( 200?, sc4luck7d ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luck7d ,sc4luck7, sc4_3reel_200, sc4, sc4_state, sc4luck7, ROT0, "Mazooma","Lucky 7s (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48436,40 +48436,40 @@ DRIVER_INIT_MEMBER(sc4_state,sc4luckb_mbus)
}
// PR1033 CASINO LUCKY BALLS PR1033 LUCKY BALLS SOUNDS11
-GAMEL( 200?, sc4luckb ,0, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckba ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbb ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbc ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbd ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbe ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbf ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbg ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbh ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbi ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbj ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbk ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbl ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbm ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbn ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbo ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbp ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbt ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbu ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 19)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbv ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 20)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbw ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 21)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbx ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 22)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckb1 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 23)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckb2 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 24)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckb3 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 25)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckb4 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 26)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckb ,0, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckba ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbb ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbc ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbd ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbe ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbf ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbg ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbh ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbi ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbj ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbk ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbl ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbm ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbn ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbo ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbp ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbt ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbu ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbv ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbw ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbx ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckb1 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckb2 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckb3 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 25)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckb4 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb, ROT0, "BFM","Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 26)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1033 CASINO LUCKY BALLS PR1033 LUCKY BALLS SOUNDS11 LUCKY BALLS ARCADE
-GAMEL( 200?, sc4luckbq ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbr ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbs ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckby ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4luckbz ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4luckb0 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbq ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbr ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbs ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckby ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4luckbz ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4luckb0 ,sc4luckb, sc4_200_4r, sc4, sc4_state, sc4luckb_mbus, ROT0, "BFM","Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48485,21 +48485,21 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mgrm)
}
// PR1132 CASINO MONEY GO ROUND PR1132 MONEY GO ROUND SOUNDS11
-GAMEL( 200?, sc4mgr ,0, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgra ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrh ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgri ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgr ,0, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgra ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrh ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgri ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgr, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1132 CASINO MONEY GO ROUND PR1132 MONEY GO ROUND SOUNDS11 MONEY GO ROUND S.SITE
-GAMEL( 200?, sc4mgrb ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrc ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrd ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgre ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrf ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrg ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrj ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrk ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrl ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mgrm ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrb ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrc ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrd ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgre ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrf ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrg ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrj ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrk ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrl ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mgrm ,sc4mgr, sc4_200_4r, sc4, sc4_state, sc4mgrm, ROT0, "BFM","Money Go Round Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48515,21 +48515,21 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mspid_mbus)
}
// PR1325 CASINO MONEY SPIDER PR1325 MONEYSPIDER SOUNDS11
-GAMEL( 200?, sc4mspid ,0, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspida ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidb ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidc ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidd ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspide ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidf ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidg ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidj ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidk ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidl ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidm ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspid ,0, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspida ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidb ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidc ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidd ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspide ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidf ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidg ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidj ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidk ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidl ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidm ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1325 CASINO MONEY SPIDER MONEY SPIDER ARCADE PR1325 MONEYSPIDER SOUNDS11
-GAMEL( 200?, sc4mspidh ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid_mbus, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mspidi ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid_mbus, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidh ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid_mbus, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mspidi ,sc4mspid, sc4_200_4r, sc4, sc4_state, sc4mspid_mbus, ROT0, "BFM","Casino Money Spider (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48539,14 +48539,14 @@ DRIVER_INIT_MEMBER(sc4_state,sc4msclb)
}
// PR1040 MONEY SPINNER PR1040 MON S CLUB SOUNDS11
-GAMEL( 200?, sc4msclb ,0, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclba ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbb ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbc ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbd ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbe ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbf ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4msclbg ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclb ,0, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclba ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbb ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbc ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbd ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbe ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbf ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4msclbg ,sc4msclb, sc4_200_4r, sc4, sc4_state, sc4msclb, ROT0, "BFM","Money Spinner Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48557,18 +48557,18 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mtb)
}
// PR6803 MONEY TO BURN PR6803 BURN SOUNDS11
-GAMEL( 200?, sc4mtb ,0, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtba ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbb ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbe ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbf ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbg ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbj ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtb ,0, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtba ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbb ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbe ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbf ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbg ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbj ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR4603 MONEY TO BURN SP98 PR6803 BURN SOUNDS11
-GAMEL( 200?, sc4mtbc ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbd ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbh ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbi ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbc ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbd ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbh ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbi ,sc4mtb, sc4_4reel, sc4, sc4_state, sc4mtb, ROT0, "BFM","Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4mtbcl)
@@ -48578,22 +48578,22 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mtbcl)
// PR6932 CLUB MONEY TO BURN PR6932 BURN SOUNDS11
-GAMEL( 200?, sc4mtbcl ,0, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcla ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclb ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclc ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcld ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcle ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclf ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclg ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclh ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcli ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclj ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclk ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcll ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclm ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbcln ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mtbclo ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcl ,0, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcla ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclb ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclc ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcld ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcle ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclf ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclg ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclh ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcli ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclj ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclk ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcll ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclm ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbcln ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mtbclo ,sc4mtbcl, sc4_5reel, sc4, sc4_state, sc4mtbcl, ROT0, "BFM","Money To Burn Club (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48604,8 +48604,8 @@ DRIVER_INIT_MEMBER(sc4_state,sc4mono5)
DRIVER_INIT_CALL(sc4);
}
-GAMEL( 200?, sc4mono5 ,0, sc4_3reel_200, sc4, sc4_state, sc4mono5, ROT0, "Mazooma","Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR7089 MONO 5 MONO SOUNDS MONOPOLY
-GAMEL( 200?, sc4mono5a ,sc4mono5, sc4_3reel_200, sc4, sc4_state, sc4mono5, ROT0, "Mazooma","Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR7089 MONO 5 MONO SOUNDS MONOPOLY
+GAMEL( 200?, sc4mono5 ,0, sc4_3reel_200, sc4, sc4_state, sc4mono5, ROT0, "Mazooma","Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR7089 MONO 5 MONO SOUNDS MONOPOLY
+GAMEL( 200?, sc4mono5a ,sc4mono5, sc4_3reel_200, sc4, sc4_state, sc4mono5, ROT0, "Mazooma","Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR7089 MONO 5 MONO SOUNDS MONOPOLY
@@ -48621,26 +48621,26 @@ DRIVER_INIT_MEMBER(sc4_state,sc4monoa_mbus)
DRIVER_INIT_CALL(sc4mbus);
}
-GAMEL( 200?, sc4monoa ,0, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2122 MONOPOLY MONOPOLY TRIPLE ARCADE MONO SOUNDS MONOPOLY
-GAMEL( 200?, sc4monoaa ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoad ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoae ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoaf ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoag ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoa ,0, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2122 MONOPOLY MONOPOLY TRIPLE ARCADE MONO SOUNDS MONOPOLY
+GAMEL( 200?, sc4monoaa ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoad ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoae ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoaf ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoag ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa_mbus, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
// PAY UNIT ERR 17
-GAMEL( 200?, sc4monoab ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoac ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoah ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4monoai ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoaj ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoak ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoab ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoac ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoah ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4monoai ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoaj ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoak ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoal ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2122 MONOPOLY MONOPOLY TRIPLE ARCADE MONOPOLY TRIPLE
-GAMEL( 200?, sc4monoam ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoan ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2122 MONOPOLY MONO SOUNDS MONOPOLY
-GAMEL( 200?, sc4monoao ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoap ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4monoaq ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoal ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2122 MONOPOLY MONOPOLY TRIPLE ARCADE MONOPOLY TRIPLE
+GAMEL( 200?, sc4monoam ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoan ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// PR2122 MONOPOLY MONO SOUNDS MONOPOLY
+GAMEL( 200?, sc4monoao ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoap ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4monoaq ,sc4monoa, sc4_3reel_200, sc4, sc4_state, sc4monoa, ROT0, "Mazooma","Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
DRIVER_INIT_MEMBER(sc4_state,sc4monop)
@@ -48648,34 +48648,34 @@ DRIVER_INIT_MEMBER(sc4_state,sc4monop)
DRIVER_INIT_CALL(sc4);
}
-GAMEL( 200?, sc4monop ,sc4monoa, sc4_3reel, sc4, sc4_state, sc4monop, ROT0, "Mazooma","Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
-GAMEL( 200?, sc4monopa ,sc4monoa, sc4_3reel, sc4, sc4_state, sc4monop, ROT0, "Mazooma","Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
+GAMEL( 200?, sc4monop ,sc4monoa, sc4_3reel, sc4, sc4_state, sc4monop, ROT0, "Mazooma","Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
+GAMEL( 200?, sc4monopa ,sc4monoa, sc4_3reel, sc4, sc4_state, sc4monop, ROT0, "Mazooma","Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
// I think this is different to the above, this is GM** (Grand Monopoly?)
-GAMEL( 200?, sc4mcas ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2354 MONOPOLY CASINO MONOPOLY TRIPLE MAZ MONO SOUNDS MONOPOLY
-GAMEL( 200?, sc4mcasm ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcasn ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcaso ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcasp ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcasq ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcasr ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcass ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcast ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcasv ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcasw ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcasx ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcasy ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcasz ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcas0 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcas1 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcas2 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
-GAMEL( 200?, sc4mcas3 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcas ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2354 MONOPOLY CASINO MONOPOLY TRIPLE MAZ MONO SOUNDS MONOPOLY
+GAMEL( 200?, sc4mcasm ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcasn ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcaso ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcasp ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcasq ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcasr ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcass ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcast ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcasv ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcasw ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcasx ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcasy ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcasz ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcas0 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcas1 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcas2 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
+GAMEL( 200?, sc4mcas3 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )// ^^
// these have a different internal code compared to the PR2056 sets above which strongly indicates they're for the 'GMBU' sets above
-GAMEL( 200?, sc4mcask ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
-GAMEL( 200?, sc4mcasu ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4mcas4 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcask ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2056 MONOP TRIPLE MONO SOUNDS MONOP TRIPLE
+GAMEL( 200?, sc4mcasu ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4mcas4 ,sc4mcas, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
@@ -48687,9 +48687,9 @@ DRIVER_INIT_MEMBER(sc4_state,sc4pacqp)
// PR7072 PAC MAN PACP SOUNDS PAC-MAN
-GAMEL( 200?, sc4pacqp ,0, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacqpa ,sc4pacqp, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacqpb ,sc4pacqp, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacqp ,0, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacqpa ,sc4pacqp, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacqpb ,sc4pacqp, sc4_4reel, sc4, sc4_state, sc4pacqp, ROT0, "QPS","Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48699,9 +48699,9 @@ DRIVER_INIT_MEMBER(sc4_state,sc4pacmn)
}
// PR7026 PACMAN PACMAN SOUNDS
-GAMEL( 200?, sc4pacmn ,0, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // this set doesn't start, CPU ends up dead? - needs valid jackpot / stake keys
-GAMEL( 200?, sc4pacmna ,sc4pacmn, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacmnb ,sc4pacmn, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacmn ,0, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // this set doesn't start, CPU ends up dead? - needs valid jackpot / stake keys
+GAMEL( 200?, sc4pacmna ,sc4pacmn, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacmnb ,sc4pacmn, sc4_4reel, sc4, sc4_state, sc4pacmn, ROT0, "Mazooma","Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48717,19 +48717,19 @@ DRIVER_INIT_MEMBER(sc4_state,sc4paccs_mbus)
}
// PR7049CASINO PACMAN PACMAN SOUNDS
-GAMEL( 200?, sc4paccs ,0, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsa ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsb ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsc ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsd ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccse ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsf ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsg ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsj ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsk ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsl ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsh ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs_mbus, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4paccsi ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs_mbus, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccs ,0, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsa ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsb ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsc ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsd ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccse ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsf ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsg ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsj ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsk ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsl ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsh ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs_mbus, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4paccsi ,sc4paccs, sc4_4reel, sc4, sc4_state, sc4paccs_mbus, ROT0, "Mazooma","Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48740,15 +48740,15 @@ DRIVER_INIT_MEMBER(sc4_state,sc4pacpl)
}
// PR7058 PACMAN PACP SOUNDS PACMAN PLUS
-GAMEL( 200?, sc4pacpl ,0, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacpla ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacplb ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacplc ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacpld ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacple ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacplf ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacplg ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pacplh ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacpl ,0, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacpla ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacplb ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacplc ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacpld ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacple ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacplf ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacplg ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pacplh ,sc4pacpl, sc4_5reel, sc4, sc4_state, sc4pacpl, ROT0, "Mazooma","Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48759,7 +48759,7 @@ DRIVER_INIT_MEMBER(sc4_state,sc4party)
}
// PR7151 PARTY TIME 1.02 95008113 G PARTYTIME SOUNDS11
-GAMEL( 200?, sc4party ,0, sc4_4reel, sc4, sc4_state, sc4party, ROT0, "Nova","Party Time (German) (PR7151, GPTM) (Nova) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4party ,0, sc4_4reel, sc4, sc4_state, sc4party, ROT0, "Nova","Party Time (German) (PR7151, GPTM) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48772,11 +48772,11 @@ DRIVER_INIT_MEMBER(sc4_state,sc4polem)
// these are sensitive to the inputs, eg for sc4polemd 3:2 and 3:3 MUST be on or the CPU will crash again even if you reset after the initial MEMORY RESET
// I don't know how to boot the other sets, they also show different codes for each set (buggy startup code?)
// PR7009 POLE POSITION POLE POSITION SOUNDS
-GAMEL( 200?, sc4polem ,0, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4polema ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4polemb ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4polemc ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4polemd ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polem ,0, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polema ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polemb ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polemc ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polemd ,sc4polem, sc4_4reel, sc4, sc4_state, sc4polem, ROT0, "Mazooma","Pole Position (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48790,11 +48790,11 @@ DRIVER_INIT_MEMBER(sc4_state,sc4pen1)
// PR6914 PUBLIC ENEMY PR6914 PUBLIC ENEMY SOUNDS11 PUBLIC ENEMY
-GAMEL( 200?, sc4pen1 ,0, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pen1a ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pen1b ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pen1c ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pen1d ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pen1 ,0, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pen1a ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pen1b ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pen1c ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pen1d ,sc4pen1, sc4_4reel, sc4, sc4_state, sc4pen1, ROT0, "BFM","Public Enemy No1 (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rich)
@@ -48803,19 +48803,19 @@ DRIVER_INIT_MEMBER(sc4_state,sc4rich)
}
// PR7118 RICH GEEZER PR7118 RICH GEEZER SOUNDS11
-GAMEL( 200?, sc4rich ,0, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richa ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richb ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richc ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richd ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4riche ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richf ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richg ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richh ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richi ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richj ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richk ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4richl ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rich ,0, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richa ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richb ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richc ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richd ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4riche ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richf ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richg ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richh ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richi ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richj ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richk ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4richl ,sc4rich, sc4_200_5r, sc4, sc4_state, sc4rich, ROT0, "BFM","Rich Geezer (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48830,29 +48830,29 @@ DRIVER_INIT_MEMBER(sc4_state,sc4srrmz_mbus)
}
// PR7141 SHAKE RATTLE ROLL LINE SOUNDS * SHAKE RATT ROLL
-GAMEL( 200?, sc4srrmz ,0, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll (Mazooma) (Scorpion 4) (Top Box)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmz ,0, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll (Mazooma) (Scorpion 4) (Top Box)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7079CASINO SHAKE RATTLE AND ROL PR7079,Casino SHAKE RATTLE AND ROLL, LINE SOUNDS ROCK AND ROLL
-GAMEL( 200?, sc4srrmza ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzb ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzc ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmze ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmza ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzb ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzc ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmze ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7079CASINO SHAKE RATTLE AND ROL PR7079,Casino SHAKE RATTLE AND ROLL, LINE SOUNDS ROCK AND ROLL (the same as some of the above.. )
-GAMEL( 200?, sc4srrca ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrcaa ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrcab ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrcac ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrcad ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrcae ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrca ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrcaa ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrcab ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrcac ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrcad ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrcae ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz, ROT0, "Mazooma","Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7079CASINO SHAKE RATTLE AND ROL SHAK RATTLE ROLL ARCADE PR7079,Casino SHAKE RATTLE AND ROLL, LINE SOUNDS
-GAMEL( 200?, sc4srrmzd ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzf ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzg ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzh ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzi ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzj ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzk ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzl ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4srrmzm ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzd ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzf ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzg ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzh ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzi ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzj ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzk ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzl ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4srrmzm ,sc4srrmz, sc4_3reel, sc4, sc4_state, sc4srrmz_mbus, ROT0, "Mazooma","Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4sirpz)
@@ -48862,10 +48862,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4sirpz)
// PR2004CASINO SIR PRIZE LINE SOUNDS SIR PRIZE 8 +
-GAMEL( 200?, sc4sirpz ,0, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR2004, SIRV) (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 7:0 and 7:1 must be turned ON to boot this
+GAMEL( 200?, sc4sirpz ,0, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR2004, SIRV) (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // 7:0 and 7:1 must be turned ON to boot this
// PR7079CASINO SIR PRIZE PR7079,Casino SIR PRIZE, LINE SOUNDS SIR PRIZE
-GAMEL( 200?, sc4sirpza ,sc4sirpz, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sirpzb ,sc4sirpz, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sirpza ,sc4sirpz, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sirpzb ,sc4sirpz, sc4_3reel, sc4, sc4_state, sc4sirpz, ROT0, "Mazooma","Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48876,7 +48876,7 @@ DRIVER_INIT_MEMBER(sc4_state,sc4smk7)
// PR6924 SMOKIN SEVENS PR6924 SMOKIN SEVENS SOUNDS11
-GAMEL( 200?, sc4smk7 ,0, sc4_3reel, sc4, sc4_state, sc4smk7, ROT0, "BFM","Smoking 7's (Bellfruit) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4smk7 ,0, sc4_3reel, sc4, sc4_state, sc4smk7, ROT0, "BFM","Smoking 7's (Bellfruit) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48888,18 +48888,18 @@ DRIVER_INIT_MEMBER(sc4_state,sc4starp)
// PR6805 STARPRIZE PR6805 STARPRIZE SOUNDS
-GAMEL( 200?, sc4starp ,0, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpa ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpb ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpc ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpd ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpe ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpf ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpg ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starph ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpi ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpj ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4starpk ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starp ,0, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpa ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpb ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpc ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpd ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpe ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpf ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpg ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starph ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpi ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpj ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4starpk ,sc4starp, sc4_4reel, sc4, sc4_state, sc4starp, ROT0, "BFM","Starprize (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48910,18 +48910,18 @@ DRIVER_INIT_MEMBER(sc4_state,sc4strk)
}
// PR2167CASINO THE STREAK PR7017,CASINO STREAK, STRK SOUNDS THE STREAK
-GAMEL( 200?, sc4strk ,0, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strka ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkb ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkc ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkd ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strke ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkf ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkg ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkh ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strki ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkj ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4strkk ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strk ,0, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strka ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkb ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkc ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkd ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strke ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkf ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkg ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkh ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strki ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkj ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4strkk ,sc4strk, sc4_3reel, sc4, sc4_state, sc4strk, ROT0, "Mazooma","The Streak (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48936,33 +48936,33 @@ DRIVER_INIT_MEMBER(sc4_state,sc4trist)
}
// PR2188 TRIPLE STREAK STR3 SOUNDS " THE STREAK
-GAMEL( 200?, sc4trist ,0, sc4_3reel, sc4, sc4_state, sc4tristtb, ROT0, "Mazooma","Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4trista ,sc4trist, sc4_3reel, sc4, sc4_state, sc4tristtb, ROT0, "Mazooma","Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4trist ,0, sc4_3reel, sc4, sc4_state, sc4tristtb, ROT0, "Mazooma","Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4trista ,sc4trist, sc4_3reel, sc4, sc4_state, sc4tristtb, ROT0, "Mazooma","Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2167CASINO THE STREAK PR7017,CASINO STREAK, STR3 SOUNDS THE STREAK
-GAMEL( 200?, sc4tristb ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristc ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristd ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4triste ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristf ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristg ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristh ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristi ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristj ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristk ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristl ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristm ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristn ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristo ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristp ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristq ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristr ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4trists ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristt ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 19)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristu ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 20)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristv ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 21)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristw ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 22)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristx ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 23)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tristy ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 24)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristb ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristc ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristd ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4triste ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristf ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristg ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristh ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristi ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristj ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristk ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristl ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristm ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristn ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristo ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristp ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristq ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristr ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4trists ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristt ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristu ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristv ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristw ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristx ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tristy ,sc4trist, sc4_3reel, sc4, sc4_state, sc4trist, ROT0, "Mazooma","Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4s6c)
@@ -48971,15 +48971,15 @@ DRIVER_INIT_MEMBER(sc4_state,sc4s6c)
}
// PR6834 SUPER 6 FIXED 65% PR6834 SSIX SOUNDS11
-GAMEL( 200?, sc4s6c ,0, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s6cb ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6c ,0, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6cb ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6834 SUPER 6 PR6834 SSIX SOUNDS11
-GAMEL( 200?, sc4s6ca ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s6cc ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s6cd ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s6ce ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6ca ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6cc ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6cd ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6ce ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4s6cf ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s6cf ,sc4s6c, sc4, sc4, sc4_state, sc4s6c, ROT0, "BFM","Super 6 Club (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -48996,23 +48996,23 @@ DRIVER_INIT_MEMBER(sc4_state,sc4tic2_mbus)
// PR7060CASINO TICTACTWO TTTWO SOUNDS TIC TAC TWO
-GAMEL( 200?, sc4tic2 ,0, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2a ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2b ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2c ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2d ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2e ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2f ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2g ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2n ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2o ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2 ,0, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2a ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2b ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2c ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2d ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2e ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2f ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2g ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2n ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2o ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7060CASINO TICTACTWO TIC TAC TWO ARCADE TTTWO SOUNDS TIC TAC TWO
-GAMEL( 200?, sc4tic2i ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2j ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2k ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2h ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2l ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tic2m ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2i ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2j ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2k ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2_mbus, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2h ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2l ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tic2m ,sc4tic2, sc4_3reel, sc4, sc4_state, sc4tic2, ROT0, "Mazooma","Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -49022,13 +49022,13 @@ DRIVER_INIT_MEMBER(sc4_state,sc4ticlb)
}
// PR6832 TREASURE ISLAND FIXED 65% PR6832 TRES SOUNDS11
-GAMEL( 200?, sc4ticlb ,0, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4ticlbb ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4ticlb ,0, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4ticlbb ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
// PR6832 TREASURE ISLAND PR6832 TRES SOUNDS11
-GAMEL( 200?, sc4ticlba ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4ticlbc ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4ticlba ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4ticlbc ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4ticlbd ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4ticlbd ,sc4ticlb, sc4dmd, sc4, sc4_state, sc4ticlb, ROT0, "BFM","Treasure Island Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
@@ -49050,31 +49050,31 @@ DRIVER_INIT_MEMBER(sc4_state,sc4tri7_mbus)
// PR1328 TRIPLE 7'S PR1328 TRIPLE 7S SOUNDS11 TRIPLE 7'S ABOVE
-GAMEL( 200?, sc4tri7 ,0, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ABUV
-GAMEL( 200?, sc4tri7a ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7m ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7n ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7v ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7w ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7f ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // SEVN
-GAMEL( 200?, sc4tri7g ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7h ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7i ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7j ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7k ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7l ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7o ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7p ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7q ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7r ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7s ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7t ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7u ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7 ,0, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ABUV
+GAMEL( 200?, sc4tri7a ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7m ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7n ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7v ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7w ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7tb, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7f ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // SEVN
+GAMEL( 200?, sc4tri7g ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7h ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7i ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7j ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7k ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7l ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7o ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7p ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7q ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7r ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7s ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7t ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7u ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7, ROT0, "BFM","Triple 7's (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1328 TRIPLE 7'S PR1328 TRIPLE 7S SOUNDS11 SEVENS ABOVE ARCADE TRIPLE 7'S ABOVE
-GAMEL( 200?, sc4tri7b ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7c ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7d ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tri7e ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7b ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7c ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7d ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tri7e ,sc4tri7, sc4_3reel, sc4, sc4_state, sc4tri7_mbus, ROT0, "BFM","Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4tub)
@@ -49084,10 +49084,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4tub)
// PR1103 TUBULAR BELLS PR1103 TUBULAR BELLS SOUNDS11
-GAMEL( 200?, sc4tub ,0, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tuba ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tubb ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tubc ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tub ,0, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tuba ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tubb ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tubc ,sc4tub, sc4_200_4ra, sc4, sc4_state, sc4tub, ROT0, "BFM","Tubular Bells (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -49098,9 +49098,9 @@ DRIVER_INIT_MEMBER(sc4_state,sc4vmclb)
// / PR7132 CLUB VIVA MEXICO PR7132 VIVA SOUNDS11 VIVA MEXICO
-GAMEL( 200?, sc4vmclb ,0, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vmclba ,sc4vmclb, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vmclbb ,sc4vmclb, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vmclb ,0, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vmclba ,sc4vmclb, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vmclbb ,sc4vmclb, sc4_5reel, sc4, sc4_state, sc4vmclb, ROT0, "BFM","Viva Mexico Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -49111,13 +49111,13 @@ DRIVER_INIT_MEMBER(sc4_state,sc4waw)
// Reel 4 is strange ERR24
// PR7065 WET 'N' WILD WILD SOUNDS WET 'N' WILD
-GAMEL( 200?, sc4waw ,0, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawa ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawb ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawc ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawd ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawe ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wawf ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4waw ,0, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawa ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawb ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawc ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawd ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawe ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wawf ,sc4waw, sc4_4reel, sc4, sc4_state, sc4waw, ROT0, "Mazooma","Wet & Wild (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4clbtm)
@@ -49127,12 +49127,12 @@ DRIVER_INIT_MEMBER(sc4_state,sc4clbtm)
// PR7131 CLUB TEMPTATION PR7131 TEMPTATION SOUNDS11
-GAMEL( 200?, sc4clbtm ,0, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4clbtma ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4clbtmb ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4clbtmc ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4clbtmd ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
-GAMEL( 200?, sc4clbtme ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtm ,0, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtma ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtmb ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtmc ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtmd ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
+GAMEL( 200?, sc4clbtme ,sc4clbtm, sc4dmd, sc4, sc4_state, sc4clbtm, ROT0, "BFM","Club Temptation (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_sc4_dmd )
@@ -49145,10 +49145,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4gbcas)
// this one is a variation of lucky balls
// PR1034 CASINO GOLDEN BALLS PR1034 GOLDEN BALLS SOUNDS11
-GAMEL( 200?, sc4gbcas ,0, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gbcasa ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gbcasb ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4gbcasc ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gbcas ,0, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gbcasa ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gbcasb ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4gbcasc ,sc4gbcas, sc4_200_4r, sc4, sc4_state, sc4gbcas, ROT0, "BFM","Casino Golden Balls (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4hntcsm)
@@ -49163,27 +49163,27 @@ DRIVER_INIT_MEMBER(sc4_state,sc4hntcs)
}
// PR1327 CASINO HAPPY NOTES HAPPY NOTES S.SITE PR1327 CAS_HAPPY_NOTES SOUNDS11
-GAMEL( 200?, sc4hntcs ,0, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsa ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsb ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsc ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcs ,0, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsa ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsb ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsc ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcsm, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1327 CASINO HAPPY NOTES PR1327 CAS_HAPPY_NOTES SOUNDS11
-GAMEL( 200?, sc4hntcsd ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcse ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsf ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsg ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsh ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsi ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsj ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsk ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsl ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsm ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsn ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcso ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsp ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsq ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcsr ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 19)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hntcss ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 20)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsd ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcse ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsf ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsg ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsh ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsi ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsj ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsk ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsl ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsm ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsn ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcso ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsp ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsq ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcsr ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hntcss ,sc4hntcs, sc4_4reel, sc4, sc4_state, sc4hntcs, ROT0, "BFM","Happy Notes Casino (Bellfruit) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4rhx)
@@ -49197,38 +49197,38 @@ DRIVER_INIT_MEMBER(sc4_state,sc4rhx_mbus)
}
// PR2077 RED HOT X REDX SOUNDS RED HOT X
-GAMEL( 200?, sc4rhx ,0, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxa ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxd ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxe ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxj ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxk ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4rhxl ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxm ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhx ,0, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxa ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxd ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxe ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxj ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxk ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4rhxl ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxm ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2077 RED HOT X RED HOT X ARCADE REDX SOUNDS RED HOT X
-GAMEL( 200?, sc4rhxb ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxc ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxh ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxi ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxf ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxg ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxn ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 15)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxo ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 16)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxp ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 17)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxq ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 18)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxr ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 19)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxs ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 20)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxt ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 21)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxu ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 22)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxv ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 23)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxw ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 24)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxb ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxc ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxh ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxi ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx_mbus, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxf ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxg ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxn ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 15)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxo ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 16)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxp ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 17)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxq ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 18)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxr ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 19)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxs ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 20)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxt ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 21)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxu ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 22)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxv ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 23)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxw ,sc4rhx, sc4_200_altb, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 4) (set 24)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2056 RED HOT X CLUB REDX SOUNDS RED HOT X CLUB
-GAMEL( 200?, sc4rhxcl ,0, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxcla ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxclb ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rhxclc ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcl ,0, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxcla ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxclb ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rhxclc ,sc4rhxcl, sc4, sc4, sc4_state, sc4rhx, ROT0, "Mazooma","Red Hot X Club (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -49239,10 +49239,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4vivam)
// PR6907 VIVA MEXICO PR6907 VIVA MEXICO SOUNDS11
-GAMEL( 200?, sc4vivam ,0, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivama ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivamb ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivamc ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivam ,0, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivama ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivamb ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivamc ,sc4vivam, sc4_4reel, sc4, sc4_state, sc4vivam, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4vivcs)
@@ -49254,40 +49254,40 @@ DRIVER_INIT_MEMBER(sc4_state,sc4vivcs)
// PR6927 CASINO VIVA MEXICO PR6927 VIVAMEXICO SOUNDS11
// these do nothing..
-GAMEL( 200?, sc4vivcs ,0, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcsa ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcs ,0, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsa ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6927 CASINO VIVA MEXICO PR6927 VIVAMEXICO SOUNDS21
// these boot
-GAMEL( 200?, sc4vivcsb ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcsc ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcsd ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcse ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcsf ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4vivcsg ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsb ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsc ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsd ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcse ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsf ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vivcsg ,sc4vivcs, sc4_3reel, sc4, sc4_state, sc4vivcs, ROT0, "BFM","Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7054 POWER BALL POWERBALL SOUNDS
-GAMEL( 200?, sc4pwrbq ,0, sc4, sc4, sc4_state, sc4, ROT0, "Qps","Power Ball (Qps) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwrbqa ,sc4pwrbq, sc4, sc4, sc4_state, sc4, ROT0, "Qps","Power Ball (Qps) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrbq ,0, sc4, sc4, sc4_state, sc4, ROT0, "Qps","Power Ball (Qps) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwrbqa ,sc4pwrbq, sc4, sc4, sc4_state, sc4, ROT0, "Qps","Power Ball (Qps) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// fails to boot, like many of the Pole Position sets, probably needs some specific dips setting due to buggy code?
// PR7008 CHUBBY DOES VEGAS VEGAS SOUNDS11
-GAMEL( 200?, sc4chub ,0, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chuba ,sc4chub, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chubb ,sc4chub, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chub ,0, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chuba ,sc4chub, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chubb ,sc4chub, sc4_4reel, sc4, sc4_state, sc4, ROT0, "Mazooma","Chubby Does Vegas (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// no sound roms, doesn't init properly (doesn't even attempt reel test)
// PR7011 BLUE RINSE BRINSE SOUNDS
-GAMEL( 200?, sc4blue ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bluea ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blueb ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bluec ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4blued ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bluee ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blue ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bluea ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blueb ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bluec ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4blued ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bluee ,sc4blue, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Blue Rinse (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
DRIVER_INIT_MEMBER(sc4_state,sc4bugs)
@@ -49298,15 +49298,15 @@ DRIVER_INIT_MEMBER(sc4_state,sc4bugs)
// no sound roms
// PR7109 BUGS MONEY PR7109 BUGS MONEY SOUNDS11 BUGS MONEY
-GAMEL( 200?, sc4bugs ,0, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bugsa ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bugsb ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4bugsc ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bugs ,0, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bugsa ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bugsb ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4bugsc ,sc4bugs, sc4, sc4, sc4_state, sc4bugs, ROT0, "BFM","Bugs Money (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7029 MONEY TO MONEY MTOM SOUNDS
-GAMEL( 200?, sc4m2m ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Money To Money (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4m2ma ,sc4m2m, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Money To Money (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4m2m ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Money To Money (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4m2ma ,sc4m2m, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Money To Money (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -49317,10 +49317,10 @@ DRIVER_INIT_MEMBER(sc4_state,sc4chand)
// no sound roms
// PR7108 CASH IN HAND PR7108 CASH IN HAND SOUNDS11 CASH IN HAND
-GAMEL( 200?, sc4chand ,0, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chanda ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chandb ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4chandc ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chand ,0, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chanda ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chandb ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4chandc ,sc4chand, sc4_4reel, sc4, sc4_state, sc4chand, ROT0, "BFM","Cash In Hand (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -49332,349 +49332,349 @@ DRIVER_INIT_MEMBER(sc4_state,sc4cinv)
// no sound roms
// PR6809 CASHINVADERS PR6809 CASHINVADERS SOUNDS
-GAMEL( 200?, sc4cinv ,0, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinva ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvb ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvc ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvd ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinve ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvf ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvg ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvh ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4cinvi ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinv ,0, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinva ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvb ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvc ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvd ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinve ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvf ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvg ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvh ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cinvi ,sc4cinv, sc4_4reel, sc4, sc4_state, sc4cinv, ROT0, "BFM","Cash Invaders (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7103 JUNGLE BUCKS PR7103 JUNGLEBUCKS SOUNDS11 JUNGLE BUCKS
-GAMEL( 200?, sc4jbuck ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jbucka ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jbuckb ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jbuckc ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jbuckd ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jbuck ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jbucka ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jbuckb ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jbuckc ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jbuckd ,sc4jbuck, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Jungle Bucks (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6904 MONEY BAGS PR6904 MONEY BAGS SOUNDS11
-GAMEL( 200?, sc4mbags ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mbagsa ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mbagsb ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4mbagsc ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mbags ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mbagsa ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mbagsb ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4mbagsc ,sc4mbags, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Money Bags (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// sound roms are bad, missing first 0x10000 bytes with header
// PR6938 TUTTI FRUTTI PR6938 FRUT SOUNDS11 TUTTI FRUTTI
-GAMEL( 200?, sc4tfclb ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tfclba ,sc4tfclb, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tfclb ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tfclba ,sc4tfclb, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// doesn't like the sound rom we have even if the ID is right
// PR7022 UP FOR GRABS GRAB SOUNDS
-GAMEL( 200?, sc4ufg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Up For Grabs (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufga ,sc4ufg, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Up For Grabs (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Up For Grabs (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufga ,sc4ufg, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Up For Grabs (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6819 UP FOT IT PR6819 UP FOR IT SOUNDS11
-GAMEL( 200?, sc4ufi ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufia ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufib ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufic ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufid ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ufie ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4ufi ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufia ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufib ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufic ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufid ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ufie ,sc4ufi, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Up For It (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
// PR6812 WHO DARES WINS PR6812 WHO DARES WINS SOUNDS
-GAMEL( 200?, sc4wdw ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwa ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwb ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwc ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwd ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwe ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwf ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwg ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwh ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwi ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wdwj ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdw ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwa ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwb ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwc ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwd ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwe ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwf ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwg ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwh ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwi ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wdwj ,sc4wdw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Who Dares Wins (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7144 WILD BUNCH PR7144 CRAZY FRUITS SOUNDS11
-GAMEL( 200?, sc4wldbn ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbna ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnb ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnc ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnd ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbne ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnf ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbni ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnj ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnk ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnn ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 11)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbno ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 12)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnp ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 13)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnq ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 14)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbn ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbna ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnb ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnc ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnd ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbne ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnf ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbni ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnj ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnk ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnn ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 11)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbno ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 12)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnp ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 13)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnq ,sc4wldbn, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Bunch (Bellfruit) (Scorpion 4) (set 14)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7144 WILD BUNCH PR7144 WILD BUNCH SOUNDS11 CAS WILD BUNCH S.SITE
-GAMEL( 200?, sc4wldbng ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnh ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnl ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wldbnm ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbng ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnh ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnl ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wldbnm ,sc4wldbn, sc4, sc4, sc4_state, sc4mbus, ROT0, "BFM","Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7110 WILD THING PR7110 WILD THING SOUNDS11
-GAMEL( 200?, sc4wthng ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnga ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthngb ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthngc ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthng ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnga ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthngb ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthngc ,sc4wthng, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Wild Thing (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// does NOT want 'WILD SOUNDS' from 'PR7065 WET 'N' WILD'
// PR7060CASINO WILDTHING WILD THING ARCADE WILD SOUNDS WILD THING
-GAMEL( 200?, sc4wthnm ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnma ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnmb ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnmc ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnmd ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnme ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wthnmf ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnm ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnma ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnmb ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnmc ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnmd ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnme ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wthnmf ,sc4wthnm, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7060CASINO WILDTHING WILD SOUNDS WILD THING
-GAMEL( 200?, sc4wtc ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtca ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtcb ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtcc ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtcd ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtce ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wtcf ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtc ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtca ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtcb ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtcc ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtcd ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtce ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wtcf ,sc4wtc, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Wild Thing Casino (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// half size sound rom, or missing a rom
// PR7017 THREE LIONS LION SOUNDS
-GAMEL( 200?, sc4lions ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionsa ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionsb ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionsc ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionsd ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionse ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4lionsf ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lions ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionsa ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionsb ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionsc ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionsd ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionse ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4lionsf ,sc4lions, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Three Lions (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// wrong sound roms
// PROJECT NUMBER PR7113 TEMPTATION PR7113 TEMPTATION SOUNDS11
-GAMEL( 200?, sc4tempt ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tempta ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4temptb ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4temptc ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4temptd ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4tempte ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4temptf ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4temptg ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tempt ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tempta ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4temptb ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4temptc ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4temptd ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4tempte ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4temptf ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4temptg ,sc4tempt, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Temptation (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// half size sound rom, or missing a rom
// PR7016 TAKE THE PISTE PISTE SOUNDS
-GAMEL( 200?, sc4ttp ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpa ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpb ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpc ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpd ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpe ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ttpf ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttp ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpa ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpb ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpc ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpd ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpe ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ttpf ,sc4ttp, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Take The Piste (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6806 MOTORWAY MAYHEM PR6806 MAYH SOUNDS11
-GAMEL( 200?, sc4motor ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motora ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motorb ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motorc ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motord ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motore ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motorf ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motorg ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4motorh ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4motor ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4motora ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4motorb ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4motorc ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4motord ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4motore ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4motorf ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4motorg ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4motorh ,sc4motor, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Motorway Mania (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// sound roms are bad dumps
// PR6915 stag night PR6915 STAG NIGHT SOUNDS11
-GAMEL( 200?, sc4stag ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Stag Night (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4staga ,sc4stag, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Stag Night (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stag ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Stag Night (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4staga ,sc4stag, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Stag Night (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7016 HICKORY DICKORY DOSH HICKORY SOUNDS
-GAMEL( 200?, sc4hdd ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hddc ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hddd ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hdd ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hddc ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hddd ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7045 HICKORY DICKORY DOSH HICKORY SOUNDS
-GAMEL( 200?, sc4hdda ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hddb ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hdde ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4hddf ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hdda ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hddb ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hdde ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4hddf ,sc4hdd, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// // does NOT want 'WILD SOUNDS' from 'PR7065 WET 'N' WILD'
// PR2043 NUDGE IT WILD SOUNDS NUDGE IT
-GAMEL( 200?, sc4nudit ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nudit ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2043 NUDGE IT NGIT SOUNDS NUDGE IT
-GAMEL( 200?, sc4nudita ,sc4nudit, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4nuditb ,sc4nudit, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nudita ,sc4nudit, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4nuditb ,sc4nudit, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Nudge It (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6908 OUTLAW PR6908 OUTLAW SOUNDS11
-GAMEL( 200?, sc4outlw ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4outlwa ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4outlwb ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4outlwc ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4outlw ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4outlwa ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4outlwb ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4outlwc ,sc4outlw, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Outlaw (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7002 ROLLOVER JACKPOT PR7002 ROLLOVER SOUNDS
-GAMEL( 200?, sc4rollo ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rolloa ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rolloc ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rollod ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rollo ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rolloa ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rolloc ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rollod ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7032 ROLLOVER JACKPOT PR7002 ROLLOVER SOUNDS
-GAMEL( 200?, sc4rollob ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rolloe ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rollof ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rollob ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rolloe ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rollof ,sc4rollo, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2086 ROUTE66 RT66 SOUNDS ROUTE 66
-GAMEL( 200?, sc4r66 ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Route 66 (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4r66 ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Route 66 (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1031 CASINO ROLL ME OVER PR1031 ROLL ME OVER SOUNDS11
-GAMEL( 200?, sc4rmo ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4rmoa ,sc4rmo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rmo ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4rmoa ,sc4rmo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// missing sound roms
// PR7021 JIGGERY POKERY PR7021 SOUNDS
-GAMEL( 200?, sc4jiggr ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jiggra ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jiggrb ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4jiggrc ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiggr ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiggra ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiggrb ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiggrc ,sc4jiggr, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Jiggery Pokery (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// WRONG SOUNDS, PAY UNIT ERR 17
-GAMEL( 200?, sc4cmon ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2133 CASINO MONOPOLY MONOPOLY ARCADE MONL SOUNDS MONOPOLY
-GAMEL( 200?, sc4cmona ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmonb ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmonc ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmond ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmone ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmonf ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmong ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmonh ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4cmoni ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmon ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2133 CASINO MONOPOLY MONOPOLY ARCADE MONL SOUNDS MONOPOLY
+GAMEL( 200?, sc4cmona ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmonb ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmonc ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmond ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmone ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmonf ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmong ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmonh ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4cmoni ,sc4cmon, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
// PR6810 POWER CRAZY PR6810 POWER SOUNDS11
-GAMEL( 200?, sc4pwcrz ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrza ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrzb ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrze ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrzf ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4pwcrzg ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrz ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrza ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzb ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrze ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzf ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4pwcrzg ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR4610 POWER CRAZY SP98 PR6810 POWER SOUNDS11
-GAMEL( 200?, sc4pwcrzc ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrzd ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrzh ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4pwcrzi ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzc ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzd ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzh ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4pwcrzi ,sc4pwcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// some of the italian / german sets have input structures, but not fruit machine ones
// PR1191 QUARTERBACK QBCK SOUNDS QUARTERBACK
-GAMEL( 200?, sc4quart ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quarta ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quart ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quarta ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// QUARTERBACK .PR2072.ITALIAN QUARTERBACK.. (non-standard header)
-GAMEL( 200?, sc4quartb ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quarte ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quarti ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartk ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartb ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quarte ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quarti ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartk ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// QUARTERBACK .PR2064.GERMAN QUARTERBACK.. (non-standard header)
-GAMEL( 200?, sc4quartc ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartd ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartf ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartg ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quarth ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartj ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartl ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4quartm ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartc ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartd ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartf ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartg ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quarth ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartj ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartl ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4quartm ,sc4quart, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6902 RED HOT IBIZA PR6902 IBIZ SOUNDS11
-GAMEL( 200?, sc4ibiza ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizaa ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizab ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizac ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizad ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizae ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizaf ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizag ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizah ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ibizai ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibiza ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizaa ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizab ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizac ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizad ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizae ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizaf ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizag ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizah ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ibizai ,sc4ibiza, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// half size sound roms
// PR6905 SKY'S THE LIMIT PR6905 SKY'S THE LIMIT SOUNDS11
-GAMEL( 200?, sc4stl ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stla ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stlb ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stlc ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stld ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stle ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stlf ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4stlg ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stl ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stla ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stlb ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stlc ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stld ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stle ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stlf ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4stlg ,sc4stl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","The Sky's The Limit (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7055 SPLASH N GRAB GRAB SOUNDS
-GAMEL( 200?, sc4splgb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Splash & Grab (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4splgba ,sc4splgb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Splash & Grab (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4splgb ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Splash & Grab (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4splgba ,sc4splgb, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Splash & Grab (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2044 CASINO SPREAD YOUR BET SBET SOUNDS SPREAD YOUR BET
-GAMEL( 200?, sc4spred ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Spread Your Bet (Mazooma) (Scorpion 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4spred ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Spread Your Bet (Mazooma) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6921 DIAMONDS AND RUBIES PR6921 DARB SOUNDS11
-GAMEL( 200?, sc4sdr ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sdrb ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sdr ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sdrb ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6921 DIAMONDS AND RUBIES SP98 PR6921 DARB SOUNDS11
-GAMEL( 200?, sc4sdra ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4sdrc ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sdra ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4sdrc ,sc4sdr, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// bad sound roms
// PR6906 CRAZY CASINO SP98 PR6906 CRCS SOUNDS11
-GAMEL( 200?, sc4crzcs ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzcsa ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzcsb ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzcsc ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzcs ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzcsa ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzcsb ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzcsc ,sc4crzcs, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7001 IT'S A CRAZY WORLD CRAZY WORLD SOUNDS
-GAMEL( 200?, sc4crzwl ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwla ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwlb ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwlc ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwld ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwle ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwlf ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4crzwlg ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwl ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwla ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwlb ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwlc ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwld ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwle ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwlf ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4crzwlg ,sc4crzwl, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Crazy World (Mazooma) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// no sound roms
// PR6814 FOOTBALL CRAZY PR6814 FOOTBALL CRAZY SOUNDS
-GAMEL( 200?, sc4fbcrz ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrza ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzb ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzc ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzd ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrze ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 6)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzf ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 7)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzg ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 8)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzh ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 9)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4fbcrzi ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 10)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrz ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrza ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzb ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzc ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzd ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrze ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 6)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzf ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 7)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzg ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 8)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzh ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 9)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4fbcrzi ,sc4fbcrz, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Football Crazy (Bellfruit) (Scorpion 4) (set 10)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// no sound roms
// PR6916 FROOTY BOOTY PR6916 FROOTY BOOTY SOUNDS11 FROOTY BOOTY
-GAMEL( 200?, sc4frboo ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frbooa ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frboob ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4frbooc ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frboo ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frbooa ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frboob ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4frbooc ,sc4frboo, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Frooty Booty (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// no sound roms
// not a fruit machine? coin pusher?
-GAMEL( 200?, sc4gfev ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR20XX GOLD FEVER PUSHER GOLDFEVER SOUNDS GOLD FEVER
-GAMEL( 200?, sc4gfeva ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2142 GOLD FEVER PUSHER USA GOLDFEVER SOUNDS GOLD FEVER
-GAMEL( 200?, sc4gfevb ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, sc4db ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2142 GOLD FEVER PUSHER USA GOLDFEVER SOUNDS GOLD FEVER
+GAMEL( 200?, sc4gfev ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR20XX GOLD FEVER PUSHER GOLDFEVER SOUNDS GOLD FEVER
+GAMEL( 200?, sc4gfeva ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2142 GOLD FEVER PUSHER USA GOLDFEVER SOUNDS GOLD FEVER
+GAMEL( 200?, sc4gfevb ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, sc4db ,sc4gfev, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Gold Fever (Mazooma) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // PR2142 GOLD FEVER PUSHER USA GOLDFEVER SOUNDS GOLD FEVER
/**********************************************************************************************************************************/
/* Games below are German versions, and seem to be build on very different code even when titles match other games */
@@ -49689,7 +49689,7 @@ DRIVER_INIT_MEMBER(sc4_state,sc4polen)
}
// PR7012 GERMAN POLE POSITION PR7012 SOUNDS
-GAMEL( 200?, sc4polen ,0, sc4_4reel, sc4, sc4_state, sc4polen, ROT0, "Nova","Pole Position (German) (PR7012, GPOS) (Nova) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4polen ,0, sc4_4reel, sc4, sc4_state, sc4polen, ROT0, "Nova","Pole Position (German) (PR7012, GPOS) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -49700,7 +49700,7 @@ DRIVER_INIT_MEMBER(sc4_state,sc4valnv)
// PR7025 GERMAN VALHALLA 7025 VER1 SOUNDS
-GAMEL( 200?, sc4valnv ,0, sc4, sc4, sc4_state, sc4valnv, ROT0, "Nova","Valhalla (German) (PR7025, GVAL) (Nova) (Scorpion 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4valnv ,0, sc4, sc4, sc4_state, sc4valnv, ROT0, "Nova","Valhalla (German) (PR7025, GVAL) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -49710,45 +49710,45 @@ DRIVER_INIT_MEMBER(sc4_state,sc4wernr)
}
// PR7027 GERMAN WERNER PR7027 SOUNDS V1
-GAMEL( 200?, sc4wernr ,0, sc4_4reel, sc4, sc4_state, sc4wernr, ROT0, "Nova","Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4wrnlt ,sc4wernr, sc4_4reel, sc4, sc4_state, sc4wernr, ROT0, "Nova","Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wernr ,0, sc4_4reel, sc4, sc4_state, sc4wernr, ROT0, "Nova","Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wrnlt ,sc4wernr, sc4_4reel, sc4, sc4_state, sc4wernr, ROT0, "Nova","Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// no sound roms
// PR2023.GERMAN BRIX...........PR2023,German BRIX,......PR2023 SOUNDS V1 (non-standard header)
-GAMEL( 200?, sc4brix ,0, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brixa ,sc4brix, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4brixb ,sc4brix, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brix ,0, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brixa ,sc4brix, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4brixb ,sc4brix, sc4_4reel_alt, sc4, sc4_state, sc4brix, ROT0, "Nova","Brix (German) (Nova) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// both of these are incomplete
// P_O_E_T_N_M_E_ _R_0_1_B_A_K_G_L_ _._0_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _9_0_8_6_ _L_C_ _O_D_G_S_U_D_1_
-GAMEL( 200?, sc4bgold ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Black Gold (Nova) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
-GAMEL( 200?, sc4bgolda ,sc4bgold, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Black Gold (Nova) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4bgold ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Black Gold (Nova) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
+GAMEL( 200?, sc4bgolda ,sc4bgold, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Black Gold (Nova) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // incomplete pairing
// no identifiaction string
-GAMEL( 200?, sc4wag ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma/Nova","WIN-10-Gain (German) (Nova) (Scorpion 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4wag ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma/Nova","WIN-10-Gain (German) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6984 VIVA MEXICO 1.30 95008095 VIVA MEXICO PR6984
-GAMEL( 200?, sc4vmnv ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Viva Mexico (Nova) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vmnv ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Viva Mexico (Nova) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR6984 VIVA MEXICO 1.00 95008095 VIVA MEXICO PR6984
-GAMEL( 200?, sc4vmnva ,sc4vmnv, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Viva Mexico (Nova) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4vmnva ,sc4vmnv, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Viva Mexico (Nova) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2055.GERMAN MONOPOLY... (non-standard header)
-GAMEL( 200?, sc4monod ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monoda ,sc4monod, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4monodb ,sc4monod, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monod ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monoda ,sc4monod, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4monodb ,sc4monod, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma","Monopoly (Mazooma) [German] (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// doesn't like the sound rom (not sure why, they look OK and have correct header)
// PR7044 GERMAN JIGGERY POKERY PR7044SND
-GAMEL( 200?, sc4jiggn ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Jiggery Pockery (German) (Nova) (Scorpion 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4jiggn ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Jiggery Pockery (German) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR7076 GERMAN SINBAD2001 PR7076,German SINBAD2001, PR7076 SOUNDS V1
-GAMEL( 200?, sc4s2k ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Sinbad 2000 (German) (Nova) (Scorpion 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4s2k ,0, sc4, sc4, sc4_state, sc4, ROT0, "Nova","Sinbad 2000 (German) (Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR2022 GERMAN CASHANOVA (not a standard string)
-GAMEL( 200?, sc4cashg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma / Nova","Cashanova (German) (Mazooma / Nova) (Scorpion 4)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4cashg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma / Nova","Cashanova (German) (Mazooma / Nova) (Scorpion 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
@@ -49766,19 +49766,19 @@ GAMEL( 200?, sc4cashg ,0, sc4, sc4, sc4_state, sc4, ROT0, "Mazooma /
/****************************************************************************************************************************************************************************************************************/
-GAMEL( 200?, ad4skill ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Skill Dice (BFM) (Scorpion 4 + Adder 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, ad4film ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // the 68k vectors differ from usual, but it contains the expected strings for an Adder 4 title. No main program roms tho? :/
-GAMEL( 200?, ad4filma ,ad4film, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
-GAMEL( 200?, ad4ctl ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, ad4ctla ,ad4ctl, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, ad4skill ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Skill Dice (BFM) (Scorpion 4 + Adder 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, ad4film ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // the 68k vectors differ from usual, but it contains the expected strings for an Adder 4 title. No main program roms tho? :/
+GAMEL( 200?, ad4filma ,ad4film, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Film Premiere (Video?) (Bellfruit) (Adder 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 ) // ^^
+GAMEL( 200?, ad4ctl ,0, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, ad4ctla ,ad4ctl, sc4_adder4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1036 CLUB COP THE LOT PR1036 CLOT SOUNDS11 COP THE LOT
// shows nothing on the VFD, but boots (to very little)
-GAMEL( 200?, sc4ctlcl ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 1)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctlcla ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 2)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlcl ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 1)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlcla ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 2)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// PR1036 CLUB COP THE LOT COP THE LOT CLUB PR1036 CLOT SOUNDS11 COP THE LOT
// shows nothing, but alarms, do these go with the ad4 video roms?
-GAMEL( 200?, sc4ctlclb ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 3)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
-GAMEL( 200?, sc4ctlclc ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 4)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlclb ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 3)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4ctlclc ,sc4ctlcl, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Cop The Lot Club (Bellfruit) (Scorpion 4) (set 4)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
// not sure this is SC4, it crashes MAME and the addresses it accesses look strange
-GAMEL( 200?, sc4milro ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Millionaires Row (Scorpion 4?)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK, layout_bfm_sc4 )
+GAMEL( 200?, sc4milro ,0, sc4, sc4, sc4_state, sc4, ROT0, "BFM","Millionaires Row (Scorpion 4?)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK, layout_bfm_sc4 )
diff --git a/src/mame/drivers/bfm_sc5sw.c b/src/mame/drivers/bfm_sc5sw.c
index 0b456ecf25b..04fc77c13fc 100644
--- a/src/mame/drivers/bfm_sc5sw.c
+++ b/src/mame/drivers/bfm_sc5sw.c
@@ -13150,2303 +13150,2303 @@ DRIVER_INIT_MEMBER(bfm_sc5_state,sc5)
}
// PR2437 28 PLAYS LATER TEDL SOUNDS NITH
-GAME( 200?, sc5plays ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","28 Plays Later (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5playsa ,sc5plays, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","28 Plays Later (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5plays ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","28 Plays Later (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5playsa ,sc5plays, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","28 Plays Later (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3214 AWP ANT N DECS SNT GRAB THE ADS S5 PR3214 SNT GRAB THE ADS SOUNDS11 GRAB THE ADS S.SITE
-GAME( 200?, sc5adga ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adgaa ,sc5adga, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adgab ,sc5adga, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adgac ,sc5adga, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adgad ,sc5adga, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adgae ,sc5adga, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adga ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adgaa ,sc5adga, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adgab ,sc5adga, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adgac ,sc5adga, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adgad ,sc5adga, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adgae ,sc5adga, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3214 AWP ANT N DECS GRAB THE CASH S5 PR3214 GRAB THE CASH SOUNDS11 GRAB THE CASH S.SITE
-GAME( 200?, sc5adgtc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Cash (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adgtca ,sc5adgtc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Cash (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adgtc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Cash (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adgtca ,sc5adgtc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Grab The Cash (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// Z053 BANKJOB PR000053 BANKJOB 1 BANKJOB AWP (this numbering looks more like QPS)
-GAME( 200?, sc5bjob ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bjoba ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bjobb ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bjobc ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bjobd ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bjobe ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bjobf ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bjobg ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bjobh ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bjobi ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bjob ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bjoba ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bjobb ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bjobc ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bjobd ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bjobe ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bjobf ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bjobg ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bjobh ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bjobi ,sc5bjob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bank Job (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2077KING X KING X MAZ BARKX SOUNDS KING X
-GAME( 200?, sc5bkngx ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bar King X (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bkngxa ,sc5bkngx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bar King X (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bkngx ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bar King X (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bkngxa ,sc5bkngx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bar King X (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3216 AWP BUCKANEERS SCORP5 PR3216 BUCKANEERS SOUNDS11 BUCKANEERS S.SITE
-GAME( 200?, sc5bucc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bucca ,sc5bucc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5buccb ,sc5bucc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5buccc ,sc5bucc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5buccd ,sc5bucc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bucce ,sc5bucc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bucc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bucca ,sc5bucc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5buccb ,sc5bucc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5buccc ,sc5bucc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5buccd ,sc5bucc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bucce ,sc5bucc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Buccaneers (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3205 AWP BULLSEYE POUNDS FOR POINTS S5 PR3205 BULLYS PNDSFPTS SOUNDS11 POUNDS FOR POINT S.SITE
-GAME( 200?, sc5bpfpb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Pounds For Points (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bpfpba ,sc5bpfpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Pounds For Points (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bpfpb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Pounds For Points (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bpfpba ,sc5bpfpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Pounds For Points (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1914 AWP THREE IN A BED BULLSEYE SCORP5 PR1914 THREE I A BED B SOUNDS11 3IAB BULLSEYE S.SITE
-GAME( 200?, sc5btiab ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Three In A Bed (Bellfruit) (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5btiab ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Three In A Bed (Bellfruit) (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1744 BULLSEYE TRIPLE BULLSEYE TRIPLE ARCADE PR1743 CASINO BULLSEYE SOUNDS11
-GAME( 200?, sc5btrip ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Triple (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5btripa ,sc5btrip, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Triple (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5btrip ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Triple (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5btripa ,sc5btrip, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Triple (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1743 CASINO BULLSEYE CASINO BULLSEYE ARCADE PR1743 CASINO BULLSEYE SOUNDS11
-GAME( 200?, sc5btripb ,sc5btrip, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Triple (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5btripc ,sc5btrip, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Triple (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5btripb ,sc5btrip, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Triple (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5btripc ,sc5btrip, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Triple (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2197 BUNNY MONEY BUNNY MONEY BUNN SOUNDS BUNNY MONEY
-GAME( 200?, sc5bunny ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bunny Money (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bunnya ,sc5bunny, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bunny Money (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bunny ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bunny Money (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bunnya ,sc5bunny, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bunny Money (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// Z054 CANNON PR000054 CANNON 1 CANNON AWP (looks more like a QPS header)
-GAME( 200?, sc5cbrun ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cannonball Run (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cbruna ,sc5cbrun, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cannonball Run (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cbrun ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cannonball Run (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cbruna ,sc5cbrun, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cannonball Run (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1681 181104 CASH FACTOR PR1681 CASH FACTOR 1 CASH FACTOR AWP
-GAME( 200?, sc5cfact ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Factor (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfacta ,sc5cfact, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Factor (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfact ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Factor (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfacta ,sc5cfact, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Factor (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3204 AWP CASH OF THE TITANS S5 PR3204 CASH TITANS SOUNDS11 CASH OF TITANS S.SITE
-GAME( 200?, sc5ctit ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Of The Titans (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ctita ,sc5ctit, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Of The Titans (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ctit ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Of The Titans (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ctita ,sc5ctit, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Of The Titans (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2343 CASH RAIDER RAID SOUNDS NITH
-GAME( 200?, sc5craid ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cash Raider (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5craida ,sc5craid, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cash Raider (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5craid ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cash Raider (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5craida ,sc5craid, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cash Raider (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1610 AWP CASH VEGAS PR1610 CASH VEGAS SOUNDS11 CASH VEGAS S.SITE
-GAME( 200?, sc5cvega ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Vegas (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cvegaa ,sc5cvega, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Vegas (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cvega ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Vegas (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cvegaa ,sc5cvega, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Vegas (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2210 CHOP 'N' CHANGE CHOP SOUNDS CHOP 'N' CHANGE
-GAME( 200?, sc5chopc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chop 'n' Change (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chopca ,sc5chopc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chop 'n' Change (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chopc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chop 'n' Change (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chopca ,sc5chopc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chop 'n' Change (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2422 BINGO BAR7 S5 PR1433 BAR SEVENS SOUNDS11 BAR7 S.SITE
-GAME( 200?, sc5cbar7 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Classic Bar 7 (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cbar7a ,sc5cbar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Classic Bar 7 (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cbar7 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Classic Bar 7 (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cbar7a ,sc5cbar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Classic Bar 7 (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2495 CLUEDO CLUEDO SOUNDS CLUEDO
-GAME( 200?, sc5clu70 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Cluedo 70 (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clu70a ,sc5clu70, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Cluedo 70 (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clu70 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Cluedo 70 (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clu70a ,sc5clu70, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Cluedo 70 (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2339 CLUEDO CASINO CLUEDO CASINO MAZ CCLU SOUNDS GET A CLUE
-GAME( 200?, sc5clcas ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo Casino (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clcasa ,sc5clcas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo Casino (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clcas ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo Casino (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clcasa ,sc5clcas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo Casino (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3320 AWP CLUEDO NOTORIOUS S5 PR3320 CLUEDO SOUNDS11 CLUEDO NOTORIOUS S.SITE
-GAME( 200?, sc5clnot ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clnota ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clnotb ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clnotc ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clnotd ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clnote ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clnotf ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clnotg ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clnot ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clnota ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clnotb ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clnotc ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clnotd ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clnote ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clnotf ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clnotg ,sc5clnot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Notorious (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2332 CLUEDO THE USUAL SUSPECTS CTUS SOUNDS CLUEDO CTUL
-GAME( 200?, sc5clus ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clusa ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clusb ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clusc ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clusd ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cluse ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clusf ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clusg ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clush ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clusi ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clusj ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clusk ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clus ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clusa ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clusb ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clusc ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clusd ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cluse ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clusf ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clusg ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clush ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clusi ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clusj ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clusk ,sc5clus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3317 AWP THE COLOUR OF MONEY S5 PR3317 COLOUR OF MONEY SOUNDS11 COLOUR OF MONEY S.SITE
-GAME( 200?, sc5colmo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Of Money (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5colmoa ,sc5colmo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Of Money (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5colmob ,sc5colmo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Of Money (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5colmoc ,sc5colmo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Of Money (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5colmo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Of Money (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5colmoa ,sc5colmo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Of Money (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5colmob ,sc5colmo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Of Money (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5colmoc ,sc5colmo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Of Money (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3502 AWP THE COLOUR OF MONEY NEW S5 PR3502 C OF M TEN SOUNDS11 COLOUR OF MONEY2 S.SITE
-GAME( 200?, sc5newcm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5newcma ,sc5newcm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5newcmb ,sc5newcm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5newcmc ,sc5newcm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5newcmd ,sc5newcm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5newcme ,sc5newcm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5newcm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5newcma ,sc5newcm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5newcmb ,sc5newcm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5newcmc ,sc5newcm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5newcmd ,sc5newcm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5newcme ,sc5newcm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Colour Of Money New (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3506 AWP COPS AND ROBBERS ON THE RUN S5 PR3506 C & R ON T RUN SOUNDS11 ON THE RUN S.SITE
-GAME( 200?, sc5crotr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers On The Run (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crotra ,sc5crotr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers On The Run (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crotr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers On The Run (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crotra ,sc5crotr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers On The Run (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3427 CLUB COPS N ROBBERS SMASH N GRAB SCORP5 PR3421 CNR_SNG SOUNDS11 SMASH N GRAB CLUB
-GAME( 200?, sc5crsgc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsgca ,sc5crsgc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgca ,sc5crsgc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3421 CLUB COPS N ROBBERS SMASH N GRAB SCORP5 PR3421 CNR_SNG SOUNDS11 SMASH N GRAB CLUB
-GAME( 200?, sc5crsgcb ,sc5crsgc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsgcc ,sc5crsgc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgcb ,sc5crsgc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgcc ,sc5crsgc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3421 CLUB COPS N ROBBERS SMASH N GRAB SCORP5 PR3421 CNR_SNG SOUNDS11 SMASH N GRAB CLUB (same ident as some of the sc5crsgc sets..)
-GAME( 200?, sc5crsgr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsgra ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsgrb ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsgrc ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsgrd ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsgre ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsgrf ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsgrg ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgra ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgrb ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgrc ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgrd ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgre ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgrf ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsgrg ,sc5crsgr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3521 AWP CORONATION STREET SCORP5 PR3521 CORRONATION ST SOUNDS11 CORONATION ST S.SITE
-GAME( 200?, sc5corst ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Coronation Street (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corsta ,sc5corst, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Coronation Street (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corstb ,sc5corst, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Coronation Street (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corstc ,sc5corst, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Coronation Street (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corst ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Coronation Street (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corsta ,sc5corst, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Coronation Street (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corstb ,sc5corst, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Coronation Street (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corstc ,sc5corst, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Coronation Street (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3417 AWP CRAZYFRUIT AND NUTCASE SCORP5 PR3417 CF NUTCASE SOUNDS11 CF& NUTCASE S.SITE
-GAME( 200?, sc5cfnc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruit & Nutcase (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfnca ,sc5cfnc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruit & Nutcase (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfnc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruit & Nutcase (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfnca ,sc5cfnc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruit & Nutcase (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3436 CRAZY FRUITS COMMUNITY PARTY CRAZY FRUITS CP ARCADE PR3436 CF COMMUNITY P SOUNDS11
-GAME( 200?, sc5cfcp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpa ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpb ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpc ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpd ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpe ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpf ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpg ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcph ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpi ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpj ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpk ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpl ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpm ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpn ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpo ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpp ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpq ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpr ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcps ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpt ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 21)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpu ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 22)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpv ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 23)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfcpw ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 24)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpa ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpb ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpc ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpd ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpe ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpf ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpg ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcph ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpi ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpj ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpk ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpl ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpm ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpn ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpo ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpp ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpq ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpr ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcps ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpt ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 21)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpu ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 22)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpv ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 23)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfcpw ,sc5cfcp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 24)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1359 CASINO CRAZY FRUITS PARTY PR1359 CRAZY F PARTY SOUNDS11
-GAME( 200?, sc5cfpt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfpta ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptb ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptc ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptd ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfpte ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptf ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptg ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfpth ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfpti ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfpt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfpta ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptb ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptc ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptd ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfpte ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptf ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptg ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfpth ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfpti ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1359 CASINO CRAZY FRUITS PARTY PR1359 TB CRAZY F P SOUNDS11
-GAME( 200?, sc5cfptj ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptk ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptl ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptm ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptj ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptk ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptl ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptm ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1430 CASINO CRAZY FRUITS SIT DOWN PR1430 CRAZY F SIT D SOUNDS11
-GAME( 200?, sc5cfptn ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfpto ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptp ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptq ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfptr ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cfpts ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptn ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfpto ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptp ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptq ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfptr ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cfpts ,sc5cfpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3418 AWP CRAZY KNIGHTS SCORP5 PR3418 CRAZY KNIGHTS SOUNDS11 CRAZY KNIGHTS S.SITE
-GAME( 200?, sc5cknig ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Knights (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ckniga ,sc5cknig, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Knights (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cknigb ,sc5cknig, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Knights (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cknigc ,sc5cknig, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Knights (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cknig ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Knights (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ckniga ,sc5cknig, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Knights (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cknigb ,sc5cknig, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Knights (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cknigc ,sc5cknig, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Knights (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1741 CRAZY PAYS SCORP5 PR1741 CRAZY PAYS SOUNDS11 CRAZY PAYS S.SITE
-GAME( 200?, sc5cpays ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Pays (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cpaysa ,sc5cpays, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Pays (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cpays ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Pays (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cpaysa ,sc5cpays, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crazy Pays (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3409 AWP DEAL OR NO DEAL BANKERS BONUS S5 PR3409 BANKERS BONUS SOUNDS11 BANKERS BONUS S.SITE
-GAME( 200?, sc5dndbo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndboa ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbob ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndboc ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbod ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndboe ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbof ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbog ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndboh ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndboi ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndboj ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbok ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbol ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbom ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndboa ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbob ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndboc ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbod ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndboe ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbof ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbog ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndboh ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndboi ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndboj ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbok ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbol ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbom ,sc5dndbo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3068 CLUB BEAT THE BANKER BEAT THE BANKER CLUB PR3068 BEAT THE BANKER SOUNDS11
-GAME( 200?, sc5dndbl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbla ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblb ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblc ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbld ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndble ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblf ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblg ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblh ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbli ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblj ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblk ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbll ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblm ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbln ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblo ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblp ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblq ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndblr ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbls ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbla ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblb ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblc ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbld ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndble ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblf ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblg ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblh ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbli ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblj ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblk ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbll ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblm ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbln ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblo ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblp ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblq ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndblr ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbls ,sc5dndbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
// these contain no 'PROJECT NUMBER' ident string.
-GAME( 200?, sc5dndbq ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbqa ,sc5dndbq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbqb ,sc5dndbq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbqc ,sc5dndbq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbqd ,sc5dndbq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbqe ,sc5dndbq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbq ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbqa ,sc5dndbq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbqb ,sc5dndbq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbqc ,sc5dndbq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbqd ,sc5dndbq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbqe ,sc5dndbq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3503 AWP DEAL OR NO DEAL COPS AND ROBBERS S5 PR3503 DOND CNR SOUNDS11 DOND COPS S.SITE
-GAME( 200?, sc5dndcr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcra ,sc5dndcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcrb ,sc5dndcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcrc ,sc5dndcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcrd ,sc5dndcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcre ,sc5dndcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcra ,sc5dndcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcrb ,sc5dndcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcrc ,sc5dndcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcrd ,sc5dndcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcre ,sc5dndcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3545 AWP DESERT ISLAND DEAL S5 PR3545 DOND D I D SOUNDS11 DESERT ISLAND DL S.SITE
-GAME( 200?, sc5dndde ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddea ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddeb ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddec ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndded ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddee ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddef ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddeg ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndde ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddea ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddeb ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddec ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndded ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddee ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddef ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddeg ,sc5dndde, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3420 AWP DIAMOND DOND S5 PR3420 DIAMOND DOND SOUNDS11 DIAMOND DOND S.SITE
-GAME( 200?, sc5dnddi ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddia ,sc5dnddi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddib ,sc5dnddi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddic ,sc5dnddi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddi ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddia ,sc5dnddi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddib ,sc5dnddi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddic ,sc5dnddi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3313 AWP DEAL OR NO DEAL DOUBLE TAKE S5 PR3313 DOUBLE TAKE SOUNDS11 DOUBLE TAKE S.SITE
-GAME( 200?, sc5dnddt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddta ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddtb ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddtc ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddtd ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddte ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddtf ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddta ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddtb ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddtc ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddtd ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddte ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddtf ,sc5dnddt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3316 AWP DOND DREAM OFFER S5 PR3316 DREAM OFFER SOUNDS11 DREAM OFFER S.SITE
-GAME( 200?, sc5dnddo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddoa ,sc5dnddo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddob ,sc5dnddo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddoc ,sc5dnddo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddoa ,sc5dnddo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddob ,sc5dnddo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddoc ,sc5dnddo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3432 AWP DEAL OR NO DEAL FEELING LUCKY SCORP5 PR3309 FEELING LUCKY SOUNDS11 FEELING LUCKY S.SITE
-GAME( 200?, sc5dndfl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3432) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndfla ,sc5dndfl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3432) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndfl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3432) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndfla ,sc5dndfl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3432) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3309 AWP DEAL OR NO DEAL FEELING LUCKY SCORP5 PR3309 FEELING LUCKY SOUNDS11 FEELING LUCKY S.SITE
-GAME( 200?, sc5dndflb ,sc5dndfl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndflc ,sc5dndfl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndfld ,sc5dndfl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndfle ,sc5dndfl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndflb ,sc5dndfl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndflc ,sc5dndfl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndfld ,sc5dndfl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndfle ,sc5dndfl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3501 AWP DEAL OR NO DEAL GAME ON SCORP5 PR3501 DOND GAME ON SOUNDS11 DOND GAME ON S.SITE
-GAME( 200?, sc5dndgo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Game On (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndgoa ,sc5dndgo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Game On (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndgo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Game On (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndgoa ,sc5dndgo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Game On (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3310 AWP DEAL OR NO DEAL GOLD S5 PR3310 DOND GOLD SOUNDS11 DOND GOLD S.SITE
-GAME( 200?, sc5dndgl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndgla ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndglb ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndglc ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndgld ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndgle ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndglf ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndglg ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndglh ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndgli ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndglj ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndglk ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndgl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndgla ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndglb ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndglc ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndgld ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndgle ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndglf ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndglg ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndglh ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndgli ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndglj ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndglk ,sc5dndgl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3415 AWP DEAL OR NO DEAL LIVE THE DREAM S5 PR3415 LIVE THE DREAM SOUNDS11 LIVE THE DREAM S.SITE
-GAME( 200?, sc5dndld ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlda ,sc5dndld, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndldb ,sc5dndld, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndldc ,sc5dndld, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndld ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlda ,sc5dndld, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndldb ,sc5dndld, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndldc ,sc5dndld, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3407 AWP DEAL OR NO DEAL MAKE OR BREAK S5 PR3407 MAKE OR BREAK SOUNDS11 MAKE OR BREAK S.SITE
-GAME( 200?, sc5dndmb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmba ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmbb ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmbc ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmbd ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmbe ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmbf ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmbg ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmbh ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmbi ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmbj ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmbk ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmba ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmbb ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmbc ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmbd ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmbe ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmbf ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmbg ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmbh ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmbi ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmbj ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmbk ,sc5dndmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3411 AWP MEGA DEAL OR NO DEAL S5 PR3411 MEGA DOND SOUNDS11 MEGA DOND S.SITE
-GAME( 200?, sc5dndmd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmda ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmdd ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmde ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmdf ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmdi ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmdj ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmdk ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmda ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmdd ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmde ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmdf ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmdi ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmdj ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmdk ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3496 AWP MEGA DEAL OR NO DEAL S5 PR3411 MEGA DOND SOUNDS11 MEGA DOND S.SITE
-GAME( 200?, sc5dndmdb ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmdc ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmdg ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndmdh ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmdb ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmdc ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmdg ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndmdh ,sc5dndmd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3404 AWP DEAL OR NO DEAL PLAY IT AGAIN SCORP5 PR3404 PLAY IT AGAIN SOUNDS11 PLAY IT AGAIN S.SITE
-GAME( 200?, sc5dndpa ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpaa ,sc5dndpa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpab ,sc5dndpa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpac ,sc5dndpa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpa ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpaa ,sc5dndpa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpab ,sc5dndpa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpac ,sc5dndpa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3505 AWP DEAL OR NO DEAL PLAY THE GAME S5 PR3505 PLAY THE GAME SOUNDS11 PLAY THE GAME S.SITE
-GAME( 200?, sc5ddptg ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddptga ,sc5ddptg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddptgb ,sc5ddptg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddptgc ,sc5ddptg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddptg ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddptga ,sc5ddptg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddptgb ,sc5ddptg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddptgc ,sc5ddptg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3303 AWP DEAL OR NO DEAL THE PLAYERS CHOICE SCORP5 PR3303 PLAYERS CHOICE SOUNDS11 PLAYERS CHOICE S.SITE
-GAME( 200?, sc5ddply ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Player's Choice (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddplya ,sc5ddply, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Player's Choice (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddply ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Player's Choice (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddplya ,sc5ddply, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Player's Choice (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3419 AWP DOND ROAD TO RICHES SCORP5 PR3419 ROAD TO RICHES SOUNDS11 ROAD TO RICHES S.SITE
-GAME( 200?, sc5dndrr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrra ,sc5dndrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrrb ,sc5dndrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrrc ,sc5dndrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrrd ,sc5dndrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrre ,sc5dndrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrra ,sc5dndrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrrb ,sc5dndrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrrc ,sc5dndrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrrd ,sc5dndrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrre ,sc5dndrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3239 AWP SIMPLY DEAL OR NO DEAL SCORP5 PR3219 SIMPLY DOND SOUNDS11 SIMPLY DOND S.SITE
-GAME( 200?, sc5dndsi ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndsia ,sc5dndsi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndsib ,sc5dndsi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndsic ,sc5dndsi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndsid ,sc5dndsi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndsi ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndsia ,sc5dndsi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndsib ,sc5dndsi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndsic ,sc5dndsi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndsid ,sc5dndsi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3405 AWP DEAL OR NO DEAL THE BANKER RINGS TWICE S5 PR3405 DOND BANKER SOUNDS11 DOND THE BANKER S.SITE
-GAME( 200?, sc5dndrt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrta ,sc5dndrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrtb ,sc5dndrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrtc ,sc5dndrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrtd ,sc5dndrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrte ,sc5dndrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrta ,sc5dndrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrtb ,sc5dndrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrtc ,sc5dndrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrtd ,sc5dndrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrte ,sc5dndrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3412 AWP DEAL OR NO DEAL THE PERFECT DEAL SCORP5 PR3412 PERFECT DEAL SOUNDS11 THE PERFECT DEAL S.SITE
-GAME( 200?, sc5dndpd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpda ,sc5dndpd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpdb ,sc5dndpd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpdc ,sc5dndpd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpdd ,sc5dndpd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpde ,sc5dndpd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpda ,sc5dndpd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpdb ,sc5dndpd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpdc ,sc5dndpd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpdd ,sc5dndpd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpde ,sc5dndpd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3303 AWP DEAL OR NO DEAL THE PLAYERS CHOICE SCORP5 PR3303 PLAYERS CHOICE SOUNDS11 PLAYERS CHOICE S.SITE
-GAME( 200?, sc5dndpc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Players Choice (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpca ,sc5dndpc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Players Choice (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Players Choice (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpca ,sc5dndpc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Players Choice (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3416 AWP DEAL OR NO DEAL THINK BIG SCORP5 PR3416 DOND THINK BIG SOUNDS11 DOND THINK BIG S.SITE
-GAME( 200?, sc5dndtb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Big (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtba ,sc5dndtb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Big (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Big (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtba ,sc5dndtb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Big (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2323 DEVIL OF A DEAL DOAD SOUNDS DEVIL OF A DEAL S.SITE
-GAME( 200?, sc5devil ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Devil Of A Deal (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5devila ,sc5devil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Devil Of A Deal (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5devilb ,sc5devil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Devil Of A Deal (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5devilc ,sc5devil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Devil Of A Deal (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5devil ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Devil Of A Deal (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5devila ,sc5devil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Devil Of A Deal (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5devilb ,sc5devil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Devil Of A Deal (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5devilc ,sc5devil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Devil Of A Deal (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3007 AWP DRAC PACK SCORP5 PR3007 DRACPACK SOUNDS11 DRAC PACK S.SITE
-GAME( 200?, sc5dracp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Drac Pack (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dracpa ,sc5dracp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Drac Pack (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dracp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Drac Pack (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dracpa ,sc5dracp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Drac Pack (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3306 AWP FAMILY GUY BOOZE HOUND SCORP5 PR3306 BOOZE HOUND SOUNDS11 BOOZE HOUND S.SITE
-GAME( 200?, sc5fgbh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fgbha ,sc5fgbh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fgbhb ,sc5fgbh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fgbhc ,sc5fgbh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fgbh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fgbha ,sc5fgbh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fgbhb ,sc5fgbh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fgbhc ,sc5fgbh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3301 AWP FAMILY GUY GRIFFIN PLUMBING S5 PR3301 GRIFFIN PLUMB SOUNDS11 GRIFFIN PLUMBING S.SITE
-GAME( 200?, sc5fggp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fggpa ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fggpb ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fggpc ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fggpd ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fggpe ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fggpf ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fggpg ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fggp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fggpa ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fggpb ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fggpc ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fggpd ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fggpe ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fggpf ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fggpg ,sc5fggp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR IT FAST CASH FASTCASHSOUND FAST CASH
-GAME( 200?, sc5fast ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Fast Cash (Qps) (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fast ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Fast Cash (Qps) (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3061 CLUB FIGHT NIGHT FIGHT NIGHT CLUB PR3061 CLUB FIGHT NIGHT SOUNDS11 CLUB FIGHT NIGHT
-GAME( 200?, sc5fnclb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fnclba ,sc5fnclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fnclbb ,sc5fnclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fnclbc ,sc5fnclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fnclbd ,sc5fnclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fnclbe ,sc5fnclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fnclb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fnclba ,sc5fnclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fnclbb ,sc5fnclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fnclbc ,sc5fnclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fnclbd ,sc5fnclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fnclbe ,sc5fnclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fight Night Club (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1939 FIRE N DICE PR1919 FIRE N DICE SOUNDS11 FIRE N DICE S.SITE
-GAME( 200?, sc5fdice ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fire 'n' Dice (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fdicea ,sc5fdice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fire 'n' Dice (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fdice ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fire 'n' Dice (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fdicea ,sc5fdice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fire 'n' Dice (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1602 AWP FIRESTARTER SCORP5 PR1602 FIRESTARTER SOUNDS11 FIRESTARTER S.SITE
-GAME( 200?, sc5fires ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Firestarter (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5firesa ,sc5fires, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Firestarter (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5firesb ,sc5fires, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Firestarter (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5firesc ,sc5fires, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Firestarter (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fires ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Firestarter (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5firesa ,sc5fires, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Firestarter (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5firesb ,sc5fires, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Firestarter (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5firesc ,sc5fires, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Firestarter (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2418 FLASH THE CASH FLASHCASH SOUNDS FLASHTHECASH
-GAME( 200?, sc5ftcas ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Flash The Cash (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ftcasa ,sc5ftcas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Flash The Cash (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ftcas ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Flash The Cash (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ftcasa ,sc5ftcas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Flash The Cash (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2319 FRUIT LOOP FLOOP SOUNDS FRUIT LOOP
-GAME( 200?, sc5floop ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Fruit Loops (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5floopa ,sc5floop, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Fruit Loops (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5floop ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Fruit Loops (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5floopa ,sc5floop, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Fruit Loops (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1404 GET RICH QUICK PR1404 GET RICH QUICK SOUNDS11
-GAME( 200?, sc5grq ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Get Rich Quick (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5grqa ,sc5grq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Get Rich Quick (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5grqb ,sc5grq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Get Rich Quick (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5grqc ,sc5grq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Get Rich Quick (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5grq ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Get Rich Quick (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5grqa ,sc5grq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Get Rich Quick (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5grqb ,sc5grq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Get Rich Quick (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5grqc ,sc5grq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Get Rich Quick (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1403 GOLD FEVER PR1403 GOLD FEVER SOUNDS11
-GAME( 200?, sc5gldfv ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldfva ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldfvb ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldfvc ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldfvd ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldfve ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldfvf ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldfvg ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldfv ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldfva ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldfvb ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldfvc ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldfvd ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldfve ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldfvf ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldfvg ,sc5gldfv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Fever (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3410 AWP GOLDEN GOALS SCORP5 PR3410 GOLDEN GOALS SOUNDS11 GOLDEN GOALS S.SITE
-GAME( 200?, sc5gldgo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Goals (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldgoa ,sc5gldgo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Goals (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldgo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Goals (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldgoa ,sc5gldgo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Goals (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2203 GOLDEN SPINNER GSPINSND (top box?)
-GAME( 200?, sc5gldsp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner (PR2203) (Mazooma) (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldsp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner (PR2203) (Mazooma) (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2546 GOLDEN SPINNER Bingo Version 011 GSPINSND GOLDEN SPINNER
-GAME( 200?, sc5gldspa ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspb ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspc ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspe ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspg ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspi ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspj ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspk ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspl ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspm ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspo ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspa ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspb ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspc ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspe ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspg ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspi ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspj ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspk ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspl ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspm ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspo ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2546 GOLDEN SPINNER Arcade Version 061 GSPINSND GOLDEN SPINNER
-GAME( 200?, sc5gldspd ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspf ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldsph ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspn ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gldspp ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspd ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspf ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldsph ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspn ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gldspp ,sc5gldsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
// Z052 GRANDMASTER PR000052 GRANDMASTER 1 GRANDMASTER AWP (looks like a QPS header)
-GAME( 200?, sc5gmclb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Grand Master Cash (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gmclba ,sc5gmclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Grand Master Cash (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gmclbb ,sc5gmclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Grand Master Cash (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gmclbc ,sc5gmclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Grand Master Cash (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gmclb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Grand Master Cash (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gmclba ,sc5gmclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Grand Master Cash (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gmclbb ,sc5gmclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Grand Master Cash (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gmclbc ,sc5gmclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Grand Master Cash (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2318 HI ROLLER HIROLL SOUNDS HIGH ROLLER
-GAME( 200?, sc5hirol ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hirola ,sc5hirol, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hirolb ,sc5hirol, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hirolc ,sc5hirol, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hirold ,sc5hirol, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hirole ,sc5hirol, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hirol ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hirola ,sc5hirol, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hirolb ,sc5hirol, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hirolc ,sc5hirol, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hirold ,sc5hirol, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hirole ,sc5hirol, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","High Roller (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1405 THE HULK PR1405 THE HULK SOUNDS11
-GAME( 200?, sc5hulk ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hulka ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hulkb ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hulkc ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hulkd ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hulke ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hulkf ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hulkg ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hulkh ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hulki ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hulk ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hulka ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hulkb ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hulkc ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hulkd ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hulke ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hulkf ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hulkg ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hulkh ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hulki ,sc5hulk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Hulk (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2316 IT'S A BULLSEYE ITSBULLSEYE SOUNDS IT'S A BULLSEYE
-GAME( 200?, sc5iab ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","It's A Bullseye (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5iaba ,sc5iab, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","It's A Bullseye (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5iab ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","It's A Bullseye (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5iaba ,sc5iab, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","It's A Bullseye (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2450 ITALIAN JOB BTDO ITLY SOUNDS NITH
-GAME( 200?, sc5ijbdo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijbdoa ,sc5ijbdo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijbdob ,sc5ijbdo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijbdoc ,sc5ijbdo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijbdo ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijbdoa ,sc5ijbdo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijbdob ,sc5ijbdo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijbdoc ,sc5ijbdo, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2077KING X KING X MAZ BARKX SOUNDS KING X 3
-GAME( 200?, sc5kingx ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X (PR2077) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5kingxa ,sc5kingx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X (PR2077) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5kingx ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X (PR2077) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5kingxa ,sc5kingx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X (PR2077) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2336KING X KING X MAZ BARKX SOUNDS KING X 3P
-GAME( 200?, sc5kingxc ,sc5kingx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X 3P (PR2336) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5kingxe ,sc5kingx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X 3P (PR2336) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5kingxc ,sc5kingx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X 3P (PR2336) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5kingxe ,sc5kingx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X 3P (PR2336) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2279 KING X TRIPLE BARKX SOUNDS + +
-GAME( 200?, sc5kingxb ,sc5kingx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X Triple (PR2279) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5kingxd ,sc5kingx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X Triple (PR2279) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5kingxb ,sc5kingx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X Triple (PR2279) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5kingxd ,sc5kingx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","King X Triple (PR2279) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2344 TOSSTHEMONKEY TOSTM SOUNDS TOSS THE MONKEY
-GAME( 200?, sc5monky ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monkey Business / Toss The Monkey (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5monkya ,sc5monky, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monkey Business / Toss The Monkey (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5monky ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monkey Business / Toss The Monkey (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5monkya ,sc5monky, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monkey Business / Toss The Monkey (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3431 AWP MONOPOLY BOOM OR BUST CLASSIC S5 PR3307 MPOLY BOOM OR B SOUNDS11 BOOM OR BUST S.SITE
-GAME( 200?, sc5mobob ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5moboba ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mobobd ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mobobe ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mobob ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5moboba ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mobobd ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mobobe ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3307 AWP MONOPOLY BOOM OR BUST S5 PR3307 MPOLY BOOM OR B SOUNDS11 BOOM OR BUST S.SITE
-GAME( 200?, sc5mobobb ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mobobc ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mobobf ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mobobg ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mobobh ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mobobi ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mobobb ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mobobc ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mobobf ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mobobg ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mobobh ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mobobi ,sc5mobob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3504 AWP MONOPOLY AUCTION SCORP5 PR3504 MPOLY AUCTION SOUNDS11 MONO AUCTION S.SITE
-GAME( 200?, sc5mogta ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mogtaa ,sc5mogta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mogtab ,sc5mogta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mogtac ,sc5mogta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mogtad ,sc5mogta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mogtae ,sc5mogta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mogta ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mogtaa ,sc5mogta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mogtab ,sc5mogta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mogtac ,sc5mogta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mogtad ,sc5mogta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mogtae ,sc5mogta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3311 AWP MONOPOLY MILLIONAIRE SCORP5 PR3311 MPOLY MILL SOUNDS11 MILLIONAIRE S.SITE
-GAME( 200?, sc5momil ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5momila ,sc5momil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5momilb ,sc5momil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5momilc ,sc5momil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5momild ,sc5momil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5momile ,sc5momil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momil ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momila ,sc5momil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momilb ,sc5momil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momilc ,sc5momil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momild ,sc5momil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momile ,sc5momil, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1945 CLUB MONEYBAGS MONEY BAGS CLUB PR1955 C M MONEYBAGS SOUNDS11 DEAL OR NO DEAL
-GAME( 200?, sc5mombc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mombca ,sc5mombc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mombcb ,sc5mombc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mombcc ,sc5mombc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mombc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mombca ,sc5mombc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mombcb ,sc5mombc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mombcc ,sc5mombc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2496 MONOPOLY MONEY SPINNER MONY SOUNDS NITH
-GAME( 200?, sc5moms ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5momsa ,sc5moms, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5momsc ,sc5moms, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5momsd ,sc5moms, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5moms ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momsa ,sc5moms, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momsc ,sc5moms, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momsd ,sc5moms, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2395 MONEY SPINNER MONY SOUNDS NITH (== sc5monsp code?)
-GAME( 200?, sc5momsb ,sc5moms, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Money Spinner (PR2395) (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5momse ,sc5moms, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Money Spinner (PR2395) (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momsb ,sc5moms, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Money Spinner (PR2395) (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5momse ,sc5moms, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Money Spinner (PR2395) (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3408 AWP MONOPOLY PROPERTY LADDER S5 PR3408 MPOLY PROP LAD SOUNDS11 PROPERTY LADDER S.SITE
-GAME( 200?, sc5mopl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mopla ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5moplb ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5moplc ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mopld ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mople ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5moplf ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5moplg ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mopl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mopla ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5moplb ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5moplc ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mopld ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mople ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5moplf ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5moplg ,sc5mopl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2457 ROADTORICHES CLUBROADTORICHES CLUB CRTR SOUNDS CLUB ROAD TO RICHES
-GAME( 200?, sc5mor2r ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Road To Riches (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mor2ra ,sc5mor2r, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Road To Riches (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mor2r ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Road To Riches (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mor2ra ,sc5mor2r, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Road To Riches (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2449 PR2449,MONOPOLY WA MONOPOLY WA MAZ
-GAME( 200?, sc5monwa ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Win Again (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5monwaa ,sc5monwa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Win Again (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5monwa ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Win Again (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5monwaa ,sc5monwa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monopoly Win Again (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2485 CLUB MONTE CARLO OR BUST CLUB MONTE CARLO CLUB CLUB MONTE SOUNDS CLUB MONTE CARLO
-GAME( 200?, sc5cmcob ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cmcoba ,sc5cmcob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cmcobb ,sc5cmcob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cmcobc ,sc5cmcob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cmcob ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cmcoba ,sc5cmcob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cmcobb ,sc5cmcob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cmcobc ,sc5cmcob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2166 NUN N ROSES NANR SOUNDS NUNS N ROSES
-GAME( 200?, sc5nunsb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Nuns 'n' Roses (Bellfruit) (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nunsb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Nuns 'n' Roses (Bellfruit) (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3315 AWP OVER THE RAINBOW SCORP5 PR3315 OV THE RAINBOW SOUNDS11 OVER THE RAINBOW S.SITE
-GAME( 200?, sc5rainb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rainba ,sc5rainb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rainbb ,sc5rainb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rainbc ,sc5rainb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rainbd ,sc5rainb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rainbe ,sc5rainb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rainb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rainba ,sc5rainb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rainbb ,sc5rainb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rainbc ,sc5rainb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rainbd ,sc5rainb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rainbe ,sc5rainb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Over The Rainbow (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3015 AWP PARROTS OF THE CARIBBEAN SCORP5 PR3015 P CARIBBEAN SOUNDS11 PARROT CARIBBEAN S.SITE
-GAME( 200?, sc5parot ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5parota ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5parotb ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5parotc ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5parotd ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5parote ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5parotf ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5parotg ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5parot ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5parota ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5parotb ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5parotc ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5parotd ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5parote ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5parotf ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5parotg ,sc5parot, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2411 PILEONTHEPOUNDS PILE SOUNDS PILE
-GAME( 200?, sc5pilep ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Pile On The Pounds (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pilepa ,sc5pilep, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Pile On The Pounds (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pilepb ,sc5pilep, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Pile On The Pounds (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pilepc ,sc5pilep, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Pile On The Pounds (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pilep ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Pile On The Pounds (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pilepa ,sc5pilep, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Pile On The Pounds (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pilepb ,sc5pilep, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Pile On The Pounds (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pilepc ,sc5pilep, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Pile On The Pounds (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2306 POTS OF LUCK POTSOFLUCKSOUNDS POTS OF LUCK
-GAME( 200?, sc5potsm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pots Of Luck (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5potsma ,sc5potsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pots Of Luck (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potsm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pots Of Luck (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potsma ,sc5potsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pots Of Luck (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3528 CLUB PUBLIC ENEMY S5 PR3528 PUBLIC ENEMY SOUNDS11 PUBLIC ENEMY S.SITE
-GAME( 200?, sc5cpen1 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cpen1a ,sc5cpen1, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cpen1b ,sc5cpen1, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cpen1c ,sc5cpen1, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cpen1 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cpen1a ,sc5cpen1, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cpen1b ,sc5cpen1, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cpen1c ,sc5cpen1, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1406 QUALITY STREAK PR1406 QUALITY STREAK SOUNDS11
-GAME( 200?, sc5qual ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quala ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5qualb ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5qualc ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quald ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quale ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5qualf ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5qualg ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5qualh ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quali ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5qualj ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5qualk ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quall ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5qualm ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5qual ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quala ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5qualb ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5qualc ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quald ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quale ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5qualf ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5qualg ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5qualh ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quali ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5qualj ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5qualk ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quall ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5qualm ,sc5qual, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quality Streak (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2169 REEL SPIN SHADY TRSS SOUNDS REEL SPIN SHADY
-GAME( 200?, sc5rssh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Reel Spin Shady (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rssha ,sc5rssh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Reel Spin Shady (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rssh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Reel Spin Shady (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rssha ,sc5rssh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Reel Spin Shady (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3208 AWP ROAD HOG S5 PR3208 ROAD HOG SOUNDS11 ROAD HOG S.SITE
-GAME( 200?, sc5hog ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog (PR3208) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hoga ,sc5hog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog (PR3208) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hog ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog (PR3208) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hoga ,sc5hog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog (PR3208) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3248 ROAD HOG SCORP5 ROAD HOG CLUB PR3248 ROAD HOG SOUNDS11 ROAD HOG
-GAME( 200?, sc5rhclb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhclba ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhclbb ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhclbc ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhclbd ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhclbe ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhclb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhclba ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhclbb ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhclbc ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhclbd ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhclbe ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3249 ROAD HOG SCORP5 ROAD HOG FERRY CLUB PR3248 ROAD HOG SOUNDS11
-GAME( 200?, sc5rhclbf ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhclbg ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhclbf ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhclbg ,sc5rhclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1774 181104 SHARP SHOOTER PR1774 SHARP SHOOTER 1 SHARP SHOOTER AWP
-GAME( 200?, sc5sharp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Voodoo","Sharp Shooter (Voodoo) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sharpa ,sc5sharp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Voodoo","Sharp Shooter (Voodoo) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sharp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Voodoo","Sharp Shooter (Voodoo) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sharpa ,sc5sharp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Voodoo","Sharp Shooter (Voodoo) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// Z056 SHOOTSTARS PR000056 SHOOTSTARS 1 SHOOTSTARS AWP (Qps header?)
-GAME( 200?, sc5sfts ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Shoot For The Stars (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sftsa ,sc5sfts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Shoot For The Stars (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sftsb ,sc5sfts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Shoot For The Stars (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sftsc ,sc5sfts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Shoot For The Stars (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sfts ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Shoot For The Stars (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sftsa ,sc5sfts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Shoot For The Stars (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sftsb ,sc5sfts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Shoot For The Stars (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sftsc ,sc5sfts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Shoot For The Stars (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2466 SNAKE RATTLE AND ROLL SNAKERR SOUNDS SNAKE R AND ROLL
-GAME( 200?, sc5srrqp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Snake Rattle & Roll (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5srrqpa ,sc5srrqp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Snake Rattle & Roll (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5srrqp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Snake Rattle & Roll (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5srrqpa ,sc5srrqp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Snake Rattle & Roll (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3223 AWP SPINIT TO WINIT S5 PR3203 SPIN IT TO W IT SOUNDS11 SPINIT TO WINIT S.SITE
-GAME( 200?, sc5sitwi ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spin It To Win It (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sitwia ,sc5sitwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spin It To Win It (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sitwi ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spin It To Win It (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sitwia ,sc5sitwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spin It To Win It (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2205 SPINNING AROUND SPIN SOUNDS SPINNING AROUND
-GAME( 200?, sc5spnrn ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spinning Around (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5spnrna ,sc5spnrn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spinning Around (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5spnrn ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spinning Around (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5spnrna ,sc5spnrn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spinning Around (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR0003 RACE02
-GAME( 200?, sc5srace ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Streak Racer (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sracea ,sc5srace, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Streak Racer (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5srace ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Streak Racer (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sracea ,sc5srace, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Streak Racer (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2355 SUPER SLEUTH SSLEUTH SOUNDS SUPER SLEUTH
-GAME( 200?, sc5sleut ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Super Sleuth (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sleuta ,sc5sleut, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Super Sleuth (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sleut ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Super Sleuth (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sleuta ,sc5sleut, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Super Sleuth (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1630 TRICK SHOT MULTI PLAYER TRICK SHOT MULTI ARCADE PR1630 TRICKSHOTMULT SOUNDS11
-GAME( 200?, sc5tsmp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Trick Shot Multi Player (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tsmpa ,sc5tsmp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Trick Shot Multi Player (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tsmp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Trick Shot Multi Player (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tsmpa ,sc5tsmp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Trick Shot Multi Player (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1606 UP POMPAY PR1636 UP POMPAY SOUNDS11 UP POMPAY S.SITE
-GAME( 200?, sc5pompa ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Up Pompay (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pompaa ,sc5pompa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Up Pompay (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pompab ,sc5pompa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Up Pompay (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL ) // incomplete pairing
+GAME( 200?, sc5pompa ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Up Pompay (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pompaa ,sc5pompa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Up Pompay (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pompab ,sc5pompa, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Up Pompay (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) // incomplete pairing
// PR2402 VAMPIREPAYER VAMP SOUNDS VAMP
-GAME( 200?, sc5vamp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Vampire Payer (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5vampa ,sc5vamp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Vampire Payer (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5vamp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Vampire Payer (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5vampa ,sc5vamp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Vampire Payer (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2176 VIPER ACTIVE VIPA SOUNDS VIPER ACTIVE
-GAME( 200?, sc5viper ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Viper Active (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5vipera ,sc5viper, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Viper Active (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5viper ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Viper Active (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5vipera ,sc5viper, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Viper Active (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2358 VIZ VIZ SOUNDS VIZ
-GAME( 200?, sc5viz ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Viz (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5viza ,sc5viz, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Viz (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5vizb ,sc5viz, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Viz (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5vizc ,sc5viz, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Viz (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5viz ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Viz (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5viza ,sc5viz, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Viz (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5vizb ,sc5viz, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Viz (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5vizc ,sc5viz, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Viz (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3305 AWP WACKY RACES SCORP5 PR3330 WACKY RACES SOUNDS11 WACKY RACES S.SITE
-GAME( 200?, sc5wacky ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wacky Racers (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wackya ,sc5wacky, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wacky Racers (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wackyb ,sc5wacky, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wacky Racers (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wackyc ,sc5wacky, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wacky Racers (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wacky ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wacky Racers (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wackya ,sc5wacky, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wacky Racers (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wackyb ,sc5wacky, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wacky Racers (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wackyc ,sc5wacky, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wacky Racers (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2213 WAR OF THE WORLDS WADS SOUNDS
-GAME( 200?, sc5wotw ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","War Of The Wads (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wotwa ,sc5wotw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","War Of The Wads (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wotw ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","War Of The Wads (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wotwa ,sc5wotw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","War Of The Wads (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2196 WILD REELS WILD REELS MAZ WIDR SOUNDS WILD REELS
-GAME( 200?, sc5wild ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Wild Reels (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wilda ,sc5wild, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Wild Reels (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wild ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Wild Reels (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wilda ,sc5wild, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Wild Reels (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2552 WIN CAN ALLEY WINCANALLEYSND WIN CAN ALLEY
-GAME( 200?, sc5wca ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcaa ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcad ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcaf ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcah ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcai ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcal ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcan ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wca ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcaa ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcad ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcaf ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcah ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcai ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcal ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcan ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (Qps) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2552 WIN CAN ALLEY 5 pound 10p Version WINCANALLEYSND WIN CAN ALLEY
-GAME( 200?, sc5wcab ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcae ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcaj ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcam ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcab ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcae ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcaj ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcam ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2552 WIN CAN ALLEY 5 pound 10p Arcade Version WINCANALLEYSND
-GAME( 200?, sc5wcac ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcag ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcak ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wcao ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcac ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcag ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcak ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wcao ,sc5wca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3218 AWP WOK N ROLL S5 PR3218 WOK N ROLL SOUNDS11 WOK N ROLL S.SITE
-GAME( 200?, sc5wok ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wok n' Roll (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5woka ,sc5wok, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wok n' Roll (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wok ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wok n' Roll (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5woka ,sc5wok, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wok n' Roll (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2556 RED HOT REELS RHRL SOUNDS RED HOT REELS
-GAME( 200?, sc5rhr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhra ,sc5rhr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhrb ,sc5rhr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhrc ,sc5rhr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhrd ,sc5rhr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhre ,sc5rhr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhra ,sc5rhr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhrb ,sc5rhr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhrc ,sc5rhr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhrd ,sc5rhr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhre ,sc5rhr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Red Hot Reels (Qps) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2458 CLUB SNAKE RATTLE AND ROLL CLUB SRAR CLUB CLUB SRAR SND CLUB SNAKE RATTLE AND ROLL
-GAME( 200?, sc5srrcl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5srrcla ,sc5srrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5srrclb ,sc5srrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5srrclc ,sc5srrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5srrcl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5srrcla ,sc5srrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5srrclb ,sc5srrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5srrclc ,sc5srrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3422 CLUB THE PRIZE IS RIGHT S5 PR3422 PRIZE IS RIGHT SOUNDS11 THE PRIZE IS RIGHT S.SITE
-GAME( 200?, sc5pircl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pircla ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pirclb ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pirclc ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pircld ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pircle ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pirclf ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pirclg ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pircl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pircla ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pirclb ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pirclc ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pircld ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pircle ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pirclf ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pirclg ,sc5pircl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2457 ROADTORICHES CLUBROADTORICHES CLUB CRTR SOUNDS CLUB ROAD TO RICHES
-GAME( 200?, sc5mrrcl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mrrcla ,sc5mrrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mrrclb ,sc5mrrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mrrclc ,sc5mrrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mrrcl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mrrcla ,sc5mrrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mrrclb ,sc5mrrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mrrclc ,sc5mrrcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// BFGP1234..............G95427832.RAZY_.PR3436 CF COMMUNITY P SOUNDS11. (non-standard header, seems to indicate that these are actually Crazy Fruits Community Parts?)
-GAME( 200?, sc5crcpt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crcpta ,sc5crcpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crcptb ,sc5crcpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crcpt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crcpta ,sc5crcpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crcptb ,sc5crcpt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3009 AWP ANT N DECS JIGGY BANK S5 PR3009 JIGGY BANK SOUNDS11 JIGGY BANK S.SITE
-GAME( 200?, sc5adjb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjba ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbb ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbc ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbd ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbe ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbf ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbg ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbh ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbi ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbj ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbk ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbl ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbm ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbn ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbo ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbp ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbq ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbr ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbs ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adjbt ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 21)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjba ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbb ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbc ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbd ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbe ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbf ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbg ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbh ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbi ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbj ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbk ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbl ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbm ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbn ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbo ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbp ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbq ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbr ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbs ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adjbt ,sc5adjb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 21)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1920 AWP ANT N DECS WTAD S5 PR1940 ADSNT SHOWTIME SOUNDS11 ANTNDECSWTAD S.SITE
-GAME( 200?, sc5adwta ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adwtaa ,sc5adwta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adwta ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adwtaa ,sc5adwta, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2200 AROUND THE BOARD AROU SOUNDS AROUND THE BOARD
-GAME( 200?, sc5a40 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5a40a ,sc5a40, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5a40 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5a40a ,sc5a40, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Around The Board In 40 Days (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2301 BANTAM OF THE OPERA BANTAM SOUNDS BANTAMOFTHEOPERA
-GAME( 200?, sc5bantm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bantma ,sc5bantm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bantm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bantma ,sc5bantm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bantam Of The Opera (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1447 BAR7S PR1492 CAS BAR SEVENS SOUNDS11 BAR 7S M.SITE
-GAME( 200?, sc5bar7 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bar7a ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bar7 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bar7a ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3064 BINGO BAR7 S5 PR1433 BAR SEVENS SOUNDS11 BAR7 S.SITE
-GAME( 200?, sc5bar7b ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bar7c ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bar7d ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bar7e ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bar7f ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bar7g ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bar7b ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bar7c ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bar7d ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bar7e ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bar7f ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bar7g ,sc5bar7, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1704 AWP BATTLESHIPS AND CRUISERS PR1704 B AND C SOUNDS11 BATTLESHIPSCRUIS S.SITE
-GAME( 200?, sc5batl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5batla ,sc5batl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5batl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5batla ,sc5batl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Battleships & Cruisers (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2170 BOBBY DAZZLER BOBD SOUNDS BOBBY DAZZLER
-GAME( 200?, sc5bob ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5boba ,sc5bob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bobb ,sc5bob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bobc ,sc5bob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bob ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5boba ,sc5bob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bobb ,sc5bob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bobc ,sc5bob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Bobby Dazzler (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1702 AWP BULLSEYE SCORP5 PR1702 BULLSEYE SOUNDS11 BULLSEYE S.SITE
-GAME( 200?, sc5bull ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bulla ,sc5bull, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bullb ,sc5bull, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bullc ,sc5bull, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bull ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bulla ,sc5bull, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bullb ,sc5bull, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bullc ,sc5bull, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1719 AWP SUPER BULLSEYE SCORP5 PR1702 BULLSEYE SOUNDS11 SUPER BULLSEYE S.SITE
-GAME( 200?, sc5sbull ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Super Bullseye (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sbulla ,sc5sbull, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Super Bullseye (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sbull ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Super Bullseye (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sbulla ,sc5sbull, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Super Bullseye (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3318 AWP BULLSEYE 5 REELS S5 PR3318 BULLSEYE SOUNDS11 BULLSEYE S.SITE
-GAME( 200?, sc5bull5 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bull5a ,sc5bull5, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bull5b ,sc5bull5, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bull5c ,sc5bull5, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bull5 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bull5a ,sc5bull5, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bull5b ,sc5bull5, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bull5c ,sc5bull5, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1910 AWP BUTCH CASHIDY AND THE SUNDANCE QUID S5 PR1910 B C AND THE S Q SOUNDS11 BUTCH N SUNDANCE S.SITE
-GAME( 200?, sc5butch ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5butcha ,sc5butch, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5butchb ,sc5butch, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5butchc ,sc5butch, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5butchd ,sc5butch, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5butche ,sc5butch, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5butch ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5butcha ,sc5butch, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5butchb ,sc5butch, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5butchc ,sc5butch, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5butchd ,sc5butch, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5butche ,sc5butch, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2209 CABIN FEVER CABF SOUNDS CABIN FEVER
-GAME( 200?, sc5cabin ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cabina ,sc5cabin, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cabinb ,sc5cabin, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cabinc ,sc5cabin, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cabin ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cabina ,sc5cabin, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cabinb ,sc5cabin, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cabinc ,sc5cabin, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cabin Fever (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2326 CARIBBEAN CASH CABC SOUNDS CARIBBEAN CASH
-GAME( 200?, sc5cari ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5caria ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5carib ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5caric ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5carid ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5carie ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5carif ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5carig ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cari ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5caria ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5carib ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5caric ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5carid ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5carie ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5carif ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5carig ,sc5cari, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Caribbean Cash (Qps) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1683 BLAS14
-GAME( 200?, sc5cblas ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Blast (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cblasa ,sc5cblas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Blast (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cblas ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Blast (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cblasa ,sc5cblas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Blast (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2338 XTRAVAGANZA XTRV SOUNDS XTRAVAGANZA
-GAME( 200?, sc5casxt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5casxta ,sc5casxt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5casxt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5casxta ,sc5casxt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Casino Xtravaganza (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1711 AWP CHAV IT SCORP5 PR1711 CHAV IT SOUNDS11 CHAV IT S.SITE
-GAME( 200?, sc5chavi ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chavia ,sc5chavi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chavib ,sc5chavi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chavic ,sc5chavi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chavid ,sc5chavi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chavie ,sc5chavi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chavi ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chavia ,sc5chavi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chavib ,sc5chavi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chavic ,sc5chavi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chavid ,sc5chavi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chavie ,sc5chavi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chav It (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2305 CHAVVY CHASE CHVY SOUNDS
-GAME( 200?, sc5chavy ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chavya ,sc5chavy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chavyb ,sc5chavy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chavyc ,sc5chavy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chavy ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chavya ,sc5chavy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chavyb ,sc5chavy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chavyc ,sc5chavy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Chavy Chase (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2230 CLUEDO CLUE SOUNDS CLUEDO
-GAME( 200?, sc5clue ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cluea ,sc5clue, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clueb ,sc5clue, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cluec ,sc5clue, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clue ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cluea ,sc5clue, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clueb ,sc5clue, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cluec ,sc5clue, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Cluedo (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1308 COLOUR MANIA PR1308 COLOUR MAN SOUNDS11
-GAME( 200?, sc5cmani ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cmania ,sc5cmani, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cmanib ,sc5cmani, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cmanic ,sc5cmani, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cmani ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cmania ,sc5cmani, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cmanib ,sc5cmani, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cmanic ,sc5cmani, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Colour Mania (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1416 COOL JEWELS PR1416 COOL JEWELS SOUNDS11 COOL JEWELS S.SITE
-GAME( 200?, sc5cj ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cja ,sc5cj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cjb ,sc5cj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cjc ,sc5cj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cjd ,sc5cj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cje ,sc5cj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cj ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cja ,sc5cj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cjb ,sc5cj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cjc ,sc5cj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cjd ,sc5cj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cje ,sc5cj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cool Jewels (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1109 AWP COP THE LOT PR1109 CTLOT SOUNDS11
-GAME( 200?, sc5ctl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ctla ,sc5ctl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ctlb ,sc5ctl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ctlc ,sc5ctl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ctl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ctla ,sc5ctl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ctlb ,sc5ctl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ctlc ,sc5ctl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cop The Lot (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3005 AWP COPS AND ROBBERS SAFE CRACKER S5 PR3005 SAFE CRACKER SOUNDS11 SAFE CRACKER S.SITE
-GAME( 200?, sc5crsc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsca ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscb ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscc ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscd ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsce ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscf ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscg ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsch ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsci ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscj ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsck ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscl ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscm ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscn ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsco ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscp ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscq ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscr ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscs ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crsct ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 21)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5crscu ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 22)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsca ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscb ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscc ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscd ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsce ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscf ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscg ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsch ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsci ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscj ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsck ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscl ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscm ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscn ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsco ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscp ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscq ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscr ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscs ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crsct ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 21)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5crscu ,sc5crsc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 22)", MACHINE_IS_SKELETON_MECHANICAL )
// PROJECT NUMBER PR2252 CORONATION ST CORRY SOUNDS CORONATION ST
-GAME( 200?, sc5coro ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corom ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5coroy ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5coro0 ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coro ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corom ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coroy ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coro0 ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2552 CORONATION ST COROST_SINGLE CORONATION ST
-GAME( 200?, sc5coroe ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corof ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corog ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5coroh ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5coroq ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5coror ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5coros ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corot ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coroe ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corof ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corog ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coroh ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coroq ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coror ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coros ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corot ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2249 CORONATION ST TRIPLE COROST SOUNDS (top box maybe?)
-GAME( 200?, sc5coroa ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coroa ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2249 CORONATION STREET CORS MAZ COROST_TRIPLE SOUNDS
-GAME( 200?, sc5corok ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corol ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corow ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corox ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corok ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corol ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corow ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corox ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2249 CORONATION STREET Arcade Version 061 COROST_TRIPLE SOUNDS CORONATION ST
-GAME( 200?, sc5corob ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Arcade (V061) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5coron ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Arcade (V061) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corob ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Arcade (V061) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coron ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Arcade (V061) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2249 CORONATION STREET Arcade Version 063 COROST_TRIPLE SOUNDS CORONATION ST
-GAME( 200?, sc5coroj ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Arcade (V063) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corov ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Arcade (V063) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coroj ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Arcade (V063) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corov ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Arcade (V063) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2249 CORONATION STREET Bingo Version 012 COROST_TRIPLE SOUNDS CORONATION ST
-GAME( 200?, sc5coroc ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corod ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5coroi ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5coroo ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corop ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5corou ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coroc ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corod ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coroi ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coroo ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corop ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5corou ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2249 CORONATION STREET Bingo Version 013 COROST_TRIPLE SOUNDS CORONATION ST
-GAME( 200?, sc5coroz ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V013) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5coro1 ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V013) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coroz ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V013) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5coro1 ,sc5coro, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Coronation Street Triple Bingo (V013) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1909 AWP COUNTDOWN S5 PR1909 COUNTDOWN SOUNDS11 COUNTDOWN S.SITE
-GAME( 200?, sc5count ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5counta ,sc5count, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5count ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5counta ,sc5count, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Countdown (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2387. T FRUIT CRAZY T FRUIT CRAZY QPS GOLD X TRIPLE (but contains Crazy Keys strings as well?)
-GAME( 200?, sc5czfr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Fruit Crazy Triple / Crazy Keys (QPS) (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5czfr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Fruit Crazy Triple / Crazy Keys (QPS) (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2388 FRUIT CRAZY SINGLE FRUIT CRAZY CRZ SOUNDS PR2388 FRUIT CRAZY FRUIT CRAZY MAZ (not a standard header)
-GAME( 200?, sc5frcrz ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Fruit Crazy (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5frcrza ,sc5czfr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Fruit Crazy (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5frcrz ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Fruit Crazy (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5frcrza ,sc5czfr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Fruit Crazy (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1608 AWP CROWN JEWELS PR1608 CROWN JEWELS SOUNDS11 CROWN JEWELS S.SITE
-GAME( 2004, sc5crnjw ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2004, sc5crnjwa ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2004, sc5crnjwb ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 2004, sc5crnjw ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2004, sc5crnjwa ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2004, sc5crnjwb ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
// Z055 CJEWELS PR000055 CJEWELS 1 CJEWELS AWP
-GAME( 200?, sc5cjqps ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Crown Jewels (Z055) (QPS) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cjqpsa ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Crown Jewels (Z055) (QPS) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cjqpsb ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Crown Jewels (Z055) (QPS) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5cjqpsc ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Crown Jewels (Z055) (QPS) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cjqps ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Crown Jewels (Z055) (QPS) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cjqpsa ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Crown Jewels (Z055) (QPS) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cjqpsb ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Crown Jewels (Z055) (QPS) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5cjqpsc ,sc5crnjw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Crown Jewels (Z055) (QPS) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1907 AWP DEAL OR NO DEAL S5 PR1907 DEAL OR NO DEAL SOUNDS11 DEALORNODEAL S.SITE
-GAME( 200?, sc5dnd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnda ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndb ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndc ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndd ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnde ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndf ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndg ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndh ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndi ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndj ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndk ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndl ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndm ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndn ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndo ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndp ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndq ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndr ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnds ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndt ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 21)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnda ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndb ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndc ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndd ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnde ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndf ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndg ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndh ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndi ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndj ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndk ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndl ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndm ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndn ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndo ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndp ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndq ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndr ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnds ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndt ,sc5dnd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal (Bellfruit) (Scorpion 5) (set 21)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1954 CASINO DOND REELS CASINO DOND ARCADE PR1954 CASINO DOND R SOUNDS11
-GAME( 200?, sc5dndcs ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsa ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsb ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsc ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsd ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcse ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsf ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsg ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsh ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsi ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsj ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsk ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsl ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcsm ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-
-
-GAME( 200?, sc5dndc2 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL ) // PR1964 CASINO DOND MULTI DOND MULTIPLAYER ARCADE
-GAME( 200?, sc5dndc2a ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL ) // ^^
-GAME( 200?, sc5dndc2b ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL ) // ^^
-
-GAME( 200?, sc5dndc2c ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL ) // PR1964 CASINO DOND TOP DOND TOPBOX ARCADE PR1964 CASINO DOND R SOUNDS11
-GAME( 200?, sc5dndc2d ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL ) // ^^
-
-GAME( 200?, sc5dndc2e ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL ) // PR1964 CASINO DOND TOP S5 DOND TOPBOX ARCADE
-GAME( 200?, sc5dndc2f ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL ) // ^^
-GAME( 200?, sc5dndc2g ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL ) // ^^
-GAME( 200?, sc5dndc2h ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL ) // ^^
-GAME( 200?, sc5dndc2i ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )// ^^
-GAME( 200?, sc5dndc2j ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )// ^^
-GAME( 200?, sc5dndc2k ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )// ^^
-GAME( 200?, sc5dndc2l ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )// ^^
-GAME( 200?, sc5dndc2m ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )// PR1964 CASINO DOND TOP S5 DOND TOPBOX ARCADE PR1964 CASINO DOND R SOUNDS11
-GAME( 200?, sc5dndc2n ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )// ^^
-GAME( 200?, sc5dndc2o ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )// PR1964 CASINO DOND TOP S5 DOND TOPBOX ARCADE PR1964 CASINO DOND SOUNDS12
-GAME( 200?, sc5dndc2p ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )// ^^
-
-GAME( 200?, sc5dndc2q ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )// PR1964 CASINO DOND MULTI DOND MULTIPLAYER ARCADE PR1964 CASINO DOND R SOUNDS11
-GAME( 200?, sc5dndc2r ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )// ^^
-GAME( 200?, sc5dndc2s ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )// ^^
-GAME( 200?, sc5dndc2t ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 21)", GAME_IS_SKELETON_MECHANICAL )// ^^
-GAME( 200?, sc5dndc2u ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 22)", GAME_IS_SKELETON_MECHANICAL )// PR1964 CASINO DOND MULTI DOND MULTIPLAYER ARCADE PR1964 CASINO DOND SOUNDS12
-GAME( 200?, sc5dndc2v ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 23)", GAME_IS_SKELETON_MECHANICAL )// ^^
-GAME( 200?, sc5dndc2w ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 24)", GAME_IS_SKELETON_MECHANICAL )// PR1964 CASINO DOND MULTI DOND MULTIPLAYER ARCADE
-
-GAME( 200?, sc5dndc3 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL ) // PR1965 CASINO DOND TOPBOX CASINO DOND ARCADE PR1965 CASINO DOND R SOUNDS11
-GAME( 200?, sc5dndc3a ,sc5dndc3, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL ) // ^^
-GAME( 200?, sc5dndc3b ,sc5dndc3, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL ) // ^^
-GAME( 200?, sc5dndc3c ,sc5dndc3, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5dndcs ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsa ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsb ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsc ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsd ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcse ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsf ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsg ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsh ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsi ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsj ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsk ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsl ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcsm ,sc5dndcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+
+
+GAME( 200?, sc5dndc2 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) // PR1964 CASINO DOND MULTI DOND MULTIPLAYER ARCADE
+GAME( 200?, sc5dndc2a ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5dndc2b ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
+
+GAME( 200?, sc5dndc2c ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) // PR1964 CASINO DOND TOP DOND TOPBOX ARCADE PR1964 CASINO DOND R SOUNDS11
+GAME( 200?, sc5dndc2d ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
+
+GAME( 200?, sc5dndc2e ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL ) // PR1964 CASINO DOND TOP S5 DOND TOPBOX ARCADE
+GAME( 200?, sc5dndc2f ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5dndc2g ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5dndc2h ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5dndc2i ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )// ^^
+GAME( 200?, sc5dndc2j ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )// ^^
+GAME( 200?, sc5dndc2k ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )// ^^
+GAME( 200?, sc5dndc2l ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )// ^^
+GAME( 200?, sc5dndc2m ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )// PR1964 CASINO DOND TOP S5 DOND TOPBOX ARCADE PR1964 CASINO DOND R SOUNDS11
+GAME( 200?, sc5dndc2n ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )// ^^
+GAME( 200?, sc5dndc2o ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )// PR1964 CASINO DOND TOP S5 DOND TOPBOX ARCADE PR1964 CASINO DOND SOUNDS12
+GAME( 200?, sc5dndc2p ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )// ^^
+
+GAME( 200?, sc5dndc2q ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )// PR1964 CASINO DOND MULTI DOND MULTIPLAYER ARCADE PR1964 CASINO DOND R SOUNDS11
+GAME( 200?, sc5dndc2r ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )// ^^
+GAME( 200?, sc5dndc2s ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )// ^^
+GAME( 200?, sc5dndc2t ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 21)", MACHINE_IS_SKELETON_MECHANICAL )// ^^
+GAME( 200?, sc5dndc2u ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 22)", MACHINE_IS_SKELETON_MECHANICAL )// PR1964 CASINO DOND MULTI DOND MULTIPLAYER ARCADE PR1964 CASINO DOND SOUNDS12
+GAME( 200?, sc5dndc2v ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 23)", MACHINE_IS_SKELETON_MECHANICAL )// ^^
+GAME( 200?, sc5dndc2w ,sc5dndc2, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 24)", MACHINE_IS_SKELETON_MECHANICAL )// PR1964 CASINO DOND MULTI DOND MULTIPLAYER ARCADE
+
+GAME( 200?, sc5dndc3 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) // PR1965 CASINO DOND TOPBOX CASINO DOND ARCADE PR1965 CASINO DOND R SOUNDS11
+GAME( 200?, sc5dndc3a ,sc5dndc3, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5dndc3b ,sc5dndc3, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5dndc3c ,sc5dndc3, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
// PR3209 AWP DEAL OR NO DEAL BREAK THE BANK SCORP5 PR3209 BREAK THE BANK SOUNDS11 BREAK THE BANK S.SITE
-GAME( 200?, sc5dndbb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbba ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbbb ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbbc ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbbd ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbbe ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbbf ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbbg ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbba ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbbb ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbbc ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbbd ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbbe ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbbf ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbbg ,sc5dndbb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR???? CLUB DEAL OR NO DEAL DEAL OR NO DEAL CLUB PR3068 BEAT THE BANKER SOUNDS11 DEAL OR NO DEAL
-GAME( 200?, sc5dndcl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcla ,sc5dndcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcla ,sc5dndcl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Club (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR???? CLUB DEAL OR NO DEAL BEAT THE BANKER CLUB PR3068 BEAT THE BANKER SOUNDS11 (there were in the Walk of Wealth sets)
-GAME( 200?, sc5dndcb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Club Beat The Banker (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcba ,sc5dndcb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Club Beat The Banker (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Club Beat The Banker (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcba ,sc5dndcb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Club Beat The Banker (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3215 AWP DEAL OR NO DEAL DOUBLE S5 PR3215 DOND DOUBLE SOUNDS11 DOUBLE DOND S.SITE
-GAME( 200?, sc5dnddd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddda ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndddb ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndddc ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndddd ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddde ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndddf ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndddg ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndddh ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndddi ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddda ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndddb ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndddc ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndddd ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddde ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndddf ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndddg ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndddh ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndddi ,sc5dnddd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3008 DEAL OR NO DEAL HALL OF FAME SCORP5 PR3008 HALL OF FAME SOUNDS11 HALL OF FAME S.SITE
-GAME( 200?, sc5dndhf ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfa ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfb ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfc ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfd ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfe ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhff ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfg ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfh ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfi ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfj ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfk ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfl ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfm ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfn ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfo ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfp ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfq ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfr ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfs ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhft ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 21)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndhfu ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 22)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhf ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfa ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfb ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfc ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfd ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfe ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhff ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfg ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfh ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfi ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfj ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfk ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfl ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfm ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfn ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfo ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfp ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfq ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfr ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfs ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhft ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 21)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndhfu ,sc5dndhf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 22)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3207 AWP DEAL OR NO DEAL ITS YOUR SHOW SCORP5 PR3207 ITS YOUR SHOW SOUNDS11 ITS YOUR SHOW S.SITE
-GAME( 200?, sc5dndys ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndysa ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndysb ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndysc ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndysd ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndyse ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndysf ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndysg ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndysh ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndys ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndysa ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndysb ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndysc ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndysd ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndyse ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndysf ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndysg ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndysh ,sc5dndys, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3232 AWP DEAL OR NO DEAL LETS PLAY DEAL OR NO DEAL SCORP5 PR3212 LETS PLAY DOND SOUNDS11 LETS PLAY DOND S.SITE
-GAME( 200?, sc5dndlp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpa ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpb ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpc ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpd ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpe ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpf ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpg ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlph ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpi ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpj ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpk ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpl ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpm ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpn ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpo ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpp ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpq ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpr ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlps ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpt ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 21)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndlpu ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 22)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpa ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpb ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpc ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpd ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpe ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpf ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpg ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlph ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpi ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpj ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpk ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpl ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpm ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpn ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpo ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpp ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpq ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpr ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlps ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpt ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 21)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndlpu ,sc5dndlp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 22)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3201 AWP DEAL OR NO DEAL RED ALERT SCORP5 PR3201 DOND RED ALERT SOUNDS11 RED ALERT S.SITE
-GAME( 200?, sc5dndra ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndraa ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrab ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrac ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrad ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrae ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndraf ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrag ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrah ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrai ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndraj ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndrak ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndra ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndraa ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrab ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrac ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrad ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrae ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndraf ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrag ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrah ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrai ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndraj ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndrak ,sc5dndra, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3210 AWP DEAL OR NO DEAL THE BIG DEAL SCORP5 PR3210 THE BIG DEAL SOUNDS11 THE BIG DEAL S.SITE
-GAME( 200?, sc5dndbd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbda ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbdb ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbdc ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbdd ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbde ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbdf ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbdg ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbdh ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbdi ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbda ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbdb ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbdc ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbdd ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbde ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbdf ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbdg ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbdh ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbdi ,sc5dndbd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3011 AWP DEAL OR NO DEAL THE BIG REDS S5 PR3011 THE BIG REDS SOUNDS11 THE BIG REDS S.SITE
-GAME( 200?, sc5dndbr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbra ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrd ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrf ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrg ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrj ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrl ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrm ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrn ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbro ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrp ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrq ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrr ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrs ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrt ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbru ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrv ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrw ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbra ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrd ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrf ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrg ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrj ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrl ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrm ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrn ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbro ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrp ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrq ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrr ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrs ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrt ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbru ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrv ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrw ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3018 AWP DEAL OR NO DEAL THE BIG REDS S5 PR3011 THE BIG REDS SOUNDS11 THE BIG REDS S.SITE
-GAME( 200?, sc5dndbrb ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrc ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbre ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrh ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbri ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbrk ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrb ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrc ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbre ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrh ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbri ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbrk ,sc5dndbr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3017 AWP DEAL OR NO DEAL THE CRAZY CHAIR SCORP5 PR3017 CRAZY CHAIR SOUNDS11 CRAZY CHAIR S.SITE
-GAME( 200?, sc5dndcc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcca ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccb ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccc ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccd ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcce ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccf ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccg ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcch ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcci ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccj ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcck ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccl ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccm ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccn ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcco ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccp ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccq ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndccr ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcca ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccb ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccc ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccd ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcce ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccf ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccg ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcch ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcci ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccj ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcck ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccl ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccm ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccn ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcco ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccp ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccq ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndccr ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3250 DOND THE CRAZY CHAIR CRAZY CHAIR ARCADE PR3250 THE CRAZY CHAIR SOUNDS11
-GAME( 200?, sc5dndca ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcaa ,sc5dndca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcab ,sc5dndca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcac ,sc5dndca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndca ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcaa ,sc5dndca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcab ,sc5dndca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcac ,sc5dndca, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3362 DOND THE CRAZY CHAIR CRAZY CHAIR ARCADE PR3362 THE CRAZY CHAIR SOUNDS11
-GAME( 200?, sc5dndcad ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3362) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndcae ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3362) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcad ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3362) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndcae ,sc5dndcc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Crazy Chair Arcade (PR3362) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3013 AWP THE DEAL WHEEL S5 PR3202 THE DEAL WHEEL SOUNDS11 THE DEAL WHEEL S.SITE
-GAME( 200?, sc5dnddw ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddwa ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddwb ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddwc ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddwd ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddwe ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddwf ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddwg ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddwh ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddwi ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddwj ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddw ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddwa ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddwb ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddwc ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddwd ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddwe ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddwf ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddwg ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddwh ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddwi ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddwj ,sc5dnddw, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3014 AWP DEAL OR NO DEAL THE DREAM FACTORY SCORP5 PR3014 DREAM FACTORY SOUNDS11 DREAM FACTORY S.SITE
-GAME( 200?, sc5dnddf ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfa ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfb ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfc ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfd ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfe ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddff ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfg ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfh ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfi ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfj ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfk ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfl ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfm ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dnddfn ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddf ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfa ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfb ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfc ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfd ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfe ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddff ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfg ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfh ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfi ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfj ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfk ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfl ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfm ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dnddfn ,sc5dnddf, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3220 AWP DEAL OR NO DEAL THE PERFECT GAME SCORP5 PR3220 DOND PERFECT SOUNDS11 THE PERFECT GAME S.SITE
-GAME( 200?, sc5dndpg ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpga ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgb ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgc ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgd ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpge ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgf ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgg ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgh ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgi ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgj ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgk ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgl ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgm ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgn ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgo ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgp ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgq ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgr ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgs ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgt ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 21)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgu ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 22)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgv ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 23)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpgw ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 24)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpg ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpga ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgb ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgc ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgd ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpge ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgf ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgg ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgh ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgi ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgj ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgk ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgl ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgm ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgn ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgo ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgp ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgq ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgr ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgs ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgt ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 21)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgu ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 22)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgv ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 23)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpgw ,sc5dndpg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 24)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3403 AWP CLASSIC DEAL OR NO DEAL THE PERFECT GAME SCORP5 PR3220 DOND PERFECT SOUNDS11 THE PERFECT GAME S.SITE
-GAME( 200?, sc5dndpl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndpla ,sc5dndpl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndplb ,sc5dndpl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndplc ,sc5dndpl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndpla ,sc5dndpl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndplb ,sc5dndpl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndplc ,sc5dndpl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3003 AWP DOND THE POWER 5 SCORP5 PR3033 POWER FIVE SOUNDS11 DOND THE POWER 5 S.SITE
-GAME( 200?, sc5dndtp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpa ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpb ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpc ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpd ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpe ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpf ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpg ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtph ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpi ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpj ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpk ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpl ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpm ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpn ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpo ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpp ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpq ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpr ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtps ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpt ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 21)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpu ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 22)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtpv ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 23)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpa ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpb ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpc ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpd ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpe ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpf ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpg ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtph ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpi ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpj ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpk ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpl ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpm ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpn ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpo ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpp ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpq ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpr ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtps ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpt ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 21)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpu ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 22)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtpv ,sc5dndtp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 23)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3036 AWP DEAL OR NO DEAL THE WALK OF WEALTH SCORP5 PR3006 WALK OF WEALTH SOUNDS11 WALK OF WEALTH S.SITE
-GAME( 200?, sc5dndww ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwa ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwb ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwc ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwd ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwe ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwf ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwg ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwh ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwi ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwj ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwk ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwl ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwm ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwn ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwo ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwp ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwq ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwwr ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwws ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndww ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwa ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwb ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwc ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwd ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwe ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwf ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwg ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwh ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwi ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwj ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwk ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwl ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwm ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwn ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwo ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwp ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwq ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwwr ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwws ,sc5dndww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3026 AWP CLASSIC DEAL OR NO DEAL THE WALK OF WEALTH SCORP5 PR3006 WALK OF WEALTH SOUNDS11 WALK OF WEALTH S.SITE
-GAME( 200?, sc5dndwc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwca ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwcb ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwcc ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwcd ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwce ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwcf ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwcg ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwca ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwcb ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwcc ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwcd ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwce ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwcf ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwcg ,sc5dndwc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3304 DOND THINK RED S5 PR3304 THINK RED SOUNDS11 THINK RED S.SITE
-GAME( 200?, sc5dndtr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtra ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtrb ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtrc ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtrd ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtre ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtrf ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtrg ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtrh ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtri ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtrj ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndtrk ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtra ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtrb ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtrc ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtrd ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtre ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtrf ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtrg ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtrh ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtri ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtrj ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndtrk ,sc5dndtr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1962 AWP DEAL OR NO DEAL WHATS IN YOUR BOX SCORP5 PR1962 WHATS IN Y BOX SOUNDS11 WHATS IN YOUR BX S.SITE
-GAME( 200?, sc5dndwb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwba ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbb ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbc ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbd ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbe ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbf ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbg ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbh ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbi ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbj ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbk ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbl ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbm ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbn ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbo ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbp ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbq ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbr ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwbs ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwba ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbb ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbc ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbd ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbe ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbf ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbg ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbh ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbi ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbj ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbk ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbl ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbm ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbn ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbo ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbp ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbq ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbr ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwbs ,sc5dndwb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3071 CASINO DOND WIYB REELS CASINO DOND ARCADE PR3071 W IN YOUR BOX SOUNDS11
-GAME( 200?, sc5dndwi ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwia ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwib ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwic ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwid ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwie ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwif ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndwig ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwi ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwia ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwib ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwic ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwid ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwie ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwif ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndwig ,sc5dndwi, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1307 AWP DIAMOND MINE PR1307 DIAM MINE SOUNDS11
-GAME( 2002, sc5dmine ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dminea ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dmineb ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dminec ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dmined ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dminee ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dminef ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dmineg ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dmineh ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dminei ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dmine ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dminea ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dmineb ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dminec ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dmined ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dminee ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dminef ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dmineg ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dmineh ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dminei ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1307 AWP DIAMOND MINE PR1307 DIAM MINE SOUNDS11 DIAMOND MINE S.SITE
-GAME( 2002, sc5dminej ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dminek ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2002, sc5dminel ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dminej ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dminek ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2002, sc5dminel ,sc5dmine, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Diamond Mine (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1394 AWP DOCTOR DOSH SCORP5 PR1309 DOCTOR DOSH SOUNDS11
-GAME( 200?, sc5ddosh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddosha ,sc5ddosh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddosh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddosha ,sc5ddosh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Doctor Dosh (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1716 AWP DOUGH HO HO S5 PR1716 DOUGH HO HO SOUNDS11 DOUGH HO HO S.SITE
-GAME( 200?, sc5dhh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dhha ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dhhb ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dhhc ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dhhd ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dhhe ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dhhf ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dhhg ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL ) // incomplete pairing
+GAME( 200?, sc5dhh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dhha ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dhhb ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dhhc ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dhhd ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dhhe ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dhhf ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dhhg ,sc5dhh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Ho Ho (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL ) // incomplete pairing
// PR1615 AWP DOUGH SELECTA SCORP5 PR1615 DOUGH SELECTA SOUNDS11 DOUGH SELECTA S.SITE
-GAME( 200?, sc5dough ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dougha ,sc5dough, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dough ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dougha ,sc5dough, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Dough Selecta (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2118 DUCKS OF HAZZARD DUCKSOFHAZZARDSND DUCKS OF HAZZARD
-GAME( 200?, sc5ducks ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ducks ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Ducks Of Hazzard (Mazooma) (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2313 EMMERDALE EMMR SOUNDS EMMERDALE
-GAME( 200?, sc5emmer ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5emmera ,sc5emmer, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5emmer ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5emmera ,sc5emmer, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Emmerdale (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3213 AWP FAMILY GUY S5 PR3213 FAMILY GUY SOUNDS11 FAMILY GUY S.SITE
-GAME( 200?, sc5fguy ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fguya ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fguyb ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fguyc ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fguyd ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fguye ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fguyf ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fguyg ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fguy ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fguya ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fguyb ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fguyc ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fguyd ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fguye ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fguyf ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fguyg ,sc5fguy, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1701 AWP FAT BOY SPIN SCORP5 PR1701 FAT BOY SPIN SOUNDS11 FAT BOY SPIN S.SITE
-GAME( 200?, sc5fbspn ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fbspna ,sc5fbspn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fbspn ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fbspna ,sc5fbspn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Fat Boy Spin (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2328 FULL METAL JACKPOT FULLM SOUNDS F METAL JACKPOT
-GAME( 200?, sc5fmj ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5fmja ,sc5fmj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fmj ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5fmja ,sc5fmj, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Full Metal Jackpot (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2255 GLADIATOR GLAD SOUNDS GLADIATOR
-GAME( 200?, sc5glad ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gladiator (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5glada ,sc5glad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gladiator (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gladb ,sc5glad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gladiator (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gladc ,sc5glad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gladiator (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5glad ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gladiator (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5glada ,sc5glad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gladiator (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gladb ,sc5glad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gladiator (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gladc ,sc5glad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gladiator (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3509 AWP GOLD DIGGER SCORP5 PR3509 GOLD DIGGER SOUNDS11 GOLD DIGGER S.SITE
-GAME( 200?, sc5gd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gda ,sc5gd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gda ,sc5gd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2325 GOLD DIGGERS GOLD SOUNDS GOLD DIGGERS
-GAME( 200?, sc5gdmz ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gold Diggers (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gdmza ,sc5gdmz, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gold Diggers (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdmz ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gold Diggers (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdmza ,sc5gdmz, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Gold Diggers (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1137 CLUB GOLD DIGGER CLUB GOLD DIGGER CLUB PR1137 GOLDD CL SOUNDS11
-GAME( 200?, sc5gdclb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gdclba ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gdclbb ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gdclbc ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gdclbd ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gdclbe ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gdclbf ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gdclbg ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclba ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclbb ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclbc ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclbd ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclbe ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclbf ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclbg ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3429 CLUB GOLD DIGGER CLUB GOLD DIGGER CLUB PR1137 GOLDD CL SOUNDS11
-GAME( 200?, sc5gdclbj ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (PR3429) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gdclbk ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (PR3429) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclbj ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (PR3429) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclbk ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger Club (PR3429) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3509 AWP GOLD DIGGER SCORP5 PR3509 GOLD DIGGER SOUNDS11 GOLD DIGGER S.SITE
-GAME( 200?, sc5gdclbh ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger (PR3509) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gdclbi ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger (PR3509) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclbh ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger (PR3509) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gdclbi ,sc5gdclb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gold Digger (PR3509) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1604 AWP GOLDEN BALLS PR1604 GOLDEN BALLS SOUNDS12 GOLDEN BALLS S.SITE (same as the sc5 version)
-GAME( 200?, sc5gball ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gballa ,sc5gball, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gballb ,sc5gball, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gballc ,sc5gball, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gball ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gballa ,sc5gball, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gballb ,sc5gball, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gballc ,sc5gball, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Golden Balls (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2208 GOLDEN GAME PLASMA GOLDEN GAME MAZ BARX SOUNDS
-GAME( 200?, sc5ggame ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Game (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ggamea ,sc5ggame, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Game (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ggameb ,sc5ggame, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Game (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ggamec ,sc5ggame, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Game (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ggamed ,sc5ggame, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Game (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ggame ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Game (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ggamea ,sc5ggame, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Game (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ggameb ,sc5ggame, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Game (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ggamec ,sc5ggame, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Game (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ggamed ,sc5ggame, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Golden Game (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ggg ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Grand Golden Game (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL ) // PR2371 GRAND GOLDEN GAME GRAND GOLDEN GAM MAZ ( GOLD X TRIPLE
-GAME( 200?, sc5ggga ,sc5ggg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Grand Golden Game (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL ) // ^^
-GAME( 200?, sc5gggb ,sc5ggg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Grand Golden Game (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL ) // PR2353 GRAND GOLDEN GAME GRAND GOLDEN GAM MAZ BARX SOUNDS GOLDEN GAME
-GAME( 200?, sc5gggc ,sc5ggg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Grand Golden Game (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5ggg ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Grand Golden Game (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) // PR2371 GRAND GOLDEN GAME GRAND GOLDEN GAM MAZ ( GOLD X TRIPLE
+GAME( 200?, sc5ggga ,sc5ggg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Grand Golden Game (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5gggb ,sc5ggg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Grand Golden Game (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) // PR2353 GRAND GOLDEN GAME GRAND GOLDEN GAM MAZ BARX SOUNDS GOLDEN GAME
+GAME( 200?, sc5gggc ,sc5ggg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Grand Golden Game (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
// PR3016 AWP THE GUNPOWDER SLOT S5 PR3016 GUNPOWDER SLOT SOUNDS11 GUNPOWDER SLOT S.SITE
-GAME( 200?, sc5gunp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpa ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpb ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpc ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpd ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpe ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpf ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpg ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunph ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpi ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpj ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpk ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5gunpl ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpa ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpb ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpc ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpd ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpe ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpf ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpg ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunph ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpi ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpj ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpk ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5gunpl ,sc5gunp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Gunpowder Slot (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1388 AWP HAPPY NOTES SCORP5 PR1306 HAPPY NOTES SOUNDS11
-GAME( 200?, sc5hapnt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hapnta ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hapntb ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hapntc ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hapntd ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hapnte ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hapntf ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hapntg ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hapnt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hapnta ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hapntb ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hapntc ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hapntd ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hapnte ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hapntf ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hapntg ,sc5hapnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Notes (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1402 AWP HELLS BELLS PR1402 HELLS BELLS SOUNDS11
-GAME( 200?, sc5hellb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hells Bells (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hellba ,sc5hellb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hells Bells (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hellb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hells Bells (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hellba ,sc5hellb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hells Bells (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1613 AWP HILLBILLIONAIRE SCORP5 PR1613 HILLBILLIONAIRE SOUNDS11 HILLBILLIONAIRE S.SITE
-GAME( 200?, sc5hill ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hilla ,sc5hill, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hillb ,sc5hill, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hill ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hilla ,sc5hill, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hillb ,sc5hill, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hill Billionaire (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2176 HISSING QUID VIPA SOUNDS HISSING QUID
-GAME( 200?, sc5hiss ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hissa ,sc5hiss, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hissb ,sc5hiss, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hissc ,sc5hiss, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hiss ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hissa ,sc5hiss, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hissb ,sc5hiss, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hissc ,sc5hiss, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Hissing Quid (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1936 AWP HOT DOG SCORP5 PR1916 HOT DOG SOUNDS11 HOT DOG S.SITE
-GAME( 200?, sc5hotdg ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotdga ,sc5hotdg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotdgb ,sc5hotdg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotdgc ,sc5hotdg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotdgd ,sc5hotdg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotdge ,sc5hotdg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotdg ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotdga ,sc5hotdg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotdgb ,sc5hotdg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotdgc ,sc5hotdg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotdgd ,sc5hotdg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotdge ,sc5hotdg, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Dog (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1733 AWP HOT ROD SCORP5 PR1713 HOT ROD SOUNDS11 HOT ROD S.SITE
-GAME( 200?, sc5hotrd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotrda ,sc5hotrd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotrd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotrda ,sc5hotrd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Rod (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3211 AWP HOT SHOT SCORP5 PR3211 HOT SHOT SOUNDS11 HOT SHOT S.SITE
-GAME( 200?, sc5hotsh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotsha ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshb ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshc ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshd ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshe ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshf ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshg ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshh ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshi ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshj ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshk ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshl ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshm ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshn ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotsho ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshp ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotshq ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotsh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotsha ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshb ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshc ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshd ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshe ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshf ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshg ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshh ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshi ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshj ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshk ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshl ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshm ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshn ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotsho ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshp ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotshq ,sc5hotsh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Shot (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1311 HOT WAD PR1311 HOT WAD SOUNDS11
-GAME( 200?, sc5hotwd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotwda ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotwdb ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotwdc ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotwdd ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotwde ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotwdf ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5hotwdg ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotwd ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotwda ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotwdb ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotwdc ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotwdd ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotwde ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotwdf ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5hotwdg ,sc5hotwd, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hot Wad (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1603 AWP IM A CELEBRITY PR1603 IM A CELEB SOUNDS11 IM A CELEBRITY S.SITE
-GAME( 200?, sc5celeb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5celeba ,sc5celeb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5celebb ,sc5celeb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5celebc ,sc5celeb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5celebd ,sc5celeb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5celeb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5celeba ,sc5celeb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5celebb ,sc5celeb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5celebc ,sc5celeb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5celebd ,sc5celeb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","I'm A Celebrity (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2555 INNER SPIN V013 INNERSPINSND INNER SPIN
-GAME( 200?, sc5inspn ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5inspna ,sc5inspn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5inspn ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5inspna ,sc5inspn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Inner Spin (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2366 AWP THE ITALIAN JOB S5 PR2366 THE ITALIAN JOB SOUNDS11 ITALIAN JOB S.SITE
-GAME( 200?, sc5ijob ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijoba ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijobb ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijobc ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijobd ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijobe ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijobf ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijobg ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijobh ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ijobi ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijob ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijoba ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijobb ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijobc ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijobd ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijobe ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijobf ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijobg ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijobh ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ijobi ,sc5ijob, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Italian Job (Mazooma) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1609 JACKPOT JOKERS PR1609 JACKPOT JOKERS SOUNDS11 JACKPOT JOKERS S.SITE
-GAME( 200?, sc5jjok ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5jjoka ,sc5jjok, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5jjok ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5jjoka ,sc5jjok, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Jackpot Jokers (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2376 LITTLE DEVIL LDEVIL SOUNDS LITTLE DEVIL
-GAME( 200?, sc5ldvl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ldvla ,sc5ldvl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ldvlb ,sc5ldvl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ldvlc ,sc5ldvl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ldvld ,sc5ldvl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ldvle ,sc5ldvl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ldvl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ldvla ,sc5ldvl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ldvlb ,sc5ldvl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ldvlc ,sc5ldvl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ldvld ,sc5ldvl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ldvle ,sc5ldvl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Little Devil (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1413 AWP RETURN OF THE KING PR1413 RETURN OF THE SOUNDS11 RETURN OF KING S.SITE
-GAME( 200?, sc5lotrr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5lotrra ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5lotrrb ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5lotrrc ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5lotrrd ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5lotrre ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5lotrrf ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5lotrrg ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5lotrrh ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5lotrri ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5lotrr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5lotrra ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5lotrrb ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5lotrrc ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5lotrrd ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5lotrre ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5lotrrf ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5lotrrg ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5lotrrh ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5lotrri ,sc5lotrr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3004 AWP MANIC MINER SCORP5 PR3004 MANIC MINER SOUNDS11 MANIC MINER S.SITE
-GAME( 200?, sc5manic ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manica ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicb ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicc ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicd ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manice ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicf ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicg ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manich ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manici ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicj ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manick ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicl ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicm ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicn ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manico ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicp ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicq ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicr ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manics ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manict ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 21)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicu ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 22)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicv ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 23)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicw ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 24)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicx ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 25)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5manicy ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 26)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manic ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manica ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicb ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicc ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicd ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manice ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicf ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicg ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manich ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manici ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicj ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manick ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicl ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicm ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicn ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manico ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicp ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicq ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicr ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manics ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manict ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 21)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicu ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 22)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicv ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 23)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicw ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 24)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicx ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 25)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5manicy ,sc5manic, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Manic Miner (Bellfruit) (Scorpion 5) (set 26)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2282 MENTALMONEYMONSTERS MMMO SOUNDS MONEY MONSTERS
-GAME( 200?, sc5mmm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mmma ,sc5mmm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mmmb ,sc5mmm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mmmc ,sc5mmm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmma ,sc5mmm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmmb ,sc5mmm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmmc ,sc5mmm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Mental Money Monsters (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR0000 MONEY MADNESS MONM SOUNDS MONEY MADNESS
-GAME( 200?, sc5mmad ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Money Madness (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mmada ,sc5mmad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Money Madness (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mmadb ,sc5mmad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Money Madness (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mmadc ,sc5mmad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Money Madness (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmad ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Money Madness (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmada ,sc5mmad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Money Madness (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmadb ,sc5mmad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Money Madness (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmadc ,sc5mmad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Money Madness (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2395 MONEY SPINNER MONY SOUNDS NITH
-GAME( 200?, sc5monsp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Money Spinner (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5monspa ,sc5monsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Money Spinner (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5monsp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Money Spinner (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5monspa ,sc5monsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Money Spinner (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PROJECT NUMBER PR0_0_ MONOPOLY P_S_E_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _U_A_S_U_D_ _ _ _ _ _ _ _ _ _ _ _ _ _T_I_K_P_N_ _ _ _
-GAME( 200?, sc5monop ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly (Mazooma) (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL ) // incomplete pairing
+GAME( 200?, sc5monop ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly (Mazooma) (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL ) // incomplete pairing
-GAME( 200?, sc5mcas ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Casino (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL ) // PR2372 CASINO MONOPOLY MONO SOUNDS CASINO MONOPOLY
-GAME( 200?, sc5mcasa ,sc5mcas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Casino (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL ) // ^^
-GAME( 200?, sc5mcasb ,sc5mcas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Casino (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL ) // PR2372 CASINO MONOPOLY CASINO MONOPOLY MAZ MONO SOUNDS CASINO MONOPOLY
-GAME( 200?, sc5mcasc ,sc5mcas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Casino (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5mcas ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Casino (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL ) // PR2372 CASINO MONOPOLY MONO SOUNDS CASINO MONOPOLY
+GAME( 200?, sc5mcasa ,sc5mcas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Casino (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
+GAME( 200?, sc5mcasb ,sc5mcas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Casino (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL ) // PR2372 CASINO MONOPOLY CASINO MONOPOLY MAZ MONO SOUNDS CASINO MONOPOLY
+GAME( 200?, sc5mcasc ,sc5mcas, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Casino (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL ) // ^^
// PR3308 AWP MONOPOLY DOUBLE MONEY S5 PR3308 MPOLY D MONEY SOUNDS11 DOUBLE MONEY S.SITE
-GAME( 200?, sc5mdm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mdma ,sc5mdm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mdmb ,sc5mdm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mdmc ,sc5mdm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mdm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mdma ,sc5mdm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mdmb ,sc5mdm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mdmc ,sc5mdm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Double Money (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2380 MONOPOLY HERE AND NOW MR2R SOUNDS NITH
-GAME( 200?, sc5mhn ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhna ,sc5mhn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhnb ,sc5mhn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhnc ,sc5mhn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhnd ,sc5mhn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhne ,sc5mhn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhn ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhna ,sc5mhn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhnb ,sc5mhn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhnc ,sc5mhn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhnd ,sc5mhn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhne ,sc5mhn, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Here & Now (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2345 AWP MONOPOLY HOT PROPERTY S5 PR2345 HOT PROPERTY SOUNDS11 HOT PROPERTY S.SITE
-GAME( 200?, sc5mhp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpa ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpb ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpc ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpd ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpe ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpf ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpg ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhph ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpi ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpj ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpk ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mhpl ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpa ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpb ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpc ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpd ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpe ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpf ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpg ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhph ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpi ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpj ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpk ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mhpl ,sc5mhp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3413 AWP MONOPOLY MONEYBAGS S5 PR3413 MONEYBAGS SOUNDS11 MONEYBAGS S.SITE
-GAME( 200?, sc5mmb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mmba ,sc5mmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mmbb ,sc5mmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mmbc ,sc5mmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmba ,sc5mmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmbb ,sc5mmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmbc ,sc5mmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1911 AWP MONOLOLY MONEY BAGS SCORP5 PR1911 MPOLY MONEYBAGS SOUNDS11 MONEYBAGS S.SITE
-GAME( 200?, sc5mmbd ,sc5mmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR1911) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mmbe ,sc5mmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR1911) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmbd ,sc5mmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR1911) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mmbe ,sc5mmb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Money Bags (PR1911) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2363 RED HOT MONOP RED HOT MONOPOLY MAZ MONO SOUNDS MONOPOLY
-GAME( 200?, sc5mrh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mrha ,sc5mrh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mrh ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mrha ,sc5mrh, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Red Hot (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2329 MONOPOLY ROAD TO RICHES MR2R SOUNDS ROAD TO RICHES
-GAME( 200?, sc5mr2r ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches (PR2329) (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mr2ra ,sc5mr2r, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches (PR2329) (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mr2r ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches (PR2329) (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mr2ra ,sc5mr2r, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches (PR2329) (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2457 ROADTORICHES CLUBROADTORICHES CLUB CRTR SOUNDS CLUB ROAD TO RICHES
-GAME( 200?, sc5mr2rb ,sc5mr2r, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches Club (PR2457) (Mazooma) (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mr2rb ,sc5mr2r, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Road To Riches Club (PR2457) (Mazooma) (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2190 MONOPOLY WOW MONOPOLY WOW MAZ TWOW SOUNDS
-GAME( 200?, sc5mww ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mwwa ,sc5mww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mwwb ,sc5mww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mwwc ,sc5mww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mww ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mwwa ,sc5mww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mwwb ,sc5mww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mwwc ,sc5mww, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3002 AWP NIGHTMARE ON ELM STREET S5 PR3002 ELM STREET SOUNDS11 NIGHTMARE ELM ST S.SITE
-GAME( 200?, sc5nmare ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5nmarea ,sc5nmare, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5nmareb ,sc5nmare, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5nmarec ,sc5nmare, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nmare ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nmarea ,sc5nmare, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nmareb ,sc5nmare, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nmarec ,sc5nmare, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1612 PICK OF THE PACK PR1612 PICK OF THE PACK SOUNDS11 PICK OF THE PACK S.SITE
-GAME( 2005, sc5potp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 2005, sc5potpa ,sc5potp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 2005, sc5potp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 2005, sc5potpa ,sc5potp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pick Of The Pack (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2562 PINK PANTHER PINK SOUNDS PINK PANTHER
-GAME( 200?, sc5pp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppa ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppb ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppc ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppd ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppe ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppf ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppg ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppa ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppb ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppc ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppd ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppe ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppf ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppg ,sc5pp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther (Mazooma) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2279 PINK PANTHER CLOUSEAUS REVENGE REVENGE QPS REVENGE SOUNDS
-GAME( 200?, sc5ppcr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppcrb ,sc5ppcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppcrc ,sc5ppcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppcrd ,sc5ppcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppcr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppcrb ,sc5ppcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppcrc ,sc5ppcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppcrd ,sc5ppcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2279 CLOUSEAUS REVENGE REVENGE SOUNDS
-GAME( 200?, sc5ppcra ,sc5ppcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppcra ,sc5ppcr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2407 AWP PINK PANTHER CRACK THE CODE SCORP5 PR2407 CRACK THE CODE SOUNDS11 CRACK THE CODE S.SITE
-GAME( 200?, sc5ppctc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppctca ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppctcb ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppctcc ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppctcd ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppctce ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppctcf ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppctcg ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppctch ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppctci ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppctc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppctca ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppctcb ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppctcc ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppctcd ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppctce ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppctcf ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppctcg ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppctch ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppctci ,sc5ppctc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2330 PINK PANTHER DYM PINK PANTHER DYM QPS DYMN SOUNDS PINK PANTHER DYM
-GAME( 200?, sc5ppdym ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Double Your Money (Mazooma / QPS) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppdyma ,sc5ppdym, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Double Your Money (Mazooma / QPS) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppdym ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Double Your Money (Mazooma / QPS) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppdyma ,sc5ppdym, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma / QPS","Pink Panther Double Your Money (Mazooma / QPS) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2303 STRIKES AGAIN PPSA SOUNDS STRIKES AGAIN
-GAME( 200?, sc5ppsag ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppsaga ,sc5ppsag, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppsagb ,sc5ppsag, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppsagc ,sc5ppsag, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppsagd ,sc5ppsag, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ppsage ,sc5ppsag, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppsag ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppsaga ,sc5ppsag, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppsagb ,sc5ppsag, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppsagc ,sc5ppsag, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppsagd ,sc5ppsag, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ppsage ,sc5ppsag, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1408 PONY EXPRESS PR1408 PONY EXPRESS SOUNDS11 PONY EXPRESS S.SITE
-GAME( 200?, sc5pony ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ponya ,sc5pony, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ponyb ,sc5pony, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ponyc ,sc5pony, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ponyd ,sc5pony, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ponye ,sc5pony, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pony ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ponya ,sc5pony, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ponyb ,sc5pony, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ponyc ,sc5pony, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ponyd ,sc5pony, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ponye ,sc5pony, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pony Express (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2417 AWP POPEYE S5 PR2417 POPEYE SOUNDS11 POPEYE S.SITE
-GAME( 200?, sc5popey ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5popeya ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5popeyb ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5popeyc ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5popeyd ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5popeye ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5popeyf ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5popeyg ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5popey ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5popeya ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5popeyb ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5popeyc ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5popeyd ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5popeye ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5popeyf ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5popeyg ,sc5popey, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Popeye (Mazooma) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1918 AWP POTS OF GOLD SCORP5 PR1918 POTS OF GOLD SOUNDS11 POTS OF GOLD S.SITE
-GAME( 200?, sc5pog ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5poga ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pogb ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pogc ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pogd ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5poge ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pogf ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pogg ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pog ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5poga ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pogb ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pogc ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pogd ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5poge ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pogf ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pogg ,sc5pog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Pots Of Gold (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// Z050 POTOFGLD PR000050 POTOFGLD 1 POTOFGLD AWP
-GAME( 200?, sc5potog ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5potoga ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5potogb ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5potogc ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5potogd ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5potoge ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5potogf ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5potogg ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5potogh ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5potogi ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potog ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potoga ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potogb ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potogc ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potogd ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potoge ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potogf ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potogg ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potogh ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5potogi ,sc5potog, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "QPS","Pot Of Gold (QPS) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2272 POWER PLAY PPLY SOUNDS
-GAME( 200?, sc5pwrpl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pwrpla ,sc5pwrpl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pwrpl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pwrpla ,sc5pwrpl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Power Play (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1614 AWP POWERBALL POWERBALL S.SITE PR1614 POWERBALL SOUNDS11
-GAME( 200?, sc5pwrbl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5pwrbla ,sc5pwrbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pwrbl ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5pwrbla ,sc5pwrbl, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Powerball (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2342 QUID VICIOUS QUIDV SOUNDS QUID VICIOUS
-GAME( 200?, sc5quidv ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quidva ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quidvb ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quidvc ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quidvd ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quidve ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quidvf ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5quidvg ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quidv ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quidva ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quidvb ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quidvc ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quidvd ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quidve ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quidvf ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5quidvg ,sc5quidv, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Quid Vicious (Mazooma) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2077 RED HOT X SDRDX SOUNDS
-GAME( 200?, sc5rhx ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhx ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2077 RED HOT X SDRDX SOUNDS
-GAME( 200?, sc5rhxa ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhxb ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhxc ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhxd ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhxe ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhxf ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhxa ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhxb ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhxc ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhxd ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhxe ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhxf ,sc5rhx, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X (Mazooma) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2364 CASINO RED HOT X RED HOT X CRHX SOUNDS RED HOT X
-GAME( 200?, sc5rhxcs ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rhxcsa ,sc5rhxcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhxcs ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rhxcsa ,sc5rhxcs, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Hot X Casino (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2557 RED SQUARE REDS SOUNDS RED SQUARE
-GAME( 200?, sc5redsq ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5redsqa ,sc5redsq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5redsq ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5redsqa ,sc5redsq, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Red Square (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3257 CLUB RONNIE O SULLIVANS TOURNAMENT SCORP5 RONNIE OSULLIVAN CLUB PR3256 RONNIE O SOUNDS11 RONNIE SULLIVAN
-GAME( 200?, sc5rosts ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rostsa ,sc5rosts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rostsb ,sc5rosts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rostsc ,sc5rosts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rostsd ,sc5rosts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rostse ,sc5rosts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rosts ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rostsa ,sc5rosts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rostsb ,sc5rosts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rostsc ,sc5rosts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rostsd ,sc5rosts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rostse ,sc5rosts, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2311 ROVERS RETURN ROVERS RETURN SOUNDS ROVERS RETURN
-GAME( 200?, sc5rovrt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rovrta ,sc5rovrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rovrtb ,sc5rovrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5rovrtc ,sc5rovrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rovrt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rovrta ,sc5rovrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rovrtb ,sc5rovrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5rovrtc ,sc5rovrt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Rovers Return (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2280 SHOW ME THE MONEY SMTM SOUNDS
-GAME( 200?, sc5smtm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Show Me The Money (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5smtma ,sc5smtm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Show Me The Money (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5smtm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Show Me The Money (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5smtma ,sc5smtm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Show Me The Money (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3013 AWP SHOW TIME S5 PR3013 SHOWTIME SOUNDS11 SHOW TIME S.SITE
-GAME( 200?, sc5showt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showta ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtb ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtc ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtd ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showte ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtf ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtg ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showth ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showti ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtj ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtk ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtl ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtm ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtn ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showto ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtp ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtq ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showtr ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 19)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5showts ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 20)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showta ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtb ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtc ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtd ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showte ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtf ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtg ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showth ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showti ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtj ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtk ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtl ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtm ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtn ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showto ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtp ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtq ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showtr ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 19)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5showts ,sc5showt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Showtime (Bellfruit) (Scorpion 5) (set 20)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1411 AWP SNAKES AND LADDERS PR1411 SNAKES A L SOUNDS11
-GAME( 200?, sc5slad ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5slada ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sladb ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sladc ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sladd ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5slade ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sladf ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sladg ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5slad ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5slada ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sladb ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sladc ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sladd ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5slade ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sladf ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sladg ,sc5slad, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes & Ladders (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1901 AWP SPICE IT UP SCORP5 PR1901 SPICE IT UP SOUNDS11 SPICE IT UP S.SITE
-GAME( 200?, sc5spice ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5spiceb ,sc5spice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5spice ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5spiceb ,sc5spice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1921 AWP SPICE IT UP SCORP4 PR1901 SPICE IT UP SOUNDS11 SPICE IT UP S.SITE (this header is incorrect, these are SCORP 5 sets, they use opcodes not present in the sc5 cpu and have the 'SC5' at the start of the ROM)
-GAME( 200?, sc5spicea ,sc5spice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5spicec ,sc5spice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5spiced ,sc5spice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5spicee ,sc5spice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5spicea ,sc5spice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5spicec ,sc5spice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5spiced ,sc5spice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5spicee ,sc5spice, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Spice It Up (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2232 SPIN WHEN YOU'RE WINNING SPIN SOUNDS
-GAME( 200?, sc5swywm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5swywma ,sc5swywm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5swywmb ,sc5swywm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5swywmc ,sc5swywm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5swywm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5swywma ,sc5swywm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5swywmb ,sc5swywm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5swywmc ,sc5swywm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Spin When Your Winning (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2176 SUMMIT UP SUMMIT SOUNDS SUMMIT UP H
-GAME( 200?, sc5sumit ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Summit Up (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5sumita ,sc5sumit, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Summit Up (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sumit ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Summit Up (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sumita ,sc5sumit, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Summit Up (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2255 SUITUSIR SUIT SOUNDS SUITS U SIR
-GAME( 200?, sc5sus ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5susa ,sc5sus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5susb ,sc5sus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5susc ,sc5sus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5sus ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5susa ,sc5sus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5susb ,sc5sus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5susc ,sc5sus, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Qps","Suits U Sir (Qps) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2235 SWITCHBACK SWBK SOUNDS SWITCHBACK
-GAME( 200?, sc5swbak ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Switch Back (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5swbaka ,sc5swbak, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Switch Back (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5swbak ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Switch Back (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5swbaka ,sc5swbak, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Switch Back (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1714 AWP TAKE THE PIECE S5 PR1714 TAKE THE PIECE SOUNDS11 TAKETHEPIECE S.SITE
-GAME( 200?, sc5ttpie ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ttpiea ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ttpieb ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ttpiec ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ttpied ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ttpiee ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ttpief ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ttpieg ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ttpieh ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ttpiei ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ttpie ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ttpiea ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ttpieb ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ttpiec ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ttpied ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ttpiee ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ttpief ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ttpieg ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ttpieh ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ttpiei ,sc5ttpie, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3001 AWP TAKE YOUR PICK S5 PR3001 TAKE YOUR PICK SOUNDS11 TAKE YOUR PICK S.SITE
-GAME( 200?, sc5typ ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5typa ,sc5typ, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5typb ,sc5typ, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5typc ,sc5typ, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5typ ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5typa ,sc5typ, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5typb ,sc5typ, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5typc ,sc5typ, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Take Your Pick (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2140 MONOPOLY X SDMON SOUNDS (are these really a game called Top Box, or are they Top Box roms for Monopoly?)
-GAME( 200?, sc5tbox ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxa, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxb, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxc, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxd, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxe, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxf, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxg, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxh, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxi, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxj, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxk, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxl, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxm, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxn, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxo, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxp, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tboxq, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tbox ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxa, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxb, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxc, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxd, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxe, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxf, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxg, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxh, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxi, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxj, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxk, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxl, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxm, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxn, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxo, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxp, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tboxq, sc5tbox, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Box (Mazooma) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2211 TOP OF THE SHOTS TOTS SOUNDS TOP OF THE SHOTS
-GAME( 200?, sc5tpsht ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tpshta ,sc5tpsht, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tpshtb ,sc5tpsht, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tpshtc ,sc5tpsht, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5tpshtd ,sc5tpsht, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tpsht ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tpshta ,sc5tpsht, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tpshtb ,sc5tpsht, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tpshtc ,sc5tpsht, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5tpshtd ,sc5tpsht, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Top Of The Shots (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2175 TRAIL BLAZER TRAB SOUNDS TRAIL BLAZER
-GAME( 200?, sc5trail ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5traila ,sc5trail, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5trail ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5traila ,sc5trail, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Trailblazer (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3010 AWP VIVA MEXICO SCORP5 PR3010 VIVA MEXICO SOUNDS11 VIVA MEXICO S.SITE
-GAME( 200?, sc5vivam ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5vivama ,sc5vivam, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5vivam ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5vivama ,sc5vivam, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Viva Mexico (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2341 WILD JACKPOTS WILDJACK SOUNDS WILD JACKPOTS
-GAME( 200?, sc5wldjk ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5wldjka ,sc5wldjk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wldjk ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5wldjka ,sc5wldjk, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Wild Jackpots (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1611 AWP ANT AND DECS PR1611 ANT AND DECS SOUNDS11 ANT AND DECS S.SITE
-GAME( 200?, sc5adsnt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5adsnta ,sc5adsnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adsnt ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5adsnta ,sc5adsnt, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1708 AWP BULLY'S PRIZE BOARD PR1708 B PRIZE BOARD SOUNDS11 BULLYSPRIZEBOARD S.SITE
-GAME( 200?, sc5bpb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bpbb ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bpbd ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bpbe ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bpb ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bpbb ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bpbd ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bpbe ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1708 AWP BULLY'S PRIZE BOARD S5 PR1708 B PRIZE BOARD SOUNDS11 BULLYSPRIZEBOARD S.SITE
-GAME( 200?, sc5bpba ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bpbc ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bpbf ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bpbg ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bpba ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bpbc ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bpbf ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bpbg ,sc5bpb, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Prize Board (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3010 AWP BULLYS STAR PRIZE SCORP5 PR3012 BULLYS STAR P SOUNDS11 BULLYS STARPRIZE S.SITE
-GAME( 200?, sc5bsp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspa ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspb ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspc ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspd ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspe ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspf ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspg ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bsph ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspi ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspl ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspm ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspn ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspo ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 16)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspp ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 17)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspq ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 18)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bsp ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspa ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspb ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspc ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspd ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspe ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspf ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspg ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bsph ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspi ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspl ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspm ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspn ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspo ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 16)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspp ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 17)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspq ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 18)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3012 AWP BULLYS STAR PRIZE SCORP5 PR3012 BULLYS STAR P SOUNDS11 BULLYS STARPRIZE S.SITE
-GAME( 200?, sc5bspj ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3012) (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5bspk ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3012) (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspj ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3012) (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5bspk ,sc5bsp, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bully's Star Prize (PR3012) (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1312 AWP CHAIN REACTION PR1312 CHAIN REACT SOUNDS11
-GAME( 200?, sc5chain ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chaina ,sc5chain, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chainb ,sc5chain, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chainc ,sc5chain, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chaind ,sc5chain, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5chaine ,sc5chain, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chain ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chaina ,sc5chain, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chainb ,sc5chain, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chainc ,sc5chain, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chaind ,sc5chain, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5chaine ,sc5chain, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Chain Reaction (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1707 AWP CLOWN AROUND SCORP5 PR1707 CLOWN AROUND SOUNDS11 CLOWN AROUND S.SITE
-GAME( 200?, sc5clown ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clowna ,sc5clown, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clownb ,sc5clown, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clownc ,sc5clown, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clownd ,sc5clown, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5clowne ,sc5clown, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clown ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clowna ,sc5clown, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clownb ,sc5clown, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clownc ,sc5clown, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clownd ,sc5clown, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5clowne ,sc5clown, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Clown Around (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1412 AWP COPS AND ROBBERS PR1412 COPS AND ROBBERS SOUNDS11 COPS AND ROBBERS S.SITE
-GAME( 200?, sc5copsr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5copsra ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5copsrb ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5copsrc ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5copsrd ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5copsre ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5copsrf ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5copsrg ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5copsrh ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5copsri ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5copsr ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5copsra ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5copsrb ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5copsrc ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5copsrd ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5copsre ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5copsrf ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5copsrg ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5copsrh ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5copsri ,sc5copsr, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1915 AWP DEAL OR NO DEAL BEAT THE BANKER S5 PR1915 BEAT THE BANKER SOUNDS11 BEAT THE BANKER S.SITE
-GAME( 200?, sc5dndbe ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbea ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbeb ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbec ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbed ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbee ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbef ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbeg ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbeh ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbei ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbej ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbek ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbel ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 13)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbem ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 14)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndben ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 15)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbe ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbea ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbeb ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbec ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbed ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbee ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbef ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbeg ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbeh ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbei ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbej ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbek ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbel ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 13)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbem ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 14)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndben ,sc5dndbe, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 15)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3063 CASINO DOND CAN YOU BEAT THE BANKER CASINO DOND ARCADE PR3063 BEAT THE BANKER SOUNDS11
-GAME( 200?, sc5ddbbc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddbbca ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddbbcb ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddbbcc ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddbbcd ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddbbce ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddbbcf ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5ddbbcg ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddbbc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddbbca ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddbbcb ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddbbcc ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddbbcd ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddbbce ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddbbcf ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5ddbbcg ,sc5ddbbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
// PR3312 AWP DEAL OR NO DEAL BOX CLEVER SCORP5 PR3312 DOND BOXCLEVER SOUNDS11 BOX CLEVER S.SITE
-GAME( 200?, sc5dndbc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbca ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbcb ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbcc ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbcd ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbce ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbcf ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 7)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbcg ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 8)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbch ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 9)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbci ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 10)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbcj ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 11)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5dndbck ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 12)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbc ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbca ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbcb ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbcc ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbcd ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbce ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbcf ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 7)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbcg ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 8)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbch ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 9)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbci ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 10)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbcj ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 11)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5dndbck ,sc5dndbc, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 12)", MACHINE_IS_SKELETON_MECHANICAL )
// PR1706 AWP WHEEL OF WEALTH PR1706 WHEEL OF WEALTH SOUNDS11 WHEEL OF WEALTH S.SITE
-GAME( 200?, sc5mowow ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5mowowb ,sc5mowow, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mowow ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5mowowb ,sc5mowow, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Monopoly Wheel Of Wealth (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
// PR2166 NUN N ROSES NANR SOUNDS NUNS N ROSES
-GAME( 200?, sc5nunsm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5nunsma ,sc5nunsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 2)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5nunsmb ,sc5nunsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 3)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5nunsmc ,sc5nunsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 4)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5nunsmd ,sc5nunsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5nunsme ,sc5nunsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 6)", GAME_IS_SKELETON_MECHANICAL )
-
-GAME( 200?, sc5_3512 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Gold (Bellfruit) (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3437 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Red Hot Silly Peppers Community Party (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3438 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Juicy Gems Community Party (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3508 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Club DOND Red Mist (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3514 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Rapid Round (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3517 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal East and West Wing (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3524 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Prime Suspect (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3515 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","777 Heaven (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3511 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Spank the Banker (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3513 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Right Deal Right Time (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3516 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Ahoy (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3530 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Club Cash Ahoy (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3552 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes and Ladders (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3551 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Seal the Deal (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3525 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Hour (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3553 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Go All the Way (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3555 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy The Drunken Clam (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3519 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Eliminator (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3510 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Red Hot (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3557 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Live (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3451 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Gold (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3450 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Let's Play (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3435 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Street Party (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3520 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Street Wise (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3434 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Takeover (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3518 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Bank On It (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_3414 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Hot Arrows (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nunsm ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nunsma ,sc5nunsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nunsmb ,sc5nunsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 3)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nunsmc ,sc5nunsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 4)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nunsmd ,sc5nunsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5nunsme ,sc5nunsm, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "Mazooma","Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 6)", MACHINE_IS_SKELETON_MECHANICAL )
+
+GAME( 200?, sc5_3512 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Gold (Bellfruit) (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3437 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Red Hot Silly Peppers Community Party (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3438 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Juicy Gems Community Party (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3508 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Club DOND Red Mist (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3514 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Rapid Round (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3517 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal East and West Wing (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3524 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cluedo Prime Suspect (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3515 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","777 Heaven (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3511 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Spank the Banker (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3513 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Right Deal Right Time (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3516 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cash Ahoy (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3530 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Club Cash Ahoy (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3552 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Snakes and Ladders (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3551 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Seal the Deal (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3525 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Happy Hour (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3553 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Go All the Way (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3555 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Family Guy The Drunken Clam (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3519 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Eliminator (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3510 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Red Hot (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3557 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Live (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3451 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Gold (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3450 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Let's Play (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3435 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Street Party (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3520 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Cops 'n' Robbers Street Wise (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3434 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Monopoly Takeover (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3518 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Deal or no Deal Bank On It (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_3414 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Bullseye Hot Arrows (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
// 3rd party
-GAME( 200?, sc5_z057 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quidsia (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_z058 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wok 'n' Roll (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_z059 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Aladdin (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 200?, sc5_z060 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hard Dk (Scorpion 5)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_z057 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Quidsia (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_z058 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Wok 'n' Roll (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_z059 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Aladdin (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 200?, sc5_z060 ,0, bfm_sc5, bfm_sc5, bfm_sc5_state, sc5, ROT0, "BFM","Hard Dk (Scorpion 5)", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/bfm_swp.c b/src/mame/drivers/bfm_swp.c
index 266b8ee6631..f388f6d1bb9 100644
--- a/src/mame/drivers/bfm_swp.c
+++ b/src/mame/drivers/bfm_swp.c
@@ -299,7 +299,7 @@ ROM_END
-GAME( 199?, c3_rtime , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "Radio Times (Bellfruit) (Cobra 3)", GAME_IS_SKELETON )
-GAME( 199?, c3_telly , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "Telly Addicts (Bellfruit) (Cobra 3)", GAME_IS_SKELETON )
-GAME( 199?, c3_totp , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "Top of the Pops (Bellfruit) (Cobra 3?)", GAME_IS_SKELETON )
-GAME( 199?, c3_ppays , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "The Phrase That Pays (Bellfruit) (Cobra 3?)", GAME_IS_SKELETON )
+GAME( 199?, c3_rtime , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "Radio Times (Bellfruit) (Cobra 3)", MACHINE_IS_SKELETON )
+GAME( 199?, c3_telly , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "Telly Addicts (Bellfruit) (Cobra 3)", MACHINE_IS_SKELETON )
+GAME( 199?, c3_totp , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "Top of the Pops (Bellfruit) (Cobra 3?)", MACHINE_IS_SKELETON )
+GAME( 199?, c3_ppays , 0 , bfm_swp, bfm_swp, driver_device, 0, ROT0, "BFM", "The Phrase That Pays (Bellfruit) (Cobra 3?)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/bfmsys83.c b/src/mame/drivers/bfmsys83.c
index 293a9ad2b31..1fbed4b72c5 100644
--- a/src/mame/drivers/bfmsys83.c
+++ b/src/mame/drivers/bfmsys83.c
@@ -62,5 +62,5 @@ ROM_START( b83cops ) // was marked as sys85, but I think this is the sys83 set?
ROM_LOAD( "cops.p4", 0x8000, 0x2000, CRC(ce573b35) SHA1(f2ba22f0d55f882dd91b37e80e4bb14effd9113a) )
ROM_END
-GAME( 198?, b83catms , 0 , bfmsys83 , bfmsys83 , driver_device, 0 , 0, "BFM", "Cat & Mouse (Bellfruit) (System 83)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 198?, b83cops , 0 , bfmsys83 , bfmsys83 , driver_device, 0 , 0, "BFM", "Cops & Robbers (Bellfruit) (System 83)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 198?, b83catms , 0 , bfmsys83 , bfmsys83 , driver_device, 0 , 0, "BFM", "Cat & Mouse (Bellfruit) (System 83)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 198?, b83cops , 0 , bfmsys83 , bfmsys83 , driver_device, 0 , 0, "BFM", "Cops & Robbers (Bellfruit) (System 83)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/bfmsys85.c b/src/mame/drivers/bfmsys85.c
index bc7fa0b44b7..a7277d535b7 100644
--- a/src/mame/drivers/bfmsys85.c
+++ b/src/mame/drivers/bfmsys85.c
@@ -751,98 +751,98 @@ DRIVER_INIT_MEMBER(bfmsys85_state,nodecode)
}
// PROJECT NUMBER 5539 2P CASH EXPLOSION GAME No 39-350-190 - 29-MAR-1989 11:45:25
-GAME( 1989, b85cexpl , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Explosion (System 85)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1989, b85cexpl , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Explosion (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5150 THE ROYAL 10P PLAY GAME No 39-350-128 - 21-JAN-1988 12:42:53
-GAME( 1988, b85royal , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Royal (System 85)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK ) // 'The Royal' ?? hack of the Ritz or Big Deal Club?
+GAME( 1988, b85royal , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Royal (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK ) // 'The Royal' ?? hack of the Ritz or Big Deal Club?
// PROJECT NUMBER 4957 BIGDEAL 5P PLAY GAME No 39-350-055 - 9-MAR-1987 11:12:05
-GAME( 1987, b85bdclb , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 1)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1987, b85bdclb , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5035 BIGDEAL 5P PLAY GAME No 39-350-045 - 25-FEB-1987 14:19:41
-GAME( 1987, b85bdclba , b85bdclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 2)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1987, b85bdclba , b85bdclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5034 BIGDEAL 20P PLAY GAME No 39-350-047 - 25-FEB-1987 12:44:21
-GAME( 1987, b85bdclbb , b85bdclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 3)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1987, b85bdclbb , b85bdclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Big Deal Club (System 85, set 3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5145 CASH BLITZ GAME No 39-351-091 - 13-AUG-1987 11:25:29
-GAME( 1987, b85cblit , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 1)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1987, b85cblit , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5145 CASH BLITZ GAME No 39-350-091 - 13-AUG-1987 11:08:54
-GAME( 1987, b85cblita , b85cblit , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 2)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1987, b85cblita , b85cblit , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5145 CASH BLITZ GAME No 39-350-102 - 3-NOV-1987 16:24:39
-GAME( 1987, b85cblitb , b85cblit , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 3)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1987, b85cblitb , b85cblit , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Cash Blitz (System 85, set 3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5495 CLUB PREMIER 5P,10P AND 20P PLAY GAME No 39-350-187 - 28-FEB-1989 15:26:47
-GAME( 1989, b85clbpm , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Club Premier (System 85)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1989, b85clbpm , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Club Premier (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5116 HI LO SILVER DX GAME No 39-350-049 - 27-FEB-1987 10:49:08
-GAME( 1987, b85hilo , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Hi Lo Silver (System 85, set 1)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1987, b85hilo , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Hi Lo Silver (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5407 HI LO SILVER 2P GAME No 39-350-142 - 12-OCT-1988 09:39:26
-GAME( 1988, b85hiloa , b85hilo , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Hi Lo Silver (System 85, set 2)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1988, b85hiloa , b85hilo , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Hi Lo Silver (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5104 THE RITZ 10P PLAY GAME No 39-350-084 - 28-AUG-1987 08:44:30
-GAME( 1987, b85ritzd , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 5)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1987, b85ritzd , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 5)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5184 THE RITZ 5P PLAY GAME No 39-350-137 - 25-FEB-1988 11:07:18
-GAME( 1988, b85ritz , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 1)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK ) // alt version of Big Deal Club?
+GAME( 1988, b85ritz , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK ) // alt version of Big Deal Club?
// PROJECT NUMBER 5183 THE RITZ 20P PLAY GAME No 39-350-136 - 25-FEB-1988 11:25:52
-GAME( 1988, b85ritzb , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 3)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1988, b85ritzb , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5183 THE RITZ 20P PLAY GAME No 39-350-138 - 16-MAR-1988 10:46:30
-GAME( 1988, b85ritza , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 2)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1988, b85ritza , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5104 THE RITZ 10P PLAY GAME No 39-350-139 - 16-MAR-1988 11:04:27
-GAME( 1988, b85ritzc , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 4)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1988, b85ritzc , b85ritz , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "The Ritz (System 85, set 4)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5137 V2 10P PLAY GAME No 39-350-115 - 9-DEC-1987 12:39:16
-GAME( 1987, b85jpclb , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 1)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1987, b85jpclb , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5357 V2 20P PLAY GAME No 39-350-112 - 7-DEC-1987 14:32:31
-GAME( 1987, b85jpclba , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 2)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1987, b85jpclba , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5137 V2 10P PLAY GAME No 39-350-141 - 16-MAR-1988 11:46:48
-GAME( 1988, b85jpclbb , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 3)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1988, b85jpclbb , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5357 V2 20P PLAY GAME No 39-350-140 - 16-MAR-1988 11:21:43
-GAME( 1988, b85jpclbc , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 4)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1988, b85jpclbc , b85jpclb , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Jackpot Club (System 85, set 4)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5368 SUPER NUDGE GAMBLER #4.00 GAME No 39-340-230 - 27-JAN-1988 14:20:43
-GAME( 1988, b85sngam , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Super Nudge Gambler (System 85)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1988, b85sngam , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Super Nudge Gambler (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 4766 10P KING OF CLUBS GAME No 39-340-026 - 25-NOV-1985 08:49:11
-GAME( 199?, b85koc , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "King of Clubs (Bellfruit) (System 85, set 1)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL) // this has valid strings in it BEFORE the bfm decode, but decodes to valid code, does it use some funky mapping, or did they just fill unused space with valid looking data?
+GAME( 199?, b85koc , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "King of Clubs (Bellfruit) (System 85, set 1)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) // this has valid strings in it BEFORE the bfm decode, but decodes to valid code, does it use some funky mapping, or did they just fill unused space with valid looking data?
// PROJECT NUMBER 4766 10P KING OF CLUBS GAME No 39340002 - 16-AUG-1985 15:53:13
-GAME( 199?, b85koca , b85koc , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "King of Clubs (Bellfruit) (System 85, set 2)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL) // this has valid strings in it BEFORE the bfm decode, but decodes to valid code, does it use some funky mapping, or did they just fill unused space with valid looking data?
+GAME( 199?, b85koca , b85koc , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "King of Clubs (Bellfruit) (System 85, set 2)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL) // this has valid strings in it BEFORE the bfm decode, but decodes to valid code, does it use some funky mapping, or did they just fill unused space with valid looking data?
// PROJECT NUMBER 5425 BAR SEVEN ARCADE GAME No 39-341-236 - 11-APR-1988 11:30:33
-GAME( 199?, b85cb7p , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Bar Sevens (Bellfruit) (Protocol) (System 85)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK) // seems to work better here than in sc1
+GAME( 199?, b85cb7p , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Bar Sevens (Bellfruit) (Protocol) (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK) // seems to work better here than in sc1
// PROJECT NUMBER 5596 DISCOVERY 85 - 06-APR-1990 08:57:39
-GAME( 199?, b85disc , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM/ELAM", "Discovey (Dutch) (Bellfruit) (System 85)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL ) // GAME No 39-350-251
+GAME( 199?, b85disc , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM/ELAM", "Discovey (Dutch) (Bellfruit) (System 85)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL ) // GAME No 39-350-251
// PROJECT NUMBER 5452 DUTCH SUPER CARDS GAME No 39-340-271 - 04-JAN-1989 14:39:00
-GAME( 1989, b85scard , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Supercards (Dutch, Game Card 39-340-271?) (System 85)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1989, b85scard , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Supercards (Dutch, Game Card 39-340-271?) (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 4840 DUTCH JOKERS WILD PO GAME No 39-340-345 - 31-JUL-1992 20:01:55
-GAME( 1992, b85jkwld , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Jokers Wild (Dutch) (System 85)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1992, b85jkwld , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Jokers Wild (Dutch) (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 4823 LUCKY CARDS 200 PO GAME No 39-332-217 - 2-DEC-1986 15:57:19
-GAME( 1986, b85lucky , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Lucky Cards (Dutch) (System 85)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1986, b85lucky , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Lucky Cards (Dutch) (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 4902 DUTCH LUCKY DICE PO GAME No 39-340-346 - 03-AUG-1992 16:30:00
-GAME( 1992, b85luckd , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM/ELAM", "Lucky Dice (Dutch) (System 85)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1992, b85luckd , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM/ELAM", "Lucky Dice (Dutch) (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 4758 DUTCH C+R 200 PO GAME No 39-332-215 - 2-DEC-1986 15:50:43
-GAME( 199?, b85cops , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Cops 'n' Robbers (Dutch) (Bellfruit) (System 85)", GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
+GAME( 199?, b85cops , 0 , bfmsys85, bfmsys85, bfmsys85_state, nodecode, 0, "BFM/ELAM", "Cops 'n' Robbers (Dutch) (Bellfruit) (System 85)", MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
// this might be system 85 or sc1, the rom config is 0x2000 + 0x8000, and it writes to the AY address we map on S85 for the alarm
// however it still gives the same error message in both, has offset alpha text in s85 and appears to attempt to communicate with something we don't map, maybe it's some video based board / game with bits missing?
// PROJECT NUMBER 5464 V3 10P/20P PLAY GAME No 39-350-173 - 24-JAN-1989 10:48:53
-GAME( 1989, b85dbldl , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 1)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1989, b85dbldl , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5464 V3 10P/20P PLAY GAME No 39-350-181 - 02-FEB-1989 15:19:20
-GAME( 1985, b85dbldla , b85dbldl , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 2)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK )
+GAME( 1985, b85dbldla , b85dbldl , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK )
// PROJECT NUMBER 5464 V3 10P/20P PLAY GAME No 39-350-166 - 17-OCT-1988 14:56:38
-GAME( 199?, b85dbldlb , b85dbldl , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 3)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK ) // found in a sc4 potp set ...
+GAME( 199?, b85dbldlb , b85dbldl , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Double Dealer (System 85, set 3)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK ) // found in a sc4 potp set ...
// appears to be the same as above with a different title
// PROJECT NUMBER 5165 V1 10P PLAY GAME No 39-350-179 - 02-FEB-1989 14:42:57
-GAME( 199?, b85potp , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Pick Of The Pack (System 85)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_REQUIRES_ARTWORK ) // found in a sc4 potp set ...
+GAME( 199?, b85potp , 0 , bfmsys85, bfmsys85, bfmsys85_state, decode , 0, "BFM", "Pick Of The Pack (System 85)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_REQUIRES_ARTWORK ) // found in a sc4 potp set ...
diff --git a/src/mame/drivers/bgt.c b/src/mame/drivers/bgt.c
index 599617df52e..740c4a48621 100644
--- a/src/mame/drivers/bgt.c
+++ b/src/mame/drivers/bgt.c
@@ -90,7 +90,7 @@ ROM_START( bg_maxa )
ROM_END
-GAME( 199?, bg_ddb, 0, bgt, bgt, driver_device, 0, ROT0, "BGT", "Ding Dong Bells (BGT)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, bg_barmy, 0, bgt, bgt, driver_device, 0, ROT0, "BGT", "Barmy Army (BGT)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, bg_max, 0, bgt, bgt, driver_device, 0, ROT0, "BGT", "Max A Million (BGT) (set 1)", GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, bg_maxa, bg_max, bgt, bgt, driver_device, 0, ROT0, "BGT", "Max A Million (BGT) (set 2)", GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, bg_ddb, 0, bgt, bgt, driver_device, 0, ROT0, "BGT", "Ding Dong Bells (BGT)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, bg_barmy, 0, bgt, bgt, driver_device, 0, ROT0, "BGT", "Barmy Army (BGT)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, bg_max, 0, bgt, bgt, driver_device, 0, ROT0, "BGT", "Max A Million (BGT) (set 1)", MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, bg_maxa, bg_max, bgt, bgt, driver_device, 0, ROT0, "BGT", "Max A Million (BGT) (set 2)", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/big10.c b/src/mame/drivers/big10.c
index ee763a08b45..be3858993f1 100644
--- a/src/mame/drivers/big10.c
+++ b/src/mame/drivers/big10.c
@@ -69,18 +69,24 @@ class big10_state : public driver_device
{
public:
big10_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_v9938(*this, "v9938") ,
- m_maincpu(*this, "maincpu") { }
+ : driver_device(mconfig, type, tag)
+ , m_v9938(*this, "v9938")
+ , m_maincpu(*this, "maincpu")
+ , m_in1(*this, "IN1")
+ , m_in2(*this, "IN2")
+ , m_in3(*this, "IN3")
+ { }
required_device<v9938_device> m_v9938;
UINT8 m_mux_data;
DECLARE_READ8_MEMBER(mux_r);
DECLARE_WRITE8_MEMBER(mux_w);
virtual void machine_reset();
- TIMER_DEVICE_CALLBACK_MEMBER(big10_interrupt);
DECLARE_WRITE_LINE_MEMBER(big10_vdp_interrupt);
required_device<cpu_device> m_maincpu;
+ required_ioport m_in1;
+ required_ioport m_in2;
+ required_ioport m_in3;
};
@@ -96,10 +102,6 @@ WRITE_LINE_MEMBER(big10_state::big10_vdp_interrupt)
m_maincpu->set_input_line(0, (state ? ASSERT_LINE : CLEAR_LINE));
}
-TIMER_DEVICE_CALLBACK_MEMBER(big10_state::big10_interrupt)
-{
- m_v9938->interrupt();
-}
/*************************************
@@ -125,9 +127,9 @@ READ8_MEMBER(big10_state::mux_r)
{
switch(m_mux_data)
{
- case 1: return ioport("IN1")->read();
- case 2: return ioport("IN2")->read();
- case 4: return ioport("IN3")->read();
+ case 1: return m_in1->read();
+ case 2: return m_in2->read();
+ case 4: return m_in3->read();
}
return m_mux_data;
@@ -238,22 +240,13 @@ static MACHINE_CONFIG_START( big10, big10_state )
MCFG_CPU_ADD("maincpu", Z80, MASTER_CLOCK/6) /* guess */
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_IO_MAP(main_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", big10_state, big10_interrupt, "screen", 0, 1)
-
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_V9938_ADD("v9938", "screen", VDP_MEM)
+ MCFG_V9938_ADD("v9938", "screen", VDP_MEM, MASTER_CLOCK)
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(big10_state, big10_vdp_interrupt))
-
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_UPDATE_DEVICE("v9938", v9938_device, screen_update)
- MCFG_SCREEN_SIZE(512 + 32, (212 + 28) * 2)
- MCFG_SCREEN_VISIBLE_AREA(0, 512 + 32 - 1, 0, (212 + 28) * 2 - 1)
- MCFG_SCREEN_PALETTE("v9938:palette")
+ MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9938", MASTER_CLOCK)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mess/drivers/bigbord2.c b/src/mame/drivers/bigbord2.c
index c12e0b7832c..7f8612a2806 100644
--- a/src/mess/drivers/bigbord2.c
+++ b/src/mame/drivers/bigbord2.c
@@ -618,4 +618,4 @@ ROM_END
/* System Drivers */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, bigbord2, bigboard, 0, bigbord2, bigbord2, bigbord2_state, bigbord2, "Digital Research Computers", "Big Board II", GAME_NOT_WORKING )
+COMP( 1982, bigbord2, bigboard, 0, bigbord2, bigbord2, bigbord2_state, bigbord2, "Digital Research Computers", "Big Board II", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/bigevglf.c b/src/mame/drivers/bigevglf.c
index 97e37fec29a..c0d18524ba2 100644
--- a/src/mame/drivers/bigevglf.c
+++ b/src/mame/drivers/bigevglf.c
@@ -606,5 +606,5 @@ DRIVER_INIT_MEMBER(bigevglf_state,bigevglf)
membank("bank1")->configure_entries(0, 0xff, &ROM[0x10000], 0x800);
}
-GAME( 1986, bigevglf, 0, bigevglf, bigevglf, bigevglf_state, bigevglf, ROT270, "Taito America Corporation", "Big Event Golf (US)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1986, bigevglfj, bigevglf, bigevglf, bigevglfj, bigevglf_state,bigevglf, ROT270, "Taito Corporation", "Big Event Golf (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1986, bigevglf, 0, bigevglf, bigevglf, bigevglf_state, bigevglf, ROT270, "Taito America Corporation", "Big Event Golf (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, bigevglfj, bigevglf, bigevglf, bigevglfj, bigevglf_state,bigevglf, ROT270, "Taito Corporation", "Big Event Golf (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bigstrkb.c b/src/mame/drivers/bigstrkb.c
index 8a5a1300935..864a0194a0b 100644
--- a/src/mame/drivers/bigstrkb.c
+++ b/src/mame/drivers/bigstrkb.c
@@ -294,5 +294,5 @@ ROM_END
/* GAME drivers */
-GAME( 1992, bigstrkb, bigstrik, bigstrkb, bigstrkb, driver_device, 0, ROT0, "bootleg", "Big Striker (bootleg)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1992, bigstrkba,bigstrik, bigstrkb, bigstrkb, driver_device, 0, ROT0, "bootleg", "Big Striker (bootleg w/Italian teams)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1992, bigstrkb, bigstrik, bigstrkb, bigstrkb, driver_device, 0, ROT0, "bootleg", "Big Striker (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, bigstrkba,bigstrik, bigstrkb, bigstrkb, driver_device, 0, ROT0, "bootleg", "Big Striker (bootleg w/Italian teams)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/binbug.c b/src/mame/drivers/binbug.c
index bc8ff56202c..14c079e6156 100644
--- a/src/mess/drivers/binbug.c
+++ b/src/mame/drivers/binbug.c
@@ -587,4 +587,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1980, dg680, 0, 0, dg680, dg680, driver_device, 0, "David Griffiths", "DG680 with DGOS-Z80 1.4", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 1980, dg680, 0, 0, dg680, dg680, driver_device, 0, "David Griffiths", "DG680 with DGOS-Z80 1.4", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/bingo.c b/src/mame/drivers/bingo.c
index e1348f9a4a8..163dd49f357 100644
--- a/src/mame/drivers/bingo.c
+++ b/src/mame/drivers/bingo.c
@@ -299,27 +299,27 @@ ROM_START(tripjok)
ROM_END
-GAME(1980, cntinntl, 0, bingo, bingo, bingo_state, bingo, ROT0, "Bally", "Continental (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, goldgame, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, goldgkitb, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Kit Bingo Stake 6/10 (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, goldgstake, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Bingo Stake 6/10 (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, goldgnew, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Bingo New (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, goldgkit1, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Kit 1 Generation (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, michigan, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, michkit1, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo Kit 1 Generation (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, michkitb, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Kit Bingo Stake 6/10 (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, michstake, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo Stake 6/10 (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, michnew, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo New (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, montana, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Montana Bingo Stake 6/10 (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, topgame, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Top Game Laser L10 (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, topgamet, topgame, splin, splin, splin_state, splin, ROT0, "Splin", "Top Game Turbo (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, penalty, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Penalty (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, brooklyn, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Brooklyn (set 1) (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, brooklyna, brooklyn, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Brooklyn (set 2) (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, newdixie, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "New Dixieland (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, superdix, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Super Dixieland (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, cntine31, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Continental 3 in 1 (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, domino2, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Domino II (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, tripjok, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Triple Joker (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, ggate, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Golden Gate (set 1) (Bingo)", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, ggatea, ggate, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Golden Gate (set 2) (Bingo)", GAME_IS_SKELETON_MECHANICAL)
+GAME(1980, cntinntl, 0, bingo, bingo, bingo_state, bingo, ROT0, "Bally", "Continental (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, goldgame, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, goldgkitb, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Kit Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, goldgstake, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, goldgnew, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Bingo New (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, goldgkit1, goldgame, splin, splin, splin_state, splin, ROT0, "Splin", "Golden Game Kit 1 Generation (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, michigan, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, michkit1, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo Kit 1 Generation (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, michkitb, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Kit Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, michstake, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, michnew, michigan, splin, splin, splin_state, splin, ROT0, "Splin", "Michigan Bingo New (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, montana, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Montana Bingo Stake 6/10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, topgame, 0, splin, splin, splin_state, splin, ROT0, "Splin", "Top Game Laser L10 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, topgamet, topgame, splin, splin, splin_state, splin, ROT0, "Splin", "Top Game Turbo (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, penalty, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Penalty (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, brooklyn, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Brooklyn (set 1) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, brooklyna, brooklyn, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Brooklyn (set 2) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, newdixie, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "New Dixieland (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, superdix, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Super Dixieland (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, cntine31, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Continental 3 in 1 (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, domino2, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Domino II (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, tripjok, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Triple Joker (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, ggate, 0, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Golden Gate (set 1) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, ggatea, ggate, seeben, seeben, seeben_state, seeben, ROT0, "Seeben (Belgium)", "Golden Gate (set 2) (Bingo)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/bingoc.c b/src/mame/drivers/bingoc.c
index c2bafc927cd..f35704dccce 100644
--- a/src/mame/drivers/bingoc.c
+++ b/src/mame/drivers/bingoc.c
@@ -200,4 +200,4 @@ ROM_START( bingoc )
ROM_COPY( "upd", 0x20000, 0x00000, 0x20000 )
ROM_END
-GAME( 1989, bingoc, 0, bingoc, bingoc, driver_device, 0, ROT0, "Sega", "Bingo Circus (Rev. A 891001)", GAME_NOT_WORKING )
+GAME( 1989, bingoc, 0, bingoc, bingoc, driver_device, 0, ROT0, "Sega", "Bingo Circus (Rev. A 891001)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/bingoman.c b/src/mame/drivers/bingoman.c
index 2749b24a4ce..8bcad7f5891 100644
--- a/src/mame/drivers/bingoman.c
+++ b/src/mame/drivers/bingoman.c
@@ -463,5 +463,5 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1993, bingoman, 0, bingoman, bingoman, driver_device, 0, ROT0, "HP Automaten", "Bingo Mania (P03-P07-P14)", GAME_IS_SKELETON )
-GAME( 1993, bingomana, bingoman, bingoman, bingoman, driver_device, 0, ROT0, "HP Automaten", "Bingo Mania (A03)", GAME_IS_SKELETON )
+GAME( 1993, bingoman, 0, bingoman, bingoman, driver_device, 0, ROT0, "HP Automaten", "Bingo Mania (P03-P07-P14)", MACHINE_IS_SKELETON )
+GAME( 1993, bingomana, bingoman, bingoman, bingoman, driver_device, 0, ROT0, "HP Automaten", "Bingo Mania (A03)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/bingor.c b/src/mame/drivers/bingor.c
index 2c2fd036ddd..18b41402728 100644
--- a/src/mame/drivers/bingor.c
+++ b/src/mame/drivers/bingor.c
@@ -726,8 +726,8 @@ ROM_END
-GAME( 2002, bingor1, 0, bingor, bingor, driver_device, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star? (set 1)", GAME_NOT_WORKING | GAME_NO_SOUND )
-GAME( 2002, bingor2, 0, bingor, bingor, driver_device, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star? (set 2)", GAME_NOT_WORKING | GAME_NO_SOUND )
-GAME( 2002, bingor3, 0, bingor, bingor, driver_device, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star? (set 3)", GAME_NOT_WORKING | GAME_NO_SOUND )
-GAME( 2002, bingor4, 0, bingor, bingor, driver_device, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star? (set 4)", GAME_NOT_WORKING | GAME_NO_SOUND )
-GAME( 2002, bingor5, 0, bingor, bingor, driver_device, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star V3? (set 5)", GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( 2002, bingor1, 0, bingor, bingor, driver_device, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star? (set 1)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2002, bingor2, 0, bingor, bingor, driver_device, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star? (set 2)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2002, bingor3, 0, bingor, bingor, driver_device, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star? (set 3)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2002, bingor4, 0, bingor, bingor, driver_device, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star? (set 4)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 2002, bingor5, 0, bingor, bingor, driver_device, 0, ROT0, "<unknown>", "Bingo Roll / Bell Star V3? (set 5)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/bionicc.c b/src/mame/drivers/bionicc.c
index a6a36ea55b0..7b50e17bbe7 100644
--- a/src/mame/drivers/bionicc.c
+++ b/src/mame/drivers/bionicc.c
@@ -148,7 +148,7 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, bionicc_state )
AM_RANGE(0xfec000, 0xfecfff) AM_RAM_WRITE(bionicc_txvideoram_w) AM_SHARE("txvideoram")
AM_RANGE(0xff0000, 0xff3fff) AM_RAM_WRITE(bionicc_fgvideoram_w) AM_SHARE("fgvideoram")
AM_RANGE(0xff4000, 0xff7fff) AM_RAM_WRITE(bionicc_bgvideoram_w) AM_SHARE("bgvideoram")
- AM_RANGE(0xff8000, 0xff87ff) AM_RAM_WRITE(bionicc_paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0xff8000, 0xff87ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xffc000, 0xfffff7) AM_RAM /* working RAM */
AM_RANGE(0xfffff8, 0xfffff9) AM_READWRITE(hacked_soundcommand_r, hacked_soundcommand_w) /* hack */
AM_RANGE(0xfffffa, 0xffffff) AM_READWRITE(hacked_controls_r, hacked_controls_w) /* hack */
@@ -372,6 +372,7 @@ static MACHINE_CONFIG_START( bionicc, bionicc_state )
MCFG_DEVICE_ADD("spritegen", TIGEROAD_SPRITE, 0)
MCFG_PALETTE_ADD("palette", 1024)
+ MCFG_PALETTE_FORMAT_CLASS(2, bionicc_state, RRRRGGGGBBBBIIII)
MCFG_BUFFERED_SPRITERAM16_ADD("spriteram")
@@ -615,10 +616,10 @@ ROM_END
*
*************************************/
-GAME( 1987, bionicc, 0, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Bionic Commando (Euro)", GAME_SUPPORTS_SAVE )
-GAME( 1987, bionicc1, bionicc, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Bionic Commando (US set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, bionicc2, bionicc, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Bionic Commando (US set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, topsecrt, bionicc, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Top Secret (Japan, old revision)", GAME_SUPPORTS_SAVE )
-GAME( 1987, bioniccbl,bionicc, bionicc, bionicc, driver_device, 0, ROT0, "bootleg", "Bionic Commandos (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1987, bionicc, 0, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Bionic Commando (Euro)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, bionicc1, bionicc, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Bionic Commando (US set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, bionicc2, bionicc, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Bionic Commando (US set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, topsecrt, bionicc, bionicc, bionicc, driver_device, 0, ROT0, "Capcom", "Top Secret (Japan, old revision)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, bioniccbl,bionicc, bionicc, bionicc, driver_device, 0, ROT0, "bootleg", "Bionic Commandos (bootleg)", MACHINE_SUPPORTS_SAVE )
// there's also an undumped JP new revision on which there are no extra lives after 1 million points, plus other bug-fixes / changes
diff --git a/src/mame/drivers/bishi.c b/src/mame/drivers/bishi.c
index 26f8b374349..207b3e65070 100644
--- a/src/mame/drivers/bishi.c
+++ b/src/mame/drivers/bishi.c
@@ -481,6 +481,6 @@ ROM_START( sbishik )
ROM_END
-GAME( 1996, bishi, 0, bishi, bishi, driver_device, 0, ROT0, "Konami", "Bishi Bashi Championship Mini Game Senshuken (ver JAA, 3 Players)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1998, sbishi, 0, bishi, bishi2p, driver_device, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver JAA, 2 Players)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1998, sbishik, sbishi, bishi, bishi, driver_device, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver KAA, 3 Players)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1996, bishi, 0, bishi, bishi, driver_device, 0, ROT0, "Konami", "Bishi Bashi Championship Mini Game Senshuken (ver JAA, 3 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sbishi, 0, bishi, bishi2p, driver_device, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver JAA, 2 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sbishik, sbishi, bishi, bishi, driver_device, 0, ROT0, "Konami", "Super Bishi Bashi Championship (ver KAA, 3 Players)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/bitgraph.c b/src/mame/drivers/bitgraph.c
index 9a9866f5d70..8209fe9f20c 100644
--- a/src/mess/drivers/bitgraph.c
+++ b/src/mame/drivers/bitgraph.c
@@ -618,5 +618,5 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1981, bitgrpha, 0, 0, bitgrpha, bitgraph, driver_device, 0, "BBN", "BitGraph rev A", GAME_IMPERFECT_KEYBOARD)
-COMP( 1982, bitgrphb, 0, 0, bitgrphb, bitgraph, driver_device, 0, "BBN", "BitGraph rev B", GAME_NOT_WORKING|GAME_IMPERFECT_KEYBOARD)
+COMP( 1981, bitgrpha, 0, 0, bitgrpha, bitgraph, driver_device, 0, "BBN", "BitGraph rev A", MACHINE_IMPERFECT_KEYBOARD)
+COMP( 1982, bitgrphb, 0, 0, bitgrphb, bitgraph, driver_device, 0, "BBN", "BitGraph rev B", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_KEYBOARD)
diff --git a/src/mess/drivers/bk.c b/src/mame/drivers/bk.c
index 10ab64a1273..555dddae766 100644
--- a/src/mess/drivers/bk.c
+++ b/src/mame/drivers/bk.c
@@ -231,5 +231,5 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1985, bk0010, 0, 0, bk0010, bk0010, driver_device, 0, "Elektronika", "BK 0010", 0)
COMP( 1986, bk001001, bk0010, 0, bk0010, bk0010, driver_device, 0, "Elektronika", "BK 0010-01", 0)
-COMP( 1986, bk0010fd, bk0010, 0, bk0010fd, bk0010, driver_device, 0, "Elektronika", "BK 0010 FDD", GAME_NOT_WORKING)
-COMP( 1986, bk0011m, bk0010, 0, bk0010fd, bk0010, driver_device, 0, "Elektronika", "BK 0011M", GAME_NOT_WORKING)
+COMP( 1986, bk0010fd, bk0010, 0, bk0010fd, bk0010, driver_device, 0, "Elektronika", "BK 0010 FDD", MACHINE_NOT_WORKING)
+COMP( 1986, bk0011m, bk0010, 0, bk0010fd, bk0010, driver_device, 0, "Elektronika", "BK 0011M", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/bking.c b/src/mame/drivers/bking.c
index afd9040a65a..9b1dcc9a100 100644
--- a/src/mame/drivers/bking.c
+++ b/src/mame/drivers/bking.c
@@ -798,6 +798,6 @@ ROM_START( bking3 )
ROM_END
-GAME( 1982, bking, 0, bking, bking, driver_device, 0, ROT270, "Taito Corporation", "Birdie King", GAME_SUPPORTS_SAVE )
-GAME( 1983, bking2, 0, bking, bking2, driver_device, 0, ROT90, "Taito Corporation", "Birdie King 2", GAME_SUPPORTS_SAVE )
-GAME( 1984, bking3, 0, bking3, bking2, driver_device, 0, ROT90, "Taito Corporation", "Birdie King 3", GAME_SUPPORTS_SAVE )
+GAME( 1982, bking, 0, bking, bking, driver_device, 0, ROT270, "Taito Corporation", "Birdie King", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, bking2, 0, bking, bking2, driver_device, 0, ROT90, "Taito Corporation", "Birdie King 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, bking3, 0, bking3, bking2, driver_device, 0, ROT90, "Taito Corporation", "Birdie King 3", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/blackt96.c b/src/mame/drivers/blackt96.c
index b7e2799536f..8821ed33918 100644
--- a/src/mame/drivers/blackt96.c
+++ b/src/mame/drivers/blackt96.c
@@ -664,4 +664,4 @@ ROM_START( blackt96 )
ROM_CONTINUE( 0x00001, 0x08000 ) // first half is empty
ROM_END
-GAME( 1996, blackt96, 0, blackt96, blackt96, driver_device, 0, ROT0, "D.G.R.M.", "Black Touch '96", GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( 1996, blackt96, 0, blackt96, blackt96, driver_device, 0, ROT0, "D.G.R.M.", "Black Touch '96", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/bladestl.c b/src/mame/drivers/bladestl.c
index a87431ac30c..14f8fc0a641 100644
--- a/src/mame/drivers/bladestl.c
+++ b/src/mame/drivers/bladestl.c
@@ -282,7 +282,6 @@ void bladestl_state::machine_start()
m_rombank->configure_entries(0, 4, memregion("maincpu")->base(), 0x2000);
save_item(NAME(m_spritebank));
- save_item(NAME(m_layer_colorbase));
save_item(NAME(m_last_track));
}
@@ -290,8 +289,6 @@ void bladestl_state::machine_reset()
{
int i;
- m_layer_colorbase[0] = 0;
- m_layer_colorbase[1] = 1;
m_spritebank = 0;
for (i = 0; i < 4 ; i++)
@@ -439,6 +436,6 @@ ROM_END
*
*************************************/
-GAME( 1987, bladestl, 0, bladestl, bladestl, driver_device, 0, ROT90, "Konami", "Blades of Steel (version T)", GAME_SUPPORTS_SAVE )
-GAME( 1987, bladestll, bladestl, bladestl, bladestle, driver_device,0, ROT90, "Konami", "Blades of Steel (version L)", GAME_SUPPORTS_SAVE )
-GAME( 1987, bladestle, bladestl, bladestl, bladestle, driver_device,0, ROT90, "Konami", "Blades of Steel (version E)", GAME_SUPPORTS_SAVE )
+GAME( 1987, bladestl, 0, bladestl, bladestl, driver_device, 0, ROT90, "Konami", "Blades of Steel (version T)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, bladestll, bladestl, bladestl, bladestle, driver_device,0, ROT90, "Konami", "Blades of Steel (version L)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, bladestle, bladestl, bladestl, bladestle, driver_device,0, ROT90, "Konami", "Blades of Steel (version E)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/blitz.c b/src/mame/drivers/blitz.c
index 985e3e288fd..bba164a5343 100644
--- a/src/mame/drivers/blitz.c
+++ b/src/mame/drivers/blitz.c
@@ -831,5 +831,5 @@ ROM_END
*********************************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1990, megadpkr, 0, megadpkr, megadpkr, driver_device, 0, ROT0, "Blitz System Inc.", "Mega Double Poker (conversion kit, set 1)", GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 1990, megadpkrb, megadpkr, megadpkr, megadpkr, driver_device, 0, ROT0, "Blitz System Inc.", "Mega Double Poker (conversion kit, set 2)", GAME_NO_SOUND | GAME_NOT_WORKING )
+GAME( 1990, megadpkr, 0, megadpkr, megadpkr, driver_device, 0, ROT0, "Blitz System Inc.", "Mega Double Poker (conversion kit, set 1)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 1990, megadpkrb, megadpkr, megadpkr, megadpkr, driver_device, 0, ROT0, "Blitz System Inc.", "Mega Double Poker (conversion kit, set 2)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/blitz68k.c b/src/mame/drivers/blitz68k.c
index d412f077867..e236de0c4ad 100644
--- a/src/mame/drivers/blitz68k.c
+++ b/src/mame/drivers/blitz68k.c
@@ -2897,16 +2897,16 @@ DRIVER_INIT_MEMBER(blitz68k_state,megadble)
-GAME( 1992, maxidbl, 0, maxidbl, maxidbl, blitz68k_state, maxidbl, ROT0, "Blitz Systems Inc.", "Maxi Double Poker (Ver. 1.10)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_WRONG_COLORS )
-GAME( 1990, megadblj, 0, maxidbl, maxidbl, blitz68k_state, megadblj, ROT0, "Blitz Systems Inc.", "Mega Double Poker Jackpot (Ver. 1.26)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // JUNE 28TH, 1993
-GAME( 1990, megadble, 0, maxidbl, maxidbl, blitz68k_state, megadble, ROT0, "Blitz Systems Inc.", "Mega Double Poker (Ver. 1.63 Espagnol)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_WRONG_COLORS ) // NOVEMBER 1994
-GAME( 1993, steaser, 0, steaser, steaser, driver_device, 0, ROT0, "<unknown>", "Strip Teaser (Italy, Ver. 1.22)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // In-game strings are in Italian but service mode is half English / half French?
-GAME( 1993, bankrob, 0, bankrob, bankrob, blitz68k_state, bankrob, ROT0, "Entertainment Technology Corp.", "Bank Robbery (Ver. 3.32)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // BLITZ SYSTEM INC APRIL 1995
-GAME( 1993, bankroba, bankrob, bankroba, bankrob, blitz68k_state, bankroba, ROT0, "Entertainment Technology Corp.", "Bank Robbery (Ver. 2.00)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // BLITZ SYSTEM INC MAY 10TH, 1993
-GAME( 1993?, poker52, 0, maxidbl, maxidbl, driver_device, 0, ROT0, "Blitz Systems Inc.", "Poker 52 (Ver. 1.2)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // MARCH 10TH, 1994
-GAME( 1995, dualgame, 0, dualgame, dualgame, blitz68k_state, dualgame, ROT0, "Labtronix Technologies", "Dual Games (prototype)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // SEPTEMBER 5TH, 1995
-GAME( 1995, hermit, 0, hermit, hermit, blitz68k_state, hermit, ROT0, "Dugamex", "The Hermit (Ver. 1.14)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // APRIL 1995
-GAME( 1997, deucesw2, 0, deucesw2, deucesw2, blitz68k_state, deucesw2, ROT0, "<unknown>", "Deuces Wild 2 - American Heritage (Ver. 2.02F)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // APRIL 10TH, 1997
-GAME( 1998, cj3play, 0, cjffruit, cjffruit, blitz68k_state, cj3play, ROT0, "Cadillac Jack", "Triple Play (Ver. 1.10)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // FEBRUARY 24TH, 1999
-GAME( 1998, cjffruit, 0, cjffruit, cjffruit, blitz68k_state, cjffruit, ROT0, "Cadillac Jack", "Funny Fruit (Ver. 1.13)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) // APRIL 21ST, 1999
-GAME( 199?, ilpag, 0, ilpag, ilpag, driver_device, 0, ROT0, "<unknown>", "Il Pagliaccio (Italy, Ver. 2.7C)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND )
+GAME( 1992, maxidbl, 0, maxidbl, maxidbl, blitz68k_state, maxidbl, ROT0, "Blitz Systems Inc.", "Maxi Double Poker (Ver. 1.10)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS )
+GAME( 1990, megadblj, 0, maxidbl, maxidbl, blitz68k_state, megadblj, ROT0, "Blitz Systems Inc.", "Mega Double Poker Jackpot (Ver. 1.26)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // JUNE 28TH, 1993
+GAME( 1990, megadble, 0, maxidbl, maxidbl, blitz68k_state, megadble, ROT0, "Blitz Systems Inc.", "Mega Double Poker (Ver. 1.63 Espagnol)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS ) // NOVEMBER 1994
+GAME( 1993, steaser, 0, steaser, steaser, driver_device, 0, ROT0, "<unknown>", "Strip Teaser (Italy, Ver. 1.22)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // In-game strings are in Italian but service mode is half English / half French?
+GAME( 1993, bankrob, 0, bankrob, bankrob, blitz68k_state, bankrob, ROT0, "Entertainment Technology Corp.", "Bank Robbery (Ver. 3.32)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // BLITZ SYSTEM INC APRIL 1995
+GAME( 1993, bankroba, bankrob, bankroba, bankrob, blitz68k_state, bankroba, ROT0, "Entertainment Technology Corp.", "Bank Robbery (Ver. 2.00)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // BLITZ SYSTEM INC MAY 10TH, 1993
+GAME( 1993?, poker52, 0, maxidbl, maxidbl, driver_device, 0, ROT0, "Blitz Systems Inc.", "Poker 52 (Ver. 1.2)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // MARCH 10TH, 1994
+GAME( 1995, dualgame, 0, dualgame, dualgame, blitz68k_state, dualgame, ROT0, "Labtronix Technologies", "Dual Games (prototype)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // SEPTEMBER 5TH, 1995
+GAME( 1995, hermit, 0, hermit, hermit, blitz68k_state, hermit, ROT0, "Dugamex", "The Hermit (Ver. 1.14)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // APRIL 1995
+GAME( 1997, deucesw2, 0, deucesw2, deucesw2, blitz68k_state, deucesw2, ROT0, "<unknown>", "Deuces Wild 2 - American Heritage (Ver. 2.02F)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // APRIL 10TH, 1997
+GAME( 1998, cj3play, 0, cjffruit, cjffruit, blitz68k_state, cj3play, ROT0, "Cadillac Jack", "Triple Play (Ver. 1.10)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // FEBRUARY 24TH, 1999
+GAME( 1998, cjffruit, 0, cjffruit, cjffruit, blitz68k_state, cjffruit, ROT0, "Cadillac Jack", "Funny Fruit (Ver. 1.13)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND ) // APRIL 21ST, 1999
+GAME( 199?, ilpag, 0, ilpag, ilpag, driver_device, 0, ROT0, "<unknown>", "Il Pagliaccio (Italy, Ver. 2.7C)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/blktiger.c b/src/mame/drivers/blktiger.c
index d37921e69c1..f79c4adac3c 100644
--- a/src/mame/drivers/blktiger.c
+++ b/src/mame/drivers/blktiger.c
@@ -614,11 +614,11 @@ DRIVER_INIT_MEMBER(blktiger_state,blktigerb3)
memcpy(src, &buffer[0], len);
}
-GAME( 1987, blktiger, 0, blktiger, blktiger, driver_device, 0, ROT0, "Capcom", "Black Tiger", GAME_SUPPORTS_SAVE )
-GAME( 1987, blktigera, blktiger, blktiger, blktiger, driver_device, 0, ROT0, "Capcom", "Black Tiger (older)", GAME_SUPPORTS_SAVE )
-GAME( 1987, blktigerb1, blktiger, blktigerbl, blktiger, driver_device, 0, ROT0, "bootleg", "Black Tiger (bootleg set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, blktigerb2, blktiger, blktigerbl, blktiger, driver_device, 0, ROT0, "bootleg", "Black Tiger (bootleg set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, blkdrgon, blktiger, blktiger, blktiger, driver_device, 0, ROT0, "Capcom", "Black Dragon (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, blkdrgonb, blktiger, blktigerbl, blktiger, driver_device, 0, ROT0, "bootleg", "Black Dragon (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1987, blktiger, 0, blktiger, blktiger, driver_device, 0, ROT0, "Capcom", "Black Tiger", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, blktigera, blktiger, blktiger, blktiger, driver_device, 0, ROT0, "Capcom", "Black Tiger (older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, blktigerb1, blktiger, blktigerbl, blktiger, driver_device, 0, ROT0, "bootleg", "Black Tiger (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, blktigerb2, blktiger, blktigerbl, blktiger, driver_device, 0, ROT0, "bootleg", "Black Tiger (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, blkdrgon, blktiger, blktiger, blktiger, driver_device, 0, ROT0, "Capcom", "Black Dragon (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, blkdrgonb, blktiger, blktigerbl, blktiger, driver_device, 0, ROT0, "bootleg", "Black Dragon (bootleg)", MACHINE_SUPPORTS_SAVE )
// this board has Capcom markings (boards 87118-A-X1 / 87118-B-X1, but no MCU, a mix of bootleg Black Tiger and Black Dragon roms, and an address swapped sound rom? is the latter an alternative security measure?
-GAME( 1987, blktigerb3, blktiger, blktigerbl, blktiger, blktiger_state, blktigerb3, ROT0, "bootleg", "Black Tiger / Black Dragon (mixed bootleg?)", GAME_SUPPORTS_SAVE )
+GAME( 1987, blktigerb3, blktiger, blktigerbl, blktiger, blktiger_state, blktigerb3, ROT0, "bootleg", "Black Tiger / Black Dragon (mixed bootleg?)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/blmbycar.c b/src/mame/drivers/blmbycar.c
index 2256c9a940a..9c04c73df6f 100644
--- a/src/mame/drivers/blmbycar.c
+++ b/src/mame/drivers/blmbycar.c
@@ -529,6 +529,6 @@ DRIVER_INIT_MEMBER(blmbycar_state,blmbycar)
***************************************************************************/
-GAME( 1994, blmbycar, 0, blmbycar, blmbycar, blmbycar_state, blmbycar, ROT0, "ABM & Gecas", "Blomby Car", GAME_SUPPORTS_SAVE )
-GAME( 1994, blmbycaru, blmbycar, blmbycar, blmbycar, driver_device, 0, ROT0, "ABM & Gecas", "Blomby Car (not encrypted)", GAME_SUPPORTS_SAVE )
-GAME( 1996, watrball, 0, watrball, watrball, driver_device, 0, ROT0, "ABM", "Water Balls", GAME_SUPPORTS_SAVE )
+GAME( 1994, blmbycar, 0, blmbycar, blmbycar, blmbycar_state, blmbycar, ROT0, "ABM & Gecas", "Blomby Car", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, blmbycaru, blmbycar, blmbycar, blmbycar, driver_device, 0, ROT0, "ABM & Gecas", "Blomby Car (not encrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, watrball, 0, watrball, watrball, driver_device, 0, ROT0, "ABM", "Water Balls", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/blockade.c b/src/mame/drivers/blockade.c
index 9faab7d4b42..406444ec463 100644
--- a/src/mame/drivers/blockade.c
+++ b/src/mame/drivers/blockade.c
@@ -575,9 +575,9 @@ ROM_END
*
*************************************/
-GAMEL(1976, blockade, 0, blockade, blockade, driver_device, 0, ROT0, "Gremlin", "Blockade", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_blockade )
-GAMEL(1976, comotion, 0, blockade, comotion, driver_device, 0, ROT0, "Gremlin", "Comotion", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_blockade )
-GAME( 1978, blasto, 0, blasto, blasto, driver_device, 0, ROT0, "Gremlin", "Blasto", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // b/w, no overlay
-GAMEL(1977, hustle, 0, blasto, hustle, driver_device, 0, ROT0, "Gremlin", "Hustle", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_blockade )
-GAME( 1977, mineswpr, 0, blasto, mineswpr, driver_device, 0, ROT0, "Amutech", "Minesweeper", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1977, mineswpr4, mineswpr, blasto, mineswpr4, driver_device,0, ROT0, "Amutech", "Minesweeper (4-Player)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAMEL(1976, blockade, 0, blockade, blockade, driver_device, 0, ROT0, "Gremlin", "Blockade", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_blockade )
+GAMEL(1976, comotion, 0, blockade, comotion, driver_device, 0, ROT0, "Gremlin", "Comotion", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_blockade )
+GAME( 1978, blasto, 0, blasto, blasto, driver_device, 0, ROT0, "Gremlin", "Blasto", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // b/w, no overlay
+GAMEL(1977, hustle, 0, blasto, hustle, driver_device, 0, ROT0, "Gremlin", "Hustle", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_blockade )
+GAME( 1977, mineswpr, 0, blasto, mineswpr, driver_device, 0, ROT0, "Amutech", "Minesweeper", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1977, mineswpr4, mineswpr, blasto, mineswpr4, driver_device,0, ROT0, "Amutech", "Minesweeper (4-Player)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/blockhl.c b/src/mame/drivers/blockhl.c
index e71bb529072..b4397b09d9f 100644
--- a/src/mame/drivers/blockhl.c
+++ b/src/mame/drivers/blockhl.c
@@ -4,61 +4,137 @@
Block Hole (GX973) (c) 1989 Konami
- driver by Nicola Salmoria
+ Original driver by Nicola Salmoria
Notes:
- Quarth works, but Block Hole crashes when it reaches the title screen. An
- interrupt happens, and after rti the ROM bank is not the same as before so
- it jumps to garbage code.
- If you want to see this happen, place a breakpoint at 0x8612, and trace
- after that.
- The code is almost identical in the two versions, it looks like Quarth is
- working just because luckily the interrupt doesn't happen at that point.
- It seems that the interrupt handler trashes the selected ROM bank and forces
- it to 0. To prevent crashes, I only generate interrupts when the ROM bank is
- already 0. There might be another interrupt enable register, but I haven't
- found it.
+ - To advance to the next screen in service mode, press P1 and P2 start
+ simultaneously
+
+ Todo:
+ - How is the sound irq cleared (currently using HOLD_LINE)?
+ - Do bit 2 and 7 of the bankswitch port have any meaning?
+ - Verify raw screen parameters
*******************************************************************************/
#include "emu.h"
+#include "cpu/m6809/konami.h"
#include "cpu/z80/z80.h"
-#include "cpu/m6809/konami.h" /* for the callback and the firq irq definition */
+#include "machine/bankdev.h"
+#include "video/k052109.h"
+#include "video/k051960.h"
#include "sound/2151intf.h"
#include "includes/konamipt.h"
-#include "includes/blockhl.h"
-INTERRUPT_GEN_MEMBER(blockhl_state::blockhl_interrupt)
+//**************************************************************************
+// TYPE DEFINITIONS
+//**************************************************************************
+
+class blockhl_state : public driver_device
{
- if (m_k052109->is_irq_enabled() && m_rombank == 0) /* kludge to prevent crashes */
- device.execute().set_input_line(KONAMI_IRQ_LINE, HOLD_LINE);
-}
+public:
+ blockhl_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_bank5800(*this, "bank5800"),
+ m_audiocpu(*this, "audiocpu"),
+ m_k052109(*this, "k052109"),
+ m_k051960(*this, "k051960"),
+ m_rombank(*this, "rombank") { }
+
+ K052109_CB_MEMBER(tile_callback);
+ K051960_CB_MEMBER(sprite_callback);
+ UINT32 screen_update_blockhl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ DECLARE_READ8_MEMBER(k052109_051960_r);
+ DECLARE_WRITE8_MEMBER(k052109_051960_w);
+
+ DECLARE_WRITE8_MEMBER(sound_irq_w);
+
+ DECLARE_WRITE8_MEMBER(banking_callback);
+
+protected:
+ virtual void machine_start();
+
+private:
+ required_device<cpu_device> m_maincpu;
+ required_device<address_map_bank_device> m_bank5800;
+ required_device<cpu_device> m_audiocpu;
+ required_device<k052109_device> m_k052109;
+ required_device<k051960_device> m_k051960;
+ required_memory_bank m_rombank;
+};
+
+
+//**************************************************************************
+// ADDRESS MAPS
+//**************************************************************************
+
+static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, blockhl_state )
+ AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_byte_w)
+ AM_RANGE(0x1f88, 0x1f88) AM_WRITE(sound_irq_w)
+ AM_RANGE(0x1f8c, 0x1f8c) AM_WRITE(watchdog_reset_w)
+ AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("DSW3")
+ AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("P1")
+ AM_RANGE(0x1f96, 0x1f96) AM_READ_PORT("P2")
+ AM_RANGE(0x1f97, 0x1f97) AM_READ_PORT("DSW1")
+ AM_RANGE(0x1f98, 0x1f98) AM_READ_PORT("DSW2")
+ AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
+ AM_RANGE(0x4000, 0x57ff) AM_RAM
+ AM_RANGE(0x5800, 0x5fff) AM_DEVICE("bank5800", address_map_bank_device, amap8)
+ AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank")
+ AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x8000)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( bank5800_map, AS_PROGRAM, 8, blockhl_state )
+ AM_RANGE(0x0000, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ AM_RANGE(0x0800, 0x0fff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, blockhl_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0x87ff) AM_RAM
+ AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
+ AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
+ AM_RANGE(0xe00c, 0xe00d) AM_WRITENOP // leftover from missing 007232?
+ADDRESS_MAP_END
+
-READ8_MEMBER(blockhl_state::bankedram_r)
+//**************************************************************************
+// VIDEO EMULATION
+//**************************************************************************
+
+K052109_CB_MEMBER( blockhl_state::tile_callback )
{
- if (m_palette_selected)
- return m_paletteram[offset];
- else
- return m_ram[offset];
+ static const int layer_colorbase[] = { 0 / 16, 256 / 16, 512 / 16 };
+
+ *code |= ((*color & 0x0f) << 8);
+ *color = layer_colorbase[layer] + ((*color & 0xe0) >> 5);
}
-WRITE8_MEMBER(blockhl_state::bankedram_w)
+K051960_CB_MEMBER( blockhl_state::sprite_callback )
{
- if (m_palette_selected)
- m_palette->write(space, offset, data);
- else
- m_ram[offset] = data;
+ enum { sprite_colorbase = 768 / 16 };
+
+ *priority = (*color & 0x10) ? GFX_PMASK_1 : 0;
+ *color = sprite_colorbase + (*color & 0x0f);
}
-WRITE8_MEMBER(blockhl_state::blockhl_sh_irqtrigger_w)
+UINT32 blockhl_state::screen_update_blockhl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff);
-}
+ screen.priority().fill(0, cliprect);
+ m_k052109->tilemap_update();
+ m_k052109->tilemap_draw(screen, bitmap, cliprect, 2, TILEMAP_DRAW_OPAQUE, 0); // tile 2
+ m_k052109->tilemap_draw(screen, bitmap, cliprect, 1, 0, 1); // tile 1
+ m_k051960->k051960_sprites_draw(bitmap, cliprect, screen.priority(), -1, -1);
+ m_k052109->tilemap_draw(screen, bitmap, cliprect, 0, 0, 0); // tile 0
-/* special handlers to combine 052109 & 051960 */
-READ8_MEMBER(blockhl_state::k052109_051960_r)
+ return 0;
+}
+
+// special handlers to combine 052109 & 051960
+READ8_MEMBER( blockhl_state::k052109_051960_r )
{
if (m_k052109->get_rmrd_line() == CLEAR_LINE)
{
@@ -73,7 +149,7 @@ READ8_MEMBER(blockhl_state::k052109_051960_r)
return m_k052109->read(space, offset);
}
-WRITE8_MEMBER(blockhl_state::k052109_051960_w)
+WRITE8_MEMBER( blockhl_state::k052109_051960_w )
{
if (offset >= 0x3800 && offset < 0x3808)
m_k051960->k051937_w(space, offset - 0x3800, data);
@@ -84,56 +160,84 @@ WRITE8_MEMBER(blockhl_state::k052109_051960_w)
}
-static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, blockhl_state )
- AM_RANGE(0x1f84, 0x1f84) AM_WRITE(soundlatch_byte_w)
- AM_RANGE(0x1f88, 0x1f88) AM_WRITE(blockhl_sh_irqtrigger_w)
- AM_RANGE(0x1f8c, 0x1f8c) AM_WRITE(watchdog_reset_w)
- AM_RANGE(0x1f94, 0x1f94) AM_READ_PORT("DSW3")
- AM_RANGE(0x1f95, 0x1f95) AM_READ_PORT("P1")
- AM_RANGE(0x1f96, 0x1f96) AM_READ_PORT("P2")
- AM_RANGE(0x1f97, 0x1f97) AM_READ_PORT("DSW1")
- AM_RANGE(0x1f98, 0x1f98) AM_READ_PORT("DSW2")
- AM_RANGE(0x0000, 0x3fff) AM_READWRITE(k052109_051960_r, k052109_051960_w)
- AM_RANGE(0x4000, 0x57ff) AM_RAM
- AM_RANGE(0x5800, 0x5fff) AM_READWRITE(bankedram_r, bankedram_w) AM_SHARE("ram")
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+//**************************************************************************
+// AUDIO EMULATION
+//**************************************************************************
-static ADDRESS_MAP_START( audio_map, AS_PROGRAM, 8, blockhl_state )
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xe00c, 0xe00d) AM_WRITENOP /* leftover from missing 007232? */
-ADDRESS_MAP_END
+WRITE8_MEMBER( blockhl_state::sound_irq_w )
+{
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ0, HOLD_LINE);
+}
+
+
+//**************************************************************************
+// MACHINE EMULATION
+//**************************************************************************
+
+void blockhl_state::machine_start()
+{
+ // the first 0x8000 are banked, the remaining 0x8000 are directly accessible
+ m_rombank->configure_entries(0, 4, memregion("maincpu")->base(), 0x2000);
+}
+
+WRITE8_MEMBER( blockhl_state::banking_callback )
+{
+ // bits 0-1 = ROM bank
+ m_rombank->set_entry(data & 0x03);
+ // bit 2, unknown (always 0)
-/***************************************************************************
+ // bits 3/4 = coin counters
+ coin_counter_w(machine(), 0, data & 0x08);
+ coin_counter_w(machine(), 1, data & 0x10);
+
+ // bit 5 = select palette RAM or work RAM at 5800-5fff
+ m_bank5800->set_bank(BIT(data, 5));
+
+ // bit 6 = enable char ROM reading through the video RAM
+ m_k052109->set_rmrd_line(BIT(data, 6) ? ASSERT_LINE : CLEAR_LINE);
+
+ // bit 7, unknown (always 1)
+}
- Input Ports
-***************************************************************************/
+//**************************************************************************
+// INPUTS
+//**************************************************************************
static INPUT_PORTS_START( blockhl )
PORT_START("P1")
- KONAMI8_B123_START(1)
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_4WAY PORT_PLAYER(1)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_4WAY PORT_PLAYER(1)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_4WAY PORT_PLAYER(1)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) // joy down, can be tested in service mode
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) // button 2, can be tested in service mode
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED) // button 3, can be tested in service mode
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_START1)
PORT_START("P2")
- KONAMI8_B123_START(2)
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_4WAY PORT_PLAYER(2)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_4WAY PORT_PLAYER(2)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_4WAY PORT_PLAYER(2)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED) // joy down, can be tested in service mode
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED) // button 2, can be tested in service mode
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED) // button 3, can be tested in service mode
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_START2)
PORT_START("DSW1")
- KONAMI_COINAGE_LOC(DEF_STR( Free_Play ), "No Coin B", SW1)
- /* "No Coin B" = coins produce sound, but no effect on coin counter */
+ KONAMI_COINAGE_LOC(DEF_STR( Free_Play ), "Void", SW1)
+ // "Void" = coins produce sound, but no effect on coin counter
PORT_START("DSW2")
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1")
PORT_DIPSETTING( 0x01, "1" )
PORT_DIPSETTING( 0x00, "2" )
- PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW2:2" ) /* Listed as "Unused" */
- PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "SW2:3" ) /* Listed as "Unused" */
- PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW2:4" ) /* Listed as "Unused" */
- PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW2:5" ) /* Listed as "Unused" */
+ PORT_DIPUNUSED_DIPLOC( 0x02, IP_ACTIVE_LOW, "SW2:2" )
+ PORT_DIPUNUSED_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW2:3" )
+ PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_LOW, "SW2:4" )
+ PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" )
PORT_DIPNAME( 0x60, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,7")
PORT_DIPSETTING( 0x60, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
@@ -144,86 +248,44 @@ static INPUT_PORTS_START( blockhl )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_SERVICE1)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW3:1")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW3:2" ) /* Listed as "Unused" */
- PORT_SERVICE_DIPLOC(0x40, IP_ACTIVE_LOW, "SW3:3" )
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW3:4" ) /* Listed as "Unused" */
+ PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW3:2" )
+ PORT_SERVICE_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW3:3" )
+ PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW3:4" )
INPUT_PORTS_END
-/***************************************************************************
-
- Machine Driver
-
-***************************************************************************/
-
-void blockhl_state::machine_start()
-{
- UINT8 *ROM = memregion("maincpu")->base();
-
- membank("bank1")->configure_entries(0, 4, &ROM[0x10000], 0x2000);
-
- m_paletteram.resize(m_palette->entries() * 2);
- m_palette->basemem().set(m_paletteram, ENDIANNESS_BIG, 2);
-
- save_item(NAME(m_paletteram));
- save_item(NAME(m_palette_selected));
- save_item(NAME(m_rombank));
-}
-
-void blockhl_state::machine_reset()
-{
- m_palette_selected = 0;
- m_rombank = 0;
-}
-
-WRITE8_MEMBER( blockhl_state::banking_callback )
-{
- /* bits 0-1 = ROM bank */
- m_rombank = data & 0x03;
- membank("bank1")->set_entry(m_rombank);
-
- /* bits 3/4 = coin counters */
- coin_counter_w(machine(), 0, data & 0x08);
- coin_counter_w(machine(), 1, data & 0x10);
-
- /* bit 5 = select palette RAM or work RAM at 5800-5fff */
- m_palette_selected = ~data & 0x20;
-
- /* bit 6 = enable char ROM reading through the video RAM */
- m_k052109->set_rmrd_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
-
- /* bit 7 used but unknown */
-
- /* other bits unknown */
-
- if ((data & 0x84) != 0x80)
- logerror("%04x: setlines %02x\n", machine().device("maincpu")->safe_pc(), data);
-}
+//**************************************************************************
+// MACHINE DEFINTIONS
+//**************************************************************************
static MACHINE_CONFIG_START( blockhl, blockhl_state )
-
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", KONAMI,3000000) /* Konami custom 052526 */
+ // basic machine hardware
+ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/8) // Konami 052526
MCFG_CPU_PROGRAM_MAP(main_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", blockhl_state, blockhl_interrupt)
MCFG_KONAMICPU_LINE_CB(WRITE8(blockhl_state, banking_callback))
- MCFG_CPU_ADD("audiocpu", Z80, 3579545)
+ MCFG_DEVICE_ADD("bank5800", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(bank5800_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(12)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x0800)
+
+ MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz)
MCFG_CPU_PROGRAM_MAP(audio_map)
- /* video hardware */
+ // video hardware
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/3, 528, 112, 400, 256, 16, 240)
+// 6MHz dotclock is more realistic, however needs drawing updates. replace when ready
+// MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4, 396, hbend, hbstart, 256, 16, 240)
MCFG_SCREEN_UPDATE_DRIVER(blockhl_state, screen_update_blockhl)
MCFG_SCREEN_PALETTE("palette")
@@ -233,81 +295,79 @@ static MACHINE_CONFIG_START( blockhl, blockhl_state )
MCFG_DEVICE_ADD("k052109", K052109, 0)
MCFG_GFX_PALETTE("palette")
+ MCFG_K052109_SCREEN_TAG("screen")
MCFG_K052109_CB(blockhl_state, tile_callback)
+ MCFG_K052109_IRQ_HANDLER(INPUTLINE("maincpu", KONAMI_IRQ_LINE))
MCFG_DEVICE_ADD("k051960", K051960, 0)
MCFG_GFX_PALETTE("palette")
+ MCFG_K051960_SCREEN_TAG("screen")
MCFG_K051960_CB(blockhl_state, sprite_callback)
- /* sound hardware */
+ // sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_YM2151_ADD("ymsnd", 3579545)
+ MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz)
MCFG_SOUND_ROUTE(0, "mono", 0.60)
MCFG_SOUND_ROUTE(1, "mono", 0.60)
MACHINE_CONFIG_END
-/***************************************************************************
-
- Game ROMs
-
-***************************************************************************/
+//**************************************************************************
+// ROM DEFINITIONS
+//**************************************************************************
ROM_START( blockhl )
- ROM_REGION( 0x18000, "maincpu", 0 ) /* code + banked roms + space for banked RAM */
- ROM_LOAD( "973l02.e21", 0x10000, 0x08000, CRC(e14f849a) SHA1(d44cf178cc98998b72ed32c6e20b6ebdf1f97579) )
- ROM_CONTINUE( 0x08000, 0x08000 )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // code + banked roms
+ ROM_LOAD( "973l02.e21", 0x00000, 0x10000, CRC(e14f849a) SHA1(d44cf178cc98998b72ed32c6e20b6ebdf1f97579) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
- ROM_LOAD( "973d01.g6", 0x0000, 0x8000, CRC(eeee9d92) SHA1(6c6c324b1f6f4fba0aa12e0d1fc5dbab133ef669) )
+ ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the sound CPU
+ ROM_LOAD( "973d01.g6", 0x00000, 0x08000, CRC(eeee9d92) SHA1(6c6c324b1f6f4fba0aa12e0d1fc5dbab133ef669) )
- ROM_REGION( 0x20000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x20000, "k052109", 0 ) // tiles
ROM_LOAD32_BYTE( "973f07.k15", 0x00000, 0x08000, CRC(1a8cd9b4) SHA1(7cb7944d24ac51fa6b610542d9dec68697cacf0f) )
ROM_LOAD32_BYTE( "973f08.k18", 0x00001, 0x08000, CRC(952b51a6) SHA1(017575738d444b688b137cad5611638d53be84f2) )
ROM_LOAD32_BYTE( "973f09.k20", 0x00002, 0x08000, CRC(77841594) SHA1(e1bfdc5bb598d865868d578ef7faba8078becd7a) )
ROM_LOAD32_BYTE( "973f10.k23", 0x00003, 0x08000, CRC(09039fab) SHA1(a9dea17aacf4484d21ef3b16470263447b51b6b5) )
- ROM_REGION( 0x20000, "k051960", 0 ) /* sprites */
+ ROM_REGION( 0x20000, "k051960", 0 ) // sprites
ROM_LOAD32_BYTE( "973f06.k12", 0x00000, 0x08000, CRC(51acfdb6) SHA1(94d243f341b490684f5297d95d4835bd522ece35) )
ROM_LOAD32_BYTE( "973f05.k9", 0x00001, 0x08000, CRC(4cfea298) SHA1(4772b5b99f5fd8174d8884bd84173512e1edabf4) )
ROM_LOAD32_BYTE( "973f04.k7", 0x00002, 0x08000, CRC(69ca41bd) SHA1(9b0b1c888efd2f2d5525f14778e18fb4a7353eb6) )
ROM_LOAD32_BYTE( "973f03.k4", 0x00003, 0x08000, CRC(21e98472) SHA1(8c697d369a1f57be0825c33b4e9107ce1b02a130) )
- ROM_REGION( 0x0100, "proms", 0 ) /* PROMs */
- ROM_LOAD( "973a11.h10", 0x0000, 0x0100, CRC(46d28fe9) SHA1(9d0811a928c8907785ef483bfbee5445506b3ec8) ) /* priority encoder (not used) */
+ ROM_REGION( 0x0100, "priority", 0 ) // priority encoder (not used)
+ ROM_LOAD( "973a11.h10", 0x0000, 0x0100, CRC(46d28fe9) SHA1(9d0811a928c8907785ef483bfbee5445506b3ec8) )
ROM_END
ROM_START( quarth )
- ROM_REGION( 0x18000, "maincpu", 0 ) /* code + banked roms + space for banked RAM */
- ROM_LOAD( "973j02.e21", 0x10000, 0x08000, CRC(27a90118) SHA1(51309385b93db29b9277d14252166c4ea1746303) )
- ROM_CONTINUE( 0x08000, 0x08000 )
+ ROM_REGION( 0x10000, "maincpu", 0 ) // code + banked roms
+ ROM_LOAD( "973j02.e21", 0x00000, 0x10000, CRC(27a90118) SHA1(51309385b93db29b9277d14252166c4ea1746303) )
- ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
- ROM_LOAD( "973d01.g6", 0x0000, 0x8000, CRC(eeee9d92) SHA1(6c6c324b1f6f4fba0aa12e0d1fc5dbab133ef669) )
+ ROM_REGION( 0x08000, "audiocpu", 0 ) // 32k for the sound CPU
+ ROM_LOAD( "973d01.g6", 0x00000, 0x08000, CRC(eeee9d92) SHA1(6c6c324b1f6f4fba0aa12e0d1fc5dbab133ef669) )
- ROM_REGION( 0x20000, "k052109", 0 ) /* tiles */
+ ROM_REGION( 0x20000, "k052109", 0 ) // tiles
ROM_LOAD32_BYTE( "973e07.k15", 0x00000, 0x08000, CRC(0bd6b0f8) SHA1(6c59cf637354fe2df424eaa89feb9c1bc1f66a92) )
ROM_LOAD32_BYTE( "973e08.k18", 0x00001, 0x08000, CRC(104d0d5f) SHA1(595698911513113d01e5b565f5b073d1bd033d3f) )
ROM_LOAD32_BYTE( "973e09.k20", 0x00002, 0x08000, CRC(bd3a6f24) SHA1(eb45db3a6a52bb2b25df8c2dace877e59b4130a6) )
ROM_LOAD32_BYTE( "973e10.k23", 0x00003, 0x08000, CRC(cf5e4b86) SHA1(43348753894c1763b26dbfc70245dac92048db8f) )
- ROM_REGION( 0x20000, "k051960", 0 ) /* sprites */
+ ROM_REGION( 0x20000, "k051960", 0 ) // sprites
ROM_LOAD32_BYTE( "973e06.k12", 0x00000, 0x08000, CRC(0d58af85) SHA1(2efd661d614fb305a14cfe1aa4fb17714f215d4f) )
ROM_LOAD32_BYTE( "973e05.k9", 0x00001, 0x08000, CRC(15d822cb) SHA1(70ecad5e0a461df0da6e6eb23f43a7b643297f0d) )
ROM_LOAD32_BYTE( "973e04.k7", 0x00002, 0x08000, CRC(d70f4a2c) SHA1(25f835a17bacf2b8debb2eb8a3cff90cab3f402a) )
ROM_LOAD32_BYTE( "973e03.k4", 0x00003, 0x08000, CRC(2c5a4b4b) SHA1(e2991dd78b9cd96cf93ebd6de0d4e060d346ab9c) )
- ROM_REGION( 0x0100, "proms", 0 ) /* PROMs */
- ROM_LOAD( "973a11.h10", 0x0000, 0x0100, CRC(46d28fe9) SHA1(9d0811a928c8907785ef483bfbee5445506b3ec8) ) /* priority encoder (not used) */
+ ROM_REGION( 0x0100, "priority", 0 ) // priority encoder (not used)
+ ROM_LOAD( "973a11.h10", 0x0000, 0x0100, CRC(46d28fe9) SHA1(9d0811a928c8907785ef483bfbee5445506b3ec8) )
ROM_END
-/***************************************************************************
-
- Game driver(s)
-
-***************************************************************************/
+//**************************************************************************
+// GAME DRIVERS
+//**************************************************************************
-GAME( 1989, blockhl, 0, blockhl, blockhl, driver_device, 0, ROT0, "Konami", "Block Hole", GAME_SUPPORTS_SAVE )
-GAME( 1989, quarth, blockhl, blockhl, blockhl, driver_device, 0, ROT0, "Konami", "Quarth (Japan)", GAME_SUPPORTS_SAVE )
+// YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME FLAGS
+GAME( 1989, blockhl, 0, blockhl, blockhl, driver_device, 0, ROT0, "Konami", "Block Hole", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, quarth, blockhl, blockhl, blockhl, driver_device, 0, ROT0, "Konami", "Quarth (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/blockout.c b/src/mame/drivers/blockout.c
index 49621483c88..2aef99913e0 100644
--- a/src/mame/drivers/blockout.c
+++ b/src/mame/drivers/blockout.c
@@ -422,8 +422,8 @@ ROM_END
*
*************************************/
-GAME( 1989, blockout, 0, blockout, blockout, driver_device, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, blockout2,blockout, blockout, blockout, driver_device, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, blockoutj,blockout, blockout, blockoutj, driver_device,0, ROT0, "Technos Japan / California Dreams", "Block Out (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, agress, 0, agress, agress, driver_device, 0, ROT0, "Palco", "Agress - Missile Daisenryaku (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 2003, agressb, agress, agress, agress, driver_device, 0, ROT0, "bootleg", "Agress - Missile Daisenryaku (English bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1989, blockout, 0, blockout, blockout, driver_device, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, blockout2,blockout, blockout, blockout, driver_device, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, blockoutj,blockout, blockout, blockoutj, driver_device,0, ROT0, "Technos Japan / California Dreams", "Block Out (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, agress, 0, agress, agress, driver_device, 0, ROT0, "Palco", "Agress - Missile Daisenryaku (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 2003, agressb, agress, agress, agress, driver_device, 0, ROT0, "bootleg", "Agress - Missile Daisenryaku (English bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bloodbro.c b/src/mame/drivers/bloodbro.c
index ea6be5ffc9a..61fa573f078 100644
--- a/src/mame/drivers/bloodbro.c
+++ b/src/mame/drivers/bloodbro.c
@@ -36,7 +36,7 @@ view DIP descriptions. The manual states:
Game does not appear to have cocktail mode. The screen hardware
is undoubtedly capable of flipscreen and layer priority flipping
-however.(which is why we have GAME_NO_COCKTAIL despite the games
+however.(which is why we have MACHINE_NO_COCKTAIL despite the games
being upright)
Dumpers Notes
@@ -665,8 +665,8 @@ ROM_END
/* Game Drivers */
-GAME( 1990, bloodbro, 0, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1990, bloodbroa,bloodbro, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1990, bloodbrob,bloodbro, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 3)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1990, weststry, bloodbro, weststry, weststry, driver_device, 0, ROT0, "bootleg (Datsu)", "West Story (bootleg of Blood Bros.)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1990, skysmash, 0, skysmash, skysmash, driver_device, 0, ROT270, "Nihon System", "Sky Smasher", GAME_SUPPORTS_SAVE )
+GAME( 1990, bloodbro, 0, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bloodbroa,bloodbro, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bloodbrob,bloodbro, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1990, weststry, bloodbro, weststry, weststry, driver_device, 0, ROT0, "bootleg (Datsu)", "West Story (bootleg of Blood Bros.)", MACHINE_NO_COCKTAIL | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1990, skysmash, 0, skysmash, skysmash, driver_device, 0, ROT270, "Nihon System", "Sky Smasher", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/blueprnt.c b/src/mame/drivers/blueprnt.c
index 7ac61ca1948..03d71b8fcd2 100644
--- a/src/mame/drivers/blueprnt.c
+++ b/src/mame/drivers/blueprnt.c
@@ -488,7 +488,7 @@ ROM_END
*
*************************************/
-GAME( 1982, blueprnt, 0, blueprnt, blueprnt, driver_device, 0, ROT270, "Zilec Electronics / Bally Midway", "Blue Print (Midway)", GAME_SUPPORTS_SAVE )
-GAME( 1982, blueprntj, blueprnt, blueprnt, blueprnt, driver_device, 0, ROT270, "Zilec Electronics / Jaleco", "Blue Print (Jaleco)", GAME_SUPPORTS_SAVE )
-GAME( 1983, saturnzi, 0, blueprnt, saturn, driver_device, 0, ROT270, "Zilec Electronics / Jaleco", "Saturn", GAME_SUPPORTS_SAVE )
-GAME( 1983, grasspin, 0, grasspin, grasspin, driver_device, 0, ROT270, "Zilec Electronics / Jaleco", "Grasspin", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS ) // a few issues with dip reading + video hw, but nothing major
+GAME( 1982, blueprnt, 0, blueprnt, blueprnt, driver_device, 0, ROT270, "Zilec Electronics / Bally Midway", "Blue Print (Midway)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, blueprntj, blueprnt, blueprnt, blueprnt, driver_device, 0, ROT270, "Zilec Electronics / Jaleco", "Blue Print (Jaleco)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, saturnzi, 0, blueprnt, saturn, driver_device, 0, ROT270, "Zilec Electronics / Jaleco", "Saturn", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, grasspin, 0, grasspin, grasspin, driver_device, 0, ROT270, "Zilec Electronics / Jaleco", "Grasspin", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // a few issues with dip reading + video hw, but nothing major
diff --git a/src/mame/drivers/bmcbowl.c b/src/mame/drivers/bmcbowl.c
index 5bb20a2f2a0..1ef5c0a9da4 100644
--- a/src/mame/drivers/bmcbowl.c
+++ b/src/mame/drivers/bmcbowl.c
@@ -514,4 +514,4 @@ DRIVER_INIT_MEMBER(bmcbowl_state,bmcbowl)
save_item(NAME(m_bmc_input));
}
-GAME( 1994, bmcbowl, 0, bmcbowl, bmcbowl, bmcbowl_state, bmcbowl, ROT0, "BMC", "Konkyuu no Hoshi", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
+GAME( 1994, bmcbowl, 0, bmcbowl, bmcbowl, bmcbowl_state, bmcbowl, ROT0, "BMC", "Konkyuu no Hoshi", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/bmcpokr.c b/src/mame/drivers/bmcpokr.c
index 386e52bafc5..ae65392d227 100644
--- a/src/mame/drivers/bmcpokr.c
+++ b/src/mame/drivers/bmcpokr.c
@@ -622,7 +622,7 @@ static INPUT_PORTS_START( mjmaglmp )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN2 ) // NOTE
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) // KEY DOWN
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Pay Out") PORT_CODE(KEYCODE_O) // PAY
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bmcpokr_state,hopper_r, NULL) // HOPPER
+ PORT_BIT( 0x0200, IP_ACTIVE_HIGH,IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bmcpokr_state,hopper_r, NULL) // HOPPER
PORT_SERVICE_NO_TOGGLE( 0x0400, IP_ACTIVE_LOW ) // ACCOUNT
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_NAME("Reset") // RESET
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) // (unused)
@@ -948,5 +948,5 @@ ROM_START( mjmaglmp )
ROM_LOAD( "ja-a-901.u6", 0x00000, 0x40000, CRC(25f36d00) SHA1(c182348340ca67ad69d1a67c58b47d6371a725c9) )
ROM_END
-GAME( 1999, bmcpokr, 0, bmcpokr, bmcpokr, driver_device, 0, ROT0, "BMC", "Dongfang Shenlong", GAME_SUPPORTS_SAVE )
-GAME( 2000, mjmaglmp, 0, mjmaglmp, mjmaglmp, driver_device, 0, ROT0, "BMC", "Mahjong Magic Lamp (v. JAA02)", GAME_SUPPORTS_SAVE )
+GAME( 1999, bmcpokr, 0, bmcpokr, bmcpokr, driver_device, 0, ROT0, "BMC", "Dongfang Shenlong", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mjmaglmp, 0, mjmaglmp, mjmaglmp, driver_device, 0, ROT0, "BMC", "Mahjong Magic Lamp (v. JAA02)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/bmjr.c b/src/mame/drivers/bmjr.c
index 07cb4be9282..4ad812b6295 100644
--- a/src/mess/drivers/bmjr.c
+++ b/src/mame/drivers/bmjr.c
@@ -53,7 +53,6 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- DECLARE_PALETTE_INIT(bmjr);
UINT32 screen_update_bmjr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
@@ -324,15 +323,6 @@ static GFXDECODE_START( bmjr )
GFXDECODE_ENTRY( "chargen", 0x0000, bmjr_charlayout, 0, 4 )
GFXDECODE_END
-PALETTE_INIT_MEMBER(bmjr_state, bmjr)
-{
- int i;
-
- for(i=0;i<8;i++)
- palette.set_pen_color(i, pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
-}
-
-
void bmjr_state::machine_start()
{
m_beep->set_frequency(1200); //guesswork
@@ -361,8 +351,7 @@ static MACHINE_CONFIG_START( bmjr, bmjr_state )
MCFG_SCREEN_UPDATE_DRIVER(bmjr_state, screen_update_bmjr)
MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(bmjr_state, bmjr)
+ MCFG_PALETTE_ADD_3BIT_BRG("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", bmjr)
/* Audio */
@@ -393,4 +382,4 @@ DRIVER_INIT_MEMBER(bmjr_state,bmjr)
}
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, bmjr, 0, 0, bmjr, bmjr, bmjr_state, bmjr, "Hitachi", "Basic Master Jr", GAME_NOT_WORKING)
+COMP( 1982, bmjr, 0, 0, bmjr, bmjr, bmjr_state, bmjr, "Hitachi", "Basic Master Jr", MACHINE_NOT_WORKING)
diff --git a/src/mess/drivers/bml3.c b/src/mame/drivers/bml3.c
index c60f8425149..9b8b5eff66b 100644
--- a/src/mess/drivers/bml3.c
+++ b/src/mame/drivers/bml3.c
@@ -125,7 +125,7 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(keyboard_callback);
DECLARE_READ8_MEMBER(bml3_ym2203_r);
DECLARE_WRITE8_MEMBER(bml3_ym2203_w);
- DECLARE_PALETTE_INIT(bml3);
+
private:
UINT8 m_psg_latch;
UINT8 m_attr_latch;
@@ -760,14 +760,6 @@ INTERRUPT_GEN_MEMBER(bml3_state::bml3_timer_firq)
}
}
-PALETTE_INIT_MEMBER(bml3_state, bml3)
-{
- int i;
-
- for(i=0;i<8;i++)
- palette.set_pen_color(i, pal1bit(i >> 1),pal1bit(i >> 2),pal1bit(i >> 0));
-}
-
void bml3_state::machine_start()
{
m_extram = auto_alloc_array(machine(),UINT8,0x10000);
@@ -982,8 +974,7 @@ static MACHINE_CONFIG_START( bml3_common, bml3_state )
MCFG_SCREEN_SIZE(640, 400)
MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(bml3_state, bml3)
+ MCFG_PALETTE_ADD_3BIT_BRG("palette")
/* Devices */
// CRTC clock should be synchronous with the CPU clock.
@@ -1118,6 +1109,6 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1980, bml3, 0, 0, bml3, bml3, driver_device, 0, "Hitachi", "MB-6890 Basic Master Level 3", GAME_NOT_WORKING)
-COMP( 1982, bml3mk2,bml3, 0, bml3mk2, bml3, driver_device, 0, "Hitachi", "MB-6891 Basic Master Level 3 Mark 2", GAME_NOT_WORKING)
-COMP( 1983, bml3mk5,bml3, 0, bml3mk5, bml3, driver_device, 0, "Hitachi", "MB-6892 Basic Master Level 3 Mark 5", GAME_NOT_WORKING)
+COMP( 1980, bml3, 0, 0, bml3, bml3, driver_device, 0, "Hitachi", "MB-6890 Basic Master Level 3", MACHINE_NOT_WORKING)
+COMP( 1982, bml3mk2,bml3, 0, bml3mk2, bml3, driver_device, 0, "Hitachi", "MB-6891 Basic Master Level 3 Mark 2", MACHINE_NOT_WORKING)
+COMP( 1983, bml3mk5,bml3, 0, bml3mk5, bml3, driver_device, 0, "Hitachi", "MB-6892 Basic Master Level 3 Mark 5", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/bnstars.c b/src/mame/drivers/bnstars.c
index 42b4dacf4ab..8bb33dcb387 100644
--- a/src/mame/drivers/bnstars.c
+++ b/src/mame/drivers/bnstars.c
@@ -929,4 +929,4 @@ DRIVER_INIT_MEMBER(bnstars_state,bnstars)
configure_banks();
}
-GAME( 1997, bnstars1, 0, bnstars, bnstars, bnstars_state, bnstars, ROT0, "Jaleco", "Vs. Janshi Brandnew Stars", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
+GAME( 1997, bnstars1, 0, bnstars, bnstars, bnstars_state, bnstars, ROT0, "Jaleco", "Vs. Janshi Brandnew Stars", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/bntyhunt.c b/src/mame/drivers/bntyhunt.c
index 3860ef27189..cdd012c81a8 100644
--- a/src/mame/drivers/bntyhunt.c
+++ b/src/mame/drivers/bntyhunt.c
@@ -75,4 +75,4 @@ ROM_START(bntyhunt)
ROM_END
-GAME( 200?, bntyhunt, 0, bntyhunt, bntyhunt, driver_device, 0, ROT0, "GCTech Co., LTD", "Bounty Hunter (GCTech Co., LTD)", GAME_NOT_WORKING|GAME_NO_SOUND )
+GAME( 200?, bntyhunt, 0, bntyhunt, bntyhunt, driver_device, 0, ROT0, "GCTech Co., LTD", "Bounty Hunter (GCTech Co., LTD)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/bob85.c b/src/mame/drivers/bob85.c
index efa57ed3d4c..ce09e503fc3 100644
--- a/src/mess/drivers/bob85.c
+++ b/src/mame/drivers/bob85.c
@@ -223,4 +223,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1984, bob85, 0, 0, bob85, bob85, driver_device, 0, "Josef Kratochvil", "BOB-85", GAME_NO_SOUND_HW)
+COMP( 1984, bob85, 0, 0, bob85, bob85, driver_device, 0, "Josef Kratochvil", "BOB-85", MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/bogeyman.c b/src/mame/drivers/bogeyman.c
index 9aa989dad8a..bddda1d5862 100644
--- a/src/mame/drivers/bogeyman.c
+++ b/src/mame/drivers/bogeyman.c
@@ -52,7 +52,7 @@ static ADDRESS_MAP_START( bogeyman_map, AS_PROGRAM, 8, bogeyman_state )
AM_RANGE(0x2000, 0x20ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram")
AM_RANGE(0x2100, 0x21ff) AM_RAM_WRITE(colorram_w) AM_SHARE("colorram")
AM_RANGE(0x2800, 0x2bff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x3000, 0x300f) AM_RAM_WRITE(paletteram_w) AM_SHARE("palette")
+ AM_RANGE(0x3000, 0x300f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x3800, 0x3800) AM_READ_PORT("P1") AM_WRITE(ay8910_control_w)
AM_RANGE(0x3801, 0x3801) AM_READ_PORT("P2") AM_WRITE(ay8910_latch_w)
AM_RANGE(0x3802, 0x3802) AM_READ_PORT("DSW1")
@@ -232,7 +232,6 @@ static MACHINE_CONFIG_START( bogeyman, bogeyman_state )
MCFG_CPU_PROGRAM_MAP(bogeyman_map)
MCFG_CPU_PERIODIC_INT_DRIVER(bogeyman_state, irq0_line_hold, 16*60) // Controls sound
-
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
@@ -245,7 +244,7 @@ static MACHINE_CONFIG_START( bogeyman, bogeyman_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", bogeyman)
MCFG_PALETTE_ADD("palette", 16+256)
- MCFG_PALETTE_FORMAT(BBGGGRRR)
+ MCFG_PALETTE_FORMAT(BBGGGRRR_inverted)
MCFG_PALETTE_INIT_OWNER(bogeyman_state, bogeyman)
// sound hardware
@@ -292,4 +291,4 @@ ROM_END
/* Game Driver */
-GAME( 1985, bogeyman, 0, bogeyman, bogeyman, driver_device, 0, ROT0, "Technos Japan", "Bogey Manor", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1985, bogeyman, 0, bogeyman, bogeyman, driver_device, 0, ROT0, "Technos Japan", "Bogey Manor", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bombjack.c b/src/mame/drivers/bombjack.c
index e6a45cb715a..e58bc46a8ef 100644
--- a/src/mame/drivers/bombjack.c
+++ b/src/mame/drivers/bombjack.c
@@ -504,6 +504,6 @@ ROM_END
*
*************************************/
-GAME( 1984, bombjack, 0, bombjack, bombjack, driver_device, 0, ROT90, "Tehkan", "Bomb Jack (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1984, bombjack2, bombjack, bombjack, bombjack, driver_device, 0, ROT90, "Tehkan", "Bomb Jack (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1984, bombjackt, bombjack, bombjack, bombjack, driver_device, 0, ROT90, "Tehkan (Tecfri licence)", "Bomb Jack (Tecfri, Spain)", GAME_SUPPORTS_SAVE ) // official licence
+GAME( 1984, bombjack, 0, bombjack, bombjack, driver_device, 0, ROT90, "Tehkan", "Bomb Jack (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, bombjack2, bombjack, bombjack, bombjack, driver_device, 0, ROT90, "Tehkan", "Bomb Jack (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, bombjackt, bombjack, bombjack, bombjack, driver_device, 0, ROT90, "Tehkan (Tecfri licence)", "Bomb Jack (Tecfri, Spain)", MACHINE_SUPPORTS_SAVE ) // official licence
diff --git a/src/mame/drivers/boogwing.c b/src/mame/drivers/boogwing.c
index 4a0ecabbf5b..098397785c3 100644
--- a/src/mame/drivers/boogwing.c
+++ b/src/mame/drivers/boogwing.c
@@ -643,8 +643,8 @@ DRIVER_INIT_MEMBER(boogwing_state,boogwing)
memcpy(dst, src, 0x100000);
}
-GAME( 1992, boogwing, 0, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "Boogie Wings (Euro v1.5, 92.12.07)", GAME_SUPPORTS_SAVE )
-GAME( 1992, boogwingu,boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "Boogie Wings (USA v1.7, 92.12.14)", GAME_SUPPORTS_SAVE )
-GAME( 1992, boogwinga,boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "Boogie Wings (Asia v1.5, 92.12.07)", GAME_SUPPORTS_SAVE )
-GAME( 1992, ragtime, boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "The Great Ragtime Show (Japan v1.5, 92.12.07)", GAME_SUPPORTS_SAVE )
-GAME( 1992, ragtimea, boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "The Great Ragtime Show (Japan v1.3, 92.11.26)", GAME_SUPPORTS_SAVE )
+GAME( 1992, boogwing, 0, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "Boogie Wings (Euro v1.5, 92.12.07)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, boogwingu,boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "Boogie Wings (USA v1.7, 92.12.14)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, boogwinga,boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "Boogie Wings (Asia v1.5, 92.12.07)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, ragtime, boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "The Great Ragtime Show (Japan v1.5, 92.12.07)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, ragtimea, boogwing, boogwing, boogwing, boogwing_state, boogwing, ROT0, "Data East Corporation", "The Great Ragtime Show (Japan v1.3, 92.11.26)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bottom9.c b/src/mame/drivers/bottom9.c
index 6bf81e02a95..d5e1fa3479c 100644
--- a/src/mame/drivers/bottom9.c
+++ b/src/mame/drivers/bottom9.c
@@ -323,6 +323,7 @@ static MACHINE_CONFIG_START( bottom9, bottom9_state )
MCFG_DEVICE_ADD("k051960", K051960, 0)
MCFG_GFX_PALETTE("palette")
+ MCFG_K051960_SCREEN_TAG("screen")
MCFG_K051960_CB(bottom9_state, sprite_callback)
MCFG_DEVICE_ADD("k051316", K051316, 0)
@@ -523,6 +524,6 @@ ROM_END
-GAME( 1989, bottom9, 0, bottom9, bottom9, driver_device, 0, ROT0, "Konami", "Bottom of the Ninth (version T)", GAME_SUPPORTS_SAVE )
-GAME( 1989, bottom9n, bottom9, bottom9, bottom9, driver_device, 0, ROT0, "Konami", "Bottom of the Ninth (version N)", GAME_SUPPORTS_SAVE )
-GAME( 1989, mstadium, bottom9, bottom9, mstadium, driver_device, 0, ROT0, "Konami", "Main Stadium (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1989, bottom9, 0, bottom9, bottom9, driver_device, 0, ROT0, "Konami", "Bottom of the Ninth (version T)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, bottom9n, bottom9, bottom9, bottom9, driver_device, 0, ROT0, "Konami", "Bottom of the Ninth (version N)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mstadium, bottom9, bottom9, mstadium, driver_device, 0, ROT0, "Konami", "Main Stadium (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bowltry.c b/src/mame/drivers/bowltry.c
index b464dd410d6..73e4b83a055 100644
--- a/src/mame/drivers/bowltry.c
+++ b/src/mame/drivers/bowltry.c
@@ -125,4 +125,4 @@ ROM_START( bowltry )
ROM_END
-GAME( 200?, bowltry, 0, bowltry, bowltry, driver_device, 0, ROT0, "Atlus", "Bowling Try",GAME_IS_SKELETON )
+GAME( 200?, bowltry, 0, bowltry, bowltry, driver_device, 0, ROT0, "Atlus", "Bowling Try",MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/boxer.c b/src/mame/drivers/boxer.c
index 8ed6612aa13..c5415e1b3f8 100644
--- a/src/mame/drivers/boxer.c
+++ b/src/mame/drivers/boxer.c
@@ -538,4 +538,4 @@ ROM_END
*
*************************************/
-GAME( 1978, boxer, 0, boxer, boxer, driver_device, 0, 0, "Atari", "Boxer (prototype)", GAME_NO_SOUND )
+GAME( 1978, boxer, 0, boxer, boxer, driver_device, 0, 0, "Atari", "Boxer (prototype)", MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/br8641.c b/src/mame/drivers/br8641.c
new file mode 100644
index 00000000000..671aeab491d
--- /dev/null
+++ b/src/mame/drivers/br8641.c
@@ -0,0 +1,200 @@
+// license:BSD-3-Clause
+// copyright-holders:Miodrag Milanovic, Robbbert
+/***************************************************************************
+
+ Brandt 8641
+
+ Currency Counter
+
+ 2012-12-24 Skeleton driver. [Micko]
+ 2015-09-27 Added devices & inputs based entirely on guesswork [Robbbert]
+
+ There seems to be 15 buttons (according to images, I just have board)
+ also there are 8 dips currently set at 00011100 (1 is on)
+
+ Looks like a LCD display? I think ports 8 & 9 write to it. Also looks
+ like the display should say 8641 when machine is turned on.
+
+ToDo:
+- Need manuals, schematics, etc.
+- Artwork
+- Everything
+
+****************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "cpu/z80/z80daisy.h"
+#include "machine/z80ctc.h"
+#include "machine/z80pio.h"
+#include "sound/beep.h"
+
+class brandt8641_state : public driver_device
+{
+public:
+ brandt8641_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_pio1(*this, "pio1")
+ , m_pio2(*this, "pio2")
+ , m_pio3(*this, "pio3")
+ , m_ctc(*this, "ctc")
+ , m_io_keyboard(*this, "KEY")
+ , m_beep(*this, "beeper")
+ { }
+
+ DECLARE_READ8_MEMBER(port08_r);
+ DECLARE_WRITE8_MEMBER(port08_w);
+ DECLARE_WRITE8_MEMBER(port09_w);
+ DECLARE_MACHINE_RESET(br8641);
+
+private:
+ UINT8 m_port08;
+ UINT8 m_port09;
+ required_device<cpu_device> m_maincpu;
+ required_device<z80pio_device> m_pio1;
+ required_device<z80pio_device> m_pio2;
+ required_device<z80pio_device> m_pio3;
+ required_device<z80ctc_device> m_ctc;
+ required_ioport_array<8> m_io_keyboard;
+ required_device<beep_device> m_beep;
+};
+
+static ADDRESS_MAP_START(brandt8641_mem, AS_PROGRAM, 8, brandt8641_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000, 0x7fff) AM_ROM // 27256 at U12
+ AM_RANGE(0x8000, 0x9fff) AM_RAM // 8KB static ram 6264 at U12
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START(brandt8641_io, AS_IO, 8, brandt8641_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("pio1", z80pio_device, read, write)
+ AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("pio2", z80pio_device, read, write)
+ AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("pio3", z80pio_device, read, write)
+ AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ctc", z80ctc_device, read, write)
+ AM_RANGE(0x1E, 0x1F) AM_WRITENOP // unknown device
+ADDRESS_MAP_END
+
+/* Input ports */
+// No idea what each key does
+static INPUT_PORTS_START( brandt8641 )
+ PORT_START("KEY.0")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C)
+
+ PORT_START("KEY.1")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F)
+
+ PORT_START("KEY.2")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_G)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_H)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I)
+
+ PORT_START("KEY.3")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_J)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L)
+
+ PORT_START("KEY.4")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O)
+
+ PORT_START("KEY.5")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R)
+
+ PORT_START("KEY.6")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_T)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U)
+
+ PORT_START("KEY.7")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X)
+INPUT_PORTS_END
+
+READ8_MEMBER( brandt8641_state::port08_r )
+{
+ UINT8 i, data = 7;
+
+ for (i = 0; i < 8; i++)
+ if BIT(m_port09, i)
+ data &= m_io_keyboard[i]->read();
+
+ return data | m_port08;
+}
+
+WRITE8_MEMBER( brandt8641_state::port08_w )
+{
+ m_port08 = data & 0xf8;
+ m_beep->set_state(BIT(data, 4));
+}
+
+WRITE8_MEMBER( brandt8641_state::port09_w )
+{
+ m_port09 = data ^ 0xff;
+}
+
+MACHINE_RESET_MEMBER( brandt8641_state, br8641 )
+{
+ m_beep->set_frequency(2000);
+}
+
+static const z80_daisy_config daisy_chain_intf[] =
+{
+ { "pio1" },
+ { "pio2" },
+ { "pio3" },
+ { "ctc" },
+ { NULL }
+};
+
+
+
+static MACHINE_CONFIG_START( brandt8641, brandt8641_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_4MHz) // U4 ,4MHz crystal on board
+ MCFG_CPU_PROGRAM_MAP(brandt8641_mem)
+ MCFG_CPU_IO_MAP(brandt8641_io)
+ MCFG_CPU_CONFIG(daisy_chain_intf)
+
+ MCFG_MACHINE_RESET_OVERRIDE(brandt8641_state, br8641)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ // Z80APIO U9
+ // Z80APIO U14
+ // Z80PIO U7 - unknown which is which
+ MCFG_DEVICE_ADD("pio1", Z80PIO, XTAL_4MHz)
+ MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+
+ MCFG_DEVICE_ADD("pio2", Z80PIO, XTAL_4MHz)
+ MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+ MCFG_Z80PIO_IN_PA_CB(READ8(brandt8641_state, port08_r))
+ MCFG_Z80PIO_OUT_PA_CB(WRITE8(brandt8641_state, port08_w))
+ MCFG_Z80PIO_OUT_PB_CB(WRITE8(brandt8641_state, port09_w))
+
+ MCFG_DEVICE_ADD("pio3", Z80PIO, XTAL_4MHz)
+ MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
+
+ MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_4MHz) // Z80CTC U8
+MACHINE_CONFIG_END
+
+/* ROM definition */
+ROM_START( br8641 )
+ ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "v0911he.u11", 0x0000, 0x8000, CRC(59a16951) SHA1(893dba60ec8bfa391fb2d2a30db5d42d601f5eb9))
+ROM_END
+
+/* Driver */
+COMP( 1986, br8641, 0, 0, brandt8641, brandt8641, driver_device, 0, "Brandt", "Brandt 8641", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/brkthru.c b/src/mame/drivers/brkthru.c
index 1bb13c59bec..00f62d7a53b 100644
--- a/src/mame/drivers/brkthru.c
+++ b/src/mame/drivers/brkthru.c
@@ -647,7 +647,7 @@ DRIVER_INIT_MEMBER(brkthru_state,brkthru)
*
*************************************/
-GAME( 1986, brkthru, 0, brkthru, brkthru, brkthru_state, brkthru, ROT0, "Data East USA", "Break Thru (US)", GAME_SUPPORTS_SAVE )
-GAME( 1986, brkthruj, brkthru, brkthru, brkthruj, brkthru_state, brkthru, ROT0, "Data East Corporation", "Kyohkoh-Toppa (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1986, forcebrk, brkthru, brkthru, brkthruj, brkthru_state, brkthru, ROT0, "bootleg", "Force Break (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1986, darwin, 0, darwin, darwin, brkthru_state, brkthru, ROT270, "Data East Corporation", "Darwin 4078 (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1986, brkthru, 0, brkthru, brkthru, brkthru_state, brkthru, ROT0, "Data East USA", "Break Thru (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, brkthruj, brkthru, brkthru, brkthruj, brkthru_state, brkthru, ROT0, "Data East Corporation", "Kyohkoh-Toppa (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, forcebrk, brkthru, brkthru, brkthruj, brkthru_state, brkthru, ROT0, "bootleg", "Force Break (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, darwin, 0, darwin, darwin, brkthru_state, brkthru, ROT270, "Data East Corporation", "Darwin 4078 (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bsktball.c b/src/mame/drivers/bsktball.c
index 49e4c869735..90052c677af 100644
--- a/src/mame/drivers/bsktball.c
+++ b/src/mame/drivers/bsktball.c
@@ -300,4 +300,4 @@ ROM_END
*
*************************************/
-GAME( 1979, bsktball, 0, bsktball, bsktball, driver_device, 0, ROT0, "Atari", "Basketball", GAME_SUPPORTS_SAVE )
+GAME( 1979, bsktball, 0, bsktball, bsktball, driver_device, 0, ROT0, "Atari", "Basketball", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/btime.c b/src/mame/drivers/btime.c
index f5fa2a2f679..b1524a4fce1 100644
--- a/src/mame/drivers/btime.c
+++ b/src/mame/drivers/btime.c
@@ -192,7 +192,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(btime_state::audio_nmi_gen)
static ADDRESS_MAP_START( btime_map, AS_PROGRAM, 8, btime_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x0c00, 0x0c0f) AM_RAM_WRITE(btime_paletteram_w) AM_SHARE("palette")
+ AM_RANGE(0x0c00, 0x0c0f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram")
AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w)
@@ -227,7 +227,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tisland_map, AS_PROGRAM, 8, btime_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM AM_SHARE("rambase")
- AM_RANGE(0x0c00, 0x0c0f) AM_RAM_WRITE(btime_paletteram_w) AM_SHARE("palette")
+ AM_RANGE(0x0c00, 0x0c0f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram")
AM_RANGE(0x1400, 0x17ff) AM_RAM AM_SHARE("colorram")
AM_RANGE(0x1800, 0x1bff) AM_READWRITE(btime_mirrorvideoram_r, btime_mirrorvideoram_w)
@@ -304,7 +304,7 @@ static ADDRESS_MAP_START( bnj_map, AS_PROGRAM, 8, btime_state )
AM_RANGE(0x5200, 0x53ff) AM_RAM
AM_RANGE(0x5400, 0x5400) AM_WRITE(bnj_scroll1_w)
AM_RANGE(0x5800, 0x5800) AM_WRITE(bnj_scroll2_w)
- AM_RANGE(0x5c00, 0x5c0f) AM_RAM_WRITE(btime_paletteram_w) AM_SHARE("palette")
+ AM_RANGE(0x5c00, 0x5c0f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0xa000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -1310,7 +1310,7 @@ static MACHINE_CONFIG_START( btime, btime_state )
MCFG_PALETTE_ADD("palette", 16)
MCFG_PALETTE_INIT_OWNER(btime_state,btime)
- MCFG_PALETTE_FORMAT(BBGGGRRR)
+ MCFG_PALETTE_FORMAT(BBGGGRRR_inverted)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -2059,22 +2059,22 @@ DRIVER_INIT_MEMBER(btime_state,sdtennis)
}
-GAME( 1982, btime, 0, btime, btime, btime_state, btime, ROT270, "Data East Corporation", "Burger Time (Data East set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1982, btime2, btime, btime, btime, btime_state, btime, ROT270, "Data East Corporation", "Burger Time (Data East set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1982, btime3, btime, btime, btime, btime_state, btime, ROT270, "Data East USA Inc.", "Burger Time (Data East USA)", GAME_SUPPORTS_SAVE )
-GAME( 1982, btimem, btime, btime, btime, btime_state, btime, ROT270, "Data East (Bally Midway license)", "Burger Time (Midway)", GAME_SUPPORTS_SAVE )
-GAME( 1982, cookrace, btime, cookrace, cookrace, btime_state, cookrace, ROT270, "bootleg", "Cook Race", GAME_SUPPORTS_SAVE )
-GAME( 1981, tisland, 0, tisland, btime, btime_state, tisland, ROT270, "Data East Corporation", "Treasure Island", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1981, lnc, 0, lnc, lnc, btime_state, lnc, ROT270, "Data East Corporation", "Lock'n'Chase", GAME_SUPPORTS_SAVE )
-GAME( 1982, protennb, 0, disco, disco, btime_state, protennb, ROT270, "bootleg", "Tennis (bootleg of Pro Tennis)", GAME_SUPPORTS_SAVE )
-GAME( 1982, wtennis, 0, wtennis, wtennis, btime_state, wtennis, ROT270, "bootleg", "World Tennis", GAME_SUPPORTS_SAVE )
-GAME( 1982, mmonkey, 0, mmonkey, mmonkey, btime_state, lnc, ROT270, "Technos Japan / Roller Tron", "Minky Monkey", GAME_SUPPORTS_SAVE )
-GAME( 1982, brubber, 0, bnj, bnj, btime_state, bnj, ROT270, "Data East", "Burnin' Rubber", GAME_SUPPORTS_SAVE )
-GAME( 1982, bnj, brubber, bnj, bnj, btime_state, bnj, ROT270, "Data East USA", "Bump 'n' Jump", GAME_SUPPORTS_SAVE )
-GAME( 1982, bnjm, brubber, bnj, bnj, btime_state, bnj, ROT270, "Data East USA (Bally Midway license)", "Bump 'n' Jump (Midway)", GAME_SUPPORTS_SAVE )
-GAME( 1982, caractn, brubber, bnj, bnj, btime_state, bnj, ROT270, "bootleg", "Car Action (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1982, caractn2, brubber, bnj, caractn2, btime_state, bnj, ROT270, "bootleg", "Car Action (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1982, zoar, 0, zoar, zoar, btime_state, zoar, ROT270, "Data East USA", "Zoar", GAME_SUPPORTS_SAVE )
-GAME( 1982, disco, 0, disco, disco, btime_state, disco, ROT270, "Data East", "Disco No.1", GAME_SUPPORTS_SAVE )
-GAME( 1982, discof, disco, disco, disco, btime_state, disco, ROT270, "Data East", "Disco No.1 (Rev.F)", GAME_SUPPORTS_SAVE )
-GAME( 1983, sdtennis, 0, sdtennis, sdtennis, btime_state, sdtennis, ROT270, "Data East Corporation", "Super Doubles Tennis", GAME_SUPPORTS_SAVE )
+GAME( 1982, btime, 0, btime, btime, btime_state, btime, ROT270, "Data East Corporation", "Burger Time (Data East set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, btime2, btime, btime, btime, btime_state, btime, ROT270, "Data East Corporation", "Burger Time (Data East set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, btime3, btime, btime, btime, btime_state, btime, ROT270, "Data East USA Inc.", "Burger Time (Data East USA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, btimem, btime, btime, btime, btime_state, btime, ROT270, "Data East (Bally Midway license)", "Burger Time (Midway)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, cookrace, btime, cookrace, cookrace, btime_state, cookrace, ROT270, "bootleg", "Cook Race", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, tisland, 0, tisland, btime, btime_state, tisland, ROT270, "Data East Corporation", "Treasure Island", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, lnc, 0, lnc, lnc, btime_state, lnc, ROT270, "Data East Corporation", "Lock'n'Chase", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, protennb, 0, disco, disco, btime_state, protennb, ROT270, "bootleg", "Tennis (bootleg of Pro Tennis)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, wtennis, 0, wtennis, wtennis, btime_state, wtennis, ROT270, "bootleg", "World Tennis", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, mmonkey, 0, mmonkey, mmonkey, btime_state, lnc, ROT270, "Technos Japan / Roller Tron", "Minky Monkey", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, brubber, 0, bnj, bnj, btime_state, bnj, ROT270, "Data East", "Burnin' Rubber", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, bnj, brubber, bnj, bnj, btime_state, bnj, ROT270, "Data East USA", "Bump 'n' Jump", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, bnjm, brubber, bnj, bnj, btime_state, bnj, ROT270, "Data East USA (Bally Midway license)", "Bump 'n' Jump (Midway)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, caractn, brubber, bnj, bnj, btime_state, bnj, ROT270, "bootleg", "Car Action (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, caractn2, brubber, bnj, caractn2, btime_state, bnj, ROT270, "bootleg", "Car Action (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, zoar, 0, zoar, zoar, btime_state, zoar, ROT270, "Data East USA", "Zoar", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, disco, 0, disco, disco, btime_state, disco, ROT270, "Data East", "Disco No.1", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, discof, disco, disco, disco, btime_state, disco, ROT270, "Data East", "Disco No.1 (Rev.F)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, sdtennis, 0, sdtennis, sdtennis, btime_state, sdtennis, ROT270, "Data East Corporation", "Super Doubles Tennis", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/btoads.c b/src/mame/drivers/btoads.c
index 9a8ac17909f..880cd3ba532 100644
--- a/src/mame/drivers/btoads.c
+++ b/src/mame/drivers/btoads.c
@@ -367,4 +367,4 @@ ROM_END
*
*************************************/
-GAME( 1994, btoads, 0, btoads, btoads, driver_device, 0, ROT0, "Rare / Electronic Arts", "Battletoads", GAME_SUPPORTS_SAVE )
+GAME( 1994, btoads, 0, btoads, btoads, driver_device, 0, ROT0, "Rare / Electronic Arts", "Battletoads", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bublbobl.c b/src/mame/drivers/bublbobl.c
index 065ca46b23f..28c720a8ddc 100644
--- a/src/mame/drivers/bublbobl.c
+++ b/src/mame/drivers/bublbobl.c
@@ -1584,20 +1584,20 @@ DRIVER_INIT_MEMBER(bublbobl_state,dland)
*
*************************************/
-GAME( 1986, tokio, 0, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (newer)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1986, tokioo, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (older)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1986, tokiou, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito America Corporation (Romstar license)", "Tokio / Scramble Formation (US)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1986, tokiob, tokio, tokio, tokio, bublbobl_state, tokiob, ROT90, "bootleg", "Tokio / Scramble Formation (bootleg)", GAME_SUPPORTS_SAVE )
-
-GAME( 1986, bublbobl, 0, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, bublbobl1, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.0)", GAME_SUPPORTS_SAVE )
-GAME( 1986, bublboblr, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito America Corporation (Romstar license)", "Bubble Bobble (US, Ver 5.1)", GAME_SUPPORTS_SAVE ) // newest release, with mode select
-GAME( 1986, bublboblr1, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito America Corporation (Romstar license)", "Bubble Bobble (US, Ver 1.0)", GAME_SUPPORTS_SAVE )
-
-GAME( 1986, boblbobl, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Bobble Bobble (bootleg of Bubble Bobble)", GAME_SUPPORTS_SAVE )
-GAME( 1986, sboblbobl, bublbobl, boblbobl, sboblbobl, bublbobl_state, bublbobl, ROT0, "bootleg (Datsu)", "Super Bobble Bobble (bootleg, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, sboblbobla, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, sboblboblb, bublbobl, boblbobl, sboblboblb, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1986, bub68705, bublbobl, bub68705, bublbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Bubble Bobble (bootleg with 68705)", GAME_SUPPORTS_SAVE )
-
-GAME( 1987, dland, bublbobl, boblbobl, dland, bublbobl_state, dland, ROT0, "bootleg", "Dream Land / Super Dream Land (bootleg of Bubble Bobble)", GAME_SUPPORTS_SAVE )
+GAME( 1986, tokio, 0, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (newer)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, tokioo, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (older)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, tokiou, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito America Corporation (Romstar license)", "Tokio / Scramble Formation (US)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, tokiob, tokio, tokio, tokio, bublbobl_state, tokiob, ROT90, "bootleg", "Tokio / Scramble Formation (bootleg)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, bublbobl, 0, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, bublbobl1, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, bublboblr, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito America Corporation (Romstar license)", "Bubble Bobble (US, Ver 5.1)", MACHINE_SUPPORTS_SAVE ) // newest release, with mode select
+GAME( 1986, bublboblr1, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito America Corporation (Romstar license)", "Bubble Bobble (US, Ver 1.0)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1986, boblbobl, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Bobble Bobble (bootleg of Bubble Bobble)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblbobl, bublbobl, boblbobl, sboblbobl, bublbobl_state, bublbobl, ROT0, "bootleg (Datsu)", "Super Bobble Bobble (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblbobla, bublbobl, boblbobl, boblbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, sboblboblb, bublbobl, boblbobl, sboblboblb, bublbobl_state, bublbobl, ROT0, "bootleg", "Super Bobble Bobble (bootleg, set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, bub68705, bublbobl, bub68705, bublbobl, bublbobl_state, bublbobl, ROT0, "bootleg", "Bubble Bobble (bootleg with 68705)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1987, dland, bublbobl, boblbobl, dland, bublbobl_state, dland, ROT0, "bootleg", "Dream Land / Super Dream Land (bootleg of Bubble Bobble)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/buggychl.c b/src/mame/drivers/buggychl.c
index 4732e60410b..81e2232da8a 100644
--- a/src/mame/drivers/buggychl.c
+++ b/src/mame/drivers/buggychl.c
@@ -484,5 +484,5 @@ ROM_START( buggychlt )
ROM_END
-GAMEL( 1984, buggychl, 0, buggychl, buggychl, driver_device, 0, ROT270, "Taito Corporation", "Buggy Challenge", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE, layout_buggychl )
-GAMEL( 1984, buggychlt,buggychl, buggychl, buggychl, driver_device, 0, ROT270, "Taito Corporation (Tecfri license)", "Buggy Challenge (Tecfri)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS| GAME_SUPPORTS_SAVE, layout_buggychl )
+GAMEL( 1984, buggychl, 0, buggychl, buggychl, driver_device, 0, ROT270, "Taito Corporation", "Buggy Challenge", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_buggychl )
+GAMEL( 1984, buggychlt,buggychl, buggychl, buggychl, driver_device, 0, ROT270, "Taito Corporation (Tecfri license)", "Buggy Challenge (Tecfri)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS| MACHINE_SUPPORTS_SAVE, layout_buggychl )
diff --git a/src/mess/drivers/bullet.c b/src/mame/drivers/bullet.c
index 9b073983797..8cfdd256dc4 100644
--- a/src/mess/drivers/bullet.c
+++ b/src/mame/drivers/bullet.c
@@ -1293,5 +1293,5 @@ ROM_END
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
// the setname 'bullet' is used by Sega's Bullet in MAME.
-COMP( 1982, wmbullet, 0, 0, bullet, bullet, driver_device, 0, "Wave Mate", "Bullet", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
-COMP( 1984, wmbulletf, wmbullet, 0, bulletf, bulletf, driver_device, 0, "Wave Mate", "Bullet (Revision F)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
+COMP( 1982, wmbullet, 0, 0, bullet, bullet, driver_device, 0, "Wave Mate", "Bullet", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+COMP( 1984, wmbulletf, wmbullet, 0, bulletf, bulletf, driver_device, 0, "Wave Mate", "Bullet (Revision F)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
diff --git a/src/mess/drivers/busicom.c b/src/mame/drivers/busicom.c
index c0fb6ac2276..adcb77be331 100644
--- a/src/mess/drivers/busicom.c
+++ b/src/mame/drivers/busicom.c
@@ -246,4 +246,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1974, busicom, 0, 0, busicom, busicom, driver_device, 0, "Business Computer Corporation", "Busicom 141-PF", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1974, busicom, 0, 0, busicom, busicom, driver_device, 0, "Business Computer Corporation", "Busicom 141-PF", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/buster.c b/src/mame/drivers/buster.c
index 6910480856b..9c489904229 100644
--- a/src/mame/drivers/buster.c
+++ b/src/mame/drivers/buster.c
@@ -27,7 +27,6 @@ public:
required_shared_ptr<UINT8> m_vram;
DECLARE_READ8_MEMBER(test_r);
virtual void video_start();
- DECLARE_PALETTE_INIT(buster);
UINT32 screen_update_buster(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -314,14 +313,6 @@ static GFXDECODE_START( buster )
GFXDECODE_ENTRY( "gfx1", 0, tiles8x8_layout, 0, 1 )
GFXDECODE_END
-PALETTE_INIT_MEMBER(buster_state, buster)
-{
- int i;
-
- /* RGB format */
- for(i=0;i<8;i++)
- palette.set_pen_color(i, rgb_t(pal1bit(i >> 0),pal1bit(i >> 1),pal1bit(i >> 2)));
-}
static MACHINE_CONFIG_START( buster, buster_state )
/* basic machine hardware */
@@ -343,8 +334,8 @@ static MACHINE_CONFIG_START( buster, buster_state )
MCFG_MC6845_CHAR_WIDTH(8)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", buster)
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(buster_state, buster)
+
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -367,4 +358,4 @@ ROM_START( buster )
ROM_END
-GAME( 1982, buster, 0, buster, buster, driver_device, 0, ROT0, "Marian Electronics Ltd.", "Buster", GAME_NOT_WORKING|GAME_NO_SOUND )
+GAME( 1982, buster, 0, buster, buster, driver_device, 0, ROT0, "Marian Electronics Ltd.", "Buster", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/bw12.c b/src/mame/drivers/bw12.c
index 5ee86657c32..6d880bcd38e 100644
--- a/src/mess/drivers/bw12.c
+++ b/src/mame/drivers/bw12.c
@@ -666,5 +666,5 @@ ROM_END
/* System Drivers */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1984, bw12, 0, 0, bw12, bw12, driver_device, 0, "Bondwell Holding", "Bondwell 12", GAME_SUPPORTS_SAVE )
-COMP( 1984, bw14, bw12, 0, bw14, bw12, driver_device, 0, "Bondwell Holding", "Bondwell 14", GAME_SUPPORTS_SAVE )
+COMP( 1984, bw12, 0, 0, bw12, bw12, driver_device, 0, "Bondwell Holding", "Bondwell 12", MACHINE_SUPPORTS_SAVE )
+COMP( 1984, bw14, bw12, 0, bw14, bw12, driver_device, 0, "Bondwell Holding", "Bondwell 14", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/bw2.c b/src/mame/drivers/bw2.c
index dc7765e4e6c..546abec3575 100644
--- a/src/mess/drivers/bw2.c
+++ b/src/mame/drivers/bw2.c
@@ -675,4 +675,4 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1985, bw2, 0, 0, bw2, bw2, driver_device, 0, "Bondwell Holding", "Bondwell Model 2", GAME_NO_SOUND_HW )
+COMP( 1985, bw2, 0, 0, bw2, bw2, driver_device, 0, "Bondwell Holding", "Bondwell Model 2", MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/bwidow.c b/src/mame/drivers/bwidow.c
index 78d41b8793d..ae1b2056abe 100644
--- a/src/mame/drivers/bwidow.c
+++ b/src/mame/drivers/bwidow.c
@@ -1059,13 +1059,13 @@ ROM_END
*
*************************************/
-GAME( 1980, spacduel, 0, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (version 2)", GAME_SUPPORTS_SAVE )
-GAME( 1980, spacduel1,spacduel, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (version 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, spacduel0,spacduel, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (prototype)", GAME_SUPPORTS_SAVE )
-GAME( 1982, bwidow, 0, bwidow, bwidow, driver_device, 0, ROT0, "Atari", "Black Widow", GAME_SUPPORTS_SAVE )
-GAME( 1982, bwidowp, bwidow, bwidowp, bwidow, driver_device, 0, ROT0, "Atari", "Black Widow (prototype)", GAME_NOT_WORKING )
-GAME( 1982, gravitar, 0, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 3)", GAME_SUPPORTS_SAVE )
-GAME( 1982, gravitar2,gravitar, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 2)", GAME_SUPPORTS_SAVE )
-GAME( 1982, gravitar1,gravitar, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 1)", GAME_SUPPORTS_SAVE )
-GAME( 1982, lunarbat, gravitar, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Lunar Battle (prototype, later)", GAME_SUPPORTS_SAVE )
-GAME( 1982, lunarba1, gravitar, lunarbat, lunarbat, driver_device, 0, ROT0, "Atari", "Lunar Battle (prototype, earlier)", GAME_SUPPORTS_SAVE )
+GAME( 1980, spacduel, 0, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (version 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, spacduel1,spacduel, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (version 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, spacduel0,spacduel, spacduel, spacduel, driver_device, 0, ROT0, "Atari", "Space Duel (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, bwidow, 0, bwidow, bwidow, driver_device, 0, ROT0, "Atari", "Black Widow", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, bwidowp, bwidow, bwidowp, bwidow, driver_device, 0, ROT0, "Atari", "Black Widow (prototype)", MACHINE_NOT_WORKING )
+GAME( 1982, gravitar, 0, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, gravitar2,gravitar, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, gravitar1,gravitar, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Gravitar (version 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, lunarbat, gravitar, gravitar, gravitar, driver_device, 0, ROT0, "Atari", "Lunar Battle (prototype, later)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, lunarba1, gravitar, lunarbat, lunarbat, driver_device, 0, ROT0, "Atari", "Lunar Battle (prototype, earlier)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/bwing.c b/src/mame/drivers/bwing.c
index 311b287e3eb..25eb0134238 100644
--- a/src/mame/drivers/bwing.c
+++ b/src/mame/drivers/bwing.c
@@ -561,9 +561,9 @@ DRIVER_INIT_MEMBER(bwing_state,bwing)
//****************************************************************************
// Game Entries
-GAME( 1984, bwings, 0, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Japan new Ver.)", GAME_SUPPORTS_SAVE )
-GAME( 1984, bwingso, bwings, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Japan old Ver.)", GAME_SUPPORTS_SAVE )
-GAME( 1984, bwingsa, bwings, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Alt Ver.?)", GAME_SUPPORTS_SAVE )
+GAME( 1984, bwings, 0, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Japan new Ver.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, bwingso, bwings, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Japan old Ver.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, bwingsa, bwings, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "B-Wings (Alt Ver.?)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, zaviga, 0, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "Zaviga", GAME_SUPPORTS_SAVE )
-GAME( 1984, zavigaj, zaviga, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "Zaviga (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1984, zaviga, 0, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "Zaviga", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, zavigaj, zaviga, bwing, bwing, bwing_state, bwing, ROT90, "Data East Corporation", "Zaviga (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/by17.c b/src/mame/drivers/by17.c
index 215ff26226f..3a837969bf4 100644
--- a/src/mame/drivers/by17.c
+++ b/src/mame/drivers/by17.c
@@ -642,13 +642,13 @@ ROM_END
/---------------------------------------------------------------*/
-GAME( 1976, bowarrow, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Bow & Arrow (Prototype)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1977, freedom, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Freedom", GAME_MECHANICAL)
-GAME( 1977, nightrdr, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Night Rider (rev. 21)", GAME_MECHANICAL)
-GAME( 1977, nightr20, nightrdr, by17, by17, driver_device, 0, ROT0, "Bally", "Night Rider (rev. 20)", GAME_MECHANICAL)
-GAME( 1978, blackjck, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Black Jack (Pinball)", GAME_MECHANICAL)
-GAME( 1977, evelknie, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Evel Knievel", GAME_MECHANICAL)
-GAME( 1978, matahari, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Mata Hari", GAME_MECHANICAL)
-GAME( 1977, eightbll, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Eight Ball", GAME_MECHANICAL)
-GAME( 1978, pwerplay, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Power Play (Pinball)", GAME_MECHANICAL)
-GAME( 1978, stk_sprs, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Strikes and Spares", GAME_MECHANICAL)
+GAME( 1976, bowarrow, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Bow & Arrow (Prototype)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1977, freedom, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Freedom", MACHINE_MECHANICAL)
+GAME( 1977, nightrdr, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Night Rider (rev. 21)", MACHINE_MECHANICAL)
+GAME( 1977, nightr20, nightrdr, by17, by17, driver_device, 0, ROT0, "Bally", "Night Rider (rev. 20)", MACHINE_MECHANICAL)
+GAME( 1978, blackjck, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Black Jack (Pinball)", MACHINE_MECHANICAL)
+GAME( 1977, evelknie, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Evel Knievel", MACHINE_MECHANICAL)
+GAME( 1978, matahari, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Mata Hari", MACHINE_MECHANICAL)
+GAME( 1977, eightbll, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Eight Ball", MACHINE_MECHANICAL)
+GAME( 1978, pwerplay, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Power Play (Pinball)", MACHINE_MECHANICAL)
+GAME( 1978, stk_sprs, 0, by17, by17, driver_device, 0, ROT0, "Bally", "Strikes and Spares", MACHINE_MECHANICAL)
diff --git a/src/mame/drivers/by35.c b/src/mame/drivers/by35.c
index 4a8b18a67c6..5d46049225b 100644
--- a/src/mame/drivers/by35.c
+++ b/src/mame/drivers/by35.c
@@ -1845,82 +1845,82 @@ ROM_START(suprbowl)
ROM_END
// AS-2888 sound
-GAME( 1979, sst, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Supersonic", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1978, playboy, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Playboy", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1978, lostwrlp, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Lost World", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1978, smman, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Six Million Dollar Man", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1978, voltan, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Voltan Escapes Cosmic Doom", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1979, startrep, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Star Trek (Pinball)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1979, kiss, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Kiss", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1979, hglbtrtr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Harlem Globetrotters On Tour", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1979, dollyptn, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Dolly Parton", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1979, paragon, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Paragon", GAME_IS_SKELETON_MECHANICAL)
+GAME( 1979, sst, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Supersonic", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1978, playboy, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Playboy", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1978, lostwrlp, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Lost World", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1978, smman, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Six Million Dollar Man", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1978, voltan, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Voltan Escapes Cosmic Doom", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1979, startrep, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Star Trek (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1979, kiss, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Kiss", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1979, hglbtrtr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Harlem Globetrotters On Tour", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1979, dollyptn, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Dolly Parton", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1979, paragon, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Paragon", MACHINE_IS_SKELETON_MECHANICAL)
// AS-3022 sound
-GAME( 1980, ngndshkr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Nitro Ground Shaker", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1980, slbmania, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Silverball Mania", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1979, futurspa, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Future Spa", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1980, spaceinv, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Space Invaders", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1980, rollston, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Rolling Stones", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1980, mystic, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Mystic", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1980, xenon, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Xenon", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1980, xenonf, xenon, by35, by35, by35_state, by35_6, ROT0, "Bally", "Xenon (French)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1980, viking, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Viking", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1980, hotdoggn, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Hotdoggin'", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1980, skatebll, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Skateball", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1980, frontier, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Frontier", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1982, speakesy, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Speakeasy", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1982, speakesy4p, speakesy, by35, by35, by35_state, by35_7, ROT0, "Bally", "Speakeasy 4 Player", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1983, bmx, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "BMX", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1983, granslam, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Grand Slam", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1983, granslam4, granslam, by35, by35, by35_state, by35_7, ROT0, "Bally", "Grand Slam (4 Players)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1983, goldball, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Gold Ball (set 1)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1983, goldballn, goldball, by35, by35, by35_state, by35_7, ROT0, "Bally / Oliver", "Gold Ball (set 2)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 1980, ngndshkr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Nitro Ground Shaker", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1980, slbmania, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Silverball Mania", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1979, futurspa, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Future Spa", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1980, spaceinv, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Space Invaders", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1980, rollston, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Rolling Stones", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1980, mystic, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Mystic", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1980, xenon, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Xenon", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1980, xenonf, xenon, by35, by35, by35_state, by35_6, ROT0, "Bally", "Xenon (French)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1980, viking, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Viking", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1980, hotdoggn, 0, by35, by35, by35_state, by35_6, ROT0, "Bally", "Hotdoggin'", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1980, skatebll, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Skateball", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1980, frontier, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Frontier", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1982, speakesy, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Speakeasy", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1982, speakesy4p, speakesy, by35, by35, by35_state, by35_7, ROT0, "Bally", "Speakeasy 4 Player", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1983, bmx, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "BMX", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1983, granslam, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Grand Slam", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1983, granslam4, granslam, by35, by35, by35_state, by35_7, ROT0, "Bally", "Grand Slam (4 Players)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1983, goldball, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Gold Ball (set 1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1983, goldballn, goldball, by35, by35, by35_state, by35_7, ROT0, "Bally / Oliver", "Gold Ball (set 2)", MACHINE_IS_SKELETON_MECHANICAL)
// Squawk & Talk sound
-GAME( 1981, flashgdn, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1981, flashgdnf, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon (French)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1981, flashgdnv, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon (Vocalizer sound)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1981, fball_ii, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fireball II", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1981, eballdlx, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Eight Ball Deluxe (rev. 15)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1981, eballd14, eballdlx, by35, by35, by35_state, by35_7, ROT0, "Bally", "Eight Ball Deluxe (rev. 14)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1981, embryon, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Embryon", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1981, fathom, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fathom", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1981, centaur, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Centaur", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1981, medusa, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Medusa", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1982, vector, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Vector", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1981, elektra, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Elektra", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1982, spectrm, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spectrum", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1982, spectrm4, spectrm, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spectrum (ver 4)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1982, rapidfip, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Rapid Fire", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1982, m_mpac, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Mr. and Mrs. PacMan", GAME_IS_SKELETON_MECHANICAL)
+GAME( 1981, flashgdn, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1981, flashgdnf, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon (French)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1981, flashgdnv, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bally", "Flash Gordon (Vocalizer sound)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1981, fball_ii, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fireball II", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1981, eballdlx, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Eight Ball Deluxe (rev. 15)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1981, eballd14, eballdlx, by35, by35, by35_state, by35_7, ROT0, "Bally", "Eight Ball Deluxe (rev. 14)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1981, embryon, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Embryon", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1981, fathom, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fathom", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1981, centaur, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Centaur", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1981, medusa, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Medusa", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1982, vector, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Vector", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1981, elektra, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Elektra", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1982, spectrm, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spectrum", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1982, spectrm4, spectrm, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spectrum (ver 4)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1982, rapidfip, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Rapid Fire", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1982, m_mpac, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Mr. and Mrs. PacMan", MACHINE_IS_SKELETON_MECHANICAL)
// Cheap Squeak sound
-GAME( 1984, kosteel, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Kings of Steel", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1983, xsandos, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "X's & O's", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1984, spyhuntr, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spy Hunter (Pinball)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1984, fbclass, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fireball Classic", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1984, blakpyra, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Black Pyramid", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1985, cybrnaut, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Cybernaut", GAME_IS_SKELETON_MECHANICAL)
+GAME( 1984, kosteel, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Kings of Steel", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1983, xsandos, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "X's & O's", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1984, spyhuntr, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Spy Hunter (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1984, fbclass, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Fireball Classic", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1984, blakpyra, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Black Pyramid", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1985, cybrnaut, 0, by35, by35, by35_state, by35_7, ROT0, "Bally", "Cybernaut", MACHINE_IS_SKELETON_MECHANICAL)
// Other manufacturers
-GAME( 1984, suprbowl, xsandos, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Super Bowl", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1984, tigerrag, kosteel, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Tiger Rag", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1985, cosflash, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Cosmic Flash", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1985, newwave, blakpyra, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "New Wave", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1985, saturn2, spyhuntr, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Saturn 2", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1985, worlddef, 0, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "World Defender", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, spacehaw, cybrnaut, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Space Hawks", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, darkshad, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Dark Shadow", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, skflight, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Skill Flight", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, cobrap, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Cobra", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, futrquen, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Future Queen", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, f1gpp, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "F1 Grand Prix", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1988, toppin, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Top Pin", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1988, uboat65, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "U-boat 65", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, bullseye, 0, by35, by35, by35_state, by35_7, ROT0, "Grand Products", "301/Bullseye", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1988, bbbowlin, 0, by35, by35, by35_state, by35_7, ROT0, "United", "Big Ball Bowling (Bowler)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1988, monrobwl, 0, by35, by35, by35_state, by35_7, ROT0, "Monroe Bowling Co.", "Stars & Strikes (Bowler)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1984, mdntmrdr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally Midway", "Midnight Marauders (Gun game)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1988, blbeauty, 0, by35, by35, by35_state, by35_7, ROT0, "Stern", "Black Beauty (Shuffle)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1984, myststar, 0, by35, by35, by35_state, by35_6, ROT0, "Zaccaria", "Mystic Star", GAME_IS_SKELETON_MECHANICAL)
+GAME( 1984, suprbowl, xsandos, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Super Bowl", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1984, tigerrag, kosteel, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Tiger Rag", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1985, cosflash, flashgdn, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Cosmic Flash", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1985, newwave, blakpyra, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "New Wave", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1985, saturn2, spyhuntr, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "Saturn 2", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1985, worlddef, 0, by35, by35, by35_state, by35_7, ROT0, "Bell Games", "World Defender", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, spacehaw, cybrnaut, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Space Hawks", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, darkshad, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Dark Shadow", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, skflight, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Skill Flight", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, cobrap, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Cobra", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, futrquen, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Future Queen", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, f1gpp, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "F1 Grand Prix", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1988, toppin, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "Top Pin", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1988, uboat65, 0, by35, by35, by35_state, by35_7, ROT0, "Nuova Bell Games", "U-boat 65", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, bullseye, 0, by35, by35, by35_state, by35_7, ROT0, "Grand Products", "301/Bullseye", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1988, bbbowlin, 0, by35, by35, by35_state, by35_7, ROT0, "United", "Big Ball Bowling (Bowler)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1988, monrobwl, 0, by35, by35, by35_state, by35_7, ROT0, "Monroe Bowling Co.", "Stars & Strikes (Bowler)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1984, mdntmrdr, 0, by35, by35, by35_state, by35_6, ROT0, "Bally Midway", "Midnight Marauders (Gun game)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1988, blbeauty, 0, by35, by35, by35_state, by35_7, ROT0, "Stern", "Black Beauty (Shuffle)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1984, myststar, 0, by35, by35, by35_state, by35_6, ROT0, "Zaccaria", "Mystic Star", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/by6803.c b/src/mame/drivers/by6803.c
index 64e0f68ec1b..d4f470373a2 100644
--- a/src/mame/drivers/by6803.c
+++ b/src/mame/drivers/by6803.c
@@ -705,26 +705,26 @@ ROM_START(trucksp2)
ROM_END
-GAME( 1985, eballchp, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Eight Ball Champ", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1985, beatclck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Beat the Clock", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, motrdome, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","MotorDome", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, ladyluck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Lady Luck", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, strngsci, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Strange Science", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, strngscg, strngsci, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Strange Science (German)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, specforc, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Special Force", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, blackblt, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Black Belt", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1986, blackblt2, blackblt, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Black Belt (Squawk and Talk)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, cityslck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","City Slicker", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, hardbody, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Hardbody", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, hardbodyg, hardbody, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Hardbody (German)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, prtyanim, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Party Animal", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, prtyanimg, prtyanim, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Party Animal (German)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, hvymetap, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Heavy Metal Meltdown", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, esclwrld, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Escape from the Lost World", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, esclwrldg, esclwrld, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Escape from the Lost World (German)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1987, dungdrag, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Dungeons & Dragons", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1988, black100, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Blackwater 100", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1988, black100s, black100, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Blackwater 100 (Single Ball Play)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1988, trucksp3, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Truck Stop (P-3)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1988, trucksp2, trucksp3, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Truck Stop (P-2)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 1989, atlantip, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Atlantis", GAME_IS_SKELETON_MECHANICAL)
+GAME( 1985, eballchp, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Eight Ball Champ", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1985, beatclck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Beat the Clock", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, motrdome, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","MotorDome", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, ladyluck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Lady Luck", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, strngsci, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Strange Science", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, strngscg, strngsci, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Strange Science (German)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, specforc, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Special Force", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, blackblt, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Black Belt", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1986, blackblt2, blackblt, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Black Belt (Squawk and Talk)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, cityslck, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","City Slicker", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, hardbody, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Hardbody", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, hardbodyg, hardbody, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Hardbody (German)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, prtyanim, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Party Animal", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, prtyanimg, prtyanim, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Party Animal (German)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, hvymetap, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Heavy Metal Meltdown", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, esclwrld, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Escape from the Lost World", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, esclwrldg, esclwrld, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Escape from the Lost World (German)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1987, dungdrag, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Dungeons & Dragons", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1988, black100, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Blackwater 100", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1988, black100s, black100, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Blackwater 100 (Single Ball Play)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1988, trucksp3, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Truck Stop (P-3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1988, trucksp2, trucksp3, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Truck Stop (P-2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 1989, atlantip, 0, by6803, by6803, by6803_state, by6803, ROT0, "Bally","Atlantis", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/by68701.c b/src/mame/drivers/by68701.c
index e85fe86a0e0..8cba96ec7bb 100644
--- a/src/mame/drivers/by68701.c
+++ b/src/mame/drivers/by68701.c
@@ -130,9 +130,9 @@ ROM_START(eballdlxp4)
ROM_END
-GAME(1981, flashgdnp1, flashgdn, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Flash Gordon (prototype rev. 1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1981, flashgdnp2, flashgdn, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Flash Gordon (prototype rev. 2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1981, eballdlxp1, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1981, eballdlxp2, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1981, eballdlxp3, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 3)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1981, eballdlxp4, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 4)", GAME_IS_SKELETON_MECHANICAL)
+GAME(1981, flashgdnp1, flashgdn, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Flash Gordon (prototype rev. 1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1981, flashgdnp2, flashgdn, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Flash Gordon (prototype rev. 2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1981, eballdlxp1, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1981, eballdlxp2, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1981, eballdlxp3, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1981, eballdlxp4, eballdlx, by68701, by68701, by68701_state, by68701, ROT0, "Bally", "Eight Ball Deluxe (prototype rev. 4)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/byvid.c b/src/mame/drivers/byvid.c
index a90ab3ceea4..966a7dad1ed 100644
--- a/src/mame/drivers/byvid.c
+++ b/src/mame/drivers/byvid.c
@@ -873,6 +873,6 @@ ROM_START(granny)
ROM_END
-GAME( 1982, babypac, 0, babypac, babypac, driver_device, 0, ROT90, "Dave Nutting Associates / Bally", "Baby Pac-Man (set 1)", GAME_MECHANICAL | GAME_NO_SOUND )
-GAME( 1982, babypac2, babypac, babypac, babypac, driver_device, 0, ROT90, "Dave Nutting Associates / Bally", "Baby Pac-Man (set 2)", GAME_MECHANICAL | GAME_NO_SOUND )
-GAME( 1984, granny, 0, granny, granny, driver_device, 0, ROT0, "Bally", "Granny and the Gators", GAME_MECHANICAL | GAME_NO_SOUND )
+GAME( 1982, babypac, 0, babypac, babypac, driver_device, 0, ROT90, "Dave Nutting Associates / Bally", "Baby Pac-Man (set 1)", MACHINE_MECHANICAL | MACHINE_NO_SOUND )
+GAME( 1982, babypac2, babypac, babypac, babypac, driver_device, 0, ROT90, "Dave Nutting Associates / Bally", "Baby Pac-Man (set 2)", MACHINE_MECHANICAL | MACHINE_NO_SOUND )
+GAME( 1984, granny, 0, granny, granny, driver_device, 0, ROT0, "Bally", "Granny and the Gators", MACHINE_MECHANICAL | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/bzone.c b/src/mame/drivers/bzone.c
index c9a09506ef4..03601f5cb6e 100644
--- a/src/mame/drivers/bzone.c
+++ b/src/mame/drivers/bzone.c
@@ -875,9 +875,9 @@ DRIVER_INIT_MEMBER(bzone_state,bradley)
*
*************************************/
-GAMEL(1980, bzone, 0, bzone, bzone, driver_device, 0, ROT0, "Atari", "Battle Zone (rev 2)", GAME_SUPPORTS_SAVE, layout_bzone )
-GAMEL(1980, bzonea, bzone, bzone, bzone, driver_device, 0, ROT0, "Atari", "Battle Zone (rev 1)", GAME_SUPPORTS_SAVE, layout_bzone )
-GAMEL(1980, bzonec, bzone, bzone, bzone, driver_device, 0, ROT0, "Atari", "Battle Zone (cocktail)", GAME_SUPPORTS_SAVE|GAME_NO_COCKTAIL, layout_bzone )
-GAME( 1980, bradley, 0, bzone, bradley, bzone_state, bradley, ROT0, "Atari", "Bradley Trainer", GAME_SUPPORTS_SAVE )
-GAMEL(1980, redbaron, 0, redbaron, redbaron, driver_device, 0, ROT0, "Atari", "Red Baron (Revised Hardware)", GAME_SUPPORTS_SAVE, layout_redbaron )
-GAMEL(1980, redbarona, redbaron, redbaron, redbaron, driver_device, 0, ROT0, "Atari", "Red Baron", GAME_SUPPORTS_SAVE, layout_redbaron )
+GAMEL(1980, bzone, 0, bzone, bzone, driver_device, 0, ROT0, "Atari", "Battle Zone (rev 2)", MACHINE_SUPPORTS_SAVE, layout_bzone )
+GAMEL(1980, bzonea, bzone, bzone, bzone, driver_device, 0, ROT0, "Atari", "Battle Zone (rev 1)", MACHINE_SUPPORTS_SAVE, layout_bzone )
+GAMEL(1980, bzonec, bzone, bzone, bzone, driver_device, 0, ROT0, "Atari", "Battle Zone (cocktail)", MACHINE_SUPPORTS_SAVE|MACHINE_NO_COCKTAIL, layout_bzone )
+GAME( 1980, bradley, 0, bzone, bradley, bzone_state, bradley, ROT0, "Atari", "Bradley Trainer", MACHINE_SUPPORTS_SAVE )
+GAMEL(1980, redbaron, 0, redbaron, redbaron, driver_device, 0, ROT0, "Atari", "Red Baron (Revised Hardware)", MACHINE_SUPPORTS_SAVE, layout_redbaron )
+GAMEL(1980, redbarona, redbaron, redbaron, redbaron, driver_device, 0, ROT0, "Atari", "Red Baron", MACHINE_SUPPORTS_SAVE, layout_redbaron )
diff --git a/src/mess/drivers/c10.c b/src/mame/drivers/c10.c
index fcb6cc1b58d..e1b0bc221a4 100644
--- a/src/mess/drivers/c10.c
+++ b/src/mame/drivers/c10.c
@@ -188,4 +188,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, c10, 0, 0, c10, c10, c10_state, c10, "Cromemco", "C-10", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1982, c10, 0, 0, c10, c10, c10_state, c10, "Cromemco", "C-10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/c128.c b/src/mame/drivers/c128.c
index 11430a2b1cb..abe3f7bde8b 100644
--- a/src/mess/drivers/c128.c
+++ b/src/mame/drivers/c128.c
@@ -963,11 +963,11 @@ READ8_MEMBER( c128_state::cia1_pa_r )
bit description
- PA0 COL0, JOY B0
- PA1 COL1, JOY B1
- PA2 COL2, JOY B2
- PA3 COL3, JOY B3
- PA4 COL4, BTNB
+ PA0 COL0, JOYB0
+ PA1 COL1, JOYB1
+ PA2 COL2, JOYB2
+ PA3 COL3, JOYB3
+ PA4 COL4, FBTNB
PA5 COL5
PA6 COL6
PA7 COL7
@@ -1005,20 +1005,40 @@ READ8_MEMBER( c128_state::cia1_pa_r )
return data;
}
+WRITE8_MEMBER( c128_state::cia1_pa_w )
+{
+ /*
+
+ bit description
+
+ PA0 COL0, JOYB0
+ PA1 COL1, JOYB1
+ PA2 COL2, JOYB2
+ PA3 COL3, JOYB3
+ PA4 COL4, FBTNB
+ PA5 COL5
+ PA6 COL6
+ PA7 COL7
+
+ */
+
+ m_joy2->joy_w(data & 0x1f);
+}
+
READ8_MEMBER( c128_state::cia1_pb_r )
{
/*
bit description
- PB0 JOY A0
- PB1 JOY A1
- PB2 JOY A2
- PB3 JOY A3
- PB4 BTNA/_LP
- PB5
- PB6
- PB7
+ PB0 ROW0, JOYA0
+ PB1 ROW1, JOYA1
+ PB2 ROW2, JOYA2
+ PB3 ROW3, JOYA3
+ PB4 ROW4, FBTNA, _LP
+ PB5 ROW5
+ PB6 ROW6
+ PB7 ROW7
*/
@@ -1055,17 +1075,19 @@ WRITE8_MEMBER( c128_state::cia1_pb_w )
bit description
- PB0 ROW0
- PB1 ROW1
- PB2 ROW2
- PB3 ROW3
- PB4 ROW4
+ PB0 ROW0, JOYA0
+ PB1 ROW1, JOYA1
+ PB2 ROW2, JOYA2
+ PB3 ROW3, JOYA3
+ PB4 ROW4, FBTNA, _LP
PB5 ROW5
PB6 ROW6
PB7 ROW7
*/
+ m_joy1->joy_w(data & 0x1f);
+
m_vic->lp_w(BIT(data, 4));
}
@@ -1487,6 +1509,7 @@ static MACHINE_CONFIG_START( ntsc, c128_state )
MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c128_state, cia1_cnt_w))
MCFG_MOS6526_SP_CALLBACK(WRITELINE(c128_state, cia1_sp_w))
MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(c128_state, cia1_pa_r))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(c128_state, cia1_pa_w))
MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c128_state, cia1_pb_r))
MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c128_state, cia1_pb_w))
MCFG_DEVICE_ADD(MOS6526_2_TAG, MOS6526, XTAL_14_31818MHz*2/3.5/8)
@@ -1659,6 +1682,7 @@ static MACHINE_CONFIG_START( pal, c128_state )
MCFG_MOS6526_CNT_CALLBACK(WRITELINE(c128_state, cia1_cnt_w))
MCFG_MOS6526_SP_CALLBACK(WRITELINE(c128_state, cia1_sp_w))
MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(c128_state, cia1_pa_r))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(c128_state, cia1_pa_w))
MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c128_state, cia1_pb_r))
MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c128_state, cia1_pb_w))
MCFG_DEVICE_ADD(MOS6526_2_TAG, MOS6526, XTAL_17_734472MHz*2/4.5/8)
@@ -1933,21 +1957,21 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1985, c128, 0, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128 (NTSC)", GAME_SUPPORTS_SAVE )
-COMP( 1985, c128p, 0, 0, c128pal, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128 (PAL)", GAME_SUPPORTS_SAVE )
-COMP( 1985, c128_de, c128, 0, c128pal, c128_de, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Germany)", GAME_SUPPORTS_SAVE )
-//COMP( 1985, c128_fr, c128, 0, c128pal, c128_fr, driver_device, 0, "Commodore Business Machines", "Commodore 128 (France)", GAME_SUPPORTS_SAVE )
-//COMP( 1985, c128_no, c128, 0, c128pal, c128_it, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Norway)", GAME_SUPPORTS_SAVE )
-COMP( 1985, c128_se, c128, 0, c128pal, c128_se, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Sweden/Finland)", GAME_SUPPORTS_SAVE )
-COMP( 1986, c128d, c128, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D (NTSC, prototype)", GAME_SUPPORTS_SAVE )
-COMP( 1986, c128dp, c128, 0, c128pal, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D (PAL)", GAME_SUPPORTS_SAVE )
-
-COMP( 1986, c128cr, c128, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128CR (NTSC, prototype)", GAME_SUPPORTS_SAVE )
-
-COMP( 1987, c128dcr, c128, 0, c128dcr, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (NTSC)", GAME_SUPPORTS_SAVE )
-COMP( 1987, c128dcrp, c128, 0, c128dcrp, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (PAL)", GAME_SUPPORTS_SAVE )
-COMP( 1987, c128dcr_de, c128, 0, c128dcrp, c128_de, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (Germany)", GAME_SUPPORTS_SAVE )
-//COMP( 1986, c128dcr_it, c128, 0, c128dcrp, c128_it, driver_device, 0,"Commodore Business Machines", "Commodore 128DCR (Italy)", GAME_SUPPORTS_SAVE )
-COMP( 1987, c128dcr_se, c128, 0, c128dcrp, c128_se, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (Sweden/Finland)", GAME_SUPPORTS_SAVE )
-
-COMP( 1986, c128d81, c128, 0, c128d81, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D/81 (NTSC, prototype)", GAME_SUPPORTS_SAVE )
+COMP( 1985, c128, 0, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128 (NTSC)", MACHINE_SUPPORTS_SAVE )
+COMP( 1985, c128p, 0, 0, c128pal, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128 (PAL)", MACHINE_SUPPORTS_SAVE )
+COMP( 1985, c128_de, c128, 0, c128pal, c128_de, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Germany)", MACHINE_SUPPORTS_SAVE )
+//COMP( 1985, c128_fr, c128, 0, c128pal, c128_fr, driver_device, 0, "Commodore Business Machines", "Commodore 128 (France)", MACHINE_SUPPORTS_SAVE )
+//COMP( 1985, c128_no, c128, 0, c128pal, c128_it, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Norway)", MACHINE_SUPPORTS_SAVE )
+COMP( 1985, c128_se, c128, 0, c128pal, c128_se, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, c128d, c128, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D (NTSC, prototype)", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, c128dp, c128, 0, c128pal, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D (PAL)", MACHINE_SUPPORTS_SAVE )
+
+COMP( 1986, c128cr, c128, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128CR (NTSC, prototype)", MACHINE_SUPPORTS_SAVE )
+
+COMP( 1987, c128dcr, c128, 0, c128dcr, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (NTSC)", MACHINE_SUPPORTS_SAVE )
+COMP( 1987, c128dcrp, c128, 0, c128dcrp, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (PAL)", MACHINE_SUPPORTS_SAVE )
+COMP( 1987, c128dcr_de, c128, 0, c128dcrp, c128_de, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (Germany)", MACHINE_SUPPORTS_SAVE )
+//COMP( 1986, c128dcr_it, c128, 0, c128dcrp, c128_it, driver_device, 0,"Commodore Business Machines", "Commodore 128DCR (Italy)", MACHINE_SUPPORTS_SAVE )
+COMP( 1987, c128dcr_se, c128, 0, c128dcrp, c128_se, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (Sweden/Finland)", MACHINE_SUPPORTS_SAVE )
+
+COMP( 1986, c128d81, c128, 0, c128d81, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D/81 (NTSC, prototype)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/c64.c b/src/mame/drivers/c64.c
index ba92d4805fd..56aaf5966da 100644
--- a/src/mess/drivers/c64.c
+++ b/src/mame/drivers/c64.c
@@ -625,20 +625,40 @@ READ8_MEMBER( c64_state::cia1_pa_r )
return data;
}
+WRITE8_MEMBER( c64_state::cia1_pa_w )
+{
+ /*
+
+ bit description
+
+ PA0 COL0, JOY B0
+ PA1 COL1, JOY B1
+ PA2 COL2, JOY B2
+ PA3 COL3, JOY B3
+ PA4 COL4, BTNB
+ PA5 COL5
+ PA6 COL6
+ PA7 COL7
+
+ */
+
+ m_joy2->joy_w(data & 0x1f);
+}
+
READ8_MEMBER( c64_state::cia1_pb_r )
{
/*
bit description
- PB0 JOY A0
- PB1 JOY A1
- PB2 JOY A2
- PB3 JOY A3
- PB4 BTNA/_LP
- PB5
- PB6
- PB7
+ PB0 ROW0, JOY A0
+ PB1 ROW1, JOY A1
+ PB2 ROW2, JOY A2
+ PB3 ROW3, JOY A3
+ PB4 ROW4, BTNA, _LP
+ PB5 ROW5
+ PB6 ROW6
+ PB7 ROW7
*/
@@ -671,17 +691,19 @@ WRITE8_MEMBER( c64_state::cia1_pb_w )
bit description
- PB0 ROW0
- PB1 ROW1
- PB2 ROW2
- PB3 ROW3
- PB4 ROW4
+ PB0 ROW0, JOY A0
+ PB1 ROW1, JOY A1
+ PB2 ROW2, JOY A2
+ PB3 ROW3, JOY A3
+ PB4 ROW4, BTNA, _LP
PB5 ROW5
PB6 ROW6
PB7 ROW7
*/
+ m_joy1->joy_w(data & 0x1f);
+
m_vic->lp_w(BIT(data, 4));
}
@@ -1289,6 +1311,7 @@ static MACHINE_CONFIG_START( pal, c64_state )
MCFG_MOS6526_CNT_CALLBACK(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_4))
MCFG_MOS6526_SP_CALLBACK(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_5))
MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(c64_state, cia1_pa_r))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(c64_state, cia1_pa_w))
MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c64_state, cia1_pb_r))
MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c64_state, cia1_pb_w))
MCFG_DEVICE_ADD(MOS6526_2_TAG, MOS6526, XTAL_17_734472MHz/18)
@@ -1423,6 +1446,7 @@ static MACHINE_CONFIG_START( pal_gs, c64gs_state )
MCFG_MOS6526_CNT_CALLBACK(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_4))
MCFG_MOS6526_SP_CALLBACK(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_5))
MCFG_MOS6526_PA_INPUT_CALLBACK(READ8(c64gs_state, cia1_pa_r))
+ MCFG_MOS6526_PA_OUTPUT_CALLBACK(WRITE8(c64_state, cia1_pa_w))
MCFG_MOS6526_PB_INPUT_CALLBACK(READ8(c64gs_state, cia1_pb_r))
MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c64_state, cia1_pb_w))
MCFG_DEVICE_ADD(MOS6526_2_TAG, MOS6526, XTAL_17_734472MHz/18)
@@ -1804,20 +1828,20 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1982, c64, 0, 0, ntsc, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (NTSC)", GAME_SUPPORTS_SAVE )
-COMP( 1982, c64_jp, c64, 0, ntsc, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (Japan)", GAME_SUPPORTS_SAVE )
-COMP( 1982, c64p, c64, 0, pal, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (PAL)", GAME_SUPPORTS_SAVE )
-COMP( 1982, c64_se, c64, 0, pal, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64 / VIC-64S (Sweden/Finland)", GAME_SUPPORTS_SAVE )
-COMP( 1983, pet64, c64, 0, pet64, c64, driver_device, 0, "Commodore Business Machines", "PET 64 / CBM 4064 (NTSC)", GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS )
-COMP( 1983, edu64, c64, 0, pet64, c64, driver_device, 0, "Commodore Business Machines", "Educator 64 (NTSC)", GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS )
-COMP( 1984, sx64, c64, 0, ntsc_sx, c64, driver_device, 0, "Commodore Business Machines", "SX-64 / Executive 64 (NTSC)", GAME_SUPPORTS_SAVE )
-COMP( 1984, sx64p, c64, 0, pal_sx, c64, driver_device, 0, "Commodore Business Machines", "SX-64 / Executive 64 (PAL)", GAME_SUPPORTS_SAVE )
-COMP( 1984, vip64, c64, 0, pal_sx, c64sw, driver_device, 0, "Commodore Business Machines", "VIP-64 (Sweden/Finland)", GAME_SUPPORTS_SAVE )
-COMP( 1984, dx64, c64, 0, ntsc_dx, c64, driver_device, 0, "Commodore Business Machines", "DX-64 (NTSC)", GAME_SUPPORTS_SAVE )
-COMP( 1984, tesa6240,c64, 0, pal_sx, c64, driver_device, 0, "Tesa Etikett", "Etikettendrucker 6240", GAME_SUPPORTS_SAVE )
-COMP( 1986, c64c, c64, 0, ntsc_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64C (NTSC)", GAME_SUPPORTS_SAVE )
-COMP( 1986, c64cp, c64, 0, pal_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64C (PAL)", GAME_SUPPORTS_SAVE )
-COMP( 1988, c64c_es, c64, 0, pal_c, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64C (Spain)", GAME_SUPPORTS_SAVE )
-COMP( 1986, c64c_se, c64, 0, pal_c, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64C (Sweden/Finland)", GAME_SUPPORTS_SAVE )
-COMP( 1986, c64g, c64, 0, pal_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64G (PAL)", GAME_SUPPORTS_SAVE )
-CONS( 1990, c64gs, c64, 0, pal_gs, c64gs, driver_device, 0, "Commodore Business Machines", "Commodore 64 Games System (PAL)", GAME_SUPPORTS_SAVE )
+COMP( 1982, c64, 0, 0, ntsc, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (NTSC)", MACHINE_SUPPORTS_SAVE )
+COMP( 1982, c64_jp, c64, 0, ntsc, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (Japan)", MACHINE_SUPPORTS_SAVE )
+COMP( 1982, c64p, c64, 0, pal, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (PAL)", MACHINE_SUPPORTS_SAVE )
+COMP( 1982, c64_se, c64, 0, pal, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64 / VIC-64S (Sweden/Finland)", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, pet64, c64, 0, pet64, c64, driver_device, 0, "Commodore Business Machines", "PET 64 / CBM 4064 (NTSC)", MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS )
+COMP( 1983, edu64, c64, 0, pet64, c64, driver_device, 0, "Commodore Business Machines", "Educator 64 (NTSC)", MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS )
+COMP( 1984, sx64, c64, 0, ntsc_sx, c64, driver_device, 0, "Commodore Business Machines", "SX-64 / Executive 64 (NTSC)", MACHINE_SUPPORTS_SAVE )
+COMP( 1984, sx64p, c64, 0, pal_sx, c64, driver_device, 0, "Commodore Business Machines", "SX-64 / Executive 64 (PAL)", MACHINE_SUPPORTS_SAVE )
+COMP( 1984, vip64, c64, 0, pal_sx, c64sw, driver_device, 0, "Commodore Business Machines", "VIP-64 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE )
+COMP( 1984, dx64, c64, 0, ntsc_dx, c64, driver_device, 0, "Commodore Business Machines", "DX-64 (NTSC)", MACHINE_SUPPORTS_SAVE )
+COMP( 1984, tesa6240,c64, 0, pal_sx, c64, driver_device, 0, "Tesa Etikett", "Etikettendrucker 6240", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, c64c, c64, 0, ntsc_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64C (NTSC)", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, c64cp, c64, 0, pal_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64C (PAL)", MACHINE_SUPPORTS_SAVE )
+COMP( 1988, c64c_es, c64, 0, pal_c, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64C (Spain)", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, c64c_se, c64, 0, pal_c, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64C (Sweden/Finland)", MACHINE_SUPPORTS_SAVE )
+COMP( 1986, c64g, c64, 0, pal_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64G (PAL)", MACHINE_SUPPORTS_SAVE )
+CONS( 1990, c64gs, c64, 0, pal_gs, c64gs, driver_device, 0, "Commodore Business Machines", "Commodore 64 Games System (PAL)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/c64dtv.c b/src/mame/drivers/c64dtv.c
index af886122d8f..4b707dfa585 100644
--- a/src/mess/drivers/c64dtv.c
+++ b/src/mame/drivers/c64dtv.c
@@ -65,4 +65,4 @@ ROM_END
// GAME DRIVERS
//**************************************************************************
-CONS( 2005, c64dtv, 0, 0, c64dtv, c64dtv, driver_device, 0, "The Toy:Lobster Company", "Commodore 64 Direct-to-TV (Version 2 050711) (PAL)", GAME_NOT_WORKING | GAME_NO_SOUND )
+CONS( 2005, c64dtv, 0, 0, c64dtv, c64dtv, driver_device, 0, "The Toy:Lobster Company", "Commodore 64 Direct-to-TV (Version 2 050711) (PAL)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/c65.c b/src/mame/drivers/c65.c
index 1774311a3b7..f2160b9e2cd 100644
--- a/src/mess/drivers/c65.c
+++ b/src/mame/drivers/c65.c
@@ -665,5 +665,5 @@ DRIVER_INIT_MEMBER(c65_state,c65pal)
// m_pal = 1;
}
-COMP( 1991, c65, 0, 0, c65, c65, c65_state, c65, "Commodore Business Machines", "Commodore 65 Development System (Prototype, NTSC)", GAME_NOT_WORKING )
-COMP( 1991, c64dx, c65, 0, c65, c65, c65_state, c65pal, "Commodore Business Machines", "Commodore 64DX Development System (Prototype, PAL, German)", GAME_NOT_WORKING )
+COMP( 1991, c65, 0, 0, c65, c65, c65_state, c65, "Commodore Business Machines", "Commodore 65 Development System (Prototype, NTSC)", MACHINE_NOT_WORKING )
+COMP( 1991, c64dx, c65, 0, c65, c65, c65_state, c65pal, "Commodore Business Machines", "Commodore 64DX Development System (Prototype, PAL, German)", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/c65_old.c b/src/mame/drivers/c65_old.c
index f2cba2012d0..97d934ff1db 100644
--- a/src/mess/drivers/c65_old.c
+++ b/src/mame/drivers/c65_old.c
@@ -644,5 +644,5 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1991, c65, 0, 0, c65, c65, c65_state, c65, "Commodore Business Machines", "Commodore 65 Development System (Prototype, NTSC)", GAME_NOT_WORKING )
-COMP( 1991, c64dx, c65, 0, c65pal, c65ger, c65_state, c65pal, "Commodore Business Machines", "Commodore 64DX Development System (Prototype, PAL, German)", GAME_NOT_WORKING )
+COMP( 1991, c65, 0, 0, c65, c65, c65_state, c65, "Commodore Business Machines", "Commodore 65 Development System (Prototype, NTSC)", MACHINE_NOT_WORKING )
+COMP( 1991, c64dx, c65, 0, c65pal, c65ger, c65_state, c65pal, "Commodore Business Machines", "Commodore 64DX Development System (Prototype, PAL, German)", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/c80.c b/src/mame/drivers/c80.c
index c6c0722611c..4af7ab0c6db 100644
--- a/src/mess/drivers/c80.c
+++ b/src/mame/drivers/c80.c
@@ -290,4 +290,4 @@ ROM_END
/* System Drivers */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1986, c80, 0, 0, c80, c80, driver_device, 0, "Joachim Czepa", "C-80", GAME_SUPPORTS_SAVE )
+COMP( 1986, c80, 0, 0, c80, c80, driver_device, 0, "Joachim Czepa", "C-80", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/c900.c b/src/mame/drivers/c900.c
index 355e0642e67..18e5238c3eb 100644
--- a/src/mess/drivers/c900.c
+++ b/src/mame/drivers/c900.c
@@ -132,4 +132,4 @@ ROM_START( c900 )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1985, c900, 0, 0, c900, c900, driver_device, 0, "Commodore", "Commodore 900", GAME_IS_SKELETON )
+COMP( 1985, c900, 0, 0, c900, c900, driver_device, 0, "Commodore", "Commodore 900", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/cabal.c b/src/mame/drivers/cabal.c
index 026b621144b..304d42390db 100644
--- a/src/mame/drivers/cabal.c
+++ b/src/mame/drivers/cabal.c
@@ -855,10 +855,10 @@ DRIVER_INIT_MEMBER(cabal_state,cabalbl2)
}
-GAME( 1988, cabal, 0, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation", "Cabal (World, Joystick version)", GAME_SUPPORTS_SAVE )
-GAME( 1989, cabala, cabal, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Alpha Trading)", GAME_SUPPORTS_SAVE ) // korea?
-GAME( 1988, cabalbl, cabal, cabalbl, cabalbl, driver_device, 0, ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1988, cabalbl2,cabal, cabalbl2,cabalj, cabal_state, cabalbl2,ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1988, cabal, 0, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation", "Cabal (World, Joystick version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, cabala, cabal, cabal, cabalj, cabal_state, cabal, ROT0, "TAD Corporation (Alpha Trading license)", "Cabal (Alpha Trading)", MACHINE_SUPPORTS_SAVE ) // korea?
+GAME( 1988, cabalbl, cabal, cabalbl, cabalbl, driver_device, 0, ROT0, "bootleg (Red Corporation)", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cabalbl2,cabal, cabalbl2,cabalj, cabal_state, cabalbl2,ROT0, "bootleg", "Cabal (bootleg of Joystick version, set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1988, cabalus, cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball version)", GAME_SUPPORTS_SAVE )
-GAME( 1988, cabalus2,cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball version)", GAME_SUPPORTS_SAVE )
+GAME( 1988, cabalus, cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 1, Trackball version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cabalus2,cabal, cabal, cabalt, cabal_state, cabal, ROT0, "TAD Corporation (Fabtek license)", "Cabal (US set 2, Trackball version)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cabaret.c b/src/mame/drivers/cabaret.c
index 8c7d776fcf6..a3508d447d2 100644
--- a/src/mame/drivers/cabaret.c
+++ b/src/mame/drivers/cabaret.c
@@ -408,4 +408,4 @@ ROM_START( cabaret )
ROM_LOAD( "cg-7.u98", 0x0000, 0x8000, CRC(b93ae6f8) SHA1(accb87045c278d5d79fff65bb763aa6e8025a945) ) /* background maps, read by the CPU */
ROM_END
-GAME( 1992, cabaret, 0, cabaret, cabaret, cabaret_state, cabaret, ROT0, "AMT Co. Ltd.", "Cabaret", GAME_NOT_WORKING )
+GAME( 1992, cabaret, 0, cabaret, cabaret, cabaret_state, cabaret, ROT0, "AMT Co. Ltd.", "Cabaret", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/calchase.c b/src/mame/drivers/calchase.c
index 0f4a3887c9c..f7ac71d950c 100644
--- a/src/mame/drivers/calchase.c
+++ b/src/mame/drivers/calchase.c
@@ -784,6 +784,6 @@ ROM_START( eggsplc )
DISK_IMAGE_READONLY( "eggsplc", 0, SHA1(fa38dd6b0d25cde644f68cf639768f137c607eb5) )
ROM_END
-GAME( 1998, hostinv, 0, hostinv, calchase, calchase_state, hostinv, ROT0, "The Game Room", "Host Invaders", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, calchase, 0, calchase, calchase, calchase_state, calchase, ROT0, "The Game Room", "California Chase", GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS )
+GAME( 1998, hostinv, 0, hostinv, calchase, calchase_state, hostinv, ROT0, "The Game Room", "Host Invaders", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, calchase, 0, calchase, calchase, calchase_state, calchase, ROT0, "The Game Room", "California Chase", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS )
GAME( 2002, eggsplc, 0, calchase, calchase, calchase_state, hostinv, ROT0, "The Game Room", "Eggs Playing Chicken", 0 )
diff --git a/src/mame/drivers/calomega.c b/src/mame/drivers/calomega.c
index e08257f7456..553d8b0d2e6 100644
--- a/src/mame/drivers/calomega.c
+++ b/src/mame/drivers/calomega.c
@@ -3682,50 +3682,50 @@ DRIVER_INIT_MEMBER(calomega_state,comg080)
*************************************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1981, comg074, 0, sys903, comg074, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.4 (Gaming Poker, W.Export)", GAME_SUPPORTS_SAVE )
-GAME( 1981, comg076, 0, sys903, comg076, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.6 (Arcade Poker)", GAME_SUPPORTS_SAVE )
-GAME( 1981, comg079, 0, sys903, comg076, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.9 (Arcade Poker)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* bad dump */
-GAME( 1981, comg080, 0, sys903, arcadebj, calomega_state, comg080, ROT0, "Cal Omega Inc.", "Cal Omega - Game 8.0 (Arcade Black Jack)", GAME_SUPPORTS_SAVE ) /* bad dump */
-GAME( 1981, comg094, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 9.4 (Keno)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1982, comg107, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 10.7c (Big Game)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1982, comg123, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.3 (Ticket Poker)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* bad dump */
-GAME( 1982, comg125, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.5 (Bingo)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1982, comg127, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.7 (Keno)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1982, comg128, 0, sys903, comg128, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.8 (Arcade Game)", GAME_SUPPORTS_SAVE )
-GAME( 1982, comg134, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 13.4 (Nudge Bingo)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1982, comg145, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 14.5 (Pixels)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1983, comg157, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 15.7 (Double-Draw Poker)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1983, comg159, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 15.9 (Wild Double-Up)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1983, comg164, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 16.4 (Keno)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* incomplete dump */
-GAME( 1983, comg168, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 16.8 (Keno)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1983, comg172, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 17.2 (Double Double Poker)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1984, comg175, 0, sys903, gdrwpkrd, calomega_state, sys903, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 17.51 (Gaming Draw Poker)", GAME_SUPPORTS_SAVE )
-GAME( 1982, comg176, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 17.6 (Nudge Bingo)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1982, comg181, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.1 (Nudge Bingo)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1983, comg183, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.3 (Pixels)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1983, comg185, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.5 (Pixels)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1983, comg186, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.6 (Pixels)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1983, comg187, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.7 (Amusement Poker)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* bad dump */
-GAME( 1984, comg204, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 20.4 (Super Blackjack)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1984, comg208, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 20.8 (Winner's Choice)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1984, comg227, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 22.7 (Amusement Poker, d/d)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1984, comg230, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 23.0 (FC Bingo (4-card))", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* bad dump */
-GAME( 1984, comg236, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 23.6 (Hotline)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1985, comg239, 0, sys903, gdrwpkrd, calomega_state, sys903, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 23.9 (Gaming Draw Poker)", GAME_SUPPORTS_SAVE )
-GAME( 1985, comg240, 0, sys903, gdrwpkrh, calomega_state, sys903, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 24.0 (Gaming Draw Poker, hold)", GAME_SUPPORTS_SAVE )
-GAME( 1985, comg246, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 24.6 (Hotline)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1985, comg272a, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 27.2 (Keno, amusement)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1985, comg272b, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 27.2 (Keno, gaming)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 198?, comg5108, 0, sys906, stand906, driver_device, 0, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 51.08 (CEI Video Poker, Jacks or Better)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1981, comg074, 0, sys903, comg074, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.4 (Gaming Poker, W.Export)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, comg076, 0, sys903, comg076, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.6 (Arcade Poker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, comg079, 0, sys903, comg076, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 7.9 (Arcade Poker)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* bad dump */
+GAME( 1981, comg080, 0, sys903, arcadebj, calomega_state, comg080, ROT0, "Cal Omega Inc.", "Cal Omega - Game 8.0 (Arcade Black Jack)", MACHINE_SUPPORTS_SAVE ) /* bad dump */
+GAME( 1981, comg094, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 9.4 (Keno)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg107, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 10.7c (Big Game)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg123, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.3 (Ticket Poker)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* bad dump */
+GAME( 1982, comg125, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.5 (Bingo)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg127, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.7 (Keno)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg128, 0, sys903, comg128, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 12.8 (Arcade Game)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg134, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 13.4 (Nudge Bingo)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg145, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 14.5 (Pixels)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg157, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 15.7 (Double-Draw Poker)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg159, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 15.9 (Wild Double-Up)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg164, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 16.4 (Keno)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* incomplete dump */
+GAME( 1983, comg168, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 16.8 (Keno)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg172, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 17.2 (Double Double Poker)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, comg175, 0, sys903, gdrwpkrd, calomega_state, sys903, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 17.51 (Gaming Draw Poker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg176, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 17.6 (Nudge Bingo)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, comg181, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.1 (Nudge Bingo)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg183, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.3 (Pixels)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg185, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.5 (Pixels)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg186, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.6 (Pixels)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, comg187, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 18.7 (Amusement Poker)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* bad dump */
+GAME( 1984, comg204, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 20.4 (Super Blackjack)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, comg208, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 20.8 (Winner's Choice)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, comg227, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 22.7 (Amusement Poker, d/d)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, comg230, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 23.0 (FC Bingo (4-card))", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* bad dump */
+GAME( 1984, comg236, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 23.6 (Hotline)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, comg239, 0, sys903, gdrwpkrd, calomega_state, sys903, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 23.9 (Gaming Draw Poker)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, comg240, 0, sys903, gdrwpkrh, calomega_state, sys903, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 24.0 (Gaming Draw Poker, hold)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, comg246, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - Game 24.6 (Hotline)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, comg272a, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 27.2 (Keno, amusement)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, comg272b, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - Game 27.2 (Keno, gaming)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 198?, comg5108, 0, sys906, stand906, driver_device, 0, ROT0, "Cal Omega / Casino Electronics Inc.", "Cal Omega - Game 51.08 (CEI Video Poker, Jacks or Better)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
/************ Diagnostic PROMs ************/
-GAME( 198?, comg903d, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - System 903 Diag.PROM", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 198?, comg905d, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - System 905 Diag.PROM", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 198?, comg903d, 0, sys903, stand903, calomega_state, sys903, ROT0, "Cal Omega Inc.", "Cal Omega - System 903 Diag.PROM", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 198?, comg905d, 0, sys905, stand905, calomega_state, sys905, ROT0, "Cal Omega Inc.", "Cal Omega - System 905 Diag.PROM", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
/****** Unofficial / 3rd part games *******/
-GAME( 1982, elgrande, 0, s903mod, elgrande, calomega_state, s903mod, ROT0, "Enter-Tech, Ltd. / Tuni Electro Service", "El Grande - 5 Card Draw (New)", GAME_SUPPORTS_SAVE )
-GAME( 1983, jjpoker, 0, s903mod, jjpoker, calomega_state, s903mod, ROT0, "Enter-Tech, Ltd.", "Jackpot Joker Poker (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1983, jjpokerb, jjpoker, s903mod, jjpoker, calomega_state, s903mod, ROT0, "Enter-Tech, Ltd.", "Jackpot Joker Poker (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1988, ssipkr24, 0, s903mod, ssipkr, calomega_state, s903mod, ROT0, "SSI", "SSI Poker (v2.4)", GAME_SUPPORTS_SAVE )
-GAME( 1988, ssipkr30, ssipkr24, s903mod, ssipkr, calomega_state, s903mod, ROT0, "SSI", "SSI Poker (v3.0)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ssipkr40, ssipkr24, s903mod, ssipkr, calomega_state, s903mod, ROT0, "SSI", "SSI Poker (v4.0)", GAME_SUPPORTS_SAVE )
+GAME( 1982, elgrande, 0, s903mod, elgrande, calomega_state, s903mod, ROT0, "Enter-Tech, Ltd. / Tuni Electro Service", "El Grande - 5 Card Draw (New)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jjpoker, 0, s903mod, jjpoker, calomega_state, s903mod, ROT0, "Enter-Tech, Ltd.", "Jackpot Joker Poker (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jjpokerb, jjpoker, s903mod, jjpoker, calomega_state, s903mod, ROT0, "Enter-Tech, Ltd.", "Jackpot Joker Poker (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ssipkr24, 0, s903mod, ssipkr, calomega_state, s903mod, ROT0, "SSI", "SSI Poker (v2.4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ssipkr30, ssipkr24, s903mod, ssipkr, calomega_state, s903mod, ROT0, "SSI", "SSI Poker (v3.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ssipkr40, ssipkr24, s903mod, ssipkr, calomega_state, s903mod, ROT0, "SSI", "SSI Poker (v4.0)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/calorie.c b/src/mame/drivers/calorie.c
index a5921c03dd8..50049962e05 100644
--- a/src/mame/drivers/calorie.c
+++ b/src/mame/drivers/calorie.c
@@ -100,7 +100,6 @@ public:
/* memory pointers */
required_shared_ptr<UINT8> m_fg_ram;
required_shared_ptr<UINT8> m_sprites;
-// UINT8 * m_paletteram; // currently this uses generic palette handling
/* video-related */
tilemap_t *m_bg_tilemap;
@@ -580,5 +579,5 @@ DRIVER_INIT_MEMBER(calorie_state,calorieb)
*************************************/
/* Note: the bootleg is identical to the original once decrypted */
-GAME( 1986, calorie, 0, calorie, calorie, calorie_state, calorie, ROT0, "Sega", "Calorie Kun vs Moguranian", GAME_SUPPORTS_SAVE )
-GAME( 1986, calorieb, calorie, calorie, calorie, calorie_state, calorieb, ROT0, "bootleg", "Calorie Kun vs Moguranian (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1986, calorie, 0, calorie, calorie, calorie_state, calorie, ROT0, "Sega", "Calorie Kun vs Moguranian", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, calorieb, calorie, calorie, calorie, calorie_state, calorieb, ROT0, "bootleg", "Calorie Kun vs Moguranian (bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/camplynx.c b/src/mame/drivers/camplynx.c
new file mode 100644
index 00000000000..30101b2ab3c
--- /dev/null
+++ b/src/mame/drivers/camplynx.c
@@ -0,0 +1,936 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/***************************************************************************
+
+ Camputers Lynx
+
+ 05/2009 Skeleton driver.
+
+ The Lynx was an 8-bit British home computer that was first released
+ in early 1983 as a 48 kB model.
+ The designer of the Lynx was John Shireff and several models were
+ available with 48 kB, 96 kB (from Sep 1983) or 128 kB RAM (from Dec
+ 1983). It was possible reach 192 kB with RAM expansions on-board.
+
+ The machine was based around a Z80A CPU clocked at 4 MHz, and featured
+ a Motorola 6845 as video controller. It was possible to run CP/M with
+ the optional 5.25" floppy disk-drive on the 96 kB and 128 kB models.
+ Approximately 30,000 Lynx units were sold world-wide.
+
+ Camputers ceased trading in June 1984. Anston Technology took over in
+ November the same year and a re-launch was planned but never happened.
+
+ In June 1986, Anston sold everything - hardware, design rights and
+ thousands of cassettes - to the National Lynx User Group. The group
+ planned to produce a Super-Lynx but was too busy supplying spares and
+ technical information to owners of existing models, and the project never
+ came into being.
+
+ Hardware info:
+ - CPU: Zilog Z80A 4 MHz
+ - CO-PROCESSOR: Motorola 6845 (CRT controller)
+ - RAM: 48 kb, 96 kb or 128 kb depending on models (max. 192 kb)
+ - ROM: 16 kb (48K version), 24 KB (96K and 128K versions)
+ - TEXT MODES: 40 x 24, 80 x 24
+ - GRAPHIC MODES: 256 x 248, 512 x 480
+ - SOUND: one voice beeper
+
+ Lynx 128 Memory Map
+
+ | 0000 2000 4000 6000 8000 a000 c000 e000
+ | 1fff 3fff 5fff 7fff 9fff bfff dfff ffff
+ -------------------------------------------------------------------------
+ | | | |
+ Bank 0 | BASIC ROM | Not Available | Ext | Ext
+ | | | ROM1 | ROM2
+ -------------------------------------------------------------------------
+ | |
+ Bank 1 | STORE | Workspace RAM
+ | |
+ -------------------------------------------------------------------------
+ | | | |
+ Bank 2 | RED | BLUE | GREEN | Alt
+ | | | | Green
+ -------------------------------------------------------------------------
+ |
+ Bank 3 | Available for Video Expansion
+ |
+ -------------------------------------------------------------------------
+ |
+ Bank 4 | Available for User RAM Expansion
+ |
+
+
+
+ 48k and 96k are basically the same machine. 128k is different.
+
+ This computer is weird, because it allows reads and writes from multiple banks
+ at the same time. We can write to multiple banks, but we must limit ourselves
+ to reading from the lowest bank selected.
+
+ Notes:
+ - The screen doesn't scroll. This is normal.
+ - Variable names are case-sensitive.
+ - Break key is the Escape key.
+ - Typing a line number doesn't delete the line, you are in a calculator mode
+ (for example, typing 67-5 will print 62)
+ - DEL line-number deletes the line.
+ - To edit a line, press Ctrl-E, it asks for line number, type it in,
+ then arrows to move left-right, backspace to delete, press keys to insert them
+ - If you entered a line and got a syntax error, press Ctrl-Q to edit it.
+ - Cassette tapes made on 128k are a different speed to 48k tapes. To load a 128k
+ tape on a 48k system, enter TAPE 3 before loading. (2,3,4,5 all seem to work).
+ - When loading, there's no wildcard; you must specify the name.
+ - INT should be activated by the MC6845 CURS pin (inverted), or by holding down
+ the BREAK key. However, the rom leaves interrupts disabled, so none of this works.
+
+ To Do:
+ - Need disk-based software (only ones found are LDF format)
+ - finish memory banking
+ - disk (only partially done)
+ - printer
+ - joysticks
+ - UART type COM8017
+ Bugs:
+ - YNXVADERS: Top row of invaders is missing and can't be killed, but they
+ continue to fire at you. This makes the game unwinnable.
+ Game bugs (reproducible in Jynx):
+ - 3D Monster Craze: When attacked, garbage on screen
+ - 3D Monster Craze: When you find the key, the game freezes
+ - LogiChess: unable to enter an acceptable move
+ - Power Blaster: Bad Tape
+
+****************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "video/mc6845.h"
+#include "sound/dac.h"
+#include "imagedev/cassette.h"
+#include "sound/wave.h"
+#include "formats/camplynx_cas.h"
+#include "machine/wd_fdc.h"
+
+class camplynx_state : public driver_device
+{
+public:
+ camplynx_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_palette(*this, "palette")
+ , m_maincpu(*this, "maincpu")
+ , m_cass(*this, "cassette")
+ //, m_printer(*this, "centronics")
+ , m_crtc(*this, "crtc")
+ , m_dac(*this, "dac")
+ , m_fdc(*this, "fdc")
+ , m_floppy0(*this, "fdc:0")
+ , m_floppy1(*this, "fdc:1")
+ { }
+
+ // 48k
+ DECLARE_WRITE8_MEMBER(bank1_w);
+ DECLARE_WRITE8_MEMBER(bank5_w);
+ DECLARE_WRITE8_MEMBER(bank6_w);
+ DECLARE_WRITE8_MEMBER(bank7_w);
+ DECLARE_WRITE8_MEMBER(bank8_w);
+ DECLARE_WRITE8_MEMBER(port58_w); // drive select etc
+ DECLARE_WRITE8_MEMBER(port7f_w); // banking 48k
+ DECLARE_READ8_MEMBER(port80_r); // cassin for 48k
+ DECLARE_WRITE8_MEMBER(port80_w); // control port 48k
+ DECLARE_READ8_MEMBER(port82_r); // cassin for 128k
+ DECLARE_WRITE8_MEMBER(port82_w); // banking 128k
+ DECLARE_WRITE8_MEMBER(port84_w); // dac port 48k
+ DECLARE_MACHINE_RESET(lynx48k);
+ DECLARE_MACHINE_RESET(lynx128k);
+ DECLARE_DRIVER_INIT(lynx48k);
+ DECLARE_DRIVER_INIT(lynx128k);
+ MC6845_UPDATE_ROW(lynx48k_update_row);
+ MC6845_UPDATE_ROW(lynx128k_update_row);
+ required_device<palette_device> m_palette;
+private:
+ UINT8 m_port58;
+ UINT8 m_port80;
+ UINT8 m_bankdata;
+ UINT8 m_wbyte;
+ UINT8 *m_p_ram;
+ bool m_is_128k;
+ required_device<z80_device> m_maincpu;
+ required_device<cassette_image_device> m_cass;
+ //required_device<> m_printer;
+ required_device<mc6845_device> m_crtc;
+ required_device<dac_device> m_dac;
+ optional_device<fd1793_t> m_fdc;
+ optional_device<floppy_connector> m_floppy0;
+ optional_device<floppy_connector> m_floppy1;
+};
+
+WRITE8_MEMBER( camplynx_state::port7f_w )
+{
+/*
+d0 = write to bank 1
+d1 = write to bank 2
+d2 = write to bank 3
+d3 = write to bank 4
+d4 = read from bank 0 - roms
+d5 = read from bank 1 - user ram
+d6 = read from banks 2 and 3 - videoram
+d7 = read from bank 4 */
+
+ m_bankdata = data;
+ data ^= 0x31; // make all lines active high
+//printf("%s:%X\n", machine().describe_context(), data);
+ // do writes
+ m_wbyte = (data & 0x0f) | ((m_port80 & 0x0c) << 3);
+ // do reads
+ UINT8 rbyte = (data & 0x70) | (m_port80 & 0x0c);
+ switch (rbyte)
+ {
+ case 0x00:
+ case 0x04:
+ case 0x08:
+ case 0x0c:
+ case 0x10:
+ case 0x14:
+ case 0x18:
+ case 0x1c:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(3);
+ membank("bankr5")->set_entry(0);
+ membank("bankr6")->set_entry(1);
+ membank("bankr7")->set_entry(2);
+ membank("bankr8")->set_entry(3);
+ break;
+ case 0x20:
+ case 0x24:
+ case 0x28:
+ case 0x2c:
+ membank("bankr1")->set_entry(8);
+ membank("bankr2")->set_entry(9);
+ membank("bankr3")->set_entry(10);
+ membank("bankr4")->set_entry(11);
+ membank("bankr5")->set_entry(12);
+ membank("bankr6")->set_entry(13);
+ membank("bankr7")->set_entry(14);
+ membank("bankr8")->set_entry(15);
+ break;
+ case 0x30:
+ case 0x34:
+ case 0x38:
+ case 0x3c:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(11);
+ membank("bankr5")->set_entry(12);
+ membank("bankr6")->set_entry(13);
+ membank("bankr7")->set_entry(14);
+ membank("bankr8")->set_entry(BIT(m_port58, 4) ? 15 : 7);
+ break;
+ case 0x44:
+ case 0x64:
+ membank("bankr1")->set_entry(24);
+ membank("bankr2")->set_entry(25);
+ membank("bankr3")->set_entry(26);
+ membank("bankr4")->set_entry(27);
+ membank("bankr5")->set_entry(28);
+ membank("bankr6")->set_entry(28);
+ membank("bankr7")->set_entry(30);
+ membank("bankr8")->set_entry(30);
+ break;
+ case 0x40:
+ case 0x60:
+ case 0x48:
+ case 0x68:
+ case 0x4c:
+ case 0x6c:
+ membank("bankr1")->set_entry(16);
+ membank("bankr2")->set_entry(17);
+ membank("bankr3")->set_entry(18);
+ membank("bankr4")->set_entry(19);
+ membank("bankr5")->set_entry(20);
+ membank("bankr6")->set_entry(20);
+ membank("bankr7")->set_entry(22);
+ membank("bankr8")->set_entry(22);
+ break;
+ case 0x54:
+ case 0x74:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(27);
+ membank("bankr5")->set_entry(28);
+ membank("bankr6")->set_entry(28);
+ membank("bankr7")->set_entry(30);
+ membank("bankr8")->set_entry(30);
+ break;
+ case 0x50:
+ case 0x70:
+ case 0x58:
+ case 0x78:
+ case 0x5c:
+ case 0x7c:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(19);
+ membank("bankr5")->set_entry(20);
+ membank("bankr6")->set_entry(20);
+ membank("bankr7")->set_entry(22);
+ membank("bankr8")->set_entry(22);
+ break;
+ default:
+ printf("Banking code %X not handled\n", m_bankdata);
+ }
+}
+
+WRITE8_MEMBER( camplynx_state::port82_w )
+{
+/* Almost the same as the 48k, except the bit order is reversed.
+d7 = write to bank 1
+d6 = write to bank 2
+d5 = colsel - allow r/w to bank 3??
+d4 = write to bank 4
+d3 = read from bank 0 - roms
+d2 = read from bank 1 - user ram
+d1 = read from bank 2 - videoram
+d0 = read from bank 4 */
+ m_bankdata = data;
+ data ^= 0x8c; // make all lines active high
+ // do writes
+ m_wbyte = BITSWAP8(data, 0, 0, 0, 0, 4, 5, 6, 7) & 0x0f; // rearrange to 1,2,3,4
+ // do reads
+ UINT8 rbyte = BITSWAP8(data, 0, 0, 0, 0, 0, 1, 2, 3) & 0x0f; // rearrange to 0,1,2,4
+ if BIT(rbyte, 1)
+ rbyte &= 0x07; // remove 4 if 1 selected (AND gate in IC82)
+//printf("%s:%X:%X:%X\n", machine().describe_context(), data, rbyte, m_wbyte);
+ switch (rbyte)
+ {
+ case 0x00:
+ case 0x01:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(3);
+ membank("bankr5")->set_entry(4);
+ membank("bankr6")->set_entry(5);
+ membank("bankr7")->set_entry(6);
+ membank("bankr8")->set_entry(7);
+ break;
+ case 0x02:
+ case 0x06:
+ case 0x0a:
+ case 0x0e:
+ membank("bankr1")->set_entry(8);
+ membank("bankr2")->set_entry(9);
+ membank("bankr3")->set_entry(10);
+ membank("bankr4")->set_entry(11);
+ membank("bankr5")->set_entry(12);
+ membank("bankr6")->set_entry(13);
+ membank("bankr7")->set_entry(14);
+ membank("bankr8")->set_entry(15);
+ break;
+ case 0x03:
+ case 0x07:
+ case 0x0b:
+ case 0x0f:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(11);
+ membank("bankr5")->set_entry(12);
+ membank("bankr6")->set_entry(13);
+ membank("bankr7")->set_entry(14);
+ membank("bankr8")->set_entry(BIT(m_port58, 4) ? 15 : 7);
+ break;
+ case 0x04:
+ case 0x0c:
+ membank("bankr1")->set_entry(16);
+ membank("bankr2")->set_entry(17);
+ membank("bankr3")->set_entry(18);
+ membank("bankr4")->set_entry(19);
+ membank("bankr5")->set_entry(20);
+ membank("bankr6")->set_entry(21);
+ membank("bankr7")->set_entry(22);
+ membank("bankr8")->set_entry(23);
+ break;
+ case 0x05:
+ case 0x0d:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(19);
+ membank("bankr5")->set_entry(20);
+ membank("bankr6")->set_entry(21);
+ membank("bankr7")->set_entry(22);
+ membank("bankr8")->set_entry(23);
+ break;
+ case 0x08:
+ membank("bankr1")->set_entry(32);
+ membank("bankr2")->set_entry(33);
+ membank("bankr3")->set_entry(34);
+ membank("bankr4")->set_entry(35);
+ membank("bankr5")->set_entry(36);
+ membank("bankr6")->set_entry(37);
+ membank("bankr7")->set_entry(38);
+ membank("bankr8")->set_entry(39);
+ break;
+ case 0x09:
+ membank("bankr1")->set_entry(0);
+ membank("bankr2")->set_entry(1);
+ membank("bankr3")->set_entry(2);
+ membank("bankr4")->set_entry(35);
+ membank("bankr5")->set_entry(36);
+ membank("bankr6")->set_entry(37);
+ membank("bankr7")->set_entry(38);
+ membank("bankr8")->set_entry(39);
+ break;
+ default:
+ printf("Banking code %X not handled\n", m_bankdata);
+ }
+}
+
+static ADDRESS_MAP_START( lynx48k_mem, AS_PROGRAM, 8, camplynx_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000,0x1fff) AM_READ_BANK("bankr1")
+ AM_RANGE(0x2000,0x3fff) AM_READ_BANK("bankr2")
+ AM_RANGE(0x4000,0x5fff) AM_READ_BANK("bankr3")
+ AM_RANGE(0x6000,0x7fff) AM_READ_BANK("bankr4")
+ AM_RANGE(0x8000,0x9fff) AM_READ_BANK("bankr5") AM_WRITE(bank5_w)
+ AM_RANGE(0xa000,0xbfff) AM_READ_BANK("bankr6") AM_WRITE(bank6_w)
+ AM_RANGE(0xc000,0xdfff) AM_READ_BANK("bankr7") AM_WRITE(bank7_w)
+ AM_RANGE(0xe000,0xffff) AM_READ_BANK("bankr8") AM_WRITE(bank8_w)
+ AM_RANGE(0x0000,0x7fff) AM_WRITE(bank1_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( lynx128k_mem, AS_PROGRAM, 8, camplynx_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0000,0x1fff) AM_READ_BANK("bankr1")
+ AM_RANGE(0x2000,0x3fff) AM_READ_BANK("bankr2")
+ AM_RANGE(0x4000,0x5fff) AM_READ_BANK("bankr3")
+ AM_RANGE(0x6000,0x7fff) AM_READ_BANK("bankr4")
+ AM_RANGE(0x8000,0x9fff) AM_READ_BANK("bankr5")
+ AM_RANGE(0xa000,0xbfff) AM_READ_BANK("bankr6")
+ AM_RANGE(0xc000,0xdfff) AM_READ_BANK("bankr7")
+ AM_RANGE(0xe000,0xffff) AM_READ_BANK("bankr8")
+ AM_RANGE(0x0000,0xffff) AM_WRITE(bank1_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( lynx48k_io, AS_IO, 8, camplynx_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x007f,0x007f) AM_MIRROR(0xff80) AM_WRITE(port7f_w)
+ AM_RANGE(0x0080,0x0080) AM_MIRROR(0xff00) AM_WRITE(port80_w)
+ AM_RANGE(0x0080,0x0080) AM_MIRROR(0xf000) AM_READ(port80_r)
+ AM_RANGE(0x0180,0x0180) AM_MIRROR(0xf000) AM_READ_PORT("LINE1")
+ AM_RANGE(0x0280,0x0280) AM_MIRROR(0xf000) AM_READ_PORT("LINE2")
+ AM_RANGE(0x0380,0x0380) AM_MIRROR(0xf000) AM_READ_PORT("LINE3")
+ AM_RANGE(0x0480,0x0480) AM_MIRROR(0xf000) AM_READ_PORT("LINE4")
+ AM_RANGE(0x0580,0x0580) AM_MIRROR(0xf000) AM_READ_PORT("LINE5")
+ AM_RANGE(0x0680,0x0680) AM_MIRROR(0xf000) AM_READ_PORT("LINE6")
+ AM_RANGE(0x0780,0x0780) AM_MIRROR(0xf000) AM_READ_PORT("LINE7")
+ AM_RANGE(0x0880,0x0880) AM_MIRROR(0xf000) AM_READ_PORT("LINE8")
+ AM_RANGE(0x0980,0x0980) AM_MIRROR(0xf000) AM_READ_PORT("LINE9")
+ AM_RANGE(0x0084,0x0084) AM_MIRROR(0xff00) AM_WRITE(port84_w)
+ AM_RANGE(0x0086,0x0086) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
+ AM_RANGE(0x0087,0x0087) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( lynx96k_io, AS_IO, 8, camplynx_state )
+ AM_IMPORT_FROM(lynx48k_io)
+ AM_RANGE(0x0050,0x0053) AM_MIRROR(0xff80) AM_DEVREAD("fdc", fd1793_t, read)
+ AM_RANGE(0x0054,0x0057) AM_MIRROR(0xff80) AM_DEVWRITE("fdc", fd1793_t, write)
+ AM_RANGE(0x0058,0x0058) AM_MIRROR(0xff80) AM_WRITE(port58_w)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( lynx128k_io, AS_IO, 8, camplynx_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x0050,0x0053) AM_MIRROR(0xff80) AM_DEVREAD("fdc", fd1793_t, read)
+ AM_RANGE(0x0054,0x0057) AM_MIRROR(0xff80) AM_DEVWRITE("fdc", fd1793_t, write)
+ AM_RANGE(0x0058,0x0058) AM_MIRROR(0xff80) AM_WRITE(port58_w)
+// AM_RANGE(0x007a,0x007b) AM_MIRROR(0xff80) AM_READ(lynx128k_joysticks_r)
+// AM_RANGE(0x007c,0x007c) AM_MIRROR(0xff80) AM_READ(lynx128k_printer_r)
+// AM_RANGE(0x007d,0x007d) AM_MIRROR(0xff80) AM_WRITE(lynx128k_printer_init_w) // this is rw
+// AM_RANGE(0x007e,0x007e) AM_MIRROR(0xff80) AM_WRITE(lynx128k_printer_w)
+ AM_RANGE(0x0080,0x0080) AM_MIRROR(0xff00) AM_WRITE(port80_w)
+ AM_RANGE(0x0080,0x0080) AM_MIRROR(0xf000) AM_READ_PORT("LINE0")
+ AM_RANGE(0x0180,0x0180) AM_MIRROR(0xf000) AM_READ_PORT("LINE1")
+ AM_RANGE(0x0280,0x0280) AM_MIRROR(0xf000) AM_READ_PORT("LINE2")
+ AM_RANGE(0x0380,0x0380) AM_MIRROR(0xf000) AM_READ_PORT("LINE3")
+ AM_RANGE(0x0480,0x0480) AM_MIRROR(0xf000) AM_READ_PORT("LINE4")
+ AM_RANGE(0x0580,0x0580) AM_MIRROR(0xf000) AM_READ_PORT("LINE5")
+ AM_RANGE(0x0680,0x0680) AM_MIRROR(0xf000) AM_READ_PORT("LINE6")
+ AM_RANGE(0x0780,0x0780) AM_MIRROR(0xf000) AM_READ_PORT("LINE7")
+ AM_RANGE(0x0880,0x0880) AM_MIRROR(0xf000) AM_READ_PORT("LINE8")
+ AM_RANGE(0x0980,0x0980) AM_MIRROR(0xf000) AM_READ_PORT("LINE9")
+ AM_RANGE(0x0082,0x0082) AM_MIRROR(0xff00) AM_READWRITE(port82_r,port82_w) // read=serial buffer
+ AM_RANGE(0x0084,0x0084) AM_MIRROR(0xff00) AM_WRITE(port84_w)
+ AM_RANGE(0x0086,0x0086) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w)
+ AM_RANGE(0x0087,0x0087) AM_MIRROR(0xff00) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w)
+ADDRESS_MAP_END
+
+/* Input ports */
+static INPUT_PORTS_START( lynx48k )
+ PORT_START("LINE0")
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
+ PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
+ PORT_START("LINE1")
+ PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C CONT") PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('c')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D DEL") PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('d')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X WEND") PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('x')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E DATA") PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('e')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4 $") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3 #") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
+ PORT_START("LINE2")
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Control") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A AUTO") PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('a')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S STOP") PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHAR('s')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z RESTORE") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('z')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W WHILE") PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHAR('w')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q REM") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHAR('q')
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2 \"") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR(34)
+ PORT_START("LINE3")
+ PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F DEFPROC") PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('f')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G GOTO") PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR('g')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V VERIFY") PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('v')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T TRACE") PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHAR('t')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R REPEAT") PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('r')
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5 %") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
+ PORT_START("LINE4")
+ PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B BEEP") PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('b')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N NEXT") PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(32)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H GOSUB") PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('h')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y RUN") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHAR('y')
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6 &") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
+ PORT_START("LINE5")
+ PORT_BIT(0xd0, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J LABEL") PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHAR('j')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M RETURN") PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('m')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U UNTIL") PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHAR('u')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8 (") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7 \'") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR(39)
+ PORT_START("LINE6")
+ PORT_BIT(0xd0, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K MON") PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('k')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O ENDPROC") PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I INPUT") PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('i')
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9 )") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
+ PORT_START("LINE7")
+ PORT_BIT(0xd0, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("; +") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L LIST") PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l')
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P PROC") PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('p')
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0 _") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_START("LINE8")
+ PORT_BIT(0xd0, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(": *") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*')
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR(0x5e)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@ \\") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('@') PORT_CHAR('\\')
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("- =") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=')
+ PORT_START("LINE9")
+ PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("End") PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END))
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR(0x7f)
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Delete") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
+INPUT_PORTS_END
+
+WRITE8_MEMBER( camplynx_state::bank1_w )
+{
+ if BIT(m_wbyte, 0)
+ m_p_ram[offset+0x10000] = data;
+ if ((m_wbyte & 0x22) == 0x02)
+ m_p_ram[offset+0x20000] = data;
+ if ((m_wbyte & 0x44) == 0x04)
+ m_p_ram[offset+0x30000] = data;
+ if (m_is_128k && BIT(m_wbyte, 3))
+ m_p_ram[offset+0x40000] = data;
+}
+
+WRITE8_MEMBER( camplynx_state::bank5_w )
+{
+ if BIT(m_wbyte, 0)
+ m_p_ram[offset+0x18000] = data;
+ if ((m_wbyte & 0x22) == 0x02)
+ m_p_ram[offset+0x28000] = data;
+ if ((m_wbyte & 0x44) == 0x04)
+ m_p_ram[offset+0x38000] = data;
+}
+
+WRITE8_MEMBER( camplynx_state::bank6_w )
+{
+ if BIT(m_wbyte, 0)
+ m_p_ram[offset+0x1a000] = data;
+ if ((m_wbyte & 0x22) == 0x02)
+ m_p_ram[offset+0x28000] = data;
+ if ((m_wbyte & 0x44) == 0x04)
+ m_p_ram[offset+0x38000] = data;
+}
+
+WRITE8_MEMBER( camplynx_state::bank7_w )
+{
+ if BIT(m_wbyte, 0)
+ m_p_ram[offset+0x1c000] = data;
+ if ((m_wbyte & 0x22) == 0x02)
+ m_p_ram[offset+0x2c000] = data;
+ if ((m_wbyte & 0x44) == 0x04)
+ m_p_ram[offset+0x3c000] = data;
+}
+
+WRITE8_MEMBER( camplynx_state::bank8_w )
+{
+ if BIT(m_wbyte, 0)
+ m_p_ram[offset+0x1e000] = data;
+ if ((m_wbyte & 0x22) == 0x02)
+ m_p_ram[offset+0x2c000] = data;
+ if ((m_wbyte & 0x44) == 0x04)
+ m_p_ram[offset+0x3c000] = data;
+}
+
+READ8_MEMBER( camplynx_state::port80_r )
+{
+ UINT8 data = ioport("LINE0")->read();
+ // when reading tape, bit 0 becomes cass-in signal
+ if BIT(m_port80, 1)
+ {
+ data &= 0xfe;
+ data |= (m_cass->input() > +0.02) ? 0 : 1;
+ }
+ return data;
+}
+
+/* 128k:
+d7 = serial data out
+d6 = interline control
+d5 = cpu access
+d4 = alt green or normal green (afaik this only affects the display not the banking)
+d3 = cass motor on
+d2 = cass enable
+d1 = serial h/s out
+d0 = speaker */
+WRITE8_MEMBER( camplynx_state::port80_w )
+{
+ m_port80 = data;
+ m_cass->change_state( BIT(data, (m_is_128k) ? 3 : 1) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
+ if (!m_is_128k)
+ port7f_w(space, 0, m_bankdata);
+}
+
+/* DAC port (6-bit). If writing cassette, output goes to tape as a sine wave, otherwise it goes to speaker.
+ There is code below to write as a sine wave or a square wave, both work and can be loaded successfully.
+ However the PALE emulator cannot load either of them, although it loads its own output.
+ MESS can load PALE's wav files though.
+ Currently square wave output is selected. */
+
+WRITE8_MEMBER( camplynx_state::port84_w )
+{
+ if BIT(m_port80, (m_is_128k) ? 3 : 1) // for 128k, bit 2 might be ok too
+ {
+ // Sine wave output
+ //float t = (float)(unsigned)data - 32.0f;
+ //m_cass->output(t/31);
+
+ // Square wave output
+ m_cass->output(BIT(data, 5) ? -1.0 : +1.0);
+ }
+ else // speaker output
+ m_dac->write_unsigned8(space, 0, data);
+}
+
+/*
+d7 = clock
+d2 = cass-in
+d1 = serial data in
+d0 = serial h/s in */
+READ8_MEMBER( camplynx_state::port82_r )
+{
+ UINT8 data = 0xfb; // guess
+ data |= (m_cass->input() > +0.02) ? 4 : 0;
+ return data;
+}
+
+MACHINE_RESET_MEMBER(camplynx_state, lynx48k)
+{
+ address_space &mem = m_maincpu->space(AS_PROGRAM);
+ m_port58 = 0;
+ m_port80 = 0;
+ port7f_w( mem, 0, 0 );
+ m_maincpu->reset();
+}
+
+MACHINE_RESET_MEMBER(camplynx_state, lynx128k)
+{
+ address_space &mem = m_maincpu->space(AS_PROGRAM);
+ m_port58 = 0;
+ m_port80 = 0;
+ port82_w( mem, 0, 0 );
+ m_maincpu->reset();
+}
+
+MC6845_UPDATE_ROW( camplynx_state::lynx48k_update_row )
+{
+ UINT8 r,g,b,x;
+ UINT32 green_bank, *p = &bitmap.pix32(y);
+ UINT16 mem = ((ma << 2) + (ra << 5)) & 0x1fff;
+
+ // determine green bank
+ if BIT(m_port80, 4)
+ green_bank = 0x38000+mem; // alt green
+ else
+ green_bank = 0x3c000+mem; // normal green
+
+ for (x = 0; x < x_count; x++)
+ {
+ r = m_p_ram[0x2c000+mem+x];
+ b = m_p_ram[0x28000+mem+x];
+ g = m_p_ram[green_bank+x];
+
+ *p++ = m_palette->pen_color((BIT(b, 7) << 2) | (BIT(g, 7) << 1) | (BIT(r, 7)));
+ *p++ = m_palette->pen_color((BIT(b, 6) << 2) | (BIT(g, 6) << 1) | (BIT(r, 6)));
+ *p++ = m_palette->pen_color((BIT(b, 5) << 2) | (BIT(g, 5) << 1) | (BIT(r, 5)));
+ *p++ = m_palette->pen_color((BIT(b, 4) << 2) | (BIT(g, 4) << 1) | (BIT(r, 4)));
+ *p++ = m_palette->pen_color((BIT(b, 3) << 2) | (BIT(g, 3) << 1) | (BIT(r, 3)));
+ *p++ = m_palette->pen_color((BIT(b, 2) << 2) | (BIT(g, 2) << 1) | (BIT(r, 2)));
+ *p++ = m_palette->pen_color((BIT(b, 1) << 2) | (BIT(g, 1) << 1) | (BIT(r, 1)));
+ *p++ = m_palette->pen_color((BIT(b, 0) << 2) | (BIT(g, 0) << 1) | (BIT(r, 0)));
+ }
+}
+
+MC6845_UPDATE_ROW( camplynx_state::lynx128k_update_row )
+{
+ UINT8 r,g,b,x;
+ UINT32 green_bank, *p = &bitmap.pix32(y);
+ UINT16 mem = ((ma << 2) + (ra << 6)) & 0x3fff;
+ // determine green bank
+ if BIT(m_port80, 4)
+ green_bank = 0x2c000+mem; // alt green
+ else
+ green_bank = 0x28000+mem; // normal green
+
+ for (x = 0; x < x_count; x++)
+ {
+ r = m_p_ram[0x20000+mem+x];
+ b = m_p_ram[0x24000+mem+x];
+ g = m_p_ram[green_bank+x];
+
+ *p++ = m_palette->pen_color((BIT(b, 7) << 2) | (BIT(g, 7) << 1) | (BIT(r, 7)));
+ *p++ = m_palette->pen_color((BIT(b, 6) << 2) | (BIT(g, 6) << 1) | (BIT(r, 6)));
+ *p++ = m_palette->pen_color((BIT(b, 5) << 2) | (BIT(g, 5) << 1) | (BIT(r, 5)));
+ *p++ = m_palette->pen_color((BIT(b, 4) << 2) | (BIT(g, 4) << 1) | (BIT(r, 4)));
+ *p++ = m_palette->pen_color((BIT(b, 3) << 2) | (BIT(g, 3) << 1) | (BIT(r, 3)));
+ *p++ = m_palette->pen_color((BIT(b, 2) << 2) | (BIT(g, 2) << 1) | (BIT(r, 2)));
+ *p++ = m_palette->pen_color((BIT(b, 1) << 2) | (BIT(g, 1) << 1) | (BIT(r, 1)));
+ *p++ = m_palette->pen_color((BIT(b, 0) << 2) | (BIT(g, 0) << 1) | (BIT(r, 0)));
+ }
+}
+
+WRITE8_MEMBER( camplynx_state::port58_w )
+{
+/*
+d0,d1 = drive select
+d2 = side
+d3 = motor
+d4 = eprom
+d5 = not used
+d6 = no precomp
+d7 = 125ns or 250ns */
+
+ if (BIT(m_port58, 4) ^ BIT(data, 4))
+ {
+ m_port58 = data;
+ if (m_is_128k)
+ port82_w(space, 0, m_bankdata);
+ else
+ port7f_w(space, 0, m_bankdata);
+ }
+ m_fdc->dden_w(BIT(data, 7));
+
+ floppy_image_device *floppy = NULL;
+ if ((data & 3) == 0) floppy = m_floppy0->get_device();
+ else
+ if ((data & 3) == 1) floppy = m_floppy1->get_device();
+
+ m_fdc->set_floppy(floppy);
+
+ if (floppy)
+ floppy->ss_w(BIT(data, 2));
+
+ m_floppy0->get_device()->mon_w(BIT(data, 3));
+ m_floppy1->get_device()->mon_w(BIT(data, 3));
+}
+
+
+static SLOT_INTERFACE_START( camplynx_floppies )
+ SLOT_INTERFACE( "drive0", FLOPPY_525_QD )
+ SLOT_INTERFACE( "drive1", FLOPPY_525_QD )
+SLOT_INTERFACE_END
+
+static MACHINE_CONFIG_FRAGMENT( lynx_common )
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("dac", DAC, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.5)
+ MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.02)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_FRAGMENT( lynx_disk )
+ MCFG_FD1793_ADD("fdc", XTAL_24MHz / 3) // no idea what crystal, no schematic of fdc found
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0", camplynx_floppies, "drive0", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1", camplynx_floppies, "drive1", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( lynx48k, camplynx_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz / 6)
+ MCFG_CPU_PROGRAM_MAP(lynx48k_mem)
+ MCFG_CPU_IO_MAP(lynx48k_io)
+
+ MCFG_MACHINE_RESET_OVERRIDE(camplynx_state, lynx48k)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 479)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+
+ MCFG_FRAGMENT_ADD(lynx_common)
+
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(lynx48k_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
+ //MCFG_CASSETTE_INTERFACE("camplynx_cass")
+
+ /* devices */
+ MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_12MHz / 8 )
+ MCFG_MC6845_SHOW_BORDER_AREA(false)
+ MCFG_MC6845_CHAR_WIDTH(8)
+ MCFG_MC6845_UPDATE_ROW_CB(camplynx_state, lynx48k_update_row)
+ MCFG_MC6845_OUT_CUR_CB(DEVWRITELINE("maincpu", z80_device, irq_line))
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( lynx96k, lynx48k )
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_IO_MAP(lynx96k_io)
+
+ MCFG_FRAGMENT_ADD(lynx_disk)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( lynx128k, camplynx_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz / 4)
+ MCFG_CPU_PROGRAM_MAP(lynx128k_mem)
+ MCFG_CPU_IO_MAP(lynx128k_io)
+
+ MCFG_MACHINE_RESET_OVERRIDE(camplynx_state, lynx128k)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(50)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
+ MCFG_SCREEN_SIZE(512, 480)
+ MCFG_SCREEN_VISIBLE_AREA(0, 511, 0, 479)
+ MCFG_SCREEN_UPDATE_DEVICE("crtc", mc6845_device, screen_update)
+
+ MCFG_FRAGMENT_ADD(lynx_common)
+
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_FORMATS(lynx128k_cassette_formats)
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_DISABLED)
+ //MCFG_CASSETTE_INTERFACE("camplynx_cass")
+
+ /* devices */
+ MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_12MHz / 8 )
+ MCFG_MC6845_SHOW_BORDER_AREA(false)
+ MCFG_MC6845_CHAR_WIDTH(8)
+ MCFG_MC6845_UPDATE_ROW_CB(camplynx_state, lynx128k_update_row)
+ MCFG_MC6845_OUT_CUR_CB(DEVWRITELINE("maincpu", z80_device, irq_line))
+
+ MCFG_FRAGMENT_ADD(lynx_disk)
+MACHINE_CONFIG_END
+
+DRIVER_INIT_MEMBER(camplynx_state, lynx48k)
+{
+ m_is_128k = false;
+ m_p_ram = memregion("maincpu")->base();
+ membank("bankr1")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
+ membank("bankr2")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
+ membank("bankr3")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
+ membank("bankr4")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
+ membank("bankr5")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
+ membank("bankr6")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
+ membank("bankr7")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
+ membank("bankr8")->configure_entries(0, 32, &m_p_ram[0], 0x2000);
+}
+
+DRIVER_INIT_MEMBER(camplynx_state, lynx128k)
+{
+ m_is_128k = true;
+ m_p_ram = memregion("maincpu")->base();
+ membank("bankr1")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr2")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr3")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr4")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr5")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr6")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr7")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+ membank("bankr8")->configure_entries(0, 40, &m_p_ram[0], 0x2000);
+}
+
+
+/* ROM definition */
+ROM_START( lynx48k )
+ ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASEFF )
+ ROM_SYSTEM_BIOS(0, "1", "Set1")
+ ROMX_LOAD( "lynx48-1.rom", 0x0000, 0x2000, CRC(56feec44) SHA1(7ded5184561168e159a30fa8e9d3fde5e52aa91a), ROM_BIOS(1) )
+ ROMX_LOAD( "lynx48-2.rom", 0x2000, 0x2000, CRC(d894562e) SHA1(c08a78ecb4eb05baa4c52488fce3648cd2688744), ROM_BIOS(1) )
+ ROM_SYSTEM_BIOS(1, "2", "Set2")
+ ROMX_LOAD( "lynx4811.rom", 0x0000, 0x2000, CRC(a933e577) SHA1(c7b30a28d99b38dbe63a1314c78e3e614287143b), ROM_BIOS(2) )
+ ROMX_LOAD( "lynx4812.rom", 0x2000, 0x2000, CRC(3d3fdd0e) SHA1(259d124f05367a96f891790f9418cc9c7798e2f8), ROM_BIOS(2) )
+ROM_END
+
+ROM_START( lynx96k )
+ ROM_REGION( 0x40000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "lynx9646.rom", 0x0000, 0x2000, CRC(f86c5514) SHA1(77a4af7557382003d697d08f364839e2dc28f063) )
+ ROM_LOAD( "lynx9645.rom", 0x2000, 0x2000, CRC(f596b9a3) SHA1(3fca46bd68422d34c6cd801dd904507e52bd8846) )
+ ROM_LOAD( "lynx9644.rom", 0x4000, 0x1000, CRC(4b96b0de) SHA1(c372a8d26399b9b45e615b674d61ccda76491b8b) )
+ ROM_LOAD( "dosrom.rom", 0xe000, 0x2000, CRC(011e106a) SHA1(e77f0ca99790551a7122945f3194516b2390fb69) )
+ROM_END
+
+ROM_START( lynx128k )
+ ROM_REGION( 0x50000, "maincpu", ROMREGION_ERASEFF )
+ ROM_LOAD( "lynx128-1.rom", 0x0000, 0x2000, CRC(65d292ce) SHA1(36567c2fbd9cf72f758e8cb80c21cb4d82040752) )
+ ROM_LOAD( "lynx128-2.rom", 0x2000, 0x2000, CRC(23288773) SHA1(e12a7ebea3fae5eb375c03e848dbb81070d9d189) )
+ ROM_LOAD( "lynx128-3.rom", 0x4000, 0x2000, CRC(9827b9e9) SHA1(1092367b2af51c72ce9be367179240d692aeb131) )
+ ROM_LOAD( "dosrom.rom", 0xe000, 0x2000, CRC(011e106a) SHA1(e77f0ca99790551a7122945f3194516b2390fb69) )
+ROM_END
+
+
+/* Driver */
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP( 1983, lynx48k, 0, 0, lynx48k, lynx48k, camplynx_state, lynx48k, "Camputers", "Lynx 48k", 0 )
+COMP( 1983, lynx96k, lynx48k, 0, lynx96k, lynx48k, camplynx_state, lynx48k, "Camputers", "Lynx 96k", MACHINE_NOT_WORKING)
+COMP( 1983, lynx128k, lynx48k, 0, lynx128k, lynx48k, camplynx_state, lynx128k, "Camputers", "Lynx 128k", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/canon_s80.c b/src/mame/drivers/canon_s80.c
new file mode 100644
index 00000000000..2ee2325ce0e
--- /dev/null
+++ b/src/mame/drivers/canon_s80.c
@@ -0,0 +1,54 @@
+// license:GPL2+
+// copyright-holders:FelipeSanches
+/*
+ * canon_s80.c
+ *
+ * CANON S-80 electronic typewriter
+ *
+ * skeleton driver by:
+ * Felipe Correa da Silva Sanches <juca@members.fsf.org>
+ *
+ * known issues:
+ * - memory-map is uncertain
+ * - maincpu clock is guessed
+ * - still need to hookup the Hitachi HD44780 LCD Controller
+ * - still lacks description of the keyboard inputs
+ * - as well as a "paper" device to plot the output of the dot matrix print head
+ */
+
+#include "emu.h"
+#include "cpu/m6800/m6800.h"
+//#include "video/hd44780.h"
+
+class canons80_state : public driver_device
+{
+public:
+ canons80_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ { }
+
+ DECLARE_DRIVER_INIT(canons80);
+};
+
+
+static ADDRESS_MAP_START(canons80_map, AS_PROGRAM, 8, canons80_state )
+ AM_RANGE(0x0000, 0x7fff) AM_RAM
+ AM_RANGE(0x8000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+static MACHINE_CONFIG_START( canons80, canons80_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", HD6301, 5000000) /* hd63a01xop 5 MHz guessed: TODO: check on PCB */
+ MCFG_CPU_PROGRAM_MAP(canons80_map)
+MACHINE_CONFIG_END
+
+DRIVER_INIT_MEMBER(canons80_state, canons80)
+{}
+
+ROM_START( canons80 )
+ ROM_REGION( 0x10000, "maincpu", 0 ) /* 6800 code */
+ ROM_LOAD( "canon_8735kx_nh4-0029_064.ic6", 0x8000, 0x8000, CRC(b6cd2ff7) SHA1(e47a136300c826e480fac1be7fc090523078a2a6) )
+ROM_END
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
+COMP( 1988, canons80, 0, 0, canons80, 0, canons80_state, canons80, "Canon", "Canon S-80 electronic typewriter", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/canyon.c b/src/mame/drivers/canyon.c
index cfb8f89198f..1e08018a616 100644
--- a/src/mame/drivers/canyon.c
+++ b/src/mame/drivers/canyon.c
@@ -318,5 +318,5 @@ ROM_END
*
*************************************/
-GAME( 1977, canyon, 0, canyon, canyon, driver_device, 0, ROT0, "Atari", "Canyon Bomber", GAME_SUPPORTS_SAVE )
-GAME( 1977, canyonp, canyon, canyon, canyon, driver_device, 0, ROT0, "Atari", "Canyon Bomber (prototype)", GAME_SUPPORTS_SAVE )
+GAME( 1977, canyon, 0, canyon, canyon, driver_device, 0, ROT0, "Atari", "Canyon Bomber", MACHINE_SUPPORTS_SAVE )
+GAME( 1977, canyonp, canyon, canyon, canyon, driver_device, 0, ROT0, "Atari", "Canyon Bomber (prototype)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/capbowl.c b/src/mame/drivers/capbowl.c
index 37b837e1768..f3d1deae057 100644
--- a/src/mame/drivers/capbowl.c
+++ b/src/mame/drivers/capbowl.c
@@ -437,13 +437,13 @@ ROM_END
ROM_START( bowlrama )
ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "u6", 0x08000, 0x08000, CRC(7103ad55) SHA1(92dccc5e6df3e18fc8cdcb67ef14d50ce5eb8b2c) )
+ ROM_LOAD( "bowl-o-rama_rev_1.0_u6.u6", 0x08000, 0x08000, CRC(7103ad55) SHA1(92dccc5e6df3e18fc8cdcb67ef14d50ce5eb8b2c) )
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "u30", 0x8000, 0x8000, CRC(f3168834) SHA1(40b7fbe9c15cc4442f4394b71c0666185afe4c8d) )
+ ROM_LOAD( "bowl-o-rama_rev_1.0_u30.u30", 0x08000, 0x08000, CRC(f3168834) SHA1(40b7fbe9c15cc4442f4394b71c0666185afe4c8d) )
ROM_REGION( 0x40000, "gfx1", 0 )
- ROM_LOAD( "ux7", 0x00000, 0x40000, CRC(8727432a) SHA1(a81d366c5f8df0bdb97e795bba7752e6526ddba0) )
+ ROM_LOAD( "bowl-o-rama_rev_1.0_ux7.ux7", 0x00000, 0x40000, CRC(8727432a) SHA1(a81d366c5f8df0bdb97e795bba7752e6526ddba0) ) /* located on daughter card add-on */
ROM_END
@@ -469,9 +469,9 @@ DRIVER_INIT_MEMBER(capbowl_state,capbowl)
*
*************************************/
-GAME( 1988, capbowl, 0, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Capcom Bowling (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1988, capbowl2, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Capcom Bowling (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1988, capbowl3, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Capcom Bowling (set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1988, capbowl4, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Capcom Bowling (set 4)", GAME_SUPPORTS_SAVE )
-GAME( 1989, clbowl, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Coors Light Bowling", GAME_SUPPORTS_SAVE )
-GAME( 1991, bowlrama, 0, bowlrama, capbowl, driver_device, 0, ROT270, "P&P Marketing", "Bowl-O-Rama", GAME_SUPPORTS_SAVE )
+GAME( 1988, capbowl, 0, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Capcom Bowling (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, capbowl2, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Capcom Bowling (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, capbowl3, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Capcom Bowling (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, capbowl4, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Capcom Bowling (set 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, clbowl, capbowl, capbowl, capbowl, capbowl_state, capbowl, ROT270, "Incredible Technologies / Capcom", "Coors Light Bowling", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, bowlrama, 0, bowlrama, capbowl, driver_device, 0, ROT270, "P&P Marketing", "Bowl-O-Rama Rev 1.0", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/capcom.c b/src/mame/drivers/capcom.c
index 3980c58816a..4970e673f94 100644
--- a/src/mame/drivers/capcom.c
+++ b/src/mame/drivers/capcom.c
@@ -298,17 +298,17 @@ ROM_START(ghv101)
ROM_LOAD("u34_v10.bin", 0x400000, 0x80000, CRC(cd5ea236) SHA1(dded158bc2f8443d2e69834cde87e81661ca7c53))
ROM_END
-GAME(1996, abv106, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Airborne", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, abv106r, abv106, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Airborne (Redemption)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, bbb109, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Big Bang Bar (Beta 1.9 US)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, bbb108, bbb109, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Big Bang Bar (Beta 1.8 US)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, bsv103, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Breakshot", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, bsv100r, bsv103, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Breakshot (Redemption 1.0)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, bsv102r, bsv103, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Breakshot (Redemption 1.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, bsb105, bsv103, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Breakshot (Beta)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, ffv104, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Flipper Football (v1.04)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, ffv101, ffv104, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Flipper Football (v1.01)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, kpv106, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Kingpin (Pinball)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, pmv112, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Pinball Magic", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, pmv112r, pmv112, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Pinball Magic (Redemption)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, ghv101, 0, capcom, capcom, capcom_state, capcom, ROT0, "Romstar", "Goofy Hoops", GAME_IS_SKELETON_MECHANICAL)
+GAME(1996, abv106, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Airborne", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, abv106r, abv106, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Airborne (Redemption)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, bbb109, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Big Bang Bar (Beta 1.9 US)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, bbb108, bbb109, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Big Bang Bar (Beta 1.8 US)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, bsv103, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Breakshot", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, bsv100r, bsv103, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Breakshot (Redemption 1.0)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, bsv102r, bsv103, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Breakshot (Redemption 1.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, bsb105, bsv103, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Breakshot (Beta)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, ffv104, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Flipper Football (v1.04)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, ffv101, ffv104, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Flipper Football (v1.01)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, kpv106, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Kingpin (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, pmv112, 0, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Pinball Magic", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, pmv112r, pmv112, capcom, capcom, capcom_state, capcom, ROT0, "Capcom", "Pinball Magic (Redemption)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, ghv101, 0, capcom, capcom, capcom_state, capcom, ROT0, "Romstar", "Goofy Hoops", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/capr1.c b/src/mame/drivers/capr1.c
index dcef968f74b..4203174914c 100644
--- a/src/mame/drivers/capr1.c
+++ b/src/mame/drivers/capr1.c
@@ -162,4 +162,4 @@ ROM_START( cspin2 )
ROM_END
-GAME (1996, cspin2, 0, cspin2, cspin2, driver_device, 0, ROT0, "Taito", "Capriccio Spin 2", GAME_IS_SKELETON_MECHANICAL )
+GAME (1996, cspin2, 0, cspin2, cspin2, driver_device, 0, ROT0, "Taito", "Capriccio Spin 2", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/caprcyc.c b/src/mame/drivers/caprcyc.c
index 91eedfd14f3..9ac04280b94 100644
--- a/src/mame/drivers/caprcyc.c
+++ b/src/mame/drivers/caprcyc.c
@@ -92,4 +92,4 @@ ROM_START( caprcyc )
ROM_END
-GAME (1999, caprcyc, 0, caprcyc, caprcyc, driver_device, 0, ROT0, "Taito", "Capriccio Cyclone", GAME_IS_SKELETON_MECHANICAL )
+GAME (1999, caprcyc, 0, caprcyc, caprcyc, driver_device, 0, ROT0, "Taito", "Capriccio Cyclone", MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/cardline.c b/src/mame/drivers/cardline.c
index e823189e2cf..8f2dd4c5bad 100644
--- a/src/mame/drivers/cardline.c
+++ b/src/mame/drivers/cardline.c
@@ -373,4 +373,4 @@ ROM_START( cardline )
ROM_END
-GAME( 199?, cardline, 0, cardline, cardline, driver_device, 0, ROT0, "Veltmeijer", "Card Line" , GAME_SUPPORTS_SAVE)
+GAME( 199?, cardline, 0, cardline, cardline, driver_device, 0, ROT0, "Veltmeijer", "Card Line" , MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/carjmbre.c b/src/mame/drivers/carjmbre.c
index 4fe6ed5d0e6..3c387d19531 100644
--- a/src/mame/drivers/carjmbre.c
+++ b/src/mame/drivers/carjmbre.c
@@ -273,4 +273,4 @@ ROM_END
*
*************************************/
-GAME( 1983, carjmbre, 0, carjmbre, carjmbre, driver_device, 0, ROT90, "Omori Electric Co., Ltd.", "Car Jamboree", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1983, carjmbre, 0, carjmbre, carjmbre, driver_device, 0, ROT90, "Omori Electric Co., Ltd.", "Car Jamboree", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/carpolo.c b/src/mame/drivers/carpolo.c
index d49ee8ba039..bb0b2addd9b 100644
--- a/src/mame/drivers/carpolo.c
+++ b/src/mame/drivers/carpolo.c
@@ -354,4 +354,4 @@ DRIVER_INIT_MEMBER(carpolo_state,carpolo)
ROM[i] ^= 0x0f;
}
-GAME( 1977, carpolo, 0, carpolo, carpolo, carpolo_state, carpolo, ROT0, "Exidy", "Car Polo", GAME_SUPPORTS_SAVE | GAME_NO_SOUND )
+GAME( 1977, carpolo, 0, carpolo, carpolo, carpolo_state, carpolo, ROT0, "Exidy", "Car Polo", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/casloopy.c b/src/mame/drivers/casloopy.c
index d2a957c5a96..ec768a54c01 100644
--- a/src/mess/drivers/casloopy.c
+++ b/src/mame/drivers/casloopy.c
@@ -420,7 +420,7 @@ static ADDRESS_MAP_START( casloopy_map, AS_PROGRAM, 32, casloopy_state )
AM_RANGE(0x04051000, 0x040511ff) AM_READWRITE16(pal_r, pal_w, 0xffffffff)
AM_RANGE(0x04058000, 0x04058007) AM_READWRITE16(vregs_r, vregs_w, 0xffffffff)
AM_RANGE(0x0405b000, 0x0405b00f) AM_RAM AM_SHARE("vregs") // RGB555 brightness control plus scrolling
-// AM_RANGE(0x05ffff00, 0x05ffffff) AM_READWRITE16(sh7021_r, sh7021_w, 0xffffffff)
+// AM_RANGE(0x05ffff00, 0x05ffffff) AM_READWRITE16(sh7021_r, sh7021_w, 0xffffffff)
// AM_RANGE(0x05ffff00, 0x05ffffff) - SH7021 internal i/o
AM_RANGE(0x06000000, 0x061fffff) AM_READ(cart_r)
AM_RANGE(0x07000000, 0x070003ff) AM_RAM AM_SHARE("oram")// on-chip RAM, actually at 0xf000000 (1 kb)
@@ -563,4 +563,4 @@ DRIVER_INIT_MEMBER(casloopy_state,casloopy)
m_bios_rom[i] = 0x000b0009; // RTS + NOP
}
-CONS( 1995, casloopy, 0, 0, casloopy, casloopy, casloopy_state, casloopy, "Casio", "Loopy", GAME_NOT_WORKING | GAME_NO_SOUND )
+CONS( 1995, casloopy, 0, 0, casloopy, casloopy, casloopy_state, casloopy, "Casio", "Loopy", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/castle.c b/src/mame/drivers/castle.c
index da694472bb9..056273db2b1 100644
--- a/src/mame/drivers/castle.c
+++ b/src/mame/drivers/castle.c
@@ -113,7 +113,7 @@ ROM_END
// 4.00 JACKPOT. VERSION 1 (for revision E CPU) Written by and copyright of David John Powell - 25th February 1987
-GAME( 1987, castrev, 0, castle_V1rvE, castrev, driver_device, 0, ROT0, "Castle","Revolution (Castle) (MACH2000 V1rvE)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 1987, castrev, 0, castle_V1rvE, castrev, driver_device, 0, ROT0, "Castle","Revolution (Castle) (MACH2000 V1rvE)",MACHINE_IS_SKELETON_MECHANICAL )
// I'm *guessing* this is on MACH2000 V2rvA hardware, it contains strings saying 'MACH 2000 test' and is designed for a single CPU.
-GAME( 198?, castfpt, 0, castle_V2rvA, castrev, driver_device, 0, ROT0, "Castle","Fortune Pot (Castle) (MACH2000 V2rvA)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 198?, castfpt, 0, castle_V2rvA, castrev, driver_device, 0, ROT0, "Castle","Fortune Pot (Castle) (MACH2000 V2rvA)",MACHINE_IS_SKELETON_MECHANICAL )
diff --git a/src/mame/drivers/caswin.c b/src/mame/drivers/caswin.c
index c7dc395bcaa..c91064afbe1 100644
--- a/src/mame/drivers/caswin.c
+++ b/src/mame/drivers/caswin.c
@@ -414,7 +414,7 @@ ROM_START( rcasinoo )
ROM_LOAD( "prom1.e8", 0x0020, 0x0020, CRC(2b5c7826) SHA1(c0de392aebd6982e5846c12aeb2e871358be60d7) ) /* MB7051 */
ROM_END
-GAME( 1984, rcasino, 0, vvillage, vvillage, driver_device, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-2)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1984, rcasino1, rcasino, vvillage, vvillage, driver_device, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-1, Larger Board)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1984, rcasinoo, rcasino, vvillage, vvillage, driver_device, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-1, Smaller Board)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1985, caswin, rcasino, vvillage, vvillage, driver_device, 0, ROT270, "Aristocrat", "Casino Winner", GAME_IMPERFECT_GRAPHICS )
+GAME( 1984, rcasino, 0, vvillage, vvillage, driver_device, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-2)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1984, rcasino1, rcasino, vvillage, vvillage, driver_device, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-1, Larger Board)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1984, rcasinoo, rcasino, vvillage, vvillage, driver_device, 0, ROT270, "Dyna Electronics", "Royal Casino (D-2608208A1-1, Smaller Board)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1985, caswin, rcasino, vvillage, vvillage, driver_device, 0, ROT270, "Aristocrat", "Casino Winner", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mess/drivers/cat.c b/src/mame/drivers/cat.c
index 32eb8700ea4..161441bb667 100644
--- a/src/mess/drivers/cat.c
+++ b/src/mame/drivers/cat.c
@@ -1839,5 +1839,5 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT DEVICE INIT COMPANY FULLNAME FLAGS */
-COMP( 1985, swyft,0, 0, swyft, swyft, driver_device, 0, "Information Applicance Inc", "Swyft", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1987, cat, swyft, 0, cat, cat, driver_device, 0, "Canon", "Cat", GAME_NOT_WORKING)
+COMP( 1985, swyft,0, 0, swyft, swyft, driver_device, 0, "Information Applicance Inc", "Swyft", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1987, cat, swyft, 0, cat, cat, driver_device, 0, "Canon", "Cat", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/cave.c b/src/mame/drivers/cave.c
index 27c8759662e..00cacc0285c 100644
--- a/src/mame/drivers/cave.c
+++ b/src/mame/drivers/cave.c
@@ -4995,74 +4995,74 @@ DRIVER_INIT_MEMBER(cave_state,korokoro)
***************************************************************************/
-GAME( 1994, pwrinst2, 0, pwrinst2, metmqstr, cave_state, pwrinst2, ROT0, "Atlus", "Power Instinct 2 (US, Ver. 94/04/08)", GAME_SUPPORTS_SAVE )
-GAME( 1994, pwrinst2j, pwrinst2, pwrinst2, metmqstr, cave_state, pwrinst2j,ROT0, "Atlus", "Gouketsuji Ichizoku 2 (Japan, Ver. 94/04/08)", GAME_SUPPORTS_SAVE )
+GAME( 1994, pwrinst2, 0, pwrinst2, metmqstr, cave_state, pwrinst2, ROT0, "Atlus", "Power Instinct 2 (US, Ver. 94/04/08)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pwrinst2j, pwrinst2, pwrinst2, metmqstr, cave_state, pwrinst2j,ROT0, "Atlus", "Gouketsuji Ichizoku 2 (Japan, Ver. 94/04/08)", MACHINE_SUPPORTS_SAVE )
// The EEPROM determines the region, program roms are the same between sets
-GAME( 1994, mazinger, 0, mazinger, cave, cave_state, mazinger, ROT90, "Banpresto / Dynamic Pl. Toei Animation", "Mazinger Z (World)", GAME_SUPPORTS_SAVE )
-GAME( 1994, mazingerj, mazinger, mazinger, cave, cave_state, mazinger, ROT90, "Banpresto / Dynamic Pl. Toei Animation", "Mazinger Z (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1994, mazinger, 0, mazinger, cave, cave_state, mazinger, ROT90, "Banpresto / Dynamic Pl. Toei Animation", "Mazinger Z (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, mazingerj, mazinger, mazinger, cave, cave_state, mazinger, ROT90, "Banpresto / Dynamic Pl. Toei Animation", "Mazinger Z (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, donpachi, 0, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (US)", GAME_SUPPORTS_SAVE )
-GAME( 1995, donpachij, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1995, donpachikr, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Korea)", GAME_SUPPORTS_SAVE )
-GAME( 1995, donpachihk, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Hong Kong)", GAME_SUPPORTS_SAVE )
+GAME( 1995, donpachi, 0, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, donpachij, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, donpachikr, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, donpachihk, donpachi, donpachi, cave, cave_state, donpachi, ROT270, "Cave (Atlus license)", "DonPachi (Hong Kong)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, metmqstr, 0, metmqstr, metmqstr, cave_state, metmqstr, ROT0, "Banpresto / Pandorabox", "Metamoqester (International)", GAME_SUPPORTS_SAVE )
-GAME( 1995, nmaster, metmqstr, metmqstr, metmqstr, cave_state, metmqstr, ROT0, "Banpresto / Pandorabox", "Oni - The Ninja Master (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1995, metmqstr, 0, metmqstr, metmqstr, cave_state, metmqstr, ROT0, "Banpresto / Pandorabox", "Metamoqester (International)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, nmaster, metmqstr, metmqstr, metmqstr, cave_state, metmqstr, ROT0, "Banpresto / Pandorabox", "Oni - The Ninja Master (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, plegends, 0, pwrinst2, metmqstr, cave_state, pwrinst2j,ROT0, "Atlus", "Gogetsuji Legends (US, Ver. 95/06/20)", GAME_SUPPORTS_SAVE )
-GAME( 1995, plegendsj, plegends, pwrinst2, metmqstr, cave_state, pwrinst2j,ROT0, "Atlus", "Gouketsuji Gaiden - Saikyou Densetsu (Japan, Ver. 95/06/20)", GAME_SUPPORTS_SAVE )
+GAME( 1995, plegends, 0, pwrinst2, metmqstr, cave_state, pwrinst2j,ROT0, "Atlus", "Gogetsuji Legends (US, Ver. 95/06/20)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, plegendsj, plegends, pwrinst2, metmqstr, cave_state, pwrinst2j,ROT0, "Atlus", "Gouketsuji Gaiden - Saikyou Densetsu (Japan, Ver. 95/06/20)", MACHINE_SUPPORTS_SAVE )
// The EEPROM determines the region, program roms are the same between sets
-GAME( 1995, sailormn, 0, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Europe)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormnu, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, USA)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormnj, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormnk, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Korea)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormnt, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Taiwan)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormnh, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Hong Kong)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormno, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Europe)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormnou, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, USA)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormnoj, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormnok, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Korea)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormnot, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Taiwan)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sailormnoh, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Hong Kong)", GAME_SUPPORTS_SAVE )
+GAME( 1995, sailormn, 0, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Europe)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormnu, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, USA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormnj, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormnk, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormnt, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Taiwan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormnh, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Hong Kong)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormno, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Europe)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormnou, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, USA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormnoj, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormnok, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormnot, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Taiwan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sailormnoh, sailormn, sailormn, cave, cave_state, sailormn, ROT0, "Gazelle (Banpresto license)", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Hong Kong)", MACHINE_SUPPORTS_SAVE )
// The EEPROM determines the region, program roms are the same between sets
-GAME( 1996, agallet, 0, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Europe)", GAME_SUPPORTS_SAVE )
-GAME( 1996, agalletu, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (USA)", GAME_SUPPORTS_SAVE )
-GAME( 1996, agalletj, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Akuu Gallet (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1996, agalletk, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Korea)", GAME_SUPPORTS_SAVE )
-GAME( 1996, agallett, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Taiwan)", GAME_SUPPORTS_SAVE )
-GAME( 1996, agalleth, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Hong Kong)", GAME_SUPPORTS_SAVE )
+GAME( 1996, agallet, 0, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Europe)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, agalletu, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (USA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, agalletj, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Akuu Gallet (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, agalletk, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, agallett, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Taiwan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, agalleth, agallet, sailormn, cave, cave_state, agallet, ROT270, "Gazelle (Banpresto license)", "Air Gallet (Hong Kong)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, hotdogst, 0, hotdogst, cave, cave_state, hotdogst, ROT90, "Marble", "Hotdog Storm (International)", GAME_SUPPORTS_SAVE )
+GAME( 1996, hotdogst, 0, hotdogst, cave, cave_state, hotdogst, ROT90, "Marble", "Hotdog Storm (International)", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, pacslot, 0, pacslot, pacslot, cave_state, tjumpman, ROT0, "Namco", "Pac-Slot", GAME_SUPPORTS_SAVE )
+GAME( 1996, pacslot, 0, pacslot, pacslot, cave_state, tjumpman, ROT0, "Namco", "Pac-Slot", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, ppsatan, 0, ppsatan, ppsatan, cave_state, ppsatan, ROT0, "Kato Seisakujo Co., Ltd.", "Poka Poka Satan (Japan)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
+GAME( 1996, ppsatan, 0, ppsatan, ppsatan, cave_state, ppsatan, ROT0, "Kato Seisakujo Co., Ltd.", "Poka Poka Satan (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
-GAME( 1997, ddonpach, 0, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (International, Master Ver. 97/02/05)", GAME_SUPPORTS_SAVE )
-GAME( 1997, ddonpachj, ddonpach, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (Japan, Master Ver. 97/02/05)", GAME_SUPPORTS_SAVE )
+GAME( 1997, ddonpach, 0, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (International, Master Ver. 97/02/05)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, ddonpachj, ddonpach, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (Japan, Master Ver. 97/02/05)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, dfeveron, feversos, dfeveron, cave, cave_state, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)", GAME_SUPPORTS_SAVE )
-GAME( 1998, feversos, 0, dfeveron, cave, cave_state, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)", GAME_SUPPORTS_SAVE )
+GAME( 1998, dfeveron, feversos, dfeveron, cave, cave_state, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, feversos, 0, dfeveron, cave, cave_state, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, esprade, 0, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (International, Ver. 98/04/22)", GAME_SUPPORTS_SAVE )
-GAME( 1998, espradej, esprade, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (Japan, Ver. 98/04/21)", GAME_SUPPORTS_SAVE )
-GAME( 1998, espradejo, esprade, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (Japan, Ver. 98/04/14)", GAME_SUPPORTS_SAVE )
+GAME( 1998, esprade, 0, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (International, Ver. 98/04/22)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, espradej, esprade, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (Japan, Ver. 98/04/21)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, espradejo, esprade, esprade, cave, cave_state, esprade, ROT270, "Cave (Atlus license)", "ESP Ra.De. (Japan, Ver. 98/04/14)", MACHINE_SUPPORTS_SAVE )
-GAME( 1998, uopoko, 0, uopoko, cave, cave_state, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (International)", GAME_SUPPORTS_SAVE )
-GAME( 1998, uopokoj, uopoko, uopoko, cave, cave_state, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1998, uopoko, 0, uopoko, cave, cave_state, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (International)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, uopokoj, uopoko, uopoko, cave, cave_state, uopoko, ROT0, "Cave (Jaleco license)", "Puzzle Uo Poko (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, guwange, 0, guwange, guwange, cave_state, guwange, ROT270, "Cave (Atlus license)", "Guwange (Japan, Master Ver. 99/06/24)", GAME_SUPPORTS_SAVE )
-GAME( 1999, guwanges, guwange, guwange, guwange, cave_state, guwange, ROT270, "Cave (Atlus license)", "Guwange (Japan, Special Ver. 00/07/07)", GAME_SUPPORTS_SAVE )
+GAME( 1999, guwange, 0, guwange, guwange, cave_state, guwange, ROT270, "Cave (Atlus license)", "Guwange (Japan, Master Ver. 99/06/24)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, guwanges, guwange, guwange, guwange, cave_state, guwange, ROT270, "Cave (Atlus license)", "Guwange (Japan, Special Ver. 00/07/07)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, gaia, 0, gaia, gaia, cave_state, gaia, ROT0, "Noise Factory", "Gaia Crusaders", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // cuts out occasionally
+GAME( 1999, gaia, 0, gaia, gaia, cave_state, gaia, ROT0, "Noise Factory", "Gaia Crusaders", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // cuts out occasionally
-GAME( 1999, korokoro, 0, korokoro, korokoro, cave_state, korokoro, ROT0, "Takumi", "Koro Koro Quest (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1999, korokoro, 0, korokoro, korokoro, cave_state, korokoro, ROT0, "Takumi", "Koro Koro Quest (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, crusherm, 0, crusherm, korokoro, cave_state, korokoro, ROT0, "Takumi", "Crusher Makochan (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1999, crusherm, 0, crusherm, korokoro, cave_state, korokoro, ROT0, "Takumi", "Crusher Makochan (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1999, tjumpman, 0, tjumpman, tjumpman, cave_state, tjumpman, ROT0, "Namco", "Tobikose! Jumpman", GAME_SUPPORTS_SAVE )
+GAME( 1999, tjumpman, 0, tjumpman, tjumpman, cave_state, tjumpman, ROT0, "Namco", "Tobikose! Jumpman", MACHINE_SUPPORTS_SAVE )
-GAME( 2001, theroes, 0, gaia, theroes, cave_state, gaia, ROT0, "Primetek Investments", "Thunder Heroes", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // cuts out occasionally
+GAME( 2001, theroes, 0, gaia, theroes, cave_state, gaia, ROT0, "Primetek Investments", "Thunder Heroes", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // cuts out occasionally
diff --git a/src/mame/drivers/cavepc.c b/src/mame/drivers/cavepc.c
index 9ec8de09c2e..fc6702d0877 100644
--- a/src/mame/drivers/cavepc.c
+++ b/src/mame/drivers/cavepc.c
@@ -174,4 +174,4 @@ ROM_END
/*****************************************************************************/
-GAME(2009, deathsm2, 0, cavepc, cavepc, cavepc_state, cavepc, ROT0, "Cave", "Deathsmiles II: Makai no Merry Christmas (2009/10/14 MASTER VER 4.00)", GAME_IS_SKELETON )
+GAME(2009, deathsm2, 0, cavepc, cavepc, cavepc_state, cavepc, ROT0, "Cave", "Deathsmiles II: Makai no Merry Christmas (2009/10/14 MASTER VER 4.00)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/cb2001.c b/src/mame/drivers/cb2001.c
index 9377fd875b0..021a925234c 100644
--- a/src/mame/drivers/cb2001.c
+++ b/src/mame/drivers/cb2001.c
@@ -867,5 +867,5 @@ ROM_START( scherrym )
ROM_LOAD( "n82s135-2.bin", 0x200, 0x100, CRC(a19821db) SHA1(62dda90dd67dfbc0b96f161f1f2b7a46a5805eae) )
ROM_END
-GAME( 2001, cb2001, 0, cb2001, cb2001, driver_device, 0, ROT0, "Dyna", "Cherry Bonus 2001", GAME_NOT_WORKING|GAME_NO_SOUND )
-GAME( 2001, scherrym, 0, cb2001, cb2001, driver_device, 0, ROT0, "Dyna", "Super Cherry Master", GAME_NOT_WORKING|GAME_NO_SOUND ) // 2001 version? (we have bootlegs running on z80 hw of a 1996 version)
+GAME( 2001, cb2001, 0, cb2001, cb2001, driver_device, 0, ROT0, "Dyna", "Cherry Bonus 2001", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )
+GAME( 2001, scherrym, 0, cb2001, cb2001, driver_device, 0, ROT0, "Dyna", "Super Cherry Master", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) // 2001 version? (we have bootlegs running on z80 hw of a 1996 version)
diff --git a/src/mame/drivers/cball.c b/src/mame/drivers/cball.c
index ba770318305..e36a32361c7 100644
--- a/src/mame/drivers/cball.c
+++ b/src/mame/drivers/cball.c
@@ -303,4 +303,4 @@ ROM_START( cball )
ROM_END
-GAME( 1976, cball, 0, cball, cball, driver_device, 0, ROT0, "Atari", "Cannonball (Atari, prototype)", GAME_NO_SOUND | GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1976, cball, 0, cball, cball, driver_device, 0, ROT0, "Atari", "Cannonball (Atari, prototype)", MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cbasebal.c b/src/mame/drivers/cbasebal.c
index 098fe4c35c2..7ae08b20537 100644
--- a/src/mame/drivers/cbasebal.c
+++ b/src/mame/drivers/cbasebal.c
@@ -351,4 +351,4 @@ DRIVER_INIT_MEMBER(cbasebal_state,cbasebal)
*
*************************************/
-GAME( 1989, cbasebal, 0, cbasebal, cbasebal, cbasebal_state, cbasebal, ROT0, "Capcom", "Capcom Baseball (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1989, cbasebal, 0, cbasebal, cbasebal, cbasebal_state, cbasebal, ROT0, "Capcom", "Capcom Baseball (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/cbm2.c b/src/mame/drivers/cbm2.c
index 050ed8fa97c..9ff23fc32da 100644
--- a/src/mess/drivers/cbm2.c
+++ b/src/mame/drivers/cbm2.c
@@ -2749,19 +2749,19 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1983, p500, 0, 0, p500_ntsc, cbm2, driver_device, 0, "Commodore Business Machines", "P500 (NTSC)", GAME_SUPPORTS_SAVE )
-COMP( 1983, p500p, p500, 0, p500_pal, cbm2, driver_device, 0, "Commodore Business Machines", "P500 (PAL)", GAME_SUPPORTS_SAVE )
-COMP( 1983, b500, 0, 0, b128, cbm2, driver_device, 0, "Commodore Business Machines", "B500", GAME_SUPPORTS_SAVE )
-COMP( 1983, b128, b500, 0, b128, cbm2, driver_device, 0, "Commodore Business Machines", "B128", GAME_SUPPORTS_SAVE )
-COMP( 1983, b256, b500, 0, b256, cbm2, driver_device, 0, "Commodore Business Machines", "B256", GAME_SUPPORTS_SAVE )
-COMP( 1983, cbm610, b500, 0, cbm610, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 610", GAME_SUPPORTS_SAVE )
-COMP( 1983, cbm620, b500, 0, cbm620, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 620", GAME_SUPPORTS_SAVE )
-COMP( 1983, cbm620_hu, b500, 0, cbm620, cbm2_hu, driver_device, 0, "Commodore Business Machines", "CBM 620 (Hungary)", GAME_SUPPORTS_SAVE )
-COMP( 1983, b128hp, 0, 0, b128hp, cbm2, driver_device, 0, "Commodore Business Machines", "B128-80HP", GAME_SUPPORTS_SAVE )
-COMP( 1983, b256hp, b128hp, 0, b256hp, cbm2, driver_device, 0, "Commodore Business Machines", "B256-80HP", GAME_SUPPORTS_SAVE )
-COMP( 1983, bx256hp, b128hp, 0, bx256hp, cbm2, driver_device, 0, "Commodore Business Machines", "BX256-80HP", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 8088 co-processor is missing
-COMP( 1983, cbm710, b128hp, 0, cbm710, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 710", GAME_SUPPORTS_SAVE )
-COMP( 1983, cbm720, b128hp, 0, cbm720, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 720", GAME_SUPPORTS_SAVE )
-COMP( 1983, cbm720_de, b128hp, 0, cbm720, cbm2_de, driver_device, 0, "Commodore Business Machines", "CBM 720 (Germany)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-COMP( 1983, cbm720_se, b128hp, 0, cbm720, cbm2_se, driver_device, 0, "Commodore Business Machines", "CBM 720 (Sweden/Finland)", GAME_SUPPORTS_SAVE )
-COMP( 1983, cbm730, b128hp, 0, cbm730, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 730", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 8088 co-processor is missing
+COMP( 1983, p500, 0, 0, p500_ntsc, cbm2, driver_device, 0, "Commodore Business Machines", "P500 (NTSC)", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, p500p, p500, 0, p500_pal, cbm2, driver_device, 0, "Commodore Business Machines", "P500 (PAL)", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, b500, 0, 0, b128, cbm2, driver_device, 0, "Commodore Business Machines", "B500", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, b128, b500, 0, b128, cbm2, driver_device, 0, "Commodore Business Machines", "B128", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, b256, b500, 0, b256, cbm2, driver_device, 0, "Commodore Business Machines", "B256", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, cbm610, b500, 0, cbm610, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 610", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, cbm620, b500, 0, cbm620, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 620", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, cbm620_hu, b500, 0, cbm620, cbm2_hu, driver_device, 0, "Commodore Business Machines", "CBM 620 (Hungary)", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, b128hp, 0, 0, b128hp, cbm2, driver_device, 0, "Commodore Business Machines", "B128-80HP", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, b256hp, b128hp, 0, b256hp, cbm2, driver_device, 0, "Commodore Business Machines", "B256-80HP", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, bx256hp, b128hp, 0, bx256hp, cbm2, driver_device, 0, "Commodore Business Machines", "BX256-80HP", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 8088 co-processor is missing
+COMP( 1983, cbm710, b128hp, 0, cbm710, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 710", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, cbm720, b128hp, 0, cbm720, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 720", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, cbm720_de, b128hp, 0, cbm720, cbm2_de, driver_device, 0, "Commodore Business Machines", "CBM 720 (Germany)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+COMP( 1983, cbm720_se, b128hp, 0, cbm720, cbm2_se, driver_device, 0, "Commodore Business Machines", "CBM 720 (Sweden/Finland)", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, cbm730, b128hp, 0, cbm730, cbm2, driver_device, 0, "Commodore Business Machines", "CBM 730", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 8088 co-processor is missing
diff --git a/src/mame/drivers/cbuster.c b/src/mame/drivers/cbuster.c
index e47fd0e9643..b68b1ce2c94 100644
--- a/src/mame/drivers/cbuster.c
+++ b/src/mame/drivers/cbuster.c
@@ -617,8 +617,8 @@ DRIVER_INIT_MEMBER(cbuster_state,twocrude)
/******************************************************************************/
-GAME( 1990, cbuster, 0, twocrude, twocrude, cbuster_state, twocrude, ROT0, "Data East Corporation", "Crude Buster (World FX version)", GAME_SUPPORTS_SAVE )
-GAME( 1990, cbusterw, cbuster, twocrude, twocrude, cbuster_state, twocrude, ROT0, "Data East Corporation", "Crude Buster (World FU version)", GAME_SUPPORTS_SAVE )
-GAME( 1990, cbusterj, cbuster, twocrude, twocrude, cbuster_state, twocrude, ROT0, "Data East Corporation", "Crude Buster (Japan FR revision 1)", GAME_SUPPORTS_SAVE )
-GAME( 1990, twocrude, cbuster, twocrude, twocrude, cbuster_state, twocrude, ROT0, "Data East USA", "Two Crude (US FT revision 1)", GAME_SUPPORTS_SAVE )
-GAME( 1990, twocrudea,cbuster, twocrude, twocrude, cbuster_state, twocrude, ROT0, "Data East USA", "Two Crude (US FT version)", GAME_SUPPORTS_SAVE )
+GAME( 1990, cbuster, 0, twocrude, twocrude, cbuster_state, twocrude, ROT0, "Data East Corporation", "Crude Buster (World FX version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, cbusterw, cbuster, twocrude, twocrude, cbuster_state, twocrude, ROT0, "Data East Corporation", "Crude Buster (World FU version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, cbusterj, cbuster, twocrude, twocrude, cbuster_state, twocrude, ROT0, "Data East Corporation", "Crude Buster (Japan FR revision 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, twocrude, cbuster, twocrude, twocrude, cbuster_state, twocrude, ROT0, "Data East USA", "Two Crude (US FT revision 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, twocrudea,cbuster, twocrude, twocrude, cbuster_state, twocrude, ROT0, "Data East USA", "Two Crude (US FT version)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/cc40.c b/src/mame/drivers/cc40.c
index b5cfcf4cad1..ba5e937d423 100644
--- a/src/mess/drivers/cc40.c
+++ b/src/mame/drivers/cc40.c
@@ -638,4 +638,4 @@ ROM_START( cc40 )
ROM_END
-COMP( 1983, cc40, 0, 0, cc40, cc40, driver_device, 0, "Texas Instruments", "Compact Computer 40", GAME_SUPPORTS_SAVE )
+COMP( 1983, cc40, 0, 0, cc40, cc40, driver_device, 0, "Texas Instruments", "Compact Computer 40", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ccastles.c b/src/mame/drivers/ccastles.c
index 679302610eb..7e6ee7c0f27 100644
--- a/src/mame/drivers/ccastles.c
+++ b/src/mame/drivers/ccastles.c
@@ -660,11 +660,11 @@ ROM_END
*
*************************************/
-GAME( 1983, ccastles, 0, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 4)", GAME_SUPPORTS_SAVE )
-GAME( 1983, ccastlesg, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3, German)", GAME_SUPPORTS_SAVE )
-GAME( 1983, ccastlesp, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3, Spanish)", GAME_SUPPORTS_SAVE )
-GAME( 1983, ccastlesf, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3, French)", GAME_SUPPORTS_SAVE )
-GAME( 1983, ccastles3, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3)", GAME_SUPPORTS_SAVE )
-GAME( 1983, ccastles2, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 2)", GAME_SUPPORTS_SAVE )
-GAME( 1983, ccastles1, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 1)", GAME_SUPPORTS_SAVE )
-GAME( 1983, ccastlesj, ccastles, ccastles, ccastlesj, driver_device,0, ROT0, "Atari", "Crystal Castles (joystick version)", GAME_SUPPORTS_SAVE )
+GAME( 1983, ccastles, 0, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ccastlesg, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3, German)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ccastlesp, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3, Spanish)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ccastlesf, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3, French)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ccastles3, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ccastles2, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ccastles1, ccastles, ccastles, ccastles, driver_device, 0, ROT0, "Atari", "Crystal Castles (version 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ccastlesj, ccastles, ccastles, ccastlesj, driver_device,0, ROT0, "Atari", "Crystal Castles (joystick version)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cchance.c b/src/mame/drivers/cchance.c
index cf684b234d2..0fd606a3051 100644
--- a/src/mame/drivers/cchance.c
+++ b/src/mame/drivers/cchance.c
@@ -164,6 +164,12 @@ static INPUT_PORTS_START( cchance )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ // These ports are required in tnzs_state
+ PORT_START("IN1")
+ PORT_START("IN2")
+ PORT_START("DSWA")
+ PORT_START("DSWB")
INPUT_PORTS_END
static const gfx_layout cchance_layout =
@@ -250,4 +256,4 @@ ROM_START( cchance )
ROM_LOAD( "prom2", 0x0200, 0x0200, NO_DUMP )
ROM_END
-GAME( 1987?, cchance, 0, cchance, cchance, driver_device, 0, ROT0, "<unknown>", "Cherry Chance", GAME_NOT_WORKING | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1987?, cchance, 0, cchance, cchance, driver_device, 0, ROT0, "<unknown>", "Cherry Chance", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cchasm.c b/src/mame/drivers/cchasm.c
index 1bac5ec616f..4f75476305f 100644
--- a/src/mame/drivers/cchasm.c
+++ b/src/mame/drivers/cchasm.c
@@ -254,5 +254,5 @@ ROM_END
*
*************************************/
-GAME( 1983, cchasm, 0, cchasm, cchasm, driver_device, 0, ROT270, "Cinematronics / GCE", "Cosmic Chasm (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1983, cchasm1, cchasm, cchasm, cchasm, driver_device, 0, ROT270, "Cinematronics / GCE", "Cosmic Chasm (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1983, cchasm, 0, cchasm, cchasm, driver_device, 0, ROT270, "Cinematronics / GCE", "Cosmic Chasm (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, cchasm1, cchasm, cchasm, cchasm, driver_device, 0, ROT270, "Cinematronics / GCE", "Cosmic Chasm (set 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cclimber.c b/src/mame/drivers/cclimber.c
index 6cfd1382651..eb404444a43 100644
--- a/src/mame/drivers/cclimber.c
+++ b/src/mame/drivers/cclimber.c
@@ -375,6 +375,10 @@ static ADDRESS_MAP_START( yamato_map, AS_PROGRAM, 8, cclimber_state )
AM_RANGE(0xba00, 0xba00) AM_READ_PORT("START") /* maybe a mirror of b800 */
ADDRESS_MAP_END
+static ADDRESS_MAP_START( yamato_decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, cclimber_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM AM_SHARE("decrypted_opcodes")
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( toprollr_map, AS_PROGRAM, 8, cclimber_state )
AM_RANGE(0x0000, 0x5fff) AM_ROMBANK("bank1")
AM_RANGE(0x6000, 0x6bff) AM_RAM AM_SHARE("ram")
@@ -1056,7 +1060,7 @@ static MACHINE_CONFIG_DERIVED( yamato, root )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(yamato_map)
MCFG_CPU_IO_MAP(yamato_portmap)
- MCFG_CPU_DECRYPTED_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_CPU_DECRYPTED_OPCODES_MAP(yamato_decrypted_opcodes_map)
MCFG_CPU_ADD("audiocpu", Z80, 3072000) /* 3.072 MHz ? */
MCFG_CPU_PROGRAM_MAP(yamato_audio_map)
@@ -2415,7 +2419,7 @@ DRIVER_INIT_MEMBER(cclimber_state,yamato)
{ 0x20,0xa0,0x28,0xa8 }, { 0x00,0x08,0x20,0x28 } /* ...1...1...1...1 */
};
- sega_decode(memregion("maincpu")->base(), m_decrypted_opcodes, 0x6000, convtable);
+ sega_decode(memregion("maincpu")->base(), m_decrypted_opcodes, 0x8000, convtable);
save_item(NAME(m_yamato_p0));
save_item(NAME(m_yamato_p1));
@@ -2473,56 +2477,56 @@ DRIVER_INIT_MEMBER(cclimber_state,dking)
}
-GAME( 1980, cclimber, 0, cclimberx, cclimber, cclimber_state, cclimber, ROT0, "Nichibutsu", "Crazy Climber (US)", GAME_SUPPORTS_SAVE )
-GAME( 1980, cclimberj, cclimber, cclimberx, cclimberj, cclimber_state,cclimberj,ROT0, "Nichibutsu", "Crazy Climber (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1980, ccboot, cclimber, cclimberx, cclimber, cclimber_state, cclimberj,ROT0, "bootleg", "Crazy Climber (bootleg set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, ccboot2, cclimber, cclimberx, cclimber, cclimber_state, cclimberj,ROT0, "bootleg", "Crazy Climber (bootleg set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1980, ccbootmr, cclimber, cclimberx, cclimber, cclimber_state, cclimberj,ROT0, "bootleg (Model Racing)", "Crazy Climber (Model Racing bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1980, cclimbroper, cclimber, cclimber, cclimber, driver_device, 0, ROT0, "bootleg (Operamatic)", "Crazy Climber (Spanish, Operamatic bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1980, cclimber, 0, cclimberx, cclimber, cclimber_state, cclimber, ROT0, "Nichibutsu", "Crazy Climber (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, cclimberj, cclimber, cclimberx, cclimberj, cclimber_state,cclimberj,ROT0, "Nichibutsu", "Crazy Climber (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, ccboot, cclimber, cclimberx, cclimber, cclimber_state, cclimberj,ROT0, "bootleg", "Crazy Climber (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, ccboot2, cclimber, cclimberx, cclimber, cclimber_state, cclimberj,ROT0, "bootleg", "Crazy Climber (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, ccbootmr, cclimber, cclimberx, cclimber, cclimber_state, cclimberj,ROT0, "bootleg (Model Racing)", "Crazy Climber (Model Racing bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, cclimbroper, cclimber, cclimber, cclimber, driver_device, 0, ROT0, "bootleg (Operamatic)", "Crazy Climber (Spanish, Operamatic bootleg)", MACHINE_SUPPORTS_SAVE )
/* these sets have ugly colours, no extra attract screen, and no graphics for the extra attract screen in the BG roms
- there is a Falcon logo in the text roms which is unused
- does the code to display the extra screen still exist in the roms? */
-GAME( 1981, ckong, 0, cclimber, ckong, driver_device, 0, ROT270, "Kyoei / Falcon", "Crazy Kong", GAME_SUPPORTS_SAVE ) // on a Falcon FCK-01 PCB, but doesn't display any Falcon copyright
-GAME( 1981, ckongalc, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Alca)", "Crazy Kong (Alca bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1981, monkeyd, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Monkey Donkey", GAME_SUPPORTS_SAVE )
-GAME( 1981, dking, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey King", GAME_SUPPORTS_SAVE ) // supposedly, possibly by Hafasonic?
-GAME( 1981, ckongdks, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey Kong (Spanish Crazy Kong bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1981, ckong, 0, cclimber, ckong, driver_device, 0, ROT270, "Kyoei / Falcon", "Crazy Kong", MACHINE_SUPPORTS_SAVE ) // on a Falcon FCK-01 PCB, but doesn't display any Falcon copyright
+GAME( 1981, ckongalc, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Alca)", "Crazy Kong (Alca bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, monkeyd, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Monkey Donkey", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, dking, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey King", MACHINE_SUPPORTS_SAVE ) // supposedly, possibly by Hafasonic?
+GAME( 1981, ckongdks, ckong, cclimber, ckong, cclimber_state, dking, ROT270, "bootleg", "Donkey Kong (Spanish Crazy Kong bootleg)", MACHINE_SUPPORTS_SAVE )
/* these sets have correct colours, and also contain the graphics used for the extra attract screen in the BG roms, but it is unused
- the Falcon logo in the text roms is still unused
- does the code to display the extra screen still exist in the roms? */
-GAME( 1981, ckongo, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Orca)", "Crazy Kong (Orca bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1981, bigkong, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Big Kong", GAME_SUPPORTS_SAVE )
+GAME( 1981, ckongo, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Orca)", "Crazy Kong (Orca bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, bigkong, ckong, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Big Kong", MACHINE_SUPPORTS_SAVE )
/* these sets have correct colours, and the extra attract screen, they also make use of the Falcon logo, some sets hack out the Falcon
text on the extra screen */
-GAME( 1981, ckongpt2, 0, cclimber, ckong, driver_device, 0, ROT270, "Falcon", "Crazy Kong Part II (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, ckongpt2a, ckongpt2, cclimber, ckong, driver_device, 0, ROT270, "Falcon", "Crazy Kong Part II (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1981, ckongpt2j, ckongpt2, cclimber, ckong, driver_device, 0, ROT270, "Falcon", "Crazy Kong Part II (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1981, ckongpt2jeu, ckongpt2, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Jeutel)", "Crazy Kong Part II (Jeutel bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1981, ckongpt2b, ckongpt2, cclimber, ckongb, cclimber_state, ckongb, ROT270, "bootleg", "Crazy Kong Part II (alternative levels)", GAME_SUPPORTS_SAVE )
+GAME( 1981, ckongpt2, 0, cclimber, ckong, driver_device, 0, ROT270, "Falcon", "Crazy Kong Part II (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ckongpt2a, ckongpt2, cclimber, ckong, driver_device, 0, ROT270, "Falcon", "Crazy Kong Part II (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ckongpt2j, ckongpt2, cclimber, ckong, driver_device, 0, ROT270, "Falcon", "Crazy Kong Part II (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ckongpt2jeu, ckongpt2, cclimber, ckong, driver_device, 0, ROT270, "bootleg (Jeutel)", "Crazy Kong Part II (Jeutel bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ckongpt2b, ckongpt2, cclimber, ckongb, cclimber_state, ckongb, ROT270, "bootleg", "Crazy Kong Part II (alternative levels)", MACHINE_SUPPORTS_SAVE )
// see bagman.c for parent
-GAME( 1981, bagmanf, bagman, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Bagman (bootleg on Crazy Kong hardware)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1981, bagmanf, bagman, cclimber, ckong, driver_device, 0, ROT270, "bootleg", "Bagman (bootleg on Crazy Kong hardware)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
-GAME( 1981, rpatrol, 0, cclimber, rpatrol, driver_device, 0, ROT0, "Orca", "River Patrol (Orca)", GAME_SUPPORTS_SAVE )
-GAME( 1981, rpatrolb, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "bootleg", "River Patrol (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1981, silvland, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "Falcon", "Silver Land", GAME_SUPPORTS_SAVE )
+GAME( 1981, rpatrol, 0, cclimber, rpatrol, driver_device, 0, ROT0, "Orca", "River Patrol (Orca)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, rpatrolb, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "bootleg", "River Patrol (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, silvland, rpatrol, cclimber, rpatrol, driver_device, 0, ROT0, "Falcon", "Silver Land", MACHINE_SUPPORTS_SAVE )
// see pacman.c for parent
-GAME( 1985, cannonb, cannonbp, cannonb, cannonb, cclimber_state, cannonb, ROT90, "bootleg (Soft)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 1, buggy)" , GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game
-GAME( 1985, cannonb2, cannonbp, cannonb, cannonb, cclimber_state, cannonb2, ROT90, "bootleg (TV Game Gruenberg)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 2, buggy)", GAME_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game
-GAME( 1985, cannonb3, cannonbp, cannonb, cannonb, cclimber_state, cannonb2, ROT90, "bootleg (Soft)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 3, no bonus game)", GAME_SUPPORTS_SAVE ) // the bonus game is patched out, thus avoiding the protection issue
+GAME( 1985, cannonb, cannonbp, cannonb, cannonb, cclimber_state, cannonb, ROT90, "bootleg (Soft)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 1, buggy)" , MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game
+GAME( 1985, cannonb2, cannonbp, cannonb, cannonb, cclimber_state, cannonb2, ROT90, "bootleg (TV Game Gruenberg)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 2, buggy)", MACHINE_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game
+GAME( 1985, cannonb3, cannonbp, cannonb, cannonb, cclimber_state, cannonb2, ROT90, "bootleg (Soft)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 3, no bonus game)", MACHINE_SUPPORTS_SAVE ) // the bonus game is patched out, thus avoiding the protection issue
-GAME( 1982, swimmer, 0, swimmer, swimmer, driver_device, 0, ROT0, "Tehkan", "Swimmer (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1982, swimmera, swimmer, swimmer, swimmer, driver_device, 0, ROT0, "Tehkan", "Swimmer (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1982, swimmerb, swimmer, swimmer, swimmerb, driver_device, 0, ROT0, "Tehkan", "Swimmer (set 3)", GAME_SUPPORTS_SAVE )
+GAME( 1982, swimmer, 0, swimmer, swimmer, driver_device, 0, ROT0, "Tehkan", "Swimmer (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, swimmera, swimmer, swimmer, swimmer, driver_device, 0, ROT0, "Tehkan", "Swimmer (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, swimmerb, swimmer, swimmer, swimmerb, driver_device, 0, ROT0, "Tehkan", "Swimmer (set 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, guzzler, 0, guzzler, guzzler, driver_device, 0, ROT90, "Tehkan", "Guzzler", GAME_SUPPORTS_SAVE )
-GAME( 1983, guzzlers, guzzler, guzzler, guzzler, driver_device, 0, ROT90, "Tehkan", "Guzzler (Swimmer Conversion)", GAME_SUPPORTS_SAVE )
+GAME( 1983, guzzler, 0, guzzler, guzzler, driver_device, 0, ROT90, "Tehkan", "Guzzler", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, guzzlers, guzzler, guzzler, guzzler, driver_device, 0, ROT90, "Tehkan", "Guzzler (Swimmer Conversion)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, yamato, 0, yamato, yamato, cclimber_state, yamato, ROT90, "Sega", "Yamato (US)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1983, yamato2, yamato, yamato, yamato, cclimber_state, yamato, ROT90, "Sega", "Yamato (World?)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1983, yamato, 0, yamato, yamato, cclimber_state, yamato, ROT90, "Sega", "Yamato (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, yamato2, yamato, yamato, yamato, cclimber_state, yamato, ROT90, "Sega", "Yamato (World?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1983, toprollr, 0, toprollr, toprollr, cclimber_state, toprollr, ROT90, "Jaleco", "Top Roller", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1983, toprollr, 0, toprollr, toprollr, cclimber_state, toprollr, ROT90, "Jaleco", "Top Roller", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/ccs2810.c b/src/mame/drivers/ccs2810.c
index 1121a6f2991..5a38e72d9d6 100644
--- a/src/mess/drivers/ccs2810.c
+++ b/src/mame/drivers/ccs2810.c
@@ -356,6 +356,7 @@ static MACHINE_CONFIG_START( ccs2422, ccs_state )
/* Devices */
MCFG_MB8877_ADD("fdc", XTAL_16MHz / 8) // UB1793 or MB8877
MCFG_FLOPPY_DRIVE_ADD("fdc:0", ccs_floppies, "8sssd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MACHINE_CONFIG_END
/* ROM definition */
@@ -377,5 +378,5 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1980, ccs2810, 0, 0, ccs2810, ccs2810, ccs_state, ccs2810, "California Computer Systems", "CCS Model 2810 CPU card", GAME_NO_SOUND_HW)
-COMP( 1980, ccs2422, ccs2810, 0, ccs2422, ccs2810, ccs_state, ccs2422, "California Computer Systems", "CCS Model 2422B FDC card", GAME_NOT_WORKING | GAME_NO_SOUND_HW)
+COMP( 1980, ccs2810, 0, 0, ccs2810, ccs2810, ccs_state, ccs2810, "California Computer Systems", "CCS Model 2810 CPU card", MACHINE_NO_SOUND_HW)
+COMP( 1980, ccs2422, ccs2810, 0, ccs2422, ccs2810, ccs_state, ccs2422, "California Computer Systems", "CCS Model 2422B FDC card", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
diff --git a/src/mess/drivers/ccs300.c b/src/mame/drivers/ccs300.c
index 10f11e975b5..a0842350bd2 100644
--- a/src/mess/drivers/ccs300.c
+++ b/src/mame/drivers/ccs300.c
@@ -139,4 +139,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 19??, ccs300, ccs2810, 0, ccs300, ccs300, ccs300_state, ccs300, "California Computer Systems", "CCS Model 300", GAME_IS_SKELETON )
+COMP( 19??, ccs300, ccs2810, 0, ccs300, ccs300, ccs300_state, ccs300, "California Computer Systems", "CCS Model 300", MACHINE_IS_SKELETON )
diff --git a/src/mess/drivers/cd2650.c b/src/mame/drivers/cd2650.c
index 2e2b8e0d895..2e2b8e0d895 100644
--- a/src/mess/drivers/cd2650.c
+++ b/src/mame/drivers/cd2650.c
diff --git a/src/mess/drivers/cdc721.c b/src/mame/drivers/cdc721.c
index e6f50cdaa47..0f89b5f2944 100644
--- a/src/mess/drivers/cdc721.c
+++ b/src/mame/drivers/cdc721.c
@@ -141,4 +141,4 @@ ROM_START( cdc721 )
ROM_LOAD( "66315039", 0x0000, 0x1000, CRC(5c9aa968) SHA1(3ec7c5f25562579e6ed3fda7562428ff5e6b9550) ) // chargen
ROM_END
-COMP( 1981, cdc721, 0, 0, cdc721, cdc721, driver_device, 0, "Control Data Corporation", "CDC721 Terminal", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 1981, cdc721, 0, 0, cdc721, cdc721, driver_device, 0, "Control Data Corporation", "CDC721 Terminal", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/cdi.c b/src/mame/drivers/cdi.c
index 6b928c15cdc..4ad4a26ea1f 100644
--- a/src/mame/drivers/cdi.c
+++ b/src/mame/drivers/cdi.c
@@ -6,7 +6,7 @@
Philips CD-I-based games
------------------------
- Preliminary MAME driver by Harmony
+ Preliminary MAME driver by Ryan Holtz
Help provided by CD-i Fan
@@ -632,23 +632,23 @@ ROM_END
*************************/
// BIOS / System
-CONS( 1991, cdimono1, 0, 0, cdimono1, cdi, driver_device, 0, "Philips", "CD-i (Mono-I) (PAL)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+CONS( 1991, cdimono1, 0, 0, cdimono1, cdi, driver_device, 0, "Philips", "CD-i (Mono-I) (PAL)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
// The Quizard games are RETAIL CD-i units, with additional JAMMA adapters & dongles for protection, hence being 'clones' of the system.
-GAME( 1995, cdibios, 0, cdi_base, quizard, driver_device, 0, ROT0, "Philips", "CD-i Bios", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_IS_BIOS_ROOT )
+GAME( 1995, cdibios, 0, cdi_base, quizard, driver_device, 0, ROT0, "Philips", "CD-i Bios", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IS_BIOS_ROOT )
-GAME( 1995, quizard, cdibios, quizard18, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.8)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
-GAME( 1995, quizard_17, quizard, quizard17, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.7)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
-GAME( 1995, quizard_12, quizard, quizard12, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.2)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
-GAME( 1995, quizard_10, quizard, quizard12, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.0)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
+GAME( 1995, quizard, cdibios, quizard18, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.8)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1995, quizard_17, quizard, quizard17, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.7)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1995, quizard_12, quizard, quizard12, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1995, quizard_10, quizard, quizard12, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard (v1.0)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1995, quizard2, cdibios, quizard23, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 2 (v2.3)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
-GAME( 1995, quizard2_22, quizard2, quizard22, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 2 (v2.2)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
+GAME( 1995, quizard2, cdibios, quizard23, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 2 (v2.3)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1995, quizard2_22, quizard2, quizard22, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 2 (v2.2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1995, quizard3, cdibios, quizard3, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 3 (v3.4)", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
-GAME( 1996, quizard3_32, quizard3, quizard32, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 3 (v3.2)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
+GAME( 1995, quizard3, cdibios, quizard3, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 3 (v3.4)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1996, quizard3_32, quizard3, quizard32, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 3 (v3.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
-GAME( 1998, quizard4, cdibios, quizard4r42, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.2)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION ) // doesn't boot
-GAME( 1998, quizard4_41, quizard4, quizard4r41, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.1)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
-GAME( 1997, quizard4_40, quizard4, quizard4r40, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.0)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
+GAME( 1998, quizard4, cdibios, quizard4r42, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) // doesn't boot
+GAME( 1998, quizard4_41, quizard4, quizard4r41, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1997, quizard4_40, quizard4, quizard4r40, quizard, driver_device, 0, ROT0, "TAB Austria", "Quizard 4 Rainbow (v4.0)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
diff --git a/src/mame/drivers/centiped.c b/src/mame/drivers/centiped.c
index b778720c6ac..e69467346a9 100644
--- a/src/mame/drivers/centiped.c
+++ b/src/mame/drivers/centiped.c
@@ -2187,23 +2187,23 @@ DRIVER_INIT_MEMBER(centiped_state,multiped)
*************************************/
// Centipede, Millipede, and clones
-GAME( 1980, centiped, 0, centiped, centiped4,driver_device, 0, ROT270, "Atari", "Centipede (revision 4)", GAME_SUPPORTS_SAVE ) /* 1 Player Only with Timer Options */
-GAME( 1980, centiped3, centiped, centiped, centiped, driver_device, 0, ROT270, "Atari", "Centipede (revision 3)", GAME_SUPPORTS_SAVE )
-GAME( 1980, centiped2, centiped, centiped, centiped, driver_device, 0, ROT270, "Atari", "Centipede (revision 2)", GAME_SUPPORTS_SAVE )
-GAME( 1980, centiped1, centiped, centiped, centiped, driver_device, 0, ROT270, "Atari", "Centipede (revision 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, centipdb, centiped, centipdb, centiped, driver_device, 0, ROT270, "bootleg", "Centipede (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1989, centipdd, centiped, centiped, centiped, driver_device, 0, ROT270, "hack (Two-Bit Score)", "Centipede Dux (hack)", GAME_SUPPORTS_SAVE )
-GAME( 1980, caterplr, centiped, caterplr, caterplr, driver_device, 0, ROT270, "bootleg (Olympia)", "Caterpillar (bootleg of Centipede)", GAME_SUPPORTS_SAVE )
-GAME( 1980, millpac, centiped, centipdb, centiped, driver_device, 0, ROT270, "bootleg? (Valadon Automation)", "Millpac (bootleg of Centipede)", GAME_SUPPORTS_SAVE )
-GAME( 1980, magworm, centiped, magworm, magworm, driver_device, 0, ROT270, "bootleg (Sidam)", "Magic Worm (bootleg of Centipede, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, magworma, centiped, magworm, magworm, driver_device, 0, ROT270, "bootleg", "Magic Worm (bootleg of Centipede, set 2)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
-GAME( 1982, milliped, 0, milliped, milliped, driver_device, 0, ROT270, "Atari", "Millipede", GAME_SUPPORTS_SAVE )
-GAME( 1989, millipdd, milliped, milliped, milliped, driver_device, 0, ROT270, "hack (Two-Bit Score)", "Millipede Dux (hack)", GAME_SUPPORTS_SAVE )
-GAME( 2002, multiped, 0, multiped, multiped, centiped_state, multiped, ROT270, "hack (Braze Technologies)", "Multipede (Centipede/Millipede multigame kit)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1980, centiped, 0, centiped, centiped4,driver_device, 0, ROT270, "Atari", "Centipede (revision 4)", MACHINE_SUPPORTS_SAVE ) /* 1 Player Only with Timer Options */
+GAME( 1980, centiped3, centiped, centiped, centiped, driver_device, 0, ROT270, "Atari", "Centipede (revision 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, centiped2, centiped, centiped, centiped, driver_device, 0, ROT270, "Atari", "Centipede (revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, centiped1, centiped, centiped, centiped, driver_device, 0, ROT270, "Atari", "Centipede (revision 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, centipdb, centiped, centipdb, centiped, driver_device, 0, ROT270, "bootleg", "Centipede (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, centipdd, centiped, centiped, centiped, driver_device, 0, ROT270, "hack (Two-Bit Score)", "Centipede Dux (hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, caterplr, centiped, caterplr, caterplr, driver_device, 0, ROT270, "bootleg (Olympia)", "Caterpillar (bootleg of Centipede)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, millpac, centiped, centipdb, centiped, driver_device, 0, ROT270, "bootleg? (Valadon Automation)", "Millpac (bootleg of Centipede)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, magworm, centiped, magworm, magworm, driver_device, 0, ROT270, "bootleg (Sidam)", "Magic Worm (bootleg of Centipede, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, magworma, centiped, magworm, magworm, driver_device, 0, ROT270, "bootleg", "Magic Worm (bootleg of Centipede, set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1982, milliped, 0, milliped, milliped, driver_device, 0, ROT270, "Atari", "Millipede", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, millipdd, milliped, milliped, milliped, driver_device, 0, ROT270, "hack (Two-Bit Score)", "Millipede Dux (hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2002, multiped, 0, multiped, multiped, centiped_state, multiped, ROT270, "hack (Braze Technologies)", "Multipede (Centipede/Millipede multigame kit)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
// other Atari games
-GAME( 1980, warlords, 0, warlords, warlords, driver_device, 0, ROT0, "Atari", "Warlords", GAME_SUPPORTS_SAVE )
+GAME( 1980, warlords, 0, warlords, warlords, driver_device, 0, ROT0, "Atari", "Warlords", MACHINE_SUPPORTS_SAVE )
GAME( 1981, mazeinv, 0, mazeinv, mazeinv, driver_device, 0, ROT270, "Atari", "Maze Invaders (prototype)", 0 )
// other manufacturers
-GAME( 1985, bullsdrt, 0, bullsdrt, bullsdrt, centiped_state, bullsdrt, ROT270, "Shinkai Inc. (Magic Electronics Inc. license)", "Bulls Eye Darts", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1985, bullsdrt, 0, bullsdrt, bullsdrt, centiped_state, bullsdrt, ROT270, "Shinkai Inc. (Magic Electronics Inc. license)", "Bulls Eye Darts", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cesclass.c b/src/mame/drivers/cesclass.c
index 6619aa9752c..e1e9f7d3e79 100644
--- a/src/mame/drivers/cesclass.c
+++ b/src/mame/drivers/cesclass.c
@@ -298,6 +298,6 @@ ROM_START(tsclass)
ROM_END
-GAME(1997, hrclass, 0, cesclassic, cesclassic, driver_device, 0, ROT0, "Creative Electronics And Software", "Home Run Classic (v1.21 12-feb-1997)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
-GAME(1997, ccclass, 0, cesclassic, cesclassic, driver_device, 0, ROT0, "Creative Electronics And Software", "Country Club Classic (v1.10 03-apr-1997)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
-GAME(1997, tsclass, 0, cesclassic, cesclassic, driver_device, 0, ROT0, "Creative Electronics And Software", "Trap Shoot Classic (v1.0 21-mar-1997)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
+GAME(1997, hrclass, 0, cesclassic, cesclassic, driver_device, 0, ROT0, "Creative Electronics And Software", "Home Run Classic (v1.21 12-feb-1997)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME(1997, ccclass, 0, cesclassic, cesclassic, driver_device, 0, ROT0, "Creative Electronics And Software", "Country Club Classic (v1.10 03-apr-1997)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME(1997, tsclass, 0, cesclassic, cesclassic, driver_device, 0, ROT0, "Creative Electronics And Software", "Trap Shoot Classic (v1.0 21-mar-1997)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mess/drivers/cfx9850.c b/src/mame/drivers/cfx9850.c
index 7bf4d7b0edb..30ec1e78b4b 100644
--- a/src/mess/drivers/cfx9850.c
+++ b/src/mame/drivers/cfx9850.c
@@ -290,4 +290,4 @@ ROM_START( cfx9850 )
ROM_END
-COMP( 1996, cfx9850, 0, 0, cfx9850, cfx9850, driver_device, 0, "Casio", "CFX-9850G", GAME_NO_SOUND | GAME_NOT_WORKING )
+COMP( 1996, cfx9850, 0, 0, cfx9850, cfx9850, driver_device, 0, "Casio", "CFX-9850G", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/cgc7900.c b/src/mame/drivers/cgc7900.c
index ed30f5ac999..55123f9be74 100644
--- a/src/mess/drivers/cgc7900.c
+++ b/src/mame/drivers/cgc7900.c
@@ -445,4 +445,4 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1980, cgc7900, 0, 0, cgc7900, cgc7900, driver_device, 0, "Chromatics", "CGC 7900", GAME_NOT_WORKING)
+COMP( 1980, cgc7900, 0, 0, cgc7900, cgc7900, driver_device, 0, "Chromatics", "CGC 7900", MACHINE_NOT_WORKING)
diff --git a/src/mess/drivers/cgenie.c b/src/mame/drivers/cgenie.c
index 3a5776814da..3a5776814da 100644
--- a/src/mess/drivers/cgenie.c
+++ b/src/mame/drivers/cgenie.c
diff --git a/src/mame/drivers/chaknpop.c b/src/mame/drivers/chaknpop.c
index 742b1df5516..f416ccc5fcd 100644
--- a/src/mame/drivers/chaknpop.c
+++ b/src/mame/drivers/chaknpop.c
@@ -418,4 +418,4 @@ ROM_END
/* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME ) */
-GAME( 1983, chaknpop, 0, chaknpop, chaknpop, driver_device, 0, ROT0, "Taito Corporation", "Chack'n Pop", GAME_SUPPORTS_SAVE )
+GAME( 1983, chaknpop, 0, chaknpop, chaknpop, driver_device, 0, ROT0, "Taito Corporation", "Chack'n Pop", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cham24.c b/src/mame/drivers/cham24.c
index 4638c07dc9f..189c54b6d31 100644
--- a/src/mame/drivers/cham24.c
+++ b/src/mame/drivers/cham24.c
@@ -378,4 +378,4 @@ ROM_START( cham24 )
ROM_LOAD( "24-3.u3", 0x0000, 0x10000, CRC(e97955fa) SHA1(6d686c5d0967c9c2f40dbd8e6a0c0907606f2c7d) ) // unknown rom
ROM_END
-GAME( 2002, cham24, 0, cham24, cham24, cham24_state, cham24, ROT0, "bootleg", "Chameleon 24", GAME_NOT_WORKING )
+GAME( 2002, cham24, 0, cham24, cham24, cham24_state, cham24, ROT0, "bootleg", "Chameleon 24", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/champbas.c b/src/mame/drivers/champbas.c
index 4329340173a..8aaad810c17 100644
--- a/src/mame/drivers/champbas.c
+++ b/src/mame/drivers/champbas.c
@@ -1255,19 +1255,19 @@ DRIVER_INIT_MEMBER(champbas_state,exctsccr)
*
*************************************/
-GAME( 1982, talbot, 0, talbot, talbot, driver_device, 0, ROT270, "Alpha Denshi Co. (Volt Electronics license)", "Talbot", GAME_SUPPORTS_SAVE )
-
-GAME( 1983, champbas, 0, champbas, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co. (Sega license)", "Champion Base Ball", GAME_SUPPORTS_SAVE )
-GAME( 1983, champbasj, champbas, champmcu, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co.", "Champion Base Ball (Japan set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1983, champbasja, champbas, champbas, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co.", "Champion Base Ball (Japan set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1983, champbb2, 0, champmcu, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co. (Sega license)", "Champion Base Ball Part-2: Pair Play (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1983, champbb2a, champbb2, champmcu, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co.", "Champion Baseball II (set 2)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // no dump
-GAME( 1983, champbb2j, champbb2, champmcu, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co.", "Champion Baseball II (Japan)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-
-GAME( 1983, exctsccr, 0, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer", GAME_SUPPORTS_SAVE )
-GAME( 1983, exctsccru, exctsccr, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (US)", GAME_SUPPORTS_SAVE )
-GAME( 1983, exctsccra, exctsccr, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (alternate music)", GAME_SUPPORTS_SAVE )
-GAME( 1983, exctsccrj, exctsccr, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1983, exctsccrjo, exctsccr, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (Japan, older)", GAME_SUPPORTS_SAVE )
-GAME( 1983, exctsccrb, exctsccr, exctsccrb,exctsccr, champbas_state, exctsccr, ROT270, "bootleg", "Exciting Soccer (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1984, exctscc2, 0, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer II", GAME_SUPPORTS_SAVE )
+GAME( 1982, talbot, 0, talbot, talbot, driver_device, 0, ROT270, "Alpha Denshi Co. (Volt Electronics license)", "Talbot", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1983, champbas, 0, champbas, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co. (Sega license)", "Champion Base Ball", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, champbasj, champbas, champmcu, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co.", "Champion Base Ball (Japan set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, champbasja, champbas, champbas, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co.", "Champion Base Ball (Japan set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, champbb2, 0, champmcu, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co. (Sega license)", "Champion Base Ball Part-2: Pair Play (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, champbb2a, champbb2, champmcu, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co.", "Champion Baseball II (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // no dump
+GAME( 1983, champbb2j, champbb2, champmcu, champbas, champbas_state, champbas, ROT0, "Alpha Denshi Co.", "Champion Baseball II (Japan)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1983, exctsccr, 0, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, exctsccru, exctsccr, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, exctsccra, exctsccr, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (alternate music)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, exctsccrj, exctsccr, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, exctsccrjo, exctsccr, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer (Japan, older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, exctsccrb, exctsccr, exctsccrb,exctsccr, champbas_state, exctsccr, ROT270, "bootleg", "Exciting Soccer (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, exctscc2, 0, exctsccr, exctsccr, champbas_state, exctsccr, ROT270, "Alpha Denshi Co.", "Exciting Soccer II", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/champbwl.c b/src/mame/drivers/champbwl.c
index 6fb8799de32..709cd463600 100644
--- a/src/mame/drivers/champbwl.c
+++ b/src/mame/drivers/champbwl.c
@@ -713,5 +713,5 @@ ROM_START( doraemon )
ROM_LOAD( "u27-01.bin", 0x00200, 0x200, CRC(66245fc7) SHA1(c94d9dce7b557c21a3dc1f3f8a1b29594715c994) )
ROM_END
-GAME( 1993?,doraemon, 0, doraemon, doraemon, driver_device, 0, ROT0, "Sunsoft / Epoch", "Doraemon no Eawase Montage (prototype)", GAME_SUPPORTS_SAVE ) // year not shown, datecodes on pcb suggests late-1993
-GAME( 1989, champbwl, 0, champbwl, champbwl, driver_device, 0, ROT270, "Seta / Romstar Inc.", "Championship Bowling", GAME_SUPPORTS_SAVE )
+GAME( 1993?,doraemon, 0, doraemon, doraemon, driver_device, 0, ROT0, "Sunsoft / Epoch", "Doraemon no Eawase Montage (prototype)", MACHINE_SUPPORTS_SAVE ) // year not shown, datecodes on pcb suggests late-1993
+GAME( 1989, champbwl, 0, champbwl, champbwl, driver_device, 0, ROT270, "Seta / Romstar Inc.", "Championship Bowling", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/chanbara.c b/src/mame/drivers/chanbara.c
index 0c81b40e41b..238936a82a0 100644
--- a/src/mame/drivers/chanbara.c
+++ b/src/mame/drivers/chanbara.c
@@ -150,6 +150,7 @@ TILE_GET_INFO_MEMBER(chanbara_state::get_bg_tile_info)
{
int code = m_videoram[tile_index] + ((m_colorram[tile_index] & 1) << 8);
int color = (m_colorram[tile_index] >> 1) & 0x1f;
+ //int flipy = (m_colorram[tile_index]) & 0x01; // not on this layer (although bit is used)
SET_TILE_INFO_MEMBER(0, code, color, 0);
}
@@ -158,8 +159,9 @@ TILE_GET_INFO_MEMBER(chanbara_state::get_bg2_tile_info)
{
int code = m_videoram2[tile_index];
int color = (m_colorram2[tile_index] >> 1) & 0x1f;
+ int flipy = (m_colorram2[tile_index]) & 0x01;
- SET_TILE_INFO_MEMBER(2, code, color, 0);
+ SET_TILE_INFO_MEMBER(2, code, color, TILE_FLIPXY(flipy));
}
void chanbara_state::video_start()
@@ -343,7 +345,7 @@ static const gfx_layout spritelayout =
static GFXDECODE_START( chanbara )
GFXDECODE_ENTRY( "gfx1", 0x00000, tilelayout, 0x40, 32 )
- GFXDECODE_ENTRY( "gfx2", 0x00000, spritelayout, 0x80, 16 )
+ GFXDECODE_ENTRY( "sprites", 0x00000, spritelayout, 0x80, 16 )
GFXDECODE_ENTRY( "gfx3", 0x00000, tile16layout, 0, 32 )
GFXDECODE_END
@@ -437,18 +439,18 @@ ROM_START( chanbara )
ROM_REGION( 0x08000, "gfx4", 0 )
ROM_LOAD( "cp14.13h", 0x00000, 0x2000, CRC(d31db368) SHA1(b62834137bfe4ac2013d2d16b0ead10bf2a2df83) )
- ROM_REGION( 0x24000, "gfx2", 0 )
- ROM_LOAD( "cp03.12c", 0x08000, 0x4000, CRC(dea247fb) SHA1(d54fa30813613ef6c3b5f86b563e9ab618a9f627))
- ROM_LOAD( "cp04.10c", 0x04000, 0x4000, CRC(f7dce87b) SHA1(129ae41d70d96720e020ec1bc1d3f2d9e87ebf47) )
+ ROM_REGION( 0x30000, "sprites", ROMREGION_ERASE00 )
ROM_LOAD( "cp05.9c", 0x00000, 0x4000, CRC(df2dc3cb) SHA1(3505042c91566bb09fcd2102fecbe2034551b8eb) )
+ ROM_LOAD( "cp04.10c", 0x04000, 0x4000, CRC(f7dce87b) SHA1(129ae41d70d96720e020ec1bc1d3f2d9e87ebf47) )
+ ROM_LOAD( "cp03.12c", 0x08000, 0x4000, CRC(dea247fb) SHA1(d54fa30813613ef6c3b5f86b563e9ab618a9f627))
- ROM_LOAD( "cp06.7c", 0x14000, 0x4000, CRC(2f337c08) SHA1(657ee6776780fa0a979a278ff27a49b459232cad) )
- ROM_LOAD( "cp07.6c", 0x10000, 0x4000, CRC(0e3727f2) SHA1(d177651bc20a56f5651ae5ce6f3d3ff7ad0e2053) )
- ROM_LOAD( "cp08.5c", 0x0c000, 0x4000, CRC(4cf35192) SHA1(1891dcc412caf72ba5a2ea56c1cab35cb3ae6123) )
+ ROM_LOAD( "cp08.5c", 0x10000, 0x4000, CRC(4cf35192) SHA1(1891dcc412caf72ba5a2ea56c1cab35cb3ae6123) )
+ ROM_LOAD( "cp07.6c", 0x14000, 0x4000, CRC(0e3727f2) SHA1(d177651bc20a56f5651ae5ce6f3d3ff7ad0e2053) )
+ ROM_LOAD( "cp06.7c", 0x18000, 0x4000, CRC(2f337c08) SHA1(657ee6776780fa0a979a278ff27a49b459232cad) )
- ROM_LOAD( "cp09.4c", 0x20000, 0x4000, CRC(3f58b647) SHA1(4eb212667aedd7c397a4911ac7f1b542c5c0a70d) )
- ROM_LOAD( "cp10.2c", 0x1c000, 0x4000, CRC(bfa324c0) SHA1(c7ff09bb5f1dd2d3707970fae1fd60b6004250c0) )
- ROM_LOAD( "cp11.1c", 0x18000, 0x4000, CRC(33e6160a) SHA1(b0171b554825072eebe935d12a6085d158b87bdc) )
+ ROM_LOAD( "cp11.1c", 0x20000, 0x4000, CRC(33e6160a) SHA1(b0171b554825072eebe935d12a6085d158b87bdc) )
+ ROM_LOAD( "cp10.2c", 0x24000, 0x4000, CRC(bfa324c0) SHA1(c7ff09bb5f1dd2d3707970fae1fd60b6004250c0) )
+ ROM_LOAD( "cp09.4c", 0x28000, 0x4000, CRC(3f58b647) SHA1(4eb212667aedd7c397a4911ac7f1b542c5c0a70d) )
ROM_REGION( 0x0300, "proms", 0 )
ROM_LOAD( "cp17.4k", 0x0000, 0x0100, CRC(cf03706e) SHA1(2dd2b29067f418ec590c56a38cc64d09d8dc8e09) ) /* red */
@@ -475,4 +477,4 @@ DRIVER_INIT_MEMBER(chanbara_state,chanbara)
membank("bank1")->configure_entries(0, 2, &bg[0x0000], 0x4000);
}
-GAME( 1985, chanbara, 0, chanbara, chanbara, chanbara_state, chanbara, ROT270, "Data East", "Chanbara", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
+GAME( 1985, chanbara, 0, chanbara, chanbara, chanbara_state, chanbara, ROT270, "Data East", "Chanbara", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
diff --git a/src/mame/drivers/changela.c b/src/mame/drivers/changela.c
index 206390febf0..4c9cb8909ca 100644
--- a/src/mame/drivers/changela.c
+++ b/src/mame/drivers/changela.c
@@ -543,4 +543,4 @@ ROM_START( changela )
ROM_LOAD( "cl88", 0x0000, 0x0020, CRC(da4d6625) SHA1(2d9a268973518252eb36f479ab650af8c16c885c) ) /* math train state machine */
ROM_END
-GAMEL( 1983, changela, 0, changela, changela, driver_device, 0, ROT180, "Taito Corporation", "Change Lanes", GAME_SUPPORTS_SAVE, layout_changela )
+GAMEL( 1983, changela, 0, changela, changela, driver_device, 0, ROT180, "Taito Corporation", "Change Lanes", MACHINE_SUPPORTS_SAVE, layout_changela )
diff --git a/src/mess/drivers/channelf.c b/src/mame/drivers/channelf.c
index 65cff8a5a96..65cff8a5a96 100644
--- a/src/mess/drivers/channelf.c
+++ b/src/mame/drivers/channelf.c
diff --git a/src/mess/drivers/chaos.c b/src/mame/drivers/chaos.c
index 6d8676f9982..7c0c72ae3ac 100644
--- a/src/mess/drivers/chaos.c
+++ b/src/mame/drivers/chaos.c
@@ -161,4 +161,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1983, chaos, 0, 0, chaos, chaos, driver_device, 0, "<unknown>", "Chaos 2", GAME_NO_SOUND_HW )
+COMP( 1983, chaos, 0, 0, chaos, chaos, driver_device, 0, "<unknown>", "Chaos 2", MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/cheekyms.c b/src/mame/drivers/cheekyms.c
index 6b155075488..8935f8d20d3 100644
--- a/src/mame/drivers/cheekyms.c
+++ b/src/mame/drivers/cheekyms.c
@@ -180,4 +180,4 @@ ROM_END
-GAME( 1980, cheekyms, 0, cheekyms, cheekyms, driver_device, 0, ROT270, "Universal", "Cheeky Mouse", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1980, cheekyms, 0, cheekyms, cheekyms, driver_device, 0, ROT270, "Universal", "Cheeky Mouse", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/chessmst.c b/src/mame/drivers/chessmst.c
index 4e0e3a00574..765fd3078bb 100644
--- a/src/mess/drivers/chessmst.c
+++ b/src/mame/drivers/chessmst.c
@@ -283,4 +283,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1984, chessmst, 0, 0, chessmst, chessmst, driver_device, 0, "VEB Mikroelektronik Erfurt", "Chess-Master", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK )
+COMP( 1984, chessmst, 0, 0, chessmst, chessmst, driver_device, 0, "VEB Mikroelektronik Erfurt", "Chess-Master", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mess/drivers/chesstrv.c b/src/mame/drivers/chesstrv.c
index 2e2ce32ff84..bd79872d15a 100644
--- a/src/mess/drivers/chesstrv.c
+++ b/src/mame/drivers/chesstrv.c
@@ -252,5 +252,5 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-CONS( 1980, chesstrv, 0, 0, chesstrv, chesstrv, driver_device, 0, "Acetronic", "Chess Traveller", GAME_NOT_WORKING | GAME_NO_SOUND_HW | GAME_SUPPORTS_SAVE )
-CONS( 1979, borisdpl, 0, 0, borisdpl, borisdpl, driver_device, 0, "Applied Concepts", "Boris Diplomat", GAME_NOT_WORKING | GAME_NO_SOUND_HW | GAME_SUPPORTS_SAVE )
+CONS( 1980, chesstrv, 0, 0, chesstrv, chesstrv, driver_device, 0, "Acetronic", "Chess Traveller", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
+CONS( 1979, borisdpl, 0, 0, borisdpl, borisdpl, driver_device, 0, "Applied Concepts", "Boris Diplomat", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/chexx.c b/src/mame/drivers/chexx.c
new file mode 100644
index 00000000000..1c2f93d8d26
--- /dev/null
+++ b/src/mame/drivers/chexx.c
@@ -0,0 +1,420 @@
+// license:BSD-3-Clause
+// copyright-holders:Luca Elia
+/***************************************************************************
+
+Electro-mechanical bubble hockey games:
+
+- Chexx (1983 version) by ICE
+ http://www.pinrepair.com/arcade/chexx.htm
+
+- Face-Off, an illegal? copy of Chexx
+ http://valker.us/gameroom/SegaFaceOff.htm
+ https://casetext.com/case/innovative-concepts-in-ent-v-entertainment-enter
+
+(Some sources indicate these may have been copied from a earlier Sega game called Face-Off)
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/m6502/m6502.h"
+#include "sound/ay8910.h"
+#include "sound/digitalk.h"
+#include "machine/6522via.h"
+#include "chexx.lh"
+
+#define MAIN_CLOCK XTAL_4MHz
+
+class chexx_state : public driver_device
+{
+public:
+ chexx_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_via(*this, "via6522"),
+ m_digitalker(*this, "digitalker"),
+ m_aysnd(*this, "aysnd")
+ {
+ }
+
+ // devices
+ required_device<cpu_device> m_maincpu;
+ required_device<via6522_device> m_via;
+ required_device<digitalker_device> m_digitalker;
+ optional_device<ay8910_device> m_aysnd; // only faceoffh
+
+ // vars
+ UINT8 m_port_a, m_port_b;
+ UINT8 m_bank;
+ UINT32 m_shift;
+ UINT8 m_lamp;
+ UINT8 m_ay_cmd, m_ay_data;
+
+ // callbacks
+ TIMER_DEVICE_CALLBACK_MEMBER(update);
+
+ // handlers
+ DECLARE_READ8_MEMBER(via_a_in);
+ DECLARE_READ8_MEMBER(via_b_in);
+
+ DECLARE_WRITE8_MEMBER(via_a_out);
+ DECLARE_WRITE8_MEMBER(via_b_out);
+
+ DECLARE_WRITE_LINE_MEMBER(via_ca2_out);
+ DECLARE_WRITE_LINE_MEMBER(via_cb1_out);
+ DECLARE_WRITE_LINE_MEMBER(via_cb2_out);
+ DECLARE_WRITE_LINE_MEMBER(via_irq_out);
+
+ DECLARE_READ8_MEMBER(input_r);
+
+ DECLARE_WRITE8_MEMBER(ay_w);
+ DECLARE_WRITE8_MEMBER(lamp_w);
+
+ // digitalker
+ void digitalker_set_bank(UINT8 bank);
+
+ // driver_device overrides
+ virtual void machine_start();
+ virtual void machine_reset();
+};
+
+
+// VIA
+
+READ8_MEMBER(chexx_state::via_a_in)
+{
+ UINT8 ret = 0;
+ logerror("%s: VIA read A: %02X\n", machine().describe_context(), ret);
+ return ret;
+}
+READ8_MEMBER(chexx_state::via_b_in)
+{
+ UINT8 ret = 0;
+ logerror("%s: VIA read B: %02X\n", machine().describe_context(), ret);
+ return ret;
+}
+
+WRITE8_MEMBER(chexx_state::via_a_out)
+{
+ m_port_a = data; // multiplexer
+
+ m_digitalker->digitalker_data_w(space, 0, data, 0);
+
+// logerror("%s: VIA write A = %02X\n", machine().describe_context(), data);
+}
+WRITE8_MEMBER(chexx_state::via_b_out)
+{
+ m_port_b = data;
+
+ digitalker_set_bank(data & 3);
+ m_digitalker->set_output_gain(0, BIT(data,2) ? 1.0f : 0.0f); // bit 2 controls the Digitalker output
+ coin_counter_w(machine(), 0, BIT(~data,3));
+ // bit 4 is EJECT
+ // bit 7 is related to speaker out
+
+// logerror("%s: VIA write B = %02X\n", machine().describe_context(), data);
+}
+
+WRITE_LINE_MEMBER(chexx_state::via_ca2_out)
+{
+ m_digitalker->digitalker_0_cms_w(CLEAR_LINE);
+ m_digitalker->digitalker_0_cs_w(CLEAR_LINE);
+ m_digitalker->digitalker_0_wr_w(state ? ASSERT_LINE : CLEAR_LINE);
+
+// logerror("%s: VIA write CA2 = %02X\n", machine().describe_context(), state);
+}
+WRITE_LINE_MEMBER(chexx_state::via_cb1_out)
+{
+// logerror("%s: VIA write CB1 = %02X\n", machine().describe_context(), state);
+}
+WRITE_LINE_MEMBER(chexx_state::via_cb2_out)
+{
+ m_shift = ((m_shift << 1) & 0xffffff) | state;
+
+ // 7segs (score)
+ static const UINT8 patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // 4511
+
+ output_set_digit_value(0, patterns[(m_shift >> (16+4)) & 0xf]);
+ output_set_digit_value(1, patterns[(m_shift >> (16+0)) & 0xf]);
+
+ output_set_digit_value(2, patterns[(m_shift >> (8+4)) & 0xf]);
+ output_set_digit_value(3, patterns[(m_shift >> (8+0)) & 0xf]);
+
+ // Leds (period being played)
+ output_set_led_value(0, BIT(m_shift,2));
+ output_set_led_value(1, BIT(m_shift,1));
+ output_set_led_value(2, BIT(m_shift,0));
+
+// logerror("%s: VIA write CB2 = %02X\n", machine().describe_context(), state);
+}
+WRITE_LINE_MEMBER(chexx_state::via_irq_out)
+{
+ m_maincpu->set_input_line(INPUT_LINE_IRQ0, state ? ASSERT_LINE : CLEAR_LINE);
+// logerror("%s: VIA write IRQ = %02X\n", machine().describe_context(), state);
+}
+
+READ8_MEMBER(chexx_state::input_r)
+{
+ UINT8 ret = ioport("DSW")->read(); // bits 0-3
+ UINT8 inp = ioport("INPUT")->read(); // bit 7 (multiplexed)
+
+ for (int i = 0; i < 8; ++i)
+ if ( ((~m_port_a) & (1 << i)) && ((~inp) & (1 << i)) )
+ ret &= 0x7f;
+
+ return ret;
+}
+
+// Chexx Memory Map
+
+static ADDRESS_MAP_START( chexx83_map, AS_PROGRAM, 8, chexx_state )
+ AM_RANGE(0x0000, 0x007f) AM_RAM AM_MIRROR(0x100) // 6810 - 128 x 8 static RAM
+ AM_RANGE(0x4000, 0x400f) AM_DEVREADWRITE("via6522", via6522_device, read, write)
+ AM_RANGE(0x8000, 0x8000) AM_READ(input_r)
+ AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION("maincpu", 0)
+ADDRESS_MAP_END
+
+// Face-Off Memory Map
+
+WRITE8_MEMBER(chexx_state::lamp_w)
+{
+ m_lamp = data;
+ output_set_lamp_value(0, BIT(m_lamp,0));
+ output_set_lamp_value(1, BIT(m_lamp,1));
+}
+
+WRITE8_MEMBER(chexx_state::ay_w)
+{
+ if (offset)
+ {
+ m_ay_data = data;
+ return;
+ }
+
+ if (m_ay_cmd == 0x00 && data == 0x03)
+ {
+ m_aysnd->address_w(space, offset, m_ay_data, mem_mask);
+// logerror("%s: AY addr = %02X\n", machine().describe_context(), m_ay_data);
+ }
+ else if (m_ay_cmd == 0x00 && data == 0x02)
+ {
+ m_aysnd->data_w(space, offset, m_ay_data, mem_mask);
+// logerror("%s: AY data = %02X\n", machine().describe_context(), m_ay_data);
+ }
+ m_ay_cmd = data;
+}
+
+static ADDRESS_MAP_START( faceoffh_map, AS_PROGRAM, 8, chexx_state )
+ AM_RANGE(0x0000, 0x007f) AM_RAM AM_MIRROR(0x100) // M58725P - 2KB
+ AM_RANGE(0x4000, 0x400f) AM_DEVREADWRITE("via6522", via6522_device, read, write)
+ AM_RANGE(0x8000, 0x8000) AM_READ(input_r)
+ AM_RANGE(0xa000, 0xa001) AM_WRITE(ay_w)
+ AM_RANGE(0xc000, 0xc000) AM_WRITE(lamp_w)
+ AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu", 0)
+ADDRESS_MAP_END
+
+// Inputs
+
+static INPUT_PORTS_START( chexx83 )
+ PORT_START("COIN")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(1) // play anthem
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(1) // play anthem
+
+ PORT_START("INPUT")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("P1 Goal Sensor")
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("P2 Goal Sensor")
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START3 ) PORT_NAME("Puck Near Goal Sensors") // play "ohh" sample
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Boo Button") // stop anthem, play "boo" sample, eject puck
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Boo Button") // stop anthem, play "boo" sample, eject puck
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Puck Eject Ready Sensor")
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSW")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2")
+ PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
+ PORT_DIPNAME( 0x0c, 0x00, "Game Duration (mins)" ) PORT_DIPLOCATION("SW1:3,4")
+ PORT_DIPSETTING( 0x00, "2" ) // 40
+ PORT_DIPSETTING( 0x04, "3" ) // 60
+ PORT_DIPSETTING( 0x08, "4" ) // 80
+ PORT_DIPSETTING( 0x0c, "5" ) // 100
+ PORT_BIT( 0x70, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SPECIAL ) // multiplexed inputs
+INPUT_PORTS_END
+
+// Machine
+
+void chexx_state::machine_start()
+{
+}
+
+void chexx_state::digitalker_set_bank(UINT8 bank)
+{
+ if (m_bank != bank)
+ {
+ UINT8 *src = memregion("samples")->base();
+ UINT8 *dst = memregion("digitalker")->base();
+
+ memcpy(dst, src + bank * 0x4000, 0x4000);
+
+ m_bank = bank;
+ }
+}
+
+void chexx_state::machine_reset()
+{
+ m_bank = -1;
+ digitalker_set_bank(0);
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(chexx_state::update)
+{
+ // NMI on coin-in
+ UINT8 coin = (~ioport("COIN")->read()) & 0x03;
+ m_maincpu->set_input_line(INPUT_LINE_NMI, coin ? ASSERT_LINE : CLEAR_LINE);
+
+ // VIA CA1 connected to Digitalker INTR line
+ m_via->write_ca1(m_digitalker->digitalker_0_intr_r());
+
+#if 0
+ // Play the digitalker samples (it's not hooked up correctly yet)
+ static UINT8 sample = 0, bank = 0;
+
+ if (machine().input().code_pressed_once(KEYCODE_Q))
+ --bank;
+ if (machine().input().code_pressed_once(KEYCODE_W))
+ ++bank;
+ bank %= 3;
+ digitalker_set_bank(bank);
+
+ if (machine().input().code_pressed_once(KEYCODE_A))
+ --sample;
+ if (machine().input().code_pressed_once(KEYCODE_S))
+ ++sample;
+
+ if (machine().input().code_pressed_once(KEYCODE_Z))
+ {
+ m_digitalker->digitalker_0_cms_w(CLEAR_LINE);
+ m_digitalker->digitalker_0_cs_w(CLEAR_LINE);
+
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ m_digitalker->digitalker_data_w(space, 0, sample, 0);
+
+ m_digitalker->digitalker_0_wr_w(ASSERT_LINE);
+ m_digitalker->digitalker_0_wr_w(CLEAR_LINE);
+ m_digitalker->digitalker_0_wr_w(ASSERT_LINE);
+ }
+#endif
+}
+
+static MACHINE_CONFIG_START( chexx83, chexx_state )
+
+ // basic machine hardware
+ MCFG_CPU_ADD("maincpu", M6502, MAIN_CLOCK/2)
+ MCFG_CPU_PROGRAM_MAP(chexx83_map)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("update", chexx_state, update, attotime::from_hz(60))
+
+ // via
+ MCFG_DEVICE_ADD("via6522", VIA6522, MAIN_CLOCK/4)
+
+ MCFG_VIA6522_READPA_HANDLER(READ8(chexx_state, via_a_in))
+ MCFG_VIA6522_READPB_HANDLER(READ8(chexx_state, via_b_in))
+
+ MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(chexx_state, via_a_out))
+ MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(chexx_state, via_b_out))
+
+ MCFG_VIA6522_CA2_HANDLER(WRITELINE(chexx_state, via_ca2_out))
+ MCFG_VIA6522_CB1_HANDLER(WRITELINE(chexx_state, via_cb1_out))
+ MCFG_VIA6522_CB2_HANDLER(WRITELINE(chexx_state, via_cb2_out))
+ MCFG_VIA6522_IRQ_HANDLER(WRITELINE(chexx_state, via_irq_out))
+
+ // Layout
+ MCFG_DEFAULT_LAYOUT(layout_chexx)
+
+ // sound hardware
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_DIGITALKER_ADD("digitalker", MAIN_CLOCK)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.16)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( faceoffh, chexx83 )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(faceoffh_map)
+
+ MCFG_SOUND_ADD("aysnd", AY8910, MAIN_CLOCK/2)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+MACHINE_CONFIG_END
+
+// ROMs
+
+/***************************************************************************
+
+Chexx Hockey (1983 version 1.1)
+
+The "long and skinny" Moog CPU board used a 6502 for the processor,
+a 6522 for the PIA, a 6810 static RAM, eight 52164 64k bit sound ROM chips,
+a 40 pin 54104 sound chip, and a single 2716 CPU EPROM
+
+***************************************************************************/
+
+ROM_START( chexx83 )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "chexx83.u4", 0x0000, 0x0800, CRC(a34abac1) SHA1(75a31670eb6d1b62ba984f0bac7c6e6067f6ae87) )
+
+ ROM_REGION( 0x4000, "digitalker", ROMREGION_ERASE00 )
+ // bank switched (from samples region)
+
+ ROM_REGION( 0x10000, "samples", ROMREGION_ERASE00 )
+ ROM_LOAD( "chexx83.u12", 0x0000, 0x2000, NO_DUMP )
+ ROM_LOAD( "chexx83.u13", 0x2000, 0x2000, NO_DUMP )
+ ROM_LOAD( "chexx83.u14", 0x4000, 0x2000, NO_DUMP )
+ ROM_LOAD( "chexx83.u15", 0x6000, 0x2000, NO_DUMP )
+ ROM_LOAD( "chexx83.u16", 0x8000, 0x2000, NO_DUMP )
+ ROM_LOAD( "chexx83.u17", 0xa000, 0x2000, NO_DUMP )
+ ROM_LOAD( "chexx83.u18", 0xc000, 0x2000, NO_DUMP )
+ ROM_LOAD( "chexx83.u19", 0xe000, 0x2000, NO_DUMP )
+ROM_END
+
+/***************************************************************************
+
+Face-Off PCB?
+
+Entertainment Enterprises Ltd. 1983 (sticker)
+Serial No. 025402 (sticker)
+MADE IN JAPAN (etched)
+
+CPU: R6502P
+RAM: M58725P (2KB)
+I/O: R6522P (VIA)
+Samples: Digitalker (MM54104)
+Music: AY-3-8910
+Misc: XTAL 4MHz, DSW4, 42-pin connector
+
+***************************************************************************/
+
+ROM_START( faceoffh )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ // "Copyright (c) 1983 SoftLogic JAPAN"
+ ROM_LOAD( "1.5d", 0x0000, 0x1000, CRC(6ab050be) SHA1(ebecae855e22e9c3c46bdee51f84fd5352bf191a) )
+
+ ROM_REGION( 0x4000, "digitalker", ROMREGION_ERASE00 )
+ // bank switched (from samples region)
+
+ ROM_REGION( 0x10000, "samples", 0 )
+ ROM_LOAD( "9.2a", 0x0000, 0x2000, CRC(059b3725) SHA1(5837bee1ef34ce19a3101b851ca55029776e4b3e) ) // digitalker header
+ ROM_LOAD( "8.2b", 0x2000, 0x2000, CRC(679da4e1) SHA1(01a5b9dd132c1b0de97c153d7de226f5bf357338) )
+
+ ROM_LOAD( "7.2c", 0x4000, 0x2000, CRC(f8461b33) SHA1(717a8842e0ce9ba94dd59504a324bede4844e389) ) // digitalker header
+ ROM_LOAD( "6.2d", 0x6000, 0x2000, CRC(156c91e0) SHA1(6017d4b5609b214a6e66dcd76493a7d1442c04d4) )
+
+ ROM_LOAD( "5.3a", 0x8000, 0x2000, CRC(19904604) SHA1(633c211a9a822cdf597a6f3c221ae9c8d6482e82) ) // digitalker header
+ ROM_LOAD( "4.3b", 0xa000, 0x2000, CRC(c3386d51) SHA1(7882e88db55ba914be81075e4b2d76e246c34d3b) )
+
+ ROM_FILL( 0xc000, 0x2000, 0xff ) // unpopulated
+ ROM_FILL( 0xe000, 0x2000, 0xff ) // unpopulated
+ROM_END
+
+GAME( 1983, chexx83, 0, chexx83, chexx83, driver_device, 0, ROT270, "ICE", "Chexx (EM Bubble Hockey, 1983 1.1)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_NO_SOUND )
+GAME( 1983, faceoffh, chexx83, faceoffh, chexx83, driver_device, 0, ROT270, "SoftLogic (Entertainment Enterprises, Ltd. license)", "Face-Off (EM Bubble Hockey)", MACHINE_NOT_WORKING | MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/chicago.c b/src/mame/drivers/chicago.c
index 9c99e15ea7f..a15b07fdb0c 100644
--- a/src/mame/drivers/chicago.c
+++ b/src/mame/drivers/chicago.c
@@ -6,15 +6,15 @@
Game Name Model #
-----------------------------------------
- Demolition Derby (1976) #466
- Super Flipper (1975) #458
- Olympic TV Football (1973) #429-A
- Olympic TV Hockey (1973) #429
- TV Goalee (1973) #414
TV Ping Pong (1973) #424
- TV Pin Game (1975) #451
TV Tennis (1973) #427
-
+ Olympic TV Hockey (1973) #429
+ Olympic TV Football (1973) #429-A
+ TV Goalee (1974) #434
+ TV Pingame (1975) #451
+ Super Flipper (1975) #458
+ Demolition Derby (1976) #466
+
***************************************************************************/
@@ -115,7 +115,7 @@ MACHINE_CONFIG_END
***************************************************************************/
-ROM_START( destdrby )
+ROM_START( dmodrbcc )
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
ROM_REGION( 0x0400, "roms", ROMREGION_ERASE00 )
@@ -138,4 +138,4 @@ ROM_START( destdrby )
ROM_END
-GAME( 1976, destdrby, 0, chicago, 0, driver_device, 0, ROT0, "Chicago Coin", "Destruction Derby [TTL]", GAME_IS_SKELETON )
+GAME( 1976, dmodrbcc, 0, chicago, 0, driver_device, 0, ROT0, "Chicago Coin", "Demolition Derby [TTL]", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/chihiro.c b/src/mame/drivers/chihiro.c
index cc9fe4c26b6..3fd14bec79e 100644
--- a/src/mame/drivers/chihiro.c
+++ b/src/mame/drivers/chihiro.c
@@ -15,7 +15,7 @@ Games on this system include....
|*| 2003 | Virtua Cop 3 (Rev A) | Sega | GDROM | GDX-0003A | 317-0354-COM |
| | 2003 | OutRun 2 | Sega | GDROM | GDX-0004 | 317-0372-COM |
|*| 2003 | OutRun 2 (Rev A) | Sega | GDROM | GDX-0004A | 317-0372-COM |
-| | 2003 | OutRun 2 prototype (Rev P ) | Sega | GDROM | GDX-0004P | |
+| | 2003 | OutRun 2 prototype (Rev P) | Sega | GDROM | GDX-0004P | |
| | 2004 | Sega Golf Club Network Pro Tour | Sega | GDROM | GDX-0005 | |
| | 2004 | Sega Network Taisen Mahjong MJ 2 | Sega | GDROM | GDX-0006 | |
| | 2004 | Sega Network Taisen Mahjong MJ 2 (Rev A) | Sega | GDROM | GDX-0006A | |
@@ -40,7 +40,7 @@ Games on this system include....
|*| 2004 | OutRun 2 Special Tours (Rev A) | Sega | GDROM | GDX-0014A | 317-0xxx-COM |
|*| 2005 | Wangan Midnight Maximum Tune 2 (Japan) | Namco | GDROM | GDX-0015 | 317-5106-JPN |
| | 2005 | Wangan Midnight Maximum Tune 2 (Export) | Namco | GDROM | GDX-0016 | 317-5106-COM |
-|*| 2005 | Wangan Midnight Maximum Tune 2 (Export) | Namco | GDROM | GDX-0016A | 317-5106-COM |
+|*| 2005 | Wangan Midnight Maximum Tune 2 (Export) (Rev A) | Namco | GDROM | GDX-0016A | 317-5106-COM |
| | 2005 | Sega Network Taisen Mahjong MJ 3 | Sega | GDROM | GDX-0017 | 317-0414-JPN |
| | 2005 | Sega Network Taisen Mahjong MJ 3 (Rev A) | Sega | GDROM | GDX-0017A | 317-0414-JPN |
| | 2005 | Sega Network Taisen Mahjong MJ 3 (Rev B) | Sega | GDROM | GDX-0017B | 317-0414-JPN |
@@ -376,339 +376,50 @@ Thanks to Alex, Mr Mudkips, and Philip Burke for this info.
#include "debug/debugcmd.h"
#include "debug/debugcpu.h"
#include "includes/chihiro.h"
+#include "includes/xbox.h"
+
+// for now, make buggy GCC/Mingw STFU about I64FMT
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+#endif
#define LOG_PCI
-//#define LOG_OHCI
//#define LOG_BASEBOARD
-//#define USB_ENABLED
-
-struct OHCIEndpointDescriptor {
- int mps; // MaximumPacketSize
- int f; // Format
- int k; // sKip
- int s; // Speed
- int d; // Direction
- int en; // EndpointNumber
- int fa; // FunctionAddress
- UINT32 tailp; // TDQueueTailPointer
- UINT32 headp; // TDQueueHeadPointer
- UINT32 nexted; // NextED
- int c; // toggleCarry
- int h; // Halted
- UINT32 word0;
-};
-
-struct OHCITransferDescriptor {
- int cc; // ConditionCode
- int ec; // ErrorCount
- int t; // DataToggle
- int di; // DelayInterrupt
- int dp; // Direction/PID
- int r; // bufferRounding
- UINT32 cbp; // CurrentBufferPointer
- UINT32 nexttd; // NextTD
- UINT32 be; // BufferEnd
- UINT32 word0;
-};
-
-struct OHCIIsochronousTransferDescriptor {
- int cc; // ConditionCode
- int fc; // FrameCount
- int di; // DelayInterrupt
- int sf; // StartingFrame
- UINT32 bp0; // BufferPage0
- UINT32 nexttd; // NextTD
- UINT32 be; // BufferEnd
- UINT32 offset[8]; // Offset/PacketStatusWord
-};
-
-enum OHCIRegisters {
- HcRevision=0,
- HcControl,
- HcCommandStatus,
- HcInterruptStatus,
- HcInterruptEnable,
- HcInterruptDisable,
- HcHCCA,
- HcPeriodCurrentED,
- HcControlHeadED,
- HcControlCurrentED,
- HcBulkHeadED,
- HcBulkCurrentED,
- HcDoneHead,
- HcFmInterval,
- HcFmRemaining,
- HcFmNumber,
- HcPeriodicStart,
- HcLSThreshold,
- HcRhDescriptorA,
- HcRhDescriptorB,
- HcRhStatus,
- HcRhPortStatus1
-};
-
-enum OHCIHostControllerFunctionalState {
- UsbReset=0,
- UsbResume,
- UsbOperational,
- UsbSuspend
-};
-
-enum OHCIInterrupt {
- SchedulingOverrun=1,
- WritebackDoneHead=2,
- StartofFrame=4,
- ResumeDetected=8,
- UnrecoverableError=16,
- FrameNumberOverflow=32,
- RootHubStatusChange=64,
- OwnershipChange=0x40000000,
- MasterInterruptEnable=0x80000000
-};
-
-enum OHCICompletionCode {
- NoError=0,
- CRC,
- BitStuffing,
- DataToggleMismatch,
- Stall,
- DeviceNotResponding,
- PIDCheckFailure,
- UnexpectedPID,
- DataOverrun,
- DataUnderrun,
- BufferOverrun=12,
- BufferUnderrun,
- NotAccessed=14
-};
-
-struct USBSetupPacket {
- UINT8 bmRequestType;
- UINT8 bRequest;
- UINT16 wValue;
- UINT16 wIndex;
- UINT16 wLength;
-};
-
-struct USBStandardDeviceDscriptor {
- UINT8 bLength;
- UINT8 bDescriptorType;
- UINT16 bcdUSB;
- UINT8 bDeviceClass;
- UINT8 bDeviceSubClass;
- UINT8 bDeviceProtocol;
- UINT8 bMaxPacketSize0;
- UINT16 idVendor;
- UINT16 idProduct;
- UINT16 bcdDevice;
- UINT8 iManufacturer;
- UINT8 iProduct;
- UINT8 iSerialNumber;
- UINT8 bNumConfigurations;
-};
-
-struct USBStandardConfigurationDescriptor {
- UINT8 bLength;
- UINT8 bDescriptorType;
- UINT16 wTotalLength;
- UINT8 bNumInterfaces;
- UINT8 bConfigurationValue;
- UINT8 iConfiguration;
- UINT8 bmAttributes;
- UINT8 MaxPower;
-};
-
-struct USBStandardInterfaceDescriptor {
- UINT8 bLength;
- UINT8 bDescriptorType;
- UINT8 bInterfaceNumber;
- UINT8 bAlternateSetting;
- UINT8 bNumEndpoints;
- UINT8 bInterfaceClass;
- UINT8 bInterfaceSubClass;
- UINT8 bInterfaceProtocol;
- UINT8 iInterface;
-};
-
-struct USBStandardEndpointDescriptor {
- UINT8 bLength;
- UINT8 bDescriptorType;
- UINT8 bEndpointAddress;
- UINT8 bmAttributes;
- UINT16 wMaxPacketSize;
- UINT8 bInterval;
-};
-
-enum USBPid {
- SetupPid=0,
- OutPid,
- InPid
-};
-
-enum USBRequestCode {
- GET_STATUS=0,
- CLEAR_FEATURE=1,
- SET_FEATURE=3,
- SET_ADDRESS=5,
- GET_DESCRIPTOR=6,
- SET_DESCRIPTOR=7,
- GET_CONFIGURATION=8,
- SET_CONFIGURATION=9,
- GET_INTERFACE=10,
- SET_INTERFACE=11,
- SYNCH_FRAME=12
-};
-
-enum USBDescriptorType {
- DEVICE=1,
- CONFIGURATION=2,
- STRING=3,
- INTERFACE=4,
- ENDPOINT=5
-};
-class ohci_function_device {
-public:
- ohci_function_device();
- void execute_reset();
- int execute_transfer(int address, int endpoint, int pid, UINT8 *buffer, int size);
-private:
- int address;
- int controldir;
- int remain;
- UINT8 *position;
-};
-
-class chihiro_state : public driver_device
+class chihiro_state : public xbox_base_state
{
public:
chihiro_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- nvidia_nv2a(NULL),
- debug_irq_active(false),
- debug_irq_number(0),
- dimm_board_memory(NULL),
- dimm_board_memory_size(0),
+ xbox_base_state(mconfig, type, tag),
usbhack_index(-1),
usbhack_counter(0),
- m_maincpu(*this, "maincpu") { }
-
- DECLARE_READ32_MEMBER(geforce_r);
- DECLARE_WRITE32_MEMBER(geforce_w);
- DECLARE_READ32_MEMBER(usbctrl_r);
- DECLARE_WRITE32_MEMBER(usbctrl_w);
- DECLARE_READ32_MEMBER(smbus_r);
- DECLARE_WRITE32_MEMBER(smbus_w);
+ dimm_board_memory(NULL),
+ dimm_board_memory_size(0) { }
+
DECLARE_READ32_MEMBER(mediaboard_r);
DECLARE_WRITE32_MEMBER(mediaboard_w);
- DECLARE_READ32_MEMBER(audio_apu_r);
- DECLARE_WRITE32_MEMBER(audio_apu_w);
- DECLARE_READ32_MEMBER(audio_ac93_r);
- DECLARE_WRITE32_MEMBER(audio_ac93_w);
- DECLARE_READ32_MEMBER(dummy_r);
- DECLARE_WRITE32_MEMBER(dummy_w);
-
- void smbus_register_device(int address, int(*handler)(chihiro_state &chs, int command, int rw, int data));
- int smbus_pic16lc(int command, int rw, int data);
- int smbus_cx25871(int command, int rw, int data);
- int smbus_eeprom(int command, int rw, int data);
- void usb_ohci_plug(int port, ohci_function_device *function);
- void usb_ohci_interrupts();
- void usb_ohci_read_endpoint_descriptor(UINT32 address);
- void usb_ohci_writeback_endpoint_descriptor(UINT32 address);
- void usb_ohci_read_transfer_descriptor(UINT32 address);
- void usb_ohci_writeback_transfer_descriptor(UINT32 address);
- void usb_ohci_read_isochronous_transfer_descriptor(UINT32 address);
+
+ virtual void machine_start();
void baseboard_ide_event(int type, UINT8 *read, UINT8 *write);
UINT8 *baseboard_ide_dimmboard(UINT32 lba);
void dword_write_le(UINT8 *addr, UINT32 d);
void word_write_le(UINT8 *addr, UINT16 d);
- void debug_generate_irq(int irq, bool active);
-
- void vblank_callback(screen_device &screen, bool state);
- UINT32 screen_update_callback(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
-
- virtual void machine_start();
- DECLARE_WRITE_LINE_MEMBER(chihiro_pic8259_1_set_int_line);
- DECLARE_READ8_MEMBER(get_slave_ack);
- DECLARE_WRITE_LINE_MEMBER(chihiro_pit8254_out0_changed);
- DECLARE_WRITE_LINE_MEMBER(chihiro_pit8254_out2_changed);
- IRQ_CALLBACK_MEMBER(irq_callback);
- TIMER_CALLBACK_MEMBER(audio_apu_timer);
- TIMER_CALLBACK_MEMBER(usb_ohci_timer);
+ virtual void hack_eeprom();
+ virtual void hack_usb();
struct chihiro_devices {
- pic8259_device *pic8259_1;
- pic8259_device *pic8259_2;
bus_master_ide_controller_device *ide;
naomi_gdrom_board *dimmboard;
} chihiro_devs;
- struct smbus_state {
- int status;
- int control;
- int address;
- int data;
- int command;
- int rw;
- int(*devices[128])(chihiro_state &chs, int command, int rw, int data);
- UINT32 words[256 / 4];
- } smbusst;
- struct apu_state {
- UINT32 memory[0x60000 / 4];
- UINT32 gpdsp_sgaddress; // global processor scatter-gather
- UINT32 gpdsp_sgblocks;
- UINT32 gpdsp_address;
- UINT32 epdsp_sgaddress; // encoder processor scatter-gather
- UINT32 epdsp_sgblocks;
- UINT32 unknown_sgaddress;
- UINT32 unknown_sgblocks;
- int voice_number;
- UINT32 voices_heap_blockaddr[1024];
- UINT64 voices_active[4]; //one bit for each voice: 1 playing 0 not
- UINT32 voicedata_address;
- int voices_frequency[256]; // sample rate
- int voices_position[256]; // position in samples * 1000
- int voices_position_start[256]; // position in samples * 1000
- int voices_position_end[256]; // position in samples * 1000
- int voices_position_increment[256]; // position increment every 1ms * 1000
- emu_timer *timer;
- address_space *space;
- } apust;
- struct ac97_state {
- UINT32 mixer_regs[0x80 / 4];
- UINT32 controller_regs[0x38 / 4];
- } ac97st;
- struct ohci_state {
- UINT32 hc_regs[255];
- struct {
- ohci_function_device *function;
- int delay;
- } ports[4 + 1];
- emu_timer *timer;
- int state;
- UINT32 framenumber;
- UINT32 nextinterupted;
- UINT32 nextbulked;
- int interruptbulkratio;
- int writebackdonehadcounter;
- address_space *space;
- UINT8 buffer[1024];
- OHCIEndpointDescriptor endpoint_descriptor;
- OHCITransferDescriptor transfer_descriptor;
- OHCIIsochronousTransferDescriptor isochronous_transfer_descriptor;
- } ohcist;
- UINT8 pic16lc_buffer[0xff];
- nv2a_renderer *nvidia_nv2a;
- bool debug_irq_active;
- int debug_irq_number;
- UINT8 *dimm_board_memory;
- UINT32 dimm_board_memory_size;
int usbhack_index;
int usbhack_counter;
- required_device<cpu_device> m_maincpu;
+ UINT8 *dimm_board_memory;
+ UINT32 dimm_board_memory_size;
};
-/* jamtable instructions for Chihiro (different from console)
+/* jamtable instructions for Chihiro (different from Xbox console)
St. Instr. Comment
0x01 POKEPCI PCICONF[OP2] := OP1
0x02 OUTB PORT[OP2] := OP1
@@ -835,343 +546,10 @@ static void jamtable_disasm_command(running_machine &machine, int ref, int param
jamtable_disasm(machine, space, (UINT32)addr, (UINT32)size);
}
-static void dump_string_command(running_machine &machine, int ref, int params, const char **param)
-{
- chihiro_state *state = machine.driver_data<chihiro_state>();
- address_space &space = state->m_maincpu->space();
- UINT64 addr;
- offs_t address;
- UINT32 length, maximumlength;
- offs_t buffer;
-
- if (params < 1)
- return;
- if (!debug_command_parameter_number(machine, param[0], &addr))
- return;
- address = (offs_t)addr;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &address))
- {
- debug_console_printf(machine, "Address is unmapped.\n");
- return;
- }
- length = space.read_word_unaligned(address);
- maximumlength = space.read_word_unaligned(address + 2);
- buffer = space.read_dword_unaligned(address + 4);
- debug_console_printf(machine, "Length %d word\n", length);
- debug_console_printf(machine, "MaximumLength %d word\n", maximumlength);
- debug_console_printf(machine, "Buffer %08X byte* ", buffer);
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &buffer))
- {
- debug_console_printf(machine, "\nBuffer is unmapped.\n");
- return;
- }
- if (length > 256)
- length = 256;
- for (int a = 0; a < length; a++)
- {
- UINT8 c = space.read_byte(buffer + a);
- debug_console_printf(machine, "%c", c);
- }
- debug_console_printf(machine, "\n");
-}
-
-static void dump_process_command(running_machine &machine, int ref, int params, const char **param)
-{
- chihiro_state *state = machine.driver_data<chihiro_state>();
- address_space &space = state->m_maincpu->space();
- UINT64 addr;
- offs_t address;
-
- if (params < 1)
- return;
- if (!debug_command_parameter_number(machine, param[0], &addr))
- return;
- address = (offs_t)addr;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &address))
- {
- debug_console_printf(machine, "Address is unmapped.\n");
- return;
- }
- debug_console_printf(machine, "ReadyListHead {%08X,%08X} _LIST_ENTRY\n", space.read_dword_unaligned(address), space.read_dword_unaligned(address + 4));
- debug_console_printf(machine, "ThreadListHead {%08X,%08X} _LIST_ENTRY\n", space.read_dword_unaligned(address + 8), space.read_dword_unaligned(address + 12));
- debug_console_printf(machine, "StackCount %d dword\n", space.read_dword_unaligned(address + 16));
- debug_console_printf(machine, "ThreadQuantum %d dword\n", space.read_dword_unaligned(address + 20));
- debug_console_printf(machine, "BasePriority %d byte\n", space.read_byte(address + 24));
- debug_console_printf(machine, "DisableBoost %d byte\n", space.read_byte(address + 25));
- debug_console_printf(machine, "DisableQuantum %d byte\n", space.read_byte(address + 26));
- debug_console_printf(machine, "_padding %d byte\n", space.read_byte(address + 27));
-}
-
-static void dump_list_command(running_machine &machine, int ref, int params, const char **param)
-{
- chihiro_state *state = machine.driver_data<chihiro_state>();
- address_space &space = state->m_maincpu->space();
- UINT64 addr, offs, start, old;
- offs_t address, offset;
-
- if (params < 1)
- return;
- if (!debug_command_parameter_number(machine, param[0], &addr))
- return;
- offs = 0;
- offset = 0;
- if (params >= 2)
- {
- if (!debug_command_parameter_number(machine, param[1], &offs))
- return;
- offset = (offs_t)offs;
- }
- start = addr;
- address = (offs_t)addr;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &address))
- {
- debug_console_printf(machine, "Address is unmapped.\n");
- return;
- }
- if (params >= 2)
- debug_console_printf(machine, "Entry Object\n");
- else
- debug_console_printf(machine, "Entry\n");
- for (int num = 0; num < 32; num++)
- {
- if (params >= 2)
- debug_console_printf(machine, "%08X %08X\n", (UINT32)addr, (offs_t)addr - offset);
- else
- debug_console_printf(machine, "%08X\n", (UINT32)addr);
- old = addr;
- addr = space.read_dword_unaligned(address);
- if (addr == start)
- break;
- if (addr == old)
- break;
- address = (offs_t)addr;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &address))
- break;
- }
-}
-
-static void dump_dpc_command(running_machine &machine, int ref, int params, const char **param)
-{
- chihiro_state *state = machine.driver_data<chihiro_state>();
- address_space &space = state->m_maincpu->space();
- UINT64 addr;
- offs_t address;
-
- if (params < 1)
- return;
- if (!debug_command_parameter_number(machine, param[0], &addr))
- return;
- address = (offs_t)addr;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &address))
- {
- debug_console_printf(machine, "Address is unmapped.\n");
- return;
- }
- debug_console_printf(machine, "Type %d word\n", space.read_word_unaligned(address));
- debug_console_printf(machine, "Inserted %d byte\n", space.read_byte(address + 2));
- debug_console_printf(machine, "Padding %d byte\n", space.read_byte(address + 3));
- debug_console_printf(machine, "DpcListEntry {%08X,%08X} _LIST_ENTRY\n", space.read_dword_unaligned(address + 4), space.read_dword_unaligned(address + 8));
- debug_console_printf(machine, "DeferredRoutine %08X dword\n", space.read_dword_unaligned(address + 12));
- debug_console_printf(machine, "DeferredContext %08X dword\n", space.read_dword_unaligned(address + 16));
- debug_console_printf(machine, "SystemArgument1 %08X dword\n", space.read_dword_unaligned(address + 20));
- debug_console_printf(machine, "SystemArgument2 %08X dword\n", space.read_dword_unaligned(address + 24));
-}
-
-static void dump_timer_command(running_machine &machine, int ref, int params, const char **param)
-{
- chihiro_state *state = machine.driver_data<chihiro_state>();
- address_space &space = state->m_maincpu->space();
- UINT64 addr;
- offs_t address;
-
- if (params < 1)
- return;
- if (!debug_command_parameter_number(machine, param[0], &addr))
- return;
- address = (offs_t)addr;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &address))
- {
- debug_console_printf(machine, "Address is unmapped.\n");
- return;
- }
- debug_console_printf(machine, "Header.Type %d byte\n", space.read_byte(address));
- debug_console_printf(machine, "Header.Absolute %d byte\n", space.read_byte(address + 1));
- debug_console_printf(machine, "Header.Size %d byte\n", space.read_byte(address + 2));
- debug_console_printf(machine, "Header.Inserted %d byte\n", space.read_byte(address + 3));
- debug_console_printf(machine, "Header.SignalState %08X dword\n", space.read_dword_unaligned(address + 4));
- debug_console_printf(machine, "Header.WaitListEntry {%08X,%08X} _LIST_ENTRY\n", space.read_dword_unaligned(address + 8), space.read_dword_unaligned(address + 12));
- debug_console_printf(machine, "DueTime %" I64FMT "x qword\n", (INT64)space.read_qword_unaligned(address + 16));
- debug_console_printf(machine, "TimerListEntry {%08X,%08X} _LIST_ENTRY\n", space.read_dword_unaligned(address + 24), space.read_dword_unaligned(address + 28));
- debug_console_printf(machine, "Dpc %08X dword\n", space.read_dword_unaligned(address + 32));
- debug_console_printf(machine, "Period %d dword\n", space.read_dword_unaligned(address + 36));
-}
-
-static void curthread_command(running_machine &machine, int ref, int params, const char **param)
-{
- chihiro_state *state = machine.driver_data<chihiro_state>();
- address_space &space = state->m_maincpu->space();
- UINT64 fsbase;
- UINT32 kthrd, topstack, tlsdata;
- offs_t address;
-
- fsbase = state->m_maincpu->state_int(44);
- address = (offs_t)fsbase + 0x28;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &address))
- {
- debug_console_printf(machine, "Address is unmapped.\n");
- return;
- }
- kthrd = space.read_dword_unaligned(address);
- debug_console_printf(machine, "Current thread is %08X\n", kthrd);
- address = (offs_t)kthrd + 0x1c;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &address))
- return;
- topstack = space.read_dword_unaligned(address);
- debug_console_printf(machine, "Current thread stack top is %08X\n", topstack);
- address = (offs_t)kthrd + 0x28;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &address))
- return;
- tlsdata = space.read_dword_unaligned(address);
- if (tlsdata == 0)
- address = (offs_t)topstack - 0x210 - 8;
- else
- address = (offs_t)tlsdata - 8;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &address))
- return;
- debug_console_printf(machine, "Current thread function is %08X\n", space.read_dword_unaligned(address));
-}
-
-static void generate_irq_command(running_machine &machine, int ref, int params, const char **param)
-{
- UINT64 irq;
- chihiro_state *chst = machine.driver_data<chihiro_state>();
-
- if (params < 1)
- return;
- if (!debug_command_parameter_number(machine, param[0], &irq))
- return;
- if (irq > 15)
- return;
- if (irq == 2)
- return;
- chst->debug_generate_irq((int)irq, true);
-}
-
-static void nv2a_combiners_command(running_machine &machine, int ref, int params, const char **param)
-{
- int en;
-
- chihiro_state *chst = machine.driver_data<chihiro_state>();
- en = chst->nvidia_nv2a->toggle_register_combiners_usage();
- if (en != 0)
- debug_console_printf(machine, "Register combiners enabled\n");
- else
- debug_console_printf(machine, "Register combiners disabled\n");
-}
-
-static void waitvblank_command(running_machine &machine, int ref, int params, const char **param)
-{
- int en;
-
- chihiro_state *chst = machine.driver_data<chihiro_state>();
- en = chst->nvidia_nv2a->toggle_wait_vblank_support();
- if (en != 0)
- debug_console_printf(machine, "Vblank method enabled\n");
- else
- debug_console_printf(machine, "Vblank method disabled\n");
-}
-
-static void grab_texture_command(running_machine &machine, int ref, int params, const char **param)
-{
- UINT64 type;
- chihiro_state *chst = machine.driver_data<chihiro_state>();
-
- if (params < 2)
- return;
- if (!debug_command_parameter_number(machine, param[0], &type))
- return;
- if ((param[1][0] == 0) || (strlen(param[1]) > 127))
- return;
- chst->nvidia_nv2a->debug_grab_texture((int)type, param[1]);
-}
-
-static void grab_vprog_command(running_machine &machine, int ref, int params, const char **param)
-{
- chihiro_state *chst = machine.driver_data<chihiro_state>();
- UINT32 instruction[4];
- FILE *fil;
-
- if (params < 1)
- return;
- if ((param[0][0] == 0) || (strlen(param[0]) > 127))
- return;
- if ((fil = fopen(param[0], "wb")) == NULL)
- return;
- for (int n = 0; n < 136; n++) {
- chst->nvidia_nv2a->debug_grab_vertex_program_slot(n, instruction);
- fwrite(instruction, sizeof(UINT32), 4, fil);
- }
- fclose(fil);
-}
-
-static void vprogdis_command(running_machine &machine, int ref, int params, const char **param)
-{
- UINT64 address, length, type;
- UINT32 instruction[4];
- offs_t addr;
- vertex_program_disassembler vd;
- char line[64];
- chihiro_state *chst = machine.driver_data<chihiro_state>();
- address_space &space = chst->m_maincpu->space();
-
- if (params < 2)
- return;
- if (!debug_command_parameter_number(machine, param[0], &address))
- return;
- if (!debug_command_parameter_number(machine, param[1], &length))
- return;
- type = 0;
- if (params > 2)
- if (!debug_command_parameter_number(machine, param[2], &type))
- return;
- while (length > 0) {
- if (type == 1) {
- addr = (offs_t)address;
- if (!debug_cpu_translate(space, TRANSLATE_READ_DEBUG, &addr))
- return;
- instruction[0] = space.read_dword_unaligned(address);
- instruction[1] = space.read_dword_unaligned(address + 4);
- instruction[2] = space.read_dword_unaligned(address + 8);
- instruction[3] = space.read_dword_unaligned(address + 12);
- }
- else
- chst->nvidia_nv2a->debug_grab_vertex_program_slot((int)address, instruction);
- while (vd.disassemble(instruction, line) != 0)
- debug_console_printf(machine, "%s\n", line);
- if (type == 1)
- address = address + 4 * 4;
- else
- address++;
- length--;
- }
-}
-
static void help_command(running_machine &machine, int ref, int params, const char **param)
{
debug_console_printf(machine, "Available Chihiro commands:\n");
debug_console_printf(machine, " chihiro jamdis,<start>,<size> -- Disassemble <size> bytes of JamTable instructions starting at <start>\n");
- debug_console_printf(machine, " chihiro dump_string,<address> -- Dump _STRING object at <address>\n");
- debug_console_printf(machine, " chihiro dump_process,<address> -- Dump _PROCESS object at <address>\n");
- debug_console_printf(machine, " chihiro dump_list,<address>[,<offset>] -- Dump _LIST_ENTRY chain starting at <address>\n");
- debug_console_printf(machine, " chihiro dump_dpc,<address> -- Dump _KDPC object at <address>\n");
- debug_console_printf(machine, " chihiro dump_timer,<address> -- Dump _KTIMER object at <address>\n");
- debug_console_printf(machine, " chihiro curthread -- Print information about current thread\n");
- debug_console_printf(machine, " chihiro irq,<number> -- Generate interrupt with irq number 0-15\n");
- debug_console_printf(machine, " chihiro nv2a_combiners -- Toggle use of register combiners\n");
- debug_console_printf(machine, " chihiro waitvblank -- Toggle support for wait vblank method\n");
- debug_console_printf(machine, " chihiro grab_texture,<type>,<filename> -- Save to <filename> the next used texture of type <type>\n");
- debug_console_printf(machine, " chihiro grab_vprog,<filename> -- save current vertex program instruction slots to <filename>\n");
- debug_console_printf(machine, " chihiro vprogdis,<address>,<length>[,<type>] -- disassemble <lenght> vertex program instructions at <address> of <type>\n");
debug_console_printf(machine, " chihiro help -- this list\n");
}
@@ -1181,168 +559,19 @@ static void chihiro_debug_commands(running_machine &machine, int ref, int params
return;
if (strcmp("jamdis", param[0]) == 0)
jamtable_disasm_command(machine, ref, params - 1, param + 1);
- else if (strcmp("dump_string", param[0]) == 0)
- dump_string_command(machine, ref, params - 1, param + 1);
- else if (strcmp("dump_process", param[0]) == 0)
- dump_process_command(machine, ref, params - 1, param + 1);
- else if (strcmp("dump_list", param[0]) == 0)
- dump_list_command(machine, ref, params - 1, param + 1);
- else if (strcmp("dump_dpc", param[0]) == 0)
- dump_dpc_command(machine, ref, params - 1, param + 1);
- else if (strcmp("dump_timer", param[0]) == 0)
- dump_timer_command(machine, ref, params - 1, param + 1);
- else if (strcmp("curthread", param[0]) == 0)
- curthread_command(machine, ref, params - 1, param + 1);
- else if (strcmp("irq", param[0]) == 0)
- generate_irq_command(machine, ref, params - 1, param + 1);
- else if (strcmp("nv2a_combiners", param[0]) == 0)
- nv2a_combiners_command(machine, ref, params - 1, param + 1);
- else if (strcmp("waitvblank", param[0]) == 0)
- waitvblank_command(machine, ref, params - 1, param + 1);
- else if (strcmp("grab_texture", param[0]) == 0)
- grab_texture_command(machine, ref, params - 1, param + 1);
- else if (strcmp("grab_vprog", param[0]) == 0)
- grab_vprog_command(machine, ref, params - 1, param + 1);
- else if (strcmp("vprogdis", param[0]) == 0)
- vprogdis_command(machine, ref, params - 1, param + 1);
else
help_command(machine, ref, params - 1, param + 1);
}
-void chihiro_state::debug_generate_irq(int irq, bool active)
+void chihiro_state::hack_eeprom()
{
- int state;
-
- if (active)
- {
- debug_irq_active = true;
- debug_irq_number = irq;
- state = 1;
- }
- else
- {
- debug_irq_active = false;
- state = 0;
- }
- switch (irq)
- {
- case 0:
- chihiro_devs.pic8259_1->ir0_w(state);
- break;
- case 1:
- chihiro_devs.pic8259_1->ir1_w(state);
- break;
- case 3:
- chihiro_devs.pic8259_1->ir3_w(state);
- break;
- case 4:
- chihiro_devs.pic8259_1->ir4_w(state);
- break;
- case 5:
- chihiro_devs.pic8259_1->ir5_w(state);
- break;
- case 6:
- chihiro_devs.pic8259_1->ir6_w(state);
- break;
- case 7:
- chihiro_devs.pic8259_1->ir7_w(state);
- break;
- case 8:
- chihiro_devs.pic8259_2->ir0_w(state);
- break;
- case 9:
- chihiro_devs.pic8259_2->ir1_w(state);
- break;
- case 10:
- chihiro_devs.pic8259_2->ir2_w(state);
- break;
- case 11:
- chihiro_devs.pic8259_2->ir3_w(state);
- break;
- case 12:
- chihiro_devs.pic8259_2->ir4_w(state);
- break;
- case 13:
- chihiro_devs.pic8259_2->ir5_w(state);
- break;
- case 14:
- chihiro_devs.pic8259_2->ir6_w(state);
- break;
- case 15:
- chihiro_devs.pic8259_2->ir7_w(state);
- break;
- }
+ // 8003b744,3b744=0x90 0x90
+ m_maincpu->space(0).write_byte(0x3b744, 0x90);
+ m_maincpu->space(0).write_byte(0x3b745, 0x90);
+ m_maincpu->space(0).write_byte(0x3b766, 0xc9);
+ m_maincpu->space(0).write_byte(0x3b767, 0xc3);
}
-void chihiro_state::vblank_callback(screen_device &screen, bool state)
-{
- if (nvidia_nv2a->vblank_callback(screen, state))
- chihiro_devs.pic8259_1->ir3_w(1); // IRQ 3
- else
- chihiro_devs.pic8259_1->ir3_w(0); // IRQ 3
-}
-
-UINT32 chihiro_state::screen_update_callback(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
-{
- return nvidia_nv2a->screen_update_callback(screen, bitmap, cliprect);
-}
-
-READ32_MEMBER(chihiro_state::geforce_r)
-{
- return nvidia_nv2a->geforce_r(space, offset, mem_mask);
-}
-
-WRITE32_MEMBER(chihiro_state::geforce_w)
-{
- nvidia_nv2a->geforce_w(space, offset, data, mem_mask);
-}
-
-static UINT32 geforce_pci_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
-{
-#ifdef LOG_PCI
- // logerror(" bus:1 device:NV_2A function:%d register:%d mask:%08X\n",function,reg,mem_mask);
-#endif
- return 0;
-}
-
-static void geforce_pci_w(device_t *busdevice, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask)
-{
-#ifdef LOG_PCI
- // logerror(" bus:1 device:NV_2A function:%d register:%d data:%08X mask:%08X\n",function,reg,data,mem_mask);
-#endif
-}
-
-/*
- * ohci usb controller (placeholder for now)
- */
-
-#ifdef LOG_OHCI
-static const char *const usbregnames[] = {
- "HcRevision",
- "HcControl",
- "HcCommandStatus",
- "HcInterruptStatus",
- "HcInterruptEnable",
- "HcInterruptDisable",
- "HcHCCA",
- "HcPeriodCurrentED",
- "HcControlHeadED",
- "HcControlCurrentED",
- "HcBulkHeadED",
- "HcBulkCurrentED",
- "HcDoneHead",
- "HcFmInterval",
- "HcFmRemaining",
- "HcFmNumber",
- "HcPeriodicStart",
- "HcLSThreshold",
- "HcRhDescriptorA",
- "HcRhDescriptorB",
- "HcRhStatus",
- "HcRhPortStatus[1]"
-};
-#endif
-
static const struct {
const char *game_name;
struct {
@@ -1352,720 +581,24 @@ static const struct {
} hacks[2] = { { "chihiro", { { 0x6a79f, 0x01 }, { 0x6a7a0, 0x00 }, { 0x6b575, 0x00 }, { 0x6b576, 0x00 }, { 0x6b5af, 0x75 }, { 0x6b78a, 0x75 }, { 0x6b7ca, 0x00 }, { 0x6b7b8, 0x00 }, { 0x8f5b2, 0x75 }, { 0x79a9e, 0x74 }, { 0x79b80, 0x74 }, { 0x79b97, 0x74 }, { 0, 0 } } },
{ "outr2", { { 0x12e4cf, 0x01 }, { 0x12e4d0, 0x00 }, { 0x4793e, 0x01 }, { 0x4793f, 0x00 }, { 0x47aa3, 0x01 }, { 0x47aa4, 0x00 }, { 0x14f2b6, 0x84 }, { 0x14f2d1, 0x75 }, { 0x8732f, 0x7d }, { 0x87384, 0x7d }, { 0x87388, 0xeb }, { 0, 0 } } } };
-READ32_MEMBER(chihiro_state::usbctrl_r)
-{
- UINT32 ret;
-
-#ifdef LOG_OHCI
- if (offset >= 0x54 / 4)
- logerror("usb controller 0 register HcRhPortStatus[%d] read\n", (offset - 0x54 / 4) + 1);
- else
- logerror("usb controller 0 register %s read\n", usbregnames[offset]);
-#endif
- ret=ohcist.hc_regs[offset];
- if (offset == 0) { /* hacks needed until usb (and jvs) is implemented */
-#ifdef USB_ENABLED
-#else
- int p;
-
- if (usbhack_counter == 0)
- p = 0;
- else if (usbhack_counter == 1) // after game loaded
- p = usbhack_index;
- else
- p = -1;
- if (p >= 0) {
- for (int a = 0; a < 16; a++) {
- if (hacks[p].modify[a].address == 0)
- break;
- m_maincpu->space(0).write_byte(hacks[p].modify[a].address, hacks[p].modify[a].write_byte);
- }
- }
- usbhack_counter++;
-#endif
- }
- return ret;
-}
-
-WRITE32_MEMBER(chihiro_state::usbctrl_w)
+void chihiro_state::hack_usb()
{
-#ifdef USB_ENABLED
- UINT32 old = ohcist.hc_regs[offset];
-#endif
+ int p;
-#ifdef LOG_OHCI
- if (offset >= 0x54 / 4)
- logerror("usb controller 0 register HcRhPortStatus[%d] write %08X\n", (offset - 0x54 / 4) + 1, data);
+ if (usbhack_counter == 0)
+ p = 0;
+ else if (usbhack_counter == 1) // after game loaded
+ p = usbhack_index;
else
- logerror("usb controller 0 register %s write %08X\n", usbregnames[offset], data);
-#endif
-#ifdef USB_ENABLED
- if (offset == HcRhStatus) {
- if (data & 0x80000000)
- ohcist.hc_regs[HcRhStatus] &= ~0x8000;
- if (data & 0x00020000)
- ohcist.hc_regs[HcRhStatus] &= ~0x0002;
- if (data & 0x00010000)
- ohcist.hc_regs[HcRhStatus] &= ~0x0001;
- return;
- }
- if (offset == HcControl) {
- int hcfs;
-
- hcfs = (data >> 6) & 3;
- if (hcfs == UsbOperational) {
- ohcist.timer->enable();
- ohcist.timer->adjust(attotime::from_msec(1), 0, attotime::from_msec(1));
- ohcist.writebackdonehadcounter = 7;
- }
- else
- ohcist.timer->enable(false);
- ohcist.state = hcfs;
- ohcist.interruptbulkratio = (data & 3) + 1;
- }
- if (offset == HcCommandStatus) {
- if (data & 1)
- ohcist.hc_regs[HcControl] |= 3 << 6;
- ohcist.hc_regs[HcCommandStatus] |= data;
- return;
- }
- if (offset == HcInterruptStatus) {
- ohcist.hc_regs[HcInterruptStatus] &= ~data;
- usb_ohci_interrupts();
- return;
- }
- if (offset == HcInterruptEnable) {
- ohcist.hc_regs[HcInterruptEnable] |= data;
- usb_ohci_interrupts();
- return;
- }
- if (offset == HcInterruptDisable) {
- ohcist.hc_regs[HcInterruptEnable] &= ~data;
- usb_ohci_interrupts();
- return;
- }
- if (offset >= HcRhPortStatus1) {
- int port = offset - HcRhPortStatus1 + 1; // port 0 not used
- // bit 0 ClearPortEnable: 1 clears PortEnableStatus
- // bit 1 SetPortEnable: 1 sets PortEnableStatus
- // bit 2 SetPortSuspend: 1 sets PortSuspendStatus
- // bit 3 ClearSuspendStatus: 1 clears PortSuspendStatus
- // bit 4 SetPortReset: 1 sets PortResetStatus
- if (data & 0x10) {
- ohcist.hc_regs[offset] |= 0x10;
- ohcist.ports[port].function->execute_reset();
- // after 10ms set PortResetStatusChange and clear PortResetStatus and set PortEnableStatus
- ohcist.ports[port].delay = 10;
- }
- // bit 8 SetPortPower: 1 sets PortPowerStatus
- // bit 9 ClearPortPower: 1 clears PortPowerStatus
- // bit 16 1 clears ConnectStatusChange
- // bit 17 1 clears PortEnableStatusChange
- // bit 18 1 clears PortSuspendStatusChange
- // bit 19 1 clears PortOverCurrentIndicatorChange
- // bit 20 1 clears PortResetStatusChange
- if (ohcist.hc_regs[offset] != old)
- ohcist.hc_regs[HcInterruptStatus] |= RootHubStatusChange;
- usb_ohci_interrupts();
- return;
- }
-#endif
- ohcist.hc_regs[offset] = data;
-}
-
-TIMER_CALLBACK_MEMBER(chihiro_state::usb_ohci_timer)
-{
- UINT32 hcca;
- int changed = 0;
- int list = 1;
- bool cont = false;
- int pid, remain, mps;
-
- hcca = ohcist.hc_regs[HcHCCA];
- if (ohcist.state == UsbOperational) {
- // increment frame number
- ohcist.framenumber = (ohcist.framenumber + 1) & 0xffff;
- ohcist.space->write_dword(hcca + 0x80, ohcist.framenumber);
- ohcist.hc_regs[HcFmNumber] = ohcist.framenumber;
- }
- // port reset delay
- for (int p = 1; p <= 4; p++) {
- if (ohcist.ports[p].delay > 0) {
- ohcist.ports[p].delay--;
- if (ohcist.ports[p].delay == 0) {
- ohcist.hc_regs[HcRhPortStatus1 + p - 1] = (ohcist.hc_regs[HcRhPortStatus1 + p - 1] & ~(1 << 4)) | (1 << 20) | (1 << 1); // bit 1 PortEnableStatus
- changed = 1;
- }
- }
- }
- if (ohcist.state == UsbOperational) {
- while (list >= 0)
- {
- // select list, do transfer
- if (list == 0) {
- if (ohcist.hc_regs[HcControl] & (1 << 2)) {
- // periodic
- if (ohcist.hc_regs[HcControl] & (1 << 3)) {
- // isochronous
- }
- }
- list = -1;
- }
- if (list == 1) {
- // control
- if (ohcist.hc_regs[HcControl] & (1 << 4)) {
- cont = true;
- while (cont == true) {
- // if current endpoint descriptor is not 0 use it, otherwise ...
- if (ohcist.hc_regs[HcControlCurrentED] == 0) {
- // ... check the filled bit ...
- if (ohcist.hc_regs[HcCommandStatus] & (1 << 1)) {
- // ... if 1 start processing from the head of the list
- ohcist.hc_regs[HcControlCurrentED] = ohcist.hc_regs[HcControlHeadED];
- ohcist.hc_regs[HcCommandStatus] &= ~(1 << 1);
- // but if the list is empty, go to the next list
- if (ohcist.hc_regs[HcControlCurrentED] == 0)
- cont = false;
- }
- else
- cont = false;
- }
- if (cont == true) {
- // service endpoint descriptor
- usb_ohci_read_endpoint_descriptor(ohcist.hc_regs[HcControlCurrentED]);
- // only if it is not halted and not to be skipped
- if (!(ohcist.endpoint_descriptor.h | ohcist.endpoint_descriptor.k)) {
- // compare the Endpoint Descriptor’s TailPointer and NextTransferDescriptor fields.
- if (ohcist.endpoint_descriptor.headp != ohcist.endpoint_descriptor.tailp) {
- UINT32 a, b;
- // service transfer descriptor
- usb_ohci_read_transfer_descriptor(ohcist.endpoint_descriptor.headp);
- // get pid
- if (ohcist.endpoint_descriptor.d == 1)
- pid=OutPid; // out
- else if (ohcist.endpoint_descriptor.d == 2)
- pid=InPid; // in
- else {
- pid = ohcist.transfer_descriptor.dp; // 0 setup 1 out 2 in
- }
- // determine how much data to transfer
- // setup pid must be 8 bytes
- a = ohcist.transfer_descriptor.be & 0xfff;
- b = ohcist.transfer_descriptor.cbp & 0xfff;
- if ((ohcist.transfer_descriptor.be ^ ohcist.transfer_descriptor.cbp) & 0xfffff000)
- a |= 0x1000;
- remain = a - b + 1;
- if (pid == InPid) {
- mps = ohcist.endpoint_descriptor.mps;
- if (remain < mps)
- mps = remain;
- }
- else {
- mps = ohcist.endpoint_descriptor.mps;
- }
- if (ohcist.transfer_descriptor.cbp == 0)
- mps = 0;
- b = ohcist.transfer_descriptor.cbp;
- // if sending ...
- if (pid != InPid) {
- // ... get mps bytes
- for (int c = 0; c < mps; c++) {
- ohcist.buffer[c] = ohcist.space->read_byte(b);
- b++;
- if ((b & 0xfff) == 0)
- b = ohcist.transfer_descriptor.be & 0xfffff000;
- }
- }
- // should check for time available
- // execute transaction
- mps=ohcist.ports[1].function->execute_transfer(ohcist.endpoint_descriptor.fa, ohcist.endpoint_descriptor.en, pid, ohcist.buffer, mps);
- // if receiving ...
- if (pid == InPid) {
- // ... store mps bytes
- for (int c = 0; c < mps; c++) {
- ohcist.space->write_byte(b,ohcist.buffer[c]);
- b++;
- if ((b & 0xfff) == 0)
- b = ohcist.transfer_descriptor.be & 0xfffff000;
- }
- }
- // status writeback (CompletionCode field, DataToggleControl field, CurrentBufferPointer field, ErrorCount field)
- ohcist.transfer_descriptor.cc = NoError;
- ohcist.transfer_descriptor.t = (ohcist.transfer_descriptor.t ^ 1) | 2;
- ohcist.transfer_descriptor.cbp = b;
- ohcist.transfer_descriptor.ec = 0;
- if ((remain == mps) || (mps == 0)) {
- // retire transfer descriptor
- a = ohcist.endpoint_descriptor.headp;
- ohcist.endpoint_descriptor.headp = ohcist.transfer_descriptor.nexttd;
- ohcist.transfer_descriptor.nexttd = ohcist.hc_regs[HcDoneHead];
- ohcist.hc_regs[HcDoneHead] = a;
- ohcist.endpoint_descriptor.c = ohcist.transfer_descriptor.t & 1;
- if (ohcist.transfer_descriptor.di != 7) {
- if (ohcist.transfer_descriptor.di < ohcist.writebackdonehadcounter)
- ohcist.writebackdonehadcounter = ohcist.transfer_descriptor.di;
- }
- usb_ohci_writeback_transfer_descriptor(a);
- usb_ohci_writeback_endpoint_descriptor(ohcist.hc_regs[HcControlCurrentED]);
- } else {
- usb_ohci_writeback_transfer_descriptor(ohcist.endpoint_descriptor.headp);
- }
- } else
- ohcist.hc_regs[HcControlCurrentED] = ohcist.endpoint_descriptor.nexted;
- } else
- ohcist.hc_regs[HcControlCurrentED] = ohcist.endpoint_descriptor.nexted;
- // one bulk every n control transfers
- ohcist.interruptbulkratio--;
- if (ohcist.interruptbulkratio <= 0) {
- ohcist.interruptbulkratio = (ohcist.hc_regs[HcControl] & 3) + 1;
- cont = false;
- }
- }
- }
- }
- list = 2;
- }
- if (list == 2) {
- // bulk
- if (ohcist.hc_regs[HcControl] & (1 << 5)) {
- ohcist.hc_regs[HcCommandStatus] &= ~(1 << 2);
- if (ohcist.hc_regs[HcControlCurrentED] == 0)
- list = 0;
- else if (ohcist.hc_regs[HcControl] & (1 << 4))
- list = 1;
- else
- list = 0;
- }
- }
+ p = -1;
+ if (p >= 0) {
+ for (int a = 0; a < 16; a++) {
+ if (hacks[p].modify[a].address == 0)
+ break;
+ m_maincpu->space(0).write_byte(hacks[p].modify[a].address, hacks[p].modify[a].write_byte);
}
- if (ohcist.framenumber == 0)
- ohcist.hc_regs[HcInterruptStatus] |= FrameNumberOverflow;
- ohcist.hc_regs[HcInterruptStatus] |= StartofFrame;
- if ((ohcist.writebackdonehadcounter != 0) && (ohcist.writebackdonehadcounter != 7))
- ohcist.writebackdonehadcounter--;
- if ((ohcist.writebackdonehadcounter == 0) && ((ohcist.hc_regs[HcInterruptStatus] & WritebackDoneHead) == 0)) {
- UINT32 b = 0;
-
- if ((ohcist.hc_regs[HcInterruptStatus] & ohcist.hc_regs[HcInterruptEnable]) != WritebackDoneHead)
- b = 1;
- ohcist.hc_regs[HcInterruptStatus] |= WritebackDoneHead;
- ohcist.space->write_dword(hcca + 0x84, ohcist.hc_regs[HcDoneHead] | b);
- ohcist.hc_regs[HcDoneHead] = 0;
- ohcist.writebackdonehadcounter = 7;
- }
- }
- if (changed != 0) {
- ohcist.hc_regs[HcInterruptStatus] |= RootHubStatusChange;
- }
- usb_ohci_interrupts();
-}
-
-void chihiro_state::usb_ohci_plug(int port, ohci_function_device *function)
-{
- if ((port > 0) && (port <= 4)) {
- ohcist.ports[port].function = function;
- ohcist.hc_regs[HcRhPortStatus1+port-1] = 1;
}
-}
-
-static USBStandardDeviceDscriptor devdesc = {18,1,0x201,0xff,0x34,0x56,64,0x100,0x101,0x301,0,0,0,1};
-
-ohci_function_device::ohci_function_device()
-{
- address = 0;
- controldir = 0;
- remain = 0;
- position = NULL;
-}
-
-void ohci_function_device::execute_reset()
-{
- address = 0;
-}
-
-int ohci_function_device::execute_transfer(int address, int endpoint, int pid, UINT8 *buffer, int size)
-{
- if (endpoint == 0) {
- if (pid == SetupPid) {
- struct USBSetupPacket *p=(struct USBSetupPacket *)buffer;
- // define direction
- controldir = p->bmRequestType & 128;
- // case !=0, in data stage and out status stage
- // case ==0, out data stage and in status stage
- position = NULL;
- remain = p->wLength;
- if ((p->bmRequestType & 0x60) == 0) {
- switch (p->bRequest) {
- case GET_DESCRIPTOR:
- if ((p->wValue >> 8) == 1) { // device descriptor
- //p->wValue & 255;
- position = (UINT8 *)&devdesc;
- remain = sizeof(devdesc);
- }
- break;
- case SET_ADDRESS:
- //p->wValue;
- break;
- default:
- break;
- }
- }
- }
- else if (pid == InPid) {
- // case !=0, give data
- // case ==0, nothing
- if (size > remain)
- size = remain;
- if (controldir != 0) {
- if (position != NULL)
- memcpy(buffer, position, size);
- position = position + size;
- remain = remain - size;
- }
- }
- else if (pid == OutPid) {
- // case !=0, nothing
- // case ==0, give data
- if (size > remain)
- size = remain;
- if (controldir == 0) {
- if (position != NULL)
- memcpy(position, buffer, size);
- position = position + size;
- remain = remain - size;
- }
- }
- }
- return size;
-}
-
-void chihiro_state::usb_ohci_interrupts()
-{
- if (((ohcist.hc_regs[HcInterruptStatus] & ohcist.hc_regs[HcInterruptEnable]) != 0) && ((ohcist.hc_regs[HcInterruptEnable] & MasterInterruptEnable) != 0))
- chihiro_devs.pic8259_1->ir1_w(1);
- else
- chihiro_devs.pic8259_1->ir1_w(0);
-}
-
-void chihiro_state::usb_ohci_read_endpoint_descriptor(UINT32 address)
-{
- UINT32 w;
-
- w = ohcist.space->read_dword(address);
- ohcist.endpoint_descriptor.word0 = w;
- ohcist.endpoint_descriptor.fa = w & 0x7f;
- ohcist.endpoint_descriptor.en = (w >> 7) & 15;
- ohcist.endpoint_descriptor.d = (w >> 11) & 3;
- ohcist.endpoint_descriptor.s = (w >> 13) & 1;
- ohcist.endpoint_descriptor.k = (w >> 14) & 1;
- ohcist.endpoint_descriptor.f = (w >> 15) & 1;
- ohcist.endpoint_descriptor.mps = (w >> 16) & 0x7ff;
- ohcist.endpoint_descriptor.tailp = ohcist.space->read_dword(address + 4);
- w = ohcist.space->read_dword(address + 8);
- ohcist.endpoint_descriptor.headp = w & 0xfffffffc;
- ohcist.endpoint_descriptor.h = w & 1;
- ohcist.endpoint_descriptor.c = (w >> 1) & 1;
- ohcist.endpoint_descriptor.nexted = ohcist.space->read_dword(address + 12);
-}
-
-void chihiro_state::usb_ohci_writeback_endpoint_descriptor(UINT32 address)
-{
- UINT32 w;
-
- w = ohcist.endpoint_descriptor.word0 & 0xf8000000;
- w = w | (ohcist.endpoint_descriptor.mps << 16) | (ohcist.endpoint_descriptor.f << 15) | (ohcist.endpoint_descriptor.k << 14) | (ohcist.endpoint_descriptor.s << 13) | (ohcist.endpoint_descriptor.d << 11) | (ohcist.endpoint_descriptor.en << 7) | ohcist.endpoint_descriptor.fa;
- ohcist.space->write_dword(address, w);
- w = ohcist.endpoint_descriptor.headp | (ohcist.endpoint_descriptor.c << 1) | ohcist.endpoint_descriptor.h;
- ohcist.space->write_dword(address + 8, w);
-}
-
-void chihiro_state::usb_ohci_read_transfer_descriptor(UINT32 address)
-{
- UINT32 w;
-
- w = ohcist.space->read_dword(address);
- ohcist.transfer_descriptor.word0 = w;
- ohcist.transfer_descriptor.cc = (w >> 28) & 15;
- ohcist.transfer_descriptor.ec= (w >> 26) & 3;
- ohcist.transfer_descriptor.t= (w >> 24) & 3;
- ohcist.transfer_descriptor.di= (w >> 21) & 7;
- ohcist.transfer_descriptor.dp= (w >> 19) & 3;
- ohcist.transfer_descriptor.r = (w >> 18) & 1;
- ohcist.transfer_descriptor.cbp = ohcist.space->read_dword(address + 4);
- ohcist.transfer_descriptor.nexttd = ohcist.space->read_dword(address + 8);
- ohcist.transfer_descriptor.be = ohcist.space->read_dword(address + 12);
-}
-
-void chihiro_state::usb_ohci_writeback_transfer_descriptor(UINT32 address)
-{
- UINT32 w;
-
- w = ohcist.transfer_descriptor.word0 & 0x0003ffff;
- w = w | (ohcist.transfer_descriptor.cc << 28) | (ohcist.transfer_descriptor.ec << 26) | (ohcist.transfer_descriptor.t << 24) | (ohcist.transfer_descriptor.di << 21) | (ohcist.transfer_descriptor.dp << 19) | (ohcist.transfer_descriptor.r << 18);
- ohcist.space->write_dword(address, w);
- ohcist.space->write_dword(address + 4, ohcist.transfer_descriptor.cbp);
- ohcist.space->write_dword(address + 8, ohcist.transfer_descriptor.nexttd);
-}
-
-void chihiro_state::usb_ohci_read_isochronous_transfer_descriptor(UINT32 address)
-{
- UINT32 w;
-
- w = ohcist.space->read_dword(address);
- ohcist.isochronous_transfer_descriptor.cc = (w >> 28) & 15;
- ohcist.isochronous_transfer_descriptor.fc = (w >> 24) & 7;
- ohcist.isochronous_transfer_descriptor.di = (w >> 21) & 7;
- ohcist.isochronous_transfer_descriptor.sf = w & 0xffff;
- ohcist.isochronous_transfer_descriptor.bp0 = ohcist.space->read_dword(address + 4) & 0xfffff000;
- ohcist.isochronous_transfer_descriptor.nexttd = ohcist.space->read_dword(address + 8);
- ohcist.isochronous_transfer_descriptor.be = ohcist.space->read_dword(address + 12);
- w = ohcist.space->read_dword(address + 16);
- ohcist.isochronous_transfer_descriptor.offset[0] = w & 0xffff;
- ohcist.isochronous_transfer_descriptor.offset[1] = (w >> 16) & 0xffff;
- w = ohcist.space->read_dword(address + 20);
- ohcist.isochronous_transfer_descriptor.offset[2] = w & 0xffff;
- ohcist.isochronous_transfer_descriptor.offset[3] = (w >> 16) & 0xffff;
- w = ohcist.space->read_dword(address + 24);
- ohcist.isochronous_transfer_descriptor.offset[4] = w & 0xffff;
- ohcist.isochronous_transfer_descriptor.offset[5] = (w >> 16) & 0xffff;
- w = ohcist.space->read_dword(address + 28);
- ohcist.isochronous_transfer_descriptor.offset[6] = w & 0xffff;
- ohcist.isochronous_transfer_descriptor.offset[7] = (w >> 16) & 0xffff;
-}
-
-/*
- * Audio
- */
-
-READ32_MEMBER(chihiro_state::audio_apu_r)
-{
- logerror("Audio_APU: read from %08X mask %08X\n", 0xfe800000 + offset * 4, mem_mask);
- if (offset == 0x20010 / 4) // some kind of internal counter or state value
- return 0x20 + 4 + 8 + 0x48 + 0x80;
- return apust.memory[offset];
-}
-
-WRITE32_MEMBER(chihiro_state::audio_apu_w)
-{
- //UINT32 old;
- UINT32 v;
-
- logerror("Audio_APU: write at %08X mask %08X value %08X\n", 0xfe800000 + offset * 4, mem_mask, data);
- //old = apust.memory[offset];
- apust.memory[offset] = data;
- if (offset == 0x02040 / 4) // address of memory area with scatter-gather info (gpdsp scratch dma)
- apust.gpdsp_sgaddress = data;
- if (offset == 0x020d4 / 4) { // block count (gpdsp)
- apust.gpdsp_sgblocks = data;
- apust.gpdsp_address = apust.space->read_dword(apust.gpdsp_sgaddress); // memory address of first block
- apust.timer->enable();
- apust.timer->adjust(attotime::from_msec(1), 0, attotime::from_msec(1));
- }
- if (offset == 0x02048 / 4) // (epdsp scratch dma)
- apust.epdsp_sgaddress = data;
- if (offset == 0x020dc / 4) // (epdsp)
- apust.epdsp_sgblocks = data;
- if (offset == 0x0204c / 4) // address of memory area with information about blocks
- apust.unknown_sgaddress = data;
- if (offset == 0x020e0 / 4) // block count - 1
- apust.unknown_sgblocks = data;
- if (offset == 0x0202c / 4) { // address of memory area with 0x80 bytes for each voice
- apust.voicedata_address = data;
- return;
- }
- if (offset == 0x04024 / 4) // offset in memory area indicated by 0x204c (analog output ?)
- return;
- if (offset == 0x04034 / 4) // size
- return;
- if (offset == 0x04028 / 4) // offset in memory area indicated by 0x204c (digital output ?)
- return;
- if (offset == 0x04038 / 4) // size
- return;
- if (offset == 0x20804 / 4) { // block number for scatter-gather heap that stores sampled audio to be played
- if (data >= 1024) {
- logerror("Audio_APU: sg block number too high, increase size of voices_heap_blockaddr\n");
- apust.memory[offset] = 1023;
- }
- return;
- }
- if (offset == 0x20808 / 4) { // block address for scatter-gather heap that stores sampled audio to be played
- apust.voices_heap_blockaddr[apust.memory[0x20804 / 4]] = data;
- return;
- }
- if (offset == 0x202f8 / 4) { // voice number for parameters ?
- apust.voice_number = data;
- return;
- }
- if (offset == 0x202fc / 4) // 1 when accessing voice parameters 0 otherwise
- return;
- if (offset == 0x20304 / 4) { // format
- /*
- bits 28-31 sample format:
- 0 8-bit pcm
- 5 16-bit pcm
- 10 adpcm ?
- 14 24-bit pcm
- 15 32-bit pcm
- bits 16-20 number of channels - 1:
- 0 mono
- 1 stereo
- */
- return;
- }
- if (offset == 0x2037c / 4) { // value related to sample rate
- INT16 v = (INT16)(data >> 16); // upper 16 bits as a signed 16 bit value
- float vv = ((float)v) / 4096.0f; // divide by 4096
- float vvv = powf(2, vv); // two to the vv
- int f = vvv*48000.0f; // sample rate
- apust.voices_frequency[apust.voice_number] = f;
- return;
- }
- if (offset == 0x203a0 / 4) // start offset of data in scatter-gather heap
- return;
- if (offset == 0x203a4 / 4) { // first sample to play
- apust.voices_position_start[apust.voice_number] = data * 1000;
- return;
- }
- if (offset == 0x203dc / 4) { // last sample to play
- apust.voices_position_end[apust.voice_number] = data * 1000;
- return;
- }
- if (offset == 0x2010c / 4) // voice processor 0 idle 1 not idle ?
- return;
- if (offset == 0x20124 / 4) { // voice number to activate ?
- v = apust.voice_number;
- apust.voices_active[v >> 6] |= ((UINT64)1 << (v & 63));
- apust.voices_position[v] = apust.voices_position_start[apust.voice_number];
- apust.voices_position_increment[apust.voice_number] = apust.voices_frequency[apust.voice_number];
- return;
- }
- if (offset == 0x20128 / 4) { // voice number to deactivate ?
- v = apust.voice_number;
- apust.voices_active[v >> 6] &= ~(1 << (v & 63));
- return;
- }
- if (offset == 0x20140 / 4) // voice number to ?
- return;
- if ((offset >= 0x20200 / 4) && (offset < 0x20280 / 4)) // headroom for each of the 32 mixbins
- return;
- if (offset == 0x20280 / 4) // hrtf headroom ?
- return;
-}
-
-READ32_MEMBER(chihiro_state::audio_ac93_r)
-{
- UINT32 ret = 0;
-
- logerror("Audio_AC3: read from %08X mask %08X\n", 0xfec00000 + offset * 4, mem_mask);
- if (offset < 0x80 / 4)
- {
- ret = ac97st.mixer_regs[offset];
- }
- if ((offset >= 0x100 / 4) && (offset <= 0x138 / 4))
- {
- offset = offset - 0x100 / 4;
- if (offset == 0x18 / 4)
- {
- ac97st.controller_regs[offset] &= ~0x02000000; // REGRST: register reset
- }
- if (offset == 0x30 / 4)
- {
- ac97st.controller_regs[offset] |= 0x100; // PCRDY: primary codec ready
- }
- if (offset == 0x34 / 4)
- {
- ac97st.controller_regs[offset] &= ~1; // CAS: codec access semaphore
- }
- ret = ac97st.controller_regs[offset];
- }
- return ret;
-}
-
-WRITE32_MEMBER(chihiro_state::audio_ac93_w)
-{
- logerror("Audio_AC3: write at %08X mask %08X value %08X\n", 0xfec00000 + offset * 4, mem_mask, data);
- if (offset < 0x80 / 4)
- {
- COMBINE_DATA(ac97st.mixer_regs + offset);
- }
- if ((offset >= 0x100 / 4) && (offset <= 0x138 / 4))
- {
- offset = offset - 0x100 / 4;
- COMBINE_DATA(ac97st.controller_regs + offset);
- }
-}
-
-TIMER_CALLBACK_MEMBER(chihiro_state::audio_apu_timer)
-{
- int cmd;
- int bb, b, v;
- UINT64 bv;
- UINT32 phys;
-
- cmd = apust.space->read_dword(apust.gpdsp_address + 0x800 + 0x10);
- if (cmd == 3)
- apust.space->write_dword(apust.gpdsp_address + 0x800 + 0x10, 0);
- /*else
- logerror("Audio_APU: unexpected value at address %d\n",apust.gpdsp_address+0x800+0x10);*/
- for (b = 0; b < 4; b++) {
- bv = 1;
- for (bb = 0; bb < 64; bb++) {
- if (apust.voices_active[b] & bv) {
- v = bb + (b << 6);
- apust.voices_position[v] += apust.voices_position_increment[v];
- while (apust.voices_position[v] >= apust.voices_position_end[v])
- apust.voices_position[v] = apust.voices_position_start[v] + apust.voices_position[v] - apust.voices_position_end[v] - 1000;
- phys = apust.voicedata_address + 0x80 * v;
- apust.space->write_dword(phys + 0x58, apust.voices_position[v] / 1000);
- }
- bv = bv << 1;
- }
- }
-}
-
-static UINT32 hubintiasbridg_pci_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
-{
-#ifdef LOG_PCI
- // logerror(" bus:0 function:%d register:%d mask:%08X\n",function,reg,mem_mask);
-#endif
- if ((function == 0) && (reg == 8))
- return 0xb4; // 0:1:0 revision id must be at least 0xb4, otherwise usb will require a hub
- return 0;
-}
-
-static void hubintiasbridg_pci_w(device_t *busdevice, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask)
-{
-#ifdef LOG_PCI
- if (reg >= 16) logerror(" bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
-#endif
-}
-
-/*
- * dummy for non connected devices
- */
-
-static UINT32 dummy_pci_r(device_t *busdevice, device_t *device, int function, int reg, UINT32 mem_mask)
-{
-#ifdef LOG_PCI
- // logerror(" bus:0 function:%d register:%d mask:%08X\n",function,reg,mem_mask);
-#endif
- return 0;
-}
-
-static void dummy_pci_w(device_t *busdevice, device_t *device, int function, int reg, UINT32 data, UINT32 mem_mask)
-{
-#ifdef LOG_PCI
- if (reg >= 16) logerror(" bus:0 function:%d register:%d data:%08X mask:%08X\n", function, reg, data, mem_mask);
-#endif
-}
-
-READ32_MEMBER(chihiro_state::dummy_r)
-{
- return 0;
-}
-
-WRITE32_MEMBER(chihiro_state::dummy_w)
-{
+ usbhack_counter++;
}
// ======================> ide_baseboard_device
@@ -2263,7 +796,7 @@ void chihiro_state::baseboard_ide_event(int type, UINT8 *read_buffer, UINT8 *wri
// clear
write_buffer[0] = write_buffer[1] = write_buffer[2] = write_buffer[3] = 0;
// irq 10 active
- chihiro_devs.pic8259_2->ir2_w(1);
+ xbox_base_devs.pic8259_2->ir2_w(1);
}
UINT8 *chihiro_state::baseboard_ide_dimmboard(UINT32 lba)
@@ -2274,192 +807,6 @@ UINT8 *chihiro_state::baseboard_ide_dimmboard(UINT32 lba)
return NULL;
}
-/*
- * PIC & PIT
- */
-
-WRITE_LINE_MEMBER(chihiro_state::chihiro_pic8259_1_set_int_line)
-{
- m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE);
-}
-
-READ8_MEMBER(chihiro_state::get_slave_ack)
-{
- if (offset == 2) { // IRQ = 2
- return chihiro_devs.pic8259_2->acknowledge();
- }
- return 0x00;
-}
-
-IRQ_CALLBACK_MEMBER(chihiro_state::irq_callback)
-{
- int r = 0;
- r = chihiro_devs.pic8259_2->acknowledge();
- if (r == 0)
- {
- r = chihiro_devs.pic8259_1->acknowledge();
- }
- if (debug_irq_active)
- debug_generate_irq(debug_irq_number, false);
- return r;
-}
-
-WRITE_LINE_MEMBER(chihiro_state::chihiro_pit8254_out0_changed)
-{
- if (chihiro_devs.pic8259_1)
- {
- chihiro_devs.pic8259_1->ir0_w(state);
- }
-}
-
-WRITE_LINE_MEMBER(chihiro_state::chihiro_pit8254_out2_changed)
-{
- //chihiro_speaker_set_input( state ? 1 : 0 );
-}
-
-/*
- * SMbus devices
- */
-
-int smbus_callback_pic16lc(chihiro_state &chs, int command, int rw, int data)
-{
- return chs.smbus_pic16lc(command, rw, data);
-}
-
-int chihiro_state::smbus_pic16lc(int command, int rw, int data)
-{
- if (rw == 1) { // read
- if (command == 0) {
- if (pic16lc_buffer[0] == 'D')
- pic16lc_buffer[0] = 'X';
- else if (pic16lc_buffer[0] == 'X')
- pic16lc_buffer[0] = 'B';
- else if (pic16lc_buffer[0] == 'B')
- pic16lc_buffer[0] = 'D';
- }
- logerror("pic16lc: %d %d %d\n", command, rw, pic16lc_buffer[command]);
- return pic16lc_buffer[command];
- }
- else
- if (command == 0)
- pic16lc_buffer[0] = 'B';
- else
- pic16lc_buffer[command] = (UINT8)data;
- logerror("pic16lc: %d %d %d\n", command, rw, data);
- return 0;
-}
-
-int smbus_callback_cx25871(chihiro_state &chs, int command, int rw, int data)
-{
- return chs.smbus_cx25871(command, rw, data);
-}
-
-int chihiro_state::smbus_cx25871(int command, int rw, int data)
-{
- logerror("cx25871: %d %d %d\n", command, rw, data);
- return 0;
-}
-
-// let's try to fake the missing eeprom
-static int dummyeeprom[256]={0x94,0x18,0x10,0x59,0x83,0x58,0x15,0xDA,0xDF,0xCC,0x1D,0x78,0x20,0x8A,0x61,0xB8,0x08,0xB4,0xD6,0xA8,
- 0x9E,0x77,0x9C,0xEB,0xEA,0xF8,0x93,0x6E,0x3E,0xD6,0x9C,0x49,0x6B,0xB5,0x6E,0xAB,0x6D,0xBC,0xB8,0x80,0x68,0x9D,0xAA,0xCD,0x0B,0x83,
- 0x17,0xEC,0x2E,0xCE,0x35,0xA8,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x61,0x62,0x63,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF,0x00,0x00,
- 0x4F,0x6E,0x6C,0x69,0x6E,0x65,0x6B,0x65,0x79,0x69,0x6E,0x76,0x61,0x6C,0x69,0x64,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
- 0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
-
-int smbus_callback_eeprom(chihiro_state &chs, int command, int rw, int data)
-{
- return chs.smbus_eeprom(command, rw, data);
-}
-
-int chihiro_state::smbus_eeprom(int command, int rw, int data)
-{
- if (command >= 112)
- return 0;
- if (rw == 1) { // if reading
- // 8003b744,3b744=0x90 0x90
- // hack to avoid hanging if eeprom contents are not correct
- // this would need dumping the serial eeprom on the xbox board
- if (command == 0) {
- m_maincpu->space(0).write_byte(0x3b744, 0x90);
- m_maincpu->space(0).write_byte(0x3b745, 0x90);
- m_maincpu->space(0).write_byte(0x3b766, 0xc9);
- m_maincpu->space(0).write_byte(0x3b767, 0xc3);
- }
- data = dummyeeprom[command] + dummyeeprom[command + 1] * 256;
- logerror("eeprom: %d %d %d\n", command, rw, data);
- return data;
- }
- logerror("eeprom: %d %d %d\n", command, rw, data);
- dummyeeprom[command] = data;
- return 0;
-}
-
-/*
- * SMbus controller
- */
-
-void chihiro_state::smbus_register_device(int address, int(*handler)(chihiro_state &chs, int command, int rw, int data))
-{
- if (address < 128)
- smbusst.devices[address] = handler;
-}
-
-READ32_MEMBER(chihiro_state::smbus_r)
-{
- if ((offset == 0) && (mem_mask == 0xff)) // 0 smbus status
- smbusst.words[offset] = (smbusst.words[offset] & ~mem_mask) | ((smbusst.status << 0) & mem_mask);
- if ((offset == 1) && ((mem_mask == 0x00ff0000) || (mem_mask == 0xffff0000))) // 6 smbus data
- smbusst.words[offset] = (smbusst.words[offset] & ~mem_mask) | ((smbusst.data << 16) & mem_mask);
- return smbusst.words[offset];
-}
-
-WRITE32_MEMBER(chihiro_state::smbus_w)
-{
- COMBINE_DATA(smbusst.words);
- if ((offset == 0) && (mem_mask == 0xff)) // 0 smbus status
- {
- if (!((smbusst.status ^ data) & 0x10)) // clearing interrupt
- chihiro_devs.pic8259_2->ir3_w(0); // IRQ 11
- smbusst.status &= ~data;
- }
- if ((offset == 0) && (mem_mask == 0xff0000)) // 2 smbus control
- {
- data = data >> 16;
- smbusst.control = data;
- int cycletype = smbusst.control & 7;
- if (smbusst.control & 8) { // start
- if ((cycletype & 6) == 2)
- {
- if (smbusst.devices[smbusst.address])
- if (smbusst.rw == 0)
- smbusst.devices[smbusst.address](*this, smbusst.command, smbusst.rw, smbusst.data);
- else
- smbusst.data = smbusst.devices[smbusst.address](*this, smbusst.command, smbusst.rw, smbusst.data);
- else
- logerror("SMBUS: access to missing device at address %d\n", smbusst.address);
- smbusst.status |= 0x10;
- if (smbusst.control & 0x10)
- {
- chihiro_devs.pic8259_2->ir3_w(1); // IRQ 11
- }
- }
- }
- }
- if ((offset == 1) && (mem_mask == 0xff)) // 4 smbus address
- {
- smbusst.address = data >> 1;
- smbusst.rw = data & 1;
- }
- if ((offset == 1) && ((mem_mask == 0x00ff0000) || (mem_mask == 0xffff0000))) // 6 smbus data
- {
- data = data >> 16;
- smbusst.data = data;
- }
- if ((offset == 2) && (mem_mask == 0xff)) // 8 smbus command
- smbusst.command = data;
-}
-
READ32_MEMBER(chihiro_state::mediaboard_r)
{
UINT32 r;
@@ -2486,29 +833,16 @@ WRITE32_MEMBER(chihiro_state::mediaboard_w)
logerror("I/O port write %04x mask %08X value %08X\n", offset * 4 + 0x4000, mem_mask, data);
// irq 10
if ((offset == 0x38) && ACCESSING_BITS_8_15)
- chihiro_devs.pic8259_2->ir2_w(0);
+ xbox_base_devs.pic8259_2->ir2_w(0);
}
-static ADDRESS_MAP_START(xbox_map, AS_PROGRAM, 32, chihiro_state)
- AM_RANGE(0x00000000, 0x07ffffff) AM_RAM // 128 megabytes
- AM_RANGE(0xf0000000, 0xf0ffffff) AM_RAM
- AM_RANGE(0xfd000000, 0xfdffffff) AM_RAM AM_READWRITE(geforce_r, geforce_w)
- AM_RANGE(0xfed00000, 0xfed003ff) AM_READWRITE(usbctrl_r, usbctrl_w)
- AM_RANGE(0xfe800000, 0xfe85ffff) AM_READWRITE(audio_apu_r, audio_apu_w)
- AM_RANGE(0xfec00000, 0xfec001ff) AM_READWRITE(audio_ac93_r, audio_ac93_w)
- AM_RANGE(0xff000000, 0xffffffff) AM_ROM AM_REGION("bios", 0) AM_MIRROR(0x00f80000)
+static ADDRESS_MAP_START(chihiro_map, AS_PROGRAM, 32, chihiro_state)
+ AM_IMPORT_FROM(xbox_base_map)
ADDRESS_MAP_END
-static ADDRESS_MAP_START(xbox_map_io, AS_IO, 32, chihiro_state)
- AM_RANGE(0x0020, 0x0023) AM_DEVREADWRITE8("pic8259_1", pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffffffff)
- AM_RANGE(0x00a0, 0x00a3) AM_DEVREADWRITE8("pic8259_2", pic8259_device, read, write, 0xffffffff)
- AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, read_cs0, write_cs0)
- AM_RANGE(0x0cf8, 0x0cff) AM_DEVREADWRITE("pcibus", pci_bus_legacy_device, read, write)
+static ADDRESS_MAP_START(chihiro_map_io, AS_IO, 32, chihiro_state)
+ AM_IMPORT_FROM(xbox_base_map_io)
AM_RANGE(0x4000, 0x40ff) AM_READWRITE(mediaboard_r, mediaboard_w)
- AM_RANGE(0x8000, 0x80ff) AM_READWRITE(dummy_r, dummy_w)
- AM_RANGE(0xc000, 0xc0ff) AM_READWRITE(smbus_r, smbus_w)
- AM_RANGE(0xff60, 0xff67) AM_DEVREADWRITE("ide", bus_master_ide_controller_device, bmdma_r, bmdma_w)
ADDRESS_MAP_END
static INPUT_PORTS_START(chihiro)
@@ -2516,45 +850,14 @@ INPUT_PORTS_END
void chihiro_state::machine_start()
{
- nvidia_nv2a = auto_alloc(machine(), nv2a_renderer(machine()));
- memset(pic16lc_buffer, 0, sizeof(pic16lc_buffer));
- pic16lc_buffer[0] = 'B';
- pic16lc_buffer[4] = 0; // A/V connector, 2=vga
- smbus_register_device(0x10, smbus_callback_pic16lc);
- smbus_register_device(0x45, smbus_callback_cx25871);
- smbus_register_device(0x54, smbus_callback_eeprom);
- chihiro_devs.pic8259_1 = machine().device<pic8259_device>("pic8259_1");
- chihiro_devs.pic8259_2 = machine().device<pic8259_device>("pic8259_2");
+ xbox_base_state::machine_start();
chihiro_devs.ide = machine().device<bus_master_ide_controller_device>("ide");
chihiro_devs.dimmboard = machine().device<naomi_gdrom_board>("rom_board");
if (chihiro_devs.dimmboard != NULL) {
dimm_board_memory = chihiro_devs.dimmboard->memory(dimm_board_memory_size);
}
- memset(apust.memory, 0, sizeof(apust.memory));
- memset(apust.voices_heap_blockaddr, 0, sizeof(apust.voices_heap_blockaddr));
- memset(apust.voices_active, 0, sizeof(apust.voices_active));
- memset(apust.voices_position, 0, sizeof(apust.voices_position));
- memset(apust.voices_position_start, 0, sizeof(apust.voices_position_start));
- memset(apust.voices_position_end, 0, sizeof(apust.voices_position_end));
- memset(apust.voices_position_increment, 0, sizeof(apust.voices_position_increment));
- apust.space = &m_maincpu->space();
- apust.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(chihiro_state::audio_apu_timer), this), (void *)"APU Timer");
- apust.timer->enable(false);
if (machine().debug_flags & DEBUG_FLAG_ENABLED)
debug_console_register_command(machine(), "chihiro", CMDFLAG_NONE, 0, 1, 4, chihiro_debug_commands);
- memset(&ohcist, 0, sizeof(ohcist));
-#ifdef USB_ENABLED
- ohcist.hc_regs[HcRevision] = 0x10;
- ohcist.hc_regs[HcFmInterval] = 0x2edf;
- ohcist.hc_regs[HcLSThreshold] = 0x628;
- ohcist.hc_regs[HcRhDescriptorA] = 4;
- ohcist.interruptbulkratio = 1;
- ohcist.writebackdonehadcounter = 7;
- ohcist.space = &m_maincpu->space();
- ohcist.timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(chihiro_state::usb_ohci_timer), this), (void *)"USB OHCI Timer");
- ohcist.timer->enable(false);
- usb_ohci_plug(1, new ohci_function_device()); // test connect
-#endif
usbhack_index = -1;
for (int a = 1; a < 2; a++)
if (strcmp(machine().basename(), hacks[a].game_name) == 0) {
@@ -2563,72 +866,23 @@ void chihiro_state::machine_start()
}
usbhack_counter = 0;
// savestates
- save_item(NAME(debug_irq_active));
- save_item(NAME(debug_irq_number));
- save_item(NAME(smbusst.status));
- save_item(NAME(smbusst.control));
- save_item(NAME(smbusst.address));
- save_item(NAME(smbusst.data));
- save_item(NAME(smbusst.command));
- save_item(NAME(smbusst.rw));
- save_item(NAME(smbusst.words));
- save_item(NAME(pic16lc_buffer));
save_item(NAME(usbhack_counter));
- nvidia_nv2a->start(&m_maincpu->space());
- nvidia_nv2a->savestate_items();
}
static SLOT_INTERFACE_START(ide_baseboard)
SLOT_INTERFACE("bb", IDE_BASEBOARD)
SLOT_INTERFACE_END
-static MACHINE_CONFIG_START(chihiro_base, chihiro_state)
-
- /* basic machine hardware */
- MCFG_CPU_ADD("maincpu", PENTIUM3, 733333333) /* Wrong! family 6 model 8 stepping 10 */
- MCFG_CPU_PROGRAM_MAP(xbox_map)
- MCFG_CPU_IO_MAP(xbox_map_io)
- MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(chihiro_state, irq_callback)
-
- MCFG_QUANTUM_TIME(attotime::from_hz(6000))
-
- MCFG_PCI_BUS_LEGACY_ADD("pcibus", 0)
- MCFG_PCI_BUS_LEGACY_DEVICE(0, "PCI Bridge Device - Host Bridge", dummy_pci_r, dummy_pci_w)
- MCFG_PCI_BUS_LEGACY_DEVICE(1, "HUB Interface - ISA Bridge", hubintiasbridg_pci_r, hubintiasbridg_pci_w)
- MCFG_PCI_BUS_LEGACY_DEVICE(2, "OHCI USB Controller 1", dummy_pci_r, dummy_pci_w)
- MCFG_PCI_BUS_LEGACY_DEVICE(3, "OHCI USB Controller 2", dummy_pci_r, dummy_pci_w)
- MCFG_PCI_BUS_LEGACY_DEVICE(4, "MCP Networking Adapter", dummy_pci_r, dummy_pci_w)
- MCFG_PCI_BUS_LEGACY_DEVICE(5, "MCP APU", dummy_pci_r, dummy_pci_w)
- MCFG_PCI_BUS_LEGACY_DEVICE(6, "AC`97 Audio Codec Interface", dummy_pci_r, dummy_pci_w)
- MCFG_PCI_BUS_LEGACY_DEVICE(9, "IDE Controller", dummy_pci_r, dummy_pci_w)
- MCFG_PCI_BUS_LEGACY_DEVICE(30, "AGP Host to PCI Bridge", dummy_pci_r, dummy_pci_w)
- MCFG_PCI_BUS_LEGACY_ADD("agpbus", 1)
- MCFG_PCI_BUS_LEGACY_SIBLING("pcibus")
- MCFG_PCI_BUS_LEGACY_DEVICE(0, "NV2A GeForce 3MX Integrated GPU/Northbridge", geforce_pci_r, geforce_pci_w)
- MCFG_PIC8259_ADD("pic8259_1", WRITELINE(chihiro_state, chihiro_pic8259_1_set_int_line), VCC, READ8(chihiro_state, get_slave_ack))
- MCFG_PIC8259_ADD("pic8259_2", DEVWRITELINE("pic8259_1", pic8259_device, ir2_w), GND, NULL)
-
- MCFG_DEVICE_ADD("pit8254", PIT8254, 0)
- MCFG_PIT8253_CLK0(1125000) /* heartbeat IRQ */
- MCFG_PIT8253_OUT0_HANDLER(WRITELINE(chihiro_state, chihiro_pit8254_out0_changed))
- MCFG_PIT8253_CLK1(1125000) /* (unused) dram refresh */
- MCFG_PIT8253_CLK2(1125000) /* (unused) pio port c pin 4, and speaker polling enough */
- MCFG_PIT8253_OUT2_HANDLER(WRITELINE(chihiro_state, chihiro_pit8254_out2_changed))
-
- MCFG_BUS_MASTER_IDE_CONTROLLER_ADD("ide", ide_baseboard, NULL, "bb", true)
- MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w))
- MCFG_BUS_MASTER_IDE_CONTROLLER_SPACE("maincpu", AS_PROGRAM)
-
- /* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
- MCFG_SCREEN_SIZE(640, 480)
- MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 479)
- MCFG_SCREEN_UPDATE_DRIVER(chihiro_state, screen_update_callback)
- MCFG_SCREEN_VBLANK_DRIVER(chihiro_state, vblank_callback)
-
- MCFG_PALETTE_ADD("palette", 65536)
+static MACHINE_CONFIG_DERIVED_CLASS(chihiro_base, xbox_base, chihiro_state)
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(chihiro_map)
+ MCFG_CPU_IO_MAP(chihiro_map_io)
+
+ //MCFG_BUS_MASTER_IDE_CONTROLLER_ADD("ide", ide_baseboard, NULL, "bb", true)
+ MCFG_DEVICE_MODIFY("ide:0")
+ MCFG_DEVICE_SLOT_INTERFACE(ide_baseboard, NULL, true)
+ MCFG_DEVICE_MODIFY("ide:1")
+ MCFG_DEVICE_SLOT_INTERFACE(ide_baseboard, "bb", true)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED(chihirogd, chihiro_base)
@@ -2642,7 +896,7 @@ MACHINE_CONFIG_END
ROMX_LOAD(name, offset, length, hash, ROM_BIOS(bios+1)) /* Note '+1' */
#define CHIHIRO_BIOS \
- ROM_REGION( 0x1000000, "bios", 0) \
+ ROM_REGION( 0x100000, "bios", 0) \
ROM_SYSTEM_BIOS( 0, "bios0", "Chihiro Bios" ) \
ROM_LOAD_BIOS( 0, "chihiro_xbox_bios.bin", 0x000000, 0x80000, CRC(66232714) SHA1(b700b0041af8f84835e45d1d1250247bf7077188) ) \
ROM_REGION( 0x404080, "others", 0) \
@@ -2770,7 +1024,7 @@ ROM_START( mj2c )
ROM_LOAD( "317-0374-jpn.pic", 0x000000, 0x004000, CRC(004f77a1) SHA1(bc5c6950293f3bff60bf7913d20a2046aa19ea69) )
ROM_END
-ROM_START( mj2f )
+ROM_START( mj2 )
CHIHIRO_BIOS
DISK_REGION( "gdrom" )
@@ -2796,11 +1050,12 @@ track01.bin 150 599 1058400
track02.raw 750 2101 3179904
track03.bin 45150 549299 1185760800
*/
-ROM_START( mj2 )
+ROM_START( mj2g )
CHIHIRO_BIOS
DISK_REGION( "gdrom" )
- DISK_IMAGE_READONLY( "gdx-0006g", 0, SHA1(e306837d5c093fdf1e9ff02239a8563535b1c181) )
+ // this is not CHDv4, but a really bad dump, only ~1/3 of disk content is dumped
+ DISK_IMAGE_READONLY( "gdx-0006g", 0, BAD_DUMP SHA1(e306837d5c093fdf1e9ff02239a8563535b1c181) )
ROM_REGION( 0x4000, "pic", ROMREGION_ERASEFF)
ROM_LOAD( "317-0374-jpn.pic", 0x000000, 0x004000, CRC(004f77a1) SHA1(bc5c6950293f3bff60bf7913d20a2046aa19ea69) )
@@ -2973,58 +1228,62 @@ ROM_END
/* Main board */
-/*Chihiro*/ GAME( 2002, chihiro, 0, chihiro_base, chihiro, driver_device, 0, ROT0, "Sega", "Chihiro Bios", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
+/*Chihiro*/ GAME( 2002, chihiro, 0, chihiro_base, chihiro, driver_device, 0, ROT0, "Sega", "Chihiro Bios", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT )
/* GDX-xxxx (Sega GD-ROM games) */
-/* 0001 */ GAME( 2002, hotd3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Wow Entertainment", "The House of the Dead III (GDX-0001)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0002 GAME( 2003, crtaxhro, crtaxihr, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (GDX-0002)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0002A GAME( 2003, crtaxhra, crtaxihr, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (Rev A) (GDX-0002A)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0002B */ GAME( 2003, crtaxihr, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (Rev B) (GDX-0002B)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0003 GAME( 2003, vcop3o, vcop3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (GDX-0003)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0003A */ GAME( 2003, vcop3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (Rev A) (GDX-0003A)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0004 GAME( 2003, outr2o, outr2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 (GDX-0004)", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_SUPPORTS_SAVE )
-/* 0004A */ GAME( 2003, outr2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 (Rev A) (GDX-0004A)", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_SUPPORTS_SAVE )
-// 0005 GAME( 2004, sgolcnpt, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Golf Club Network Pro Tour (GDX-0005)", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_SUPPORTS_SAVE )
-// 0006 GAME( 2004, mj2o, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (GDX-0006)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0006A GAME( 2004, mj2a, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev A) (GDX-0006A)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0006B GAME( 2004, mj2b, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev B) (GDX-0006B)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0006C */ GAME( 2004, mj2c, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev C) (GDX-0006C)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0006D GAME( 2004, mj2d, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev D) (GDX-0006D)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0006E GAME( 2004, mj2e, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev E) (GDX-0006E)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0006F */ GAME( 2004, mj2f, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev F) (GDX-0006F)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0006G */ GAME( 2004, mj2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev G) (GDX-0006G)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0007 */ GAME( 2004, ollie, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Amusement Vision", "Ollie King (GDX-0007)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0008 GAME( 2004, wangmdjo, wangmidj, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (GDX-0008)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0008A GAME( 2004, wangmdja, wangmidj, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev A) (GDX-0008A)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0008B GAME( 2004, wangmidj, wangmidj, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev B) (GDX-0008B)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0009 GAME( 2004, wangmido, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (GDX-0009)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0009A GAME( 2004, wangmida, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev A) (GDX-0009A)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0009B */ GAME( 2004, wangmid, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev B) (GDX-0009B)", GAME_NO_SOUND|GAME_NOT_WORKING )
+/* 0001 */ GAME( 2002, hotd3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Wow Entertainment", "The House of the Dead III (GDX-0001)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0002 GAME( 2003, crtaxhro, crtaxihr, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (GDX-0002)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0002A GAME( 2003, crtaxhra, crtaxihr, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (Rev A) (GDX-0002A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0002B */ GAME( 2003, crtaxihr, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Hitmaker", "Crazy Taxi High Roller (Rev B) (GDX-0002B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0003 GAME( 2003, vcop3o, vcop3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (GDX-0003)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0003A */ GAME( 2003, vcop3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Virtua Cop 3 (Rev A) (GDX-0003A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0004 GAME( 2003, outr2o, outr2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 (GDX-0004)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
+/* 0004A */ GAME( 2003, outr2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 (Rev A) (GDX-0004A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
+// 0005 GAME( 2004, sgolcnpt, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Golf Club Network Pro Tour (GDX-0005)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
+// 0006 GAME( 2004, mj2o, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (GDX-0006)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0006A GAME( 2004, mj2a, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev A) (GDX-0006A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0006B GAME( 2004, mj2b, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev B) (GDX-0006B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0006C */ GAME( 2004, mj2c, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev C) (GDX-0006C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0006D GAME( 2004, mj2d, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev D) (GDX-0006D)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0006E GAME( 2004, mj2e, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev E) (GDX-0006E)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0006F */ GAME( 2004, mj2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev F) (GDX-0006F)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0006G */ GAME( 2004, mj2g, mj2, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 2 (Rev G) (GDX-0006G)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0007 */ GAME( 2004, ollie, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega / Amusement Vision", "Ollie King (GDX-0007)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0008 GAME( 2004, wangmdjo, wangmidj, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (GDX-0008)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0008A GAME( 2004, wangmdja, wangmidj, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev A) (GDX-0008A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0008B GAME( 2004, wangmidj, wangmidj, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Japan) (Rev B) (GDX-0008B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0009 GAME( 2004, wangmido, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (GDX-0009)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0009A GAME( 2004, wangmida, wangmid, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev A) (GDX-0009A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0009B */ GAME( 2004, wangmid, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune (Export) (Rev B) (GDX-0009B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0010
-// 0011 GAME( 2004, outr2sp, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 SP (Japan) (GDX-0011)", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_SUPPORTS_SAVE )
-/* 0012 */ GAME( 2004, ghostsqo, ghostsqu, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Ghost Squad (GDX-0012)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0012A */ GAME( 2004, ghostsqu, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Ghost Squad (Rev A) (GDX-0012A)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0013 */ GAME( 2005, gundamos, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Banpresto", "Gundam Battle Operating Simulator (GDX-0013)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0014 GAME( 2004, outr2sto, outr2st, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (GDX-0014)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0014A */ GAME( 2004, outr2st, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (Rev A) (GDX-0014A)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0015 */ GAME( 2005, wangmid2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (GDX-0015)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0016 GAME( 2005, wanmd2bo, wangmd2b, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (GDX-0016)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0016A */ GAME( 2005, wangmd2b, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (Rev A) (GDX-0016A)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0017 GAME( 2005, mj3o, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (GDX-0017)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0017A GAME( 2005, mj3a, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev A) (GDX-0017A)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0017B GAME( 2005, mj3b, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev B) (GDX-0017B)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0017C GAME( 2005, mj3c, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev C) (GDX-0017C)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0017D */ GAME( 2005, mj3d, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev D) (GDX-0017D)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0017E GAME( 2005, mj3e, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev E) (GDX-0017E)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0017F */ GAME( 2005, mj3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev F) (GDX-0017F)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0018 GAME( 2005, scg06nto, scg06nt, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Club Golf 2006 Next Tours (GDX-0018)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0018A */ GAME( 2005, scg06nt, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Club Golf 2006 Next Tours (Rev A) (GDX-0018A)", GAME_NO_SOUND|GAME_NOT_WORKING )
+// 0011 GAME( 2004, outr2sp, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 SP (Japan) (GDX-0011)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
+/* 0012 */ GAME( 2004, ghostsqo, ghostsqu, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Ghost Squad (GDX-0012)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0012A */ GAME( 2004, ghostsqu, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Ghost Squad (Rev A) (GDX-0012A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0013 */ GAME( 2005, gundamos, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Banpresto", "Gundam Battle Operating Simulator (GDX-0013)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0014 GAME( 2004, outr2sto, outr2st, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (GDX-0014)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0014A */ GAME( 2004, outr2st, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "OutRun 2 Special Tours (Rev A) (GDX-0014A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0015 */ GAME( 2005, wangmid2, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Japan) (GDX-0015)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0016 GAME( 2005, wanmd2bo, wangmd2b, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (GDX-0016)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0016A */ GAME( 2005, wangmd2b, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Namco", "Wangan Midnight Maximum Tune 2 (Export) (Rev A) (GDX-0016A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0017 GAME( 2005, mj3o, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (GDX-0017)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0017A GAME( 2005, mj3a, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev A) (GDX-0017A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0017B GAME( 2005, mj3b, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev B) (GDX-0017B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0017C GAME( 2005, mj3c, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev C) (GDX-0017C)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0017D */ GAME( 2005, mj3d, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev D) (GDX-0017D)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0017E GAME( 2005, mj3e, mj3, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev E) (GDX-0017E)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0017F */ GAME( 2005, mj3, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 (Rev F) (GDX-0017F)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0018 GAME( 2005, scg06nto, scg06nt, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Club Golf 2006 Next Tours (GDX-0018)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0018A */ GAME( 2005, scg06nt, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Club Golf 2006 Next Tours (Rev A) (GDX-0018A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0019
// 0020
-// 0021 GAME( 2006, mj3evoo, mj3evo, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (GDX-0021)", GAME_NO_SOUND|GAME_NOT_WORKING )
-// 0021A GAME( 2006, mj3evoa, mj3evo, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev A) (GDX-0021A)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0021B */ GAME( 2007, mj3evo, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev B) (GDX-0021B)", GAME_NO_SOUND|GAME_NOT_WORKING )
+// 0021 GAME( 2006, mj3evoo, mj3evo, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (GDX-0021)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+// 0021A GAME( 2006, mj3evoa, mj3evo, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev A) (GDX-0021A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0021B */ GAME( 2007, mj3evo, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Sega Network Taisen Mahjong MJ 3 Evolution (Rev B) (GDX-0021B)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
// 0022
// 0023
-// 0024 GAME( 2009, ccfboxo, ccfboxa, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Chihiro Firmware Update For Compact Flash Box (GDX-0024)", GAME_NO_SOUND|GAME_NOT_WORKING )
-/* 0024A */ GAME( 2009, ccfboxa, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Chihiro Firmware Update For Compact Flash Box (Rev A) (GDX-0024A)", GAME_NO_SOUND|GAME_NOT_WORKING )
+// 0024 GAME( 2009, ccfboxo, ccfboxa, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Chihiro Firmware Update For Compact Flash Box (GDX-0024)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+/* 0024A */ GAME( 2009, ccfboxa, chihiro, chihirogd, chihiro, driver_device, 0, ROT0, "Sega", "Chihiro Firmware Update For Compact Flash Box (Rev A) (GDX-0024A)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+
+#if (defined(__MINGW32__) && (__GNUC__ >= 5))
+#pragma GCC diagnostic pop
+#endif
diff --git a/src/mame/drivers/chinagat.c b/src/mame/drivers/chinagat.c
index 4b67c197b5b..946d5020f38 100644
--- a/src/mame/drivers/chinagat.c
+++ b/src/mame/drivers/chinagat.c
@@ -913,7 +913,7 @@ DRIVER_INIT_MEMBER(chinagat_state,chinagat)
/* ( YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS ) */
-GAME( 1988, chinagat, 0, chinagat, chinagat, chinagat_state, chinagat, ROT0, "Technos Japan (Taito / Romstar license)", "China Gate (US)", GAME_SUPPORTS_SAVE )
-GAME( 1988, saiyugou, chinagat, chinagat, chinagat, chinagat_state, chinagat, ROT0, "Technos Japan", "Sai Yu Gou Ma Roku (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, saiyugoub1, chinagat, saiyugoub1, chinagat, chinagat_state, chinagat, ROT0, "bootleg", "Sai Yu Gou Ma Roku (Japan bootleg 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1988, saiyugoub2, chinagat, saiyugoub2, chinagat, chinagat_state, chinagat, ROT0, "bootleg", "Sai Yu Gou Ma Roku (Japan bootleg 2)", GAME_SUPPORTS_SAVE )
+GAME( 1988, chinagat, 0, chinagat, chinagat, chinagat_state, chinagat, ROT0, "Technos Japan (Taito / Romstar license)", "China Gate (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, saiyugou, chinagat, chinagat, chinagat, chinagat_state, chinagat, ROT0, "Technos Japan", "Sai Yu Gou Ma Roku (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, saiyugoub1, chinagat, saiyugoub1, chinagat, chinagat_state, chinagat, ROT0, "bootleg", "Sai Yu Gou Ma Roku (Japan bootleg 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, saiyugoub2, chinagat, saiyugoub2, chinagat, chinagat_state, chinagat, ROT0, "bootleg", "Sai Yu Gou Ma Roku (Japan bootleg 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/chinsan.c b/src/mame/drivers/chinsan.c
index fca2227d2be..1a047ae2ddf 100644
--- a/src/mame/drivers/chinsan.c
+++ b/src/mame/drivers/chinsan.c
@@ -688,4 +688,4 @@ DRIVER_INIT_MEMBER(chinsan_state,chinsan)
*
*************************************/
-GAME( 1987, chinsan, 0, chinsan, chinsan, chinsan_state, chinsan, ROT0, "Sanritsu", "Ganbare Chinsan Ooshoubu (MC-8123A, 317-5012)", GAME_SUPPORTS_SAVE )
+GAME( 1987, chinsan, 0, chinsan, chinsan, chinsan_state, chinsan, ROT0, "Sanritsu", "Ganbare Chinsan Ooshoubu (MC-8123A, 317-5012)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/chqflag.c b/src/mame/drivers/chqflag.c
index b8f2f6ea57e..20dd8ac7958 100644
--- a/src/mame/drivers/chqflag.c
+++ b/src/mame/drivers/chqflag.c
@@ -23,16 +23,6 @@
#include "chqflag.lh"
-TIMER_DEVICE_CALLBACK_MEMBER(chqflag_state::chqflag_scanline)
-{
- int scanline = param;
-
- if(scanline == 240 && m_k051960->k051960_is_irq_enabled()) // vblank irq
- m_maincpu->set_input_line(KONAMI_IRQ_LINE, HOLD_LINE);
- else if(((scanline % 32) == 0) && (m_k051960->k051960_is_nmi_enabled())) // timer irq
- m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
-}
-
/* these trampolines are less confusing than nested address_map_bank_devices */
READ8_MEMBER(chqflag_state::k051316_1_ramrom_r)
{
@@ -297,9 +287,8 @@ void chqflag_state::machine_reset()
static MACHINE_CONFIG_START( chqflag, chqflag_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", KONAMI,XTAL_24MHz/8) /* 052001 (verified on pcb) */
+ MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* 052001 (verified on pcb) */
MCFG_CPU_PROGRAM_MAP(chqflag_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", chqflag_state, chqflag_scanline, "screen", 0, 1)
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(chqflag_sound_map)
@@ -314,12 +303,10 @@ static MACHINE_CONFIG_START( chqflag, chqflag_state )
MCFG_QUANTUM_TIME(attotime::from_hz(600))
/* video hardware */
- //TODO: Vsync 59.17hz Hsync 15.13 / 15.19khz
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(12*8, (64-14)*8-1, 2*8, 30*8-1 )
+ MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/3, 528, 96, 400, 256, 16, 240) // measured Vsync 59.17hz Hsync 15.13 / 15.19khz
+// 6MHz dotclock is more realistic, however needs drawing updates. replace when ready
+// MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4, 396, hbend, hbstart, 256, 16, 240)
MCFG_SCREEN_UPDATE_DRIVER(chqflag_state, screen_update_chqflag)
MCFG_SCREEN_PALETTE("palette")
@@ -329,7 +316,10 @@ static MACHINE_CONFIG_START( chqflag, chqflag_state )
MCFG_DEVICE_ADD("k051960", K051960, 0)
MCFG_GFX_PALETTE("palette")
+ MCFG_K051960_SCREEN_TAG("screen")
MCFG_K051960_CB(chqflag_state, sprite_callback)
+ MCFG_K051960_IRQ_HANDLER(INPUTLINE("maincpu", KONAMI_IRQ_LINE))
+ MCFG_K051960_NMI_HANDLER(INPUTLINE("maincpu", INPUT_LINE_NMI))
MCFG_DEVICE_ADD("k051316_1", K051316, 0)
MCFG_GFX_PALETTE("palette")
@@ -424,5 +414,5 @@ ROM_END
// YEAR, NAME, PARENT, MACHINE, INPUT, INIT,MONITOR,COMPANY,FULLNAME,FLAGS
-GAMEL( 1988, chqflag, 0, chqflag, chqflag, driver_device, 0, ROT90, "Konami", "Chequered Flag", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_chqflag )
-GAMEL( 1988, chqflagj, chqflag, chqflag, chqflagj, driver_device, 0, ROT90, "Konami", "Chequered Flag (Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_chqflag )
+GAMEL( 1988, chqflag, 0, chqflag, chqflag, driver_device, 0, ROT90, "Konami", "Chequered Flag", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag )
+GAMEL( 1988, chqflagj, chqflag, chqflag, chqflagj, driver_device, 0, ROT90, "Konami", "Chequered Flag (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_chqflag )
diff --git a/src/mame/drivers/chsuper.c b/src/mame/drivers/chsuper.c
index 70f99cb2d77..eee11ea20a9 100644
--- a/src/mame/drivers/chsuper.c
+++ b/src/mame/drivers/chsuper.c
@@ -473,6 +473,6 @@ DRIVER_INIT_MEMBER(chsuper_state,chmpnum)
*************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
-GAMEL( 1999, chsuper3, 0, chsuper, chsuper, chsuper_state, chsuper3, ROT0, "<unknown>", "Champion Super 3 (V0.35)", GAME_IMPERFECT_SOUND, layout_chsuper ) //24/02/99
-GAMEL( 1999, chsuper2, chsuper3, chsuper, chsuper, chsuper_state, chsuper2, ROT0, "<unknown>", "Champion Super 2 (V0.13)", GAME_IMPERFECT_SOUND, layout_chsuper ) //26/01/99
-GAME( 1999, chmpnum, chsuper3, chsuper, chsuper, chsuper_state, chmpnum, ROT0, "<unknown>", "Champion Number (V0.74)", GAME_IMPERFECT_SOUND ) //10/11/99
+GAMEL( 1999, chsuper3, 0, chsuper, chsuper, chsuper_state, chsuper3, ROT0, "<unknown>", "Champion Super 3 (V0.35)", MACHINE_IMPERFECT_SOUND, layout_chsuper ) //24/02/99
+GAMEL( 1999, chsuper2, chsuper3, chsuper, chsuper, chsuper_state, chsuper2, ROT0, "<unknown>", "Champion Super 2 (V0.13)", MACHINE_IMPERFECT_SOUND, layout_chsuper ) //26/01/99
+GAME( 1999, chmpnum, chsuper3, chsuper, chsuper, chsuper_state, chmpnum, ROT0, "<unknown>", "Champion Number (V0.74)", MACHINE_IMPERFECT_SOUND ) //10/11/99
diff --git a/src/mame/drivers/cidelsa.c b/src/mame/drivers/cidelsa.c
index 24f6dfd6f12..7417b063e17 100644
--- a/src/mame/drivers/cidelsa.c
+++ b/src/mame/drivers/cidelsa.c
@@ -531,7 +531,7 @@ ROM_END
/* Game Drivers */
-GAME( 1980, destryer, 0, destryer, destryer, driver_device, 0, ROT90, "Cidelsa", "Destroyer (Cidelsa) (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, destryera,destryer, destryera,destryer, driver_device, 0, ROT90, "Cidelsa", "Destroyer (Cidelsa) (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1981, altair, 0, altair, altair, driver_device, 0, ROT90, "Cidelsa", "Altair", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1981, draco, 0, draco, draco, driver_device, 0, ROT90, "Cidelsa", "Draco", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1980, destryer, 0, destryer, destryer, driver_device, 0, ROT90, "Cidelsa", "Destroyer (Cidelsa) (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, destryera,destryer, destryera,destryer, driver_device, 0, ROT90, "Cidelsa", "Destroyer (Cidelsa) (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, altair, 0, altair, altair, driver_device, 0, ROT90, "Cidelsa", "Altair", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, draco, 0, draco, draco, driver_device, 0, ROT90, "Cidelsa", "Draco", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cinemat.c b/src/mame/drivers/cinemat.c
index 55619da0798..5729cfefa4d 100644
--- a/src/mame/drivers/cinemat.c
+++ b/src/mame/drivers/cinemat.c
@@ -266,7 +266,7 @@ READ8_MEMBER(cinemat_state::qb3_frame_r)
{
attotime next_update = m_screen->time_until_update();
attotime frame_period = m_screen->frame_period();
- int percent = next_update.attoseconds / (frame_period.attoseconds / 100);
+ int percent = next_update.attoseconds() / (frame_period.attoseconds() / 100);
/* note this is just an approximation... */
return (percent >= 10);
@@ -1464,27 +1464,27 @@ DRIVER_INIT_MEMBER(cinemat_state,qb3)
*
*************************************/
-GAME( 1977, spacewar, 0, spacewar, spacewar, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Space Wars", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1978, spaceshp, spacewar,spacewar, spaceshp, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Sega license)", "Space Ship", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAMEL(1979, barrier, 0, barrier, barrier, driver_device, 0, ORIENTATION_FLIP_X ^ ROT270, "Cinematronics (Vectorbeam license)", "Barrier", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_barrier ) // developed by Cinematronics, then (when they noticed it wasn't going to be a successful game) sold to Vectorbeam, and ultimately back in the hands of Cinematronics again after they bought the dying company Vectorbeam
-GAME( 1979, speedfrk, 0, speedfrk, speedfrk, cinemat_state, speedfrk, ORIENTATION_FLIP_Y, "Vectorbeam", "Speed Freak", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, starhawk, 0, starhawk, starhawk, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Hawk", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAMEL(1979, sundance, 0, sundance, sundance, cinemat_state, sundance, ORIENTATION_FLIP_X ^ ROT270, "Cinematronics", "Sundance", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_sundance )
-GAMEL(1979, tailg, 0, tailg, tailg, cinemat_state, tailg, ORIENTATION_FLIP_Y, "Cinematronics", "Tailgunner", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_tailg )
-GAME( 1979, warrior, 0, warrior, warrior, driver_device, 0, ORIENTATION_FLIP_Y, "Vectorbeam", "Warrior", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAMEL(1980, armora, 0, armora, armora, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Armor Attack", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_armora )
-GAMEL(1980, armorap, armora, armora, armora, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Armor Attack (prototype)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_armora )
-GAMEL(1980, armorar, armora, armora, armora, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Rock-Ola license)", "Armor Attack (Rock-Ola)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_armora )
-GAME( 1980, ripoff, 0, ripoff, ripoff, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Rip Off", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAMEL(1980, starcas, 0, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (version 3)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_starcas )
-GAMEL(1980, starcas1, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (older)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_starcas )
-GAMEL(1980, starcasp, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (prototype)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_starcas )
-GAMEL(1980, starcase, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Mottoeis license)", "Star Castle (Mottoeis)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_starcas )
-GAMEL(1980, stellcas, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "bootleg (Elettronolo)", "Stellar Castle (Elettronolo)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_starcas )
-GAMEL(1981, spaceftr, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Zaccaria license)", "Space Fortress (Zaccaria)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_starcas )
-GAMEL(1981, solarq, 0, solarq, solarq, driver_device, 0, ORIENTATION_FLIP_Y ^ ORIENTATION_FLIP_X, "Cinematronics", "Solar Quest", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_solarq )
-GAME( 1981, boxingb, 0, boxingb, boxingb, cinemat_state, boxingb, ORIENTATION_FLIP_Y, "Cinematronics", "Boxing Bugs", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAMEL(1981, wotw, 0, wotw, wotw, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "War of the Worlds", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_wotw )
-GAME( 1981, wotwc, wotw, wotwc, wotw, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "War of the Worlds (color)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAMEL(1982, demon, 0, demon, demon, driver_device, 0, ORIENTATION_FLIP_Y, "Rock-Ola", "Demon", GAME_SUPPORTS_SAVE, layout_demon )
-GAME( 1982, qb3, 0, qb3, qb3, cinemat_state, qb3, ORIENTATION_FLIP_Y, "Rock-Ola", "QB-3 (prototype)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1977, spacewar, 0, spacewar, spacewar, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Space Wars", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1978, spaceshp, spacewar,spacewar, spaceshp, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Sega license)", "Space Ship", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAMEL(1979, barrier, 0, barrier, barrier, driver_device, 0, ORIENTATION_FLIP_X ^ ROT270, "Cinematronics (Vectorbeam license)", "Barrier", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_barrier ) // developed by Cinematronics, then (when they noticed it wasn't going to be a successful game) sold to Vectorbeam, and ultimately back in the hands of Cinematronics again after they bought the dying company Vectorbeam
+GAME( 1979, speedfrk, 0, speedfrk, speedfrk, cinemat_state, speedfrk, ORIENTATION_FLIP_Y, "Vectorbeam", "Speed Freak", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, starhawk, 0, starhawk, starhawk, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Hawk", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAMEL(1979, sundance, 0, sundance, sundance, cinemat_state, sundance, ORIENTATION_FLIP_X ^ ROT270, "Cinematronics", "Sundance", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_sundance )
+GAMEL(1979, tailg, 0, tailg, tailg, cinemat_state, tailg, ORIENTATION_FLIP_Y, "Cinematronics", "Tailgunner", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_tailg )
+GAME( 1979, warrior, 0, warrior, warrior, driver_device, 0, ORIENTATION_FLIP_Y, "Vectorbeam", "Warrior", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAMEL(1980, armora, 0, armora, armora, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Armor Attack", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_armora )
+GAMEL(1980, armorap, armora, armora, armora, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Armor Attack (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_armora )
+GAMEL(1980, armorar, armora, armora, armora, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Rock-Ola license)", "Armor Attack (Rock-Ola)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_armora )
+GAME( 1980, ripoff, 0, ripoff, ripoff, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Rip Off", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAMEL(1980, starcas, 0, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (version 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas )
+GAMEL(1980, starcas1, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (older)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas )
+GAMEL(1980, starcasp, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "Star Castle (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas )
+GAMEL(1980, starcase, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Mottoeis license)", "Star Castle (Mottoeis)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas )
+GAMEL(1980, stellcas, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "bootleg (Elettronolo)", "Stellar Castle (Elettronolo)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas )
+GAMEL(1981, spaceftr, starcas, starcas, starcas, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics (Zaccaria license)", "Space Fortress (Zaccaria)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_starcas )
+GAMEL(1981, solarq, 0, solarq, solarq, driver_device, 0, ORIENTATION_FLIP_Y ^ ORIENTATION_FLIP_X, "Cinematronics", "Solar Quest", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_solarq )
+GAME( 1981, boxingb, 0, boxingb, boxingb, cinemat_state, boxingb, ORIENTATION_FLIP_Y, "Cinematronics", "Boxing Bugs", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAMEL(1981, wotw, 0, wotw, wotw, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "War of the Worlds", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_wotw )
+GAME( 1981, wotwc, wotw, wotwc, wotw, driver_device, 0, ORIENTATION_FLIP_Y, "Cinematronics", "War of the Worlds (color)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAMEL(1982, demon, 0, demon, demon, driver_device, 0, ORIENTATION_FLIP_Y, "Rock-Ola", "Demon", MACHINE_SUPPORTS_SAVE, layout_demon )
+GAME( 1982, qb3, 0, qb3, qb3, cinemat_state, qb3, ORIENTATION_FLIP_Y, "Rock-Ola", "QB-3 (prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/circus.c b/src/mame/drivers/circus.c
index 2535e43bd22..eb51605922b 100644
--- a/src/mame/drivers/circus.c
+++ b/src/mame/drivers/circus.c
@@ -578,9 +578,9 @@ DRIVER_INIT_MEMBER(circus_state,ripcord)
}
-GAMEL(1977, circus, 0, circus, circus, circus_state, circus, ROT0, "Exidy / Taito", "Circus / Acrobat TV", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_circus )
-GAMEL(1977, springbd, circus, circus, circus, circus_state, circus, ROT0, "bootleg (Sub-Electro)", "Springboard (bootleg of Circus)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_circus ) // looks like a text hack, but we've seen 2 identical copies so it's worth supporting
-GAME( 1977, robotbwl, 0, robotbwl, robotbwl, circus_state, robotbwl, ROT0, "Exidy", "Robot Bowl", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
-GAMEL(1979, crash, 0, crash, crash, circus_state, crash, ROT0, "Exidy", "Crash", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_crash )
-GAMEL(1979, smash, crash, crash, crash, circus_state, crash, ROT0, "bootleg", "Smash (Crash bootleg)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND, layout_crash ) // looks like a text hack, but it also had a different bezel
-GAME( 1979, ripcord, 0, ripcord, ripcord, circus_state, ripcord, ROT0, "Exidy", "Rip Cord", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
+GAMEL(1977, circus, 0, circus, circus, circus_state, circus, ROT0, "Exidy / Taito", "Circus / Acrobat TV", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus )
+GAMEL(1977, springbd, circus, circus, circus, circus_state, circus, ROT0, "bootleg (Sub-Electro)", "Springboard (bootleg of Circus)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_circus ) // looks like a text hack, but we've seen 2 identical copies so it's worth supporting
+GAME( 1977, robotbwl, 0, robotbwl, robotbwl, circus_state, robotbwl, ROT0, "Exidy", "Robot Bowl", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
+GAMEL(1979, crash, 0, crash, crash, circus_state, crash, ROT0, "Exidy", "Crash", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash )
+GAMEL(1979, smash, crash, crash, crash, circus_state, crash, ROT0, "bootleg", "Smash (Crash bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND, layout_crash ) // looks like a text hack, but it also had a different bezel
+GAME( 1979, ripcord, 0, ripcord, ripcord, circus_state, ripcord, ROT0, "Exidy", "Rip Cord", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/circusc.c b/src/mame/drivers/circusc.c
index 1bd909c2d09..64a19ac1392 100644
--- a/src/mame/drivers/circusc.c
+++ b/src/mame/drivers/circusc.c
@@ -570,9 +570,9 @@ DRIVER_INIT_MEMBER(circusc_state,circusc)
}
-GAME( 1984, circusc, 0, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (level select, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1984, circusc2, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (level select, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1984, circusc3, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (level select, set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1984, circusc4, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (no level select)", GAME_SUPPORTS_SAVE )
-GAME( 1984, circuscc, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami (Centuri license)", "Circus Charlie (Centuri)", GAME_SUPPORTS_SAVE )
-GAME( 1984, circusce, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami (Centuri license)", "Circus Charlie (Centuri, earlier)", GAME_SUPPORTS_SAVE )
+GAME( 1984, circusc, 0, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (level select, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, circusc2, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (level select, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, circusc3, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (level select, set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, circusc4, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami", "Circus Charlie (no level select)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, circuscc, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami (Centuri license)", "Circus Charlie (Centuri)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, circusce, circusc, circusc, circusc, circusc_state, circusc, ROT90, "Konami (Centuri license)", "Circus Charlie (Centuri, earlier)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cischeat.c b/src/mame/drivers/cischeat.c
index 0e653678905..436acc4eb92 100644
--- a/src/mame/drivers/cischeat.c
+++ b/src/mame/drivers/cischeat.c
@@ -2928,11 +2928,11 @@ ROM_END
***************************************************************************/
-GAMEL( 1989, bigrun, 0, bigrun, bigrun, cischeat_state, bigrun, ROT0, "Jaleco", "Big Run (11th Rallye version)", GAME_IMPERFECT_GRAPHICS, layout_cischeat ) // there's a 13th Rallye version (1991) (only on the SNES?)
-GAMEL( 1990, cischeat, 0, cischeat, cischeat, cischeat_state, cischeat, ROT0, "Jaleco", "Cisco Heat", GAME_IMPERFECT_GRAPHICS, layout_cischeat )
-GAMEL( 1991, f1gpstar, 0, f1gpstar, f1gpstar, cischeat_state, f1gpstar, ROT0, "Jaleco", "Grand Prix Star", GAME_IMPERFECT_GRAPHICS, layout_f1gpstar )
-GAME ( 1992, armchmp2, 0, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v2.6", GAME_IMPERFECT_GRAPHICS )
-GAME ( 1992, armchmp2o,armchmp2, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v1.7", GAME_IMPERFECT_GRAPHICS )
-GAME ( 1992, wildplt, 0, f1gpstr2, wildplt, cischeat_state, wildplt, ROT0, "Jaleco", "Wild Pilot", GAME_IMPERFECT_GRAPHICS )
-GAMEL( 1993, f1gpstr2, 0, f1gpstr2, f1gpstar, cischeat_state, f1gpstar, ROT0, "Jaleco", "F-1 Grand Prix Star II", GAME_IMPERFECT_GRAPHICS, layout_f1gpstar )
-GAME ( 1994, scudhamm, 0, scudhamm, scudhamm, driver_device, 0, ROT270, "Jaleco", "Scud Hammer", GAME_IMPERFECT_GRAPHICS )
+GAMEL( 1989, bigrun, 0, bigrun, bigrun, cischeat_state, bigrun, ROT0, "Jaleco", "Big Run (11th Rallye version)", MACHINE_IMPERFECT_GRAPHICS, layout_cischeat ) // there's a 13th Rallye version (1991) (only on the SNES?)
+GAMEL( 1990, cischeat, 0, cischeat, cischeat, cischeat_state, cischeat, ROT0, "Jaleco", "Cisco Heat", MACHINE_IMPERFECT_GRAPHICS, layout_cischeat )
+GAMEL( 1991, f1gpstar, 0, f1gpstar, f1gpstar, cischeat_state, f1gpstar, ROT0, "Jaleco", "Grand Prix Star", MACHINE_IMPERFECT_GRAPHICS, layout_f1gpstar )
+GAME ( 1992, armchmp2, 0, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v2.6", MACHINE_IMPERFECT_GRAPHICS )
+GAME ( 1992, armchmp2o,armchmp2, armchmp2, armchmp2, driver_device, 0, ROT270, "Jaleco", "Arm Champs II v1.7", MACHINE_IMPERFECT_GRAPHICS )
+GAME ( 1992, wildplt, 0, f1gpstr2, wildplt, cischeat_state, wildplt, ROT0, "Jaleco", "Wild Pilot", MACHINE_IMPERFECT_GRAPHICS )
+GAMEL( 1993, f1gpstr2, 0, f1gpstr2, f1gpstar, cischeat_state, f1gpstar, ROT0, "Jaleco", "F-1 Grand Prix Star II", MACHINE_IMPERFECT_GRAPHICS, layout_f1gpstar )
+GAME ( 1994, scudhamm, 0, scudhamm, scudhamm, driver_device, 0, ROT270, "Jaleco", "Scud Hammer", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/citycon.c b/src/mame/drivers/citycon.c
index 3d5bd56ce30..cd908b3acb5 100644
--- a/src/mame/drivers/citycon.c
+++ b/src/mame/drivers/citycon.c
@@ -340,6 +340,6 @@ DRIVER_INIT_MEMBER(citycon_state,citycon)
-GAME( 1985, citycon, 0, citycon, citycon, citycon_state, citycon, ROT0, "Jaleco", "City Connection (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1985, citycona, citycon, citycon, citycon, citycon_state, citycon, ROT0, "Jaleco", "City Connection (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1985, cruisin, citycon, citycon, citycon, citycon_state, citycon, ROT0, "Jaleco (Kitkorp license)", "Cruisin", GAME_SUPPORTS_SAVE )
+GAME( 1985, citycon, 0, citycon, citycon, citycon_state, citycon, ROT0, "Jaleco", "City Connection (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, citycona, citycon, citycon, citycon, citycon_state, citycon, ROT0, "Jaleco", "City Connection (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, cruisin, citycon, citycon, citycon, citycon_state, citycon, ROT0, "Jaleco (Kitkorp license)", "Cruisin", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/clayshoo.c b/src/mame/drivers/clayshoo.c
index f6daecd0be8..eabd5895fa2 100644
--- a/src/mame/drivers/clayshoo.c
+++ b/src/mame/drivers/clayshoo.c
@@ -357,4 +357,4 @@ ROM_END
*
*************************************/
-GAME( 1979, clayshoo, 0, clayshoo, clayshoo, driver_device, 0, ROT0, "Allied Leisure", "Clay Shoot", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1979, clayshoo, 0, clayshoo, clayshoo, driver_device, 0, ROT0, "Allied Leisure", "Clay Shoot", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/clcd.c b/src/mame/drivers/clcd.c
index ed56c2e82ea..ed56c2e82ea 100644
--- a/src/mess/drivers/clcd.c
+++ b/src/mame/drivers/clcd.c
diff --git a/src/mame/drivers/cliffhgr.c b/src/mame/drivers/cliffhgr.c
index 5f9ab10b9f8..ec68fca6e27 100644
--- a/src/mame/drivers/cliffhgr.c
+++ b/src/mame/drivers/cliffhgr.c
@@ -799,4 +799,4 @@ DRIVER_INIT_MEMBER(cliffhgr_state,cliff)
GAME( 1983, cliffhgr, 0, cliffhgr, cliffhgr, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Cliff Hanger (set 1)", 0)
GAME( 1983, cliffhgra, cliffhgr, cliffhgr, cliffhgra, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Cliff Hanger (set 2)", 0)
GAME( 1983, cliffhgra2,cliffhgr, cliffhgr, cliffhgra, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Cliff Hanger (set 3)", 0)
-GAME( 1983, goaltogo, 0, cliffhgr, goaltogo, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Goal To Go", GAME_NOT_WORKING)
+GAME( 1983, goaltogo, 0, cliffhgr, goaltogo, cliffhgr_state, cliff, ROT0, "Stern Electronics", "Goal To Go", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/cloak.c b/src/mame/drivers/cloak.c
index 3ab39a3d77f..0190b1860e9 100644
--- a/src/mame/drivers/cloak.c
+++ b/src/mame/drivers/cloak.c
@@ -599,11 +599,11 @@ ROM_END
*
*************************************/
-GAME( 1983, cloak, 0, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (rev 5)", GAME_SUPPORTS_SAVE )
-GAME( 1983, cloaksp, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (Spanish)", GAME_SUPPORTS_SAVE )
-GAME( 1983, cloakfr, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (French)", GAME_SUPPORTS_SAVE )
-GAME( 1983, cloakgr, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (German)", GAME_SUPPORTS_SAVE )
-GAME( 1983, agentx4, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 4)", GAME_SUPPORTS_SAVE )
-GAME( 1983, agentx3, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 3)", GAME_SUPPORTS_SAVE )
-GAME( 1983, agentx2, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1983, agentx1, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 1)", GAME_SUPPORTS_SAVE )
+GAME( 1983, cloak, 0, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (rev 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, cloaksp, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (Spanish)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, cloakfr, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (French)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, cloakgr, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Cloak & Dagger (German)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, agentx4, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, agentx3, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, agentx2, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, agentx1, cloak, cloak, cloak, driver_device, 0, ROT0, "Atari", "Agent X (prototype, rev 1)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cloud9.c b/src/mame/drivers/cloud9.c
index 9525cc681fa..745e5c402c5 100644
--- a/src/mame/drivers/cloud9.c
+++ b/src/mame/drivers/cloud9.c
@@ -494,5 +494,5 @@ ROM_END
*
*************************************/
-GAME( 1983, cloud9, 0, cloud9, cloud9, driver_device, 0, ROT0, "Atari", "Cloud 9 (prototype)", GAME_SUPPORTS_SAVE )
-GAME( 1983, firebeas, 0, cloud9, firebeas, driver_device, 0, ROT0, "Atari", "Firebeast (prototype)", GAME_SUPPORTS_SAVE )
+GAME( 1983, cloud9, 0, cloud9, cloud9, driver_device, 0, ROT0, "Atari", "Cloud 9 (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, firebeas, 0, cloud9, firebeas, driver_device, 0, ROT0, "Atari", "Firebeast (prototype)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/clshroad.c b/src/mame/drivers/clshroad.c
index 43c754500bd..64a22eb97d3 100644
--- a/src/mame/drivers/clshroad.c
+++ b/src/mame/drivers/clshroad.c
@@ -481,7 +481,7 @@ die once, it would be nice to avoid the hack however
ROM[0x05C8] = 0x23;
}
-GAME( 1984, firebatl, 0, firebatl, firebatl, clshroad_state, firebatl, ROT90, "Taito", "Fire Battle", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1986, clshroad, 0, clshroad, clshroad, driver_device, 0, ROT0, "Wood Place Inc.", "Clash-Road", GAME_SUPPORTS_SAVE )
-GAME( 1986, clshroads,clshroad, clshroad, clshroad, driver_device, 0, ROT0, "Wood Place Inc. (Status Game Corp. license)", "Clash-Road (Status license)", GAME_SUPPORTS_SAVE )
-GAME( 1986, clshroadd,clshroad, clshroad, clshroad, driver_device, 0, ROT0, "Wood Place Inc. (Data East license)", "Clash-Road (Data East license)", GAME_SUPPORTS_SAVE )
+GAME( 1984, firebatl, 0, firebatl, firebatl, clshroad_state, firebatl, ROT90, "Taito", "Fire Battle", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, clshroad, 0, clshroad, clshroad, driver_device, 0, ROT0, "Wood Place Inc.", "Clash-Road", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, clshroads,clshroad, clshroad, clshroad, driver_device, 0, ROT0, "Wood Place Inc. (Status Game Corp. license)", "Clash-Road (Status license)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, clshroadd,clshroad, clshroad, clshroad, driver_device, 0, ROT0, "Wood Place Inc. (Data East license)", "Clash-Road (Data East license)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/cm1800.c b/src/mame/drivers/cm1800.c
index e7522a83de1..a02bd552daa 100644
--- a/src/mess/drivers/cm1800.c
+++ b/src/mame/drivers/cm1800.c
@@ -118,4 +118,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1981, cm1800, 0, 0, cm1800, cm1800, driver_device, 0, "<unknown>", "CM-1800", GAME_NO_SOUND_HW)
+COMP( 1981, cm1800, 0, 0, cm1800, cm1800, driver_device, 0, "<unknown>", "CM-1800", MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/cmmb.c b/src/mame/drivers/cmmb.c
index 07dcf40e5ea..089cd521148 100644
--- a/src/mame/drivers/cmmb.c
+++ b/src/mame/drivers/cmmb.c
@@ -70,7 +70,6 @@ public:
DECLARE_READ8_MEMBER(cmmb_charram_r);
DECLARE_WRITE8_MEMBER(cmmb_charram_w);
- DECLARE_WRITE8_MEMBER(cmmb_paletteram_w);
DECLARE_READ8_MEMBER(cmmb_input_r);
DECLARE_WRITE8_MEMBER(cmmb_output_w);
DECLARE_READ8_MEMBER(kludge_r);
@@ -128,13 +127,6 @@ WRITE8_MEMBER(cmmb_state::cmmb_charram_w)
m_gfxdecode->gfx(1)->mark_dirty(offset >> 5);
}
-
-WRITE8_MEMBER(cmmb_state::cmmb_paletteram_w)
-{
- /* RGB output is inverted */
- m_palette->write(space, offset, UINT8(~data), mem_mask);
-}
-
READ8_MEMBER(cmmb_state::cmmb_input_r)
{
//printf("%02x R\n",offset);
@@ -193,7 +185,7 @@ static ADDRESS_MAP_START( cmmb_map, AS_PROGRAM, 8, cmmb_state )
AM_RANGE(0x0000, 0x01ff) AM_RAM /* zero page address */
// AM_RANGE(0x13c0, 0x13ff) AM_RAM //spriteram
AM_RANGE(0x1000, 0x13ff) AM_RAM AM_SHARE("videoram")
- AM_RANGE(0x2480, 0x249f) AM_RAM_WRITE(cmmb_paletteram_w) AM_SHARE("palette")
+ AM_RANGE(0x2480, 0x249f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x4000, 0x400f) AM_READWRITE(cmmb_input_r,cmmb_output_w) //i/o
AM_RANGE(0x4900, 0x4900) AM_READ(kludge_r)
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank1")
@@ -340,7 +332,7 @@ static MACHINE_CONFIG_START( cmmb, cmmb_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cmmb)
MCFG_PALETTE_ADD("palette", 512)
- MCFG_PALETTE_FORMAT(RRRGGGBB)
+ MCFG_PALETTE_FORMAT(RRRGGGBB_inverted)
/* sound hardware */
// MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -363,4 +355,4 @@ ROM_START( cmmb162 )
ROM_REGION( 0x1000, "gfx", ROMREGION_ERASE00 )
ROM_END
-GAME( 2002, cmmb162, 0, cmmb, cmmb, driver_device, 0, ROT270, "Cosmodog / Team Play (Licensed from Infogrames via Midway Games West)", "Centipede / Millipede / Missile Command / Let's Go Bowling (rev 1.62)", GAME_NO_SOUND|GAME_NOT_WORKING )
+GAME( 2002, cmmb162, 0, cmmb, cmmb, driver_device, 0, ROT270, "Cosmodog / Team Play (Licensed from Infogrames via Midway Games West)", "Centipede / Millipede / Missile Command / Let's Go Bowling (rev 1.62)", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/cninja.c b/src/mame/drivers/cninja.c
index afd86b8da74..5e0e6c64183 100644
--- a/src/mame/drivers/cninja.c
+++ b/src/mame/drivers/cninja.c
@@ -1396,6 +1396,14 @@ ROM_START( cninja ) /* World ver 4 */
ROM_REGION( 1024, "proms", 0 )
ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) ) /* Priority Unused */
+
+ ROM_REGION( 0x0e00, "plds", 0 )
+ ROM_LOAD( "tj-00.9j", 0x0000, 0x0117, CRC(46defe8f) SHA1(50db2c265a0ab592938f780f212ef86070b2daa2) ) /* GAL16V8 */
+ ROM_LOAD( "tj-01.9h", 0x0200, 0x0117, CRC(7a86902d) SHA1(7e116dbabe615ddae1588001b31a0a6e6e4dc46d) ) /* GAL16V8 */
+ ROM_LOAD( "tj-02.9h", 0x0400, 0x0117, CRC(b476d59c) SHA1(c17b7884180b5041d1524e9fd479cddac787a3cb) ) /* GAL16V8 */
+ ROM_LOAD( "tj-03.9e", 0x0600, 0x0117, CRC(cfb6e4aa) SHA1(fc70d1d43d8836ae7984c432b3f9e35c2256b18e) ) /* GAL16V8 */
+ ROM_LOAD( "tj-04.5n", 0x0800, 0x0117, CRC(bca07086) SHA1(cf713185d7430e17077a95a58a42d28336432c95) ) /* GAL16V8 */
+ ROM_LOAD( "tj-05.1r", 0x0a00, 0x0117, CRC(0dfc091b) SHA1(ab7ff0c8ada10633d27d5305f1f41f738647412a) ) /* GAL16V8 */
ROM_END
ROM_START( cninja1 ) /* World ver 1 */
@@ -1437,6 +1445,14 @@ ROM_START( cninja1 ) /* World ver 1 */
ROM_REGION( 1024, "proms", 0 )
ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) ) /* Priority Unused */
+
+ ROM_REGION( 0x0e00, "plds", 0 )
+ ROM_LOAD( "tj-00.9j", 0x0000, 0x0117, CRC(46defe8f) SHA1(50db2c265a0ab592938f780f212ef86070b2daa2) ) /* GAL16V8 */
+ ROM_LOAD( "tj-01.9h", 0x0200, 0x0117, CRC(7a86902d) SHA1(7e116dbabe615ddae1588001b31a0a6e6e4dc46d) ) /* GAL16V8 */
+ ROM_LOAD( "tj-02.9h", 0x0400, 0x0117, CRC(b476d59c) SHA1(c17b7884180b5041d1524e9fd479cddac787a3cb) ) /* GAL16V8 */
+ ROM_LOAD( "tj-03.9e", 0x0600, 0x0117, CRC(cfb6e4aa) SHA1(fc70d1d43d8836ae7984c432b3f9e35c2256b18e) ) /* GAL16V8 */
+ ROM_LOAD( "tj-04.5n", 0x0800, 0x0117, CRC(bca07086) SHA1(cf713185d7430e17077a95a58a42d28336432c95) ) /* GAL16V8 */
+ ROM_LOAD( "tj-05.1r", 0x0a00, 0x0117, CRC(0dfc091b) SHA1(ab7ff0c8ada10633d27d5305f1f41f738647412a) ) /* GAL16V8 */
ROM_END
ROM_START( cninjau ) /* US ver 4 */
@@ -1478,6 +1494,14 @@ ROM_START( cninjau ) /* US ver 4 */
ROM_REGION( 1024, "proms", 0 )
ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) ) /* Priority Unused */
+
+ ROM_REGION( 0x0e00, "plds", 0 )
+ ROM_LOAD( "tj-00.9j", 0x0000, 0x0117, CRC(46defe8f) SHA1(50db2c265a0ab592938f780f212ef86070b2daa2) ) /* GAL16V8 */
+ ROM_LOAD( "tj-01.9h", 0x0200, 0x0117, CRC(7a86902d) SHA1(7e116dbabe615ddae1588001b31a0a6e6e4dc46d) ) /* GAL16V8 */
+ ROM_LOAD( "tj-02.9h", 0x0400, 0x0117, CRC(b476d59c) SHA1(c17b7884180b5041d1524e9fd479cddac787a3cb) ) /* GAL16V8 */
+ ROM_LOAD( "tj-03.9e", 0x0600, 0x0117, CRC(cfb6e4aa) SHA1(fc70d1d43d8836ae7984c432b3f9e35c2256b18e) ) /* GAL16V8 */
+ ROM_LOAD( "tj-04.5n", 0x0800, 0x0117, CRC(bca07086) SHA1(cf713185d7430e17077a95a58a42d28336432c95) ) /* GAL16V8 */
+ ROM_LOAD( "tj-05.1r", 0x0a00, 0x0117, CRC(0dfc091b) SHA1(ab7ff0c8ada10633d27d5305f1f41f738647412a) ) /* GAL16V8 */
ROM_END
ROM_START( joemac ) /* Japan ver 1 */
@@ -1519,6 +1543,14 @@ ROM_START( joemac ) /* Japan ver 1 */
ROM_REGION( 1024, "proms", 0 )
ROM_LOAD( "mb7122h.7v", 0x00000, 0x400, CRC(a1267336) SHA1(d11ea9d78526ac3c0dc6e57a2da5914273ad1e3f) ) /* Priority Unused */
+
+ ROM_REGION( 0x0e00, "plds", 0 )
+ ROM_LOAD( "tj-00.9j", 0x0000, 0x0117, CRC(46defe8f) SHA1(50db2c265a0ab592938f780f212ef86070b2daa2) ) /* GAL16V8 */
+ ROM_LOAD( "tj-01.9h", 0x0200, 0x0117, CRC(7a86902d) SHA1(7e116dbabe615ddae1588001b31a0a6e6e4dc46d) ) /* GAL16V8 */
+ ROM_LOAD( "tj-02.9h", 0x0400, 0x0117, CRC(b476d59c) SHA1(c17b7884180b5041d1524e9fd479cddac787a3cb) ) /* GAL16V8 */
+ ROM_LOAD( "tj-03.9e", 0x0600, 0x0117, CRC(cfb6e4aa) SHA1(fc70d1d43d8836ae7984c432b3f9e35c2256b18e) ) /* GAL16V8 */
+ ROM_LOAD( "tj-04.5n", 0x0800, 0x0117, CRC(bca07086) SHA1(cf713185d7430e17077a95a58a42d28336432c95) ) /* GAL16V8 */
+ ROM_LOAD( "tj-05.1r", 0x0a00, 0x0117, CRC(0dfc091b) SHA1(ab7ff0c8ada10633d27d5305f1f41f738647412a) ) /* GAL16V8 */
ROM_END
ROM_START( stoneage )
@@ -2280,26 +2312,26 @@ DRIVER_INIT_MEMBER(cninja_state,mutantf)
/**********************************************************************************/
-GAME( 1990, edrandy, 0, edrandy, edrandy, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 3)", GAME_SUPPORTS_SAVE )
-GAME( 1990, edrandy2, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 2)", GAME_SUPPORTS_SAVE )
-GAME( 1990, edrandy1, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 1)", GAME_SUPPORTS_SAVE )
-GAME( 1990, edrandyj, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (Japan ver 3)", GAME_SUPPORTS_SAVE )
-
-GAME( 1991, cninja, 0, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 4)", GAME_SUPPORTS_SAVE )
-GAME( 1991, cninja1, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 1)", GAME_SUPPORTS_SAVE )
-GAME( 1991, cninjau, cninja, cninja, cninjau, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (US ver 4)", GAME_SUPPORTS_SAVE )
-GAME( 1991, joemac, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Tatakae Genshizin Joe & Mac (Japan ver 1)", GAME_SUPPORTS_SAVE )
-GAME( 1991, stoneage, cninja, stoneage, cninja, cninja_state, stoneage, ROT0, "bootleg", "Stoneage (bootleg of Caveman Ninja)", GAME_SUPPORTS_SAVE )
-GAME( 1991, cninjabl, cninja, cninjabl, cninja, driver_device, 0, ROT0, "bootleg", "Caveman Ninja (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1991, cninjabl2,cninja, cninjabl, cninja, driver_device, 0, ROT0, "bootleg", "Caveman Ninja (bootleg, alt)", GAME_NOT_WORKING )
-
-GAME( 1991, robocop2, 0, robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (Euro/Asia v0.10)", GAME_SUPPORTS_SAVE )
-GAME( 1991, robocop2u,robocop2,robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.10)", GAME_SUPPORTS_SAVE )
-GAME( 1991, robocop2ua,robocop2,robocop2,robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.05)", GAME_SUPPORTS_SAVE )
-GAME( 1991, robocop2j,robocop2,robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (Japan v0.11)", GAME_SUPPORTS_SAVE )
-
-GAME( 1992, mutantf, 0, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-5)", GAME_SUPPORTS_SAVE )
-GAME( 1992, mutantf4, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-4)", GAME_SUPPORTS_SAVE )
-GAME( 1992, mutantf3, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-3)", GAME_SUPPORTS_SAVE )
-GAME( 1992, mutantf2, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-2)", GAME_SUPPORTS_SAVE )
-GAME( 1992, deathbrd, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Death Brade (Japan ver JM-3)", GAME_SUPPORTS_SAVE )
+GAME( 1990, edrandy, 0, edrandy, edrandy, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, edrandy2, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, edrandy1, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (World ver 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, edrandyj, edrandy, edrandy, edrandc, driver_device, 0, ROT0, "Data East Corporation", "The Cliffhanger - Edward Randy (Japan ver 3)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1991, cninja, 0, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, cninja1, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (World ver 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, cninjau, cninja, cninja, cninjau, cninja_state, cninja, ROT0, "Data East Corporation", "Caveman Ninja (US ver 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, joemac, cninja, cninja, cninja, cninja_state, cninja, ROT0, "Data East Corporation", "Tatakae Genshizin Joe & Mac (Japan ver 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, stoneage, cninja, stoneage, cninja, cninja_state, stoneage, ROT0, "bootleg", "Stoneage (bootleg of Caveman Ninja)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, cninjabl, cninja, cninjabl, cninja, driver_device, 0, ROT0, "bootleg", "Caveman Ninja (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, cninjabl2,cninja, cninjabl, cninja, driver_device, 0, ROT0, "bootleg", "Caveman Ninja (bootleg, alt)", MACHINE_NOT_WORKING )
+
+GAME( 1991, robocop2, 0, robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (Euro/Asia v0.10)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, robocop2u,robocop2,robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.10)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, robocop2ua,robocop2,robocop2,robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (US v0.05)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, robocop2j,robocop2,robocop2, robocop2, driver_device, 0, ROT0, "Data East Corporation", "Robocop 2 (Japan v0.11)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1992, mutantf, 0, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, mutantf4, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, mutantf3, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, mutantf2, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Mutant Fighter (World ver EM-2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, deathbrd, mutantf, mutantf, mutantf, cninja_state, mutantf, ROT0, "Data East Corporation", "Death Brade (Japan ver JM-3)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cntsteer.c b/src/mame/drivers/cntsteer.c
index 14e5d7b5ac7..3766eb129a2 100644
--- a/src/mame/drivers/cntsteer.c
+++ b/src/mame/drivers/cntsteer.c
@@ -10,17 +10,22 @@
Improvements by Pierpaolo Prazzoli, David Haywood, Angelo Salese
todo:
- finish
+ both games
- correct roz rotation;
- - make cntsteer work, comms looks awkward and probably different than Zero Target;
- flip screen support;
- according to a side-by-side test, sound should be "darker" by some octaves,
likely that a sound filter is needed;
+ cntsteer specific:
+ - In Back Rotate Test, rotation is tested with the following arrangement (upper bits of rotation parameter):
+ 04 -> 05 -> 02 -> 03 -> 00 -> 01 -> 06 -> 07 -> 04 and backwards
+ Anything with bit 0 set is tested from 0xff to 0, with bit 0 clear that's 0 -> 0xff, fun.
+ - Understand how irq communication works between CPUs. Buffer $415-6 seems involved in the protocol.
+ We currently have slave CPU irq hooked up to vblank, might or might not be correct.
+ - invert order between maincpu and subcpu, subcpu is clearly the master CPU here.
+ - understand why background mirroring causes wrong gfxs on title screen (wrong tilemap paging, missing video bit or it's actually a RMW thing);
cleanup
- split into driver/video;
- note: To boot cntsteer, set a CPU #1 breakpoint on c225 and then 'do pc=c230'.
- Protection maybe?
***************************************************************************************/
@@ -68,6 +73,7 @@ public:
/* misc */
int m_nmimask; // zerotrgt only
+ bool m_sub_nmimask; // counter steer only
/* devices */
required_device<cpu_device> m_maincpu;
@@ -81,6 +87,7 @@ public:
DECLARE_WRITE8_MEMBER(cntsteer_foreground_vram_w);
DECLARE_WRITE8_MEMBER(cntsteer_foreground_attr_w);
DECLARE_WRITE8_MEMBER(cntsteer_background_w);
+ DECLARE_READ8_MEMBER(cntsteer_background_mirror_r);
DECLARE_WRITE8_MEMBER(gekitsui_sub_irq_ack);
DECLARE_WRITE8_MEMBER(cntsteer_sound_w);
DECLARE_WRITE8_MEMBER(zerotrgt_ctrl_w);
@@ -102,6 +109,7 @@ public:
DECLARE_PALETTE_INIT(zerotrgt);
UINT32 screen_update_cntsteer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
UINT32 screen_update_zerotrgt(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ INTERRUPT_GEN_MEMBER(subcpu_vblank_irq);
INTERRUPT_GEN_MEMBER(sound_interrupt);
void zerotrgt_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
void cntsteer_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect );
@@ -438,10 +446,14 @@ WRITE8_MEMBER(cntsteer_state::cntsteer_vregs_w)
case 1: m_scrollx = data; break;
case 2: m_bg_bank = (data & 0x01) << 8;
m_bg_color_bank = (data & 6) >> 1;
+ // TODO: of course this just inibits bus request for master.
+ // TODO: after further investigation, this isn't right, it disables once that player insert a coin.
+
m_bg_tilemap->mark_all_dirty();
break;
case 3: m_rotation_sign = (data & 7);
- m_disable_roz = (~data & 0x08);
+ m_disable_roz = 0; //(~data & 0x08);
+ m_maincpu->set_input_line(INPUT_LINE_RESET, data & 8 ? CLEAR_LINE : ASSERT_LINE);
m_scrolly_hi = (data & 0x30) << 4;
m_scrollx_hi = (data & 0xc0) << 2;
break;
@@ -467,6 +479,12 @@ WRITE8_MEMBER(cntsteer_state::cntsteer_background_w)
m_bg_tilemap->mark_tile_dirty(offset);
}
+/* checks area 0x2000-0x2fff with this address config. */
+READ8_MEMBER(cntsteer_state::cntsteer_background_mirror_r)
+{
+ return m_videoram2[BITSWAP16(offset,15,14,13,12,5,4,3,2,1,0,11,10,9,8,7,6)];
+}
+
/*************************************
*
* CPU comms
@@ -497,20 +515,24 @@ WRITE8_MEMBER(cntsteer_state::zerotrgt_ctrl_w)
WRITE8_MEMBER(cntsteer_state::cntsteer_sub_irq_w)
{
- m_subcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
+ //m_subcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
// printf("%02x IRQ\n", data);
}
WRITE8_MEMBER(cntsteer_state::cntsteer_sub_nmi_w)
{
// if (data)
-// m_subcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
+ machine().scheduler().synchronize(); // force resync
+
+ //m_subcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
+ m_maincpu->set_input_line(M6809_IRQ_LINE, CLEAR_LINE);
// popmessage("%02x", data);
}
WRITE8_MEMBER(cntsteer_state::cntsteer_main_irq_w)
{
- m_maincpu->set_input_line(M6809_IRQ_LINE, HOLD_LINE);
+ machine().scheduler().synchronize(); // force resync
+ m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
}
/* Convert weird input handling with MAME standards.*/
@@ -585,7 +607,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cntsteer_cpu2_map, AS_PROGRAM, 8, cntsteer_state )
AM_RANGE(0x0000, 0x0fff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x1000, 0x1fff) AM_RAM_WRITE(cntsteer_background_w) AM_SHARE("videoram2")
- AM_RANGE(0x2000, 0x2fff) AM_RAM_WRITE(cntsteer_background_w) AM_SHARE("videoram2")
+ AM_RANGE(0x2000, 0x2fff) AM_READWRITE(cntsteer_background_mirror_r,cntsteer_background_w)
AM_RANGE(0x3000, 0x3000) AM_READ_PORT("DSW0")
AM_RANGE(0x3001, 0x3001) AM_READ(cntsteer_adx_r)
AM_RANGE(0x3002, 0x3002) AM_READ_PORT("P1")
@@ -605,6 +627,17 @@ WRITE8_MEMBER(cntsteer_state::nmimask_w)
m_nmimask = data & 0x80;
}
+INTERRUPT_GEN_MEMBER(cntsteer_state::subcpu_vblank_irq)
+{
+ // TODO: hack for bus request: DP is enabled with 0xff only during POST, and disabled once that critical operations are performed.
+ // That's my best guess so far about how Slave is supposed to stop execution on Master CPU, the lack of any realistic write
+ // between these operations brings us to this.
+ // Game currently returns error on MIX CPU RAM because halt-ing BACK CPU doesn't happen when it should of course ...
+// UINT8 dp_r = (UINT8)device.state().state_int(M6809_DP);
+// m_maincpu->set_input_line(INPUT_LINE_HALT, dp_r ? ASSERT_LINE : CLEAR_LINE);
+ m_subcpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
+}
+
INTERRUPT_GEN_MEMBER(cntsteer_state::sound_interrupt)
{
if (!m_nmimask)
@@ -847,7 +880,7 @@ MACHINE_START_MEMBER(cntsteer_state,zerotrgt)
}
-MACHINE_RESET_MEMBER(cntsteer_state,cntsteer)
+MACHINE_RESET_MEMBER(cntsteer_state,zerotrgt)
{
m_flipscreen = 0;
m_bg_bank = 0;
@@ -860,13 +893,14 @@ MACHINE_RESET_MEMBER(cntsteer_state,cntsteer)
m_bg_color_bank = 0;
m_disable_roz = 0;
+ m_nmimask = 0;
}
-MACHINE_RESET_MEMBER(cntsteer_state,zerotrgt)
+MACHINE_RESET_MEMBER(cntsteer_state,cntsteer)
{
- m_nmimask = 0;
- MACHINE_RESET_CALL_MEMBER(cntsteer);
+ m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
+ MACHINE_RESET_CALL_MEMBER(zerotrgt);
}
static MACHINE_CONFIG_START( cntsteer, cntsteer_state )
@@ -879,7 +913,7 @@ static MACHINE_CONFIG_START( cntsteer, cntsteer_state )
MCFG_CPU_ADD("subcpu", M6809, 2000000) /* ? */
MCFG_CPU_PROGRAM_MAP(cntsteer_cpu2_map)
// MCFG_DEVICE_DISABLE()
- MCFG_CPU_VBLANK_INT_DRIVER("screen", cntsteer_state, nmi_line_pulse) /* ? */
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", cntsteer_state, subcpu_vblank_irq) /* ? */
MCFG_CPU_ADD("audiocpu", M6502, 1500000) /* ? */
MCFG_CPU_PROGRAM_MAP(sound_map)
@@ -897,7 +931,8 @@ static MACHINE_CONFIG_START( cntsteer, cntsteer_state )
MCFG_SCREEN_UPDATE_DRIVER(cntsteer_state, screen_update_cntsteer)
MCFG_SCREEN_PALETTE("palette")
- MCFG_QUANTUM_TIME(attotime::from_hz(6000))
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
+ MCFG_QUANTUM_PERFECT_CPU("subcpu")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cntsteer)
MCFG_PALETTE_ADD("palette", 256)
@@ -1179,7 +1214,7 @@ DRIVER_INIT_MEMBER(cntsteer_state,zerotrgt)
/***************************************************************************/
-GAME( 1985, zerotrgt, 0, zerotrgt, zerotrgt, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Zero Target (World, CW)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NO_COCKTAIL|GAME_NOT_WORKING|GAME_SUPPORTS_SAVE )
-GAME( 1985, zerotrgta, zerotrgt, zerotrgt, zerotrgta, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Zero Target (World, CT)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NO_COCKTAIL|GAME_NOT_WORKING|GAME_SUPPORTS_SAVE )
-GAME( 1985, gekitsui, zerotrgt, zerotrgt, zerotrgta, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Gekitsui Oh (Japan)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_NO_COCKTAIL|GAME_NOT_WORKING|GAME_SUPPORTS_SAVE )
-GAME( 1985, cntsteer, 0, cntsteer, cntsteer, cntsteer_state, zerotrgt, ROT270, "Data East Corporation", "Counter Steer (Japan)", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND|GAME_WRONG_COLORS|GAME_NO_COCKTAIL|GAME_NOT_WORKING|GAME_SUPPORTS_SAVE )
+GAME( 1985, zerotrgt, 0, zerotrgt, zerotrgt, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Zero Target (World, CW)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
+GAME( 1985, zerotrgta, zerotrgt, zerotrgt, zerotrgta, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Zero Target (World, CT)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
+GAME( 1985, gekitsui, zerotrgt, zerotrgt, zerotrgta, cntsteer_state, zerotrgt, ROT0, "Data East Corporation", "Gekitsui Oh (Japan)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
+GAME( 1985, cntsteer, 0, cntsteer, cntsteer, cntsteer_state, zerotrgt, ROT270, "Data East Corporation", "Counter Steer (Japan)", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND|MACHINE_WRONG_COLORS|MACHINE_NO_COCKTAIL|MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cobra.c b/src/mame/drivers/cobra.c
index 7850cc721fa..047e8e7fb03 100644
--- a/src/mame/drivers/cobra.c
+++ b/src/mame/drivers/cobra.c
@@ -615,7 +615,11 @@ public:
m_ata(*this, "ata"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
- m_generic_paletteram_32(*this, "paletteram")
+ m_generic_paletteram_32(*this, "paletteram"),
+ m_main_ram(*this, "main_ram"),
+ m_sub_ram(*this, "sub_ram"),
+ m_gfx_ram0(*this, "gfx_main_ram_0"),
+ m_gfx_ram1(*this, "gfx_main_ram_1")
{
}
@@ -628,6 +632,10 @@ public:
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
required_shared_ptr<UINT32> m_generic_paletteram_32;
+ required_shared_ptr<UINT64> m_main_ram;
+ required_shared_ptr<UINT32> m_sub_ram;
+ required_shared_ptr<UINT64> m_gfx_ram0;
+ required_shared_ptr<UINT64> m_gfx_ram1;
DECLARE_READ64_MEMBER(main_comram_r);
DECLARE_WRITE64_MEMBER(main_comram_w);
@@ -1569,6 +1577,25 @@ WRITE64_MEMBER(cobra_state::main_fifo_w)
}
#endif
+ if (m_main_debug_state == 0x6b)
+ {
+ // install HD patches for bujutsu
+ if (strcmp(space.machine().system().name, "bujutsu") == 0)
+ {
+ UINT32 *main_ram = (UINT32*)(UINT64*)m_main_ram;
+ UINT32 *sub_ram = (UINT32*)m_sub_ram;
+ UINT32 *gfx_ram = (UINT32*)(UINT64*)m_gfx_ram0;
+
+ main_ram[(0x0005ac^4) / 4] = 0x60000000; // skip IRQ fail
+ main_ram[(0x001ec4^4) / 4] = 0x60000000; // waiting for IRQ?
+ main_ram[(0x001f00^4) / 4] = 0x60000000; // waiting for IRQ?
+
+ sub_ram[0x568 / 4] = 0x60000000; // skip IRQ fail
+
+ gfx_ram[(0x38632c^4) / 4] = 0x38600000; // skip check_one_scene()
+ }
+ }
+
m_main_debug_state = 0;
m_main_debug_state_wc = 0;
}
@@ -1616,7 +1643,7 @@ WRITE32_MEMBER(cobra_state::main_cpu_dc_store)
}
static ADDRESS_MAP_START( cobra_main_map, AS_PROGRAM, 64, cobra_state )
- AM_RANGE(0x00000000, 0x003fffff) AM_RAM
+ AM_RANGE(0x00000000, 0x003fffff) AM_RAM AM_SHARE("main_ram")
AM_RANGE(0x07c00000, 0x07ffffff) AM_RAM
AM_RANGE(0x80000cf8, 0x80000cff) AM_READWRITE(main_mpc106_r, main_mpc106_w)
AM_RANGE(0xc0000000, 0xc03fffff) AM_RAM AM_SHARE("gfx_main_ram_0") // GFX board main ram, bank 0
@@ -1956,7 +1983,7 @@ WRITE8_MEMBER(cobra_state::sub_jvs_w)
}
static ADDRESS_MAP_START( cobra_sub_map, AS_PROGRAM, 32, cobra_state )
- AM_RANGE(0x00000000, 0x003fffff) AM_MIRROR(0x80000000) AM_RAM // Main RAM
+ AM_RANGE(0x00000000, 0x003fffff) AM_MIRROR(0x80000000) AM_RAM AM_SHARE("sub_ram") // Main RAM
AM_RANGE(0x70000000, 0x7003ffff) AM_MIRROR(0x80000000) AM_READWRITE(sub_comram_r, sub_comram_w) // Double buffered shared RAM between Main and Sub
// AM_RANGE(0x78000000, 0x780000ff) AM_MIRROR(0x80000000) AM_NOP // SCSI controller (unused)
AM_RANGE(0x78040000, 0x7804ffff) AM_MIRROR(0x80000000) AM_DEVREADWRITE16("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w, 0xffffffff)
@@ -3500,5 +3527,5 @@ ROM_END
/*************************************************************************/
-GAME( 1997, bujutsu, 0, cobra, cobra, cobra_state, bujutsu, ROT0, "Konami", "Fighting Bujutsu", GAME_NOT_WORKING | GAME_NO_SOUND )
-GAME( 1997, racjamdx, 0, cobra, cobra, cobra_state, racjamdx, ROT0, "Konami", "Racing Jam DX", GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( 1997, bujutsu, 0, cobra, cobra, cobra_state, bujutsu, ROT0, "Konami", "Fighting Bujutsu", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 1997, racjamdx, 0, cobra, cobra, cobra_state, racjamdx, ROT0, "Konami", "Racing Jam DX", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/coco12.c b/src/mame/drivers/coco12.c
index 7ed66f1b9f2..7ed66f1b9f2 100644
--- a/src/mess/drivers/coco12.c
+++ b/src/mame/drivers/coco12.c
diff --git a/src/mess/drivers/coco3.c b/src/mame/drivers/coco3.c
index 463c5e5cffb..8023151718f 100644
--- a/src/mess/drivers/coco3.c
+++ b/src/mame/drivers/coco3.c
@@ -371,5 +371,5 @@ ROM_END
COMP( 1986, coco3, coco, 0, coco3, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC)", 0)
COMP( 1986, coco3p, coco, 0, coco3p, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (PAL)", 0)
-COMP( 19??, coco3h, coco, 0, coco3h, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC; HD6309)", GAME_UNOFFICIAL)
-COMP( 19??, coco3dw1, coco, 0, coco3dw1, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC; HDB-DOS)", GAME_UNOFFICIAL)
+COMP( 19??, coco3h, coco, 0, coco3h, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC; HD6309)", MACHINE_UNOFFICIAL)
+COMP( 19??, coco3dw1, coco, 0, coco3dw1, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC; HDB-DOS)", MACHINE_UNOFFICIAL)
diff --git a/src/mame/drivers/cocoloco.c b/src/mame/drivers/cocoloco.c
index 47f2e040050..a4b72dc2808 100644
--- a/src/mame/drivers/cocoloco.c
+++ b/src/mame/drivers/cocoloco.c
@@ -530,4 +530,4 @@ ROM_END
***********************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 198?, cocoloco, 0, cocoloco, cocoloco, driver_device, 0, ROT90, "Petaco S.A.", "Coco Loco", GAME_SUPPORTS_SAVE )
+GAME( 198?, cocoloco, 0, cocoloco, cocoloco, driver_device, 0, ROT90, "Petaco S.A.", "Coco Loco", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/codata.c b/src/mame/drivers/codata.c
index 8e5c8bebdc3..91c7459f450 100644
--- a/src/mess/drivers/codata.c
+++ b/src/mame/drivers/codata.c
@@ -110,4 +110,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, codata, 0, 0, codata, codata, driver_device, 0, "Contel Codata Corporation", "Codata", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1982, codata, 0, 0, codata, codata, driver_device, 0, "Contel Codata Corporation", "Codata", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/coinmstr.c b/src/mame/drivers/coinmstr.c
index 61896941cd2..e2d0d6bc591 100644
--- a/src/mame/drivers/coinmstr.c
+++ b/src/mame/drivers/coinmstr.c
@@ -1763,9 +1763,9 @@ DRIVER_INIT_MEMBER(coinmstr_state,coinmstr)
*************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1985, quizmstr, 0, quizmstr, quizmstr, coinmstr_state, coinmstr, ROT0, "Loewen Spielautomaten", "Quizmaster (German)", GAME_UNEMULATED_PROTECTION )
-GAME( 1987, trailblz, 0, trailblz, trailblz, coinmstr_state, coinmstr, ROT0, "Coinmaster", "Trail Blazer", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING ) // or Trail Blazer 2 ?
-GAME( 1989, supnudg2, 0, supnudg2, supnudg2, coinmstr_state, coinmstr, ROT0, "Coinmaster", "Super Nudger II - P173 (Version 5.21)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1990, pokeroul, 0, pokeroul, pokeroul, driver_device, 0, ROT0, "Coinmaster", "Poker Roulette (Version 8.22)", GAME_NOT_WORKING )
-GAME( 1985, jpcoin, 0, jpcoin , jpcoin, driver_device, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster set 1)", GAME_NOT_WORKING ) // io stuff is different at least
+GAME( 1985, quizmstr, 0, quizmstr, quizmstr, coinmstr_state, coinmstr, ROT0, "Loewen Spielautomaten", "Quizmaster (German)", MACHINE_UNEMULATED_PROTECTION )
+GAME( 1987, trailblz, 0, trailblz, trailblz, coinmstr_state, coinmstr, ROT0, "Coinmaster", "Trail Blazer", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // or Trail Blazer 2 ?
+GAME( 1989, supnudg2, 0, supnudg2, supnudg2, coinmstr_state, coinmstr, ROT0, "Coinmaster", "Super Nudger II - P173 (Version 5.21)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1990, pokeroul, 0, pokeroul, pokeroul, driver_device, 0, ROT0, "Coinmaster", "Poker Roulette (Version 8.22)", MACHINE_NOT_WORKING )
+GAME( 1985, jpcoin, 0, jpcoin , jpcoin, driver_device, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster set 1)", MACHINE_NOT_WORKING ) // io stuff is different at least
GAME( 1990, jpcoin2, 0, jpcoin2, jpcoin2, driver_device, 0, ROT0, "Coinmaster", "Joker Poker (Coinmaster, Amusement Only)", 0 )
diff --git a/src/mame/drivers/coinmvga.c b/src/mame/drivers/coinmvga.c
index 0c6c64b0548..615a6aa7793 100644
--- a/src/mame/drivers/coinmvga.c
+++ b/src/mame/drivers/coinmvga.c
@@ -883,8 +883,8 @@ DRIVER_INIT_MEMBER(coinmvga_state,cmrltv75)
*************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 2000, colorama, 0, coinmvga, coinmvga, coinmvga_state, colorama, ROT0, "Coinmaster-Gaming, Ltd.", "Colorama (P521, English)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 2000, coloramas, colorama, coinmvga, coinmvga, coinmvga_state, colorama, ROT0, "Coinmaster-Gaming, Ltd.", "Colorama (P521 V13, Spanish)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 2001, cmrltv75, 0, coinmvga, coinmvga, coinmvga_state, cmrltv75, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Roulette P497 V75 (Y2K, Spanish)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 2000, cmkenosp, 0, coinmvga, coinmvga, driver_device, 0, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Keno (Y2K, Spanish, 2000-12-14)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 2000, cmkenospa, cmkenosp, coinmvga, coinmvga, driver_device, 0, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Keno (Y2K, Spanish, 2000-12-02)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_NOT_WORKING )
+GAME( 2000, colorama, 0, coinmvga, coinmvga, coinmvga_state, colorama, ROT0, "Coinmaster-Gaming, Ltd.", "Colorama (P521, English)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 2000, coloramas, colorama, coinmvga, coinmvga, coinmvga_state, colorama, ROT0, "Coinmaster-Gaming, Ltd.", "Colorama (P521 V13, Spanish)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 2001, cmrltv75, 0, coinmvga, coinmvga, coinmvga_state, cmrltv75, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Roulette P497 V75 (Y2K, Spanish)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 2000, cmkenosp, 0, coinmvga, coinmvga, driver_device, 0, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Keno (Y2K, Spanish, 2000-12-14)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 2000, cmkenospa, cmkenosp, coinmvga, coinmvga, driver_device, 0, ROT90, "Coinmaster-Gaming, Ltd.", "Coinmaster Keno (Y2K, Spanish, 2000-12-02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/coleco.c b/src/mame/drivers/coleco.c
index 435b20060c3..5f6c020e33c 100644
--- a/src/mess/drivers/coleco.c
+++ b/src/mame/drivers/coleco.c
@@ -70,12 +70,12 @@
READ8_MEMBER( coleco_state::paddle_1_r )
{
- return m_joy_d7_state[0] | coleco_paddle_read(machine(), 0, m_joy_mode, m_joy_analog_state[0]);
+ return m_joy_d7_state[0] | coleco_paddle_read(0, m_joy_mode, m_joy_analog_state[0]);
}
READ8_MEMBER( coleco_state::paddle_2_r )
{
- return m_joy_d7_state[1] | coleco_paddle_read(machine(), 1, m_joy_mode, m_joy_analog_state[1]);
+ return m_joy_d7_state[1] | coleco_paddle_read(1, m_joy_mode, m_joy_analog_state[1]);
}
WRITE8_MEMBER( coleco_state::paddle_off_w )
@@ -206,7 +206,7 @@ TIMER_CALLBACK_MEMBER(coleco_state::paddle_pulse_callback)
TIMER_DEVICE_CALLBACK_MEMBER(coleco_state::paddle_update_callback)
{
// arbitrary timer for reading analog controls
- coleco_scan_paddles(machine(), &m_joy_analog_reload[0], &m_joy_analog_reload[1]);
+ coleco_scan_paddles(&m_joy_analog_reload[0], &m_joy_analog_reload[1]);
for (int port = 0; port < 2; port++)
{
@@ -229,6 +229,97 @@ READ8_MEMBER( coleco_state::cart_r )
return m_cart->bd_r(space, offset & 0x7fff, 0, 0, 0, 0, 0);
}
+UINT8 coleco_state::coleco_scan_paddles(UINT8 *joy_status0, UINT8 *joy_status1)
+{
+ UINT8 ctrl_sel = (m_ctrlsel != NULL) ? m_ctrlsel->read() : 0;
+
+ /* which controller shall we read? */
+ if ((ctrl_sel & 0x07) == 0x02) // Super Action Controller P1
+ *joy_status0 = (m_sac_slide1 != NULL) ? m_sac_slide1->read() : 0;
+ else if ((ctrl_sel & 0x07) == 0x03) // Driving Controller P1
+ *joy_status0 = (m_driv_wheel1 != NULL) ? m_driv_wheel1->read() : 0;
+
+ if ((ctrl_sel & 0x70) == 0x20) // Super Action Controller P2
+ *joy_status1 = (m_sac_slide2 != NULL) ? m_sac_slide2->read() : 0;
+ else if ((ctrl_sel & 0x70) == 0x30) // Driving Controller P2
+ *joy_status1 = (m_driv_wheel2 != NULL) ? m_driv_wheel2->read() : 0;
+
+ /* In principle, even if not supported by any game, I guess we could have two Super
+ Action Controllers plugged into the Roller controller ports. Since I found no info
+ about the behavior of sliders in such a configuration, we overwrite SAC sliders with
+ the Roller trackball inputs and actually use the latter ones, when both are selected. */
+ if (ctrl_sel & 0x80) // Roller controller
+ {
+ *joy_status0 = (m_roller_x != NULL) ? m_roller_x->read() : 0;
+ *joy_status1 = (m_roller_y != NULL) ? m_roller_y->read() : 0;
+ }
+
+ return *joy_status0 | *joy_status1;
+}
+
+
+UINT8 coleco_state::coleco_paddle_read(int port, int joy_mode, UINT8 joy_status)
+{
+ UINT8 ctrl_sel = (m_ctrlsel != NULL ) ? m_ctrlsel->read() : 0;
+ UINT8 ctrl_extra = ctrl_sel & 0x80;
+ ctrl_sel = ctrl_sel >> (port*4) & 7;
+
+ /* Keypad and fire 1 (SAC Yellow Button) */
+ if (joy_mode == 0)
+ {
+ /* No key pressed by default */
+ UINT8 data = 0x0f;
+ UINT16 ipt = 0xffff;
+
+ if (ctrl_sel == 0) // ColecoVision Controller
+ ipt = port ? m_std_keypad2->read() : m_std_keypad1->read();
+ else if (ctrl_sel == 2) // Super Action Controller
+ ipt = port ? m_sac_keypad2->read() : m_sac_keypad1->read();
+
+ /* Numeric pad buttons are not independent on a real ColecoVision, if you push more
+ than one, a real ColecoVision think that it is a third button, so we are going to emulate
+ the right behaviour */
+ /* Super Action Controller additional buttons are read in the same way */
+ if (!(ipt & 0x0001)) data &= 0x0a; /* 0 */
+ if (!(ipt & 0x0002)) data &= 0x0d; /* 1 */
+ if (!(ipt & 0x0004)) data &= 0x07; /* 2 */
+ if (!(ipt & 0x0008)) data &= 0x0c; /* 3 */
+ if (!(ipt & 0x0010)) data &= 0x02; /* 4 */
+ if (!(ipt & 0x0020)) data &= 0x03; /* 5 */
+ if (!(ipt & 0x0040)) data &= 0x0e; /* 6 */
+ if (!(ipt & 0x0080)) data &= 0x05; /* 7 */
+ if (!(ipt & 0x0100)) data &= 0x01; /* 8 */
+ if (!(ipt & 0x0200)) data &= 0x0b; /* 9 */
+ if (!(ipt & 0x0400)) data &= 0x06; /* # */
+ if (!(ipt & 0x0800)) data &= 0x09; /* * */
+ if (!(ipt & 0x1000)) data &= 0x04; /* Blue Action Button */
+ if (!(ipt & 0x2000)) data &= 0x08; /* Purple Action Button */
+
+ return ((ipt & 0x4000) >> 8) | 0x30 | data;
+ }
+ /* Joystick and fire 2 (SAC Red Button) */
+ else
+ {
+ UINT8 data = 0x7f;
+
+ if (ctrl_sel == 0) // ColecoVision Controller
+ data = port ? m_std_joy2->read() : m_std_joy1->read();
+ else if (ctrl_sel == 2) // Super Action Controller
+ data = port ? m_sac_joy2->read() : m_sac_joy1->read();
+ else if (ctrl_sel == 3) // Driving Controller
+ data = port ? m_driv_pedal2->read() : m_driv_pedal1->read();
+
+ /* If any extra analog contoller enabled */
+ if (ctrl_extra || ctrl_sel == 2 || ctrl_sel == 3)
+ {
+ if (joy_status & 0x80) data ^= 0x30;
+ else if (joy_status) data ^= 0x10;
+ }
+
+ return data & 0x7f;
+ }
+}
+
void coleco_state::machine_start()
{
memset(m_ram, 0xff, m_ram.bytes()); // initialize RAM
@@ -354,7 +445,7 @@ ROM_END
Unreleased Brazilian Colecovision clone by Microdigital.
It was never released and the only known prototypes were uncovered by an ex-employee of Microdigital
- called Cláudio Cassens who donated it to collectors (Eduardo Luccas) in June 2015.
+ called Cl??udio Cassens who donated it to collectors (Eduardo Luccas) in June 2015.
-- Felipe Sanches
*/
ROM_START (onyx)
diff --git a/src/mame/drivers/combatsc.c b/src/mame/drivers/combatsc.c
index 6d6ba09d4cb..75c753a685b 100644
--- a/src/mame/drivers/combatsc.c
+++ b/src/mame/drivers/combatsc.c
@@ -995,4 +995,4 @@ GAME( 1987, combatsct, combatsc, combatsc, combatsct, driver_device, 0,
GAME( 1987, combatscj, combatsc, combatsc, combatsct, driver_device, 0, ROT0, "Konami", "Combat School (Japan trackball)", 0 )
GAME( 1987, bootcamp, combatsc, combatsc, combatsct, driver_device, 0, ROT0, "Konami", "Boot Camp (set 1)", 0 )
GAME( 1987, bootcampa, combatsc, combatsc, combatsct, driver_device, 0, ROT0, "Konami", "Boot Camp (set 2)", 0 )
-GAME( 1988, combatscb, combatsc, combatscb, combatscb, driver_device, 0, ROT0, "bootleg", "Combat School (bootleg)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_SOUND )
+GAME( 1988, combatscb, combatsc, combatscb, combatscb, driver_device, 0, ROT0, "bootleg", "Combat School (bootleg)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/comebaby.c b/src/mame/drivers/comebaby.c
index 64dd498e542..a1008f4c904 100644
--- a/src/mame/drivers/comebaby.c
+++ b/src/mame/drivers/comebaby.c
@@ -248,4 +248,4 @@ ROM_START(comebaby)
ROM_END
-GAME( 2000, comebaby, 0, comebaby, comebaby, driver_device, 0, ROT0, "ExPotato", "Come On Baby", GAME_NOT_WORKING|GAME_NO_SOUND )
+GAME( 2000, comebaby, 0, comebaby, comebaby, driver_device, 0, ROT0, "ExPotato", "Come On Baby", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/commando.c b/src/mame/drivers/commando.c
index 012e6ac0171..8d3d40d06bc 100644
--- a/src/mame/drivers/commando.c
+++ b/src/mame/drivers/commando.c
@@ -648,11 +648,11 @@ DRIVER_INIT_MEMBER(commando_state,spaceinv)
/* Game Drivers */
-GAME( 1985, commando, 0, commando, commando, commando_state, commando, ROT270, "Capcom", "Commando (World)", GAME_SUPPORTS_SAVE )
-GAME( 1985, commandou, commando, commando, commandou, commando_state,commando, ROT270, "Capcom (Data East USA license)", "Commando (US set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1985, commandou2, commando, commando, commando, commando_state, commando, ROT270, "Capcom (Data East USA license)", "Commando (US set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1985, commandoj, commando, commando, commando, commando_state, commando, ROT270, "Capcom", "Senjou no Ookami", GAME_SUPPORTS_SAVE )
-GAME( 1985, commandob, commando, commando, commando, commando_state, spaceinv, ROT270, "bootleg", "Commando (bootleg set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1985, commandob2,commando, commando, commando, commando_state, commando, ROT270, "bootleg", "Commando (bootleg set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1985, sinvasn, commando, commando, commando, commando_state, commando, ROT270, "Capcom", "Space Invasion (Europe)", GAME_SUPPORTS_SAVE )
-GAME( 1985, sinvasnb, commando, commando, commando, commando_state, spaceinv, ROT270, "bootleg", "Space Invasion (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1985, commando, 0, commando, commando, commando_state, commando, ROT270, "Capcom", "Commando (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, commandou, commando, commando, commandou, commando_state,commando, ROT270, "Capcom (Data East USA license)", "Commando (US set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, commandou2, commando, commando, commando, commando_state, commando, ROT270, "Capcom (Data East USA license)", "Commando (US set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, commandoj, commando, commando, commando, commando_state, commando, ROT270, "Capcom", "Senjou no Ookami", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, commandob, commando, commando, commando, commando_state, spaceinv, ROT270, "bootleg", "Commando (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, commandob2,commando, commando, commando, commando_state, commando, ROT270, "bootleg", "Commando (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, sinvasn, commando, commando, commando, commando_state, commando, ROT270, "Capcom", "Space Invasion (Europe)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, sinvasnb, commando, commando, commando, commando_state, spaceinv, ROT270, "bootleg", "Space Invasion (bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/compgolf.c b/src/mame/drivers/compgolf.c
index 66cfadacbbe..344c83641ef 100644
--- a/src/mame/drivers/compgolf.c
+++ b/src/mame/drivers/compgolf.c
@@ -352,5 +352,5 @@ DRIVER_INIT_MEMBER(compgolf_state,compgolf)
*
*************************************/
-GAME( 1986, compgolf, 0, compgolf, compgolf, compgolf_state, compgolf, ROT0, "Data East", "Competition Golf Final Round (revision 3)", GAME_SUPPORTS_SAVE )
-GAME( 1985, compgolfo,compgolf, compgolf, compgolf, compgolf_state, compgolf, ROT0, "Data East", "Competition Golf Final Round (Japan, old version)", GAME_SUPPORTS_SAVE )
+GAME( 1986, compgolf, 0, compgolf, compgolf, compgolf_state, compgolf, ROT0, "Data East", "Competition Golf Final Round (revision 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, compgolfo,compgolf, compgolf, compgolf, compgolf_state, compgolf, ROT0, "Data East", "Competition Golf Final Round (Japan, old version)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/compis.c b/src/mame/drivers/compis.c
index f2a067eb4c0..f2f2921436c 100644
--- a/src/mess/drivers/compis.c
+++ b/src/mame/drivers/compis.c
@@ -788,5 +788,5 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP(1985, compis, 0, 0, compis, compis, driver_device, 0, "Telenova", "Compis" , GAME_NOT_WORKING )
-COMP(1986, compis2, compis, 0, compis2, compis, driver_device, 0, "Telenova", "Compis II" , GAME_NOT_WORKING )
+COMP(1985, compis, 0, 0, compis, compis, driver_device, 0, "Telenova", "Compis" , MACHINE_NOT_WORKING )
+COMP(1986, compis2, compis, 0, compis2, compis, driver_device, 0, "Telenova", "Compis II" , MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/compucolor.c b/src/mame/drivers/compucolor.c
index 1485860c1e4..2286c43f10f 100644
--- a/src/mess/drivers/compucolor.c
+++ b/src/mame/drivers/compucolor.c
@@ -40,6 +40,7 @@ public:
m_maincpu(*this, I8080_TAG),
m_mioc(*this, TMS5501_TAG),
m_vtac(*this, CRT5027_TAG),
+ m_palette(*this, "palette"),
m_rs232(*this, RS232_TAG),
m_floppy0(*this, "cd0"),
m_floppy1(*this, "cd1"),
@@ -67,6 +68,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<tms5501_device> m_mioc;
required_device<crt5027_device> m_vtac;
+ required_device<palette_device> m_palette;
required_device<rs232_port_device> m_rs232;
required_device<compucolor_floppy_port_device> m_floppy0;
required_device<compucolor_floppy_port_device> m_floppy1;
@@ -92,7 +94,6 @@ public:
virtual void machine_start();
virtual void machine_reset();
- DECLARE_PALETTE_INIT(compucolor2);
UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@@ -102,8 +103,6 @@ public:
IRQ_CALLBACK_MEMBER( int_ack );
- rgb_t m_palette[8];
-
UINT8 m_xo;
};
@@ -305,8 +304,8 @@ UINT32 compucolor2_state::screen_update(screen_device &screen, bitmap_rgb32 &bit
UINT8 data = m_char_rom->base()[char_offs];
- rgb_t fg = m_palette[attr & 0x07];
- rgb_t bg = m_palette[(attr >> 3) & 0x07];
+ rgb_t fg = m_palette->pen_color(attr & 0x07);
+ rgb_t bg = m_palette->pen_color((attr >> 3) & 0x07);
for (int x = 0; x < 6; x++)
{
@@ -434,14 +433,6 @@ void compucolor2_state::machine_reset()
m_rs232->write_dtr(1);
}
-PALETTE_INIT_MEMBER(compucolor2_state, compucolor2)
-{
- for (int i = 0; i < 8; i++)
- {
- m_palette[i] = rgb_t(BIT(i, 0) * 0xff, BIT(i, 1) * 0xff, BIT(i, 2) * 0xff);
- }
-}
-
static MACHINE_CONFIG_START( compucolor2, compucolor2_state )
// basic machine hardware
MCFG_CPU_ADD(I8080_TAG, I8080, XTAL_17_9712MHz/9)
@@ -449,9 +440,6 @@ static MACHINE_CONFIG_START( compucolor2, compucolor2_state )
MCFG_CPU_IO_MAP(compucolor2_io)
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(compucolor2_state,int_ack)
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(compucolor2_state, compucolor2)
-
// video hardware
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -460,6 +448,8 @@ static MACHINE_CONFIG_START( compucolor2, compucolor2_state )
MCFG_SCREEN_SIZE(64*6, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0, 64*6-1, 0, 32*8-1)
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
+
MCFG_DEVICE_ADD(CRT5027_TAG, CRT5027, XTAL_17_9712MHz/2)
MCFG_TMS9927_CHAR_WIDTH(6)
MCFG_TMS9927_VSYN_CALLBACK(DEVWRITELINE(TMS5501_TAG, tms5501_device, sens_w))
@@ -513,4 +503,4 @@ ROM_START( compclr2 )
ROM_LOAD( "82s129.ug5", 0x00, 0x20, NO_DUMP ) // Color PROM
ROM_END
-COMP( 1977, compclr2, 0, 0, compucolor2, compucolor2, driver_device, 0, "Intelligent Systems Corporation", "Compucolor II", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 1977, compclr2, 0, 0, compucolor2, compucolor2, driver_device, 0, "Intelligent Systems Corporation", "Compucolor II", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mess/drivers/comquest.c b/src/mame/drivers/comquest.c
index 0c1e159cd8a..5329f09e1d4 100644
--- a/src/mess/drivers/comquest.c
+++ b/src/mame/drivers/comquest.c
@@ -307,4 +307,4 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT MONITOR COMPANY FULLNAME */
-CONS( 1995, comquest, 0, 0, comquest, comquest, driver_device, 0, "Data Concepts", "ComQuest Plus (German)", GAME_NOT_WORKING | GAME_NO_SOUND)
+CONS( 1995, comquest, 0, 0, comquest, comquest, driver_device, 0, "Data Concepts", "ComQuest Plus (German)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/comx35.c b/src/mame/drivers/comx35.c
index 5452582616a..04bc334ce40 100644
--- a/src/mess/drivers/comx35.c
+++ b/src/mame/drivers/comx35.c
@@ -719,5 +719,5 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1983, comx35p, 0, 0, pal, comx35, driver_device, 0, "Comx World Operations Ltd", "COMX 35 (PAL)", GAME_IMPERFECT_SOUND )
-COMP( 1983, comx35n, comx35p,0, ntsc, comx35, driver_device, 0, "Comx World Operations Ltd", "COMX 35 (NTSC)", GAME_IMPERFECT_SOUND )
+COMP( 1983, comx35p, 0, 0, pal, comx35, driver_device, 0, "Comx World Operations Ltd", "COMX 35 (PAL)", MACHINE_IMPERFECT_SOUND )
+COMP( 1983, comx35n, comx35p,0, ntsc, comx35, driver_device, 0, "Comx World Operations Ltd", "COMX 35 (NTSC)", MACHINE_IMPERFECT_SOUND )
diff --git a/src/mess/drivers/concept.c b/src/mame/drivers/concept.c
index 947d4bfcfa7..947d4bfcfa7 100644
--- a/src/mess/drivers/concept.c
+++ b/src/mame/drivers/concept.c
diff --git a/src/mame/drivers/contra.c b/src/mame/drivers/contra.c
index d2d046949e6..e10f10ca5e6 100644
--- a/src/mame/drivers/contra.c
+++ b/src/mame/drivers/contra.c
@@ -563,13 +563,13 @@ ROM_START( contrabj1 )
ROM_LOAD( "633f11.20g", 0x0300, 0x0100, CRC(14ca5e19) SHA1(eeee2f8b3d1e4acf47de1e74c4e507ff924591e7) ) /* 007121 #1 char lookup table */
ROM_END
-GAME( 1987, contra, 0, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (US / Asia, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, contra1, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (US / Asia, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, contrae, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (US / Asia, set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1987, contraj, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (Japan, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, contraj1, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (Japan, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, gryzor, contra, contra, gryzor, driver_device, 0, ROT90, "Konami", "Gryzor (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, gryzor1, contra, contra, gryzor, driver_device, 0, ROT90, "Konami", "Gryzor (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, contrab, contra, contra, contra, driver_device, 0, ROT90, "bootleg", "Contra (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1987, contrabj, contra, contra, contra, driver_device, 0, ROT90, "bootleg", "Contra (Japan bootleg, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, contrabj1, contra, contra, contra, driver_device, 0, ROT90, "bootleg", "Contra (Japan bootleg, set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1987, contra, 0, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (US / Asia, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, contra1, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (US / Asia, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, contrae, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (US / Asia, set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, contraj, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (Japan, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, contraj1, contra, contra, contra, driver_device, 0, ROT90, "Konami", "Contra (Japan, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, gryzor, contra, contra, gryzor, driver_device, 0, ROT90, "Konami", "Gryzor (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, gryzor1, contra, contra, gryzor, driver_device, 0, ROT90, "Konami", "Gryzor (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, contrab, contra, contra, contra, driver_device, 0, ROT90, "bootleg", "Contra (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, contrabj, contra, contra, contra, driver_device, 0, ROT90, "bootleg", "Contra (Japan bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, contrabj1, contra, contra, contra, driver_device, 0, ROT90, "bootleg", "Contra (Japan bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/coolpool.c b/src/mame/drivers/coolpool.c
index a121b0c1a92..c54ec39c031 100644
--- a/src/mame/drivers/coolpool.c
+++ b/src/mame/drivers/coolpool.c
@@ -1185,9 +1185,9 @@ DRIVER_INIT_MEMBER(coolpool_state,9ballsht)
*
*************************************/
-GAME( 1989, amerdart, 0, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, amerdart2, amerdart, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, amerdart3, amerdart, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 3)", GAME_SUPPORTS_SAVE )
+GAME( 1989, amerdart, 0, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, amerdart2, amerdart, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, amerdart3, amerdart, amerdart, amerdart, coolpool_state, amerdart, ROT0, "Ameri", "AmeriDarts (set 3)", MACHINE_SUPPORTS_SAVE )
GAME( 1992, coolpool, 0, coolpool, coolpool, coolpool_state, coolpool, ROT0, "Catalina", "Cool Pool", 0 )
GAME( 1993, 9ballsht, 0, 9ballsht, 9ballsht, coolpool_state, 9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 1)", 0 )
GAME( 1993, 9ballsht2, 9ballsht, 9ballsht, 9ballsht, coolpool_state, 9ballsht, ROT0, "E-Scape EnterMedia (Bundra license)", "9-Ball Shootout (set 2)", 0 )
diff --git a/src/mame/drivers/coolridr.c b/src/mame/drivers/coolridr.c
index b420c04066a..7e9d216dc67 100644
--- a/src/mame/drivers/coolridr.c
+++ b/src/mame/drivers/coolridr.c
@@ -7,6 +7,8 @@
Driver by David Haywood, Angelo Salese and Tomasz Slanina
special thanks to Guru for references and HW advices
+ Games on this system include Cool Riders and Aqua Stage.
+
This system is interesting in that it makes use of an RLE compression scheme, which
is not something common for Sega hardware, there is a patent for it ( 6,141,122 )
http://www.google.com/patents/US6141122
@@ -18,11 +20,6 @@
- i8237 purpose is unknown (missing ROM for comms?).
- verify zooming etc. our current algorithm is a bit ugly for text
- Also known to exist on this hardware is Aqua Stage (Coin pusher):
- 833-12000 AQUA STAGE
- Program roms EPR-18279 through EPR-18282
- 12 MASK roms (MPR numbers unknown)
- SUB CPU program rom EPR-18278
=======================================================================================================
Cool Riders
@@ -280,6 +277,9 @@ to the same bank as defined through A20.
*/
+// http://www.nicozon.net/watch/sm7834644 (first part is Aqua Stage video?)
+// http://www.system16.com/hardware.php?id=841 has a picture of Aqua Stage showing the wide aspect
+
#include "emu.h"
#include "cpu/sh2/sh2.h"
@@ -287,6 +287,7 @@ to the same bank as defined through A20.
#include "sound/scsp.h"
#include "machine/nvram.h"
#include "rendlay.h"
+#include "aquastge.lh"
#define CLIPMAXX_FULL (496-1)
#define CLIPMAXY_FULL (384-1)
@@ -345,7 +346,7 @@ public:
// store the blit params here
UINT32 m_spriteblit[12];
UINT32 m_vregs_address;
-
+
UINT32 m_clipvals[2][3];
UINT8 m_clipblitterMode[2]; // hack
@@ -2732,7 +2733,7 @@ void coolridr_state::sysh1_dma_transfer( address_space &space, UINT16 dma_index
do{
cmd = (m_framebuffer_vram[(0+dma_index)/4] & 0xfc000000) >> 24;
-
+
switch(cmd)
{
case 0x00: /* end of list marker */
@@ -3026,7 +3027,7 @@ static ADDRESS_MAP_START( coolridr_submap, AS_PROGRAM, 32, coolridr_state )
AM_RANGE(0x05000000, 0x05000fff) AM_RAM
AM_RANGE(0x05200000, 0x052001ff) AM_RAM
AM_RANGE(0x05300000, 0x0530ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/
-// AM_RANGE(0x05fffe00, 0x05ffffff) AM_READWRITE16(sh7032_r,sh7032_w,0xffffffff) // SH-7032H internal i/o
+// AM_RANGE(0x05fffe00, 0x05ffffff) AM_READWRITE16(sh7032_r,sh7032_w,0xffffffff) // SH-7032H internal i/o
AM_RANGE(0x06000000, 0x060001ff) AM_RAM AM_SHARE("nvram") // backup RAM
AM_RANGE(0x06100000, 0x06100003) AM_READ_PORT("IN0") AM_WRITE8(lamps_w,0x000000ff)
AM_RANGE(0x06100004, 0x06100007) AM_READ_PORT("IN1")
@@ -3123,32 +3124,31 @@ GFXDECODE_END
PORT_DIPNAME( 0x00800000, 0x00800000, DEF_STR( Unknown ) ) \
PORT_DIPSETTING( 0x00800000, DEF_STR( Off ) ) \
PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) \
- PORT_BIT( 0xff00ff00, IP_ACTIVE_LOW, IPT_UNUSED ) \
-
+ PORT_BIT( 0xff00ff00, IP_ACTIVE_LOW, IPT_UNUSED )
static INPUT_PORTS_START( aquastge )
DUMMY_INPUT_PORT("IN0")
PORT_START("IN1")
- PORT_DIPNAME( 0x00000001, 0x00000001, "IN1" )
- PORT_DIPSETTING( 0x00000001, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x00000002, 0x00000002, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00000002, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x00000004, 0x00000004, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00000004, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x00000008, 0x00000008, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00000008, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
- PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
- PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
- PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x00000001, 0x00000001, "IN1" )
+ PORT_DIPSETTING( 0x00000001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x00000002, 0x00000002, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00000002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x00000004, 0x00000004, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00000004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x00000008, 0x00000008, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00000008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
+ PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
+ PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
+ PORT_DIPNAME( 0x00000040, 0x00000040, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00000040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x00000080, 0x00000080, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00000080, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00000000, DEF_STR( On ) )
PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("P1 Coin")
PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("P2 Coin")
PORT_SERVICE_NO_TOGGLE( 0x00040000, IP_ACTIVE_LOW )
@@ -3157,8 +3157,8 @@ static INPUT_PORTS_START( aquastge )
PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("P2 Start")
PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("P2 Service Switch")
PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0xff00ff00, IP_ACTIVE_LOW, IPT_UNUSED )
-
+ PORT_BIT( 0xff00ff00, IP_ACTIVE_LOW, IPT_UNUSED )
+
DUMMY_INPUT_PORT("IN2")
DUMMY_INPUT_PORT("IN3")
@@ -3818,6 +3818,10 @@ ROM_START( coolridr )
ROM_FILL( 0x000000, 0x80000, 0 )
ROM_END
+/*
+Aqua Stage (Coin pusher)
+PCB: 833-12000 AQUA STAGE
+*/
ROM_START( aquastge )
ROM_REGION( 0x200000, "maincpu", 0 ) /* SH2 code */
@@ -3906,7 +3910,7 @@ READ32_MEMBER(coolridr_state::aquastge_hack_r)
return 0;
else
{
-// printf("pc %08x\n", pc);
+// printf("pc %08x\n", pc);
}
return m_sysh1_workram_h[0xc3fd8/4];
@@ -3933,7 +3937,7 @@ DRIVER_INIT_MEMBER(coolridr_state, aquastge)
{
m_maincpu->space(AS_PROGRAM).install_read_handler(0x60c3fd8, 0x60c3fdb, read32_delegate(FUNC(coolridr_state::aquastge_hack_r), this));
-
+
m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS);
@@ -3942,6 +3946,5 @@ DRIVER_INIT_MEMBER(coolridr_state, aquastge)
m_colbase = 0;
}
-GAME( 1995, coolridr, 0, coolridr, coolridr, coolridr_state, coolridr, ROT0, "Sega", "Cool Riders",GAME_IMPERFECT_SOUND) // region is set in test mode, this set is for Japan, USA and Export (all regions)
-GAME( 1995, aquastge, 0, aquastge, aquastge, coolridr_state, aquastge, ROT0, "Sega", "Aqua Stage",GAME_NOT_WORKING)
-
+GAME( 1995, coolridr, 0, coolridr, coolridr, coolridr_state, coolridr, ROT0, "Sega", "Cool Riders",MACHINE_IMPERFECT_SOUND) // region is set in test mode, this set is for Japan, USA and Export (all regions)
+GAMEL( 1995, aquastge, 0, aquastge, aquastge, coolridr_state, aquastge, ROT0, "Sega", "Aqua Stage",MACHINE_NOT_WORKING, layout_aquastge)
diff --git a/src/mame/drivers/cop01.c b/src/mame/drivers/cop01.c
index 715d063dbd2..36ccca372bc 100644
--- a/src/mame/drivers/cop01.c
+++ b/src/mame/drivers/cop01.c
@@ -660,6 +660,6 @@ DRIVER_INIT_MEMBER(cop01_state,mightguy)
*
*************************************/
-GAME( 1985, cop01, 0, cop01, cop01, driver_device, 0, ROT0, "Nichibutsu", "Cop 01 (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1985, cop01a, cop01, cop01, cop01, driver_device, 0, ROT0, "Nichibutsu", "Cop 01 (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, mightguy, 0, mightguy, mightguy, cop01_state, mightguy, ROT270, "Nichibutsu", "Mighty Guy", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1985, cop01, 0, cop01, cop01, driver_device, 0, ROT0, "Nichibutsu", "Cop 01 (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, cop01a, cop01, cop01, cop01, driver_device, 0, ROT0, "Nichibutsu", "Cop 01 (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, mightguy, 0, mightguy, mightguy, cop01_state, mightguy, ROT270, "Nichibutsu", "Mighty Guy", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cops.c b/src/mame/drivers/cops.c
index 3894c06afad..eb156f80377 100644
--- a/src/mame/drivers/cops.c
+++ b/src/mame/drivers/cops.c
@@ -925,6 +925,6 @@ ROM_START( revlatns )
ROM_END
-GAMEL( 1994, cops, 0, cops, cops, cops_state, cops, ROT0, "Atari Games", "Cops (USA)", GAME_NOT_WORKING | GAME_NO_SOUND, layout_cops )
-GAMEL( 1994, copsuk, cops,cops, cops, cops_state, cops, ROT0, "Nova Productions / Deith Leisure","Cops (UK)", GAME_NOT_WORKING | GAME_NO_SOUND, layout_cops )
-GAMEL( 1994, revlatns, 0, cops, revlatns, cops_state, cops, ROT0, "Nova Productions", "Revelations", GAME_NOT_WORKING | GAME_NO_SOUND, layout_cops )
+GAMEL( 1994, cops, 0, cops, cops, cops_state, cops, ROT0, "Atari Games", "Cops (USA)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops )
+GAMEL( 1994, copsuk, cops,cops, cops, cops_state, cops, ROT0, "Nova Productions / Deith Leisure","Cops (UK)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops )
+GAMEL( 1994, revlatns, 0, cops, revlatns, cops_state, cops, ROT0, "Nova Productions", "Revelations", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_cops )
diff --git a/src/mame/drivers/copsnrob.c b/src/mame/drivers/copsnrob.c
index 6e0192697f8..d31c1d7d5b9 100644
--- a/src/mame/drivers/copsnrob.c
+++ b/src/mame/drivers/copsnrob.c
@@ -317,4 +317,4 @@ ROM_END
*
*************************************/
-GAMEL( 1976, copsnrob, 0, copsnrob, copsnrob, driver_device, 0, ROT0, "Atari", "Cops'n Robbers", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_copsnrob )
+GAMEL( 1976, copsnrob, 0, copsnrob, copsnrob, driver_device, 0, ROT0, "Atari", "Cops'n Robbers", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_copsnrob )
diff --git a/src/mame/drivers/corona.c b/src/mame/drivers/corona.c
index 8dbedabc4a6..7cb605319d1 100644
--- a/src/mame/drivers/corona.c
+++ b/src/mame/drivers/corona.c
@@ -1677,11 +1677,11 @@ ROM_END
******************************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
-GAME( 1981, winner81, winner82, winner81, winner81, driver_device, 0, ROT0, "Corona Co, LTD.", "Winners Circle (81, 28*28 PCB)", GAME_IMPERFECT_SOUND )
+GAME( 1981, winner81, winner82, winner81, winner81, driver_device, 0, ROT0, "Corona Co, LTD.", "Winners Circle (81, 28*28 PCB)", MACHINE_IMPERFECT_SOUND )
GAME( 1981, winner81b, winner82, winner82, winner82, driver_device, 0, ROT0, "Corona Co, LTD.", "Winners Circle (81, 18*22 PCB)", 0 )
GAME( 1982, winner82, 0, winner82, winner82, driver_device, 0, ROT0, "Corona Co, LTD.", "Winners Circle (82)", 0 )
GAMEL( 1991, re800ea, re800v1, re800, re800, driver_device, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-800 (earlier, no attract)", 0, layout_re800 )
GAMEL( 1991, re800v1, 0, re800, re800, driver_device, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-800 (v1.0)", 0, layout_re800 )
-GAMEL( 1991, re800v3, 0, re800, re800v3, driver_device, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-800 (v3.0)", GAME_IMPERFECT_COLORS, layout_re800 )
+GAMEL( 1991, re800v3, 0, re800, re800v3, driver_device, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RE-800 (v3.0)", MACHINE_IMPERFECT_COLORS, layout_re800 )
GAMEL( 199?, rcirulet, 0, rcirulet, re800, driver_device, 0, ROT90, "Entretenimientos GEMINIS", "Ruleta RCI (6-players, Spanish)", 0, layout_re800 )
GAMEL( 1990, luckyrlt, 0, luckyrlt, luckyrlt, driver_device, 0, ROT90, "<unknown>", "Lucky Roulette Plus (6-players, Spanish)", 0, layout_luckyrlt )
diff --git a/src/mess/drivers/cortex.c b/src/mame/drivers/cortex.c
index e1f29636182..e208d5c1899 100644
--- a/src/mess/drivers/cortex.c
+++ b/src/mame/drivers/cortex.c
@@ -104,4 +104,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, cortex, 0, 0, cortex, cortex, driver_device, 0, "Powertran Cybernetics", "Cortex", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1982, cortex, 0, 0, cortex, cortex, driver_device, 0, "Powertran Cybernetics", "Cortex", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/cosmic.c b/src/mame/drivers/cosmic.c
index 6370e33fe02..5468258b1a6 100644
--- a/src/mame/drivers/cosmic.c
+++ b/src/mame/drivers/cosmic.c
@@ -1571,19 +1571,19 @@ DRIVER_INIT_MEMBER(cosmic_state,panic)
}
-GAME( 1979, cosmicg, 0, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "Universal", "Cosmic Guerilla", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL /*| GAME_SUPPORTS_SAVE */)
-GAME( 1979, cosmicgi, cosmicg, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "bootleg (Inder)", "Cosmic Guerilla (Spanish bootleg)", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL /*| GAME_SUPPORTS_SAVE */)
-GAME( 1979, cosmica, 0, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (version II)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, cosmica1, cosmica, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (first version)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, cosmica2, cosmica, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (early version II?)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, nomnlnd, 0, nomnlnd, nomnlnd, cosmic_state, nomnlnd, ROT270, "Universal", "No Man's Land", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, nomnlndg, nomnlnd, nomnlnd, nomnlndg, cosmic_state, nomnlnd, ROT270, "Universal (Gottlieb license)", "No Man's Land (Gottlieb)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, magspot, 0, magspot, magspot, driver_device, 0, ROT270, "Universal", "Magical Spot", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, magspot2, 0, magspot, magspot, driver_device, 0, ROT270, "Universal", "Magical Spot II", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, panic, 0, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (version E)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, panic2, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, panic3, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (set 3)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, panich, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (harder)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, panicger, panic, panic, panic, cosmic_state, panic, ROT270, "Universal (ADP Automaten license)", "Space Panic (German)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, devzone, 0, devzone, devzone, cosmic_state, devzone, ROT270, "Universal", "Devil Zone", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, devzone2, devzone, devzone, devzone2, cosmic_state, devzone, ROT270, "Universal", "Devil Zone (easier)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1979, cosmicg, 0, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "Universal", "Cosmic Guerilla", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL /*| MACHINE_SUPPORTS_SAVE */)
+GAME( 1979, cosmicgi, cosmicg, cosmicg, cosmicg, cosmic_state, cosmicg, ROT270, "bootleg (Inder)", "Cosmic Guerilla (Spanish bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL /*| MACHINE_SUPPORTS_SAVE */)
+GAME( 1979, cosmica, 0, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (version II)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, cosmica1, cosmica, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (first version)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, cosmica2, cosmica, cosmica, cosmica, cosmic_state, cosmica, ROT270, "Universal", "Cosmic Alien (early version II?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, nomnlnd, 0, nomnlnd, nomnlnd, cosmic_state, nomnlnd, ROT270, "Universal", "No Man's Land", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, nomnlndg, nomnlnd, nomnlnd, nomnlndg, cosmic_state, nomnlnd, ROT270, "Universal (Gottlieb license)", "No Man's Land (Gottlieb)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, magspot, 0, magspot, magspot, driver_device, 0, ROT270, "Universal", "Magical Spot", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, magspot2, 0, magspot, magspot, driver_device, 0, ROT270, "Universal", "Magical Spot II", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, panic, 0, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (version E)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, panic2, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, panic3, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, panich, panic, panic, panic, cosmic_state, panic, ROT270, "Universal", "Space Panic (harder)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, panicger, panic, panic, panic, cosmic_state, panic, ROT270, "Universal (ADP Automaten license)", "Space Panic (German)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, devzone, 0, devzone, devzone, cosmic_state, devzone, ROT270, "Universal", "Devil Zone", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, devzone2, devzone, devzone, devzone2, cosmic_state, devzone, ROT270, "Universal", "Devil Zone (easier)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/cosmicos.c b/src/mame/drivers/cosmicos.c
index 5147b4b7243..8ec2903c821 100644
--- a/src/mess/drivers/cosmicos.c
+++ b/src/mame/drivers/cosmicos.c
@@ -560,4 +560,4 @@ ROM_END
/* System Drivers */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1979, cosmicos, 0, 0, cosmicos, cosmicos, driver_device, 0, "Radio Bulletin", "Cosmicos", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
+COMP( 1979, cosmicos, 0, 0, cosmicos, cosmicos, driver_device, 0, "Radio Bulletin", "Cosmicos", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mess/drivers/cp1.c b/src/mame/drivers/cp1.c
index 8450868cd1b..298e913ee3f 100644
--- a/src/mess/drivers/cp1.c
+++ b/src/mame/drivers/cp1.c
@@ -331,4 +331,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1980, cp1, 0, 0, cp1, cp1, driver_device, 0, "Kosmos", "CP1 / Computer Praxis", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1980, cp1, 0, 0, cp1, cp1, driver_device, 0, "Kosmos", "CP1 / Computer Praxis", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c
index bdb22c80e1b..999919c7bc0 100644
--- a/src/mame/drivers/cps1.c
+++ b/src/mame/drivers/cps1.c
@@ -3053,7 +3053,7 @@ static INPUT_PORTS_START( sfzch )
PORT_DIPSETTING( 0xff, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_START("IN1") /* Player 1 */
+ PORT_START("IN1") /* Player 1 & 2 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(1) PORT_8WAY
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(1) PORT_8WAY
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(1) PORT_8WAY
@@ -3062,16 +3062,17 @@ static INPUT_PORTS_START( sfzch )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1)
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(1)
-
- PORT_START("IN2") /* Player 2 */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(2) PORT_8WAY
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(2)
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(2) PORT_8WAY
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(2)
+
+ PORT_START("IN2") /* Read by wofch */
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN3") /* Player 4 - not used */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
@@ -4689,11 +4690,11 @@ ROM_END
/* B-Board 89624B-3 */
ROM_START( ffightua )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "ffu_36.11f", 0x00000, 0x20000, CRC(e2a48af9) SHA1(11e06f95bdf575af396dded2b84d858f6c7388f1) ) // in "30" socket
- ROM_LOAD16_BYTE( "ffu_42.11h", 0x00001, 0x20000, CRC(f4bb480e) SHA1(32114df1d2f4f98a4a2280a330c7b6af8ab4d862) ) // in "35" socket
- ROM_LOAD16_BYTE( "ffu_37.12f", 0x40000, 0x20000, CRC(c371c667) SHA1(633977c91a8ff09b7fe83128eced7c4dee9aee1d) ) // in "31" socket
- ROM_LOAD16_BYTE( "ffu_43.12h", 0x40001, 0x20000, CRC(2f5771f9) SHA1(fb532402bc00b5619a23dfa7e4525f1717020303) ) // in "36" socket /* different CRC from ffightu, ffightu1, pcb verified */
- ROM_LOAD16_WORD_SWAP( "ff-32m.8h", 0x80000, 0x80000, CRC(c747696e) SHA1(d3362dadded31ccb7eaf71ef282d698d18edd722) )
+ ROM_LOAD16_BYTE( "ffu_36.11f", 0x00000, 0x20000, CRC(e2a48af9) SHA1(11e06f95bdf575af396dded2b84d858f6c7388f1) ) // in "30" socket
+ ROM_LOAD16_BYTE( "ffu_42.11h", 0x00001, 0x20000, CRC(f4bb480e) SHA1(32114df1d2f4f98a4a2280a330c7b6af8ab4d862) ) // in "35" socket
+ ROM_LOAD16_BYTE( "ffu_37.12f", 0x40000, 0x20000, CRC(c371c667) SHA1(633977c91a8ff09b7fe83128eced7c4dee9aee1d) ) // in "31" socket
+ ROM_LOAD16_BYTE( "ffu_43.12h", 0x40001, 0x20000, CRC(2f5771f9) SHA1(fb532402bc00b5619a23dfa7e4525f1717020303) ) // in "36" socket /* different CRC from ffightu, ffightu1, pcb verified */
+ ROM_LOAD16_WORD_SWAP( "ff-32m.8h", 0x80000, 0x80000, CRC(c747696e) SHA1(d3362dadded31ccb7eaf71ef282d698d18edd722) )
ROM_REGION( 0x200000, "gfx", 0 )
ROMX_LOAD( "ff-5m.7a", 0x000000, 0x80000, CRC(9c284108) SHA1(7868f5801347340867720255f8380548ad1a65a7) , ROM_GROUPWORD | ROM_SKIP(6) )
@@ -4724,6 +4725,41 @@ ROM_END
/* B-Board 89624B-3 */
ROM_START( ffightub )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "ffu_30_3.11f", 0x00000, 0x20000, CRC(e619eb30) SHA1(41c2589a1b2cab2d0ded527a89f8e0e39e61efe1))
+ ROM_LOAD16_BYTE( "ffu_35_3.11h", 0x00001, 0x20000, CRC(bca85263) SHA1(249bc81426ee93cf2efa5594d6813d5dd896cea3) )
+ ROM_LOAD16_BYTE( "ffu_31_3.12f", 0x40000, 0x20000, CRC(59abd207) SHA1(9bc1f4d5dabd02cebce84f56f848694591c0629d) )
+ ROM_LOAD16_BYTE( "ffu_36_3.12h", 0x40001, 0x20000, CRC(df46ece8) SHA1(aa3081918d499f56664d6bb7b7ede2055d00375d) )
+ ROM_LOAD16_WORD_SWAP( "ff-32m.8h", 0x80000, 0x80000, CRC(c747696e) SHA1(d3362dadded31ccb7eaf71ef282d698d18edd722) )
+
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "ff-5m.7a", 0x000000, 0x80000, CRC(9c284108) SHA1(7868f5801347340867720255f8380548ad1a65a7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-7m.9a", 0x000002, 0x80000, CRC(a7584dfb) SHA1(f7b00a3ca8cb85264ab293089f9f540a8292b49c) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-1m.3a", 0x000004, 0x80000, CRC(0b605e44) SHA1(5ce16af72858a57aefbf6efed820c2c51935882a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "ff-3m.5a", 0x000006, 0x80000, CRC(52291cd2) SHA1(df5f3d3aa96a7a33ff22f2a31382942c4c4f1111) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( 0x18000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "ff_09.12b", 0x00000, 0x08000, CRC(b8367eb5) SHA1(ec3db29fdd6200e9a8f4f8073a7e34aef731354f) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "ff_18.11c", 0x00000, 0x20000, CRC(375c66e7) SHA1(36189e23209ce4ae5d9cbabd1574540d0591e7b3) )
+ ROM_LOAD( "ff_19.12c", 0x20000, 0x20000, CRC(1ef137f9) SHA1(974b5e72aa28b87ebfa7438efbdfeda769dedf5e) )
+
+ ROM_REGION( 0x0200, "aboardplds", 0 )
+ ROM_LOAD( "buf1", 0x0000, 0x0117, CRC(eb122de7) SHA1(b26b5bfe258e3e184f069719f9fd008d6b8f6b9b) )
+ ROM_LOAD( "ioa1", 0x0000, 0x0117, CRC(59c7ee3b) SHA1(fbb887c5b4f5cb8df77cec710eaac2985bc482a6) )
+ ROM_LOAD( "prg1", 0x0000, 0x0117, CRC(f1129744) SHA1(a5300f301c1a08a7da768f0773fa0fe3f683b237) )
+ ROM_LOAD( "rom1", 0x0000, 0x0117, CRC(41dc73b9) SHA1(7d4c9f1693c821fbf84e32dd6ef62ddf14967845) )
+ ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
+
+ ROM_REGION( 0x0200, "bboardplds", 0 )
+ ROM_LOAD( "s224b.1a", 0x0000, 0x0117, CRC(cdc4413e) SHA1(c74c60f8f4eb125ffb6414aefba270676d9b8a2d) )
+ ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
+ROM_END
+
+/* B-Board 89624B-3 */
+ROM_START( ffightuc )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "ffu_30.11f", 0x00000, 0x20000, CRC(ed988977) SHA1(c718e989206bd2b68832c8fcb5667397d500ebac) )
ROM_LOAD16_BYTE( "ffu_35.11h", 0x00001, 0x20000, CRC(07bf1c21) SHA1(f21a939fd92607c7f54816dedbcb3c5818cf4183) )
ROM_LOAD16_BYTE( "ffu_31.12f", 0x40000, 0x20000, CRC(dba5a476) SHA1(2f0176dd050f9630b914f1c1ca5d96215bcf567f) )
@@ -9543,7 +9579,7 @@ ROM_START( varthu )
ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
ROM_REGION( 0x0200, "bboardplds", 0 )
- ROM_LOAD( "va63b.1a", 0x0000, 0x0117, BAD_DUMP CRC(38540e86) SHA1(86e0aba363108f80a8eff84b99d11528ad6db099) ) /* Handcrafted but works on actual US PCB. Redump needed */
+ ROM_LOAD( "va63b.1a", 0x0000, 0x0117, CRC(132ab7c5) SHA1(54b78b02cdd9430c90e2289d42585ee71cf71cdc) )
ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
ROM_END
@@ -9629,7 +9665,7 @@ ROM_START( varthjr )
ROM_LOAD( "sou1", 0x0000, 0x0117, CRC(84f4b2fe) SHA1(dcc9e86cc36316fe42eace02d6df75d08bc8bb6d) )
ROM_REGION( 0x0200, "bboardplds", 0 )
- ROM_LOAD( "va63b.1a", 0x0000, 0x0117, BAD_DUMP CRC(38540e86) SHA1(86e0aba363108f80a8eff84b99d11528ad6db099) ) /* Handcrafted but works on actual US PCB. Redump needed */
+ ROM_LOAD( "va63b.1a", 0x0000, 0x0117, CRC(132ab7c5) SHA1(54b78b02cdd9430c90e2289d42585ee71cf71cdc) )
ROM_LOAD( "iob1.12d", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) )
ROM_LOAD( "bprg1.11d", 0x0000, 0x0117, CRC(31793da7) SHA1(400fa7ac517421c978c1ee7773c30b9ed0c5d3f3) )
@@ -11712,195 +11748,196 @@ WRITE16_MEMBER( cps_state::sf2m3_layer_w )
/*************************************************** Game Macros *****************************************************/
-GAME( 1988, forgottn, 0, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (World)", GAME_SUPPORTS_SAVE ) // (c) Capcom U.S.A. but World "warning"
-GAME( 1988, forgottnu, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88621B-2, Rev. C)", GAME_SUPPORTS_SAVE )
-GAME( 1988, forgottnu1, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. C)", GAME_SUPPORTS_SAVE )
-GAME( 1988, forgottnua, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. A)", GAME_SUPPORTS_SAVE )
-GAME( 1988, forgottnuaa, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. AA)", GAME_SUPPORTS_SAVE )
-GAME( 1988, lostwrld, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Lost Worlds (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, lostwrldo, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Lost Worlds (Japan Old Ver.)", GAME_SUPPORTS_SAVE )
-GAME( 1988, ghouls, 0, cps1_10MHz, ghouls, cps_state, cps1, ROT0, "Capcom", "Ghouls'n Ghosts (World)", GAME_SUPPORTS_SAVE ) // "EXPORT" // Wed.26.10.1988 in the ROMs
-GAME( 1988, ghoulsu, ghouls, cps1_10MHz, ghoulsu, cps_state, cps1, ROT0, "Capcom", "Ghouls'n Ghosts (USA)", GAME_SUPPORTS_SAVE ) // "EXPORT" // Wed.26.10.1988 in the ROMs
-GAME( 1988, daimakai, ghouls, cps1_10MHz, daimakai, cps_state, cps1, ROT0, "Capcom", "Daimakaimura (Japan)", GAME_SUPPORTS_SAVE ) // Wed.26.10.1988 in the ROMs
-GAME( 1988, daimakair, ghouls, cps1_12MHz, daimakai, cps_state, cps1, ROT0, "Capcom", "Daimakaimura (Japan Resale Ver.)", GAME_SUPPORTS_SAVE ) // Wed.26.10.1988 in the ROMs // 12MHz verified
-GAME( 1989, strider, 0, cps1_10MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider (USA, B-Board 89624B-2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, striderua, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Capcom", "Strider (USA, B-Board 89624B-3)", GAME_SUPPORTS_SAVE )
-GAME( 1989, striderj, strider, cps1_10MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider Hiryu (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, striderjr, strider, cps1_12MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider Hiryu (Japan Resale Ver.)", GAME_SUPPORTS_SAVE ) // 12MHz verified
-GAME( 1989, dynwar, 0, cps1_10MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Dynasty Wars (USA, B-Board 89624B-?)", GAME_SUPPORTS_SAVE ) // (c) Capcom U.S.A.
-GAME( 1989, dynwara, dynwar, cps1_10MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Dynasty Wars (USA, B-Board 88622B-3)", GAME_SUPPORTS_SAVE ) // (c) Capcom U.S.A.
-GAME( 1989, dynwarj, dynwar, cps1_10MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Tenchi wo Kurau (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, dynwarjr, dynwar, cps1_12MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Tenchi wo Kurau (Japan Resale Ver.)", GAME_SUPPORTS_SAVE ) // 12MHz verified
-GAME( 1989, willow, 0, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (World)", GAME_SUPPORTS_SAVE ) // No "Warning" (c) Capcom U.S.A., genuine export ROM labels
-GAME( 1989, willowu, willow, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (USA)", GAME_SUPPORTS_SAVE )
-GAME( 1989, willowuo, willow, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (USA Old Ver.)", GAME_SUPPORTS_SAVE ) // Japan "warning" but (c) Capcom U.S.A.
-GAME( 1989, willowj, willow, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, unsquad, 0, cps1_10MHz, unsquad, cps_state, cps1, ROT0, "Capcom / Daipro", "U.N. Squadron (USA)", GAME_SUPPORTS_SAVE )
-GAME( 1989, area88, unsquad, cps1_10MHz, unsquad, cps_state, cps1, ROT0, "Capcom / Daipro", "Area 88 (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, area88r, unsquad, cps1_12MHz, unsquad, cps_state, cps1, ROT0, "Capcom / Daipro", "Area 88 (Japan Resale Ver.)", GAME_SUPPORTS_SAVE ) // 12MHz verified
-GAME( 1989, ffight, 0, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (World, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffighta, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (World, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffightu, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffightu1, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffightua, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA 900112)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffightub, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA 900613)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffightj, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffightj1, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan 900112)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffightj2, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan 900305)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffightj3, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan 900613)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffightjh, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "bootleg", "Street Smart / Final Fight (Japan, hack)", GAME_SUPPORTS_SAVE )
-GAME( 1990, 1941, 0, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (World 900227)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1990, 1941r1, 1941, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (World)", GAME_SUPPORTS_SAVE )
-GAME( 1990, 1941u, 1941, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (USA 900227)", GAME_SUPPORTS_SAVE )
-GAME( 1990, 1941j, 1941, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1990, mercs, 0, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Mercs (World 900302)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1990, mercsu, mercs, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Mercs (USA 900608)", GAME_SUPPORTS_SAVE )
-GAME( 1990, mercsur1, mercs, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Mercs (USA 900302)", GAME_SUPPORTS_SAVE )
-GAME( 1990, mercsj, mercs, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Senjou no Ookami II (Japan 900302)", GAME_SUPPORTS_SAVE )
-GAME( 1990, mtwins, 0, cps1_10MHz, mtwins, cps_state, cps1, ROT0, "Capcom", "Mega Twins (World 900619)", GAME_SUPPORTS_SAVE ) // "ETC" - (c) Capcom U.S.A. but World "warning"
-GAME( 1990, chikij, mtwins, cps1_10MHz, mtwins, cps_state, cps1, ROT0, "Capcom", "Chiki Chiki Boys (Japan 900619)", GAME_SUPPORTS_SAVE )
-GAME( 1990, msword, 0, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (World 900725)", GAME_SUPPORTS_SAVE ) // 25.07.1990 "OTHER COUNTRY"
-GAME( 1990, mswordr1, msword, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (World 900623)", GAME_SUPPORTS_SAVE ) // 23.06.1990 "OTHER COUNTRY"
-GAME( 1990, mswordu, msword, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (USA 900725)", GAME_SUPPORTS_SAVE ) // 25.07.1990 "U.S.A."
-GAME( 1990, mswordj, msword, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (Japan 900623)", GAME_SUPPORTS_SAVE ) // 23.06.1990 "JAPAN"
-GAME( 1990, cawing, 0, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "Carrier Air Wing (World 901012)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1990, cawingr1, cawing, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "Carrier Air Wing (World 901009)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1990, cawingu, cawing, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "Carrier Air Wing (USA 901012)", GAME_SUPPORTS_SAVE )
-GAME( 1990, cawingj, cawing, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "U.S. Navy (Japan 901012)", GAME_SUPPORTS_SAVE )
-GAME( 1990, nemo, 0, cps1_10MHz, nemo, cps_state, cps1, ROT0, "Capcom", "Nemo (World 901130)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1990, nemor1, nemo, cps1_10MHz, nemo, cps_state, cps1, ROT0, "Capcom", "Nemo (World 901109)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1990, nemoj, nemo, cps1_10MHz, nemo, cps_state, cps1, ROT0, "Capcom", "Nemo (Japan 901120)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2, 0, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910522)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1991, sf2eb, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910214)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1991, sf2ed, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910318)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1991, sf2ee, sf2, cps1_10MHz, sf2, cps_state, sf2ee, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910228)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1991, sf2ua, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910206)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2ub, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910214)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2uc, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910306)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2ud, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910318)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2ue, sf2, cps1_10MHz, sf2, cps_state, sf2ee, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910228)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2uf, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910411)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2ug, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910522, Rev. G)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2ui, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910522, Rev. I)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2uk, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 911101)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2j, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 911210)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2ja, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910214)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2jc, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910306)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2jf, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910411)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2jh, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910522)", GAME_SUPPORTS_SAVE )
-GAME( 1991, sf2jl, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 920312)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sf2ebbl, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 1)", GAME_SUPPORTS_SAVE ) // 910214 - based on World version
-GAME( 1992, sf2ebbl2, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 3)", GAME_SUPPORTS_SAVE ) // 910214 - based on World version
-GAME( 1992, sf2ebbl3, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 4)", GAME_SUPPORTS_SAVE ) // 910214 - based on World version
-GAME( 1992, sf2stt, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 2)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 910214 - based on World version
-GAME( 1992, sf2rk, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (RK, bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 920211 (pcb)
-GAME( 1991, sf2qp1, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II: The World Warrior (Quicken Pt-I, bootleg)", GAME_SUPPORTS_SAVE ) // 910214 - based on World version
-GAME( 1991, sf2thndr, sf2, cps1_10MHz, sf2, cps_state, sf2thndr, ROT0, "bootleg", "Street Fighter II: The World Warrior (Thunder Edition, bootleg)", GAME_SUPPORTS_SAVE ) // 910214 - based on World version
-GAME( 1991, 3wonders, 0, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (World 910520)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1991, 3wondersr1, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (World 910513)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1991, 3wondersu, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (USA 910520)", GAME_SUPPORTS_SAVE )
-GAME( 1991, wonder3, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Wonder 3 (Japan 910520)", GAME_SUPPORTS_SAVE )
-GAME( 1991, 3wondersb, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "bootleg", "Three Wonders (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 910520 - based on World version
-GAME( 1991, 3wondersh, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "bootleg", "Three Wonders (hack)", GAME_SUPPORTS_SAVE ) // 910520 - based on World version
-GAME( 1991, kod, 0, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (World 910805)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1991, kodr1, kod, cps1_10MHz, kodr1, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (World 910711)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1991, kodu, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (USA 910910)", GAME_SUPPORTS_SAVE )
-GAME( 1991, kodj, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (Japan 910805, B-Board 90629B-3)", GAME_SUPPORTS_SAVE )
-GAME( 1991, kodja, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (Japan 910805, B-Board 89625B-1)", GAME_SUPPORTS_SAVE )
-GAME( 1991, captcomm, 0, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (World 911202)", GAME_SUPPORTS_SAVE ) // "OTHER COUNTRY"
-GAME( 1991, captcommr1, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (World 911014)", GAME_SUPPORTS_SAVE ) // "OTHER COUNTRY"
-GAME( 1991, captcommu, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (USA 910928)", GAME_SUPPORTS_SAVE )
-GAME( 1991, captcommj, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (Japan 911202)", GAME_SUPPORTS_SAVE )
-GAME( 1991, captcommjr1, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (Japan 910928)", GAME_SUPPORTS_SAVE )
-GAME( 1991, captcommb, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "bootleg", "Captain Commando (bootleg)", GAME_SUPPORTS_SAVE ) // 911014 - based on World version
-GAME( 1991, knights, 0, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (World 911127)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1991, knightsu, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (USA 911127)", GAME_SUPPORTS_SAVE )
-GAME( 1991, knightsj, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (Japan 911127, B-Board 91634B-2)", GAME_SUPPORTS_SAVE )
-GAME( 1991, knightsja, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (Japan 911127, B-Board 89625B-1)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sf2ce, 0, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (World 920513)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1992, sf2ceea, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (World 920313)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1992, sf2ceua, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920313)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sf2ceub, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920513)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sf2ceuc, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920803)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sf2ceja, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (Japan 920322)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sf2cejb, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (Japan 920513)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sf2cejc, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (Japan 920803)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sf2bhh, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Hung Hsi, bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sf2rb, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 1)", GAME_SUPPORTS_SAVE ) // 920322 - based on World version
-GAME( 1992, sf2rb2, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb2, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 2)", GAME_SUPPORTS_SAVE ) // 920322 - based on World version
-GAME( 1992, sf2rb3, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 3)", GAME_SUPPORTS_SAVE ) // 920322 - based on World version
-GAME( 1992, sf2red, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Red Wave, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2v004, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (V004, bootleg)", GAME_SUPPORTS_SAVE ) // 102092 !!! - based on (heavily modified) World version
-GAME( 1992, sf2acc, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Accelerator!, bootleg, set 1)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2acca, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Accelerator!, bootleg, set 2)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2accp2, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Accelerator Pt.II, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2amf, sf2ce, cps1_12MHz, sf2amf, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Alpha Magic-F, bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2amf2, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (L735 Test Rom, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2dkot2, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Double K.O. Turbo II, bootleg)", GAME_SUPPORTS_SAVE ) // 902140 !!! - based on USA version
-GAME( 1992, sf2ceblp, sf2ce, cps1_10MHz, sf2, cps_state, sf2ceblp, ROT0, "bootleg", "Street Fighter II': Champion Edition (protected bootleg on non-dash board)", GAME_SUPPORTS_SAVE ) // 920313 - based on USA version
-GAME( 1992, sf2m2, sf2ce, cps1_12MHz, sf2m2, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M2, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2m3, sf2ce, sf2m3, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M3, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on USA version
-GAME( 1992, sf2m4, sf2ce, cps1_12MHz, sf2m4, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M4, bootleg)", GAME_SUPPORTS_SAVE ) // 920322 - based on Japan version
-GAME( 1992, sf2m5, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M5, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2m6, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M6, bootleg)", GAME_SUPPORTS_SAVE ) // 811102 !!! - based on World version
-GAME( 1992, sf2m7, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M7, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2m8, sf2ce, sf2m3, sf2, cps_state, sf2m8, ROT0, "bootleg", "Street Fighter II': Champion Edition (M8, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on USA version
-GAME( 1992, sf2yyc, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (YYC, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2koryu, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg)", GAME_SUPPORTS_SAVE ) // 811102 !!! - based on World version
-GAME( 1992, sf2dongb, sf2ce, cps1_12MHz, sf2, cps_state, sf2dongb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Dongfang Bubai protection, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, cworld2j, 0, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611)", GAME_SUPPORTS_SAVE )
-GAME( 1992, cworld2ja, cworld2j, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611, B-Board 90629B-3, no battery)", GAME_SUPPORTS_SAVE )
-GAME( 1992, cworld2jb, cworld2j, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611, B-Board 91634B-2)", GAME_SUPPORTS_SAVE )
-GAME( 1992, varth, 0, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (World 920714)", GAME_SUPPORTS_SAVE ) // "ETC" // 12MHz verified
-GAME( 1992, varthr1, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (World 920612)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1992, varthu, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom (Romstar license)", "Varth: Operation Thunderstorm (USA 920612)", GAME_SUPPORTS_SAVE )
-GAME( 1992, varthj, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (Japan 920714)", GAME_SUPPORTS_SAVE )
-GAME( 1992, varthjr, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (Japan Resale Ver. 920714)", GAME_SUPPORTS_SAVE )
-GAME( 1992, qad, 0, cps1_12MHz, qad, cps_state, cps1, ROT0, "Capcom", "Quiz & Dragons: Capcom Quiz Game (USA 920701)", GAME_SUPPORTS_SAVE ) // 12MHz verified
-GAME( 1994, qadjr, qad, cps1_12MHz, qadjr, cps_state, cps1, ROT0, "Capcom", "Quiz & Dragons: Capcom Quiz Game (Japan Resale Ver. 940921)", GAME_SUPPORTS_SAVE )
-GAME( 1992, wof, 0, qsound, wof, cps_state, wof, ROT0, "Capcom", "Warriors of Fate (World 921031)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1992, wofr1, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Warriors of Fate (World 921002)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1992, wofu, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Warriors of Fate (USA 921031)", GAME_SUPPORTS_SAVE ) // World "warning"
-GAME( 1992, wofa, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Sangokushi II (Asia 921005)", GAME_SUPPORTS_SAVE ) // World "warning"
-GAME( 1992, wofj, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Tenchi wo Kurau II: Sekiheki no Tatakai (Japan 921031)", GAME_SUPPORTS_SAVE )
-GAME( 1999, wofhfh, wof, wofhfh, wofhfh, cps_state, cps1, ROT0, "bootleg", "Huo Feng Huang (Chinese bootleg of Sangokushi II)", GAME_SUPPORTS_SAVE ) // 921005 - based on Asia version
-GAME( 1992, sf2hf, 0, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Hyper Fighting (World 921209)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1992, sf2hfu, sf2hf, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Hyper Fighting (USA 921209)", GAME_SUPPORTS_SAVE )
-GAME( 1992, sf2hfj, sf2hf, cps1_12MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II' Turbo: Hyper Fighting (Japan 921209)", GAME_SUPPORTS_SAVE )
-GAME( 1993, dino, 0, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (World 930201)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1993, dinou, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (USA 930201)", GAME_SUPPORTS_SAVE )
-GAME( 1993, dinoj, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs: Kyouryuu Shin Seiki (Japan 930201)", GAME_SUPPORTS_SAVE )
-GAME( 1993, dinohunt, dino, wofhfh, dinoh, cps_state, dinohunt, ROT0, "bootleg", "Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 930223 - based on Asia TW version, the original is still undumped
-GAME( 1993, punisher, 0, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (World 930422)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1993, punisheru, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (USA 930422)", GAME_SUPPORTS_SAVE )
-GAME( 1993, punisherh, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (Hispanic 930422)", GAME_SUPPORTS_SAVE )
-GAME( 1993, punisherj, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (Japan 930422)", GAME_SUPPORTS_SAVE )
-GAME( 1993, punisherbz, punisher, wofhfh, punisherbz, cps_state, cps1, ROT0, "bootleg", "Biaofeng Zhanjing (Chinese bootleg of The Punisher)", GAME_SUPPORTS_SAVE ) // (c) 2002, they ripped the sound from Final Fight!
-GAME( 1993, slammast, 0, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Saturday Night Slam Masters (World 930713)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1993, slammastu, slammast, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Saturday Night Slam Masters (USA 930713)", GAME_SUPPORTS_SAVE )
-GAME( 1993, mbomberj, slammast, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Muscle Bomber: The Body Explosion (Japan 930713)", GAME_SUPPORTS_SAVE )
-GAME( 1993, mbombrd, 0, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Muscle Bomber Duo: Ultimate Team Battle (World 931206)", GAME_SUPPORTS_SAVE ) // "ETC"
-GAME( 1993, mbombrdj, mbombrd, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Muscle Bomber Duo: Heat Up Warriors (Japan 931206)", GAME_SUPPORTS_SAVE )
-GAME( 1994, pnickj, 0, cps1_12MHz, pnickj, cps_state, cps1, ROT0, "Compile (Capcom license)", "Pnickies (Japan 940608)", GAME_SUPPORTS_SAVE )
-GAME( 1995, qtono2j, 0, cps1_12MHz, qtono2j, cps_state, cps1, ROT0, "Capcom", "Quiz Tonosama no Yabou 2: Zenkoku-ban (Japan 950123)", GAME_SUPPORTS_SAVE )
-GAME( 1995, megaman, 0, cps1_12MHz, megaman, cps_state, cps1, ROT0, "Capcom", "Mega Man: The Power Battle (CPS1, USA 951006)", GAME_SUPPORTS_SAVE )
-GAME( 1995, megamana, megaman, cps1_12MHz, megaman, cps_state, cps1, ROT0, "Capcom", "Mega Man: The Power Battle (CPS1, Asia 951006)", GAME_SUPPORTS_SAVE )
-GAME( 1995, rockmanj, megaman, cps1_12MHz, rockmanj, cps_state, cps1, ROT0, "Capcom", "Rockman: The Power Battle (CPS1, Japan 950922)", GAME_SUPPORTS_SAVE )
-GAME( 2000, ganbare, 0, ganbare, ganbare, cps_state, ganbare, ROT0, "Capcom", "Ganbare! Marine Kun (Japan 2K0411)", GAME_SUPPORTS_SAVE )
+GAME( 1988, forgottn, 0, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (World)", MACHINE_SUPPORTS_SAVE ) // (c) Capcom U.S.A. but World "warning"
+GAME( 1988, forgottnu, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88621B-2, Rev. C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, forgottnu1, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, forgottnua, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. A)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, forgottnuaa, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. AA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, lostwrld, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Lost Worlds (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, lostwrldo, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Lost Worlds (Japan Old Ver.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ghouls, 0, cps1_10MHz, ghouls, cps_state, cps1, ROT0, "Capcom", "Ghouls'n Ghosts (World)", MACHINE_SUPPORTS_SAVE ) // "EXPORT" // Wed.26.10.1988 in the ROMs
+GAME( 1988, ghoulsu, ghouls, cps1_10MHz, ghoulsu, cps_state, cps1, ROT0, "Capcom", "Ghouls'n Ghosts (USA)", MACHINE_SUPPORTS_SAVE ) // "EXPORT" // Wed.26.10.1988 in the ROMs
+GAME( 1988, daimakai, ghouls, cps1_10MHz, daimakai, cps_state, cps1, ROT0, "Capcom", "Daimakaimura (Japan)", MACHINE_SUPPORTS_SAVE ) // Wed.26.10.1988 in the ROMs
+GAME( 1988, daimakair, ghouls, cps1_12MHz, daimakai, cps_state, cps1, ROT0, "Capcom", "Daimakaimura (Japan Resale Ver.)", MACHINE_SUPPORTS_SAVE ) // Wed.26.10.1988 in the ROMs // 12MHz verified
+GAME( 1989, strider, 0, cps1_10MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider (USA, B-Board 89624B-2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, striderua, strider, cps1_10MHz, stridrua, cps_state, cps1, ROT0, "Capcom", "Strider (USA, B-Board 89624B-3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, striderj, strider, cps1_10MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider Hiryu (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, striderjr, strider, cps1_12MHz, strider, cps_state, cps1, ROT0, "Capcom", "Strider Hiryu (Japan Resale Ver.)", MACHINE_SUPPORTS_SAVE ) // 12MHz verified
+GAME( 1989, dynwar, 0, cps1_10MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Dynasty Wars (USA, B-Board 89624B-?)", MACHINE_SUPPORTS_SAVE ) // (c) Capcom U.S.A.
+GAME( 1989, dynwara, dynwar, cps1_10MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Dynasty Wars (USA, B-Board 88622B-3)", MACHINE_SUPPORTS_SAVE ) // (c) Capcom U.S.A.
+GAME( 1989, dynwarj, dynwar, cps1_10MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Tenchi wo Kurau (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, dynwarjr, dynwar, cps1_12MHz, dynwar, cps_state, cps1, ROT0, "Capcom", "Tenchi wo Kurau (Japan Resale Ver.)", MACHINE_SUPPORTS_SAVE ) // 12MHz verified
+GAME( 1989, willow, 0, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (World)", MACHINE_SUPPORTS_SAVE ) // No "Warning" (c) Capcom U.S.A., genuine export ROM labels
+GAME( 1989, willowu, willow, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (USA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, willowuo, willow, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (USA Old Ver.)", MACHINE_SUPPORTS_SAVE ) // Japan "warning" but (c) Capcom U.S.A.
+GAME( 1989, willowj, willow, cps1_10MHz, willow, cps_state, cps1, ROT0, "Capcom", "Willow (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, unsquad, 0, cps1_10MHz, unsquad, cps_state, cps1, ROT0, "Capcom / Daipro", "U.N. Squadron (USA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, area88, unsquad, cps1_10MHz, unsquad, cps_state, cps1, ROT0, "Capcom / Daipro", "Area 88 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, area88r, unsquad, cps1_12MHz, unsquad, cps_state, cps1, ROT0, "Capcom / Daipro", "Area 88 (Japan Resale Ver.)", MACHINE_SUPPORTS_SAVE ) // 12MHz verified
+GAME( 1989, ffight, 0, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (World, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffighta, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (World, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightu, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightu1, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightua, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA 900112)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightub, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA 900424)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightuc, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (USA 900613)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightj, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightj1, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan 900112)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightj2, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan 900305)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightj3, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "Capcom", "Final Fight (Japan 900613)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffightjh, ffight, cps1_10MHz, ffight, cps_state, cps1, ROT0, "bootleg", "Street Smart / Final Fight (Japan, hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, 1941, 0, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (World 900227)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, 1941r1, 1941, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, 1941u, 1941, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (USA 900227)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, 1941j, 1941, cps1_10MHz, 1941, cps_state, cps1, ROT270, "Capcom", "1941: Counter Attack (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mercs, 0, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Mercs (World 900302)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, mercsu, mercs, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Mercs (USA 900608)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mercsur1, mercs, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Mercs (USA 900302)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mercsj, mercs, cps1_10MHz, mercs, cps_state, cps1, ROT270, "Capcom", "Senjou no Ookami II (Japan 900302)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mtwins, 0, cps1_10MHz, mtwins, cps_state, cps1, ROT0, "Capcom", "Mega Twins (World 900619)", MACHINE_SUPPORTS_SAVE ) // "ETC" - (c) Capcom U.S.A. but World "warning"
+GAME( 1990, chikij, mtwins, cps1_10MHz, mtwins, cps_state, cps1, ROT0, "Capcom", "Chiki Chiki Boys (Japan 900619)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, msword, 0, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (World 900725)", MACHINE_SUPPORTS_SAVE ) // 25.07.1990 "OTHER COUNTRY"
+GAME( 1990, mswordr1, msword, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (World 900623)", MACHINE_SUPPORTS_SAVE ) // 23.06.1990 "OTHER COUNTRY"
+GAME( 1990, mswordu, msword, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (USA 900725)", MACHINE_SUPPORTS_SAVE ) // 25.07.1990 "U.S.A."
+GAME( 1990, mswordj, msword, cps1_10MHz, msword, cps_state, cps1, ROT0, "Capcom", "Magic Sword: Heroic Fantasy (Japan 900623)", MACHINE_SUPPORTS_SAVE ) // 23.06.1990 "JAPAN"
+GAME( 1990, cawing, 0, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "Carrier Air Wing (World 901012)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, cawingr1, cawing, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "Carrier Air Wing (World 901009)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, cawingu, cawing, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "Carrier Air Wing (USA 901012)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, cawingj, cawing, cps1_10MHz, cawing, cps_state, cps1, ROT0, "Capcom", "U.S. Navy (Japan 901012)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, nemo, 0, cps1_10MHz, nemo, cps_state, cps1, ROT0, "Capcom", "Nemo (World 901130)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, nemor1, nemo, cps1_10MHz, nemo, cps_state, cps1, ROT0, "Capcom", "Nemo (World 901109)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1990, nemoj, nemo, cps1_10MHz, nemo, cps_state, cps1, ROT0, "Capcom", "Nemo (Japan 901120)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2, 0, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910522)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, sf2eb, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910214)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, sf2ed, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910318)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, sf2ee, sf2, cps1_10MHz, sf2, cps_state, sf2ee, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910228)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, sf2ua, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910206)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ub, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910214)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2uc, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910306)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ud, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910318)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ue, sf2, cps1_10MHz, sf2, cps_state, sf2ee, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910228)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2uf, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910411)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ug, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910522, Rev. G)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ui, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 910522, Rev. I)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2uk, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (USA 911101)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2j, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 911210)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2ja, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910214)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2jc, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910306)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2jf, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910411)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2jh, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 910522)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, sf2jl, sf2, cps1_10MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (Japan 920312)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2ebbl, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1992, sf2ebbl2, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1992, sf2ebbl3, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 4)", MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1992, sf2stt, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1992, sf2rk, sf2, cps1_10MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II: The World Warrior (RK, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 920211 (pcb)
+GAME( 1991, sf2qp1, sf2, cps1_10MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II: The World Warrior (Quicken Pt-I, bootleg)", MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1991, sf2thndr, sf2, cps1_10MHz, sf2, cps_state, sf2thndr, ROT0, "bootleg", "Street Fighter II: The World Warrior (Thunder Edition, bootleg)", MACHINE_SUPPORTS_SAVE ) // 910214 - based on World version
+GAME( 1991, 3wonders, 0, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (World 910520)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, 3wondersr1, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (World 910513)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, 3wondersu, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Three Wonders (USA 910520)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, wonder3, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "Capcom", "Wonder 3 (Japan 910520)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, 3wondersb, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "bootleg", "Three Wonders (bootleg)", MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version
+GAME( 1991, 3wondersh, 3wonders, cps1_10MHz, 3wonders, cps_state, cps1, ROT0, "bootleg", "Three Wonders (hack)", MACHINE_SUPPORTS_SAVE ) // 910520 - based on World version
+GAME( 1991, kod, 0, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (World 910805)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, kodr1, kod, cps1_10MHz, kodr1, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (World 910711)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, kodu, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (USA 910910)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, kodj, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (Japan 910805, B-Board 90629B-3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, kodja, kod, cps1_10MHz, kod, cps_state, cps1, ROT0, "Capcom", "The King of Dragons (Japan 910805, B-Board 89625B-1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captcomm, 0, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (World 911202)", MACHINE_SUPPORTS_SAVE ) // "OTHER COUNTRY"
+GAME( 1991, captcommr1, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (World 911014)", MACHINE_SUPPORTS_SAVE ) // "OTHER COUNTRY"
+GAME( 1991, captcommu, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (USA 910928)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captcommj, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (Japan 911202)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captcommjr1, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "Capcom", "Captain Commando (Japan 910928)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captcommb, captcomm, cps1_10MHz, captcomm, cps_state, cps1, ROT0, "bootleg", "Captain Commando (bootleg)", MACHINE_SUPPORTS_SAVE ) // 911014 - based on World version
+GAME( 1991, knights, 0, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (World 911127)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1991, knightsu, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (USA 911127)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knightsj, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (Japan 911127, B-Board 91634B-2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, knightsja, knights, cps1_10MHz, knights, cps_state, cps1, ROT0, "Capcom", "Knights of the Round (Japan 911127, B-Board 89625B-1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2ce, 0, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (World 920513)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, sf2ceea, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (World 920313)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, sf2ceua, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920313)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2ceub, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920513)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2ceuc, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (USA 920803)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2ceja, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (Japan 920322)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2cejb, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (Japan 920513)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2cejc, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Champion Edition (Japan 920803)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2bhh, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Hung Hsi, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2rb, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on World version
+GAME( 1992, sf2rb2, sf2ce, cps1_12MHz, sf2, cps_state, sf2rb2, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on World version
+GAME( 1992, sf2rb3, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 3)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on World version
+GAME( 1992, sf2red, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Red Wave, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2v004, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (V004, bootleg)", MACHINE_SUPPORTS_SAVE ) // 102092 !!! - based on (heavily modified) World version
+GAME( 1992, sf2acc, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Accelerator!, bootleg, set 1)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2acca, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Accelerator!, bootleg, set 2)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2accp2, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Accelerator Pt.II, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2amf, sf2ce, cps1_12MHz, sf2amf, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Alpha Magic-F, bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2amf2, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (L735 Test Rom, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2dkot2, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Double K.O. Turbo II, bootleg)", MACHINE_SUPPORTS_SAVE ) // 902140 !!! - based on USA version
+GAME( 1992, sf2ceblp, sf2ce, cps1_10MHz, sf2, cps_state, sf2ceblp, ROT0, "bootleg", "Street Fighter II': Champion Edition (protected bootleg on non-dash board)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on USA version
+GAME( 1992, sf2m2, sf2ce, cps1_12MHz, sf2m2, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M2, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2m3, sf2ce, sf2m3, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M3, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on USA version
+GAME( 1992, sf2m4, sf2ce, cps1_12MHz, sf2m4, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M4, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920322 - based on Japan version
+GAME( 1992, sf2m5, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M5, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2m6, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M6, bootleg)", MACHINE_SUPPORTS_SAVE ) // 811102 !!! - based on World version
+GAME( 1992, sf2m7, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M7, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2m8, sf2ce, sf2m3, sf2, cps_state, sf2m8, ROT0, "bootleg", "Street Fighter II': Champion Edition (M8, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on USA version
+GAME( 1992, sf2yyc, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (YYC, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2koryu, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg)", MACHINE_SUPPORTS_SAVE ) // 811102 !!! - based on World version
+GAME( 1992, sf2dongb, sf2ce, cps1_12MHz, sf2, cps_state, sf2dongb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Dongfang Bubai protection, bootleg)", MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, cworld2j, 0, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, cworld2ja, cworld2j, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611, B-Board 90629B-3, no battery)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, cworld2jb, cworld2j, cps1_12MHz, cworld2j, cps_state, cps1, ROT0, "Capcom", "Adventure Quiz Capcom World 2 (Japan 920611, B-Board 91634B-2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, varth, 0, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (World 920714)", MACHINE_SUPPORTS_SAVE ) // "ETC" // 12MHz verified
+GAME( 1992, varthr1, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (World 920612)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, varthu, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom (Romstar license)", "Varth: Operation Thunderstorm (USA 920612)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, varthj, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (Japan 920714)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, varthjr, varth, cps1_12MHz, varth, cps_state, cps1, ROT270, "Capcom", "Varth: Operation Thunderstorm (Japan Resale Ver. 920714)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, qad, 0, cps1_12MHz, qad, cps_state, cps1, ROT0, "Capcom", "Quiz & Dragons: Capcom Quiz Game (USA 920701)", MACHINE_SUPPORTS_SAVE ) // 12MHz verified
+GAME( 1994, qadjr, qad, cps1_12MHz, qadjr, cps_state, cps1, ROT0, "Capcom", "Quiz & Dragons: Capcom Quiz Game (Japan Resale Ver. 940921)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, wof, 0, qsound, wof, cps_state, wof, ROT0, "Capcom", "Warriors of Fate (World 921031)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, wofr1, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Warriors of Fate (World 921002)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, wofu, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Warriors of Fate (USA 921031)", MACHINE_SUPPORTS_SAVE ) // World "warning"
+GAME( 1992, wofa, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Sangokushi II (Asia 921005)", MACHINE_SUPPORTS_SAVE ) // World "warning"
+GAME( 1992, wofj, wof, qsound, wof, cps_state, wof, ROT0, "Capcom", "Tenchi wo Kurau II: Sekiheki no Tatakai (Japan 921031)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, wofhfh, wof, wofhfh, wofhfh, cps_state, cps1, ROT0, "bootleg", "Huo Feng Huang (Chinese bootleg of Sangokushi II)", MACHINE_SUPPORTS_SAVE ) // 921005 - based on Asia version
+GAME( 1992, sf2hf, 0, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Hyper Fighting (World 921209)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1992, sf2hfu, sf2hf, cps1_12MHz, sf2, cps_state, cps1, ROT0, "Capcom", "Street Fighter II': Hyper Fighting (USA 921209)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, sf2hfj, sf2hf, cps1_12MHz, sf2j, cps_state, cps1, ROT0, "Capcom", "Street Fighter II' Turbo: Hyper Fighting (Japan 921209)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dino, 0, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (World 930201)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1993, dinou, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs and Dinosaurs (USA 930201)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinoj, dino, qsound, dino, cps_state, dino, ROT0, "Capcom", "Cadillacs: Kyouryuu Shin Seiki (Japan 930201)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dinohunt, dino, wofhfh, dinoh, cps_state, dinohunt, ROT0, "bootleg", "Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs)", MACHINE_SUPPORTS_SAVE ) // 930223 - based on Asia TW version, the original is still undumped
+GAME( 1993, punisher, 0, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (World 930422)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1993, punisheru, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (USA 930422)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherh, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (Hispanic 930422)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherj, punisher, qsound, punisher, cps_state, punisher, ROT0, "Capcom", "The Punisher (Japan 930422)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, punisherbz, punisher, wofhfh, punisherbz, cps_state, cps1, ROT0, "bootleg", "Biaofeng Zhanjing (Chinese bootleg of The Punisher)", MACHINE_SUPPORTS_SAVE ) // (c) 2002, they ripped the sound from Final Fight!
+GAME( 1993, slammast, 0, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Saturday Night Slam Masters (World 930713)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1993, slammastu, slammast, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Saturday Night Slam Masters (USA 930713)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, mbomberj, slammast, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Muscle Bomber: The Body Explosion (Japan 930713)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, mbombrd, 0, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Muscle Bomber Duo: Ultimate Team Battle (World 931206)", MACHINE_SUPPORTS_SAVE ) // "ETC"
+GAME( 1993, mbombrdj, mbombrd, qsound, slammast, cps_state, slammast, ROT0, "Capcom", "Muscle Bomber Duo: Heat Up Warriors (Japan 931206)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pnickj, 0, cps1_12MHz, pnickj, cps_state, cps1, ROT0, "Compile (Capcom license)", "Pnickies (Japan 940608)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, qtono2j, 0, cps1_12MHz, qtono2j, cps_state, cps1, ROT0, "Capcom", "Quiz Tonosama no Yabou 2: Zenkoku-ban (Japan 950123)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, megaman, 0, cps1_12MHz, megaman, cps_state, cps1, ROT0, "Capcom", "Mega Man: The Power Battle (CPS1, USA 951006)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, megamana, megaman, cps1_12MHz, megaman, cps_state, cps1, ROT0, "Capcom", "Mega Man: The Power Battle (CPS1, Asia 951006)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, rockmanj, megaman, cps1_12MHz, rockmanj, cps_state, cps1, ROT0, "Capcom", "Rockman: The Power Battle (CPS1, Japan 950922)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, ganbare, 0, ganbare, ganbare, cps_state, ganbare, ROT0, "Capcom", "Ganbare! Marine Kun (Japan 2K0411)", MACHINE_SUPPORTS_SAVE )
/* Games released on CPS-1 hardware by Mitchell */
-GAME( 1995, pang3, 0, pang3, pang3, cps_state, pang3, ROT0, "Mitchell", "Pang! 3 (Euro 950601)", GAME_SUPPORTS_SAVE )
-GAME( 1995, pang3r1, pang3, pang3, pang3, cps_state, pang3, ROT0, "Mitchell", "Pang! 3 (Euro 950511)", GAME_SUPPORTS_SAVE )
-GAME( 1995, pang3j, pang3, pang3, pang3, cps_state, pang3, ROT0, "Mitchell", "Pang! 3: Kaitou Tachi no Karei na Gogo (Japan 950511)", GAME_SUPPORTS_SAVE )
-GAME( 1995, pang3b, pang3, pang3, pang3b, cps_state, pang3b, ROT0, "bootleg", "Pang! 3 (bootleg)", GAME_SUPPORTS_SAVE ) // 950511 - based on Euro version
+GAME( 1995, pang3, 0, pang3, pang3, cps_state, pang3, ROT0, "Mitchell", "Pang! 3 (Euro 950601)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pang3r1, pang3, pang3, pang3, cps_state, pang3, ROT0, "Mitchell", "Pang! 3 (Euro 950511)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pang3j, pang3, pang3, pang3, cps_state, pang3, ROT0, "Mitchell", "Pang! 3: Kaitou Tachi no Karei na Gogo (Japan 950511)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, pang3b, pang3, pang3, pang3b, cps_state, pang3b, ROT0, "bootleg", "Pang! 3 (bootleg)", MACHINE_SUPPORTS_SAVE ) // 950511 - based on Euro version
/* Home 'CPS Changer' Unit - For MESS */
-CONS( 1994, wofch, 0, 0, qsound, wofch, cps_state, wof, "Capcom", "Tenchi wo Kurau II: Sekiheki no Tatakai (CPS Changer, Japan 921031)", 0 )
-CONS( 1995, sfzch, 0, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Zero (CPS Changer, Japan 951020)", 0 )
+CONS( 1994, wofch, 0, 0, qsound, wofch, cps_state, wof, "Capcom", "Tenchi wo Kurau II: Sekiheki no Tatakai (CPS Changer, Japan 921031)", MACHINE_SUPPORTS_SAVE )
+CONS( 1995, sfzch, 0, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Zero (CPS Changer, Japan 951020)", MACHINE_SUPPORTS_SAVE )
// are these 2 legit sets, or did somebody region hack it?
-CONS( 1995, sfach, sfzch, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Alpha: Warriors' Dreams (CPS Changer, Publicity USA 950727)", 0 )
-CONS( 1995, sfzbch, sfzch, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Zero (CPS Changer, Brazil 950727)", 0 )
+CONS( 1995, sfach, sfzch, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Alpha: Warriors' Dreams (CPS Changer, Publicity USA 950727)", MACHINE_SUPPORTS_SAVE )
+CONS( 1995, sfzbch, sfzch, 0, cps1_12MHz, sfzch, cps_state, cps1, "Capcom", "Street Fighter Zero (CPS Changer, Brazil 950727)", MACHINE_SUPPORTS_SAVE )
// Ken Sei Mogura: Street Fighter II - see kenseim.c
diff --git a/src/mame/drivers/cps2.c b/src/mame/drivers/cps2.c
index 4693b1f97ef..47999a2d659 100644
--- a/src/mame/drivers/cps2.c
+++ b/src/mame/drivers/cps2.c
@@ -1494,7 +1494,7 @@ ROM_START( 19xxa )
ROM_LOAD16_WORD_SWAP( "19x.11m", 0x000000, 0x200000, CRC(d38beef3) SHA1(134e961b926a97cca5e45d3558efb98f6f278e08) )
ROM_LOAD16_WORD_SWAP( "19x.12m", 0x200000, 0x200000, CRC(d47c96e2) SHA1(3c1b5563f8e7ee1c450b3592fcb319e928caec3c) )
- _19XX_ASIA_KEY
+ _19XX_ASIA_KEY
ROM_END
ROM_START( 19xxar1 )
@@ -2677,7 +2677,7 @@ ROM_START( ddtodh )
ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
ROM_LOAD16_WORD_SWAP( "dad.11m", 0x000000, 0x200000, CRC(0c499b67) SHA1(a8ebd8a1cd6dece8344b7cb0439d85843fb97616) )
ROM_LOAD16_WORD_SWAP( "dad.12m", 0x200000, 0x200000, CRC(2f0b5a4e) SHA1(8d1ebbb811aa469b0f0d29d719d2b9af28fb63a2) )
-
+
DDTOD_HISPANIC_KEY
ROM_END
@@ -6288,7 +6288,7 @@ ROM_START( sfa2 )
ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
ROM_LOAD16_WORD_SWAP( "sz2.11m", 0x000000, 0x200000, CRC(aa47a601) SHA1(a4d1ee89c84a3b9db06469bb66e85293b5aa9ac9) )
ROM_LOAD16_WORD_SWAP( "sz2.12m", 0x200000, 0x200000, CRC(2237bc53) SHA1(96d5693047e4cf1ed10a8ee1905cea267a278e92) )
-
+
SFA2_WORLD_KEY
ROM_END
@@ -6761,6 +6761,7 @@ ROM_START( sfa3u )
SFA3_USA_KEY
ROM_END
+
ROM_START( sfa3ur1 )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_WORD_SWAP( "sz3u.03", 0x000000, 0x80000, CRC(b5984a19) SHA1(e225dd1d3a5d1b94adcfc5f720775e9ba321996e) )
@@ -6794,6 +6795,39 @@ ROM_START( sfa3ur1 )
SFA3_USA_KEY
ROM_END
+ROM_START( sfa3us )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_WORD_SWAP( "sz3-usam_03.6a", 0x000000, 0x80000, CRC(14319e29) SHA1(6de0c08f887d334d720d4c8ba7d5745f5282adfb) )
+ ROM_LOAD16_WORD_SWAP( "sz3-usam_04.7a", 0x080000, 0x80000, CRC(65fbc272) SHA1(d320a3c0dae03ea7c32cd521b99afb0e2d62dfaf) )
+ ROM_LOAD16_WORD_SWAP( "sz3-usam_05.8a", 0x100000, 0x80000, CRC(e93c47d1) SHA1(18c388e55b852ad46b784e0cf3fd4c72e8bb6850) )
+ ROM_LOAD16_WORD_SWAP( "sz3-usam_06.9a", 0x180000, 0x80000, CRC(1bf09de3) SHA1(8bd7f5ae7dbaccc65af835f166134f1bb44e6aae) )
+ ROM_LOAD16_WORD_SWAP( "sz3-usam_07.6d", 0x200000, 0x80000, CRC(f6296d96) SHA1(ff9376544968c6783fd98b9a714f0c25174f027a) )
+ ROM_LOAD16_WORD_SWAP( "sz3-usam_08.7d", 0x280000, 0x80000, CRC(1f4008ff) SHA1(f3fe9d6560bf97e7a3a15c1c43f74ac9ef3d5fbb) )
+ ROM_LOAD16_WORD_SWAP( "sz3-usam_09.8d", 0x300000, 0x80000, CRC(822fc451) SHA1(49ec9e3f33d6023b59b350a79fe2299f6ac90251) )
+ ROM_LOAD16_WORD_SWAP( "sz3-usam_10.9d", 0x380000, 0x80000, CRC(92713468) SHA1(9855bb1dd54190e29c5935be4a6529ac0936a628))
+
+ ROM_REGION( 0x2000000, "gfx", 0 )
+ ROMX_LOAD( "sz3.13m", 0x0000000, 0x400000, CRC(0f7a60d9) SHA1(c69e0ee22537312909dacc86d2e4be319d54e426) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.15m", 0x0000002, 0x400000, CRC(8e933741) SHA1(f4ac4bfe830dc7df9fe4f680e4e0c053e7cbd8fe) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.17m", 0x0000004, 0x400000, CRC(d6e98147) SHA1(37f331fbb1284db446faecade6f484f58c0e1b2a) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.19m", 0x0000006, 0x400000, CRC(f31a728a) SHA1(f14136564648f006c1b74afda78349f260524b5f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.14m", 0x1000000, 0x400000, CRC(5ff98297) SHA1(9e0ce43380b776c7a03872bafd4856f6fa60bda7) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.16m", 0x1000002, 0x400000, CRC(52b5bdee) SHA1(7918204dc457f7a146d8fb8cf7242dfed3109fd8) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.18m", 0x1000004, 0x400000, CRC(40631ed5) SHA1(c18c56822b90a71ca5fbdf3440eb2671011f3d8f) , ROM_GROUPWORD | ROM_SKIP(6) )
+ ROMX_LOAD( "sz3.20m", 0x1000006, 0x400000, CRC(763409b4) SHA1(af60a5116c1ca9050366a35ea29128921867f3cc) , ROM_GROUPWORD | ROM_SKIP(6) )
+
+ ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
+ ROM_LOAD( "sz3-usam_01.1a", 0x00000, 0x08000, CRC(c180947d) SHA1(829c8cf45029676acde369b890ac1b941981f750) )
+ ROM_CONTINUE( 0x10000, 0x18000 )
+ ROM_LOAD( "sz3-usam_02.2a", 0x28000, 0x20000, CRC(9ebc280f) SHA1(33fa0934c046eaae3c841d5be0bbdf7b190ef5e7) )
+
+ ROM_REGION( 0x800000, "qsound", 0 ) /* QSound samples */
+ ROM_LOAD16_WORD_SWAP( "sz3.11m", 0x000000, 0x400000, CRC(1c89eed1) SHA1(649a0b0a3eb72e2e69e9fb1ac51a58b70daa39f3) )
+ ROM_LOAD16_WORD_SWAP( "sz3.12m", 0x400000, 0x400000, CRC(f392b13a) SHA1(fa04ce0370144a49bd1d5acd873eef87b0dc9d15) )
+
+ SFA3_USA_KEY
+ROM_END
+
ROM_START( sfz3j )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_WORD_SWAP( "sz3j.03c", 0x000000, 0x80000, CRC(cadf4a51) SHA1(a0511512f55c0befa4a905ceff8c6f5775cf40ba) )
@@ -8488,7 +8522,7 @@ ROM_START( xmcotaj1 )
ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */
ROM_LOAD16_WORD_SWAP( "xmn.11m", 0x000000, 0x200000, CRC(c848a6bc) SHA1(ac8ac564d3c43225822f8bc330eba9f35b24b0a4) )
ROM_LOAD16_WORD_SWAP( "xmn.12m", 0x200000, 0x200000, CRC(729c188f) SHA1(3279774ad8aebbcf0fc779cdfcbe21044dd192ad) )
-
+
XMCOTA_JAPAN_KEY
ROM_END
@@ -9228,267 +9262,268 @@ DRIVER_INIT_MEMBER(cps_state,gigaman2)
*
*************************************/
-GAME( 1993, ssf2, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (World 931005)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2r1, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (World 930911)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2u, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (USA 930911)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2a, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Asia 931005)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2ar1, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Asia 930914)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2j, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 931005)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2jr1, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 930911)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2jr2, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 930910)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2h, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Hispanic 930911)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2tb, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (World 931119)", GAME_SUPPORTS_SAVE ) // works, but not in tournament mode
-GAME( 1993, ssf2tbr1, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (World 930911)", GAME_SUPPORTS_SAVE ) // works, but not in tournament mode
-GAME( 1993, ssf2tbj, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 930911)", GAME_SUPPORTS_SAVE ) // works, but not in tournament mode
-GAME( 1993, ssf2tbh, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Hispanic 931005)", GAME_SUPPORTS_SAVE ) // works, but not in tournament mode
-GAME( 1993, ecofghtr, 0, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Eco Fighters (World 931203)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ecofghtru, ecofghtr, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Eco Fighters (USA 940215)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ecofghtru1, ecofghtr, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Eco Fighters (USA 931203)", GAME_SUPPORTS_SAVE )
-GAME( 1993, uecology, ecofghtr, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Ultimate Ecology (Japan 931203)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ecofghtra, ecofghtr, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Eco Fighters (Asia 931203)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ecofghtrh, ecofghtr, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Eco Fighters (Hispanic 931203)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtod, 0, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Euro 940412)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtodr1, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Euro 940113)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtodu, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (USA 940125)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtodur1, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (USA 940113)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtodj, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940412)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtodjr1, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940125)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtodjr2, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940113)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtoda, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Asia 940412)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtodar1, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Asia 940113)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtodh, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940412)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtodhr1, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940125)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ddtodhr2, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940113)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ssf2t, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (World 940223)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ssf2ta, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (Asia 940223)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ssf2tu, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (USA 940323)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ssf2tur1, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (USA 940223)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ssf2xj, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II X: Grand Master Challenge (Japan 940223)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ssf2xjr, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II X: Grand Master Challenge (Japan 940223 rent version)", GAME_SUPPORTS_SAVE )
-GAME( 1994, avsp, 0, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Alien vs. Predator (Euro 940520)", GAME_SUPPORTS_SAVE )
-GAME( 1994, avspu, avsp, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Alien vs. Predator (USA 940520)", GAME_SUPPORTS_SAVE )
-GAME( 1994, avspj, avsp, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Alien vs. Predator (Japan 940520)", GAME_SUPPORTS_SAVE )
-GAME( 1994, avspa, avsp, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Alien vs. Predator (Asia 940520)", GAME_SUPPORTS_SAVE )
-GAME( 1994, avsph, avsp, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Alien vs. Predator (Hispanic 940520)", GAME_SUPPORTS_SAVE )
-GAME( 1994, dstlk, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Euro 940705)", GAME_SUPPORTS_SAVE )
-GAME( 1994, dstlku, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (USA 940818)", GAME_SUPPORTS_SAVE )
-GAME( 1994, dstlkur1, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (USA 940705)", GAME_SUPPORTS_SAVE )
-GAME( 1994, dstlka, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Asia 940705)", GAME_SUPPORTS_SAVE )
-GAME( 1994, dstlkh, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Hispanic 940818)", GAME_SUPPORTS_SAVE )
-GAME( 1994, vampj, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940705)", GAME_SUPPORTS_SAVE ) // partial update set? Only rom 04 is "B" revision
-GAME( 1994, vampja, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940705 alt)", GAME_SUPPORTS_SAVE )
-GAME( 1994, vampjr1, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940630)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ringdest, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Euro 940902)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ringdesta, ringdest, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Asia 940831)", GAME_SUPPORTS_SAVE )
-GAME( 1994, smbomb, ringdest, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Muscle Bomber: The International Blowout (Japan 940831)", GAME_SUPPORTS_SAVE )
-GAME( 1994, smbombr1, ringdest, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Muscle Bomber: The International Blowout (Japan 940808)", GAME_SUPPORTS_SAVE )
-GAME( 1994, armwar, 0, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (Euro 941024)", GAME_SUPPORTS_SAVE )
-GAME( 1994, armwarr1, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (Euro 941011)", GAME_SUPPORTS_SAVE )
-GAME( 1994, armwaru, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (USA 941024)", GAME_SUPPORTS_SAVE )
-GAME( 1994, armwaru1, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (USA 940920)", GAME_SUPPORTS_SAVE )
-GAME( 1994, pgear, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Powered Gear: Strategic Variant Armor Equipment (Japan 941024)", GAME_SUPPORTS_SAVE )
-GAME( 1994, pgearr1, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Powered Gear: Strategic Variant Armor Equipment (Japan 940916)", GAME_SUPPORTS_SAVE )
-GAME( 1994, armwara, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (Asia 941024)", GAME_SUPPORTS_SAVE )
-GAME( 1994, armwarar1, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (Asia 940920)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcota, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Euro 950331)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotar1, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Euro 950105)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotau, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (USA 950105)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotah, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Hispanic 950331)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotahr1, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Hispanic 950105)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotaj, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 950105)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotaj1, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941222)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotaj2, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941219)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotaj3, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941217)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotajr, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941208 rent version)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotaa, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Asia 950105)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotaar1, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Asia 941217)", GAME_SUPPORTS_SAVE )
-GAME( 1995, nwarr, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Euro 950316)", GAME_SUPPORTS_SAVE )
-GAME( 1995, nwarru, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (USA 950406)", GAME_SUPPORTS_SAVE )
-GAME( 1995, nwarrh, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Hispanic 950403)", GAME_SUPPORTS_SAVE )
-GAME( 1995, nwarrb, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Brazil 950403)", GAME_SUPPORTS_SAVE )
-GAME( 1995, nwarra, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Asia 950302)", GAME_SUPPORTS_SAVE )
-GAME( 1995, vhuntj, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950316)", GAME_SUPPORTS_SAVE )
-GAME( 1995, vhuntjr1s, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950307 stop version)", GAME_SUPPORTS_SAVE )
-GAME( 1995, vhuntjr1, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950307)", GAME_SUPPORTS_SAVE )
-GAME( 1995, vhuntjr2, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950302)", GAME_SUPPORTS_SAVE )
-GAME( 1995, cybots, 0, cps2, cybots, cps_state, cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (Euro 950424)", GAME_SUPPORTS_SAVE )
-GAME( 1995, cybotsu, cybots, cps2, cybots, cps_state, cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (USA 950424)", GAME_SUPPORTS_SAVE )
-GAME( 1995, cybotsj, cybots, cps2, cybots, cps_state, cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (Japan 950420)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfa, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950727)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfar1, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950718)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfar2, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950627)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfar3, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950605)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfau, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (USA 950627)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfza, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Asia 950627)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfzar1, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Asia 950605)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfzj, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950727)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfzjr1, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950627)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfzjr2, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950605)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfzh, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Hispanic 950718)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfzhr1, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Hispanic 950627)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfzb, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Brazil 951109)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfzbr1, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Brazil 950727)", GAME_SUPPORTS_SAVE )
-GAME( 1995, mmancp2u, megaman, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Mega Man: The Power Battle (CPS2, USA 951006, SAMPLE Version)", GAME_SUPPORTS_SAVE )
-GAME( 1995, mmancp2ur1, megaman, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Mega Man: The Power Battle (CPS2, USA 950926, SAMPLE Version)", GAME_SUPPORTS_SAVE )
-GAME( 1995, rmancp2j, megaman, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Rockman: The Power Battle (CPS2, Japan 950922)", GAME_SUPPORTS_SAVE )
-GAME( 1995, msh, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Euro 951024)", GAME_SUPPORTS_SAVE )
-GAME( 1995, mshu, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (USA 951024)", GAME_SUPPORTS_SAVE )
-GAME( 1995, mshj, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Japan 951117)", GAME_SUPPORTS_SAVE )
-GAME( 1995, mshjr1, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Japan 951024)", GAME_SUPPORTS_SAVE )
-GAME( 1995, msha, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Asia 951024)", GAME_SUPPORTS_SAVE )
-GAME( 1995, mshh, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Hispanic 951117)", GAME_SUPPORTS_SAVE )
-GAME( 1995, mshb, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Brazil 951117)", GAME_SUPPORTS_SAVE )
-GAME( 1996, 19xx, 0, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (USA 951207)", GAME_SUPPORTS_SAVE )
-GAME( 1996, 19xxa, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Asia 960104)", GAME_SUPPORTS_SAVE )
-GAME( 1996, 19xxar1, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Asia 951207)", GAME_SUPPORTS_SAVE )
-GAME( 1996, 19xxj, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 960104, yellow case)", GAME_SUPPORTS_SAVE )
-GAME( 1996, 19xxjr1, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 951225)", GAME_SUPPORTS_SAVE )
-GAME( 1996, 19xxjr2, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 951207)", GAME_SUPPORTS_SAVE )
-GAME( 1996, 19xxh, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Hispanic 951218)", GAME_SUPPORTS_SAVE )
-GAME( 1996, 19xxb, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Brazil 951218)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsom, 0, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960619)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomr1, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960223)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomr2, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960209)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomr3, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960208)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomu, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (USA 960619)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomur1, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (USA 960209)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomj, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960619)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomjr1, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960206)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsoma, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Asia 960619)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomar1, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Asia 960208)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomh, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Hispanic 960223)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomb, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Brazil 960223)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfa2, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (Euro 960229)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfa2u, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (USA 960430)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfa2ur1, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (USA 960306)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2j, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Japan 960430)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2jr1, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Japan 960227)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2a, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Asia 960227)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2b, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Brazil 960531)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2br1, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Brazil 960304)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2h, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Hispanic 960304)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2n, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Oceania 960229)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2al, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Asia 960826)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2alj, sfz2al, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Japan 960805)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2alh, sfz2al, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Hispanic 960813)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2alb, sfz2al, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Brazil 960813)", GAME_SUPPORTS_SAVE )
-GAME( 1996, spf2t, 0, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Euro 960529)", GAME_SUPPORTS_SAVE )
-GAME( 1996, spf2tu, spf2t, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (USA 960620)", GAME_SUPPORTS_SAVE )
-GAME( 1996, spf2xj, spf2t, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Capcom", "Super Puzzle Fighter II X (Japan 960531)", GAME_SUPPORTS_SAVE )
-GAME( 1996, spf2ta, spf2t, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Asia 960529)", GAME_SUPPORTS_SAVE )
-GAME( 1996, spf2th, spf2t, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Hispanic 960531)", GAME_SUPPORTS_SAVE )
-GAME( 1996, megaman2, 0, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (USA 960708)", GAME_SUPPORTS_SAVE )
-GAME( 1996, megaman2a, megaman2, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (Asia 960708)", GAME_SUPPORTS_SAVE )
-GAME( 1996, rockman2j, megaman2, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Rockman 2: The Power Fighters (Japan 960708)", GAME_SUPPORTS_SAVE )
-GAME( 1996, megaman2h, megaman2, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (Hispanic 960712)", GAME_SUPPORTS_SAVE )
-GAME( 1996, qndream, 0, cps2, qndream, cps_state, cps2, ROT0, "Capcom", "Quiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 960826)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsf, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Euro 961004)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfr1, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Euro 960910)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfu, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 961023)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfur1, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 961004)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfur2, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 960910)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfj, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 961004)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfjr1, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 960910)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfjr2, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 960909)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfa, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 961023)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfar1, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 961004)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfar2, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 960919)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfar3, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 960910)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfh, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Hispanic 961004)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfb, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Brazil 961023)", GAME_SUPPORTS_SAVE )
-GAME( 1997, batcir, 0, cps2, cps2_4p2b, cps_state, cps2, ROT0, "Capcom", "Battle Circuit (Euro 970319)", GAME_SUPPORTS_SAVE )
-GAME( 1997, batcira, batcir, cps2, cps2_4p2b, cps_state, cps2, ROT0, "Capcom", "Battle Circuit (Asia 970319)", GAME_SUPPORTS_SAVE )
-GAME( 1997, batcirj, batcir, cps2, cps2_4p2b, cps_state, cps2, ROT0, "Capcom", "Battle Circuit (Japan 970319)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vsav, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Euro 970519)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vsavu, vsav, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (USA 970519)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vsavj, vsav, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Japan 970519)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vsava, vsav, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Asia 970519)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vsavh, vsav, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Hispanic 970519)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsf, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Euro 970625)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfu, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (USA 970827)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfu1, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (USA 970625)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfj, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970707)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfj1, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970702)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfj2, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970625)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfh, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Hispanic 970625)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfa, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Asia 970625)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfa1, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Asia 970620)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfb, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Brazil 970827)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfb1, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Brazil 970625)", GAME_SUPPORTS_SAVE )
-GAME( 1997, csclub, 0, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Euro 971017)", GAME_SUPPORTS_SAVE )
-GAME( 1997, csclub1, csclub, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Euro 970722)", GAME_SUPPORTS_SAVE )
-GAME( 1997, cscluba, csclub, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Asia 970722)", GAME_SUPPORTS_SAVE )
-GAME( 1997, csclubj, csclub, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Japan 970722)", GAME_SUPPORTS_SAVE )
-GAME( 1997, csclubjy, csclub, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Japan 970722, yellow case)", GAME_SUPPORTS_SAVE )
-GAME( 1997, csclubh, csclub, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Hispanic 970722)", GAME_SUPPORTS_SAVE )
-GAME( 1997, sgemf, 0, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Super Gem Fighter Mini Mix (USA 970904)", GAME_SUPPORTS_SAVE )
-GAME( 1997, pfghtj, sgemf, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Pocket Fighter (Japan 970904)", GAME_SUPPORTS_SAVE )
-GAME( 1997, sgemfa, sgemf, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Super Gem Fighter: Mini Mix (Asia 970904)", GAME_SUPPORTS_SAVE )
-GAME( 1997, sgemfh, sgemf, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Super Gem Fighter: Mini Mix (Hispanic 970904)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vhunt2, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970929)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vhunt2r1, vhunt2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vsav2, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior 2: The Lord of Vampire (Japan 970913)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvsc, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Euro 980123)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvscr1, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Euro 980112)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvscu, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (USA 980123)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvscur1, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (USA 971222)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvscj, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvscjr1, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980112)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvscjsing, mvsc, cps2, cps2_2p6b, cps_state, singbrd, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) (Single PCB)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvsca, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Asia 980123)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvscar1, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Asia 980112)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvsch, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Hispanic 980123)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvscb, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Brazil 980123)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfa3, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Euro 980904)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfa3u, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980904)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfa3ur1, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980629)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfa3h, sfa3, cps2, cps2_2p6bt, cps_state,cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Hispanic 980904)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfa3hr1, sfa3, cps2, cps2_2p6bt, cps_state,cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Hispanic 980629)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfa3b, sfa3, cps2, cps2_2p6bt, cps_state,cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Brazil 980629)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfz3j, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980904)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfz3jr1, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980727)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfz3jr2, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980629)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfz3a, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Asia 980904)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfz3ar1, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Asia 980701)", GAME_SUPPORTS_SAVE )
-GAME( 1999, jyangoku, 0, cps2, cps2_1p2b, cps_state, cps2, ROT0, "Capcom", "Jyangokushi: Haoh no Saihai (Japan 990527)", GAME_SUPPORTS_SAVE )
-GAME( 2004, hsf2, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (USA 040202)", GAME_SUPPORTS_SAVE )
-GAME( 2004, hsf2a, hsf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (Asia 040202)", GAME_SUPPORTS_SAVE )
-GAME( 2004, hsf2j, hsf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (Japan 031222)", GAME_SUPPORTS_SAVE )
+GAME( 1993, ssf2, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (World 931005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2r1, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (World 930911)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2u, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (USA 930911)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2a, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Asia 931005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2ar1, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Asia 930914)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2j, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 931005)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2jr1, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 930911)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2jr2, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 930910)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2h, ssf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Hispanic 930911)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2tb, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (World 931119)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode
+GAME( 1993, ssf2tbr1, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (World 930911)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode
+GAME( 1993, ssf2tbj, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 930911)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode
+GAME( 1993, ssf2tbh, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Hispanic 931005)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode
+GAME( 1993, ecofghtr, 0, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Eco Fighters (World 931203)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ecofghtru, ecofghtr, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Eco Fighters (USA 940215)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ecofghtru1, ecofghtr, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Eco Fighters (USA 931203)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, uecology, ecofghtr, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Ultimate Ecology (Japan 931203)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ecofghtra, ecofghtr, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Eco Fighters (Asia 931203)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ecofghtrh, ecofghtr, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Eco Fighters (Hispanic 931203)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtod, 0, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Euro 940412)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtodr1, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Euro 940113)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtodu, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (USA 940125)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtodur1, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (USA 940113)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtodj, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940412)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtodjr1, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940125)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtodjr2, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940113)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtoda, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Asia 940412)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtodar1, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Asia 940113)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtodh, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940412)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtodhr1, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940125)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ddtodhr2, ddtod, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940113)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2t, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (World 940223)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2ta, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (Asia 940223)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2tu, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (USA 940323)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2tur1, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (USA 940223)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2xj, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II X: Grand Master Challenge (Japan 940223)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2xjr, ssf2t, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Street Fighter II X: Grand Master Challenge (Japan 940223 rent version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, avsp, 0, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Alien vs. Predator (Euro 940520)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, avspu, avsp, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Alien vs. Predator (USA 940520)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, avspj, avsp, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Alien vs. Predator (Japan 940520)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, avspa, avsp, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Alien vs. Predator (Asia 940520)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, avsph, avsp, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Alien vs. Predator (Hispanic 940520)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, dstlk, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Euro 940705)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, dstlku, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (USA 940818)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, dstlkur1, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (USA 940705)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, dstlka, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Asia 940705)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, dstlkh, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Hispanic 940818)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, vampj, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940705)", MACHINE_SUPPORTS_SAVE ) // partial update set? Only rom 04 is "B" revision
+GAME( 1994, vampja, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940705 alt)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, vampjr1, dstlk, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940630)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ringdest, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Euro 940902)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ringdesta, ringdest, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Asia 940831)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, smbomb, ringdest, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Muscle Bomber: The International Blowout (Japan 940831)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, smbombr1, ringdest, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Super Muscle Bomber: The International Blowout (Japan 940808)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, armwar, 0, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (Euro 941024)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, armwarr1, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (Euro 941011)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, armwaru, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (USA 941024)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, armwaru1, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (USA 940920)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pgear, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Powered Gear: Strategic Variant Armor Equipment (Japan 941024)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, pgearr1, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Powered Gear: Strategic Variant Armor Equipment (Japan 940916)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, armwara, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (Asia 941024)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, armwarar1, armwar, cps2, cps2_3p3b, cps_state, cps2, ROT0, "Capcom", "Armored Warriors (Asia 940920)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcota, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Euro 950331)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotar1, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Euro 950105)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotau, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (USA 950105)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotah, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Hispanic 950331)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotahr1, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Hispanic 950105)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotaj, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 950105)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotaj1, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941222)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotaj2, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941219)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotaj3, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941217)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotajr, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941208 rent version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotaa, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Asia 950105)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotaar1, xmcota, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Asia 941217)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, nwarr, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Euro 950316)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, nwarru, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (USA 950406)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, nwarrh, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Hispanic 950403)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, nwarrb, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Brazil 950403)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, nwarra, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Asia 950302)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, vhuntj, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950316)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, vhuntjr1s, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950307 stop version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, vhuntjr1, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950307)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, vhuntjr2, nwarr, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950302)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, cybots, 0, cps2, cybots, cps_state, cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (Euro 950424)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, cybotsu, cybots, cps2, cybots, cps_state, cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (USA 950424)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, cybotsj, cybots, cps2, cybots, cps_state, cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (Japan 950420)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfa, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950727)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfar1, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950718)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfar2, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950627)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfar3, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950605)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfau, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (USA 950627)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfza, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Asia 950627)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfzar1, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Asia 950605)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfzj, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950727)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfzjr1, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950627)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfzjr2, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950605)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfzh, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Hispanic 950718)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfzhr1, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Hispanic 950627)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfzb, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Brazil 951109)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfzbr1, sfa, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero (Brazil 950727)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mmancp2u, megaman, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Mega Man: The Power Battle (CPS2, USA 951006, SAMPLE Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mmancp2ur1, megaman, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Mega Man: The Power Battle (CPS2, USA 950926, SAMPLE Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, rmancp2j, megaman, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Rockman: The Power Battle (CPS2, Japan 950922)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, msh, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Euro 951024)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mshu, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (USA 951024)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mshj, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Japan 951117)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mshjr1, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Japan 951024)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, msha, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Asia 951024)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mshh, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Hispanic 951117)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mshb, msh, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes (Brazil 951117)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, 19xx, 0, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (USA 951207)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, 19xxa, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Asia 960104)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, 19xxar1, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Asia 951207)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, 19xxj, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 960104, yellow case)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, 19xxjr1, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 951225)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, 19xxjr2, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 951207)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, 19xxh, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Hispanic 951218)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, 19xxb, 19xx, cps2, cps2_2p2b, cps_state, cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Brazil 951218)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsom, 0, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960619)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomr1, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960223)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomr2, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960209)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomr3, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960208)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomu, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (USA 960619)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomur1, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (USA 960209)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomj, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960619)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomjr1, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960206)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsoma, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Asia 960619)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomar1, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Asia 960208)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomh, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Hispanic 960223)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomb, ddsom, cps2, cps2_4p4b, cps_state, cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Brazil 960223)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfa2, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (Euro 960229)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfa2u, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (USA 960430)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfa2ur1, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (USA 960306)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2j, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Japan 960430)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2jr1, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Japan 960227)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2a, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Asia 960227)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2b, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Brazil 960531)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2br1, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Brazil 960304)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2h, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Hispanic 960304)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2n, sfa2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Oceania 960229)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2al, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Asia 960826)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2alj, sfz2al, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Japan 960805)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2alh, sfz2al, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Hispanic 960813)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2alb, sfz2al, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Brazil 960813)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, spf2t, 0, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Euro 960529)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, spf2tu, spf2t, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (USA 960620)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, spf2xj, spf2t, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Capcom", "Super Puzzle Fighter II X (Japan 960531)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, spf2ta, spf2t, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Asia 960529)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, spf2th, spf2t, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Hispanic 960531)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, megaman2, 0, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (USA 960708)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, megaman2a, megaman2, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (Asia 960708)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, rockman2j, megaman2, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Rockman 2: The Power Fighters (Japan 960708)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, megaman2h, megaman2, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (Hispanic 960712)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, qndream, 0, cps2, qndream, cps_state, cps2, ROT0, "Capcom", "Quiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 960826)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsf, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Euro 961004)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfr1, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Euro 960910)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfu, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 961023)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfur1, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 961004)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfur2, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 960910)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfj, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 961004)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfjr1, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 960910)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfjr2, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 960909)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfa, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 961023)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfar1, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 961004)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfar2, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 960919)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfar3, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 960910)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfh, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Hispanic 961004)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfb, xmvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Brazil 961023)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, batcir, 0, cps2, cps2_4p2b, cps_state, cps2, ROT0, "Capcom", "Battle Circuit (Euro 970319)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, batcira, batcir, cps2, cps2_4p2b, cps_state, cps2, ROT0, "Capcom", "Battle Circuit (Asia 970319)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, batcirj, batcir, cps2, cps2_4p2b, cps_state, cps2, ROT0, "Capcom", "Battle Circuit (Japan 970319)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vsav, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Euro 970519)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vsavu, vsav, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (USA 970519)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vsavj, vsav, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Japan 970519)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vsava, vsav, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Asia 970519)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vsavh, vsav, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Hispanic 970519)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsf, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Euro 970625)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfu, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (USA 970827)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfu1, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (USA 970625)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfj, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970707)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfj1, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970702)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfj2, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970625)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfh, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Hispanic 970625)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfa, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Asia 970625)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfa1, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Asia 970620)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfb, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Brazil 970827)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfb1, mshvsf, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Brazil 970625)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, csclub, 0, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Euro 971017)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, csclub1, csclub, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Euro 970722)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, cscluba, csclub, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Asia 970722)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, csclubj, csclub, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Japan 970722)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, csclubjy, csclub, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Japan 970722, yellow case)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, csclubh, csclub, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Capcom Sports Club (Hispanic 970722)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sgemf, 0, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Super Gem Fighter Mini Mix (USA 970904)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, pfghtj, sgemf, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Pocket Fighter (Japan 970904)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sgemfa, sgemf, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Super Gem Fighter: Mini Mix (Asia 970904)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sgemfh, sgemf, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Capcom", "Super Gem Fighter: Mini Mix (Hispanic 970904)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vhunt2, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970929)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vhunt2r1, vhunt2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vsav2, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Vampire Savior 2: The Lord of Vampire (Japan 970913)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvsc, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Euro 980123)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscr1, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Euro 980112)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscu, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (USA 980123)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscur1, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (USA 971222)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscj, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscjr1, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980112)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscjsing, mvsc, cps2, cps2_2p6b, cps_state, singbrd, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) (Single PCB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvsca, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Asia 980123)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscar1, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Asia 980112)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvsch, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Hispanic 980123)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscb, mvsc, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Brazil 980123)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfa3, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Euro 980904)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfa3u, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980904)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfa3ur1, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980629)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfa3us, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980616, SAMPLE Version)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfa3h, sfa3, cps2, cps2_2p6bt, cps_state,cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Hispanic 980904)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfa3hr1, sfa3, cps2, cps2_2p6bt, cps_state,cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Hispanic 980629)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfa3b, sfa3, cps2, cps2_2p6bt, cps_state,cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Brazil 980629)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfz3j, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980904)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfz3jr1, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980727)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfz3jr2, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980629)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfz3a, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Asia 980904)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfz3ar1, sfa3, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Asia 980701)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, jyangoku, 0, cps2, cps2_1p2b, cps_state, cps2, ROT0, "Capcom", "Jyangokushi: Haoh no Saihai (Japan 990527)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, hsf2, 0, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (USA 040202)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, hsf2a, hsf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (Asia 040202)", MACHINE_SUPPORTS_SAVE )
+GAME( 2004, hsf2j, hsf2, cps2, cps2_2p6b, cps_state, cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (Japan 031222)", MACHINE_SUPPORTS_SAVE )
/* Games released on CPS-2 hardware by Takumi */
-GAME( 1999, gigawing, 0, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (USA 990222)", GAME_SUPPORTS_SAVE )
-GAME( 1999, gigawingj, gigawing, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Japan 990223)", GAME_SUPPORTS_SAVE )
-GAME( 1999, gigawinga, gigawing, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Asia 990222)", GAME_SUPPORTS_SAVE )
-GAME( 1999, gigawingh, gigawing, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Hispanic 990222)", GAME_SUPPORTS_SAVE )
-GAME( 1999, gigawingb, gigawing, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Brazil 990222)", GAME_SUPPORTS_SAVE )
-GAME( 2000, mmatrix, 0, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Mars Matrix: Hyper Solid Shooting (USA 000412)", GAME_SUPPORTS_SAVE )
-GAME( 2000, mmatrixj, mmatrix, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Mars Matrix: Hyper Solid Shooting (Japan 000412)", GAME_SUPPORTS_SAVE )
+GAME( 1999, gigawing, 0, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (USA 990222)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, gigawingj, gigawing, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Japan 990223)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, gigawinga, gigawing, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Asia 990222)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, gigawingh, gigawing, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Hispanic 990222)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, gigawingb, gigawing, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Brazil 990222)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mmatrix, 0, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Mars Matrix: Hyper Solid Shooting (USA 000412)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mmatrixj, mmatrix, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Takumi (Capcom license)", "Mars Matrix: Hyper Solid Shooting (Japan 000412)", MACHINE_SUPPORTS_SAVE )
/* Games released on CPS-2 hardware by Mitchell */
-GAME( 2000, mpang, 0, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Euro 001010)", GAME_SUPPORTS_SAVE )
-GAME( 2000, mpangr1, mpang, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Euro 000925)", GAME_SUPPORTS_SAVE )
-GAME( 2000, mpangu, mpang, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (USA 001010)", GAME_SUPPORTS_SAVE )
-GAME( 2000, mpangj, mpang, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Japan 001011)", GAME_SUPPORTS_SAVE )
-GAME( 2001, pzloop2, 0, cps2, pzloop2, cps_state, pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Euro 010302)", GAME_SUPPORTS_SAVE )
-GAME( 2001, pzloop2j, pzloop2, cps2, pzloop2, cps_state, pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Japan 010226)", GAME_SUPPORTS_SAVE )
-GAME( 2001, pzloop2jr1, pzloop2, cps2, pzloop2, cps_state, pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Japan 010205)", GAME_SUPPORTS_SAVE )
-GAME( 2001, choko, 0, cps2, choko, cps_state, cps2, ROT0, "Mitchell (Capcom license)", "Janpai Puzzle Choukou (Japan 010820)", GAME_SUPPORTS_SAVE )
+GAME( 2000, mpang, 0, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Euro 001010)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mpangr1, mpang, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Euro 000925)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mpangu, mpang, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (USA 001010)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mpangj, mpang, cps2, cps2_2p1b, cps_state, cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Japan 001011)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pzloop2, 0, cps2, pzloop2, cps_state, pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Euro 010302)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pzloop2j, pzloop2, cps2, pzloop2, cps_state, pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Japan 010226)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, pzloop2jr1, pzloop2, cps2, pzloop2, cps_state, pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Japan 010205)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, choko, 0, cps2, choko, cps_state, cps2, ROT0, "Mitchell (Capcom license)", "Janpai Puzzle Choukou (Japan 010820)", MACHINE_SUPPORTS_SAVE )
/* Games released on CPS-2 hardware by Eighting/Raizing */
-GAME( 2000, dimahoo, 0, cps2, cps2_2p3b, cps_state, cps2, ROT270, "Eighting / Raizing (Capcom license)", "Dimahoo (Euro 000121)", GAME_SUPPORTS_SAVE )
-GAME( 2000, dimahoou, dimahoo, cps2, cps2_2p3b, cps_state, cps2, ROT270, "Eighting / Raizing (Capcom license)", "Dimahoo (USA 000121)", GAME_SUPPORTS_SAVE )
-GAME( 2000, gmahou, dimahoo, cps2, cps2_2p3b, cps_state, cps2, ROT270, "Eighting / Raizing (Capcom license)", "Great Mahou Daisakusen (Japan 000121)", GAME_SUPPORTS_SAVE )
-GAME( 2000, 1944, 0, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Eighting / Raizing (Capcom license)", "1944: The Loop Master (USA 000620)", GAME_SUPPORTS_SAVE )
-GAME( 2000, 1944j, 1944, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Eighting / Raizing (Capcom license)", "1944: The Loop Master (Japan 000620)", GAME_SUPPORTS_SAVE )
+GAME( 2000, dimahoo, 0, cps2, cps2_2p3b, cps_state, cps2, ROT270, "Eighting / Raizing (Capcom license)", "Dimahoo (Euro 000121)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, dimahoou, dimahoo, cps2, cps2_2p3b, cps_state, cps2, ROT270, "Eighting / Raizing (Capcom license)", "Dimahoo (USA 000121)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, gmahou, dimahoo, cps2, cps2_2p3b, cps_state, cps2, ROT270, "Eighting / Raizing (Capcom license)", "Great Mahou Daisakusen (Japan 000121)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, 1944, 0, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Eighting / Raizing (Capcom license)", "1944: The Loop Master (USA 000620)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, 1944j, 1944, cps2, cps2_2p2b, cps_state, cps2, ROT0, "Eighting / Raizing (Capcom license)", "1944: The Loop Master (Japan 000620)", MACHINE_SUPPORTS_SAVE )
/* Games released on CPS-2 hardware by Cave */
-GAME( 2001, progear, 0, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Cave (Capcom license)", "Progear (USA 010117)", GAME_SUPPORTS_SAVE )
-GAME( 2001, progearj, progear, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Cave (Capcom license)", "Progear no Arashi (Japan 010117)", GAME_SUPPORTS_SAVE )
-GAME( 2001, progeara, progear, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Cave (Capcom license)", "Progear (Asia 010117)", GAME_SUPPORTS_SAVE )
+GAME( 2001, progear, 0, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Cave (Capcom license)", "Progear (USA 010117)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, progearj, progear, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Cave (Capcom license)", "Progear no Arashi (Japan 010117)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, progeara, progear, cps2, cps2_2p3b, cps_state, cps2, ROT0, "Cave (Capcom license)", "Progear (Asia 010117)", MACHINE_SUPPORTS_SAVE )
/*
------------------------
@@ -10931,48 +10966,48 @@ ROM_START( sfz2jd )
ROM_END
-GAME( 1993, ddtodd, ddtod, dead_cps2, cps2_4p4b, cps_state, cps2, ROT0, "bootleg", "Dungeons & Dragons: Tower of Doom (Euro 940412 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ecofghtrd,ecofghtr, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Eco Fighters (World 931203 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2ud, ssf2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Super Street Fighter II: The New Challengers (USA 930911 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1993, ssf2tbd, ssf2, dead_cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "bootleg", "Super Street Fighter II: The Tournament Battle (World 931119 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1994, armwar1d, armwar, dead_cps2, cps2_3p3b, cps_state, cps2, ROT0, "bootleg", "Armored Warriors (Euro 941011 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1994, avspd, avsp, dead_cps2, cps2_3p3b, cps_state, cps2, ROT0, "bootleg", "Alien vs. Predator (Euro 940520 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1994, dstlku1d, dstlk, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Darkstalkers: The Night Warriors (USA 940705 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ringdstd, ringdest, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Ring of Destruction: Slammasters II (Euro 940902 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ssf2tad, ssf2t, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Super Street Fighter II Turbo (Asia 940223 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1994, ssf2xjd, ssf2t, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Super Street Fighter II X: Grand Master Challenge (Japan 940223 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1994, xmcotar1d,xmcota, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "X-Men: Children of the Atom (Euro 950105 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1995, mshud, msh, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Marvel Super Heroes (US 951024 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1995, cybotsud, cybots, dead_cps2, cybots, cps_state, cps2, ROT0, "bootleg", "Cyberbots: Fullmetal Madness (USA 950424 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1995, cybotsjd, cybots, dead_cps2, cybots, cps_state, cps2, ROT0, "bootleg", "Cyberbots: Fullmetal Madness (Japan 950424) (decrypted bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1995, nwarrud, nwarr, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Night Warriors: Darkstalkers' Revenge (USA 950406 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sfad, sfa, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Alpha: Warriors' Dreams (Euro 950727 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1996, 19xxd, 19xx, dead_cps2, cps2_2p2b, cps_state, cps2, ROT270, "bootleg", "19XX: The War Against Destiny (USA 951207 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1996, ddsomud, ddsom, dead_cps2, cps2_4p4b, cps_state, cps2, ROT0, "bootleg", "Dungeons & Dragons: Shadow over Mystara (USA 960619 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1996, gigaman2, megaman2, gigaman2, cps2_2p3b, cps_state, gigaman2,ROT0, "bootleg", "Giga Man 2: The Power Fighters (bootleg of Mega Man 2: The Power Fighters)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // different layer offsets and sound system
-GAME( 1996, megamn2d, megaman2, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Mega Man 2: The Power Fighters (USA 960708 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2ad, sfa2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Zero 2 (Asia 960227 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2jd, sfa2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Zero 2 (Japan 960227 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1996, spf2td, spf2t, dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "bootleg", "Super Puzzle Fighter II Turbo (USA 960620 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1996, spf2xjd, spf2t, dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "bootleg", "Super Puzzle Fighter II X (Japan 960531 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1996, sfz2ald, sfz2al, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Zero 2 Alpha (Asia 960826 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xmvsfu1d, xmvsf, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "X-Men Vs. Street Fighter (USA 961004 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1997, batcird, batcir, dead_cps2, cps2_4p2b, cps_state, cps2, ROT0, "bootleg", "Battle Circuit (Euro 970319 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1997, csclub1d, csclub, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Capcom Sports Club (Euro 970722 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1997, mshvsfu1d,mshvsf, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Marvel Super Heroes Vs. Street Fighter (USA 970625 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1997, sgemfd, sgemf, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Super Gem Fighter Mini Mix (USA 970904 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vsavd, vsav, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Vampire Savior: The Lord of Vampire (Euro 970519 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vhunt2d, vhunt2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1997, vsav2d, vsav2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Vampire Savior 2: The Lord of Vampire (Japan 970913 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1998, mvscud, mvsc, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Marvel Vs. Capcom: Clash of Super Heroes (USA 980123 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfa3ud, sfa3, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Alpha 3 (USA 980904 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1998, sfz3jr2d, sfa3, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Zero 3 (Japan 980629 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1999, gigawingd, gigawing,dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "bootleg", "Giga Wing (USA 990222 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1999, gigawingjd,gigawing,dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "bootleg", "Giga Wing (Japan 990223 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 2000, 1944d, 1944, dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "bootleg", "1944: The Loop Master (USA 000620 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 2000, dimahoud, dimahoo, dead_cps2, cps2_2p3b, cps_state, cps2, ROT270, "bootleg", "Dimahoo (USA 000121 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 2000, mmatrixd, mmatrix, dead_cps2, cps2_2p1b, cps_state, cps2, ROT0, "bootleg", "Mars Matrix: Hyper Solid Shooting (USA 000412 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 2001, progearud, progear, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Progear (USA 010117 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 2001, progearjd, progear, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Progear no Arashi (Japan 010117 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 2001, progearjbl,progear, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Progear no Arashi (Japan 010117) (decrypted bootleg)", GAME_SUPPORTS_SAVE ) // not an actual phoenix set, but works as one
-GAME( 2004, hsf2d, hsf2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Hyper Street Fighter II: The Anniversary Edition (Asia 040202 Phoenix Edition) (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1993, ddtodd, ddtod, dead_cps2, cps2_4p4b, cps_state, cps2, ROT0, "bootleg", "Dungeons & Dragons: Tower of Doom (Euro 940412 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ecofghtrd,ecofghtr, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Eco Fighters (World 931203 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2ud, ssf2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Super Street Fighter II: The New Challengers (USA 930911 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, ssf2tbd, ssf2, dead_cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "bootleg", "Super Street Fighter II: The Tournament Battle (World 931119 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, armwar1d, armwar, dead_cps2, cps2_3p3b, cps_state, cps2, ROT0, "bootleg", "Armored Warriors (Euro 941011 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, avspd, avsp, dead_cps2, cps2_3p3b, cps_state, cps2, ROT0, "bootleg", "Alien vs. Predator (Euro 940520 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, dstlku1d, dstlk, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Darkstalkers: The Night Warriors (USA 940705 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ringdstd, ringdest, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Ring of Destruction: Slammasters II (Euro 940902 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2tad, ssf2t, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Super Street Fighter II Turbo (Asia 940223 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, ssf2xjd, ssf2t, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Super Street Fighter II X: Grand Master Challenge (Japan 940223 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, xmcotar1d,xmcota, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "X-Men: Children of the Atom (Euro 950105 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, mshud, msh, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Marvel Super Heroes (US 951024 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, cybotsud, cybots, dead_cps2, cybots, cps_state, cps2, ROT0, "bootleg", "Cyberbots: Fullmetal Madness (USA 950424 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, cybotsjd, cybots, dead_cps2, cybots, cps_state, cps2, ROT0, "bootleg", "Cyberbots: Fullmetal Madness (Japan 950424) (decrypted bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, nwarrud, nwarr, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Night Warriors: Darkstalkers' Revenge (USA 950406 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sfad, sfa, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Alpha: Warriors' Dreams (Euro 950727 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, 19xxd, 19xx, dead_cps2, cps2_2p2b, cps_state, cps2, ROT270, "bootleg", "19XX: The War Against Destiny (USA 951207 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, ddsomud, ddsom, dead_cps2, cps2_4p4b, cps_state, cps2, ROT0, "bootleg", "Dungeons & Dragons: Shadow over Mystara (USA 960619 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, gigaman2, megaman2, gigaman2, cps2_2p3b, cps_state, gigaman2,ROT0, "bootleg", "Giga Man 2: The Power Fighters (bootleg of Mega Man 2: The Power Fighters)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // different layer offsets and sound system
+GAME( 1996, megamn2d, megaman2, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Mega Man 2: The Power Fighters (USA 960708 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2ad, sfa2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Zero 2 (Asia 960227 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2jd, sfa2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Zero 2 (Japan 960227 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, spf2td, spf2t, dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "bootleg", "Super Puzzle Fighter II Turbo (USA 960620 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, spf2xjd, spf2t, dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "bootleg", "Super Puzzle Fighter II X (Japan 960531 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, sfz2ald, sfz2al, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Zero 2 Alpha (Asia 960826 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xmvsfu1d, xmvsf, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "X-Men Vs. Street Fighter (USA 961004 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, batcird, batcir, dead_cps2, cps2_4p2b, cps_state, cps2, ROT0, "bootleg", "Battle Circuit (Euro 970319 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, csclub1d, csclub, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Capcom Sports Club (Euro 970722 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, mshvsfu1d,mshvsf, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Marvel Super Heroes Vs. Street Fighter (USA 970625 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, sgemfd, sgemf, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Super Gem Fighter Mini Mix (USA 970904 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vsavd, vsav, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Vampire Savior: The Lord of Vampire (Euro 970519 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vhunt2d, vhunt2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, vsav2d, vsav2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Vampire Savior 2: The Lord of Vampire (Japan 970913 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, mvscud, mvsc, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Marvel Vs. Capcom: Clash of Super Heroes (USA 980123 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfa3ud, sfa3, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Alpha 3 (USA 980904 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, sfz3jr2d, sfa3, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Street Fighter Zero 3 (Japan 980629 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, gigawingd, gigawing,dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "bootleg", "Giga Wing (USA 990222 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, gigawingjd,gigawing,dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "bootleg", "Giga Wing (Japan 990223 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, 1944d, 1944, dead_cps2, cps2_2p2b, cps_state, cps2, ROT0, "bootleg", "1944: The Loop Master (USA 000620 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, dimahoud, dimahoo, dead_cps2, cps2_2p3b, cps_state, cps2, ROT270, "bootleg", "Dimahoo (USA 000121 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, mmatrixd, mmatrix, dead_cps2, cps2_2p1b, cps_state, cps2, ROT0, "bootleg", "Mars Matrix: Hyper Solid Shooting (USA 000412 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, progearud, progear, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Progear (USA 010117 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, progearjd, progear, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Progear no Arashi (Japan 010117 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, progearjbl,progear, dead_cps2, cps2_2p3b, cps_state, cps2, ROT0, "bootleg", "Progear no Arashi (Japan 010117) (decrypted bootleg)", MACHINE_SUPPORTS_SAVE ) // not an actual phoenix set, but works as one
+GAME( 2004, hsf2d, hsf2, dead_cps2, cps2_2p6b, cps_state, cps2, ROT0, "bootleg", "Hyper Street Fighter II: The Anniversary Edition (Asia 040202 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cps3.c b/src/mame/drivers/cps3.c
index d9b3c214524..0ceb465acb9 100644
--- a/src/mame/drivers/cps3.c
+++ b/src/mame/drivers/cps3.c
@@ -1011,7 +1011,7 @@ void cps3_state::cps3_draw_tilemapsprite_line(int tmnum, int drawline, bitmap_rg
UINT32 cps3_state::screen_update_cps3(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
int y,x, count;
- attoseconds_t period = screen.frame_period().attoseconds;
+ attoseconds_t period = screen.frame_period().attoseconds();
rectangle visarea = screen.visible_area();
int bg_drawn[4] = { 0, 0, 0, 0 };
@@ -3838,12 +3838,12 @@ ROM_END
/* Red Earth / Warzard */
// 961121
-GAME( 1996, redearth, 0, redearth, cps3_re, cps3_state, redearth, ROT0, "Capcom", "Red Earth (Euro 961121)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1996, warzard, redearth, redearth, cps3_re, cps3_state, redearth, ROT0, "Capcom", "Warzard (Japan 961121)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1996, redearth, 0, redearth, cps3_re, cps3_state, redearth, ROT0, "Capcom", "Red Earth (Euro 961121)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, warzard, redearth, redearth, cps3_re, cps3_state, redearth, ROT0, "Capcom", "Warzard (Japan 961121)", MACHINE_IMPERFECT_GRAPHICS )
// 961023
-GAME( 1996, redearthr1,redearth, redearth, cps3_re, cps3_state, redearth, ROT0, "Capcom", "Red Earth (Euro 961023)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1996, warzardr1, redearth, redearth, cps3_re, cps3_state, redearth, ROT0, "Capcom", "Warzard (Japan 961023)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1996, redearthr1,redearth, redearth, cps3_re, cps3_state, redearth, ROT0, "Capcom", "Red Earth (Euro 961023)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, warzardr1, redearth, redearth, cps3_re, cps3_state, redearth, ROT0, "Capcom", "Warzard (Japan 961023)", MACHINE_IMPERFECT_GRAPHICS )
/* Street Fighter III: New Generation */
@@ -3854,13 +3854,13 @@ GAME( 1996, warzardr1, redearth, redearth, cps3_re, cps3_state, redearth, ROT0
// not dumped
// 970204
-GAME( 1997, sfiii, 0, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Euro 970204)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, sfiiiu, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (USA 970204)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, sfiiia, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, sfiiij, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Japan 970204)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, sfiiih, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Hispanic 970204)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, sfiiin, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204, NO CD, bios set 1)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, sfiiina, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204, NO CD, bios set 2)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiii, 0, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Euro 970204)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiiiu, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (USA 970204)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiiia, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiiij, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Japan 970204)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiiih, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Hispanic 970204)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiiin, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204, NO CD, bios set 1)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, sfiiina, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0, "Capcom", "Street Fighter III: New Generation (Asia 970204, NO CD, bios set 2)", MACHINE_IMPERFECT_GRAPHICS )
/* Street Fighter III 2nd Impact: Giant Attack */
@@ -3868,58 +3868,58 @@ GAME( 1997, sfiiina, sfiii, sfiii, cps3, cps3_state, sfiii, ROT0
// not dumped
// 970930
-GAMEL(1997, sfiii2, 0, sfiii2, cps3, cps3_state, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (USA 970930)", GAME_IMPERFECT_GRAPHICS, layout_sfiii2 ) // layout is for widescreen support
-GAMEL(1997, sfiii2j, sfiii2, sfiii2, cps3, cps3_state, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Japan 970930)", GAME_IMPERFECT_GRAPHICS, layout_sfiii2 )
-GAMEL(1997, sfiii2n, sfiii2, sfiii2, cps3, cps3_state, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Asia 970930, NO CD)", GAME_IMPERFECT_GRAPHICS, layout_sfiii2 )
+GAMEL(1997, sfiii2, 0, sfiii2, cps3, cps3_state, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (USA 970930)", MACHINE_IMPERFECT_GRAPHICS, layout_sfiii2 ) // layout is for widescreen support
+GAMEL(1997, sfiii2j, sfiii2, sfiii2, cps3, cps3_state, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Japan 970930)", MACHINE_IMPERFECT_GRAPHICS, layout_sfiii2 )
+GAMEL(1997, sfiii2n, sfiii2, sfiii2, cps3, cps3_state, sfiii2, ROT0, "Capcom", "Street Fighter III 2nd Impact: Giant Attack (Asia 970930, NO CD)", MACHINE_IMPERFECT_GRAPHICS, layout_sfiii2 )
/* JoJo's Venture / JoJo no Kimyou na Bouken */
// 990128
-GAME( 1998, jojo, 0, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (USA 990128)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, jojoj, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 990128)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, jojon, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (Asia 990128, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1998, jojo, 0, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (USA 990128)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, jojoj, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 990128)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, jojon, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (Asia 990128, NO CD)", MACHINE_IMPERFECT_GRAPHICS )
// 990108
-GAME( 1998, jojor1, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (USA 990108)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, jojojr1, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 990108)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, jojonr1, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (Asia 990108, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1998, jojor1, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (USA 990108)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, jojojr1, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 990108)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, jojonr1, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (Asia 990108, NO CD)", MACHINE_IMPERFECT_GRAPHICS )
// 981202
-GAME( 1998, jojor2, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (USA 981202)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, jojojr2, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 981202)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1998, jojonr2, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (Asia 981202, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1998, jojor2, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (USA 981202)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, jojojr2, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo no Kimyou na Bouken (Japan 981202)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1998, jojonr2, jojo, jojo, cps3_jojo, cps3_state, jojo, ROT0, "Capcom", "JoJo's Venture (Asia 981202, NO CD)", MACHINE_IMPERFECT_GRAPHICS )
/* Street Fighter III 3rd Strike: Fight for the Future */
// 990608
-GAME( 1999, sfiii3, 0, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Euro 990608)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, sfiii3u, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA 990608)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, sfiii3n, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990608, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, sfiii3, 0, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Euro 990608)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, sfiii3u, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA 990608)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, sfiii3n, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990608, NO CD)", MACHINE_IMPERFECT_GRAPHICS )
// 990512
-GAME( 1999, sfiii3r1, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Euro 990512)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, sfiii3ur1, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA 990512)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, sfiii3nr1, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990512, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, sfiii3r1, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Euro 990512)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, sfiii3ur1, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (USA 990512)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, sfiii3nr1, sfiii3, sfiii3, cps3, cps3_state, sfiii3, ROT0, "Capcom", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990512, NO CD)", MACHINE_IMPERFECT_GRAPHICS )
/* JoJo's Bizarre Adventure / JoJo no Kimyou na Bouken: Mirai e no Isan */
// 990927
-GAME( 1999, jojoba, 0, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, jojoban, jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927, NO CD)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, jojobane, jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990927, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, jojoba, 0, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, jojoban, jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927, NO CD)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, jojobane, jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990927, NO CD)", MACHINE_IMPERFECT_GRAPHICS )
// 990913
-GAME( 1999, jojobar1, jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, jojobanr1, jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, jojobaner1,jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990913, NO CD)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, jojobar1, jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, jojobanr1, jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913, NO CD)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, jojobaner1,jojoba, jojoba, cps3_jojo, cps3_state, jojoba, ROT0, "Capcom", "JoJo's Bizarre Adventure (Euro 990913, NO CD)", MACHINE_IMPERFECT_GRAPHICS )
// bootlegs, hold START1 during bootup to change games
-GAME( 1999, cps3boot, 0, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, cps3boota, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, cps3boot, 0, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, cps3boota, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart", MACHINE_IMPERFECT_GRAPHICS )
// this doesn't play 2nd Impact despite it being listed. 2nd Impact uses separate data/code encryption and can't be decrypted cleanly for a standard SH2. Selecting it just flashes in a copy of 3rd Strike with the 2nd Impact loading screen
-GAME( 1999, cps3booto, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (older) (New Generation, 3rd Strike, JoJo's Venture, JoJo's Bizarre Adventure and Red Earth only)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, cps3booto, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "CPS3 Multi-game bootleg for HD6417095 type SH2 (older) (New Generation, 3rd Strike, JoJo's Venture, JoJo's Bizarre Adventure and Red Earth only)", MACHINE_IMPERFECT_GRAPHICS )
// this does not play Red Earth or the 2 Jojo games. New Generation and 3rd Strike have been heavily modified to work with the separate code/data encryption a dead cart / 2nd Impact cart has. Selecting the other games will give an 'invalid CD' message.
-GAME( 1999, cps3bootoa, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (older) (New Generation, 2nd Impact and 3rd Strike only)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1999, cps3bootoa, cps3boot, sfiii3, cps3_jojo, cps3_state, sfiii2, ROT0, "bootleg", "CPS3 Multi-game bootleg for dead security cart (older) (New Generation, 2nd Impact and 3rd Strike only)", MACHINE_IMPERFECT_GRAPHICS )
// these are test bootleg CDs for running 2nd Impact on a standard SH2
-GAME( 1999, cps3bs32, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, V3)", GAME_IMPERFECT_GRAPHICS )
-GAME( 1999, cps3bs32a, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, older)", GAME_IMPERFECT_GRAPHICS ) // older / buggier hack
+GAME( 1999, cps3bs32, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, V3)", MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1999, cps3bs32a, cps3boot, sfiii3, cps3_jojo, cps3_state, cps3boot, ROT0, "bootleg", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, older)", MACHINE_IMPERFECT_GRAPHICS ) // older / buggier hack
diff --git a/src/mess/drivers/craft.c b/src/mame/drivers/craft.c
index 65234c728d7..c741caca2e2 100644
--- a/src/mess/drivers/craft.c
+++ b/src/mame/drivers/craft.c
@@ -1,10 +1,12 @@
// license:BSD-3-Clause
// copyright-holders:Ryan Holtz
-/*\
-* * Linus Akesson's "Craft"
-* *
-* * Driver by MooglyGuy
-\*/
+/**********************************************************************
+
+ "Craft" demo platform by Linus Akesson
+
+ driver by Ryan Holtz
+
+ **********************************************************************/
#include "emu.h"
#include "cpu/avr8/avr8.h"
@@ -266,4 +268,4 @@ ROM_START( craft )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-CONS(2008, craft, 0, 0, craft, craft, craft_state, craft, "Linus Akesson", "Craft", GAME_NOT_WORKING)
+CONS(2008, craft, 0, 0, craft, craft, craft_state, craft, "Linus Akesson", "Craft", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/crbaloon.c b/src/mame/drivers/crbaloon.c
index 618dd94e89b..1e52406c0e7 100644
--- a/src/mame/drivers/crbaloon.c
+++ b/src/mame/drivers/crbaloon.c
@@ -434,5 +434,5 @@ ROM_END
*
*************************************/
-GAME( 1980, crbaloon, 0, crbaloon, crbaloon, driver_device, 0, ROT90, "Taito Corporation", "Crazy Balloon (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, crbaloon2,crbaloon, crbaloon, crbaloon, driver_device, 0, ROT90, "Taito Corporation", "Crazy Balloon (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1980, crbaloon, 0, crbaloon, crbaloon, driver_device, 0, ROT90, "Taito Corporation", "Crazy Balloon (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, crbaloon2,crbaloon, crbaloon, crbaloon, driver_device, 0, ROT90, "Taito Corporation", "Crazy Balloon (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/crgolf.c b/src/mame/drivers/crgolf.c
index c5b71fe49f8..060bc6da67e 100644
--- a/src/mame/drivers/crgolf.c
+++ b/src/mame/drivers/crgolf.c
@@ -598,9 +598,9 @@ DRIVER_INIT_MEMBER(crgolf_state,crgolfhi)
*
*************************************/
-GAME( 1984, crgolf, 0, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Crowns Golf (834-5419-04)", GAME_SUPPORTS_SAVE )
-GAME( 1984, crgolfa, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Crowns Golf (834-5419-03)", GAME_SUPPORTS_SAVE )
-GAME( 1984, crgolfb, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Crowns Golf (set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1984, crgolfc, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Champion Golf", GAME_SUPPORTS_SAVE )
-GAME( 1984, crgolfbt, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "bootleg", "Champion Golf (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1985, crgolfhi, 0, crgolfhi, crgolf, crgolf_state, crgolfhi, ROT0, "Nasco Japan", "Crowns Golf in Hawaii" , GAME_SUPPORTS_SAVE )
+GAME( 1984, crgolf, 0, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Crowns Golf (834-5419-04)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, crgolfa, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Crowns Golf (834-5419-03)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, crgolfb, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Crowns Golf (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, crgolfc, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "Nasco Japan", "Champion Golf", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, crgolfbt, crgolf, crgolf, crgolf, driver_device, 0, ROT0, "bootleg", "Champion Golf (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, crgolfhi, 0, crgolfhi, crgolf, crgolf_state, crgolfhi, ROT0, "Nasco Japan", "Crowns Golf in Hawaii" , MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/crimfght.c b/src/mame/drivers/crimfght.c
index c9530fa4354..febda7d58ff 100644
--- a/src/mame/drivers/crimfght.c
+++ b/src/mame/drivers/crimfght.c
@@ -16,16 +16,10 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/m6809/konami.h" /* for the callback and the firq irq definition */
-
#include "sound/2151intf.h"
#include "includes/konamipt.h"
#include "includes/crimfght.h"
-INTERRUPT_GEN_MEMBER(crimfght_state::crimfght_interrupt)
-{
- if (m_k051960->k051960_is_irq_enabled())
- device.execute().set_input_line(KONAMI_IRQ_LINE, HOLD_LINE);
-}
WRITE8_MEMBER(crimfght_state::crimfght_coin_w)
{
@@ -33,23 +27,6 @@ WRITE8_MEMBER(crimfght_state::crimfght_coin_w)
coin_counter_w(machine(), 1, data & 2);
}
-WRITE8_MEMBER(crimfght_state::crimfght_sh_irqtrigger_w)
-{
- soundlatch_byte_w(space, offset, data);
- m_audiocpu->set_input_line(0, HOLD_LINE);
-}
-
-WRITE8_MEMBER(crimfght_state::crimfght_snd_bankswitch_w)
-{
- /* b1: bank for channel A */
- /* b0: bank for channel B */
-
- int bank_A = BIT(data, 1);
- int bank_B = BIT(data, 0);
-
- m_k007232->set_bank(bank_A, bank_B );
-}
-
READ8_MEMBER(crimfght_state::k052109_051960_r)
{
if (m_k052109->get_rmrd_line() == CLEAR_LINE)
@@ -75,11 +52,35 @@ WRITE8_MEMBER(crimfght_state::k052109_051960_w)
m_k051960->k051960_w(space, offset - 0x3c00, data);
}
-/********************************************/
+WRITE8_MEMBER(crimfght_state::sound_w)
+{
+ // writing the latch asserts the irq line
+ soundlatch_write(0, data);
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
+}
+
+IRQ_CALLBACK_MEMBER( crimfght_state::audiocpu_irq_ack )
+{
+ // irq ack cycle clears irq via flip-flop u86
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
+ return 0xff;
+}
+
+WRITE8_MEMBER(crimfght_state::ym2151_ct_w)
+{
+ // ne output from the 007232 is connected to a ls399 which
+ // has inputs connected to the ct1 and ct2 outputs from
+ // the ym2151 used to select the bank
+
+ int bank_a = BIT(data, 1);
+ int bank_b = BIT(data, 0);
+
+ m_k007232->set_bank(bank_a, bank_b);
+}
static ADDRESS_MAP_START( crimfght_map, AS_PROGRAM, 8, crimfght_state )
- AM_RANGE(0x0000, 0x03ff) AM_RAMBANK("bank1") /* banked RAM */
- AM_RANGE(0x0400, 0x1fff) AM_RAM /* RAM */
+ AM_RANGE(0x0000, 0x03ff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
+ AM_RANGE(0x0400, 0x1fff) AM_RAM
AM_RANGE(0x3f80, 0x3f80) AM_READ_PORT("SYSTEM")
AM_RANGE(0x3f81, 0x3f81) AM_READ_PORT("P1")
AM_RANGE(0x3f82, 0x3f82) AM_READ_PORT("P2")
@@ -88,19 +89,25 @@ static ADDRESS_MAP_START( crimfght_map, AS_PROGRAM, 8, crimfght_state )
AM_RANGE(0x3f85, 0x3f85) AM_READ_PORT("P3")
AM_RANGE(0x3f86, 0x3f86) AM_READ_PORT("P4")
AM_RANGE(0x3f87, 0x3f87) AM_READ_PORT("DSW1")
- AM_RANGE(0x3f88, 0x3f88) AM_READ(watchdog_reset_r) AM_WRITE(crimfght_coin_w) /* watchdog reset */
- AM_RANGE(0x3f8c, 0x3f8c) AM_WRITE(crimfght_sh_irqtrigger_w) /* cause interrupt on audio CPU? */
+ AM_RANGE(0x3f88, 0x3f88) AM_MIRROR(0x03) AM_READ(watchdog_reset_r) AM_WRITE(crimfght_coin_w) // 051550
+ AM_RANGE(0x3f8c, 0x3f8c) AM_MIRROR(0x03) AM_WRITE(sound_w)
AM_RANGE(0x2000, 0x5fff) AM_READWRITE(k052109_051960_r, k052109_051960_w) /* video RAM + sprite RAM */
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank2") /* banked ROM */
- AM_RANGE(0x8000, 0xffff) AM_ROM /* ROM */
+ AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("rombank") /* banked ROM */
+ AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x18000)
ADDRESS_MAP_END
+static ADDRESS_MAP_START( bank0000_map, AS_PROGRAM, 8, crimfght_state )
+ AM_RANGE(0x0000, 0x03ff) AM_RAM
+ AM_RANGE(0x0400, 0x07ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
+ADDRESS_MAP_END
+
+// full memory map derived from schematics
static ADDRESS_MAP_START( crimfght_sound_map, AS_PROGRAM, 8, crimfght_state )
- AM_RANGE(0x0000, 0x7fff) AM_ROM /* ROM 821l01.h4 */
- AM_RANGE(0x8000, 0x87ff) AM_RAM /* RAM */
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) /* YM2151 */
- AM_RANGE(0xc000, 0xc000) AM_READ(soundlatch_byte_r) /* soundlatch_byte_r */
- AM_RANGE(0xe000, 0xe00d) AM_DEVREADWRITE("k007232", k007232_device, read, write) /* 007232 registers */
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0x87ff) AM_MIRROR(0x1800) AM_RAM
+ AM_RANGE(0xa000, 0xa001) AM_MIRROR(0x1ffe) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
+ AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fff) AM_READ(soundlatch_byte_r)
+ AM_RANGE(0xe000, 0xe00f) AM_MIRROR(0x1ff0) AM_DEVREADWRITE("k007232", k007232_device, read, write)
ADDRESS_MAP_END
/***************************************************************************
@@ -111,48 +118,64 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( crimfght )
PORT_START("DSW1")
- PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
- PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ) )
- PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0x04, DEF_STR( 3C_2C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 4C_3C ) )
- PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 3C_4C ) )
- PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ) )
- PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) )
- PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ) )
- PORT_DIPSETTING( 0x09, DEF_STR( 1C_7C ) )
- PORT_DIPSETTING( 0x00, "1 Coin/99 Credits" )
- PORT_DIPUNUSED_DIPLOC( 0xf0, 0xf0, "SW1:5,6,7,8" ) /* Manual says these are unused */
+ PORT_DIPNAME(0x0f, 0x0f, DEF_STR( Coin_A )) PORT_DIPLOCATION("SW1:1,2,3,4")
+ PORT_DIPSETTING( 0x02, DEF_STR( 4C_1C ))
+ PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ))
+ PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ))
+ PORT_DIPSETTING( 0x04, DEF_STR( 3C_2C ))
+ PORT_DIPSETTING( 0x01, DEF_STR( 4C_3C ))
+ PORT_DIPSETTING( 0x0f, DEF_STR( 1C_1C ))
+ PORT_DIPSETTING( 0x03, DEF_STR( 3C_4C ))
+ PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C ))
+ PORT_DIPSETTING( 0x0e, DEF_STR( 1C_2C ))
+ PORT_DIPSETTING( 0x06, DEF_STR( 2C_5C ))
+ PORT_DIPSETTING( 0x0d, DEF_STR( 1C_3C ))
+ PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ))
+ PORT_DIPSETTING( 0x0b, DEF_STR( 1C_5C ))
+ PORT_DIPSETTING( 0x0a, DEF_STR( 1C_6C ))
+ PORT_DIPSETTING( 0x09, DEF_STR( 1C_7C ))
+ PORT_DIPSETTING( 0x00, "Void")
+ PORT_DIPNAME(0xf0, 0x00, "Coin B (unused)") PORT_DIPLOCATION("SW1:5,6,7,8")
+ PORT_DIPSETTING( 0x20, DEF_STR( 4C_1C ))
+ PORT_DIPSETTING( 0x50, DEF_STR( 3C_1C ))
+ PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ))
+ PORT_DIPSETTING( 0x40, DEF_STR( 3C_2C ))
+ PORT_DIPSETTING( 0x10, DEF_STR( 4C_3C ))
+ PORT_DIPSETTING( 0xf0, DEF_STR( 1C_1C ))
+ PORT_DIPSETTING( 0x30, DEF_STR( 3C_4C ))
+ PORT_DIPSETTING( 0x70, DEF_STR( 2C_3C ))
+ PORT_DIPSETTING( 0xe0, DEF_STR( 1C_2C ))
+ PORT_DIPSETTING( 0x60, DEF_STR( 2C_5C ))
+ PORT_DIPSETTING( 0xd0, DEF_STR( 1C_3C ))
+ PORT_DIPSETTING( 0xc0, DEF_STR( 1C_4C ))
+ PORT_DIPSETTING( 0xb0, DEF_STR( 1C_5C ))
+ PORT_DIPSETTING( 0xa0, DEF_STR( 1C_6C ))
+ PORT_DIPSETTING( 0x90, DEF_STR( 1C_7C ))
+ PORT_DIPSETTING( 0x00, "Void")
PORT_START("DSW2")
- PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW2:1" ) /* Manual says these are unused */
- PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW2:2" ) /* Manual says these are unused */
- PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW2:3" ) /* Manual says these are unused */
- PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW2:4" ) /* Manual says these are unused */
- PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW2:5" ) /* Manual says these are unused */
- PORT_DIPNAME( 0x60, 0x40, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,7")
- PORT_DIPSETTING( 0x60, DEF_STR( Easy ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Normal ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Difficult ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Very_Difficult ) )
- PORT_DIPNAME( 0x80, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPUNUSED_DIPLOC(0x01, 0x01, "SW2:1")
+ PORT_DIPUNUSED_DIPLOC(0x02, 0x02, "SW2:2")
+ PORT_DIPUNUSED_DIPLOC(0x04, 0x04, "SW2:3")
+ PORT_DIPUNUSED_DIPLOC(0x08, 0x08, "SW2:4")
+ PORT_DIPUNUSED_DIPLOC(0x10, 0x10, "SW2:5")
+ PORT_DIPNAME(0x60, 0x40, DEF_STR( Difficulty )) PORT_DIPLOCATION("SW2:6,7")
+ PORT_DIPSETTING( 0x60, DEF_STR( Easy ))
+ PORT_DIPSETTING( 0x40, DEF_STR( Normal ))
+ PORT_DIPSETTING( 0x20, DEF_STR( Difficult ))
+ PORT_DIPSETTING( 0x00, DEF_STR( Very_Difficult ))
+ PORT_DIPNAME(0x80, 0x00, DEF_STR( Demo_Sounds )) PORT_DIPLOCATION("SW2:8")
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ))
+ PORT_DIPSETTING( 0x00, DEF_STR( On ))
PORT_START("DSW3")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW3:1")
- PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW3:2" ) /* Manual says these are unused */
- PORT_SERVICE_DIPLOC( 0x04, IP_ACTIVE_HIGH, "SW3:3" )
- PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW3:4" ) /* Manual says these are unused */
- PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_DIPNAME(0x01, 0x01, DEF_STR( Flip_Screen )) PORT_DIPLOCATION("SW3:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ))
+ PORT_DIPSETTING( 0x00, DEF_STR( On ))
+ PORT_DIPUNUSED_DIPLOC(0x02, IP_ACTIVE_LOW, "SW3:2")
+ PORT_SERVICE_DIPLOC( 0x04, IP_ACTIVE_LOW, "SW3:3")
+ PORT_DIPUNUSED_DIPLOC(0x08, IP_ACTIVE_LOW, "SW3:4")
+ PORT_BIT(0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, crimfght_state, system_r, 0)
PORT_START("P1")
KONAMI8_B12_UNK(1)
@@ -167,14 +190,14 @@ static INPUT_PORTS_START( crimfght )
KONAMI8_B12_UNK(4)
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN3 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN4 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE2 )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SERVICE3 )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE4 )
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_COIN1)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_COIN2)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_COIN3)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_COIN4)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_SERVICE1)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_SERVICE2)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_SERVICE3)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_SERVICE4)
INPUT_PORTS_END
static INPUT_PORTS_START( crimfghtj )
@@ -226,28 +249,35 @@ WRITE8_MEMBER(crimfght_state::volume_callback)
void crimfght_state::machine_start()
{
- UINT8 *ROM = memregion("maincpu")->base();
-
- membank("bank2")->configure_entries(0, 12, &ROM[0x10000], 0x2000);
- membank("bank2")->set_entry(0);
+ m_rombank->configure_entries(0, 16, memregion("maincpu")->base(), 0x2000);
+ m_rombank->set_entry(0);
}
WRITE8_MEMBER( crimfght_state::banking_callback )
{
+ m_rombank->set_entry(data & 0x0f);
+
/* bit 5 = select work RAM or palette */
- if (data & 0x20)
- {
- m_maincpu->space(AS_PROGRAM).install_read_bank(0x0000, 0x03ff, "bank3");
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x0000, 0x03ff, write8_delegate(FUNC(palette_device::write), m_palette.target()));
- membank("bank3")->set_base(&m_paletteram[0]);
- }
- else
- m_maincpu->space(AS_PROGRAM).install_readwrite_bank(0x0000, 0x03ff, "bank1"); /* RAM */
+ m_woco = BIT(data, 5);
+ m_bank0000->set_bank(m_woco);
/* bit 6 = enable char ROM reading through the video RAM */
- m_k052109->set_rmrd_line((data & 0x40) ? ASSERT_LINE : CLEAR_LINE);
+ m_rmrd = BIT(data, 6);
+ m_k052109->set_rmrd_line(m_rmrd ? ASSERT_LINE : CLEAR_LINE);
+
+ m_init = BIT(data, 7);
+}
- membank("bank2")->set_entry(data & 0x0f);
+CUSTOM_INPUT_MEMBER( crimfght_state::system_r )
+{
+ UINT8 data = 0;
+
+ data |= 1 << 4; // VCC
+ data |= m_woco << 5;
+ data |= m_rmrd << 6;
+ data |= m_init << 7;
+
+ return data >> 4;
}
static MACHINE_CONFIG_START( crimfght, crimfght_state )
@@ -255,18 +285,24 @@ static MACHINE_CONFIG_START( crimfght, crimfght_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/8) /* 052001 (verified on pcb) */
MCFG_CPU_PROGRAM_MAP(crimfght_map)
- MCFG_CPU_VBLANK_INT_DRIVER("screen", crimfght_state, crimfght_interrupt)
MCFG_KONAMICPU_LINE_CB(WRITE8(crimfght_state, banking_callback))
MCFG_CPU_ADD("audiocpu", Z80, XTAL_3_579545MHz) /* verified on pcb */
MCFG_CPU_PROGRAM_MAP(crimfght_sound_map)
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(DEVICE_SELF, crimfght_state, audiocpu_irq_ack)
+
+ MCFG_DEVICE_ADD("bank0000", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(bank0000_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_BIG)
+ MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(8)
+ MCFG_ADDRESS_MAP_BANK_ADDRBUS_WIDTH(11)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x400)
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(12*8-2, (64-12)*8-3, 2*8, 30*8-1 )
+ MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/3, 528, 96, 416, 256, 16, 240) // measured 59.17
+// 6MHz dotclock is more realistic, however needs drawing updates. replace when ready
+// MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz/4, 396, hbend, hbstart, 256, 16, 240)
MCFG_SCREEN_UPDATE_DRIVER(crimfght_state, screen_update_crimfght)
MCFG_SCREEN_PALETTE("palette")
@@ -280,13 +316,15 @@ static MACHINE_CONFIG_START( crimfght, crimfght_state )
MCFG_DEVICE_ADD("k051960", K051960, 0)
MCFG_GFX_PALETTE("palette")
+ MCFG_K051960_SCREEN_TAG("screen")
MCFG_K051960_CB(crimfght_state, sprite_callback)
+ MCFG_K051960_IRQ_HANDLER(INPUTLINE("maincpu", KONAMI_IRQ_LINE))
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
- MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(crimfght_state,crimfght_snd_bankswitch_w))
+ MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(crimfght_state, ym2151_ct_w))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
@@ -305,9 +343,8 @@ MACHINE_CONFIG_END
***************************************************************************/
ROM_START( crimfght )
- ROM_REGION( 0x28000, "maincpu", 0 ) /* code + banked roms */
- ROM_LOAD( "821l02.f24", 0x10000, 0x18000, CRC(588e7da6) SHA1(285febb3bcca31f82b34af3695a59eafae01cd30) )
- ROM_CONTINUE( 0x08000, 0x08000 )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* code + banked roms */
+ ROM_LOAD( "821l02.f24", 0x00000, 0x20000, CRC(588e7da6) SHA1(285febb3bcca31f82b34af3695a59eafae01cd30) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
@@ -328,9 +365,8 @@ ROM_START( crimfght )
ROM_END
ROM_START( crimfghtj )
- ROM_REGION( 0x28000, "maincpu", 0 ) /* code + banked roms */
- ROM_LOAD( "821p02.f24", 0x10000, 0x18000, CRC(f33fa2e1) SHA1(00fc9e8250fa51386f3af2fca0f137bec9e1c220) )
- ROM_CONTINUE( 0x08000, 0x08000 )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* code + banked roms */
+ ROM_LOAD( "821p02.f24", 0x00000, 0x20000, CRC(f33fa2e1) SHA1(00fc9e8250fa51386f3af2fca0f137bec9e1c220) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
@@ -351,9 +387,8 @@ ROM_START( crimfghtj )
ROM_END
ROM_START( crimfght2 )
-ROM_REGION( 0x28000, "maincpu", 0 ) /* code + banked roms */
- ROM_LOAD( "821r02.f24", 0x10000, 0x18000, CRC(4ecdd923) SHA1(78e5260c4bb9b18d7818fb6300d7e1d3a577fb63) )
- ROM_CONTINUE( 0x08000, 0x08000 )
+ ROM_REGION( 0x20000, "maincpu", 0 ) /* code + banked roms */
+ ROM_LOAD( "821r02.f24", 0x00000, 0x20000, CRC(4ecdd923) SHA1(78e5260c4bb9b18d7818fb6300d7e1d3a577fb63) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the sound CPU */
ROM_LOAD( "821l01.h4", 0x0000, 0x8000, CRC(0faca89e) SHA1(21c9c6d736b398a29e8709e1187c5bf3cacdc99d) )
@@ -379,6 +414,6 @@ ROM_END
***************************************************************************/
-GAME( 1989, crimfght, 0, crimfght, crimfght, driver_device, 0, ROT0, "Konami", "Crime Fighters (US 4 players)", GAME_SUPPORTS_SAVE )
-GAME( 1989, crimfght2, crimfght, crimfght, crimfghtj, driver_device,0, ROT0, "Konami", "Crime Fighters (World 2 Players)", GAME_SUPPORTS_SAVE )
-GAME( 1989, crimfghtj, crimfght, crimfght, crimfghtj, driver_device,0, ROT0, "Konami", "Crime Fighters (Japan 2 Players)", GAME_SUPPORTS_SAVE )
+GAME( 1989, crimfght, 0, crimfght, crimfght, driver_device, 0, ROT0, "Konami", "Crime Fighters (US 4 players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, crimfght2, crimfght, crimfght, crimfghtj, driver_device,0, ROT0, "Konami", "Crime Fighters (World 2 Players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, crimfghtj, crimfght, crimfght, crimfghtj, driver_device,0, ROT0, "Konami", "Crime Fighters (Japan 2 Players)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/crospang.c b/src/mame/drivers/crospang.c
index b275e1602b7..1cdd1ff9f83 100644
--- a/src/mame/drivers/crospang.c
+++ b/src/mame/drivers/crospang.c
@@ -570,6 +570,6 @@ DRIVER_INIT_MEMBER(crospang_state,crospang)
tumblepb_gfx1_rearrange();
}
-GAME( 1998, crospang, 0, crospang, crospang, crospang_state, crospang, ROT0, "F2 System", "Cross Pang", GAME_SUPPORTS_SAVE )
-GAME( 199?, heuksun, 0, crospang, heuksun, crospang_state, crospang, ROT0, "Oksan / F2 System", "Heuk Sun Baek Sa (Korea)", GAME_SUPPORTS_SAVE )
-GAME( 1998, bestri, 0, bestri, bestri, crospang_state, crospang, ROT0, "F2 System", "Bestri (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1998, crospang, 0, crospang, crospang, crospang_state, crospang, ROT0, "F2 System", "Cross Pang", MACHINE_SUPPORTS_SAVE )
+GAME( 199?, heuksun, 0, crospang, heuksun, crospang_state, crospang, ROT0, "Oksan / F2 System", "Heuk Sun Baek Sa (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, bestri, 0, bestri, bestri, crospang_state, crospang, ROT0, "F2 System", "Bestri (Korea)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/crshrace.c b/src/mame/drivers/crshrace.c
index 8521321c258..7cc33cf93a2 100644
--- a/src/mame/drivers/crshrace.c
+++ b/src/mame/drivers/crshrace.c
@@ -572,5 +572,5 @@ DRIVER_INIT_MEMBER(crshrace_state,crshrace2)
}
-GAME( 1993, crshrace, 0, crshrace, crshrace, crshrace_state, crshrace, ROT270, "Video System Co.", "Lethal Crash Race (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1993, crshrace2, crshrace, crshrace, crshrace2, crshrace_state, crshrace2, ROT270, "Video System Co.", "Lethal Crash Race (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1993, crshrace, 0, crshrace, crshrace, crshrace_state, crshrace, ROT270, "Video System Co.", "Lethal Crash Race (set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, crshrace2, crshrace, crshrace, crshrace2, crshrace_state, crshrace2, ROT270, "Video System Co.", "Lethal Crash Race (set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/crvision.c b/src/mame/drivers/crvision.c
index 08250767a2e..e6b26b8d287 100644
--- a/src/mess/drivers/crvision.c
+++ b/src/mame/drivers/crvision.c
@@ -898,6 +898,6 @@ CONS( 1982, wizzard, crvision, 0, pal, crvision, driver_device,
CONS( 1982, rameses, crvision, 0, pal, crvision, driver_device, 0, "Hanimex", "Rameses (Oceania)", 0 )
CONS( 1983, vz2000, crvision, 0, pal, crvision, driver_device, 0, "Dick Smith Electronics", "VZ 2000 (Oceania)", 0 )
CONS( 1983, crvisio2, crvision, 0, pal, crvision, driver_device, 0, "Video Technology", "CreatiVision MK-II (Europe)", 0 )
-//COMP( 1983, lasr2001, 0, 0, lasr2001, lasr2001, driver_device, 0, "Video Technology", "Laser 2001", GAME_NOT_WORKING )
-//COMP( 1983, vz2001, lasr2001, 0, lasr2001, lasr2001, driver_device, 0, "Dick Smith Electronics", "VZ 2001 (Oceania)", GAME_NOT_WORKING )
+//COMP( 1983, lasr2001, 0, 0, lasr2001, lasr2001, driver_device, 0, "Video Technology", "Laser 2001", MACHINE_NOT_WORKING )
+//COMP( 1983, vz2001, lasr2001, 0, lasr2001, lasr2001, driver_device, 0, "Dick Smith Electronics", "VZ 2001 (Oceania)", MACHINE_NOT_WORKING )
COMP( 1983, manager, 0, 0, lasr2001, manager, driver_device, 0, "Salora", "Manager (Finland)", 0 )
diff --git a/src/mame/drivers/crystal.c b/src/mame/drivers/crystal.c
index dee142b553c..2549ba3b0f4 100644
--- a/src/mame/drivers/crystal.c
+++ b/src/mame/drivers/crystal.c
@@ -1133,9 +1133,9 @@ DRIVER_INIT_MEMBER(crystal_state, donghaer)
}
-GAME( 2001, crysbios, 0, crystal, crystal, driver_device, 0, ROT0, "BrezzaSoft", "Crystal System BIOS", GAME_IS_BIOS_ROOT )
+GAME( 2001, crysbios, 0, crystal, crystal, driver_device, 0, ROT0, "BrezzaSoft", "Crystal System BIOS", MACHINE_IS_BIOS_ROOT )
GAME( 2001, crysking, crysbios, crystal, crystal, crystal_state, crysking, ROT0, "BrezzaSoft", "The Crystal of Kings", 0 )
GAME( 2001, evosocc, crysbios, crystal, crystal, crystal_state, evosocc, ROT0, "Evoga", "Evolution Soccer", 0 )
GAME( 2003, topbladv, crysbios, topbladv, crystal, crystal_state, topbladv, ROT0, "SonoKong / Expotato", "Top Blade V", 0 )
-GAME( 2001, officeye, 0, crystal, officeye,crystal_state, officeye, ROT0, "Danbi", "Office Yeo In Cheon Ha (version 1.2)", GAME_NOT_WORKING ) // still has some instability issues
-GAME( 2001, donghaer, 0, crystal, crystal, crystal_state, donghaer, ROT0, "Danbi", "Donggul Donggul Haerong", GAME_NOT_WORKING )
+GAME( 2001, officeye, 0, crystal, officeye,crystal_state, officeye, ROT0, "Danbi", "Office Yeo In Cheon Ha (version 1.2)", MACHINE_NOT_WORKING ) // still has some instability issues
+GAME( 2001, donghaer, 0, crystal, crystal, crystal_state, donghaer, ROT0, "Danbi", "Donggul Donggul Haerong", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/csc.c b/src/mame/drivers/csc.c
index d00a4a4930a..dcf62474038 100644
--- a/src/mess/drivers/csc.c
+++ b/src/mame/drivers/csc.c
@@ -343,4 +343,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 198?, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Chess Challenger (model CSC)", GAME_NOT_WORKING | GAME_NO_SOUND | GAME_SUPPORTS_SAVE | GAME_CLICKABLE_ARTWORK)
+COMP( 198?, csc, 0, 0, csc, csc, driver_device, 0, "Fidelity Electronics", "Champion Chess Challenger (model CSC)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK)
diff --git a/src/mame/drivers/cshooter.c b/src/mame/drivers/cshooter.c
index aeacb6e31be..a720416ea75 100644
--- a/src/mame/drivers/cshooter.c
+++ b/src/mame/drivers/cshooter.c
@@ -635,6 +635,6 @@ DRIVER_INIT_MEMBER(cshooter_state,cshootere)
-GAME( 1987, cshootere, cshooter, airraid, airraid, cshooter_state, cshootere, ROT270, "Seibu Kaihatsu (J.K.H. license)", "Cross Shooter (encrypted)", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
-GAME( 1987, airraid, cshooter, airraid, airraid, cshooter_state, cshootere, ROT270, "Seibu Kaihatsu", "Air Raid (encrypted)", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
+GAME( 1987, cshootere, cshooter, airraid, airraid, cshooter_state, cshootere, ROT270, "Seibu Kaihatsu (J.K.H. license)", "Cross Shooter (encrypted)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
+GAME( 1987, airraid, cshooter, airraid, airraid, cshooter_state, cshootere, ROT270, "Seibu Kaihatsu", "Air Raid (encrypted)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
// There's also an undumped International Games version
diff --git a/src/mame/drivers/csplayh5.c b/src/mame/drivers/csplayh5.c
index 3a4bd6a0c47..0d016cea4d0 100644
--- a/src/mame/drivers/csplayh5.c
+++ b/src/mame/drivers/csplayh5.c
@@ -43,7 +43,11 @@ public:
m_tmp68301(*this, "tmp68301"),
m_v9958(*this, "v9958"),
m_dac1(*this, "dac1"),
- m_dac2(*this, "dac2")
+ m_dac2(*this, "dac2"),
+ m_key(*this, "KEY"),
+ m_region_maincpu(*this, "maincpu"),
+ m_region_audiocpu(*this, "audiocpu"),
+ m_bank1(*this, "bank1")
{ }
required_device<cpu_device> m_maincpu;
@@ -51,6 +55,10 @@ public:
required_device<v9958_device> m_v9958;
required_device<dac_device> m_dac1;
required_device<dac_device> m_dac2;
+ required_ioport_array<5> m_key;
+ required_memory_region m_region_maincpu;
+ required_memory_region m_region_audiocpu;
+ required_memory_bank m_bank1;
UINT16 m_mux_data;
@@ -80,20 +88,15 @@ public:
virtual void machine_reset();
TIMER_DEVICE_CALLBACK_MEMBER(csplayh5_irq);
DECLARE_WRITE_LINE_MEMBER(csplayh5_vdp0_interrupt);
+
+ void general_init(int patchaddress, int patchvalue);
+ void soundbank_w(int data);
};
#define USE_H8 0
-// from MSX2 driver, may be not accurate for this HW
-#define MSX2_XBORDER_PIXELS 16
-#define MSX2_YBORDER_PIXELS 28
-#define MSX2_TOTAL_XRES_PIXELS 256 * 2 + (MSX2_XBORDER_PIXELS * 2)
-#define MSX2_TOTAL_YRES_PIXELS 212 * 2 + (MSX2_YBORDER_PIXELS * 2)
-#define MSX2_VISIBLE_XBORDER_PIXELS 8 * 2
-#define MSX2_VISIBLE_YBORDER_PIXELS 14 * 2
-
WRITE_LINE_MEMBER(csplayh5_state::csplayh5_vdp0_interrupt)
{
/* this is not used as the v9938 interrupt callbacks are broken
@@ -104,11 +107,11 @@ READ16_MEMBER(csplayh5_state::csplayh5_mux_r)
{
switch(m_mux_data)
{
- case 0x01: return ioport("KEY0")->read();
- case 0x02: return ioport("KEY1")->read();
- case 0x04: return ioport("KEY2")->read();
- case 0x08: return ioport("KEY3")->read();
- case 0x10: return ioport("KEY4")->read();
+ case 0x01: return m_key[0]->read();
+ case 0x02: return m_key[1]->read();
+ case 0x04: return m_key[2]->read();
+ case 0x08: return m_key[3]->read();
+ case 0x10: return m_key[4]->read();
}
return 0xffff;
@@ -177,11 +180,9 @@ sound HW is identical to Niyanpai
#define DAC_WRITE write_unsigned8
#endif
-static void csplayh5_soundbank_w(running_machine &machine, int data)
+void csplayh5_state::soundbank_w(int data)
{
- UINT8 *SNDROM = machine.root_device().memregion("audiocpu")->base();
-
- machine.root_device().membank("bank1")->set_base(&SNDROM[0x08000 + (0x8000 * (data & 0x03))]);
+ m_bank1->set_base(m_region_audiocpu->base() + 0x08000 + (0x8000 * (data & 0x03)));
}
READ8_MEMBER(csplayh5_state::csplayh5_sound_r)
@@ -202,7 +203,7 @@ READ8_MEMBER(csplayh5_state::soundcpu_portd_r)
WRITE8_MEMBER(csplayh5_state::soundcpu_porta_w)
{
- csplayh5_soundbank_w(machine(), data & 0x03);
+ soundbank_w(data & 0x03);
}
WRITE8_MEMBER(csplayh5_state::soundcpu_dac2_w)
@@ -238,7 +239,7 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( csplayh5 )
- PORT_START("KEY0")
+ PORT_START("KEY.0")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(1)
@@ -256,7 +257,7 @@ static INPUT_PORTS_START( csplayh5 )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_START("KEY1")
+ PORT_START("KEY.1")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(1)
@@ -274,7 +275,7 @@ static INPUT_PORTS_START( csplayh5 )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_START("KEY2")
+ PORT_START("KEY.2")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(1)
@@ -292,7 +293,7 @@ static INPUT_PORTS_START( csplayh5 )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_START("KEY3")
+ PORT_START("KEY.3")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(1)
@@ -310,7 +311,7 @@ static INPUT_PORTS_START( csplayh5 )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_START("KEY4")
+ PORT_START("KEY.4")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(1)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(1)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(1)
@@ -440,11 +441,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(csplayh5_state::csplayh5_irq)
if(scanline == 212*2)
m_tmp68301->external_interrupt_0();
-
- if((scanline % 2) == 0)
- {
- m_v9958->interrupt();
- }
}
static const z80_daisy_config daisy_chain_sound[] =
@@ -458,7 +454,7 @@ static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu",M68000,16000000) /* TMP68301-16 */
MCFG_CPU_PROGRAM_MAP(csplayh5_map)
- MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("tmp68301",tmp68301_device,irq_callback)
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE("tmp68301", tmp68301_device, irq_callback)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", csplayh5_state, csplayh5_irq, "screen", 0, 1)
@@ -484,17 +480,9 @@ static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* video hardware */
- MCFG_V9958_ADD("v9958", "screen", 0x20000)
+ MCFG_V9958_ADD("v9958", "screen", 0x20000, XTAL_21_4772MHz) // typical 9958 clock, not verified
MCFG_V99X8_INTERRUPT_CALLBACK(WRITELINE(csplayh5_state, csplayh5_vdp0_interrupt))
-
- MCFG_SCREEN_ADD("screen",RASTER)
- MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
- MCFG_SCREEN_SIZE(MSX2_TOTAL_XRES_PIXELS, 262*2)
- MCFG_SCREEN_VISIBLE_AREA(MSX2_XBORDER_PIXELS - MSX2_VISIBLE_XBORDER_PIXELS, MSX2_TOTAL_XRES_PIXELS - MSX2_XBORDER_PIXELS + MSX2_VISIBLE_XBORDER_PIXELS - 1, MSX2_YBORDER_PIXELS - MSX2_VISIBLE_YBORDER_PIXELS, MSX2_TOTAL_YRES_PIXELS - MSX2_YBORDER_PIXELS + MSX2_VISIBLE_YBORDER_PIXELS - 1)
- MCFG_SCREEN_UPDATE_DEVICE("v9958", v9958_device, screen_update)
- MCFG_SCREEN_PALETTE("v9958:palette")
+ MCFG_V99X8_SCREEN_ADD_NTSC("screen", "v9958", XTAL_21_4772MHz)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -515,13 +503,13 @@ MACHINE_CONFIG_END
***************************************************************************/
-void general_init(running_machine &machine, int patchaddress, int patchvalue)
+void csplayh5_state::general_init(int patchaddress, int patchvalue)
{
- UINT16 *MAINROM = (UINT16 *)machine.root_device().memregion("maincpu")->base();
- UINT8 *SNDROM = machine.root_device().memregion("audiocpu")->base();
+ UINT16 *MAINROM = (UINT16 *)m_region_maincpu->base();
+ UINT8 *SNDROM = m_region_audiocpu->base();
// initialize sound rom bank
- csplayh5_soundbank_w(machine, 0);
+ soundbank_w(0);
/* patch DVD comms check */
MAINROM[patchaddress] = patchvalue;
@@ -531,16 +519,16 @@ void general_init(running_machine &machine, int patchaddress, int patchvalue)
}
-DRIVER_INIT_MEMBER(csplayh5_state,csplayh1) { general_init(machine(), 0x6880/2,0x6020); }
+DRIVER_INIT_MEMBER(csplayh5_state,csplayh1) { general_init(0x6880/2, 0x6020); }
-DRIVER_INIT_MEMBER(csplayh5_state,junai) { general_init(machine(), 0x679c/2,0x6018); }
-DRIVER_INIT_MEMBER(csplayh5_state,mjmania) { general_init(machine(), 0x6b96/2,0x6018); }
-DRIVER_INIT_MEMBER(csplayh5_state,junai2) { general_init(machine(), 0x6588/2,0x6018); }
-DRIVER_INIT_MEMBER(csplayh5_state,csplayh5) { general_init(machine(), 0x4cb4/2,0x6018); }
-DRIVER_INIT_MEMBER(csplayh5_state,bikiniko) { general_init(machine(), 0x585c/2,0x6018); }
-DRIVER_INIT_MEMBER(csplayh5_state,thenanpa) { general_init(machine(), 0x69ec/2,0x6018); }
-DRIVER_INIT_MEMBER(csplayh5_state,csplayh7) { general_init(machine(), 0x7a20/2,0x6018); }
-DRIVER_INIT_MEMBER(csplayh5_state,fuudol) { general_init(machine(), 0x9166/2,0x6018); }
+DRIVER_INIT_MEMBER(csplayh5_state,junai) { general_init(0x679c/2, 0x6018); }
+DRIVER_INIT_MEMBER(csplayh5_state,mjmania) { general_init(0x6b96/2, 0x6018); }
+DRIVER_INIT_MEMBER(csplayh5_state,junai2) { general_init(0x6588/2, 0x6018); }
+DRIVER_INIT_MEMBER(csplayh5_state,csplayh5) { general_init(0x4cb4/2, 0x6018); }
+DRIVER_INIT_MEMBER(csplayh5_state,bikiniko) { general_init(0x585c/2, 0x6018); }
+DRIVER_INIT_MEMBER(csplayh5_state,thenanpa) { general_init(0x69ec/2, 0x6018); }
+DRIVER_INIT_MEMBER(csplayh5_state,csplayh7) { general_init(0x7a20/2, 0x6018); }
+DRIVER_INIT_MEMBER(csplayh5_state,fuudol) { general_init(0x9166/2, 0x6018); }
/* TODO: correct rom labels*/
ROM_START( csplayh1 )
@@ -738,29 +726,29 @@ ROM_START( fuudol )
ROM_END
// 1995
-GAME( 1995, csplayh1, 0, csplayh5, csplayh5, csplayh5_state, csplayh1, ROT0, "Sphinx/AV Japan/Astro System Japan", "Super CD Dai8dan Mahjong Hanafuda Cosplay Tengoku (Japan)", GAME_NOT_WORKING )
+GAME( 1995, csplayh1, 0, csplayh5, csplayh5, csplayh5_state, csplayh1, ROT0, "Sphinx/AV Japan/Astro System Japan", "Super CD Dai8dan Mahjong Hanafuda Cosplay Tengoku (Japan)", MACHINE_NOT_WORKING )
// 1998
// 01 : Mahjong Gal-pri - World Gal-con Grandprix : Nichibutsu/Just&Just
// 02 : Sengoku Mahjong Kurenai Otome-tai : Nichibutsu/Just&Just
-/* 03 */ GAME( 1998, junai, 0, csplayh5, csplayh5, csplayh5_state, junai, ROT0, "Nichibutsu/eic", "Junai - Manatsu no First Kiss (Japan)", GAME_NOT_WORKING )
-/* 04 */ GAME( 1998, csplayh5, 0, csplayh5, csplayh5, csplayh5_state, csplayh5, ROT0, "Nichibutsu", "Mahjong Hanafuda Cosplay Tengoku 5 (Japan)", GAME_NOT_WORKING )
-/* 05 */ GAME( 1998, junai2, 0, csplayh5, csplayh5, csplayh5_state, junai2, ROT0, "Nichibutsu/eic", "Junai 2 - White Love Story (Japan)", GAME_NOT_WORKING )
+/* 03 */ GAME( 1998, junai, 0, csplayh5, csplayh5, csplayh5_state, junai, ROT0, "Nichibutsu/eic", "Junai - Manatsu no First Kiss (Japan)", MACHINE_NOT_WORKING )
+/* 04 */ GAME( 1998, csplayh5, 0, csplayh5, csplayh5, csplayh5_state, csplayh5, ROT0, "Nichibutsu", "Mahjong Hanafuda Cosplay Tengoku 5 (Japan)", MACHINE_NOT_WORKING )
+/* 05 */ GAME( 1998, junai2, 0, csplayh5, csplayh5, csplayh5_state, junai2, ROT0, "Nichibutsu/eic", "Junai 2 - White Love Story (Japan)", MACHINE_NOT_WORKING )
// 06 : Mahjong Mogitate : Nichibutsu/Just&Just/NVS/Astro System/AV Japan
// 1999
-/* 07 */ GAME( 1999, mjmania, 0, csplayh5, csplayh5, csplayh5_state, mjmania, ROT0, "Sphinx/Just&Just", "Mahjong Mania - Kairakukan e Youkoso (Japan)", GAME_NOT_WORKING )
-/* 08 */ //GAME( 1995, renaimj, 0, csplayh5, csplayh5, csplayh5_state, renaimj, ROT0, "Nichibutsu/eic", "Renai Mahjong Idol Gakuen (Japan)", GAME_NOT_WORKING )
-/* 09 */ GAME( 1999, bikiniko, 0, csplayh5, csplayh5, csplayh5_state, bikiniko, ROT0, "Nichibutsu/eic", "BiKiNikko - Okinawa de Ippai Shichaimashita (Japan)", GAME_NOT_WORKING )
+/* 07 */ GAME( 1999, mjmania, 0, csplayh5, csplayh5, csplayh5_state, mjmania, ROT0, "Sphinx/Just&Just", "Mahjong Mania - Kairakukan e Youkoso (Japan)", MACHINE_NOT_WORKING )
+/* 08 */ //GAME( 1995, renaimj, 0, csplayh5, csplayh5, csplayh5_state, renaimj, ROT0, "Nichibutsu/eic", "Renai Mahjong Idol Gakuen (Japan)", MACHINE_NOT_WORKING )
+/* 09 */ GAME( 1999, bikiniko, 0, csplayh5, csplayh5, csplayh5_state, bikiniko, ROT0, "Nichibutsu/eic", "BiKiNikko - Okinawa de Ippai Shichaimashita (Japan)", MACHINE_NOT_WORKING )
// 10 : Mahjong Hanafuda Cosplay Tengoku 6 - Junai hen : Nichibutsu/eic
-/* 11 */ GAME( 1999, thenanpa, 0, csplayh5, csplayh5, csplayh5_state, thenanpa, ROT0, "Nichibutsu/Love Factory/eic", "The Nanpa (Japan)", GAME_NOT_WORKING )
-/* 12 */ //GAME( 1999, pokoachu, 0, csplayh5, csplayh5, driver_device, 0, ROT0, "Nichibutsu/eic", "PokoaPoka Onsen de CHU - Bijin 3 Shimai ni Kiotsukete! (Japan)", GAME_NOT_WORKING )
-/* 13 */ GAME( 1999, csplayh7, 0, csplayh5, csplayh5, csplayh5_state, csplayh7, ROT0, "Nichibutsu/eic", "Cosplay Tengoku 7 - Super Kogal Grandprix (Japan)", GAME_NOT_WORKING )
+/* 11 */ GAME( 1999, thenanpa, 0, csplayh5, csplayh5, csplayh5_state, thenanpa, ROT0, "Nichibutsu/Love Factory/eic", "The Nanpa (Japan)", MACHINE_NOT_WORKING )
+/* 12 */ //GAME( 1999, pokoachu, 0, csplayh5, csplayh5, driver_device, 0, ROT0, "Nichibutsu/eic", "PokoaPoka Onsen de CHU - Bijin 3 Shimai ni Kiotsukete! (Japan)", MACHINE_NOT_WORKING )
+/* 13 */ GAME( 1999, csplayh7, 0, csplayh5, csplayh5, csplayh5_state, csplayh7, ROT0, "Nichibutsu/eic", "Cosplay Tengoku 7 - Super Kogal Grandprix (Japan)", MACHINE_NOT_WORKING )
// 14 : Ai-mode - Pet Shiiku : Nichibutsu/eic
// 2000
-/* 15 */ GAME( 2000, fuudol, 0, csplayh5, csplayh5, csplayh5_state, fuudol, ROT0, "Nichibutsu/eic", "Fuudol (Japan)", GAME_NOT_WORKING )
+/* 15 */ GAME( 2000, fuudol, 0, csplayh5, csplayh5, csplayh5_state, fuudol, ROT0, "Nichibutsu/eic", "Fuudol (Japan)", MACHINE_NOT_WORKING )
// 16 : Nurete Mitaino... - Net Idol Hen : Nichibutsu/Love Factory
// 17 : Tsuugakuro no Yuuwaku : Nichibutsu/Love Factory/Just&Just
// 18 : Torarechattano - AV Kantoku Hen : Nichibutsu/Love Factory/M Friend
diff --git a/src/mame/drivers/cswat.c b/src/mame/drivers/cswat.c
index 4ddd63f3931..45a329fcb6e 100644
--- a/src/mame/drivers/cswat.c
+++ b/src/mame/drivers/cswat.c
@@ -302,4 +302,4 @@ ROM_START( cswat )
ROM_END
-GAME( 1984, cswat, 0, cswat, cswat, driver_device, 0, ROT0, "Namco", "Cosmoswat", GAME_SUPPORTS_SAVE | GAME_MECHANICAL | GAME_NOT_WORKING | GAME_NO_SOUND | GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS )
+GAME( 1984, cswat, 0, cswat, cswat, driver_device, 0, ROT0, "Namco", "Cosmoswat", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL | MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mess/drivers/ct486.c b/src/mame/drivers/ct486.c
index 91cc9d85c3f..91cc9d85c3f 100644
--- a/src/mess/drivers/ct486.c
+++ b/src/mame/drivers/ct486.c
diff --git a/src/mame/drivers/cubo.c b/src/mame/drivers/cubo.c
index 9115942861f..3ada5d72561 100644
--- a/src/mame/drivers/cubo.c
+++ b/src/mame/drivers/cubo.c
@@ -1359,12 +1359,12 @@ INPUT_PORTS_END
-GAME( 1993, cubo, 0, cubo, cubo, cubo_state, cubo, ROT0, "Commodore", "Cubo BIOS", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_IS_BIOS_ROOT )
-GAME( 1995, cndypuzl, cubo, cubo, cndypuzl, cubo_state, cndypuzl, ROT0, "CD Express", "Candy Puzzle (v1.0)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1995, haremchl, cubo, cubo, haremchl, cubo_state, haremchl, ROT0, "CD Express", "Harem Challenge", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1995, lsrquiz, cubo, cubo, lsrquiz, cubo_state, lsrquiz, ROT0, "CD Express", "Laser Quiz Italy", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) /* no player 2 inputs (ingame) */
-GAME( 1995, lsrquiz2, cubo, cubo, lsrquiz2, cubo_state, lsrquiz2, ROT0, "CD Express", "Laser Quiz 2 Italy (v1.0)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1995, lasstixx, cubo, cubo, lasstixx, cubo_state, lasstixx, ROT0, "CD Express", "Laser Strixx 2", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1995, mgnumber, cubo, cubo, mgnumber, cubo_state, mgnumber, ROT0, "CD Express", "Magic Number", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1996, mgprem11, cubo, cubo, mgprem11, cubo_state, mgprem11, ROT0, "CD Express", "Magic Premium (v1.1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1999, odeontw2, cubo, cubo, odeontw2, cubo_state, cubo, ROT0, "CD Express", "Odeon Twister 2 (v202.19)", GAME_NOT_WORKING )
+GAME( 1993, cubo, 0, cubo, cubo, cubo_state, cubo, ROT0, "Commodore", "Cubo BIOS", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_IS_BIOS_ROOT )
+GAME( 1995, cndypuzl, cubo, cubo, cndypuzl, cubo_state, cndypuzl, ROT0, "CD Express", "Candy Puzzle (v1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, haremchl, cubo, cubo, haremchl, cubo_state, haremchl, ROT0, "CD Express", "Harem Challenge", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, lsrquiz, cubo, cubo, lsrquiz, cubo_state, lsrquiz, ROT0, "CD Express", "Laser Quiz Italy", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* no player 2 inputs (ingame) */
+GAME( 1995, lsrquiz2, cubo, cubo, lsrquiz2, cubo_state, lsrquiz2, ROT0, "CD Express", "Laser Quiz 2 Italy (v1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, lasstixx, cubo, cubo, lasstixx, cubo_state, lasstixx, ROT0, "CD Express", "Laser Strixx 2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1995, mgnumber, cubo, cubo, mgnumber, cubo_state, mgnumber, ROT0, "CD Express", "Magic Number", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, mgprem11, cubo, cubo, mgprem11, cubo_state, mgprem11, ROT0, "CD Express", "Magic Premium (v1.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1999, odeontw2, cubo, cubo, odeontw2, cubo_state, cubo, ROT0, "CD Express", "Odeon Twister 2 (v202.19)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/cultures.c b/src/mame/drivers/cultures.c
index a555d365147..1a5c653f2e4 100644
--- a/src/mame/drivers/cultures.c
+++ b/src/mame/drivers/cultures.c
@@ -494,4 +494,4 @@ ROM_START( cultures )
ROM_END
-GAME( 1994, cultures, 0, cultures, cultures, driver_device, 0, ROT0, "Face", "Jibun wo Migaku Culture School Mahjong Hen", GAME_SUPPORTS_SAVE )
+GAME( 1994, cultures, 0, cultures, cultures, driver_device, 0, ROT0, "Face", "Jibun wo Migaku Culture School Mahjong Hen", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cupidon.c b/src/mame/drivers/cupidon.c
index 02a20d0e84f..cf85470c75c 100644
--- a/src/mame/drivers/cupidon.c
+++ b/src/mame/drivers/cupidon.c
@@ -171,13 +171,13 @@ DRIVER_INIT_MEMBER(cupidon_state,funnyfm)
}
/* (c) date is from string in ROM, revision date is noted next to sets - Spellings are as found in ROM */
-GAME( 2004, tsarevna ,0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Tsarevna (v1.29)", GAME_IS_SKELETON ) // 12 Oct 2005
-GAME( 2004, tsarevnaa ,tsarevna, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Tsarevna (v1.31)", GAME_IS_SKELETON ) // 17 Jan 2007
+GAME( 2004, tsarevna ,0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Tsarevna (v1.29)", MACHINE_IS_SKELETON ) // 12 Oct 2005
+GAME( 2004, tsarevnaa ,tsarevna, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Tsarevna (v1.31)", MACHINE_IS_SKELETON ) // 17 Jan 2007
-GAME( 2004, gangrose ,0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Gangster's Roses (v4.70)", GAME_IS_SKELETON ) // 01 Sep 2004
+GAME( 2004, gangrose ,0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Gangster's Roses (v4.70)", MACHINE_IS_SKELETON ) // 01 Sep 2004
-GAME( 2004, funnyfm ,0, cupidon, cupidon, cupidon_state, funnyfm, ROT0, "Kupidon","Funny Farm (v1.17)", GAME_IS_SKELETON ) // 02 Mar 2005
-GAME( 2004, funnyfma ,funnyfm, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Funny Farm (v1.26)", GAME_IS_SKELETON ) // 08 Aug 2005
-GAME( 2004, funnyfmb ,funnyfm, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Funny Farm (v1.30)", GAME_IS_SKELETON ) // 16 May 2006
+GAME( 2004, funnyfm ,0, cupidon, cupidon, cupidon_state, funnyfm, ROT0, "Kupidon","Funny Farm (v1.17)", MACHINE_IS_SKELETON ) // 02 Mar 2005
+GAME( 2004, funnyfma ,funnyfm, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Funny Farm (v1.26)", MACHINE_IS_SKELETON ) // 08 Aug 2005
+GAME( 2004, funnyfmb ,funnyfm, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Funny Farm (v1.30)", MACHINE_IS_SKELETON ) // 16 May 2006
-GAME( 2005, cashtrn ,0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Cash Train (v1.10)", GAME_IS_SKELETON ) // 09 Jan 2006
+GAME( 2005, cashtrn ,0, cupidon, cupidon, cupidon_state, cupidon, ROT0, "Kupidon","Cash Train (v1.10)", MACHINE_IS_SKELETON ) // 09 Jan 2006
diff --git a/src/mame/drivers/cv1k.c b/src/mame/drivers/cv1k.c
index de470304432..24635f551a4 100644
--- a/src/mame/drivers/cv1k.c
+++ b/src/mame/drivers/cv1k.c
@@ -931,11 +931,11 @@ GAME( 2007, deathsml, 0, cv1k, cv1k, cv1k_state, deathsml, ROT0, "
GAME( 2008, dsmbl, 0, cv1k_d, cv1k, cv1k_state, dpddfk, ROT0, "Cave (AMI license)", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)", 0 )
// CA019 Do-Don-Pachi Dai-Fukkatsu
-GAME( 2008, ddpdfk, 0, cv1k_d, cv1k, cv1k_state, dpddfk, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23 MASTER VER 1.5)", 0 )
-GAME( 2008, ddpdfk10, ddpdfk, cv1k_d, cv1k, cv1k_state, dpddfk, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16 MASTER VER)", 0 )
+GAME( 2008, ddpdfk, 0, cv1k_d, cv1k, cv1k_state, dpddfk, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23 MASTER VER 1.5)", 0 )
+GAME( 2008, ddpdfk10, ddpdfk, cv1k_d, cv1k, cv1k_state, dpddfk, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16 MASTER VER)", 0 )
// CA019B Do-Don-Pachi Dai-Fukkatsu Black Label
GAME( 2010, dfkbl, 0, cv1k_d, cv1k, cv1k_state, dpddfk, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Fukkatsu Black Label (2010/1/18 BLACK LABEL)", 0 )
// CMDL01 Medal Mahjong Moukari Bancho
-GAME( 2007, mmmbanc, 0, cv1k, cv1k, cv1k_state, pinkswts, ROT0, "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)", GAME_NOT_WORKING )
+GAME( 2007, mmmbanc, 0, cv1k, cv1k, cv1k_state, pinkswts, ROT0, "Cave (AMI license)", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/cvicny.c b/src/mame/drivers/cvicny.c
index 9c97c06449e..416309d78d0 100644
--- a/src/mess/drivers/cvicny.c
+++ b/src/mame/drivers/cvicny.c
@@ -146,4 +146,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1984, cvicny, 0, 0, cvicny, cvicny, driver_device, 0, "<unknown>", "Practice-z80", GAME_NO_SOUND_HW)
+COMP( 1984, cvicny, 0, 0, cvicny, cvicny, driver_device, 0, "<unknown>", "Practice-z80", MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/cvs.c b/src/mame/drivers/cvs.c
index 1db8597c5a9..7c9ed5a81d3 100644
--- a/src/mame/drivers/cvs.c
+++ b/src/mame/drivers/cvs.c
@@ -460,7 +460,6 @@ static ADDRESS_MAP_START( cvs_main_cpu_map, AS_PROGRAM, 8, cvs_state )
AM_RANGE(0x6000, 0x73ff) AM_ROM
ADDRESS_MAP_END
-
static ADDRESS_MAP_START( cvs_main_cpu_io_map, AS_IO, 8, cvs_state )
AM_RANGE(0x00, 0xff) AM_READ(cvs_input_r) AM_WRITE(cvs_scroll_w)
AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READWRITE(cvs_collision_clear, cvs_video_fx_w)
@@ -468,8 +467,6 @@ static ADDRESS_MAP_START( cvs_main_cpu_io_map, AS_IO, 8, cvs_state )
AM_RANGE(S2650_SENSE_PORT, S2650_SENSE_PORT) AM_READ_PORT("SENSE")
ADDRESS_MAP_END
-
-
/*************************************
*
* DAC driving CPU memory/IO handlers
@@ -1046,7 +1043,6 @@ static MACHINE_CONFIG_START( cvs, cvs_state )
MACHINE_CONFIG_END
-
/*************************************
*
* ROM definitions
@@ -1534,6 +1530,8 @@ ROM_START( raidersr3 )
ROM_END
+
+
/*************************************
*
* Game specific initalization
@@ -1646,25 +1644,25 @@ DRIVER_INIT_MEMBER(cvs_state,raiders)
*
*************************************/
-GAME( 1981, cosmos, 0, cvs, cosmos, driver_device, 0, ROT90, "Century Electronics", "Cosmos", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1981, darkwar, 0, cvs, darkwar, driver_device, 0, ROT90, "Century Electronics", "Dark Warrior", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1981, spacefrt, 0, cvs, spacefrt, driver_device, 0, ROT90, "Century Electronics", "Space Fortress (CVS)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, 8ball, 0, cvs, 8ball, driver_device, 0, ROT90, "Century Electronics", "Video Eight Ball", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, 8ball1, 8ball, cvs, 8ball, driver_device, 0, ROT90, "Century Electronics", "Video Eight Ball (Rev.1)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, logger, 0, cvs, logger, driver_device, 0, ROT90, "Century Electronics", "Logger", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, dazzler, 0, cvs, dazzler, driver_device, 0, ROT90, "Century Electronics", "Dazzler", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, wallst, 0, cvs, wallst, driver_device, 0, ROT90, "Century Electronics", "Wall Street", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, radarzon, 0, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics", "Radar Zone", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, radarzon1, radarzon, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics", "Radar Zone (Rev.1)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, radarzont, radarzon, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics (Tuni Electro Service Inc)", "Radar Zone (Tuni)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, outline, radarzon, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics", "Outline", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, goldbug, 0, cvs, goldbug, driver_device, 0, ROT90, "Century Electronics", "Gold Bug", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, diggerc, 0, cvs, diggerc, driver_device, 0, ROT90, "Century Electronics", "Digger (CVS)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1983, heartatk, 0, cvs, heartatk, driver_device, 0, ROT90, "Century Electronics", "Heart Attack", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1983, hunchbak, 0, cvs, hunchbak, driver_device, 0, ROT90, "Century Electronics", "Hunchback (set 1)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1983, hunchbaka, hunchbak, cvs, hunchbak, cvs_state, hunchbaka,ROT90, "Century Electronics", "Hunchback (set 2)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1983, superbik, 0, cvs, superbik, cvs_state, superbik, ROT90, "Century Electronics", "Superbike", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1983, raiders, 0, cvs, raiders, cvs_state, raiders, ROT90, "Century Electronics", "Raiders", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1983, raidersr3, raiders, cvs, raiders, cvs_state, raiders, ROT90, "Century Electronics", "Raiders (Rev.3)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1984, hero, 0, cvs, hero, cvs_state, hero, ROT90, "Century Electronics / Seatongrove Ltd", "Hero", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // (C) 1984 CVS on titlescreen, (C) 1983 Seatongrove on highscore screen
-GAME( 1984, huncholy, 0, cvs, huncholy, cvs_state, huncholy, ROT90, "Century Electronics / Seatongrove Ltd", "Hunchback Olympic", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1981, cosmos, 0, cvs, cosmos, driver_device, 0, ROT90, "Century Electronics", "Cosmos", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, darkwar, 0, cvs, darkwar, driver_device, 0, ROT90, "Century Electronics", "Dark Warrior", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, spacefrt, 0, cvs, spacefrt, driver_device, 0, ROT90, "Century Electronics", "Space Fortress (CVS)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, 8ball, 0, cvs, 8ball, driver_device, 0, ROT90, "Century Electronics", "Video Eight Ball", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, 8ball1, 8ball, cvs, 8ball, driver_device, 0, ROT90, "Century Electronics", "Video Eight Ball (Rev.1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, logger, 0, cvs, logger, driver_device, 0, ROT90, "Century Electronics", "Logger", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, dazzler, 0, cvs, dazzler, driver_device, 0, ROT90, "Century Electronics", "Dazzler", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, wallst, 0, cvs, wallst, driver_device, 0, ROT90, "Century Electronics", "Wall Street", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, radarzon, 0, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics", "Radar Zone", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, radarzon1, radarzon, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics", "Radar Zone (Rev.1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, radarzont, radarzon, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics (Tuni Electro Service Inc)", "Radar Zone (Tuni)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, outline, radarzon, cvs, radarzon, driver_device, 0, ROT90, "Century Electronics", "Outline", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, goldbug, 0, cvs, goldbug, driver_device, 0, ROT90, "Century Electronics", "Gold Bug", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, diggerc, 0, cvs, diggerc, driver_device, 0, ROT90, "Century Electronics", "Digger (CVS)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, heartatk, 0, cvs, heartatk, driver_device, 0, ROT90, "Century Electronics", "Heart Attack", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, hunchbak, 0, cvs, hunchbak, driver_device, 0, ROT90, "Century Electronics", "Hunchback (set 1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, hunchbaka, hunchbak, cvs, hunchbak, cvs_state, hunchbaka, ROT90, "Century Electronics", "Hunchback (set 2)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, superbik, 0, cvs, superbik, cvs_state, superbik, ROT90, "Century Electronics", "Superbike", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, raiders, 0, cvs, raiders, cvs_state, raiders, ROT90, "Century Electronics", "Raiders", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, raidersr3, raiders, cvs, raiders, cvs_state, raiders, ROT90, "Century Electronics", "Raiders (Rev.3)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, hero, 0, cvs, hero, cvs_state, hero, ROT90, "Century Electronics / Seatongrove Ltd", "Hero", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // (C) 1984 CVS on titlescreen, (C) 1983 Seatongrove on highscore screen
+GAME( 1984, huncholy, 0, cvs, huncholy, cvs_state, huncholy, ROT90, "Century Electronics / Seatongrove Ltd", "Hunchback Olympic", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/cxhumax.c b/src/mame/drivers/cxhumax.c
index 7f58262a4b7..4fc5ab65151 100644
--- a/src/mess/drivers/cxhumax.c
+++ b/src/mame/drivers/cxhumax.c
@@ -1082,4 +1082,4 @@ ROM_START( hxhdci2k )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-SYST( 2008, hxhdci2k, 0, 0, cxhumax, cxhumax, driver_device, 0, "HUMAX", "HUMAX HDCI-2000", GAME_NOT_WORKING | GAME_NO_SOUND)
+SYST( 2008, hxhdci2k, 0, 0, cxhumax, cxhumax, driver_device, 0, "HUMAX", "HUMAX HDCI-2000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/cybertnk.c b/src/mame/drivers/cybertnk.c
index d3085d6592c..73048c098ac 100644
--- a/src/mame/drivers/cybertnk.c
+++ b/src/mame/drivers/cybertnk.c
@@ -980,4 +980,4 @@ DRIVER_INIT_MEMBER(cybertnk_state,cybertnk)
}
-GAME( 1988, cybertnk, 0, cybertnk, cybertnk, cybertnk_state, cybertnk, ROT0, "Coreland", "Cyber Tank (v1.4)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1988, cybertnk, 0, cybertnk, cybertnk, cybertnk_state, cybertnk, ROT0, "Coreland", "Cyber Tank (v1.4)", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mess/drivers/cybiko.c b/src/mame/drivers/cybiko.c
index c7352403f5b..a3a4bd2864e 100644
--- a/src/mess/drivers/cybiko.c
+++ b/src/mame/drivers/cybiko.c
@@ -164,7 +164,7 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( cybiko )
- PORT_START("A1")
+ PORT_START("A.0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Del") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL))
@@ -174,7 +174,7 @@ static INPUT_PORTS_START( cybiko )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CHAR('`')
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
- PORT_START("A2")
+ PORT_START("A.1")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("As") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
@@ -184,7 +184,7 @@ static INPUT_PORTS_START( cybiko )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Fn") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
- PORT_START("A3")
+ PORT_START("A.2")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
@@ -194,7 +194,7 @@ static INPUT_PORTS_START( cybiko )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('X')
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Help") PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END))
- PORT_START("A4")
+ PORT_START("A.3")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
@@ -204,7 +204,7 @@ static INPUT_PORTS_START( cybiko )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
- PORT_START("A5")
+ PORT_START("A.4")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Select") PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))
@@ -214,7 +214,7 @@ static INPUT_PORTS_START( cybiko )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V) PORT_CHAR('V')
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
- PORT_START("A6")
+ PORT_START("A.5")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR( 13 )
@@ -224,7 +224,7 @@ static INPUT_PORTS_START( cybiko )
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
- PORT_START("A7")
+ PORT_START("A.6")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("BkSp") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
@@ -233,7 +233,7 @@ static INPUT_PORTS_START( cybiko )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('J')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N) PORT_CHAR('N')
- PORT_START("A8")
+ PORT_START("A.7")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CHAR('.') PORT_CHAR('>')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
@@ -242,7 +242,7 @@ static INPUT_PORTS_START( cybiko )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('K')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('M')
- PORT_START("A9")
+ PORT_START("A.8")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
@@ -254,7 +254,7 @@ static INPUT_PORTS_START( cybiko )
INPUT_PORTS_END
static INPUT_PORTS_START( cybikoxt )
- PORT_START("A1")
+ PORT_START("A.0")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(F7))
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('M')
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('K')
@@ -262,7 +262,7 @@ static INPUT_PORTS_START( cybikoxt )
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('O')
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L) PORT_CHAR('L')
- PORT_START("A2")
+ PORT_START("A.1")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F6) PORT_CHAR(UCHAR_MAMEKEY(F6))
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G) PORT_CHAR('G')
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
@@ -272,7 +272,7 @@ static INPUT_PORTS_START( cybikoxt )
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('U')
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('J')
- PORT_START("A3")
+ PORT_START("A.2")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(F5))
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
@@ -281,7 +281,7 @@ static INPUT_PORTS_START( cybikoxt )
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R) PORT_CHAR('R')
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T) PORT_CHAR('T')
- PORT_START("A4")
+ PORT_START("A.3")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4))
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
@@ -291,38 +291,38 @@ static INPUT_PORTS_START( cybikoxt )
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('W')
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
- PORT_START("A5")
+ PORT_START("A.4")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3) PORT_CHAR(UCHAR_MAMEKEY(F3))
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER) PORT_CHAR( 13 )
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Select") PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))
PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
- PORT_START("A6")
+ PORT_START("A.5")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Del") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL))
PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("As") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC))
- PORT_START("A7")
+ PORT_START("A.6")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
- PORT_START("A8")
+ PORT_START("A.7")
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Fn") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
- PORT_START("A9")
+ PORT_START("A.8")
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
- PORT_START("A10")
+ PORT_START("A.13")
PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Help") PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(END))
PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CHAR('.') PORT_CHAR('>')
PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('P')
- PORT_START("A15")
+ PORT_START("A.14")
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("On/Off") PORT_CODE(KEYCODE_F8) PORT_CHAR(UCHAR_MAMEKEY(F8))
INPUT_PORTS_END
@@ -456,6 +456,6 @@ ROM_END
//////////////
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 2000, cybikov1, 0, 0, cybikov1, cybiko, cybiko_state, cybiko , "Cybiko Inc", "Cybiko Classic (V1)", GAME_IMPERFECT_SOUND )
-COMP( 2000, cybikov2, cybikov1, 0, cybikov2, cybiko, cybiko_state, cybiko , "Cybiko Inc", "Cybiko Classic (V2)", GAME_IMPERFECT_SOUND )
-COMP( 2001, cybikoxt, cybikov1, 0, cybikoxt, cybikoxt, cybiko_state, cybikoxt, "Cybiko Inc", "Cybiko Xtreme", GAME_IMPERFECT_SOUND )
+COMP( 2000, cybikov1, 0, 0, cybikov1, cybiko, cybiko_state, cybiko , "Cybiko Inc", "Cybiko Classic (V1)", MACHINE_IMPERFECT_SOUND )
+COMP( 2000, cybikov2, cybikov1, 0, cybikov2, cybiko, cybiko_state, cybiko , "Cybiko Inc", "Cybiko Classic (V2)", MACHINE_IMPERFECT_SOUND )
+COMP( 2001, cybikoxt, cybikov1, 0, cybikoxt, cybikoxt, cybiko_state, cybikoxt, "Cybiko Inc", "Cybiko Xtreme", MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/cyclemb.c b/src/mame/drivers/cyclemb.c
index bfa02562f6c..367f1c20565 100644
--- a/src/mame/drivers/cyclemb.c
+++ b/src/mame/drivers/cyclemb.c
@@ -1042,5 +1042,5 @@ DRIVER_INIT_MEMBER(cyclemb_state,skydest)
m_dsw_pc_hack = 0x554;
}
-GAME( 1984, cyclemb, 0, cyclemb, cyclemb, cyclemb_state, cyclemb, ROT0, "Taito Corporation", "Cycle Maabou (Japan)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1985, skydest, 0, skydest, skydest, cyclemb_state, skydest, ROT0, "Taito Corporation", "Sky Destroyer (Japan)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1984, cyclemb, 0, cyclemb, cyclemb, cyclemb_state, cyclemb, ROT0, "Taito Corporation", "Cycle Maabou (Japan)", MACHINE_NO_COCKTAIL | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, skydest, 0, skydest, skydest, cyclemb_state, skydest, ROT0, "Taito Corporation", "Sky Destroyer (Japan)", MACHINE_NO_COCKTAIL | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/czk80.c b/src/mame/drivers/czk80.c
index 90ce9688cb1..913d07d693f 100644
--- a/src/mess/drivers/czk80.c
+++ b/src/mame/drivers/czk80.c
@@ -227,4 +227,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 198?, czk80, 0, 0, czk80, czk80, czk80_state, czk80, "<unknown>", "CZK-80", GAME_NOT_WORKING | GAME_NO_SOUND_HW)
+COMP( 198?, czk80, 0, 0, czk80, czk80, czk80_state, czk80, "<unknown>", "CZK-80", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
diff --git a/src/mess/drivers/d6800.c b/src/mame/drivers/d6800.c
index 29f9a074051..29f9a074051 100644
--- a/src/mess/drivers/d6800.c
+++ b/src/mame/drivers/d6800.c
diff --git a/src/mess/drivers/d6809.c b/src/mame/drivers/d6809.c
index cda62e72c97..a806be0d820 100644
--- a/src/mess/drivers/d6809.c
+++ b/src/mame/drivers/d6809.c
@@ -164,4 +164,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1983, d6809, 0, 0, d6809, d6809, driver_device, 0, "Dunfield", "6809 Portable", GAME_IS_SKELETON | GAME_NOT_WORKING | GAME_NO_SOUND_HW)
+COMP( 1983, d6809, 0, 0, d6809, d6809, driver_device, 0, "Dunfield", "6809 Portable", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/d9final.c b/src/mame/drivers/d9final.c
index edec4c5b579..0a9f194374f 100644
--- a/src/mame/drivers/d9final.c
+++ b/src/mame/drivers/d9final.c
@@ -326,4 +326,4 @@ ROM_END
-GAME( 1992, d9final, 0, d9final, d9final, driver_device, 0, ROT0, "Excellent System", "Dream 9 Final (v2.24)", GAME_SUPPORTS_SAVE )
+GAME( 1992, d9final, 0, d9final, d9final, driver_device, 0, ROT0, "Excellent System", "Dream 9 Final (v2.24)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dacholer.c b/src/mame/drivers/dacholer.c
index ec9fcc83a51..665d96b67d4 100644
--- a/src/mame/drivers/dacholer.c
+++ b/src/mame/drivers/dacholer.c
@@ -841,6 +841,6 @@ ROM_START( itaten )
ROM_END
-GAME( 1983, dacholer, 0, dacholer, dacholer, driver_device, 0, ROT0, "Nichibutsu", "Dacholer", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1983, kickboy, 0, dacholer, kickboy, driver_device, 0, ROT0, "Nichibutsu", "Kick Boy", GAME_SUPPORTS_SAVE )
-GAME( 1984, itaten, 0, itaten, itaten, driver_device, 0, ROT0, "Nichibutsu / Alice", "Itazura Tenshi (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1983, dacholer, 0, dacholer, dacholer, driver_device, 0, ROT0, "Nichibutsu", "Dacholer", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, kickboy, 0, dacholer, kickboy, driver_device, 0, ROT0, "Nichibutsu", "Kick Boy", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, itaten, 0, itaten, itaten, driver_device, 0, ROT0, "Nichibutsu / Alice", "Itazura Tenshi (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/dai.c b/src/mame/drivers/dai.c
index 8f2a4b408c2..8f2a4b408c2 100644
--- a/src/mess/drivers/dai.c
+++ b/src/mame/drivers/dai.c
diff --git a/src/mame/drivers/dai3wksi.c b/src/mame/drivers/dai3wksi.c
index 1dd3a67a96d..9ef942150e4 100644
--- a/src/mame/drivers/dai3wksi.c
+++ b/src/mame/drivers/dai3wksi.c
@@ -58,6 +58,7 @@ public:
m_ic79(*this, "ic79"),
m_ic80(*this, "ic80"),
m_ic81(*this, "ic81"),
+ m_palette(*this, "palette"),
m_dai3wksi_videoram(*this, "videoram"),
m_in2(*this, "IN2") { }
@@ -69,6 +70,7 @@ public:
optional_device<sn76477_device> m_ic79;
optional_device<sn76477_device> m_ic80;
optional_device<sn76477_device> m_ic81;
+ required_device<palette_device> m_palette;
/* video */
required_shared_ptr<UINT8> m_dai3wksi_videoram;
@@ -140,29 +142,10 @@ static const UINT8 vr_prom2[64*8*2]={
3, 3,3,2,2,6,6,6,6, 6,6,6,6,6,6,6,6, 3,3,3,3,3,3,3,3, 7,7,7,7,7,7,7,7, 3,3,3,3,3,3,3,3, 2,2,2,2,2,2,2,2, 6,6,6,6,6,6,6,6, 4,4,4,4,4,4,4,
};
-
-static void dai3wksi_get_pens(pen_t *pens)
-{
- offs_t i;
-
- for (i = 0; i <= 7; i++)
- {
- pens[i] = rgb_t(pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
- }
-}
-
-
UINT32 dai3wksi_state::screen_update_dai3wksi(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- offs_t offs;
- pen_t pens[8];
-
- dai3wksi_get_pens(pens);
-
- for (offs = 0; offs < m_dai3wksi_videoram.bytes(); offs++)
+ for (offs_t offs = 0; offs < m_dai3wksi_videoram.bytes(); offs++)
{
- offs_t i;
-
UINT8 x = offs << 2;
UINT8 y = offs >> 6;
UINT8 data = m_dai3wksi_videoram[offs];
@@ -181,9 +164,9 @@ UINT32 dai3wksi_state::screen_update_dai3wksi(screen_device &screen, bitmap_rgb3
color = vr_prom1[value];
}
- for (i = 0; i <= 3; i++)
+ for (int i = 0; i <= 3; i++)
{
- pen_t pen = (data & (1 << i)) ? pens[color] : pens[0];
+ rgb_t pen = (data & (1 << i)) ? m_palette->pen_color(color) : rgb_t::black;
if (m_dai3wksi_flipscreen)
bitmap.pix32(255-y, 255-x) = pen;
@@ -428,6 +411,8 @@ static MACHINE_CONFIG_START( dai3wksi, dai3wksi_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_UPDATE_DRIVER(dai3wksi_state, screen_update_dai3wksi)
+ MCFG_PALETTE_ADD_3BIT_BRG("palette")
+
MCFG_SPEAKER_STANDARD_MONO("mono")
#if (USE_SAMPLES)
@@ -562,4 +547,4 @@ ROM_END
*
*************************************/
-GAME( 1979, dai3wksi, 0, dai3wksi, dai3wksi, driver_device, 0, ROT270, "Sun Electronics", "Dai San Wakusei Meteor (Japan)", GAME_WRONG_COLORS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1979, dai3wksi, 0, dai3wksi, dai3wksi, driver_device, 0, ROT270, "Sun Electronics", "Dai San Wakusei Meteor (Japan)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/darius.c b/src/mame/drivers/darius.c
index 8b5980f3337..abe9cbf84fd 100644
--- a/src/mame/drivers/darius.c
+++ b/src/mame/drivers/darius.c
@@ -1169,8 +1169,8 @@ ROM_START( dariuse )
ROM_END
-GAME( 1986, darius, 0, darius, darius, driver_device, 0, ROT0, "Taito Corporation Japan", "Darius (World, rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, dariusu, darius, darius, dariusu, driver_device, 0, ROT0, "Taito America Corporation", "Darius (US, rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, dariusj, darius, darius, dariusj, driver_device, 0, ROT0, "Taito Corporation", "Darius (Japan, rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, dariuso, darius, darius, dariusj, driver_device, 0, ROT0, "Taito Corporation", "Darius (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1986, dariuse, darius, darius, dariusu, driver_device, 0, ROT0, "Taito Corporation", "Darius Extra Version (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1986, darius, 0, darius, darius, driver_device, 0, ROT0, "Taito Corporation Japan", "Darius (World, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, dariusu, darius, darius, dariusu, driver_device, 0, ROT0, "Taito America Corporation", "Darius (US, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, dariusj, darius, darius, dariusj, driver_device, 0, ROT0, "Taito Corporation", "Darius (Japan, rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, dariuso, darius, darius, dariusj, driver_device, 0, ROT0, "Taito Corporation", "Darius (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, dariuse, darius, darius, dariusu, driver_device, 0, ROT0, "Taito Corporation", "Darius Extra Version (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/darkmist.c b/src/mame/drivers/darkmist.c
index 35419344046..50e75ff14b0 100644
--- a/src/mame/drivers/darkmist.c
+++ b/src/mame/drivers/darkmist.c
@@ -475,4 +475,4 @@ DRIVER_INIT_MEMBER(darkmist_state,darkmist)
}
}
-GAME( 1986, darkmist, 0, darkmist, darkmist, darkmist_state, darkmist, ROT270, "Taito Corporation", "The Lost Castle In Darkmist", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1986, darkmist, 0, darkmist, darkmist, darkmist_state, darkmist, ROT270, "Taito Corporation", "The Lost Castle In Darkmist", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/darkseal.c b/src/mame/drivers/darkseal.c
index ba14b7a932a..c652fee62a2 100644
--- a/src/mame/drivers/darkseal.c
+++ b/src/mame/drivers/darkseal.c
@@ -471,8 +471,8 @@ DRIVER_INIT_MEMBER(darkseal_state,darkseal)
/******************************************************************************/
-GAME( 1990, darkseal, 0, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 3)", GAME_SUPPORTS_SAVE )
-GAME( 1990, darkseal1, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 1)", GAME_SUPPORTS_SAVE )
-GAME( 1990, darksealj, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (Japan revision 4)", GAME_SUPPORTS_SAVE )
-GAME( 1990, gatedoom, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 4)", GAME_SUPPORTS_SAVE )
-GAME( 1990, gatedoom1, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 1)", GAME_SUPPORTS_SAVE )
+GAME( 1990, darkseal, 0, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, darkseal1, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, darksealj, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (Japan revision 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, gatedoom, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, gatedoom1, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 1)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/daruma.c b/src/mame/drivers/daruma.c
new file mode 100644
index 00000000000..33f3226230c
--- /dev/null
+++ b/src/mame/drivers/daruma.c
@@ -0,0 +1,169 @@
+// license:GPL-2.0+
+// copyright-holders: Felipe Sanches
+/***************************************************************************
+
+ Sigtron Daruma DS348 dot-matrix printer
+ https://www.hardstand.com.br/daruma/ds348
+
+ Driver by Felipe Correa da Silva Sanches <juca@members.fsf.org>
+
+ Model: Print Plus - DS348
+ Manufacturer: Sigtron Daruma
+ Firmware version 1.1
+ Release Date: May 8th/1998
+ PCB: SIGTRON DS348 REV.B
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/mcs51/mcs51.h"
+#include "sound/speaker.h"
+//TODO: #include "ds348.lh"
+
+class daruma_state : public driver_device
+{
+public:
+ daruma_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_speaker(*this, "speaker") { }
+
+ DECLARE_WRITE8_MEMBER(port_w);
+ DECLARE_READ8_MEMBER(port_r);
+
+ DECLARE_READ8_MEMBER(dev0_r);
+ DECLARE_WRITE8_MEMBER(dev1_w);
+ DECLARE_WRITE8_MEMBER(dev2_w);
+ DECLARE_READ8_MEMBER(dev4_r);
+ required_device<cpu_device> m_maincpu;
+ required_device<speaker_sound_device> m_speaker;
+ char port0, port1, port2, port3;
+};
+
+WRITE8_MEMBER(daruma_state::port_w)
+{
+// printf("port_w: write %02X to PORT (offset=%02X)\n", data, offset);
+ switch(offset)
+ {
+ case MCS51_PORT_P0: port0=data;
+ case MCS51_PORT_P1: port1=data;
+ case MCS51_PORT_P2: port2=data;
+ case MCS51_PORT_P3: port3=data;
+ }
+}
+
+READ8_MEMBER(daruma_state::port_r)
+{
+ switch(offset)
+ {
+ case MCS51_PORT_P0: printf("port_r: read %02X from PORT0\n", port0); return port0;
+ case MCS51_PORT_P1: printf("port_r: read %02X from PORT1\n", port1); return port1;
+ case MCS51_PORT_P2: printf("port_r: read %02X from PORT2\n", port2); return port2;
+ case MCS51_PORT_P3: printf("port_r: read %02X from PORT3\n", port3); return port3;
+ }
+ return 0;
+}
+
+READ8_MEMBER(daruma_state::dev0_r)
+{
+ return 0xFF;
+}
+
+READ8_MEMBER(daruma_state::dev4_r)
+{
+ return ioport("switches")->read();
+}
+
+WRITE8_MEMBER(daruma_state::dev1_w)
+{
+ //while attempting to identify which bit is used for
+ //controlling the buzzer, here's what I heard from each of
+ //the signals on this address:
+
+ //0x80 serial comm.? (noise)
+ //0x20 LED? (3 clicks)
+ //0x10 LED? (1 click)
+ //0x08 serial comm.? click & noise
+ //0x04 LED? (2 clicks)
+ //0x02 motor control or printer heads? (I hear a series of rhythmic pulses)
+ //0x01 LED? (2 clicks)
+ m_speaker->level_w(data & 0x02);
+}
+
+WRITE8_MEMBER(daruma_state::dev2_w)
+{
+ //while attempting to identify which bit is used for
+ //controlling the buzzer, here's what I heard from each of
+ //the signals on this address:
+
+ //0x80: LED? (3 clicks)
+ //0x40: unused?
+ //0x20: unused?
+ //0x10: low freq brief beep followed by a click
+ //0x08: low freq brief noise followed by a click
+ //0x04: low freq brief beep followed by a click
+ //0x02: low freq brief beep followed by a click
+ //0x01: low freq brief noise
+ //m_speaker->level_w(data & 0x01);
+}
+
+static ADDRESS_MAP_START( mem_prg, AS_PROGRAM, 8, daruma_state )
+ AM_RANGE(0x0000, 0xffff) AM_ROM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( mem_io, AS_IO, 8, daruma_state )
+ AM_RANGE(0x0000, 0x0000) AM_READ(dev0_r)
+ AM_RANGE(0x1000, 0x1000) AM_WRITE(dev1_w)
+// AM_RANGE(0x2000, 0x2000) AM_WRITE(dev2_w)
+// AM_RANGE(0x3000, 0x3000) AM_WRITE(dev3_w)
+ AM_RANGE(0x4000, 0x4000) AM_READ(dev4_r)
+ AM_RANGE(0x8000, 0xffff) AM_RAM /* 32K CMOS SRAM (HYUNDAY hy62256a) */
+ AM_RANGE(MCS51_PORT_P0, MCS51_PORT_P3) AM_READWRITE(port_r, port_w)
+ADDRESS_MAP_END
+
+//TODO: These buttons and switches are all guesses. We'll need to further investigate this.
+static INPUT_PORTS_START( daruma )
+ PORT_START("buttons")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Paper A") PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Paper B") PORT_CODE(KEYCODE_B)
+
+ PORT_START("switches")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN)
+ PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN)
+ PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Limit Switch") PORT_CODE(KEYCODE_S)
+
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( daruma, daruma_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", I80C32,11059200) //verified on pcb
+ MCFG_CPU_PROGRAM_MAP(mem_prg)
+ MCFG_CPU_IO_MAP(mem_io)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(0, "mono", 1.00)
+
+/* TODO:
+ MCFG_DEFAULT_LAYOUT(layout_daruma)
+
+ Motors: MTA011
+ http://pdf.datasheetcatalog.com/datasheet/Shindengen/mXstzvq.pdf
+
+ The motor controller suposedly is used to cut the paper strip out after finishing printing something.
+*/
+MACHINE_CONFIG_END
+
+ROM_START( ds348 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "daruma_ds348_v1_1.rom", 0x0000, 0x10000, CRC(10bf9036) SHA1(d654a13bc582f5384e759ec6fe5309a642bd8e18) )
+ROM_END
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
+COMP( 1998, ds348, 0, 0, daruma, daruma, driver_device, 0, "Sigtron Daruma", "Print Plus DS348 - Dot matrix printer", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/dassault.c b/src/mame/drivers/dassault.c
index d66b5b8d785..c43b820c4e5 100644
--- a/src/mame/drivers/dassault.c
+++ b/src/mame/drivers/dassault.c
@@ -1004,9 +1004,9 @@ DRIVER_INIT_MEMBER(dassault_state,thndzone)
/**********************************************************************************/
-GAME( 1991, thndzone, 0, dassault, thndzone, dassault_state, thndzone, ROT0, "Data East Corporation", "Thunder Zone (World, Rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1991, thndzonea, thndzone, dassault, thndzone, dassault_state, thndzone, ROT0, "Data East Corporation", "Thunder Zone (World)", GAME_SUPPORTS_SAVE )
-GAME( 1991, thndzone4, thndzone, dassault, thndzone4, dassault_state, thndzone, ROT0, "Data East Corporation", "Thunder Zone (World 4 Players)", GAME_SUPPORTS_SAVE )
-GAME( 1991, thndzonej, thndzone, dassault, thndzone, dassault_state, thndzone, ROT0, "Data East Corporation", "Thunder Zone (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, dassault, thndzone, dassault, dassault, dassault_state, dassault, ROT0, "Data East Corporation", "Desert Assault (US)", GAME_SUPPORTS_SAVE )
-GAME( 1991, dassault4, thndzone, dassault, dassault4, dassault_state, dassault, ROT0, "Data East Corporation", "Desert Assault (US 4 Players)", GAME_SUPPORTS_SAVE )
+GAME( 1991, thndzone, 0, dassault, thndzone, dassault_state, thndzone, ROT0, "Data East Corporation", "Thunder Zone (World, Rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, thndzonea, thndzone, dassault, thndzone, dassault_state, thndzone, ROT0, "Data East Corporation", "Thunder Zone (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, thndzone4, thndzone, dassault, thndzone4, dassault_state, thndzone, ROT0, "Data East Corporation", "Thunder Zone (World 4 Players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, thndzonej, thndzone, dassault, thndzone, dassault_state, thndzone, ROT0, "Data East Corporation", "Thunder Zone (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, dassault, thndzone, dassault, dassault, dassault_state, dassault, ROT0, "Data East Corporation", "Desert Assault (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, dassault4, thndzone, dassault, dassault4, dassault_state, dassault, ROT0, "Data East Corporation", "Desert Assault (US 4 Players)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dblcrown.c b/src/mame/drivers/dblcrown.c
index 292b9d2e57e..8951180865a 100644
--- a/src/mame/drivers/dblcrown.c
+++ b/src/mame/drivers/dblcrown.c
@@ -664,4 +664,4 @@ ROM_END
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
-GAMEL( 1997, dblcrown, 0, dblcrown, dblcrown, driver_device, 0, ROT0, "Cadence Technology", "Double Crown (v1.0.3)", GAME_IMPERFECT_GRAPHICS, layout_dblcrown ) // 1997 DYNA copyright in tile GFX
+GAMEL( 1997, dblcrown, 0, dblcrown, dblcrown, driver_device, 0, ROT0, "Cadence Technology", "Double Crown (v1.0.3)", MACHINE_IMPERFECT_GRAPHICS, layout_dblcrown ) // 1997 DYNA copyright in tile GFX
diff --git a/src/mame/drivers/dblewing.c b/src/mame/drivers/dblewing.c
index 9663f217f9d..fc55faa6f2d 100644
--- a/src/mame/drivers/dblewing.c
+++ b/src/mame/drivers/dblewing.c
@@ -461,4 +461,4 @@ DRIVER_INIT_MEMBER(dblewing_state,dblewing)
}
-GAME( 1993, dblewing, 0, dblewing, dblewing, dblewing_state, dblewing, ROT90, "Mitchell", "Double Wings", GAME_SUPPORTS_SAVE )
+GAME( 1993, dblewing, 0, dblewing, dblewing, dblewing_state, dblewing, ROT90, "Mitchell", "Double Wings", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dbz.c b/src/mame/drivers/dbz.c
index 9a03a0a42d9..d2e05b7181d 100644
--- a/src/mame/drivers/dbz.c
+++ b/src/mame/drivers/dbz.c
@@ -584,6 +584,6 @@ DRIVER_INIT_MEMBER(dbz_state,dbz2)
ROM[0xae8/2] = 0x4e71; /* 0x005e */
}
-GAME( 1993, dbz, 0, dbz, dbz, dbz_state, dbz, ROT0, "Banpresto", "Dragonball Z (rev B)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // crashes MAME in tile/PSAC2 ROM test
-GAME( 1993, dbza, dbz, dbz, dbza, dbz_state, dbza, ROT0, "Banpresto", "Dragonball Z (rev A)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1994, dbz2, 0, dbz, dbz2, dbz_state, dbz2, ROT0, "Banpresto", "Dragonball Z 2 - Super Battle", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // crashes MAME in tile/PSAC2 ROM test
+GAME( 1993, dbz, 0, dbz, dbz, dbz_state, dbz, ROT0, "Banpresto", "Dragonball Z (rev B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // crashes MAME in tile/PSAC2 ROM test
+GAME( 1993, dbza, dbz, dbz, dbza, dbz_state, dbza, ROT0, "Banpresto", "Dragonball Z (rev A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, dbz2, 0, dbz, dbz2, dbz_state, dbz2, ROT0, "Banpresto", "Dragonball Z 2 - Super Battle", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // crashes MAME in tile/PSAC2 ROM test
diff --git a/src/mess/drivers/dccons.c b/src/mame/drivers/dccons.c
index 1e488b68c93..fbb92009889 100644
--- a/src/mess/drivers/dccons.c
+++ b/src/mame/drivers/dccons.c
@@ -753,8 +753,8 @@ ROM_START( dcprt )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-CONS( 1999, dc, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (USA, NTSC)", GAME_NOT_WORKING )
-CONS( 1998, dcjp, 0, 0, dc, dc, dc_cons_state, dcjp, "Sega", "Dreamcast (Japan, NTSC)", GAME_NOT_WORKING )
-CONS( 1999, dceu, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (Europe, PAL)", GAME_NOT_WORKING )
-CONS( 1998, dcdev, dcjp, 0, dc, dc, dc_cons_state, dc, "Sega", "HKT-0120 Sega Dreamcast Development Box", GAME_NOT_WORKING )
-CONS( 1998, dcprt, dcjp, 0, dc, dc, dc_cons_state, dcjp, "Sega", "Katana Set 5 Prototype", GAME_NOT_WORKING )
+CONS( 1999, dc, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (USA, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1998, dcjp, 0, 0, dc, dc, dc_cons_state, dcjp, "Sega", "Dreamcast (Japan, NTSC)", MACHINE_NOT_WORKING )
+CONS( 1999, dceu, dcjp, 0, dc, dc, dc_cons_state, dcus, "Sega", "Dreamcast (Europe, PAL)", MACHINE_NOT_WORKING )
+CONS( 1998, dcdev, dcjp, 0, dc, dc, dc_cons_state, dc, "Sega", "HKT-0120 Sega Dreamcast Development Box", MACHINE_NOT_WORKING )
+CONS( 1998, dcprt, dcjp, 0, dc, dc, dc_cons_state, dcjp, "Sega", "Katana Set 5 Prototype", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/dcheese.c b/src/mame/drivers/dcheese.c
index 99895c02c85..7f72a4d176c 100644
--- a/src/mame/drivers/dcheese.c
+++ b/src/mame/drivers/dcheese.c
@@ -788,12 +788,12 @@ ROM_END
*
*************************************/
-GAME( 1993, dcheese, 0, dcheese, dcheese, driver_device, 0, ROT90, "HAR", "Double Cheese", GAME_SUPPORTS_SAVE )
-GAME( 1993, lottof2, 0, dcheese, lottof2, driver_device, 0, ROT0, "HAR", "Lotto Fun 2", GAME_SUPPORTS_SAVE )
-GAME( 1993, cecmatch, 0, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "ChuckECheese's Match Game", GAME_SUPPORTS_SAVE )
-GAME( 1994, fredmem, 0, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (World?, Ticket version, 3/17/95)", GAME_SUPPORTS_SAVE )
-GAME( 1994, fredmemus, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (US, High Score version, 3/10/95)", GAME_SUPPORTS_SAVE )
-GAME( 1994, fredmemuk, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (UK, 3/17/95)", GAME_SUPPORTS_SAVE )
-GAME( 1994, fredmemj, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Japan, High Score version, 3/20/95)", GAME_SUPPORTS_SAVE )
-GAME( 1994, fredmemc, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Mandarin Chinese, 3/17/95)", GAME_SUPPORTS_SAVE )
-GAME( 1994, fredmesp, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Spanish, 3/17/95)", GAME_SUPPORTS_SAVE )
+GAME( 1993, dcheese, 0, dcheese, dcheese, driver_device, 0, ROT90, "HAR", "Double Cheese", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, lottof2, 0, dcheese, lottof2, driver_device, 0, ROT0, "HAR", "Lotto Fun 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, cecmatch, 0, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "ChuckECheese's Match Game", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fredmem, 0, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (World?, Ticket version, 3/17/95)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fredmemus, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (US, High Score version, 3/10/95)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fredmemuk, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (UK, 3/17/95)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fredmemj, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Japan, High Score version, 3/20/95)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fredmemc, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Mandarin Chinese, 3/17/95)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, fredmesp, fredmem, fredmem, fredmem, driver_device, 0, ROT0, "Coastal Amusements", "Fred Flintstones' Memory Match (Spanish, 3/17/95)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dcon.c b/src/mame/drivers/dcon.c
index 47078d8eb24..c0b9061f1ca 100644
--- a/src/mame/drivers/dcon.c
+++ b/src/mame/drivers/dcon.c
@@ -405,5 +405,5 @@ DRIVER_INIT_MEMBER(dcon_state,sdgndmps)
}
-GAME( 1991, sdgndmps, 0, sdgndmps, sdgndmps, dcon_state, sdgndmps, ROT0, "Banpresto / Bandai", "SD Gundam Psycho Salamander no Kyoui", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1992, dcon, 0, dcon, dcon, driver_device, 0, ROT0, "Success", "D-Con", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1991, sdgndmps, 0, sdgndmps, sdgndmps, dcon_state, sdgndmps, ROT0, "Banpresto / Bandai", "SD Gundam Psycho Salamander no Kyoui", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, dcon, 0, dcon, dcon, driver_device, 0, ROT0, "Success", "D-Con", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/dct11em.c b/src/mame/drivers/dct11em.c
index 5e19700f7f3..50cfe44458e 100644
--- a/src/mess/drivers/dct11em.c
+++ b/src/mame/drivers/dct11em.c
@@ -80,4 +80,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1983, dct11em, 0, 0, dct11em, dct11em, driver_device, 0, "Digital Equipment Corporation", "DCT11-EM", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1983, dct11em, 0, 0, dct11em, dct11em, driver_device, 0, "Digital Equipment Corporation", "DCT11-EM", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/dday.c b/src/mame/drivers/dday.c
index 25678d27bbb..a9fbe5cd085 100644
--- a/src/mame/drivers/dday.c
+++ b/src/mame/drivers/dday.c
@@ -359,5 +359,5 @@ ROM_START( ddayc )
ROM_END
-GAME( 1982, dday, 0, dday, dday, driver_device, 0, ROT0, "Olympia", "D-Day", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1982, ddayc, dday, dday, ddayc, driver_device, 0, ROT0, "Olympia (Centuri license)", "D-Day (Centuri)", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1982, dday, 0, dday, dday, driver_device, 0, ROT0, "Olympia", "D-Day", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, ddayc, dday, dday, ddayc, driver_device, 0, ROT0, "Olympia (Centuri license)", "D-Day (Centuri)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ddayjlc.c b/src/mame/drivers/ddayjlc.c
index 839e346c9b6..6538b233be7 100644
--- a/src/mame/drivers/ddayjlc.c
+++ b/src/mame/drivers/ddayjlc.c
@@ -683,5 +683,5 @@ DRIVER_INIT_MEMBER(ddayjlc_state,ddayjlc)
membank("bank1")->set_entry(0);
}
-GAME( 1984, ddayjlc, 0, ddayjlc, ddayjlc, ddayjlc_state, ddayjlc, ROT90, "Jaleco", "D-Day (Jaleco set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1984, ddayjlca, ddayjlc, ddayjlc, ddayjlc, ddayjlc_state, ddayjlc, ROT90, "Jaleco", "D-Day (Jaleco set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1984, ddayjlc, 0, ddayjlc, ddayjlc, ddayjlc_state, ddayjlc, ROT90, "Jaleco", "D-Day (Jaleco set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, ddayjlca, ddayjlc, ddayjlc, ddayjlc, ddayjlc_state, ddayjlc, ROT90, "Jaleco", "D-Day (Jaleco set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ddealer.c b/src/mame/drivers/ddealer.c
index e67f6df7bd8..a553c25df63 100644
--- a/src/mame/drivers/ddealer.c
+++ b/src/mame/drivers/ddealer.c
@@ -143,7 +143,6 @@ public:
required_shared_ptr<UINT16> m_back_vram;
required_shared_ptr<UINT16> m_work_ram;
required_shared_ptr<UINT16> m_mcu_shared_ram;
-// UINT16 * m_paletteram16; // currently this uses generic palette handling
/* video-related */
tilemap_t *m_back_tilemap;
@@ -480,7 +479,7 @@ static ADDRESS_MAP_START( ddealer, AS_PROGRAM, 16, ddealer_state )
AM_RANGE(0x080008, 0x080009) AM_READ_PORT("DSW1")
AM_RANGE(0x08000a, 0x08000b) AM_READ_PORT("UNK")
AM_RANGE(0x084000, 0x084003) AM_DEVWRITE8("ymsnd", ym2203_device, write, 0x00ff) // ym ?
- AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // palette ram
+ AM_RANGE(0x088000, 0x0887ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08c000, 0x08cfff) AM_RAM_WRITE(ddealer_vregs_w) AM_SHARE("vregs") // palette ram
/* this might actually be 1 tilemap with some funky rowscroll / columnscroll enabled, I'm not sure */
@@ -697,4 +696,4 @@ ROM_START( ddealer )
ROM_LOAD( "6.ic86", 0x100, 0x100, NO_DUMP )
ROM_END
-GAME( 1991, ddealer, 0, ddealer, ddealer, ddealer_state, ddealer, ROT0, "NMK", "Double Dealer", GAME_SUPPORTS_SAVE )
+GAME( 1991, ddealer, 0, ddealer, ddealer, ddealer_state, ddealer, ROT0, "NMK", "Double Dealer", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ddenlovr.c b/src/mame/drivers/ddenlovr.c
index a88f84d81a0..f0cf098b7bc 100644
--- a/src/mame/drivers/ddenlovr.c
+++ b/src/mame/drivers/ddenlovr.c
@@ -11,42 +11,46 @@ CPU: Z80 or 68000
Sound: (AY-3-8910) + YM2413 + MSM6295
Other: Real Time Clock (Oki MSM6242B or 72421B)
---------------------------------------------------------------------------------------------------------------------
-Year + Game Board CPU Sound Custom Other
---------------------------------------------------------------------------------------------------------------------
-92 Monkey Mole Panic 2xZ80 AY8910 YM2413 M6295 NL-001 1108(x2) 1427(x2) 8251
-93 Animalandia Jr. 2xZ80 AY8910 YM2413 M6295 NL-001 NL-003(x2) NL-004(x2) 8251
-93 Quiz Channel Question N7311208L1-2 Z80 YM2413 M6295 NL-002 1108F0405 1427F0071
-93 First Funky Fighter N7403208L-2 2xZ80 YM2149 YM2413 M6295 NL-001 NL-002 NL-005
-94 Mj Mysterious World D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02?
-94 Mj Mysterious Universe D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071
-94 Mj Mysterious Orient D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071
-94 Quiz 365 68000 AY8910 YM2413 M6295
-94 Rong Rong (J) N8010178L1 Z80 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02F2637
-94 Hf Hana Ginga D8102048L1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02?
-94 Super Hana Paradise N8010178L1+N73RSUB Z80 YM2413 M6295 NL-002 1108F0406 1427F0071 4L02F2637
-95 Mj Dai Chuuka Ken D11107218L1 Z80 AY8910 YM2413 M6295 70C160F009
-95 Hf Hana Gokou N83061581L1 Z80 AY8910 YM2413 M6295 NL-002 1108? 1427? 4L02?
-95 Hf Hana Gokou Bangaihen N10805078L1 Z80 AY8910 YM2413 M6295 NL-002 1108? 1427? 4L02?
-95 Nettoh Quiz Champion 68000 AY8910 YM2413 M6295
-95 Ultra Champion (K) N11309208L1+N114SUB 68000 AY8910 YM2413 M6295 NL-005
-95 Don Den Lover (J) D1120901L8 68000 YMZ284 YM2413 M6295 NL-005
-96 Don Den Lover (HK) D11309208L1 68000 YMZ284 YM2413 M6295 NL-005
-96 Panel&Variety Akamaru 68000 YMZ284 YM2413 M6295 NL-005
-96 Mj Fantasic Love NS5000101+? Z80 YMZ284 YM2413 M6295 NL-005
-96 Hana Kanzashi Z80 YM2413 M6295 70C160F011?
-96 Mj Seiryu Densetsu NM5020403 Z80 YMZ284 YM2413 M6295 70C160F011?
-96 Mj Janshin Plus NM7001004 Z80 YMZ284 YM2413 M6295 TZ-2053P
-96 Mj Dai Touyouken NM7001004 Z80 YMZ284 YM2413 M6295 TZ-2053P
-96 Return Of Sel Jan II NM504-2 Z80 YM2149 YM2413 M6295 TZ-2053P?
-97 Hana Kagerou KC80 YM2413 M6295 70C160F011
-97 Kkot Bi Nyo 9090123-2 KC80 YM2413 M6295 70C160F011 A1010
-97 Kkot Bi Nyo Special 9090123-3 KC80 YM2413 M6295 ?
-98 Mj Chuukanejyo D11107218L1 Z80 AY8910 YM2413 M6295 70C160F009
-98 Mj Reach Ippatsu KC80 YM2413 M6295 70C160F011
-99 Mj Jong-Tei NM532-9902 Z80 YM2413 M6295 4L10FXXXX?
-02 Mj Daimyojin TSM015-0111 Z80 YM2413 M6295 70C160F011
-04 Mj Momotarou TSM015-0111? Z80 YM2413 M6295 70C160F011?
+----------------------------------------------------------------------------------------------------------------------
+Year + Game Board CPU Sound Custom Other
+----------------------------------------------------------------------------------------------------------------------
+92 Hf Hana Tengoku D6502208L1+D6107068L1 Z80 YM2149 YM2413
+92 Monkey Mole Panic 2xZ80 AY8910 YM2413 M6295 NL-001 1108(x2) 1427(x2) 8251
+92 Mj Mysterious Orient D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071
+93 Mj Mysterious Orient 2 D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071
+93 Quiz Channel Question N7311208L1-2 Z80 YM2413 M6295 NL-002 1108F0405 1427F0071
+93 First Funky Fighter N7403208L-2 2xZ80 YM2149 YM2413 M6295 NL-001 NL-002 NL-005
+93 Animalandia Jr. 2xZ80 AY8910 YM2413 M6295 NL-001 NL-003(x2) NL-004(x2) 8251
+94 Mj Mysterious World D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02?
+94 Mj Mysterious Universe D7107058L1-1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071
+94 Quiz 365 68000 AY8910 YM2413 M6295
+94 Rong Rong (J) N8010178L1 Z80 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02F2637
+94 Hf Hana Ginga D8102048L1 Z80 YM2149 YM2413 M6295 NL-002 1108F0405 1427F0071 4L02?
+94 Super Hana Paradise N8010178L1+N73RSUB Z80 YM2413 M6295 NL-002 1108F0406 1427F0071 4L02F2637
+95 Mj Dai Chuuka Ken D11107218L1 Z80 AY8910 YM2413 M6295 70C160F009
+95 Mj Super Dai Chuuka Ken D11510198L1 Z80 AY8910 YM2413 M6295
+95 Hf Hana Gokou N83061581L1 Z80 AY8910 YM2413 M6295 NL-002 1108? 1427? 4L02?
+95 Hf Hana Gokou Bangaihen N10805078L1 Z80 AY8910 YM2413 M6295 NL-002 1108? 1427? 4L02?
+95 Nettoh Quiz Champion 68000 AY8910 YM2413 M6295
+95 Ultra Champion (K) N11309208L1+N114SUB 68000 AY8910 YM2413 M6295 NL-005
+95 Don Den Lover (J) D1120901L8 68000 YMZ284 YM2413 M6295 NL-005
+96 Don Den Lover (HK) D11309208L1 68000 YMZ284 YM2413 M6295 NL-005
+96 Panel&Variety Akamaru 68000 YMZ284 YM2413 M6295 NL-005
+96 Mj Fantasic Love NS5000101+? Z80 YMZ284 YM2413 M6295 NL-005
+96 Hana Kanzashi Z80 YM2413 M6295 70C160F011?
+96 Mj Seiryu Densetsu NM5020403 Z80 YMZ284 YM2413 M6295 70C160F011?
+96 Mj Janshin Plus NM7001004 Z80 YMZ284 YM2413 M6295 TZ-2053P
+96 Mj Dai Touyouken NM7001004 Z80 YMZ284 YM2413 M6295 TZ-2053P
+96 Return Of Sel Jan II NM504-2 Z80 YM2149 YM2413 M6295 TZ-2053P?
+97 Hana Kagerou KC80 YM2413 M6295 70C160F011
+97 Kkot Bi Nyo 9090123-2 KC80 YM2413 M6295 70C160F011 A1010
+97 Kkot Bi Nyo Special 9090123-3 KC80 YM2413 M6295 ?
+98 Mj Chuukanejyo D11107218L1 Z80 AY8910 YM2413 M6295 70C160F009
+98 Mj Reach Ippatsu KC80 YM2413 M6295 70C160F011
+99 Mj Jong-Tei NM532-9902 Z80 YM2413 M6295 4L10FXXXX?
+00 Mj Gorgeous Night TSM003-0002 Z80 YM2413 M6295 4L10FXXXX?
+02 Mj Daimyojin TSM015-0111 Z80 YM2413 M6295 70C160F011
+04 Mj Momotarou TSM015-0111? Z80 YM2413 M6295 70C160F011?
--------------------------------------------------------------------------------------------------------------------
TODO:
@@ -340,6 +344,8 @@ public:
DECLARE_READ8_MEMBER(hanakanz_rand_r);
DECLARE_WRITE8_MEMBER(mjreach1_protection_w);
DECLARE_READ8_MEMBER(mjreach1_protection_r);
+ DECLARE_WRITE8_MEMBER(mjschuka_protection_w);
+ DECLARE_READ8_MEMBER(mjschuka_protection_r);
DECLARE_READ8_MEMBER(mjchuuka_keyb_r);
DECLARE_WRITE8_MEMBER(mjchuuka_blitter_w);
DECLARE_READ8_MEMBER(mjchuuka_gfxrom_0_r);
@@ -384,6 +390,9 @@ public:
DECLARE_WRITE8_MEMBER(mjflove_coincounter_w);
DECLARE_WRITE8_MEMBER(jongtei_dsw_keyb_w);
DECLARE_READ8_MEMBER(jongtei_busy_r);
+ DECLARE_READ8_MEMBER(mjgnight_protection_r);
+ DECLARE_WRITE8_MEMBER(mjgnight_protection_w);
+ DECLARE_WRITE8_MEMBER(mjgnight_coincounter_w);
DECLARE_READ8_MEMBER(sryudens_keyb_r);
DECLARE_WRITE8_MEMBER(sryudens_coincounter_w);
DECLARE_WRITE8_MEMBER(sryudens_rambank_w);
@@ -3038,6 +3047,66 @@ ADDRESS_MAP_END
/***************************************************************************
+ Mahjong Super Dai Chuuka Ken
+***************************************************************************/
+
+// 255F: 13 34 7A 96 A8
+// 2564: 13 34 7A 96 13
+
+WRITE8_MEMBER(ddenlovr_state::mjschuka_protection_w)
+{
+ m_prot_val = data;
+}
+
+READ8_MEMBER(ddenlovr_state::mjschuka_protection_r)
+{
+ switch (m_prot_val)
+ {
+ case 0xa8: return 0x13;
+ }
+ return m_prot_val;
+}
+
+static ADDRESS_MAP_START( mjschuka_portmap, AS_IO, 8, ddenlovr_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x00, 0x0f) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
+ AM_RANGE(0x1c, 0x1c) AM_READNOP AM_WRITE(sryudens_rambank_w) // ? ack on RTC int
+ AM_RANGE(0x1e, 0x1e) AM_WRITE(mjflove_rombank_w)
+
+ AM_RANGE(0x20, 0x23) AM_WRITE(ddenlovr_palette_base_w)
+ AM_RANGE(0x24, 0x27) AM_WRITE(ddenlovr_palette_mask_w)
+ AM_RANGE(0x28, 0x2b) AM_WRITE(ddenlovr_transparency_pen_w)
+ AM_RANGE(0x2c, 0x2f) AM_WRITE(ddenlovr_transparency_mask_w)
+ AM_RANGE(0x34, 0x34) AM_WRITE(ddenlovr_bgcolor_w)
+ AM_RANGE(0x35, 0x35) AM_WRITE(ddenlovr_priority_w)
+ AM_RANGE(0x36, 0x36) AM_WRITE(ddenlovr_layer_enable_w)
+ AM_RANGE(0x38, 0x38) AM_READNOP // ? ack or watchdog
+
+ AM_RANGE(0x40, 0x41) AM_WRITE(mjmyster_blitter_w)
+ AM_RANGE(0x43, 0x43) AM_READ(rongrong_gfxrom_r)
+ AM_RANGE(0x50, 0x50) AM_WRITE(mjflove_okibank_w)
+
+ AM_RANGE(0x54, 0x54) AM_READWRITE(mjschuka_protection_r, mjschuka_protection_w)
+ // 58 writes ? (0/1)
+ AM_RANGE(0x5c, 0x5c) AM_READ(hanakanz_rand_r)
+
+ AM_RANGE(0x60, 0x60) AM_WRITE(sryudens_coincounter_w)
+ AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_keyb_w)
+ AM_RANGE(0x62, 0x62) AM_READ_PORT("SYSTEM")
+ AM_RANGE(0x63, 0x64) AM_READ(sryudens_keyb_r)
+
+ AM_RANGE(0x68, 0x68) AM_READ_PORT("DSW1")
+ AM_RANGE(0x69, 0x69) AM_READ_PORT("DSW2")
+ AM_RANGE(0x6a, 0x6a) AM_READ_PORT("DSW3")
+ AM_RANGE(0x6b, 0x6b) AM_READ_PORT("DSW4")
+ AM_RANGE(0x6c, 0x6c) AM_READ_PORT("DSW5") // DSW 1-4 high bits
+ AM_RANGE(0x70, 0x71) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
+ AM_RANGE(0x74, 0x74) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ AM_RANGE(0x78, 0x79) AM_DEVWRITE("ym2413", ym2413_device, write)
+ADDRESS_MAP_END
+
+
+/***************************************************************************
Mahjong The Mysterious World
***************************************************************************/
@@ -3847,6 +3916,63 @@ ADDRESS_MAP_END
/***************************************************************************
+ Mahjong Gorgeous Night
+***************************************************************************/
+
+WRITE8_MEMBER(ddenlovr_state::mjgnight_coincounter_w)
+{
+ m_prot_val = data;
+
+ set_led_status(machine(), 0, data & 0x01); // led? 1 in-game, 0 in service mode / while booting
+
+ coin_counter_w(machine(), 0, data & 0x04); // coin-out
+ coin_counter_w(machine(), 1, data & 0x08); // coin-in
+
+ if (data & 0xf2)
+ logerror("%04x: warning, coin counter = %02x\n", space.device().safe_pc(), data);
+
+#ifdef MAME_DEBUG
+// popmessage("COIN = %02x", data);
+#endif
+}
+
+WRITE8_MEMBER(ddenlovr_state::mjgnight_protection_w)
+{
+ m_prot_val = data;
+}
+
+READ8_MEMBER(ddenlovr_state::mjgnight_protection_r)
+{
+ switch (m_prot_val)
+ {
+ case 0x12: return 0x12;
+ case 0xc0: return 0x01;
+ }
+ return m_prot_val;
+}
+
+static ADDRESS_MAP_START( mjgnight_portmap, AS_IO, 8, ddenlovr_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ AM_RANGE(0x2c, 0x2c) AM_READWRITE(jongtei_busy_r, jongtei_okibank_w)
+ AM_RANGE(0x2e, 0x2e) AM_WRITE(hanakanz_blitter_reg_w)
+ AM_RANGE(0x30, 0x30) AM_WRITE(hanakanz_rombank_w)
+ AM_RANGE(0x31, 0x31) AM_WRITE(jongtei_dsw_keyb_w)
+ AM_RANGE(0x32, 0x32) AM_READ(hanakanz_dsw_r)
+ AM_RANGE(0x40, 0x40) AM_READ_PORT("SYSTEM")
+ AM_RANGE(0x41, 0x42) AM_READ(hanakanz_keyb_r)
+ AM_RANGE(0x46, 0x46) AM_WRITE(mjgnight_coincounter_w)
+ AM_RANGE(0x46, 0x46) AM_READ(hanakanz_rand_r)
+ AM_RANGE(0x47, 0x47) AM_READWRITE(mjgnight_protection_r, mjgnight_protection_w)
+ AM_RANGE(0x60, 0x60) AM_WRITE(hanakanz_blitter_data_w)
+ AM_RANGE(0x61, 0x61) AM_WRITE(hanakanz_palette_w)
+ AM_RANGE(0x63, 0x64) AM_READ(hanakanz_gfxrom_r)
+ AM_RANGE(0x80, 0x81) AM_DEVWRITE("ym2413", ym2413_device, write)
+ AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE("rtc", msm6242_device, read, write)
+ADDRESS_MAP_END
+
+
+/***************************************************************************
Mahjong Seiryu Densetsu
***************************************************************************/
@@ -4721,7 +4847,7 @@ INPUT_PORTS_EXTERN( HANAFUDA_KEYS_BET );
static INPUT_PORTS_START( htengoku )
PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE4 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE2 ) // analyzer
@@ -4792,10 +4918,10 @@ static INPUT_PORTS_START( htengoku )
PORT_DIPNAME( 0x04, 0x04, "Credits Per Note" )
PORT_DIPSETTING( 0x00, "5" )
PORT_DIPSETTING( 0x04, "10" )
- PORT_DIPNAME( 0x08, 0x08, "Max Bet" )
+ PORT_DIPNAME( 0x08, 0x08, "Max Rate" )
PORT_DIPSETTING( 0x08, "5" )
PORT_DIPSETTING( 0x00, "10" )
- PORT_DIPNAME( 0x30, 0x30, "Min Rate To Start" )
+ PORT_DIPNAME( 0x30, 0x30, "Min Rate To Play" )
PORT_DIPSETTING( 0x30, "1" )
PORT_DIPSETTING( 0x20, "2" )
PORT_DIPSETTING( 0x10, "3" )
@@ -5331,7 +5457,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( hanakanz )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // Test
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -5553,7 +5679,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( hkagerou )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // Test
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -5995,7 +6121,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( mjreach1 )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -6107,7 +6233,7 @@ static INPUT_PORTS_START( mjreach1 )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
- PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Max Rate" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
@@ -6228,7 +6354,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( jongtei )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -6340,7 +6466,7 @@ static INPUT_PORTS_START( jongtei )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
- PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Max Rate" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
@@ -6354,9 +6480,9 @@ static INPUT_PORTS_START( jongtei )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
-// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
-// PORT_DIPSETTING( 0x04, "3" )
-// PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x30, 0x30, "Payout" )
PORT_DIPSETTING( 0x30, "300" )
PORT_DIPSETTING( 0x20, "500" )
@@ -6457,11 +6583,67 @@ static INPUT_PORTS_START( jongtei )
INPUT_PORTS_END
+static INPUT_PORTS_START( mjgnight )
+
+ PORT_INCLUDE(jongtei)
+
+ PORT_MODIFY("DSW2")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x38, 0x38, "Min Rate To Play" )
+ PORT_DIPSETTING( 0x38, "1" )
+ PORT_DIPSETTING( 0x30, "2" )
+ PORT_DIPSETTING( 0x28, "3" )
+ PORT_DIPSETTING( 0x20, "4" )
+ PORT_DIPSETTING( 0x18, "5" )
+ PORT_DIPSETTING( 0x10, "6" )
+ PORT_DIPSETTING( 0x08, "7" )
+ PORT_DIPSETTING( 0x00, "8" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Payout" )
+ PORT_DIPSETTING( 0xc0, "300" )
+ PORT_DIPSETTING( 0x80, "500" )
+ PORT_DIPSETTING( 0x40, "700" )
+ PORT_DIPSETTING( 0x00, "1000" )
+
+ PORT_MODIFY("DSW4")
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+INPUT_PORTS_END
+
static INPUT_PORTS_START( mjchuuka )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -6573,7 +6755,7 @@ static INPUT_PORTS_START( mjchuuka )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
- PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Max Rate" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
@@ -6587,9 +6769,9 @@ static INPUT_PORTS_START( mjchuuka )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
-// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
-// PORT_DIPSETTING( 0x04, "3" )
-// PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x10, "10" )
PORT_DIPSETTING( 0x00, "255" )
@@ -6691,6 +6873,240 @@ static INPUT_PORTS_START( mjchuuka )
INPUT_PORTS_END
+static INPUT_PORTS_START( mjschuka )
+
+ PORT_START("SYSTEM")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
+ PORT_SERVICE(0x04, IP_ACTIVE_LOW)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
+
+ PORT_START("KEY0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) // A
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) // E
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) // I
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) // M
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) // Kan
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) // Start 2
+
+ PORT_START("KEY1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) // B
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) // F
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) // J
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) // N
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) // Reach
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) // BET
+
+ PORT_START("KEY2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) // C
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) // G
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) // K
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) // Chi
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) // Ron
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
+
+ PORT_START("KEY3")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) // D
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) // H
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) // L
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) // Pon
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
+
+ PORT_START("KEY4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) // "l"
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) // "t"
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) // "w"
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) // Flip Flop
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) // "b"
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) // "s"
+
+ PORT_START("KEY5")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
+
+ PORT_START("KEY6")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
+
+ PORT_START("KEY7")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
+
+ PORT_START("KEY8")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
+
+ PORT_START("KEY9")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate (%)" )
+ PORT_DIPSETTING( 0x00, "50" )
+ PORT_DIPSETTING( 0x01, "53" )
+ PORT_DIPSETTING( 0x02, "56" )
+ PORT_DIPSETTING( 0x03, "59" )
+ PORT_DIPSETTING( 0x04, "62" )
+ PORT_DIPSETTING( 0x05, "65" )
+ PORT_DIPSETTING( 0x06, "68" )
+ PORT_DIPSETTING( 0x07, "71" )
+ PORT_DIPSETTING( 0x08, "75" )
+ PORT_DIPSETTING( 0x09, "78" )
+ PORT_DIPSETTING( 0x0a, "81" )
+ PORT_DIPSETTING( 0x0b, "84" )
+ PORT_DIPSETTING( 0x0c, "87" )
+ PORT_DIPSETTING( 0x0d, "90" )
+ PORT_DIPSETTING( 0x0e, "93" )
+ PORT_DIPSETTING( 0x0f, "96" )
+ PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
+ PORT_DIPSETTING( 0x20, "1 2 3 4 6 8 10 15" )
+ PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
+ PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
+ PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Max Rate" )
+ PORT_DIPSETTING( 0xc0, "1" )
+ PORT_DIPSETTING( 0x80, "5" )
+ PORT_DIPSETTING( 0x40, "10" )
+ PORT_DIPSETTING( 0x00, "20" )
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
+ PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
+ PORT_DIPSETTING( 0x0c, "1" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPNAME( 0x30, 0x30, "Payout" )
+ PORT_DIPSETTING( 0x30, "300" )
+ PORT_DIPSETTING( 0x20, "500" )
+ PORT_DIPSETTING( 0x10, "700" )
+ PORT_DIPSETTING( 0x00, "1000" )
+ PORT_DIPNAME( 0x40, 0x40, "W-BET" )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, "Last Chance" )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSW3")
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x00, "Girls" )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x00, "Girls Speech" )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSW4")
+ PORT_DIPNAME( 0x07, 0x07, "YAKUMAN Bonus" )
+ PORT_DIPSETTING( 0x07, "Cut" )
+ PORT_DIPSETTING( 0x06, "1 T" )
+ PORT_DIPSETTING( 0x05, "300" )
+ PORT_DIPSETTING( 0x04, "500" )
+ PORT_DIPSETTING( 0x03, "700" )
+ PORT_DIPSETTING( 0x02, "1000" )
+ PORT_DIPSETTING( 0x01, "1000?" )
+ PORT_DIPSETTING( 0x00, "1000?" )
+ PORT_DIPNAME( 0x08, 0x08, "YAKUMAN Times?" )
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x00, "140" )
+ PORT_DIPSETTING( 0x10, "160" )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, "DonDen Key" )
+ PORT_DIPSETTING( 0x40, "Start" )
+ PORT_DIPSETTING( 0x00, "Flip Flop" )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("DSW5")
+ PORT_DIPNAME( 0x01, 0x01, "Credits Per Note" )
+ PORT_DIPSETTING( 0x01, "5" )
+ PORT_DIPSETTING( 0x00, "10" )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0c, 0x0c, "Computer Strength?" )
+ PORT_DIPSETTING( 0x0c, "Weak" )
+ PORT_DIPSETTING( 0x08, DEF_STR( Normal ))
+ PORT_DIPSETTING( 0x04, "Strong" )
+ PORT_DIPSETTING( 0x00, "Very Strong" )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("BET")
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+ PORT_START("HOPPER")
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+
+INPUT_PORTS_END
+
+
static INPUT_PORTS_START( funkyfig )
PORT_START("IN0") /* Keys (port 83 with port 80 = 20) */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
@@ -6794,7 +7210,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( mjmyster )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -6866,7 +7282,7 @@ static INPUT_PORTS_START( mjmyster )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
- PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Max Rate" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
@@ -6880,9 +7296,9 @@ static INPUT_PORTS_START( mjmyster )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
-// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
-// PORT_DIPSETTING( 0x04, "3" )
-// PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x70, 0x70, "YAKUMAN Bonus" )
PORT_DIPSETTING( 0x70, "Cut" )
PORT_DIPSETTING( 0x60, "1 T" )
@@ -6974,7 +7390,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( hginga )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
// PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) // Test
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -7194,7 +7610,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( hgokou )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) PORT_TOGGLE
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -7408,7 +7824,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( mjmyornt )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -7480,7 +7896,7 @@ static INPUT_PORTS_START( mjmyornt )
PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
- PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Max Rate" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
@@ -7488,15 +7904,21 @@ static INPUT_PORTS_START( mjmyornt )
PORT_START("DSW2")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x01)
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x01)
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x01)
+ PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) PORT_CONDITION("DSW5",0x01,EQUALS,0x01)
+
+ PORT_DIPSETTING( 0x01, DEF_STR( 2C_2C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x00)
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x00)
+ PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x00)
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x00)
+
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
-// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
-// PORT_DIPSETTING( 0x04, "3" )
-// PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x70, 0x70, "YAKUMAN Bonus" )
PORT_DIPSETTING( 0x70, "Cut" )
PORT_DIPSETTING( 0x60, "1 T" )
@@ -7511,11 +7933,11 @@ static INPUT_PORTS_START( mjmyornt )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW3")
- PORT_DIPNAME( 0x03, 0x03, "YAKUMAN Times" )
-// PORT_DIPSETTING( 0x00, "1" )
- PORT_DIPSETTING( 0x03, "1" )
- PORT_DIPSETTING( 0x02, "2" )
- PORT_DIPSETTING( 0x01, "3?" )
+ PORT_DIPNAME( 0x03, 0x03, "Bonus Game" )
+ PORT_DIPSETTING( 0x00, "Slot? (duplicate)" )
+ PORT_DIPSETTING( 0x03, "Slot?" )
+ PORT_DIPSETTING( 0x02, "Slot + Girls?" )
+ PORT_DIPSETTING( 0x01, "Girl Choice" ) // 4 choices in gal mode check (instead of 3)
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
@@ -7553,7 +7975,7 @@ static INPUT_PORTS_START( mjmyornt )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
+ PORT_DIPNAME( 0x40, 0x40, "Set Clock" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
@@ -7561,195 +7983,15 @@ static INPUT_PORTS_START( mjmyornt )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("DSW5")
- PORT_DIPNAME( 0x03, 0x03, "Computer Strength?" )
- PORT_DIPSETTING( 0x03, "Weak" )
- PORT_DIPSETTING( 0x02, DEF_STR( Normal ))
- PORT_DIPSETTING( 0x01, "Strong" )
- PORT_DIPSETTING( 0x00, "Very Strong" )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, "DonDen Key" )
- PORT_DIPSETTING( 0x08, "Start" )
- PORT_DIPSETTING( 0x00, "Flip Flop" )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, "Credits Per Note" )
- PORT_DIPSETTING( 0x40, "5" )
- PORT_DIPSETTING( 0x00, "10" )
- PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x80, DEF_STR( On ) )
-INPUT_PORTS_END
-
-#ifdef UNUSED_DEFINITION
-static INPUT_PORTS_START( mjmyuniv )
- PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN)
- PORT_SERVICE_NO_TOGGLE(0x04, IP_ACTIVE_LOW)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE2 ) // data clear
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) // note
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN)
-
- PORT_START("KEY0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) // A
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) // E
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) // I
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) // M
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) // Kan
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) // Start 1
-
- PORT_START("KEY1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) // B
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) // F
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) // J
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) // N
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) // Reach
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) // BET
-
- PORT_START("KEY2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) // C
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) // G
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) // K
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) // Chi
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) // Ron
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
-
- PORT_START("KEY3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) // D
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) // H
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) // L
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) // Pon
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) // nothing
-
- PORT_START("KEY4")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) // "l"
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) // "t"
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) // "w"
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) // Flip Flop
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) // "b"
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) // "s"
-
- PORT_START("DSW1")
- PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate (%)" )
- PORT_DIPSETTING( 0x00, "50" )
- PORT_DIPSETTING( 0x01, "53" )
- PORT_DIPSETTING( 0x02, "56" )
- PORT_DIPSETTING( 0x03, "59" )
- PORT_DIPSETTING( 0x04, "62" )
- PORT_DIPSETTING( 0x05, "65" )
- PORT_DIPSETTING( 0x06, "68" )
- PORT_DIPSETTING( 0x07, "71" )
- PORT_DIPSETTING( 0x08, "75" )
- PORT_DIPSETTING( 0x09, "78" )
- PORT_DIPSETTING( 0x0a, "81" )
- PORT_DIPSETTING( 0x0b, "84" )
- PORT_DIPSETTING( 0x0c, "87" )
- PORT_DIPSETTING( 0x0d, "90" )
- PORT_DIPSETTING( 0x0e, "93" )
- PORT_DIPSETTING( 0x0f, "96" )
- PORT_DIPNAME( 0x30, 0x30, "Odds Rate" )
- PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
- PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" )
- PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
- PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
- PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
- PORT_DIPSETTING( 0xc0, "1" )
- PORT_DIPSETTING( 0x80, "5" )
- PORT_DIPSETTING( 0x40, "10" )
- PORT_DIPSETTING( 0x00, "20" )
-
- PORT_START("DSW2")
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) )
- PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
- PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
- PORT_DIPSETTING( 0x0c, "1" )
-// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
-// PORT_DIPSETTING( 0x04, "3" )
-// PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x70, 0x70, "YAKUMAN Bonus" )
- PORT_DIPSETTING( 0x70, "Cut" )
- PORT_DIPSETTING( 0x60, "1 T" )
- PORT_DIPSETTING( 0x50, "300" )
- PORT_DIPSETTING( 0x40, "500" )
- PORT_DIPSETTING( 0x30, "700" )
- PORT_DIPSETTING( 0x20, "1000" )
- PORT_DIPSETTING( 0x10, "1000?" )
- PORT_DIPSETTING( 0x00, "1000?" )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW3")
- PORT_DIPNAME( 0x03, 0x03, "YAKUMAN Times" )
-// PORT_DIPSETTING( 0x00, "1" )
- PORT_DIPSETTING( 0x03, "1" )
- PORT_DIPSETTING( 0x02, "2" )
- PORT_DIPSETTING( 0x01, "3?" )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x18, 0x18, "Payout" )
- PORT_DIPSETTING( 0x18, "300" )
- PORT_DIPSETTING( 0x10, "500" )
- PORT_DIPSETTING( 0x08, "700" )
- PORT_DIPSETTING( 0x00, "1000" )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW4")
- PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) )
+ PORT_DIPNAME( 0x01, 0x01, "Alternate Coinage" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x00, "In Game Music" )
+ PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("DSW5")
- PORT_DIPNAME( 0x03, 0x03, "Computer Strength?" )
- PORT_DIPSETTING( 0x03, "Weak" )
- PORT_DIPSETTING( 0x02, DEF_STR( Normal ))
- PORT_DIPSETTING( 0x01, "Strong" )
- PORT_DIPSETTING( 0x00, "Very Strong" )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, "DonDen Key" )
PORT_DIPSETTING( 0x08, "Start" )
PORT_DIPSETTING( 0x00, "Flip Flop" )
@@ -7766,7 +8008,22 @@ static INPUT_PORTS_START( mjmyuniv )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
-#endif
+
+static INPUT_PORTS_START( mjmyorn2 )
+ PORT_INCLUDE(mjmyornt)
+
+ PORT_MODIFY("DSW2")
+ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) )
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x01)
+ PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x01)
+ PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x01)
+ PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) PORT_CONDITION("DSW5",0x01,EQUALS,0x01)
+
+ PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x00) // different alternate coinage
+ PORT_DIPSETTING( 0x01, DEF_STR( 2C_2C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x00)
+ PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x00)
+ PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) ) PORT_CONDITION("DSW5",0x01,EQUALS,0x00)
+INPUT_PORTS_END
static INPUT_PORTS_START( akamaru )
PORT_START("P1")
@@ -8169,7 +8426,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( sryudens )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -8281,7 +8538,7 @@ static INPUT_PORTS_START( sryudens )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
- PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Max Rate" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
@@ -8295,9 +8552,9 @@ static INPUT_PORTS_START( sryudens )
PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" )
PORT_DIPNAME( 0x0c, 0x0c, "Min Rate To Play" )
PORT_DIPSETTING( 0x0c, "1" )
-// PORT_DIPSETTING( 0x08, "2" ) // ? these don't let you start a game
-// PORT_DIPSETTING( 0x04, "3" )
-// PORT_DIPSETTING( 0x00, "5" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x04, "3" )
+ PORT_DIPSETTING( 0x00, "5" )
PORT_DIPNAME( 0x30, 0x30, "Payout" )
PORT_DIPSETTING( 0x30, "300" )
PORT_DIPSETTING( 0x20, "500" )
@@ -8402,7 +8659,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( seljan2 )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -8514,7 +8771,7 @@ static INPUT_PORTS_START( seljan2 )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
- PORT_DIPNAME( 0xc0, 0x40, "Max Bet" )
+ PORT_DIPNAME( 0xc0, 0x40, "Max Rate" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
@@ -8635,7 +8892,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( janshinp )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_SERVICE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -8747,7 +9004,7 @@ static INPUT_PORTS_START( janshinp )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
- PORT_DIPNAME( 0xc0, 0x40, "Max Bet" )
+ PORT_DIPNAME( 0xc0, 0x40, "Max Rate" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
@@ -8867,7 +9124,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( dtoyoken )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_SERVICE(0x04, IP_ACTIVE_LOW)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -8979,7 +9236,7 @@ static INPUT_PORTS_START( dtoyoken )
PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" )
PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
- PORT_DIPNAME( 0xc0, 0x40, "Max Bet" )
+ PORT_DIPNAME( 0xc0, 0x40, "Max Rate" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
@@ -9100,7 +9357,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( daimyojn )
PORT_START("SYSTEM")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE3 ) // medal out
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) PORT_CODE(KEYCODE_4) // pay
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test )) PORT_CODE(KEYCODE_F1) PORT_TOGGLE
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) // analyzer
@@ -9213,7 +9470,7 @@ static INPUT_PORTS_START( daimyojn )
// PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" )
// PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" )
// PORT_DIPSETTING( 0x30, "2 3 6 8 12 15 30 50" )
- PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" )
+ PORT_DIPNAME( 0xc0, 0xc0, "Max Rate" )
PORT_DIPSETTING( 0xc0, "1" )
PORT_DIPSETTING( 0x80, "5" )
PORT_DIPSETTING( 0x40, "10" )
@@ -9911,6 +10168,53 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Mahjong Super Dai Chuuka Ken
+***************************************************************************/
+
+static MACHINE_CONFIG_START( mjschuka, ddenlovr_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu",Z80,XTAL_16MHz/2)
+ MCFG_CPU_PROGRAM_MAP(mjmyster_map)
+ MCFG_CPU_IO_MAP(mjschuka_portmap)
+ MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hginga_irq)
+
+ MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,hanakanz)
+ MCFG_MACHINE_RESET_OVERRIDE(ddenlovr_state,ddenlovr)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(336, 256+22)
+ MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5, 256-11-1)
+ MCFG_SCREEN_UPDATE_DRIVER(ddenlovr_state, screen_update_ddenlovr)
+ MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x200)
+
+ MCFG_VIDEO_START_OVERRIDE(ddenlovr_state,mjflove) // blitter commands in the roms are shuffled around
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_SOUND_ADD("ym2413", YM2413, XTAL_28_63636MHz / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ MCFG_SOUND_ADD("aysnd", AY8910, XTAL_28_63636MHz / 8)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
+
+ MCFG_OKIM6295_ADD("oki", XTAL_28_63636MHz / 28, OKIM6295_PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+
+ /* devices */
+ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL_32_768kHz)
+ MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(ddenlovr_state, hginga_rtc_irq))
+MACHINE_CONFIG_END
+
+
+/***************************************************************************
Mahjong The Mysterious World
***************************************************************************/
@@ -10095,6 +10399,9 @@ static MACHINE_CONFIG_DERIVED( mjmyornt, quizchq )
MCFG_CPU_IO_MAP(mjmyster_portmap)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ddenlovr_state, mjmyster_irq, "screen", 0, 1)
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 4, 256-16+4-1)
+
MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjmyster)
MCFG_DEVICE_MODIFY("rtc")
@@ -10163,7 +10470,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( jongtei, ddenlovr_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) // ?
+ MCFG_CPU_ADD("maincpu",Z80, XTAL_20MHz / 2) // TMPZ84C015
MCFG_CPU_PROGRAM_MAP(hanakanz_map)
MCFG_CPU_IO_MAP(jongtei_portmap)
MCFG_CPU_VBLANK_INT_DRIVER("screen", ddenlovr_state, hanakanz_irq)
@@ -10199,6 +10506,15 @@ static MACHINE_CONFIG_START( jongtei, ddenlovr_state )
MCFG_MSM6242_OUT_INT_HANDLER(WRITELINE(ddenlovr_state, hanakanz_rtc_irq))
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( mjgnight, jongtei )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_IO_MAP(mjgnight_portmap)
+
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(336, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 336-1, 5-4, 256-11-1-4)
+MACHINE_CONFIG_END
+
/***************************************************************************
Mahjong Seiryu Densetsu
***************************************************************************/
@@ -11496,6 +11812,67 @@ ROM_END
/***************************************************************************
+Mahjong Super Dai Chuuka Ken (Dynax, 1995)
+
+PCB Layout
+----------
+
+Dynax Inc. Nagoya Japan D11510198L1
+sticker: D11509208L1
+|----------------------------------------|
+| MB3714A TA7535(x2) M6295 1151 3V_BATT|
+| VOL YMZ284-D YM2413 1152 |
+| DSW5 16MHz PAL |
+| CPU 62256 |
+| ULN2003 1153 62421RTC|
+| PLCC44/68 |
+| |
+| 28.63636MHz M514262 |
+| M514262 |
+| QFP208 M514262 |
+| CXK5863 M514262 |
+| PAL |
+|DSW1 DSW2 1154 |
+|DSW3 DSW4 1155 |
+|----------------------------------------|
+Notes:
+ PLCC44 and QFP208 unknown (surface scratched), location has alternative pads for PLCC68
+ CPU - surface scratched. clock input 16MHz, looks like TMPZ8400
+ M6295 - clock 1.0227MHz (28.63636/28). Pin 7 HIGH
+ YMZ284 - clock 3.579545MHz (28.63636/8)
+ YM2413 - clock 3.579545MHz (28.63636/8)
+ DSW1-4 - 10-position DIP switches
+ DSW5 - 4-position DIP switch
+ TA7535 - = LM358
+ VSync - 60.8529Hz
+ HSync - 15.2790kHz
+ EPROM 1152 is M27C1001, others are MX27C4000
+
+***************************************************************************/
+
+ROM_START( mjschuka )
+ ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
+ ROM_LOAD( "1153.5c", 0x00000, 0x80000, CRC(67cf10db) SHA1(a813f44578eb2d67b4346ffd9c15e44e7fa91ca7) )
+ ROM_RELOAD( 0x10000, 0x80000 )
+
+ ROM_REGION( 0x100000, "blitter", 0 ) /* blitter data */
+ ROM_LOAD( "1154.11b", 0x00000, 0x80000, CRC(b8d04189) SHA1(1acac851c21e1055843e1398087d7afd8b9201b8) )
+ ROM_LOAD( "1155.12b", 0x80000, 0x80000, CRC(4208edcf) SHA1(444472107dac548956d2749cd892214efb6ff2f6) )
+
+ ROM_REGION( 0x200000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "1151.1c", 0x000000, 0x80000, CRC(c92065a9) SHA1(65c38c3a31d3f4b8240a16fdcdf376acdf5c17d2) )
+ ROM_RELOAD( 0x100000, 0x20000 )
+ ROM_LOAD( "1152.2c", 0x080000, 0x20000, CRC(f9244532) SHA1(b502d8d3569c4b4d655af3baf05a3c79831a84ff) )
+ ROM_RELOAD( 0x180000, 0x20000 )
+ ROM_RELOAD( 0x0a0000, 0x20000 )
+ ROM_RELOAD( 0x1a0000, 0x20000 )
+ ROM_RELOAD( 0x0c0000, 0x20000 )
+ ROM_RELOAD( 0x1c0000, 0x20000 )
+ROM_END
+
+
+/***************************************************************************
+
The First Funky Fighter
Nakanihon, 1994
@@ -11756,7 +12133,7 @@ ROM_END
/***************************************************************************
Mahjong The Mysterious Orient
-Dynax, 1994
+Dynax, 1992
PCB Layout
----------
@@ -11814,6 +12191,32 @@ ROM_START( mjmyornt )
ROM_LOAD( "7101.1e", 0x00000, 0x20000, CRC(09b7a9b2) SHA1(64d9ccbb726bb6c5b362afc92bca2e3db87fd454) )
ROM_END
+/***************************************************************************
+
+Mahjong The Mysterious Orient Part 2
+Dynax, 1993
+
+Same PCB as Mysterious Orient / Mysterious Universe (D7107058L1-1).
+ROM labels are blank, so their file names are just the location.
+
+***************************************************************************/
+
+ROM_START( mjmyorn2 )
+ ROM_REGION( 0x90000 + 0x1000*8, "maincpu", 0 ) /* Z80 Code + space for banked RAM */
+ ROM_LOAD( "3d", 0x00000, 0x40000, CRC(7ef07c1e) SHA1(3fabd429c71224ddfaa4552e54f1d763e7e40c18) )
+ ROM_RELOAD( 0x10000, 0x40000 )
+
+ ROM_REGION( 0x1c0000, "blitter", 0 ) /* blitter data */
+ ROM_LOAD( "12b", 0x000000, 0x80000, CRC(1debae36) SHA1(670fa1203b9f127f9ce3150a4a0cae730cbc426f) )
+ ROM_LOAD( "11b", 0x080000, 0x80000, CRC(fe9953f7) SHA1(db7bef218f830f7a0e7d68ee6ff363f9b5c2966c) )
+ ROM_LOAD( "10b", 0x100000, 0x80000, CRC(6d0fd29a) SHA1(9b31668acf1790d9aecd1f8e8c0cb52a7a625d2d) )
+ ROM_LOAD( "9b", 0x180000, 0x40000, CRC(36228e6a) SHA1(f6153d6fc1c53d1ffa54820b2803967c50a148dd) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "1e", 0x00000, 0x20000, CRC(09b7a9b2) SHA1(64d9ccbb726bb6c5b362afc92bca2e3db87fd454) )
+ ROM_RELOAD( 0x20000, 0x20000 )
+ROM_END
+
/***************************************************************************
@@ -12306,6 +12709,31 @@ ROM_END
/***************************************************************************
+Mahjong Gorgeous Night
+
+PCB is identical to Mahjong Jong-Tei, but with number:
+TSM003-0002 Techno-Top, Limited
+
+***************************************************************************/
+
+ROM_START( mjgnight )
+ ROM_REGION( 0x90000+16*0x1000, "maincpu", 0 ) /* Z80 Code */
+ ROM_LOAD( "00302.5b", 0x00000, 0x80000, CRC(7169611a) SHA1(90744799b57001a4f6d0767db639362f24d3797c) )
+ ROM_RELOAD( 0x10000, 0x80000 )
+
+ ROM_REGION( 0x800000, "blitter", 0 ) /* blitter data */
+ ROM_LOAD( "00303.7b", 0x000000, 0x200000, CRC(5b2f28a5) SHA1(12fff6d5736e58e32b0efd6d136952bc4c03e661) )
+ ROM_LOAD( "00304.8b", 0x200000, 0x200000, CRC(82624fb6) SHA1(bea307a59b2dd8e6655c8fb02f1eaa6aa072cbdc) )
+ ROM_LOAD( "00305.10b", 0x400000, 0x200000, CRC(4a5a6ac5) SHA1(ef89f56d9033eb2c633d5ee2ddd13f6325c61051) )
+ ROM_LOAD( "00306.12b", 0x600000, 0x200000, CRC(143c4d24) SHA1(9a9544b98162240fbc0adb867eff8630b3cd1800) )
+
+ ROM_REGION( 0x200000, "oki", 0 ) /* Samples */
+ ROM_LOAD( "00301.2a", 0x000000, 0x100000, CRC(f5a0953a) SHA1(be8847b581d7cf8d6e2c1361312e12e1513a9621) )
+ ROM_RELOAD( 0x100000, 0x100000 )
+ROM_END
+
+/***************************************************************************
+
Mahjong Seiryu Densetsu
Dynax 1996
@@ -12595,47 +13023,50 @@ ROM_START( htengoku )
ROM_END
GAME( 1992, htengoku, 0, htengoku, htengoku, driver_device, 0, ROT180, "Dynax", "Hanafuda Hana Tengoku (Japan)", 0)
-GAME( 1992, mmpanic, 0, mmpanic, mmpanic, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Monkey Mole Panic (USA)", GAME_NO_COCKTAIL )
-GAME( 1993, funkyfig, 0, funkyfig, funkyfig, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "The First Funky Fighter (set 1)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS ) // scrolling, priority?
-GAME( 1993, funkyfiga, funkyfig, funkyfig, funkyfig, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "The First Funky Fighter (set 2)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
-GAME( 1993, quizchq, 0, quizchq, quizchq, driver_device, 0, ROT0, "Nakanihon", "Quiz Channel Question (Ver 1.00) (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
-GAME( 1993, quizchql, quizchq, quizchq, quizchq, driver_device, 0, ROT0, "Nakanihon (Laxan license)", "Quiz Channel Question (Ver 1.23) (Taiwan?)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
-GAME( 1993, animaljr, 0, mmpanic, animaljr, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Exciting Animal Land Jr. (USA)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND )
-GAME( 1993, animaljrs, animaljr, mmpanic, animaljr, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Animalandia Jr. (Spanish)", GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND )
-GAME( 1993, animaljrj, animaljr, mmpanic, animaljr, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Waiwai Animal Land Jr. (Japan)", GAME_NO_COCKTAIL )
-GAME( 1994, hginga, 0, hginga, hginga, driver_device, 0, ROT0, "Dynax", "Hanafuda Hana Ginga", GAME_NO_COCKTAIL )
-GAME( 1994, mjmyster, 0, mjmyster, mjmyster, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 1)", GAME_NO_COCKTAIL )
-GAME( 1994, mjmywrld, mjmyster, mjmywrld, mjmyster, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 2)", GAME_NO_COCKTAIL )
-GAME( 1994, mjmyornt, 0, mjmyornt, mjmyornt, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient", GAME_NO_COCKTAIL )
-GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious Universe", GAME_NO_COCKTAIL )
-GAME( 1994, quiz365, 0, quiz365, quiz365, driver_device, 0, ROT0, "Nakanihon", "Quiz 365 (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
-GAME( 1994, quiz365t, quiz365, quiz365, quiz365, driver_device, 0, ROT0, "Nakanihon / Taito", "Quiz 365 (Hong Kong & Taiwan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_UNEMULATED_PROTECTION )
-GAME( 1994, rongrong, 0, rongrong, rongrong, ddenlovr_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Europe)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
-GAME( 1994, rongrongj, rongrong, rongrong, rongrong, ddenlovr_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
-GAME( 1994, rongrongg, rongrong, rongrong, rongrong, ddenlovr_state, rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Germany)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
-GAME( 1994, hparadis, 0, hparadis, hparadis, driver_device, 0, ROT0, "Dynax", "Super Hana Paradise (Japan)", GAME_NO_COCKTAIL )
-GAME( 1995, hgokou, 0, hgokou, hgokou, driver_device, 0, ROT0, "Dynax (Alba license)", "Hanafuda Hana Gokou (Japan)", GAME_NO_COCKTAIL )
-GAME( 1995, hgokbang, hgokou, hgokbang, hgokou, driver_device, 0, ROT0, "Dynax", "Hanafuda Hana Gokou Bangaihen (Japan)", GAME_NO_COCKTAIL )
-GAME( 1995, mjdchuka, 0, mjchuuka, mjchuuka, driver_device, 0, ROT0, "Dynax", "Mahjong The Dai Chuuka Ken (China, v. D111)", GAME_NO_COCKTAIL )
-GAME( 1995, nettoqc, 0, nettoqc, nettoqc, driver_device, 0, ROT0, "Nakanihon", "Nettoh Quiz Champion (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
-GAME( 1995, ultrchmp, nettoqc, ultrchmp, ultrchmp, driver_device, 0, ROT0, "Nakanihon", "Se Gye Hweng Dan Ultra Champion (Korea)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
-GAME( 1995, ultrchmph, nettoqc, ultrchmp, ultrchmp, driver_device, 0, ROT0, "Nakanihon", "Cheng Ba Shi Jie - Chao Shi Kong Guan Jun (Taiwan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS )
-GAME( 1995, ddenlovj, 0, ddenlovj, ddenlovj, driver_device, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan)", GAME_NO_COCKTAIL )
-GAME( 1995, ddenlovrk, ddenlovj, ddenlovrk, ddenlovr, driver_device, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea)", GAME_NO_COCKTAIL )
-GAME( 1995, ddenlovrb, ddenlovj, ddenlovr, ddenlovr, driver_device, 0, ROT0, "bootleg", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg)", GAME_NO_COCKTAIL )
-GAME( 1996, ddenlovr, ddenlovj, ddenlovr, ddenlovr, driver_device, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 (Hong Kong)", GAME_NO_COCKTAIL )
-GAME( 1996, hanakanz, 0, hanakanz, hanakanz, driver_device, 0, ROT0, "Dynax", "Hana Kanzashi (Japan)", GAME_NO_COCKTAIL )
-GAME( 1997, kotbinyo, hanakanz, kotbinyo, kotbinyo, driver_device, 0, ROT0, "Dynax / Shinwhajin", "Kkot Bi Nyo (Korea)", GAME_NO_COCKTAIL )
-GAME( 1997, kotbinsp, 0, kotbinsp, kotbinsp, driver_device, 0, ROT0, "Dynax / Shinwhajin", "Kkot Bi Nyo Special (Korea)", GAME_NO_COCKTAIL )
-GAME( 1996, akamaru, 0, akamaru, akamaru, driver_device, 0, ROT0, "Dynax (Nakanihon license)", "Panel & Variety Akamaru Q Jousyou Dont-R", GAME_NO_COCKTAIL )
-GAME( 1996, janshinp, 0, janshinp, janshinp, driver_device, 0, ROT0, "Dynax / Sigma", "Mahjong Janshin Plus (Japan)", GAME_NO_COCKTAIL )
-GAME( 1996, dtoyoken, 0, dtoyoken, dtoyoken, driver_device, 0, ROT0, "Dynax / Sigma", "Mahjong Dai Touyouken (Japan)", GAME_NO_COCKTAIL )
-GAME( 1996, sryudens, 0, sryudens, sryudens, driver_device, 0, ROT0, "Dynax / Face", "Mahjong Seiryu Densetsu (Japan, NM502)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
-GAME( 1996, seljan2, 0, seljan2, seljan2, driver_device, 0, ROT0, "Dynax / Face", "Return Of Sel Jan II (Japan, NM557)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
-GAME( 1996, mjflove, 0, mjflove, mjflove, driver_device, 0, ROT0, "Nakanihon", "Mahjong Fantasic Love (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
-GAME( 1997, hkagerou, 0, hkagerou, hkagerou, driver_device, 0, ROT0, "Nakanihon / Dynax", "Hana Kagerou [BET] (Japan)", GAME_NO_COCKTAIL )
-GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, driver_device, 0, ROT0, "Dynax", "Mahjong Chuukanejyo (China)", GAME_NO_COCKTAIL )
-GAME( 1998, mjreach1, 0, mjreach1, mjreach1, driver_device, 0, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", GAME_NO_COCKTAIL )
-GAME( 1999, jongtei, 0, jongtei, jongtei, driver_device, 0, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, ver. NM532-01)", GAME_NO_COCKTAIL )
-GAME( 2002, daimyojn, 0, daimyojn, daimyojn, driver_device, 0, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", GAME_NO_COCKTAIL )
-GAME( 2004, momotaro, 0, daimyojn, daimyojn, ddenlovr_state, momotaro, ROT0, "Techno-Top", "Mahjong Momotarou (Japan)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
+GAME( 1992, mmpanic, 0, mmpanic, mmpanic, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Monkey Mole Panic (USA)", MACHINE_NO_COCKTAIL )
+GAME( 1993, mjmyorn2, 0, mjmyornt, mjmyorn2, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient Part 2 - Exotic Dream", MACHINE_NO_COCKTAIL )
+GAME( 1992, mjmyornt, mjmyorn2, mjmyornt, mjmyornt, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious Orient", MACHINE_NO_COCKTAIL )
+GAME( 1993, funkyfig, 0, funkyfig, funkyfig, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "The First Funky Fighter (North America, set 1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS ) // scrolling, priority?
+GAME( 1993, funkyfiga, funkyfig, funkyfig, funkyfig, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "The First Funky Fighter (North America, set 2)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1993, quizchq, 0, quizchq, quizchq, driver_device, 0, ROT0, "Nakanihon", "Quiz Channel Question (Ver 1.00) (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1993, quizchql, quizchq, quizchq, quizchq, driver_device, 0, ROT0, "Nakanihon (Laxan license)", "Quiz Channel Question (Ver 1.23) (Taiwan?)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
+GAME( 1993, animaljr, 0, mmpanic, animaljr, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Exciting Animal Land Jr. (USA)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
+GAME( 1993, animaljrs, animaljr, mmpanic, animaljr, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Animalandia Jr. (Spanish)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
+GAME( 1993, animaljrj, animaljr, mmpanic, animaljr, driver_device, 0, ROT0, "Nakanihon / East Technology (Taito license)", "Waiwai Animal Land Jr. (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1994, mjmyster, 0, mjmyster, mjmyster, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 1)", MACHINE_NO_COCKTAIL )
+GAME( 1994, mjmywrld, mjmyster, mjmywrld, mjmyster, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious World (set 2)", MACHINE_NO_COCKTAIL )
+GAME( 1994, hginga, 0, hginga, hginga, driver_device, 0, ROT0, "Dynax", "Hanafuda Hana Ginga", MACHINE_NO_COCKTAIL )
+GAME( 1994, mjmyuniv, 0, mjmyuniv, mjmyster, driver_device, 0, ROT0, "Dynax", "Mahjong The Mysterious Universe (Japan, D85)", MACHINE_NO_COCKTAIL )
+GAME( 1994, quiz365, 0, quiz365, quiz365, driver_device, 0, ROT0, "Nakanihon", "Quiz 365 (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1994, quiz365t, quiz365, quiz365, quiz365, driver_device, 0, ROT0, "Nakanihon / Taito", "Quiz 365 (Hong Kong & Taiwan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1994, rongrong, 0, rongrong, rongrong, ddenlovr_state,rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Europe)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS )
+GAME( 1994, rongrongj, rongrong, rongrong, rongrong, ddenlovr_state,rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS )
+GAME( 1994, rongrongg, rongrong, rongrong, rongrong, ddenlovr_state,rongrong, ROT0, "Nakanihon (Activision license)", "Puzzle Game Rong Rong (Germany)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS )
+GAME( 1994, hparadis, 0, hparadis, hparadis, driver_device, 0, ROT0, "Dynax", "Super Hana Paradise (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1995, hgokou, 0, hgokou, hgokou, driver_device, 0, ROT0, "Dynax (Alba license)", "Hanafuda Hana Gokou (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1995, hgokbang, hgokou, hgokbang, hgokou, driver_device, 0, ROT0, "Dynax", "Hanafuda Hana Gokou Bangaihen (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1995, mjdchuka, 0, mjchuuka, mjchuuka, driver_device, 0, ROT0, "Dynax", "Mahjong The Dai Chuuka Ken (China, D111)", MACHINE_NO_COCKTAIL )
+GAME( 1995, mjschuka, 0, mjschuka, mjschuka, driver_device, 0, ROT0, "Dynax", "Mahjong Super Dai Chuuka Ken (Japan, D115)", MACHINE_NO_COCKTAIL )
+GAME( 1995, nettoqc, 0, nettoqc, nettoqc, driver_device, 0, ROT0, "Nakanihon", "Nettoh Quiz Champion (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS )
+GAME( 1995, ultrchmp, nettoqc, ultrchmp, ultrchmp, driver_device, 0, ROT0, "Nakanihon", "Se Gye Hweng Dan Ultra Champion (Korea)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS )
+GAME( 1995, ultrchmph, nettoqc, ultrchmp, ultrchmp, driver_device, 0, ROT0, "Nakanihon", "Cheng Ba Shi Jie - Chao Shi Kong Guan Jun (Taiwan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS )
+GAME( 1995, ddenlovj, 0, ddenlovj, ddenlovj, driver_device, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1995, ddenlovrk, ddenlovj, ddenlovrk, ddenlovr, driver_device, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea)", MACHINE_NO_COCKTAIL )
+GAME( 1995, ddenlovrb, ddenlovj, ddenlovr, ddenlovr, driver_device, 0, ROT0, "bootleg", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg)", MACHINE_NO_COCKTAIL )
+GAME( 1996, ddenlovr, ddenlovj, ddenlovr, ddenlovr, driver_device, 0, ROT0, "Dynax", "Don Den Lover Vol. 1 (Hong Kong)", MACHINE_NO_COCKTAIL )
+GAME( 1996, hanakanz, 0, hanakanz, hanakanz, driver_device, 0, ROT0, "Dynax", "Hana Kanzashi (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1997, kotbinyo, hanakanz, kotbinyo, kotbinyo, driver_device, 0, ROT0, "Dynax / Shinwhajin", "Kkot Bi Nyo (Korea)", MACHINE_NO_COCKTAIL )
+GAME( 1997, kotbinsp, 0, kotbinsp, kotbinsp, driver_device, 0, ROT0, "Dynax / Shinwhajin", "Kkot Bi Nyo Special (Korea)", MACHINE_NO_COCKTAIL )
+GAME( 1996, akamaru, 0, akamaru, akamaru, driver_device, 0, ROT0, "Dynax (Nakanihon license)", "Panel & Variety Akamaru Q Jousyou Dont-R", MACHINE_NO_COCKTAIL )
+GAME( 1996, janshinp, 0, janshinp, janshinp, driver_device, 0, ROT0, "Dynax / Sigma", "Mahjong Janshin Plus (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1996, dtoyoken, 0, dtoyoken, dtoyoken, driver_device, 0, ROT0, "Dynax / Sigma", "Mahjong Dai Touyouken (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1996, sryudens, 0, sryudens, sryudens, driver_device, 0, ROT0, "Dynax / Face", "Mahjong Seiryu Densetsu (Japan, NM502)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, seljan2, 0, seljan2, seljan2, driver_device, 0, ROT0, "Dynax / Face", "Return Of Sel Jan II (Japan, NM557)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1996, mjflove, 0, mjflove, mjflove, driver_device, 0, ROT0, "Nakanihon", "Mahjong Fantasic Love (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1997, hkagerou, 0, hkagerou, hkagerou, driver_device, 0, ROT0, "Nakanihon / Dynax", "Hana Kagerou [BET] (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1998, mjchuuka, 0, mjchuuka, mjchuuka, driver_device, 0, ROT0, "Dynax", "Mahjong Chuukanejyo (China)", MACHINE_NO_COCKTAIL )
+GAME( 1998, mjreach1, 0, mjreach1, mjreach1, driver_device, 0, ROT0, "Nihon System", "Mahjong Reach Ippatsu (Japan)", MACHINE_NO_COCKTAIL )
+GAME( 1999, jongtei, 0, jongtei, jongtei, driver_device, 0, ROT0, "Dynax", "Mahjong Jong-Tei (Japan, NM532-01)", MACHINE_NO_COCKTAIL )
+GAME( 2000, mjgnight, 0, mjgnight, mjgnight, driver_device, 0, ROT0, "Techno-Top", "Mahjong Gorgeous Night (Japan, TSM003-01)", MACHINE_NO_COCKTAIL )
+GAME( 2002, daimyojn, 0, daimyojn, daimyojn, driver_device, 0, ROT0, "Dynax / Techno-Top / Techno-Planning", "Mahjong Daimyojin (Japan, T017-PB-00)", MACHINE_NO_COCKTAIL )
+GAME( 2004, momotaro, 0, daimyojn, daimyojn, ddenlovr_state,momotaro, ROT0, "Techno-Top", "Mahjong Momotarou (Japan)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/ddragon.c b/src/mame/drivers/ddragon.c
index fb01a116fe5..514c20611b9 100644
--- a/src/mame/drivers/ddragon.c
+++ b/src/mame/drivers/ddragon.c
@@ -2130,31 +2130,31 @@ DRIVER_INIT_MEMBER(ddragon_state,ddragon6809)
*
*************************************/
-GAME( 1987, ddragon, 0, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan", "Double Dragon (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ddragonw, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan (Taito license)", "Double Dragon (World set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ddragonw1, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan (Taito license)", "Double Dragon (World set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ddragonu, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan (Taito America license)", "Double Dragon (US set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ddragonua, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan (Taito America license)", "Double Dragon (US set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ddragonub, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan (Taito America license)", "Double Dragon (US set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ddragonb2, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "bootleg", "Double Dragon (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ddragonb, ddragon, ddragonb, ddragon, ddragon_state, ddragon, ROT0, "bootleg", "Double Dragon (bootleg with HD6309)", GAME_SUPPORTS_SAVE ) // according to dump notes
-GAME( 1987, ddragonba, ddragon, ddragonba, ddragon, ddragon_state, ddragon, ROT0, "bootleg", "Double Dragon (bootleg with M6803)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ddragon6809, ddragon, ddragon6809, ddragon, ddragon_state, ddragon6809, ROT0, "bootleg", "Double Dragon (bootleg with 3xM6809, set 1)", GAME_NOT_WORKING )
-GAME( 1987, ddragon6809a,ddragon, ddragon6809, ddragon, ddragon_state, ddragon6809, ROT0, "bootleg", "Double Dragon (bootleg with 3xM6809, set 2)", GAME_NOT_WORKING )
-
-GAME( 1988, ddragon2, 0, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (World)", GAME_SUPPORTS_SAVE )
-GAME( 1988, ddragon2u, ddragon2, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (US)", GAME_SUPPORTS_SAVE )
-GAME( 1988, ddragon2j, ddragon2, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (Japan)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // bad dump
+GAME( 1987, ddragon, 0, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan", "Double Dragon (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ddragonw, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan (Taito license)", "Double Dragon (World set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ddragonw1, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan (Taito license)", "Double Dragon (World set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ddragonu, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan (Taito America license)", "Double Dragon (US set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ddragonua, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan (Taito America license)", "Double Dragon (US set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ddragonub, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "Technos Japan (Taito America license)", "Double Dragon (US set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ddragonb2, ddragon, ddragon, ddragon, ddragon_state, ddragon, ROT0, "bootleg", "Double Dragon (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ddragonb, ddragon, ddragonb, ddragon, ddragon_state, ddragon, ROT0, "bootleg", "Double Dragon (bootleg with HD6309)", MACHINE_SUPPORTS_SAVE ) // according to dump notes
+GAME( 1987, ddragonba, ddragon, ddragonba, ddragon, ddragon_state, ddragon, ROT0, "bootleg", "Double Dragon (bootleg with M6803)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ddragon6809, ddragon, ddragon6809, ddragon, ddragon_state, ddragon6809, ROT0, "bootleg", "Double Dragon (bootleg with 3xM6809, set 1)", MACHINE_NOT_WORKING )
+GAME( 1987, ddragon6809a,ddragon, ddragon6809, ddragon, ddragon_state, ddragon6809, ROT0, "bootleg", "Double Dragon (bootleg with 3xM6809, set 2)", MACHINE_NOT_WORKING )
+
+GAME( 1988, ddragon2, 0, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ddragon2u, ddragon2, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ddragon2j, ddragon2, ddragon2, ddragon2, ddragon_state, ddragon2, ROT0, "Technos Japan", "Double Dragon II - The Revenge (Japan)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // bad dump
/* these were conversions of double dragon */
-GAME( 1991, tstrike, 0, darktowr, tstrike, ddragon_state, darktowr, ROT0, "East Coast Coin Company", "Thunder Strike (set 1)", GAME_SUPPORTS_SAVE ) // same manufacturer as The Game Room?
-GAME( 1991, tstrikea, tstrike, darktowr, tstrike, ddragon_state, darktowr, ROT0, "The Game Room", "Thunder Strike (set 2, older)", GAME_SUPPORTS_SAVE )
-GAME( 1992, ddungeon, 0, darktowr, ddungeon, ddragon_state, darktowr, ROT0, "The Game Room", "Dangerous Dungeons (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1992, ddungeone,ddungeon, darktowr, ddungeon, ddragon_state, darktowr, ROT0, "East Coast Coin Company", "Dangerous Dungeons (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1992, darktowr, 0, darktowr, darktowr, ddragon_state, darktowr, ROT0, "The Game Room", "Dark Tower", GAME_SUPPORTS_SAVE )
+GAME( 1991, tstrike, 0, darktowr, tstrike, ddragon_state, darktowr, ROT0, "East Coast Coin Company", "Thunder Strike (set 1)", MACHINE_SUPPORTS_SAVE ) // same manufacturer as The Game Room?
+GAME( 1991, tstrikea, tstrike, darktowr, tstrike, ddragon_state, darktowr, ROT0, "The Game Room", "Thunder Strike (set 2, older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, ddungeon, 0, darktowr, ddungeon, ddragon_state, darktowr, ROT0, "The Game Room", "Dangerous Dungeons (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, ddungeone,ddungeon, darktowr, ddungeon, ddragon_state, darktowr, ROT0, "East Coast Coin Company", "Dangerous Dungeons (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, darktowr, 0, darktowr, darktowr, ddragon_state, darktowr, ROT0, "The Game Room", "Dark Tower", MACHINE_SUPPORTS_SAVE )
/* these run on their own board, but are basically the same game. Toffy even has 'dangerous dungeons' text in it */
-GAME( 1993, toffy, 0, toffy, toffy, ddragon_state, toffy, ROT0, "Midas", "Toffy", GAME_SUPPORTS_SAVE )
+GAME( 1993, toffy, 0, toffy, toffy, ddragon_state, toffy, ROT0, "Midas", "Toffy", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, stoffy, 0, toffy, toffy, ddragon_state, toffy, ROT0, "Midas", "Super Toffy", GAME_SUPPORTS_SAVE )
-GAME( 1994, stoffyu, stoffy, toffy, toffy, ddragon_state, toffy, ROT0, "Midas (Unico license)", "Super Toffy (Unico license)", GAME_SUPPORTS_SAVE )
+GAME( 1994, stoffy, 0, toffy, toffy, ddragon_state, toffy, ROT0, "Midas", "Super Toffy", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, stoffyu, stoffy, toffy, toffy, ddragon_state, toffy, ROT0, "Midas (Unico license)", "Super Toffy (Unico license)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ddragon3.c b/src/mame/drivers/ddragon3.c
index 1766350d8df..6a29b3b9e62 100644
--- a/src/mame/drivers/ddragon3.c
+++ b/src/mame/drivers/ddragon3.c
@@ -1476,20 +1476,20 @@ ROM_END
*
*************************************/
-GAME( 1990, ddragon3, 0, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (US)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ddragon3j,ddragon3, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ddragon3p,ddragon3, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (prototype)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ddragon3b,ddragon3, ddragon3b,ddragon3b, driver_device,0, ROT0, "bootleg", "Double Dragon 3 - The Rosetta Stone (bootleg)", GAME_SUPPORTS_SAVE )
-
-GAME( 1990, ctribe, 0, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ctribe1, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US set 1?)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ctribeo, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US, older)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ctribej, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ctribeb, ctribe, ctribe, ctribeb, driver_device, 0, ROT0, "bootleg", "The Combatribes (bootleg set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ctribeb2, ctribe, ctribe, ctribeb, driver_device, 0, ROT0, "bootleg", "The Combatribes (bootleg set 2)", GAME_SUPPORTS_SAVE )
-
-GAME( 1991, wwfwfest, 0, wwfwfest, wwfwfest, driver_device, 0, ROT0, "Technos Japan", "WWF WrestleFest (US set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1991, wwfwfesta, wwfwfest, wwfwfest, wwfwfest, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (US Tecmo)", GAME_SUPPORTS_SAVE )
-GAME( 1991, wwfwfestb, wwfwfest, wwfwfstb, wwfwfest, driver_device, 0, ROT0, "bootleg", "WWF WrestleFest (US bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1991, wwfwfestj, wwfwfest, wwfwfest, wwfwfesta, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, wwfwfestk, wwfwfest, wwfwfest, wwfwfesta, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Korea)", GAME_SUPPORTS_SAVE )
+GAME( 1990, ddragon3, 0, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ddragon3j,ddragon3, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ddragon3p,ddragon3, ddragon3, ddragon3, driver_device, 0, ROT0, "Technos Japan", "Double Dragon 3 - The Rosetta Stone (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ddragon3b,ddragon3, ddragon3b,ddragon3b, driver_device,0, ROT0, "bootleg", "Double Dragon 3 - The Rosetta Stone (bootleg)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1990, ctribe, 0, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ctribe1, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US set 1?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ctribeo, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (US, older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ctribej, ctribe, ctribe, ctribe, driver_device, 0, ROT0, "Technos Japan", "The Combatribes (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ctribeb, ctribe, ctribe, ctribeb, driver_device, 0, ROT0, "bootleg", "The Combatribes (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ctribeb2, ctribe, ctribe, ctribeb, driver_device, 0, ROT0, "bootleg", "The Combatribes (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1991, wwfwfest, 0, wwfwfest, wwfwfest, driver_device, 0, ROT0, "Technos Japan", "WWF WrestleFest (US set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, wwfwfesta, wwfwfest, wwfwfest, wwfwfest, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (US Tecmo)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, wwfwfestb, wwfwfest, wwfwfstb, wwfwfest, driver_device, 0, ROT0, "bootleg", "WWF WrestleFest (US bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, wwfwfestj, wwfwfest, wwfwfest, wwfwfesta, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, wwfwfestk, wwfwfest, wwfwfest, wwfwfesta, driver_device, 0, ROT0, "Technos Japan (Tecmo license)", "WWF WrestleFest (Korea)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ddribble.c b/src/mame/drivers/ddribble.c
index b64100ce8b2..40e2df29ee6 100644
--- a/src/mame/drivers/ddribble.c
+++ b/src/mame/drivers/ddribble.c
@@ -370,5 +370,5 @@ ROM_START( ddribblep )
ROM_LOAD( "voice_10.d7", 0x10000, 0x10000, CRC(b4c97494) SHA1(93f7c3c93f6f790c3f480e183da0105b5ac3593b) )
ROM_END
-GAME( 1986, ddribble, 0, ddribble, ddribble, driver_device, 0, ROT0, "Konami", "Double Dribble", GAME_SUPPORTS_SAVE )
-GAME( 1986, ddribblep, ddribble, ddribble, ddribble, driver_device, 0, ROT0, "Konami", "Double Dribble (prototype?)", GAME_SUPPORTS_SAVE )
+GAME( 1986, ddribble, 0, ddribble, ddribble, driver_device, 0, ROT0, "Konami", "Double Dribble", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ddribblep, ddribble, ddribble, ddribble, driver_device, 0, ROT0, "Konami", "Double Dribble (prototype?)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ddz.c b/src/mame/drivers/ddz.c
index b1d98427e5f..a4b4f54875d 100644
--- a/src/mame/drivers/ddz.c
+++ b/src/mame/drivers/ddz.c
@@ -98,4 +98,4 @@ ROM_START( ddz )
ROM_END
-GAME( 200?, ddz, 0, ddz, ddz, driver_device, 0, ROT0, "IGS?", "Dou Di Zhu", GAME_IS_SKELETON )
+GAME( 200?, ddz, 0, ddz, ddz, driver_device, 0, ROT0, "IGS?", "Dou Di Zhu", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/de_2.c b/src/mame/drivers/de_2.c
index a68622e6eba..6f4ce3fb2ec 100644
--- a/src/mame/drivers/de_2.c
+++ b/src/mame/drivers/de_2.c
@@ -848,20 +848,20 @@ ROM_START(torp_e21)
ROM_END
-GAME(1990, bttf_a27, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.7)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, bttf_a20, bttf_a27, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.0)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, bttf_a21, bttf_a27, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To The Future (2.1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(199?, bttf_g27, bttf_a27, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.7 Germany)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1987, lwar_a83, 0, de_type1, de_2, de_2_state, de_2, ROT0, "Data East", "Laser War (8.3)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1987, lwar_e90, lwar_a83, de_type1, de_2, de_2_state, de_2, ROT0, "Data East", "Laser War (9.0 Europe)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1989, mnfb_c27, 0, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "Monday Night Football (2.7, 50cts)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, poto_a32, 0, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "The Phantom of the Opera (3.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1989, play_a24, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Playboy 35th Anniversary (2.4)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1989, robo_a34, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Robocop (3.4)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1988, ssvc_a26, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Secret Service (2.6)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1988, ssvc_b26, ssvc_a26, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Secret Service (2.6 alternate sound)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, simp_a27, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "The Simpsons (2.7)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, simp_a20, simp_a27, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "The Simpsons (2.0)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1988, tmac_a24, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Time Machine (2.4)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1988, tmac_a18, tmac_a24, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Time Machine (1.8)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1988, torp_e21, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Torpedo Alley (2.1, Europe)", GAME_IS_SKELETON_MECHANICAL)
+GAME(1990, bttf_a27, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.7)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, bttf_a20, bttf_a27, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.0)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, bttf_a21, bttf_a27, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To The Future (2.1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(199?, bttf_g27, bttf_a27, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Back To the Future (2.7 Germany)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1987, lwar_a83, 0, de_type1, de_2, de_2_state, de_2, ROT0, "Data East", "Laser War (8.3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1987, lwar_e90, lwar_a83, de_type1, de_2, de_2_state, de_2, ROT0, "Data East", "Laser War (9.0 Europe)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1989, mnfb_c27, 0, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "Monday Night Football (2.7, 50cts)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, poto_a32, 0, de_type2_alpha3, de_2, de_2_state, de_2, ROT0, "Data East", "The Phantom of the Opera (3.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1989, play_a24, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Playboy 35th Anniversary (2.4)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1989, robo_a34, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "Robocop (3.4)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1988, ssvc_a26, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Secret Service (2.6)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1988, ssvc_b26, ssvc_a26, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Secret Service (2.6 alternate sound)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, simp_a27, 0, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "The Simpsons (2.7)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, simp_a20, simp_a27, de_type3, de_2, de_2_state, de_2, ROT0, "Data East", "The Simpsons (2.0)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1988, tmac_a24, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Time Machine (2.4)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1988, tmac_a18, tmac_a24, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Time Machine (1.8)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1988, torp_e21, 0, de_type2, de_2, de_2_state, de_2, ROT0, "Data East", "Torpedo Alley (2.1, Europe)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/de_3.c b/src/mame/drivers/de_3.c
index d46ed3ff341..91eb29c7604 100644
--- a/src/mame/drivers/de_3.c
+++ b/src/mame/drivers/de_3.c
@@ -1098,49 +1098,49 @@ ROM_START(wwfr_103)
ROM_END
-GAME(1993, rab_320, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (3.20)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, rab_130, rab_320, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (1.30)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, rab_103, rab_320, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (1.03 Spain)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, aar_101, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Aaron Spelling (1.01)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, btmn_103, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.03)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, btmn_101, btmn_103, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.01)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, btmn_g13, btmn_103, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.03 Germany)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, btmn_106, btmn_103, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.06)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, ckpt_a17, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Checkpoint (1.7)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, gnr_300, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Guns N Roses (3.00)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, hook_408, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.08)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, hook_401, hook_408, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.01)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, hook_404, hook_408, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.04)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, jupk_513, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.13)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, jupk_501, jupk_513, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.01)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, jupk_g51, jupk_513, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.01 Germany)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, lah_112, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.12)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, lah_l104, lah_112, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.04 Spain)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, lah_l108, lah_112, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.08 Spain)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, lah_110, lah_112, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.10)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, lw3_208, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.08)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, lw3_207, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.07 Canada)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, lw3_205, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.05)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, lw3_200, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.00)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, trek_201, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (2.01)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, trek_200, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (2.00)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, trek_120, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.20)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, trek_110, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.10)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, trek_11a, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.10 Alpha Display)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, stwr_104, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.04)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, stwr_103, stwr_104, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.03)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, stwr_g11, stwr_104, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.01 Germany)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, stwr_a14, stwr_104, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (Display Rev.1.04)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, stwr_102, stwr_104, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.02)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, stwr_e12, stwr_104, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.02 England)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, tftc_303, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.03)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, tftc_302, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.02 Dutch)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, tftc_300, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.00)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, tftc_200, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (2.00)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, tftc_104, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (1.04 Spain)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, tmnt_104, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.04)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, tmnt_103, tmnt_104, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.03)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, tomy_400, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (4.00)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, tomy_h30, tomy_400, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (3.00, The Netherlands)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, wwfr_106, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "WWF Royal Rumble (1.06)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, wwfr_103, wwfr_106, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "WWF Royal Rumble (1.03)", GAME_IS_SKELETON_MECHANICAL)
+GAME(1993, rab_320, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (3.20)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, rab_130, rab_320, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (1.30)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, rab_103, rab_320, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Adventures of Rocky and Bullwinkle and Friends (1.03 Spain)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, aar_101, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Aaron Spelling (1.01)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, btmn_103, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.03)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, btmn_101, btmn_103, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.01)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, btmn_g13, btmn_103, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.03 Germany)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, btmn_106, btmn_103, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Batman (1.06)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, ckpt_a17, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Checkpoint (1.7)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, gnr_300, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Guns N Roses (3.00)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, hook_408, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.08)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, hook_401, hook_408, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.01)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, hook_404, hook_408, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Hook (4.04)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, jupk_513, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.13)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, jupk_501, jupk_513, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.01)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, jupk_g51, jupk_513, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Jurassic Park (5.01 Germany)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, lah_112, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.12)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, lah_l104, lah_112, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.04 Spain)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, lah_l108, lah_112, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.08 Spain)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, lah_110, lah_112, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Last Action Hero (1.10)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, lw3_208, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.08)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, lw3_207, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.07 Canada)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, lw3_205, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.05)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, lw3_200, lw3_208, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Lethal Weapon 3 (2.00)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, trek_201, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (2.01)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, trek_200, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (2.00)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, trek_120, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.20)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, trek_110, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.10)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, trek_11a, trek_201, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Star Trek 25th Anniversary (1.10 Alpha Display)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, stwr_104, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.04)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, stwr_103, stwr_104, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.03)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, stwr_g11, stwr_104, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.01 Germany)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, stwr_a14, stwr_104, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (Display Rev.1.04)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, stwr_102, stwr_104, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.02)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, stwr_e12, stwr_104, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Star Wars (1.02 England)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, tftc_303, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.03)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, tftc_302, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.02 Dutch)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, tftc_300, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (3.00)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, tftc_200, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (2.00)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, tftc_104, tftc_303, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "Tales From the Crypt (1.04 Spain)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, tmnt_104, 0, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.04)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, tmnt_103, tmnt_104, de_3_dmd1, de_3, de_3_state, de_3, ROT0, "Data East", "Teenage Mutant Ninja Turtles (1.03)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, tomy_400, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (4.00)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, tomy_h30, tomy_400, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "The Who's Tommy Pinball Wizard (3.00, The Netherlands)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, wwfr_106, 0, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "WWF Royal Rumble (1.06)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, wwfr_103, wwfr_106, de_3_dmd2, de_3, de_3_state, de_3, ROT0, "Data East", "WWF Royal Rumble (1.03)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/de_3b.c b/src/mame/drivers/de_3b.c
index 7b416567ab8..6292ee01f99 100644
--- a/src/mame/drivers/de_3b.c
+++ b/src/mame/drivers/de_3b.c
@@ -625,29 +625,29 @@ ROM_START(detest)
ROM_END
-GAME(1995, batmanf, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (4.0)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, batmanf3, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (3.0)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_uk, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (English)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_cn, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Canadian)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_no, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Norwegian)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_sv, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Swedish)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_at, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Austrian)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_ch, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Swiss)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_de, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (German)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_be, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Belgian)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_fr, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (French)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_nl, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Dutch)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_it, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Italian)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_sp, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Spanish)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_jp, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Japanese)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bmf_time, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Timed Play)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, baywatch, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bay_e400, baywatch, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch (England)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, frankst, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Mary Shelley's Frankenstein", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, frankstg, frankst, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Mary Shelley's Frankenstein (Germany)",GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, mav_402, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.02)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, mav_401, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.01)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, mav_400, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.00)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, mav_100, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (1.00)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1998, detest, 0, detest, de_3b, de_3b_state, de_3b, ROT0, "Data East", "Data East Test Chip", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, ctcheese, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Cut The Cheese (Redemption)", GAME_IS_SKELETON_MECHANICAL)
+GAME(1995, batmanf, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (4.0)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, batmanf3, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (3.0)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_uk, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (English)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_cn, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Canadian)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_no, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Norwegian)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_sv, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Swedish)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_at, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Austrian)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_ch, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Swiss)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_de, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (German)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_be, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Belgian)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_fr, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (French)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_nl, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Dutch)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_it, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Italian)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_sp, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Spanish)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_jp, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Japanese)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bmf_time, batmanf, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Batman Forever (Timed Play)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, baywatch, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bay_e400, baywatch, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Baywatch (England)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, frankst, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Mary Shelley's Frankenstein", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, frankstg, frankst, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Mary Shelley's Frankenstein (Germany)",MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, mav_402, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.02)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, mav_401, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.01)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, mav_400, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (Display Rev. 4.00)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, mav_100, mav_402, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Maverick (1.00)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1998, detest, 0, detest, de_3b, de_3b_state, de_3b, ROT0, "Data East", "Data East Test Chip", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, ctcheese, 0, de_3b, de_3b, de_3b_state, de_3b, ROT0, "Sega", "Cut The Cheese (Redemption)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/deadang.c b/src/mame/drivers/deadang.c
index f7e6b872502..b73bc01e7ed 100644
--- a/src/mame/drivers/deadang.c
+++ b/src/mame/drivers/deadang.c
@@ -20,11 +20,11 @@ Seibu, 1988
Clocks
------
-Top board
+Top board - SEI-8712A
Two crystals on top board 12MHz and 16MHz
V30(x2) - both 8MHz [16/2]
-Bottom board
+Bottom board - SEI-8712B
One crystal on bottom board 14.31818MHz
Z80 - 3.579545MHz [14.31818/4]
OKI M5205(x2) - 375kHz [12/32]
@@ -33,6 +33,8 @@ Seibu SEI0100 YM3931 - 3.579545MHz [14.31818/4]
VSync 60Hz
HSync 15.37kHz
+Gang Hunter as an additional daughter card attached to the top board call SEI-8712 GUN
+
2008-08
Dip locations and factory settings verified with US manual
@@ -277,8 +279,8 @@ ROM_START( deadang )
ROM_LOAD16_BYTE("3.21f", 0x0e0001, 0x10000, CRC(e784b1fa) SHA1(3f41d31e0b36b9a2fab5e9998bb4146dfa0a97eb) )
ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */
- ROM_LOAD16_BYTE("5.6bh", 0x0e0000, 0x10000, CRC(9c69eb35) SHA1(d5a9714f279b71c419b4bae0f142c4cb1cc8d30e) )
- ROM_LOAD16_BYTE("6.9b", 0x0e0001, 0x10000, CRC(34a44ce5) SHA1(621c69d8778d4c96ac3be06b033a5931a6a23da2) )
+ ROM_LOAD16_BYTE("5.6b", 0x0e0000, 0x10000, CRC(9c69eb35) SHA1(d5a9714f279b71c419b4bae0f142c4cb1cc8d30e) )
+ ROM_LOAD16_BYTE("6.9b", 0x0e0001, 0x10000, CRC(34a44ce5) SHA1(621c69d8778d4c96ac3be06b033a5931a6a23da2) )
ROM_REGION( 0x20000, "audiocpu", 0 ) /* sound Z80 */
ROM_LOAD( "13.b1", 0x000000, 0x02000, CRC(13b956fb) SHA1(f7c21ad5e988ac59073659a427b1fa66ff49b0c1) ) /* Encrypted */
@@ -365,6 +367,53 @@ ROM_END
ROM_START( ghunter )
ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
+ ROM_LOAD16_BYTE("2.19h", 0x0c0000, 0x10000, CRC(5a511500) SHA1(69185a9efee0c3ee4d65643651eb9c613bc5f759) )
+ ROM_LOAD16_BYTE("4.22h", 0x0c0001, 0x10000, CRC(df5704f4) SHA1(a40848f1222253921982320155e6f7a01d2bb17f) ) // sldh
+ ROM_LOAD16_BYTE("1.19f", 0x0e0000, 0x10000, CRC(30deb018) SHA1(099ab1f227d7e28f3e56a61d015813905a2dbc29) )
+ ROM_LOAD16_BYTE("3.22f", 0x0e0001, 0x10000, CRC(95f587c5) SHA1(b1431dd56200a5f849314b34daed5d3570633a77) ) // sldh
+
+ ROM_REGION( 0x100000, "sub", 0 ) /* v30 sub cpu */
+ ROM_LOAD16_BYTE("5.6b", 0x0e0000, 0x10000, CRC(c40bb5e5) SHA1(2a618f7db6fe6cd8d1a0e7eed91a831b721fec62) ) // sldh
+ ROM_LOAD16_BYTE("6.10b", 0x0e0001, 0x10000, CRC(373f86a7) SHA1(6f7d219a3bc34d74fdadd812319a5387d217dffb) ) // sldh
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* sound Z80 */
+ ROM_LOAD( "13.b1", 0x000000, 0x02000, CRC(13b956fb) SHA1(f7c21ad5e988ac59073659a427b1fa66ff49b0c1) ) /* Encrypted */
+ ROM_LOAD( "14.c1", 0x010000, 0x10000, CRC(98837d57) SHA1(291769a11478291a65c959d119d19960b100d135) ) /* Banked */
+
+ ROM_REGION( 0x08000, "gfx1", 0 ) /* Chars */
+ ROM_LOAD( "7.22k", 0x000000, 0x4000, CRC(490701e7) SHA1(2f5cbc0407d7fe41b9e7683c7531656fda7bf9f7) )
+ ROM_LOAD( "8.22l", 0x004000, 0x4000, CRC(18024c5e) SHA1(b02bcaa1ba6e7c188f3d2a6b20b52b2dcb8215e0) )
+
+ ROM_REGION( 0x80000, "gfx2", 0 ) /* Sprites */
+ ROM_LOAD( "l12", 0x000000, 0x80000, CRC(c94d5cd2) SHA1(25ded13faaed90886c9fe40f85969dab2f511e31) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* pf1 layer */
+ ROM_LOAD( "16n", 0x000000, 0x80000, CRC(fd70e1a5) SHA1(c3d1233f4dfe08f686ec99a556889f9ed6a21da3) ) // bank 0 (0x1000 tiles)
+ ROM_LOAD( "16r", 0x080000, 0x80000, CRC(92f5e382) SHA1(2097b9e9bf3cd37c8613847e7aed677b5aeab7f9) ) // bank 1 (0x1000 tiles)
+
+ ROM_REGION( 0x40000, "gfx4", 0 ) // pf2 layer
+ ROM_LOAD( "11m", 0x000000, 0x40000, CRC(a366659a) SHA1(e2fcd82b0b2d4e3adcdf50c710984907d26acd04) ) // fixed (0x800 tiles)
+
+ ROM_REGION( 0x40000, "gfx5", 0 ) // pf3 layer
+ ROM_LOAD( "11k", 0x000000, 0x40000, CRC(9cf5bcc7) SHA1(cf96592e601fc373b1bf322d9b576668799130a5) ) // fixed (0x800 tiles)
+
+ ROM_REGION16_BE( 0x10000, "gfx6", 0 ) /* background map data */
+ ROM_LOAD16_BYTE( "10.6l", 0x00000, 0x8000, CRC(ca99176b) SHA1(283e3769a1ff579c78a008b65cb8267e5770ba1f) )
+ ROM_LOAD16_BYTE( "9.6m", 0x00001, 0x8000, CRC(51d868ca) SHA1(3e9a4e6bc4bc68773c4ba18c5f4110e6c595d0c9) )
+
+ ROM_REGION16_BE( 0x10000, "gfx7", 0 ) /* background map data */
+ ROM_LOAD16_BYTE( "12.6j", 0x00000, 0x8000, CRC(2674d23f) SHA1(0533d80a23d917e20a703aeb833dcaccfa3a1967) )
+ ROM_LOAD16_BYTE( "11.6k", 0x00001, 0x8000, CRC(3dd4d81d) SHA1(94f0a13a8d3812f6879819ca186abf3a8665f7cb) )
+
+ ROM_REGION( 0x10000, "adpcm1", 0 )
+ ROM_LOAD( "15.b11", 0x000000, 0x10000, CRC(fabd74f2) SHA1(ac70e952a8b38287613b384cdc7ca00a7f155a13) )
+
+ ROM_REGION( 0x10000, "adpcm2", 0 )
+ ROM_LOAD( "16.11a", 0x000000, 0x10000, CRC(a8d46fc9) SHA1(3ba51bdec4057413396a152b35015f9d95253e3f) )
+ROM_END
+
+ROM_START( ghunters )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
ROM_LOAD16_BYTE("ggh-2.h18", 0x0c0000, 0x10000, CRC(7ccc6fee) SHA1(bccc283d82f080157f0521457b04fdd1d63caafe) )
ROM_LOAD16_BYTE("ggh-4.h22", 0x0c0001, 0x10000, CRC(d1f23ad7) SHA1(2668729af797ccab52ac2bf519d43ab2fa9e54ce) )
ROM_LOAD16_BYTE("ggh-1.f18", 0x0e0000, 0x10000, CRC(0d6ff111) SHA1(209d26170446b43d1d463737b447e30aaca614a7) )
@@ -429,6 +478,7 @@ DRIVER_INIT_MEMBER(deadang_state,ghunter)
/* Game Drivers */
-GAME( 1988, deadang, 0, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Dead Angle", GAME_SUPPORTS_SAVE )
-GAME( 1988, leadang, deadang, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Lead Angle (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, ghunter, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu (Segasa/Sonic license)", "Gang Hunter (Spain)", GAME_SUPPORTS_SAVE )
+GAME( 1988, deadang, 0, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Dead Angle", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, leadang, deadang, deadang, deadang, deadang_state, deadang, ROT0, "Seibu Kaihatsu", "Lead Angle (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, ghunter, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu", "Gang Hunter / Dead Angle", MACHINE_SUPPORTS_SAVE ) // Title is 'Gang Hunter' or 'Dead Angle' depending on control method dipswitch
+GAME( 1988, ghunters, deadang, deadang, ghunter, deadang_state, ghunter, ROT0, "Seibu Kaihatsu (Segasa/Sonic license)", "Gang Hunter / Dead Angle (Spain)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dec0.c b/src/mame/drivers/dec0.c
index f5342dfe926..8a2dffc6b62 100644
--- a/src/mame/drivers/dec0.c
+++ b/src/mame/drivers/dec0.c
@@ -2941,6 +2941,53 @@ ROM_START( midresb )
ROM_END
+ROM_START( midresbj )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "14", 0x00000, 0x10000, CRC(6b3bc886) SHA1(998ef6ae89565148bcb8909f21acbec378ed5f4f) )
+ ROM_LOAD16_BYTE( "11", 0x00001, 0x10000, CRC(9b6faab3) SHA1(b60e41972f52df910bfa09accd5fde7d858b55bf) )
+ ROM_LOAD16_BYTE( "13", 0x20000, 0x10000, CRC(d1bb2cd6) SHA1(6d4afd8dd8c4c3e90de199358da27108286637e2) )
+ ROM_LOAD16_BYTE( "10", 0x20001, 0x10000, CRC(42ccdd0d) SHA1(ef17cc984a8d57e9c52877f4e9b78e9976f99033) )
+ ROM_LOAD16_BYTE( "12", 0x40000, 0x10000, CRC(258b10b2) SHA1(f0849801ab2c72bc6e929b230d0c6d41823f18ae) )
+ ROM_LOAD16_BYTE( "9", 0x40001, 0x10000, CRC(dd6985d5) SHA1(bd58a1da2c5152464d7660f5b931d6257cb87c4e) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* 6502 sound */
+ ROM_LOAD( "15", 0x0000, 0x10000, CRC(99d47166) SHA1(a9a1adfe47be8dd3e4d6f8c783447e09be1747b2) )
+
+ ROM_REGION( 0x10000, "cpu2", ROMREGION_ERASE00 ) /* 68705 MCU */
+ //ROM_LOAD( "68705r3.bin", 0x00000, 0x1000, CRC(ad5b1c13) SHA1(3616dc5969323a54e3e171d169f76250ae4e711a) ) // unpopulated socket
+
+ ROM_REGION( 0x20000, "gfx1", 0 ) /* chars */
+ ROM_LOAD( "23", 0x08000, 0x08000, CRC(d75aba06) SHA1(cb3b969db3dd8e0c5c3729482f7461cde3a961f3) )
+ ROM_CONTINUE( 0x00000, 0x08000 ) /* the two halves are swapped */
+ ROM_LOAD( "24", 0x18000, 0x08000, CRC(8f5bbb79) SHA1(cb10f68787606111ba5e9967bf0b0cd21269a902) )
+ ROM_CONTINUE( 0x10000, 0x08000 )
+
+ ROM_REGION( 0x80000, "gfx2", 0 ) /* tiles */
+ ROM_LOAD( "19", 0x00000, 0x20000, CRC(fd9ba1bd) SHA1(a105a4335eeed19662c89ab0f90485f1029cf03f) )
+ ROM_LOAD( "18", 0x20000, 0x20000, CRC(a936c03c) SHA1(293e69874ce9b2dfb1d605c9f988fa736b12bbcf) )
+ ROM_LOAD( "20", 0x40000, 0x20000, CRC(4d8e3cf1) SHA1(db804a608f6ba9ce4cedfec2581bcbb00de3f2ba) )
+ ROM_LOAD( "17", 0x60000, 0x20000, CRC(b7241ab9) SHA1(3e83f9285ff4c476f1287bf73b514eace482dccc) )
+
+ ROM_REGION( 0x40000, "gfx3", 0 ) /* tiles */
+ ROM_LOAD( "22", 0x10000, 0x10000, CRC(35a54bb4) SHA1(1869eb77a060e9df42b761b02e7fa5ecb7c414d1) )
+ ROM_CONTINUE(0x00000,0x10000)
+ ROM_LOAD( "21", 0x30000, 0x10000, CRC(4b9227b3) SHA1(7059f2d07fffa0468a45a42b87bf561da5e9c5a4) )
+ ROM_CONTINUE(0x20000,0x10000)
+
+ ROM_REGION( 0x80000, "gfx4", 0 ) /* sprites */
+ ROM_LOAD( "4", 0x00000, 0x10000, CRC(3f499acb) SHA1(1a22cfeed0497ddc2d571114d9f246b3ae18ede9) )
+ ROM_LOAD( "8", 0x10000, 0x10000, CRC(5e7a6800) SHA1(8dd5c9005b6804a30627644053f14e4477fe0074) )
+ ROM_LOAD( "2", 0x20000, 0x10000, CRC(897ba6e4) SHA1(70fd9cba3922751cb317770d6effdc2fb94c1324) )
+ ROM_LOAD( "6", 0x30000, 0x10000, CRC(9fefb810) SHA1(863a81540261e78de5c612dea807ba29b12054d4) )
+ ROM_LOAD( "3", 0x40000, 0x10000, CRC(ebafe720) SHA1(b9f76d2f1b59f1d028e6156b831c5c8ada033641) )
+ ROM_LOAD( "7", 0x50000, 0x10000, CRC(bb8cf641) SHA1(a22e47a15d38d4f33e5a2c90f3a90a16a4231d2c) ) // slight changes, check (equivalent to 3.bin in above)
+ ROM_LOAD( "1", 0x60000, 0x10000, CRC(fd0bd8d3) SHA1(d6b19869ddc2a8ed4f38ba9d613b71853f2d13c0) )
+ ROM_LOAD( "5", 0x70000, 0x10000, CRC(fc46d5ed) SHA1(20ddf3f67f0dfb222ad8d3fd464b892ec9c9e4f5) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "16", 0x00000, 0x10000, CRC(ccf24b52) SHA1(39b2663c548b30684197284cb8e7a6ca803330c9))
+ROM_END
+
ROM_START( bouldash )
ROM_REGION( 0x60000, "maincpu", 0 ) /* 68000 code */
ROM_LOAD16_BYTE( "fw-15-2.17l", 0x00000, 0x10000, CRC(ca19a967) SHA1(b9dc2b1323f19b6239e550ed020943bf13de8db0) )
@@ -3052,40 +3099,41 @@ DRIVER_INIT_MEMBER(dec0_state,ffantasybl)
/******************************************************************************/
// YEAR, NAME, PARENT, MACHINE, INPUT, STATE/DEVICE, INIT, MONITOR,COMPANY, FULLNAME, FLAGS
-GAME( 1987, hbarrel, 0, hbarrel, hbarrel, dec0_state, hbarrel, ROT270, "Data East USA", "Heavy Barrel (US)", GAME_SUPPORTS_SAVE )
-GAME( 1987, hbarrelw, hbarrel, hbarrel, hbarrel, dec0_state, hbarrel, ROT270, "Data East Corporation", "Heavy Barrel (World)", GAME_SUPPORTS_SAVE )
-GAME( 1988, baddudes, 0, baddudes, baddudes, dec0_state, baddudes, ROT0, "Data East USA", "Bad Dudes vs. Dragonninja (US)", GAME_SUPPORTS_SAVE )
-GAME( 1988, drgninja, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "Data East Corporation", "Dragonninja (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, birdtry, 0, birdtry, birdtry, dec0_state, birdtry, ROT270, "Data East Corporation", "Birdie Try (Japan)", GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1988, robocop, 0, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (World revision 4)", GAME_SUPPORTS_SAVE )
-GAME( 1988, robocopw, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (World revision 3)", GAME_SUPPORTS_SAVE )
-GAME( 1988, robocopj, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, robocopu, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East USA", "Robocop (US revision 1)", GAME_SUPPORTS_SAVE )
-GAME( 1988, robocopu0, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East USA", "Robocop (US revision 0)", GAME_SUPPORTS_SAVE )
-GAME( 1989, hippodrm, 0, hippodrm, hippodrm, dec0_state, hippodrm, ROT0, "Data East USA", "Hippodrome (US)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffantasy, hippodrm, hippodrm, ffantasy, dec0_state, hippodrm, ROT0, "Data East Corporation", "Fighting Fantasy (Japan revision 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ffantasya, hippodrm, hippodrm, ffantasy, dec0_state, hippodrm, ROT0, "Data East Corporation", "Fighting Fantasy (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, secretag, 0, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East Corporation", "Secret Agent (World revision 3)", GAME_SUPPORTS_SAVE )
-GAME( 1989, secretagj, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East Corporation", "Secret Agent (Japan revision 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, slyspy, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 3)", GAME_SUPPORTS_SAVE )
-GAME( 1989, slyspy2, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, midres, 0, midres, midres, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (World)", GAME_SUPPORTS_SAVE )
-GAME( 1989, midresu, midres, midres, midresu, driver_device, 0, ROT0, "Data East USA", "Midnight Resistance (US)", GAME_SUPPORTS_SAVE )
-GAME( 1989, midresj, midres, midres, midresu, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1990, bouldash, 0, slyspy, bouldash, dec0_state, slyspy, ROT0, "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (World)", GAME_SUPPORTS_SAVE )
-GAME( 1990, bouldashj, bouldash, slyspy, bouldash, dec0_state, slyspy, ROT0, "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1987, hbarrel, 0, hbarrel, hbarrel, dec0_state, hbarrel, ROT270, "Data East USA", "Heavy Barrel (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, hbarrelw, hbarrel, hbarrel, hbarrel, dec0_state, hbarrel, ROT270, "Data East Corporation", "Heavy Barrel (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, baddudes, 0, baddudes, baddudes, dec0_state, baddudes, ROT0, "Data East USA", "Bad Dudes vs. Dragonninja (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, drgninja, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "Data East Corporation", "Dragonninja (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, birdtry, 0, birdtry, birdtry, dec0_state, birdtry, ROT270, "Data East Corporation", "Birdie Try (Japan)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, robocop, 0, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (World revision 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, robocopw, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (World revision 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, robocopj, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East Corporation", "Robocop (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, robocopu, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East USA", "Robocop (US revision 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, robocopu0, robocop, robocop, robocop, dec0_state, robocop, ROT0, "Data East USA", "Robocop (US revision 0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, hippodrm, 0, hippodrm, hippodrm, dec0_state, hippodrm, ROT0, "Data East USA", "Hippodrome (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffantasy, hippodrm, hippodrm, ffantasy, dec0_state, hippodrm, ROT0, "Data East Corporation", "Fighting Fantasy (Japan revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffantasya, hippodrm, hippodrm, ffantasy, dec0_state, hippodrm, ROT0, "Data East Corporation", "Fighting Fantasy (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, secretag, 0, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East Corporation", "Secret Agent (World revision 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, secretagj, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East Corporation", "Secret Agent (Japan revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, slyspy, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, slyspy2, secretag, slyspy, slyspy, dec0_state, slyspy, ROT0, "Data East USA", "Sly Spy (US revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, midres, 0, midres, midres, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, midresu, midres, midres, midresu, driver_device, 0, ROT0, "Data East USA", "Midnight Resistance (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, midresj, midres, midres, midresu, driver_device, 0, ROT0, "Data East Corporation", "Midnight Resistance (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bouldash, 0, slyspy, bouldash, dec0_state, slyspy, ROT0, "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, bouldashj, bouldash, slyspy, bouldash, dec0_state, slyspy, ROT0, "Data East Corporation (licensed from First Star)", "Boulder Dash / Boulder Dash Part 2 (Japan)", MACHINE_SUPPORTS_SAVE )
// bootlegs
// more or less just an unprotected versions of the game, everything intact
-GAME( 1988, robocopb, robocop, robocopb, robocop, dec0_state, robocop, ROT0, "bootleg", "Robocop (World bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1988, drgninjab, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "bootleg", "Dragonninja (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1988, robocopb, robocop, robocopb, robocop, dec0_state, robocop, ROT0, "bootleg", "Robocop (World bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, drgninjab, baddudes, baddudes, drgninja, dec0_state, baddudes, ROT0, "bootleg", "Dragonninja (bootleg)", MACHINE_SUPPORTS_SAVE )
// this is a common bootleg board
-GAME( 1989, midresb, midres, midresb, midresb, dec0_state, midresb, ROT0, "bootleg", "Midnight Resistance (bootleg with 68705)", GAME_SUPPORTS_SAVE ) // need to hook up 68705?
-GAME( 1989, ffantasybl, hippodrm, ffantasybl, ffantasybl, dec0_state, ffantasybl, ROT0, "bootleg", "Fighting Fantasy (bootleg with 68705)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 68705 not dumped, might be the same as midresb
+GAME( 1989, midresb, midres, midresb, midresb, dec0_state, midresb, ROT0, "bootleg", "Midnight Resistance (bootleg with 68705)", MACHINE_SUPPORTS_SAVE ) // need to hook up 68705? (probably unused)
+GAME( 1989, midresbj, midres, midresb, midresb, dec0_state, midresb, ROT0, "bootleg", "Midnight Resistance (Joystick bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ffantasybl, hippodrm, ffantasybl, ffantasybl, dec0_state, ffantasybl, ROT0, "bootleg", "Fighting Fantasy (bootleg with 68705)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 68705 not dumped, might be the same as midresb
/* A Bad Dudes bootleg with 68705 like the midres and ffantasy ones exists, but is not dumped */
// these are different to the above but quite similar to each other
-GAME( 1988, automat, robocop, automat, robocop, dec0_state, robocop, ROT0, "bootleg", "Automat (bootleg of Robocop)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // sound rom / music from section z with mods for ADPCM?
-GAME( 1989, secretab, secretag, secretab, slyspy, dec0_state, slyspy, ROT0, "bootleg", "Secret Agent (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1988, automat, robocop, automat, robocop, dec0_state, robocop, ROT0, "bootleg", "Automat (bootleg of Robocop)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sound rom / music from section z with mods for ADPCM?
+GAME( 1989, secretab, secretag, secretab, slyspy, dec0_state, slyspy, ROT0, "bootleg", "Secret Agent (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dec8.c b/src/mame/drivers/dec8.c
index b99796e39d4..8d681e5676b 100644
--- a/src/mame/drivers/dec8.c
+++ b/src/mame/drivers/dec8.c
@@ -3610,26 +3610,26 @@ DRIVER_INIT_MEMBER(dec8_state,cobracom)
/******************************************************************************/
-GAME( 1986, lastmisn, 0, lastmisn, lastmisn, dec8_state, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 6)", GAME_SUPPORTS_SAVE )
-GAME( 1986, lastmisno,lastmisn, lastmisn, lastmisn, dec8_state, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 5)", GAME_SUPPORTS_SAVE )
-GAME( 1986, lastmisnj,lastmisn, lastmisn, lastmisnj, dec8_state, lastmisn, ROT270, "Data East Corporation", "Last Mission (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1986, shackled, 0, shackled, shackled, dec8_state, shackled, ROT0, "Data East USA", "Shackled (US)", GAME_SUPPORTS_SAVE )
-GAME( 1986, breywood, shackled, shackled, breywood, dec8_state, shackled, ROT0, "Data East Corporation", "Breywood (Japan revision 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, gondo, 0, gondo, gondo, dec8_state, gondo, ROT270, "Data East USA", "Gondomania (US)", GAME_SUPPORTS_SAVE )
-GAME( 1987, makyosen, gondo, gondo, gondo, dec8_state, gondo, ROT270, "Data East Corporation", "Makyou Senshi (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, garyoret, 0, garyoret, garyoret, dec8_state, garyoret, ROT0, "Data East Corporation", "Garyo Retsuden (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ghostb, 0, ghostb, ghostb, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players, revision 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ghostb2a, ghostb, ghostb, ghostb2a, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ghostb3, ghostb, ghostb, ghostb3, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players)", GAME_SUPPORTS_SAVE )
-GAME( 1987, meikyuh, ghostb, meikyuh, meikyuh, dec8_state, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, meikyuha, ghostb, meikyuh, meikyuh, dec8_state, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, csilver, 0, csilver, csilver, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (World)", GAME_SUPPORTS_SAVE )
-GAME( 1987, csilverj, csilver, csilver, csilverj, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, oscar, 0, oscar, oscar, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (World revision 0)", GAME_SUPPORTS_SAVE )
-GAME( 1988, oscaru, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East USA", "Psycho-Nics Oscar (US)", GAME_SUPPORTS_SAVE )
-GAME( 1987, oscarj1, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, oscarj2, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, srdarwin, 0, srdarwin, srdarwin, dec8_state, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (World)", GAME_SUPPORTS_SAVE )
-GAME( 1987, srdarwinj,srdarwin, srdarwin, srdarwinj, dec8_state, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, cobracom, 0, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (World revision 5)", GAME_SUPPORTS_SAVE )
-GAME( 1988, cobracomj,cobracom, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1986, lastmisn, 0, lastmisn, lastmisn, dec8_state, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 6)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, lastmisno,lastmisn, lastmisn, lastmisn, dec8_state, lastmisn, ROT270, "Data East USA", "Last Mission (US revision 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, lastmisnj,lastmisn, lastmisn, lastmisnj, dec8_state, lastmisn, ROT270, "Data East Corporation", "Last Mission (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, shackled, 0, shackled, shackled, dec8_state, shackled, ROT0, "Data East USA", "Shackled (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, breywood, shackled, shackled, breywood, dec8_state, shackled, ROT0, "Data East Corporation", "Breywood (Japan revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, gondo, 0, gondo, gondo, dec8_state, gondo, ROT270, "Data East USA", "Gondomania (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, makyosen, gondo, gondo, gondo, dec8_state, gondo, ROT270, "Data East Corporation", "Makyou Senshi (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, garyoret, 0, garyoret, garyoret, dec8_state, garyoret, ROT0, "Data East Corporation", "Garyo Retsuden (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ghostb, 0, ghostb, ghostb, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players, revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ghostb2a, ghostb, ghostb, ghostb2a, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 2 Players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ghostb3, ghostb, ghostb, ghostb3, dec8_state, ghostb, ROT0, "Data East USA", "The Real Ghostbusters (US 3 Players)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, meikyuh, ghostb, meikyuh, meikyuh, dec8_state, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, meikyuha, ghostb, meikyuh, meikyuh, dec8_state, meikyuh, ROT0, "Data East Corporation", "Meikyuu Hunter G (Japan, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, csilver, 0, csilver, csilver, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, csilverj, csilver, csilver, csilverj, dec8_state, csilver, ROT0, "Data East Corporation", "Captain Silver (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, oscar, 0, oscar, oscar, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (World revision 0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, oscaru, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East USA", "Psycho-Nics Oscar (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, oscarj1, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, oscarj2, oscar, oscar, oscarj, dec8_state, oscar, ROT0, "Data East Corporation", "Psycho-Nics Oscar (Japan revision 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, srdarwin, 0, srdarwin, srdarwin, dec8_state, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, srdarwinj,srdarwin, srdarwin, srdarwinj, dec8_state, srdarwin, ROT270, "Data East Corporation", "Super Real Darwin (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cobracom, 0, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (World revision 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, cobracomj,cobracom, cobracom, cobracom, dec8_state, cobracom, ROT0, "Data East Corporation", "Cobra-Command (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/deco156.c b/src/mame/drivers/deco156.c
index d21b7fddf39..4d812602708 100644
--- a/src/mame/drivers/deco156.c
+++ b/src/mame/drivers/deco156.c
@@ -475,8 +475,7 @@ DE-0385-2 DEC-22VO
|----------------------------------------------|
Notes:
- - CPU is unknown. It's chip DE156. The clock input is 7.000MHz on pin 90
- It's thought to be a custom-made encrypted ARM7-based CPU.
+ - CPU DE156 is a custom encrypted ARM7-based chip. The clock input is 7.000MHz on pin 90
The package is a Quad Flat Pack and has 100 pins.
- OKI M6295(1) clock: 1.000MHz (28 / 28), sample rate = 1000000 / 132
- OKI M6295(2) clock: 2.000MHz (28 / 14), sample rate = 2000000 / 132
@@ -603,8 +602,7 @@ DE-0430-2
|----------------------------------------------|
Notes:
- - CPU is unknown. It's chip DE156. The clock input is 7.000MHz on pin 90
- It's thought to be a custom-made encrypted ARM7-based CPU.
+ - CPU DE156 is a custom encrypted ARM7-based chip. The clock input is 7.000MHz on pin 90
The package is a Quad Flat Pack and has 100 pins.
- YMZ280B-F clock: 14.000MHz (28 / 2)
SANYO LC7881 clock: 2.3333MHz (28 / 12)
@@ -675,7 +673,7 @@ DRIVER_INIT_MEMBER(deco156_state,wcvol95)
/**********************************************************************************/
-GAME( 1993, hvysmsh, 0, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Europe version -2)", GAME_SUPPORTS_SAVE )
-GAME( 1993, hvysmsha, hvysmsh, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Asia version -4)", GAME_SUPPORTS_SAVE )
-GAME( 1993, hvysmshj, hvysmsh, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Japan version -2)", GAME_SUPPORTS_SAVE )
-GAME( 1995, wcvol95, 0, wcvol95, wcvol95, deco156_state, wcvol95, ROT0, "Data East Corporation", "World Cup Volley '95 (Japan v1.0)", GAME_SUPPORTS_SAVE )
+GAME( 1993, hvysmsh, 0, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Europe version -2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, hvysmsha, hvysmsh, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Asia version -4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, hvysmshj, hvysmsh, hvysmsh, hvysmsh, deco156_state, hvysmsh, ROT0, "Data East Corporation", "Heavy Smash (Japan version -2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, wcvol95, 0, wcvol95, wcvol95, deco156_state, wcvol95, ROT0, "Data East Corporation", "World Cup Volley '95 (Japan v1.0)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/deco32.c b/src/mame/drivers/deco32.c
index 90cbed76764..26de6549454 100644
--- a/src/mame/drivers/deco32.c
+++ b/src/mame/drivers/deco32.c
@@ -223,6 +223,137 @@ Notes:
PROM.9J Fujitsu MB7124 compatible with 82S147 Labelled 'LN-00'
+Night Slashers
+Data East, 1993
+
+DE-0395-1 DEC-22VO
+|-----------------------------------------------------|
+| TA8205AH 6164 |-----| 2M-16M* MBH-07|
+| 02- HuC6280A | 52 | MBH-09 MBH-06|
+| YM2151 | | 2M-16M* MBH-05|
+| YM3012 32.220MHz |-----| MBH-08 MBH-04|
+| JP1 MBH-11 93C45 |-----| MBH-03|
+|CN2 MBH-10 | 52 | MBH-02|
+| M6295(1) | | |
+| M6295(2) |-----| |
+| |-----| |-----| |
+|J | 104 | |-----| |-----| | 52 | |
+|A | | | 153 | | 113 | | | |
+|M |-----| | | | | |-----| |
+|M |-----| |-----| 28MHz |
+|A |-----| |
+| | 99 | VM-02 |
+| | | LN-00 |-----| 6164 MBH-01 |
+| |-----| | 74 | 6164 |
+| | | MBH-00 |
+| |-----| |-----| |-----| |
+| | 113 | | 200 | |-----| 6164 |
+| | | | | | 141 | 6164 |
+| |-----| |-----| | | VE-01A |
+|TEST_SW |-----| VE-00 |-----| |
+| | 156 | |
+| CN4 LH52250 LH52250 01- | | |
+| CN3 LH52250 LH52250 00- |-----| |
+|-----------------------------------------------------|
+
+NOTE: Program EPROMs did NOT have regional letter codes, just 00, 01 & 02
+
+Same PCB as shown below for Fighter's History, but populated with more
+chips as needed. It is worth noting that Night Slashers uses the encryption
+features of the 156 chip where as Fighter's History does not.
+
+*****************************************************************************************************
+
+Fighter's History
+Data East, 1993
+
+PCB Layout
+----------
+
+DE-0395-1 DEC-22VO
+|-----------------------------------------------------|
+| TA8205AH 6164 MBF-05 2M-8M*|
+| LE02 HuC6280A MBF-04 8M*|
+| YM2151 52* MBF-03 4M-16M*|
+| YM3012 32.220MHz MBF-02 16M*|
+| JP1 MBF-07 93C45 4M-16M*|
+|CN2 MBF-06 16M*|
+| M6295(1) 52* |
+| M6295(2) |
+| |-----| |-----| |
+|J | 75 | 113/153* | 52 | |
+|A | | |-----| | | |
+|M |-----| | 113 | |-----| |
+|M | | 28MHz |
+|A |-----| |
+| PAL* |
+| 99* KT-00 |-----| 6164 MBF-01 |
+| | 74 | 6164 |
+| | | MBF-00 |
+| |-----| |-----| |-----| |
+| | 113 | | 200 | |-----| 6164 |
+| | | | | | 56 | 6164 |
+| |-----| |-----| | | VE-01A |
+|TEST_SW |-----| VE-00 |-----| |
+| | 156 | |
+| CN4 LH52250 LH52250 LE01 | | |
+| CN3* LH52250 LH52250 LE00 |-----| |
+|-----------------------------------------------------|
+
+
+Very similar to the DE-0396-0 described below with the notable exceptions:
+ The sound area reworked to use the HuC6280A instead of a standard Z80
+ Uses the larger 113 instead of the 153 chips, however both PCBs have
+ solder pads in the same locations for either chip.
+ Uses the 56 instead of the 141
+
+
+DE-0396-0 DEC-22VO
+|-----------------------------------------------------|
+| TA8205AH Z80 MBF-05 2M-8M*|
+| 6164 YM2151 MBF-04 8M*|
+| LJ02 52* MBF-03 4M-16M*|
+| YM3012 32.220MHz MBF-02 16M*|
+| JP1 MBF-07 93C45 4M-16M*|
+|CN2 MBF-06 16M*|
+| M6295(1) 52* |
+| M6295(2) |
+| |-----| |-----| |
+|J | 75 | 113/153* | 52 | |
+|A | | |-----| | | |
+|M |-----| | 153 | |-----| |
+|M | | 28MHz |
+|A |-----| |
+| PAL* |
+| 99* KT-00 |-----| 6164 MBF-01 |
+| | 74 | 6164 |
+| | | MBF-00 |
+| |-----| |-----| |-----| |
+| | 153 | | 200 | |-----| 6164 |
+| | | | | | 141 | 6164 |
+| |-----| |-----| | | VE-01A |
+|TEST_SW |-----| VE-00 |-----| |
+| | 156 | |
+| CN4 LH52250 LH52250 LJ01-3 | | |
+| CN3* LH52250 LH52250 LJ00-3 |-----| |
+|-----------------------------------------------------|
+
+This PCB is very close to the DE-397-0 listed above
+
+ Custom ICs-
+ DE # Package Type Additional #'s (for reference of scratched-off chips on other PCB's)
+ ------------------------------------------------------------------------------------------------------
+ 156 (CPU) 100 Pin PQFP 9321EV 301811 (Doesn't use encryption functions of the 156)
+ 141 160 Pin PQFP 24220F008
+ 74 160 Pin PQFP 24220F009
+ 52 128 Pin PQFP 9313EV 211771 VC5259-0001
+ 153 (x2) 144 Pin PQFP L7A0888 9312
+ 75 100 Pin PQFP L7A0680 9143
+ 200 100 Pin PQFP JAPAN 9315PP002 (chip is darker black)
+
+NOTE: There are several unpopulated locations (denoted by *) for additional rom chips
+ or more custom ICs.
+
***************************************************************************/
#include "emu.h"
@@ -355,8 +486,10 @@ WRITE32_MEMBER(deco32_state::fghthist_eeprom_w)
}
}
+
/**********************************************************************************/
+
READ32_MEMBER(dragngun_state::service_r)
{
// logerror("%08x:Read service\n",space.device().safe_pc());
@@ -372,7 +505,6 @@ READ32_MEMBER(dragngun_state::lockload_gun_mirror_r)
return ioport("IN3")->read() | ioport("LIGHT0_X")->read() | (ioport("LIGHT0_X")->read()<<16) | (ioport("LIGHT0_X")->read()<<24); //((machine().rand()%0xff)<<16);
}
-
READ32_MEMBER(dragngun_state::lightgun_r)
{
/* Ports 0-3 are read, but seem unused */
@@ -409,8 +541,8 @@ WRITE32_MEMBER(dragngun_state::eeprom_w)
logerror("%s:Write control 1 %08x %08x\n",machine().describe_context(),offset,data);
}
-/**********************************************************************************/
+/**********************************************************************************/
WRITE32_MEMBER(deco32_state::tattass_control_w)
@@ -543,14 +675,15 @@ WRITE32_MEMBER(deco32_state::tattass_control_w)
//logerror("%08x: %08x data\n",data,mem_mask);
}
+
/**********************************************************************************/
+
UINT16 deco32_state::port_b_nslasher(int unused)
{
return (m_eeprom->do_read());
}
-
void deco32_state::nslasher_sound_cb( address_space &space, UINT16 data, UINT16 mem_mask )
{
/* bit 1 of nslasher_sound_irq specifies IRQ command writes */
@@ -572,9 +705,6 @@ void deco32_state::tattass_sound_cb( address_space &space, UINT16 data, UINT16 m
m_decobsmt->bsmt_comms_w(space, 0, soundcommand);
}
-
-
-
WRITE32_MEMBER(deco32_state::nslasher_eeprom_w)
{
if (ACCESSING_BITS_0_7)
@@ -588,10 +718,9 @@ WRITE32_MEMBER(deco32_state::nslasher_eeprom_w)
}
-
-
/**********************************************************************************/
+
READ32_MEMBER(deco32_state::spriteram_r)
{
return m_spriteram16[offset] ^ 0xffff0000;
@@ -767,7 +896,6 @@ static ADDRESS_MAP_START( fghthsta_memmap, AS_PROGRAM, 32, deco32_state )
AM_RANGE(0x1e0000, 0x1e001f) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf_control_dword_r, pf_control_dword_w)
AM_RANGE(0x200000, 0x207fff) AM_READWRITE(fghthist_protection_region_0_146_r, fghthist_protection_region_0_146_w) AM_SHARE("prot32ram") // only maps on 16-bits
-
ADDRESS_MAP_END
@@ -1014,7 +1142,6 @@ static ADDRESS_MAP_START( nslasher_map, AS_PROGRAM, 32, deco32_state )
AM_RANGE(0x200000, 0x207fff) AM_READWRITE16(nslasher_protection_region_0_104_r, nslasher_protection_region_0_104_w, 0xffff0000)
AM_RANGE(0x200000, 0x207fff) AM_READ16(nslasher_debug_r, 0x0000ffff) // seems to be debug switches / code activated by this?
-
ADDRESS_MAP_END
/******************************************************************************/
@@ -1949,6 +2076,31 @@ static MACHINE_CONFIG_START( fghthsta, deco32_state ) /* DE-0395-1 PCB */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35)
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( fghthistz, fghthsta )
+ MCFG_DEVICE_REMOVE("audiocpu")
+
+ MCFG_CPU_ADD("audiocpu", Z80, 32220000/9)
+ MCFG_CPU_PROGRAM_MAP(nslasher_sound)
+ MCFG_CPU_IO_MAP(nslasher_io_sound)
+
+ MCFG_SOUND_MODIFY("ymsnd")
+ //MCFG_YM2151_IRQ_HANDLER(WRITELINE(deco32_state,sound_irq_nslasher))
+ MCFG_YM2151_IRQ_HANDLER(INPUTLINE("audiocpu",0))
+
+ MCFG_YM2151_PORT_WRITE_HANDLER(WRITE8(deco32_state,sound_bankswitch_w))
+ MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
+ /*
+ MCFG_DEVICE_REMOVE("ioprot")
+ MCFG_DECO146_ADD("ioprot")
+ MCFG_DECO146_SET_PORTA_CALLBACK( deco32_state, port_a_fghthist )
+ MCFG_DECO146_SET_PORTB_CALLBACK( deco32_state, port_b_fghthist )
+ MCFG_DECO146_SET_PORTC_CALLBACK( deco32_state, port_c_fghthist )
+ MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
+ MCFG_DECO146_SET_USE_MAGIC_ADDRESS_XOR
+ MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(deco32_state, nslasher_sound_cb)
+ */
+MACHINE_CONFIG_END
DECO16IC_BANK_CB_MEMBER(dragngun_state::bank_1_callback)
{
@@ -2324,7 +2476,6 @@ static MACHINE_CONFIG_START( nslasher, deco32_state )
MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(deco32_state, nslasher_sound_cb)
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
-
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
@@ -2356,12 +2507,12 @@ static MACHINE_CONFIG_DERIVED( nslasheru, nslasher )
MCFG_DECO146_SET_PORTB_CALLBACK( deco32_state, port_b_nslasher )
MCFG_DECO146_SET_SOUNDLATCH_CALLBACK(deco32_state, deco32_sound_cb)
MCFG_DECO146_SET_INTERFACE_SCRAMBLE_INTERLEAVE
-
MACHINE_CONFIG_END
+
/**********************************************************************************/
-ROM_START( captaven )
+ROM_START( captaven ) /* DE-0351-x PCB (x=3 or 4) */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
ROM_LOAD32_BYTE( "hn_00-4.1e", 0x000000, 0x20000, CRC(147fb094) SHA1(6bd759c42f4b7f9e1c3f2d3ece0b3ec72de1a982) )
ROM_LOAD32_BYTE( "hn_01-4.1h", 0x000001, 0x20000, CRC(11ecdb95) SHA1(832b56f05ae7e15e67fbdd321da8c1cc5e7629a0) )
@@ -2411,9 +2562,14 @@ ROM_START( captaven )
ROM_REGION(0x80000, "oki1", 0 )
ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
+ ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
+ ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
ROM_END
-ROM_START( captavena )
+ROM_START( captavena ) /* DE-0351-x PCB (x=3 or 4) */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
ROM_LOAD32_BYTE( "hn_00.e1", 0x000000, 0x20000, CRC(12dd0c71) SHA1(77bd0e5f1b105ec70de5e76cb9c8138f02a496be) )
ROM_LOAD32_BYTE( "hn_01.h1", 0x000001, 0x20000, CRC(ac5ea492) SHA1(e08fa2b3e3a40cba6dcdf07049d67056d59ed72a) )
@@ -2463,9 +2619,14 @@ ROM_START( captavena )
ROM_REGION(0x80000, "oki1", 0 )
ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
+ ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
+ ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
ROM_END
-ROM_START( captavene )
+ROM_START( captavene ) /* DE-0351-x PCB (x=3 or 4) */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
ROM_LOAD32_BYTE( "hg_00-4.1e", 0x000000, 0x20000, CRC(7008d43c) SHA1(a39143e13075ebc58ecc576391f04d2649675dfb) )
ROM_LOAD32_BYTE( "hg_01-4.1h", 0x000001, 0x20000, CRC(53dc1042) SHA1(4547ad20e5bc3b9cedae53f73f1628fa3493aafa) )
@@ -2517,13 +2678,13 @@ ROM_START( captavene )
ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
ROM_REGION( 0x0800, "plds", 0 )
- ROM_LOAD( "pal16l8a.12l", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
- ROM_LOAD( "pal16l8a.4h", 0x0200, 0x0104, NO_DUMP ) /* PAL is read protected */
- ROM_LOAD( "pal16l8a.5h", 0x0400, 0x0104, NO_DUMP ) /* PAL is read protected */
+ ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
+ ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
+ ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
ROM_LOAD( "pal16r8b.14c", 0x0600, 0x0104, NO_DUMP ) /* PAL is read protected */
ROM_END
-ROM_START( captavenu )
+ROM_START( captavenu ) /* DE-0351-x PCB (x=3 or 4) */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
ROM_LOAD32_BYTE( "hh_00-19.1e", 0x000000, 0x20000, CRC(08b870e0) SHA1(44c837e3c5dfc9764d89b0ebb3e9b7a40fe4d76f) )
ROM_LOAD32_BYTE( "hh_01-19.1h", 0x000001, 0x20000, CRC(0dc0feca) SHA1(cb1c97aac59dabcf6c37bc1562cf2f62bca951f1) )
@@ -2573,9 +2734,14 @@ ROM_START( captavenu )
ROM_REGION(0x80000, "oki1", 0 )
ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
+ ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
+ ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
ROM_END
-ROM_START( captavenuu )
+ROM_START( captavenuu ) /* DE-0351-x PCB (x=3 or 4) */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
ROM_LOAD32_BYTE( "hh-00.1e", 0x000000, 0x20000, CRC(c34da654) SHA1(a1988a6a45991db6dee10b484049f6703b4671c9) )
ROM_LOAD32_BYTE( "hh-01.1h", 0x000001, 0x20000, CRC(55abe63f) SHA1(98772eff3ebb5a4f243c7a77d398eb142d1505cb) )
@@ -2625,9 +2791,14 @@ ROM_START( captavenuu )
ROM_REGION(0x80000, "oki1", 0 )
ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
+ ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
+ ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
ROM_END
-ROM_START( captavenua )
+ROM_START( captavenua ) /* DE-0351-x PCB (x=3 or 4) */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
ROM_LOAD32_BYTE( "hh_00-4.2e", 0x000000, 0x20000, CRC(0e1acc05) SHA1(7eb6206efad233f9f4ee51102f9fe6b58f0719ea) )
ROM_LOAD32_BYTE( "hh_01-4.2h", 0x000001, 0x20000, CRC(4ff0351d) SHA1(15fc2662ff0d32986c4d4d074b985ad853da34e1) )
@@ -2677,9 +2848,14 @@ ROM_START( captavenua )
ROM_REGION(0x80000, "oki1", 0 )
ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
+ ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
+ ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
ROM_END
-ROM_START( captavenj )
+ROM_START( captavenj ) /* DE-0351-x PCB (x=3 or 4) */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
ROM_LOAD32_BYTE( "hj_00-2.1e", 0x000000, 0x20000, CRC(10b1faaf) SHA1(9d76885200a846b4751c8d44ff591e2aff7c4148) )
ROM_LOAD32_BYTE( "hj_01-2.1h", 0x000001, 0x20000, CRC(62c59f27) SHA1(20bbb7f3ff63a8c795686c1d56d51e90305daa77) )
@@ -2729,6 +2905,11 @@ ROM_START( captavenj )
ROM_REGION(0x80000, "oki1", 0 )
ROM_LOAD( "man-11.16k", 0x000000, 0x80000, CRC(0dc60a4c) SHA1(4d0daa6a0272852a37f341a0cdc48baee0ad9dd8) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "ts-00.4h", 0x0000, 0x0117, CRC(ebc2908e) SHA1(dca14a55abd1d88ee09092d4122614e55c3e7f53) )
+ ROM_LOAD( "ts-01.5h", 0x0200, 0x0117, CRC(c776a980) SHA1(cd4bdcfb755f561fefa4c88fab5d6d2397332aa7) )
+ ROM_LOAD( "ts-02.12l", 0x0400, 0x01bf, CRC(6f26528c) SHA1(2cf869b2a789a9b0646162a61c147bcbb13c9141) )
ROM_END
ROM_START( dragngun )
@@ -2883,8 +3064,8 @@ ROM_END
ROM_START( fghthist ) /* DE-0380-2 PCB */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
- ROM_LOAD32_WORD( "kx00-unknown.bin", 0x000000, 0x80000, CRC(fe5eaba1) SHA1(c8a3784af487a1bbd2150abf4b1c8f3ad33da8a4) ) /* Version 43-07, Overseas */
- ROM_LOAD32_WORD( "kx01-unknown.bin", 0x000002, 0x80000, CRC(3fb8d738) SHA1(2fca7a3ea483f01c97fb28a0adfa6d7980d8236c) )
+ ROM_LOAD32_WORD( "kx00-3.1f", 0x000000, 0x80000, CRC(fe5eaba1) SHA1(c8a3784af487a1bbd2150abf4b1c8f3ad33da8a4) ) /* Version 43-07, Overseas */
+ ROM_LOAD32_WORD( "kx01-3.2f", 0x000002, 0x80000, CRC(3fb8d738) SHA1(2fca7a3ea483f01c97fb28a0adfa6d7980d8236c) )
ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
ROM_LOAD( "kx02.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
@@ -2911,11 +3092,81 @@ ROM_START( fghthist ) /* DE-0380-2 PCB */
ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
ROM_REGION( 0x0400, "plds", 0 )
- ROM_LOAD( "ve-00.3d", 0x0000, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
- ROM_LOAD( "ve-01.4d", 0x0200, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
+ ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
+ ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
+ROM_END
+
+ROM_START( fghthista ) /* DE-0380-2 PCB */
+ ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
+ ROM_LOAD32_WORD( "kx00-2.1f", 0x000000, 0x80000, CRC(a7c36bbd) SHA1(590937818343da53a6bccbd3ea1d7102abd4f27e) ) /* Version 43-05, Overseas */
+ ROM_LOAD32_WORD( "kx01-2.2f", 0x000002, 0x80000, CRC(bdc60bb1) SHA1(e621c5cf357f49aa62deef4da1e2227021f552ce) )
+
+ ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
+ ROM_LOAD( "kx02.18k", 0x00000, 0x10000, CRC(5fd2309c) SHA1(2fb7af54d5cd9bf7dd6fb4f6b82aa52b03294f1f) )
+
+ ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
+
+ ROM_REGION( 0x100000, "gfx2", 0 )
+ ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
+
+ ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
+ ROM_LOAD16_BYTE( "mbf02-16.16d", 0x000001, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
+ ROM_LOAD16_BYTE( "mbf04-16.18d", 0x000000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
+ ROM_LOAD16_BYTE( "mbf03-16.17d", 0x400001, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
+ ROM_LOAD16_BYTE( "mbf05-16.19d", 0x400000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
+
+ ROM_REGION(0x80000, "oki1", 0 )
+ ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
+
+ ROM_REGION(0x80000, "oki2", 0 )
+ ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
+
+ ROM_REGION(512, "proms", 0 )
+ ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
+
+ ROM_REGION( 0x0400, "plds", 0 )
+ ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
+ ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
+ /* PAL16L8BCN at 8J is unpopulated */
+ROM_END
+
+ROM_START( fghthistu ) /* DE-0396-0 PCB */
+ ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
+ ROM_LOAD32_WORD( "lj00-3.1f", 0x000000, 0x80000, CRC(17543d60) SHA1(ff206e8552587b41d075b3c99f9ad733f1c2b5e0) ) /* Version 42-09, US */
+ ROM_LOAD32_WORD( "lj01-3.2f", 0x000002, 0x80000, CRC(e255d48f) SHA1(30444832cfed7eeb6082010eb219362adbafb826) )
+
+ ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
+ ROM_LOAD( "lj02-.17k", 0x00000, 0x10000, CRC(146a1063) SHA1(d16734c2443bf38add54040b9dd2628ba523638d) )
+
+ ROM_REGION( 0x100000, "gfx1", 0 )
+ ROM_LOAD( "mbf00-8.8a", 0x000000, 0x100000, CRC(d3e9b580) SHA1(fc4676e0ecc6c32441ff66fa1f990cc3158237db) ) /* Encrypted tiles */
+
+ ROM_REGION( 0x100000, "gfx2", 0 )
+ ROM_LOAD( "mbf01-8.9a", 0x000000, 0x100000, CRC(0c6ed2eb) SHA1(8e37ef4b1f0b6d3370a08758bfd602cb5f221282) ) /* Encrypted tiles */
+
+ ROM_REGION( 0x800000, "gfx3", 0 ) /* Sprites */
+ ROM_LOAD16_BYTE( "mbf02-16.16d", 0x000001, 0x200000, CRC(c19c5953) SHA1(e6ed26f932c6c86bbd1fc4c000aa2f510c268009) )
+ ROM_LOAD16_BYTE( "mbf04-16.18d", 0x000000, 0x200000, CRC(f6a23fd7) SHA1(74e5559f17cd591aa25d2ed6c34ac9ed89e2e9ba) )
+ ROM_LOAD16_BYTE( "mbf03-16.17d", 0x400001, 0x200000, CRC(37d25c75) SHA1(8219d31091b4317190618edd8acc49f97cba6a1e) )
+ ROM_LOAD16_BYTE( "mbf05-16.19d", 0x400000, 0x200000, CRC(137be66d) SHA1(3fde345183ce04a7a65b4cedfd050d771df7d026) )
+
+ ROM_REGION(0x80000, "oki1", 0 )
+ ROM_LOAD( "mbf06.15k", 0x000000, 0x80000, CRC(fb513903) SHA1(7727a49ff7977f159ed36d097020edef3b5b36ba) )
+
+ ROM_REGION(0x80000, "oki2", 0 )
+ ROM_LOAD( "mbf07.16k", 0x000000, 0x80000, CRC(51d4adc7) SHA1(22106ed7a05db94adc5a783ce34529e29d24d41a) )
+
+ ROM_REGION(512, "proms", 0 )
+ ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
+
+ ROM_REGION( 0x0400, "plds", 0 )
+ ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
+ ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
+ /* PAL16L8BCN at 8J is unpopulated */
ROM_END
-ROM_START( fghthistu ) /* DE-0395-1 PCB */
+ROM_START( fghthistua ) /* DE-0395-1 PCB */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
ROM_LOAD32_WORD( "le00-1.1f", 0x000000, 0x80000, CRC(fccacafb) SHA1(b7236a90a09dbd5870a16aa4e4eac5ab5c098418) ) /* Version 42-06, US */
ROM_LOAD32_WORD( "le01-1.2f", 0x000002, 0x80000, CRC(06a3c326) SHA1(3d8842fb69def93fc544e89fd0e56ada416157dc) )
@@ -2945,11 +3196,12 @@ ROM_START( fghthistu ) /* DE-0395-1 PCB */
ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
ROM_REGION( 0x0400, "plds", 0 )
- ROM_LOAD( "ve-00.3d", 0x0000, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
- ROM_LOAD( "ve-01a.4d", 0x0200, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
+ ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
+ ROM_LOAD( "ve-01a.4d", 0x0200, 0x0117, CRC(109613c8) SHA1(5991e010c1bc2a827c8ee2c85a9b40e00a3167b3) )
+ /* PAL16L8BCN at 8J is unpopulated */
ROM_END
-ROM_START( fghthistua ) /* DE-0395-1 PCB */
+ROM_START( fghthistub ) /* DE-0395-1 PCB */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
ROM_LOAD32_WORD( "le00.1f", 0x000000, 0x80000, CRC(a5c410eb) SHA1(e2b0cb2351782e1155ecc4029010beb7326fd874) ) /* Version 42-05, US */
ROM_LOAD32_WORD( "le01.2f", 0x000002, 0x80000, CRC(7e148aa2) SHA1(b21e16604c4d29611f91d629deb9f041eaf41e9b) )
@@ -2979,11 +3231,12 @@ ROM_START( fghthistua ) /* DE-0395-1 PCB */
ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
ROM_REGION( 0x0400, "plds", 0 )
- ROM_LOAD( "ve-00.3d", 0x0000, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
- ROM_LOAD( "ve-01a.4d", 0x0200, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
+ ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
+ ROM_LOAD( "ve-01a.4d", 0x0200, 0x0117, CRC(109613c8) SHA1(5991e010c1bc2a827c8ee2c85a9b40e00a3167b3) )
+ /* PAL16L8BCN at 8J is unpopulated */
ROM_END
-ROM_START( fghthistub ) /* DE-0380-2 PCB */
+ROM_START( fghthistuc ) /* DE-0380-2 PCB */
ROM_REGION(0x100000, "maincpu", 0 ) /* ARM 32 bit code */
ROM_LOAD32_WORD( "kz00-1.1f", 0x000000, 0x80000, CRC(3a3dd15c) SHA1(689b51adf73402b12191a75061b8e709468c91bc) ) /* Version 42-03, US */
ROM_LOAD32_WORD( "kz01-1.2f", 0x000002, 0x80000, CRC(86796cd6) SHA1(c397c07d7a1d03ba96ccb2fe7a0ad25b8331e945) )
@@ -3013,8 +3266,9 @@ ROM_START( fghthistub ) /* DE-0380-2 PCB */
ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
ROM_REGION( 0x0400, "plds", 0 )
- ROM_LOAD( "ve-00.3d", 0x0000, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
- ROM_LOAD( "ve-01.4d", 0x0200, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
+ ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
+ ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
+ /* PAL16L8BCN at 8J is unpopulated */
ROM_END
ROM_START( fghthistj ) /* DE-0395-1 PCB */
@@ -3047,8 +3301,9 @@ ROM_START( fghthistj ) /* DE-0395-1 PCB */
ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
ROM_REGION( 0x0400, "plds", 0 )
- ROM_LOAD( "ve-00.3d", 0x0000, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
- ROM_LOAD( "ve-01a.4d", 0x0200, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
+ ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
+ ROM_LOAD( "ve-01a.4d", 0x0200, 0x0117, CRC(109613c8) SHA1(5991e010c1bc2a827c8ee2c85a9b40e00a3167b3) )
+ /* PAL16L8BCN at 8J is unpopulated */
ROM_END
ROM_START( fghthistja ) /* DE-0380-2 PCB */
@@ -3081,8 +3336,9 @@ ROM_START( fghthistja ) /* DE-0380-2 PCB */
ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
ROM_REGION( 0x0400, "plds", 0 )
- ROM_LOAD( "ve-00.3d", 0x0000, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
- ROM_LOAD( "ve-01.4d", 0x0200, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
+ ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
+ ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
+ /* PAL16L8BCN at 8J is unpopulated */
ROM_END
ROM_START( fghthistjb ) /* DE-0380-1 PCB */
@@ -3115,8 +3371,9 @@ ROM_START( fghthistjb ) /* DE-0380-1 PCB */
ROM_LOAD( "kt-00.8j", 0, 512, CRC(7294354b) SHA1(14fe42ad5d26d022c0fe9a46a4a9017af2296f40) ) /* MB7124H type prom */
ROM_REGION( 0x0400, "plds", 0 )
- ROM_LOAD( "ve-00.3d", 0x0000, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
- ROM_LOAD( "ve-01.4d", 0x0200, 0x0104, NO_DUMP ) /* PAL16L8 is read protected */
+ ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
+ ROM_LOAD( "ve-01.4d", 0x0200, 0x0117, CRC(4ba7e6a9) SHA1(b65d696a3519e792df226f9f148c759cdb0e1e43) )
+ /* PAL16L8BCN at 8J is unpopulated */
ROM_END
ROM_START( lockload ) /* Board No. DE-0420-1 + Bottom board DE-0421-0 slightly different hardware, a unique PCB and not a Dragongun conversion */
@@ -3494,7 +3751,7 @@ ROM_START( tattassa )
ROM_LOAD( "eeprom-tattass.bin", 0x0000, 0x0400, CRC(7140f40c) SHA1(4fb7897933046b6adaf00b4626d5fd23d0e8a666) )
ROM_END
-ROM_START( nslasher )
+ROM_START( nslasher ) /* DE-0397-0 PCB */
ROM_REGION(0x100000, "maincpu", 0 ) /* Encrypted ARM 32 bit code */
ROM_LOAD32_WORD( "mainprg.1f", 0x000000, 0x80000, CRC(507acbae) SHA1(329a2bb244f2f3adb8d75cab5aa2dcb129d70712) )
ROM_LOAD32_WORD( "mainprg.2f", 0x000002, 0x80000, CRC(931fc7ee) SHA1(54eb12abfa3f332ce9b43a45ec424aaee88641a6) )
@@ -3502,7 +3759,6 @@ ROM_START( nslasher )
ROM_REGION(0x10000, "audiocpu", 0 ) /* Sound CPU */
ROM_LOAD( "sndprg.17l", 0x00000, 0x10000, CRC(18939e92) SHA1(50b37a78d9d2259d4b140dd17393c4e5ca92bca5) )
-
ROM_REGION( 0x200000, "gfx1", 0 )
ROM_LOAD( "mbh-00.8c", 0x000000, 0x200000, CRC(a877f8a3) SHA1(79253525f360a73161894f31e211e4d6b38d307a) ) /* Encrypted tiles */
@@ -3529,9 +3785,14 @@ ROM_START( nslasher )
ROM_REGION(0x200, "prom", 0 )
ROM_LOAD( "ln-00.j7", 0x000000, 0x200, CRC(5e83eaf3) SHA1(95f5eb8e56dff6c2dce7c39a6dd458bfc38fe1cf) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "vm-00.3d", 0x0000, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
+ ROM_LOAD( "vm-01.4d", 0x0200, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
+ ROM_LOAD( "vm-02.8j", 0x0400, 0x0117, CRC(53692426) SHA1(b8f8cf6b1f6b637fcd1fcd62474e637f5d4a6901) )
ROM_END
-ROM_START( nslasherj )
+ROM_START( nslasherj ) /* DE-0397-0 PCB */
ROM_REGION(0x100000, "maincpu", 0 ) /* Encrypted ARM 32 bit code */
ROM_LOAD32_WORD( "lx-00.1f", 0x000000, 0x80000, CRC(6ed5fb88) SHA1(84350da7939a479968a523c84e254e3ee54b8da2) )
ROM_LOAD32_WORD( "lx-01.2f", 0x000002, 0x80000, CRC(a6df2152) SHA1(6fe7e0b2e71c5f807951dcc81a6a3cff55247961) )
@@ -3565,9 +3826,14 @@ ROM_START( nslasherj )
ROM_REGION(0x200, "prom", 0 )
ROM_LOAD( "ln-00.j7", 0x000000, 0x200, CRC(5e83eaf3) SHA1(95f5eb8e56dff6c2dce7c39a6dd458bfc38fe1cf) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "vm-00.3d", 0x0000, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
+ ROM_LOAD( "vm-01.4d", 0x0200, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
+ ROM_LOAD( "vm-02.8j", 0x0400, 0x0117, CRC(53692426) SHA1(b8f8cf6b1f6b637fcd1fcd62474e637f5d4a6901) )
ROM_END
-ROM_START( nslashers )
+ROM_START( nslashers ) /* DE-0397-0 PCB */
ROM_REGION(0x100000, "maincpu", 0 ) /* Encrypted ARM 32 bit code */
ROM_LOAD32_WORD( "ly-00.1f", 0x000000, 0x80000, CRC(fa0646f9) SHA1(7f9633bda230a0ced59171cdc5ab40a6d56c3d34) )
ROM_LOAD32_WORD( "ly-01.2f", 0x000002, 0x80000, CRC(ae508149) SHA1(3592949e5fb2770adb9c9daa4e38c4e75f3e2554) )
@@ -3601,9 +3867,14 @@ ROM_START( nslashers )
ROM_REGION(0x200, "prom", 0 )
ROM_LOAD( "ln-00.j7", 0x000000, 0x200, CRC(5e83eaf3) SHA1(95f5eb8e56dff6c2dce7c39a6dd458bfc38fe1cf) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "vm-00.3d", 0x0000, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
+ ROM_LOAD( "vm-01.4d", 0x0200, 0x0117, NO_DUMP ) /* 16L8ACN is read protected */
+ ROM_LOAD( "vm-02.8j", 0x0400, 0x0117, CRC(53692426) SHA1(b8f8cf6b1f6b637fcd1fcd62474e637f5d4a6901) )
ROM_END
-ROM_START( nslasheru )
+ROM_START( nslasheru ) /* DE-0395-1 PCB */
ROM_REGION(0x100000, "maincpu", 0 ) /* Encrypted ARM 32 bit code */
ROM_LOAD32_WORD( "00.f1", 0x000000, 0x80000, CRC(944f3329) SHA1(7e7909e203b9752de3d3d798c6f84ac6ae824a07) )
ROM_LOAD32_WORD( "01.f2", 0x000002, 0x80000, CRC(ac12d18a) SHA1(7cd4e843bf575c70c5c39a8afa78b803106f59b0) )
@@ -3637,13 +3908,18 @@ ROM_START( nslasheru )
ROM_REGION(0x200, "prom", 0 )
ROM_LOAD( "ln-00.j7", 0x000000, 0x200, CRC(5e83eaf3) SHA1(95f5eb8e56dff6c2dce7c39a6dd458bfc38fe1cf) )
+
+ ROM_REGION( 0x0600, "plds", 0 )
+ ROM_LOAD( "ve-00.3d", 0x0000, 0x0117, CRC(384d316c) SHA1(61b50c695d4210c199cf6f7bbe50c8a5ecd1d21c) )
+ ROM_LOAD( "ve-01a.4d", 0x0200, 0x0117, CRC(109613c8) SHA1(5991e010c1bc2a827c8ee2c85a9b40e00a3167b3) )
+ ROM_LOAD( "vm-02.8j", 0x0400, 0x0117, CRC(53692426) SHA1(b8f8cf6b1f6b637fcd1fcd62474e637f5d4a6901) )
ROM_END
DRIVER_INIT_MEMBER(deco32_state,captaven)
{
deco56_decrypt_gfx(machine(), "gfx1");
deco56_decrypt_gfx(machine(), "gfx2");
-
+
save_item(NAME(m_raster_enable));
save_item(NAME(m_nslasher_sound_irq));
save_item(NAME(m_irq_source));
@@ -3707,7 +3983,6 @@ DRIVER_INIT_MEMBER(dragngun_state,dragngunj)
ROM[0x1a1b4/4]=0xe1a00000; // bl $ee000: NOP test switch lock
}
-
DRIVER_INIT_MEMBER(deco32_state,fghthist)
{
deco56_decrypt_gfx(machine(), "gfx1");
@@ -3725,7 +4000,7 @@ DRIVER_INIT_MEMBER(dragngun_state,lockload)
memcpy(RAM+0x300000,RAM+0x100000,0x100000);
memset(RAM+0x100000,0,0x100000);
-
+
save_item(NAME(m_raster_enable));
save_item(NAME(m_nslasher_sound_irq));
save_item(NAME(m_irq_source));
@@ -3752,7 +4027,7 @@ DRIVER_INIT_MEMBER(deco32_state,tattass)
deco56_decrypt_gfx(machine(), "gfx1"); /* 141 */
deco56_decrypt_gfx(machine(), "gfx2"); /* 141 */
-
+
save_item(NAME(m_tattass_eprom_bit));
save_item(NAME(m_lastClock));
save_item(NAME(m_buffer));
@@ -3783,7 +4058,7 @@ DRIVER_INIT_MEMBER(deco32_state,nslasher)
deco156_decrypt(machine());
soundlatch_setclearedvalue(0xff);
-
+
save_item(NAME(m_nslasher_sound_irq));
/* The board for Night Slashers is very close to the Fighter's History and
@@ -3792,35 +4067,43 @@ DRIVER_INIT_MEMBER(deco32_state,nslasher)
/**********************************************************************************/
-GAME( 1991, captaven, 0, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Asia Rev 1.4)", GAME_SUPPORTS_SAVE )
-GAME( 1991, captavena, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Asia Rev 1.0)", GAME_SUPPORTS_SAVE )
-GAME( 1991, captavene, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (UK Rev 1.4)", GAME_SUPPORTS_SAVE )
-GAME( 1991, captavenu, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.9)", GAME_SUPPORTS_SAVE )
-GAME( 1991, captavenuu, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.6)", GAME_SUPPORTS_SAVE )
-GAME( 1991, captavenua, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.4)", GAME_SUPPORTS_SAVE )
-GAME( 1991, captavenj, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Japan Rev 0.2)", GAME_SUPPORTS_SAVE )
-
-GAME( 1993, fghthist, 0, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-07, DE-0380-2 PCB)", GAME_SUPPORTS_SAVE )
-GAME( 1993, fghthistu, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-06, DE-0395-1 PCB)", GAME_SUPPORTS_SAVE )
-GAME( 1993, fghthistua, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-05, DE-0395-1 PCB)", GAME_SUPPORTS_SAVE )
-GAME( 1993, fghthistub, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-03, DE-0380-2 PCB)", GAME_SUPPORTS_SAVE )
-GAME( 1993, fghthistj, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-07, DE-0395-1 PCB)", GAME_SUPPORTS_SAVE )
-GAME( 1993, fghthistja, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-05, DE-0380-2 PCB)", GAME_SUPPORTS_SAVE )
-GAME( 1993, fghthistjb, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-04, DE-0380-1 PCB)", GAME_SUPPORTS_SAVE )
-
-GAME( 1994, nslasher, 0, nslasher, nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Korea Rev 1.3)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1994, nslasherj, nslasher, nslasher, nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Japan Rev 1.2)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1994, nslashers, nslasher, nslasher, nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Over Sea Rev 1.2)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1994, nslasheru, nslasher, nslasheru,nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (US Rev 1.2, HuC6280 Sound CPU)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-
-GAME( 1994, tattass, 0, tattass, tattass, deco32_state, tattass, ROT0, "Data East Pinball", "Tattoo Assassins (US prototype)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1994, tattassa, tattass, tattass, tattass, deco32_state, tattass, ROT0, "Data East Pinball", "Tattoo Assassins (Asia prototype)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1991, captaven, 0, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Asia Rev 1.4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captavena, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Asia Rev 1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captavene, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (UK Rev 1.4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captavenu, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.9)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captavenuu, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.6)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captavenua, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (US Rev 1.4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, captavenj, captaven, captaven, captaven, deco32_state, captaven, ROT0, "Data East Corporation", "Captain America and The Avengers (Japan Rev 0.2)", MACHINE_SUPPORTS_SAVE )
+
+// DE-0396-0 PCB sets (Z80 for sound)
+GAME( 1993, fghthistu, fghthist, fghthistz,fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-09, DE-0396-0 PCB)", MACHINE_SUPPORTS_SAVE )
+// DE-0395-1 PCB sets (HuC6280 for sound)
+GAME( 1993, fghthistua, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-06, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fghthistub, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-05, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fghthistj, fghthist, fghthsta, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-07, DE-0395-1 PCB)", MACHINE_SUPPORTS_SAVE )
+// DE-0380-2 PCB sets (HuC6280 for sound)
+GAME( 1993, fghthist, 0, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-07, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fghthista, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (World ver 43-05, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fghthistuc, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (US ver 42-03, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, fghthistja, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-05, DE-0380-2 PCB)", MACHINE_SUPPORTS_SAVE )
+// DE-0380-1 PCB sets (HuC6280 for sound)
+GAME( 1993, fghthistjb, fghthist, fghthist, fghthist, deco32_state, fghthist, ROT0, "Data East Corporation", "Fighter's History (Japan ver 41-04, DE-0380-1 PCB)", MACHINE_SUPPORTS_SAVE )
+
+// DE-0397-0 PCB sets (Z80 for sound)
+GAME( 1994, nslasher, 0, nslasher, nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Korea Rev 1.3, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, nslasherj, nslasher, nslasher, nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Japan Rev 1.2, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, nslashers, nslasher, nslasher, nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (Over Sea Rev 1.2, DE-0397-0 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+// DE-0395-1 PCB sets (HuC6280 for sound)
+GAME( 1994, nslasheru, nslasher, nslasheru,nslasher, deco32_state, nslasher, ROT0, "Data East Corporation", "Night Slashers (US Rev 1.2, DE-0395-1 PCB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1994, tattass, 0, tattass, tattass, deco32_state, tattass, ROT0, "Data East Pinball", "Tattoo Assassins (US prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, tattassa, tattass, tattass, tattass, deco32_state, tattass, ROT0, "Data East Pinball", "Tattoo Assassins (Asia prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
// Dragon Gun / Lock 'n' Loaded have very different sprite hardware
-GAME( 1993, dragngun, 0, dragngun, dragngun, dragngun_state, dragngun, ROT0, "Data East Corporation", "Dragon Gun (US)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1993, dragngunj, dragngun, dragngun, dragngun, dragngun_state, dragngunj, ROT0, "Data East Corporation", "Dragon Gun (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1993, dragngun, 0, dragngun, dragngun, dragngun_state, dragngun, ROT0, "Data East Corporation", "Dragon Gun (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, dragngunj, dragngun, dragngun, dragngun, dragngun_state, dragngunj, ROT0, "Data East Corporation", "Dragon Gun (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1994, lockload, 0, lockload, lockload, dragngun_state, lockload, ROT0, "Data East Corporation", "Locked 'n Loaded (World)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1994, gunhard, lockload, lockload, lockload, dragngun_state, lockload, ROT0, "Data East Corporation", "Gun Hard (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1994, lockloadu, lockload, lockloadu,lockload, dragngun_state, lockload, ROT0, "Data East Corporation", "Locked 'n Loaded (US, Dragon Gun conversion)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // HuC6280 Sound CPU
+GAME( 1994, lockload, 0, lockload, lockload, dragngun_state, lockload, ROT0, "Data East Corporation", "Locked 'n Loaded (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, gunhard, lockload, lockload, lockload, dragngun_state, lockload, ROT0, "Data East Corporation", "Gun Hard (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, lockloadu, lockload, lockloadu,lockload, dragngun_state, lockload, ROT0, "Data East Corporation", "Locked 'n Loaded (US, Dragon Gun conversion)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // HuC6280 Sound CPU
diff --git a/src/mame/drivers/deco_ld.c b/src/mame/drivers/deco_ld.c
index a99da6b883f..0d3ea44d043 100644
--- a/src/mame/drivers/deco_ld.c
+++ b/src/mame/drivers/deco_ld.c
@@ -658,9 +658,9 @@ ROM_END
-GAME( 1983, begas, 0, rblaster, begas, driver_device, 0, ROT0, "Data East", "Bega's Battle (Revision 3)", GAME_NOT_WORKING )
-GAME( 1983, begas1, begas, rblaster, begas, driver_device, 0, ROT0, "Data East", "Bega's Battle (Revision 1)", GAME_NOT_WORKING )
-GAME( 1984, cobra, 0, rblaster, cobra, driver_device, 0, ROT0, "Data East", "Cobra Command (Data East LD, set 1)", GAME_NOT_WORKING )
-GAME( 1984, cobraa, cobra, rblaster, cobra, driver_device, 0, ROT0, "Data East", "Cobra Command (Data East LD, set 2)", GAME_NOT_WORKING ) // might be a prototype
+GAME( 1983, begas, 0, rblaster, begas, driver_device, 0, ROT0, "Data East", "Bega's Battle (Revision 3)", MACHINE_NOT_WORKING )
+GAME( 1983, begas1, begas, rblaster, begas, driver_device, 0, ROT0, "Data East", "Bega's Battle (Revision 1)", MACHINE_NOT_WORKING )
+GAME( 1984, cobra, 0, rblaster, cobra, driver_device, 0, ROT0, "Data East", "Cobra Command (Data East LD, set 1)", MACHINE_NOT_WORKING )
+GAME( 1984, cobraa, cobra, rblaster, cobra, driver_device, 0, ROT0, "Data East", "Cobra Command (Data East LD, set 2)", MACHINE_NOT_WORKING ) // might be a prototype
// Thunder Storm (Cobra Command Japanese version)
-GAME( 1985, rblaster, 0, rblaster, rblaster, driver_device, 0, ROT0, "Data East", "Road Blaster (Data East LD)", GAME_NOT_WORKING )
+GAME( 1985, rblaster, 0, rblaster, rblaster, driver_device, 0, ROT0, "Data East", "Road Blaster (Data East LD)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/deco_mlc.c b/src/mame/drivers/deco_mlc.c
index 36639f6443d..d8b10793324 100644
--- a/src/mame/drivers/deco_mlc.c
+++ b/src/mame/drivers/deco_mlc.c
@@ -868,8 +868,8 @@ DRIVER_INIT_MEMBER(deco_mlc_state,mlc)
GAME( 1995, avengrgs, 0, avengrgs, mlc, deco_mlc_state, avengrgs, ROT0, "Data East Corporation", "Avengers In Galactic Storm (US)", 0 )
GAME( 1995, avengrgsj,avengrgs, avengrgs, mlc, deco_mlc_state, avengrgs, ROT0, "Data East Corporation", "Avengers In Galactic Storm (Japan)", 0 )
-GAME( 1996, stadhr96, 0, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT0, "Data East Corporation", "Stadium Hero '96 (World, EAJ)", GAME_IMPERFECT_GRAPHICS ) // Rom labels are EAJ ^^
-GAME( 1996, stadhr96j,stadhr96, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT0, "Data East Corporation", "Stadium Hero '96 (Japan, EAD)", GAME_IMPERFECT_GRAPHICS ) // Rom labels are EAD (this isn't a Konami region code!)
+GAME( 1996, stadhr96, 0, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT0, "Data East Corporation", "Stadium Hero '96 (World, EAJ)", MACHINE_IMPERFECT_GRAPHICS ) // Rom labels are EAJ ^^
+GAME( 1996, stadhr96j,stadhr96, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT0, "Data East Corporation", "Stadium Hero '96 (Japan, EAD)", MACHINE_IMPERFECT_GRAPHICS ) // Rom labels are EAD (this isn't a Konami region code!)
GAME( 1996, skullfng, 0, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT270, "Data East Corporation", "Skull Fang (World)", 0 ) /* Version 1.13, Europe, Master 96.02.19 */
GAME( 1996, skullfngj,skullfng, mlc_6bpp, mlc, deco_mlc_state, mlc, ROT270, "Data East Corporation", "Skull Fang (Japan)", 0 ) /* Version 1.09, Japan, Master 96.02.08 */
GAME( 1996, hoops96, 0, mlc_5bpp, mlc, deco_mlc_state, mlc, ROT0, "Data East Corporation", "Hoops '96 (Europe/Asia 2.0)", 0 )
diff --git a/src/mame/drivers/decocass.c b/src/mame/drivers/decocass.c
index 53f11ce466c..0ebd94feab6 100644
--- a/src/mame/drivers/decocass.c
+++ b/src/mame/drivers/decocass.c
@@ -1646,11 +1646,11 @@ DRIVER_INIT_MEMBER(decocass_state,cdsteljn)
m_maincpu->space(AS_PROGRAM).install_read_handler(0xe600, 0xe6ff, read8_delegate(FUNC(decocass_state::cdsteljn_input_r), this));
}
-/* -- */ GAME( 1981, decocass, 0, decocass, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "DECO Cassette System", GAME_IS_BIOS_ROOT )
+/* -- */ GAME( 1981, decocass, 0, decocass, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "DECO Cassette System", MACHINE_IS_BIOS_ROOT )
/* -- */ GAME( 1981, ctsttape, decocass, ctsttape, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Test Tape (DECO Cassette)", 0 )
/* 01 */ GAME( 1980, chwy, decocass, chwy, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Highway Chase (DECO Cassette)", 0 )
/* 02 */ // 1980.12 Sengoku Ninjatai
-/* 03 */ GAME( 1981, cmanhat, decocass, cmanhat, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Manhattan (DECO Cassette)", GAME_IMPERFECT_GRAPHICS )
+/* 03 */ GAME( 1981, cmanhat, decocass, cmanhat, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Manhattan (DECO Cassette)", MACHINE_IMPERFECT_GRAPHICS )
/* 04 */ GAME( 1981, cterrani, decocass, cterrani, cterrani, decocass_state, decocass, ROT270, "Data East Corporation", "Terranean (DECO Cassette)", 0 )
/* 05 */ // 1981.?? Missile Sprinter
/* 06 */ // 1980.12 Nebula
@@ -1666,9 +1666,9 @@ DRIVER_INIT_MEMBER(decocass_state,cdsteljn)
/* 15 */ GAME( 1981, cluckypo, decocass, cluckypo, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Lucky Poker (DECO Cassette)", 0 )
/* 16 */ GAME( 1981, ctisland, decocass, ctisland, decocass, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette, set 1)", 0 )
/* */ GAME( 1981, ctisland2, ctisland, ctisland, decocass, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette, set 2)", 0 )
-/* */ GAME( 1981, ctisland3, ctisland, ctisland, decocass, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette, set 3)", GAME_NOT_WORKING ) /* Different Bitswap? */
+/* */ GAME( 1981, ctisland3, ctisland, ctisland, decocass, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette, set 3)", MACHINE_NOT_WORKING ) /* Different Bitswap? */
/* 17 */ // 1981.10 Bobbitto
-/* 18 */ GAME( 1982, cexplore, decocass, cexplore, cexplore, decocass_state, decocass, ROT270, "Data East Corporation", "Explorer (DECO Cassette)", GAME_NOT_WORKING )
+/* 18 */ GAME( 1982, cexplore, decocass, cexplore, cexplore, decocass_state, decocass, ROT270, "Data East Corporation", "Explorer (DECO Cassette)", MACHINE_NOT_WORKING )
/* 19 */ GAME( 1982, cdiscon1, decocass, cdiscon1, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Disco No.1 (DECO Cassette)", 0 )
/* */ GAME( 1982, csweetht, cdiscon1, cdiscon1, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Sweet Heart (DECO Cassette)", 0 )
/* 20 */ GAME( 1982, ctornado, decocass, ctornado, ctornado, decocass_state, decocass, ROT270, "Data East Corporation", "Tornado (DECO Cassette)", 0 )
@@ -1693,7 +1693,7 @@ DRIVER_INIT_MEMBER(decocass_state,cdsteljn)
/* */ GAME( 1983, cnightst2, cnightst, cnightst, cnightst, decocass_state, decocass, ROT270, "Data East Corporation", "Night Star (DECO Cassette, set 2)", 0 )
/* 33 */ GAME( 1983, cpsoccer, decocass, cpsoccer, cpsoccer, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette)", 0 )
/* */ GAME( 1983, cpsoccerj, cpsoccer, cpsoccer, cpsoccer, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette, Japan)", 0 )
-/* 34 */ GAME( 1983, csdtenis, decocass, csdtenis, csdtenis, decocass_state, decocass, ROT270, "Data East Corporation", "Super Doubles Tennis (DECO Cassette, Japan)", GAME_WRONG_COLORS )
+/* 34 */ GAME( 1983, csdtenis, decocass, csdtenis, csdtenis, decocass_state, decocass, ROT270, "Data East Corporation", "Super Doubles Tennis (DECO Cassette, Japan)", MACHINE_WRONG_COLORS )
/* 35 */ GAME( 1985, cflyball, decocass, cflyball, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Flying Ball (DECO Cassette)", 0 )
/* 36 */ // 1984.04 Genesis/Boomer Rang'r
/* 37 */ GAME( 1983, czeroize, decocass, czeroize, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Zeroize (DECO Cassette)", 0 )
diff --git a/src/mess/drivers/dectalk.c b/src/mame/drivers/dectalk.c
index 1935e4133e4..506895e05ed 100644
--- a/src/mess/drivers/dectalk.c
+++ b/src/mame/drivers/dectalk.c
@@ -1007,4 +1007,4 @@ ROM_END
******************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1984, dectalk, 0, 0, dectalk, dectalk, dectalk_state, dectalk, "Digital Equipment Corporation", "DECtalk DTC-01", GAME_NOT_WORKING )
+COMP( 1984, dectalk, 0, 0, dectalk, dectalk, dectalk_state, dectalk, "Digital Equipment Corporation", "DECtalk DTC-01", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/decwritr.c b/src/mame/drivers/decwritr.c
new file mode 100644
index 00000000000..36aa3978c0a
--- /dev/null
+++ b/src/mame/drivers/decwritr.c
@@ -0,0 +1,384 @@
+// license:BSD-3-Clause
+// copyright-holders:Jonathan Gevaryahu
+/*************************************************************************
+
+ decwritr.c
+ Digital Equipment Corporation
+ DECwriter III (LA120) Teletype/Teleprinter, 1978
+
+**************************************************************************/
+
+#include "emu.h"
+#include "render.h"
+#include "cpu/i8085/i8085.h"
+#include "machine/i8251.h"
+#include "sound/beep.h"
+
+#define KBD_VERBOSE 1
+#define LED_VERBOSE 1
+
+//**************************************************************************
+// DRIVER STATE
+//**************************************************************************
+
+class decwriter_state : public driver_device
+{
+public:
+ // constructor
+ decwriter_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_speaker(*this, "beeper"),
+ m_uart(*this, "i8251")
+ {
+ }
+ required_device<cpu_device> m_maincpu;
+ required_device<beep_device> m_speaker;
+ required_device<i8251_device> m_uart;
+ //required_device<generic_terminal_device> m_terminal;
+ UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
+ {
+ bitmap.fill(rgb_t::black);
+ return 0;
+ }
+ DECLARE_READ8_MEMBER(la120_KBD_r);
+ DECLARE_WRITE8_MEMBER(la120_LED_w);
+ DECLARE_READ8_MEMBER(la120_NVR_r);
+ DECLARE_WRITE8_MEMBER(la120_NVR_w);
+ DECLARE_READ8_MEMBER(la120_DC305_r);
+ DECLARE_WRITE8_MEMBER(la120_DC305_w);
+private:
+ virtual void machine_start();
+ //virtual void machine_reset();
+ ioport_port* m_col_array[16];
+ UINT8 m_led_array;
+ UINT8 m_led_7seg_counter;
+ UINT8 m_led_7seg[4];
+};
+
+READ8_MEMBER( decwriter_state::la120_KBD_r )
+{
+ /* for reading the keyboard array, addr bits 5-11 are ignored.
+ * a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0
+ * 0 0 1 1 x x x x x x x * * * * *
+ * | | \---\---\--- column select
+ * | \--------------- kbd_banksel0
+ * \------------------- kbd_banksel1
+ * if both banks are selected, the resulting row read is a binary OR of both (LA120-TM1, page 4-5)
+ *
+ * d7 d6 d5 d4 d3 d2 d1 d0
+ * \--\--\--\--\--\--\--\-- read from rows
+ */
+ UINT8 code = 0;
+ if (offset&0x8) code |= m_col_array[offset&0x7]->read();
+ if (offset&0x10) code |= m_col_array[(offset&0x7)+8]->read();
+#ifdef KBD_VERBOSE
+ logerror("Keyboard column %X read, returning %02X\n", offset&0xF, code);
+#endif
+ return code;
+}
+
+WRITE8_MEMBER( decwriter_state::la120_LED_w )
+{
+ /* for writing the keyboard array, addr bits 5-11 are ignored.
+ * a15 a14 a13 a12 a11 a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0
+ * 0 0 1 1 x x x x x x x 0 * * * 0 turn OFF LED # <a3:a1> and clear 7seg counter
+ * 0 0 1 1 x x x x x x x 0 * * * 1 turn ON LED # <a3:a1> and clear 7seg counter
+ * 0 0 1 1 x x x x x x x 1 * * * * display a digit <a3:a0> in the digit pointed to by 7seg counter and increment counter
+ * data bus is UNUSED.
+ */
+ if (!(offset&0x10)) // we're updating an led state
+ {
+#ifdef LED_VERBOSE
+ logerror("Updated LED status array: LED #%d is now %d\n", ((offset&0xe)>>1), (offset&1));
+#endif
+ m_led_array &= ((1<<((offset&0xe)>>1))^0xFF); // mask out the old bit
+ m_led_array |= ((offset&1)<<((offset&0xe)>>1)); // OR in the new bit
+ m_led_7seg_counter = 0;
+ }
+ else // we're updating the 7segment display
+ {
+ m_led_7seg_counter++;
+ m_led_7seg_counter &= 0xF;
+#ifdef LED_VERBOSE
+ logerror("Updated 7seg display: displaying a digit of %d in position %d\n", (offset&0xF)^0xF, m_led_7seg_counter-1);
+#endif
+ if ((m_led_7seg_counter >= 1) && (m_led_7seg_counter <= 4))
+ {
+ m_led_7seg[m_led_7seg_counter-1] = (offset&0xF)^0xF;
+ }
+ }
+ popmessage("LEDs: %c %c %c %c : %s %s %s %s %s %s %s %s\n",
+ m_led_7seg[3]+0x30, m_led_7seg[2]+0x30, m_led_7seg[1]+0x30, m_led_7seg[0]+0x30,
+ (m_led_array&0x80)?"ON LINE":"-------",
+ (m_led_array&0x40)?"LOCAL":"-----",
+ (m_led_array&0x20)?"ALT CHR SET":"-----------",
+ (m_led_array&0x10)?"<LED4>":"-----",
+ (m_led_array&0x8)?"CTS":"---",
+ (m_led_array&0x4)?"DSR":"---",
+ (m_led_array&0x2)?"SET-UP":"------",
+ (m_led_array&0x1)?"PAPER OUT":"---------" );
+}
+
+READ8_MEMBER( decwriter_state::la120_NVR_r )
+{
+ return 0xFF;
+}
+
+WRITE8_MEMBER( decwriter_state::la120_NVR_w )
+{
+}
+READ8_MEMBER( decwriter_state::la120_DC305_r )
+{
+ return 0xFF;
+}
+WRITE8_MEMBER( decwriter_state::la120_DC305_w )
+{
+}
+
+static ADDRESS_MAP_START(la120_mem, AS_PROGRAM, 8, decwriter_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE( 0x0000, 0x2fff ) AM_ROM
+ AM_RANGE( 0x3000, 0x3fff ) AM_READWRITE(la120_KBD_r, la120_LED_w) // keyboard read, write to status and 7seg LEDS
+ AM_RANGE( 0x4000, 0x43ff ) AM_MIRROR(0x0c00) AM_RAM // 1k 'low ram'
+ AM_RANGE( 0x5000, 0x53ff ) AM_MIRROR(0x0c00) AM_RAM // 1k 'high ram'
+ AM_RANGE( 0x6000, 0x6fff ) AM_MIRROR(0x08fe) AM_READWRITE(la120_NVR_r, la120_NVR_w) // ER1400 EAROM
+ AM_RANGE( 0x7000, 0x7003 ) AM_MIRROR(0x0ffc) AM_READWRITE(la120_DC305_r, la120_DC305_w) // DC305 printer controller ASIC stuff; since this can generate interrupts this needs to be split to its own device.
+ // 8000-ffff is reserved for expansion (i.e. unused, open bus)
+ADDRESS_MAP_END
+
+/*
+ * 8080 IO address map (x = ignored; * = selects address within this range)
+ * (a15 to a8 are latched the same value as a7-a0 on the 8080 and 8085)
+ a7 a6 a5 a4 a3 a2 a1 a0
+ 0 x x x x x 0 0 RW 8251 Data
+ 0 x x x x x 0 1 RW 8251 Status/Control
+ 0 x x x x x 1 x RW Flags Read/Write
+ 1 x x x x x x x RW Expansion (Open bus)
+ */
+static ADDRESS_MAP_START(la120_io, AS_IO, 8, decwriter_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE(0x00, 0x00) AM_MIRROR(0x7C) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w) // 8251 Data
+ AM_RANGE(0x01, 0x01) AM_MIRROR(0x7C) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w) // 8251 Status/Control
+ //AM_RANGE(0x02, 0x02) AM_MIRROR(0x7D) // other io ports
+ // 0x80-0xff are reserved for expansion (i.e. unused, open bus)
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ADDRESS_MAP_END
+
+/* Input ports */
+static INPUT_PORTS_START( la120 )
+ PORT_START("COL0")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num .") PORT_CODE(KEYCODE_DEL_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PF4") PORT_CODE(KEYCODE_F4)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Local LF") PORT_CODE(KEYCODE_F12)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Break") PORT_CODE(KEYCODE_F6)
+ PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
+ PORT_START("COL1")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PF3") PORT_CODE(KEYCODE_F3)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Local FF") PORT_CODE(KEYCODE_F11)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("\\ |") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Delete") PORT_CODE(KEYCODE_DEL) PORT_CHAR(127)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
+ PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) // this is actually the cover open interlock sensor
+ PORT_START("COL2")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PF2") PORT_CODE(KEYCODE_F2)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("HERE IS") PORT_CODE(KEYCODE_F10)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("(alternate) Opt LF") PORT_CODE(KEYCODE_RALT)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("` ~") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR('~')
+ PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) // this is actually the paper out interlock sensor
+ PORT_START("COL3")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PF1") PORT_CODE(KEYCODE_F1)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LF") PORT_CODE(KEYCODE_LALT) PORT_CHAR(10)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LINE LOCAL") PORT_CODE(KEYCODE_F9)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("] }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("= +") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+')
+ PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
+ PORT_START("COL4")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num -") PORT_CODE(KEYCODE_MINUS_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num ,") PORT_CODE(KEYCODE_PLUS_PAD)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("' \"") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("- _") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_')
+ PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_TOGGLE PORT_NAME("Caps lock") PORT_CODE(KEYCODE_CAPSLOCK) // TODO: does the physical switch toggle?
+ PORT_START("COL5")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 0") PORT_CODE(KEYCODE_0_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("; :") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0 )") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')')
+ PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
+ PORT_START("COL6")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 9") PORT_CODE(KEYCODE_9_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9 (") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(')
+ PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
+ PORT_START("COL7")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 8") PORT_CODE(KEYCODE_8_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8 *") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*')
+ PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Set Up") PORT_CODE(KEYCODE_F5)
+ PORT_START("COL8")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 7") PORT_CODE(KEYCODE_7_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7 &") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_START("COL9")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 6") PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6 ^") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('^')
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_START("COLA")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 5") PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("5 %") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_START("COLB")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 4") PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4 $") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_START("COLC")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 3") PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3 #") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_START("COLD")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 2") PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("2 @") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@')
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_START("COLE")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num 1") PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_START("COLF")
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Num Enter") PORT_CODE(KEYCODE_ENTER_PAD)
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED) // this is actually the RO flag
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("View") PORT_CODE(KEYCODE_LWIN)
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9)
+ PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27)
+ PORT_BIT(0xe0, IP_ACTIVE_HIGH, IPT_UNUSED)
+INPUT_PORTS_END
+
+void decwriter_state::machine_start()
+{
+ m_speaker->set_frequency(786); // TODO: LA120 speaker is controlled by asic; VT100 has: 7.945us per serial clock = ~125865.324hz, / 160 clocks per char = ~ 786 hz
+#if 0
+ output_set_value("online_led",1);
+ output_set_value("local_led", 0);
+ output_set_value("noscroll_led",1);
+ output_set_value("basic_led", 1);
+ output_set_value("hardcopy_led", 1);
+ output_set_value("l1_led", 1);
+ output_set_value("l2_led", 1);
+#endif
+ char kbdcol[8];
+ // look up all 16 tags 'the slow way' but only once on reset
+ for (int i = 0; i < 16; i++)
+ {
+ sprintf(kbdcol,"COL%X", i);
+ m_col_array[i] = ioport(kbdcol);
+ }
+ m_led_array = 0;
+ m_led_7seg_counter = 0;
+ m_led_7seg[0] = m_led_7seg[1] = m_led_7seg[2] = m_led_7seg[3] = 0xF;
+}
+
+/*
+void decwriter_state::machine_reset()
+{
+}
+*/
+
+//**************************************************************************
+// MACHINE DRIVERS
+//**************************************************************************
+
+static MACHINE_CONFIG_START( la120, decwriter_state )
+
+ MCFG_CPU_ADD("maincpu",I8080, XTAL_18MHz / 9) // 18Mhz xtal on schematics, using an i8224 clock divider/reset sanitizer IC
+ MCFG_CPU_PROGRAM_MAP(la120_mem)
+ MCFG_CPU_IO_MAP(la120_io)
+
+ /* video hardware */
+ //TODO: no actual screen! has 8 leds above the keyboard (similar to vt100/vk100) and has 4 7segment leds for showing an error code.
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(decwriter_state, screen_update)
+ MCFG_SCREEN_SIZE(640,480)
+ MCFG_SCREEN_VISIBLE_AREA(0,639, 0,479)
+ MCFG_SCREEN_REFRESH_RATE(30)
+
+ //MCFG_DEFAULT_LAYOUT( layout_la120 )
+
+ /* audio hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("beeper", BEEP, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ /* i8251 */
+ MCFG_DEVICE_ADD("i8251", I8251, 0)
+ /*
+ MCFG_I8251_TXD_HANDLER(DEVWRITELINE(RS232_TAG, rs232_port_device, write_txd))
+ MCFG_I8251_DTR_HANDLER(DEVWRITELINE(RS232_TAG, rs232_port_device, write_dtr))
+ MCFG_I8251_RTS_HANDLER(DEVWRITELINE(RS232_TAG, rs232_port_device, write_rts))
+
+ MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
+ MCFG_RS232_RXD_HANDLER(DEVWRITELINE("i8251", i8251_device, write_rxd))
+ MCFG_RS232_DSR_HANDLER(DEVWRITELINE("i8251", i8251_device, write_dsr))
+
+ MCFG_DEVICE_ADD(COM5016T_TAG, COM8116, XTAL_5_0688MHz)
+ MCFG_COM8116_FR_HANDLER(DEVWRITELINE("i8251", i8251_device, write_rxc))
+ MCFG_COM8116_FT_HANDLER(DEVWRITELINE("i8251", i8251_device, write_txc))
+ */
+MACHINE_CONFIG_END
+
+
+
+//**************************************************************************
+// ROM DEFINITIONS
+//**************************************************************************
+
+ROM_START( la120 )
+ ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
+ // later romset, with 23-003e2.e6, 23-004e2.e8, 23-005e2.e12, 23-006e2.e17 replaced by one rom, 23-038e4.e6 which may be a concatenation of the old roms, unclear.
+ ROM_LOAD( "23-038e4-00.e6", 0x0000, 0x2000, CRC(cad4eb09) SHA1(d5db117da363d36817476F906251ea4ee1cb14b8))
+ ROM_LOAD( "23-007e2-00.e4", 0x2000, 0x0800, CRC(41eaebf1) SHA1(c7d05417b24b853280d1636776d399a0aea34720)) // used by both earlier and later romset
+ // there is an optional 3 roms, european and APL (and BOTH) rom which goes from 2000-2fff in e4, all undumped.
+ // there is another romset used on the Bell Teleprinter 1000 (Model LAS12) which I believe is 23-004e4.e6 and 23-086e2.e4
+ROM_END
+
+
+//**************************************************************************
+// DRIVERS
+//**************************************************************************
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP( 1978, la120, 0, 0, la120, la120, driver_device, 0, "Digital Equipment Corporation", "DECwriter III (LA120)", MACHINE_NO_SOUND | MACHINE_IS_SKELETON | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/deniam.c b/src/mame/drivers/deniam.c
index 0a7956d6b1b..d39a9227077 100644
--- a/src/mame/drivers/deniam.c
+++ b/src/mame/drivers/deniam.c
@@ -415,7 +415,7 @@ ROM_END
-GAME( 1996, logicpro, 0, deniam16b, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Logic Pro (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1996, croquis, logicpro, deniam16b, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Croquis (Germany)", GAME_SUPPORTS_SAVE )
-GAME( 1996, karianx, 0, deniam16b, karianx, deniam_state, karianx, ROT0, "Deniam", "Karian Cross (Rev. 1.0)", GAME_SUPPORTS_SAVE )
-GAME( 1997, logicpr2, 0, deniam16c, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Logic Pro 2 (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1996, logicpro, 0, deniam16b, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Logic Pro (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1996, croquis, logicpro, deniam16b, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Croquis (Germany)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, karianx, 0, deniam16b, karianx, deniam_state, karianx, ROT0, "Deniam", "Karian Cross (Rev. 1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, logicpr2, 0, deniam16c, logicpr2, deniam_state, logicpro, ROT0, "Deniam", "Logic Pro 2 (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/deshoros.c b/src/mame/drivers/deshoros.c
index ffd773a199e..59fd301d032 100644
--- a/src/mame/drivers/deshoros.c
+++ b/src/mame/drivers/deshoros.c
@@ -313,4 +313,4 @@ ROM_START( destiny )
ROM_LOAD( "ag11.18a", 0x16000, 0x2000, CRC(5f7bf9f9) SHA1(281f89c0bccfcc2bdc1d4d0a5b9cc9a8ab2e7869) )
ROM_END
-GAME( 1983, destiny, 0, destiny, destiny, driver_device, 0, ROT0, "Data East Corporation", "Destiny - The Fortuneteller (USA)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
+GAME( 1983, destiny, 0, destiny, destiny, driver_device, 0, ROT0, "Data East Corporation", "Destiny - The Fortuneteller (USA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/destroyr.c b/src/mame/drivers/destroyr.c
index 4461a9ca70b..9501892bbc1 100644
--- a/src/mame/drivers/destroyr.c
+++ b/src/mame/drivers/destroyr.c
@@ -29,13 +29,19 @@ public:
destroyr_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
- m_alpha_num_ram(*this, "alpha_nuram"),
- m_major_obj_ram(*this, "major_obj_ram"),
- m_minor_obj_ram(*this, "minor_obj_ram"),
m_maincpu(*this, "maincpu"),
m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
- m_palette(*this, "palette") { }
+ m_palette(*this, "palette"),
+ m_alpha_num_ram(*this, "alpha_nuram"),
+ m_major_obj_ram(*this, "major_obj_ram"),
+ m_minor_obj_ram(*this, "minor_obj_ram") { }
+
+ /* devices */
+ required_device<cpu_device> m_maincpu;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
/* memory pointers */
required_shared_ptr<UINT8> m_alpha_num_ram;
@@ -52,32 +58,31 @@ public:
int m_attract;
int m_motor_speed;
int m_noise;
+ emu_timer *m_dial_timer;
+ emu_timer *m_frame_timer;
- /* devices */
- required_device<cpu_device> m_maincpu;
- required_device<gfxdecode_device> m_gfxdecode;
- required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
+ DECLARE_WRITE8_MEMBER(misc_w);
+ DECLARE_WRITE8_MEMBER(cursor_load_w);
+ DECLARE_WRITE8_MEMBER(interrupt_ack_w);
+ DECLARE_WRITE8_MEMBER(output_w);
+ DECLARE_READ8_MEMBER(input_r);
+ DECLARE_READ8_MEMBER(scanline_r);
- DECLARE_WRITE8_MEMBER(destroyr_misc_w);
- DECLARE_WRITE8_MEMBER(destroyr_cursor_load_w);
- DECLARE_WRITE8_MEMBER(destroyr_interrupt_ack_w);
- DECLARE_WRITE8_MEMBER(destroyr_output_w);
- DECLARE_READ8_MEMBER(destroyr_input_r);
- DECLARE_READ8_MEMBER(destroyr_scanline_r);
virtual void machine_start();
virtual void machine_reset();
DECLARE_PALETTE_INIT(destroyr);
- UINT32 screen_update_destroyr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_CALLBACK_MEMBER(destroyr_dial_callback);
- TIMER_CALLBACK_MEMBER(destroyr_frame_callback);
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ TIMER_CALLBACK_MEMBER(dial_callback);
+ TIMER_CALLBACK_MEMBER(frame_callback);
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
};
-UINT32 destroyr_state::screen_update_destroyr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+UINT32 destroyr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
int i, j;
@@ -149,10 +154,10 @@ void destroyr_state::device_timer(emu_timer &timer, device_timer_id id, int para
switch (id)
{
case TIMER_DESTROYR_DIAL:
- destroyr_dial_callback(ptr, param);
+ dial_callback(ptr, param);
break;
case TIMER_DESTROYR_FRAME:
- destroyr_frame_callback(ptr, param);
+ frame_callback(ptr, param);
break;
default:
assert_always(FALSE, "Unknown id in destroyr_state::device_timer");
@@ -160,7 +165,7 @@ void destroyr_state::device_timer(emu_timer &timer, device_timer_id id, int para
}
-TIMER_CALLBACK_MEMBER(destroyr_state::destroyr_dial_callback)
+TIMER_CALLBACK_MEMBER(destroyr_state::dial_callback)
{
int dial = param;
@@ -180,14 +185,14 @@ TIMER_CALLBACK_MEMBER(destroyr_state::destroyr_dial_callback)
}
-TIMER_CALLBACK_MEMBER(destroyr_state::destroyr_frame_callback)
+TIMER_CALLBACK_MEMBER(destroyr_state::frame_callback)
{
m_potsense[0] = 0;
m_potsense[1] = 0;
/* PCB supports two dials, but cab has only got one */
- timer_set(m_screen->time_until_pos(ioport("PADDLE")->read()), TIMER_DESTROYR_DIAL);
- timer_set(m_screen->time_until_pos(0), TIMER_DESTROYR_FRAME);
+ m_dial_timer->adjust(m_screen->time_until_pos(ioport("PADDLE")->read()));
+ m_frame_timer->adjust(m_screen->time_until_pos(0));
}
@@ -207,7 +212,7 @@ void destroyr_state::machine_reset()
}
-WRITE8_MEMBER(destroyr_state::destroyr_misc_w)
+WRITE8_MEMBER(destroyr_state::misc_w)
{
/* bits 0 to 2 connect to the sound circuits */
m_attract = data & 0x01;
@@ -222,22 +227,22 @@ WRITE8_MEMBER(destroyr_state::destroyr_misc_w)
}
-WRITE8_MEMBER(destroyr_state::destroyr_cursor_load_w)
+WRITE8_MEMBER(destroyr_state::cursor_load_w)
{
m_cursor = data;
watchdog_reset_w(space, offset, data);
}
-WRITE8_MEMBER(destroyr_state::destroyr_interrupt_ack_w)
+WRITE8_MEMBER(destroyr_state::interrupt_ack_w)
{
m_maincpu->set_input_line(0, CLEAR_LINE);
}
-WRITE8_MEMBER(destroyr_state::destroyr_output_w)
+WRITE8_MEMBER(destroyr_state::output_w)
{
- if (offset & 8) destroyr_misc_w(space, 8, data);
+ if (offset & 8) misc_w(space, 8, data);
else switch (offset & 7)
{
@@ -269,7 +274,7 @@ WRITE8_MEMBER(destroyr_state::destroyr_output_w)
}
-READ8_MEMBER(destroyr_state::destroyr_input_r)
+READ8_MEMBER(destroyr_state::input_r)
{
if (offset & 1)
{
@@ -290,7 +295,7 @@ READ8_MEMBER(destroyr_state::destroyr_input_r)
}
-READ8_MEMBER(destroyr_state::destroyr_scanline_r)
+READ8_MEMBER(destroyr_state::scanline_r)
{
return m_screen->vpos();
}
@@ -299,14 +304,14 @@ READ8_MEMBER(destroyr_state::destroyr_scanline_r)
static ADDRESS_MAP_START( destroyr_map, AS_PROGRAM, 8, destroyr_state )
ADDRESS_MAP_GLOBAL_MASK(0x7fff)
AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0xf00) AM_RAM
- AM_RANGE(0x1000, 0x1fff) AM_READWRITE(destroyr_input_r, destroyr_output_w)
+ AM_RANGE(0x1000, 0x1fff) AM_READWRITE(input_r, output_w)
AM_RANGE(0x2000, 0x2fff) AM_READ_PORT("IN2")
AM_RANGE(0x3000, 0x30ff) AM_MIRROR(0xf00) AM_WRITEONLY AM_SHARE("alpha_nuram")
AM_RANGE(0x4000, 0x401f) AM_MIRROR(0xfe0) AM_WRITEONLY AM_SHARE("major_obj_ram")
- AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xff8) AM_WRITE(destroyr_cursor_load_w)
- AM_RANGE(0x5001, 0x5001) AM_MIRROR(0xff8) AM_WRITE(destroyr_interrupt_ack_w)
+ AM_RANGE(0x5000, 0x5000) AM_MIRROR(0xff8) AM_WRITE(cursor_load_w)
+ AM_RANGE(0x5001, 0x5001) AM_MIRROR(0xff8) AM_WRITE(interrupt_ack_w)
AM_RANGE(0x5002, 0x5007) AM_MIRROR(0xff8) AM_WRITEONLY AM_SHARE("minor_obj_ram")
- AM_RANGE(0x6000, 0x6fff) AM_READ(destroyr_scanline_r)
+ AM_RANGE(0x6000, 0x6fff) AM_READ(scanline_r)
AM_RANGE(0x7000, 0x7fff) AM_ROM
ADDRESS_MAP_END
@@ -469,6 +474,9 @@ PALETTE_INIT_MEMBER(destroyr_state, destroyr)
void destroyr_state::machine_start()
{
+ m_dial_timer = timer_alloc(TIMER_DESTROYR_DIAL);
+ m_frame_timer = timer_alloc(TIMER_DESTROYR_FRAME);
+
save_item(NAME(m_cursor));
save_item(NAME(m_wavemod));
save_item(NAME(m_attract));
@@ -491,7 +499,7 @@ static MACHINE_CONFIG_START( destroyr, destroyr_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_SIZE(256, 262)
MCFG_SCREEN_VISIBLE_AREA(0, 255, 0, 239)
- MCFG_SCREEN_UPDATE_DRIVER(destroyr_state, screen_update_destroyr)
+ MCFG_SCREEN_UPDATE_DRIVER(destroyr_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", destroyr)
@@ -552,5 +560,5 @@ ROM_START( destroyr1 )
ROM_END
-GAMEL( 1977, destroyr, 0, destroyr, destroyr, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O2)", GAME_NO_SOUND, layout_destroyr )
-GAMEL( 1977, destroyr1, destroyr, destroyr, destroyr, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O1)", GAME_NO_SOUND, layout_destroyr )
+GAMEL( 1977, destroyr, 0, destroyr, destroyr, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_destroyr )
+GAMEL( 1977, destroyr1, destroyr, destroyr, destroyr, driver_device, 0, ORIENTATION_FLIP_X, "Atari", "Destroyer (version O1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE, layout_destroyr )
diff --git a/src/mame/drivers/dfruit.c b/src/mame/drivers/dfruit.c
index dec2bedc67b..59e24a8d4f0 100644
--- a/src/mame/drivers/dfruit.c
+++ b/src/mame/drivers/dfruit.c
@@ -416,4 +416,4 @@ ROM_START( dfruit )
ROM_LOAD( "c2.ic10", 0x00000, 0x80000, CRC(d869ab24) SHA1(382e874a846855a7f6f8811625aaa30d9dfa1ce2) )
ROM_END
-GAME( 1993, dfruit, 0, dfruit, dfruit, driver_device, 0, ROT0, "Nippon Data Kiki / Star Fish", "Fruit Dream (Japan)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1993, dfruit, 0, dfruit, dfruit, driver_device, 0, ROT0, "Nippon Data Kiki / Star Fish", "Fruit Dream (Japan)", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mess/drivers/dgn_beta.c b/src/mame/drivers/dgn_beta.c
index 3566313dade..a06be61dd1e 100644
--- a/src/mess/drivers/dgn_beta.c
+++ b/src/mame/drivers/dgn_beta.c
@@ -410,4 +410,4 @@ ROM_START(dgnbeta)
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1984, dgnbeta, 0, 0, dgnbeta, dgnbeta, driver_device, 0, "Dragon Data Ltd", "Dragon Beta Prototype", GAME_NO_SOUND )
+COMP( 1984, dgnbeta, 0, 0, dgnbeta, dgnbeta, driver_device, 0, "Dragon Data Ltd", "Dragon Beta Prototype", MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/dgpix.c b/src/mame/drivers/dgpix.c
index bec94396975..306e9b19399 100644
--- a/src/mame/drivers/dgpix.c
+++ b/src/mame/drivers/dgpix.c
@@ -686,9 +686,9 @@ DRIVER_INIT_MEMBER(dgpix_state,fmaniac3)
m_flash_roms = 2;
}
-GAME( 1999, elfin, 0, dgpix, dgpix, dgpix_state, elfin, ROT0, "dgPIX Entertainment Inc.", "Elfin", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1999, jumpjump, 0, dgpix, dgpix, dgpix_state, jumpjump, ROT0, "dgPIX Entertainment Inc.", "Jump Jump", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1999, xfiles, 0, dgpix, dgpix, dgpix_state, xfiles, ROT0, "dgPIX Entertainment Inc.", "The X-Files", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1999, xfilesk, xfiles, dgpix, dgpix, dgpix_state, xfilesk, ROT0, "dgPIX Entertainment Inc.", "The X-Files (Censored, Korea)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1999, kdynastg, 0, dgpix, dgpix, dgpix_state, kdynastg, ROT0, "EZ Graphics", "King of Dynast Gear (version 1.8)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2002, fmaniac3, 0, dgpix, dgpix, dgpix_state, fmaniac3, ROT0, "Saero Entertainment", "Fishing Maniac 3", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1999, elfin, 0, dgpix, dgpix, dgpix_state, elfin, ROT0, "dgPIX Entertainment Inc.", "Elfin", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, jumpjump, 0, dgpix, dgpix, dgpix_state, jumpjump, ROT0, "dgPIX Entertainment Inc.", "Jump Jump", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, xfiles, 0, dgpix, dgpix, dgpix_state, xfiles, ROT0, "dgPIX Entertainment Inc.", "The X-Files", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, xfilesk, xfiles, dgpix, dgpix, dgpix_state, xfilesk, ROT0, "dgPIX Entertainment Inc.", "The X-Files (Censored, Korea)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, kdynastg, 0, dgpix, dgpix, dgpix_state, kdynastg, ROT0, "EZ Graphics", "King of Dynast Gear (version 1.8)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, fmaniac3, 0, dgpix, dgpix, dgpix_state, fmaniac3, ROT0, "Saero Entertainment", "Fishing Maniac 3", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dietgo.c b/src/mame/drivers/dietgo.c
index c26414b78a8..e2c8df4e31b 100644
--- a/src/mame/drivers/dietgo.c
+++ b/src/mame/drivers/dietgo.c
@@ -373,7 +373,7 @@ DRIVER_INIT_MEMBER(dietgo_state,dietgo)
deco102_decrypt_cpu((UINT16 *)memregion("maincpu")->base(), m_decrypted_opcodes, 0x80000, 0xe9ba, 0x01, 0x19);
}
-GAME( 1992, dietgo, 0, dietgo, dietgo, dietgo_state, dietgo, ROT0, "Data East Corporation", "Diet Go Go (Euro v1.1 1992.09.26)", GAME_SUPPORTS_SAVE )
-GAME( 1992, dietgoe, dietgo, dietgo, dietgo, dietgo_state, dietgo, ROT0, "Data East Corporation", "Diet Go Go (Euro v1.1 1992.08.04)" , GAME_SUPPORTS_SAVE )
-GAME( 1992, dietgou, dietgo, dietgo, dietgo, dietgo_state, dietgo, ROT0, "Data East Corporation", "Diet Go Go (USA v1.1 1992.09.26)", GAME_SUPPORTS_SAVE )
-GAME( 1992, dietgoj, dietgo, dietgo, dietgo, dietgo_state, dietgo, ROT0, "Data East Corporation", "Diet Go Go (Japan v1.1 1992.09.26)", GAME_SUPPORTS_SAVE )
+GAME( 1992, dietgo, 0, dietgo, dietgo, dietgo_state, dietgo, ROT0, "Data East Corporation", "Diet Go Go (Euro v1.1 1992.09.26)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, dietgoe, dietgo, dietgo, dietgo, dietgo_state, dietgo, ROT0, "Data East Corporation", "Diet Go Go (Euro v1.1 1992.08.04)" , MACHINE_SUPPORTS_SAVE )
+GAME( 1992, dietgou, dietgo, dietgo, dietgo, dietgo_state, dietgo, ROT0, "Data East Corporation", "Diet Go Go (USA v1.1 1992.09.26)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, dietgoj, dietgo, dietgo, dietgo, dietgo_state, dietgo, ROT0, "Data East Corporation", "Diet Go Go (Japan v1.1 1992.09.26)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/digel804.c b/src/mame/drivers/digel804.c
index c1024112dc5..f8e9ecf13a2 100644
--- a/src/mess/drivers/digel804.c
+++ b/src/mame/drivers/digel804.c
@@ -722,5 +722,5 @@ ROM_END
******************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1985, digel804, 0, 0, digel804, digel804, digel804_state, digel804, "Digelec, Inc", "Digelec 804 EPROM Programmer", GAME_NOT_WORKING )
-COMP( 1982, ep804, digel804, 0, ep804, digel804, digel804_state, digel804, "Wavetek/Digelec, Inc", "EP804 EPROM Programmer", GAME_NOT_WORKING )
+COMP( 1985, digel804, 0, 0, digel804, digel804, digel804_state, digel804, "Digelec, Inc", "Digelec 804 EPROM Programmer", MACHINE_NOT_WORKING )
+COMP( 1982, ep804, digel804, 0, ep804, digel804, digel804_state, digel804, "Wavetek/Digelec, Inc", "EP804 EPROM Programmer", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/dim68k.c b/src/mame/drivers/dim68k.c
index eb7c5a68ccc..7dce08a1a89 100644
--- a/src/mess/drivers/dim68k.c
+++ b/src/mame/drivers/dim68k.c
@@ -395,4 +395,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1984, dim68k, 0, 0, dim68k, dim68k, driver_device, 0, "Micro Craft", "Dimension 68000", GAME_NOT_WORKING)
+COMP( 1984, dim68k, 0, 0, dim68k, dim68k, driver_device, 0, "Micro Craft", "Dimension 68000", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/discoboy.c b/src/mame/drivers/discoboy.c
index f9a04d09be6..67fa7edcc41 100644
--- a/src/mame/drivers/discoboy.c
+++ b/src/mame/drivers/discoboy.c
@@ -604,5 +604,5 @@ DRIVER_INIT_MEMBER(discoboy_state,discoboy)
}
-GAME( 1993, discoboy, 0, discoboy, discoboy, discoboy_state, discoboy, ROT270, "Soft Art Co.", "Disco Boy", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1993, discoboyp, discoboy, discoboy, discoboy, discoboy_state, discoboy, ROT270, "Soft Art Co.", "Disco Boy (Promat license?)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1993, discoboy, 0, discoboy, discoboy, discoboy_state, discoboy, ROT270, "Soft Art Co.", "Disco Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, discoboyp, discoboy, discoboy, discoboy, discoboy_state, discoboy, ROT270, "Soft Art Co.", "Disco Boy (Promat license?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/diverboy.c b/src/mame/drivers/diverboy.c
index c4272cf8321..c9d698cd6da 100644
--- a/src/mame/drivers/diverboy.c
+++ b/src/mame/drivers/diverboy.c
@@ -70,7 +70,6 @@ public:
/* memory pointers */
required_shared_ptr<UINT16> m_spriteram;
-// UINT16 * m_paletteram; // currently this uses generic palette handling
/* devices */
required_device<cpu_device> m_audiocpu;
@@ -333,4 +332,4 @@ ROM_END
-GAME( 1992, diverboy, 0, diverboy, diverboy, driver_device, 0, ORIENTATION_FLIP_X, "Gamart (Electronic Devices Italy license)", "Diver Boy", GAME_SUPPORTS_SAVE )
+GAME( 1992, diverboy, 0, diverboy, diverboy, driver_device, 0, ORIENTATION_FLIP_X, "Gamart (Electronic Devices Italy license)", "Diver Boy", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/djboy.c b/src/mame/drivers/djboy.c
index 3d03f1727af..0b0fdfb7045 100644
--- a/src/mame/drivers/djboy.c
+++ b/src/mame/drivers/djboy.c
@@ -716,6 +716,6 @@ DRIVER_INIT_MEMBER(djboy_state,djboyj)
}
/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MNTR, COMPANY, FULLNAME, FLAGS */
-GAME( 1989, djboy, 0, djboy, djboy, djboy_state, djboy, ROT0, "Kaneko (American Sammy license)", "DJ Boy (set 1)", GAME_SUPPORTS_SAVE) // Sammy & Williams logos in FG ROM
-GAME( 1989, djboya, djboy, djboy, djboy, djboy_state, djboy, ROT0, "Kaneko (American Sammy license)", "DJ Boy (set 2)", GAME_SUPPORTS_SAVE) // Sammy & Williams logos in FG ROM
-GAME( 1989, djboyj, djboy, djboy, djboy, djboy_state, djboyj, ROT0, "Kaneko (Sega license)", "DJ Boy (Japan)", GAME_SUPPORTS_SAVE ) // Sega logo in FG ROM
+GAME( 1989, djboy, 0, djboy, djboy, djboy_state, djboy, ROT0, "Kaneko (American Sammy license)", "DJ Boy (set 1)", MACHINE_SUPPORTS_SAVE) // Sammy & Williams logos in FG ROM
+GAME( 1989, djboya, djboy, djboy, djboy, djboy_state, djboy, ROT0, "Kaneko (American Sammy license)", "DJ Boy (set 2)", MACHINE_SUPPORTS_SAVE) // Sammy & Williams logos in FG ROM
+GAME( 1989, djboyj, djboy, djboy, djboy, djboy_state, djboyj, ROT0, "Kaneko (Sega license)", "DJ Boy (Japan)", MACHINE_SUPPORTS_SAVE ) // Sega logo in FG ROM
diff --git a/src/mame/drivers/djmain.c b/src/mame/drivers/djmain.c
index 2bbdf3750a2..600fa4a4011 100644
--- a/src/mame/drivers/djmain.c
+++ b/src/mame/drivers/djmain.c
@@ -86,23 +86,6 @@ hard drive 3.5 adapter long 3.5 IDE cable 3.5 adapter PCB
*
*************************************/
-WRITE32_MEMBER(djmain_state::paletteram32_w)
-{
- int r,g,b;
-
- COMBINE_DATA(&m_generic_paletteram_32[offset]);
- data = m_generic_paletteram_32[offset];
-
- r = (data >> 0) & 0xff;
- g = (data >> 8) & 0xff;
- b = (data >> 16) & 0xff;
-
- m_palette->set_pen_color(offset, rgb_t(r, g, b));
-}
-
-
-//---------
-
void djmain_state::sndram_set_bank()
{
m_sndram = memregion("shared")->base() + 0x80000 * m_sndram_bank;
@@ -396,8 +379,7 @@ WRITE_LINE_MEMBER( djmain_state::ide_interrupt )
static ADDRESS_MAP_START( maincpu_djmain, AS_PROGRAM, 32, djmain_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM // PRG ROM
AM_RANGE(0x400000, 0x40ffff) AM_RAM // WORK RAM
- AM_RANGE(0x480000, 0x48443f) AM_RAM_WRITE(paletteram32_w) // COLOR RAM
- AM_SHARE("paletteram")
+ AM_RANGE(0x480000, 0x48443f) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") // COLOR RAM
AM_RANGE(0x500000, 0x57ffff) AM_READWRITE(sndram_r, sndram_w) // SOUND RAM
AM_RANGE(0x580000, 0x58003f) AM_DEVREADWRITE("k056832", k056832_device, long_r, long_w) // VIDEO REG (tilemap)
AM_RANGE(0x590000, 0x590007) AM_WRITE(unknown590000_w) // ??
@@ -1416,6 +1398,7 @@ static MACHINE_CONFIG_START( djmainj, djmain_state )
MCFG_SCREEN_UPDATE_DRIVER(djmain_state, screen_update_djmain)
MCFG_PALETTE_ADD("palette", 0x4440/4)
+ MCFG_PALETTE_FORMAT(XBGR)
MCFG_GFXDECODE_ADD("gfxdecode", "palette", djmain)
MCFG_DEVICE_ADD("k056832", K056832, 0)
diff --git a/src/mame/drivers/dkong.c b/src/mame/drivers/dkong.c
index e2a336bc119..655acbbc3c4 100644
--- a/src/mame/drivers/dkong.c
+++ b/src/mame/drivers/dkong.c
@@ -79,7 +79,7 @@ Done:
- moved address remapping proms to "user1" (hunchbkd & co)
- Service now adds credit
- Hooked up coin_counters
- - remove GAME_NOT_WORKING GAME_WRONG_COLORS from hunchbkd
+ - remove MACHINE_NOT_WORKING MACHINE_WRONG_COLORS from hunchbkd
- fixed shootgal0121u4red
- dkongjr: mapped more interface lines between sound board and cpu board
- tagged all inputs, all reads use tag names
@@ -3282,48 +3282,48 @@ DRIVER_INIT_MEMBER(dkong_state,dkingjr)
*
*************************************/
-GAME( 1980, radarscp, 0, radarscp, radarscp, driver_device, 0, ROT90, "Nintendo", "Radar Scope", GAME_SUPPORTS_SAVE )
-GAME( 1980, radarscp1, radarscp, radarscp1, radarscp, driver_device, 0, ROT90, "Nintendo", "Radar Scope (TRS01)", GAME_SUPPORTS_SAVE )
+GAME( 1980, radarscp, 0, radarscp, radarscp, driver_device, 0, ROT90, "Nintendo", "Radar Scope", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, radarscp1, radarscp, radarscp1, radarscp, driver_device, 0, ROT90, "Nintendo", "Radar Scope (TRS01)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, dkong, 0, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong (US set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, dkonghrd, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong (hard kit)", GAME_SUPPORTS_SAVE ) // not sure if original or bootleg (see notes on top of driver file)
-GAME( 1981, dkongo, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (US set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1981, dkongj, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, dkongjo, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1981, dkongjo1, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 3)", GAME_SUPPORTS_SAVE )
+GAME( 1981, dkong, 0, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong (US set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, dkonghrd, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong (hard kit)", MACHINE_SUPPORTS_SAVE ) // not sure if original or bootleg (see notes on top of driver file)
+GAME( 1981, dkongo, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (US set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, dkongj, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, dkongjo, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, dkongjo1, dkong, dkong2b, dkong, driver_device, 0, ROT90, "Nintendo", "Donkey Kong (Japan set 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 2004, dkongf, dkong, dkong2b, dkongf, driver_device, 0, ROT90, "hack (Jeff Kulczycki)", "Donkey Kong Foundry (hack)", GAME_SUPPORTS_SAVE ) /* from Jeff's Romhack */
-GAME( 2006, dkongx, dkong, braze, dkongx, dkong_state, dkongx, ROT90, "hack (Braze Technologies)", "Donkey Kong II: Jumpman Returns (hack, V1.2)", GAME_SUPPORTS_SAVE )
-GAME( 2006, dkongx11, dkong, braze, dkongx, dkong_state, dkongx, ROT90, "hack (Braze Technologies)", "Donkey Kong II: Jumpman Returns (hack, V1.1)", GAME_SUPPORTS_SAVE )
+GAME( 2004, dkongf, dkong, dkong2b, dkongf, driver_device, 0, ROT90, "hack (Jeff Kulczycki)", "Donkey Kong Foundry (hack)", MACHINE_SUPPORTS_SAVE ) /* from Jeff's Romhack */
+GAME( 2006, dkongx, dkong, braze, dkongx, dkong_state, dkongx, ROT90, "hack (Braze Technologies)", "Donkey Kong II: Jumpman Returns (hack, V1.2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2006, dkongx11, dkong, braze, dkongx, dkong_state, dkongx, ROT90, "hack (Braze Technologies)", "Donkey Kong II: Jumpman Returns (hack, V1.1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, dkongjr, 0, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong Junior (US set F-2)", GAME_SUPPORTS_SAVE )
-GAME( 1982, dkongjrj, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo", "Donkey Kong Jr. (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1982, dkongjnrj, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo", "Donkey Kong Junior (Japan?)", GAME_SUPPORTS_SAVE )
-GAME( 1982, dkongjrb, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "bootleg", "Donkey Kong Jr. (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1982, dkongjre, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong Junior (E kit)", GAME_SUPPORTS_SAVE )
-GAME( 1982, dkongjrpb, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "bootleg", "Donkey Kong Junior (P kit, bootleg)", GAME_SUPPORTS_SAVE ) // definitely not issued by Nintendo
-GAME( 1982, jrking, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "bootleg", "Junior King (bootleg of Donkey Kong Jr.)", GAME_SUPPORTS_SAVE )
-GAME( 1982, dkingjr, dkongjr, dkongjr, dkongjr, dkong_state, dkingjr, ROT90, "bootleg", "Donkey King Jr. (bootleg of Donkey Kong Jr.)", GAME_SUPPORTS_SAVE )
+GAME( 1982, dkongjr, 0, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong Junior (US set F-2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, dkongjrj, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo", "Donkey Kong Jr. (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, dkongjnrj, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo", "Donkey Kong Junior (Japan?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, dkongjrb, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "bootleg", "Donkey Kong Jr. (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, dkongjre, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong Junior (E kit)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, dkongjrpb, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "bootleg", "Donkey Kong Junior (P kit, bootleg)", MACHINE_SUPPORTS_SAVE ) // definitely not issued by Nintendo
+GAME( 1982, jrking, dkongjr, dkongjr, dkongjr, driver_device, 0, ROT90, "bootleg", "Junior King (bootleg of Donkey Kong Jr.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, dkingjr, dkongjr, dkongjr, dkongjr, dkong_state, dkingjr, ROT90, "bootleg", "Donkey King Jr. (bootleg of Donkey Kong Jr.)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, dkong3, 0, dkong3, dkong3, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong 3 (US)", GAME_SUPPORTS_SAVE )
-GAME( 1983, dkong3j, dkong3, dkong3, dkong3, driver_device, 0, ROT90, "Nintendo", "Donkey Kong 3 (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1984, dkong3b, dkong3, dkong3b, dkong3b, driver_device, 0, ROT90, "bootleg", "Donkey Kong 3 (bootleg on Donkey Kong Jr. hardware)", GAME_SUPPORTS_SAVE )
+GAME( 1983, dkong3, 0, dkong3, dkong3, driver_device, 0, ROT90, "Nintendo of America", "Donkey Kong 3 (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, dkong3j, dkong3, dkong3, dkong3, driver_device, 0, ROT90, "Nintendo", "Donkey Kong 3 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, dkong3b, dkong3, dkong3b, dkong3b, driver_device, 0, ROT90, "bootleg", "Donkey Kong 3 (bootleg on Donkey Kong Jr. hardware)", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, pestplce, mario, pestplce, pestplce, driver_device, 0, ROT180, "bootleg", "Pest Place", GAME_WRONG_COLORS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1983, pestplce, mario, pestplce, pestplce, driver_device, 0, ROT180, "bootleg", "Pest Place", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
/* 2650 based */
-GAME( 1984, herbiedk, huncholy, s2650, herbiedk, driver_device, 0, ROT90, "Century Electronics / Seatongrove Ltd", "Herbie at the Olympics (DK conversion)", GAME_SUPPORTS_SAVE )
-GAME( 1983, hunchbkd, hunchbak, s2650, hunchbkd, driver_device, 0, ROT90, "Century Electronics", "Hunchback (DK conversion)", GAME_SUPPORTS_SAVE )
-GAME( 1984, sbdk, superbik, s2650, sbdk, driver_device, 0, ROT90, "Century Electronics", "Super Bike (DK conversion)", GAME_SUPPORTS_SAVE )
-GAME( 1984, herodk, hero, s2650, herodk, dkong_state, herodk, ROT90, "Seatongrove Ltd (Crown license)", "Hero in the Castle of Doom (DK conversion)", GAME_SUPPORTS_SAVE )
-GAME( 1984, herodku, hero, s2650, herodk, driver_device, 0, ROT90, "Seatongrove Ltd (Crown license)", "Hero in the Castle of Doom (DK conversion not encrypted)", GAME_SUPPORTS_SAVE )
-GAME( 1984, 8ballact, 0, s2650, 8ballact, driver_device, 0, ROT90, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DK conversion)", GAME_SUPPORTS_SAVE )
-GAME( 1984, 8ballact2, 8ballact, s2650, 8ballact, driver_device, 0, ROT90, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DKJr conversion)", GAME_SUPPORTS_SAVE )
-GAME( 1984, shootgal, 0, s2650, shootgal, driver_device, 0, ROT180, "Seatongrove Ltd (Zaccaria license)", "Shooting Gallery", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1985, spclforc, 0, spclforc, spclforc, driver_device, 0, ROT90, "Senko Industries (Magic Electronics Inc. license)", "Special Forces", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1985, spcfrcii, 0, spclforc, spclforc, driver_device, 0, ROT90, "Senko Industries (Magic Electronics Inc. license)", "Special Forces II", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1984, herbiedk, huncholy, s2650, herbiedk, driver_device, 0, ROT90, "Century Electronics / Seatongrove Ltd", "Herbie at the Olympics (DK conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, hunchbkd, hunchbak, s2650, hunchbkd, driver_device, 0, ROT90, "Century Electronics", "Hunchback (DK conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, sbdk, superbik, s2650, sbdk, driver_device, 0, ROT90, "Century Electronics", "Super Bike (DK conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, herodk, hero, s2650, herodk, dkong_state, herodk, ROT90, "Seatongrove Ltd (Crown license)", "Hero in the Castle of Doom (DK conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, herodku, hero, s2650, herodk, driver_device, 0, ROT90, "Seatongrove Ltd (Crown license)", "Hero in the Castle of Doom (DK conversion not encrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, 8ballact, 0, s2650, 8ballact, driver_device, 0, ROT90, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DK conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, 8ballact2, 8ballact, s2650, 8ballact, driver_device, 0, ROT90, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DKJr conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, shootgal, 0, s2650, shootgal, driver_device, 0, ROT180, "Seatongrove Ltd (Zaccaria license)", "Shooting Gallery", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, spclforc, 0, spclforc, spclforc, driver_device, 0, ROT90, "Senko Industries (Magic Electronics Inc. license)", "Special Forces", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, spcfrcii, 0, spclforc, spclforc, driver_device, 0, ROT90, "Senko Industries (Magic Electronics Inc. license)", "Special Forces II", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
/* EPOS */
-GAME( 1984, drakton, 0, drakton, drakton, dkong_state, drakton, ROT90, "Epos Corporation", "Drakton (DK conversion)", GAME_SUPPORTS_SAVE )
-GAME( 1984, drktnjr, drakton, drktnjr, drakton, dkong_state, drakton, ROT90, "Epos Corporation", "Drakton (DKJr conversion)", GAME_SUPPORTS_SAVE )
-GAME( 1985, strtheat, 0, strtheat, strtheat, dkong_state, strtheat, ROT90, "Epos Corporation", "Street Heat", GAME_SUPPORTS_SAVE ) // distributed by Cardinal Amusements Products (a division of Epos Corporation)
+GAME( 1984, drakton, 0, drakton, drakton, dkong_state, drakton, ROT90, "Epos Corporation", "Drakton (DK conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, drktnjr, drakton, drktnjr, drakton, dkong_state, drakton, ROT90, "Epos Corporation", "Drakton (DKJr conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, strtheat, 0, strtheat, strtheat, dkong_state, strtheat, ROT90, "Epos Corporation", "Street Heat", MACHINE_SUPPORTS_SAVE ) // distributed by Cardinal Amusements Products (a division of Epos Corporation)
diff --git a/src/mame/drivers/dlair.c b/src/mame/drivers/dlair.c
index 8abbd89d224..52b99625f6f 100644
--- a/src/mame/drivers/dlair.c
+++ b/src/mame/drivers/dlair.c
@@ -973,21 +973,21 @@ DRIVER_INIT_MEMBER(dlair_state,variable)
*
*************************************/
-GAMEL( 1983, dlair, 0, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. F2)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, dlairf, dlair, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. F)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, dlaire, dlair, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. E)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, dlaird, dlair, dlair_ldv1000, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. D, Pioneer LD-V1000)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, dlairc, dlair, dlair_pr7820, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. C, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, dlairb, dlair, dlair_pr7820, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. B, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, dlaira, dlair, dlair_pr7820, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. A, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, dlair_2, dlair, dlair_pr7820, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Beta 2?, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, dlair_1, dlair, dlair_pr7820, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Beta 1, Pioneer PR-7820)", GAME_NOT_WORKING, layout_dlair )
-
-GAMEL( 1983, dleuro, dlair, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Dragon's Lair (European)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, dleuroalt,dlair, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Dragon's Lair (European, alternate)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, dlital, dlair, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Sidam license?)","Dragon's Lair (Italian)", GAME_NOT_WORKING, layout_dlair )
-
-GAMEL( 1983, spaceace, 0, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A3)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, spaceacea2, spaceace, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A2)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, spaceacea, spaceace, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A)", GAME_NOT_WORKING, layout_dlair )
-GAMEL( 1983, spaceaceeuro, spaceace, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Space Ace (European)", GAME_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dlair, 0, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. F2)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dlairf, dlair, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. F)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dlaire, dlair, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Dragon's Lair (US Rev. E)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dlaird, dlair, dlair_ldv1000, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. D, Pioneer LD-V1000)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dlairc, dlair, dlair_pr7820, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. C, Pioneer PR-7820)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dlairb, dlair, dlair_pr7820, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. B, Pioneer PR-7820)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dlaira, dlair, dlair_pr7820, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Rev. A, Pioneer PR-7820)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dlair_2, dlair, dlair_pr7820, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Beta 2?, Pioneer PR-7820)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dlair_1, dlair, dlair_pr7820, dlair, dlair_state, fixed, ROT0, "Cinematronics", "Dragon's Lair (US Beta 1, Pioneer PR-7820)", MACHINE_NOT_WORKING, layout_dlair )
+
+GAMEL( 1983, dleuro, dlair, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Dragon's Lair (European)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dleuroalt,dlair, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Dragon's Lair (European, alternate)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, dlital, dlair, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Sidam license?)","Dragon's Lair (Italian)", MACHINE_NOT_WORKING, layout_dlair )
+
+GAMEL( 1983, spaceace, 0, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A3)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, spaceacea2, spaceace, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A2)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, spaceacea, spaceace, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A)", MACHINE_NOT_WORKING, layout_dlair )
+GAMEL( 1983, spaceaceeuro, spaceace, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Space Ace (European)", MACHINE_NOT_WORKING, layout_dlair )
diff --git a/src/mame/drivers/dlair2.c b/src/mame/drivers/dlair2.c
index bbc23733bfb..7d59cbfbbd8 100644
--- a/src/mame/drivers/dlair2.c
+++ b/src/mame/drivers/dlair2.c
@@ -328,18 +328,18 @@ ROM_START( spacea91_13e )
ROM_END
-GAME( 1991, dlair2, 0, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v3.19)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_319e, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Euro v3.19)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_319s, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Spanish v3.19)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_318, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v3.18)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_317e, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Euro v3.17)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_316e, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Euro v3.16)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_315, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v3.15)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_315s, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Spanish v3.15)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_314, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v3.14)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_312, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Euro v3.12)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_300, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v3.00)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_211, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v2.11)", GAME_IS_SKELETON )
-GAME( 1991, dlair2_200, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v2.00, AMOA prototype)", GAME_IS_SKELETON )
-GAME( 1991, spacea91, 0, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Space Ace (DL2 Conversion) (US v1.3)", GAME_IS_SKELETON )
-GAME( 1991, spacea91_13e, spacea91, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Space Ace (DL2 Conversion) (Euro v1.3)", GAME_IS_SKELETON )
+GAME( 1991, dlair2, 0, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v3.19)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_319e, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Euro v3.19)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_319s, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Spanish v3.19)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_318, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v3.18)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_317e, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Euro v3.17)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_316e, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Euro v3.16)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_315, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v3.15)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_315s, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Spanish v3.15)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_314, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v3.14)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_312, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (Euro v3.12)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_300, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v3.00)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_211, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v2.11)", MACHINE_IS_SKELETON )
+GAME( 1991, dlair2_200, dlair2, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Dragon's Lair 2: Time Warp (US v2.00, AMOA prototype)", MACHINE_IS_SKELETON )
+GAME( 1991, spacea91, 0, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Space Ace (DL2 Conversion) (US v1.3)", MACHINE_IS_SKELETON )
+GAME( 1991, spacea91_13e, spacea91, dlair2, dlair2, driver_device, 0, ROT0, "Leland", "Space Ace (DL2 Conversion) (Euro v1.3)", MACHINE_IS_SKELETON )
diff --git a/src/mess/drivers/dm7000.c b/src/mame/drivers/dm7000.c
index bdef38b5a2c..cb808fb98fa 100644
--- a/src/mess/drivers/dm7000.c
+++ b/src/mame/drivers/dm7000.c
@@ -347,6 +347,6 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-SYST( 2003, dm7000, 0, 0, dm7000, dm7000, driver_device, 0, "Dream Multimedia", "Dreambox 7000", GAME_NOT_WORKING | GAME_NO_SOUND)
-SYST( 2004, dm5620, dm7000, 0, dm7000, dm7000, driver_device, 0, "Dream Multimedia", "Dreambox 5620", GAME_NOT_WORKING | GAME_NO_SOUND)
-SYST( 2006, dm500, dm7000, 0, dm7000, dm7000, driver_device, 0, "Dream Multimedia", "Dreambox 500", GAME_NOT_WORKING | GAME_NO_SOUND)
+SYST( 2003, dm7000, 0, 0, dm7000, dm7000, driver_device, 0, "Dream Multimedia", "Dreambox 7000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+SYST( 2004, dm5620, dm7000, 0, dm7000, dm7000, driver_device, 0, "Dream Multimedia", "Dreambox 5620", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+SYST( 2006, dm500, dm7000, 0, dm7000, dm7000, driver_device, 0, "Dream Multimedia", "Dreambox 500", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/dmndrby.c b/src/mame/drivers/dmndrby.c
index 988e014330b..6d94b431da1 100644
--- a/src/mame/drivers/dmndrby.c
+++ b/src/mame/drivers/dmndrby.c
@@ -650,5 +650,5 @@ ROM_END
/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME */
-GAME( 1994, dmndrby, 0, dderby, dderby, driver_device, 0, ROT0, "Electrocoin", "Diamond Derby (Newer)",GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_COLORS|GAME_NOT_WORKING ) // hack?
-GAME( 1986, dmndrbya, dmndrby, dderby, dderbya, driver_device, 0, ROT0, "Electrocoin", "Diamond Derby (Original)",GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_COLORS|GAME_NOT_WORKING )
+GAME( 1994, dmndrby, 0, dderby, dderby, driver_device, 0, ROT0, "Electrocoin", "Diamond Derby (Newer)",MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_COLORS|MACHINE_NOT_WORKING ) // hack?
+GAME( 1986, dmndrbya, dmndrby, dderby, dderbya, driver_device, 0, ROT0, "Electrocoin", "Diamond Derby (Original)",MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_COLORS|MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/dms5000.c b/src/mame/drivers/dms5000.c
index 458ebdcd583..cb10bffa23d 100644
--- a/src/mess/drivers/dms5000.c
+++ b/src/mame/drivers/dms5000.c
@@ -83,4 +83,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, dms5000, 0, 0, dms5000, dms5000, driver_device, 0, "Digital Microsystems", "DMS-5000", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1982, dms5000, 0, 0, dms5000, dms5000, driver_device, 0, "Digital Microsystems", "DMS-5000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/dms86.c b/src/mame/drivers/dms86.c
index 930181437f5..c1927ec631f 100644
--- a/src/mess/drivers/dms86.c
+++ b/src/mame/drivers/dms86.c
@@ -128,4 +128,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, dms86, 0, 0, dms86, dms86, driver_device, 0, "Digital Microsystems", "DMS-86", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1982, dms86, 0, 0, dms86, dms86, driver_device, 0, "Digital Microsystems", "DMS-86", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/dmv.c b/src/mame/drivers/dmv.c
index 5a2b0294f4a..6db67eb8e9e 100644
--- a/src/mess/drivers/dmv.c
+++ b/src/mame/drivers/dmv.c
@@ -847,4 +847,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1984, dmv, 0, 0, dmv, dmv, driver_device, 0, "NCR", "Decision Mate V", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1984, dmv, 0, 0, dmv, dmv, driver_device, 0, "NCR", "Decision Mate V", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/docastle.c b/src/mame/drivers/docastle.c
index d2f5b452c6f..71ac8c5bf45 100644
--- a/src/mame/drivers/docastle.c
+++ b/src/mame/drivers/docastle.c
@@ -1087,18 +1087,18 @@ ROM_END
/* Game Drivers */
-GAME( 1983, docastle, 0, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do's Castle (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1983, docastle2, docastle, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do's Castle (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1983, docastleo, docastle, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do's Castle (older)", GAME_SUPPORTS_SAVE )
-GAME( 1983, douni, docastle, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do vs. Unicorns", GAME_SUPPORTS_SAVE )
-GAME( 1984, dorunrun, 0, dorunrun, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1984, dorunrun2, dorunrun, dorunrun, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1984, dorunrunc, dorunrun, docastle, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1984, dorunrunca,dorunrun, docastle, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1987, spiero, dorunrun, dorunrun, dorunrun, driver_device, 0, ROT0, "Universal", "Super Pierrot (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1984, dowild, 0, dorunrun, dowild, driver_device, 0, ROT0, "Universal", "Mr. Do's Wild Ride", GAME_SUPPORTS_SAVE )
-GAME( 1984, jjack, 0, dorunrun, jjack, driver_device, 0, ROT270, "Universal", "Jumping Jack", GAME_SUPPORTS_SAVE )
-GAME( 1984, kickridr, 0, dorunrun, kickridr, driver_device, 0, ROT0, "Universal", "Kick Rider", GAME_SUPPORTS_SAVE )
-GAME( 1985, idsoccer, 0, idsoccer, idsoccer, driver_device, 0, ROT0, "Universal", "Indoor Soccer (set 1)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL )
-GAME( 1985, idsoccera, idsoccer, idsoccer, idsoccer, driver_device, 0, ROT0, "Universal", "Indoor Soccer (set 2)", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND )
-GAME( 1987, asoccer, idsoccer, idsoccer, idsoccer, driver_device, 0, ROT0, "Universal", "American Soccer", GAME_SUPPORTS_SAVE | GAME_NO_COCKTAIL | GAME_IMPERFECT_SOUND )
+GAME( 1983, docastle, 0, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do's Castle (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, docastle2, docastle, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do's Castle (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, docastleo, docastle, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do's Castle (older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, douni, docastle, docastle, docastle, driver_device, 0, ROT270, "Universal", "Mr. Do vs. Unicorns", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, dorunrun, 0, dorunrun, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, dorunrun2, dorunrun, dorunrun, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, dorunrunc, dorunrun, docastle, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, dorunrunca,dorunrun, docastle, dorunrun, driver_device, 0, ROT0, "Universal", "Do! Run Run (Do's Castle hardware, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, spiero, dorunrun, dorunrun, dorunrun, driver_device, 0, ROT0, "Universal", "Super Pierrot (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, dowild, 0, dorunrun, dowild, driver_device, 0, ROT0, "Universal", "Mr. Do's Wild Ride", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, jjack, 0, dorunrun, jjack, driver_device, 0, ROT270, "Universal", "Jumping Jack", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, kickridr, 0, dorunrun, kickridr, driver_device, 0, ROT0, "Universal", "Kick Rider", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, idsoccer, 0, idsoccer, idsoccer, driver_device, 0, ROT0, "Universal", "Indoor Soccer (set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL )
+GAME( 1985, idsoccera, idsoccer, idsoccer, idsoccer, driver_device, 0, ROT0, "Universal", "Indoor Soccer (set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
+GAME( 1987, asoccer, idsoccer, idsoccer, idsoccer, driver_device, 0, ROT0, "Universal", "American Soccer", MACHINE_SUPPORTS_SAVE | MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/dogfgt.c b/src/mame/drivers/dogfgt.c
index d12bc508420..2b829e47369 100644
--- a/src/mame/drivers/dogfgt.c
+++ b/src/mame/drivers/dogfgt.c
@@ -377,6 +377,6 @@ ROM_END
-GAME( 1984, dogfgt, 0, dogfgt, dogfgt, driver_device, 0, ROT0, "Technos Japan", "Acrobatic Dog-Fight", GAME_SUPPORTS_SAVE )
-GAME( 1985, dogfgtu, dogfgt, dogfgt, dogfgt, driver_device, 0, ROT0, "Technos Japan (Data East USA, Inc. license)", "Acrobatic Dog-Fight (USA)", GAME_SUPPORTS_SAVE )
-GAME( 1984, dogfgtj, dogfgt, dogfgt, dogfgt, driver_device, 0, ROT0, "Technos Japan", "Dog-Fight (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1984, dogfgt, 0, dogfgt, dogfgt, driver_device, 0, ROT0, "Technos Japan", "Acrobatic Dog-Fight", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, dogfgtu, dogfgt, dogfgt, dogfgt, driver_device, 0, ROT0, "Technos Japan (Data East USA, Inc. license)", "Acrobatic Dog-Fight (USA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, dogfgtj, dogfgt, dogfgt, dogfgt, driver_device, 0, ROT0, "Technos Japan", "Dog-Fight (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/dolphunk.c b/src/mame/drivers/dolphunk.c
index 8ee69d20042..8ee69d20042 100644
--- a/src/mess/drivers/dolphunk.c
+++ b/src/mame/drivers/dolphunk.c
diff --git a/src/mame/drivers/dominob.c b/src/mame/drivers/dominob.c
index 5809591a168..ff0f05a0730 100644
--- a/src/mame/drivers/dominob.c
+++ b/src/mame/drivers/dominob.c
@@ -82,7 +82,6 @@ public:
required_shared_ptr<UINT8> m_videoram;
required_shared_ptr<UINT8> m_spriteram;
required_shared_ptr<UINT8> m_bgram;
-// UINT8 * m_paletteram; // currently this uses generic palette handling
/* input-related */
//UINT8 m_paddle_select;
@@ -360,5 +359,5 @@ ROM_START( dominobv2 )
ROM_LOAD( "u114v2", 0xc0000, 0x40000, CRC(df17ee65) SHA1(1cb434719a8c406726d2c966392be03a2dc1d758) )
ROM_END
-GAME( 1996, dominob, 0, dominob, dominob, driver_device, 0, ROT0, "Wonwoo Systems", "Domino Block", GAME_SUPPORTS_SAVE )
-GAME( 1996, dominobv2,dominob, dominob, dominob, driver_device, 0, ROT0, "Wonwoo Systems", "Domino Block ver.2", GAME_SUPPORTS_SAVE )
+GAME( 1996, dominob, 0, dominob, dominob, driver_device, 0, ROT0, "Wonwoo Systems", "Domino Block", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, dominobv2,dominob, dominob, dominob, driver_device, 0, ROT0, "Wonwoo Systems", "Domino Block ver.2", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dooyong.c b/src/mame/drivers/dooyong.c
index 60363b4321b..59954ee0d0d 100644
--- a/src/mame/drivers/dooyong.c
+++ b/src/mame/drivers/dooyong.c
@@ -2072,34 +2072,34 @@ ROM_END
/* The differences between the two lastday sets are only in the sound program and graphics. The main program is the same. */
-GAME( 1990, lastday, 0, lastday, lastday, driver_device, 0, ROT270, "Dooyong", "The Last Day (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1990, lastdaya, lastday, lastday, lastday, driver_device, 0, ROT270, "Dooyong", "The Last Day (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ddaydoo, lastday, lastday, lastday, driver_device, 0, ROT270, "Dooyong", "Chulgyeok D-Day (Korea)", GAME_SUPPORTS_SAVE )
+GAME( 1990, lastday, 0, lastday, lastday, driver_device, 0, ROT270, "Dooyong", "The Last Day (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, lastdaya, lastday, lastday, lastday, driver_device, 0, ROT270, "Dooyong", "The Last Day (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ddaydoo, lastday, lastday, lastday, driver_device, 0, ROT270, "Dooyong", "Chulgyeok D-Day (Korea)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, gulfstrm, 0, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1991, gulfstrma,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1991, gulfstrmb,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1991, gulfstrmm,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong (Media Shoji license)", "Gulf Storm (Media Shoji)", GAME_SUPPORTS_SAVE )
+GAME( 1991, gulfstrm, 0, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, gulfstrma,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, gulfstrmb,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong", "Gulf Storm (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, gulfstrmm,gulfstrm, gulfstrm, gulfstrm, driver_device, 0, ROT270, "Dooyong (Media Shoji license)", "Gulf Storm (Media Shoji)", MACHINE_SUPPORTS_SAVE )
-GAME( 1991, pollux, 0, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 1)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1991, polluxa, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 2)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1991, polluxa2, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 3)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) /* Original Dooyong Board distributed by TCH */
-GAME( 1991, polluxn, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong (NTC license)", "Pollux (Japan, NTC license)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1991, pollux, 0, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, polluxa, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, polluxa2, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong", "Pollux (set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) /* Original Dooyong Board distributed by TCH */
+GAME( 1991, polluxn, pollux, pollux, pollux, driver_device, 0, ROT270, "Dooyong (NTC license)", "Pollux (Japan, NTC license)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1992, flytiger, 0, flytiger, flytiger, driver_device, 0, ROT270, "Dooyong", "Flying Tiger (set 1)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1992, flytigera,flytiger, flytiger, flytiger, driver_device, 0, ROT270, "Dooyong", "Flying Tiger (set 2)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1992, flytiger, 0, flytiger, flytiger, driver_device, 0, ROT270, "Dooyong", "Flying Tiger (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1992, flytigera,flytiger, flytiger, flytiger, driver_device, 0, ROT270, "Dooyong", "Flying Tiger (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1993, bluehawk, 0, bluehawk, bluehawk, driver_device, 0, ROT270, "Dooyong", "Blue Hawk", GAME_SUPPORTS_SAVE )
-GAME( 1993, bluehawkn,bluehawk, bluehawk, bluehawk, driver_device, 0, ROT270, "Dooyong (NTC license)", "Blue Hawk (NTC)", GAME_SUPPORTS_SAVE )
+GAME( 1993, bluehawk, 0, bluehawk, bluehawk, driver_device, 0, ROT270, "Dooyong", "Blue Hawk", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, bluehawkn,bluehawk, bluehawk, bluehawk, driver_device, 0, ROT270, "Dooyong (NTC license)", "Blue Hawk (NTC)", MACHINE_SUPPORTS_SAVE )
-GAME( 1993, sadari, 0, primella, sadari, driver_device, 0, ROT0, "Dooyong (NTC license)", "Sadari", GAME_SUPPORTS_SAVE )
+GAME( 1993, sadari, 0, primella, sadari, driver_device, 0, ROT0, "Dooyong (NTC license)", "Sadari", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, gundl94, 0, primella, primella, driver_device, 0, ROT0, "Dooyong", "Gun Dealer '94", GAME_SUPPORTS_SAVE )
-GAME( 1994, primella, gundl94, primella, primella, driver_device, 0, ROT0, "Dooyong (NTC license)", "Primella", GAME_SUPPORTS_SAVE )
+GAME( 1994, gundl94, 0, primella, primella, driver_device, 0, ROT0, "Dooyong", "Gun Dealer '94", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, primella, gundl94, primella, primella, driver_device, 0, ROT0, "Dooyong (NTC license)", "Primella", MACHINE_SUPPORTS_SAVE )
-GAME( 1994, superx, 0, superx, superx, driver_device, 0, ROT270, "Dooyong (NTC license)", "Super-X (NTC)", GAME_SUPPORTS_SAVE )
-GAME( 1994, superxm, superx, superx, superx, driver_device, 0, ROT270, "Dooyong (Mitchell license)", "Super-X (Mitchell)", GAME_SUPPORTS_SAVE )
+GAME( 1994, superx, 0, superx, superx, driver_device, 0, ROT270, "Dooyong (NTC license)", "Super-X (NTC)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, superxm, superx, superx, superx, driver_device, 0, ROT270, "Dooyong (Mitchell license)", "Super-X (Mitchell)", MACHINE_SUPPORTS_SAVE )
-GAME( 1995, rshark, 0, rshark, rshark, driver_device, 0, ROT270, "Dooyong", "R-Shark", GAME_SUPPORTS_SAVE )
+GAME( 1995, rshark, 0, rshark, rshark, driver_device, 0, ROT270, "Dooyong", "R-Shark", MACHINE_SUPPORTS_SAVE )
-GAME( 1996, popbingo, 0, popbingo, popbingo, driver_device, 0, ROT0, "Dooyong", "Pop Bingo", GAME_SUPPORTS_SAVE )
+GAME( 1996, popbingo, 0, popbingo, popbingo, driver_device, 0, ROT0, "Dooyong", "Pop Bingo", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dorachan.c b/src/mame/drivers/dorachan.c
index 64c9bf5eba2..c6a0430f295 100644
--- a/src/mame/drivers/dorachan.c
+++ b/src/mame/drivers/dorachan.c
@@ -14,9 +14,6 @@ Todo:
#include "cpu/z80/z80.h"
-#define NUM_PENS (8)
-
-
class dorachan_state : public driver_device
{
public:
@@ -24,7 +21,9 @@ public:
: driver_device(mconfig, type, tag),
m_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
- m_screen(*this, "screen") { }
+ m_screen(*this, "screen"),
+ m_palette(*this, "palette"),
+ m_colors(*this, "colors") { }
/* memory pointers */
required_shared_ptr<UINT8> m_videoram;
@@ -41,6 +40,8 @@ public:
UINT32 screen_update_dorachan(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ required_region_ptr<UINT8> m_colors;
};
@@ -76,49 +77,29 @@ CUSTOM_INPUT_MEMBER(dorachan_state::dorachan_protection_r)
*
*************************************/
-static void get_pens(pen_t *pens)
-{
- offs_t i;
-
- for (i = 0; i < NUM_PENS; i++)
- {
- pens[i] = rgb_t(pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
- }
-}
-
-
UINT32 dorachan_state::screen_update_dorachan(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- pen_t pens[NUM_PENS];
- offs_t offs;
- const UINT8 *color_map_base;
-
- get_pens(pens);
-
- color_map_base = memregion("proms")->base();
-
- for (offs = 0; offs < m_videoram.bytes(); offs++)
+ for (offs_t offs = 0; offs < m_videoram.bytes(); offs++)
{
- int i;
UINT8 fore_color;
UINT8 x = offs >> 8 << 3;
UINT8 y = offs & 0xff;
- /* the need for +1 is extremely unusual, but definetely correct */
+ /* the need for +1 is extremely unusual, but definitely correct */
offs_t color_address = ((((offs << 2) & 0x03e0) | (offs >> 8)) + 1) & 0x03ff;
UINT8 data = m_videoram[offs];
if (m_flip_screen)
- fore_color = (color_map_base[color_address] >> 3) & 0x07;
+ fore_color = (m_colors[color_address] >> 3) & 0x07;
else
- fore_color = (color_map_base[color_address] >> 0) & 0x07;
+ fore_color = (m_colors[color_address] >> 0) & 0x07;
- for (i = 0; i < 8; i++)
+ for (int i = 0; i < 8; i++)
{
UINT8 color = (data & 0x01) ? fore_color : 0;
- bitmap.pix32(y, x) = pens[color];
+ bitmap.pix32(y, x) = m_palette->pen_color(color);
data = data >> 1;
x = x + 1;
@@ -238,14 +219,12 @@ void dorachan_state::machine_reset()
}
static MACHINE_CONFIG_START( dorachan, dorachan_state )
-
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", Z80, 2000000)
MCFG_CPU_PROGRAM_MAP(dorachan_map)
MCFG_CPU_IO_MAP(dorachan_io_map)
MCFG_CPU_PERIODIC_INT_DRIVER(dorachan_state, irq0_line_hold, 2*60)
-
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_SIZE(32*8, 32*8)
@@ -253,6 +232,7 @@ static MACHINE_CONFIG_START( dorachan, dorachan_state )
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_UPDATE_DRIVER(dorachan_state, screen_update_dorachan)
+ MCFG_PALETTE_ADD_3BIT_BGR("palette")
MACHINE_CONFIG_END
@@ -279,7 +259,7 @@ ROM_START( dorachan )
ROM_LOAD( "d12.rom", 0x7000, 0x0400, CRC(275e5dc1) SHA1(ac07db4b428daa49a52c679de95ddedbea0076b9) )
ROM_LOAD( "d13.rom", 0x7400, 0x0400, CRC(24ccfcf9) SHA1(85e5052ee657f518b0509eb64e494bc3a74e651e) )
- ROM_REGION( 0x0400, "proms", 0 ) /* color map */
+ ROM_REGION( 0x0400, "colors", 0 )
ROM_LOAD( "d14.rom", 0x0000, 0x0400, CRC(c0d3ee84) SHA1(f2207c685ce8d5144a373c28f11d2cebf9518b65) )
ROM_END
@@ -291,4 +271,4 @@ ROM_END
*
*************************************/
-GAME( 1980, dorachan, 0, dorachan, dorachan, driver_device, 0, ROT270, "Craul Denshi", "Dorachan", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1980, dorachan, 0, dorachan, dorachan, driver_device, 0, ROT270, "Craul Denshi", "Dorachan", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dotrikun.c b/src/mame/drivers/dotrikun.c
index ce2356d49da..7d1cc5b8f07 100644
--- a/src/mame/drivers/dotrikun.c
+++ b/src/mame/drivers/dotrikun.c
@@ -189,5 +189,5 @@ ROM_START( dotrikun2 )
ROM_END
-GAME( 1990, dotrikun, 0, dotrikun, dotrikun, driver_device, 0, ROT0, "Sega", "Dottori Kun (new version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW | GAME_IMPERFECT_GRAPHICS )
-GAME( 1990, dotrikun2,dotrikun, dotrikun, dotrikun, driver_device, 0, ROT0, "Sega", "Dottori Kun (old version)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW | GAME_IMPERFECT_GRAPHICS )
+GAME( 1990, dotrikun, 0, dotrikun, dotrikun, driver_device, 0, ROT0, "Sega", "Dottori Kun (new version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1990, dotrikun2,dotrikun, dotrikun, dotrikun, driver_device, 0, ROT0, "Sega", "Dottori Kun (old version)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mess/drivers/dps1.c b/src/mame/drivers/dps1.c
index da93d6cfc39..bb3a5b21746 100644
--- a/src/mess/drivers/dps1.c
+++ b/src/mame/drivers/dps1.c
@@ -38,4 +38,4 @@ ROM_START( dps1 )
ROM_LOAD( "boot 1280", 0x000, 0x400, CRC(9c2e98fa) SHA1(78e6c9d00aa6e8f6c4d3c65984cfdf4e99434c66) ) // actually on the FDC-2 board
ROM_END
-COMP( 1979, dps1, 0, 0, dps1, dps1, driver_device, 0, "Ithaca InterSystems", "DPS-1", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 1979, dps1, 0, 0, dps1, dps1, driver_device, 0, "Ithaca InterSystems", "DPS-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mess/drivers/dragon.c b/src/mame/drivers/dragon.c
index 61375867d28..61375867d28 100644
--- a/src/mess/drivers/dragon.c
+++ b/src/mame/drivers/dragon.c
diff --git a/src/mame/drivers/dragrace.c b/src/mame/drivers/dragrace.c
index 2978c417832..fc5d0f6e5a7 100644
--- a/src/mame/drivers/dragrace.c
+++ b/src/mame/drivers/dragrace.c
@@ -378,4 +378,4 @@ ROM_START( dragrace )
ROM_END
-GAMEL(1977, dragrace, 0, dragrace, dragrace, driver_device, 0, 0, "Atari (Kee Games)", "Drag Race", GAME_SUPPORTS_SAVE, layout_dragrace )
+GAMEL(1977, dragrace, 0, dragrace, dragrace, driver_device, 0, 0, "Atari (Kee Games)", "Drag Race", MACHINE_SUPPORTS_SAVE, layout_dragrace )
diff --git a/src/mame/drivers/dreambal.c b/src/mame/drivers/dreambal.c
index 1a57133c4ef..2f860fc31f6 100644
--- a/src/mame/drivers/dreambal.c
+++ b/src/mame/drivers/dreambal.c
@@ -369,4 +369,4 @@ DRIVER_INIT_MEMBER(dreambal_state,dreambal)
}
// Ver 2.4 JPN 93.12.02
-GAME( 1993, dreambal, 0, dreambal, dreambal, dreambal_state, dreambal, ROT0, "NDK / Data East", "Dream Ball (Japan V2.4)", GAME_SUPPORTS_SAVE ) // copyright shows NDK, board is Data East, code seems Data East-like too
+GAME( 1993, dreambal, 0, dreambal, dreambal, dreambal_state, dreambal, ROT0, "NDK / Data East", "Dream Ball (Japan V2.4)", MACHINE_SUPPORTS_SAVE ) // copyright shows NDK, board is Data East, code seems Data East-like too
diff --git a/src/mame/drivers/dreamwld.c b/src/mame/drivers/dreamwld.c
index e1c1dff8fd3..06545535412 100644
--- a/src/mame/drivers/dreamwld.c
+++ b/src/mame/drivers/dreamwld.c
@@ -353,8 +353,8 @@ UINT32 dreamwld_state::screen_update_dreamwld(screen_device &screen, bitmap_ind1
int x0 = 0, x1 = 0;
UINT16* linebase;
-
-
+
+
/* layer 0 */
linebase = &m_lineram16[0x000];
@@ -367,7 +367,7 @@ UINT32 dreamwld_state::screen_update_dreamwld(screen_device &screen, bitmap_ind1
else
/* per-line rowscroll */
x0 = linebase[(i+32)&0xff];
- }
+ }
tmptilemap0->set_scrollx(
(i + layer0_scrolly) & 0x3ff,
@@ -408,14 +408,14 @@ UINT32 dreamwld_state::screen_update_dreamwld(screen_device &screen, bitmap_ind1
READ32_MEMBER(dreamwld_state::dreamwld_protdata_r)
{
- //static int count = 0;
+ //static int count = 0;
UINT8 *protdata = memregion("user1")->base();
size_t protsize = memregion("user1")->bytes();
UINT8 dat = protdata[(m_protindex++) % protsize];
- //printf("protection read %04x %02x\n", count, dat);
- //count++;
+ //printf("protection read %04x %02x\n", count, dat);
+ //count++;
// real hw returns 00 after end of data, I haven't checked if it's possible to overflow the read counter
// and read out the internal rom.
@@ -1247,9 +1247,9 @@ ROM_START( gaialast )
ROM_LOAD( "9", 0x000000, 0x10000, CRC(0da8db45) SHA1(7d5bd71c5b0b28ff74c732edd7c662f46f2ab25b) )
ROM_END
-GAME( 1997, baryon, 0, baryon, baryon, driver_device, 0, ROT270, "SemiCom / Tirano", "Baryon - Future Assault (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1997, baryona, baryon, baryon, baryon, driver_device, 0, ROT270, "SemiCom / Tirano", "Baryon - Future Assault (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1998, cutefght, 0, dreamwld, cutefght, driver_device, 0, ROT0, "SemiCom", "Cute Fighter", GAME_SUPPORTS_SAVE )
-GAME( 1999, rolcrush, 0, baryon, rolcrush, driver_device, 0, ROT0, "Trust / SemiCom", "Rolling Crush (version 1.07.E - 1999/02/11)", GAME_SUPPORTS_SAVE )
-GAME( 1999, gaialast, 0, baryon, gaialast, driver_device, 0, ROT0, "SemiCom / XESS", "Gaia - The Last Choice of Earth", GAME_SUPPORTS_SAVE )
-GAME( 2000, dreamwld, 0, dreamwld, dreamwld, driver_device, 0, ROT0, "SemiCom", "Dream World", GAME_SUPPORTS_SAVE )
+GAME( 1997, baryon, 0, baryon, baryon, driver_device, 0, ROT270, "SemiCom / Tirano", "Baryon - Future Assault (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, baryona, baryon, baryon, baryon, driver_device, 0, ROT270, "SemiCom / Tirano", "Baryon - Future Assault (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, cutefght, 0, dreamwld, cutefght, driver_device, 0, ROT0, "SemiCom", "Cute Fighter", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, rolcrush, 0, baryon, rolcrush, driver_device, 0, ROT0, "Trust / SemiCom", "Rolling Crush (version 1.07.E - 1999/02/11)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, gaialast, 0, baryon, gaialast, driver_device, 0, ROT0, "SemiCom / XESS", "Gaia - The Last Choice of Earth", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, dreamwld, 0, dreamwld, dreamwld, driver_device, 0, ROT0, "SemiCom", "Dream World", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/drgnmst.c b/src/mame/drivers/drgnmst.c
index 27c6e53a790..357477e03c4 100644
--- a/src/mame/drivers/drgnmst.c
+++ b/src/mame/drivers/drgnmst.c
@@ -546,4 +546,4 @@ DRIVER_INIT_MEMBER(drgnmst_state,drgnmst)
}
-GAME( 1994, drgnmst, 0, drgnmst, drgnmst, drgnmst_state, drgnmst, ROT0, "Unico", "Dragon Master", GAME_SUPPORTS_SAVE )
+GAME( 1994, drgnmst, 0, drgnmst, drgnmst, drgnmst_state, drgnmst, ROT0, "Unico", "Dragon Master", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dribling.c b/src/mame/drivers/dribling.c
index edfff9b43dd..9b900666ad3 100644
--- a/src/mame/drivers/dribling.c
+++ b/src/mame/drivers/dribling.c
@@ -369,6 +369,6 @@ ROM_END
*
*************************************/
-GAME( 1983, dribling, 0, dribling, dribling, driver_device, 0, ROT0, "Model Racing", "Dribbling", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1983, driblingo, dribling, dribling, dribling, driver_device, 0, ROT0, "Model Racing (Olympia license)", "Dribbling (Olympia)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1983, driblingbr, dribling, dribling, dribling, driver_device, 0, ROT0, "bootleg (Videomac)", "Dribbling (bootleg, Brazil)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1983, dribling, 0, dribling, dribling, driver_device, 0, ROT0, "Model Racing", "Dribbling", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, driblingo, dribling, dribling, dribling, driver_device, 0, ROT0, "Model Racing (Olympia license)", "Dribbling (Olympia)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, driblingbr, dribling, dribling, dribling, driver_device, 0, ROT0, "bootleg (Videomac)", "Dribbling (bootleg, Brazil)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/drmicro.c b/src/mame/drivers/drmicro.c
index 361c283df98..7181682c3ec 100644
--- a/src/mame/drivers/drmicro.c
+++ b/src/mame/drivers/drmicro.c
@@ -319,4 +319,4 @@ ROM_END
*
*************************************/
-GAME( 1983, drmicro, 0, drmicro, drmicro, driver_device, 0, ROT270, "Sanritsu", "Dr. Micro", GAME_SUPPORTS_SAVE )
+GAME( 1983, drmicro, 0, drmicro, drmicro, driver_device, 0, ROT270, "Sanritsu", "Dr. Micro", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/drtomy.c b/src/mame/drivers/drtomy.c
index 9dc220898c6..1f86b1df772 100644
--- a/src/mame/drivers/drtomy.c
+++ b/src/mame/drivers/drtomy.c
@@ -30,7 +30,6 @@ public:
required_shared_ptr<UINT16> m_videoram_fg;
required_shared_ptr<UINT16> m_videoram_bg;
required_shared_ptr<UINT16> m_spriteram;
-// UINT16 * m_paletteram16; // currently this uses generic palette handling
/* video-related */
tilemap_t *m_tilemap_bg;
@@ -175,7 +174,7 @@ static ADDRESS_MAP_START( drtomy_map, AS_PROGRAM, 16, drtomy_state )
AM_RANGE(0x000000, 0x03ffff) AM_ROM /* ROM */
AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(drtomy_vram_fg_w) AM_SHARE("videorafg") /* Video RAM FG */
AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(drtomy_vram_bg_w) AM_SHARE("videorabg") /* Video RAM BG */
- AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */
+ AM_RANGE(0x200000, 0x2007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x440000, 0x440fff) AM_RAM AM_SHARE("spriteram") /* Sprite RAM */
AM_RANGE(0x700000, 0x700001) AM_READ_PORT("DSW1")
AM_RANGE(0x700002, 0x700003) AM_READ_PORT("DSW2")
@@ -354,4 +353,4 @@ ROM_START( drtomy )
ROM_END
-GAME( 1993, drtomy, 0, drtomy, drtomy, driver_device, 0, ROT0, "Playmark", "Dr. Tomy", GAME_SUPPORTS_SAVE )
+GAME( 1993, drtomy, 0, drtomy, drtomy, driver_device, 0, ROT0, "Playmark", "Dr. Tomy", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/drw80pkr.c b/src/mame/drivers/drw80pkr.c
index dd4fc381947..703e51ec6b4 100644
--- a/src/mame/drivers/drw80pkr.c
+++ b/src/mame/drivers/drw80pkr.c
@@ -533,5 +533,5 @@ ROM_END
*************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1982, drw80pkr, 0, drw80pkr, drw80pkr, drw80pkr_state, drw80pkr, ROT0, "IGT - International Game Technology", "Draw 80 Poker", GAME_NOT_WORKING )
-GAME( 1983, drw80pk2, 0, drw80pkr, drw80pkr, drw80pkr_state, drw80pkr, ROT0, "IGT - International Game Technology", "Draw 80 Poker - Minn", GAME_NOT_WORKING )
+GAME( 1982, drw80pkr, 0, drw80pkr, drw80pkr, drw80pkr_state, drw80pkr, ROT0, "IGT - International Game Technology", "Draw 80 Poker", MACHINE_NOT_WORKING )
+GAME( 1983, drw80pk2, 0, drw80pkr, drw80pkr, drw80pkr_state, drw80pkr, ROT0, "IGT - International Game Technology", "Draw 80 Poker - Minn", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/dsb46.c b/src/mame/drivers/dsb46.c
index 15dda5f28ee..a0066e94d80 100644
--- a/src/mess/drivers/dsb46.c
+++ b/src/mame/drivers/dsb46.c
@@ -119,4 +119,4 @@ ROM_START( dsb46 )
ROM_LOAD( "ades.bin", 0x0000, 0x4000, CRC(d374abf0) SHA1(331f51a2bb81375aeffbe63c1ebc1d7cd779b9c3) )
ROM_END
-COMP( 198?, dsb46, 0, 0, dsb46, dsb46, dsb46_state, dsb46, "Davidge", "DSB-4/6", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 198?, dsb46, 0, 0, dsb46, dsb46, dsb46_state, dsb46, "Davidge", "DSB-4/6", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mess/drivers/dual68.c b/src/mame/drivers/dual68.c
index 2f96ce95618..d778d0c4f6a 100644
--- a/src/mess/drivers/dual68.c
+++ b/src/mame/drivers/dual68.c
@@ -112,4 +112,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1981, dual68, 0, 0, dual68, dual68, driver_device, 0, "Dual Systems Corporation", "Dual Systems 68000", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1981, dual68, 0, 0, dual68, dual68, driver_device, 0, "Dual Systems Corporation", "Dual Systems 68000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/dunhuang.c b/src/mame/drivers/dunhuang.c
index 8be6981049e..0ff0abfee70 100644
--- a/src/mame/drivers/dunhuang.c
+++ b/src/mame/drivers/dunhuang.c
@@ -871,4 +871,4 @@ ROM_START( dunhuang )
ROM_LOAD( "rom6.u1", 0x00000, 0x20000, CRC(31cfdc29) SHA1(725249eae9227eadf05418b799e0da0254bb2f51) )
ROM_END
-GAME( 1995, dunhuang, 0, dunhuang, dunhuang, driver_device, 0, ROT0, "Spirit", "Mahjong Dunhuang", GAME_SUPPORTS_SAVE )
+GAME( 1995, dunhuang, 0, dunhuang, dunhuang, driver_device, 0, ROT0, "Spirit", "Mahjong Dunhuang", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dvk_kcgd.c b/src/mame/drivers/dvk_kcgd.c
new file mode 100644
index 00000000000..2903a402680
--- /dev/null
+++ b/src/mame/drivers/dvk_kcgd.c
@@ -0,0 +1,384 @@
+/***************************************************************************
+
+ KCGD (Kontroller Cvetnogo Graficheskogo Displeya = Colour Graphics
+ Display Controller), a replacement for KSM (dvk_ksm.c) in later
+ models of DVK desktops.
+
+ MPI (Q-Bus clone) board. Interfaces with MS7004 (DEC LK201 workalike)
+ keyboard, mouse, and monochrome or color CRT.
+
+ To do:
+ - K1801VM2 CPU core (interrupts and EVNT pin, full EIS set, other insns)
+ - Everything else :-)
+
+****************************************************************************/
+
+#include "emu.h"
+
+#include "bus/rs232/rs232.h"
+#include "cpu/t11/t11.h"
+#include "machine/clock.h"
+#include "machine/ms7004.h"
+
+#define KCGD_TOTAL_HORZ 1000 // XXX verify
+#define KCGD_DISP_HORZ 800
+#define KCGD_HORZ_START 200 // XXX verify
+
+#define KCGD_TOTAL_VERT 600 // XXX verify
+#define KCGD_DISP_VERT 480
+#define KCGD_VERT_START 100 // XXX verify
+
+#define KCGD_STATUS_PAGE 0
+#define KCGD_STATUS_INTERLACE 1
+#define KCGD_STATUS_TIMER_INT 5
+#define KCGD_STATUS_MODE_INT 6
+#define KCGD_STATUS_MODE_LAST 7
+#define KCGD_STATUS_TIMER_VAL 15
+
+#define KCGD_PAGE_0 015574
+#define KCGD_PAGE_1 005574
+
+#define VERBOSE_DBG 1 /* general debug messages */
+
+#define DBG_LOG(N,M,A) \
+ do { \
+ if(VERBOSE_DBG>=N) \
+ { \
+ if( M ) \
+ logerror("%11.6f at %s: %-24s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
+ logerror A; \
+ } \
+ } while (0)
+
+
+class kcgd_state : public driver_device
+{
+public:
+ kcgd_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+// m_ms7004(*this, "ms7004"),
+ m_palette(*this, "palette"),
+ m_screen(*this, "screen")
+ { }
+
+ virtual void machine_reset();
+ virtual void video_start();
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ TIMER_DEVICE_CALLBACK_MEMBER(scanline_callback);
+ DECLARE_PALETTE_INIT(kcgd);
+
+ enum
+ {
+ TIMER_ID_VSYNC_ON,
+ TIMER_ID_VSYNC_OFF,
+ TIMER_ID_500HZ
+ };
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+
+ DECLARE_WRITE_LINE_MEMBER(write_keyboard_clock);
+ DECLARE_WRITE_LINE_MEMBER(write_line_clock);
+
+ DECLARE_READ16_MEMBER(vram_addr_r);
+ DECLARE_READ16_MEMBER(vram_data_r);
+ DECLARE_READ16_MEMBER(vram_mmap_r);
+ DECLARE_WRITE16_MEMBER(vram_addr_w);
+ DECLARE_WRITE16_MEMBER(vram_data_w);
+ DECLARE_WRITE16_MEMBER(vram_mmap_w);
+ DECLARE_READ16_MEMBER(status_r);
+ DECLARE_WRITE16_MEMBER(status_w);
+ DECLARE_READ8_MEMBER(palette_index_r);
+ DECLARE_READ8_MEMBER(palette_data_r);
+ DECLARE_WRITE8_MEMBER(palette_index_w);
+ DECLARE_WRITE8_MEMBER(palette_data_w);
+
+ emu_timer *m_vsync_on_timer;
+ emu_timer *m_vsync_off_timer;
+ emu_timer *m_500hz_timer;
+
+private:
+ void draw_scanline(UINT16 *p, UINT16 offset);
+ rectangle m_tmpclip;
+ bitmap_ind16 m_tmpbmp;
+
+ struct {
+ UINT16 status; // 167770
+ UINT8 control; // 167772
+ int palette_index, vram_addr;
+ UINT8 palette[16];
+ } m_video;
+ UINT32 *m_videoram;
+
+protected:
+ required_device<cpu_device> m_maincpu;
+// required_device<ms7004_device> m_ms7004;
+ required_device<palette_device> m_palette;
+ required_device<screen_device> m_screen;
+};
+
+static ADDRESS_MAP_START( kcgd_mem, AS_PROGRAM, 16, kcgd_state )
+ ADDRESS_MAP_UNMAP_HIGH
+ AM_RANGE (0000000, 0077777) AM_READWRITE(vram_mmap_r, vram_mmap_w)
+ AM_RANGE (0100000, 0157777) AM_ROM
+ AM_RANGE (0160000, 0160001) AM_MIRROR(03774) AM_READWRITE(vram_addr_r, vram_addr_w)
+ AM_RANGE (0160002, 0160003) AM_MIRROR(03774) AM_READWRITE(vram_data_r, vram_data_w)
+ AM_RANGE (0167770, 0167771) AM_READWRITE(status_r, status_w)
+ AM_RANGE (0167772, 0167773) AM_READWRITE8(palette_index_r, palette_index_w, 0x00ff) // reads always return 0
+ AM_RANGE (0167772, 0167773) AM_READWRITE8(palette_data_r, palette_data_w, 0xff00)
+// AM_RANGE (0176560, 0176567) AM_RAM // USART2 -- host
+// AM_RANGE (0177560, 0177567) AM_RAM // USART3 -- keyboard
+ADDRESS_MAP_END
+
+void kcgd_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ switch (id)
+ {
+/*
+ case TIMER_ID_VSYNC_ON:
+ m_maincpu->set_input_line(INPUT_LINE_EVNT, ASSERT_LINE);
+ break;
+
+ case TIMER_ID_VSYNC_OFF:
+ m_maincpu->set_input_line(INPUT_LINE_EVNT, CLEAR_LINE);
+ break;
+*/
+ case TIMER_ID_500HZ:
+ m_video.status ^= (1 << KCGD_STATUS_TIMER_VAL);
+ break;
+ }
+}
+
+void kcgd_state::machine_reset()
+{
+ memset(&m_video, 0, sizeof(m_video));
+}
+
+void kcgd_state::video_start()
+{
+// screen_device *screen = machine().device<screen_device>("screen");
+
+ // 64 kwords, word size is 17 bits
+ m_videoram = auto_alloc_array(machine(), UINT32, 65536);
+
+ m_tmpclip = rectangle(0, KCGD_DISP_HORZ-1, 0, KCGD_DISP_VERT-1);
+ m_tmpbmp.allocate(KCGD_DISP_HORZ, KCGD_DISP_VERT);
+/*
+ m_vsync_on_timer = timer_alloc(TIMER_ID_VSYNC_ON);
+ m_vsync_on_timer->adjust(screen->time_until_pos(0, 0), 0, screen->frame_period());
+
+ m_vsync_off_timer = timer_alloc(TIMER_ID_VSYNC_OFF);
+ m_vsync_off_timer->adjust(screen->time_until_pos(16, 0), 0, screen->frame_period());
+*/
+ m_500hz_timer = timer_alloc(TIMER_ID_500HZ);
+ m_500hz_timer->adjust(attotime::from_hz(500), 0, attotime::from_hz(500));
+}
+
+PALETTE_INIT_MEMBER(kcgd_state, kcgd)
+{
+ for (int i = 0; i < 16; i++)
+ {
+ palette.set_pen_color(i, i?i:255, i?i:255, i?i:255);
+ }
+}
+
+/*
+ VRAM is 128K and is word-addressable, so address fits into 16 bits.
+ Low 32K of VRAM are not used to store pixel data -- XXX.
+*/
+WRITE16_MEMBER(kcgd_state::vram_addr_w)
+{
+ DBG_LOG(3,"VRAM WA", ("%06o\n", data));
+ m_video.vram_addr = data;
+}
+
+READ16_MEMBER(kcgd_state::vram_addr_r)
+{
+ DBG_LOG(3,"VRAM RA", ("\n"));
+ return m_video.vram_addr;
+}
+
+WRITE16_MEMBER(kcgd_state::vram_data_w)
+{
+ DBG_LOG(1,"VRAM W2", ("%06o <- %04XH\n", m_video.vram_addr, data));
+ m_videoram[m_video.vram_addr] = data | (BIT(m_video.control, 7) << 16);
+}
+
+READ16_MEMBER(kcgd_state::vram_data_r)
+{
+ DBG_LOG(2,"VRAM R2", ("%06o\n", m_video.vram_addr));
+ m_video.status = (m_video.status & 0xff7f) | (BIT(m_videoram[m_video.vram_addr], 16) << 7);
+ return (UINT16) (m_videoram[m_video.vram_addr] & 0xffff);
+}
+
+WRITE16_MEMBER(kcgd_state::vram_mmap_w)
+{
+ DBG_LOG(3,"VRAM W1", ("%06o <- %04XH\n", offset, data));
+ m_videoram[offset] = data | (BIT(m_video.control, 7) << 16);
+}
+
+READ16_MEMBER(kcgd_state::vram_mmap_r)
+{
+ DBG_LOG(3,"VRAM R1", ("%06o\n", offset));
+ return (UINT16) (m_videoram[offset] & 0xffff);
+}
+
+WRITE16_MEMBER(kcgd_state::status_w)
+{
+ DBG_LOG(1,"Status W", ("data %04XH (useful %02XH)\n", data, data & 0x63));
+ // bits 7 and 15 are read-only
+ m_video.status = (m_video.status & 0x8080) | (data & 0x7f7f);
+}
+
+READ16_MEMBER(kcgd_state::status_r)
+{
+ UINT16 data = m_video.status ^ (BIT(m_video.control, 6) << 7);
+ DBG_LOG(1,"Status R", ("data %04X index %d\n", data, m_video.palette_index));
+ return data;
+}
+
+WRITE8_MEMBER(kcgd_state::palette_index_w)
+{
+ m_video.control = data;
+ m_video.palette_index = ((data >> 2) & 15);
+ DBG_LOG(1,"Palette index, Control W", ("data %02XH index %d\n", data, m_video.palette_index));
+}
+
+WRITE8_MEMBER(kcgd_state::palette_data_w)
+{
+ DBG_LOG(1,"Palette data W", ("data %02XH index %d\n", data, m_video.palette_index));
+ m_video.palette[m_video.palette_index] = data;
+ m_palette->set_pen_color(m_video.palette_index,
+ 85*(data & 3), 85*((data >> 2) & 3), 85*((data >> 4) & 3));
+}
+
+READ8_MEMBER(kcgd_state::palette_index_r)
+{
+ return 0;
+}
+
+READ8_MEMBER(kcgd_state::palette_data_r)
+{
+ DBG_LOG(1,"Palette data R", ("index %d\n", m_video.palette_index));
+ return m_video.palette[m_video.palette_index];
+}
+
+/*
+ Raster sizes are:
+ - 800(400)x480 in hires(lores) 60 Hz interlaced mode
+ - 800(400)x240 in hires(lores) 30 Hz progressive mode
+
+ Video memory is 17 bits wide (bit 16 indicates hi/lo res mode for each word,
+ host writes it separately (via bit 7 in 167772).
+*/
+
+void kcgd_state::draw_scanline(UINT16 *p, UINT16 offset)
+{
+ int i;
+
+ for ( i = 0; i < 100; i++ )
+ {
+ UINT32 data = m_videoram[ offset++ ];
+ if (BIT(data, 16)) {
+ *p = ( data >> 12) & 0x0F; p++;
+ *p = ( data >> 12) & 0x0F; p++;
+ *p = ( data >> 8 ) & 0x0F; p++;
+ *p = ( data >> 8 ) & 0x0F; p++;
+ *p = ( data >> 4 ) & 0x0F; p++;
+ *p = ( data >> 4 ) & 0x0F; p++;
+ *p = data & 0x0F; p++;
+ *p = data & 0x0F; p++;
+ } else {
+ *p = 5*(( data >> 14) & 0x03); p++;
+ *p = 5*(( data >> 12) & 0x03); p++;
+ *p = 5*(( data >> 10) & 0x03); p++;
+ *p = 5*(( data >> 8 ) & 0x03); p++;
+ *p = 5*(( data >> 6 ) & 0x03); p++;
+ *p = 5*(( data >> 4 ) & 0x03); p++;
+ *p = 5*(( data >> 2 ) & 0x03); p++;
+ *p = 5*( data & 0x03); p++;
+ }
+ }
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(kcgd_state::scanline_callback)
+{
+ UINT16 y = m_screen->vpos(), offset;
+
+ if (y < KCGD_VERT_START) return;
+ y -= KCGD_VERT_START;
+ if (y >= KCGD_DISP_VERT) return;
+
+ offset = BIT(m_video.status, KCGD_STATUS_PAGE) ? (KCGD_PAGE_1 >> 1) : (KCGD_PAGE_0 >> 1);
+
+ DBG_LOG(2,"scanline_cb", ("frame %" I64FMT "d y %.3d page %d offset %04X *offset %04X\n",
+ m_screen->frame_number(), BIT(m_video.status, KCGD_STATUS_PAGE),
+ y, offset + y, m_videoram[offset + y]));
+
+ draw_scanline(&m_tmpbmp.pix16(y), m_videoram[offset + (KCGD_DISP_VERT-1) - y]);
+}
+
+UINT32 kcgd_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ copybitmap(bitmap, m_tmpbmp, 0, 0, KCGD_HORZ_START, KCGD_VERT_START, cliprect);
+ return 0;
+}
+
+/* F4 Character Displayer */
+static const gfx_layout kcgd_charlayout =
+{
+ 8, 10, /* 8x10 pixels */
+ 256, /* 256 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ /* y offsets */
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8 },
+ 8*10 /* every char takes 10 bytes */
+};
+
+static GFXDECODE_START( kcgd )
+ GFXDECODE_ENTRY("maincpu", 0112236, kcgd_charlayout, 0, 1)
+GFXDECODE_END
+
+static MACHINE_CONFIG_START( kcgd, kcgd_state )
+ MCFG_CPU_ADD("maincpu", K1801VM2, XTAL_30_8MHz/4)
+ MCFG_CPU_PROGRAM_MAP(kcgd_mem)
+ MCFG_T11_INITIAL_MODE(0100000)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", kcgd_state, scanline_callback, attotime::from_hz(50*28*11)) // XXX verify
+ MCFG_TIMER_START_DELAY(attotime::from_hz(XTAL_30_8MHz/KCGD_HORZ_START))
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_UPDATE_DRIVER(kcgd_state, screen_update)
+ MCFG_SCREEN_RAW_PARAMS(XTAL_30_8MHz, KCGD_TOTAL_HORZ, KCGD_HORZ_START,
+ KCGD_HORZ_START+KCGD_DISP_HORZ, KCGD_TOTAL_VERT, KCGD_VERT_START,
+ KCGD_VERT_START+KCGD_DISP_VERT);
+
+ MCFG_SCREEN_PALETTE("palette")
+ MCFG_PALETTE_ADD("palette", 16)
+ MCFG_PALETTE_INIT_OWNER(kcgd_state, kcgd)
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", kcgd)
+#if 0
+ MCFG_DEVICE_ADD("ms7004", MS7004, 0)
+ MCFG_MS7004_TX_HANDLER(DEVWRITELINE("i8251kbd", i8251_device, write_rxd))
+
+ MCFG_DEVICE_ADD("keyboard_clock", CLOCK, 4800*16)
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(kcgd_state, write_keyboard_clock))
+#endif
+MACHINE_CONFIG_END
+
+ROM_START( dvk_kcgd )
+ ROM_REGION16_BE(0x100000,"maincpu", ROMREGION_ERASE00)
+ ROM_DEFAULT_BIOS("181")
+ ROM_SYSTEM_BIOS(0, "181", "mask 181")
+ ROMX_LOAD("kr1801re2-181.bin", 0100000, 020000, CRC(acac124f) SHA1(412c3eb71bece6f791fc5a9d707cf4692fd0b45b), ROM_BIOS(1))
+ ROM_SYSTEM_BIOS(1, "182", "mask 182")
+ ROMX_LOAD("kr1801re2-182.bin", 0100000, 020000, CRC(3ca2921a) SHA1(389b30c40ed7e41dae71d58c7bff630359a48153), ROM_BIOS(2))
+ROM_END
+
+/* Driver */
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
+COMP( 1987, dvk_kcgd, 0, 0, kcgd, 0, driver_device, 0, "USSR", "DVK KCGD", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mess/drivers/dvk_ksm.c b/src/mame/drivers/dvk_ksm.c
index 118fdef57e7..b85d52f4cfd 100644
--- a/src/mess/drivers/dvk_ksm.c
+++ b/src/mame/drivers/dvk_ksm.c
@@ -34,11 +34,12 @@
switching between them via SI/SO. N2 charset has uppercase Cyrillic
chars in place of lowercase Latin ones.
- F1 toggles Hold Screen mode.
+ ESC toggles Cyrillic/Latin mode (depends in the host's terminal driver)
+ F1 toggles Hold Screen mode (also depends in the host's terminal driver)
F9 resets terminal (clears memory).
F20 toggles on/off-line mode.
- Terminfo description would be something like
+ Terminfo description:
ksm|DVK KSM,
am, bw, dch1=\EP, ich1=\EQ,
@@ -46,9 +47,8 @@ ksm|DVK KSM,
use=vt52,
To do:
- - make Caps Lock work
- verify if pixel stretching is done by hw
- - verify details of hw revisions
+ - verify details of hw revisions (memory map, DIP presence...)
- baud rate selection (missing feature in bitbanger)
****************************************************************************/
@@ -140,7 +140,7 @@ protected:
static ADDRESS_MAP_START( ksm_mem, AS_PROGRAM, 8, ksm_state )
ADDRESS_MAP_UNMAP_HIGH
AM_RANGE (0x0000, 0x0fff) AM_ROM
- AM_RANGE (0x2000, 0x21ff) AM_RAM
+ AM_RANGE (0x2000, 0x20ff) AM_RAM AM_MIRROR(0x0700)
AM_RANGE (0xc000, 0xffff) AM_RAM AM_SHARE("videoram")
ADDRESS_MAP_END
@@ -408,11 +408,11 @@ ROM_START( dvk_ksm01 )
ROM_LOAD( "ksm_05_rom1_d33.bin", 0x0800, 0x0800, CRC(5b29bcd2) SHA1(1f4f82c2f88f1e8615ec02076559dc606497e654))
ROM_REGION(0x0800, "chargen", ROMREGION_ERASE00)
- ROM_LOAD("ksm_03_cg_d31.bin", 0x0000, 0x0800, CRC(98853aa7) SHA1(c7871a96f135db05c3c8d718fbdf1728e22e72b7))
+ ROM_LOAD("ksm_03_cg_d31.bin", 0x0000, 0x0800, CRC(6a8477e2) SHA1(c7871a96f135db05c3c8d718fbdf1728e22e72b7))
ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1986, dvk_ksm, 0, 0, ksm, ksm, driver_device, 0, "USSR", "DVK KSM", 0)
-COMP( 198?, dvk_ksm01,0 , 0, ksm, ksm, driver_device, 0, "USSR", "DVK KSM-01", 0)
+COMP( 198?, dvk_ksm01,dvk_ksm,0, ksm, ksm, driver_device, 0, "USSR", "DVK KSM-01", 0)
diff --git a/src/mame/drivers/dwarfd.c b/src/mame/drivers/dwarfd.c
index 51939381949..0d9a11f3770 100644
--- a/src/mame/drivers/dwarfd.c
+++ b/src/mame/drivers/dwarfd.c
@@ -1045,9 +1045,9 @@ DRIVER_INIT_MEMBER(dwarfd_state,qc)
}
/* YEAR NAME PARENT MACHINE INPUT INIT ORENTATION, COMPANY FULLNAME FLAGS */
-GAME( 1981, dwarfd, 0, dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Dwarf Gfx)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1981, dwarfda, dwarfd, dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Card Gfx)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1983, quarterh, 0, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 1, Pioneer PR-8210)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
-GAME( 1983, quarterha, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 2, Pioneer PR-8210)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
-GAME( 1983, quarterhb, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 3, Pioneer LD-V2000)", GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
-GAME( 1995, qc, 0, qc, quarterh, dwarfd_state, qc, 0, "ArJay Exports/Prestige Games", "Quarter Horse Classic", GAME_IMPERFECT_GRAPHICS | GAME_NOT_WORKING )
+GAME( 1981, dwarfd, 0, dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Dwarf Gfx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, dwarfda, dwarfd, dwarfd, dwarfd, dwarfd_state, dwarfd, 0, "Electro-Sport", "Draw Poker III / Dwarfs Den (Card Gfx)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, quarterh, 0, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 1, Pioneer PR-8210)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1983, quarterha, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 2, Pioneer PR-8210)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1983, quarterhb, quarterh, dwarfd, quarterh, dwarfd_state, dwarfd, 0, "Electro-Sport", "Quarter Horse (set 3, Pioneer LD-V2000)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+GAME( 1995, qc, 0, qc, quarterh, dwarfd_state, qc, 0, "ArJay Exports/Prestige Games", "Quarter Horse Classic", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/dynadice.c b/src/mame/drivers/dynadice.c
index c90d1961906..f1cb6167279 100644
--- a/src/mame/drivers/dynadice.c
+++ b/src/mame/drivers/dynadice.c
@@ -52,7 +52,6 @@ public:
/* memory pointers */
required_shared_ptr<UINT8> m_videoram;
// UINT8 * m_nvram; // currently this uses generic nvram handling
-// UINT8 * m_paletteram; // currently this uses generic palette handling
/* video-related */
tilemap_t *m_bg_tilemap;
@@ -68,7 +67,6 @@ public:
virtual void machine_start();
virtual void machine_reset();
virtual void video_start();
- DECLARE_PALETTE_INIT(dynadice);
UINT32 screen_update_dynadice(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
@@ -227,13 +225,6 @@ UINT32 dynadice_state::screen_update_dynadice(screen_device &screen, bitmap_ind1
return 0;
}
-PALETTE_INIT_MEMBER(dynadice_state, dynadice)
-{
- int i;
- for(i = 0; i < 8; i++)
- palette.set_pen_color(i, pal1bit(i >> 1), pal1bit(i >> 2), pal1bit(i >> 0));
-}
-
void dynadice_state::machine_start()
{
save_item(NAME(m_ay_data));
@@ -268,8 +259,7 @@ static MACHINE_CONFIG_START( dynadice, dynadice_state )
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", dynadice)
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(dynadice_state, dynadice)
+ MCFG_PALETTE_ADD_3BIT_BRG("palette")
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -312,4 +302,4 @@ DRIVER_INIT_MEMBER(dynadice_state,dynadice)
gfx2[(i << 3) + j] = (gfx1[i] & (0x80 >> j)) ? (usr1[i] & 7) : (usr1[i] >> 4);
}
-GAME( 19??, dynadice, 0, dynadice, dynadice, dynadice_state, dynadice, ROT90, "<unknown>", "Dynamic Dice", GAME_SUPPORTS_SAVE )
+GAME( 19??, dynadice, 0, dynadice, dynadice, dynadice_state, dynadice, ROT90, "<unknown>", "Dynamic Dice", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dynax.c b/src/mame/drivers/dynax.c
index 4d31b8125ea..bdd48788764 100644
--- a/src/mame/drivers/dynax.c
+++ b/src/mame/drivers/dynax.c
@@ -4441,7 +4441,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( hnoridur, dynax_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu",Z80,22000000 / 4) /* 5.5MHz */
+ MCFG_CPU_ADD("maincpu",Z80,XTAL_22MHz / 4) /* 5.5MHz */
MCFG_CPU_PROGRAM_MAP(hnoridur_mem_map)
MCFG_CPU_IO_MAP(hnoridur_io_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, sprtmtch_vblank_interrupt) /* IM 0 needs an opcode on the data bus */
@@ -4467,14 +4467,14 @@ static MACHINE_CONFIG_START( hnoridur, dynax_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("aysnd", AY8910, 22000000 / 16)
+ MCFG_SOUND_ADD("aysnd", AY8910, XTAL_22MHz / 16)
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW0"))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20)
- MCFG_SOUND_ADD("ym2413", YM2413, 3579545)
+ MCFG_SOUND_ADD("ym2413", YM2413, XTAL_3_579545MHz)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MCFG_SOUND_ADD("msm", MSM5205, 384000)
+ MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz)
MCFG_MSM5205_VCLK_CB(WRITELINE(dynax_state, adpcm_int)) /* IRQ handler */
MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 KHz, 4 Bits */
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
@@ -4811,7 +4811,7 @@ static MACHINE_CONFIG_DERIVED( mjelctrn, hnoridur )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( mjembase, hnoridur )
- MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_MODIFY("maincpu") // TMPZ84015
MCFG_CPU_PROGRAM_MAP(nanajign_mem_map)
MCFG_CPU_IO_MAP(mjembase_io_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", dynax_state, mjelctrn_vblank_interrupt) /* IM 2 needs a vector on the data bus */
@@ -5456,7 +5456,7 @@ DRIVER_INIT_MEMBER(dynax_state,blktouch)
}
}
-
+
DRIVER_INIT_MEMBER(dynax_state, maya_common)
{
@@ -6267,12 +6267,42 @@ ROM_END
/***************************************************************************
-Mahjong Electromagnetic Base
-DYNAX D3803248L1
+Mahjong Electromagnetic Base (Dynax, 1989)
-AY-3-8912?, MSM5205?
-HD46505SP?, Dynax blitter? (rest of the chips are scratched)
-4 x DSW8, 28-way connector
+PCB Layout
+----------
+
+D3803248L1
+sticker: M6100524A
+ |--------------------------------------|
+ | TMS4461 17G032 3804 |
+|-| TMS4461 3805 |
+| TMS4461 TMS4461 3801 3806 |
+| TMS4461 TMS4461 3802 3807 |
+| 3803 3808 |
+| PAL 3809 |
+| 6845SP 381A |
+| 2018 PAL |
+| DSW4 384KHz 2018 DSW1 0.1UF|
+| LM358 M5205 |
+| LM358 YM2413 CPU TC5563|
+| MB3712 AY-3-8912 |
+|-|VOL DSW3 DSW2 |
+ |VOL 3.579545MHz 22MHz 3815 |
+ |--------------------------------------|
+Notes:
+ CPU - surface scratched, clock input 11MHz [22/2], looks like TMPZ84015
+ AY-3-8912 - clock 1.375MHz [22/16]
+ YM2413 - clock 3.579545MHz
+ M5205 - clock 384kHz
+ 6845SP - clock 2.75MHz [22/8], VSync pin - 60.1188Hz, HSync pin - 15.8112kHz
+ TMS4461 - 1Mx4-bit DRAM
+ 2018 - 2kx8-bit SRAM
+ TC5563 - 8kx8-bit SRAM
+ 17G032 - custom Dynax GFX chip
+ DSW1-4 - 8-position DIP switches
+ 0.1UF - 5.5v 0.1UF supercap
+ MB3712 - Fujitsu MB3712 AMP
***************************************************************************/
@@ -7372,50 +7402,50 @@ ROM_END
***************************************************************************/
-GAME( 1988, janyuki, 0, janyuki, janyuki, driver_device, 0, ROT0, "Dynax", "Jong Yu Ki (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, hnkochou, 0, hanamai, hnkochou, driver_device, 0, ROT180, "Dynax", "Hana Kochou (Japan, Bet)", GAME_SUPPORTS_SAVE )
-GAME( 1988, hanamai, hnkochou, hanamai, hanamai, driver_device, 0, ROT180, "Dynax", "Hana no Mai (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1990, hjingi, 0, hjingi, hjingi, driver_device, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet)", GAME_SUPPORTS_SAVE ) // 1990 05/01 11:58:24
-GAME( 1990, hjingia, hjingi, hjingi, hjingi, driver_device, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet, alt.)", GAME_SUPPORTS_SAVE ) // 1990 05/01 11:58:24
-GAME( 1989, hnoridur, hjingi, hnoridur, hnoridur, driver_device, 0, ROT180, "Dynax", "Hana Oriduru (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, drgpunch, 0, sprtmtch, drgpunch, driver_device, 0, ROT0, "Dynax", "Dragon Punch (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, sprtmtch, drgpunch, sprtmtch, sprtmtch, driver_device, 0, ROT0, "Dynax (Fabtek license)", "Sports Match", GAME_SUPPORTS_SAVE )
+GAME( 1988, janyuki, 0, janyuki, janyuki, driver_device, 0, ROT0, "Dynax", "Jong Yu Ki (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, hnkochou, 0, hanamai, hnkochou, driver_device, 0, ROT180, "Dynax", "Hana Kochou (Japan, Bet)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, hanamai, hnkochou, hanamai, hanamai, driver_device, 0, ROT180, "Dynax", "Hana no Mai (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, hjingi, 0, hjingi, hjingi, driver_device, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet)", MACHINE_SUPPORTS_SAVE ) // 1990 05/01 11:58:24
+GAME( 1990, hjingia, hjingi, hjingi, hjingi, driver_device, 0, ROT180, "Dynax", "Hana Jingi (Japan, Bet, alt.)", MACHINE_SUPPORTS_SAVE ) // 1990 05/01 11:58:24
+GAME( 1989, hnoridur, hjingi, hnoridur, hnoridur, driver_device, 0, ROT180, "Dynax", "Hana Oriduru (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, drgpunch, 0, sprtmtch, drgpunch, driver_device, 0, ROT0, "Dynax", "Dragon Punch (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, sprtmtch, drgpunch, sprtmtch, sprtmtch, driver_device, 0, ROT0, "Dynax (Fabtek license)", "Sports Match", MACHINE_SUPPORTS_SAVE )
/* these 3 are Korean hacks / bootlegs of Dragon Punch / Sports Match */
-GAME( 1994, maya, 0, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 1)", GAME_SUPPORTS_SAVE ) // this set has backgrounds blacked out in attract
-GAME( 1994, mayaa, maya, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 2)", GAME_SUPPORTS_SAVE ) // this set has backgrounds blacked out in attract
-GAME( 1994, mayab, maya, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1994, mayac, maya, sprtmtch, drgpunch, dynax_state, mayac, ROT0, "Promat", "Maya (set 4, clean)", GAME_SUPPORTS_SAVE )
-GAME( 199?, inca, 0, sprtmtch, drgpunch, dynax_state, maya, ROT0, "<unknown>", "Inca", GAME_SUPPORTS_SAVE )
-GAME( 199?, blktouch, 0, sprtmtch, drgpunch, dynax_state, blktouch, ROT0, "Yang Gi Co Ltd.", "Black Touch (Korea)", GAME_SUPPORTS_SAVE )
-
-GAME( 1989, mjfriday, 0, mjfriday, mjfriday, driver_device, 0, ROT180, "Dynax", "Mahjong Friday (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, gekisha, 0, gekisha, gekisha, driver_device, 0, ROT180, "Dynax", "Mahjong Gekisha", GAME_SUPPORTS_SAVE )
-GAME( 1990, mcnpshnt, 0, mcnpshnt, mcnpshnt, driver_device, 0, ROT0, "Dynax", "Mahjong Campus Hunting (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1990, 7jigen, 0, nanajign, nanajign, driver_device, 0, ROT180, "Dynax", "7jigen no Youseitachi - Mahjong 7 Dimensions (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1990, jantouki, 0, jantouki, jantouki, driver_device, 0, ROT0, "Dynax", "Jong Tou Ki (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, mjdialq2, 0, mjdialq2, mjdialq2, driver_device, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, mjdialq2a,mjdialq2, mjdialq2, mjdialq2, driver_device, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan, alt.)", GAME_SUPPORTS_SAVE )
-GAME( 1991, yarunara, 0, yarunara, yarunara, driver_device, 0, ROT180, "Dynax", "Mahjong Yarunara (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, mjangels, 0, yarunara, yarunara, driver_device, 0, ROT180, "Dynax", "Mahjong Angels - Comic Theater Vol.2 (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1992, quiztvqq, 0, quiztvqq, quiztvqq, driver_device, 0, ROT180, "Dynax", "Quiz TV Gassyuukoku Q&Q (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1993, mjelctrn, 0, mjelctrn, mjelctrn, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, mjembase, mjelctrn, mjembase, mjembase, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electromagnetic Base", GAME_SUPPORTS_SAVE )
-GAME( 1990, mjelct3, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1990, mjelct3a, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3a, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, alt., Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1993, mjelctrb, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3, ROT180, "bootleg", "Mahjong Electron Base (parts 2 & 4, Japan, bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1990, majxtal7, 0, majxtal7, majxtal7, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1990, neruton, 0, neruton, neruton, dynax_state, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan, Rev. B?)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1990, nerutona, neruton, neruton, neruton, dynax_state, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan, Rev. A?)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1991, hanayara, 0, yarunara, hanayara, driver_device, 0, ROT180, "Dynax", "Hana wo Yaraneba! (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, mjcomv1, 0, yarunara, yarunara, driver_device, 0, ROT180, "Dynax", "Mahjong Comic Gekijou Vol.1 (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, tenkai, 0, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Tenkaigen", GAME_SUPPORTS_SAVE )
-GAME( 1991, tenkai2b, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Tenkaigen Part 2 (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1991, tenkaibb, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Tenkaigen (bootleg b)", GAME_SUPPORTS_SAVE )
-GAME( 1991, tenkaicb, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Tenkaigen (bootleg c)", GAME_SUPPORTS_SAVE )
-GAME( 1991, tenkaie, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1991, ougonpai, 0, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Ougon No Pai", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1991, ougonpaib,ougonpai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Ougon No Pai (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1994, mjreach, 0, tenkai, mjreach, dynax_state, mjreach, ROT0, "bootleg / Dynax", "Mahjong Reach (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1994, cdracula, 0, cdracula, cdracula, driver_device, 0, ROT0, "Yun Sung (Escape license)","Castle Of Dracula", GAME_SUPPORTS_SAVE ) // not a dynax board
-GAME( 1995, shpeng, 0, sprtmtch, drgpunch, driver_device, 0, ROT0, "WSAC Systems?", "Sea Hunter Penguin", GAME_NO_COCKTAIL | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE ) // not a dynax board. proms?
-GAME( 1996, majrjhdx, 0, majrjhdx, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Raijinhai DX", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1994, maya, 0, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 1)", MACHINE_SUPPORTS_SAVE ) // this set has backgrounds blacked out in attract
+GAME( 1994, mayaa, maya, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 2)", MACHINE_SUPPORTS_SAVE ) // this set has backgrounds blacked out in attract
+GAME( 1994, mayab, maya, sprtmtch, drgpunch, dynax_state, maya, ROT0, "Promat", "Maya (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, mayac, maya, sprtmtch, drgpunch, dynax_state, mayac, ROT0, "Promat", "Maya (set 4, clean)", MACHINE_SUPPORTS_SAVE )
+GAME( 199?, inca, 0, sprtmtch, drgpunch, dynax_state, maya, ROT0, "<unknown>", "Inca", MACHINE_SUPPORTS_SAVE )
+GAME( 199?, blktouch, 0, sprtmtch, drgpunch, dynax_state, blktouch, ROT0, "Yang Gi Co Ltd.", "Black Touch (Korea)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1989, mjfriday, 0, mjfriday, mjfriday, driver_device, 0, ROT180, "Dynax", "Mahjong Friday (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, gekisha, 0, gekisha, gekisha, driver_device, 0, ROT180, "Dynax", "Mahjong Gekisha", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mcnpshnt, 0, mcnpshnt, mcnpshnt, driver_device, 0, ROT0, "Dynax", "Mahjong Campus Hunting (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, 7jigen, 0, nanajign, nanajign, driver_device, 0, ROT180, "Dynax", "7jigen no Youseitachi - Mahjong 7 Dimensions (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1990, jantouki, 0, jantouki, jantouki, driver_device, 0, ROT0, "Dynax", "Jong Tou Ki (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, mjdialq2, 0, mjdialq2, mjdialq2, driver_device, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, mjdialq2a,mjdialq2, mjdialq2, mjdialq2, driver_device, 0, ROT180, "Dynax", "Mahjong Dial Q2 (Japan, alt.)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, yarunara, 0, yarunara, yarunara, driver_device, 0, ROT180, "Dynax", "Mahjong Yarunara (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, mjangels, 0, yarunara, yarunara, driver_device, 0, ROT180, "Dynax", "Mahjong Angels - Comic Theater Vol.2 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, quiztvqq, 0, quiztvqq, quiztvqq, driver_device, 0, ROT180, "Dynax", "Quiz TV Gassyuukoku Q&Q (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, mjelctrn, 0, mjelctrn, mjelctrn, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 4, Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mjembase, mjelctrn, mjembase, mjembase, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electromagnetic Base", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mjelct3, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, mjelct3a, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3a, ROT180, "Dynax", "Mahjong Electron Base (parts 2 & 3, alt., Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, mjelctrb, mjelctrn, mjelctrn, mjelct3, dynax_state, mjelct3, ROT180, "bootleg", "Mahjong Electron Base (parts 2 & 4, Japan, bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, majxtal7, 0, majxtal7, majxtal7, dynax_state, mjelct3, ROT180, "Dynax", "Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1990, neruton, 0, neruton, neruton, dynax_state, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan, Rev. B?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1990, nerutona, neruton, neruton, neruton, dynax_state, mjelct3, ROT180, "Dynax / Yukiyoshi Tokoro", "Mahjong Neruton Haikujiradan (Japan, Rev. A?)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, hanayara, 0, yarunara, hanayara, driver_device, 0, ROT180, "Dynax", "Hana wo Yaraneba! (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, mjcomv1, 0, yarunara, yarunara, driver_device, 0, ROT180, "Dynax", "Mahjong Comic Gekijou Vol.1 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, tenkai, 0, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Tenkaigen", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, tenkai2b, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Tenkaigen Part 2 (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, tenkaibb, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Tenkaigen (bootleg b)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, tenkaicb, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Tenkaigen (bootleg c)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, tenkaie, tenkai, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Tenkaigen (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, ougonpai, 0, tenkai, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Ougon No Pai", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, ougonpaib,ougonpai, tenkai, tenkai, driver_device, 0, ROT0, "bootleg", "Mahjong Ougon No Pai (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, mjreach, 0, tenkai, mjreach, dynax_state, mjreach, ROT0, "bootleg / Dynax", "Mahjong Reach (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, cdracula, 0, cdracula, cdracula, driver_device, 0, ROT0, "Yun Sung (Escape license)","Castle Of Dracula", MACHINE_SUPPORTS_SAVE ) // not a dynax board
+GAME( 1995, shpeng, 0, sprtmtch, drgpunch, driver_device, 0, ROT0, "WSAC Systems?", "Sea Hunter Penguin", MACHINE_NO_COCKTAIL | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) // not a dynax board. proms?
+GAME( 1996, majrjhdx, 0, majrjhdx, tenkai, driver_device, 0, ROT0, "Dynax", "Mahjong Raijinhai DX", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/dynduke.c b/src/mame/drivers/dynduke.c
index 200175fa2a7..803e2c501fa 100644
--- a/src/mame/drivers/dynduke.c
+++ b/src/mame/drivers/dynduke.c
@@ -92,7 +92,7 @@ static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 16, dynduke_state )
AM_RANGE(0x00000, 0x05fff) AM_RAM
AM_RANGE(0x06000, 0x067ff) AM_RAM_WRITE(background_w) AM_SHARE("back_data")
AM_RANGE(0x06800, 0x06fff) AM_RAM_WRITE(foreground_w) AM_SHARE("fore_data")
- AM_RANGE(0x07000, 0x07fff) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram")
+ AM_RANGE(0x07000, 0x07fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x0a000, 0x0a001) AM_WRITE(gfxbank_w)
AM_RANGE(0x0c000, 0x0c001) AM_WRITENOP
@@ -300,8 +300,9 @@ static MACHINE_CONFIG_START( dynduke, dynduke_state )
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", dynduke)
- MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_ADD("palette", 2048)
+ MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
// sound hardware
SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(14318180/4,1320000)
@@ -612,9 +613,9 @@ DRIVER_INIT_MEMBER(dynduke_state,dynduke)
/* Game Drivers */
-GAME( 1989, dynduke, 0, dynduke, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Europe set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, dyndukea, dynduke, dynduke, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Europe set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, dyndukej, dynduke, dynduke, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, dyndukeu, dynduke, dynduke, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu (Fabtek license)", "Dynamite Duke (US)", GAME_SUPPORTS_SAVE )
-GAME( 1989, dbldynj, dynduke, dbldyn, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu", "The Double Dynamites (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, dbldynu, dynduke, dynduke, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu (Fabtek license)", "The Double Dynamites (US)", GAME_SUPPORTS_SAVE )
+GAME( 1989, dynduke, 0, dynduke, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Europe set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, dyndukea, dynduke, dynduke, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Europe set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, dyndukej, dynduke, dynduke, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, dyndukeu, dynduke, dynduke, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu (Fabtek license)", "Dynamite Duke (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, dbldynj, dynduke, dbldyn, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu", "The Double Dynamites (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, dbldynu, dynduke, dynduke, dynduke, dynduke_state, dynduke, ROT0, "Seibu Kaihatsu (Fabtek license)", "The Double Dynamites (US)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/eacc.c b/src/mame/drivers/eacc.c
index 08b061939ab..1dbb2228a82 100644
--- a/src/mess/drivers/eacc.c
+++ b/src/mame/drivers/eacc.c
@@ -277,4 +277,4 @@ ROM_END
******************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, eacc, 0, 0, eacc, eacc, driver_device, 0, "Electronics Australia", "EA Car Computer", GAME_NO_SOUND_HW)
+COMP( 1982, eacc, 0, 0, eacc, eacc, driver_device, 0, "Electronics Australia", "EA Car Computer", MACHINE_NO_SOUND_HW)
diff --git a/src/mess/drivers/ec184x.c b/src/mame/drivers/ec184x.c
index bc190e9debc..28a1eee5d0f 100644
--- a/src/mess/drivers/ec184x.c
+++ b/src/mame/drivers/ec184x.c
@@ -6,12 +6,6 @@
Driver file for EC-184x series
- TODO (ec1840)
- - memory bank size is smaller (128K)
-
- TODO (ec1841)
- - hard disk is connected but requires changes to isa_hdc.c
-
***************************************************************************/
@@ -24,6 +18,8 @@
#include "cpu/i86/i86.h"
#include "machine/ram.h"
+#define EC1841_MEMBOARD_SIZE 512*1024
+
#define VERBOSE_DBG 1 /* general debug messages */
#define DBG_LOG(N,M,A) \
@@ -48,12 +44,11 @@ public:
required_device<cpu_device> m_maincpu;
DECLARE_MACHINE_RESET(ec184x);
- DECLARE_DRIVER_INIT(ec184x);
+ DECLARE_DRIVER_INIT(ec1841);
struct {
UINT8 enable[4];
int boards;
- int board_size;
} m_memory;
DECLARE_READ8_MEMBER(memboard_r);
@@ -109,13 +104,13 @@ WRITE8_MEMBER(ec184x_state::memboard_w)
if (BIT(current, 2) && !BIT(data, 2)) {
// disable read access
- program.unmap_read(0, m_memory.board_size-1);
+ program.unmap_read(0, EC1841_MEMBOARD_SIZE-1);
DBG_LOG(1,"ec1841_memboard_w",("unmap_read(%d)\n", offset));
}
if (BIT(current, 3) && !BIT(data, 3)) {
// disable write access
- program.unmap_write(0, 0x7ffff);
+ program.unmap_write(0, EC1841_MEMBOARD_SIZE-1);
DBG_LOG(1,"ec1841_memboard_w",("unmap_write(%d)\n", offset));
}
@@ -123,8 +118,8 @@ WRITE8_MEMBER(ec184x_state::memboard_w)
for(int i=0; i<4; i++)
m_memory.enable[i] &= 0xfb;
// enable read access
- membank("bank10")->set_base(m_ram->pointer() + offset*0x80000);
- program.install_read_bank(0, m_memory.board_size-1, "bank10");
+ membank("bank10")->set_base(m_ram->pointer() + offset*EC1841_MEMBOARD_SIZE);
+ program.install_read_bank(0, EC1841_MEMBOARD_SIZE-1, "bank10");
DBG_LOG(1,"ec1841_memboard_w",("map_read(%d)\n", offset));
}
@@ -132,26 +127,32 @@ WRITE8_MEMBER(ec184x_state::memboard_w)
for(int i=0; i<4; i++)
m_memory.enable[i] &= 0xf7;
// enable write access
- membank("bank20")->set_base(m_ram->pointer() + offset*0x80000);
- program.install_write_bank(0, m_memory.board_size-1, "bank20");
+ membank("bank20")->set_base(m_ram->pointer() + offset*EC1841_MEMBOARD_SIZE);
+ program.install_write_bank(0, EC1841_MEMBOARD_SIZE-1, "bank20");
DBG_LOG(1,"ec1841_memboard_w",("map_write(%d)\n", offset));
}
m_memory.enable[offset] = data;
}
-DRIVER_INIT_MEMBER( ec184x_state, ec184x )
+DRIVER_INIT_MEMBER( ec184x_state, ec1841 )
{
address_space &program = m_maincpu->space(AS_PROGRAM);
ram_device *m_ram = machine().device<ram_device>(RAM_TAG);
- m_memory.board_size = 512 * 1024; // XXX
- m_memory.boards = m_ram->size()/m_memory.board_size - 1;
+ m_memory.boards = m_ram->size()/EC1841_MEMBOARD_SIZE - 1;
if (m_memory.boards > 3)
m_memory.boards = 3;
- program.install_read_bank(0, m_memory.board_size-1, "bank10");
- program.install_write_bank(0, m_memory.board_size-1, "bank20");
+ // 640K configuration is special -- 512K board mapped at 0 + 128K board mapped at 512K
+ // XXX verify this was actually the case
+ if (m_ram->size() == 640*1024) {
+ program.install_read_bank(0, m_ram->size()-1, "bank10");
+ program.install_write_bank(0, m_ram->size()-1, "bank20");
+ } else {
+ program.install_read_bank(0, EC1841_MEMBOARD_SIZE-1, "bank10");
+ program.install_write_bank(0, EC1841_MEMBOARD_SIZE-1, "bank20");
+ }
membank( "bank10" )->set_base( m_ram->pointer() );
membank( "bank20" )->set_base( m_ram->pointer() );
}
@@ -271,8 +272,8 @@ static MACHINE_CONFIG_START( ec1841, ec184x_state )
MCFG_PC_KBDC_SLOT_ADD("mb:pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_EC_1841)
MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("512K")
- MCFG_RAM_EXTRA_OPTIONS("1024K,1576K,2048K") // 640K variant not emulated
+ MCFG_RAM_DEFAULT_SIZE("640K")
+ MCFG_RAM_EXTRA_OPTIONS("512K,1024K,1576K,2048K")
MACHINE_CONFIG_END
// XXX verify everything
@@ -374,14 +375,8 @@ ROM_START( ec1847 )
ROM_LOAD( "317_d28_2732.bin", 0x00000, 0x1000, CRC(8939599b) SHA1(53d02460cf93596882a96758ef4bac5fa1ce55b2)) // monochrome font
ROM_END
-/***************************************************************************
-
- Game driver(s)
-
-***************************************************************************/
-
/* YEAR ROM NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP ( 1987, ec1840, ibm5150, 0, ec1840, ec1841, ec184x_state, ec184x, "<unknown>", "EC-1840", GAME_NOT_WORKING)
-COMP ( 1987, ec1841, ibm5150, 0, ec1841, ec1841, ec184x_state, ec184x, "<unknown>", "EC-1841", 0)
-COMP ( 1989, ec1845, ibm5150, 0, ec1841, ec1841, ec184x_state, ec184x, "<unknown>", "EC-1845", GAME_NOT_WORKING)
-COMP ( 1990, ec1847, ibm5150, 0, ec1847, ec1841, driver_device, 0, "<unknown>", "EC-1847", GAME_NOT_WORKING)
+COMP ( 1987, ec1840, ibm5150, 0, ec1840, ec1841, driver_device, 0, "<unknown>", "EC-1840", MACHINE_NOT_WORKING)
+COMP ( 1987, ec1841, ibm5150, 0, ec1841, ec1841, ec184x_state, ec1841, "<unknown>", "EC-1841", 0)
+COMP ( 1989, ec1845, ibm5150, 0, ec1841, ec1841, ec184x_state, ec1841, "<unknown>", "EC-1845", MACHINE_NOT_WORKING)
+COMP ( 1990, ec1847, ibm5150, 0, ec1847, ec1841, driver_device, 0, "<unknown>", "EC-1847", MACHINE_NOT_WORKING)
diff --git a/src/mess/drivers/ec65.c b/src/mame/drivers/ec65.c
index 3e0a468e1a3..4f0fc30580e 100644
--- a/src/mess/drivers/ec65.c
+++ b/src/mame/drivers/ec65.c
@@ -246,5 +246,5 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1985, ec65, 0, 0, ec65, ec65, driver_device, 0, "Elektor Electronics", "EC-65", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1985, ec65k, ec65, 0, ec65k, ec65, driver_device, 0, "Elektor Electronics", "EC-65K", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1985, ec65, 0, 0, ec65, ec65, driver_device, 0, "Elektor Electronics", "EC-65", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1985, ec65k, ec65, 0, ec65k, ec65, driver_device, 0, "Elektor Electronics", "EC-65K", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/ecoinf1.c b/src/mame/drivers/ecoinf1.c
index 6de5fd27015..a4ba2c64e56 100644
--- a/src/mame/drivers/ecoinf1.c
+++ b/src/mame/drivers/ecoinf1.c
@@ -360,12 +360,12 @@ DRIVER_INIT_MEMBER(ecoinf1_state,ecoinf1)
// all roms might really be for the same game, just in different cabinet styles
// these ALL contain "Ver 3 BAR-X V1:84 TYPE T" strings
-GAME( 19??, ec_barxo, 0 , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 1)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 19??, ec_barxoa, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 2)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 19??, ec_barxob, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 3)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 19??, ec_barxoc, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 4)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 19??, ec_barxod, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 5)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 19??, ec_barxoe, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 6)" , GAME_IS_SKELETON_MECHANICAL)
-GAME( 19??, ec_bar5, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar 5 (older PCB) (Electrocoin)" , GAME_IS_SKELETON_MECHANICAL) // or just another Bar X set?
-GAME( 19??, ec_casbxo, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Casino Bar X (older PCB) (Electrocoin) (set 1)" , GAME_IS_SKELETON_MECHANICAL) // this one actually has some code offset changes
-GAME( 19??, ec_casbxoa,ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Casino Bar X (older PCB) (Electrocoin) (set 2)" , GAME_IS_SKELETON_MECHANICAL)
+GAME( 19??, ec_barxo, 0 , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 1)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 19??, ec_barxoa, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 2)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 19??, ec_barxob, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 3)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 19??, ec_barxoc, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 4)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 19??, ec_barxod, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 5)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 19??, ec_barxoe, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar X (older PCB) (Electrocoin) (set 6)" , MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 19??, ec_bar5, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Bar 5 (older PCB) (Electrocoin)" , MACHINE_IS_SKELETON_MECHANICAL) // or just another Bar X set?
+GAME( 19??, ec_casbxo, ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Casino Bar X (older PCB) (Electrocoin) (set 1)" , MACHINE_IS_SKELETON_MECHANICAL) // this one actually has some code offset changes
+GAME( 19??, ec_casbxoa,ec_barxo , ecoinf1_older, ecoinf1, ecoinf1_state, ecoinf1, ROT0, "Electrocoin", "Casino Bar X (older PCB) (Electrocoin) (set 2)" , MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/ecoinf2.c b/src/mame/drivers/ecoinf2.c
index e5020d27760..73d90e6cf61 100644
--- a/src/mame/drivers/ecoinf2.c
+++ b/src/mame/drivers/ecoinf2.c
@@ -794,13 +794,13 @@ DRIVER_INIT_MEMBER(ecoinf2_state,ecoinf2)
}
// OXO wh type (Phoenix?) (watchdog on port 5c?)
-GAME( 19??, ec_oxocg, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Classic Gold (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_oxocl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Club (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_oxogb, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Golden Bars (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_oxorl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Reels (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_oxorv, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Revolution (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_suprl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Super Reels (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_rcc, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Royal Casino Club (Electrocoin) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-
-GAME( 19??, ec_sumnd, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Concept Games Ltd", "Super Multi Nudger (Concept / Electrocoin Oxo) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_sumnc, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Concept Games Ltd", "Casino Super Multi Nudger (Concept / Electrocoin Oxo) (?)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
+GAME( 19??, ec_oxocg, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Classic Gold (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_oxocl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Club (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_oxogb, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Golden Bars (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_oxorl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Reels (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_oxorv, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Oxo Revolution (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_suprl, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Super Reels (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_rcc, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Electrocoin", "Royal Casino Club (Electrocoin) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+
+GAME( 19??, ec_sumnd, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Concept Games Ltd", "Super Multi Nudger (Concept / Electrocoin Oxo) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_sumnc, 0 , ecoinf2_oxo, ecoinf2, ecoinf2_state, ecoinf2, ROT0, "Concept Games Ltd", "Casino Super Multi Nudger (Concept / Electrocoin Oxo) (?)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
diff --git a/src/mame/drivers/ecoinf3.c b/src/mame/drivers/ecoinf3.c
index f324c8825dd..2bf9fce48d3 100644
--- a/src/mame/drivers/ecoinf3.c
+++ b/src/mame/drivers/ecoinf3.c
@@ -849,15 +849,15 @@ DRIVER_INIT_MEMBER(ecoinf3_state,ecoinf3_swap)
// another hw type (similar to stuff in ecoinf2.c) (watchdog on port 58?)
-GAME( 19??, ec_pyram, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3_swap, ROT0, "Electrocoin", "Pyramid (v1) (Electrocoin)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_pyrama, ec_pyram , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pyramid (v6) (Electrocoin)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_sphin, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3_swap, ROT0, "Electrocoin", "Sphinx (v2) (Electrocoin) (set 1)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_sphina, ec_sphin , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Sphinx (v2) (Electrocoin) (set 2)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_sphinb, ec_sphin , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Sphinx (v1) (Electrocoin)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_penni, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pennies From Heaven (v1) (Electrocoin)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_pennia, ec_penni , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pennies From Heaven (v6) (Electrocoin)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_stair, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Stairway To Heaven (v11) (Electrocoin)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_staira, ec_stair , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Stairway To Heaven (v1) (Electrocoin)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_laby, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Labyrinth (v8) (Electrocoin)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_labya, ec_laby , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Labyrinth (v10) (Electrocoin)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
-GAME( 19??, ec_secrt, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Secret Castle (v1) (Electrocoin)" , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
+GAME( 19??, ec_pyram, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3_swap, ROT0, "Electrocoin", "Pyramid (v1) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_pyrama, ec_pyram , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pyramid (v6) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_sphin, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3_swap, ROT0, "Electrocoin", "Sphinx (v2) (Electrocoin) (set 1)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_sphina, ec_sphin , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Sphinx (v2) (Electrocoin) (set 2)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_sphinb, ec_sphin , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Sphinx (v1) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_penni, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pennies From Heaven (v1) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_pennia, ec_penni , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Pennies From Heaven (v6) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_stair, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Stairway To Heaven (v11) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_staira, ec_stair , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Stairway To Heaven (v1) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_laby, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Labyrinth (v8) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_labya, ec_laby , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Labyrinth (v10) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
+GAME( 19??, ec_secrt, 0 , ecoinf3_pyramid, ecoinf3, ecoinf3_state, ecoinf3, ROT0, "Electrocoin", "Secret Castle (v1) (Electrocoin)" , MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL)
diff --git a/src/mame/drivers/ecoinfr.c b/src/mame/drivers/ecoinfr.c
index 2801206c24d..570e4817185 100644
--- a/src/mame/drivers/ecoinfr.c
+++ b/src/mame/drivers/ecoinfr.c
@@ -48,7 +48,7 @@
#define UPD8251_TAG "upd8251"
-#define GAME_FLAGS GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL
+#define GAME_FLAGS MACHINE_NO_SOUND|MACHINE_REQUIRES_ARTWORK|MACHINE_NOT_WORKING|MACHINE_MECHANICAL
class ecoinfr_state : public driver_device
{
diff --git a/src/mame/drivers/egghunt.c b/src/mame/drivers/egghunt.c
index b4b47eb3dfe..881430c5593 100644
--- a/src/mame/drivers/egghunt.c
+++ b/src/mame/drivers/egghunt.c
@@ -468,4 +468,4 @@ ROM_START( egghunt )
ROM_LOAD( "rom1.bin", 0x00000, 0x80000, CRC(f03589bc) SHA1(4d9c8422ac3c4c3ecba3bcf0ed47b8c7d5903f8c) )
ROM_END
-GAME( 1995, egghunt, 0, egghunt, egghunt, driver_device, 0, ROT0, "Invi Image", "Egg Hunt", GAME_SUPPORTS_SAVE )
+GAME( 1995, egghunt, 0, egghunt, egghunt, driver_device, 0, ROT0, "Invi Image", "Egg Hunt", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/einstein.c b/src/mame/drivers/einstein.c
index 3be299ab83c..c0c6190c76c 100644
--- a/src/mess/drivers/einstein.c
+++ b/src/mame/drivers/einstein.c
@@ -830,4 +830,4 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
COMP( 1984, einstein, 0, 0, einstein, einstein, driver_device, 0, "Tatung", "Einstein TC-01", 0 )
COMP( 1984, einstei2, einstein, 0, einstei2, einstein_80col, driver_device, 0, "Tatung", "Einstein TC-01 + 80 column device", 0 )
-COMP( 1984, einst256, 0, 0, einstein, einstein, driver_device, 0, "Tatung", "Einstein 256", GAME_NOT_WORKING )
+COMP( 1984, einst256, 0, 0, einstein, einstein, driver_device, 0, "Tatung", "Einstein 256", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/elecbowl.c b/src/mame/drivers/elecbowl.c
index 3d65d7b3d74..934bdd1f719 100644
--- a/src/mess/drivers/elecbowl.c
+++ b/src/mame/drivers/elecbowl.c
@@ -14,8 +14,8 @@
* edge connector to sensors(switches trigger when ball rolls over)
and other inputs
- lamp translation table: SN74259.u5(mux 1) goes to MESS output lamp5x,
- SN74259.u6(mux 2) goes to MESS output lamp6x. u1-u3 are SN75492 ICs,
+ lamp translation table: SN74259.u5(mux 1) goes to MAME output lamp5x,
+ SN74259.u6(mux 2) goes to MAME output lamp6x. u1-u3 are SN75492 ICs,
where other: u1 A2 is N/C, u3 A1 is from O2 and goes to digits seg C.
u5 Q0 -> u1 A4 -> L2 (pin #2) u6 Q0 -> u3 A4 -> L1 (pin #1)
@@ -219,4 +219,4 @@ ROM_START( elecbowl )
ROM_END
-CONS( 1978, elecbowl, 0, 0, elecbowl, elecbowl, driver_device, 0, "Marx", "Electronic Bowling (Marx)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND | GAME_MECHANICAL | GAME_NOT_WORKING )
+CONS( 1978, elecbowl, 0, 0, elecbowl, elecbowl, driver_device, 0, "Marx", "Electronic Bowling (Marx)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND | MACHINE_MECHANICAL | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/electra.c b/src/mame/drivers/electra.c
index 4ef8ee27d09..aebc4cc838b 100644
--- a/src/mame/drivers/electra.c
+++ b/src/mame/drivers/electra.c
@@ -127,4 +127,4 @@ ROM_START( avenger )
ROM_END
-GAME( 1975, avenger, 0, electra, 0, driver_device, 0, ROT0, "Electra", "Avenger [TTL]", GAME_IS_SKELETON )
+GAME( 1975, avenger, 0, electra, 0, driver_device, 0, ROT0, "Electra", "Avenger [TTL]", MACHINE_IS_SKELETON )
diff --git a/src/mess/drivers/electron.c b/src/mame/drivers/electron.c
index fbf8e10fe7d..9dbc5468a6f 100644
--- a/src/mess/drivers/electron.c
+++ b/src/mame/drivers/electron.c
@@ -1,12 +1,54 @@
// license:BSD-3-Clause
// copyright-holders:Wilbert Pol
/******************************************************************************
- Acorn Electron driver
-
- MESS Driver By:
-
- Wilbert Pol
-
+ Acorn Electron driver
+ By Wilbert Pol
+
+Hardware Overview
+-----------------
+The Acorn Electron is a budget version of the BBC Micro home computer
+Basic specs are:
+6502 CPU @ 2MHz or 1MHz
+32k RAM and 32k ROM
+Text modes: 20x32, 40x25, 40x32, 80x25, 80x32
+Graphics modes: 160x256 (4 or 16 colors), 320x256 (2 or 4 colors), 640x256 (2 colors), 320x200 (2 colors), 640x200 (2 colors)
+Colors: 8 colors (either solid or flashing)
+Sound: 1 channel, 7 octaves; built-in speaker
+Internal ports for cassette storage, RGB/CVBS monitors and TV output
+Various expansions can be added via the rear expansion port
+
+PCB Layout
+---------- |-------------------|
+ |--------| EXPANSION PORT |
+|-----|---------------------| |---||---------|
+|MOD | SPKR 16MHz LS169 18VAC|| []18VAC INPUT
+| |17.7345MHz ROM 18VAC|| POWER |
+|-----| 74S04 |----| || SUPPLY |
+| KBD_CONN 6502 |ULA | || |
+|CVBS |----| || +5VDC |
+|RGB LS00 LS86 || -5VDC |
+| PWR|| |
+|CASS LM324 LS00 LS86 S74 LS74 4164 4164 4164 4164 || |
+|------------------------------------------------------------||---------|
+Notes: (all IC's shown. Only 16 ICs are used)
+ 6502 - 6502 CPU, clock input 2.000MHz [16/8]
+ ULA - Custom logic chip 12CO21, also containing most of the BBC Micro circuitry
+ Early PCB revisions used a PLCC68 chip in a socket. Later revisions used a
+ PGA68 chip soldered directly into the motherboard
+ 4164 - 4164 64k x4-bit DRAM (4 chips for 32kbytes total)
+ ROM - Hitachi HN613256 32k x8-bit MASK ROM containing OS & BASIC
+ LM324 - Texas Instruments LM324 Operational Amplifier
+ MOD - UHF TV modulator UM1233-E36
+ CVBS - Composite color video output socket
+ RGB - RGB monitor video output socket
+ CASS - Cassette port
+ PWR - 3-pin power input from internal power supply
+ KBD_CONN - 22-pin keyboard connector
+ SPKR - 2-pin internal speaker connector
+
+******************************************************************************
+Emulation notes:
+
I don't have a real system to verify the behaviour of the emulation. The things
that can be done through BASIC programs seem to behave properly (most of the time :).
@@ -23,7 +65,6 @@ Missing:
- Support for floppy disks
- Other peripherals
- Keyboard is missing the 'Break' key
-
******************************************************************************/
#include "emu.h"
@@ -205,4 +246,4 @@ ROM_START(electron)
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP ( 1983, electron, 0, 0, electron, electron, driver_device, 0, "Acorn", "Acorn Electron", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
+COMP ( 1983, electron, 0, 0, electron, electron, driver_device, 0, "Acorn", "Acorn Electron", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mess/drivers/elekscmp.c b/src/mame/drivers/elekscmp.c
index 01ffefe6212..7783184917c 100644
--- a/src/mess/drivers/elekscmp.c
+++ b/src/mame/drivers/elekscmp.c
@@ -162,4 +162,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1977, elekscmp, 0, 0, elekscmp, elekscmp, driver_device, 0, "Elektor Electronics", "Elektor SC/MP", GAME_NO_SOUND_HW)
+COMP( 1977, elekscmp, 0, 0, elekscmp, elekscmp, driver_device, 0, "Elektor Electronics", "Elektor SC/MP", MACHINE_NO_SOUND_HW)
diff --git a/src/mess/drivers/elf.c b/src/mame/drivers/elf.c
index 04a98568f2b..5fdfc47035b 100644
--- a/src/mess/drivers/elf.c
+++ b/src/mame/drivers/elf.c
@@ -285,4 +285,4 @@ ROM_END
/* System Drivers */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1978, elf2, 0, 0, elf2, elf2, driver_device, 0, "Netronics", "Elf II", GAME_SUPPORTS_SAVE | GAME_NO_SOUND)
+COMP( 1978, elf2, 0, 0, elf2, elf2, driver_device, 0, "Netronics", "Elf II", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/elwro800.c b/src/mame/drivers/elwro800.c
index fa377badef9..fa377badef9 100644
--- a/src/mess/drivers/elwro800.c
+++ b/src/mame/drivers/elwro800.c
diff --git a/src/mame/drivers/embargo.c b/src/mame/drivers/embargo.c
index d5f919e4012..7cc743f64b1 100644
--- a/src/mame/drivers/embargo.c
+++ b/src/mame/drivers/embargo.c
@@ -298,4 +298,4 @@ ROM_END
*
*************************************/
-GAME( 1977, embargo, 0, embargo, embargo, driver_device, 0, ROT0, "Cinematronics", "Embargo", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1977, embargo, 0, embargo, embargo, driver_device, 0, ROT0, "Cinematronics", "Embargo", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/enigma2.c b/src/mame/drivers/enigma2.c
index 78e1d9c854e..06db62038d8 100644
--- a/src/mame/drivers/enigma2.c
+++ b/src/mame/drivers/enigma2.c
@@ -55,9 +55,6 @@ TODO:
#define INT_TRIGGER_COUNT_2 (0x18f)
-#define NUM_PENS (8)
-
-
class enigma2_state : public driver_device
{
public:
@@ -66,7 +63,10 @@ public:
m_videoram(*this, "videoram"),
m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu"),
- m_screen(*this, "screen"){ }
+ m_screen(*this, "screen"),
+ m_palette(*this, "palette"),
+ m_colors(*this, "colors"),
+ m_stars(*this, "stars"){ }
/* memory pointers */
required_shared_ptr<UINT8> m_videoram;
@@ -85,6 +85,10 @@ public:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
required_device<screen_device> m_screen;
+ optional_device<palette_device> m_palette;
+ optional_region_ptr<UINT8> m_colors;
+ optional_region_ptr<UINT8> m_stars;
+
DECLARE_READ8_MEMBER(dip_switch_r);
DECLARE_WRITE8_MEMBER(sound_data_w);
DECLARE_WRITE8_MEMBER(enigma2_flip_screen_w);
@@ -103,7 +107,6 @@ public:
inline int vysnc_chain_counter_to_vpos( UINT16 counter );
void create_interrupt_timers( );
void start_interrupt_timers( );
- void get_pens(pen_t *pens);
};
@@ -202,26 +205,9 @@ void enigma2_state::machine_reset()
*
*************************************/
-void enigma2_state::get_pens(pen_t *pens)
-{
- offs_t i;
-
- for (i = 0; i < NUM_PENS; i++)
- {
- /* this color gun arrengement is supported by the flyer screenshot */
- pens[i] = rgb_t(pal1bit(i >> 2), pal1bit(i >> 1), pal1bit(i >> 0));
- }
-}
-
-
UINT32 enigma2_state::screen_update_enigma2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{
- pen_t pens[NUM_PENS];
-
const rectangle &visarea = screen.visible_area();
- UINT8 *prom = memregion("proms")->base();
- UINT8 *color_map_base = m_flip_screen ? &prom[0x0400] : &prom[0x0000];
- UINT8 *star_map_base = (m_blink_count & 0x08) ? &prom[0x0c00] : &prom[0x0800];
UINT8 x = 0;
UINT16 bitmap_y = visarea.min_y;
@@ -230,8 +216,6 @@ UINT32 enigma2_state::screen_update_enigma2(screen_device &screen, bitmap_rgb32
UINT8 fore_color = 0;
UINT8 star_color = 0;
- get_pens(pens);
-
while (1)
{
UINT8 bit;
@@ -241,22 +225,29 @@ UINT32 enigma2_state::screen_update_enigma2(screen_device &screen, bitmap_rgb32
if ((x & 0x07) == 0x00)
{
offs_t color_map_address = (y >> 3 << 5) | (x >> 3);
+
/* the schematics shows it like this, but it doesn't work as this would
produce no stars, due to the contents of the PROM -- maybe there is
a star disabled bit somewhere that's connected here instead of flip_screen() */
/* star_map_address = (y >> 4 << 6) | (engima2_flip_screen_get() << 5) | (x >> 3); */
offs_t star_map_address = (y >> 4 << 6) | 0x20 | (x >> 3);
+ if (m_blink_count & 0x08)
+ star_map_address |= 0x400;
offs_t videoram_address = (y << 5) | (x >> 3);
/* when the screen is flipped, all the video address bits are inverted,
and the adder at 16A is activated */
- if (m_flip_screen) videoram_address = (~videoram_address + 0x0400) & 0x1fff;
+ if (m_flip_screen)
+ {
+ color_map_address |= 0x400;
+ videoram_address = (~videoram_address + 0x0400) & 0x1fff;
+ }
video_data = m_videoram[videoram_address];
- fore_color = color_map_base[color_map_address] & 0x07;
- star_color = star_map_base[star_map_address] & 0x07;
+ fore_color = m_colors[color_map_address] & 0x07;
+ star_color = m_stars[star_map_address] & 0x07;
}
/* plot the current pixel */
@@ -277,7 +268,7 @@ UINT32 enigma2_state::screen_update_enigma2(screen_device &screen, bitmap_rgb32
/* stars only appear at certain positions */
color = ((x & y & 0x0f) == 0x0f) ? star_color : 0;
- bitmap.pix32(bitmap_y, x) = pens[color];
+ bitmap.pix32(bitmap_y, x) = m_palette->pen_color(color);
/* next pixel */
x = x + 1;
@@ -612,6 +603,8 @@ static MACHINE_CONFIG_START( enigma2, enigma2_state )
MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART)
MCFG_SCREEN_UPDATE_DRIVER(enigma2_state, screen_update_enigma2)
+ MCFG_PALETTE_ADD_3BIT_BGR("palette")
+
/* audio hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -662,9 +655,11 @@ ROM_START( enigma2 )
ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "enigma2.s", 0x0000, 0x1000, CRC(68fd8c54) SHA1(69996d5dfd996f0aacb26e397bef314204a2a88a) )
- ROM_REGION( 0x1000, "proms", 0 ) /* color map/star map */
+ ROM_REGION( 0x0800, "colors", 0 )
ROM_LOAD( "7.11f", 0x0000, 0x0800, CRC(409b5aad) SHA1(1b774a70f725637458ed68df9ed42476291b0e43) )
- ROM_LOAD( "8.13f", 0x0800, 0x0800, CRC(e9cb116d) SHA1(41da4f46c5614ec3345c233467ebad022c6b0bf5) )
+
+ ROM_REGION( 0x0800, "stars", 0 )
+ ROM_LOAD( "8.13f", 0x0000, 0x0800, CRC(e9cb116d) SHA1(41da4f46c5614ec3345c233467ebad022c6b0bf5) )
ROM_END
@@ -709,6 +704,6 @@ DRIVER_INIT_MEMBER(enigma2_state,enigma2)
-GAME( 1981, enigma2, 0, enigma2, enigma2, enigma2_state, enigma2, ROT270, "Game Plan (Zilec Electronics license)", "Enigma II", GAME_SUPPORTS_SAVE )
-GAME( 1984, enigma2a, enigma2, enigma2a, enigma2a, enigma2_state, enigma2, ROT270, "Zilec Electronics", "Enigma II (Space Invaders hardware)", GAME_SUPPORTS_SAVE )
-GAME( 1981, enigma2b, enigma2, enigma2a, enigma2a, enigma2_state, enigma2, ROT270, "Zilec Electronics", "Phantoms II (Space Invaders hardware)", GAME_SUPPORTS_SAVE )
+GAME( 1981, enigma2, 0, enigma2, enigma2, enigma2_state, enigma2, ROT270, "Game Plan (Zilec Electronics license)", "Enigma II", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, enigma2a, enigma2, enigma2a, enigma2a, enigma2_state, enigma2, ROT270, "Zilec Electronics", "Enigma II (Space Invaders hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, enigma2b, enigma2, enigma2a, enigma2a, enigma2_state, enigma2, ROT270, "Zilec Electronics", "Phantoms II (Space Invaders hardware)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/mirage.c b/src/mame/drivers/enmirage.c
index dc39d620897..1080a269dc9 100644
--- a/src/mess/drivers/mirage.c
+++ b/src/mame/drivers/enmirage.c
@@ -283,4 +283,4 @@ DRIVER_INIT_MEMBER(mirage_state,mirage)
m_via->write_pb7(0);
}
-CONS( 1984, enmirage, 0, 0, mirage, mirage, mirage_state, mirage, "Ensoniq", "Ensoniq Mirage", GAME_NOT_WORKING )
+CONS( 1984, enmirage, 0, 0, mirage, mirage, mirage_state, mirage, "Ensoniq", "Ensoniq Mirage", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/eolith.c b/src/mame/drivers/eolith.c
index 6a90413268d..df62012572c 100644
--- a/src/mame/drivers/eolith.c
+++ b/src/mame/drivers/eolith.c
@@ -1569,22 +1569,22 @@ DRIVER_INIT_MEMBER(eolith_state,hidctch3)
*
*************************************/
-GAME( 1998, linkypip, 0, eolith45, linkypip, eolith_state, eolith, ROT0, "Eolith", "Linky Pipe", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1998, ironfort, 0, ironfort, ironfort, eolith_state, eolith, ROT0, "Eolith", "Iron Fortress", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1998, ironfortj, ironfort, ironfort, ironfortj, eolith_state, eolith, ROT0, "Eolith", "Iron Fortress (Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1998, hidnctch, 0, eolith45, hidnctch, eolith_state, eolith, ROT0, "Eolith", "Hidden Catch (World) / Tul Lin Gu Lim Chat Ki '98 (Korea) (pcb ver 3.03)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // or Teurrin Geurim Chajgi '98
-GAME( 1998, raccoon, 0, eolith45, raccoon, eolith_state, eolith, ROT0, "Eolith", "Raccoon World", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1998, puzzlekg, 0, eolith45, puzzlekg, eolith_state, eolith, ROT0, "Eolith", "Puzzle King (Dance & Puzzle)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1999, candy, 0, eolith50, candy, eolith_state, eolith, ROT0, "Eolith", "Candy Candy", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1999, hidctch2, 0, eolith50, hidctch2, eolith_state, hidctch2, ROT0, "Eolith", "Hidden Catch 2 (pcb ver 3.03) (Kor/Eng) (AT89c52 protected)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1999, hidctch2a, hidctch2, eolith50, hidctch2, eolith_state, eolith, ROT0, "Eolith", "Hidden Catch 2 (pcb ver 1.00) (Kor/Eng/Jpn/Chi)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1999, hidnc2k, 0, eolith50, hidctch2, eolith_state, hidnc2k, ROT0, "Eolith", "Hidden Catch 2000 (AT89c52 protected)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1999, landbrk, 0, eolith45, landbrk, eolith_state, landbrk, ROT0, "Eolith", "Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 3.02)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // or Miss Ttang Jjareugi
-GAME( 1999, landbrka, landbrk, eolith45, landbrk, eolith_state, landbrka, ROT0, "Eolith", "Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 3.03) (AT89c52 protected)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // or Miss Ttang Jjareugi
-GAME( 1999, nhidctch, 0, eolith45, hidctch2, eolith_state, eolith, ROT0, "Eolith", "New Hidden Catch (World) / New Tul Lin Gu Lim Chat Ki '98 (Korea) (pcb ver 3.02)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // or New Teurrin Geurim Chajgi '98
-GAME( 1999, penfan, 0, eolith45, penfan, eolith_state, eolith, ROT0, "Eolith", "Penfan Girls - Step1. Mild Mind (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // alt title of Ribbon
-GAME( 1999, penfana, penfan, eolith45, penfan, eolith_state, eolith, ROT0, "Eolith", "Penfan Girls - Step1. Mild Mind (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2000, stealsee, 0, eolith45, stealsee, eolith_state, eolith, ROT0, "Moov Generation / Eolith", "Steal See", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2000, hidctch3, 0, eolith50, hidctch3, eolith_state, hidctch3, ROT0, "Eolith", "Hidden Catch 3 (ver 1.00 / pcb ver 3.05)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2001, fort2b, 0, eolith50, common, eolith_state, eolith, ROT0, "Eolith", "Fortress 2 Blue Arcade (ver 1.01 / pcb ver 3.05)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2001, fort2ba, fort2b, eolith50, common, eolith_state, eolith, ROT0, "Eolith", "Fortress 2 Blue Arcade (ver 1.00 / pcb ver 3.05)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1998, linkypip, 0, eolith45, linkypip, eolith_state, eolith, ROT0, "Eolith", "Linky Pipe", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1998, ironfort, 0, ironfort, ironfort, eolith_state, eolith, ROT0, "Eolith", "Iron Fortress", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1998, ironfortj, ironfort, ironfort, ironfortj, eolith_state, eolith, ROT0, "Eolith", "Iron Fortress (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1998, hidnctch, 0, eolith45, hidnctch, eolith_state, eolith, ROT0, "Eolith", "Hidden Catch (World) / Tul Lin Gu Lim Chat Ki '98 (Korea) (pcb ver 3.03)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // or Teurrin Geurim Chajgi '98
+GAME( 1998, raccoon, 0, eolith45, raccoon, eolith_state, eolith, ROT0, "Eolith", "Raccoon World", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1998, puzzlekg, 0, eolith45, puzzlekg, eolith_state, eolith, ROT0, "Eolith", "Puzzle King (Dance & Puzzle)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, candy, 0, eolith50, candy, eolith_state, eolith, ROT0, "Eolith", "Candy Candy", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, hidctch2, 0, eolith50, hidctch2, eolith_state, hidctch2, ROT0, "Eolith", "Hidden Catch 2 (pcb ver 3.03) (Kor/Eng) (AT89c52 protected)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, hidctch2a, hidctch2, eolith50, hidctch2, eolith_state, eolith, ROT0, "Eolith", "Hidden Catch 2 (pcb ver 1.00) (Kor/Eng/Jpn/Chi)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, hidnc2k, 0, eolith50, hidctch2, eolith_state, hidnc2k, ROT0, "Eolith", "Hidden Catch 2000 (AT89c52 protected)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1999, landbrk, 0, eolith45, landbrk, eolith_state, landbrk, ROT0, "Eolith", "Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 3.02)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // or Miss Ttang Jjareugi
+GAME( 1999, landbrka, landbrk, eolith45, landbrk, eolith_state, landbrka, ROT0, "Eolith", "Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 3.03) (AT89c52 protected)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // or Miss Ttang Jjareugi
+GAME( 1999, nhidctch, 0, eolith45, hidctch2, eolith_state, eolith, ROT0, "Eolith", "New Hidden Catch (World) / New Tul Lin Gu Lim Chat Ki '98 (Korea) (pcb ver 3.02)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // or New Teurrin Geurim Chajgi '98
+GAME( 1999, penfan, 0, eolith45, penfan, eolith_state, eolith, ROT0, "Eolith", "Penfan Girls - Step1. Mild Mind (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // alt title of Ribbon
+GAME( 1999, penfana, penfan, eolith45, penfan, eolith_state, eolith, ROT0, "Eolith", "Penfan Girls - Step1. Mild Mind (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2000, stealsee, 0, eolith45, stealsee, eolith_state, eolith, ROT0, "Moov Generation / Eolith", "Steal See", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2000, hidctch3, 0, eolith50, hidctch3, eolith_state, hidctch3, ROT0, "Eolith", "Hidden Catch 3 (ver 1.00 / pcb ver 3.05)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2001, fort2b, 0, eolith50, common, eolith_state, eolith, ROT0, "Eolith", "Fortress 2 Blue Arcade (ver 1.01 / pcb ver 3.05)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2001, fort2ba, fort2b, eolith50, common, eolith_state, eolith, ROT0, "Eolith", "Fortress 2 Blue Arcade (ver 1.00 / pcb ver 3.05)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/eolith16.c b/src/mame/drivers/eolith16.c
index 317f3eb7aad..4cb68dd4875 100644
--- a/src/mame/drivers/eolith16.c
+++ b/src/mame/drivers/eolith16.c
@@ -262,4 +262,4 @@ DRIVER_INIT_MEMBER(eolith16_state,eolith16)
init_speedup();
}
-GAME( 1999, klondkp, 0, eolith16, eolith16, eolith16_state, eolith16, ROT0, "Eolith", "KlonDike+", GAME_SUPPORTS_SAVE )
+GAME( 1999, klondkp, 0, eolith16, eolith16, eolith16_state, eolith16, ROT0, "Eolith", "KlonDike+", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/ep64.c b/src/mame/drivers/ep64.c
index a2608cd4ea5..4b384701d63 100644
--- a/src/mess/drivers/ep64.c
+++ b/src/mame/drivers/ep64.c
@@ -595,6 +595,6 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1985, ep64, 0, 0, ep64, ep64, driver_device, 0, "Enterprise Computers", "Enterprise Sixty Four", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-COMP( 1985, phc64, ep64, 0, ep64, ep64, driver_device, 0, "Hegener & Glaser", "Mephisto PHC 64 (Germany)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-COMP( 1986, ep128, ep64, 0, ep128, ep64, driver_device, 0, "Enterprise Computers", "Enterprise One Two Eight", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
+COMP( 1985, ep64, 0, 0, ep64, ep64, driver_device, 0, "Enterprise Computers", "Enterprise Sixty Four", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+COMP( 1985, phc64, ep64, 0, ep64, ep64, driver_device, 0, "Hegener & Glaser", "Mephisto PHC 64 (Germany)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+COMP( 1986, ep128, ep64, 0, ep128, ep64, driver_device, 0, "Enterprise Computers", "Enterprise One Two Eight", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/epos.c b/src/mame/drivers/epos.c
index 42841368c3d..65038cf3d72 100644
--- a/src/mame/drivers/epos.c
+++ b/src/mame/drivers/epos.c
@@ -640,12 +640,12 @@ DRIVER_INIT_MEMBER(epos_state,dealer)
*
*************************************/
-GAME( 1982, megadon, 0, epos, megadon, driver_device, 0, ROT270, "Epos Corporation (Photar Industries license)", "Megadon", GAME_SUPPORTS_SAVE )
-GAME( 1982, catapult, 0, epos, catapult, driver_device, 0, ROT270, "Epos Corporation", "Catapult", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) /* bad rom, hold f2 for test mode */
-GAME( 1983, suprglob, 0, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "Super Glob", GAME_SUPPORTS_SAVE )
-GAME( 1983, theglob, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob", GAME_SUPPORTS_SAVE )
-GAME( 1983, theglob2, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob (earlier)", GAME_SUPPORTS_SAVE )
-GAME( 1983, theglob3, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob (set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1984, igmo, 0, epos, igmo, driver_device, 0, ROT270, "Epos Corporation", "IGMO", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1984, dealer, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "The Dealer", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1984, revenger, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "Revenger", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1982, megadon, 0, epos, megadon, driver_device, 0, ROT270, "Epos Corporation (Photar Industries license)", "Megadon", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, catapult, 0, epos, catapult, driver_device, 0, ROT270, "Epos Corporation", "Catapult", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) /* bad rom, hold f2 for test mode */
+GAME( 1983, suprglob, 0, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "Super Glob", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, theglob, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, theglob2, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob (earlier)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, theglob3, suprglob, epos, suprglob, driver_device, 0, ROT270, "Epos Corporation", "The Glob (set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, igmo, 0, epos, igmo, driver_device, 0, ROT270, "Epos Corporation", "IGMO", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, dealer, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "The Dealer", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, revenger, 0, dealer, dealer, epos_state, dealer, ROT270, "Epos Corporation", "Revenger", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/eprom.c b/src/mame/drivers/eprom.c
index 41268274452..87f9fb4063e 100644
--- a/src/mame/drivers/eprom.c
+++ b/src/mame/drivers/eprom.c
@@ -749,8 +749,8 @@ DRIVER_INIT_MEMBER(eprom_state,guts)
*
*************************************/
-GAME( 1989, eprom, 0, eprom, eprom, eprom_state, eprom, ROT0, "Atari Games", "Escape from the Planet of the Robot Monsters (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, eprom2, eprom, eprom, eprom, eprom_state, eprom, ROT0, "Atari Games", "Escape from the Planet of the Robot Monsters (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, klaxp1, klax, klaxp, klaxp, eprom_state, klaxp, ROT0, "Atari Games", "Klax (prototype set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, klaxp2, klax, klaxp, klaxp, eprom_state, klaxp, ROT0, "Atari Games", "Klax (prototype set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1989, eprom, 0, eprom, eprom, eprom_state, eprom, ROT0, "Atari Games", "Escape from the Planet of the Robot Monsters (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, eprom2, eprom, eprom, eprom, eprom_state, eprom, ROT0, "Atari Games", "Escape from the Planet of the Robot Monsters (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, klaxp1, klax, klaxp, klaxp, eprom_state, klaxp, ROT0, "Atari Games", "Klax (prototype set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, klaxp2, klax, klaxp, klaxp, eprom_state, klaxp, ROT0, "Atari Games", "Klax (prototype set 2)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, guts, 0, guts, guts, eprom_state, guts, ROT0, "Atari Games", "Guts n' Glory (prototype)", 0 )
diff --git a/src/mame/drivers/equites.c b/src/mame/drivers/equites.c
index 17de0a8ab1e..bf5dcfc58d9 100644
--- a/src/mame/drivers/equites.c
+++ b/src/mame/drivers/equites.c
@@ -1885,13 +1885,13 @@ DRIVER_INIT_MEMBER(equites_state,hvoltage)
// Game Entries
// Equites Hardware
-GAME( 1984, equites, 0, equites, equites, equites_state, equites, ROT90, "Alpha Denshi Co.", "Equites", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1984, equitess, equites, equites, equites, equites_state, equites, ROT90, "Alpha Denshi Co. (Sega license)", "Equites (Sega)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1984, bullfgtr, 0, equites, bullfgtr, equites_state, bullfgtr, ROT90, "Alpha Denshi Co.", "Bull Fighter", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1984, bullfgtrs,bullfgtr, equites, bullfgtr, equites_state, bullfgtr, ROT90, "Alpha Denshi Co. (Sega license)", "Bull Fighter (Sega)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1985, kouyakyu, 0, equites, kouyakyu, equites_state, kouyakyu, ROT0, "Alpha Denshi Co.", "The Koukouyakyuh", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1985, gekisou, 0, gekisou, gekisou, equites_state, gekisou, ROT90, "Eastern Corp.", "Gekisou (Japan)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1984, equites, 0, equites, equites, equites_state, equites, ROT90, "Alpha Denshi Co.", "Equites", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, equitess, equites, equites, equites, equites_state, equites, ROT90, "Alpha Denshi Co. (Sega license)", "Equites (Sega)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, bullfgtr, 0, equites, bullfgtr, equites_state, bullfgtr, ROT90, "Alpha Denshi Co.", "Bull Fighter", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, bullfgtrs,bullfgtr, equites, bullfgtr, equites_state, bullfgtr, ROT90, "Alpha Denshi Co. (Sega license)", "Bull Fighter (Sega)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, kouyakyu, 0, equites, kouyakyu, equites_state, kouyakyu, ROT0, "Alpha Denshi Co.", "The Koukouyakyuh", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, gekisou, 0, gekisou, gekisou, equites_state, gekisou, ROT90, "Eastern Corp.", "Gekisou (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
// Splendor Blast Hardware
-GAME( 1985, splndrbt, 0, splndrbt, splndrbt, equites_state, splndrbt, ROT0, "Alpha Denshi Co.", "Splendor Blast", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1985, hvoltage, 0, splndrbt, hvoltage, equites_state, hvoltage, ROT0, "Alpha Denshi Co.", "High Voltage", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1985, splndrbt, 0, splndrbt, splndrbt, equites_state, splndrbt, ROT0, "Alpha Denshi Co.", "Splendor Blast", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, hvoltage, 0, splndrbt, hvoltage, equites_state, hvoltage, ROT0, "Alpha Denshi Co.", "High Voltage", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/ertictac.c b/src/mame/drivers/ertictac.c
index dc3d05d682c..0eeaf5bc025 100644
--- a/src/mame/drivers/ertictac.c
+++ b/src/mame/drivers/ertictac.c
@@ -358,7 +358,7 @@ ROM_START( poizone )
ROM_REGION(0x200000, "vram", ROMREGION_ERASE00)
ROM_END
-GAME( 1990, ertictac, 0, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic" ,GAME_IMPERFECT_SOUND)
-GAME( 1990, ertictaca, ertictac, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic (ver 01)" ,GAME_IMPERFECT_SOUND)
-GAME( 1990, ertictacb, ertictac, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic (set 2)" ,GAME_IMPERFECT_SOUND)
-GAME( 1991, poizone, 0, ertictac, poizone, ertictac_state, ertictac, ROT0, "Eterna" ,"Poizone" ,GAME_IMPERFECT_SOUND|GAME_IMPERFECT_GRAPHICS)
+GAME( 1990, ertictac, 0, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic" ,MACHINE_IMPERFECT_SOUND)
+GAME( 1990, ertictaca, ertictac, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic (ver 01)" ,MACHINE_IMPERFECT_SOUND)
+GAME( 1990, ertictacb, ertictac, ertictac, ertictac, ertictac_state, ertictac, ROT0, "Sisteme", "Erotictac/Tactic (set 2)" ,MACHINE_IMPERFECT_SOUND)
+GAME( 1991, poizone, 0, ertictac, poizone, ertictac_state, ertictac, ROT0, "Eterna" ,"Poizone" ,MACHINE_IMPERFECT_SOUND|MACHINE_IMPERFECT_GRAPHICS)
diff --git a/src/mame/drivers/esd16.c b/src/mame/drivers/esd16.c
index e680e35fa10..badd4bd76d5 100644
--- a/src/mame/drivers/esd16.c
+++ b/src/mame/drivers/esd16.c
@@ -1529,25 +1529,25 @@ ROM_END
***************************************************************************/
/* ESD 11-09-98 */
-GAME( 1999, multchmp, 0, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (World, ver. 2.5)", GAME_SUPPORTS_SAVE )
-GAME( 1998, multchmpk,multchmp, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (Korea)", GAME_SUPPORTS_SAVE )
-GAME( 2001, jumppop, 0, jumppop, jumppop, driver_device, 0, ROT0, "ESD", "Jumping Pop (set 1)", GAME_SUPPORTS_SAVE ) /* Redesigned(?) ESD 11-09-98 with no ID# */
-GAME( 2001, jumppope, jumppop, jumppop, jumppop, driver_device, 0, ROT0, "Emag Soft", "Jumping Pop (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1999, multchmp, 0, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (World, ver. 2.5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, multchmpk,multchmp, esd16, multchmp, driver_device, 0, ROT0, "ESD", "Multi Champ (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, jumppop, 0, jumppop, jumppop, driver_device, 0, ROT0, "ESD", "Jumping Pop (set 1)", MACHINE_SUPPORTS_SAVE ) /* Redesigned(?) ESD 11-09-98 with no ID# */
+GAME( 2001, jumppope, jumppop, jumppop, jumppop, driver_device, 0, ROT0, "Emag Soft", "Jumping Pop (set 2)", MACHINE_SUPPORTS_SAVE )
/* ESD 05-28-99 */
-GAME( 1999, hedpanico,hedpanic, hedpanio, hedpanic, driver_device, 0, ROT0, "ESD", "Head Panic (ver. 0615, 15/06/1999)", GAME_SUPPORTS_SAVE )
+GAME( 1999, hedpanico,hedpanic, hedpanio, hedpanic, driver_device, 0, ROT0, "ESD", "Head Panic (ver. 0615, 15/06/1999)", MACHINE_SUPPORTS_SAVE )
/* ESD 08-26-1999 */
-GAME( 2000, mchampdx, 0, mchampdx, hedpanic, driver_device, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 0106, 06/01/2000)", GAME_SUPPORTS_SAVE )
-GAME( 1999, mchampdxa,mchampdx, mchampdx, hedpanic, driver_device, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 1126, 26/11/1999)", GAME_SUPPORTS_SAVE )
-GAME( 1999, mchampdxb,mchampdx, mchampdx, hedpanic, driver_device, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 1114, 14/11/1999)", GAME_SUPPORTS_SAVE )
-GAME( 2000, hedpanic, 0, hedpanic, hedpanic, driver_device, 0, ROT0, "ESD", "Head Panic (ver. 0117, 17/01/2000)", GAME_SUPPORTS_SAVE )
-GAME( 2000, hedpanicf,hedpanic, hedpanic, hedpanic, driver_device, 0, ROT0, "ESD / Fuuki", "Head Panic (ver. 0315, 15/03/2000)", GAME_SUPPORTS_SAVE )
+GAME( 2000, mchampdx, 0, mchampdx, hedpanic, driver_device, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 0106, 06/01/2000)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mchampdxa,mchampdx, mchampdx, hedpanic, driver_device, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 1126, 26/11/1999)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, mchampdxb,mchampdx, mchampdx, hedpanic, driver_device, 0, ROT0, "ESD", "Multi Champ Deluxe (ver. 1114, 14/11/1999)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, hedpanic, 0, hedpanic, hedpanic, driver_device, 0, ROT0, "ESD", "Head Panic (ver. 0117, 17/01/2000)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, hedpanicf,hedpanic, hedpanic, hedpanic, driver_device, 0, ROT0, "ESD / Fuuki", "Head Panic (ver. 0315, 15/03/2000)", MACHINE_SUPPORTS_SAVE )
/* ESD - This PCB looks identical to the ESD 08-26-1999 PCB */
-GAME( 2000, deluxe5, 0, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 1)", GAME_SUPPORTS_SAVE ) // all 3 sets report the same version number?
-GAME( 2000, deluxe5a, deluxe5, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 2000, deluxe5b, deluxe5, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 3)", GAME_SUPPORTS_SAVE )
+GAME( 2000, deluxe5, 0, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 1)", MACHINE_SUPPORTS_SAVE ) // all 3 sets report the same version number?
+GAME( 2000, deluxe5a, deluxe5, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, deluxe5b, deluxe5, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Deluxe 5 (ver. 0107, 07/01/2000, set 3)", MACHINE_SUPPORTS_SAVE )
-GAME( 2000, tangtang, 0, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Tang Tang (ver. 0526, 26/05/2000)", GAME_SUPPORTS_SAVE )
-GAME( 2001, swatpolc, 0, hedpanic, swatpolc, driver_device, 0, ROT0, "ESD", "SWAT Police", GAME_SUPPORTS_SAVE )
+GAME( 2000, tangtang, 0, tangtang, hedpanic, driver_device, 0, ROT0, "ESD", "Tang Tang (ver. 0526, 26/05/2000)", MACHINE_SUPPORTS_SAVE )
+GAME( 2001, swatpolc, 0, hedpanic, swatpolc, driver_device, 0, ROT0, "ESD", "SWAT Police", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/esh.c b/src/mame/drivers/esh.c
index e0249eeefc2..ec7670cb408 100644
--- a/src/mame/drivers/esh.c
+++ b/src/mame/drivers/esh.c
@@ -424,6 +424,6 @@ DRIVER_INIT_MEMBER(esh_state,esh)
}
/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS */
-GAME( 1983, esh, 0, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 1)", GAME_NOT_WORKING|GAME_NO_SOUND)
-GAME( 1983, esha, esh, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 2)", GAME_NOT_WORKING|GAME_NO_SOUND)
-GAME( 1983, eshb, esh, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 3)", GAME_NOT_WORKING|GAME_NO_SOUND)
+GAME( 1983, esh, 0, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 1)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
+GAME( 1983, esha, esh, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 2)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
+GAME( 1983, eshb, esh, esh, esh, esh_state, esh, ROT0, "Funai/Gakken", "Esh's Aurunmilla (set 3)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/espial.c b/src/mame/drivers/espial.c
index 05c43782f24..f563add57a0 100644
--- a/src/mame/drivers/espial.c
+++ b/src/mame/drivers/espial.c
@@ -438,6 +438,6 @@ ROM_END
-GAME( 1983, espial, 0, espial, espial, driver_device, 0, ROT0, "Orca / Thunderbolt", "Espial (Europe)", GAME_SUPPORTS_SAVE )
-GAME( 1983, espialu, espial, espial, espial, driver_device, 0, ROT0, "Orca / Thunderbolt", "Espial (US?)", GAME_SUPPORTS_SAVE )
-GAME( 1983, netwars, 0, netwars, netwars, driver_device, 0, ROT90, "Orca (Esco Trading Co license)", "Net Wars", GAME_SUPPORTS_SAVE )
+GAME( 1983, espial, 0, espial, espial, driver_device, 0, ROT0, "Orca / Thunderbolt", "Espial (Europe)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, espialu, espial, espial, espial, driver_device, 0, ROT0, "Orca / Thunderbolt", "Espial (US?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, netwars, 0, netwars, netwars, driver_device, 0, ROT90, "Orca (Esco Trading Co license)", "Net Wars", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/esq1.c b/src/mame/drivers/esq1.c
index 3dcf511f95a..b37f26185aa 100644
--- a/src/mess/drivers/esq1.c
+++ b/src/mame/drivers/esq1.c
@@ -693,6 +693,6 @@ ROM_START( esqm )
ROM_END
-CONS( 1986, esq1, 0 , 0, esq1, esq1, driver_device, 0, "Ensoniq", "ESQ-1", GAME_NOT_WORKING )
-CONS( 1986, esqm, esq1, 0, esq1, esq1, driver_device, 0, "Ensoniq", "ESQ-M", GAME_NOT_WORKING )
-CONS( 1988, sq80, 0, 0, sq80, esq1, driver_device, 0, "Ensoniq", "SQ-80", GAME_NOT_WORKING )
+CONS( 1986, esq1, 0 , 0, esq1, esq1, driver_device, 0, "Ensoniq", "ESQ-1", MACHINE_NOT_WORKING )
+CONS( 1986, esqm, esq1, 0, esq1, esq1, driver_device, 0, "Ensoniq", "ESQ-M", MACHINE_NOT_WORKING )
+CONS( 1988, sq80, 0, 0, sq80, esq1, driver_device, 0, "Ensoniq", "SQ-80", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/esq5505.c b/src/mame/drivers/esq5505.c
index 69f3c380971..aaca4b127da 100644
--- a/src/mess/drivers/esq5505.c
+++ b/src/mame/drivers/esq5505.c
@@ -945,11 +945,11 @@ DRIVER_INIT_MEMBER(esq5505_state,denib)
}
}
-CONS( 1988, eps, 0, 0, eps, vfx, esq5505_state, eps, "Ensoniq", "EPS", GAME_NOT_WORKING ) // custom VFD: one alphanumeric 22-char row, one graphics-capable row (alpha row can also do bar graphs)
-CONS( 1989, vfx, 0, 0, vfx, vfx, esq5505_state, denib, "Ensoniq", "VFX", GAME_NOT_WORKING ) // 2x40 VFD
-CONS( 1989, vfxsd, 0, 0, vfxsd, vfx, esq5505_state, denib, "Ensoniq", "VFX-SD", GAME_NOT_WORKING ) // 2x40 VFD
-CONS( 1990, eps16p,eps, 0, eps, vfx, esq5505_state, eps, "Ensoniq", "EPS-16 Plus", GAME_NOT_WORKING ) // custom VFD: one alphanumeric 22-char row, one graphics-capable row (alpha row can also do bar graphs)
-CONS( 1990, sd1, 0, 0, vfxsd, vfx, esq5505_state, denib, "Ensoniq", "SD-1 (21 voice)", GAME_NOT_WORKING ) // 2x40 VFD
-CONS( 1990, sq1, 0, 0, sq1, vfx, esq5505_state, sq1, "Ensoniq", "SQ-1", GAME_NOT_WORKING ) // 2x16 LCD
-CONS( 1990, sqrack,sq1, 0, sq1, vfx, esq5505_state, sq1, "Ensoniq", "SQ-Rack", GAME_NOT_WORKING ) // 2x16 LCD
-CONS( 1991, sd132, sd1,0, vfx32, vfx, esq5505_state, denib, "Ensoniq", "SD-1 (32 voice)", GAME_NOT_WORKING ) // 2x40 VFD
+CONS( 1988, eps, 0, 0, eps, vfx, esq5505_state, eps, "Ensoniq", "EPS", MACHINE_NOT_WORKING ) // custom VFD: one alphanumeric 22-char row, one graphics-capable row (alpha row can also do bar graphs)
+CONS( 1989, vfx, 0, 0, vfx, vfx, esq5505_state, denib, "Ensoniq", "VFX", MACHINE_NOT_WORKING ) // 2x40 VFD
+CONS( 1989, vfxsd, 0, 0, vfxsd, vfx, esq5505_state, denib, "Ensoniq", "VFX-SD", MACHINE_NOT_WORKING ) // 2x40 VFD
+CONS( 1990, eps16p,eps, 0, eps, vfx, esq5505_state, eps, "Ensoniq", "EPS-16 Plus", MACHINE_NOT_WORKING ) // custom VFD: one alphanumeric 22-char row, one graphics-capable row (alpha row can also do bar graphs)
+CONS( 1990, sd1, 0, 0, vfxsd, vfx, esq5505_state, denib, "Ensoniq", "SD-1 (21 voice)", MACHINE_NOT_WORKING ) // 2x40 VFD
+CONS( 1990, sq1, 0, 0, sq1, vfx, esq5505_state, sq1, "Ensoniq", "SQ-1", MACHINE_NOT_WORKING ) // 2x16 LCD
+CONS( 1990, sqrack,sq1, 0, sq1, vfx, esq5505_state, sq1, "Ensoniq", "SQ-Rack", MACHINE_NOT_WORKING ) // 2x16 LCD
+CONS( 1991, sd132, sd1,0, vfx32, vfx, esq5505_state, denib, "Ensoniq", "SD-1 (32 voice)", MACHINE_NOT_WORKING ) // 2x40 VFD
diff --git a/src/mess/drivers/esqasr.c b/src/mame/drivers/esqasr.c
index b529ce7e75e..6ae09247b70 100644
--- a/src/mess/drivers/esqasr.c
+++ b/src/mame/drivers/esqasr.c
@@ -163,5 +163,5 @@ DRIVER_INIT_MEMBER(esqasr_state, asr)
{
}
-CONS( 1992, asr10, 0, 0, asr, asr, esqasr_state, asr, "Ensoniq", "ASR-10", GAME_NOT_WORKING )
-CONS( 1997, asrx, 0, 0, asrx,asr, esqasr_state, asr, "Ensoniq", "ASR-X", GAME_NOT_WORKING )
+CONS( 1992, asr10, 0, 0, asr, asr, esqasr_state, asr, "Ensoniq", "ASR-10", MACHINE_NOT_WORKING )
+CONS( 1997, asrx, 0, 0, asrx,asr, esqasr_state, asr, "Ensoniq", "ASR-X", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/esqkt.c b/src/mame/drivers/esqkt.c
index ff97daaf644..293844aa880 100644
--- a/src/mess/drivers/esqkt.c
+++ b/src/mame/drivers/esqkt.c
@@ -269,4 +269,4 @@ DRIVER_INIT_MEMBER(esqkt_state, kt)
m_duart_io = 0;
}
-CONS( 1996, kt76, 0, 0, kt, kt, esqkt_state, kt, "Ensoniq", "KT-76", GAME_IMPERFECT_SOUND )
+CONS( 1996, kt76, 0, 0, kt, kt, esqkt_state, kt, "Ensoniq", "KT-76", MACHINE_IMPERFECT_SOUND )
diff --git a/src/mess/drivers/esqmr.c b/src/mame/drivers/esqmr.c
index fef4b812fa7..058bd186251 100644
--- a/src/mess/drivers/esqmr.c
+++ b/src/mame/drivers/esqmr.c
@@ -315,5 +315,5 @@ DRIVER_INIT_MEMBER(esqmr_state, mr)
{
}
-CONS( 1996, mr61, 0, 0, mr, mr, esqmr_state, mr, "Ensoniq", "MR-61 Workstation", GAME_NOT_WORKING )
-CONS( 1996, mrrack, 0, 0, mr, mr, esqmr_state, mr, "Ensoniq", "MR-Rack", GAME_NOT_WORKING )
+CONS( 1996, mr61, 0, 0, mr, mr, esqmr_state, mr, "Ensoniq", "MR-61 Workstation", MACHINE_NOT_WORKING )
+CONS( 1996, mrrack, 0, 0, mr, mr, esqmr_state, mr, "Ensoniq", "MR-Rack", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/esripsys.c b/src/mame/drivers/esripsys.c
index 1333ac7b05b..8119d2f60df 100644
--- a/src/mame/drivers/esripsys.c
+++ b/src/mame/drivers/esripsys.c
@@ -1071,6 +1071,6 @@ ROM_END
*
*************************************/
-GAME( 1985, turbosub, 0, esripsys, turbosub, esripsys_state, esripsys, ROT0, "Entertainment Sciences", "Turbo Sub (prototype rev. TSCA)", GAME_SUPPORTS_SAVE )
-GAME( 1985, turbosub7, turbosub, esripsys, turbosub, esripsys_state, esripsys, ROT0, "Entertainment Sciences", "Turbo Sub (prototype rev. TSC7)", GAME_SUPPORTS_SAVE )
-GAME( 1985, turbosub6, turbosub, esripsys, turbosub, esripsys_state, esripsys, ROT0, "Entertainment Sciences", "Turbo Sub (prototype rev. TSC6)", GAME_SUPPORTS_SAVE )
+GAME( 1985, turbosub, 0, esripsys, turbosub, esripsys_state, esripsys, ROT0, "Entertainment Sciences", "Turbo Sub (prototype rev. TSCA)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, turbosub7, turbosub, esripsys, turbosub, esripsys_state, esripsys, ROT0, "Entertainment Sciences", "Turbo Sub (prototype rev. TSC7)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, turbosub6, turbosub, esripsys, turbosub, esripsys_state, esripsys, ROT0, "Entertainment Sciences", "Turbo Sub (prototype rev. TSC6)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/et3400.c b/src/mame/drivers/et3400.c
index 8050c4712c5..bf9806787c0 100644
--- a/src/mess/drivers/et3400.c
+++ b/src/mame/drivers/et3400.c
@@ -120,4 +120,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1976, et3400, 0, 0, et3400, et3400, driver_device, 0, "Heath Inc", "Heathkit ET-3400", GAME_NO_SOUND_HW)
+COMP( 1976, et3400, 0, 0, et3400, et3400, driver_device, 0, "Heath Inc", "Heathkit ET-3400", MACHINE_NO_SOUND_HW)
diff --git a/src/mame/drivers/eti660.c b/src/mame/drivers/eti660.c
new file mode 100644
index 00000000000..238ec6d9b6f
--- /dev/null
+++ b/src/mame/drivers/eti660.c
@@ -0,0 +1,350 @@
+// license:BSD-3-Clause
+// copyright-holders:Curt Coder, Robbbert
+/*****************************************************************************************
+
+ ETI project 660, featured in the Australian magazine Electronics Today International.
+
+ Commands:
+ R - Reset (use this before any other instruction)
+ S - Step
+ 0 - Enter modify memory mode
+ 2 - Save memory to cassette
+ 4 - Load memory from cassette
+ 6 - start binary program
+ 8 - start chip-8 program.
+
+ To modify memory, press R, 0, enter 4-digit address, S, enter data, S, continue on.
+ R to escape.
+
+ To save a tape, enter the start address into 0400,0401 (big endian), and the end
+ address into 0402,0403. Press R. Press record on the tape, press 2.
+
+ To load a tape, enter the start and end addresses as above. Press R, 4. Screen goes
+ black. Press play on tape. If the screen is still black after the tape ends, press R.
+
+ All chip-8 programs start at 0600. The manual says the max end address is 7FF (gives
+ 512 bytes), but you can fill up all of memory (gives 2560 bytes).
+
+ TODO:
+ - sometimes there's no sound when started. You may need to hard reset until it beeps.
+ - don't know why, but the expected behaviour of our 6821 pia isn't what this machine
+ expects, so had to add a couple of hacks.
+ - doesn't run programs for other chip-8 computers (this might be normal?)
+ - we support BIN files, but have none to test with.
+ - in Invaders, can't shoot them
+ - in Maze, the result is rubbish (works in Emma02 emulator)
+
+**************************************************************************************************/
+
+#include "includes/eti660.h"
+
+/* Read/Write Handlers */
+
+READ8_MEMBER( eti660_state::pia_r )
+{
+ UINT8 pia_offset = m_maincpu->get_memory_address() & 0x03;
+
+ return m_pia->read(space, pia_offset);
+}
+
+WRITE8_MEMBER( eti660_state::pia_w )
+{
+ UINT8 pia_offset = m_maincpu->get_memory_address() & 0x03;
+
+ // Some PIA hacks here, as mentioned in the ToDo.
+ if (pia_offset == 1)
+ {
+ // switch color on when requested (test with Wipeout game)
+ if (data == 0x2c)
+ m_color_on = 1;
+ // enable keyboard
+ if (data == 0x20)
+ data = 0x24;
+ }
+
+ m_pia->write(space, pia_offset, data);
+}
+
+WRITE8_MEMBER( eti660_state::colorram_w )
+{
+ offset = m_maincpu->get_memory_address() - 0xc80;
+
+ UINT8 colorram_offset = (((offset & 0x1f0) >> 1) | (offset & 0x07));
+
+ if (colorram_offset < 0xc0)
+ m_color_ram[colorram_offset] = data;
+}
+
+/* Memory Maps */
+
+static ADDRESS_MAP_START( eti660_map, AS_PROGRAM, 8, eti660_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xfff)
+ AM_RANGE(0x0000, 0x03ff) AM_ROM
+ AM_RANGE(0x0400, 0x047f) AM_RAM
+ AM_RANGE(0x0480, 0x05ff) AM_RAM AM_SHARE("videoram")
+ AM_RANGE(0x0600, 0x0fff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( eti660_io_map, AS_IO, 8, eti660_state )
+ AM_RANGE(0x01, 0x01) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispon_r, step_bgcolor_w)
+ AM_RANGE(0x02, 0x02) AM_READWRITE(pia_r, pia_w)
+ AM_RANGE(0x03, 0x03) AM_WRITE(colorram_w)
+ AM_RANGE(0x04, 0x04) AM_DEVREADWRITE(CDP1864_TAG, cdp1864_device, dispoff_r, tone_latch_w)
+ADDRESS_MAP_END
+
+/* Input Ports */
+static INPUT_PORTS_START( eti660 )
+ PORT_START("KEY.0")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3) PORT_CHAR('3')
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2) PORT_CHAR('2')
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_1) PORT_CHAR('1')
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KEY.1")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_7) PORT_CHAR('7')
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_6) PORT_CHAR('6')
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_5) PORT_CHAR('5')
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_4) PORT_CHAR('4')
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KEY.2")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_CHAR('B')
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_CHAR('A')
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_CHAR('9')
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_8) PORT_CHAR('8')
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("KEY.3")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_CHAR('F')
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_CHAR('E')
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_CHAR('D')
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_CHAR('C')
+ PORT_BIT( 0x0f, IP_ACTIVE_LOW, IPT_UNUSED )
+
+ PORT_START("SPECIAL")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("RESET") PORT_CODE(KEYCODE_R)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("STEP") PORT_CODE(KEYCODE_S)
+INPUT_PORTS_END
+
+/* Video */
+
+READ_LINE_MEMBER( eti660_state::rdata_r )
+{
+ return BIT(m_color, 0);
+}
+
+READ_LINE_MEMBER( eti660_state::bdata_r )
+{
+ return BIT(m_color, 1);
+}
+
+READ_LINE_MEMBER( eti660_state::gdata_r )
+{
+ return BIT(m_color, 2);
+}
+
+/* CDP1802 Interface */
+
+READ_LINE_MEMBER( eti660_state::clear_r )
+{
+ // A hack to make the machine reset itself on
+ // boot, like the real one does.
+ if (m_resetcnt < 0xffff)
+ m_resetcnt++;
+ if (m_resetcnt == 0xff00)
+ return 0;
+ return BIT(m_special->read(), 0); // R key
+}
+
+READ_LINE_MEMBER( eti660_state::ef2_r )
+{
+ return m_cassette->input() < 0;
+}
+
+READ_LINE_MEMBER( eti660_state::ef4_r )
+{
+ return BIT(m_special->read(), 1); // S key
+}
+
+WRITE_LINE_MEMBER( eti660_state::q_w )
+{
+ /* CDP1864 audio output enable */
+ m_cti->aoe_w(state);
+
+ /* PULSE led */
+ set_led_status(machine(), LED_PULSE, state);
+
+ /* tape output */
+ m_cassette->output(state ? 1.0 : -1.0);
+}
+
+WRITE8_MEMBER( eti660_state::dma_w )
+{
+ offset -= 0x480;
+
+ m_color = 7;
+
+ if (m_color_on)
+ {
+ UINT8 colorram_offset = ((offset & 0x1f0) >> 1) | (offset & 0x07);
+
+ if (colorram_offset < 0xc0)
+ m_color = m_color_ram[colorram_offset];
+ }
+ else
+ m_color = m_p_videoram[offset] ? 7 : 0;
+
+ m_cti->con_w(0); // HACK
+ m_cti->dma_w(space, offset, data);
+}
+
+/* PIA6821 Interface */
+
+READ8_MEMBER( eti660_state::pia_pa_r )
+{
+ /*
+
+ bit description
+
+ PA0 keyboard row 0
+ PA1 keyboard row 1
+ PA2 keyboard row 2
+ PA3 keyboard row 3
+ PA4 keyboard column 0
+ PA5 keyboard column 1
+ PA6 keyboard column 2
+ PA7 keyboard column 3
+
+ */
+
+ UINT8 i, data = 0xff;
+
+ for (i = 0; i < 4; i++)
+ if BIT(m_keylatch, i)
+ return m_io_keyboard[i]->read();
+
+ return data;
+}
+
+WRITE8_MEMBER( eti660_state::pia_pa_w )
+{
+ /*
+
+ bit description
+
+ PA0 keyboard row 0
+ PA1 keyboard row 1
+ PA2 keyboard row 2
+ PA3 keyboard row 3
+ PA4 keyboard column 0
+ PA5 keyboard column 1
+ PA6 keyboard column 2
+ PA7 keyboard column 3
+
+ */
+
+ m_keylatch = data ^ 0xff;
+}
+
+void eti660_state::machine_reset()
+{
+ m_resetcnt = 0;
+ m_color_on = 0;
+ // fix for F3 soft reboot
+ m_maincpu->set_state_int(COSMAC_R0, 0); // set R0 to start of rom
+ m_maincpu->set_state_int(COSMAC_P, 0); // set R0 as the PC register
+}
+
+void eti660_state::machine_start()
+{
+ save_item(NAME(m_color_ram));
+}
+
+QUICKLOAD_LOAD_MEMBER( eti660_state, eti660 )
+{
+ address_space &space = m_maincpu->space(AS_PROGRAM);
+ int i;
+ int quick_addr = 0x600;
+ int quick_length;
+ dynamic_buffer quick_data;
+ int read_;
+ int result = IMAGE_INIT_FAIL;
+
+ quick_length = image.length();
+ quick_data.resize(quick_length);
+ read_ = image.fread( &quick_data[0], quick_length);
+ if (read_ != quick_length)
+ {
+ image.seterror(IMAGE_ERROR_INVALIDIMAGE, "Cannot read the file");
+ image.message(" Cannot read the file");
+ }
+ else
+ {
+ for (i = 0; i < quick_length; i++)
+ if ((quick_addr + i) < 0x1000)
+ space.write_byte(i + quick_addr, quick_data[i]);
+
+ /* display a message about the loaded quickload */
+ if (strcmp(image.filetype(), "bin") == 0)
+ image.message(" Quickload: size=%04X : start=%04X : end=%04X : Press 6 to start",quick_length,quick_addr,quick_addr+quick_length);
+ else
+ image.message(" Quickload: size=%04X : start=%04X : end=%04X : Press 8 to start",quick_length,quick_addr,quick_addr+quick_length);
+
+ result = IMAGE_INIT_PASS;
+ }
+
+ return result;
+}
+
+/* Machine Drivers */
+
+static MACHINE_CONFIG_START( eti660, eti660_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD(CDP1802_TAG, CDP1802, XTAL_8_867238MHz/5)
+ MCFG_CPU_PROGRAM_MAP(eti660_map)
+ MCFG_CPU_IO_MAP(eti660_io_map)
+ MCFG_COSMAC_WAIT_CALLBACK(VCC)
+ MCFG_COSMAC_CLEAR_CALLBACK(READLINE(eti660_state, clear_r))
+ MCFG_COSMAC_EF2_CALLBACK(READLINE(eti660_state, ef2_r))
+ MCFG_COSMAC_EF4_CALLBACK(READLINE(eti660_state, ef4_r))
+ MCFG_COSMAC_Q_CALLBACK(WRITELINE(eti660_state, q_w))
+ MCFG_COSMAC_DMAW_CALLBACK(WRITE8(eti660_state, dma_w))
+
+ /* video hardware */
+ MCFG_CDP1864_SCREEN_ADD(SCREEN_TAG, XTAL_8_867238MHz/5)
+ MCFG_SCREEN_UPDATE_DEVICE(CDP1864_TAG, cdp1864_device, screen_update)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_CDP1864_ADD(CDP1864_TAG, SCREEN_TAG, XTAL_8_867238MHz/5, GND, INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_INT), INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_DMAOUT), INPUTLINE(CDP1802_TAG, COSMAC_INPUT_LINE_EF1), NULL, READLINE(eti660_state, rdata_r), READLINE(eti660_state, bdata_r), READLINE(eti660_state, gdata_r))
+ MCFG_CDP1864_CHROMINANCE(RES_K(2.2), RES_K(1), RES_K(4.7), RES_K(4.7)) // R7, R5, R6, R4
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+
+ /* devices */
+ MCFG_DEVICE_ADD(MC6821_TAG, PIA6821, 0)
+ MCFG_PIA_READPA_HANDLER(READ8(eti660_state, pia_pa_r))
+ MCFG_PIA_WRITEPA_HANDLER(WRITE8(eti660_state, pia_pa_w))
+ MCFG_PIA_IRQA_HANDLER(DEVWRITELINE(CDP1802_TAG, cosmac_device, int_w)) MCFG_DEVCB_INVERT
+ MCFG_PIA_IRQB_HANDLER(DEVWRITELINE(CDP1802_TAG, cosmac_device, int_w)) MCFG_DEVCB_INVERT
+
+ MCFG_CASSETTE_ADD("cassette")
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED)
+
+ /* internal ram */
+ MCFG_RAM_ADD(RAM_TAG)
+ MCFG_RAM_DEFAULT_SIZE("3K")
+
+ /* quickload */
+ MCFG_QUICKLOAD_ADD("quickload", eti660_state, eti660, "bin,c8,ch8", 2)
+MACHINE_CONFIG_END
+
+/* ROMs */
+
+ROM_START( eti660 )
+ ROM_REGION( 0x10000, CDP1802_TAG, 0 )
+ ROM_LOAD( "eti660.bin", 0x0000, 0x0400, CRC(811dfa62) SHA1(c0c4951e02f873f15560bdc3f35cdf3f99653922) )
+ROM_END
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP( 1981, eti660, 0, 0, eti660, eti660, driver_device, 0, "Electronics Today International", "ETI-660", 0 )
diff --git a/src/mame/drivers/ettrivia.c b/src/mame/drivers/ettrivia.c
index 24a0ff81157..0d4337afd49 100644
--- a/src/mame/drivers/ettrivia.c
+++ b/src/mame/drivers/ettrivia.c
@@ -466,4 +466,4 @@ GAME( 1985, promutrv, 0, ettrivia, ettrivia, driver_device, 0, ROT270, "E
GAME( 1985, promutrva,promutrv, ettrivia, ettrivia, driver_device, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 2)", 0 )
GAME( 1985, promutrvb,promutrv, ettrivia, ettrivia, driver_device, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 3)", 0 )
GAME( 1985, promutrvc,promutrv, ettrivia, ettrivia, driver_device, 0, ROT270, "Enerdyne Technologies Inc.", "Progressive Music Trivia (Question set 4)", 0 )
-GAME( 1986, strvmstr, 0, ettrivia, ettrivia, driver_device, 0, ROT270, "Enerdyne Technologies Inc.", "Super Trivia Master", GAME_WRONG_COLORS )
+GAME( 1986, strvmstr, 0, ettrivia, ettrivia, driver_device, 0, ROT270, "Enerdyne Technologies Inc.", "Super Trivia Master", MACHINE_WRONG_COLORS )
diff --git a/src/mess/drivers/europc.c b/src/mame/drivers/europc.c
index aaa0b706b19..a034b1213b1 100644
--- a/src/mess/drivers/europc.c
+++ b/src/mame/drivers/europc.c
@@ -505,4 +505,4 @@ ROM_START( europc )
ROM_LOAD("50145", 0xf8000, 0x8000, CRC(1775a11d) SHA1(54430d4d0462860860397487c9c109e6f70db8e3)) // V2.07
ROM_END
-COMP( 1988, europc, ibm5150, 0, europc, europc, europc_pc_state, europc, "Schneider Rdf. AG", "EURO PC", GAME_NOT_WORKING)
+COMP( 1988, europc, ibm5150, 0, europc, europc, europc_pc_state, europc, "Schneider Rdf. AG", "EURO PC", MACHINE_NOT_WORKING)
diff --git a/src/mess/drivers/evmbug.c b/src/mame/drivers/evmbug.c
index 148557c9e53..355eaca0769 100644
--- a/src/mess/drivers/evmbug.c
+++ b/src/mame/drivers/evmbug.c
@@ -114,4 +114,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 19??, evmbug, 0, 0, evmbug, evmbug, driver_device, 0, "Texas Instruments", "TMAM6095", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 19??, evmbug, 0, 0, evmbug, evmbug, driver_device, 0, "Texas Instruments", "TMAM6095", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/excali64.c b/src/mame/drivers/excali64.c
index b68d0e1f67e..3e4664ca913 100644
--- a/src/mess/drivers/excali64.c
+++ b/src/mame/drivers/excali64.c
@@ -595,7 +595,9 @@ static MACHINE_CONFIG_START( excali64, excali64_state )
MCFG_WD2793_ADD("fdc", XTAL_16MHz / 16)
MCFG_WD_FDC_DRQ_CALLBACK(DEVWRITELINE("dma", z80dma_device, rdy_w))
MCFG_FLOPPY_DRIVE_ADD("fdc:0", excali64_floppies, "drive0", excali64_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_FLOPPY_DRIVE_ADD("fdc:1", excali64_floppies, "drive1", excali64_state::floppy_formats)
+ MCFG_FLOPPY_DRIVE_SOUND(true)
MCFG_DEVICE_ADD("dma", Z80DMA, XTAL_16MHz/4)
MCFG_Z80DMA_OUT_BUSREQ_CB(WRITELINE(excali64_state, busreq_w))
diff --git a/src/mame/drivers/exedexes.c b/src/mame/drivers/exedexes.c
index 45c4b028e34..2f0a5ce1e63 100644
--- a/src/mame/drivers/exedexes.c
+++ b/src/mame/drivers/exedexes.c
@@ -344,5 +344,5 @@ ROM_END
-GAME( 1985, exedexes, 0, exedexes, exedexes, driver_device, 0, ROT270, "Capcom", "Exed Exes", GAME_SUPPORTS_SAVE )
-GAME( 1985, savgbees, exedexes, exedexes, exedexes, driver_device, 0, ROT270, "Capcom (Memetron license)", "Savage Bees", GAME_SUPPORTS_SAVE )
+GAME( 1985, exedexes, 0, exedexes, exedexes, driver_device, 0, ROT270, "Capcom", "Exed Exes", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, savgbees, exedexes, exedexes, exedexes, driver_device, 0, ROT270, "Capcom (Memetron license)", "Savage Bees", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/exelv.c b/src/mame/drivers/exelv.c
index c48bd0234dc..fc1ad3d0c0e 100644
--- a/src/mess/drivers/exelv.c
+++ b/src/mame/drivers/exelv.c
@@ -104,11 +104,10 @@ public:
/* mailbox data */
UINT8 m_wx318; /* data of 74ls374 labeled wx318 */
UINT8 m_wx319; /* data of 74sl374 labeled wx319 */
- DECLARE_PALETTE_INIT(exelv);
+
TIMER_DEVICE_CALLBACK_MEMBER(exelv_hblank_interrupt);
DECLARE_DEVICE_IMAGE_LOAD_MEMBER( exelvision_cartridge );
-
};
@@ -450,21 +449,6 @@ static INPUT_PORTS_START(exelv)
INPUT_PORTS_END
-PALETTE_INIT_MEMBER(exelv_state, exelv)
-{
- int i, red, green, blue;
-
- /* create the 8 color palette */
- for (i = 0; i < 8; i++)
- {
- red = (i & 1) ? 255 : 0; /* red */
- green = (i & 2) ? 255 : 0; /* green */
- blue = (i & 4) ? 255 : 0; /* blue */
- palette.set_pen_color(i, red, green, blue);
- }
-}
-
-
/* Machine Initialization */
MACHINE_START_MEMBER( exelv_state, exl100)
@@ -525,8 +509,7 @@ static MACHINE_CONFIG_START( exl100, exelv_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(exelv_state, exelv)
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
// MCFG_DEVICE_ADD("vsm", SPEECHROM, 0)
@@ -575,8 +558,7 @@ static MACHINE_CONFIG_START( exeltel, exelv_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(exelv_state, exelv)
+ MCFG_PALETTE_ADD_3BIT_RGB("palette")
MCFG_DEVICE_ADD("vsm", SPEECHROM, 0)
@@ -620,5 +602,5 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP(1984, exl100, 0, 0, exl100, exelv, driver_device, 0, "Exelvision", "EXL 100", GAME_NOT_WORKING)
-COMP(1986, exeltel, exl100, 0, exeltel, exelv, driver_device, 0, "Exelvision", "Exeltel", GAME_NOT_WORKING)
+COMP(1984, exl100, 0, 0, exl100, exelv, driver_device, 0, "Exelvision", "EXL 100", MACHINE_NOT_WORKING)
+COMP(1986, exeltel, exl100, 0, exeltel, exelv, driver_device, 0, "Exelvision", "Exeltel", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/exerion.c b/src/mame/drivers/exerion.c
index bd15e7834b7..611a6d4c5d9 100644
--- a/src/mame/drivers/exerion.c
+++ b/src/mame/drivers/exerion.c
@@ -572,6 +572,6 @@ DRIVER_INIT_MEMBER(exerion_state,exerionb)
*
*************************************/
-GAME( 1983, exerion, 0, exerion, exerion, exerion_state, exerion, ROT90, "Jaleco", "Exerion", GAME_SUPPORTS_SAVE )
-GAME( 1983, exeriont, exerion, exerion, exerion, exerion_state, exerion, ROT90, "Jaleco (Taito America license)", "Exerion (Taito)", GAME_SUPPORTS_SAVE )
-GAME( 1983, exerionb, exerion, exerion, exerion, exerion_state, exerionb, ROT90, "bootleg", "Exerion (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1983, exerion, 0, exerion, exerion, exerion_state, exerion, ROT90, "Jaleco", "Exerion", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, exeriont, exerion, exerion, exerion, exerion_state, exerion, ROT90, "Jaleco (Taito America license)", "Exerion (Taito)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, exerionb, exerion, exerion, exerion, exerion_state, exerionb, ROT90, "bootleg", "Exerion (bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/exidy.c b/src/mame/drivers/exidy.c
index 706dab9d813..81d5d68ea9a 100644
--- a/src/mame/drivers/exidy.c
+++ b/src/mame/drivers/exidy.c
@@ -1551,34 +1551,34 @@ DRIVER_INIT_MEMBER(exidy_state,fax)
*
*************************************/
-GAME( 1979, sidetrac, 0, sidetrac, sidetrac, exidy_state, sidetrac, ROT0, "Exidy", "Side Trak", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // "Side Track" on title screen, but cabinet/flyers/documentation clearly indicates otherwise, "Side Trak" it is
+GAME( 1979, sidetrac, 0, sidetrac, sidetrac, exidy_state, sidetrac, ROT0, "Exidy", "Side Trak", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // "Side Track" on title screen, but cabinet/flyers/documentation clearly indicates otherwise, "Side Trak" it is
-GAME( 1980, targ, 0, targ, targ, exidy_state, targ, ROT0, "Exidy", "Targ", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, targc, targ, targ, targ, exidy_state, targ, ROT0, "Exidy", "Targ (cocktail?)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1980, targ, 0, targ, targ, exidy_state, targ, ROT0, "Exidy", "Targ", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, targc, targ, targ, targ, exidy_state, targ, ROT0, "Exidy", "Targ (cocktail?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 1980, spectar, 0, spectar, spectar, exidy_state, spectar, ROT0, "Exidy", "Spectar (revision 3)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, spectar1, spectar, spectar, spectar, exidy_state, spectar, ROT0, "Exidy", "Spectar (revision 1?)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, rallys, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Novar)", "Rallys (bootleg of Spectar, set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, rallysa, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Musik Box Brescia)", "Rallys (bootleg of Spectar, set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, panzer, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Proel)", "Panzer (bootleg of Spectar)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, phantoma, spectar, rallys, phantoma, exidy_state, phantoma, ROT0, "bootleg (Jeutel)", "Phantomas (bootleg of Spectar)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1980, phantom, spectar, rallys, phantoma, exidy_state, phantoma, ROT0, "bootleg (Proel)", "Phantom (bootleg of Spectar)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1980, spectar, 0, spectar, spectar, exidy_state, spectar, ROT0, "Exidy", "Spectar (revision 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, spectar1, spectar, spectar, spectar, exidy_state, spectar, ROT0, "Exidy", "Spectar (revision 1?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, rallys, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Novar)", "Rallys (bootleg of Spectar, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, rallysa, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Musik Box Brescia)", "Rallys (bootleg of Spectar, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, panzer, spectar, rallys, rallys, exidy_state, rallys, ROT0, "bootleg (Proel)", "Panzer (bootleg of Spectar)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, phantoma, spectar, rallys, phantoma, exidy_state, phantoma, ROT0, "bootleg (Jeutel)", "Phantomas (bootleg of Spectar)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, phantom, spectar, rallys, phantoma, exidy_state, phantoma, ROT0, "bootleg (Proel)", "Phantom (bootleg of Spectar)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 1981, mtrap, 0, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 5)", GAME_SUPPORTS_SAVE )
-GAME( 1981, mtrap3, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 3)", GAME_SUPPORTS_SAVE )
-GAME( 1981, mtrap4, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 4)", GAME_SUPPORTS_SAVE )
-GAME( 1981, mtrapb, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "bootleg", "Mouse Trap (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1981, mtrap, 0, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mtrap3, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mtrap4, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "Exidy", "Mouse Trap (version 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mtrapb, mtrap, mtrap, mtrap, exidy_state, mtrap, ROT0, "bootleg", "Mouse Trap (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, venture, 0, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 5 set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, venture2, venture, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 5 set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1981, venture4, venture, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 4)", GAME_SUPPORTS_SAVE )
+GAME( 1981, venture, 0, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 5 set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, venture2, venture, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 5 set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, venture4, venture, venture, venture, exidy_state, venture, ROT0, "Exidy", "Venture (version 4)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, teetert, 0, teetert, teetert, exidy_state, teetert, ROT0, "Exidy", "Teeter Torture (prototype)", GAME_SUPPORTS_SAVE )
+GAME( 1982, teetert, 0, teetert, teetert, exidy_state, teetert, ROT0, "Exidy", "Teeter Torture (prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, pepper2, 0, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Pepper II (version 8)", GAME_SUPPORTS_SAVE )
-GAME( 1982, pepper27, pepper2, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Pepper II (version 7)", GAME_SUPPORTS_SAVE )
+GAME( 1982, pepper2, 0, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Pepper II (version 8)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, pepper27, pepper2, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Pepper II (version 7)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, hardhat, 0, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Hard Hat", GAME_SUPPORTS_SAVE )
+GAME( 1982, hardhat, 0, pepper2, pepper2, exidy_state, pepper2, ROT0, "Exidy", "Hard Hat", MACHINE_SUPPORTS_SAVE )
-GAME( 1983, fax, 0, fax, fax, exidy_state, fax, ROT0, "Exidy", "FAX", GAME_SUPPORTS_SAVE )
-GAME( 1983, fax2, fax, fax, fax, exidy_state, fax, ROT0, "Exidy", "FAX 2", GAME_SUPPORTS_SAVE )
+GAME( 1983, fax, 0, fax, fax, exidy_state, fax, ROT0, "Exidy", "FAX", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, fax2, fax, fax, fax, exidy_state, fax, ROT0, "Exidy", "FAX 2", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/exidyttl.c b/src/mame/drivers/exidyttl.c
index 9878e0692f0..e5b6beba535 100644
--- a/src/mame/drivers/exidyttl.c
+++ b/src/mame/drivers/exidyttl.c
@@ -213,6 +213,6 @@ ROM_END
-GAME( 1977, attckexd, 0, attack, 0, driver_device, 0, ROT0, "Exidy", "Attack (Set 1) [TTL]", GAME_IS_SKELETON )
-GAME( 1977, attckexd2, attckexd, attack, 0, driver_device, 0, ROT0, "Exidy", "Attack (Set 2) [TTL]", GAME_IS_SKELETON )
-GAME( 1976, deathrac, 0, deathrac, 0, driver_device, 0, ROT0, "Exidy", "Death Race [TTL]", GAME_IS_SKELETON )
+GAME( 1977, attckexd, 0, attack, 0, driver_device, 0, ROT0, "Exidy", "Attack (Set 1) [TTL]", MACHINE_IS_SKELETON )
+GAME( 1977, attckexd2, attckexd, attack, 0, driver_device, 0, ROT0, "Exidy", "Attack (Set 2) [TTL]", MACHINE_IS_SKELETON )
+GAME( 1976, deathrac, 0, deathrac, 0, driver_device, 0, ROT0, "Exidy", "Death Race [TTL]", MACHINE_IS_SKELETON )
diff --git a/src/mess/drivers/exp85.c b/src/mame/drivers/exp85.c
index 82d2c679f98..82d2c679f98 100644
--- a/src/mess/drivers/exp85.c
+++ b/src/mame/drivers/exp85.c
diff --git a/src/mame/drivers/expro02.c b/src/mame/drivers/expro02.c
index 9a68c8193b9..bd1d43e5840 100644
--- a/src/mame/drivers/expro02.c
+++ b/src/mame/drivers/expro02.c
@@ -1831,38 +1831,38 @@ DRIVER_INIT_MEMBER(expro02_state,expro02)
*
*************************************/
-GAME( 1990, galsnew, 0, expro02, expro02, expro02_state, expro02, ROT90, "Kaneko", "Gals Panic (US, EXPRO-02 PCB)", GAME_NO_COCKTAIL )
-GAME( 1990, galsnewa, galsnew, expro02, galsnewa, expro02_state, expro02, ROT90, "Kaneko", "Gals Panic (Export, EXPRO-02 PCB)", GAME_NO_COCKTAIL )
-GAME( 1990, galsnewj, galsnew, expro02, galsnewj, expro02_state, expro02, ROT90, "Kaneko (Taito license)", "Gals Panic (Japan, EXPRO-02 PCB)", GAME_NO_COCKTAIL )
-GAME( 1990, galsnewk, galsnew, expro02, galsnewj, expro02_state, expro02, ROT90, "Kaneko (Inter license)", "Gals Panic (Korea, EXPRO-02 PCB)", GAME_NO_COCKTAIL )
+GAME( 1990, galsnew, 0, expro02, expro02, expro02_state, expro02, ROT90, "Kaneko", "Gals Panic (US, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL )
+GAME( 1990, galsnewa, galsnew, expro02, galsnewa, expro02_state, expro02, ROT90, "Kaneko", "Gals Panic (Export, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL )
+GAME( 1990, galsnewj, galsnew, expro02, galsnewj, expro02_state, expro02, ROT90, "Kaneko (Taito license)", "Gals Panic (Japan, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL )
+GAME( 1990, galsnewk, galsnew, expro02, galsnewj, expro02_state, expro02, ROT90, "Kaneko (Inter license)", "Gals Panic (Korea, EXPRO-02 PCB)", MACHINE_NO_COCKTAIL )
/* the first version of Fantasia clones the EXPRO02 almost exactly, including the encrypted tiles*/
-GAME( 1994, fantasia, 0, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940429 PCB, set 1)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
-GAME( 1994, fantasiab, fantasia, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940429 PCB, set 2)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
-GAME( 1994, fantasiaa, fantasia, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940307 PCB)", GAME_NO_COCKTAIL | GAME_IMPERFECT_GRAPHICS )
+GAME( 1994, fantasia, 0, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940429 PCB, set 1)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, fantasiab, fantasia, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940429 PCB, set 2)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1994, fantasiaa, fantasia, comad, fantasia, expro02_state, expro02, ROT90, "Comad & New Japan System", "Fantasia (940307 PCB)", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_GRAPHICS )
/* subsequent releases remove the encrypted tile (View2 layer) but leave the unused writes to it in the program code */
-GAME( 1994, fantasian,fantasia, fantasia, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "Fantasia (940803 PCB)", GAME_NO_COCKTAIL )
+GAME( 1994, fantasian,fantasia, fantasia, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "Fantasia (940803 PCB)", MACHINE_NO_COCKTAIL )
-GAME( 1994, supmodel, 0, supmodel, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "Super Model",GAME_NO_COCKTAIL )
+GAME( 1994, supmodel, 0, supmodel, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "Super Model",MACHINE_NO_COCKTAIL )
-GAME( 1995, newfant, 0, fantasia, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "New Fantasia (1995 copyright)", GAME_NO_COCKTAIL ) // the only difference between the two is the gfx rom containing the copyright
-GAME( 1994, newfanta, newfant, fantasia, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "New Fantasia (1994 copyright)", GAME_NO_COCKTAIL )
-GAME( 1995, fantsy95, newfant, fantasia, fantasiaa, driver_device, 0, ROT90, "Hi-max Technology Inc.", "Fantasy '95", GAME_NO_COCKTAIL )
+GAME( 1995, newfant, 0, fantasia, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "New Fantasia (1995 copyright)", MACHINE_NO_COCKTAIL ) // the only difference between the two is the gfx rom containing the copyright
+GAME( 1994, newfanta, newfant, fantasia, fantasiaa, driver_device, 0, ROT90, "Comad & New Japan System", "New Fantasia (1994 copyright)", MACHINE_NO_COCKTAIL )
+GAME( 1995, fantsy95, newfant, fantasia, fantasiaa, driver_device, 0, ROT90, "Hi-max Technology Inc.", "Fantasy '95", MACHINE_NO_COCKTAIL )
-GAME( 1996, missw96, 0, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (set 1)", GAME_NO_COCKTAIL )
-GAME( 1996, missw96a, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (set 2)", GAME_NO_COCKTAIL )
-GAME( 1996, missw96b, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (set 3)", GAME_NO_COCKTAIL )
-GAME( 1996, missmw96, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss Mister World '96 (Nude)", GAME_NO_COCKTAIL )
+GAME( 1996, missw96, 0, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (set 1)", MACHINE_NO_COCKTAIL )
+GAME( 1996, missw96a, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (set 2)", MACHINE_NO_COCKTAIL )
+GAME( 1996, missw96b, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss World '96 (Nude) (set 3)", MACHINE_NO_COCKTAIL )
+GAME( 1996, missmw96, missw96, fantasia, missw96, driver_device, 0, ROT0, "Comad", "Miss Mister World '96 (Nude)", MACHINE_NO_COCKTAIL )
-GAME( 1996, smissw, 0, smissw, missw96, driver_device, 0, ROT0, "Comad", "Super Miss World", GAME_NO_COCKTAIL ) // 951127 PCB
+GAME( 1996, smissw, 0, smissw, missw96, driver_device, 0, ROT0, "Comad", "Super Miss World", MACHINE_NO_COCKTAIL ) // 951127 PCB
-GAME( 1997, fantsia2, 0, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "Fantasia II (Explicit)", GAME_NO_COCKTAIL )
-GAME( 1997, fantsia2a,fantsia2, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "Fantasia II (Less Explicit)", GAME_NO_COCKTAIL )
-GAME( 1998, fantsia2n,fantsia2, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "Fantasia II (1998)", GAME_NO_COCKTAIL )
+GAME( 1997, fantsia2, 0, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "Fantasia II (Explicit)", MACHINE_NO_COCKTAIL )
+GAME( 1997, fantsia2a,fantsia2, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "Fantasia II (Less Explicit)", MACHINE_NO_COCKTAIL )
+GAME( 1998, fantsia2n,fantsia2, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "Fantasia II (1998)", MACHINE_NO_COCKTAIL )
-GAME( 2002, wownfant, 0, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "WOW New Fantasia", GAME_NO_COCKTAIL )
+GAME( 2002, wownfant, 0, fantsia2, missw96, driver_device, 0, ROT0, "Comad", "WOW New Fantasia", MACHINE_NO_COCKTAIL )
-GAME( 1996, pgalvip, 0, galhustl, galhustl, driver_device, 0, ROT0, "ACE International / Afega","Pocket Gals V.I.P (set 1)", GAME_IMPERFECT_GRAPHICS ) // roms were all AFEGA stickered, select screen seems wrong? maybe not a final version.
+GAME( 1996, pgalvip, 0, galhustl, galhustl, driver_device, 0, ROT0, "ACE International / Afega","Pocket Gals V.I.P (set 1)", MACHINE_IMPERFECT_GRAPHICS ) // roms were all AFEGA stickered, select screen seems wrong? maybe not a final version.
GAME( 1997, pgalvipa, pgalvip, galhustl, galhustl, driver_device, 0, ROT0, "<unknown>", "Pocket Gals V.I.P (set 2)", 0 )
GAME( 1997, galhustl, pgalvip, galhustl, galhustl, driver_device, 0, ROT0, "ACE International", "Gals Hustler", 0 ) // hack of the above?
-GAME( 1995, zipzap, 0, zipzap, zipzap, driver_device, 0, ROT90, "Barko Corp", "Zip & Zap", GAME_IMPERFECT_GRAPHICS|GAME_IMPERFECT_SOUND )
+GAME( 1995, zipzap, 0, zipzap, zipzap, driver_device, 0, ROT90, "Barko Corp", "Zip & Zap", MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/exprraid.c b/src/mame/drivers/exprraid.c
index cd26b2a7833..dc70f742ec8 100644
--- a/src/mame/drivers/exprraid.c
+++ b/src/mame/drivers/exprraid.c
@@ -868,10 +868,10 @@ DRIVER_INIT_MEMBER(exprraid_state,wexpressb3)
}
-GAME( 1986, exprraid, 0, exprraid, exprraid, exprraid_state, exprraid, ROT0, "Data East Corporation", "Express Raider (World, Rev 4)", GAME_SUPPORTS_SAVE )
-GAME( 1986, exprraidu, exprraid, exprraid, exprraid, exprraid_state, exprraid, ROT0, "Data East USA", "Express Raider (US, rev 5)", GAME_SUPPORTS_SAVE )
-GAME( 1986, exprraidi, exprraid, exprraid, exprraid, exprraid_state, exprraid, ROT0, "Data East Corporation", "Express Raider (Italy)", GAME_SUPPORTS_SAVE )
-GAME( 1986, wexpress, exprraid, exprraid, exprraid, exprraid_state, exprraid, ROT0, "Data East Corporation", "Western Express (Japan, rev 4)", GAME_SUPPORTS_SAVE )
-GAME( 1986, wexpressb1,exprraid, exprraid, exprraid, exprraid_state, wexpressb, ROT0, "bootleg", "Western Express (bootleg set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, wexpressb2,exprraid, exprboot, exprboot, exprraid_state, wexpressb2,ROT0, "bootleg", "Western Express (bootleg set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, wexpressb3,exprraid, exprboot, exprboot, exprraid_state, wexpressb3,ROT0, "bootleg", "Western Express (bootleg set 3)", GAME_SUPPORTS_SAVE )
+GAME( 1986, exprraid, 0, exprraid, exprraid, exprraid_state, exprraid, ROT0, "Data East Corporation", "Express Raider (World, Rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, exprraidu, exprraid, exprraid, exprraid, exprraid_state, exprraid, ROT0, "Data East USA", "Express Raider (US, rev 5)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, exprraidi, exprraid, exprraid, exprraid, exprraid_state, exprraid, ROT0, "Data East Corporation", "Express Raider (Italy)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, wexpress, exprraid, exprraid, exprraid, exprraid_state, exprraid, ROT0, "Data East Corporation", "Western Express (Japan, rev 4)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, wexpressb1,exprraid, exprraid, exprraid, exprraid_state, wexpressb, ROT0, "bootleg", "Western Express (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, wexpressb2,exprraid, exprboot, exprboot, exprraid_state, wexpressb2,ROT0, "bootleg", "Western Express (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, wexpressb3,exprraid, exprboot, exprboot, exprraid_state, wexpressb3,ROT0, "bootleg", "Western Express (bootleg set 3)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/extrema.c b/src/mame/drivers/extrema.c
index 5f737355b7a..4412839f895 100644
--- a/src/mame/drivers/extrema.c
+++ b/src/mame/drivers/extrema.c
@@ -158,13 +158,13 @@ ROM_END
-GAME( 200?, maski, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Maski Show (Russia) (Extrema)", GAME_IS_SKELETON)
-GAME( 200?, adults, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Adults Only (Russia) (Extrema)", GAME_IS_SKELETON)
-GAME( 200?, bloto, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Blits Loto (Russia) (Extrema)", GAME_IS_SKELETON)
-GAME( 200?, blpearl, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Black Pearl (Russia) (Extrema)", GAME_IS_SKELETON)
-GAME( 200?, grancan, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Grand Canyon (Russia) (Extrema)", GAME_IS_SKELETON)
-GAME( 200?, luckshel, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Lucky Shell (Russia) (Extrema)", GAME_IS_SKELETON)
-GAME( 200?, exsafar, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Safari (Russia) (Extrema)", GAME_IS_SKELETON)
-GAME( 200?, strlink, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Strong Link (Russia) (Extrema)", GAME_IS_SKELETON)
-GAME( 200?, extrmth, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Treasure Hunt (Russia) (Extrema)", GAME_IS_SKELETON)
-GAME( 200?, extrmti, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Treasure Island (Russia) (Extrema)", GAME_IS_SKELETON)
+GAME( 200?, maski, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Maski Show (Russia) (Extrema)", MACHINE_IS_SKELETON)
+GAME( 200?, adults, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Adults Only (Russia) (Extrema)", MACHINE_IS_SKELETON)
+GAME( 200?, bloto, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Blits Loto (Russia) (Extrema)", MACHINE_IS_SKELETON)
+GAME( 200?, blpearl, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Black Pearl (Russia) (Extrema)", MACHINE_IS_SKELETON)
+GAME( 200?, grancan, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Grand Canyon (Russia) (Extrema)", MACHINE_IS_SKELETON)
+GAME( 200?, luckshel, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Lucky Shell (Russia) (Extrema)", MACHINE_IS_SKELETON)
+GAME( 200?, exsafar, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Safari (Russia) (Extrema)", MACHINE_IS_SKELETON)
+GAME( 200?, strlink, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Strong Link (Russia) (Extrema)", MACHINE_IS_SKELETON)
+GAME( 200?, extrmth, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Treasure Hunt (Russia) (Extrema)", MACHINE_IS_SKELETON)
+GAME( 200?, extrmti, 0, extrema, extrema, driver_device, 0, ROT0, "Extrema", "Treasure Island (Russia) (Extrema)", MACHINE_IS_SKELETON)
diff --git a/src/mame/drivers/exzisus.c b/src/mame/drivers/exzisus.c
index 0322ca8b72f..8291560d45a 100644
--- a/src/mame/drivers/exzisus.c
+++ b/src/mame/drivers/exzisus.c
@@ -386,6 +386,6 @@ ROM_START( exzisust )
ROM_LOAD( "b23-05.16l", 0x00800, 0x00400, CRC(87f0f69a) SHA1(37df6fd56245fab9beaabfd86fd8f95d7c42c2a5) )
ROM_END
-GAME( 1987, exzisus, 0, exzisus, exzisus, driver_device, 0, ROT0, "Taito Corporation", "Exzisus (Japan, dedicated)", GAME_SUPPORTS_SAVE )
-GAME( 1987, exzisusa, exzisus, exzisus, exzisus, driver_device, 0, ROT0, "Taito Corporation", "Exzisus (Japan, conversion)", GAME_SUPPORTS_SAVE )
-GAME( 1987, exzisust, exzisus, exzisus, exzisus, driver_device, 0, ROT0, "Taito Corporation (TAD license)", "Exzisus (TAD license)", GAME_SUPPORTS_SAVE )
+GAME( 1987, exzisus, 0, exzisus, exzisus, driver_device, 0, ROT0, "Taito Corporation", "Exzisus (Japan, dedicated)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, exzisusa, exzisus, exzisus, exzisus, driver_device, 0, ROT0, "Taito Corporation", "Exzisus (Japan, conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, exzisust, exzisus, exzisus, exzisus, driver_device, 0, ROT0, "Taito Corporation (TAD license)", "Exzisus (TAD license)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/f-32.c b/src/mame/drivers/f-32.c
index 0e06f788aa8..a3fa89710d5 100644
--- a/src/mame/drivers/f-32.c
+++ b/src/mame/drivers/f-32.c
@@ -361,5 +361,5 @@ ROM_START( royalpk2 )
ROM_END
-GAME( 1999, mosaicf2, 0, mosaicf2, mosaicf2, driver_device, 0, ROT0, "F2 System", "Mosaic (F2 System)", GAME_SUPPORTS_SAVE )
-GAME( 1999, royalpk2, 0, royalpk2, royalpk2, driver_device, 0, ROT0, "F2 System", "Royal Poker 2 (Network version 3.12)", GAME_NOT_WORKING )
+GAME( 1999, mosaicf2, 0, mosaicf2, mosaicf2, driver_device, 0, ROT0, "F2 System", "Mosaic (F2 System)", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, royalpk2, 0, royalpk2, royalpk2, driver_device, 0, ROT0, "F2 System", "Royal Poker 2 (Network version 3.12)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/f1gp.c b/src/mame/drivers/f1gp.c
index 73f0cd9d816..201fd3fdb57 100644
--- a/src/mame/drivers/f1gp.c
+++ b/src/mame/drivers/f1gp.c
@@ -671,7 +671,7 @@ ROM_START( f1gp2 )
ROM_END
-GAME( 1991, f1gp, 0, f1gp, f1gp, driver_device, 0, ROT90, "Video System Co.", "F-1 Grand Prix", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1991, f1gpb, f1gp, f1gpb, f1gp, driver_device, 0, ROT90, "bootleg (Playmark)", "F-1 Grand Prix (Playmark bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // PCB marked 'Super Formula II', manufactured by Playmark.
+GAME( 1991, f1gp, 0, f1gp, f1gp, driver_device, 0, ROT90, "Video System Co.", "F-1 Grand Prix", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, f1gpb, f1gp, f1gpb, f1gp, driver_device, 0, ROT90, "bootleg (Playmark)", "F-1 Grand Prix (Playmark bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // PCB marked 'Super Formula II', manufactured by Playmark.
-GAME( 1992, f1gp2, 0, f1gp2, f1gp2, driver_device, 0, ROT90, "Video System Co.", "F-1 Grand Prix Part II", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1992, f1gp2, 0, f1gp2, f1gp2, driver_device, 0, ROT90, "Video System Co.", "F-1 Grand Prix Part II", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/famibox.c b/src/mame/drivers/famibox.c
index 4fa86d1e071..cc27ae1d0ca 100644
--- a/src/mame/drivers/famibox.c
+++ b/src/mame/drivers/famibox.c
@@ -635,4 +635,4 @@ ROM_START(famibox)
ROM_END
-GAME( 1986, famibox, 0, famibox, famibox, driver_device, 0, ROT0, "Nintendo", "FamicomBox", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND)
+GAME( 1986, famibox, 0, famibox, famibox, driver_device, 0, ROT0, "Nintendo", "FamicomBox", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/drivers/fantland.c b/src/mame/drivers/fantland.c
index 0cb319ac335..9153a4cb5a9 100644
--- a/src/mame/drivers/fantland.c
+++ b/src/mame/drivers/fantland.c
@@ -1404,8 +1404,8 @@ ROM_START( wheelrun )
ROM_END
-GAME( 19??, borntofi, 0, borntofi, borntofi, driver_device, 0, ROT0, "International Games", "Born To Fight", GAME_SUPPORTS_SAVE )
-GAME( 19??, fantland, 0, fantland, fantland, driver_device, 0, ROT0, "Electronic Devices Italy", "Fantasy Land (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 19??, fantlanda, fantland, fantland, fantland, driver_device, 0, ROT0, "Electronic Devices Italy", "Fantasy Land (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 19??, wheelrun, 0, wheelrun, wheelrun, driver_device, 0, ROT0, "International Games", "Wheels Runner", GAME_SUPPORTS_SAVE )
-GAME( 1989, galaxygn, 0, galaxygn, galaxygn, driver_device, 0, ROT90, "Electronic Devices Italy", "Galaxy Gunners", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 19??, borntofi, 0, borntofi, borntofi, driver_device, 0, ROT0, "International Games", "Born To Fight", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, fantland, 0, fantland, fantland, driver_device, 0, ROT0, "Electronic Devices Italy", "Fantasy Land (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, fantlanda, fantland, fantland, fantland, driver_device, 0, ROT0, "Electronic Devices Italy", "Fantasy Land (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, wheelrun, 0, wheelrun, wheelrun, driver_device, 0, ROT0, "International Games", "Wheels Runner", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, galaxygn, 0, galaxygn, galaxygn, driver_device, 0, ROT90, "Electronic Devices Italy", "Galaxy Gunners", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/fanucs15.c b/src/mame/drivers/fanucs15.c
index 41e681b3518..ce3f9a79bac 100644
--- a/src/mess/drivers/fanucs15.c
+++ b/src/mame/drivers/fanucs15.c
@@ -420,4 +420,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1990, fanucs15, 0, 0, fanucs15, fanucs15, driver_device, 0, "Fanuc", "System 15", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1990, fanucs15, 0, 0, fanucs15, fanucs15, driver_device, 0, "Fanuc", "System 15", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/fanucspmg.c b/src/mame/drivers/fanucspmg.c
index 83a8dd42bb3..9b40227094b 100644
--- a/src/mess/drivers/fanucspmg.c
+++ b/src/mame/drivers/fanucspmg.c
@@ -1007,5 +1007,5 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1983, fanucspg, 0, 0, fanucspmg, fanucspmg, fanucspmg_state, fanucspmg, "Fanuc", "System P Model G", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1983, fanucspgm, fanucspg, 0, fanucspmgm, fanucspmg, fanucspmg_state, fanucspmg, "Fanuc", "System P Model G (monochrome)", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1983, fanucspg, 0, 0, fanucspmg, fanucspmg, fanucspmg_state, fanucspmg, "Fanuc", "System P Model G", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1983, fanucspgm, fanucspg, 0, fanucspmgm, fanucspmg, fanucspmg_state, fanucspmg, "Fanuc", "System P Model G (monochrome)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/fastfred.c b/src/mame/drivers/fastfred.c
index 8e548f3068c..3165a2bfb66 100644
--- a/src/mame/drivers/fastfred.c
+++ b/src/mame/drivers/fastfred.c
@@ -1050,13 +1050,13 @@ DRIVER_INIT_MEMBER(fastfred_state,imago)
m_hardware_type = 3;
}
-GAME( 1982, flyboy, 0, fastfred, flyboy, fastfred_state, flyboy, ROT90, "Kaneko", "Fly-Boy", GAME_SUPPORTS_SAVE )
-GAME( 1982, flyboyb, flyboy, fastfred, flyboy, fastfred_state, flyboyb, ROT90, "bootleg", "Fly-Boy (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1982, fastfred, flyboy, fastfred, fastfred, fastfred_state, fastfred, ROT90, "Kaneko (Atari license)", "Fast Freddie", GAME_SUPPORTS_SAVE )
-GAME( 1983, jumpcoas, 0, jumpcoas, jumpcoas, fastfred_state, jumpcoas, ROT90, "Kaneko", "Jump Coaster", GAME_SUPPORTS_SAVE )
-GAME( 1983, jumpcoast,jumpcoas, jumpcoas, jumpcoas, fastfred_state, jumpcoas, ROT90, "Kaneko (Taito license)", "Jump Coaster (Taito)", GAME_SUPPORTS_SAVE )
-GAME( 1983, boggy84, 0, jumpcoas, boggy84, fastfred_state, boggy84, ROT90, "Kaneko", "Boggy '84", GAME_SUPPORTS_SAVE )
-GAME( 1983, boggy84b, boggy84, jumpcoas, boggy84, fastfred_state, boggy84b, ROT90, "bootleg (Eddie's Games)", "Boggy '84 (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1986, redrobin, 0, fastfred, redrobin, fastfred_state, flyboyb, ROT90, "Elettronolo", "Red Robin", GAME_SUPPORTS_SAVE )
+GAME( 1982, flyboy, 0, fastfred, flyboy, fastfred_state, flyboy, ROT90, "Kaneko", "Fly-Boy", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, flyboyb, flyboy, fastfred, flyboy, fastfred_state, flyboyb, ROT90, "bootleg", "Fly-Boy (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, fastfred, flyboy, fastfred, fastfred, fastfred_state, fastfred, ROT90, "Kaneko (Atari license)", "Fast Freddie", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jumpcoas, 0, jumpcoas, jumpcoas, fastfred_state, jumpcoas, ROT90, "Kaneko", "Jump Coaster", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, jumpcoast,jumpcoas, jumpcoas, jumpcoas, fastfred_state, jumpcoas, ROT90, "Kaneko (Taito license)", "Jump Coaster (Taito)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, boggy84, 0, jumpcoas, boggy84, fastfred_state, boggy84, ROT90, "Kaneko", "Boggy '84", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, boggy84b, boggy84, jumpcoas, boggy84, fastfred_state, boggy84b, ROT90, "bootleg (Eddie's Games)", "Boggy '84 (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, redrobin, 0, fastfred, redrobin, fastfred_state, flyboyb, ROT90, "Elettronolo", "Red Robin", MACHINE_SUPPORTS_SAVE )
GAME( 1984, imago, 0, imago, imago, fastfred_state, imago, ROT90, "Acom", "Imago (cocktail set)", 0 )
GAME( 1983, imagoa, imago, imago, imagoa, fastfred_state, imago, ROT90, "Acom", "Imago (no cocktail set)", 0 )
diff --git a/src/mame/drivers/fastlane.c b/src/mame/drivers/fastlane.c
index 1a7b1f0a931..0eda767b887 100644
--- a/src/mame/drivers/fastlane.c
+++ b/src/mame/drivers/fastlane.c
@@ -260,4 +260,4 @@ ROM_START( fastlane )
ROM_END
-GAME( 1987, fastlane, 0, fastlane, fastlane, driver_device, 0, ROT90, "Konami", "Fast Lane", GAME_NO_COCKTAIL | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1987, fastlane, 0, fastlane, fastlane, driver_device, 0, ROT90, "Konami", "Fast Lane", MACHINE_NO_COCKTAIL | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/fb01.c b/src/mame/drivers/fb01.c
index 534f1b33235..88353f634f5 100644
--- a/src/mess/drivers/fb01.c
+++ b/src/mame/drivers/fb01.c
@@ -225,4 +225,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-CONS( 1986, fb01, 0, 0, fb01, fb01, driver_device, 0, "Yamaha", "FB-01", GAME_SUPPORTS_SAVE )
+CONS( 1986, fb01, 0, 0, fb01, fb01, driver_device, 0, "Yamaha", "FB-01", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/fc100.c b/src/mame/drivers/fc100.c
index eb892c7952a..65d7c801bee 100644
--- a/src/mess/drivers/fc100.c
+++ b/src/mame/drivers/fc100.c
@@ -575,4 +575,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-CONS( 1982, fc100, 0, 0, fc100, fc100, fc100_state, fc100, "Goldstar", "FC-100", GAME_NOT_WORKING )
+CONS( 1982, fc100, 0, 0, fc100, fc100, fc100_state, fc100, "Goldstar", "FC-100", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/fcombat.c b/src/mame/drivers/fcombat.c
index 50b86177ba4..cd1f0c1a03c 100644
--- a/src/mame/drivers/fcombat.c
+++ b/src/mame/drivers/fcombat.c
@@ -445,4 +445,4 @@ ROM_START( fcombat )
ROM_LOAD( "fcprom_c.a9", 0x0220, 0x0100, CRC(768ac120) SHA1(ceede1d6cbeae08da96ef52bdca2718a839d88ab) ) /* bg char mixer */
ROM_END
-GAME( 1985, fcombat, 0, fcombat, fcombat, fcombat_state, fcombat, ROT90, "Jaleco", "Field Combat", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1985, fcombat, 0, fcombat, fcombat, fcombat_state, fcombat, ROT90, "Jaleco", "Field Combat", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fcrash.c b/src/mame/drivers/fcrash.c
index f05c5dfaaef..06d4f59beb8 100644
--- a/src/mame/drivers/fcrash.c
+++ b/src/mame/drivers/fcrash.c
@@ -1782,10 +1782,10 @@ ROM_START( fcrash )
ROMX_LOAD( "12.bin", 0x080001, 0x20000, CRC(25055642) SHA1(578cf6a436489cc1f2d1acdb0cba6c1cbee2e21f) , ROM_SKIP(3) )
ROMX_LOAD( "14.bin", 0x080002, 0x20000, CRC(b77d0328) SHA1(42eb1ebfda301f2b09f3add5932e8331f4790706) , ROM_SKIP(3) )
ROMX_LOAD( "16.bin", 0x080003, 0x20000, CRC(ea111a79) SHA1(1b86aa984d2d6c527e96b61274a82263f34d0d89) , ROM_SKIP(3) )
- ROMX_LOAD( "19.bin", 0x100000, 0x20000, CRC(b3aa1f48) SHA1(411f3855739992f5967e915f2a5255afcedeac2e) , ROM_SKIP(3) )
- ROMX_LOAD( "21.bin", 0x100001, 0x20000, CRC(04d175c9) SHA1(33e6e3fefae4e3977c8c954fbd7feff36e92d723) , ROM_SKIP(3) )
- ROMX_LOAD( "23.bin", 0x100002, 0x20000, CRC(e592ba4f) SHA1(62559481e0da3954a90da0ab0fb51f87f1b3dd9d) , ROM_SKIP(3) )
- ROMX_LOAD( "25.bin", 0x100003, 0x20000, CRC(b89a740f) SHA1(516d73c772e0a904dfb0bd84874919d78bbbd200) , ROM_SKIP(3) )
+ ROMX_LOAD( "19.bin", 0x100000, 0x20000, CRC(b3aa1f48) SHA1(411f3855739992f5967e915f2a5255afcedeac2e) , ROM_SKIP(3) ) // only these 4 differ from ffightbla (new title logo)
+ ROMX_LOAD( "21.bin", 0x100001, 0x20000, CRC(04d175c9) SHA1(33e6e3fefae4e3977c8c954fbd7feff36e92d723) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "23.bin", 0x100002, 0x20000, CRC(e592ba4f) SHA1(62559481e0da3954a90da0ab0fb51f87f1b3dd9d) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "25.bin", 0x100003, 0x20000, CRC(b89a740f) SHA1(516d73c772e0a904dfb0bd84874919d78bbbd200) , ROM_SKIP(3) ) // ^
ROMX_LOAD( "11.bin", 0x180000, 0x20000, CRC(d4457a60) SHA1(9e956efafa81a81aca92837df03968f5670ffc15) , ROM_SKIP(3) )
ROMX_LOAD( "13.bin", 0x180001, 0x20000, CRC(3b26a37d) SHA1(58d8d0cdef81c938fb1a5595f2d02b228865893b) , ROM_SKIP(3) )
ROMX_LOAD( "15.bin", 0x180002, 0x20000, CRC(6d837e09) SHA1(b4a133ab96c35b689ee692bfcc04981791099b6f) , ROM_SKIP(3) )
@@ -1814,7 +1814,46 @@ ROM_START( ffightbl )
ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) /* stars */
ROM_END
+// this is identical to the Final Crash bootleg but without the modified gfx.
+// it's less common than Final Crash, but is either the original bootleg, or the bootleggers wanted to restore the
+// original title.
+ROM_START( ffightbla )
+ ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD16_BYTE( "9.bin", 0x00000, 0x20000, CRC(c6854c91) SHA1(29f01cc65be5eaa3f86e99eebdd284104623abb0) )
+ ROM_LOAD16_BYTE( "5.bin", 0x00001, 0x20000, CRC(77f7c2b3) SHA1(feea48d9555824a2e5bf5e99ce159edc015f0792) )
+ ROM_LOAD16_BYTE( "8.bin", 0x40000, 0x20000, CRC(1895b3df) SHA1(415a26050c50ed79a7ee5ddd1b8d61593b1ce876) )
+ ROM_LOAD16_BYTE( "4.bin", 0x40001, 0x20000, CRC(bbd411ee) SHA1(85d50ca72ec46d627f9c88ff0809aa30e164821a) )
+ ROM_LOAD16_BYTE( "7.bin", 0x80000, 0x20000, CRC(5b23ebf2) SHA1(8c28c21a72a28ad249170026891c6bb865943f84) )
+ ROM_LOAD16_BYTE( "3.bin", 0x80001, 0x20000, CRC(aba2aebe) SHA1(294109b5929ed63859a55bef16643e3ade7da16f) )
+ ROM_LOAD16_BYTE( "6.bin", 0xc0000, 0x20000, CRC(d4bf37f6) SHA1(f47e1cc9aa3b3019ee57f59715e3a611acf9fe3e) )
+ ROM_LOAD16_BYTE( "2.bin", 0xc0001, 0x20000, CRC(07ac8f43) SHA1(7a41b003c76adaabd3f94929cc163461b70e0ed9) )
+ //ROM_FILL(0x2610, 1, 7) // temporary patch to fix transitions
+
+ ROM_REGION( 0x30000, "audiocpu", 0 ) /* Audio CPU + Sample Data */
+ ROM_LOAD( "1.bin", 0x00000, 0x20000, CRC(5b276c14) SHA1(73e53c077d4e3c1b919eee28b29e34176ee204f8) )
+ ROM_RELOAD( 0x10000, 0x20000 )
+ ROM_REGION( 0x200000, "gfx", 0 )
+ ROMX_LOAD( "18.bin", 0x000000, 0x20000, CRC(f1eee6d9) SHA1(bee95efbff49c582cff1cc6d9bb5ef4ea5c4a074) , ROM_SKIP(3) )
+ ROMX_LOAD( "20.bin", 0x000001, 0x20000, CRC(675f4537) SHA1(acc68822da3aafbb62f76cbffa5f3389fcc91447) , ROM_SKIP(3) )
+ ROMX_LOAD( "22.bin", 0x000002, 0x20000, CRC(db8a32ac) SHA1(b95f73dff291acee239e22e5fd7efe15d0de23be) , ROM_SKIP(3) )
+ ROMX_LOAD( "24.bin", 0x000003, 0x20000, CRC(f4113e57) SHA1(ff1f443c13494a169b9be24abc361d27a6d01c09) , ROM_SKIP(3) )
+ ROMX_LOAD( "10.bin", 0x080000, 0x20000, CRC(d478853e) SHA1(91fcf8eb022ccea66d291bec84ace557181cf861) , ROM_SKIP(3) )
+ ROMX_LOAD( "12.bin", 0x080001, 0x20000, CRC(25055642) SHA1(578cf6a436489cc1f2d1acdb0cba6c1cbee2e21f) , ROM_SKIP(3) )
+ ROMX_LOAD( "14.bin", 0x080002, 0x20000, CRC(b77d0328) SHA1(42eb1ebfda301f2b09f3add5932e8331f4790706) , ROM_SKIP(3) )
+ ROMX_LOAD( "16.bin", 0x080003, 0x20000, CRC(ea111a79) SHA1(1b86aa984d2d6c527e96b61274a82263f34d0d89) , ROM_SKIP(3) )
+ ROMX_LOAD( "ff-19.bin", 0x100000, 0x20000, CRC(7bc03747) SHA1(6964e5c562d6af5b4327ff828f3d0522c34911bc) , ROM_SKIP(3) ) // only these 4 differ from fcrash
+ ROMX_LOAD( "ff-21.bin", 0x100001, 0x20000, CRC(0c248e2b) SHA1(28731fe25a8eb39c1e0822cf9074a7a32c6b2978) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "ff-23.bin", 0x100002, 0x20000, CRC(53949d0e) SHA1(1b11134005a47c323917b9892fe44819c36c6ee2) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "ff-25.bin", 0x100003, 0x20000, CRC(8d34a67d) SHA1(69e9f52efb73952313848a6d54dbdc17a2275c59) , ROM_SKIP(3) ) // ^
+ ROMX_LOAD( "11.bin", 0x180000, 0x20000, CRC(d4457a60) SHA1(9e956efafa81a81aca92837df03968f5670ffc15) , ROM_SKIP(3) )
+ ROMX_LOAD( "13.bin", 0x180001, 0x20000, CRC(3b26a37d) SHA1(58d8d0cdef81c938fb1a5595f2d02b228865893b) , ROM_SKIP(3) )
+ ROMX_LOAD( "15.bin", 0x180002, 0x20000, CRC(6d837e09) SHA1(b4a133ab96c35b689ee692bfcc04981791099b6f) , ROM_SKIP(3) )
+ ROMX_LOAD( "17.bin", 0x180003, 0x20000, CRC(c59a4d6c) SHA1(59e49c7d24dd333007de4bb621050011a5392bcc) , ROM_SKIP(3) )
+
+ ROM_REGION( 0x8000, "gfx2", 0 )
+ ROM_COPY( "gfx", 0x000000, 0x000000, 0x8000 ) /* stars */
+ROM_END
@@ -2895,31 +2934,32 @@ ROM_END
// ************************************************************************* DRIVER MACROS
-GAME( 1990, cawingbl, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 1)", GAME_SUPPORTS_SAVE ) // 901012 ETC
-GAME( 1990, cawingb2, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 2)", GAME_SUPPORTS_SAVE ) // 901012 ETC
+GAME( 1990, cawingbl, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 1)", MACHINE_SUPPORTS_SAVE ) // 901012 ETC
+GAME( 1990, cawingb2, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 2)", MACHINE_SUPPORTS_SAVE ) // 901012 ETC
-GAME( 1993, dinopic, dino, dinopic, dino, cps_state, dinopic, ROT0, "bootleg", "Cadillacs and Dinosaurs (bootleg with PIC16c57, set 1)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // 930201 ETC
-GAME( 1993, dinopic2, dino, dinopic, dino, cps_state, dinopic, ROT0, "bootleg", "Cadillacs and Dinosaurs (bootleg with PIC16c57, set 2)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 930201 ETC
+GAME( 1993, dinopic, dino, dinopic, dino, cps_state, dinopic, ROT0, "bootleg", "Cadillacs and Dinosaurs (bootleg with PIC16c57, set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930201 ETC
+GAME( 1993, dinopic2, dino, dinopic, dino, cps_state, dinopic, ROT0, "bootleg", "Cadillacs and Dinosaurs (bootleg with PIC16c57, set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 930201 ETC
-GAME( 1990, fcrash, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", GAME_SUPPORTS_SAVE )
-GAME( 1990, ffightbl, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg", "Final Fight (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1990, fcrash, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ffightbl, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg", "Final Fight (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ffightbla, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg", "Final Fight (bootleg on Final Crash PCB)", MACHINE_SUPPORTS_SAVE ) // same as Final Crash without the modified gfx
-GAME( 1991, kodb, kod, kodb, kodb, cps_state, kodb, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 910731 "ETC"
-GAME( 1991, knightsb, knights, knightsb, knights, cps_state, dinopic, ROT0, "bootleg", "Knights of the Round (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 911127 - based on World version
+GAME( 1991, kodb, kod, kodb, kodb, cps_state, kodb, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 910731 "ETC"
+GAME( 1991, knightsb, knights, knightsb, knights, cps_state, dinopic, ROT0, "bootleg", "Knights of the Round (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 911127 - based on World version
-GAME( 1993, punipic, punisher, punipic, punisher, cps_state, punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 1)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // 930422 ETC
-GAME( 1993, punipic2, punisher, punipic, punisher, cps_state, punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 2)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // 930422 ETC
-GAME( 1993, punipic3, punisher, punipic, punisher, cps_state, punipic3, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 3)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // 930422 ETC
+GAME( 1993, punipic, punisher, punipic, punisher, cps_state, punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
+GAME( 1993, punipic2, punisher, punipic, punisher, cps_state, punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
+GAME( 1993, punipic3, punisher, punipic, punisher, cps_state, punipic3, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC
-GAME( 1992, sf2m1, sf2ce, sf2m1, sf2, cps_state, sf2m1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M1, bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 920313 ETC
-GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 920313 - based on (heavily modified) World version
-GAME( 1992, sf2mdta, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdta, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2mdtb, sf2ce, sf2mdt, sf2mdtb, cps_state, sf2mdtb, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 3)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2m1, sf2ce, sf2m1, sf2, cps_state, sf2m1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M1, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
+GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 - based on (heavily modified) World version
+GAME( 1992, sf2mdta, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdta, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
+GAME( 1992, sf2mdtb, sf2ce, sf2mdt, sf2mdtb, cps_state, sf2mdtb, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2b, sf2, sf2b, sf2mdt, cps_state, sf2b, ROT0, "bootleg", "Street Fighter II: The World Warrior (bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) //910204 - based on World version
+GAME( 1992, sf2b, sf2, sf2b, sf2mdt, cps_state, sf2b, ROT0, "bootleg", "Street Fighter II: The World Warrior (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) //910204 - based on World version
-GAME( 1992, sf2m9, sf2ce, sf2m1, sf2, cps_state, dinopic, ROT0, "bootleg", "Street Fighter II': Champion Edition (M9, bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 920313 ETC
+GAME( 1992, sf2m9, sf2ce, sf2m1, sf2, cps_state, sf2m1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M9, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
-GAME( 1993, slampic, slammast, slampic, slammast, cps_state, dinopic, ROT0, "bootleg", "Saturday Night Slam Masters (bootleg with PIC16c57)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) // 930713 ETC
+GAME( 1993, slampic, slammast, slampic, slammast, cps_state, dinopic, ROT0, "bootleg", "Saturday Night Slam Masters (bootleg with PIC16c57)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930713 ETC
-GAME( 1999, sgyxz, wof, sgyxz, sgyxz, cps_state, cps1, ROT0, "bootleg (All-In Electronic)", "Warriors of Fate ('sgyxz' bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 921005 - Sangokushi 2
+GAME( 1999, sgyxz, wof, sgyxz, sgyxz, cps_state, cps1, ROT0, "bootleg (All-In Electronic)", "Warriors of Fate ('sgyxz' bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 921005 - Sangokushi 2
diff --git a/src/mame/drivers/fgoal.c b/src/mame/drivers/fgoal.c
index 7238476fd78..6d4ee03f425 100644
--- a/src/mame/drivers/fgoal.c
+++ b/src/mame/drivers/fgoal.c
@@ -437,5 +437,5 @@ ROM_START( fgoala )
ROM_END
-GAME( 1979, fgoal, 0, fgoal, fgoal, driver_device, 0, ROT90, "Taito", "Field Goal (set 1)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1979, fgoala, fgoal, fgoal, fgoal, driver_device, 0, ROT90, "Taito", "Field Goal (set 2)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1979, fgoal, 0, fgoal, fgoal, driver_device, 0, ROT90, "Taito", "Field Goal (set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1979, fgoala, fgoal, fgoal, fgoal, driver_device, 0, ROT90, "Taito", "Field Goal (set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/fidelz80.c b/src/mame/drivers/fidelz80.c
index 2d64b061189..1d545c8405f 100644
--- a/src/mess/drivers/fidelz80.c
+++ b/src/mame/drivers/fidelz80.c
@@ -1418,9 +1418,9 @@ ROM_END
******************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1978, cc10, 0, 0, cc10, fidelz80, driver_device, 0, "Fidelity Electronics", "Chess Challenger 10 (Model CC10/BCC)", GAME_NOT_WORKING )
-COMP( 1979, vcc, 0, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Talking Chess Challenger (model VCC)", GAME_NOT_WORKING )
-COMP( 1979, vbrc, 0, 0, bridgec, bridgec, driver_device, 0, "Fidelity Electronics", "Bridge Challenger (model VBRC/7002)", GAME_NOT_WORKING )
-COMP( 1980, uvc, vcc, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Advanced Talking Chess Challenger (model UVC)", GAME_NOT_WORKING )
-COMP( 1980, bridgec3, vbrc, 0, bridgec, bridgec, driver_device, 0, "Fidelity Electronics", "Bridge Challenger 3 (model 7014)", GAME_NOT_WORKING )
-COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (model VSC)", GAME_NOT_WORKING | GAME_CLICKABLE_ARTWORK )
+COMP( 1978, cc10, 0, 0, cc10, fidelz80, driver_device, 0, "Fidelity Electronics", "Chess Challenger 10 (Model CC10/BCC)", MACHINE_NOT_WORKING )
+COMP( 1979, vcc, 0, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Talking Chess Challenger (model VCC)", MACHINE_NOT_WORKING )
+COMP( 1979, vbrc, 0, 0, bridgec, bridgec, driver_device, 0, "Fidelity Electronics", "Bridge Challenger (model VBRC/7002)", MACHINE_NOT_WORKING )
+COMP( 1980, uvc, vcc, 0, vcc, fidelz80, driver_device, 0, "Fidelity Electronics", "Advanced Talking Chess Challenger (model UVC)", MACHINE_NOT_WORKING )
+COMP( 1980, bridgec3, vbrc, 0, bridgec, bridgec, driver_device, 0, "Fidelity Electronics", "Bridge Challenger 3 (model 7014)", MACHINE_NOT_WORKING )
+COMP( 1980, vsc, 0, 0, vsc, vsc, driver_device, 0, "Fidelity Electronics", "Voice Sensory Chess Challenger (model VSC)", MACHINE_NOT_WORKING | MACHINE_CLICKABLE_ARTWORK )
diff --git a/src/mame/drivers/finalizr.c b/src/mame/drivers/finalizr.c
index cfd7a23f96f..98f09e6bf54 100644
--- a/src/mame/drivers/finalizr.c
+++ b/src/mame/drivers/finalizr.c
@@ -355,5 +355,5 @@ DRIVER_INIT_MEMBER(finalizr_state,finalizr)
}
-GAME( 1985, finalizr, 0, finalizr, finalizr, finalizr_state, finalizr, ROT90, "Konami", "Finalizer - Super Transformation", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1985, finalizrb, finalizr, finalizr, finalizrb, finalizr_state, finalizr, ROT90, "bootleg", "Finalizer - Super Transformation (bootleg)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1985, finalizr, 0, finalizr, finalizr, finalizr_state, finalizr, ROT90, "Konami", "Finalizer - Super Transformation", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, finalizrb, finalizr, finalizr, finalizrb, finalizr_state, finalizr, ROT90, "bootleg", "Finalizer - Super Transformation (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fireball.c b/src/mame/drivers/fireball.c
index 9c4c7135b7e..5c536efd420 100644
--- a/src/mame/drivers/fireball.c
+++ b/src/mame/drivers/fireball.c
@@ -524,4 +524,4 @@ ROM_END
* Game Drivers *
*************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS*/
-GAME( 1989, fireball, 0, fireball, fireball, driver_device, 0, ROT0, "Valco", "Fireball", GAME_MECHANICAL ) //1989 by rom name
+GAME( 1989, fireball, 0, fireball, fireball, driver_device, 0, ROT0, "Valco", "Fireball", MACHINE_MECHANICAL ) //1989 by rom name
diff --git a/src/mame/drivers/firebeat.c b/src/mame/drivers/firebeat.c
index efb1719ab4a..1d3002629bb 100644
--- a/src/mame/drivers/firebeat.c
+++ b/src/mame/drivers/firebeat.c
@@ -81,9 +81,9 @@
BIOS Game ID Year Game
------------------------------------------------------------------
GQ972 GQ972 2000 Beatmania III
- GQ972(?) ? 2001 Beatmania III Append 6th Mix
+ GQ972(?) GCA21 2001 Beatmania III Append 6th Mix
GQ972(?) GCB07 2002 Beatmania III Append 7th Mix
- GQ972(?) ? 2000 Beatmania III Append Core Remix
+ GQ972(?) GCA05 2000 Beatmania III Append Core Remix
GQ972(?) GCC01 2003 Beatmania III The Final
GQ974 GQ974 2000 Keyboardmania
GQ974 GCA01 2000 Keyboardmania 2nd Mix
@@ -101,13 +101,18 @@
??? GEA02 2001 Pop'n Music Animelo 2
??? ? 2001 Pop'n Music Mickey Tunes
- TODO:
- - The display list pointer setting in the graphics chip is not understood. Currently
- it has to be changed manually. (BIOS = 0x200000, PPP bootup = 0x1D0800, ingame = 0x0000, 0x8000 & 0x10000)
-
- - Keyboardmania 3rd mix is missing some graphics in the ingame. Most notably the backgrounds.
- The display list objects seem to be there, but the address is wrong (0x14c400, instead of the correct address)
+Dumpable pieces missing
+-----------------------
+Beatmania III - CD, HDD, EPROM on main board, EPROM on SPU board
+Beatmania III Append 6th Mix - HDD, dongle, EPROM on main board, EPROM on SPU board
+Para Para Paradise - dongle, program CD
+Para Para Paradise 1.1 - dongle
+Para Para Dancing - dongle, program CD
+Pop'n Music Animelo - dongle, CD, DVD
+Keyboard Mania - dongle, program CD, audio CD
+Keyboard Mania 2nd Mix - dongle, program CD, audio CD
+ TODO:
- The external Yamaha MIDI sound board is not emulated (no keyboard sounds).
@@ -141,13 +146,11 @@
#include "machine/midikbd.h"
#include "sound/ymz280b.h"
#include "sound/cdda.h"
+#include "sound/rf5c400.h"
+#include "video/k057714.h"
#include "firebeat.lh"
-#define DUMP_VRAM 0
-#define PRINT_GCU 0
-
-
struct IBUTTON_SUBKEY
{
UINT8 identifier[8];
@@ -160,718 +163,8 @@ struct IBUTTON
IBUTTON_SUBKEY subkey[3];
};
-#define MCFG_FIREBEAT_GCU_CPU_TAG(_tag) \
- firebeat_gcu_device::static_set_cpu_tag(*device, _tag);
-
-class firebeat_gcu_device : public device_t
-{
-public:
- firebeat_gcu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
- static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<firebeat_gcu_device &>(device).m_cputag = tag; }
-
- int draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
-
- DECLARE_READ32_MEMBER(read);
- DECLARE_WRITE32_MEMBER(write);
-
- struct framebuffer
- {
- UINT32 base;
- int width;
- int height;
- };
-
-protected:
- virtual void device_start();
- virtual void device_stop();
- virtual void device_reset();
-
-private:
- void execute_command(UINT32 *cmd);
- void execute_display_list(UINT32 addr);
- void draw_object(UINT32 *cmd);
- void fill_rect(UINT32 *cmd);
- void draw_character(UINT32 *cmd);
- void fb_config(UINT32 *cmd);
-
- UINT32 *m_vram;
- UINT32 m_vram_read_addr;
- UINT32 m_vram_fifo0_addr;
- UINT32 m_vram_fifo1_addr;
- UINT32 m_vram_fifo0_mode;
- UINT32 m_vram_fifo1_mode;
- UINT32 m_command_fifo0[4];
- UINT32 m_command_fifo0_ptr;
- UINT32 m_command_fifo1[4];
- UINT32 m_command_fifo1_ptr;
-
- const char* m_cputag;
- device_t* m_cpu;
-
- framebuffer m_frame[4];
- UINT32 m_fb_origin_x;
- UINT32 m_fb_origin_y;
-};
-
-const device_type FIREBEAT_GCU = &device_creator<firebeat_gcu_device>;
-
-firebeat_gcu_device::firebeat_gcu_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, FIREBEAT_GCU, "FireBeat GCU", tag, owner, clock, "firebeat_gcu", __FILE__)
-{
-}
-
-READ32_MEMBER(firebeat_gcu_device::read)
-{
- int reg = offset * 4;
-
- // VRAM Read
- if (reg >= 0x80 && reg < 0x100)
- {
- return m_vram[m_vram_read_addr + offset - 0x20];
- }
-
- switch (reg)
- {
- case 0x78: // GCU Status
- /* ppd checks bits 0x0041 of the upper halfword on interrupt */
- return 0xffff0005;
-
- default:
- break;
- }
-
- return 0xffffffff;
-}
-
-WRITE32_MEMBER(firebeat_gcu_device::write)
-{
- int reg = offset * 4;
-
- switch (reg)
- {
- case 0x10:
- /* IRQ clear/enable; ppd writes bit off then on in response to interrupt */
- /* it enables bits 0x41, but 0x01 seems to be the one it cares about */
- if (ACCESSING_BITS_16_31 && (data & 0x00010000) == 0)
- m_cpu->execute().set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
- if (ACCESSING_BITS_0_15)
-#if PRINT_GCU
- printf("%s_w: %02X, %08X, %08X\n", basetag(), reg, data, mem_mask);
-#endif
- break;
-
- case 0x14: // ?
- break;
-
- case 0x18: // ?
- break;
-
- case 0x20: // Framebuffer 0 Origin(?)
- break;
-
- case 0x24: // Framebuffer 1 Origin(?)
- break;
-
- case 0x28: // Framebuffer 2 Origin(?)
- break;
-
- case 0x2c: // Framebuffer 3 Origin(?)
- break;
-
- case 0x30: // Framebuffer 0 Dimensions
- if (ACCESSING_BITS_16_31)
- m_frame[0].height = (data >> 16) & 0xffff;
- if (ACCESSING_BITS_0_15)
- m_frame[0].width = data & 0xffff;
- break;
-
- case 0x34: // Framebuffer 1 Dimensions
- if (ACCESSING_BITS_16_31)
- m_frame[1].height = (data >> 16) & 0xffff;
- if (ACCESSING_BITS_0_15)
- m_frame[1].width = data & 0xffff;
- break;
-
- case 0x38: // Framebuffer 2 Dimensions
- if (ACCESSING_BITS_16_31)
- m_frame[2].height = (data >> 16) & 0xffff;
- if (ACCESSING_BITS_0_15)
- m_frame[2].width = data & 0xffff;
- break;
-
- case 0x3c: // Framebuffer 3 Dimensions
- if (ACCESSING_BITS_16_31)
- m_frame[3].height = (data >> 16) & 0xffff;
- if (ACCESSING_BITS_0_15)
- m_frame[3].width = data & 0xffff;
- break;
-
- case 0x40: // Framebuffer 0 Base
- m_frame[0].base = data;
-#if PRINT_GCU
- printf("%s FB0 Base: %08X\n", basetag(), data);
-#endif
- break;
-
- case 0x44: // Framebuffer 1 Base
- m_frame[1].base = data;
-#if PRINT_GCU
- printf("%s FB1 Base: %08X\n", basetag(), data);
-#endif
- break;
-
- case 0x48: // Framebuffer 2 Base
- m_frame[2].base = data;
-#if PRINT_GCU
- printf("%s FB2 Base: %08X\n", basetag(), data);
-#endif
- break;
-
- case 0x4c: // Framebuffer 3 Base
- m_frame[3].base = data;
-#if PRINT_GCU
- printf("%s FB3 Base: %08X\n", basetag(), data);
-#endif
- break;
-
- case 0x5c: // VRAM Read Address
- m_vram_read_addr = (data & 0xffffff) / 2;
- break;
-
- case 0x60: // VRAM Port 0 Write Address
- m_vram_fifo0_addr = (data & 0xffffff) / 2;
- break;
-
- case 0x68: // VRAM Port 0/1 Mode
- if (ACCESSING_BITS_16_31)
- m_vram_fifo0_mode = data >> 16;
- if (ACCESSING_BITS_0_15)
- m_vram_fifo1_mode = data & 0xffff;
- break;
-
- case 0x70: // VRAM Port 0 Write FIFO
- if (m_vram_fifo0_mode & 0x100)
- {
- // write to command fifo
- m_command_fifo0[m_command_fifo0_ptr] = data;
- m_command_fifo0_ptr++;
-
- // execute when filled
- if (m_command_fifo0_ptr >= 4)
- {
- //printf("GCU FIFO0 exec: %08X %08X %08X %08X\n", m_command_fifo0[0], m_command_fifo0[1], m_command_fifo0[2], m_command_fifo0[3]);
- execute_command(m_command_fifo0);
- m_command_fifo0_ptr = 0;
- }
- }
- else
- {
- // write to VRAM fifo
- m_vram[m_vram_fifo0_addr] = data;
- m_vram_fifo0_addr++;
- }
- break;
-
- case 0x64: // VRAM Port 1 Write Address
- m_vram_fifo1_addr = (data & 0xffffff) / 2;
- printf("GCU FIFO1 addr = %08X\n", data);
- break;
-
- case 0x74: // VRAM Port 1 Write FIFO
- printf("GCU FIFO1 write = %08X\n", data);
-
- if (m_vram_fifo1_mode & 0x100)
- {
- // write to command fifo
- m_command_fifo1[m_command_fifo1_ptr] = data;
- m_command_fifo1_ptr++;
-
- // execute when filled
- if (m_command_fifo1_ptr >= 4)
- {
- printf("GCU FIFO1 exec: %08X %08X %08X %08X\n", m_command_fifo1[0], m_command_fifo1[1], m_command_fifo1[2], m_command_fifo1[3]);
- m_command_fifo1_ptr = 0;
- }
- }
- else
- {
- // write to VRAM fifo
- m_vram[m_vram_fifo1_addr] = data;
- m_vram_fifo1_addr++;
- }
- break;
-
- default:
- //printf("%s_w: %02X, %08X, %08X\n", basetag(), reg, data, mem_mask);
- break;
- }
-}
-
-int firebeat_gcu_device::draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- UINT16 *vram16 = (UINT16*)m_vram;
-
- int x = 0;
- int y = 0;
- int width = m_frame[0].width;
- int height = m_frame[0].height;
-
- if (width != 0 && height != 0)
- {
- rectangle visarea = screen.visible_area();
- if ((visarea.max_x+1) != width || (visarea.max_y+1) != height)
- {
- visarea.max_x = width-1;
- visarea.max_y = height-1;
- screen.configure(width, height, visarea, screen.frame_period().attoseconds);
- }
- }
-
- int fb_pitch = 1024;
-
- for (int j=0; j < height; j++)
- {
- UINT16 *d = &bitmap.pix16(j, x);
- int li = ((j+y) * fb_pitch) + x;
- UINT32 fbaddr0 = m_frame[0].base + li;
- UINT32 fbaddr1 = m_frame[1].base + li;
-// UINT32 fbaddr2 = m_frame[2].base + li;
-// UINT32 fbaddr3 = m_frame[3].base + li;
-
- for (int i=0; i < width; i++)
- {
- UINT16 pix0 = vram16[fbaddr0 ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)];
- UINT16 pix1 = vram16[fbaddr1 ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)];
-// UINT16 pix2 = vram16[fbaddr2 ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)];
-// UINT16 pix3 = vram16[fbaddr3 ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)];
-
- if (pix0 & 0x8000)
- {
- d[i] = pix0 & 0x7fff;
- }
- else
- {
- d[i] = pix1 & 0x7fff;
- }
-
- fbaddr0++;
- fbaddr1++;
-// fbaddr2++;
-// fbaddr3++;
- }
- }
-
- return 0;
-}
-
-void firebeat_gcu_device::draw_object(UINT32 *cmd)
-{
- // 0x00: xxx----- -------- -------- -------- command (5)
- // 0x00: ---x---- -------- -------- -------- 0: absolute coordinates
- // 1: relative coordinates from framebuffer origin
- // 0x00: ----xx-- -------- -------- -------- ?
- // 0x00: -------- xxxxxxxx xxxxxxxx xxxxxxxx object data address in vram
-
- // 0x01: -------- -------- ------xx xxxxxxxx object x
- // 0x01: -------- xxxxxxxx xxxxxx-- -------- object y
- // 0x01: -----x-- -------- -------- -------- object x flip
- // 0x01: ----x--- -------- -------- -------- object y flip
- // 0x01: --xx---- -------- -------- -------- object alpha enable (different blend modes?)
- // 0x01: -x------ -------- -------- -------- object transparency enable (?)
-
- // 0x02: -------- -------- ------xx xxxxxxxx object width
- // 0x02: -------- -----xxx xxxxxx-- -------- object x scale
-
- // 0x03: -------- -------- ------xx xxxxxxxx object height
- // 0x03: -------- -----xxx xxxxxx-- -------- object y scale
-
- int x = cmd[1] & 0x3ff;
- int y = (cmd[1] >> 10) & 0x3fff;
- int width = (cmd[2] & 0x3ff) + 1;
- int height = (cmd[3] & 0x3ff) + 1;
- int xscale = (cmd[2] >> 10) & 0x1ff;
- int yscale = (cmd[3] >> 10) & 0x1ff;
- bool xflip = (cmd[1] & 0x04000000) ? true : false;
- bool yflip = (cmd[1] & 0x08000000) ? true : false;
- bool alpha_enable = (cmd[1] & 0x30000000) ? true : false;
- bool trans_enable = (cmd[1] & 0x40000000) ? true : false;
- UINT32 address = cmd[0] & 0xffffff;
- int alpha_level = (cmd[2] >> 27) & 0x1f;
- bool relative_coords = (cmd[0] & 0x10000000) ? true : false;
-
- if (relative_coords)
- {
- x += m_fb_origin_x;
- y += m_fb_origin_y;
- }
-
- UINT16 *vram16 = (UINT16*)m_vram;
-
- if (xscale == 0 || yscale == 0)
- {
- return;
- }
-
-#if PRINT_GCU
- printf("%s Draw Object %08X, x %d, y %d, w %d, h %d [%08X %08X %08X %08X]\n", basetag(), address, x, y, width, height, cmd[0], cmd[1], cmd[2], cmd[3]);
-#endif
-
- width = (((width * 65536) / xscale) * 64) / 65536;
- height = (((height * 65536) / yscale) * 64) / 65536;
-
- int fb_pitch = 1024;
-
- int v = 0;
- for (int j=0; j < height; j++)
- {
- int index;
- int xinc;
- UINT32 fbaddr = ((j+y) * fb_pitch) + x;
-
- if (yflip)
- {
- index = address + ((height - 1 - (v >> 6)) * 1024);
- }
- else
- {
- index = address + ((v >> 6) * 1024);
- }
-
- if (xflip)
- {
- fbaddr += width;
- xinc = -1;
- }
- else
- {
- xinc = 1;
- }
-
- int u = 0;
- for (int i=0; i < width; i++)
- {
- UINT16 pix = vram16[((index + (u >> 6)) ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)) & 0xffffff];
- bool draw = !trans_enable || (trans_enable && (pix & 0x8000));
- if (alpha_enable)
- {
- if (draw)
- {
- if ((pix & 0x7fff) != 0)
- {
- UINT16 srcpix = vram16[fbaddr ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)];
-
- UINT32 sr = (srcpix >> 10) & 0x1f;
- UINT32 sg = (srcpix >> 5) & 0x1f;
- UINT32 sb = (srcpix >> 0) & 0x1f;
- UINT32 r = (pix >> 10) & 0x1f;
- UINT32 g = (pix >> 5) & 0x1f;
- UINT32 b = (pix >> 0) & 0x1f;
-
- sr += (r * alpha_level) >> 4;
- sg += (g * alpha_level) >> 4;
- sb += (b * alpha_level) >> 4;
-
- if (sr > 0x1f) sr = 0x1f;
- if (sg > 0x1f) sg = 0x1f;
- if (sb > 0x1f) sb = 0x1f;
-
- vram16[fbaddr ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)] = (sr << 10) | (sg << 5) | sb | 0x8000;
- }
- }
- }
- else
- {
- if (draw)
- {
- vram16[fbaddr ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)] = pix | 0x8000;
- }
- }
-
- fbaddr += xinc;
- u += xscale;
- }
-
- v += yscale;
- }
-}
-
-void firebeat_gcu_device::fill_rect(UINT32 *cmd)
-{
- // 0x00: xxx----- -------- -------- -------- command (4)
- // 0x00: ---x---- -------- -------- -------- 0: absolute coordinates
- // 1: relative coordinates from framebuffer origin
- // 0x00: ----xx-- -------- -------- -------- ?
- // 0x00: -------- -------- ------xx xxxxxxxx width
- // 0x00: -------- ----xxxx xxxxxx-- -------- height
-
- // 0x01: -------- -------- ------xx xxxxxxxx x
- // 0x01: -------- xxxxxxxx xxxxxx-- -------- y
-
- // 0x02: xxxxxxxx xxxxxxxx -------- -------- fill pattern pixel 0
- // 0x02: -------- -------- xxxxxxxx xxxxxxxx fill pattern pixel 1
-
- // 0x03: xxxxxxxx xxxxxxxx -------- -------- fill pattern pixel 2
- // 0x03: -------- -------- xxxxxxxx xxxxxxxx fill pattern pixel 3
-
- int x = cmd[1] & 0x3ff;
- int y = (cmd[1] >> 10) & 0x3fff;
- int width = (cmd[0] & 0x3ff) + 1;
- int height = ((cmd[0] >> 10) & 0x3ff) + 1;
- bool relative_coords = (cmd[0] & 0x10000000) ? true : false;
-
- if (relative_coords)
- {
- x += m_fb_origin_x;
- y += m_fb_origin_y;
- }
-
- UINT16 color[4];
- color[0] = (cmd[2] >> 16);
- color[1] = (cmd[2] & 0xffff);
- color[2] = (cmd[3] >> 16);
- color[3] = (cmd[3] & 0xffff);
-
-#if PRINT_GCU
- printf("%s Fill Rect x %d, y %d, w %d, h %d, %08X %08X [%08X %08X %08X %08X]\n", basetag(), x, y, width, height, cmd[2], cmd[3], cmd[0], cmd[1], cmd[2], cmd[3]);
-#endif
-
- int x1 = x;
- int x2 = x + width;
- int y1 = y;
- int y2 = y + height;
-
- UINT16 *vram16 = (UINT16*)m_vram;
-
- int fb_pitch = 1024;
-
- for (int j=y1; j < y2; j++)
- {
- UINT32 fbaddr = j * fb_pitch;
- for (int i=x1; i < x2; i++)
- {
- vram16[(fbaddr+i) ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)] = color[i&3];
- }
- }
-}
-
-void firebeat_gcu_device::draw_character(UINT32 *cmd)
-{
- // 0x00: xxx----- -------- -------- -------- command (7)
- // 0x00: ---x---- -------- -------- -------- 0: absolute coordinates
- // 1: relative coordinates from framebuffer base (unverified, should be same as other operations)
- // 0x00: -------- xxxxxxxx xxxxxxxx xxxxxxxx character data address in vram
-
- // 0x01: -------- -------- ------xx xxxxxxxx character x
- // 0x01: -------- ----xxxx xxxxxx-- -------- character y
-
- // 0x02: xxxxxxxx xxxxxxxx -------- -------- color 0
- // 0x02: -------- -------- xxxxxxxx xxxxxxxx color 1
-
- // 0x03: xxxxxxxx xxxxxxxx -------- -------- color 2
- // 0x03: -------- -------- xxxxxxxx xxxxxxxx color 3
-
- int x = cmd[1] & 0x3ff;
- int y = (cmd[1] >> 10) & 0x3ff;
- UINT32 address = cmd[0] & 0xffffff;
- UINT16 color[4];
- bool relative_coords = (cmd[0] & 0x10000000) ? true : false;
-
- if (relative_coords)
- {
- x += m_fb_origin_x;
- y += m_fb_origin_y;
- }
-
- color[0] = cmd[2] >> 16;
- color[1] = cmd[2] & 0xffff;
- color[2] = cmd[3] >> 16;
- color[3] = cmd[3] & 0xffff;
-
-#if PRINT_GCU
- printf("%s Draw Char %08X, x %d, y %d\n", basetag(), address, x, y);
-#endif
-
- UINT16 *vram16 = (UINT16*)m_vram;
- int fb_pitch = 1024;
-
- for (int j=0; j < 8; j++)
- {
- UINT32 fbaddr = (y+j) * fb_pitch;
- UINT16 line = vram16[address ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)];
-
- address += 4;
-
- for (int i=0; i < 8; i++)
- {
- int p = (line >> ((7-i) * 2)) & 3;
- vram16[(fbaddr+x+i) ^ NATIVE_ENDIAN_VALUE_LE_BE(1,0)] = color[p] | 0x8000;
- }
- }
-}
-
-void firebeat_gcu_device::fb_config(UINT32 *cmd)
-{
- // 0x00: xxx----- -------- -------- -------- command (3)
-
- // 0x01: -------- -------- -------- -------- unused?
-
- // 0x02: -------- -------- ------xx xxxxxxxx Framebuffer Origin X
-
- // 0x03: -------- -------- --xxxxxx xxxxxxxx Framebuffer Origin Y
-
-#if PRINT_GCU
- printf("%s FB Config %08X %08X %08X %08X\n", basetag(), cmd[0], cmd[1], cmd[2], cmd[3]);
-#endif
-
- m_fb_origin_x = cmd[2] & 0x3ff;
- m_fb_origin_y = cmd[3] & 0x3fff;
-}
-
-void firebeat_gcu_device::execute_display_list(UINT32 addr)
-{
- bool end = false;
-
- int counter = 0;
-
-#if PRINT_GCU
- printf("%s Exec Display List %08X\n", basetag(), addr);
-#endif
-
- addr /= 2;
- while (!end && counter < 0x1000 && addr < (0x2000000/4))
- {
- UINT32 *cmd = &m_vram[addr];
- addr += 4;
-
- int command = (cmd[0] >> 29) & 0x7;
-
- switch (command)
- {
- case 0: // NOP?
- break;
-
- case 1: // Execute display list
- execute_display_list(cmd[0] & 0xffffff);
- break;
-
- case 2: // End of display list
- end = true;
- break;
-
- case 3: // Framebuffer config
- fb_config(cmd);
- break;
-
- case 4: // Fill rectangle
- fill_rect(cmd);
- break;
-
- case 5: // Draw object
- draw_object(cmd);
- break;
-
- case 7: // Draw 8x8 character (2 bits per pixel)
- draw_character(cmd);
- break;
-
- default:
- printf("GCU Unknown command %08X %08X %08X %08X\n", cmd[0], cmd[1], cmd[2], cmd[3]);
- break;
- }
- counter++;
- };
-}
-
-void firebeat_gcu_device::execute_command(UINT32* cmd)
-{
- int command = (cmd[0] >> 29) & 0x7;
-
-#if PRINT_GCU
- printf("%s Exec Command %08X, %08X, %08X, %08X\n", basetag(), cmd[0], cmd[1], cmd[2], cmd[3]);
-#endif
-
- switch (command)
- {
- case 0: // NOP?
- break;
-
- case 1: // Execute display list
- execute_display_list(cmd[0] & 0xffffff);
- break;
-
- case 2: // End of display list
- break;
-
- case 3: // Framebuffer config
- fb_config(cmd);
- break;
-
- case 4: // Fill rectangle
- fill_rect(cmd);
- break;
-
- case 5: // Draw object
- draw_object(cmd);
- break;
-
- case 7: // Draw 8x8 character (2 bits per pixel)
- draw_character(cmd);
- break;
-
- default:
- printf("GCU Unknown command %08X %08X %08X %08X\n", cmd[0], cmd[1], cmd[2], cmd[3]);
- break;
- }
-}
-
-void firebeat_gcu_device::device_start()
-{
- m_cpu = machine().device(m_cputag);
-
- m_vram = auto_alloc_array(machine(), UINT32, 0x2000000/4);
- memset(m_vram, 0, 0x2000000);
-}
-
-void firebeat_gcu_device::device_reset()
-{
- m_vram_read_addr = 0;
- m_command_fifo0_ptr = 0;
- m_command_fifo1_ptr = 0;
- m_vram_fifo0_addr = 0;
- m_vram_fifo1_addr = 0;
-
- for (int i=0; i < 4; i++)
- {
- m_frame[i].base = 0;
- m_frame[i].width = 0;
- m_frame[i].height = 0;
- }
-}
-
-void firebeat_gcu_device::device_stop()
-{
-#if DUMP_VRAM
- char filename[200];
- sprintf(filename, "%s_vram.bin", basetag());
- printf("dumping %s\n", filename);
- FILE *file = fopen(filename, "wb");
- int i;
-
- for (i=0; i < 0x2000000/4; i++)
- {
- fputc((m_vram[i] >> 24) & 0xff, file);
- fputc((m_vram[i] >> 16) & 0xff, file);
- fputc((m_vram[i] >> 8) & 0xff, file);
- fputc((m_vram[i] >> 0) & 0xff, file);
- }
-
- fclose(file);
-#endif
-}
-
-
-
+#define PRINT_SPU_MEM 0
class firebeat_state : public driver_device
{
@@ -879,6 +172,7 @@ public:
firebeat_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
+ m_audiocpu(*this, "audiocpu"),
m_work_ram(*this, "work_ram"),
m_flash_main(*this, "flash_main"),
m_flash_snd1(*this, "flash_snd1"),
@@ -889,10 +183,12 @@ public:
m_kbd1(*this, "kbd1"),
m_ata(*this, "ata"),
m_gcu0(*this, "gcu0"),
- m_gcu1(*this, "gcu1")
+ m_gcu1(*this, "gcu1"),
+ m_spuata(*this, "spu_ata")
{ }
required_device<ppc4xx_device> m_maincpu;
+ optional_device<m68000_device> m_audiocpu;
required_shared_ptr<UINT32> m_work_ram;
required_device<fujitsu_29f016a_device> m_flash_main;
required_device<fujitsu_29f016a_device> m_flash_snd1;
@@ -902,8 +198,9 @@ public:
optional_device<midi_keyboard_device> m_kbd0;
optional_device<midi_keyboard_device> m_kbd1;
required_device<ata_interface_device> m_ata;
- required_device<firebeat_gcu_device> m_gcu0;
- required_device<firebeat_gcu_device> m_gcu1;
+ required_device<k057714_device> m_gcu0;
+ required_device<k057714_device> m_gcu1;
+ optional_device<ata_interface_device> m_spuata;
UINT8 m_extend_board_irq_enable;
UINT8 m_extend_board_irq_active;
@@ -918,6 +215,7 @@ public:
int m_ibutton_state;
int m_ibutton_read_subkey_ptr;
UINT8 m_ibutton_subkey_data[0x40];
+
DECLARE_READ8_MEMBER(soundram_r);
DECLARE_DRIVER_INIT(ppd);
DECLARE_DRIVER_INIT(kbm);
@@ -957,7 +255,14 @@ public:
DECLARE_READ32_MEMBER(ppc_spu_share_r);
DECLARE_WRITE32_MEMBER(ppc_spu_share_w);
DECLARE_READ16_MEMBER(spu_unk_r);
+ DECLARE_WRITE16_MEMBER(spu_irq_ack_w);
+ DECLARE_WRITE16_MEMBER(spu_220000_w);
+ DECLARE_WRITE16_MEMBER(spu_sdram_bank_w);
+ DECLARE_READ16_MEMBER(m68k_spu_share_r);
+ DECLARE_WRITE16_MEMBER(m68k_spu_share_w);
+ DECLARE_WRITE_LINE_MEMBER(spu_ata_interrupt);
// TIMER_CALLBACK_MEMBER(keyboard_timer_callback);
+ TIMER_DEVICE_CALLBACK_MEMBER(spu_timer_callback);
void set_ibutton(UINT8 *data);
int ibutton_w(UINT8 data);
DECLARE_WRITE8_MEMBER(security_w);
@@ -967,6 +272,8 @@ public:
DECLARE_WRITE_LINE_MEMBER(sound_irq_callback);
DECLARE_WRITE_LINE_MEMBER(midi_uart_ch0_irq_callback);
DECLARE_WRITE_LINE_MEMBER(midi_uart_ch1_irq_callback);
+ DECLARE_WRITE_LINE_MEMBER(gcu0_interrupt);
+ DECLARE_WRITE_LINE_MEMBER(gcu1_interrupt);
};
@@ -1567,6 +874,10 @@ READ32_MEMBER(firebeat_state::ppc_spu_share_r)
{
UINT32 r = 0;
+#if PRINT_SPU_MEM
+ printf("ppc_spu_share_r: %08X, %08X at %08X\n", offset, mem_mask, space.device().safe_pc());
+#endif
+
if (ACCESSING_BITS_24_31)
{
r |= m_spu_shared_ram[(offset * 4) + 0] << 24;
@@ -1582,6 +893,11 @@ READ32_MEMBER(firebeat_state::ppc_spu_share_r)
if (ACCESSING_BITS_0_7)
{
r |= m_spu_shared_ram[(offset * 4) + 3] << 0;
+
+ if (offset == 0xff) // address 0x3ff clears PPC interrupt
+ {
+ m_maincpu->set_input_line(INPUT_LINE_IRQ3, CLEAR_LINE);
+ }
}
return r;
@@ -1589,6 +905,10 @@ READ32_MEMBER(firebeat_state::ppc_spu_share_r)
WRITE32_MEMBER(firebeat_state::ppc_spu_share_w)
{
+#if PRINT_SPU_MEM
+ printf("ppc_spu_share_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, space.device().safe_pc());
+#endif
+
if (ACCESSING_BITS_24_31)
{
m_spu_shared_ram[(offset * 4) + 0] = (data >> 24) & 0xff;
@@ -1600,6 +920,19 @@ WRITE32_MEMBER(firebeat_state::ppc_spu_share_w)
if (ACCESSING_BITS_8_15)
{
m_spu_shared_ram[(offset * 4) + 2] = (data >> 8) & 0xff;
+
+ if (offset == 0xff) // address 0x3fe triggers M68K interrupt
+ {
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ4, ASSERT_LINE);
+
+ printf("SPU command %02X%02X\n", m_spu_shared_ram[0], m_spu_shared_ram[1]);
+
+ UINT16 cmd = ((UINT16)(m_spu_shared_ram[0]) << 8) | m_spu_shared_ram[1];
+ if (cmd == 0x1110)
+ {
+ printf(" [%02X %02X %02X %02X %02X]\n", m_spu_shared_ram[0x10], m_spu_shared_ram[0x11], m_spu_shared_ram[0x12], m_spu_shared_ram[0x13], m_spu_shared_ram[0x14]);
+ }
+ }
}
if (ACCESSING_BITS_0_7)
{
@@ -1607,21 +940,94 @@ WRITE32_MEMBER(firebeat_state::ppc_spu_share_w)
}
}
-#ifdef UNUSED_FUNCTION
+/* SPU board M68K IRQs
+
+ IRQ1: ?
+
+ IRQ2: Timer?
+
+ IRQ4: Dual-port RAM mailbox (when PPC writes to 0x3FE)
+ Handles commands from PPC (bytes 0x00 and 0x01)
+
+ IRQ6: ATA
+*/
+
READ16_MEMBER(firebeat_state::m68k_spu_share_r)
{
- return m_spu_shared_ram[offset] << 8;
+#if PRINT_SPU_MEM
+ printf("m68k_spu_share_r: %08X, %08X\n", offset, mem_mask);
+#endif
+ UINT16 r = 0;
+
+ if (ACCESSING_BITS_0_7)
+ {
+ r |= m_spu_shared_ram[offset];
+
+ if (offset == 0x3fe) // address 0x3fe clears M68K interrupt
+ {
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ4, CLEAR_LINE);
+ }
+ }
+ return r;
}
WRITE16_MEMBER(firebeat_state::m68k_spu_share_w)
{
- m_spu_shared_ram[offset] = (data >> 8) & 0xff;
-}
+#if PRINT_SPU_MEM
+ printf("m68k_spu_share_w: %04X, %08X, %08X\n", data, offset, mem_mask);
#endif
+ if (ACCESSING_BITS_0_7)
+ {
+ m_spu_shared_ram[offset] = data & 0xff;
+
+ if (offset == 0x3ff) // address 0x3ff triggers PPC interrupt
+ {
+ m_maincpu->set_input_line(INPUT_LINE_IRQ3, ASSERT_LINE);
+ }
+ }
+}
READ16_MEMBER(firebeat_state::spu_unk_r)
{
- return 0xffff;
+ // dipswitches?
+
+ UINT16 r = 0;
+ r |= 0x80; // if set, uses ATA PIO mode, otherwise DMA
+ r |= 0x01; // enable SDRAM test
+
+ return r;
+}
+
+WRITE16_MEMBER(firebeat_state::spu_irq_ack_w)
+{
+ if (ACCESSING_BITS_0_7)
+ {
+ if (data & 0x01)
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ1, CLEAR_LINE);
+ if (data & 0x02)
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ2, CLEAR_LINE);
+ if (data & 0x08)
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ6, CLEAR_LINE);
+ }
+}
+
+WRITE16_MEMBER(firebeat_state::spu_220000_w)
+{
+ // IRQ2 handler 5 sets all bits
+}
+
+WRITE16_MEMBER(firebeat_state::spu_sdram_bank_w)
+{
+}
+
+WRITE_LINE_MEMBER(firebeat_state::spu_ata_interrupt)
+{
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ6, state);
+}
+
+TIMER_DEVICE_CALLBACK_MEMBER(firebeat_state::spu_timer_callback)
+{
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
}
/*****************************************************************************/
@@ -1651,8 +1057,8 @@ static ADDRESS_MAP_START( firebeat_map, AS_PROGRAM, 32, firebeat_state )
AM_RANGE(0x7dc00000, 0x7dc0000f) AM_DEVREADWRITE8("duart_com", pc16552_device, read, write, 0xffffffff)
AM_RANGE(0x7e000000, 0x7e00003f) AM_DEVREADWRITE8("rtc", rtc65271_device, rtc_r, rtc_w, 0xffffffff)
AM_RANGE(0x7e000100, 0x7e00013f) AM_DEVREADWRITE8("rtc", rtc65271_device, xram_r, xram_w, 0xffffffff)
- AM_RANGE(0x7e800000, 0x7e8000ff) AM_DEVREADWRITE("gcu0", firebeat_gcu_device, read, write)
- AM_RANGE(0x7e800100, 0x7e8001ff) AM_DEVREADWRITE("gcu1", firebeat_gcu_device, read, write)
+ AM_RANGE(0x7e800000, 0x7e8000ff) AM_DEVREADWRITE("gcu0", k057714_device, read, write)
+ AM_RANGE(0x7e800100, 0x7e8001ff) AM_DEVREADWRITE("gcu1", k057714_device, read, write)
AM_RANGE(0x7fe00000, 0x7fe0000f) AM_READWRITE(ata_command_r, ata_command_w)
AM_RANGE(0x7fe80000, 0x7fe8000f) AM_READWRITE(ata_control_r, ata_control_w)
AM_RANGE(0x7ff80000, 0x7fffffff) AM_ROM AM_REGION("user1", 0) /* System BIOS */
@@ -1661,7 +1067,16 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( spu_map, AS_PROGRAM, 16, firebeat_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x13ffff) AM_RAM
- AM_RANGE(0x340000, 0x34000f) AM_READ(spu_unk_r)
+ AM_RANGE(0x200000, 0x200001) AM_READ(spu_unk_r)
+ AM_RANGE(0x220000, 0x220001) AM_WRITE(spu_220000_w)
+ AM_RANGE(0x230000, 0x230001) AM_WRITE(spu_irq_ack_w)
+ AM_RANGE(0x260000, 0x260001) AM_WRITE(spu_sdram_bank_w)
+ AM_RANGE(0x280000, 0x2807ff) AM_READWRITE(m68k_spu_share_r, m68k_spu_share_w)
+ AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("spu_ata", ata_interface_device, read_cs0, write_cs0)
+ AM_RANGE(0x340000, 0x34000f) AM_DEVREADWRITE("spu_ata", ata_interface_device, read_cs1, write_cs1)
+ AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rf5c400", rf5c400_device, rf5c400_r, rf5c400_w)
+ AM_RANGE(0x800000, 0x83ffff) AM_RAM // SDRAM
+ AM_RANGE(0xfc0000, 0xffffff) AM_RAM // SDRAM
ADDRESS_MAP_END
/*****************************************************************************/
@@ -1821,11 +1236,22 @@ INTERRUPT_GEN_MEMBER(firebeat_state::firebeat_interrupt)
// IRQ 0: VBlank
// IRQ 1: Extend board IRQ
// IRQ 2: Main board UART
+ // IRQ 3: SPU mailbox interrupt
// IRQ 4: ATA
device.execute().set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
}
+WRITE_LINE_MEMBER(firebeat_state::gcu0_interrupt)
+{
+ m_maincpu->set_input_line(INPUT_LINE_IRQ0, state);
+}
+
+WRITE_LINE_MEMBER(firebeat_state::gcu1_interrupt)
+{
+ m_maincpu->set_input_line(INPUT_LINE_IRQ0, state);
+}
+
MACHINE_RESET_MEMBER(firebeat_state,firebeat)
{
m_layer = 0;
@@ -1867,11 +1293,11 @@ static MACHINE_CONFIG_START( firebeat, firebeat_state )
/* video hardware */
MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
- MCFG_DEVICE_ADD("gcu0", FIREBEAT_GCU, 0)
- MCFG_FIREBEAT_GCU_CPU_TAG("maincpu")
+ MCFG_DEVICE_ADD("gcu0", K057714, 0)
+ MCFG_K057714_IRQ_CALLBACK(WRITELINE(firebeat_state, gcu0_interrupt))
- MCFG_DEVICE_ADD("gcu1", FIREBEAT_GCU, 0)
- MCFG_FIREBEAT_GCU_CPU_TAG("maincpu")
+ MCFG_DEVICE_ADD("gcu1", K057714, 0)
+ MCFG_K057714_IRQ_CALLBACK(WRITELINE(firebeat_state, gcu1_interrupt))
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -1927,11 +1353,11 @@ static MACHINE_CONFIG_START( firebeat2, firebeat_state )
/* video hardware */
MCFG_PALETTE_ADD_RRRRRGGGGGBBBBB("palette")
- MCFG_DEVICE_ADD("gcu0", FIREBEAT_GCU, 0)
- MCFG_FIREBEAT_GCU_CPU_TAG("maincpu")
+ MCFG_DEVICE_ADD("gcu0", K057714, 0)
+ MCFG_K057714_IRQ_CALLBACK(WRITELINE(firebeat_state, gcu0_interrupt))
- MCFG_DEVICE_ADD("gcu1", FIREBEAT_GCU, 0)
- MCFG_FIREBEAT_GCU_CPU_TAG("maincpu")
+ MCFG_DEVICE_ADD("gcu1", K057714, 0)
+ MCFG_K057714_IRQ_CALLBACK(WRITELINE(firebeat_state, gcu1_interrupt))
MCFG_SCREEN_ADD("lscreen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -1977,11 +1403,31 @@ static MACHINE_CONFIG_DERIVED( firebeat_spu, firebeat )
/* basic machine hardware */
MCFG_CPU_ADD("audiocpu", M68000, 16000000)
MCFG_CPU_PROGRAM_MAP(spu_map)
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("sputimer", firebeat_state, spu_timer_callback, attotime::from_hz(1000));
+
+ MCFG_RF5C400_ADD("rf5c400", XTAL_16_9344MHz)
+ MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
+ MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
+
+ MCFG_ATA_INTERFACE_ADD("spu_ata", ata_devices, "cdrom", NULL, true)
+ MCFG_ATA_INTERFACE_IRQ_HANDLER(WRITELINE(firebeat_state, spu_ata_interrupt))
MACHINE_CONFIG_END
/*****************************************************************************/
/* Security dongle is a Dallas DS1411 RS232 Adapter with a DS1991 Multikey iButton */
+/* popn7 supports 8 different dongles:
+ - Manufacture
+ - Service
+ - Event
+ - Oversea
+ - No Hardware
+ - Rental
+ - Debug
+ - Normal
+*/
+
enum
{
DS1991_STATE_NORMAL,
@@ -2239,8 +1685,8 @@ ROM_START( kbm3rd )
ROM_REGION32_BE(0x80000, "user1", 0)
ROM_LOAD16_WORD_SWAP("974a03.21e", 0x00000, 0x80000, CRC(ef9a932d) SHA1(6299d3b9823605e519dbf1f105b59a09197df72f))
- ROM_REGION(0xc0, "user2", 0) // Security dongle
- ROM_LOAD("gca12-ja", 0x00, 0xc0, BAD_DUMP CRC(cf01dc15) SHA1(da8d208233487ebe65a0a9826fc72f1f459baa26))
+ ROM_REGION(0xc8, "user2", 0) // Security dongle
+ ROM_LOAD("gca12-ja_gca12-aa.bin", 0x00, 0xc8, CRC(96b12482) SHA1(199f20d9fa53108b3fe02d91d6793af1554b0f6f))
DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
DISK_IMAGE_READONLY( "a12jaa01", 0, SHA1(ea30bf1273bce772f09063bfc8a74df360c743a7) )
@@ -2253,34 +1699,38 @@ ROM_START( popn4 )
ROM_REGION32_BE(0x80000, "user1", 0)
ROM_LOAD16_WORD_SWAP("a02jaa03.21e", 0x00000, 0x80000, CRC(43ecc093) SHA1(637df5b546cf7409dd4752dc471674fe2a046599))
- ROM_REGION(0xc0, "user2", ROMREGION_ERASE00) // Security dongle
- ROM_LOAD( "gq986-ja", 0x000000, 0x0000c0, CRC(6f8aa811) SHA1(fc970f6b4ada58eee361b3477abe503019b5dfda) )
+ ROM_REGION(0xc8, "user2", ROMREGION_ERASE00) // Security dongle
+ ROM_LOAD("gq986_gc986.bin", 0x00, 0xc8, CRC(5c11469a) SHA1(efbe2e4a8cbb1285122fad22e3cfe9d47310da02))
ROM_REGION(0x80000, "audiocpu", 0) // SPU 68K program
ROM_LOAD16_WORD_SWAP("a02jaa04.3q", 0x00000, 0x80000, CRC(8c6000dd) SHA1(94ab2a66879839411eac6c673b25143d15836683))
+ ROM_REGION16_LE(0x1000000, "rf5c400", ROMREGION_ERASE00)
+
DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
DISK_IMAGE_READONLY( "gq986jaa01", 0, SHA1(e5368ac029b0bdf29943ae66677b5521ae1176e1) )
- DISK_REGION( "ata:1:cdrom" ) // data DVD-ROM
- DISK_IMAGE( "gq986jaa02", 1, SHA1(53367d3d5f91422fe386c42716492a0ae4332390) )
+ DISK_REGION( "spu_ata:0:cdrom" ) // data DVD-ROM
+ DISK_IMAGE( "gq986jaa02", 0, SHA1(53367d3d5f91422fe386c42716492a0ae4332390) )
ROM_END
ROM_START( popn5 )
ROM_REGION32_BE(0x80000, "user1", 0)
ROM_LOAD16_WORD_SWAP( "a02jaa03.21e", 0x000000, 0x080000, CRC(43ecc093) SHA1(637df5b546cf7409dd4752dc471674fe2a046599) )
- ROM_REGION(0xc0, "user2", ROMREGION_ERASE00) // Security dongle
- ROM_LOAD( "gca04-ja", 0x000000, 0x0000c0, CRC(7724fdbf) SHA1(b1b2d838d1938d9dc15151b7834502c1668bd31b) )
+ ROM_REGION(0xc8, "user2", ROMREGION_ERASE00) // Security dongle
+ ROM_LOAD("gea04-ja_gca04-ja_gca04-jb.bin", 0x00, 0xc8, CRC(f48f62f7) SHA1(e28b3fd41fa4136cf9c271967d0e68f21a67ba1a))
ROM_REGION(0x80000, "audiocpu", 0) // SPU 68K program
ROM_LOAD16_WORD_SWAP( "a02jaa04.3q", 0x000000, 0x080000, CRC(8c6000dd) SHA1(94ab2a66879839411eac6c673b25143d15836683) )
+ ROM_REGION16_LE(0x1000000, "rf5c400", ROMREGION_ERASE00)
+
DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
DISK_IMAGE_READONLY( "a04jaa01", 0, SHA1(87136ddad1d786b4d5f04381fcbf679ab666e6c9) )
- DISK_REGION( "ata:1:cdrom" ) // data DVD-ROM
- DISK_IMAGE_READONLY( "a04jaa02", 1, SHA1(49a017dde76f84829f6e99a678524c40665c3bfd) )
+ DISK_REGION( "spu_ata:0:cdrom" ) // data DVD-ROM
+ DISK_IMAGE_READONLY( "a04jaa02", 0, SHA1(49a017dde76f84829f6e99a678524c40665c3bfd) )
ROM_END
ROM_START( popn6 )
@@ -2293,11 +1743,13 @@ ROM_START( popn6 )
ROM_REGION(0x80000, "audiocpu", 0) // SPU 68K program
ROM_LOAD16_WORD_SWAP("a02jaa04.3q", 0x00000, 0x80000, CRC(8c6000dd) SHA1(94ab2a66879839411eac6c673b25143d15836683))
+ ROM_REGION16_LE(0x1000000, "rf5c400", ROMREGION_ERASE00)
+
DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
DISK_IMAGE_READONLY( "gqa16jaa01", 0, SHA1(7a7e475d06c74a273f821fdfde0743b33d566e4c) )
- DISK_REGION( "ata:1:cdrom" ) // data DVD-ROM
- DISK_IMAGE( "gqa16jaa02", 1, SHA1(e39067300e9440ff19cb98c1abc234fa3d5b26d1) )
+ DISK_REGION( "spu_ata:0:cdrom" ) // data DVD-ROM
+ DISK_IMAGE( "gqa16jaa02", 0, SHA1(e39067300e9440ff19cb98c1abc234fa3d5b26d1) )
ROM_END
ROM_START( popn7 )
@@ -2305,16 +1757,18 @@ ROM_START( popn7 )
ROM_LOAD16_WORD_SWAP("a02jaa03.21e", 0x00000, 0x80000, CRC(43ecc093) SHA1(637df5b546cf7409dd4752dc471674fe2a046599))
ROM_REGION(0xc0, "user2", ROMREGION_ERASE00) // Security dongle
- ROM_LOAD("gcb00-ja", 0x00, 0xc0, CRC(cc28625a) SHA1(e7de79ae72fdbd22328c9de74dfa17b5e6ae43b6))
+ ROM_LOAD("gcb00-ja", 0x00, 0xc0, CRC(d0a58c74) SHA1(fc1d8ad2f9d16743dc10b6e61a5a88ffa9c9dd2f))
ROM_REGION(0x80000, "audiocpu", 0) // SPU 68K program
ROM_LOAD16_WORD_SWAP("a02jaa04.3q", 0x00000, 0x80000, CRC(8c6000dd) SHA1(94ab2a66879839411eac6c673b25143d15836683))
+ ROM_REGION16_LE(0x1000000, "rf5c400", ROMREGION_ERASE00)
+
DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
DISK_IMAGE_READONLY( "b00jab01", 0, SHA1(259c733ca4d30281205b46b7bf8d60c9d01aa818) )
- DISK_REGION( "ata:1:cdrom" ) // data DVD-ROM
- DISK_IMAGE_READONLY( "b00jaa02", 1, SHA1(c8ce2f8ee6aeeedef9c110a59e68fcec7b669ad6) )
+ DISK_REGION( "spu_ata:0:cdrom" ) // data DVD-ROM
+ DISK_IMAGE_READONLY( "b00jaa02", 0, SHA1(c8ce2f8ee6aeeedef9c110a59e68fcec7b669ad6) )
ROM_END
ROM_START( popn8 )
@@ -2327,11 +1781,13 @@ ROM_START( popn8 )
ROM_REGION(0x80000, "audiocpu", 0) // SPU 68K program
ROM_LOAD16_WORD_SWAP("a02jaa04.3q", 0x00000, 0x80000, CRC(8c6000dd) SHA1(94ab2a66879839411eac6c673b25143d15836683))
+ ROM_REGION16_LE(0x1000000, "rf5c400", ROMREGION_ERASE00)
+
DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
DISK_IMAGE_READONLY( "gqb30jaa01", 0, SHA1(0ff3e40e3717ce23337b3a2438bdaca01cba9e30) )
- DISK_REGION( "ata:1:cdrom" ) // data DVD-ROM
- DISK_IMAGE_READONLY( "gqb30jaa02", 1, SHA1(f067d502c23efe0267aada5706f5bc7a54605942) )
+ DISK_REGION( "spu_ata:0:cdrom" ) // data DVD-ROM
+ DISK_IMAGE_READONLY( "gqb30jaa02", 0, SHA1(f067d502c23efe0267aada5706f5bc7a54605942) )
ROM_END
ROM_START( popnanm2 )
@@ -2344,11 +1800,13 @@ ROM_START( popnanm2 )
ROM_REGION(0x80000, "audiocpu", 0) // SPU 68K program
ROM_LOAD16_WORD_SWAP("a02jaa04.3q", 0x00000, 0x80000, CRC(8c6000dd) SHA1(94ab2a66879839411eac6c673b25143d15836683))
+ ROM_REGION16_LE(0x1000000, "rf5c400", ROMREGION_ERASE00)
+
DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
DISK_IMAGE_READONLY( "gea02jaa01", 0, SHA1(e81203b6812336c4d00476377193340031ef11b1) )
- DISK_REGION( "ata:1:cdrom" ) // data DVD-ROM
- DISK_IMAGE_READONLY( "gea02jaa02", 1, SHA1(7212e399779f37a5dcb8317a8f635a3b3f620aa9) )
+ DISK_REGION( "spu_ata:0:cdrom" ) // data DVD-ROM
+ DISK_IMAGE_READONLY( "gea02jaa02", 0, SHA1(7212e399779f37a5dcb8317a8f635a3b3f620aa9) )
ROM_END
ROM_START( ppd )
@@ -2380,9 +1838,47 @@ ROM_START( ppp11 )
ROM_END
// Beatmania III has a different BIOS and SPU program, and they aren't dumped yet
+ROM_START( bm3core )
+ ROM_REGION32_BE(0x80000, "user1", 0)
+ ROM_LOAD16_WORD_SWAP("974a03.21e", 0x00000, 0x80000, BAD_DUMP CRC(ef9a932d) SHA1(6299d3b9823605e519dbf1f105b59a09197df72f)) // boots with KBM BIOS
+
+ ROM_REGION(0xc8, "user2", ROMREGION_ERASE00) // Security dongle
+ ROM_LOAD( "gca05-jc.bin", 0x00, 0xc8, CRC(a4c67c80) SHA1(a87609052fa879116350564353df7f5b70ef3ae5) )
+
+ ROM_REGION(0x80000, "audiocpu", 0) // SPU 68K program
+ ROM_LOAD16_WORD_SWAP("a02jaa04.3q", 0x00000, 0x80000, BAD_DUMP CRC(8c6000dd) SHA1(94ab2a66879839411eac6c673b25143d15836683))
+
+ ROM_REGION16_LE(0x1000000, "rf5c400", ROMREGION_ERASE00)
+
+ DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
+ DISK_IMAGE_READONLY( "a05jca01", 0, SHA1(b89eced8a1325b087e3f875d1a643bebe9bad5c0) )
+
+ DISK_REGION( "spu_ata:0:hdd:image" ) // HDD
+ DISK_IMAGE_READONLY( "a05jca02", 0, NO_DUMP )
+ROM_END
+
+ROM_START( bm36th )
+ ROM_REGION32_BE(0x80000, "user1", 0)
+ ROM_LOAD16_WORD_SWAP("974a03.21e", 0x00000, 0x80000, BAD_DUMP CRC(ef9a932d) SHA1(6299d3b9823605e519dbf1f105b59a09197df72f)) // boots with KBM BIOS
+
+ ROM_REGION(0xc8, "user2", ROMREGION_ERASE00) // Security dongle
+ ROM_LOAD( "gca21-jc", 0x000000, 0x0000c8, NO_DUMP )
+
+ ROM_REGION(0x80000, "audiocpu", 0) // SPU 68K program
+ ROM_LOAD16_WORD_SWAP("a02jaa04.3q", 0x00000, 0x80000, BAD_DUMP CRC(8c6000dd) SHA1(94ab2a66879839411eac6c673b25143d15836683))
+
+ ROM_REGION16_LE(0x1000000, "rf5c400", ROMREGION_ERASE00)
+
+ DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
+ DISK_IMAGE_READONLY( "a21jca01", 0, SHA1(d1b888379cc0b2c2ab58fa2c5be49258043c3ea1) )
+
+ DISK_REGION( "spu_ata:0:hdd:image" ) // HDD
+ DISK_IMAGE_READONLY( "a21jca02", 0, NO_DUMP )
+ROM_END
+
ROM_START( bm37th )
ROM_REGION32_BE(0x80000, "user1", 0)
- ROM_LOAD16_WORD_SWAP("a02jaa03.21e", 0x00000, 0x80000, BAD_DUMP CRC(43ecc093) SHA1(637df5b546cf7409dd4752dc471674fe2a046599))
+ ROM_LOAD16_WORD_SWAP("974a03.21e", 0x00000, 0x80000, BAD_DUMP CRC(ef9a932d) SHA1(6299d3b9823605e519dbf1f105b59a09197df72f)) // boots with KBM BIOS
ROM_REGION(0xc0, "user2", ROMREGION_ERASE00) // Security dongle
ROM_LOAD( "gcb07-jc", 0x000000, 0x0000c0, CRC(16115b6a) SHA1(dcb2a3346973941a946b2cdfd31a5a761f666ca3) )
@@ -2390,16 +1886,18 @@ ROM_START( bm37th )
ROM_REGION(0x80000, "audiocpu", 0) // SPU 68K program
ROM_LOAD16_WORD_SWAP("a02jaa04.3q", 0x00000, 0x80000, BAD_DUMP CRC(8c6000dd) SHA1(94ab2a66879839411eac6c673b25143d15836683))
+ ROM_REGION16_LE(0x1000000, "rf5c400", ROMREGION_ERASE00)
+
DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
DISK_IMAGE_READONLY( "gcb07jca01", 0, SHA1(f906379bdebee314e2ca97c7756259c8c25897fd) )
- DISK_REGION( "ata:1:hdd:image" ) // data HDD
- DISK_IMAGE_READONLY( "gcb07jca02", 1, SHA1(6b8e17635825a6a43dc8d2721fe2eb0e0f39e940) )
+ DISK_REGION( "spu_ata:0:hdd:image" ) // HDD
+ DISK_IMAGE_READONLY( "gcb07jca02", 0, SHA1(6b8e17635825a6a43dc8d2721fe2eb0e0f39e940) )
ROM_END
ROM_START( bm3final )
ROM_REGION32_BE(0x80000, "user1", 0)
- ROM_LOAD16_WORD_SWAP("a02jaa03.21e", 0x00000, 0x80000, BAD_DUMP CRC(43ecc093) SHA1(637df5b546cf7409dd4752dc471674fe2a046599))
+ ROM_LOAD16_WORD_SWAP("974a03.21e", 0x00000, 0x80000, BAD_DUMP CRC(ef9a932d) SHA1(6299d3b9823605e519dbf1f105b59a09197df72f)) // boots with KBM BIOS
ROM_REGION(0xc0, "user2", ROMREGION_ERASE00) // Security dongle
ROM_LOAD( "gcc01-jc", 0x000000, 0x0000c0, CRC(9c49fed8) SHA1(212b87c1d25763117611ffb2a36ed568d429d2f4) )
@@ -2407,27 +1905,31 @@ ROM_START( bm3final )
ROM_REGION(0x80000, "audiocpu", 0) // SPU 68K program
ROM_LOAD16_WORD_SWAP("a02jaa04.3q", 0x00000, 0x80000, BAD_DUMP CRC(8c6000dd) SHA1(94ab2a66879839411eac6c673b25143d15836683))
+ ROM_REGION16_LE(0x1000000, "rf5c400", ROMREGION_ERASE00)
+
DISK_REGION( "ata:0:cdrom" ) // program CD-ROM
DISK_IMAGE_READONLY( "gcc01jca01", 0, SHA1(3e7af83670d791591ad838823422959987f7aab9) )
- DISK_REGION( "ata:1:hdd:image" ) // data HDD
- DISK_IMAGE_READONLY( "gcc01jca02", 1, SHA1(823e29bab11cb67069d822f5ffb2b90b9d3368d2) )
+ DISK_REGION( "spu_ata:0:hdd:image" ) // HDD
+ DISK_IMAGE_READONLY( "gcc01jca02", 0, SHA1(823e29bab11cb67069d822f5ffb2b90b9d3368d2) )
ROM_END
/*****************************************************************************/
-GAME( 2000, ppp, 0, firebeat, ppp, firebeat_state, ppp, ROT0, "Konami", "ParaParaParadise", GAME_NOT_WORKING)
-GAME( 2000, ppd, 0, firebeat, ppp, firebeat_state, ppd, ROT0, "Konami", "ParaParaDancing", GAME_NOT_WORKING)
-GAME( 2000, ppp11, 0, firebeat, ppp, firebeat_state, ppp, ROT0, "Konami", "ParaParaParadise v1.1", GAME_NOT_WORKING)
-GAME( 2000, ppp1mp, ppp, firebeat, ppp, firebeat_state, ppp, ROT0, "Konami", "ParaParaParadise 1st Mix Plus", GAME_NOT_WORKING)
-GAMEL(2000, kbm, 0, firebeat2, kbm, firebeat_state, kbm, ROT270, "Konami", "Keyboardmania", GAME_NOT_WORKING, layout_firebeat)
-GAMEL(2000, kbm2nd, 0, firebeat2, kbm, firebeat_state, kbm, ROT270, "Konami", "Keyboardmania 2nd Mix", GAME_NOT_WORKING, layout_firebeat)
-GAMEL(2001, kbm3rd, 0, firebeat2, kbm, firebeat_state, kbm, ROT270, "Konami", "Keyboardmania 3rd Mix", GAME_NOT_WORKING, layout_firebeat)
-GAME( 2000, popn4, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music 4", GAME_NOT_WORKING)
-GAME( 2000, popn5, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music 5", GAME_NOT_WORKING)
-GAME( 2001, popn6, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music 6", GAME_NOT_WORKING)
-GAME( 2001, popn7, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music 7", GAME_NOT_WORKING)
-GAME( 2001, popnanm2, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music Animelo 2", GAME_NOT_WORKING)
-GAME( 2002, popn8, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music 8", GAME_NOT_WORKING)
-GAME( 2002, bm37th, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Beatmania III Append 7th Mix", GAME_NOT_WORKING)
-GAME( 2003, bm3final, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Beatmania III The Final", GAME_NOT_WORKING)
+GAME( 2000, ppp, 0, firebeat, ppp, firebeat_state, ppp, ROT0, "Konami", "ParaParaParadise", MACHINE_NOT_WORKING)
+GAME( 2000, ppd, 0, firebeat, ppp, firebeat_state, ppd, ROT0, "Konami", "ParaParaDancing", MACHINE_NOT_WORKING)
+GAME( 2000, ppp11, 0, firebeat, ppp, firebeat_state, ppp, ROT0, "Konami", "ParaParaParadise v1.1", MACHINE_NOT_WORKING)
+GAME( 2000, ppp1mp, ppp, firebeat, ppp, firebeat_state, ppp, ROT0, "Konami", "ParaParaParadise 1st Mix Plus", MACHINE_NOT_WORKING)
+GAMEL(2000, kbm, 0, firebeat2, kbm, firebeat_state, kbm, ROT270, "Konami", "Keyboardmania", MACHINE_NOT_WORKING, layout_firebeat)
+GAMEL(2000, kbm2nd, 0, firebeat2, kbm, firebeat_state, kbm, ROT270, "Konami", "Keyboardmania 2nd Mix", MACHINE_NOT_WORKING, layout_firebeat)
+GAMEL(2001, kbm3rd, 0, firebeat2, kbm, firebeat_state, kbm, ROT270, "Konami", "Keyboardmania 3rd Mix", MACHINE_NOT_WORKING, layout_firebeat)
+GAME( 2000, popn4, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music 4", MACHINE_NOT_WORKING)
+GAME( 2000, popn5, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music 5", MACHINE_NOT_WORKING)
+GAME( 2001, popn6, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music 6", MACHINE_NOT_WORKING)
+GAME( 2001, popn7, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music 7", MACHINE_NOT_WORKING)
+GAME( 2001, popnanm2, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music Animelo 2", MACHINE_NOT_WORKING)
+GAME( 2002, popn8, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Pop'n Music 8", MACHINE_NOT_WORKING)
+GAME( 2000, bm3core, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Beatmania III Append Core Remix", MACHINE_NOT_WORKING)
+GAME( 2001, bm36th, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Beatmania III Append 6th Mix", MACHINE_NOT_WORKING)
+GAME( 2002, bm37th, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Beatmania III Append 7th Mix", MACHINE_NOT_WORKING)
+GAME( 2003, bm3final, 0, firebeat_spu, popn, firebeat_state, ppp, ROT0, "Konami", "Beatmania III The Final", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/firetrap.c b/src/mame/drivers/firetrap.c
index 899930200f2..786e141a4be 100644
--- a/src/mame/drivers/firetrap.c
+++ b/src/mame/drivers/firetrap.c
@@ -964,7 +964,7 @@ ROM_END
-GAME( 1986, firetrap, 0, firetrap, firetrap, driver_device, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Fire Trap (US, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1986, firetrapa, firetrap, firetrap, firetrap, driver_device, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Fire Trap (US, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1986, firetrapj, firetrap, firetrap, firetrapj, driver_device, 0, ROT90, "Wood Place Inc.", "Fire Trap (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1986, firetrapbl, firetrap, firetrapbl, firetrapbl, driver_device, 0, ROT90, "bootleg", "Fire Trap (Japan bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1986, firetrap, 0, firetrap, firetrap, driver_device, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Fire Trap (US, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, firetrapa, firetrap, firetrap, firetrap, driver_device, 0, ROT90, "Wood Place Inc. (Data East USA license)", "Fire Trap (US, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, firetrapj, firetrap, firetrap, firetrapj, driver_device, 0, ROT90, "Wood Place Inc.", "Fire Trap (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, firetrapbl, firetrap, firetrapbl, firetrapbl, driver_device, 0, ROT90, "bootleg", "Fire Trap (Japan bootleg)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fitfight.c b/src/mame/drivers/fitfight.c
index 47e718ba0cf..1f0a8b679e6 100644
--- a/src/mame/drivers/fitfight.c
+++ b/src/mame/drivers/fitfight.c
@@ -1019,7 +1019,7 @@ DRIVER_INIT_MEMBER(fitfight_state,hotmindff)
/* GAME */
-GAME( 199?, fitfight, 0, fitfight, fitfight, fitfight_state, fitfight, ROT0, "bootleg", "Fit of Fighting", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 199?, histryma, 0, fitfight, histryma, fitfight_state, histryma, ROT0, "bootleg", "The History of Martial Arts", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 199?, bbprot, 0, bbprot, bbprot, fitfight_state, bbprot, ROT0, "<unknown>", "unknown fighting game 'BB' (prototype)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 199?, hotmindff, hotmind, fitfight, fitfight, fitfight_state, hotmindff, ROT0, "Playmark", "Hot Mind (Fit of Fighting hardware)", GAME_NOT_WORKING | GAME_NO_SOUND ) // need to fix scroll offsets + inputs
+GAME( 199?, fitfight, 0, fitfight, fitfight, fitfight_state, fitfight, ROT0, "bootleg", "Fit of Fighting", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 199?, histryma, 0, fitfight, histryma, fitfight_state, histryma, ROT0, "bootleg", "The History of Martial Arts", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 199?, bbprot, 0, bbprot, bbprot, fitfight_state, bbprot, ROT0, "<unknown>", "unknown fighting game 'BB' (prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 199?, hotmindff, hotmind, fitfight, fitfight, fitfight_state, hotmindff, ROT0, "Playmark", "Hot Mind (Fit of Fighting hardware)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // need to fix scroll offsets + inputs
diff --git a/src/mess/drivers/fk1.c b/src/mame/drivers/fk1.c
index ccd2184d8c0..c821864f844 100644
--- a/src/mess/drivers/fk1.c
+++ b/src/mame/drivers/fk1.c
@@ -474,4 +474,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1989, fk1, 0, 0, fk1, fk1, driver_device, 0, "Statni statek Klicany", "FK-1", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1989, fk1, 0, 0, fk1, fk1, driver_device, 0, "Statni statek Klicany", "FK-1", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/flicker.c b/src/mame/drivers/flicker.c
index 4284c59f805..b4222b25212 100644
--- a/src/mame/drivers/flicker.c
+++ b/src/mame/drivers/flicker.c
@@ -228,4 +228,4 @@ ROM_START(flicker)
ROM_END
// YEAR GAME PARENT MACHINE INPUT CLASS INIT ORIENTATION COMPANY DESCRIPTION FLAGS
-GAME(1974, flicker, 0, flicker, flicker, driver_device, 0, ROT0, "Dave Nutting Associates / Bally", "Flicker (prototype)", GAME_MECHANICAL )
+GAME(1974, flicker, 0, flicker, flicker, driver_device, 0, ROT0, "Dave Nutting Associates / Bally", "Flicker (prototype)", MACHINE_MECHANICAL )
diff --git a/src/mame/drivers/flipjack.c b/src/mame/drivers/flipjack.c
index 8e838bd128d..182797e7741 100644
--- a/src/mame/drivers/flipjack.c
+++ b/src/mame/drivers/flipjack.c
@@ -500,4 +500,4 @@ ROM_START( flipjack )
ROM_END
-GAME( 1983?, flipjack, 0, flipjack, flipjack, driver_device, 0, ROT90, "Jackson Co., Ltd.", "Flipper Jack", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // copyright not shown, datecodes on pcb suggests mid-1983
+GAME( 1983?, flipjack, 0, flipjack, flipjack, driver_device, 0, ROT90, "Jackson Co., Ltd.", "Flipper Jack", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // copyright not shown, datecodes on pcb suggests mid-1983
diff --git a/src/mame/drivers/flkatck.c b/src/mame/drivers/flkatck.c
index 2aa5af9ca1e..50fc26d94b8 100644
--- a/src/mame/drivers/flkatck.c
+++ b/src/mame/drivers/flkatck.c
@@ -304,6 +304,6 @@ ROM_START( flkatcka )
ROM_LOAD( "mask2m.11a", 0x000000, 0x040000, CRC(6d1ea61c) SHA1(9e6eb9ac61838df6e1f74e74bb72f3edf1274aed) )
ROM_END
-GAME( 1987, mx5000, 0, flkatck, flkatck, driver_device, 0, ROT90, "Konami", "MX5000", GAME_SUPPORTS_SAVE )
-GAME( 1987, flkatck, mx5000, flkatck, flkatck, driver_device, 0, ROT90, "Konami", "Flak Attack (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, flkatcka,mx5000, flkatck, flkatck, driver_device, 0, ROT90, "Konami", "Flak Attack (Japan, PWB 450593 sub-board)", GAME_SUPPORTS_SAVE )
+GAME( 1987, mx5000, 0, flkatck, flkatck, driver_device, 0, ROT90, "Konami", "MX5000", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, flkatck, mx5000, flkatck, flkatck, driver_device, 0, ROT90, "Konami", "Flak Attack (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, flkatcka,mx5000, flkatck, flkatck, driver_device, 0, ROT90, "Konami", "Flak Attack (Japan, PWB 450593 sub-board)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/flower.c b/src/mame/drivers/flower.c
index d6612da69a4..a790731185b 100644
--- a/src/mame/drivers/flower.c
+++ b/src/mame/drivers/flower.c
@@ -373,5 +373,5 @@ ROM_START( flowerj ) /* Sega/Alpha version. Sega game number 834-5998 */
ROM_END
-GAME( 1986, flower, 0, flower, flower, driver_device, 0, ROT0, "Clarue (Komax license)", "Flower (US)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1986, flowerj, flower, flower, flower, driver_device, 0, ROT0, "Clarue (Sega / Alpha Denshi Co. license)", "Flower (Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE)
+GAME( 1986, flower, 0, flower, flower, driver_device, 0, ROT0, "Clarue (Komax license)", "Flower (US)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, flowerj, flower, flower, flower, driver_device, 0, ROT0, "Clarue (Sega / Alpha Denshi Co. license)", "Flower (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/flstory.c b/src/mame/drivers/flstory.c
index 2a3ffc27420..b68b43e5483 100644
--- a/src/mame/drivers/flstory.c
+++ b/src/mame/drivers/flstory.c
@@ -1576,9 +1576,9 @@ ROM_START( rumba )
ROM_END
-GAME( 1985, flstory, 0, flstory, flstory, driver_device, 0, ROT180, "Taito", "The FairyLand Story", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1985, flstoryj, flstory, flstory, flstory, driver_device, 0, ROT180, "Taito", "The FairyLand Story (Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1985, onna34ro, 0, onna34ro, onna34ro, driver_device, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (set 1)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1985, onna34roa, onna34ro, onna34ro, onna34ro, driver_device, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (set 2)", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1984, victnine, 0, victnine, victnine, driver_device, 0, ROT0, "Taito", "Victorious Nine", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1984, rumba, 0, rumba, rumba, driver_device, 0, ROT270, "Taito", "Rumba Lumber", GAME_IMPERFECT_SOUND | GAME_UNEMULATED_PROTECTION )
+GAME( 1985, flstory, 0, flstory, flstory, driver_device, 0, ROT180, "Taito", "The FairyLand Story", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, flstoryj, flstory, flstory, flstory, driver_device, 0, ROT180, "Taito", "The FairyLand Story (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, onna34ro, 0, onna34ro, onna34ro, driver_device, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (set 1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, onna34roa, onna34ro, onna34ro, onna34ro, driver_device, 0, ROT0, "Taito", "Onna Sansirou - Typhoon Gal (set 2)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, victnine, 0, victnine, victnine, driver_device, 0, ROT0, "Taito", "Victorious Nine", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, rumba, 0, rumba, rumba, driver_device, 0, ROT270, "Taito", "Rumba Lumber", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION )
diff --git a/src/mame/drivers/flyball.c b/src/mame/drivers/flyball.c
index efda701ac73..e5d3d2c30b5 100644
--- a/src/mame/drivers/flyball.c
+++ b/src/mame/drivers/flyball.c
@@ -537,5 +537,5 @@ ROM_END
*
*************************************/
-GAME( 1976, flyball, 0, flyball, flyball, driver_device, 0, 0, "Atari", "Flyball (rev 2)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1976, flyball1, flyball, flyball, flyball, driver_device, 0, 0, "Atari", "Flyball (rev 1)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1976, flyball, 0, flyball, flyball, driver_device, 0, 0, "Atari", "Flyball (rev 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1976, flyball1, flyball, flyball, flyball, driver_device, 0, 0, "Atari", "Flyball (rev 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/fm7.c b/src/mame/drivers/fm7.c
index 2247deec612..787e38d4f9b 100644
--- a/src/mess/drivers/fm7.c
+++ b/src/mame/drivers/fm7.c
@@ -2083,10 +2083,8 @@ static MACHINE_CONFIG_START( fm7, fm7_state )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
- MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
+ MCFG_PALETTE_ADD_3BIT_BRG("palette")
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
@@ -2141,10 +2139,8 @@ static MACHINE_CONFIG_START( fm8, fm7_state )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
- MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
+ MCFG_PALETTE_ADD_3BIT_BRG("palette")
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
@@ -2216,10 +2212,9 @@ static MACHINE_CONFIG_START( fm77av, fm7_state )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
- MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 8 + 4096)
- MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
+ MCFG_PALETTE_ADD_3BIT_BRG("palette")
+ MCFG_PALETTE_ADD("av_palette", 4096)
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
@@ -2295,10 +2290,8 @@ static MACHINE_CONFIG_START( fm11, fm7_state )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
- MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
+ MCFG_PALETTE_ADD_3BIT_BRG("palette")
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
@@ -2348,10 +2341,8 @@ static MACHINE_CONFIG_START( fm16beta, fm7_state )
MCFG_SCREEN_SIZE(640, 200)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 200-1)
MCFG_SCREEN_UPDATE_DRIVER(fm7_state, screen_update_fm7)
- MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(fm7_state, fm7)
+ MCFG_PALETTE_ADD_3BIT_BRG("palette")
MCFG_CASSETTE_ADD("cassette")
MCFG_CASSETTE_FORMATS(fm7_cassette_formats)
@@ -2540,9 +2531,9 @@ ROM_END
COMP( 1981, fm8, 0, 0, fm8, fm8, fm7_state, fm7, "Fujitsu", "FM-8", 0)
COMP( 1982, fm7, 0, 0, fm7, fm7, fm7_state, fm7, "Fujitsu", "FM-7", 0)
COMP( 1984, fmnew7, fm7, 0, fm7, fm7, fm7_state, fm7, "Fujitsu", "FM-NEW7", 0)
-COMP( 1985, fm77av, fm7, 0, fm77av, fm7, fm7_state, fm7, "Fujitsu", "FM-77AV", GAME_IMPERFECT_GRAPHICS)
-COMP( 1985, fm7740sx, fm7, 0, fm77av, fm7, fm7_state, fm7, "Fujitsu", "FM-77AV40SX", GAME_NOT_WORKING)
+COMP( 1985, fm77av, fm7, 0, fm77av, fm7, fm7_state, fm7, "Fujitsu", "FM-77AV", MACHINE_IMPERFECT_GRAPHICS)
+COMP( 1985, fm7740sx, fm7, 0, fm77av, fm7, fm7_state, fm7, "Fujitsu", "FM-77AV40SX", MACHINE_NOT_WORKING)
// These may be separated into a separate driver, depending on how different they are to the FM-8/FM-7
-COMP( 1982, fm11, 0, 0, fm11, fm7, fm7_state, fm7, "Fujitsu", "FM-11 EX", GAME_NOT_WORKING)
-COMP( 1982, fm16beta, 0, 0, fm16beta, fm7, fm7_state, fm7, "Fujitsu", "FM-16\xCE\xB2", GAME_NOT_WORKING)
+COMP( 1982, fm11, 0, 0, fm11, fm7, fm7_state, fm7, "Fujitsu", "FM-11 EX", MACHINE_NOT_WORKING)
+COMP( 1982, fm16beta, 0, 0, fm16beta, fm7, fm7_state, fm7, "Fujitsu", "FM-16\xCE\xB2", MACHINE_NOT_WORKING)
diff --git a/src/mess/drivers/fmtowns.c b/src/mame/drivers/fmtowns.c
index fa6235e04d2..362fed1c7a0 100644
--- a/src/mess/drivers/fmtowns.c
+++ b/src/mame/drivers/fmtowns.c
@@ -2696,11 +2696,11 @@ static MACHINE_CONFIG_FRAGMENT( towns_base )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("fm", YM3438, 53693100 / 7) // actual clock speed unknown
+ MCFG_SOUND_ADD("fm", YM3438, 16000000 / 2) // actual clock speed unknown
MCFG_YM2612_IRQ_HANDLER(WRITELINE(towns_state, towns_fm_irq))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- MCFG_RF5C68_ADD("pcm", 53693100 / 7) // actual clock speed unknown
+ MCFG_RF5C68_ADD("pcm", 16000000 / 2) // actual clock speed unknown
MCFG_RF5C68_SAMPLE_END_CB(towns_state, towns_pcm_irq)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.50)
MCFG_SOUND_ADD("cdda",CDDA,0)
@@ -2970,13 +2970,13 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1989, fmtowns, 0, 0, towns, towns, driver_device, 0, "Fujitsu", "FM-Towns", GAME_NOT_WORKING)
-COMP( 1989, fmtownsa, fmtowns, 0, towns, towns, driver_device, 0, "Fujitsu", "FM-Towns (alternate)", GAME_NOT_WORKING)
-COMP( 1991, fmtownsux,fmtowns, 0, townsux, towns, driver_device, 0, "Fujitsu", "FM-Towns II UX", GAME_NOT_WORKING)
-COMP( 1992, fmtownshr,fmtowns, 0, townshr, towns, driver_device, 0, "Fujitsu", "FM-Towns II HR", GAME_NOT_WORKING)
-COMP( 1993, fmtownsmx,fmtowns, 0, townshr, towns, driver_device, 0, "Fujitsu", "FM-Towns II MX", GAME_NOT_WORKING)
-COMP( 1994, fmtownsftv,fmtowns, 0, townsftv, towns, driver_device, 0, "Fujitsu", "FM-Towns II FreshTV", GAME_NOT_WORKING)
-COMP( 19??, fmtownssj,fmtowns, 0, townssj, towns, driver_device, 0, "Fujitsu", "FM-Towns II SJ", GAME_NOT_WORKING)
-CONS( 1993, fmtmarty, 0, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Marty", GAME_NOT_WORKING)
-CONS( 1993, fmtmarty2,fmtmarty, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Marty 2", GAME_NOT_WORKING)
-CONS( 1994, carmarty, fmtmarty, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Car Marty", GAME_NOT_WORKING)
+COMP( 1989, fmtowns, 0, 0, towns, towns, driver_device, 0, "Fujitsu", "FM-Towns", MACHINE_NOT_WORKING)
+COMP( 1989, fmtownsa, fmtowns, 0, towns, towns, driver_device, 0, "Fujitsu", "FM-Towns (alternate)", MACHINE_NOT_WORKING)
+COMP( 1991, fmtownsux,fmtowns, 0, townsux, towns, driver_device, 0, "Fujitsu", "FM-Towns II UX", MACHINE_NOT_WORKING)
+COMP( 1992, fmtownshr,fmtowns, 0, townshr, towns, driver_device, 0, "Fujitsu", "FM-Towns II HR", MACHINE_NOT_WORKING)
+COMP( 1993, fmtownsmx,fmtowns, 0, townshr, towns, driver_device, 0, "Fujitsu", "FM-Towns II MX", MACHINE_NOT_WORKING)
+COMP( 1994, fmtownsftv,fmtowns, 0, townsftv, towns, driver_device, 0, "Fujitsu", "FM-Towns II FreshTV", MACHINE_NOT_WORKING)
+COMP( 19??, fmtownssj,fmtowns, 0, townssj, towns, driver_device, 0, "Fujitsu", "FM-Towns II SJ", MACHINE_NOT_WORKING)
+CONS( 1993, fmtmarty, 0, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Marty", MACHINE_NOT_WORKING)
+CONS( 1993, fmtmarty2,fmtmarty, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Marty 2", MACHINE_NOT_WORKING)
+CONS( 1994, carmarty, fmtmarty, 0, marty, marty, driver_device, 0, "Fujitsu", "FM-Towns Car Marty", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/foodf.c b/src/mame/drivers/foodf.c
index 841cb7a2b89..878a1444250 100644
--- a/src/mame/drivers/foodf.c
+++ b/src/mame/drivers/foodf.c
@@ -502,7 +502,7 @@ ROM_END
*
*************************************/
-GAME( 1982, foodf, 0, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 3)", GAME_SUPPORTS_SAVE )
-GAME( 1982, foodf2, foodf, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1982, foodf1, foodf, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1982, foodfc, foodf, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (cocktail)", GAME_SUPPORTS_SAVE )
+GAME( 1982, foodf, 0, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, foodf2, foodf, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, foodf1, foodf, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, foodfc, foodf, foodf, foodf, driver_device, 0, ROT0, "General Computer Corporation (Atari license)", "Food Fight (cocktail)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/force68k.c b/src/mame/drivers/force68k.c
new file mode 100644
index 00000000000..d1cf7a46833
--- /dev/null
+++ b/src/mame/drivers/force68k.c
@@ -0,0 +1,606 @@
+// license:BSD-3-Clause
+// copyright-holders:Joakim Larsson Edstrom
+/***************************************************************************
+ *
+ * Force SYS68K CPU-1/CPU-6 VME SBC drivers, initially based on the 68ksbc.c
+ *
+ * 13/06/2015
+ *
+ * The info found on the links below is for a later revisions of the board I have
+ * but it is somewhat compatible so I got the system ROM up and running in terminal.
+ * My CPU-1 board has proms from 1983 and the PCB has no rev markings so probably
+ * the original or a very early design. The board real estate differs from the later
+ * CPU-1:s I found pictures of but has the same main chips and functions.
+ *
+ * http://bitsavers.trailing-edge.com/pdf/forceComputers/1988_Force_VMEbus_Products.pdf
+ * http://www.artisantg.com/info/P_wUovN.pdf
+ *
+ * Some info from those documents:
+ *
+ * Address Map
+ * ----------------------------------------------------------
+ * Address Range Description
+ * ----------------------------------------------------------
+ * 000 000 - 000 007 Initialisation vectors from system EPROM
+ * 000 008 - 01F FFF Dynamic RAM on CPU-1 B
+ * 000 008 - 07F FFF Dynamic RAM on CPU-1 D
+ * 080 008 - 09F FFF SYSTEM EPROM Area
+ * OAO 000 - OBF FFF USER EPROMArea
+ * 0C0 041 - 0C0 043 ACIA (P3) Host
+ * 0C0 080 - 0C0 082 ACIA (P4) Terminal
+ * 0C0 101 - 0C0 103 ACIA (P5) Remote device (eg serial printer)
+ * 0C0 401 - 0C0 42F RTC
+ * OEO 001 - 0E0 035 PI/T (eg centronics printer)
+ * OEO 200 - 0E0 2FF FPU
+ * OEO 300 - 0E0 300 Reset Off
+ * OEO 380 - 0E0 380 Reset On
+ * 100 000 - FEF FFF VMEbus addresses (A24)
+ * FFO 000 - FFF FFF VMEbus Short I/O (A16)
+ * ----------------------------------------------------------
+ *
+ * Interrupt sources
+ * ----------------------------------------------------------
+ * Description Device Lvl IRQ VME board
+ * /Board Vector Address
+ * ----------------------------------------------------------
+ * On board Sources
+ * ABORT Switch 7 31
+ * Real Time Clock (RTC) 58167A 6 30
+ * Parallel/Timer (PI/T) 68230 5 29
+ * Terminal ACIA 6850 4 28
+ * Remote ACIA 6850 3 27
+ * Host ACIA 6850 2 26
+ * ACFAIL, SYSFAIL VME 5 29
+ * Off board Sources (other VME boards)
+ * 6 Port Serial I/O board SIO 4 64-75 0xb00000
+ * 8 Port Serial I/O board ISIO 4 76-83 0x960000
+ * Disk Controller WFC 3 119 0xb01000
+ * SCSI Controller ISCSI 4 119 0xa00000
+ * Slot 1 Controller Board ASCU 7 31 0xb02000
+ * ----------------------------------------------------------
+ *
+ * TODO:
+ * - Finish 3 x ACIA6850, host and remote interface left, terminal works
+ * - Finish 1 x 68230 Motorola, Parallel Interface / Timer as required by ROM
+ * - Configure PIT to the Centronics device printer interface as
+ * supported by ROM (DONE)
+ * - Add 1 x Abort Switch
+ * - Add 1 x Reset Switch
+ * - Add 1 x Halt LED
+ * - Add a jumper field device as supported by PCB
+ * - Add configurable serial connector between ACIA:s and
+ * - Real terminal emulator, ie rs232 "socket"
+ * - Debug console
+ * - Add VME bus driver
+ *
+ ****************************************************************************/
+
+#include "emu.h"
+#include "bus/rs232/rs232.h"
+#include "cpu/m68000/m68000.h"
+#include "machine/mm58167.h"
+#include "machine/68230pit.h"
+#include "machine/6850acia.h"
+#include "machine/clock.h"
+#include "bus/centronics/ctronics.h"
+#include "bus/generic/slot.h"
+#include "bus/generic/carts.h"
+
+#define LOG(x) x
+
+#define BAUDGEN_CLOCK XTAL_1_8432MHz
+/*
+ * The baudrate on the Force68k CPU-1 to CPU-6 is generated by a
+ * Motorola 14411 bitrate generator, the CPU-6 documents matches the circuits
+ * that I could find on the CPU-1 board. Here how I calculated the clock for
+ * the factory settings. No need to add selectors until terminal.c supports
+ * configurable baudrates. Fortunality CPU-1 was shipped with 9600N8!
+ *
+ * From the documents:
+ *
+ * 3 RS232C interfaces, strap selectable baud rate from 110-9600 or 600-19200 baud
+ *
+ * Default Jumper Settings of B7:
+ * --------------------------------
+ * GND 10 - 11 RSA input on 14411
+ * F1 on 14411 1 - 20 Baud selector of the terminal port
+ * F1 on 14411 3 - 18 Baud selector of the host port
+ * F1 on 14411 5 - 16 Baud selector of the remote port
+ *
+ * The RSB input on the 14411 is kept high always so RSA=0, RSB=1 and a 1.8432MHz crystal
+ * generates 153600 on the F1 output pin which by default strapping is connected to all
+ * three 6850 acias on the board. These can be strapped separatelly to speedup downloads.
+ *
+ * The selectable outputs from 14411, F1-F16:
+ * X16 RSA=0,RSB=1: 153600, 115200, 76800, 57600, 38400, 28800, 19200, 9600, 4800, 3200, 2153.3, 1758.8, 1200, 921600, 1843000
+ * X64 RSA=1,RSB=1: 614400, 460800, 307200, 230400, 153600, 115200, 76800, 57600, 38400, 28800, 19200, 9600, 4800, 921600, 1843000
+ *
+ * However, the datasheet says baudrate is strapable for 110-9600 but the output is 153600
+ * so the system rom MUST setup the acia to divide by 16 to generate the correct baudrate.
+ *
+ */
+#define ACIA_CLOCK (BAUDGEN_CLOCK / 12)
+
+class force68k_state : public driver_device
+{
+public:
+force68k_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device (mconfig, type, tag),
+ m_maincpu (*this, "maincpu"),
+ m_rtc (*this, "rtc"),
+ m_pit (*this, "pit"),
+ m_aciahost (*this, "aciahost"),
+ m_aciaterm (*this, "aciaterm"),
+ m_aciaremt (*this, "aciaremt"),
+ m_centronics (*this, "centronics")
+ , m_centronics_ack (0)
+ , m_centronics_busy (0)
+ , m_centronics_perror (0)
+ , m_centronics_select (0)
+ ,m_cart(*this, "exp_rom1")
+{
+}
+
+DECLARE_READ16_MEMBER (bootvect_r);
+DECLARE_READ16_MEMBER (vme_a24_r);
+DECLARE_WRITE16_MEMBER (vme_a24_w);
+DECLARE_READ16_MEMBER (vme_a16_r);
+DECLARE_WRITE16_MEMBER (vme_a16_w);
+virtual void machine_start ();
+// clocks
+DECLARE_WRITE_LINE_MEMBER (write_aciahost_clock);
+DECLARE_WRITE_LINE_MEMBER (write_aciaterm_clock);
+DECLARE_WRITE_LINE_MEMBER (write_aciaremt_clock);
+// centronics printer interface
+DECLARE_WRITE_LINE_MEMBER (centronics_ack_w);
+DECLARE_WRITE_LINE_MEMBER (centronics_busy_w);
+DECLARE_WRITE_LINE_MEMBER (centronics_perror_w);
+DECLARE_WRITE_LINE_MEMBER (centronics_select_w);
+// User EPROM/SRAM slot(s)
+int force68k_load_cart(device_image_interface &image, generic_slot_device *slot);
+DECLARE_DEVICE_IMAGE_LOAD_MEMBER (exp1_load) { return force68k_load_cart(image, m_cart); }
+DECLARE_READ16_MEMBER (read16_rom);
+
+protected:
+
+private:
+required_device<cpu_device> m_maincpu;
+required_device<mm58167_device> m_rtc;
+required_device<pit68230_device> m_pit;
+required_device<acia6850_device> m_aciahost;
+required_device<acia6850_device> m_aciaterm;
+required_device<acia6850_device> m_aciaremt;
+optional_device<centronics_device> m_centronics;
+
+INT32 m_centronics_ack;
+INT32 m_centronics_busy;
+INT32 m_centronics_perror;
+INT32 m_centronics_select;
+
+// Pointer to System ROMs needed by bootvect_r
+UINT16 *m_sysrom;
+UINT16 *m_usrrom;
+
+required_device<generic_slot_device> m_cart;
+
+};
+
+static ADDRESS_MAP_START (force68k_mem, AS_PROGRAM, 16, force68k_state)
+ADDRESS_MAP_UNMAP_HIGH
+AM_RANGE (0x000000, 0x000007) AM_ROM AM_READ (bootvect_r) /* Vectors mapped from System EPROM */
+AM_RANGE (0x000008, 0x01ffff) AM_RAM /* DRAM CPU-1B */
+//AM_RANGE (0x020000, 0x07ffff) AM_RAM /* Additional DRAM CPU-1D */
+AM_RANGE (0x080000, 0x083fff) AM_ROM /* System EPROM Area 16Kb DEBUGGER supplied as default on CPU-1B/D */
+AM_RANGE (0x084000, 0x09ffff) AM_ROM /* System EPROM Area 112Kb additional space for System ROM */
+//AM_RANGE (0x0a0000, 0x0bffff) AM_ROM /* User EPROM/SRAM Area, max 128Kb mapped by a cartslot */
+AM_RANGE (0x0c0040, 0x0c0041) AM_DEVREADWRITE8 ("aciahost", acia6850_device, status_r, control_w, 0x00ff)
+AM_RANGE (0x0c0042, 0x0c0043) AM_DEVREADWRITE8 ("aciahost", acia6850_device, data_r, data_w, 0x00ff)
+AM_RANGE (0x0c0080, 0x0c0081) AM_DEVREADWRITE8 ("aciaterm", acia6850_device, status_r, control_w, 0xff00)
+AM_RANGE (0x0c0082, 0x0c0083) AM_DEVREADWRITE8 ("aciaterm", acia6850_device, data_r, data_w, 0xff00)
+AM_RANGE (0x0c0100, 0x0c0101) AM_DEVREADWRITE8 ("aciaremt", acia6850_device, status_r, control_w, 0x00ff)
+AM_RANGE (0x0c0102, 0x0c0103) AM_DEVREADWRITE8 ("aciaremt", acia6850_device, data_r, data_w, 0x00ff)
+AM_RANGE (0x0c0400, 0x0c042f) AM_DEVREADWRITE8 ("rtc", mm58167_device, read, write, 0x00ff)
+AM_RANGE (0x0e0000, 0x0e0035) AM_DEVREADWRITE8 ("pit", pit68230_device, read, write, 0x00ff)
+// AM_RANGE(0x0e0200, 0x0e0380) AM_READWRITE(fpu_r, fpu_w) /* optional FPCP 68881 FPU interface */
+AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) */
+AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) */
+ADDRESS_MAP_END
+
+/* Input ports */
+static INPUT_PORTS_START (force68k)
+INPUT_PORTS_END
+
+/*
+ * Centronics support
+ *
+ * The system ROMs has support for a parallel printer interface but the signals are just routed to row A
+ * of the VME P2 connector so no on board Centronics connector is available but assumed to be added on a
+ * separate I/O board. After some detective work I found that the ROM works as follows:
+ *
+ * The 'PA' (Printer Attach) command issues a <cr> on Port A and sends a strobe on H2 it then loops over
+ * the select signal, bit 0 on Port B, and the ack signal on HS1, both to be non zero. The support is really
+ * flawed as the strobe signal goes high instead of low ( this might assume an inverting driver on the
+ * P2 board ) and the busy signal is not checked at all. Or I might have assumed it all wrong, but it now
+ * works with the generic centronics printer driver. Need the printer board documentation to improve further.
+ *
+ * When the 'PA' command is successful everything printed to screen is mirrored on the printer. Use the
+ * 'NOPA' command to stop mirroring. I had no printer ROMs so could not test it with a "real" printer.
+ *
+ * Force CPU-1 init sequence for MC68230 PIT
+ * -----------------------------------------
+ * 0801E6 0E0000 W 00 -> PGCR Mode 0 (uni8), H34 dis, H12 dis, H1234 HZ
+ * 0801E6 0E0002 W 00 -> PSRR PC4, PC5, H1S>H2S>H3S>H4S
+ * 0801E6 0E0004 W FF -> PADDR Port A all Outputs
+ * 0801E6 0E0006 W 00 -> PBDDR Port B all Inputs
+ * 0801EA 0E000C W 60 -> PACR Port A Mode 01, pin def, dbfr H1 data rec, H2 status/int, H2 output neg, H2S clrd
+ * 0801F0 0E000E W A0 -> PBCR Port B mode 1x, H4 output neg, H4S clrd, H3 int dis, H3 edg input, H3S set by assrt edg
+ * 0801F6 0E0000 W 30 -> PGCR H34 enable, H12enable
+ * 0801FC 0E000E W A8 -> PBCR +H4 asserted
+ * 08020A 0E000E W A0 -> PBCR +H4 negated
+ *
+ * Upon PA (Printer Attach) command enabling the Centronics printer mode
+ * ---------------------------------------------------------------------
+ * 081DB4 0E0011 W D0 -> PADR Data to Port A
+ * 081DB8 0E000D W 68 -> PACR H2 output asserted Centronics Strobe
+ * 081DC0 0E000D W 60 -> PACR H2 output negated
+ * 081DD0 0E0013 R 00 <- PBDR Port B polled for 01 (data) & 03 (mask)
+ *
+ */
+
+/* Centronics ACK handler
+ * The centronics ack signal is expected by the ROM to arrive at H1 input line
+ */
+WRITE_LINE_MEMBER (force68k_state::centronics_ack_w)
+{
+// LOG (logerror ("centronics_ack_w(%d) %lld\n", state, m_maincpu->total_cycles ()));
+ m_centronics_ack = state;
+ m_pit->h1_set (state);
+}
+
+/* Centronics BUSY handler
+ * The centronics busy signal is not used by the ROM driver afaik
+ */
+WRITE_LINE_MEMBER (force68k_state::centronics_busy_w){
+// LOG (logerror ("centronics_busy_w(%d) %lld\n", state, m_maincpu->total_cycles ()));
+ m_centronics_busy = state;
+}
+
+/* Centronics PERROR handler
+ * The centronics perror signal is not used by the ROM driver afaik
+ */
+WRITE_LINE_MEMBER (force68k_state::centronics_perror_w){
+// LOG (logerror ("centronics_perror_w(%d) %lld\n", state, m_maincpu->total_cycles ()));
+ m_centronics_perror = state;
+}
+
+/* Centronics SELECT handler
+ * The centronics select signal is expected by the ROM on Port B bit 0
+ */
+WRITE_LINE_MEMBER (force68k_state::centronics_select_w){
+// LOG (logerror ("centronics_select_w(%d) %lld\n", state, m_maincpu->total_cycles ()));
+ m_centronics_select = state;
+ m_pit->portb_setbit (0, state);
+}
+
+/* Start it up */
+void force68k_state::machine_start ()
+{
+ LOG (logerror ("machine_start\n"));
+
+ save_item (NAME (m_centronics_busy));
+ save_item (NAME (m_centronics_ack));
+ save_item (NAME (m_centronics_select));
+ save_item (NAME (m_centronics_perror));
+
+ /* Setup pointer to bootvector in ROM for bootvector handler bootvect_r */
+ m_sysrom = (UINT16*)(memregion ("maincpu")->base () + 0x080000);
+
+ /* Map user ROM/RAM socket(s) */
+ if (m_cart->exists())
+ {
+ m_usrrom = (UINT16*)m_cart->get_rom_base();
+#if 0 // This should be the correct way but produces odd and even bytes swapped
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xa0000, 0xbffff, read16_delegate(FUNC(generic_slot_device::read16_rom), (generic_slot_device*)m_cart));
+#else // So we installs a custom very ineffecient handler for now until we understand hwp to solve the problem better
+ m_maincpu->space(AS_PROGRAM).install_read_handler(0xa0000, 0xbffff, read16_delegate(FUNC(force68k_state::read16_rom), this));
+#endif
+ }
+}
+
+/* A very ineffecient User cart emulation of two 8 bit sockets (odd and even) */
+READ16_MEMBER (force68k_state::read16_rom){
+ offset = offset % m_cart->common_get_size("rom"); // Don't read outside buffer...
+ return ((m_usrrom [offset] << 8) & 0xff00) | ((m_usrrom [offset] >> 8) & 0x00ff);
+}
+
+/* Boot vector handler, the PCB hardwires the first 8 bytes from 0x80000 to 0x0 */
+READ16_MEMBER (force68k_state::bootvect_r){
+ return m_sysrom [offset];
+}
+
+/* 10. The VMEbus (text from board documentation)
+ * ---------------
+ * The implemented VMEbus Interface includes 24 address, 16 data,
+ * 6 address modifier and the asynchronous control signals.
+ * A single level bus arbiter is provided to build multi master
+ * systems. In addition to the bus arbiter, a separate slave bus
+ * arbitration allows selection of the arbitration level (0-3).
+ *
+ * The address modifier range .,Short 110 Access can be selected
+ * via a jumper for variable system generation. The 7 interrupt
+ * request levels of the VMEbus are fully supported from the
+ * SYS68K1CPU-1 B/D. For multi-processing, each IRQ signal can be
+ * enabled/disabled via a jumper field.
+ *
+ * Additionally, the SYS68K1CPU-1 B/D supports the ACFAIL, SYSRESET,
+ * SYSFAIL and SYSCLK signal (16 MHz).
+ */
+
+/* Dummy VME access methods until the VME bus device is ready for use */
+READ16_MEMBER (force68k_state::vme_a24_r){
+ LOG (logerror ("vme_a24_r\n"));
+ return (UINT16) 0;
+}
+
+WRITE16_MEMBER (force68k_state::vme_a24_w){
+ LOG (logerror ("vme_a24_w\n"));
+}
+
+READ16_MEMBER (force68k_state::vme_a16_r){
+ LOG (logerror ("vme_16_r\n"));
+ return (UINT16) 0;
+}
+
+WRITE16_MEMBER (force68k_state::vme_a16_w){
+ LOG (logerror ("vme_a16_w\n"));
+}
+
+/*
+ * Serial port clock sources can all be driven by different outputs of the 14411
+ */
+WRITE_LINE_MEMBER (force68k_state::write_aciahost_clock){
+ m_aciahost->write_txc (state);
+ m_aciahost->write_rxc (state);
+}
+
+WRITE_LINE_MEMBER (force68k_state::write_aciaterm_clock){
+ m_aciaterm->write_txc (state);
+ m_aciaterm->write_rxc (state);
+}
+
+WRITE_LINE_MEMBER (force68k_state::write_aciaremt_clock){
+ m_aciaremt->write_txc (state);
+ m_aciaremt->write_rxc (state);
+}
+
+/*
+ * 4. The USER Area (Text from the board manual)
+ The USER area contains two 28 pin sockets with JEDEC compatible pin out.
+ To allow the usage of static RAM's, the access to the USER area is byte
+ oriented. Table 3. lists the usable device types.
+
+ Bits Bytes EPROM SRAM
+ --------------------------
+ 2Kx16 4 Kbyte 2716 6116
+ 4Kx16 8 Kbyte 2732
+ 8Kx16 16 Kbyte 2764 6264
+ 16Kx16 32 Kbyte 27128
+ 32Kx16 64 Kbyte 27256
+ --------------------------
+*/
+// Implementation of static 2 x 64K EPROM in sockets J10/J11 as 16 bit wide cartridge for easier
+// software handling. TODO: make configurable according to table above.
+static MACHINE_CONFIG_FRAGMENT( fccpu1_eprom_sockets )
+ MCFG_GENERIC_CARTSLOT_ADD("exp_rom1", generic_plain_slot, "fccpu1_cart")
+ MCFG_GENERIC_EXTENSIONS("bin,rom")
+ MCFG_GENERIC_WIDTH(GENERIC_ROM16_WIDTH)
+ MCFG_GENERIC_ENDIAN(ENDIANNESS_BIG)
+ MCFG_GENERIC_LOAD(force68k_state, exp1_load)
+// MCFG_SOFTWARE_LIST_ADD("cart_list", "fccpu1_cart")
+MACHINE_CONFIG_END
+
+/***************************
+ Rom loading functions
+****************************/
+int force68k_state::force68k_load_cart(device_image_interface &image, generic_slot_device *slot)
+{
+ UINT32 size = slot->common_get_size("rom");
+
+ if (size > 0x20000) // Max 128Kb
+ {
+ LOG( printf("Cartridge size exceeding max size (128Kb): %d\n", size) );
+ image.seterror(IMAGE_ERROR_UNSPECIFIED, "Cartridge size exceeding max size (128Kb)");
+ return IMAGE_INIT_FAIL;
+ }
+
+ slot->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_BIG);
+ slot->common_load_rom(slot->get_rom_base(), size, "rom");
+
+ return IMAGE_INIT_PASS;
+}
+
+/*
+ * Machine configuration
+ */
+static MACHINE_CONFIG_START (fccpu1, force68k_state)
+/* basic machine hardware */
+MCFG_CPU_ADD ("maincpu", M68000, XTAL_16MHz / 2)
+MCFG_CPU_PROGRAM_MAP (force68k_mem)
+
+/* P3/Host Port config
+ * LO command causes ROM monitor to expect S-records on HOST port by default
+ * Implementation through nullmodem currently does not support handshakes so
+ * the ROM momitor is over-run while checking for checksums etc if used with
+ * UI mount <file> feature.
+ */
+MCFG_DEVICE_ADD ("aciahost", ACIA6850, 0)
+
+MCFG_ACIA6850_TXD_HANDLER (DEVWRITELINE ("rs232host", rs232_port_device, write_txd))
+MCFG_ACIA6850_RTS_HANDLER (DEVWRITELINE ("rs232host", rs232_port_device, write_rts))
+
+MCFG_RS232_PORT_ADD ("rs232host", default_rs232_devices, "null_modem")
+MCFG_RS232_RXD_HANDLER (DEVWRITELINE ("aciahost", acia6850_device, write_rxd))
+MCFG_RS232_CTS_HANDLER (DEVWRITELINE ("aciahost", acia6850_device, write_cts))
+
+MCFG_DEVICE_ADD ("aciahost_clock", CLOCK, ACIA_CLOCK)
+MCFG_CLOCK_SIGNAL_HANDLER (WRITELINE (force68k_state, write_aciahost_clock))
+
+/* P4/Terminal Port config */
+MCFG_DEVICE_ADD ("aciaterm", ACIA6850, 0)
+
+MCFG_ACIA6850_TXD_HANDLER (DEVWRITELINE ("rs232trm", rs232_port_device, write_txd))
+MCFG_ACIA6850_RTS_HANDLER (DEVWRITELINE ("rs232trm", rs232_port_device, write_rts))
+
+MCFG_RS232_PORT_ADD ("rs232trm", default_rs232_devices, "terminal")
+MCFG_RS232_RXD_HANDLER (DEVWRITELINE ("aciaterm", acia6850_device, write_rxd))
+MCFG_RS232_CTS_HANDLER (DEVWRITELINE ("aciaterm", acia6850_device, write_cts))
+
+MCFG_DEVICE_ADD ("aciaterm_clock", CLOCK, ACIA_CLOCK)
+MCFG_CLOCK_SIGNAL_HANDLER (WRITELINE (force68k_state, write_aciaterm_clock))
+
+/* P5/Remote Port config */
+MCFG_DEVICE_ADD ("aciaremt", ACIA6850, 0)
+
+MCFG_DEVICE_ADD ("aciaremt_clock", CLOCK, ACIA_CLOCK)
+MCFG_CLOCK_SIGNAL_HANDLER (WRITELINE (force68k_state, write_aciaterm_clock))
+
+/* RTC Real Time Clock device */
+MCFG_DEVICE_ADD ("rtc", MM58167, XTAL_32_768kHz)
+
+/* PIT Parallel Interface and Timer device, assuming strapped for on board clock */
+MCFG_DEVICE_ADD ("pit", PIT68230, XTAL_16MHz / 2)
+MCFG_PIT68230_PA_OUTPUT_CALLBACK (DEVWRITE8 ("cent_data_out", output_latch_device, write))
+MCFG_PIT68230_H2_CALLBACK (DEVWRITELINE ("centronics", centronics_device, write_strobe))
+
+// centronics
+MCFG_CENTRONICS_ADD ("centronics", centronics_devices, "printer")
+MCFG_CENTRONICS_ACK_HANDLER (WRITELINE (force68k_state, centronics_ack_w))
+MCFG_CENTRONICS_BUSY_HANDLER (WRITELINE (force68k_state, centronics_busy_w))
+MCFG_CENTRONICS_PERROR_HANDLER (WRITELINE (force68k_state, centronics_perror_w))
+MCFG_CENTRONICS_SELECT_HANDLER (WRITELINE (force68k_state, centronics_select_w))
+MCFG_CENTRONICS_OUTPUT_LATCH_ADD ("cent_data_out", "centronics")
+
+// EPROM sockets
+MCFG_FRAGMENT_ADD(fccpu1_eprom_sockets)
+MACHINE_CONFIG_END
+
+#if 0 /*
+ * CPU-6 family is device and adressmap compatible with CPU-1 but with additions
+ * such as an optional 68881 FPU
+ */
+static MACHINE_CONFIG_START (fccpu6, force68k_state)
+MCFG_CPU_ADD ("maincpu", M68000, XTAL_8MHz) /* Jumper B10 Mode B */
+MCFG_CPU_PROGRAM_MAP (force68k_mem)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START (fccpu6a, force68k_state)
+MCFG_CPU_ADD ("maincpu", M68000, XTAL_12_5MHz) /* Jumper B10 Mode A */
+MCFG_CPU_PROGRAM_MAP (force68k_mem)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START (fccpu6v, force68k_state)
+MCFG_CPU_ADD ("maincpu", M68010, XTAL_8MHz) /* Jumper B10 Mode B */
+MCFG_CPU_PROGRAM_MAP (force68k_mem)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START (fccpu6va, force68k_state)
+MCFG_CPU_ADD ("maincpu", M68010, XTAL_12_5MHz) /* Jumper B10 Mode A */
+MCFG_CPU_PROGRAM_MAP (force68k_mem)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START (fccpu6vb, force68k_state)
+MCFG_CPU_ADD ("maincpu", M68010, XTAL_12_5MHz) /* Jumper B10 Mode A */
+MCFG_CPU_PROGRAM_MAP (force68k_mem)
+MACHINE_CONFIG_END
+#endif
+
+/* ROM definitions */
+ROM_START (fccpu1)
+ROM_REGION (0x1000000, "maincpu", 0)
+
+ROM_LOAD16_BYTE ("fccpu1V1.0L.j8.bin", 0x080001, 0x2000, CRC (3ac6f08f) SHA1 (502f6547b508d8732bd68bbbb2402d8c30fefc3b))
+ROM_LOAD16_BYTE ("fccpu1V1.0L.j9.bin", 0x080000, 0x2000, CRC (035315fb) SHA1 (90dc44d9c25d28428233e6846da6edce2d69e440))
+
+/*
+ * System ROM terminal commands
+ *
+ * COMMAND SUMMARY DESCRIPTION (From CPU-1B datasheet, ROMs were dumped
+ * from a CPU-1 board so some features might be missing or different)
+ * ---------------------------------------------------------------------------
+ * BF <address1> <address2> <data> <CR> Block Fill memory - from addr1 through addr2 with data
+ * BM <address1> <address2> <address 3> <CR> Block Move - move from addr1 through addr2to addr3
+ * BR [<address> [; <count>] ... ] <CR> Set/display Breakpoint
+ * BS <address1> <address2> <data> <CR> Block Search - search addr1 through addr2 for data
+ * BT <address1> <address2> <CR> Block Test of memory
+ * DC <expression> <CR> Data Conversion
+ * DF <CR> Display Formatted registers
+ * DU [n] <address1> <address2>[<string>] <CR> Dump memory to object file
+ * GO or G [<address] <CR> Execute program.
+ * GD [<address] <CR> Go Direct
+ * GT <address> <CR> Exec prog: temporary breakpoint
+ * HE<CR> Help; display monitor commands
+ * LO [n] [;<options] <CR> Load Object file
+ * MD <address> [<count>] <CR> Memory Display
+ * MM or M <address> [<data<][;<options>] <CR> Memory Modify
+ * MS <address> <data1 > <data2> < ... <CR> Memory Set - starting at addr with data 1. data 2 ...
+ * NOBR [<address> ... ] <CR> Remove Breakpoint
+ * NOPA <CR> Printer Detach (Centronics on PIT/P2)
+ * OF <CR> Offset
+ * PA <CR> Printer Attach (Centronics on PIT/P2)
+ * PF[n] <CR> Set/display Port Format
+ * RM <CR> Register Modify
+ * TM [<exit character>] <CR> Transparent Mode
+ * TR OR T [<count] <CR> Trace
+ * TT <address> <CR> Trace: temporary breakpoint
+ * VE [n] [<string] <CR> Verify memory/object file
+ * ----------------------------------------------------------------------------
+ * .AO - .A7 [<expression] <CR> Display/set address register
+ * .00 - .07 [<expression] <CR> Display/set data register
+ * .RO - .R6 [<expression] <CR> Display/set offset register
+ * .PC [<expression] <CR> Display/set program counter
+ * .SR [<expression] <CR> Display/set status register
+ * .SS [<expression] <CR> Display/set supervisor stack
+ * .US [<expression] <CR> Display/set user stack
+ * ----------------------------------------------------------------------------
+ * MD <address> [<count>]; DI <CR> Disassemble memory location
+ * MM <address>; DI <CR> Disassemble/Assemble memory location
+ * ----------------------------------------------------------------------------
+ * Undocumented commands found in ROM table at address 0x80308
+ * .* No WHAT message displayed, no action seen.
+ */
+ROM_END
+
+/*
+ * CPU-6 ROMs were generally based om VMEPROM which contained the PDOS RTOS from Eyring Research.
+ * I don't have these but if anyone can dump them and send to me I can verify that they work as expected.
+ */
+#if 0
+ROM_START (fccpu6)
+ROM_REGION (0x1000000, "maincpu", 0)
+ROM_END
+
+ROM_START (fccpu6a)
+ROM_REGION (0x1000000, "maincpu", 0)
+ROM_END
+
+ROM_START (fccpu6v)
+ROM_REGION (0x1000000, "maincpu", 0)
+ROM_END
+
+ROM_START (fccpu6va)
+ROM_REGION (0x1000000, "maincpu", 0)
+ROM_END
+
+ROM_START (fccpu6vb)
+ROM_REGION (0x1000000, "maincpu", 0)
+ROM_END
+#endif
+
+/* Driver */
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP( 1983, fccpu1, 0, 0, fccpu1, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-1", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER )
+//COMP( 1989, fccpu6, 0, 0, fccpu6, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6", MACHINE_IS_SKELETON )
+//COMP( 1989, fccpu6a, 0, 0, fccpu6a, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6a", MACHINE_IS_SKELETON )
+//COMP( 1989, fccpu6v, 0, 0, fccpu6v, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6v", MACHINE_IS_SKELETON )
+//COMP( 1989, fccpu6va, 0, 0, fccpu6va, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6va", MACHINE_IS_SKELETON )
+//COMP( 1989, fccpu6vb, 0, 0, fccpu6vb, force68k, driver_device, 0, "Force Computers Gmbh", "SYS68K/CPU-6vb", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/forte2.c b/src/mame/drivers/forte2.c
index 2fcd243e912..303d9ddae23 100644
--- a/src/mame/drivers/forte2.c
+++ b/src/mame/drivers/forte2.c
@@ -153,4 +153,4 @@ ROM_START( pesadelo )
ROM_LOAD( "epr2764.15", 0x00000, 0x10000, CRC(1ae2f724) SHA1(12880dd7ad82acf04861843fb9d4f0f926d18f6b) )
ROM_END
-GAME( 1989, pesadelo, 0, pesadelo, pesadelo, forte2_state, pesadelo, ROT0, "bootleg (Forte II Games) / Konami", "Pesadelo (bootleg of Knightmare on MSX)", GAME_SUPPORTS_SAVE )
+GAME( 1989, pesadelo, 0, pesadelo, pesadelo, forte2_state, pesadelo, ROT0, "bootleg (Forte II Games) / Konami", "Pesadelo (bootleg of Knightmare on MSX)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fortecar.c b/src/mame/drivers/fortecar.c
index 1f0dbe28626..8d78dfa7888 100644
--- a/src/mame/drivers/fortecar.c
+++ b/src/mame/drivers/fortecar.c
@@ -731,5 +731,5 @@ DRIVER_INIT_MEMBER(fortecar_state,fortecar)
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
-GAMEL( 1994, fortecar, 0, fortecar, fortecar, fortecar_state, fortecar, ROT0, "Fortex Ltd", "Forte Card (Ver 103, English)", GAME_NOT_WORKING, layout_fortecrd )
+GAMEL( 1994, fortecar, 0, fortecar, fortecar, fortecar_state, fortecar, ROT0, "Fortex Ltd", "Forte Card (Ver 103, English)", MACHINE_NOT_WORKING, layout_fortecrd )
GAMEL( 1994, fortecrd, fortecar, fortecar, fortecar, fortecar_state, fortecar, ROT0, "Fortex Ltd", "Forte Card (Ver 110, Spanish)", 0, layout_fortecrd )
diff --git a/src/mess/drivers/fp1100.c b/src/mame/drivers/fp1100.c
index c64d7505358..6352049278c 100644
--- a/src/mess/drivers/fp1100.c
+++ b/src/mame/drivers/fp1100.c
@@ -702,4 +702,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1983, fp1100, 0, 0, fp1100, fp1100, fp1100_state, fp1100, "Casio", "FP-1100", GAME_NOT_WORKING)
+COMP( 1983, fp1100, 0, 0, fp1100, fp1100, fp1100_state, fp1100, "Casio", "FP-1100", MACHINE_NOT_WORKING)
diff --git a/src/mess/drivers/fp200.c b/src/mame/drivers/fp200.c
index a4728d40a2c..9e9cc9c47db 100644
--- a/src/mess/drivers/fp200.c
+++ b/src/mame/drivers/fp200.c
@@ -623,4 +623,4 @@ ROM_START( fp200 )
ROM_REGION( 0x800, "chargen", ROMREGION_ERASE00 )
ROM_END
-COMP( 1982, fp200, 0, 0, fp200, fp200, driver_device, 0, "Casio", "FP-200 (Japan)", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 1982, fp200, 0, 0, fp200, fp200, driver_device, 0, "Casio", "FP-200 (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mess/drivers/fp6000.c b/src/mame/drivers/fp6000.c
index a715558b1c4..9a7866c339e 100644
--- a/src/mess/drivers/fp6000.c
+++ b/src/mame/drivers/fp6000.c
@@ -327,4 +327,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1985, fp6000, 0, 0, fp6000, fp6000, driver_device, 0, "Casio", "FP-6000", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1985, fp6000, 0, 0, fp6000, fp6000, driver_device, 0, "Casio", "FP-6000", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/freekick.c b/src/mame/drivers/freekick.c
index 25b5a7b6764..a4f278bf972 100644
--- a/src/mame/drivers/freekick.c
+++ b/src/mame/drivers/freekick.c
@@ -1214,18 +1214,18 @@ DRIVER_INIT_MEMBER(freekick_state,gigas)
*
*************************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1986, gigas, 0, gigas, gigas, freekick_state, gigas, ROT270, "Sega", "Gigas (MC-8123, 317-5002)", GAME_NO_COCKTAIL | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // Missing a dump of one of the program roms
-GAME( 1986, gigasb, gigas, gigas, gigas, freekick_state, gigasb, ROT270, "bootleg", "Gigas (bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1986, oigas, gigas , oigas, gigas, freekick_state, gigasb, ROT270, "bootleg", "Oigas (bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1986, gigasm2b, 0, gigas, gigasm2, freekick_state, gigasb, ROT270, "bootleg", "Gigas Mark II (bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1987, pbillrd, 0, pbillrd, pbillrd, driver_device, 0, ROT0, "Nihon System", "Perfect Billiard", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1987, pbillrds, pbillrd, pbillrdm, pbillrd, freekick_state, pbillrds,ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-0030)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1987, pbillrdsa, pbillrd, pbillrdm, pbillrd, freekick_state, pbillrds,ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-5008)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // sticker on CPU module different (wrong?) functionality the same
-GAME( 1987, freekick, 0, freekickb, freekck, driver_device, 0, ROT270, "Nihon System (Merit license)", "Free Kick (NS6201-A 1987.10)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1987, freekicka, freekick, freekickb, freekck, driver_device, 0, ROT270, "Nihon System", "Free Kick (NS6201-A 1987.9)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1987, freekickb1,freekick, freekickb, freekck, driver_device, 0, ROT270, "bootleg", "Free Kick (bootleg set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1987, freekickb2,freekick, freekickb, freekck, driver_device, 0, ROT270, "bootleg", "Free Kick (bootleg set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1987, freekickb3,freekick, freekickb, freekck, driver_device, 0, ROT270, "bootleg", "Free Kick (bootleg set 3)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1988, countrun, 0, freekickb, countrun, driver_device, 0, ROT0, "Nihon System (Sega license)", "Counter Run (NS6201-A 1988.3)", GAME_NO_COCKTAIL | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // CPU module not dumped
-GAME( 1988, countrunb, countrun, freekickb, countrun, driver_device, 0, ROT0, "bootleg", "Counter Run (bootleg set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1988, countrunb2,countrun, freekickb, countrun, driver_device, 0, ROT0, "bootleg", "Counter Run (bootleg set 2)", GAME_NO_COCKTAIL | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1986, gigas, 0, gigas, gigas, freekick_state, gigas, ROT270, "Sega", "Gigas (MC-8123, 317-5002)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // Missing a dump of one of the program roms
+GAME( 1986, gigasb, gigas, gigas, gigas, freekick_state, gigasb, ROT270, "bootleg", "Gigas (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, oigas, gigas , oigas, gigas, freekick_state, gigasb, ROT270, "bootleg", "Oigas (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, gigasm2b, 0, gigas, gigasm2, freekick_state, gigasb, ROT270, "bootleg", "Gigas Mark II (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, pbillrd, 0, pbillrd, pbillrd, driver_device, 0, ROT0, "Nihon System", "Perfect Billiard", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, pbillrds, pbillrd, pbillrdm, pbillrd, freekick_state, pbillrds,ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-0030)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, pbillrdsa, pbillrd, pbillrdm, pbillrd, freekick_state, pbillrds,ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-5008)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // sticker on CPU module different (wrong?) functionality the same
+GAME( 1987, freekick, 0, freekickb, freekck, driver_device, 0, ROT270, "Nihon System (Merit license)", "Free Kick (NS6201-A 1987.10)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, freekicka, freekick, freekickb, freekck, driver_device, 0, ROT270, "Nihon System", "Free Kick (NS6201-A 1987.9)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, freekickb1,freekick, freekickb, freekck, driver_device, 0, ROT270, "bootleg", "Free Kick (bootleg set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, freekickb2,freekick, freekickb, freekck, driver_device, 0, ROT270, "bootleg", "Free Kick (bootleg set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, freekickb3,freekick, freekickb, freekck, driver_device, 0, ROT270, "bootleg", "Free Kick (bootleg set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, countrun, 0, freekickb, countrun, driver_device, 0, ROT0, "Nihon System (Sega license)", "Counter Run (NS6201-A 1988.3)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // CPU module not dumped
+GAME( 1988, countrunb, countrun, freekickb, countrun, driver_device, 0, ROT0, "bootleg", "Counter Run (bootleg set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, countrunb2,countrun, freekickb, countrun, driver_device, 0, ROT0, "bootleg", "Counter Run (bootleg set 2)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fresh.c b/src/mame/drivers/fresh.c
index 59526c87361..508adb94371 100644
--- a/src/mame/drivers/fresh.c
+++ b/src/mame/drivers/fresh.c
@@ -628,4 +628,4 @@ ROM_END
// title shows Fruit Fresh but on resetting you get text strings of 'Dream World V2.41SI 97. 1.28'
-GAME( 1996, fresh, 0, fresh, fresh, driver_device, 0, ROT0, "Chain Leisure", "Fruit Fresh (Italy)", GAME_NOT_WORKING|GAME_NO_SOUND )
+GAME( 1996, fresh, 0, fresh, fresh, driver_device, 0, ROT0, "Chain Leisure", "Fruit Fresh (Italy)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/fromanc2.c b/src/mame/drivers/fromanc2.c
index a3f337ea164..7a5ce41412d 100644
--- a/src/mame/drivers/fromanc2.c
+++ b/src/mame/drivers/fromanc2.c
@@ -810,6 +810,6 @@ DRIVER_INIT_MEMBER(fromanc2_state,fromanc4)
*
*************************************/
-GAME( 1995, fromanc2, 0, fromanc2, fromanc2, fromanc2_state, fromanc2, ROT0, "Video System Co.", "Taisen Idol-Mahjong Final Romance 2 (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1995, fromancr, 0, fromancr, fromanc2, fromanc2_state, fromanc2, ROT0, "Video System Co.", "Taisen Mahjong Final Romance R (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1998, fromanc4, 0, fromanc4, fromanc4, fromanc2_state, fromanc4, ROT0, "Video System Co.", "Taisen Mahjong Final Romance 4 (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1995, fromanc2, 0, fromanc2, fromanc2, fromanc2_state, fromanc2, ROT0, "Video System Co.", "Taisen Idol-Mahjong Final Romance 2 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, fromancr, 0, fromancr, fromanc2, fromanc2_state, fromanc2, ROT0, "Video System Co.", "Taisen Mahjong Final Romance R (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, fromanc4, 0, fromanc4, fromanc4, fromanc2_state, fromanc4, ROT0, "Video System Co.", "Taisen Mahjong Final Romance 4 (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fromance.c b/src/mame/drivers/fromance.c
index 8df60f0d4de..11dc49401b3 100644
--- a/src/mame/drivers/fromance.c
+++ b/src/mame/drivers/fromance.c
@@ -1341,11 +1341,11 @@ ROM_END
*
*************************************/
-GAME( 1988, nekkyoku, 0, nekkyoku, nekkyoku, driver_device, 0, ROT0, "Video System Co.", "Rettou Juudan Nekkyoku Janshi - Higashi Nippon Hen (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1988, idolmj, 0, idolmj, idolmj, driver_device, 0, ROT0, "System Service", "Idol-Mahjong Housoukyoku (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, mjnatsu, 0, fromance, mjnatsu, driver_device, 0, ROT0, "Video System Co.", "Mahjong Natsu Monogatari (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, natsuiro, mjnatsu, fromance, mjnatsu, driver_device, 0, ROT0, "Video System Co.", "Natsuiro Mahjong (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, mfunclub, 0, fromance, mfunclub, driver_device, 0, ROT0, "Video System Co.", "Mahjong Fun Club - Idol Saizensen (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1990, daiyogen, 0, fromance, daiyogen, driver_device, 0, ROT0, "Video System Co.", "Mahjong Daiyogen (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, nmsengen, 0, fromance, nmsengen, driver_device, 0, ROT0, "Video System Co.", "Nekketsu Mahjong Sengen! AFTER 5 (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, fromance, 0, fromance, fromance, driver_device, 0, ROT0, "Video System Co.", "Idol-Mahjong Final Romance (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1988, nekkyoku, 0, nekkyoku, nekkyoku, driver_device, 0, ROT0, "Video System Co.", "Rettou Juudan Nekkyoku Janshi - Higashi Nippon Hen (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, idolmj, 0, idolmj, idolmj, driver_device, 0, ROT0, "System Service", "Idol-Mahjong Housoukyoku (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mjnatsu, 0, fromance, mjnatsu, driver_device, 0, ROT0, "Video System Co.", "Mahjong Natsu Monogatari (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, natsuiro, mjnatsu, fromance, mjnatsu, driver_device, 0, ROT0, "Video System Co.", "Natsuiro Mahjong (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mfunclub, 0, fromance, mfunclub, driver_device, 0, ROT0, "Video System Co.", "Mahjong Fun Club - Idol Saizensen (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, daiyogen, 0, fromance, daiyogen, driver_device, 0, ROT0, "Video System Co.", "Mahjong Daiyogen (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, nmsengen, 0, fromance, nmsengen, driver_device, 0, ROT0, "Video System Co.", "Nekketsu Mahjong Sengen! AFTER 5 (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, fromance, 0, fromance, fromance, driver_device, 0, ROT0, "Video System Co.", "Idol-Mahjong Final Romance (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fruitpc.c b/src/mame/drivers/fruitpc.c
index 5c652ce6ab8..42db7c23f89 100644
--- a/src/mame/drivers/fruitpc.c
+++ b/src/mame/drivers/fruitpc.c
@@ -147,7 +147,7 @@ ROM_START( fruitpc )
DISK_IMAGE( "fruit", 0,SHA1(df250ff06a97fa141a4144034f7035ac2947c53c) )
ROM_END
-GAME( 2006, fruitpc, 0, fruitpc, fruitpc, fruitpc_state, fruitpc, ROT0, "<unknown>", "Fruit Land", GAME_NO_SOUND|GAME_IMPERFECT_GRAPHICS )
+GAME( 2006, fruitpc, 0, fruitpc, fruitpc, fruitpc_state, fruitpc, ROT0, "<unknown>", "Fruit Land", MACHINE_NO_SOUND|MACHINE_IMPERFECT_GRAPHICS )
// this doesn't really belong here, but is some kind of x86 pc-like hardware, exact CPU type etc. unknown
// hardware ia by Paokai, motherboard has logos, large chip with logo too, http://www.paokai.com.tw/
@@ -159,4 +159,4 @@ ROM_START( gogostrk )
DISK_IMAGE( "ggs-5-2-07", 0,SHA1(f214fd39ec8ac02f008823f4b179ea6c6835e1b8) )
ROM_END
-GAME( 2007, gogostrk, 0, fruitpc, fruitpc, fruitpc_state, fruitpc, ROT0, "American Alpha / Paokai", "Go Go Strike", GAME_NOT_WORKING ) // motherboard is dated 2006, if the CF card string is a date it's 2007
+GAME( 2007, gogostrk, 0, fruitpc, fruitpc, fruitpc_state, fruitpc, ROT0, "American Alpha / Paokai", "Go Go Strike", MACHINE_NOT_WORKING ) // motherboard is dated 2006, if the CF card string is a date it's 2007
diff --git a/src/mess/drivers/ft68m.c b/src/mame/drivers/ft68m.c
index 7c950873ba9..a4d5b4da4a6 100644
--- a/src/mess/drivers/ft68m.c
+++ b/src/mame/drivers/ft68m.c
@@ -125,4 +125,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 198?, ft68m, 0, 0, ft68m, ft68m, driver_device, 0, "Forward Technology", "FT-68M", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 198?, ft68m, 0, 0, ft68m, ft68m, driver_device, 0, "Forward Technology", "FT-68M", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/fungames.c b/src/mame/drivers/fungames.c
index f6e63408373..27d53d6fc3b 100644
--- a/src/mame/drivers/fungames.c
+++ b/src/mame/drivers/fungames.c
@@ -134,5 +134,5 @@ ROM_START( take5 )
ROM_END
-GAME( 1976, biplane4, 0, fungames, 0, driver_device, 0, ROT0, "Fun Games", "Biplane 4 [TTL]", GAME_IS_SKELETON )
-GAME( 1975, take5, 0, fungames, 0, driver_device, 0, ROT0, "Fun Games", "Take 5 [TTL]", GAME_IS_SKELETON )
+GAME( 1976, biplane4, 0, fungames, 0, driver_device, 0, ROT0, "Fun Games", "Biplane 4 [TTL]", MACHINE_IS_SKELETON )
+GAME( 1975, take5, 0, fungames, 0, driver_device, 0, ROT0, "Fun Games", "Take 5 [TTL]", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/funkball.c b/src/mame/drivers/funkball.c
index 9717fe4bf8c..47d7b339457 100644
--- a/src/mame/drivers/funkball.c
+++ b/src/mame/drivers/funkball.c
@@ -857,4 +857,4 @@ ROM_START( funkball )
ROM_END
-GAME(1998, funkball, 0, funkball, funkball, driver_device, 0, ROT0, "dgPIX Entertainment Inc.", "Funky Ball", GAME_NOT_WORKING | GAME_NO_SOUND)
+GAME(1998, funkball, 0, funkball, funkball, driver_device, 0, ROT0, "dgPIX Entertainment Inc.", "Funky Ball", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/funkybee.c b/src/mame/drivers/funkybee.c
index 87f915474cc..a9bfb7d751b 100644
--- a/src/mame/drivers/funkybee.c
+++ b/src/mame/drivers/funkybee.c
@@ -415,7 +415,7 @@ ROM_START( skylancre )
ROM_LOAD( "18s030.1a", 0x0000, 0x0020, CRC(e645bacb) SHA1(5f4c299c4cf165fd229731c0e5799a34892bf28e) )
ROM_END
-GAME( 1982, funkybee, 0, funkybee, funkybee, driver_device, 0, ROT90, "Orca", "Funky Bee", GAME_SUPPORTS_SAVE )
-GAME( 1982, funkybeeb, funkybee, funkybee, funkybeeb, driver_device,0, ROT90, "bootleg", "Funky Bee (bootleg, harder)", GAME_SUPPORTS_SAVE )
-GAME( 1983, skylancr, 0, funkybee, skylancr, driver_device, 0, ROT90, "Orca", "Sky Lancer", GAME_SUPPORTS_SAVE )
-GAME( 1983, skylancre, skylancr, funkybee, skylancre, driver_device,0, ROT90, "Orca (Esco Trading Co license)", "Sky Lancer (Esco Trading Co license)", GAME_SUPPORTS_SAVE )
+GAME( 1982, funkybee, 0, funkybee, funkybee, driver_device, 0, ROT90, "Orca", "Funky Bee", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, funkybeeb, funkybee, funkybee, funkybeeb, driver_device,0, ROT90, "bootleg", "Funky Bee (bootleg, harder)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, skylancr, 0, funkybee, skylancr, driver_device, 0, ROT90, "Orca", "Sky Lancer", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, skylancre, skylancr, funkybee, skylancre, driver_device,0, ROT90, "Orca (Esco Trading Co license)", "Sky Lancer (Esco Trading Co license)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/funkyjet.c b/src/mame/drivers/funkyjet.c
index 2a6c9db7836..a9cacb720c6 100644
--- a/src/mame/drivers/funkyjet.c
+++ b/src/mame/drivers/funkyjet.c
@@ -451,7 +451,7 @@ DRIVER_INIT_MEMBER(funkyjet_state,funkyjet)
/******************************************************************************/
-GAME( 1992, funkyjet, 0, funkyjet, funkyjet, funkyjet_state, funkyjet, ROT0, "Data East (Mitchell license)", "Funky Jet (World, rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1992, funkyjeta, funkyjet, funkyjet, funkyjet, funkyjet_state, funkyjet, ROT0, "Data East (Mitchell license)", "Funky Jet (World)", GAME_SUPPORTS_SAVE )
-GAME( 1992, funkyjetj, funkyjet, funkyjet, funkyjetj, funkyjet_state, funkyjet, ROT0, "Data East Corporation", "Funky Jet (Japan, rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1995, sotsugyo, 0, funkyjet, sotsugyo, funkyjet_state, funkyjet, ROT0, "Mitchell (Atlus license)", "Sotsugyo Shousho", GAME_SUPPORTS_SAVE )
+GAME( 1992, funkyjet, 0, funkyjet, funkyjet, funkyjet_state, funkyjet, ROT0, "Data East (Mitchell license)", "Funky Jet (World, rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, funkyjeta, funkyjet, funkyjet, funkyjet, funkyjet_state, funkyjet, ROT0, "Data East (Mitchell license)", "Funky Jet (World)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, funkyjetj, funkyjet, funkyjet, funkyjetj, funkyjet_state, funkyjet, ROT0, "Data East Corporation", "Funky Jet (Japan, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, sotsugyo, 0, funkyjet, sotsugyo, funkyjet_state, funkyjet, ROT0, "Mitchell (Atlus license)", "Sotsugyo Shousho", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/funworld.c b/src/mame/drivers/funworld.c
index f144bb80cff..a890826f4d1 100644
--- a/src/mame/drivers/funworld.c
+++ b/src/mame/drivers/funworld.c
@@ -793,7 +793,7 @@
- Added specific button-lamps layout for royalcrd & jolycdit,
but there is a bug in the d-up select code that lights the
wrong lamp. This is a leftover from jollycrd routines.
- - Flagged vegasfte as GAME_NOT_WORKING, since is not receiving
+ - Flagged vegasfte as MACHINE_NOT_WORKING, since is not receiving
any coins or remote credits anymore.
[2010/03/21]
@@ -6462,17 +6462,17 @@ GAMEL( 1998, jolycdev, jollycrd, fw1stpal, funworld, driver_device, 0,
GAMEL( 1985, jolyccra, jollycrd, cuoreuno, jolycdcr, driver_device, 0, ROT0, "TAB Austria", "Jolly Card (Croatian, set 1)", 0, layout_jollycrd )
GAMEL( 1993, jolyccrb, jollycrd, cuoreuno, jolycdcr, driver_device, 0, ROT0, "Soft Design", "Jolly Card (Croatian, set 2)", 0, layout_jollycrd )
GAMEL( 1985, sjcd2kx3, jollycrd, fw1stpal, funworld, driver_device, 0, ROT0, "M.P.", "Super Joly 2000 - 3x", 0, layout_jollycrd )
-GAME( 1986, jolycdab, jollycrd, fw1stpal, funworld, driver_device, 0, ROT0, "Inter Games", "Jolly Card (Austrian, Fun World, bootleg)", GAME_NOT_WORKING )
+GAME( 1986, jolycdab, jollycrd, fw1stpal, funworld, driver_device, 0, ROT0, "Inter Games", "Jolly Card (Austrian, Fun World, bootleg)", MACHINE_NOT_WORKING )
GAMEL( 1992, jolycdsp, jollycrd, cuoreuno, jolycdit, funworld_state, ctunk, ROT0, "TAB Austria", "Jolly Card (Spanish, blue TAB board, encrypted)", 0, layout_royalcrd )
GAMEL( 1990, jolycdid, jollycrd, cuoreuno, jolycdcr, driver_device, 0, ROT0, "bootleg", "Jolly Card (Italian, different colors, set 1)", 0, layout_jollycrd ) // italian, CPLD, different colors.
GAMEL( 1990, jolycdie, jollycrd, cuoreuno, jolycdib, driver_device, 0, ROT0, "bootleg", "Jolly Card (Italian, different colors, set 2)", 0, layout_jollycrd ) // not from TAB blue PCB
// Bonus Card based...
-GAMEL( 1986, bonuscrd, 0, fw2ndpal, bonuscrd, driver_device, 0, ROT0, "Fun World", "Bonus Card (Austrian)", GAME_IMPERFECT_COLORS, layout_bonuscrd ) // use fw1stpal machine for green background
-GAMEL( 1986, bonuscrda, bonuscrd, fw2ndpal, bonuscrd, driver_device, 0, ROT0, "Fun World", "Bonus Card (Austrian, ATG Electronic hack)", GAME_IMPERFECT_COLORS, layout_bonuscrd ) // use fw1stpal machine for green background
-GAMEL( 1986, bigdeal, bonuscrd, fw2ndpal, bigdeal, driver_device, 0, ROT0, "Fun World", "Big Deal (Hungarian, set 1)", GAME_IMPERFECT_COLORS, layout_bonuscrd )
-GAMEL( 1986, bigdealb, bonuscrd, fw2ndpal, bigdeal, driver_device, 0, ROT0, "Fun World", "Big Deal (Hungarian, set 2)", GAME_IMPERFECT_COLORS, layout_bonuscrd )
-GAME( 1993, powercrd, 0, fw2ndpal, funworld, driver_device, 0, ROT0, "Fun World", "Power Card (Ver 0263, encrypted)", GAME_NOT_WORKING ) // clone of Bonus Card.
+GAMEL( 1986, bonuscrd, 0, fw2ndpal, bonuscrd, driver_device, 0, ROT0, "Fun World", "Bonus Card (Austrian)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) // use fw1stpal machine for green background
+GAMEL( 1986, bonuscrda, bonuscrd, fw2ndpal, bonuscrd, driver_device, 0, ROT0, "Fun World", "Bonus Card (Austrian, ATG Electronic hack)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd ) // use fw1stpal machine for green background
+GAMEL( 1986, bigdeal, bonuscrd, fw2ndpal, bigdeal, driver_device, 0, ROT0, "Fun World", "Big Deal (Hungarian, set 1)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd )
+GAMEL( 1986, bigdealb, bonuscrd, fw2ndpal, bigdeal, driver_device, 0, ROT0, "Fun World", "Big Deal (Hungarian, set 2)", MACHINE_IMPERFECT_COLORS, layout_bonuscrd )
+GAME( 1993, powercrd, 0, fw2ndpal, funworld, driver_device, 0, ROT0, "Fun World", "Power Card (Ver 0263, encrypted)", MACHINE_NOT_WORKING ) // clone of Bonus Card.
// CMC Italian jamma PCB's...
GAMEL( 1996, cuoreuno, 0, cuoreuno, cuoreuno, driver_device, 0, ROT0, "C.M.C.", "Cuore 1 (Italian)", 0, layout_jollycrd )
@@ -6500,11 +6500,11 @@ GAMEL( 1998, crystal, 0, cuoreuno, cuoreuno, driver_device, 0,
GAMEL( 1991, royalcrd, 0, royalcd2, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 1)", 0, layout_jollycrd )
GAMEL( 1991, royalcrda, royalcrd, royalcd2, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 2)", 0, layout_jollycrd )
GAMEL( 1991, royalcrdb, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian/Polish, set 3)", 0, layout_jollycrd )
-GAMEL( 1991, royalcrdc, royalcrd, royalcd2, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 4)", GAME_IMPERFECT_GRAPHICS, layout_jollycrd )
+GAMEL( 1991, royalcrdc, royalcrd, royalcd2, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 4)", MACHINE_IMPERFECT_GRAPHICS, layout_jollycrd )
GAMEL( 1991, royalcrdd, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 5)", 0, layout_royalcrd )
GAMEL( 1991, royalcrde, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (Austrian, set 6)", 0, layout_jollycrd )
GAMEL( 1991, royalcrdt, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (TAB original)", 0, layout_jollycrd )
-GAME( 1991, royalcrdf, royalcrd, royalcd1, royalcrd, funworld_state, royalcdc, ROT0, "Evona Electronic","Royal Card (Slovak, encrypted)", GAME_NOT_WORKING )
+GAME( 1991, royalcrdf, royalcrd, royalcd1, royalcrd, funworld_state, royalcdc, ROT0, "Evona Electronic","Royal Card (Slovak, encrypted)", MACHINE_NOT_WORKING )
GAMEL( 1990, royalcrdg, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "bootleg", "Royal Card (Austrian, set 7, CMC C1030 HW)", 0, layout_jollycrd ) // big CPLD
GAMEL( 1991, royalcdfr, royalcrd, royalcd1, royalcrd, driver_device, 0, ROT0, "TAB Austria", "Royal Card (French)", 0, layout_jollycrd ) // big CPLD
GAME( 1993, royalcrdp, royalcrd, cuoreuno, royalcrd, driver_device, 0, ROT0, "Digital Dreams", "Royal Card v2.0 Professional", 0 )
@@ -6532,9 +6532,9 @@ GAMEL( 198?, jolyjokra, jolyjokr, fw1stpal, jolyjokra, driver_device, 0,
GAMEL( 198?, jolyjokrb, jolyjokr, fw1stpal, funworld, driver_device, 0, ROT0, "Impera", "Jolly Joker (40bet, Croatian hack)", 0, layout_jollycrd )
// Encrypted games...
-GAME( 1992, multiwin, 0, fw1stpal, funworld, funworld_state, multiwin, ROT0, "Fun World", "Multi Win (Ver.0167, encrypted)", GAME_NOT_WORKING )
-GAME( 1993, jokercrd, 0, fw2ndpal, funworld, driver_device, 0, ROT0, "Vesely Svet", "Joker Card (Ver.A267BC, encrypted)", GAME_NOT_WORKING )
-GAME( 198?, saloon, 0, saloon, saloon, funworld_state, saloon, ROT0, "<unknown>", "Saloon (French, encrypted)", GAME_NOT_WORKING )
+GAME( 1992, multiwin, 0, fw1stpal, funworld, funworld_state, multiwin, ROT0, "Fun World", "Multi Win (Ver.0167, encrypted)", MACHINE_NOT_WORKING )
+GAME( 1993, jokercrd, 0, fw2ndpal, funworld, driver_device, 0, ROT0, "Vesely Svet", "Joker Card (Ver.A267BC, encrypted)", MACHINE_NOT_WORKING )
+GAME( 198?, saloon, 0, saloon, saloon, funworld_state, saloon, ROT0, "<unknown>", "Saloon (French, encrypted)", MACHINE_NOT_WORKING )
// Encrypted TAB blue PCB...
GAMEL( 199?, jolycdit, jollycrd, cuoreuno, jolycdit, funworld_state, tabblue, ROT0, "bootleg", "Jolly Card (Italian, blue TAB board, encrypted)", 0, layout_royalcrd )
@@ -6547,8 +6547,8 @@ GAME ( 1998, rcdino4, 0, rcdino4, rcdino4, funworld_state, rcdino4,
GAMEL( 1998, chinatow, 0, chinatow, chinatow, funworld_state, rcdinch, ROT0, "<unknown>", "China Town (Ver 1B, Dino4 HW)", 0, layout_jollycrd )
// MCU based games...
-GAME( 199?, mongolnw, 0, royalcd1, royalcrd, funworld_state, mongolnw, ROT0, "<unknown>", "Mongolfier New (Italian)", GAME_UNEMULATED_PROTECTION )
-GAME( 199?, soccernw, 0, royalcd1, royalcrd, funworld_state, soccernw, ROT0, "<unknown>", "Soccer New (Italian)", GAME_UNEMULATED_PROTECTION )
+GAME( 199?, mongolnw, 0, royalcd1, royalcrd, funworld_state, mongolnw, ROT0, "<unknown>", "Mongolfier New (Italian)", MACHINE_UNEMULATED_PROTECTION )
+GAME( 199?, soccernw, 0, royalcd1, royalcrd, funworld_state, soccernw, ROT0, "<unknown>", "Soccer New (Italian)", MACHINE_UNEMULATED_PROTECTION )
// Other games...
GAME( 198?, funquiz, 0, funquiz, funquiz, driver_device, 0, ROT0, "Fun World / Oehlinger", "Fun World Quiz (Austrian)", 0 )
diff --git a/src/mame/drivers/funybubl.c b/src/mame/drivers/funybubl.c
index 88f949c898b..6f96d3a482f 100644
--- a/src/mame/drivers/funybubl.c
+++ b/src/mame/drivers/funybubl.c
@@ -310,5 +310,5 @@ ROM_START( funybublc )
ROM_END
-GAME( 1999, funybubl, 0, funybubl, funybubl, driver_device, 0, ROT0, "In Chang Electronic Co", "Funny Bubble", GAME_SUPPORTS_SAVE )
-GAME( 1999, funybublc,funybubl, funybubl, funybubl, driver_device, 0, ROT0, "Comad", "Funny Bubble (Comad version)", GAME_SUPPORTS_SAVE )
+GAME( 1999, funybubl, 0, funybubl, funybubl, driver_device, 0, ROT0, "In Chang Electronic Co", "Funny Bubble", MACHINE_SUPPORTS_SAVE )
+GAME( 1999, funybublc,funybubl, funybubl, funybubl, driver_device, 0, ROT0, "Comad", "Funny Bubble (Comad version)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fuukifg2.c b/src/mame/drivers/fuukifg2.c
index 234cf91aee1..e4796dc5f0c 100644
--- a/src/mame/drivers/fuukifg2.c
+++ b/src/mame/drivers/fuukifg2.c
@@ -665,6 +665,6 @@ ROM_END
***************************************************************************/
-GAME( 1995, gogomile, 0, fuuki16, gogomile, driver_device, 0, ROT0, "Fuuki", "Susume! Mile Smile / Go Go! Mile Smile (newer)", GAME_SUPPORTS_SAVE )
-GAME( 1995, gogomileo, gogomile, fuuki16, gogomileo, driver_device, 0, ROT0, "Fuuki", "Susume! Mile Smile / Go Go! Mile Smile (older)", GAME_SUPPORTS_SAVE )
-GAME( 1996, pbancho, 0, fuuki16, pbancho, driver_device, 0, ROT0, "Fuuki", "Gyakuten!! Puzzle Bancho (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1995, gogomile, 0, fuuki16, gogomile, driver_device, 0, ROT0, "Fuuki", "Susume! Mile Smile / Go Go! Mile Smile (newer)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, gogomileo, gogomile, fuuki16, gogomileo, driver_device, 0, ROT0, "Fuuki", "Susume! Mile Smile / Go Go! Mile Smile (older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, pbancho, 0, fuuki16, pbancho, driver_device, 0, ROT0, "Fuuki", "Gyakuten!! Puzzle Bancho (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/fuukifg3.c b/src/mame/drivers/fuukifg3.c
index 6de2951bd07..24bc9f565f4 100644
--- a/src/mame/drivers/fuukifg3.c
+++ b/src/mame/drivers/fuukifg3.c
@@ -38,8 +38,6 @@ Notes so far:
- PCM channels of music in asurabus is sometimes off-tune, check Chen-Mao's stage for example
note: srom.u7 (z80 prg) is a good dump
-- YMF278B and YMF262 are hooked up in an awkward way (real chip has YMF262 integrated)
-
Asura Blade
Fuuki Co. Ltd., 1998
@@ -162,7 +160,6 @@ FG-3J ROM-J 507KA0301P04 Rev:1.3
#include "cpu/z80/z80.h"
#include "cpu/m68000/m68000.h"
#include "sound/ymf278b.h"
-#include "sound/262intf.h"
#include "includes/fuukifg3.h"
@@ -258,10 +255,6 @@ WRITE8_MEMBER(fuuki32_state::snd_z80_w)
WRITE8_MEMBER(fuuki32_state::snd_ymf278b_w)
{
machine().device<ymf278b_device>("ymf1")->write(space, offset, data);
-
- // also write to ymf262
- if (offset < 4)
- machine().device<ymf262_device>("ymf2")->write(space, offset, data);
}
static ADDRESS_MAP_START( fuuki32_sound_map, AS_PROGRAM, 8, fuuki32_state )
@@ -584,12 +577,10 @@ static MACHINE_CONFIG_START(fuuki32, fuuki32_state)
MCFG_YMF278B_IRQ_HANDLER(INPUTLINE("soundcpu", 0))
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
-
- MCFG_SOUND_ADD("ymf2", YMF262, YMF278B_STD_CLOCK / (19/8.0))
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.40)
- MCFG_SOUND_ROUTE(1, "rspeaker", 0.40)
MCFG_SOUND_ROUTE(2, "lspeaker", 0.40)
MCFG_SOUND_ROUTE(3, "rspeaker", 0.40)
+ MCFG_SOUND_ROUTE(4, "lspeaker", 0.40)
+ MCFG_SOUND_ROUTE(5, "rspeaker", 0.40)
MACHINE_CONFIG_END
@@ -732,7 +723,7 @@ ROM_END
***************************************************************************/
-GAME( 1998, asurabld, 0, fuuki32, asurabld, driver_device, 0, ROT0, "Fuuki", "Asura Blade - Sword of Dynasty (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1998, asurabld, 0, fuuki32, asurabld, driver_device, 0, ROT0, "Fuuki", "Asura Blade - Sword of Dynasty (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 2000, asurabus, 0, fuuki32, asurabus, driver_device, 0, ROT0, "Fuuki", "Asura Buster - Eternal Warriors (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 2000, asurabusa, asurabus, fuuki32, asurabusa,driver_device, 0, ROT0, "Fuuki", "Asura Buster - Eternal Warriors (Japan) (ARCADIA review build)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // has pause function on P1 button 4
+GAME( 2000, asurabus, 0, fuuki32, asurabus, driver_device, 0, ROT0, "Fuuki", "Asura Buster - Eternal Warriors (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2000, asurabusa, asurabus, fuuki32, asurabusa,driver_device, 0, ROT0, "Fuuki", "Asura Buster - Eternal Warriors (Japan) (ARCADIA review build)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // has pause function on P1 button 4
diff --git a/src/mame/drivers/g627.c b/src/mame/drivers/g627.c
index c459393f833..c3b19d87b6c 100644
--- a/src/mame/drivers/g627.c
+++ b/src/mame/drivers/g627.c
@@ -330,6 +330,6 @@ ROM_START(rota_101)
ROM_LOAD("v101-c.bin", 0x1000, 0x0800, CRC(c7e85638) SHA1(b59805d8b558ab8f5ea5b4b9261e862afca4b9d3))
ROM_END
-GAME(1978, rotation, 0, g627, g627, g627_state, v117, ROT0, "Midway", "Rotation VIII (v. 1.17)", GAME_MECHANICAL )
-GAME(1978, rota_115, rotation, g627, g627, g627_state, v115, ROT0, "Midway", "Rotation VIII (v. 1.15)", GAME_MECHANICAL )
-GAME(1978, rota_101, rotation, g627, g627, g627_state, v115, ROT0, "Midway", "Rotation VIII (v. 1.01)", GAME_MECHANICAL )
+GAME(1978, rotation, 0, g627, g627, g627_state, v117, ROT0, "Midway", "Rotation VIII (v. 1.17)", MACHINE_MECHANICAL )
+GAME(1978, rota_115, rotation, g627, g627, g627_state, v115, ROT0, "Midway", "Rotation VIII (v. 1.15)", MACHINE_MECHANICAL )
+GAME(1978, rota_101, rotation, g627, g627, g627_state, v115, ROT0, "Midway", "Rotation VIII (v. 1.01)", MACHINE_MECHANICAL )
diff --git a/src/mame/drivers/gaelco.c b/src/mame/drivers/gaelco.c
index 3503c9c2cc8..0353c50542a 100644
--- a/src/mame/drivers/gaelco.c
+++ b/src/mame/drivers/gaelco.c
@@ -857,9 +857,9 @@ ROM_END
*
*************************************/
-GAME( 1991, bigkarnk, 0, bigkarnk, bigkarnk, driver_device, 0, ROT0, "Gaelco", "Big Karnak", GAME_SUPPORTS_SAVE )
-GAME( 1995, biomtoy, 0, maniacsq, biomtoy, driver_device, 0, ROT0, "Gaelco", "Biomechanical Toy (Ver. 1.0.1885)", GAME_SUPPORTS_SAVE )
-GAME( 1995, biomtoya, biomtoy, maniacsq, biomtoy, driver_device, 0, ROT0, "Gaelco", "Biomechanical Toy (Ver. 1.0.1884)", GAME_SUPPORTS_SAVE )
-GAME( 1996, maniacsp, maniacsq, maniacsq, maniacsq, driver_device, 0, ROT0, "Gaelco", "Maniac Square (prototype)", GAME_SUPPORTS_SAVE )
-GAME( 1992, squash, 0, squash, squash, driver_device, 0, ROT0, "Gaelco", "Squash (Ver. 1.0)", GAME_SUPPORTS_SAVE )
-GAME( 1992, thoop, 0, thoop, thoop, driver_device, 0, ROT0, "Gaelco", "Thunder Hoop (Ver. 1)", GAME_SUPPORTS_SAVE )
+GAME( 1991, bigkarnk, 0, bigkarnk, bigkarnk, driver_device, 0, ROT0, "Gaelco", "Big Karnak", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, biomtoy, 0, maniacsq, biomtoy, driver_device, 0, ROT0, "Gaelco", "Biomechanical Toy (Ver. 1.0.1885)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, biomtoya, biomtoy, maniacsq, biomtoy, driver_device, 0, ROT0, "Gaelco", "Biomechanical Toy (Ver. 1.0.1884)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, maniacsp, maniacsq, maniacsq, maniacsq, driver_device, 0, ROT0, "Gaelco", "Maniac Square (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, squash, 0, squash, squash, driver_device, 0, ROT0, "Gaelco", "Squash (Ver. 1.0)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, thoop, 0, thoop, thoop, driver_device, 0, ROT0, "Gaelco", "Thunder Hoop (Ver. 1)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gaelco2.c b/src/mame/drivers/gaelco2.c
index 984af51ce73..f11ebe45a23 100644
--- a/src/mame/drivers/gaelco2.c
+++ b/src/mame/drivers/gaelco2.c
@@ -204,12 +204,12 @@ ROM_END
BANG
============================================================================*/
-READ16_MEMBER(gaelco2_state::p1_gun_x){return (ioport("LIGHT0_X")->read() * 320 / 0x100) + 1;}
-READ16_MEMBER(gaelco2_state::p1_gun_y){return (ioport("LIGHT0_Y")->read() * 240 / 0x100) - 4;}
-READ16_MEMBER(gaelco2_state::p2_gun_x){return (ioport("LIGHT1_X")->read() * 320 / 0x100) + 1;}
-READ16_MEMBER(gaelco2_state::p2_gun_y){return (ioport("LIGHT1_Y")->read() * 240 / 0x100) - 4;}
+READ16_MEMBER(bang_state::p1_gun_x){return (m_light0_x->read() * 320 / 0x100) + 1;}
+READ16_MEMBER(bang_state::p1_gun_y){return (m_light0_y->read() * 240 / 0x100) - 4;}
+READ16_MEMBER(bang_state::p2_gun_x){return (m_light1_x->read() * 320 / 0x100) + 1;}
+READ16_MEMBER(bang_state::p2_gun_y){return (m_light1_y->read() * 240 / 0x100) - 4;}
-static ADDRESS_MAP_START( bang_map, AS_PROGRAM, 16, gaelco2_state )
+static ADDRESS_MAP_START( bang_map, AS_PROGRAM, 16, bang_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_cg1v_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */
AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */
@@ -263,11 +263,11 @@ static INPUT_PORTS_START( bang )
PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, -6.0 / 240, 0) PORT_SENSITIVITY(35) PORT_KEYDELTA(15) PORT_PLAYER(2)
INPUT_PORTS_END
-static MACHINE_CONFIG_START( bang, gaelco2_state )
+static MACHINE_CONFIG_START( bang, bang_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, 30000000/2) /* 15 MHz */
MCFG_CPU_PROGRAM_MAP(bang_map)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", gaelco2_state, bang_irq, "screen", 0, 1)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bang_state, bang_irq, "screen", 0, 1)
MCFG_EEPROM_SERIAL_93C66_ADD("eeprom")
@@ -1060,7 +1060,7 @@ ROM_END
WORLD RALLY 2
============================================================================*/
-static ADDRESS_MAP_START( wrally2_map, AS_PROGRAM, 16, gaelco2_state )
+static ADDRESS_MAP_START( wrally2_map, AS_PROGRAM, 16, wrally2_state )
AM_RANGE(0x000000, 0x0fffff) AM_ROM /* ROM */
AM_RANGE(0x202890, 0x2028ff) AM_DEVREADWRITE("gaelco", gaelco_gae1_device, gaelcosnd_r, gaelcosnd_w) /* Sound Registers */
AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(gaelco2_vram_w) AM_SHARE("spriteram") /* Video RAM */
@@ -1086,7 +1086,7 @@ static INPUT_PORTS_START( wrally2 )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Acc.")
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Gear") PORT_TOGGLE
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco2_state,wrally2_analog_bit_r, (void *)0) /* ADC_1 serial input */
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, wrally2_state,wrally2_analog_bit_r, (void *)0) /* ADC_1 serial input */
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 )
PORT_SERVICE_DIPLOC( 0x0100, IP_ACTIVE_LOW, "SW2:1" )
PORT_DIPNAME( 0x0200, 0x0000, "Coin mechanism" ) PORT_DIPLOCATION("SW2:2")
@@ -1144,7 +1144,7 @@ static INPUT_PORTS_START( wrally2 )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_NAME("P2 Acc.")
PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_NAME("P2 Gear") PORT_TOGGLE
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, gaelco2_state,wrally2_analog_bit_r, (void *)1) /* ADC_2 serial input */
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_CUSTOM_MEMBER(DEVICE_SELF, wrally2_state,wrally2_analog_bit_r, (void *)1) /* ADC_2 serial input */
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN2 )
@@ -1167,7 +1167,7 @@ static INPUT_PORTS_START( wrally2 )
PORT_BIT( 0xff, 0x8A, IPT_PADDLE_V ) PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(25) PORT_KEYDELTA(25) PORT_REVERSE PORT_NAME("P2 Wheel")
INPUT_PORTS_END
-static MACHINE_CONFIG_START( wrally2, gaelco2_state )
+static MACHINE_CONFIG_START( wrally2, wrally2_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, 26000000/2) /* 13 MHz */
MCFG_CPU_PROGRAM_MAP(wrally2_map)
@@ -1406,16 +1406,16 @@ ROM_START( grtesoro4 ) /* there are version 4.0 and version 1.0 strings in this,
ROM_LOAD( "palce16v8h.u29", 0x0000, 0x0117, BAD_DUMP CRC(4a0a6f39) SHA1(57351e471649391c9abf110828fe2f128fe84eee) )
ROM_END
-GAME( 1994, aligator, 0, alighunt, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1994, aligator, 0, alighunt, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1994, aligatorun,aligator,alighunt, alighunt, gaelco2_state, alighunt, ROT0, "Gaelco", "Alligator Hunt (unprotected)", 0 )
-GAME( 1995, touchgo, 0, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (World)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1995, touchgon, touchgo, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (Non North America)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1995, touchgoe, touchgo, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (earlier revision)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1995, wrally2, 0, wrally2, wrally2, driver_device, 0, ROT0, "Gaelco", "World Rally 2: Twin Racing", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1995, touchgo, 0, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (World)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1995, touchgon, touchgo, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (Non North America)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1995, touchgoe, touchgo, touchgo, touchgo, gaelco2_state, touchgo, ROT0, "Gaelco", "Touch & Go (earlier revision)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1995, wrally2, 0, wrally2, wrally2, driver_device, 0, ROT0, "Gaelco", "World Rally 2: Twin Racing", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
GAME( 1996, maniacsq, 0, maniacsq, maniacsq, driver_device, 0, ROT0, "Gaelco", "Maniac Square (unprotected)", 0 )
-GAME( 1996, snowboar, 0, snowboar, snowboar, driver_device, 0, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1996, snowboara,snowboar, snowboar, snowboar, gaelco2_state, snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1998, bang, 0, bang, bang, gaelco2_state, bang, ROT0, "Gaelco", "Bang!", 0 )
-GAME( 1998, bangj, bang, bang, bang, gaelco2_state, bang, ROT0, "Gaelco", "Gun Gabacho (Japan)", 0 )
-GAME( 1999, grtesoro, 0, maniacsq, maniacsq, driver_device, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v5.01) (Italy)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
-GAME( 1999, grtesoro4, grtesoro,maniacsq, maniacsq, driver_device, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v4.0) (Italy)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1996, snowboar, 0, snowboar, snowboar, driver_device, 0, ROT0, "Gaelco", "Snow Board Championship (Version 2.1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1996, snowboara,snowboar, snowboar, snowboar, gaelco2_state, snowboar, ROT0, "Gaelco", "Snow Board Championship (Version 2.0)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1998, bang, 0, bang, bang, bang_state, bang, ROT0, "Gaelco", "Bang!", 0 )
+GAME( 1998, bangj, bang, bang, bang, bang_state, bang, ROT0, "Gaelco", "Gun Gabacho (Japan)", 0 )
+GAME( 1999, grtesoro, 0, maniacsq, maniacsq, driver_device, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v5.01) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
+GAME( 1999, grtesoro4, grtesoro,maniacsq, maniacsq, driver_device, 0, ROT0, "Nova Desitec", "Gran Tesoro? / Play 2000 (v4.0) (Italy)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/gaelco3d.c b/src/mame/drivers/gaelco3d.c
index bc9689d978a..da02df07eb6 100644
--- a/src/mame/drivers/gaelco3d.c
+++ b/src/mame/drivers/gaelco3d.c
@@ -677,7 +677,7 @@ WRITE32_MEMBER(gaelco3d_state::adsp_tx_callback)
/* now put it down to samples, so we know what the channel frequency has to be */
sample_period *= 16 * SOUND_CHANNELS;
- dmadac_set_frequency(&m_dmadac[0], SOUND_CHANNELS, ATTOSECONDS_TO_HZ(sample_period.attoseconds));
+ dmadac_set_frequency(&m_dmadac[0], SOUND_CHANNELS, ATTOSECONDS_TO_HZ(sample_period.attoseconds()));
dmadac_enable(&m_dmadac[0], SOUND_CHANNELS, 1);
/* fire off a timer wich will hit every half-buffer */
@@ -1240,11 +1240,11 @@ DRIVER_INIT_MEMBER(gaelco3d_state,gaelco3d)
*
*************************************/
-GAME( 1996, speedup, 0, gaelco3d, speedup, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Speed Up (Version 1.20)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1996, speedup10, speedup, gaelco3d, speedup, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Speed Up (Version 1.00)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1996, speedup, 0, gaelco3d, speedup, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Speed Up (Version 1.20)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1996, speedup10, speedup, gaelco3d, speedup, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Speed Up (Version 1.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
-GAME( 1997, surfplnt, 0, gaelco3d, surfplnt, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Surf Planet (Version 4.1)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
-GAME( 1997, surfplnt40, surfplnt, gaelco3d, surfplnt, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Surf Planet (Version 4.0)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
+GAME( 1997, surfplnt, 0, gaelco3d, surfplnt, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Surf Planet (Version 4.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+GAME( 1997, surfplnt40, surfplnt, gaelco3d, surfplnt, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Surf Planet (Version 4.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
-GAME( 1998, radikalb, 0, gaelco3d2, radikalb, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Radikal Bikers (Version 2.02)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
-GAME( 1998, radikalba, radikalb, gaelco3d2, radikalb, gaelco3d_state, gaelco3d, ROT0, "Gaelco (Atari license)", "Radikal Bikers (Version 2.02, Atari license)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE)
+GAME( 1998, radikalb, 0, gaelco3d2, radikalb, gaelco3d_state, gaelco3d, ROT0, "Gaelco", "Radikal Bikers (Version 2.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
+GAME( 1998, radikalba, radikalb, gaelco3d2, radikalb, gaelco3d_state, gaelco3d, ROT0, "Gaelco (Atari license)", "Radikal Bikers (Version 2.02, Atari license)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/gaiden.c b/src/mame/drivers/gaiden.c
index 927fdf02a7b..249e6313b8c 100644
--- a/src/mame/drivers/gaiden.c
+++ b/src/mame/drivers/gaiden.c
@@ -1654,18 +1654,18 @@ DRIVER_INIT_MEMBER(gaiden_state,mastninj)
}
// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
-GAME( 1988, shadoww, 0, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Shadow Warriors (World, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1988, shadowwa, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Shadow Warriors (World, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1988, gaiden, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Gaiden (US)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ryukendn, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Ryukenden (Japan, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1989, ryukendna, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Ryukenden (Japan, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1989, mastninj, shadoww, mastninj, common, gaiden_state, mastninj, ROT0, "bootleg", "Master Ninja (bootleg of Shadow Warriors / Ninja Gaiden)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // sprites need fixing, sound and yscroll too. - it is confirmed the curtains don't scroll on the pcb
-GAME( 1992, drgnbowl, 0, drgnbowl, drgnbowl, gaiden_state, drgnbowl, ROT0, "Nics", "Dragon Bowl (set 1, encrypted program)", GAME_SUPPORTS_SAVE ) // Draogn Bowl is based on Ninja Gaiden code
-GAME( 1992, drgnbowla, drgnbowl, drgnbowl, drgnbowl, gaiden_state, drgnbowla,ROT0, "Nics", "Dragon Bowl (set 2, unencrypted program)", GAME_SUPPORTS_SAVE )
-
-GAME( 1989, wildfang, 0, shadoww, wildfang, gaiden_state, wildfang, ROT0, "Tecmo", "Wild Fang / Tecmo Knight", GAME_SUPPORTS_SAVE )
-GAME( 1989, wildfangs, wildfang, shadoww, tknight, gaiden_state, wildfang, ROT0, "Tecmo", "Wild Fang", GAME_SUPPORTS_SAVE )
-GAME( 1989, tknight, wildfang, shadoww, tknight, gaiden_state, wildfang, ROT0, "Tecmo", "Tecmo Knight", GAME_SUPPORTS_SAVE )
-
-GAME( 1991, stratof, 0, raiga, raiga, gaiden_state, raiga, ROT0, "Tecmo", "Raiga - Strato Fighter (US)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1991, raiga, stratof, raiga, raiga, gaiden_state, raiga, ROT0, "Tecmo", "Raiga - Strato Fighter (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1988, shadoww, 0, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Shadow Warriors (World, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, shadowwa, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Shadow Warriors (World, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, gaiden, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Gaiden (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ryukendn, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Ryukenden (Japan, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, ryukendna, shadoww, shadoww, common, gaiden_state, shadoww, ROT0, "Tecmo", "Ninja Ryukenden (Japan, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mastninj, shadoww, mastninj, common, gaiden_state, mastninj, ROT0, "bootleg", "Master Ninja (bootleg of Shadow Warriors / Ninja Gaiden)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // sprites need fixing, sound and yscroll too. - it is confirmed the curtains don't scroll on the pcb
+GAME( 1992, drgnbowl, 0, drgnbowl, drgnbowl, gaiden_state, drgnbowl, ROT0, "Nics", "Dragon Bowl (set 1, encrypted program)", MACHINE_SUPPORTS_SAVE ) // Draogn Bowl is based on Ninja Gaiden code
+GAME( 1992, drgnbowla, drgnbowl, drgnbowl, drgnbowl, gaiden_state, drgnbowla,ROT0, "Nics", "Dragon Bowl (set 2, unencrypted program)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1989, wildfang, 0, shadoww, wildfang, gaiden_state, wildfang, ROT0, "Tecmo", "Wild Fang / Tecmo Knight", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, wildfangs, wildfang, shadoww, tknight, gaiden_state, wildfang, ROT0, "Tecmo", "Wild Fang", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, tknight, wildfang, shadoww, tknight, gaiden_state, wildfang, ROT0, "Tecmo", "Tecmo Knight", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1991, stratof, 0, raiga, raiga, gaiden_state, raiga, ROT0, "Tecmo", "Raiga - Strato Fighter (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, raiga, stratof, raiga, raiga, gaiden_state, raiga, ROT0, "Tecmo", "Raiga - Strato Fighter (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gal3.c b/src/mame/drivers/gal3.c
index 752e8b0a32f..b405d644b66 100644
--- a/src/mame/drivers/gal3.c
+++ b/src/mame/drivers/gal3.c
@@ -865,5 +865,5 @@ ROM_START( gal3 )
ROM_END
/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS */
-GAMEL( 199?, gal3, 0, gal3, gal3, driver_device, 0, ROT0, "Namco", "Galaxian 3 - Theater 6 : Project Dragoon", GAME_NOT_WORKING | GAME_NO_SOUND, layout_dualhsxs )
-//GAMEL( 199?, gal3zlgr, 0, gal3, gal3, driver_device, 0, ROT0, "Namco", "Galaxian 3 - Theater 6 J2 : Attack of The Zolgear", GAME_NOT_WORKING | GAME_NO_SOUND, layout_dualhsxs )
+GAMEL( 199?, gal3, 0, gal3, gal3, driver_device, 0, ROT0, "Namco", "Galaxian 3 - Theater 6 : Project Dragoon", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_dualhsxs )
+//GAMEL( 199?, gal3zlgr, 0, gal3, gal3, driver_device, 0, ROT0, "Namco", "Galaxian 3 - Theater 6 J2 : Attack of The Zolgear", MACHINE_NOT_WORKING | MACHINE_NO_SOUND, layout_dualhsxs )
diff --git a/src/mame/drivers/galaga.c b/src/mame/drivers/galaga.c
index 59e998d6e29..b03a0b5c4e1 100644
--- a/src/mame/drivers/galaga.c
+++ b/src/mame/drivers/galaga.c
@@ -3369,37 +3369,37 @@ DRIVER_INIT_MEMBER(xevious_state,battles)
/* Original Namco hardware, with Namco Customs */
// YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR,COMPANY,FULLNAME,FLAGS
-GAME( 1981, bosco, 0, bosco, bosco, driver_device, 0, ROT0, "Namco", "Bosconian (new version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-GAME( 1981, boscoo, bosco, bosco, bosco, driver_device, 0, ROT0, "Namco", "Bosconian (old version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-GAME( 1981, boscoo2, bosco, bosco, bosco, driver_device, 0, ROT0, "Namco", "Bosconian (older version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-GAME( 1981, boscomd, bosco, bosco, boscomd, driver_device, 0, ROT0, "Namco (Midway license)", "Bosconian (Midway, new version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-GAME( 1981, boscomdo, bosco, bosco, boscomd, driver_device, 0, ROT0, "Namco (Midway license)", "Bosconian (Midway, old version)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-
-GAME( 1981, galaga, 0, galaga, galaga, galaga_state, galaga, ROT90, "Namco", "Galaga (Namco rev. B)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-GAME( 1981, galagao, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco", "Galaga (Namco)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-GAME( 1981, galagamw, galaga, galaga, galagamw, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 1)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-GAME( 1981, galagamk, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 2)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-GAME( 1981, galagamf, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 1 with fast shoot hack)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
-
-GAME( 1982, xevious, 0, xevious, xevious, xevious_state, xevious, ROT90, "Namco", "Xevious (Namco)", GAME_SUPPORTS_SAVE )
-GAME( 1982, xeviousa, xevious, xevious, xeviousa, xevious_state, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari, harder)", GAME_SUPPORTS_SAVE )
-GAME( 1982, xeviousb, xevious, xevious, xeviousb, xevious_state, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari)", GAME_SUPPORTS_SAVE )
-GAME( 1982, xeviousc, xevious, xevious, xeviousa, xevious_state, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari, Namco PCB)", GAME_SUPPORTS_SAVE )
-GAME( 1984, sxevious, xevious, xevious, sxevious, xevious_state, xevious, ROT90, "Namco", "Super Xevious", GAME_SUPPORTS_SAVE )
-GAME( 1984, sxeviousj, xevious, xevious, sxevious, xevious_state, xevious, ROT90, "Namco", "Super Xevious (Japan)", GAME_SUPPORTS_SAVE )
-
-GAME( 1982, digdug, 0, digdug, digdug, driver_device, 0, ROT90, "Namco", "Dig Dug (rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1982, digdug1, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco", "Dig Dug (rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1982, digdugat, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco (Atari license)", "Dig Dug (Atari, rev 2)", GAME_SUPPORTS_SAVE )
-GAME( 1982, digdugat1, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco (Atari license)", "Dig Dug (Atari, rev 1)", GAME_SUPPORTS_SAVE )
-GAME( 1982, digsid, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco (Sidam license)", "Dig Dug (manufactured by Sidam)", GAME_SUPPORTS_SAVE )
+GAME( 1981, bosco, 0, bosco, bosco, driver_device, 0, ROT0, "Namco", "Bosconian (new version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1981, boscoo, bosco, bosco, bosco, driver_device, 0, ROT0, "Namco", "Bosconian (old version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1981, boscoo2, bosco, bosco, bosco, driver_device, 0, ROT0, "Namco", "Bosconian (older version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1981, boscomd, bosco, bosco, boscomd, driver_device, 0, ROT0, "Namco (Midway license)", "Bosconian (Midway, new version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1981, boscomdo, bosco, bosco, boscomd, driver_device, 0, ROT0, "Namco (Midway license)", "Bosconian (Midway, old version)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+
+GAME( 1981, galaga, 0, galaga, galaga, galaga_state, galaga, ROT90, "Namco", "Galaga (Namco rev. B)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1981, galagao, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco", "Galaga (Namco)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1981, galagamw, galaga, galaga, galagamw, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1981, galagamk, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1981, galagamf, galaga, galaga, galaga, galaga_state, galaga, ROT90, "Namco (Midway license)", "Galaga (Midway set 1 with fast shoot hack)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
+
+GAME( 1982, xevious, 0, xevious, xevious, xevious_state, xevious, ROT90, "Namco", "Xevious (Namco)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, xeviousa, xevious, xevious, xeviousa, xevious_state, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari, harder)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, xeviousb, xevious, xevious, xeviousb, xevious_state, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, xeviousc, xevious, xevious, xeviousa, xevious_state, xevious, ROT90, "Namco (Atari license)", "Xevious (Atari, Namco PCB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, sxevious, xevious, xevious, sxevious, xevious_state, xevious, ROT90, "Namco", "Super Xevious", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, sxeviousj, xevious, xevious, sxevious, xevious_state, xevious, ROT90, "Namco", "Super Xevious (Japan)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1982, digdug, 0, digdug, digdug, driver_device, 0, ROT90, "Namco", "Dig Dug (rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, digdug1, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco", "Dig Dug (rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, digdugat, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco (Atari license)", "Dig Dug (Atari, rev 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, digdugat1, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco (Atari license)", "Dig Dug (Atari, rev 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, digsid, digdug, digdug, digdug, driver_device, 0, ROT90, "Namco (Sidam license)", "Dig Dug (manufactured by Sidam)", MACHINE_SUPPORTS_SAVE )
/* Bootlegs with replacement I/O chips */
-GAME( 1981, gallag, galaga, galagab, galaga, galaga_state, galaga, ROT90, "bootleg", "Gallag", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gatsbee, galaga, galagab, gatsbee, galaga_state, gatsbee, ROT90, "hack", "Gatsbee", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
+GAME( 1981, gallag, galaga, galagab, galaga, galaga_state, galaga, ROT90, "bootleg", "Gallag", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gatsbee, galaga, galagab, gatsbee, galaga_state, gatsbee, ROT90, "hack", "Gatsbee", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
-GAME( 1982, xevios, xevious, xevious, xevious, xevious_state, xevios, ROT90, "bootleg", "Xevios", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, battles, xevious, battles, xevious, xevious_state, battles, ROT90, "bootleg", "Battles", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1982, xevios, xevious, xevious, xevious, xevious_state, xevios, ROT90, "bootleg", "Xevios", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, battles, xevious, battles, xevious, xevious_state, battles, ROT90, "bootleg", "Battles", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
-GAME( 1982, dzigzag, digdug, dzigzag, digdug, driver_device, 0, ROT90, "bootleg", "Zig Zag (Dig Dug hardware)", GAME_SUPPORTS_SAVE )
+GAME( 1982, dzigzag, digdug, dzigzag, digdug, driver_device, 0, ROT90, "bootleg", "Zig Zag (Dig Dug hardware)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/galastrm.c b/src/mame/drivers/galastrm.c
index 7da7c8195ac..e6329108fe9 100644
--- a/src/mame/drivers/galastrm.c
+++ b/src/mame/drivers/galastrm.c
@@ -357,4 +357,4 @@ ROM_START( galastrm )
ROM_END
-GAME( 1992, galastrm, 0, galastrm, galastrm, driver_device, 0, ROT0, "Taito Corporation", "Galactic Storm (Japan)", GAME_IMPERFECT_GRAPHICS )
+GAME( 1992, galastrm, 0, galastrm, galastrm, driver_device, 0, ROT0, "Taito Corporation", "Galactic Storm (Japan)", MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/galaxi.c b/src/mame/drivers/galaxi.c
index 1a81bf9a0b0..f22f0176fa8 100644
--- a/src/mame/drivers/galaxi.c
+++ b/src/mame/drivers/galaxi.c
@@ -68,7 +68,6 @@ public:
required_shared_ptr<UINT16> m_bg3_ram;
required_shared_ptr<UINT16> m_bg4_ram;
required_shared_ptr<UINT16> m_fg_ram;
-// UINT16 * m_paletteram; // currently this uses generic palette handling
// UINT16 * m_nvram; // currently this uses generic nvram handling
/* video-related */
@@ -487,5 +486,5 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
-GAMEL( 2000, galaxi, 0, galaxi, galaxi, driver_device, 0, ROT0, "B.R.L.", "Galaxi (v2.0)", GAME_SUPPORTS_SAVE, layout_galaxi )
-GAMEL( 2000, magjoker, 0, magjoker, magjoker, driver_device, 0, ROT0, "B.R.L.", "Magic Joker (v1.25.10.2000)", GAME_SUPPORTS_SAVE, layout_galaxi )
+GAMEL( 2000, galaxi, 0, galaxi, galaxi, driver_device, 0, ROT0, "B.R.L.", "Galaxi (v2.0)", MACHINE_SUPPORTS_SAVE, layout_galaxi )
+GAMEL( 2000, magjoker, 0, magjoker, magjoker, driver_device, 0, ROT0, "B.R.L.", "Magic Joker (v1.25.10.2000)", MACHINE_SUPPORTS_SAVE, layout_galaxi )
diff --git a/src/mame/drivers/galaxia.c b/src/mame/drivers/galaxia.c
index 3f6c4e1983a..1e52fa6f881 100644
--- a/src/mame/drivers/galaxia.c
+++ b/src/mame/drivers/galaxia.c
@@ -3,6 +3,8 @@
/*
Galaxia by Zaccaria (1979)
+Also released in several regions as "Super Galaxians".
+Set regions are unknown, so all are currently named Galaxia.
Taken from an untested board.
@@ -11,7 +13,7 @@ Taken from an untested board.
This is not a direct pirate of Galaxian as you might think from the name.
The game uses a Signetics 2650A CPU with three 40-pin 2636 chips, which are
-responsible for sound and some video functions.
+responsible for basic sound and some video functions.
Other than that, the video hardware looks like it's similar to Galaxian
(2 x 2114, 2 x 2101, 2 x EPROM) but there is no attack RAM and the graphics
@@ -48,16 +50,21 @@ Quick PCB sketch:
Astro Wars (port of Astro Fighter) is on a stripped down board of Galaxia,
using only one 2636 chip, less RAM, and no PROM.
----
+Manual and Schematic for Galaxia can be found at:
+http://www.zzzaccaria.com/manuals/SuperGalaxiansTechnicalManual.zip
+http://www.zzzaccaria.com/manuals/GalaxiaSchematics.zip
+
+The manual for Astro Wars can also be found at:
+http://www.opdenkelder.com/Astrowars_manual.zip
HW has many similarities with quasar.c / cvs.c / zac2650.c
+---
TODO:
-- fix colors, there's no color prom?!
-- stars background should be multi color
-- improve sound, maybe part discrete
+- correct color/star generation using info from Galaxia technical manual and schematics
+- add sound board emulation
- improve bullets
-- accurate astrowar sprite/bg sync
+- accurate sprite/bg sync in astrowar
*/
@@ -286,7 +293,7 @@ static MACHINE_CONFIG_START( galaxia, galaxia_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(0*8, 30*8-1, 2*8, 32*8-1)
@@ -331,7 +338,7 @@ static MACHINE_CONFIG_START( astrowar, galaxia_state )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE)
- MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_REFRESH_RATE(50)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500))
MCFG_SCREEN_SIZE(256, 256)
MCFG_SCREEN_VISIBLE_AREA(1*8, 31*8-1, 2*8, 32*8-1)
@@ -463,9 +470,8 @@ ROM_START( astrowar )
ROM_LOAD( "astro.3d", 0x00400, 0x0400, CRC(822505aa) SHA1(f9d3465e14bb850a286f8b4f42aa0a4044413b67) )
ROM_END
-
-GAME( 1979, galaxia, 0, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 1)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1979, galaxiaa, galaxia, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 2)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1979, galaxiab, galaxia, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 3)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1979, galaxiac, galaxia, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 4)", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
-GAME( 1980, astrowar, 0, astrowar, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Astro Wars", GAME_IMPERFECT_COLORS | GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS )
+GAME( 1979, galaxia, 0, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1979, galaxiaa, galaxia, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1979, galaxiab, galaxia, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 3)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1979, galaxiac, galaxia, galaxia, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Galaxia (set 4)", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1980, astrowar, 0, astrowar, galaxia, driver_device, 0, ROT90, "Zaccaria / Zelco", "Astro Wars", MACHINE_IMPERFECT_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS )
diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c
index f9276d41095..bcd1651c2c7 100644
--- a/src/mame/drivers/galaxian.c
+++ b/src/mame/drivers/galaxian.c
@@ -12,7 +12,7 @@
a CPU section, a sound section, and a video section.
The CPU section is based around a Z80 (though there are modified
- designed that changed this to an S2650). The base galaxian hardware
+ designs that changed this to an S2650). The base galaxian hardware
is designed to allow access to up to 16k of program ROM and 2k of
working RAM.
@@ -851,11 +851,18 @@ READ8_MEMBER(galaxian_state::frogger_sound_timer_r)
}
-WRITE8_MEMBER(galaxian_state::froggrmc_sound_control_w)
+WRITE8_MEMBER(galaxian_state::froggermc_sound_control_w)
{
- m_audiocpu->set_input_line(0, (data & 1) ? CLEAR_LINE : ASSERT_LINE);
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ0, ASSERT_LINE);
}
+IRQ_CALLBACK_MEMBER(galaxian_state::froggermc_audiocpu_irq_ack)
+{
+ // cleared when taking the interrupt using the m1 line
+ // schematic: http://www.jrok.com/schem/FROGSND.pdf
+ m_audiocpu->set_input_line(INPUT_LINE_IRQ0, CLEAR_LINE);
+ return 0xff;
+}
/*************************************
*
@@ -3722,7 +3729,7 @@ static INPUT_PORTS_START( frogger )
INPUT_PORTS_END
-static INPUT_PORTS_START( froggrmc )
+static INPUT_PORTS_START( froggermc )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
@@ -3763,7 +3770,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( frogg )
- PORT_INCLUDE(froggrmc)
+ PORT_INCLUDE(froggermc)
PORT_MODIFY("IN0")
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) // See notes
@@ -5332,12 +5339,15 @@ static MACHINE_CONFIG_DERIVED( frogger, konami_base )
MACHINE_CONFIG_END
-static MACHINE_CONFIG_DERIVED( froggrmc, galaxian_base )
+static MACHINE_CONFIG_DERIVED( froggermc, galaxian_base )
MCFG_FRAGMENT_ADD(konami_sound_1x_ay8910)
/* alternate memory map */
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(mooncrst_map_base) /* no discrete sound ! */
+
+ MCFG_CPU_MODIFY("audiocpu")
+ MCFG_CPU_IRQ_ACKNOWLEDGE_DEVICE(DEVICE_SELF, galaxian_state, froggermc_audiocpu_irq_ack)
MACHINE_CONFIG_END
@@ -5758,7 +5768,18 @@ void galaxian_state::decode_frogger_sound()
UINT32 offs;
/* the first ROM of the sound CPU has data lines D0 and D1 swapped */
- for (offs = 0; offs < 0x0800; offs++)
+ for (offs = 0; offs < 0x800; offs++)
+ rombase[offs] = BITSWAP8(rombase[offs], 7,6,5,4,3,2,0,1);
+}
+
+// froggermc has a bigger first ROM of the sound CPU, thus a different decode
+void galaxian_state::decode_froggermc_sound()
+{
+ UINT8 *rombase = memregion("audiocpu")->base();
+ UINT32 offs;
+
+ /* the first ROM of the sound CPU has data lines D0 and D1 swapped */
+ for (offs = 0; offs < 0x1000; offs++)
rombase[offs] = BITSWAP8(rombase[offs], 7,6,5,4,3,2,0,1);
}
@@ -5817,7 +5838,7 @@ void galaxian_state::decode_superbon()
offs_t i;
UINT8 *RAM;
- /* Deryption worked out by hand by Chris Hardy. */
+ /* Decryption worked out by hand by Chris Hardy. */
RAM = memregion("maincpu")->base();
@@ -6510,6 +6531,9 @@ DRIVER_INIT_MEMBER(galaxian_state,atlantis)
}
+
+
+
DRIVER_INIT_MEMBER(galaxian_state,scobra)
{
/* video extensions */
@@ -6518,6 +6542,34 @@ DRIVER_INIT_MEMBER(galaxian_state,scobra)
+DRIVER_INIT_MEMBER(galaxian_state,scobrae)
+{
+ UINT8 *rom = memregion("maincpu")->base();
+ int offs;
+
+ for (offs = 0; offs < 0x6000; offs++)
+ {
+ int i = offs & 0x7f;
+ int x = rom[offs];
+
+ if (offs & 0x80) i ^= 0x7f;
+
+ if (i & 0x01) x ^= 0x49;
+ if (i & 0x02) x ^= 0x21;
+ if (i & 0x04) x ^= 0x18;
+ if (i & 0x08) x ^= 0x12;
+ if (i & 0x10) x ^= 0x84;
+ if (i & 0x20) x ^= 0x24;
+ if (i & 0x40) x ^= 0x40;
+
+ rom[offs] = x ^ 0xff;
+ }
+
+ /* video extensions */
+ common_init(&galaxian_state::scramble_draw_bullet, &galaxian_state::scramble_draw_background, NULL, NULL);
+}
+
+
DRIVER_INIT_MEMBER(galaxian_state,losttomb)
{
/* video extensions */
@@ -6547,7 +6599,7 @@ DRIVER_INIT_MEMBER(galaxian_state,quaak)
}
-DRIVER_INIT_MEMBER(galaxian_state,froggrmc)
+DRIVER_INIT_MEMBER(galaxian_state,froggermc)
{
address_space &space = m_maincpu->space(AS_PROGRAM);
@@ -6555,13 +6607,13 @@ DRIVER_INIT_MEMBER(galaxian_state,froggrmc)
common_init(NULL, &galaxian_state::frogger_draw_background, &galaxian_state::frogger_extend_tile_info, &galaxian_state::frogger_extend_sprite_info);
space.install_write_handler(0xa800, 0xa800, 0, 0x7ff, write8_delegate(FUNC(galaxian_state::soundlatch_byte_w),this));
- space.install_write_handler(0xb001, 0xb001, 0, 0x7f8, write8_delegate(FUNC(galaxian_state::froggrmc_sound_control_w),this));
+ space.install_write_handler(0xb001, 0xb001, 0, 0x7f8, write8_delegate(FUNC(galaxian_state::froggermc_sound_control_w),this));
/* actually needs 2k of RAM */
space.install_ram(0x8000, 0x87ff);
/* decrypt */
- decode_frogger_sound();
+ decode_froggermc_sound();
}
@@ -6719,25 +6771,6 @@ ROM_START( galaxian )
ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
ROM_END
-/* Suspected of being Space Warp - ASCII shows "COPYRIGHT 1983", "CENTURY ELECTRONICS UK LTD" in swarpt7f.bin */
-/* S2650 CPU, not Z80. gfx is like cosmos(cvs.c) */
-ROM_START( spcwarp )
- ROM_REGION( 0x4000, "maincpu", 0 )
- ROM_LOAD( "swarpt7f.bin", 0x0000, 0x1000, CRC(04d744e3) SHA1(db8218510052a05670cb0b722b73d3f10464788c) )
- ROM_LOAD( "swarpt7h.bin", 0x1000, 0x1000, CRC(34a36536) SHA1(bc438515618683b2a7c29637871ee00ed95ad7f8) )
-/* ROMCMP reports "BADADDR xxxxxx-xxxxx". Observed data sequence repeated every 32 bytes */
- ROM_LOAD( "swarpt7m.bin", 0x2000, 0x1000, BAD_DUMP CRC(a2dff6c8) SHA1(d1c72848450dc5ff386dc94a26e4bf704ccc7121) )
-/* Stripped "repaired" rom. Was original rom supposed to be 0x1000 or 0x800? */
-// ROM_LOAD( "swarpt7m-repair.bin", 0x2000, 0x0800, CRC(109f95cf) SHA1(d99171ffd6639fec28966edaf7cce3a4df5e948d) )
-
- ROM_REGION( 0x1000, "gfx1", 0 )
- ROM_LOAD( "swarpb1h.bin", 0x0000, 0x0800, CRC(6ee3b5f7) SHA1(8150f2ecd59d3a165c0541b550664c56d049edd5) )
- ROM_LOAD( "swarpb1k.bin", 0x0800, 0x0800, CRC(da4cee6b) SHA1(28b91381658f598fa62049489beee443232825c6) )
-
- ROM_REGION( 0x0020, "proms", 0 ) /* unknown - using Galaxian's prom for now */
- ROM_LOAD( "6l.bpr", 0x0000, 0x0020, CRC(c3ac9467) SHA1(f382ad5a34d282056c78a5ec00c30ec43772bae2) )
-ROM_END
-
ROM_START( galaxiana )
ROM_REGION( 0x4000, "maincpu", 0 )
ROM_LOAD( "7f.bin", 0x0000, 0x1000, CRC(4335b1de) SHA1(e41e3d90dac738cf71377f3b476ec67b14dee27a) )
@@ -7749,7 +7782,7 @@ ROM_START( devilfsg )
ROM_END
-ROM_START( zigzag )
+ROM_START( zigzagb )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "zz_d1.7l", 0x0000, 0x1000, CRC(8cc08d81) SHA1(be671192ef06dc3ed6963dc39e6bdce3275300e9) )
ROM_LOAD( "zz_d2.7k", 0x1000, 0x1000, CRC(326d8d45) SHA1(563b9fc64c34e36cfadffb107ce30d3a04d62d9c) )
@@ -7772,7 +7805,7 @@ ROM_START( zigzag )
ROM_LOAD( "zzbpr_e9.bin",0x0000, 0x0020, CRC(aa486dd0) SHA1(b845b52715bf6361ceee8c1ac541733963bd47af) )
ROM_END
-ROM_START( zigzag2 )
+ROM_START( zigzagb2 )
ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "z1.7l", 0x0000, 0x1000, CRC(4c28349a) SHA1(646134ce506deaee88cc2ec5a973f8fedaddb66b) )
ROM_LOAD( "zz_d2.7k", 0x1000, 0x1000, CRC(326d8d45) SHA1(563b9fc64c34e36cfadffb107ce30d3a04d62d9c) )
@@ -8671,6 +8704,7 @@ ROM_START( kong )
ROM_REGION( 0x2000, "unk", 0 )
// what is this, speech? the video at https://www.youtube.com/watch?v=HTZEVKoYlGM shows the game apparently talking (2nd game, after The Pit)
// The video however seems to show a game closer to ckongg (a bootleg of Crazy Kong) rather than this version of Kong which is rewritten from scratch
+ // It could be "GORILA" as seen in the Taito do Brasil cabinet flyers
ROM_LOAD( "13", 0x0000, 0x1000, CRC(7d33ca0a) SHA1(8a65a4b913559e3fd17f6abb381db1ab813fc8f2) )
ROM_REGION( 0x0020, "proms", 0 )
@@ -8962,7 +8996,7 @@ guess at what the game actually is.
Roms 1 through 8 read well in-circuit in the right
places in the memory map for moon cresta,
(through the fluke 9100) but the game does not
-currently run. Roms dumped adn verified with no
+currently run. Roms dumped and verified with no
anomalies.
Rom 9 was placed on the through-socket and has
@@ -10419,6 +10453,30 @@ ROM_START( scobrab )
ROM_LOAD( "82s123.6e", 0x0000, 0x0020, CRC(9b87f90d) SHA1(d11ac5e4a6057301ea2a9cbb404c2b978eb4c1dc) )
ROM_END
+ROM_START( scobrae ) // main program is identical to the scobras set once decrypted
+ ROM_REGION( 0x10000, "maincpu", 0 ) // all roms have STERN labels
+ ROM_LOAD( "super cobra ra1 2c 1981.2c", 0x0000, 0x1000, CRC(ba9d4152) SHA1(f1792c0049804ac956ab7f95f699559fca4df960) )
+ ROM_LOAD( "super cobra ra1 2e 1981.2e", 0x1000, 0x1000, CRC(f9b77b27) SHA1(7974761456aaabcf016158ee5f5c32c89e43c748) )
+ ROM_LOAD( "super cobra ra1 2f 1981.2f", 0x2000, 0x1000, CRC(e6109c2c) SHA1(1749ac277b1af45b1f6722d2ddaf46be043b2b25) )
+ ROM_LOAD( "super cobra ra1 2h 1981.2h", 0x3000, 0x1000, CRC(8762735b) SHA1(07dd9b390d44fec9f83c88abf28d167c1710dcc9) )
+ ROM_LOAD( "super cobra ra1 2j 1981.2j", 0x4000, 0x1000, CRC(5648f404) SHA1(5cfbada816fd614508c7cd41196a350176c5882d) )
+ ROM_LOAD( "super cobra ra1 2l 1981.2l", 0x5000, 0x1000, CRC(34476cc3) SHA1(b8b1c9572e0c5e25f3d2a33d5a0ce40de007b478) )
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "super cobra ra1 5f 1981.5f", 0x0000, 0x0800, CRC(64d113b4) SHA1(7b439bb74d5ecc792e0ca8964bcca8c6b7a51262) )
+ ROM_LOAD( "super cobra ra1 5h 1981.5h", 0x0800, 0x0800, CRC(a96316d3) SHA1(9de0e94932e91dc34aea7c81880bde6a486d103b) )
+
+ // roms below were missing, so not verified for this set but likely the same because the main program is.
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "5c", 0x0000, 0x0800, BAD_DUMP CRC(deeb0dd3) SHA1(b815a586f05361b75078d58f1fddfdb36f9d8fae) )
+ ROM_LOAD( "5d", 0x0800, 0x0800, BAD_DUMP CRC(872c1a74) SHA1(20f05bf398ad2690f5ba4e4158ad62aeec226413) )
+ ROM_LOAD( "5e", 0x1000, 0x0800, BAD_DUMP CRC(ccd7a110) SHA1(5a247e360530be0f94c90fcc7d0ce628d460449f) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "82s123.6e", 0x0000, 0x0020, BAD_DUMP CRC(9b87f90d) SHA1(d11ac5e4a6057301ea2a9cbb404c2b978eb4c1dc) )
+ROM_END
+
+
ROM_START( suprheli )
/* this is a bootleg of Super Cobra */
ROM_REGION( 0x10000, "maincpu", 0 )
@@ -10737,93 +10795,92 @@ ROM_END
*************************************/
/* basic galaxian hardware */
-GAME( 1979, galaxian, 0, galaxian, galaxian, galaxian_state, galaxian, ROT90, "Namco", "Galaxian (Namco set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galaxiana, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "Namco", "Galaxian (Namco set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galaxianm, galaxian, galaxian, galaxian, galaxian_state, galaxian, ROT90, "Namco (Midway license)", "Galaxian (Midway set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galaxianmo, galaxian, galaxian, galaxian, galaxian_state, galaxian, ROT90, "Namco (Midway license)", "Galaxian (Midway set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galaxiant, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "Namco (Taito license)", "Galaxian (Taito)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galaxiani, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "bootleg? (Irem)", "Galaxian (Irem)", GAME_SUPPORTS_SAVE ) // more likely bootlegged by Irem, not an official license
+GAME( 1979, galaxian, 0, galaxian, galaxian, galaxian_state, galaxian, ROT90, "Namco", "Galaxian (Namco set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galaxiana, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "Namco", "Galaxian (Namco set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galaxianm, galaxian, galaxian, galaxian, galaxian_state, galaxian, ROT90, "Namco (Midway license)", "Galaxian (Midway set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galaxianmo, galaxian, galaxian, galaxian, galaxian_state, galaxian, ROT90, "Namco (Midway license)", "Galaxian (Midway set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galaxiant, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "Namco (Taito license)", "Galaxian (Taito)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galaxiani, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "bootleg? (Irem)", "Galaxian (Irem)", MACHINE_SUPPORTS_SAVE ) // more likely bootlegged by Irem, not an official license
/* straight Galaxian ripoffs on basic galaxian hardware */
-GAME( 1979, moonaln, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "Namco / Nichibutsu (Karateco license?)", "Moon Alien", GAME_SUPPORTS_SAVE ) // or bootleg?
-GAME( 1979, superg, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "hack", "Super Galaxians (galaxiana hack)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galturbo, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "hack", "Galaxian Turbo (superg hack)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galapx, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "hack", "Galaxian Part X (moonaln hack)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galap1, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "hack", "Space Invaders Galactica (galaxiana hack)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galap4, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "hack (G.G.I)", "Galaxian Part 4 (hack)", GAME_SUPPORTS_SAVE )
-GAME( 1979, swarm, galaxian, galaxian, swarm, galaxian_state, galaxian, ROT90, "bootleg? (Subelectro)", "Swarm (bootleg?)", GAME_SUPPORTS_SAVE )
-GAME( 1980, astrians, galaxian, galaxian, swarm, galaxian_state, galaxian, ROT90, "bootleg (BGV Ltd.)", "Astrians (clone of Swarm)", GAME_SUPPORTS_SAVE )
-GAME( 1979, zerotime, galaxian, galaxian, zerotime, galaxian_state, galaxian, ROT90, "bootleg? (Petaco S.A.)", "Zero Time", GAME_SUPPORTS_SAVE )
-GAME( 1979, zerotimed, galaxian, galaxian, zerotime, galaxian_state, galaxian, ROT90, "bootleg (Datamat)", "Zero Time (Datamat)", GAME_SUPPORTS_SAVE ) // a 1994 bootleg of the Petaco bootleg
-GAME( 1979, starfght, galaxian, galaxian, swarm, galaxian_state, galaxian, ROT90, "bootleg (Jeutel)", "Star Fighter", GAME_SUPPORTS_SAVE )
-GAME( 1979, galaxbsf, galaxian, galaxian, galaxian, galaxian_state, galaxian, ROT90, "bootleg", "Galaxian (bootleg, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galaxianbl, galaxian, galaxian, galaxianbl, galaxian_state, galaxian, ROT90, "bootleg", "Galaxian (bootleg, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1979, galaxbsf2, galaxian, galaxian, galaxian, galaxian_state, galaxian, ROT90, "bootleg", "Galaxian (bootleg, set 3)", GAME_SUPPORTS_SAVE )
-GAME( 1980, supergx, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "Namco / Nichibutsu", "Super GX", GAME_NOT_WORKING | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 19??, tst_galx, galaxian, galaxian, galaxian, galaxian_state, galaxian, ROT90, "<unknown>", "Galaxian Test ROM", GAME_SUPPORTS_SAVE )
-GAME( 1980, galaxrf, galaxian, galaxian, galaxrf, galaxian_state, galaxian, ROT90, "bootleg (Recreativos Franco S.A.)", "Galaxian (Recreativos Franco S.A. Spanish bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1980, galaxrfgg, galaxian, galaxian, galaxrf, galaxian_state, galaxian, ROT90, "bootleg (Recreativos Franco S.A.)", "Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Franco S.A. Spanish bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1979, moonaln, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "Namco / Nichibutsu (Karateco license?)", "Moon Alien", MACHINE_SUPPORTS_SAVE ) // or bootleg?
+GAME( 1979, superg, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "hack", "Super Galaxians (galaxiana hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galturbo, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "hack", "Galaxian Turbo (superg hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galapx, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "hack", "Galaxian Part X (moonaln hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galap1, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "hack", "Space Invaders Galactica (galaxiana hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galap4, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "hack (G.G.I)", "Galaxian Part 4 (hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, swarm, galaxian, galaxian, swarm, galaxian_state, galaxian, ROT90, "bootleg? (Subelectro)", "Swarm (bootleg?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, astrians, galaxian, galaxian, swarm, galaxian_state, galaxian, ROT90, "bootleg (BGV Ltd.)", "Astrians (clone of Swarm)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, zerotime, galaxian, galaxian, zerotime, galaxian_state, galaxian, ROT90, "bootleg? (Petaco S.A.)", "Zero Time", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, zerotimed, galaxian, galaxian, zerotime, galaxian_state, galaxian, ROT90, "bootleg (Datamat)", "Zero Time (Datamat)", MACHINE_SUPPORTS_SAVE ) // a 1994 bootleg of the Petaco bootleg
+GAME( 1979, starfght, galaxian, galaxian, swarm, galaxian_state, galaxian, ROT90, "bootleg (Jeutel)", "Star Fighter", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galaxbsf, galaxian, galaxian, galaxian, galaxian_state, galaxian, ROT90, "bootleg", "Galaxian (bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galaxianbl, galaxian, galaxian, galaxianbl, galaxian_state, galaxian, ROT90, "bootleg", "Galaxian (bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, galaxbsf2, galaxian, galaxian, galaxian, galaxian_state, galaxian, ROT90, "bootleg", "Galaxian (bootleg, set 3)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, supergx, galaxian, galaxian, superg, galaxian_state, galaxian, ROT90, "Namco / Nichibutsu", "Super GX", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 19??, tst_galx, galaxian, galaxian, galaxian, galaxian_state, galaxian, ROT90, "<unknown>", "Galaxian Test ROM", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, galaxrf, galaxian, galaxian, galaxrf, galaxian_state, galaxian, ROT90, "bootleg (Recreativos Franco S.A.)", "Galaxian (Recreativos Franco S.A. Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, galaxrfgg, galaxian, galaxian, galaxrf, galaxian_state, galaxian, ROT90, "bootleg (Recreativos Franco S.A.)", "Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Franco S.A. Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
/* other games on basic galaxian hardware */
-GAME( 1981, blkhole, 0, galaxian, blkhole, galaxian_state, galaxian, ROT90, "TDS & MINTS", "Black Hole", GAME_SUPPORTS_SAVE )
-GAME( 1982, orbitron, 0, galaxian, orbitron, galaxian_state, galaxian, ROT270, "Signatron USA", "Orbitron", GAME_SUPPORTS_SAVE )
-GAME( 1980, luctoday, 0, galaxian, luctoday, galaxian_state, galaxian, ROT270, "Sigma", "Lucky Today",GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 19??, chewing, luctoday, galaxian, luctoday, galaxian_state, galaxian, ROT90, "<unknown>", "Chewing Gum", GAME_SUPPORTS_SAVE )
-GAME( 1982, catacomb, 0, galaxian, catacomb, galaxian_state, galaxian, ROT90, "MTM Games", "Catacomb", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 19??, omega, theend, galaxian, omega, galaxian_state, galaxian, ROT270, "bootleg?", "Omega", GAME_SUPPORTS_SAVE )
-GAME( 1983, spcwarp, 0, galaxian, galaxian, galaxian_state, galaxian, ROT90, "Century Electronics", "Space Warp?", GAME_NOT_WORKING | GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1981, blkhole, 0, galaxian, blkhole, galaxian_state, galaxian, ROT90, "TDS & MINTS", "Black Hole", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, orbitron, 0, galaxian, orbitron, galaxian_state, galaxian, ROT270, "Signatron USA", "Orbitron", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, luctoday, 0, galaxian, luctoday, galaxian_state, galaxian, ROT270, "Sigma", "Lucky Today",MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 19??, chewing, luctoday, galaxian, luctoday, galaxian_state, galaxian, ROT90, "<unknown>", "Chewing Gum", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, catacomb, 0, galaxian, catacomb, galaxian_state, galaxian, ROT90, "MTM Games", "Catacomb", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 19??, omega, theend, galaxian, omega, galaxian_state, galaxian, ROT270, "bootleg?", "Omega", MACHINE_SUPPORTS_SAVE )
/* these games require the coin lockout mechanism to be disabled */
-GAME( 1981, warofbug, 0, galaxian, warofbug, galaxian_state, nolock, ROT90, "Armenia / Food and Fun Corp", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze", GAME_SUPPORTS_SAVE )
-GAME( 1981, warofbugu, warofbug, galaxian, warofbug, galaxian_state, nolock, ROT90, "Armenia / Super Video Games", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze (US)", GAME_SUPPORTS_SAVE )
-GAME( 1981, warofbugg, warofbug, galaxian, warofbug, galaxian_state, nolock, ROT90, "Armenia", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze (German)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1981, spactrai, warofbug, spactrai, warofbug, galaxian_state, nolock, ROT90, "Armenia / Adar", "Space Train", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1981, redufo, 0, galaxian, redufo, galaxian_state, nolock, ROT270, "Artic", "Defend the Terra Attack on the Red UFO", GAME_SUPPORTS_SAVE ) // is this the original?
-GAME( 1981, redufob, redufo, galaxian, redufob, galaxian_state, nolock, ROT90, "bootleg", "Defend the Terra Attack on the Red UFO (bootleg)", GAME_SUPPORTS_SAVE ) // rev A?
-GAME( 19??, exodus, redufo, galaxian, redufo, galaxian_state, nolock, ROT90, "bootleg? (Subelectro)", "Exodus (bootleg?)", GAME_SUPPORTS_SAVE )
-GAME( 1983, tdpgal, 0, galaxian, tdpgal, galaxian_state, nolock, ROT90, "Design Labs / Thomas Automatics", "Triple Draw Poker", GAME_SUPPORTS_SAVE )
-GAME( 1979, kamakazi3, galaxian, galaxian, superg, galaxian_state, nolock, ROT90, "hack", "Kamakazi III (superg hack)", GAME_SUPPORTS_SAVE )
+GAME( 1981, warofbug, 0, galaxian, warofbug, galaxian_state, nolock, ROT90, "Armenia / Food and Fun Corp", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, warofbugu, warofbug, galaxian, warofbug, galaxian_state, nolock, ROT90, "Armenia / Super Video Games", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, warofbugg, warofbug, galaxian, warofbug, galaxian_state, nolock, ROT90, "Armenia", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze (German)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, spactrai, warofbug, spactrai, warofbug, galaxian_state, nolock, ROT90, "Armenia / Adar", "Space Train", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, redufo, 0, galaxian, redufo, galaxian_state, nolock, ROT270, "Artic", "Defend the Terra Attack on the Red UFO", MACHINE_SUPPORTS_SAVE ) // is this the original?
+GAME( 1981, redufob, redufo, galaxian, redufob, galaxian_state, nolock, ROT90, "bootleg", "Defend the Terra Attack on the Red UFO (bootleg)", MACHINE_SUPPORTS_SAVE ) // rev A?
+GAME( 19??, exodus, redufo, galaxian, redufo, galaxian_state, nolock, ROT90, "bootleg? (Subelectro)", "Exodus (bootleg?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, tdpgal, 0, galaxian, tdpgal, galaxian_state, nolock, ROT90, "Design Labs / Thomas Automatics", "Triple Draw Poker", MACHINE_SUPPORTS_SAVE )
+GAME( 1979, kamakazi3, galaxian, galaxian, superg, galaxian_state, nolock, ROT90, "hack", "Kamakazi III (superg hack)", MACHINE_SUPPORTS_SAVE )
/* different bullet color */
-GAME( 1982, azurian, 0, galaxian, azurian, galaxian_state, azurian, ROT90, "Rait Electronics Ltd", "Azurian Attack", GAME_SUPPORTS_SAVE )
+GAME( 1982, azurian, 0, galaxian, azurian, galaxian_state, azurian, ROT90, "Rait Electronics Ltd", "Azurian Attack", MACHINE_SUPPORTS_SAVE )
/* extra characters controlled via bank at $6002 */
-GAME( 19??, pisces, 0, galaxian, pisces, galaxian_state, pisces, ROT90, "Subelectro", "Pisces", GAME_SUPPORTS_SAVE )
-GAME( 19??, piscesb, pisces, galaxian, piscesb, galaxian_state, pisces, ROT90, "bootleg", "Pisces (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 19??, omni, pisces, galaxian, piscesb, galaxian_state, pisces, ROT90, "bootleg", "Omni", GAME_SUPPORTS_SAVE )
-GAME( 1980, uniwars, 0, galaxian, superg, galaxian_state, pisces, ROT90, "Irem", "UniWar S", GAME_SUPPORTS_SAVE )
-GAME( 1980, gteikoku, uniwars, galaxian, superg, galaxian_state, pisces, ROT90, "Irem", "Gingateikoku No Gyakushu", GAME_SUPPORTS_SAVE )
-GAME( 1980, gteikokb, uniwars, galaxian, gteikokb, galaxian_state, pisces, ROT270, "bootleg", "Gingateikoku No Gyakushu (bootleg set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, gteikob2, uniwars, galaxian, gteikob2, galaxian_state, pisces, ROT90, "bootleg", "Gingateikoku No Gyakushu (bootleg set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1980, spacbatt, uniwars, galaxian, spacbatt, galaxian_state, pisces, ROT90, "bootleg", "Space Battle (bootleg set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, spacbat2, uniwars, galaxian, spacbatt, galaxian_state, pisces, ROT90, "bootleg", "Space Battle (bootleg set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1980, spacempr, uniwars, galaxian, spacbatt, galaxian_state, pisces, ROT90, "bootleg", "Space Empire (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1980, skyraidr, uniwars, galaxian, superg, galaxian_state, pisces, ROT90, "bootleg", "Sky Raider (Uniwars bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1980, galemp, uniwars, galaxian, superg, galaxian_state, pisces, ROT90, "bootleg (Taito do Brasil)", "Galaxy Empire (bootleg?)", GAME_SUPPORTS_SAVE ) // clearly a hack, but was it licensed?
-GAME( 1980, asideral, uniwars, galaxian, asideral, galaxian_state, pisces, ROT90, "bootleg (Electrogame S.A.)", "Ataque Sideral (Spanish bootleg of UniWar S)", GAME_SUPPORTS_SAVE )
-GAME( 1980, pajaroes, uniwars, galaxian, asideral, galaxian_state, pisces, ROT90, "bootleg (PSV S.A.)", "Pajaro del Espacio (Spanish bootleg of UniWar S)", GAME_SUPPORTS_SAVE ) // very similar to above
-
+GAME( 19??, pisces, 0, galaxian, pisces, galaxian_state, pisces, ROT90, "Subelectro", "Pisces", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, piscesb, pisces, galaxian, piscesb, galaxian_state, pisces, ROT90, "bootleg", "Pisces (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, omni, pisces, galaxian, piscesb, galaxian_state, pisces, ROT90, "bootleg", "Omni", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, uniwars, 0, galaxian, superg, galaxian_state, pisces, ROT90, "Irem", "UniWar S", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, gteikoku, uniwars, galaxian, superg, galaxian_state, pisces, ROT90, "Irem", "Gingateikoku No Gyakushu", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, gteikokb, uniwars, galaxian, gteikokb, galaxian_state, pisces, ROT270, "bootleg", "Gingateikoku No Gyakushu (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, gteikob2, uniwars, galaxian, gteikob2, galaxian_state, pisces, ROT90, "bootleg", "Gingateikoku No Gyakushu (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, spacbatt, uniwars, galaxian, spacbatt, galaxian_state, pisces, ROT90, "bootleg", "Space Battle (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, spacbat2, uniwars, galaxian, spacbatt, galaxian_state, pisces, ROT90, "bootleg", "Space Battle (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, spacempr, uniwars, galaxian, spacbatt, galaxian_state, pisces, ROT90, "bootleg", "Space Empire (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, skyraidr, uniwars, galaxian, superg, galaxian_state, pisces, ROT90, "bootleg", "Sky Raider (Uniwars bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, galemp, uniwars, galaxian, superg, galaxian_state, pisces, ROT90, "bootleg (Taito do Brasil)", "Galaxy Empire (bootleg?)", MACHINE_SUPPORTS_SAVE ) // clearly a hack, but was it licensed?
+GAME( 1980, asideral, uniwars, galaxian, asideral, galaxian_state, pisces, ROT90, "bootleg (Electrogame S.A.)", "Ataque Sideral (Spanish bootleg of UniWar S)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, pajaroes, uniwars, galaxian, asideral, galaxian_state, pisces, ROT90, "bootleg (PSV S.A.)", "Pajaro del Espacio (Spanish bootleg of UniWar S)", MACHINE_SUPPORTS_SAVE ) // very similar to above
/* Artic Multi-System games - separate tile/sprite ROMs */
-GAME( 1980, streakng, 0, pacmanbl, streakng, galaxian_state, galaxian, ROT90, "Shoei", "Streaking (set 1)", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1980, streaknga, streakng, pacmanbl, streakng, galaxian_state, galaxian, ROT90, "Shoei", "Streaking (set 2)", GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE )
-GAME( 1981, pacmanbl, puckman, pacmanbl, pacmanbl, galaxian_state, pacmanbl, ROT270, "bootleg", "Pac-Man (Galaxian hardware, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, pacmanbla, puckman, pacmanbl, pacmanbl, galaxian_state, pacmanbl, ROT270, "bootleg", "Pac-Man (Galaxian hardware, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1981, ghostmun, puckman, pacmanbl, streakng, galaxian_state, ghostmun, ROT90, "bootleg (Leisure and Allied)", "Ghost Muncher", GAME_SUPPORTS_SAVE )
-GAME( 1981, phoenxp2, phoenix, galaxian, phoenxp2, galaxian_state, batman2, ROT270, "bootleg", "Phoenix Part 2", GAME_SUPPORTS_SAVE )
-GAME( 1981, batman2, phoenix, galaxian, batman2, galaxian_state, batman2, ROT270, "bootleg", "Batman Part 2", GAME_SUPPORTS_SAVE ) /* similar to pisces, but with different video banking characteristics */
-GAME( 1981, atlantisb, atlantis, galaxian, atlantib, galaxian_state, galaxian, ROT270, "bootleg", "Battle of Atlantis (bootleg)", GAME_SUPPORTS_SAVE ) // I don't know if this should have a starfield...
-GAME( 1982, tenspot, 0, tenspot, tenspot, galaxian_state, tenspot, ROT270, "Thomas Automatics", "Ten Spot", GAME_NOT_WORKING ) // work out how menu works
+GAME( 1980, streakng, 0, pacmanbl, streakng, galaxian_state, galaxian, ROT90, "Shoei", "Streaking (set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1980, streaknga, streakng, pacmanbl, streakng, galaxian_state, galaxian, ROT90, "Shoei", "Streaking (set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, pacmanbl, puckman, pacmanbl, pacmanbl, galaxian_state, pacmanbl, ROT270, "bootleg", "Pac-Man (Galaxian hardware, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, pacmanbla, puckman, pacmanbl, pacmanbl, galaxian_state, pacmanbl, ROT270, "bootleg", "Pac-Man (Galaxian hardware, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ghostmun, puckman, pacmanbl, streakng, galaxian_state, ghostmun, ROT90, "bootleg (Leisure and Allied)", "Ghost Muncher", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, phoenxp2, phoenix, galaxian, phoenxp2, galaxian_state, batman2, ROT270, "bootleg", "Phoenix Part 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, batman2, phoenix, galaxian, batman2, galaxian_state, batman2, ROT270, "bootleg", "Batman Part 2", MACHINE_SUPPORTS_SAVE ) /* similar to pisces, but with different video banking characteristics */
+GAME( 1981, atlantisb, atlantis, galaxian, atlantib, galaxian_state, galaxian, ROT270, "bootleg", "Battle of Atlantis (bootleg)", MACHINE_SUPPORTS_SAVE ) // I don't know if this should have a starfield...
+GAME( 1982, tenspot, 0, tenspot, tenspot, galaxian_state, tenspot, ROT270, "Thomas Automatics", "Ten Spot", MACHINE_NOT_WORKING ) // work out how menu works
/* separate tile/sprite ROMs, plus INT instead of NMI */
-GAME( 1984, devilfsg, devilfsh, pacmanbl, devilfsg, galaxian_state, devilfsg, ROT270, "Vision / Artic", "Devil Fish (Galaxian hardware, bootleg?)", GAME_SUPPORTS_SAVE )
+GAME( 1984, devilfsg, devilfsh, pacmanbl, devilfsg, galaxian_state, devilfsg, ROT270, "Vision / Artic", "Devil Fish (Galaxian hardware, bootleg?)", MACHINE_SUPPORTS_SAVE )
/* sound hardware replaced with AY8910 */
-GAME( 1982, zigzag, 0, zigzag, zigzag, galaxian_state, zigzag, ROT90, "bootleg (LAX)", "Zig Zag (Galaxian hardware, set 1)", GAME_SUPPORTS_SAVE ) // maybe by Taito do Brasil?
-GAME( 1982, zigzag2, zigzag, zigzag, zigzag, galaxian_state, zigzag, ROT90, "bootleg (LAX)", "Zig Zag (Galaxian hardware, set 2)", GAME_SUPPORTS_SAVE ) // "
+// we're missing the original set by Taito do Brasil, we only have the bootlegs
+GAME( 1982, zigzagb, 0, zigzag, zigzag, galaxian_state, zigzag, ROT90, "bootleg (LAX)", "Zig Zag (Dig Dug conversion on Galaxian hardware, bootleg set 1)", MACHINE_SUPPORTS_SAVE ) // rewrite of Dig Dug (!) not a clone
+GAME( 1982, zigzagb2, zigzagb, zigzag, zigzag, galaxian_state, zigzag, ROT90, "bootleg (LAX)", "Zig Zag (Dig Dug conversion on Galaxian hardware, bootleg set 2)", MACHINE_SUPPORTS_SAVE )
/* multi-game select via external switch */
-GAME( 1981, gmgalax, 0, gmgalax, gmgalax, galaxian_state, gmgalax, ROT90, "bootleg", "Ghostmuncher Galaxian (bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1981, gmgalax, 0, gmgalax, gmgalax, galaxian_state, gmgalax, ROT90, "bootleg", "Ghostmuncher Galaxian (bootleg)", MACHINE_SUPPORTS_SAVE )
@@ -10835,73 +10892,74 @@ GAME( 1981, gmgalax, 0, gmgalax, gmgalax, galaxian_state, gmgal
*************************************/
/* based on Galaxian, but with altered address map for more ROM */
-GAME( 1980, mooncrst, 0, mooncrst, mooncrst, galaxian_state, mooncrst, ROT90, "Nichibutsu", "Moon Cresta (Nichibutsu)", GAME_SUPPORTS_SAVE )
-GAME( 1980, mooncrstuk, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrst, ROT90, "Nichibutsu UK", "Moon Cresta (Nichibutsu UK)", GAME_SUPPORTS_SAVE )
-GAME( 1980, mooncrstuku, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrsu, ROT90, "Nichibutsu UK", "Moon Cresta (Nichibutsu UK, unencrypted)", GAME_SUPPORTS_SAVE )
-GAME( 1980, mooncrstu, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrsu, ROT90, "Nichibutsu USA", "Moon Cresta (Nichibutsu USA, unencrypted)", GAME_SUPPORTS_SAVE )
-GAME( 1980, mooncrsto, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrst, ROT90, "Nichibutsu", "Moon Cresta (Nichibutsu, old rev)", GAME_SUPPORTS_SAVE )
-GAME( 1980, mooncrstg, mooncrst, mooncrst, mooncrsg, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Gremlin license)", "Moon Cresta (Gremlin)", GAME_SUPPORTS_SAVE )
+GAME( 1980, mooncrst, 0, mooncrst, mooncrst, galaxian_state, mooncrst, ROT90, "Nichibutsu", "Moon Cresta (Nichibutsu)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncrstuk, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrst, ROT90, "Nichibutsu UK", "Moon Cresta (Nichibutsu UK)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncrstuku, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrsu, ROT90, "Nichibutsu UK", "Moon Cresta (Nichibutsu UK, unencrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncrstu, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrsu, ROT90, "Nichibutsu USA", "Moon Cresta (Nichibutsu USA, unencrypted)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncrsto, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrst, ROT90, "Nichibutsu", "Moon Cresta (Nichibutsu, old rev)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncrstg, mooncrst, mooncrst, mooncrsg, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Gremlin license)", "Moon Cresta (Gremlin)", MACHINE_SUPPORTS_SAVE )
/* straight Moon Cresta ripoffs on basic mooncrst hardware */
-GAME( 1980, mooncrsb, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "bootleg", "Moon Cresta (bootleg set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, mooncrs2, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "bootleg", "Moon Cresta (bootleg set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1980, mooncrs3, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrsu, ROT90, "bootleg (Jeutel)", "Moon Cresta (bootleg set 3)", GAME_SUPPORTS_SAVE ) /* Jeutel bootleg, similar to bootleg set 2 */
-GAME( 1980, mooncrs4, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrsu, ROT90, "bootleg (SG-Florence)", "Moon Crest (Moon Cresta bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1980, fantazia, mooncrst, mooncrst, fantazia, galaxian_state, mooncrsu, ROT90, "bootleg? (Subelectro)", "Fantazia (bootleg?)", GAME_SUPPORTS_SAVE )
-GAME( 1980, eagle, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 1)", GAME_SUPPORTS_SAVE ) // or bootleg?
-GAME( 1980, eagle2, mooncrst, mooncrst, eagle2, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 2)", GAME_SUPPORTS_SAVE ) // "
-GAME( 1980, eagle3, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 3)", GAME_SUPPORTS_SAVE ) // "
-GAME( 1981?,spctbird, mooncrst, mooncrst, eagle2, galaxian_state, mooncrsu, ROT90, "bootleg? (Fortrek)", "Space Thunderbird", GAME_SUPPORTS_SAVE )
-GAME( 1980?,smooncrs, mooncrst, mooncrst, smooncrs, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Gremlin license)", "Super Moon Cresta", GAME_SUPPORTS_SAVE )
-GAME( 1980?,mooncptc, mooncrst, mooncrst, mooncptc, galaxian_state, mooncrsu, ROT90, "bootleg (Petaco S.A.)", "Moon Cresta (Petaco S.A. Spanish bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1980?,sstarcrs, mooncrst, mooncrst, mooncrsg, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Taito do Brasil license)", "Super Star Crest", GAME_SUPPORTS_SAVE )
-GAME( 198?, mooncmw, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "bootleg", "Moon War (Moon Cresta bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 198?, starfgmc, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "bootleg (Samyra Engineering)", "Starfighter (Moon Cresta bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1980, mooncrsb, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "bootleg", "Moon Cresta (bootleg set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncrs2, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "bootleg", "Moon Cresta (bootleg set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncrs3, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrsu, ROT90, "bootleg (Jeutel)", "Moon Cresta (bootleg set 3)", MACHINE_SUPPORTS_SAVE ) /* Jeutel bootleg, similar to bootleg set 2 */
+GAME( 1980, mooncrs4, mooncrst, mooncrst, mooncrst, galaxian_state, mooncrsu, ROT90, "bootleg (SG-Florence)", "Moon Crest (Moon Cresta bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, fantazia, mooncrst, mooncrst, fantazia, galaxian_state, mooncrsu, ROT90, "bootleg? (Subelectro)", "Fantazia (bootleg?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, eagle, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 1)", MACHINE_SUPPORTS_SAVE ) // or bootleg?
+GAME( 1980, eagle2, mooncrst, mooncrst, eagle2, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 2)", MACHINE_SUPPORTS_SAVE ) // "
+GAME( 1980, eagle3, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Centuri license)", "Eagle (set 3)", MACHINE_SUPPORTS_SAVE ) // "
+GAME( 1981?,spctbird, mooncrst, mooncrst, eagle2, galaxian_state, mooncrsu, ROT90, "bootleg? (Fortrek)", "Space Thunderbird", MACHINE_SUPPORTS_SAVE )
+GAME( 1980?,smooncrs, mooncrst, mooncrst, smooncrs, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Gremlin license)", "Super Moon Cresta", MACHINE_SUPPORTS_SAVE )
+GAME( 1980?,mooncptc, mooncrst, mooncrst, mooncptc, galaxian_state, mooncrsu, ROT90, "bootleg (Petaco S.A.)", "Moon Cresta (Petaco S.A. Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
+// there may be an alternate version called "Star Crest" according to flyers; is it the same?
+GAME( 1980?,sstarcrs, mooncrst, mooncrst, mooncrsg, galaxian_state, mooncrsu, ROT90, "Nichibutsu (Taito do Brasil license)", "Super Star Crest", MACHINE_SUPPORTS_SAVE )
+GAME( 198?, mooncmw, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "bootleg", "Moon War (Moon Cresta bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 198?, starfgmc, mooncrst, mooncrst, mooncrsa, galaxian_state, mooncrsu, ROT90, "bootleg (Samyra Engineering)", "Starfighter (Moon Cresta bootleg)", MACHINE_SUPPORTS_SAVE )
// The boards were marked 'Space Dragon' although this doesn't appear in the games.
-GAME( 1980, spcdrag, mooncrst, mooncrst, smooncrs, galaxian_state, mooncrsu, ROT90, "bootleg", "Space Dragon (Moon Cresta bootleg, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, spcdraga, mooncrst, mooncrst, smooncrs, galaxian_state, mooncrsu, ROT90, "bootleg", "Space Dragon (Moon Cresta bootleg, set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1980, mooncreg, mooncrst, mooncrst, mooncreg, galaxian_state, mooncrsu, ROT90, "bootleg (Electrogame S.A.)", "Moon Cresta (Electrogame S.A. Spanish bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1980, mooncrsl, mooncrst, mooncrst, mooncrsl, galaxian_state, mooncrsu, ROT90, "bootleg (Laguna S.A.)", "Cresta Mundo (Laguna S.A. Spanish Moon Cresta bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1980, stera, mooncrst, mooncrst, smooncrs, galaxian_state, mooncrsu, ROT90, "bootleg", "Steraranger (Moon Cresta bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1980, mooncrgx, mooncrst, galaxian, mooncrgx, galaxian_state, mooncrgx, ROT270, "bootleg", "Moon Cresta (Galaxian hardware)", GAME_SUPPORTS_SAVE )
-GAME( 1980, moonqsr, 0, moonqsr, moonqsr, galaxian_state, moonqsr, ROT90, "Nichibutsu", "Moon Quasar", GAME_SUPPORTS_SAVE )
-GAME( 1980, moonal2, galaxian, mooncrst, moonal2, galaxian_state, galaxian, ROT90, "Namco / Nichibutsu", "Moon Alien Part 2", GAME_SUPPORTS_SAVE )
-GAME( 1980, moonal2b, galaxian, mooncrst, moonal2, galaxian_state, galaxian, ROT90, "Namco / Nichibutsu", "Moon Alien Part 2 (older version)", GAME_SUPPORTS_SAVE )
+GAME( 1980, spcdrag, mooncrst, mooncrst, smooncrs, galaxian_state, mooncrsu, ROT90, "bootleg", "Space Dragon (Moon Cresta bootleg, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, spcdraga, mooncrst, mooncrst, smooncrs, galaxian_state, mooncrsu, ROT90, "bootleg", "Space Dragon (Moon Cresta bootleg, set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncreg, mooncrst, mooncrst, mooncreg, galaxian_state, mooncrsu, ROT90, "bootleg (Electrogame S.A.)", "Moon Cresta (Electrogame S.A. Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncrsl, mooncrst, mooncrst, mooncrsl, galaxian_state, mooncrsu, ROT90, "bootleg (Laguna S.A.)", "Cresta Mundo (Laguna S.A. Spanish Moon Cresta bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, stera, mooncrst, mooncrst, smooncrs, galaxian_state, mooncrsu, ROT90, "bootleg", "Steraranger (Moon Cresta bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, mooncrgx, mooncrst, galaxian, mooncrgx, galaxian_state, mooncrgx, ROT270, "bootleg", "Moon Cresta (Galaxian hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, moonqsr, 0, moonqsr, moonqsr, galaxian_state, moonqsr, ROT90, "Nichibutsu", "Moon Quasar", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, moonal2, galaxian, mooncrst, moonal2, galaxian_state, galaxian, ROT90, "Namco / Nichibutsu", "Moon Alien Part 2", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, moonal2b, galaxian, mooncrst, moonal2, galaxian_state, galaxian, ROT90, "Namco / Nichibutsu", "Moon Alien Part 2 (older version)", MACHINE_SUPPORTS_SAVE )
/* larger romspace, interrupt enable moved */
-GAME( 198?, thepitm, thepit, mooncrst, thepitm, galaxian_state, thepitm, ROT90, "bootleg (KZH)", "The Pit (bootleg on Moon Quasar hardware)", GAME_SUPPORTS_SAVE ) // on an original MQ-2FJ pcb, even if the memory map appears closer to Moon Cresta
-
+GAME( 198?, thepitm, thepit, mooncrst, thepitm, galaxian_state, thepitm, ROT90, "bootleg (KZH)", "The Pit (bootleg on Moon Quasar hardware)", MACHINE_SUPPORTS_SAVE ) // on an original MQ-2FJ pcb, even if the memory map appears closer to Moon Cresta
/* other games on basic mooncrst hardware */
-GAME( 1982, skybase, 0, mooncrst, skybase, galaxian_state, skybase, ROT90, "Omori Electric Co., Ltd.", "Sky Base", GAME_SUPPORTS_SAVE )
-GAME( 198?, kong, 0, mooncrst, kong, galaxian_state, kong, ROT90, "Taito do Brasil", "Kong (Donkey Kong conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Donkey Kong (!) not a clone
+GAME( 1982, skybase, 0, mooncrst, skybase, galaxian_state, skybase, ROT90, "Omori Electric Co., Ltd.", "Sky Base", MACHINE_SUPPORTS_SAVE )
+GAME( 198?, kong, 0, mooncrst, kong, galaxian_state, kong, ROT90, "Taito do Brasil", "Kong (Donkey Kong conversion on Galaxian hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS ) // rewrite of Donkey Kong (!) not a clone
/* larger romspace, 2*AY8910, based on Super Star Crest board? */
-GAME( 198?, fantastc, 0, fantastc, fantastc, galaxian_state, fantastc, ROT90, "Taito do Brasil", "Fantastic (Galaga conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE ) // rewrite of Galaga (!) not a clone
+// there may be an alternate version called "Fantasy" according to flyers; is it the same?
+GAME( 198?, fantastc, 0, fantastc, fantastc, galaxian_state, fantastc, ROT90, "Taito do Brasil", "Fantastic (Galaga conversion on Galaxian hardware)", MACHINE_SUPPORTS_SAVE ) // rewrite of Galaga (!) not a clone
/* like fantastc, plus larger spriteram, and maybe different bullet hw(?) */
-GAME( 198?, timefgtr, 0, timefgtr, timefgtr, galaxian_state, timefgtr, ROT90, "Taito do Brasil", "Time Fighter (Time Pilot conversion on Galaxian hardware)", GAME_SUPPORTS_SAVE | GAME_WRONG_COLORS ) // rewrite of Time Pilot (!) not a clone
+GAME( 198?, timefgtr, 0, timefgtr, timefgtr, galaxian_state, timefgtr, ROT90, "Taito do Brasil", "Time Fighter (Time Pilot conversion on Galaxian hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS ) // rewrite of Time Pilot (!) not a clone
/* extra ROMs, protection, and sound hardware replaced with AY8910 */
-GAME( 1981, jumpbug, 0, jumpbug, jumpbug, galaxian_state, jumpbug, ROT90, "Hoei (Rock-Ola license)", "Jump Bug", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // or by Alpha Denshi Co. under contract from Hoei?
-GAME( 1981, jumpbugb, jumpbug, jumpbug, jumpbug, galaxian_state, jumpbug, ROT90, "bootleg", "Jump Bug (bootleg)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // bootleg of Sega license
-GAME( 1983, levers, 0, jumpbug, levers, galaxian_state, jumpbug, ROT90, "Rock-Ola", "Levers", GAME_SUPPORTS_SAVE )
+GAME( 1981, jumpbug, 0, jumpbug, jumpbug, galaxian_state, jumpbug, ROT90, "Hoei (Rock-Ola license)", "Jump Bug", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // or by Alpha Denshi Co. under contract from Hoei?
+GAME( 1981, jumpbugb, jumpbug, jumpbug, jumpbug, galaxian_state, jumpbug, ROT90, "bootleg", "Jump Bug (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND ) // bootleg of Sega license
+GAME( 1983, levers, 0, jumpbug, levers, galaxian_state, jumpbug, ROT90, "Rock-Ola", "Levers", MACHINE_SUPPORTS_SAVE )
/* 2nd CPU driving AY8910 for sound */
-GAME( 1982, checkman, 0, checkman, checkman, galaxian_state, checkman, ROT90, "Zilec-Zenitone", "Check Man", GAME_SUPPORTS_SAVE )
-GAME( 1982, checkmanj, checkman, checkmaj, checkmaj, galaxian_state, checkmaj, ROT90, "Zilec-Zenitone (Jaleco license)", "Check Man (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1983, dingo, 0, checkmaj, dingo, galaxian_state, dingo, ROT90, "Ashby Computers and Graphics Ltd. (Jaleco license)", "Dingo", GAME_SUPPORTS_SAVE )
-GAME( 1983, dingoe, dingo, checkman, dingo, galaxian_state, dingoe, ROT90, "Ashby Computers and Graphics Ltd.", "Dingo (encrypted)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1982, checkman, 0, checkman, checkman, galaxian_state, checkman, ROT90, "Zilec-Zenitone", "Check Man", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, checkmanj, checkman, checkmaj, checkmaj, galaxian_state, checkmaj, ROT90, "Zilec-Zenitone (Jaleco license)", "Check Man (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, dingo, 0, checkmaj, dingo, galaxian_state, dingo, ROT90, "Ashby Computers and Graphics Ltd. (Jaleco license)", "Dingo", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, dingoe, dingo, checkman, dingo, galaxian_state, dingoe, ROT90, "Ashby Computers and Graphics Ltd.", "Dingo (encrypted)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
/* Crazy Climber sound plus AY8910 instead of galaxian sound, plus INT instead of NMI */
-GAME( 1981, mshuttle, 0, mshuttle, mshuttle, galaxian_state, mshuttle, ROT0, "Nichibutsu", "Moon Shuttle (US? set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, mshuttle2, mshuttle, mshuttle, mshuttle, galaxian_state, mshuttle, ROT0, "Nichibutsu", "Moon Shuttle (US? set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1981, mshuttlej, mshuttle, mshuttle, mshuttle, galaxian_state, mshuttlj, ROT0, "Nichibutsu", "Moon Shuttle (Japan set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, mshuttlej2, mshuttle, mshuttle, mshuttle, galaxian_state, mshuttlj, ROT0, "Nichibutsu", "Moon Shuttle (Japan set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1981, mshuttle, 0, mshuttle, mshuttle, galaxian_state, mshuttle, ROT0, "Nichibutsu", "Moon Shuttle (US? set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mshuttle2, mshuttle, mshuttle, mshuttle, galaxian_state, mshuttle, ROT0, "Nichibutsu", "Moon Shuttle (US? set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mshuttlej, mshuttle, mshuttle, mshuttle, galaxian_state, mshuttlj, ROT0, "Nichibutsu", "Moon Shuttle (Japan set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, mshuttlej2, mshuttle, mshuttle, mshuttle, galaxian_state, mshuttlj, ROT0, "Nichibutsu", "Moon Shuttle (Japan set 2)", MACHINE_SUPPORTS_SAVE )
/* 2nd CPU driving DAC for sound */
-GAME( 1980, kingball, 0, kingball, kingball, galaxian_state, kingball, ROT90, "Namco", "King & Balloon (US)", GAME_SUPPORTS_SAVE )
-GAME( 1980, kingballj, kingball, kingball, kingball, galaxian_state, kingball, ROT90, "Namco", "King & Balloon (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1980, kingball, 0, kingball, kingball, galaxian_state, kingball, ROT90, "Namco", "King & Balloon (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, kingballj, kingball, kingball, kingball, galaxian_state, kingball, ROT90, "Namco", "King & Balloon (Japan)", MACHINE_SUPPORTS_SAVE )
@@ -10913,16 +10971,16 @@ GAME( 1980, kingballj, kingball, kingball, kingball, galaxian_state, kingb
*************************************/
/* Frogger based hardware: 2nd Z80, AY-8910A, 2 8255 PPI for I/O, custom background */
-GAME( 1981, frogger, 0, frogger, frogger, galaxian_state, frogger, ROT90, "Konami", "Frogger", GAME_SUPPORTS_SAVE )
-GAME( 1981, froggers1, frogger, frogger, frogger, galaxian_state, frogger, ROT90, "Konami (Sega license)", "Frogger (Sega set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, froggers2, frogger, frogger, frogger, galaxian_state, frogger, ROT90, "Konami (Sega license)", "Frogger (Sega set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1981, froggermc, frogger, froggrmc, froggrmc, galaxian_state, froggrmc, ROT90, "Konami (Sega license)", "Frogger (Moon Cresta hardware)", GAME_SUPPORTS_SAVE )
-GAME( 1981, froggers, frogger, froggers, frogger, galaxian_state, froggers, ROT90, "bootleg", "Frog", GAME_SUPPORTS_SAVE )
-GAME( 1981, frogf, frogger, frogf, frogger, galaxian_state, froggers, ROT90, "bootleg (Falcon)", "Frog (Falcon bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1981, frogg, frogger, galaxian, frogg, galaxian_state, frogg, ROT90, "bootleg", "Frog (Galaxian hardware)", GAME_SUPPORTS_SAVE )
-GAME( 1981, froggrs, frogger, froggers, frogger, galaxian_state, froggrs, ROT90, "bootleg (Coin Music)", "Frogger (Scramble hardware)", GAME_SUPPORTS_SAVE )
-GAME( 1981, quaak, frogger, quaak, frogger, galaxian_state, quaak, ROT90, "bootleg", "Quaak (bootleg of Frogger)", GAME_SUPPORTS_SAVE ) // closest to Super Cobra hardware, presumably a bootleg from Germany (Quaak is the German frog sound)
-GAME( 1981, froggeram, frogger, froggeram, frogger, galaxian_state, quaak, ROT90, "bootleg", "Frogger (bootleg on Amigo? hardware)", GAME_NOT_WORKING ) // meant to be Amigo hardware, but maybe a different bootleg than the one we have?
+GAME( 1981, frogger, 0, frogger, frogger, galaxian_state, frogger, ROT90, "Konami", "Frogger", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, froggers1, frogger, frogger, frogger, galaxian_state, frogger, ROT90, "Konami (Sega license)", "Frogger (Sega set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, froggers2, frogger, frogger, frogger, galaxian_state, frogger, ROT90, "Konami (Sega license)", "Frogger (Sega set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, froggermc, frogger, froggermc, froggermc, galaxian_state, froggermc, ROT90, "Konami (Sega license)", "Frogger (Moon Cresta hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, froggers, frogger, froggers, frogger, galaxian_state, froggers, ROT90, "bootleg", "Frog", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, frogf, frogger, frogf, frogger, galaxian_state, froggers, ROT90, "bootleg (Falcon)", "Frog (Falcon bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, frogg, frogger, galaxian, frogg, galaxian_state, frogg, ROT90, "bootleg", "Frog (Galaxian hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, froggrs, frogger, froggers, frogger, galaxian_state, froggrs, ROT90, "bootleg (Coin Music)", "Frogger (Scramble hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, quaak, frogger, quaak, frogger, galaxian_state, quaak, ROT90, "bootleg", "Quaak (bootleg of Frogger)", MACHINE_SUPPORTS_SAVE ) // closest to Super Cobra hardware, presumably a bootleg from Germany (Quaak is the German frog sound)
+GAME( 1981, froggeram, frogger, froggeram, frogger, galaxian_state, quaak, ROT90, "bootleg", "Frogger (bootleg on Amigo? hardware)", MACHINE_NOT_WORKING ) // meant to be Amigo hardware, but maybe a different bootleg than the one we have?
/*
@@ -10931,54 +10989,51 @@ GAME( 1981, froggeram, frogger, froggeram, frogger, galaxian_state, quaak
CPU/Video Board: KT-4108-2
Sound Board: KT-4108-1
*/
-GAME( 1981, turtles, 0, turtles, turtles, galaxian_state, turtles, ROT90, "Konami (Stern Electronics license)", "Turtles", GAME_SUPPORTS_SAVE )
-GAME( 1981, turpin, turtles, turtles, turpin, galaxian_state, turtles, ROT90, "Konami (Sega license)", "Turpin", GAME_SUPPORTS_SAVE )
-GAME( 1981, 600, turtles, turtles, turtles, galaxian_state, turtles, ROT90, "Konami", "600", GAME_SUPPORTS_SAVE )
+GAME( 1981, turtles, 0, turtles, turtles, galaxian_state, turtles, ROT90, "Konami (Stern Electronics license)", "Turtles", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, turpin, turtles, turtles, turpin, galaxian_state, turtles, ROT90, "Konami (Sega license)", "Turpin", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, 600, turtles, turtles, turtles, galaxian_state, turtles, ROT90, "Konami", "600", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, amidar, 0, turtles, amidaru, galaxian_state, turtles, ROT90, "Konami", "Amidar", GAME_SUPPORTS_SAVE )
-GAME( 1981, amidar1, amidar, turtles, amidar, galaxian_state, turtles, ROT90, "Konami", "Amidar (older)", GAME_SUPPORTS_SAVE )
-GAME( 1982, amidaru, amidar, turtles, amidaru, galaxian_state, turtles, ROT90, "Konami (Stern Electronics license)", "Amidar (Stern Electronics)", GAME_SUPPORTS_SAVE )
-GAME( 1982, amidaro, amidar, turtles, amidaro, galaxian_state, turtles, ROT90, "Konami (Olympia license)", "Amidar (Olympia)", GAME_SUPPORTS_SAVE )
-GAME( 1982, amidarb, amidar, turtles, amidaru, galaxian_state, turtles, ROT90, "bootleg", "Amidar (bootleg)", GAME_SUPPORTS_SAVE ) /* similar to Amigo bootleg */
-GAME( 1982, amigo, amidar, turtles, amidaru, galaxian_state, turtles, ROT90, "bootleg", "Amigo", GAME_SUPPORTS_SAVE )
-GAME( 1982, amidars, amidar, scramble, amidars, galaxian_state, scramble, ROT90, "Konami", "Amidar (Scramble hardware)", GAME_SUPPORTS_SAVE )
+GAME( 1982, amidar, 0, turtles, amidaru, galaxian_state, turtles, ROT90, "Konami", "Amidar", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, amidar1, amidar, turtles, amidar, galaxian_state, turtles, ROT90, "Konami", "Amidar (older)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, amidaru, amidar, turtles, amidaru, galaxian_state, turtles, ROT90, "Konami (Stern Electronics license)", "Amidar (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, amidaro, amidar, turtles, amidaro, galaxian_state, turtles, ROT90, "Konami (Olympia license)", "Amidar (Olympia)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, amidarb, amidar, turtles, amidaru, galaxian_state, turtles, ROT90, "bootleg", "Amidar (bootleg)", MACHINE_SUPPORTS_SAVE ) /* similar to Amigo bootleg */
+GAME( 1982, amigo, amidar, turtles, amidaru, galaxian_state, turtles, ROT90, "bootleg", "Amigo", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, amidars, amidar, scramble, amidars, galaxian_state, scramble, ROT90, "Konami", "Amidar (Scramble hardware)", MACHINE_SUPPORTS_SAVE )
/* The End/Scramble based hardware */
-GAME( 1980, theend, 0, theend, theend, galaxian_state, theend, ROT90, "Konami", "The End", GAME_SUPPORTS_SAVE )
-GAME( 1980, theends, theend, theend, theend, galaxian_state, theend, ROT90, "Konami (Stern Electronics license)", "The End (Stern Electronics)", GAME_SUPPORTS_SAVE )
-GAME( 1980, theendb, theend, theend, theend, galaxian_state, theend, ROT90, "bootleg?", "The End (bootleg?)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-
-GAME( 1981, scramble, 0, scramble, scramble, galaxian_state, scramble, ROT90, "Konami", "Scramble", GAME_SUPPORTS_SAVE )
-GAME( 1981, scrambles, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, scrambles2, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1981, strfbomb, scramble, scramble, strfbomb, galaxian_state, scramble, ROT90, "bootleg (Omni)", "Strafe Bomb (bootleg of Scramble)", GAME_SUPPORTS_SAVE )
-GAME( 1981, explorer, scramble, explorer, explorer, galaxian_state, explorer, ROT90, "bootleg (Sidam)", "Explorer (bootleg of Scramble)", GAME_SUPPORTS_SAVE )
-GAME( 1981, scramblebf, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Karateko)", "Scramble (Karateko, French bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1981, scrambp, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Billport S.A.)", "Impacto (Billport S.A., Spanish bootleg of Scramble)", GAME_SUPPORTS_SAVE ) // similar to the Karateko set above
-GAME( 1981, scramce, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Centromatic S.A.)", "Scramble (Centromatic S.A., Spanish bootleg)", GAME_SUPPORTS_SAVE ) // similar to above
-GAME( 1981, scrampt, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Petaco S.A.)", "Scramble (Petaco S.A., Spanish bootleg)", GAME_SUPPORTS_SAVE ) // ^^
-GAME( 1981, scramrf, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Recreativos Franco)", "Scramble (Recreativos Franco, Spanish bootleg)", GAME_SUPPORTS_SAVE )
-
-
-
-GAME( 1981, scramblebb, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg?", "Scramble (bootleg?)", GAME_SUPPORTS_SAVE )
-GAME( 198?, bomber, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Alca)", "Bomber (bootleg of Scramble)", GAME_SUPPORTS_SAVE )
-
-GAME( 1981, atlantis, 0, theend, atlantis, galaxian_state, atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, atlantis2, atlantis, theend, atlantis, galaxian_state, atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1980, theend, 0, theend, theend, galaxian_state, theend, ROT90, "Konami", "The End", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, theends, theend, theend, theend, galaxian_state, theend, ROT90, "Konami (Stern Electronics license)", "The End (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, theendb, theend, theend, theend, galaxian_state, theend, ROT90, "bootleg?", "The End (bootleg?)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1981, scramble, 0, scramble, scramble, galaxian_state, scramble, ROT90, "Konami", "Scramble", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scrambles, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scrambles2, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "Konami (Stern Electronics license)", "Scramble (Stern Electronics set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, strfbomb, scramble, scramble, strfbomb, galaxian_state, scramble, ROT90, "bootleg (Omni)", "Strafe Bomb (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, explorer, scramble, explorer, explorer, galaxian_state, explorer, ROT90, "bootleg (Sidam)", "Explorer (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scramblebf, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Karateko)", "Scramble (Karateko, French bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scrambp, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Billport S.A.)", "Impacto (Billport S.A., Spanish bootleg of Scramble)", MACHINE_SUPPORTS_SAVE ) // similar to the Karateko set above
+GAME( 1981, scramce, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Centromatic S.A.)", "Scramble (Centromatic S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // similar to above
+GAME( 1981, scrampt, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Petaco S.A.)", "Scramble (Petaco S.A., Spanish bootleg)", MACHINE_SUPPORTS_SAVE ) // ^^
+GAME( 1981, scramrf, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Recreativos Franco)", "Scramble (Recreativos Franco, Spanish bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scramblebb, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg?", "Scramble (bootleg?)", MACHINE_SUPPORTS_SAVE )
+GAME( 198?, bomber, scramble, scramble, scramble, galaxian_state, scramble, ROT90, "bootleg (Alca)", "Bomber (bootleg of Scramble)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1981, atlantis, 0, theend, atlantis, galaxian_state, atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, atlantis2, atlantis, theend, atlantis, galaxian_state, atlantis, ROT90, "Comsoft", "Battle of Atlantis (set 2)", MACHINE_SUPPORTS_SAVE )
/* Scorpion hardware; based on Scramble but with a 3rd AY-8910 and a speech chip */
-GAME( 1982, scorpion, 0, scorpion, scorpion, galaxian_state, scorpion, ROT90, "Zaccaria", "Scorpion (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE)
-GAME( 1982, scorpiona, scorpion, scorpion, scorpion, galaxian_state, scorpion, ROT90, "Zaccaria", "Scorpion (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE)
-GAME( 1982, scorpionb, scorpion, scorpion, scorpion, galaxian_state, scorpion, ROT90, "Zaccaria", "Scorpion (set 3)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE)
-GAME( 19??, scorpionmc, scorpion, mooncrst, scorpnmc, galaxian_state, scorpnmc, ROT90, "bootleg? (Dorneer)", "Scorpion (Moon Cresta hardware)", GAME_SUPPORTS_SAVE )
-GAME( 19??, aracnis, scorpion, mooncrst, aracnis, galaxian_state, scorpnmc, ROT90, "bootleg", "Aracnis (bootleg of Scorpion on Moon Cresta hardware)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS )
+GAME( 1982, scorpion, 0, scorpion, scorpion, galaxian_state, scorpion, ROT90, "Zaccaria", "Scorpion (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
+GAME( 1982, scorpiona, scorpion, scorpion, scorpion, galaxian_state, scorpion, ROT90, "Zaccaria", "Scorpion (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
+GAME( 1982, scorpionb, scorpion, scorpion, scorpion, galaxian_state, scorpion, ROT90, "Zaccaria", "Scorpion (set 3)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
+GAME( 19??, scorpionmc, scorpion, mooncrst, scorpnmc, galaxian_state, scorpnmc, ROT90, "bootleg? (Dorneer)", "Scorpion (Moon Cresta hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 19??, aracnis, scorpion, mooncrst, aracnis, galaxian_state, scorpnmc, ROT90, "bootleg", "Aracnis (bootleg of Scorpion on Moon Cresta hardware)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
/* SF-X hardware; based on Scramble with extra Z80 and 8255 driving a DAC-based sample player */
-GAME( 1983, sfx, 0, sfx, sfx, galaxian_state, sfx, ORIENTATION_FLIP_X, "Nichibutsu", "SF-X", GAME_SUPPORTS_SAVE )
-GAME( 1983, skelagon, sfx, sfx, sfx, galaxian_state, sfx, ORIENTATION_FLIP_X, "Nichibutsu USA", "Skelagon", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE)
-GAME( 1982, monsterz, 0, monsterz, sfx, galaxian_state, sfx, ORIENTATION_FLIP_X, "Nihon Game", "Monster Zero", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
+GAME( 1983, sfx, 0, sfx, sfx, galaxian_state, sfx, ORIENTATION_FLIP_X, "Nichibutsu", "SF-X", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, skelagon, sfx, sfx, sfx, galaxian_state, sfx, ORIENTATION_FLIP_X, "Nichibutsu USA", "Skelagon", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE)
+GAME( 1982, monsterz, 0, monsterz, sfx, galaxian_state, sfx, ORIENTATION_FLIP_X, "Nihon Game", "Monster Zero", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
/*
@@ -10987,19 +11042,21 @@ GAME( 1982, monsterz, 0, monsterz, sfx, galaxian_state, sfx,
CPU/Video Board: A969
Sound Board: A970
*/
-GAME( 1981, scobra, 0, scobra, scobra, galaxian_state, scobra, ROT90, "Konami", "Super Cobra", GAME_SUPPORTS_SAVE )
-GAME( 1981, scobrase, scobra, scobra, scobra, galaxian_state, scobra, ROT90, "Konami (Sega license)", "Super Cobra (Sega)", GAME_SUPPORTS_SAVE )
-GAME( 1981, scobras, scobra, scobra, scobras, galaxian_state, scobra, ROT90, "Konami (Stern Electronics license)", "Super Cobra (Stern Electronics)", GAME_SUPPORTS_SAVE )
-GAME( 1981, scobrab, scobra, scobra, scobras, galaxian_state, scobra, ROT90, "bootleg", "Super Cobra (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1981, suprheli, scobra, scobra, scobras, galaxian_state, scobra, ROT90, "bootleg", "Super Heli (Super Cobra bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1981, scobra, 0, scobra, scobra, galaxian_state, scobra, ROT90, "Konami", "Super Cobra", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobrase, scobra, scobra, scobra, galaxian_state, scobra, ROT90, "Konami (Sega license)", "Super Cobra (Sega)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobras, scobra, scobra, scobras, galaxian_state, scobra, ROT90, "Konami (Stern Electronics license)", "Super Cobra (Stern Electronics)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobrae, scobra, scobra, scobras, galaxian_state, scobrae, ROT90, "Konami (Stern Electronics license)", "Super Cobra (Stern Electronics) (encrypted, KONATEC XC-103SS CPU)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scobrab, scobra, scobra, scobras, galaxian_state, scobra, ROT90, "bootleg", "Super Cobra (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, suprheli, scobra, scobra, scobras, galaxian_state, scobra, ROT90, "bootleg", "Super Heli (Super Cobra bootleg)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1981, moonwar, 0, moonwar, moonwar, galaxian_state, moonwar, ROT90, "Stern Electronics", "Moonwar", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, moonwara, moonwar, moonwar, moonwara, galaxian_state, moonwar, ROT90, "Stern Electronics", "Moonwar (older)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, moonwar, 0, moonwar, moonwar, galaxian_state, moonwar, ROT90, "Stern Electronics", "Moonwar", GAME_SUPPORTS_SAVE )
-GAME( 1981, moonwara, moonwar, moonwar, moonwara, galaxian_state, moonwar, ROT90, "Stern Electronics", "Moonwar (older)", GAME_SUPPORTS_SAVE )
+GAME( 1981, armorcar, 0, scobra, armorcar, galaxian_state, scobra, ROT90, "Stern Electronics", "Armored Car (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, armorcar2, armorcar, scobra, armorcar2, galaxian_state, scobra, ROT90, "Stern Electronics", "Armored Car (set 2)", MACHINE_SUPPORTS_SAVE )
-GAME( 1981, armorcar, 0, scobra, armorcar, galaxian_state, scobra, ROT90, "Stern Electronics", "Armored Car (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1981, armorcar2, armorcar, scobra, armorcar2, galaxian_state, scobra, ROT90, "Stern Electronics", "Armored Car (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1982, tazmania, 0, scobra, tazmania, galaxian_state, scobra, ROT90, "Stern Electronics", "Tazz-Mania (set 1)", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, tazmania, 0, scobra, tazmania, galaxian_state, scobra, ROT90, "Stern Electronics", "Tazz-Mania (set 1)", GAME_SUPPORTS_SAVE )
/*
Anteater (sold as conversion kit)
@@ -11007,11 +11064,12 @@ GAME( 1982, tazmania, 0, scobra, tazmania, galaxian_state, scobr
CPU/Video Board: A969 (Has various wire mods)
Sound Board: A970
*/
-GAME( 1982, anteater, 0, anteater, anteater, galaxian_state, anteater, ROT90, "Tago Electronics", "Anteater", GAME_SUPPORTS_SAVE )
-GAME( 1982, anteateruk, anteater, anteateruk, anteateruk, galaxian_state, anteateruk, ROT90, "Tago Electronics (Free Enterprise Games license", "The Anteater (UK)", GAME_SUPPORTS_SAVE ) // distributed in 1983
-GAME( 1982, anteaterg, anteater, anteaterg, anteateruk, galaxian_state, anteateruk, ROT90, "Tago Electronics (TV-Tuning license from Free Enterprise Games)", "Ameisenbaer (German)", GAME_SUPPORTS_SAVE )
+GAME( 1982, anteater, 0, anteater, anteater, galaxian_state, anteater, ROT90, "Tago Electronics", "Anteater", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, anteateruk, anteater, anteateruk, anteateruk, galaxian_state, anteateruk, ROT90, "Tago Electronics (Free Enterprise Games license", "The Anteater (UK)", MACHINE_SUPPORTS_SAVE ) // distributed in 1983
+GAME( 1982, anteaterg, anteater, anteaterg, anteateruk, galaxian_state, anteateruk, ROT90, "Tago Electronics (TV-Tuning license from Free Enterprise Games)", "Ameisenbaer (German)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1982, calipso, 0, scobra, calipso, galaxian_state, calipso, ROT90, "Tago Electronics", "Calipso", MACHINE_SUPPORTS_SAVE )
-GAME( 1982, calipso, 0, scobra, calipso, galaxian_state, calipso, ROT90, "Tago Electronics", "Calipso", GAME_SUPPORTS_SAVE )
/*
Lost Tomb
@@ -11019,9 +11077,9 @@ GAME( 1982, calipso, 0, scobra, calipso, galaxian_state, calip
CPU/Video Board: A969 (Has various wire mods)
Sound Board: A2048
*/
-GAME( 1982, losttomb, 0, scobra, losttomb, galaxian_state, losttomb, ROT90, "Stern Electronics", "Lost Tomb (easy)", GAME_SUPPORTS_SAVE )
-GAME( 1982, losttombh, losttomb, scobra, losttomb, galaxian_state, losttomb, ROT90, "Stern Electronics", "Lost Tomb (hard)", GAME_SUPPORTS_SAVE )
+GAME( 1982, losttomb, 0, scobra, losttomb, galaxian_state, losttomb, ROT90, "Stern Electronics", "Lost Tomb (easy)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, losttombh, losttomb, scobra, losttomb, galaxian_state, losttomb, ROT90, "Stern Electronics", "Lost Tomb (hard)", MACHINE_SUPPORTS_SAVE )
-GAME( 1984, spdcoin, 0, scobra, spdcoin, galaxian_state, scobra, ROT90, "Stern Electronics", "Speed Coin (prototype)", GAME_SUPPORTS_SAVE )
+GAME( 1984, spdcoin, 0, scobra, spdcoin, galaxian_state, scobra, ROT90, "Stern Electronics", "Speed Coin (prototype)", MACHINE_SUPPORTS_SAVE )
-GAME( 1985, superbon, 0, scobra, superbon, galaxian_state, superbon, ROT90, "Signatron USA", "Agent Super Bond (Super Cobra conversion)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE )
+GAME( 1985, superbon, 0, scobra, superbon, galaxian_state, superbon, ROT90, "Signatron USA", "Agent Super Bond (Super Cobra conversion)", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/galaxold.c b/src/mame/drivers/galaxold.c
index b99550543ff..0b74004e5d7 100644
--- a/src/mame/drivers/galaxold.c
+++ b/src/mame/drivers/galaxold.c
@@ -361,7 +361,6 @@ Stephh's notes (based on the games Z80 code and some tests) for other games :
to 0x00, so routine at 0x042a ALWAYS thinks that you've pressed COIN2,
and as a consequence, it ALWAYS adds 1 credit (even when you are playing) !
-
***************************************************************************/
#include "emu.h"
@@ -902,6 +901,36 @@ static ADDRESS_MAP_START( hunchbkg, AS_PROGRAM, 8, galaxold_state )
AM_RANGE(0x6000, 0x6fff) AM_ROM
ADDRESS_MAP_END
+/* majorly shifted, hunchbkg style */
+static ADDRESS_MAP_START( spcwarp, AS_PROGRAM, 8, galaxold_state )
+ AM_RANGE(0x0000, 0x0fff) AM_ROM
+ AM_RANGE(0x1480, 0x14bf) AM_MIRROR(0x6000) AM_RAM_WRITE(galaxold_attributesram_w) AM_SHARE("attributesram")
+ AM_RANGE(0x14c0, 0x14ff) AM_MIRROR(0x6000) AM_WRITEONLY AM_SHARE("spriteram")
+ AM_RANGE(0x1500, 0x1500) AM_MIRROR(0x6000) AM_READ_PORT("IN0")
+ AM_RANGE(0x1500, 0x1501) AM_MIRROR(0x6000) AM_WRITE(galaxold_leds_w)
+ AM_RANGE(0x1502, 0x1502) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_lockout_w)
+ AM_RANGE(0x1503, 0x1503) AM_MIRROR(0x6000) AM_WRITE(galaxold_coin_counter_w)
+ AM_RANGE(0x1504, 0x1507) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, lfo_freq_w)
+ AM_RANGE(0x1580, 0x1580) AM_MIRROR(0x6000) AM_READ_PORT("IN1")
+ AM_RANGE(0x1580, 0x1587) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, sound_w)
+ AM_RANGE(0x1583, 0x1583) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, noise_enable_w)
+ AM_RANGE(0x1585, 0x1585) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, fire_enable_w)
+ AM_RANGE(0x1586, 0x1587) AM_MIRROR(0x6000) AM_DEVWRITE("cust", galaxian_sound_device, vol_w)
+ // everything else in the $16xx range is moved to $17xx
+ AM_RANGE(0x1680, 0x1680) AM_MIRROR(0x6000) AM_READ(watchdog_reset_r) AM_DEVWRITE("cust", galaxian_sound_device, pitch_w)
+ AM_RANGE(0x1700, 0x1700) AM_MIRROR(0x6000) AM_READ_PORT("DSW0")
+ AM_RANGE(0x1701, 0x1701) AM_MIRROR(0x6000) AM_WRITE(galaxold_nmi_enable_w)
+ AM_RANGE(0x1704, 0x1704) AM_MIRROR(0x6000) AM_WRITE(galaxold_stars_enable_w)
+ AM_RANGE(0x1706, 0x1706) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_x_w)
+ AM_RANGE(0x1707, 0x1707) AM_MIRROR(0x6000) AM_WRITE(galaxold_flip_screen_y_w)
+ // the rest
+ AM_RANGE(0x1800, 0x1bff) AM_MIRROR(0x6000) AM_WRITE(galaxold_videoram_w) AM_SHARE("videoram")
+ AM_RANGE(0x1c00, 0x1fff) AM_MIRROR(0x6000) AM_RAM
+ AM_RANGE(0x2000, 0x2fff) AM_ROM
+ AM_RANGE(0x4000, 0x4fff) AM_ROM
+ AM_RANGE(0x6000, 0x6fff) AM_ROM
+ADDRESS_MAP_END
+
static ADDRESS_MAP_START( hunchbkg_io, AS_IO, 8, galaxold_state )
AM_RANGE(S2650_DATA_PORT, S2650_DATA_PORT) AM_READNOP // not used
ADDRESS_MAP_END
@@ -2733,6 +2762,14 @@ static MACHINE_CONFIG_DERIVED( hunchbkg, galaxold_base )
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( spcwarp, hunchbkg )
+ /* hunchbkg but with different banking */
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(spcwarp)
+MACHINE_CONFIG_END
+
+
static MACHINE_CONFIG_DERIVED( tazzmang, galaxian )
/* basic machine hardware */
@@ -3441,6 +3478,28 @@ ROM_START( hunchbkg )
ROM_LOAD( "gal_hb_cp", 0x0000, 0x0020, CRC(cbff6762) SHA1(4515a6e12a0a5c485a55291feee17a571120a549) )
ROM_END
+ROM_START( spcwarp )
+ // conversion of 'cosmos' (cvs.c) to Galaxian hardware
+ // notes:
+ // -came out of an unemulated games collection - may or may not be actually spcwarp but it's unique
+ // -uses hunchbkg hardware with a different map
+ // -the game likely calls a checksum check every 10 frames, causes game to freeze (probably because of bad ROM)
+ // -so far using hunchbkg inputs work
+ // -text in ROM confirms year of release and company; ASCII shows "COPYRIGHT 1983", "CENTURY ELECTRONICS UK LTD" in swarpt7f.bin
+ ROM_REGION( 0x8000, "maincpu", 0 )
+ ROM_LOAD( "swarpt7f.bin", 0x0000, 0x1000, CRC(04d744e3) SHA1(db8218510052a05670cb0b722b73d3f10464788c) )
+ ROM_LOAD( "swarpt7h.bin", 0x2000, 0x1000, CRC(34a36536) SHA1(bc438515618683b2a7c29637871ee00ed95ad7f8) )
+ ROM_LOAD( "swarpt7m.bin", 0x6000, 0x1000, BAD_DUMP CRC(a2dff6c8) SHA1(d1c72848450dc5ff386dc94a26e4bf704ccc7121) ) /* ROMCMP reports "BADADDR xxxxxx-xxxxx". Observed data sequence repeated every 32 bytes */
+
+ ROM_REGION( 0x1000, "gfx1", 0 )
+ ROM_LOAD( "swarpb1h.bin", 0x0000, 0x0800, CRC(6ee3b5f7) SHA1(8150f2ecd59d3a165c0541b550664c56d049edd5) )
+ ROM_LOAD( "swarpb1k.bin", 0x0800, 0x0800, CRC(da4cee6b) SHA1(28b91381658f598fa62049489beee443232825c6) )
+
+ ROM_REGION( 0x0020, "proms", 0 )
+ ROM_LOAD( "clr", 0x0000, 0x0020, NO_DUMP )
+ROM_END
+
+
ROM_START( drivfrcg )
ROM_REGION( 0x8000, "maincpu", 0 )
ROM_LOAD( "dfgp1.bin", 0x2800, 0x0400, CRC(52d5e77d) SHA1(4e68ac1274bbc8cb5b6a7dfb511232bd83482453) )
@@ -3695,40 +3754,41 @@ DRIVER_INIT_MEMBER(galaxold_state,guttangt)
/* Z80 games */
// YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY, FULLNAME, FLAGS, LAYOUT
-GAME( 1981, vpool, hustler, mooncrst, vpool, driver_device, 0, ROT90, "bootleg", "Video Pool (bootleg on Moon Cresta hardware)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1981, rockclim, 0, rockclim, rockclim, driver_device, 0, ROT180, "Taito", "Rock Climber", GAME_SUPPORTS_SAVE )
-GAME( 1981, ckongg, ckong, ckongg, ckongg, driver_device, 0, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1981, ckongmc, ckong, ckongmc, ckongmc, driver_device, 0, ROT90, "bootleg", "Crazy Kong (bootleg on Moon Cresta hardware)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // set was marked as 'King Kong on Galaxian'
-GAME( 1981, ckonggx, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1982, ckongcv, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 2)", GAME_NOT_WORKING )
-GAME( 1982, ckongis, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 3)", GAME_NOT_WORKING )
-GAME( 1981, scramblb, scramble, scramblb, scramblb, driver_device, 0, ROT90, "bootleg", "Scramble (bootleg on Galaxian hardware)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1981, scramb2, scramble, scramb2, scramb2, driver_device, 0, ROT90, "bootleg", "Scramble (bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1981, scrambler, scramble, scrambler, scrambler, driver_device, 0, ROT90, "bootleg (Reben S.A.)", "Scramble (Reben S.A. Spanish bootleg)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1981, 4in1, 0, 4in1, 4in1, galaxold_state, 4in1, ROT90, "Armenia / Food and Fun", "4 Fun in 1", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1982, bagmanmc, bagman, bagmanmc, bagmanmc, driver_device, 0, ROT90, "bootleg", "Bagman (bootleg on Moon Cresta hardware, set 1)", GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1984, bagmanm2, bagman, bagmanmc, bagmanmc, driver_device, 0, ROT90, "bootleg (GIB)", "Bagman (bootleg on Moon Cresta hardware, set 2)", GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1982, dkongjrm, dkongjr, dkongjrm, dkongjrm, driver_device, 0, ROT90, "bootleg", "Donkey Kong Jr. (bootleg on Moon Cresta hardware)", GAME_WRONG_COLORS | GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1982, porter, dockman, porter, porter, driver_device, 0, ROT90, "bootleg", "Port Man (bootleg on Moon Cresta hardware)", GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL )
-GAME( 1982, tazzmang, tazmania, tazzmang, tazzmang, driver_device, 0, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1982, tazzmang2, tazmania, tazzmang, tazzmang, driver_device, 0, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware with Starfield)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1983, bongo, 0, bongo, bongo, driver_device, 0, ROT90, "Jetsoft", "Bongo", GAME_SUPPORTS_SAVE )
-GAME( 1983, ozon1, 0, ozon1, ozon1, driver_device, 0, ROT90, "Proma", "Ozon I", GAME_SUPPORTS_SAVE )
-GAME( 1983, ladybugg, ladybug, batman2, ladybugg, galaxold_state, ladybugg, ROT270, "bootleg", "Lady Bug (bootleg on Galaxian hardware)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1982, guttangt, locomotn, guttang, guttangt, galaxold_state, guttangt, ROT270, "bootleg (Recreativos Franco?)", "Guttang Gottong (bootleg on Galaxian type hardware)", GAME_NOT_WORKING | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) // or by 'Tren' ?
+GAME( 1981, vpool, hustler, mooncrst, vpool, driver_device, 0, ROT90, "bootleg", "Video Pool (bootleg on Moon Cresta hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, rockclim, 0, rockclim, rockclim, driver_device, 0, ROT180, "Taito", "Rock Climber", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ckongg, ckong, ckongg, ckongg, driver_device, 0, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, ckongmc, ckong, ckongmc, ckongmc, driver_device, 0, ROT90, "bootleg", "Crazy Kong (bootleg on Moon Cresta hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // set was marked as 'King Kong on Galaxian'
+GAME( 1981, ckonggx, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, ckongcv, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 2)", MACHINE_NOT_WORKING )
+GAME( 1982, ckongis, ckong, ckongg, ckonggx, galaxold_state, ckonggx, ROT90, "bootleg", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 3)", MACHINE_NOT_WORKING )
+GAME( 1981, scramblb, scramble, scramblb, scramblb, driver_device, 0, ROT90, "bootleg", "Scramble (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scramb2, scramble, scramb2, scramb2, driver_device, 0, ROT90, "bootleg", "Scramble (bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, scrambler, scramble, scrambler, scrambler, driver_device, 0, ROT90, "bootleg (Reben S.A.)", "Scramble (Reben S.A. Spanish bootleg)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, 4in1, 0, 4in1, 4in1, galaxold_state, 4in1, ROT90, "Armenia / Food and Fun", "4 Fun in 1", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, bagmanmc, bagman, bagmanmc, bagmanmc, driver_device, 0, ROT90, "bootleg", "Bagman (bootleg on Moon Cresta hardware, set 1)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, bagmanm2, bagman, bagmanmc, bagmanmc, driver_device, 0, ROT90, "bootleg (GIB)", "Bagman (bootleg on Moon Cresta hardware, set 2)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, dkongjrm, dkongjr, dkongjrm, dkongjrm, driver_device, 0, ROT90, "bootleg", "Donkey Kong Jr. (bootleg on Moon Cresta hardware)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, porter, dockman, porter, porter, driver_device, 0, ROT90, "bootleg", "Port Man (bootleg on Moon Cresta hardware)", MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL )
+GAME( 1982, tazzmang, tazmania, tazzmang, tazzmang, driver_device, 0, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, tazzmang2, tazmania, tazzmang, tazzmang, driver_device, 0, ROT90, "bootleg", "Tazz-Mania (bootleg on Galaxian hardware with Starfield)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1983, bongo, 0, bongo, bongo, driver_device, 0, ROT90, "Jetsoft", "Bongo", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ozon1, 0, ozon1, ozon1, driver_device, 0, ROT90, "Proma", "Ozon I", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, ladybugg, ladybug, batman2, ladybugg, galaxold_state, ladybugg, ROT270, "bootleg", "Lady Bug (bootleg on Galaxian hardware)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1982, guttangt, locomotn, guttang, guttangt, galaxold_state, guttangt, ROT270, "bootleg (Recreativos Franco?)", "Guttang Gottong (bootleg on Galaxian type hardware)", MACHINE_NOT_WORKING | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE ) // or by 'Tren' ?
// Videotron cartridge system
-GAME( 1981, hustlerb3, hustler, videotron, hustlerb3, driver_device, 0, ROT90, "bootleg (Videotron)", "Video Pool (Video Hustler bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1981, froggerv, frogger, videotron, froggerv, driver_device, 0, ROT90, "bootleg (Videotron / Gamepack)", "Frogger (Videotron bootleg)", GAME_SUPPORTS_SAVE )
+GAME( 1981, hustlerb3, hustler, videotron, hustlerb3, driver_device, 0, ROT90, "bootleg (Videotron)", "Video Pool (Video Hustler bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, froggerv, frogger, videotron, froggerv, driver_device, 0, ROT90, "bootleg (Videotron / Gamepack)", "Frogger (Videotron bootleg)", MACHINE_SUPPORTS_SAVE )
/* S2650 games */
// YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY, FULLNAME, FLAGS, LAYOUT
-GAME( 1983, hunchbkg, hunchbak, hunchbkg, hunchbkg, driver_device, 0, ROT90, "Century Electronics", "Hunchback (Galaxian hardware)", GAME_SUPPORTS_SAVE )
-GAME( 1984, drivfrcg, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "Shinkai Inc. (Magic Electronics USA license)", "Driving Force (Galaxian conversion)", GAME_SUPPORTS_SAVE )
-GAME( 1984, drivfrct, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "bootleg (EMT Germany)", "Top Racer (bootleg of Driving Force)", GAME_SUPPORTS_SAVE ) // Video Klein PCB
-GAME( 1985, drivfrcb, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "bootleg (Elsys Software)", "Driving Force (Galaxian conversion bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1986, racknrol, 0, racknrol, racknrol, driver_device, 0, ROT0, "Senko Industries (Status license from Shinkai Inc.)", "Rack + Roll", GAME_SUPPORTS_SAVE )
-GAME( 1986, hexpool, racknrol, racknrol, racknrol, driver_device, 0, ROT90, "Senko Industries (Shinkai Inc. license)", "Hex Pool (Shinkai)", GAME_SUPPORTS_SAVE ) // still has Senko logo in gfx rom
-GAME( 1985, hexpoola, racknrol, hexpoola, racknrol, driver_device, 0, ROT90, "Senko Industries", "Hex Pool (Senko)", GAME_SUPPORTS_SAVE )
-GAME( 1985, trvchlng, 0, racknrol, trvchlng, driver_device, 0, ROT90, "Joyland (Senko license)", "Trivia Challenge", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1985, bullsdrtg, bullsdrt, bullsdrtg, racknrol, galaxold_state, bullsdrtg, ROT90, "Senko Industries", "Bulls Eye Darts (Galaxian conversion)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_WRONG_COLORS )
+GAME( 1983, hunchbkg, hunchbak, hunchbkg, hunchbkg, driver_device, 0, ROT90, "Century Electronics", "Hunchback (Galaxian hardware)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, spcwarp, 0, spcwarp, hunchbkg, driver_device, 0, ROT90, "Century Electronics", "Space Warp? (Cosmos conversion on Galaxian hardware)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_WRONG_COLORS ) // bad dump
+GAME( 1984, drivfrcg, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "Shinkai Inc. (Magic Electronics USA license)", "Driving Force (Galaxian conversion)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, drivfrct, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "bootleg (EMT Germany)", "Top Racer (bootleg of Driving Force)", MACHINE_SUPPORTS_SAVE ) // Video Klein PCB
+GAME( 1985, drivfrcb, drivfrcp, drivfrcg, drivfrcg, driver_device, 0, ROT90, "bootleg (Elsys Software)", "Driving Force (Galaxian conversion bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, racknrol, 0, racknrol, racknrol, driver_device, 0, ROT0, "Senko Industries (Status license from Shinkai Inc.)", "Rack + Roll", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, hexpool, racknrol, racknrol, racknrol, driver_device, 0, ROT90, "Senko Industries (Shinkai Inc. license)", "Hex Pool (Shinkai)", MACHINE_SUPPORTS_SAVE ) // still has Senko logo in gfx rom
+GAME( 1985, hexpoola, racknrol, hexpoola, racknrol, driver_device, 0, ROT90, "Senko Industries", "Hex Pool (Senko)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, trvchlng, 0, racknrol, trvchlng, driver_device, 0, ROT90, "Joyland (Senko license)", "Trivia Challenge", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, bullsdrtg, bullsdrt, bullsdrtg, racknrol, galaxold_state, bullsdrtg, ROT90, "Senko Industries", "Bulls Eye Darts (Galaxian conversion)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_WRONG_COLORS )
diff --git a/src/mess/drivers/galaxy.c b/src/mame/drivers/galaxy.c
index a8be2d524e0..a8be2d524e0 100644
--- a/src/mess/drivers/galaxy.c
+++ b/src/mame/drivers/galaxy.c
diff --git a/src/mess/drivers/galeb.c b/src/mame/drivers/galeb.c
index 64d24d912e0..64d24d912e0 100644
--- a/src/mess/drivers/galeb.c
+++ b/src/mame/drivers/galeb.c
diff --git a/src/mame/drivers/galgame.c b/src/mame/drivers/galgame.c
index 8e0c6ea7c6f..86d0b7d0429 100644
--- a/src/mame/drivers/galgame.c
+++ b/src/mame/drivers/galgame.c
@@ -458,4 +458,4 @@ DRIVER_INIT_MEMBER(galaxygame_state,galaxygame)
main.write_word(8, 000500 - 10);
}
-GAME(1971, galgame, 0, galaxygame, galaxygame, galaxygame_state, galaxygame, ROT270, "Computer Recreations, Inc", "Galaxy Game", GAME_NO_SOUND_HW )
+GAME(1971, galgame, 0, galaxygame, galaxygame, galaxygame_state, galaxygame, ROT270, "Computer Recreations, Inc", "Galaxy Game", MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/galivan.c b/src/mame/drivers/galivan.c
index f6379975a2c..3c2a8bce49d 100644
--- a/src/mame/drivers/galivan.c
+++ b/src/mame/drivers/galivan.c
@@ -1090,14 +1090,14 @@ DRIVER_INIT_MEMBER(galivan_state,youmab)
}
-GAME( 1985, galivan, 0, galivan, galivan, driver_device, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/26/1985)", GAME_SUPPORTS_SAVE )
-GAME( 1985, galivan2, galivan, galivan, galivan, driver_device, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/16/1985)", GAME_SUPPORTS_SAVE )
-GAME( 1985, galivan3, galivan, galivan, galivan, driver_device, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/11/1985)", GAME_SUPPORTS_SAVE )
-GAME( 1986, dangar, 0, galivan, dangar, driver_device, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (12/1/1986)", GAME_SUPPORTS_SAVE )
-GAME( 1986, dangar2, dangar, galivan, dangar2, driver_device, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (9/26/1986)", GAME_SUPPORTS_SAVE )
-GAME( 1986, dangarb, dangar, galivan, dangarb, driver_device, 0, ROT270, "bootleg", "Ufo Robo Dangar (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1986, ninjemak, 0, ninjemak, ninjemak, driver_device, 0, ROT270, "Nichibutsu", "Ninja Emaki (US)", GAME_SUPPORTS_SAVE|GAME_UNEMULATED_PROTECTION )
-GAME( 1986, youma, ninjemak, ninjemak, ninjemak, driver_device, 0, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan)", GAME_SUPPORTS_SAVE|GAME_UNEMULATED_PROTECTION )
-GAME( 1986, youma2, ninjemak, ninjemak, ninjemak, driver_device, 0, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan, alt)", GAME_SUPPORTS_SAVE|GAME_UNEMULATED_PROTECTION )
-GAME( 1986, youmab, ninjemak, youmab, ninjemak, galivan_state, youmab, ROT270, "bootleg", "Youma Ninpou Chou (Game Electronics bootleg, set 1)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_UNEMULATED_PROTECTION ) // player is invincible
-GAME( 1986, youmab2, ninjemak, youmab, ninjemak, galivan_state, youmab, ROT270, "bootleg", "Youma Ninpou Chou (Game Electronics bootleg, set 2)", GAME_NOT_WORKING|GAME_SUPPORTS_SAVE|GAME_UNEMULATED_PROTECTION ) // ""
+GAME( 1985, galivan, 0, galivan, galivan, driver_device, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/26/1985)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, galivan2, galivan, galivan, galivan, driver_device, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/16/1985)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, galivan3, galivan, galivan, galivan, driver_device, 0, ROT270, "Nichibutsu", "Cosmo Police Galivan (12/11/1985)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, dangar, 0, galivan, dangar, driver_device, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (12/1/1986)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, dangar2, dangar, galivan, dangar2, driver_device, 0, ROT270, "Nichibutsu", "Ufo Robo Dangar (9/26/1986)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, dangarb, dangar, galivan, dangarb, driver_device, 0, ROT270, "bootleg", "Ufo Robo Dangar (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ninjemak, 0, ninjemak, ninjemak, driver_device, 0, ROT270, "Nichibutsu", "Ninja Emaki (US)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION )
+GAME( 1986, youma, ninjemak, ninjemak, ninjemak, driver_device, 0, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION )
+GAME( 1986, youma2, ninjemak, ninjemak, ninjemak, driver_device, 0, ROT270, "Nichibutsu", "Youma Ninpou Chou (Japan, alt)", MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION )
+GAME( 1986, youmab, ninjemak, youmab, ninjemak, galivan_state, youmab, ROT270, "bootleg", "Youma Ninpou Chou (Game Electronics bootleg, set 1)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) // player is invincible
+GAME( 1986, youmab2, ninjemak, youmab, ninjemak, galivan_state, youmab, ROT270, "bootleg", "Youma Ninpou Chou (Game Electronics bootleg, set 2)", MACHINE_NOT_WORKING|MACHINE_SUPPORTS_SAVE|MACHINE_UNEMULATED_PROTECTION ) // ""
diff --git a/src/mame/drivers/galpani2.c b/src/mame/drivers/galpani2.c
index 9b73b2218c3..c3f87db9680 100644
--- a/src/mame/drivers/galpani2.c
+++ b/src/mame/drivers/galpani2.c
@@ -1196,15 +1196,15 @@ ROM_START( gp2quiz )
ROM_LOAD( "gp2-101-0044.u60", 0x200000, 0x100000, CRC(3c45134f) SHA1(a5362bfcc6beb6e776c1bce4544475f8947fccea) )
ROM_END
-GAME( 1993, galpani2, 0, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Asia)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1993, galpani2e, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (English)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1993, galpani2e2,galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (English, 2 PCB ver.)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1993, galpani2g, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Germany, 2 PCB ver.)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1993, galpani2i, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Italy, single PCB)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1993, galpani2gs,galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Germany, single PCB)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1993, galpani2t, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Taiwan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1993, galpani2j, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Japan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) // it is a 'quiz edition' but the title screen doesn't say, maybe all Japanese versions have the Quiz
-
-GAME( 1993, gp2quiz, 0, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II - Quiz Version", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) // this one has 'quiz edition' on the title screen
-
-GAME( 1994, gp2se, 0, galpani2, gp2se, driver_device, 0, ROT90, "Kaneko", "Gals Panic II' - Special Edition (Japan)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
+GAME( 1993, galpani2, 0, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Asia)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, galpani2e, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (English)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, galpani2e2,galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (English, 2 PCB ver.)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, galpani2g, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Germany, 2 PCB ver.)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, galpani2i, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Italy, single PCB)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, galpani2gs,galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Germany, single PCB)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, galpani2t, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Taiwan)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, galpani2j, galpani2, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II (Japan)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) // it is a 'quiz edition' but the title screen doesn't say, maybe all Japanese versions have the Quiz
+
+GAME( 1993, gp2quiz, 0, galpani2, galpani2, driver_device, 0, ROT90, "Kaneko", "Gals Panic II - Quiz Version", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) // this one has 'quiz edition' on the title screen
+
+GAME( 1994, gp2se, 0, galpani2, gp2se, driver_device, 0, ROT90, "Kaneko", "Gals Panic II' - Special Edition (Japan)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/galpani3.c b/src/mame/drivers/galpani3.c
index 8687e54c2a3..dd00689032e 100644
--- a/src/mame/drivers/galpani3.c
+++ b/src/mame/drivers/galpani3.c
@@ -642,7 +642,7 @@ ROM_END
-GAME( 1995, galpani3, 0, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Euro)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1995, galpani3j, galpani3, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1995, galpani3k, galpani3, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Korea)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1995, galpani3hk,galpani3, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Hong Kong)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1995, galpani3, 0, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Euro)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, galpani3j, galpani3, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, galpani3k, galpani3, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Korea)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, galpani3hk,galpani3, galpani3, galpani3, driver_device, 0, ROT90, "Kaneko", "Gals Panic 3 (Hong Kong)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/galpanic.c b/src/mame/drivers/galpanic.c
index ca7ad7f3105..ba02735d3ab 100644
--- a/src/mame/drivers/galpanic.c
+++ b/src/mame/drivers/galpanic.c
@@ -132,7 +132,7 @@ static ADDRESS_MAP_START( galpanic_map, AS_PROGRAM, 16, galpanic_state )
AM_RANGE(0x400000, 0x400001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
AM_RANGE(0x500000, 0x51ffff) AM_RAM AM_SHARE("fgvideoram")
AM_RANGE(0x520000, 0x53ffff) AM_RAM_WRITE(galpanic_bgvideoram_w) AM_SHARE("bgvideoram") /* + work RAM */
- AM_RANGE(0x600000, 0x6007ff) AM_RAM_WRITE(galpanic_paletteram_w) AM_SHARE("paletteram") /* 1024 colors, but only 512 seem to be used */
+ AM_RANGE(0x600000, 0x6007ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* 1024 colors, but only 512 seem to be used */
AM_RANGE(0x700000, 0x701fff) AM_DEVREADWRITE("pandora", kaneko_pandora_device, spriteram_LSB_r, spriteram_LSB_w)
AM_RANGE(0x702000, 0x704fff) AM_RAM
AM_RANGE(0x800000, 0x800001) AM_READ_PORT("DSW1")
@@ -235,7 +235,8 @@ static MACHINE_CONFIG_START( galpanic, galpanic_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", galpanic)
MCFG_PALETTE_ADD("palette", 1024 + 32768)
- MCFG_PALETTE_INIT_OWNER(galpanic_state,galpanic)
+ MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx) // fg palette ram, bit 0 seems to be a transparency flag for the front bitmap
+ MCFG_PALETTE_INIT_OWNER(galpanic_state, galpanic)
MCFG_DEVICE_ADD("pandora", KANEKO_PANDORA, 0)
MCFG_KANEKO_PANDORA_OFFSETS(0, -16)
@@ -314,5 +315,5 @@ ROM_START( galpanica ) /* PAMERA-04 PCB with the CALC1 MCU used */
ROM_LOAD( "pm007e.u", 0xc0000, 0x80000, CRC(c7ed7950) SHA1(133258b058d3c562208d0d00b9fac71202647c32) )
ROM_END
-GAME( 1990, galpanic, 0, galpanic, galpanic, driver_device, 0, ROT90, "Kaneko", "Gals Panic (Unprotected)", GAME_NO_COCKTAIL )
-GAME( 1990, galpanica,galpanic, galpanica,galpanica, driver_device, 0, ROT90, "Kaneko", "Gals Panic (MCU Protected)", GAME_NO_COCKTAIL )
+GAME( 1990, galpanic, 0, galpanic, galpanic, driver_device, 0, ROT90, "Kaneko", "Gals Panic (Unprotected)", MACHINE_NO_COCKTAIL )
+GAME( 1990, galpanica,galpanic, galpanica,galpanica, driver_device, 0, ROT90, "Kaneko", "Gals Panic (MCU Protected)", MACHINE_NO_COCKTAIL )
diff --git a/src/mame/drivers/galspnbl.c b/src/mame/drivers/galspnbl.c
index 10a10c3568f..c1f8519e15f 100644
--- a/src/mame/drivers/galspnbl.c
+++ b/src/mame/drivers/galspnbl.c
@@ -315,5 +315,5 @@ ROM_START( hotpinbl )
ROM_END
-GAME( 1995, hotpinbl, 0, galspnbl, hotpinbl, driver_device, 0, ROT90, "Comad & New Japan System", "Hot Pinball", GAME_SUPPORTS_SAVE )
-GAME( 1996, galspnbl, 0, galspnbl, galspnbl, driver_device, 0, ROT90, "Comad", "Gals Pinball", GAME_SUPPORTS_SAVE )
+GAME( 1995, hotpinbl, 0, galspnbl, hotpinbl, driver_device, 0, ROT90, "Comad & New Japan System", "Hot Pinball", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, galspnbl, 0, galspnbl, galspnbl, driver_device, 0, ROT90, "Comad", "Gals Pinball", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/gamate.c b/src/mame/drivers/gamate.c
index 2d54d0b4776..ad1e129e60c 100644
--- a/src/mess/drivers/gamate.c
+++ b/src/mame/drivers/gamate.c
@@ -25,6 +25,8 @@ public:
, m_io_joy(*this, "JOY")
, m_palette(*this, "palette")
, m_bios(*this, "bios")
+ , m_bank(*this, "bank")
+ , m_bankmulti(*this, "bankmulti")
{ }
DECLARE_PALETTE_INIT(gamate);
@@ -77,6 +79,8 @@ private:
required_ioport m_io_joy;
required_device<palette_device> m_palette;
required_shared_ptr<UINT8> m_bios;
+ required_memory_bank m_bank;
+ required_memory_bank m_bankmulti;
emu_timer *timer1;
emu_timer *timer2;
UINT8 bank_multi;
@@ -186,12 +190,12 @@ WRITE8_MEMBER( gamate_state::gamate_video_w )
WRITE8_MEMBER( gamate_state::cart_bankswitchmulti_w )
{
bank_multi=data;
- membank("bankmulti")->set_base(m_cart_ptr+0x4000*data+1);
+ m_bankmulti->set_base(m_cart_ptr+0x4000*data+1);
}
WRITE8_MEMBER( gamate_state::cart_bankswitch_w )
{
- membank("bank")->set_base(m_cart_ptr+0x4000*data);
+ m_bank->set_base(m_cart_ptr+0x4000*data);
}
READ8_MEMBER( gamate_state::gamate_video_r )
@@ -322,8 +326,8 @@ void gamate_state::machine_start()
{
// m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6000, READ8_DELEGATE(gamate_state, gamate_cart_protection_r));
m_cart_ptr = m_cart->get_rom_base();
- membank("bankmulti")->set_base(m_cart->get_rom_base()+1);
- membank("bank")->set_base(m_cart->get_rom_base()+0x4000); // bankswitched games in reality no offset
+ m_bankmulti->set_base(m_cart->get_rom_base()+1);
+ m_bank->set_base(m_cart->get_rom_base()+0x4000); // bankswitched games in reality no offset
}
// m_bios[0xdf1]=0xea; m_bios[0xdf2]=0xea; // default bios: $47 protection readback
card_protection.set=false;
@@ -382,7 +386,7 @@ static MACHINE_CONFIG_START( gamate, gamate_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_SOUND_ADD("custom", GAMATE_SND, 0)
+ MCFG_SOUND_ADD("custom", GAMATE_SND, 4433000/2)
MCFG_SOUND_ROUTE(0, "lspeaker", 0.50)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.50)
diff --git a/src/mame/drivers/gambl186.c b/src/mame/drivers/gambl186.c
index ba0d4ce90ba..8d7ac5cb193 100644
--- a/src/mame/drivers/gambl186.c
+++ b/src/mame/drivers/gambl186.c
@@ -511,5 +511,5 @@ ROM_END
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */
-GAME( 1997, gambl186, 0, gambl186, gambl186, driver_device, 0, ROT0, "EGD", "Multi Game (V398)", GAME_NOT_WORKING | GAME_NO_SOUND )
-GAME( 199?, gambl186a, gambl186, gambl186, gambl186, driver_device, 0, ROT0, "EGD", "Multi Game (V399)", GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( 1997, gambl186, 0, gambl186, gambl186, driver_device, 0, ROT0, "EGD", "Multi Game (V398)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+GAME( 199?, gambl186a, gambl186, gambl186, gambl186, driver_device, 0, ROT0, "EGD", "Multi Game (V399)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/gamecom.c b/src/mame/drivers/gamecom.c
index d3149e3808d..8b843aa55c8 100644
--- a/src/mess/drivers/gamecom.c
+++ b/src/mame/drivers/gamecom.c
@@ -296,4 +296,4 @@ ROM_START( gamecom )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
-CONS( 1997, gamecom, 0, 0, gamecom, gamecom, gamecom_state, gamecom, "Tiger", "Game.com", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
+CONS( 1997, gamecom, 0, 0, gamecom, gamecom, gamecom_state, gamecom, "Tiger", "Game.com", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/drivers/gamecstl.c b/src/mame/drivers/gamecstl.c
index 22e583d274a..4c6e764bf3d 100644
--- a/src/mame/drivers/gamecstl.c
+++ b/src/mame/drivers/gamecstl.c
@@ -492,5 +492,5 @@ ROM_END
/*****************************************************************************/
-GAME(2002, gamecstl, 0, gamecstl, gamecstl, gamecstl_state, gamecstl, ROT0, "Cristaltec", "GameCristal", GAME_NOT_WORKING | GAME_NO_SOUND)
-GAME(2002, gamecst2, gamecstl, gamecstl, gamecstl, gamecstl_state, gamecstl, ROT0, "Cristaltec", "GameCristal (version 2.613)", GAME_NOT_WORKING | GAME_NO_SOUND)
+GAME(2002, gamecstl, 0, gamecstl, gamecstl, gamecstl_state, gamecstl, ROT0, "Cristaltec", "GameCristal", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+GAME(2002, gamecst2, gamecstl, gamecstl, gamecstl, gamecstl_state, gamecstl, ROT0, "Cristaltec", "GameCristal (version 2.613)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/gameking.c b/src/mame/drivers/gameking.c
index da070c6a4aa..a05b407f3f1 100644
--- a/src/mess/drivers/gameking.c
+++ b/src/mame/drivers/gameking.c
@@ -106,7 +106,7 @@ DEVICE_IMAGE_LOAD_MEMBER( gameking_state, gameking_cart )
{
UINT32 size = m_cart->common_get_size("rom");
- if (size > 0x20000)
+ if (size > 0x80000)
{
image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
return IMAGE_INIT_FAIL;
@@ -182,6 +182,7 @@ static MACHINE_CONFIG_START( gameking, gameking_state )
/* Software lists */
MCFG_SOFTWARE_LIST_ADD("cart_list", "gameking")
+ MCFG_SOFTWARE_LIST_ADD("cart_list_3", "gameking3") // maybe not compatible with this system (different internal bios?)
MACHINE_CONFIG_END
ROM_START(gameking)
@@ -190,5 +191,5 @@ ROM_END
-CONS(2003, gameking, 0, 0, gameking, gameking, gameking_state, gameking, "TimeTop", "GameKing GM-218", GAME_NOT_WORKING | GAME_NO_SOUND )
+CONS(2003, gameking, 0, 0, gameking, gameking, gameking_state, gameking, "TimeTop", "GameKing GM-218", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
// the GameKing 2 (GM-219) is probably identical HW
diff --git a/src/mame/drivers/gameplan.c b/src/mame/drivers/gameplan.c
index 90161a9f3d3..ad593e0e036 100644
--- a/src/mame/drivers/gameplan.c
+++ b/src/mame/drivers/gameplan.c
@@ -1158,11 +1158,11 @@ ROM_END
*
*************************************/
-GAME( 1980, killcom, 0, gameplan, killcom, driver_device, 0, ROT0, "Game Plan (Centuri license)", "Killer Comet", GAME_SUPPORTS_SAVE )
-GAME( 1980, megatack, 0, gameplan, megatack, driver_device, 0, ROT0, "Game Plan (Centuri license)", "Megatack", GAME_SUPPORTS_SAVE )
-GAME( 1981, challeng, 0, gameplan, challeng, driver_device, 0, ROT0, "Game Plan (Centuri license)", "Challenger", GAME_SUPPORTS_SAVE )
-GAME( 1981, kaos, 0, gameplan, kaos, driver_device, 0, ROT270, "Game Plan", "Kaos", GAME_SUPPORTS_SAVE )
-GAME( 1982, leprechn, 0, leprechn, leprechn, driver_device, 0, ROT0, "Tong Electronic", "Leprechaun", GAME_SUPPORTS_SAVE )
-GAME( 1982, potogold, leprechn, leprechn, potogold, driver_device, 0, ROT0, "Tong Electronic (Game Plan license)", "Pot of Gold", GAME_SUPPORTS_SAVE )
-GAME( 1982, leprechp, leprechn, leprechn, potogold, driver_device, 0, ROT0, "Tong Electronic (Pacific Polytechnical license)", "Leprechaun (Pacific)", GAME_SUPPORTS_SAVE )
-GAME( 1982, piratetr, 0, leprechn, piratetr, driver_device, 0, ROT0, "Tong Electronic", "Pirate Treasure", GAME_SUPPORTS_SAVE )
+GAME( 1980, killcom, 0, gameplan, killcom, driver_device, 0, ROT0, "Game Plan (Centuri license)", "Killer Comet", MACHINE_SUPPORTS_SAVE )
+GAME( 1980, megatack, 0, gameplan, megatack, driver_device, 0, ROT0, "Game Plan (Centuri license)", "Megatack", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, challeng, 0, gameplan, challeng, driver_device, 0, ROT0, "Game Plan (Centuri license)", "Challenger", MACHINE_SUPPORTS_SAVE )
+GAME( 1981, kaos, 0, gameplan, kaos, driver_device, 0, ROT270, "Game Plan", "Kaos", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, leprechn, 0, leprechn, leprechn, driver_device, 0, ROT0, "Tong Electronic", "Leprechaun", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, potogold, leprechn, leprechn, potogold, driver_device, 0, ROT0, "Tong Electronic (Game Plan license)", "Pot of Gold", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, leprechp, leprechn, leprechn, potogold, driver_device, 0, ROT0, "Tong Electronic (Pacific Polytechnical license)", "Leprechaun (Pacific)", MACHINE_SUPPORTS_SAVE )
+GAME( 1982, piratetr, 0, leprechn, piratetr, driver_device, 0, ROT0, "Tong Electronic", "Pirate Treasure", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/gamepock.c b/src/mame/drivers/gamepock.c
index dbf76dc1bf5..dbf76dc1bf5 100644
--- a/src/mess/drivers/gamepock.c
+++ b/src/mame/drivers/gamepock.c
diff --git a/src/mame/drivers/gammagic.c b/src/mame/drivers/gammagic.c
index 64facc873ee..7b891b6b894 100644
--- a/src/mame/drivers/gammagic.c
+++ b/src/mame/drivers/gammagic.c
@@ -183,5 +183,5 @@ ROM_END
*************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1999, gammagic, 0, gammagic, gammagic, driver_device, 0, ROT0, "Bally Gaming Co.", "Game Magic", GAME_IS_SKELETON )
-GAME( 1999, 99bottles, gammagic, gammagic, gammagic, driver_device, 0, ROT0, "Bally Gaming Co.", "99 Bottles of Beer", GAME_IS_SKELETON )
+GAME( 1999, gammagic, 0, gammagic, gammagic, driver_device, 0, ROT0, "Bally Gaming Co.", "Game Magic", MACHINE_IS_SKELETON )
+GAME( 1999, 99bottles, gammagic, gammagic, gammagic, driver_device, 0, ROT0, "Bally Gaming Co.", "99 Bottles of Beer", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/gamtor.c b/src/mame/drivers/gamtor.c
index f9395fb73c4..adb337a720a 100644
--- a/src/mame/drivers/gamtor.c
+++ b/src/mame/drivers/gamtor.c
@@ -1263,7 +1263,7 @@ DRIVER_INIT_MEMBER(gaminator_state,gaminator)
-#define GAME_FLAGS GAME_NOT_WORKING|GAME_NO_SOUND
+#define GAME_FLAGS MACHINE_NOT_WORKING|MACHINE_NO_SOUND
GAME( 2002?, g4u2 ,0, gaminator, gaminator, gaminator_state, gaminator, ROT0, "Novotech","Games 4 U 2 (94 5.6-0)", GAME_FLAGS )
diff --git a/src/mame/drivers/gaplus.c b/src/mame/drivers/gaplus.c
index 29c03b69b77..9bd60dcf29c 100644
--- a/src/mame/drivers/gaplus.c
+++ b/src/mame/drivers/gaplus.c
@@ -1004,16 +1004,16 @@ DRIVER_INIT_MEMBER(gaplus_state,galaga3)
/* These sets are on revision 2 or 3 PCBs AKA "Namco" PCBs */
-GAME( 1984, gaplus, 0, gapluso, gapluso, gaplus_state, gaplus, ROT90, "Namco", "Gaplus (GP2 rev. B)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1984, gaplusa, gaplus, gapluso, gapluso, gaplus_state, gaplus, ROT90, "Namco", "Gaplus (GP2)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1984, gaplusd, gaplus, gaplusd, gapluso, gaplus_state, gaplusd, ROT90, "Namco", "Gaplus (GP2 rev D, alternate hardware)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1984, galaga3, gaplus, gaplus, gaplus, gaplus_state, galaga3, ROT90, "Namco", "Galaga 3 (GP3 rev. D)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1984, galaga3a, gaplus, gaplus, gaplus, gaplus_state, galaga3, ROT90, "Namco", "Galaga 3 (GP3 rev. C)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1984, galaga3b, gaplus, gaplus, gaplus, gaplus_state, galaga3, ROT90, "Namco", "Galaga 3 (GP3)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1984, gaplus, 0, gapluso, gapluso, gaplus_state, gaplus, ROT90, "Namco", "Gaplus (GP2 rev. B)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gaplusa, gaplus, gapluso, gapluso, gaplus_state, gaplus, ROT90, "Namco", "Gaplus (GP2)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gaplusd, gaplus, gaplusd, gapluso, gaplus_state, gaplusd, ROT90, "Namco", "Gaplus (GP2 rev D, alternate hardware)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, galaga3, gaplus, gaplus, gaplus, gaplus_state, galaga3, ROT90, "Namco", "Galaga 3 (GP3 rev. D)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, galaga3a, gaplus, gaplus, gaplus, gaplus_state, galaga3, ROT90, "Namco", "Galaga 3 (GP3 rev. C)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, galaga3b, gaplus, gaplus, gaplus, gaplus_state, galaga3, ROT90, "Namco", "Galaga 3 (GP3)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
/* These sets are on older revision (AKA Midway) 1 PCBs */
-GAME( 1984, galaga3c, gaplus, gaplus, galaga3a, gaplus_state, galaga3, ROT90, "Namco", "Galaga 3 (set 4)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1984, galaga3m, gaplus, gaplus, galaga3m, gaplus_state, galaga3, ROT90, "Namco", "Galaga 3 (set 5)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1984, galaga3c, gaplus, gaplus, galaga3a, gaplus_state, galaga3, ROT90, "Namco", "Galaga 3 (set 4)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, galaga3m, gaplus, gaplus, galaga3m, gaplus_state, galaga3, ROT90, "Namco", "Galaga 3 (set 5)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
/* This is an odd mix of Galaga3 and Gaplus, main code seems closest to galaga3m but still has significant changes, copyright is modified to 1992, has Galaga 3 style high scores, PARSEF spelling error on high score table */
-GAME( 1992, gaplust, gaplus, gaplus, galaga3m, gaplus_state, galaga3, ROT90, "bootleg (Tecfri)", "Gaplus (Tecfri PCB)", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1992, gaplust, gaplus, gaplus, galaga3m, gaplus_state, galaga3, ROT90, "bootleg (Tecfri)", "Gaplus (Tecfri PCB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/gb.c b/src/mame/drivers/gb.c
index 97620173d3b..85311e19598 100644
--- a/src/mess/drivers/gb.c
+++ b/src/mame/drivers/gb.c
@@ -813,6 +813,33 @@ static MACHINE_CONFIG_DERIVED( supergb, gameboy )
MCFG_GB_LCD_SGB_ADD("lcd")
MACHINE_CONFIG_END
+static MACHINE_CONFIG_DERIVED( supergb2, gameboy )
+ /* basic machine hardware */
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(sgb_map)
+
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_LR35902_TIMER_CB( WRITE8(gb_state, gb_timer_callback ) )
+ MCFG_LR35902_HALT_BUG
+
+ MCFG_MACHINE_START_OVERRIDE(gb_state, sgb)
+ MCFG_MACHINE_RESET_OVERRIDE(gb_state, sgb)
+
+ /* video hardware */
+ MCFG_DEFAULT_LAYOUT(layout_horizont) /* runs on a TV, not an LCD */
+
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_SIZE(32*8, 28*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8-1)
+
+ MCFG_PALETTE_MODIFY("palette")
+ MCFG_PALETTE_ENTRIES(32768)
+ MCFG_PALETTE_INIT_OWNER(gb_state,sgb)
+
+ MCFG_DEVICE_REMOVE("lcd")
+ MCFG_GB_LCD_SGB_ADD("lcd")
+MACHINE_CONFIG_END
+
static MACHINE_CONFIG_DERIVED( gbpocket, gameboy )
/* video hardware */
@@ -925,6 +952,11 @@ ROM_START( supergb )
ROM_LOAD( "sgb_boot.bin", 0x0000, 0x0100, CRC(ec8a83b9) SHA1(aa2f50a77dfb4823da96ba99309085a3c6278515) )
ROM_END
+ROM_START( supergb2 )
+ ROM_REGION( 0x0100, "maincpu", 0 )
+ ROM_LOAD( "sgb2_boot.bin", 0x0000, 0x0100, CRC(53d0dd63) SHA1(93407ea10d2f30ab96a314d8eca44fe160aea734) )
+ROM_END
+
ROM_START( gbpocket )
ROM_REGION( 0x0100, "maincpu", 0 )
ROM_LOAD( "mgb_boot.bin", 0x0000, 0x0100, CRC(e6920754) SHA1(4e68f9da03c310e84c523654b9026e51f26ce7f0) )
@@ -942,10 +974,11 @@ ROM_START( megaduck )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-CONS( 1990, gameboy, 0, 0, gameboy, gameboy, driver_device, 0, "Nintendo", "Game Boy", GAME_SUPPORTS_SAVE )
-CONS( 1994, supergb, gameboy, 0, supergb, gameboy, driver_device, 0, "Nintendo", "Super Game Boy", GAME_SUPPORTS_SAVE )
-CONS( 1996, gbpocket, gameboy, 0, gbpocket, gameboy, driver_device, 0, "Nintendo", "Game Boy Pocket", GAME_SUPPORTS_SAVE )
-CONS( 1998, gbcolor, 0, 0, gbcolor, gameboy, driver_device, 0, "Nintendo", "Game Boy Color", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+CONS( 1990, gameboy, 0, 0, gameboy, gameboy, driver_device, 0, "Nintendo", "Game Boy", MACHINE_SUPPORTS_SAVE )
+CONS( 1994, supergb, gameboy, 0, supergb, gameboy, driver_device, 0, "Nintendo", "Super Game Boy", MACHINE_SUPPORTS_SAVE )
+CONS( 1998, supergb2, gameboy, 0, supergb2, gameboy, driver_device, 0, "Nintendo", "Super Game Boy 2", MACHINE_SUPPORTS_SAVE )
+CONS( 1996, gbpocket, gameboy, 0, gbpocket, gameboy, driver_device, 0, "Nintendo", "Game Boy Pocket", MACHINE_SUPPORTS_SAVE )
+CONS( 1998, gbcolor, 0, 0, gbcolor, gameboy, driver_device, 0, "Nintendo", "Game Boy Color", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
// Sound is not 100% yet, it generates some sounds which could be ok. Since we're lacking a real system there's no way to verify.
-CONS( 1993, megaduck, 0, 0, megaduck, gameboy, driver_device, 0, "Welback Holdings (Timlex International) / Creatronic / Videojet / Cougar USA", "Mega Duck / Cougar Boy", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+CONS( 1993, megaduck, 0, 0, megaduck, gameboy, driver_device, 0, "Welback Holdings (Timlex International) / Creatronic / Videojet / Cougar USA", "Mega Duck / Cougar Boy", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/gba.c b/src/mame/drivers/gba.c
index 031b9f05e22..b1e13241b04 100644
--- a/src/mess/drivers/gba.c
+++ b/src/mame/drivers/gba.c
@@ -6,7 +6,7 @@
Driver file to handle emulation of the Nintendo Game Boy Advance.
- By R. Belmont & Harmony
+ By R. Belmont & Ryan Holtz
***************************************************************************/
@@ -34,7 +34,7 @@ INLINE void ATTR_PRINTF(3,4) verboselog(running_machine &machine, int n_level, c
}
}
-#define GBA_ATTOTIME_NORMALIZE(a) do { while ((a).attoseconds >= ATTOSECONDS_PER_SECOND) { (a).seconds++; (a).attoseconds -= ATTOSECONDS_PER_SECOND; } } while (0)
+#define GBA_ATTOTIME_NORMALIZE(a) a.normalize()
static const UINT32 timer_clks[4] = { 16777216, 16777216/64, 16777216/256, 16777216/1024 };
@@ -2315,4 +2315,4 @@ DRIVER_INIT_MEMBER(gba_state,gbadv)
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-CONS(2001, gba, 0, 0, gbadv, gbadv, gba_state, gbadv, "Nintendo", "Game Boy Advance", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND)
+CONS(2001, gba, 0, 0, gbadv, gbadv, gba_state, gbadv, "Nintendo", "Game Boy Advance", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/drivers/gberet.c b/src/mame/drivers/gberet.c
index 541bee6a151..219bd0c7906 100644
--- a/src/mame/drivers/gberet.c
+++ b/src/mame/drivers/gberet.c
@@ -582,7 +582,7 @@ DRIVER_INIT_MEMBER(gberet_state,mrgoemon)
*
*************************************/
-GAME( 1985, gberet, 0, gberet, gberet, driver_device, 0, ROT0, "Konami", "Green Beret", GAME_SUPPORTS_SAVE )
-GAME( 1985, rushatck, gberet, gberet, gberet, driver_device, 0, ROT0, "Konami", "Rush'n Attack (US)", GAME_SUPPORTS_SAVE )
-GAME( 1985, gberetb, gberet, gberetb, gberetb, driver_device, 0, ROT0, "bootleg", "Green Beret (bootleg)", GAME_SUPPORTS_SAVE )
-GAME( 1986, mrgoemon, 0, mrgoemon, mrgoemon, gberet_state, mrgoemon, ROT0, "Konami", "Mr. Goemon (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1985, gberet, 0, gberet, gberet, driver_device, 0, ROT0, "Konami", "Green Beret", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, rushatck, gberet, gberet, gberet, driver_device, 0, ROT0, "Konami", "Rush'n Attack (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, gberetb, gberet, gberetb, gberetb, driver_device, 0, ROT0, "bootleg", "Green Beret (bootleg)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, mrgoemon, 0, mrgoemon, mrgoemon, gberet_state, mrgoemon, ROT0, "Konami", "Mr. Goemon (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gcpinbal.c b/src/mame/drivers/gcpinbal.c
index 086f409a1c8..c7a3a40650c 100644
--- a/src/mame/drivers/gcpinbal.c
+++ b/src/mame/drivers/gcpinbal.c
@@ -526,4 +526,4 @@ ROM_END
-GAME( 1994, gcpinbal, 0, gcpinbal, gcpinbal, driver_device, 0, ROT270, "Excellent System", "Grand Cross", GAME_IMPERFECT_SOUND | GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1994, gcpinbal, 0, gcpinbal, gcpinbal, driver_device, 0, ROT270, "Excellent System", "Grand Cross", MACHINE_IMPERFECT_SOUND | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gei.c b/src/mame/drivers/gei.c
index 25c3137d872..60d60384c01 100644
--- a/src/mame/drivers/gei.c
+++ b/src/mame/drivers/gei.c
@@ -143,8 +143,6 @@ public:
DECLARE_READ8_MEMBER(portC_r);
DECLARE_DRIVER_INIT(geimulti);
DECLARE_DRIVER_INIT(setbank);
- DECLARE_PALETTE_INIT(gei);
- DECLARE_PALETTE_INIT(quizvid);
INTERRUPT_GEN_MEMBER(vblank_irq);
};
@@ -177,26 +175,6 @@ WRITE8_MEMBER(gei_state::gei_bitmap_w)
m_bitmap.pix16(sy, sx+i) = m_color[8-i-1];
}
-PALETTE_INIT_MEMBER(gei_state, gei)
-{
- int i;
-
- for (i = 0; i < 8; i++ )
- {
- palette.set_pen_color(i, rgb_t(pal1bit(i >> 2), pal1bit(i), pal1bit(i >> 1)));
- }
-}
-
-PALETTE_INIT_MEMBER(gei_state,quizvid)
-{
- int i;
-
- for (i = 0; i < 8; i++ )
- {
- palette.set_pen_color(i, rgb_t(pal1bit(i >> 1), pal1bit(i), pal1bit(i >> 2)));
- }
-}
-
void gei_state::video_start()
{
m_screen->register_screen_bitmap(m_bitmap);
@@ -752,15 +730,14 @@ static INPUT_PORTS_START( getrivia )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 )
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CODE(KEYCODE_Z)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CODE(KEYCODE_X)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_CODE(KEYCODE_C)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_CODE(KEYCODE_V)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_CODE(KEYCODE_B)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
INPUT_PORTS_END
static INPUT_PORTS_START( sextriv1 )
@@ -920,57 +897,8 @@ static INPUT_PORTS_START( gt103 )
PORT_INCLUDE(trivia_standard)
INPUT_PORTS_END
-static INPUT_PORTS_START( gt103a )
- PORT_START("DSWA")
- PORT_DIPNAME( 0x03, 0x01, "Questions" ) PORT_DIPLOCATION("SW1:1,22")
- PORT_DIPSETTING( 0x00, "4" )
- PORT_DIPSETTING( 0x01, "5" )
-// PORT_DIPSETTING( 0x02, "5" )
- PORT_DIPSETTING( 0x03, "6" )
- PORT_DIPNAME( 0x04, 0x00, "Show Answer" ) PORT_DIPLOCATION("SW1:3")
- PORT_DIPSETTING( 0x04, DEF_STR( No ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x08, 0x00, "Max Coins" ) PORT_DIPLOCATION("SW1:4")
- PORT_DIPSETTING( 0x08, "30" )
- PORT_DIPSETTING( 0x00, "10" )
- PORT_DIPNAME( 0x10, 0x00, "Timeout" ) PORT_DIPLOCATION("SW1:5")
- PORT_DIPSETTING( 0x10, DEF_STR( No ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x20, 0x00, "Tickets" ) PORT_DIPLOCATION("SW1:6")
- PORT_DIPSETTING( 0x20, DEF_STR( No ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x40, 0x40, "No Coins" ) PORT_DIPLOCATION("SW1:7")
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
- PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) PORT_CONDITION("DSWA", 0x40, EQUALS, 0x40)
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_IMPULSE(2) PORT_CONDITION("DSWA", 0x40, EQUALS, 0x00) PORT_NAME ("Start in no coins mode")
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) PORT_CONDITION("DSWA", 0x40, EQUALS, 0x40)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_CONDITION("DSWA", 0x40, EQUALS, 0x00)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, line_r) /* ticket status */
- PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("IN1") /* IN1 */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON4 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON5 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-INPUT_PORTS_END
-
static INPUT_PORTS_START( quiz )
- PORT_INCLUDE( gt103a )
+ PORT_INCLUDE( getrivia )
PORT_MODIFY("DSWA")
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) /* no tickets */
@@ -1052,19 +980,9 @@ static INPUT_PORTS_START(geimulti)
INPUT_PORTS_END
static INPUT_PORTS_START(sprtauth)
- PORT_INCLUDE(getrivia)
-
- PORT_MODIFY("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2)
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("ticket", ticket_dispenser_device, line_r) /* ticket status */
- PORT_SERVICE( 0x08, IP_ACTIVE_LOW )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_INCLUDE(trivia_standard)
- PORT_MODIFY("DSWA")
+ PORT_START("DSWA")
PORT_DIPNAME( 0x0f, 0x0f, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:1,2,3,4")
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
PORT_DIPSETTING( 0x07, DEF_STR( 7C_1C ) )
@@ -1094,7 +1012,6 @@ static INPUT_PORTS_START(sprtauth)
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
-
INPUT_PORTS_END
@@ -1119,8 +1036,7 @@ static MACHINE_CONFIG_START( getrivia, gei_state )
MCFG_SCREEN_VISIBLE_AREA(48, 511-48, 16, 255-16)
MCFG_SCREEN_PALETTE("palette")
- MCFG_PALETTE_ADD("palette", 8)
- MCFG_PALETTE_INIT_OWNER(gei_state, gei)
+ MCFG_PALETTE_ADD_3BIT_GBR("palette")
MCFG_NVRAM_ADD_0FILL("nvram")
@@ -1160,8 +1076,8 @@ static MACHINE_CONFIG_DERIVED( quizvid, findout )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(quizvid_map)
- MCFG_PALETTE_MODIFY("palette")
- MCFG_PALETTE_INIT_OWNER(gei_state,quizvid)
+ MCFG_DEVICE_REMOVE("palette")
+ MCFG_PALETTE_ADD_3BIT_GRB("palette")
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( gselect, getrivia )
@@ -1671,15 +1587,24 @@ ROM_START( gt507uk )
ROM_LOAD( "pop_music", 0x30000, 0x8000, CRC(884fec7c) SHA1(b389216c17f516df4e15eee46246719dd4acb587) )
ROM_END
-ROM_START( gtsers8 )
+ROM_START( gtsers8 ) /* TRIV-3 PCB, stickered 256 TRIV #8 4/85 */
ROM_REGION( 0x38000, "maincpu", 0 )
ROM_LOAD( "prog1_versionc", 0x00000, 0x4000, CRC(340246a4) SHA1(d655e1cf2b1e87a05e87ff6af4b794e6d54a2a52) )
ROM_LOAD( "science", 0x10000, 0x8000, CRC(2f940ebd) SHA1(bead4988ac0a97d70f2a3c0b40a05968436de2ed) )
ROM_LOAD( "general", 0x18000, 0x8000, CRC(1efa01c3) SHA1(801ef5ab55184e488b08ef99ebd641ea4f7edb24) )
ROM_LOAD( "sports", 0x20000, 0x8000, CRC(6bd1ba9a) SHA1(7caac1bd438a9b1d11fb33e11814b5d76951211a) )
- ROM_LOAD( "soccer", 0x28000, 0x8000, CRC(f821f860) SHA1(b0437ef5d31c507c6499c1fb732d2ba3b9beb151) )
- ROM_LOAD( "potpourri", 0x30000, 0x8000, CRC(f2968a28) SHA1(87c08c59dfee71e7bf071f09c3017c750a1c5694) )
- /* Missing Alternate question set: "Adult Sex" */
+ ROM_LOAD( "entertainment+", 0x28000, 0x8000, CRC(07068c9f) SHA1(1aedc78d071281ec8b08488cd82655d41a77cf6b) ) /* Labeled as ENTR 2* */
+ ROM_LOAD( "adult_sex", 0x30000, 0x8000, CRC(bc8ea9c3) SHA1(6aa4c5468508a50843d3f40b320fc06149fdd292) )
+ROM_END
+
+ROM_START( gtsers8a ) /* TRIV-3 PCB, stickered 256 TRIV #8 4/85 */
+ ROM_REGION( 0x38000, "maincpu", 0 )
+ ROM_LOAD( "prog1_versionc", 0x00000, 0x4000, CRC(340246a4) SHA1(d655e1cf2b1e87a05e87ff6af4b794e6d54a2a52) )
+ ROM_LOAD( "science", 0x10000, 0x8000, CRC(2f940ebd) SHA1(bead4988ac0a97d70f2a3c0b40a05968436de2ed) )
+ ROM_LOAD( "general", 0x18000, 0x8000, CRC(1efa01c3) SHA1(801ef5ab55184e488b08ef99ebd641ea4f7edb24) )
+ ROM_LOAD( "sports", 0x20000, 0x8000, CRC(6bd1ba9a) SHA1(7caac1bd438a9b1d11fb33e11814b5d76951211a) )
+ ROM_LOAD( "entertainment+", 0x28000, 0x8000, CRC(07068c9f) SHA1(1aedc78d071281ec8b08488cd82655d41a77cf6b) ) /* Labeled as ENTR 2* */
+ ROM_LOAD( "potpourri", 0x30000, 0x8000, CRC(f2968a28) SHA1(87c08c59dfee71e7bf071f09c3017c750a1c5694) ) /* Listed as an alternate question set */
ROM_END
ROM_START( gtsers9 ) /* TRIV-3 PCB, stickered 256 TRIV #9 7/85 */
@@ -1700,17 +1625,8 @@ ROM_START( gtsers10 ) /* TRIV-3 PCB, stickered 256 TRIV #10 8/85 */
ROM_LOAD( "new_tv_mash", 0x18000, 0x8000, CRC(f73240c6) SHA1(78020644074da719414133a86a91c1328e5d8929) )
ROM_LOAD( "new_entrtnmnt", 0x20000, 0x8000, CRC(0f54340c) SHA1(1ca4c23b542339791a2d8f4a9a857f755feca8a1) )
ROM_LOAD( "new_sports", 0x28000, 0x8000, CRC(19eff1a3) SHA1(8e024ae6cc572176c90d819a438ace7b2512dbf2) )
- ROM_LOAD( "new_science", 0x30000, 0x8000, CRC(2c46e355) SHA1(387ab389abaaea8e870b00039dd884237f7dd9c6) )
-ROM_END
-
-ROM_START( gtsers10a ) /* TRIV-3 PCB, stickered 256 TRIV #10 8/85 */
- ROM_REGION( 0x38000, "maincpu", 0 )
- ROM_LOAD( "prog1_versionc", 0x00000, 0x4000, CRC(340246a4) SHA1(d655e1cf2b1e87a05e87ff6af4b794e6d54a2a52) ) /* Also found with program v5.03 (not dumped) */
- ROM_LOAD( "new_general", 0x10000, 0x8000, CRC(ba1f5b92) SHA1(7e94be0ef6904331d3a6b266e5887e9a15c5e7f9) )
- ROM_LOAD( "new_tv_mash", 0x18000, 0x8000, CRC(f73240c6) SHA1(78020644074da719414133a86a91c1328e5d8929) )
- ROM_LOAD( "new_entrtnmnt", 0x20000, 0x8000, CRC(0f54340c) SHA1(1ca4c23b542339791a2d8f4a9a857f755feca8a1) )
- ROM_LOAD( "new_sports", 0x28000, 0x8000, CRC(19eff1a3) SHA1(8e024ae6cc572176c90d819a438ace7b2512dbf2) )
ROM_LOAD( "adult_sex_3", 0x30000, 0x8000, CRC(2c46e355) SHA1(387ab389abaaea8e870b00039dd884237f7dd9c6) ) /* Listed as an alternate question set */
+ /* Missing "new_science" */
ROM_END
ROM_START( gtsers11 ) /* TRIV-3 PCB, stickered 256 TRIV #11 8/85 */
@@ -1735,7 +1651,7 @@ ROM_END
ROM_START( gtsers12 )
ROM_REGION( 0x38000, "maincpu", 0 )
- ROM_LOAD( "prog1_versionc", 0x00000, 0x4000, CRC(340246a4) SHA1(d655e1cf2b1e87a05e87ff6af4b794e6d54a2a52) )
+ ROM_LOAD( "program_v5.03", 0x00000, 0x4000, CRC(888b7d9b) SHA1(e5ed4f22bff99c26cd6ef9a06cb386221e84bbf5) )
ROM_LOAD( "new_science_2+", 0x10000, 0x8000, CRC(3bd80fb8) SHA1(9a196595bc5dc6ed5ee5853786839ed4847fa436) ) /* Labeled as NEW SCNE 2* */
ROM_LOAD( "adult_sex_4+", 0x18000, 0x8000, CRC(9c32730e) SHA1(9d060e49a4c1dd8d978619b1c357c9e8238e5c96) ) /* Labeled as ADULT SEX 4* */
ROM_LOAD( "cops_&_robbers", 0x20000, 0x8000, CRC(8b367c33) SHA1(013468157bf469c9cf138809fdc45b3ba60a423b) )
@@ -1771,28 +1687,28 @@ ROM_START( gt103a1 ) /* Need to verify which series these belong to */
ROM_LOAD( "history-geog", 0x10000, 0x8000, CRC(c9a70fc3) SHA1(4021e5d702844416e8c798ed0a57c9ecd20b1d4b) )
ROM_LOAD( "n.f.l._football", 0x18000, 0x8000, CRC(d676b7cd) SHA1(d652d2441adb500f7af526d110d0335ea453d75b) )
ROM_LOAD( "rock_music", 0x20000, 0x8000, CRC(7f11733a) SHA1(d4d0dee75518edf986cb1241ade45ccb4840f088) )
- ROM_LOAD( "entertainment", 0x28000, 0x8000, CRC(07068c9f) SHA1(1aedc78d071281ec8b08488cd82655d41a77cf6b) )
+ ROM_LOAD( "soccer", 0x28000, 0x8000, CRC(f821f860) SHA1(b0437ef5d31c507c6499c1fb732d2ba3b9beb151) )
ROM_LOAD( "horrors", 0x30000, 0x8000, CRC(5f7b262a) SHA1(047480d6bf5c6d0603d538b84c996bd226f07f77) )
ROM_END
ROM_START( gt103aa )
ROM_REGION( 0x38000, "maincpu", 0 )
ROM_LOAD( "t_3a-8_1.bin", 0x00000, 0x4000, CRC(02aef306) SHA1(1ffc10c79a55d41ea36bcaab13cb3f02cb3f9712) ) /* "Park" alternate version sets here */
- ROM_LOAD( "entertainment_alt", 0x10000, 0x8000, CRC(9a6628b9) SHA1(c0cb7e974329d4d5b91f107296d21a674e35a51b) )
+ ROM_LOAD( "entertainment_alt", 0x10000, 0x8000, CRC(9a6628b9) SHA1(c0cb7e974329d4d5b91f107296d21a674e35a51b) ) /* From series 8 */
ROM_LOAD( "general_alt", 0x18000, 0x8000, CRC(df34f7f9) SHA1(329d123eea711d5135dc02dd7b89b220ce8ddd28) )
- ROM_LOAD( "science_alt", 0x20000, 0x8000, CRC(9eaebd18) SHA1(3a4d787cb006dbb23ce346577cb1bb5e543ba52c) )
- ROM_LOAD( "science_alt2", 0x28000, 0x8000, CRC(ac93d348) SHA1(55550ba6b5daffdf9653854075ad4f8398a5e621) )
+ ROM_LOAD( "science_alt", 0x20000, 0x8000, CRC(9eaebd18) SHA1(3a4d787cb006dbb23ce346577cb1bb5e543ba52c) ) /* From series 8 */
+ ROM_LOAD( "science_alt2", 0x28000, 0x8000, CRC(ac93d348) SHA1(55550ba6b5daffdf9653854075ad4f8398a5e621) ) /* From series 8 */
ROM_LOAD( "sports_alt2", 0x30000, 0x8000, CRC(40207845) SHA1(2dddb9685dcefabfde07057a639aa9d08da2329e) )
ROM_END
ROM_START( gt103ab )
ROM_REGION( 0x38000, "maincpu", 0 )
- ROM_LOAD( "t_3a-8_1.rom", 0x00000, 0x4000, CRC(02aef306) SHA1(1ffc10c79a55d41ea36bcaab13cb3f02cb3f9712) ) /* "Park" alternate version sets here */
- ROM_LOAD( "new_science_2_alt", 0x10000, 0x8000, CRC(3bd80fb8) SHA1(9a196595bc5dc6ed5ee5853786839ed4847fa436) )
+ ROM_LOAD( "t_3a-8_1.bin", 0x00000, 0x4000, CRC(02aef306) SHA1(1ffc10c79a55d41ea36bcaab13cb3f02cb3f9712) ) /* "Park" alternate version sets here */
+ ROM_LOAD( "new_science_2_alt", 0x10000, 0x8000, CRC(95836bfb) SHA1(deb546bcd9109efd2b1f405354916e439cd0749b) )
ROM_LOAD( "adult_sex_2_alt", 0x18000, 0x8000, CRC(8c0eacc8) SHA1(ddaa25548d161394b41c65a2db57a9fcf793062b) )
ROM_LOAD( "adult_sex_3_alt", 0x20000, 0x8000, CRC(63cbd1d6) SHA1(8dcd5546dc8688d6b8404d5cf63d8a59acc9bf4c) )
- ROM_LOAD( "adult_sex_4_alt", 0x28000, 0x8000, CRC(36a75071) SHA1(f08d31f241e1dc9b94b940cd2872a692f6f8475b) )
- ROM_LOAD( "rock-n-roll_alt", 0x30000, 0x8000, CRC(8eb83052) SHA1(93e3c1ae6c2048fb44ecafe1013b6a96da38fa84) )
+ ROM_LOAD( "rock-n-roll_alt", 0x28000, 0x8000, CRC(8eb83052) SHA1(93e3c1ae6c2048fb44ecafe1013b6a96da38fa84) )
+ ROM_LOAD( "cops_&_robbers_alt",0x30000, 0x8000, CRC(5176751a) SHA1(fbf0aeceeedb8a93c12920fecf6268893b393541) )
ROM_END
ROM_START( gt103asx ) /* Not sure there was ever an all Adult Trivia version. These are just the collection from all the series combined here */
@@ -1957,65 +1873,65 @@ DRIVER_INIT_MEMBER(gei_state,geimulti)
membank("bank1")->set_base(memregion("bank")->base() + 0x0000);
}
-GAME( 1982, jokpoker, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03B)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1983, jokpokera,jokpoker, jokpokera,gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1983, jokpokerb,jokpoker, jokpokera,gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1983, jokpokerc,jokpoker, jokpokera,gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1982, superbwl, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Super Bowl (Version 16.03B)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1982, gs4002, 0, gselect, gselect, driver_device, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1982, gs4002a, gs4002, gselect, gselect, driver_device, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1982, amuse, 0, amuse, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1982, amuse1, amuse, amuse1, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1983, amuse1a, amuse, amuse1, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08A)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1984, gepoker, 0, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gepoker1, gepoker, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gepoker2, gepoker, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 3)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1984, gtsers1, 0, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers2, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers3, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 3)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers4, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 4)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers5, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 5)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers7, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 7)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsersa, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsersb, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers8, 0, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers9, gtsers8, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 9)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers10, gtsers8, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 10)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers10a,gtsers8, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 10 Alt Question Rom)",GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers11, gtsers8, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers11a,gtsers8, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11 Alt Question Rom)",GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gtsers12, gtsers8, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 12)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1986, gtsers14, gtsers8, findout, gt103, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 14)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1986, gtsers15, gtsers8, findout, gt103, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 15)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gt103a1, gtsers8, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Unsorted question roms)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gt103aa, gtsers8, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gt103ab, gtsers8, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1984, gt103asx, gtsers8, findout, gt103a, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Sex questions)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1985, sextriv1, 0, getrivia, sextriv1, driver_device, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1985, sextriv2, sextriv1, getrivia, sextriv1, driver_device, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1986, gt507uk, 0, findout, gt507uk, driver_device, 0, ROT0, "Grayhound Electronics", "Trivia (UK Version 5.07)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1986, quiz, 0, findout, quiz, driver_device, 0, ROT0, "Elettronolo", "Quiz (Revision 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1986, quizvid, 0, quizvid, quiz, driver_device, 0, ROT0, "bootleg", "Video Quiz", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1986, reelfun, 0, findout, reelfun, driver_device, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.03)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1986, reelfun1, reelfun, findout, reelfun, driver_device, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.01)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1987, findout, 0, findout, findout, driver_device, 0, ROT0, "Elettronolo", "Find Out (Version 4.04)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1986, suprpokr, 0, suprpokr, suprpokr, driver_device, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.19S)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1986, suprpokra,suprpokr, suprpokr, suprpokr, driver_device, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.15S)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1986, suprpokrb,suprpokr, suprpokr, suprpokr, driver_device, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.10)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1991, quiz211, 0, findout, quiz, driver_device, 0, ROT0, "Elettronolo", "Quiz (Revision 2.11)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1992, sexappl, 0, findout, sexappl, driver_device, 0, ROT0, "Grayhound Electronics", "Sex Appeal (Version 6.02)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-
-GAME( 1992, geimulti, 0, geimulti, geimulti, gei_state, geimulti, ROT0, "Grayhound Electronics", "GEI Multi Game", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1992, sprtauth, 0, sprtauth, sprtauth, gei_state, geimulti, ROT0, "Classic Games", "Sports Authority", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
+GAME( 1982, jokpoker, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1983, jokpokera,jokpoker, jokpokera,gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1983, jokpokerb,jokpoker, jokpokera,gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1983, jokpokerc,jokpoker, jokpokera,gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1982, superbwl, 0, gselect, gselect, gei_state, setbank, ROT0, "Greyhound Electronics", "Super Bowl (Version 16.03B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1982, gs4002, 0, gselect, gselect, driver_device, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1982, gs4002a, gs4002, gselect, gselect, driver_device, 0, ROT0, "Greyhound Electronics", "Selection (Version 40.02TMB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1982, amuse, 0, amuse, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 50.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1982, amuse1, amuse, amuse1, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08 IBA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1983, amuse1a, amuse, amuse1, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Amuse (Version 30.08A)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1984, gepoker, 0, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gepoker1, gepoker, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gepoker2, gepoker, gepoker, gepoker, driver_device, 0, ROT0, "Greyhound Electronics", "Poker (Version 50.02 ICB, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1984, gtsers1, 0, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers2, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers3, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers4, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 4)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers5, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 5)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers7, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 7)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsersa, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsersb, gtsers1, getrivia, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Alt revision questions set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers8, 0, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers8a, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 8 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers9, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 9)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers10, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers11, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers11a,gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 11 Alt Question Rom)",MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gtsers12, gtsers8, findout, gt103, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 12)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1986, gtsers14, gtsers8, findout, gt103, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 14)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1986, gtsers15, gtsers8, findout, gt103, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Questions Series 15)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gt103a1, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Unsorted question roms)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gt103aa, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gt103ab, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Alt questions 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1984, gt103asx, gtsers8, findout, getrivia, driver_device, 0, ROT0, "Greyhound Electronics", "Trivia (Version 1.03a Sex questions)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1985, sextriv1, 0, getrivia, sextriv1, driver_device, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1985, sextriv2, sextriv1, getrivia, sextriv1, driver_device, 0, ROT0, "Kinky Kit and Game Co.", "Sexual Trivia (Version 1.02SB, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1986, gt507uk, 0, findout, gt507uk, driver_device, 0, ROT0, "Grayhound Electronics", "Trivia (UK Version 5.07)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1986, quiz, 0, findout, quiz, driver_device, 0, ROT0, "Elettronolo", "Quiz (Revision 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1986, quizvid, 0, quizvid, quiz, driver_device, 0, ROT0, "bootleg", "Video Quiz", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1986, reelfun, 0, findout, reelfun, driver_device, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1986, reelfun1, reelfun, findout, reelfun, driver_device, 0, ROT0, "Grayhound Electronics", "Reel Fun (Version 7.01)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1987, findout, 0, findout, findout, driver_device, 0, ROT0, "Elettronolo", "Find Out (Version 4.04)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1986, suprpokr, 0, suprpokr, suprpokr, driver_device, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.19S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1986, suprpokra,suprpokr, suprpokr, suprpokr, driver_device, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.15S)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1986, suprpokrb,suprpokr, suprpokr, suprpokr, driver_device, 0, ROT0, "Grayhound Electronics", "Super Poker (Version 10.10)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1991, quiz211, 0, findout, quiz, driver_device, 0, ROT0, "Elettronolo", "Quiz (Revision 2.11)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1992, sexappl, 0, findout, sexappl, driver_device, 0, ROT0, "Grayhound Electronics", "Sex Appeal (Version 6.02)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+
+GAME( 1992, geimulti, 0, geimulti, geimulti, gei_state, geimulti, ROT0, "Grayhound Electronics", "GEI Multi Game", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1992, sprtauth, 0, sprtauth, sprtauth, gei_state, geimulti, ROT0, "Classic Games", "Sports Authority", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mess/drivers/geneve.c b/src/mame/drivers/geneve.c
index cf738540f11..c366b70b2e7 100644
--- a/src/mess/drivers/geneve.c
+++ b/src/mame/drivers/geneve.c
@@ -209,14 +209,15 @@
#include "machine/mm58274c.h"
#include "sound/sn76496.h"
-#include "machine/ti99/genboard.h"
-#include "bus/ti99_peb/peribox.h"
-#include "machine/ti99/videowrp.h"
+#include "bus/ti99x/genboard.h"
+#include "bus/ti99x/videowrp.h"
+#include "bus/ti99x/joyport.h"
-#include "machine/ti99/joyport.h"
+#include "bus/ti99_peb/peribox.h"
-#define VERBOSE 1
-#define LOG logerror
+#define TRACE_READY 0
+#define TRACE_LINES 0
+#define TRACE_CRU 0
#define SRAM_SIZE 384*1024 // maximum SRAM expansion on-board
#define DRAM_SIZE 512*1024
@@ -317,9 +318,11 @@ static INPUT_PORTS_START(geneve)
PORT_CONFSETTING( GENMOD, "GenMod" )
PORT_START( "BOOTROM" )
- PORT_CONFNAME( 0x01, GENEVE_098, "Boot ROM" ) PORT_CONDITION( "MODE", 0x01, EQUALS, 0x00 )
+ PORT_CONFNAME( 0x03, GENEVE_098, "Boot ROM" ) PORT_CHANGED_MEMBER(GMAPPER_TAG, geneve_mapper_device, settings_changed, 3)
PORT_CONFSETTING( GENEVE_098, "Version 0.98" )
PORT_CONFSETTING( GENEVE_100, "Version 1.00" )
+ PORT_CONFSETTING( GENEVE_PFM512, "PFM 512" )
+ PORT_CONFSETTING( GENEVE_PFM512A, "PFM 512A" )
PORT_START( "SRAM" )
PORT_CONFNAME( 0x03, 0x01, "Onboard SRAM" ) PORT_CONDITION( "MODE", 0x01, EQUALS, 0x00 )
@@ -328,10 +331,10 @@ static INPUT_PORTS_START(geneve)
PORT_CONFSETTING( 0x02, "384 KiB" )
PORT_START( "GENMODDIPS" )
- PORT_DIPNAME( GM_TURBO, 0x00, "Genmod Turbo mode") PORT_CONDITION( "MODE", 0x01, EQUALS, GENMOD ) PORT_CHANGED_MEMBER(GMAPPER_TAG, geneve_mapper_device, gm_changed, 1)
+ PORT_DIPNAME( GM_TURBO, 0x00, "Genmod Turbo mode") PORT_CONDITION( "MODE", 0x01, EQUALS, GENMOD ) PORT_CHANGED_MEMBER(GMAPPER_TAG, geneve_mapper_device, settings_changed, 1)
PORT_CONFSETTING( 0x00, DEF_STR( Off ))
PORT_CONFSETTING( GM_TURBO, DEF_STR( On ))
- PORT_DIPNAME( GM_TIM, GM_TIM, "Genmod TI mode") PORT_CONDITION( "MODE", 0x01, EQUALS, GENMOD ) PORT_CHANGED_MEMBER(GMAPPER_TAG, geneve_mapper_device, gm_changed, 2)
+ PORT_DIPNAME( GM_TIM, GM_TIM, "Genmod TI mode") PORT_CONDITION( "MODE", 0x01, EQUALS, GENMOD ) PORT_CHANGED_MEMBER(GMAPPER_TAG, geneve_mapper_device, settings_changed, 2)
PORT_CONFSETTING( 0x00, DEF_STR( Off ))
PORT_CONFSETTING( GM_TIM, DEF_STR( On ))
@@ -353,7 +356,7 @@ WRITE8_MEMBER ( geneve_state::cruwrite )
if ((addroff & 0xffc0) == CRU_SSTEP_BASE)
{
int bit = (addroff & 0x003e)>>1;
- if (VERBOSE>0) LOG("geneve: Single step not implemented; bit %d set to %d\n", bit, data);
+ logerror("geneve: Single step not implemented; bit %d set to %d\n", bit, data);
return;
}
@@ -364,47 +367,47 @@ WRITE8_MEMBER ( geneve_state::cruwrite )
{
case 5:
// No one really cares...
- if (VERBOSE>8) LOG("geneve: Set PAL flag = %02x\n", data);
+ if (TRACE_CRU) logerror("geneve: Set PAL flag = %02x\n", data);
// m_palvideo = (data!=0);
break;
case 7:
// m_capslock = (data!=0);
- if (VERBOSE>8) LOG("geneve: Set capslock flag = %02x\n", data);
+ if (TRACE_CRU) logerror("geneve: Set capslock flag = %02x\n", data);
break;
case 8:
- if (VERBOSE>8) LOG("geneve: Set keyboard clock flag = %02x\n", data);
+ if (TRACE_CRU) logerror("geneve: Set keyboard clock flag = %02x\n", data);
m_keyboard->clock_control((data!=0)? ASSERT_LINE : CLEAR_LINE);
break;
case 9:
- if (VERBOSE>8) LOG("geneve: Set keyboard scan flag = %02x\n", data);
+ if (TRACE_CRU) logerror("geneve: Set keyboard scan flag = %02x\n", data);
m_keyboard->send_scancodes((data!=0)? ASSERT_LINE : CLEAR_LINE);
break;
case 10:
- if (VERBOSE>8) LOG("geneve: Geneve mode = %02x\n", data);
+ if (TRACE_CRU) logerror("geneve: Geneve mode = %02x\n", data);
m_mapper->set_geneve_mode(data!=0);
break;
case 11:
- if (VERBOSE>8) LOG("geneve: Direct mode = %02x\n", data);
+ if (TRACE_CRU) logerror("geneve: Direct mode = %02x\n", data);
m_mapper->set_direct_mode(data!=0);
break;
case 12:
- if (VERBOSE>8) LOG("geneve: Cartridge size 8K = %02x\n", data);
+ if (TRACE_CRU) logerror("geneve: Cartridge size 8K = %02x\n", data);
m_mapper->set_cartridge_size((data!=0)? 0x2000 : 0x4000);
break;
case 13:
- if (VERBOSE>8) LOG("geneve: Cartridge writable 6000 = %02x\n", data);
+ if (TRACE_CRU) logerror("geneve: Cartridge writable 6000 = %02x\n", data);
m_mapper->set_cartridge_writable(0x6000, (data!=0));
break;
case 14:
- if (VERBOSE>8) LOG("geneve: Cartridge writable 7000 = %02x\n", data);
+ if (TRACE_CRU) logerror("geneve: Cartridge writable 7000 = %02x\n", data);
m_mapper->set_cartridge_writable(0x7000, (data!=0));
break;
case 15:
- if (VERBOSE>8) LOG("geneve: Extra wait states = %02x\n", data==0);
+ if (TRACE_CRU) logerror("geneve: Extra wait states = %02x\n", data==0);
m_mapper->set_extra_waitstates(data==0); // let's use the inverse semantics
break;
default:
- if (VERBOSE>0) LOG("geneve: set CRU address %04x=%02x ignored\n", addroff, data);
+ logerror("geneve: set CRU address %04x=%02x ignored\n", addroff, data);
break;
}
}
@@ -424,7 +427,7 @@ READ8_MEMBER( geneve_state::cruread )
if ((addroff & 0xffc0) == CRU_SSTEP_BASE)
{
int bit = (addroff & 0x003e)>>1;
- if (VERBOSE>0) LOG("geneve: Single step not implemented; attempting to read bit %d\n", bit);
+ logerror("geneve: Single step not implemented; attempting to read bit %d\n", bit);
return value;
}
@@ -476,7 +479,7 @@ READ8_MEMBER( geneve_state::read_by_9901 )
if (m_intb==CLEAR_LINE) answer |= 0x10;
if (m_video_wait==ASSERT_LINE) answer |= 0x20;
// TODO: PAL pin 5
- if (VERBOSE>8) LOG("geneve: INT15-8 = %02x\n", answer);
+ if (TRACE_LINES) logerror("geneve: INT15-8 = %02x\n", answer);
break;
case TMS9901_P0_P7:
@@ -504,7 +507,7 @@ READ8_MEMBER( geneve_state::read_by_9901 )
*/
WRITE_LINE_MEMBER( geneve_state::peripheral_bus_reset )
{
- if (VERBOSE>0) LOG("geneve: peripheral bus reset request; not implemented yet.\n");
+ logerror("geneve: Peripheral bus reset request; not implemented yet.\n");
}
/*
@@ -512,7 +515,7 @@ WRITE_LINE_MEMBER( geneve_state::peripheral_bus_reset )
*/
WRITE_LINE_MEMBER( geneve_state::VDP_reset )
{
- if (VERBOSE>0) LOG("geneve: Video reset request; not implemented yet.\n");
+ logerror("geneve: Video reset request; not implemented yet.\n");
}
/*
@@ -528,7 +531,7 @@ WRITE_LINE_MEMBER( geneve_state::joystick_select )
*/
WRITE_LINE_MEMBER( geneve_state::extbus_wait_states )
{
- if (VERBOSE>0) LOG("geneve: external bus wait states set to %d, not implemented yet.\n", state);
+ logerror("geneve: External bus wait states set to %d, not implemented yet.\n", state);
}
/*
@@ -537,7 +540,7 @@ WRITE_LINE_MEMBER( geneve_state::extbus_wait_states )
*/
WRITE_LINE_MEMBER( geneve_state::video_wait_states )
{
- if (VERBOSE>1) LOG("geneve: video wait states set to %d\n", state);
+ if (TRACE_LINES) logerror("geneve: Video wait states set to %d\n", state);
m_mapper->set_video_waitstates(state==ASSERT_LINE);
m_video_wait = (state!=0)? ASSERT_LINE : CLEAR_LINE;
}
@@ -554,39 +557,6 @@ WRITE8_MEMBER( geneve_state::tms9901_interrupt )
m_cpu->set_input_line(INT_9995_INT1, data);
}
-/*
-// tms9901 setup
-const tms9901_interface tms9901_wiring_geneve =
-{
- TMS9901_INT1 | TMS9901_INT2 | TMS9901_INT8 | TMS9901_INTB | TMS9901_INTC,
-
- // read handler
- DEVCB_DRIVER_MEMBER(geneve_state, read_by_9901),
-
- { // write handlers
- DEVCB_DRIVER_LINE_MEMBER(geneve_state, peripheral_bus_reset),
- DEVCB_DRIVER_LINE_MEMBER(geneve_state, VDP_reset),
- DEVCB_DRIVER_LINE_MEMBER(geneve_state, joystick_select),
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_DEVICE_LINE_MEMBER(GKEYBOARD_TAG, geneve_keyboard_device, reset_line),
- DEVCB_DRIVER_LINE_MEMBER(geneve_state, extbus_wait_states),
- DEVCB_NULL,
- DEVCB_DRIVER_LINE_MEMBER(geneve_state, video_wait_states),
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL
- },
-
- // interrupt handler
- DEVCB_DRIVER_MEMBER(geneve_state, tms9901_interrupt)
-};
-*/
-
/*******************************************************************
Signal lines
*******************************************************************/
@@ -612,14 +582,14 @@ WRITE_LINE_MEMBER( geneve_state::intb )
WRITE_LINE_MEMBER( geneve_state::ext_ready )
{
- if (VERBOSE>6) LOG("geneve: READY level (ext) = %02x\n", state);
+ if (TRACE_READY) logerror("geneve: READY level (ext) = %02x\n", state);
m_ready_line = state;
m_cpu->set_ready((m_ready_line == ASSERT_LINE && m_ready_line1 == ASSERT_LINE)? ASSERT_LINE : CLEAR_LINE);
}
WRITE_LINE_MEMBER( geneve_state::mapper_ready )
{
- if (VERBOSE>6) LOG("geneve: READY level (mapper) = %02x\n", state);
+ if (TRACE_READY) logerror("geneve: READY level (mapper) = %02x\n", state);
m_ready_line1 = state;
m_cpu->set_ready((m_ready_line == ASSERT_LINE && m_ready_line1 == ASSERT_LINE)? ASSERT_LINE : CLEAR_LINE);
}
@@ -649,8 +619,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(geneve_state::geneve_hblank_interrupt)
{
int scanline = param;
- machine().device<v9938_device>(VDP_TAG)->interrupt();
-
if (scanline == 0) // was 262
{
// TODO
@@ -666,8 +634,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(geneve_state::geneve_hblank_interrupt)
WRITE8_MEMBER( geneve_state::external_operation )
{
static const char* extop[8] = { "inv1", "inv2", "IDLE", "RSET", "inv3", "CKON", "CKOF", "LREX" };
- if (VERBOSE>1)
- if (offset != IDLE_OP) LOG("geneve: External operation %s not implemented on Geneve board\n", extop[offset]);
+ if (offset != IDLE_OP) logerror("geneve: External operation %s not implemented on Geneve board\n", extop[offset]);
}
/*
@@ -738,9 +705,12 @@ static MACHINE_CONFIG_START( geneve_60hz, geneve_state )
MCFG_TMS9901_P0_HANDLER( WRITELINE( geneve_state, peripheral_bus_reset) )
MCFG_TMS9901_P1_HANDLER( WRITELINE( geneve_state, VDP_reset) )
MCFG_TMS9901_P2_HANDLER( WRITELINE( geneve_state, joystick_select) )
+ MCFG_TMS9901_P4_HANDLER( DEVWRITELINE( GMAPPER_TAG, geneve_mapper_device, pfm_select_lsb) ) // new for PFM
+ MCFG_TMS9901_P5_HANDLER( DEVWRITELINE( GMAPPER_TAG, geneve_mapper_device, pfm_output_enable) ) // new for PFM
MCFG_TMS9901_P6_HANDLER( DEVWRITELINE( GKEYBOARD_TAG, geneve_keyboard_device, reset_line) )
MCFG_TMS9901_P7_HANDLER( WRITELINE( geneve_state, extbus_wait_states) )
MCFG_TMS9901_P9_HANDLER( WRITELINE( geneve_state, video_wait_states) )
+ MCFG_TMS9901_P13_HANDLER( DEVWRITELINE( GMAPPER_TAG, geneve_mapper_device, pfm_select_msb) ) // new for PFM
MCFG_TMS9901_INTLEVEL_HANDLER( WRITE8( geneve_state, tms9901_interrupt) )
// Mapper
@@ -768,6 +738,10 @@ static MACHINE_CONFIG_START( geneve_60hz, geneve_state )
MCFG_GENEVE_MOUSE_ADD( GMOUSE_TAG )
MCFG_GENEVE_JOYPORT_ADD( JOYPORT_TAG )
+ // PFM expansion
+ MCFG_AT29C040_ADD( PFM512_TAG )
+ MCFG_AT29C040A_ADD( PFM512A_TAG )
+
MACHINE_CONFIG_END
/*
diff --git a/src/mess/drivers/geniusiq.c b/src/mame/drivers/geniusiq.c
index 24376a72717..1ca2024e693 100644
--- a/src/mess/drivers/geniusiq.c
+++ b/src/mame/drivers/geniusiq.c
@@ -890,11 +890,11 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1997, iq128, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Genius IQ 128 (Germany)", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1997, iq128_fr, iq128, 0, iq128, geniusiq, driver_device, 0, "Video Technology", "Genius IQ 128 (France)", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1998, iqtv512, 0, 0, iqtv512, geniusiq_de, driver_device, 0, "Video Technology", "Genius IQ TV 512 (Germany)", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1999, gl8008cx, 0, 0, gl8008cx, gl8008cx, driver_device, 0, "Video Technology", "Genius Leader 8008 CX (Germany)", GAME_IS_SKELETON)
-COMP( 1999, bs9009cx, 0, 0, gl8008cx, gl8008cx, driver_device, 0, "Video Technology", "BrainStation 9009 CXL (Germany)", GAME_IS_SKELETON)
-COMP( 1998, itunlim, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Vtech IT Unlimited (UK)", GAME_NO_SOUND)
-COMP( 19??, iqunlim, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Vtech IQ Unlimited (Germany)", GAME_IS_SKELETON)
-COMP( 19??, glmmc, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Genius Leader Master Mega Color (Germany)", GAME_IS_SKELETON)
+COMP( 1997, iq128, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Genius IQ 128 (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1997, iq128_fr, iq128, 0, iq128, geniusiq, driver_device, 0, "Video Technology", "Genius IQ 128 (France)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1998, iqtv512, 0, 0, iqtv512, geniusiq_de, driver_device, 0, "Video Technology", "Genius IQ TV 512 (Germany)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1999, gl8008cx, 0, 0, gl8008cx, gl8008cx, driver_device, 0, "Video Technology", "Genius Leader 8008 CX (Germany)", MACHINE_IS_SKELETON)
+COMP( 1999, bs9009cx, 0, 0, gl8008cx, gl8008cx, driver_device, 0, "Video Technology", "BrainStation 9009 CXL (Germany)", MACHINE_IS_SKELETON)
+COMP( 1998, itunlim, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Vtech IT Unlimited (UK)", MACHINE_NO_SOUND)
+COMP( 19??, iqunlim, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Vtech IQ Unlimited (Germany)", MACHINE_IS_SKELETON)
+COMP( 19??, glmmc, 0, 0, iq128, geniusiq_de, driver_device, 0, "Video Technology", "Genius Leader Master Mega Color (Germany)", MACHINE_IS_SKELETON)
diff --git a/src/mess/drivers/genpc.c b/src/mame/drivers/genpc.c
index 75d36bb8c5e..a17a2dd9d29 100644
--- a/src/mess/drivers/genpc.c
+++ b/src/mame/drivers/genpc.c
@@ -277,4 +277,4 @@ COMP( 1987, pc, ibm5150, 0, pccga, pcgen, driver_device
COMP( 1987, pcega, ibm5150, 0, pcega, pcgen, driver_device, 0, "<generic>", "PC (EGA)" , 0)
COMP ( 1987, pcmda, ibm5150, 0, pcmda, pcgen, driver_device, 0, "<generic>", "PC (MDA)" , 0)
COMP ( 1987, pcherc, ibm5150, 0, pcherc, pcgen, driver_device, 0, "<generic>", "PC (Hercules)" , 0)
-COMP ( 1987, xtvga, ibm5150, 0, xtvga, pcgen, driver_device, 0, "<generic>", "PC (VGA)" , GAME_NOT_WORKING)
+COMP ( 1987, xtvga, ibm5150, 0, xtvga, pcgen, driver_device, 0, "<generic>", "PC (VGA)" , MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/ggconnie.c b/src/mame/drivers/ggconnie.c
index 4a640487e8e..0e466d19adb 100644
--- a/src/mame/drivers/ggconnie.c
+++ b/src/mame/drivers/ggconnie.c
@@ -236,4 +236,4 @@ ROM_START(ggconnie)
ROM_LOAD( "adpcm_u31.bin", 0x00000, 0x80000, CRC(de514c2b) SHA1(da73aa825d73646f556f6d4dbb46f43acf7c3357) )
ROM_END
-GAME( 1996, ggconnie, 0, ggconnie, ggconnie, pce_common_state, pce_common, ROT0, "Eighting", "Go! Go! Connie chan Jaka Jaka Janken", GAME_NO_SOUND | GAME_NOT_WORKING )
+GAME( 1996, ggconnie, 0, ggconnie, ggconnie, pce_common_state, pce_common, ROT0, "Eighting", "Go! Go! Connie chan Jaka Jaka Janken", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/ghosteo.c b/src/mame/drivers/ghosteo.c
index 298d90784ba..992d5e6c8f3 100644
--- a/src/mame/drivers/ghosteo.c
+++ b/src/mame/drivers/ghosteo.c
@@ -765,6 +765,6 @@ DRIVER_INIT_MEMBER(ghosteo_state,touryuu)
m_rom_pagesize = 0x210;
}
-GAME( 2003, bballoon, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "Eolith", "BnB Arcade", GAME_IMPERFECT_SOUND )
-GAME( 2005, hapytour, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "GAV Company", "Happy Tour", GAME_IMPERFECT_SOUND )
-GAME( 2005, touryuu, 0, touryuu, touryuu, ghosteo_state, touryuu, ROT0, "Yuki Enterprise", "Touryuumon (V1.1)?", GAME_IMPERFECT_SOUND ) // On first boot inputs won't work, TODO: hook-up default eeprom
+GAME( 2003, bballoon, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "Eolith", "BnB Arcade", MACHINE_IMPERFECT_SOUND )
+GAME( 2005, hapytour, 0, bballoon, bballoon, ghosteo_state, bballoon, ROT0, "GAV Company", "Happy Tour", MACHINE_IMPERFECT_SOUND )
+GAME( 2005, touryuu, 0, touryuu, touryuu, ghosteo_state, touryuu, ROT0, "Yuki Enterprise", "Touryuumon (V1.1)?", MACHINE_IMPERFECT_SOUND ) // On first boot inputs won't work, TODO: hook-up default eeprom
diff --git a/src/mame/drivers/gijoe.c b/src/mame/drivers/gijoe.c
index 0c66bf987f6..8556742921f 100644
--- a/src/mame/drivers/gijoe.c
+++ b/src/mame/drivers/gijoe.c
@@ -470,7 +470,7 @@ ROM_START( gijoej )
ROM_END
-GAME( 1992, gijoe, 0, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (World, EAB, set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1992, gijoea, gijoe, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (World, EB8, prototype?)", GAME_SUPPORTS_SAVE )
-GAME( 1992, gijoeu, gijoe, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (US, UAB)", GAME_SUPPORTS_SAVE )
-GAME( 1992, gijoej, gijoe, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (Japan, JAA)", GAME_SUPPORTS_SAVE )
+GAME( 1992, gijoe, 0, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (World, EAB, set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, gijoea, gijoe, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (World, EB8, prototype?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, gijoeu, gijoe, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (US, UAB)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992, gijoej, gijoe, gijoe, gijoe, driver_device, 0, ROT0, "Konami", "G.I. Joe (Japan, JAA)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/gimix.c b/src/mame/drivers/gimix.c
index 4588f8006a4..2f04b6688d2 100644
--- a/src/mess/drivers/gimix.c
+++ b/src/mame/drivers/gimix.c
@@ -683,4 +683,4 @@ ROM_START( gimix )
ROM_LOAD( "gimixhd.h11", 0x000000, 0x001000, CRC(35c12201) SHA1(51ac9052f9757d79c7f5bd3aa5d8421e98cfcc37) )
ROM_END
-COMP( 1980, gimix, 0, 0, gimix, gimix, driver_device, 0, "Gimix", "Gimix 6809 System", GAME_IS_SKELETON | GAME_NOT_WORKING | GAME_NO_SOUND )
+COMP( 1980, gimix, 0, 0, gimix, gimix, driver_device, 0, "Gimix", "Gimix 6809 System", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/ginganin.c b/src/mame/drivers/ginganin.c
index 10f18c39e17..cd8dffb1f8e 100644
--- a/src/mame/drivers/ginganin.c
+++ b/src/mame/drivers/ginganin.c
@@ -374,5 +374,5 @@ DRIVER_INIT_MEMBER(ginganin_state,ginganin)
}
-GAME( 1987, ginganin, 0, ginganin, ginganin, ginganin_state, ginganin, ROT0, "Jaleco", "Ginga NinkyouDen (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1987, ginganina, ginganin, ginganin, ginganin, ginganin_state, ginganin, ROT0, "Jaleco", "Ginga NinkyouDen (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1987, ginganin, 0, ginganin, ginganin, ginganin_state, ginganin, ROT0, "Jaleco", "Ginga NinkyouDen (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ginganina, ginganin, ginganin, ginganin, ginganin_state, ginganin, ROT0, "Jaleco", "Ginga NinkyouDen (set 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/gizmondo.c b/src/mame/drivers/gizmondo.c
index 09d05d3106d..c048a9ce672 100644
--- a/src/mess/drivers/gizmondo.c
+++ b/src/mame/drivers/gizmondo.c
@@ -246,4 +246,4 @@ ROM_START( gizmondo )
ROMX_LOAD( "fboot.bin", 0, 0x800, CRC(28887c29) SHA1(e625caaa63b9db74cb6d7499dce12ac758c5fe76), ROM_BIOS(1) )
ROM_END
-CONS(2005, gizmondo, 0, 0, gizmondo, gizmondo, gizmondo_state, gizmondo, "Tiger Telematics", "Gizmondo", GAME_NOT_WORKING | GAME_NO_SOUND)
+CONS(2005, gizmondo, 0, 0, gizmondo, gizmondo, gizmondo_state, gizmondo, "Tiger Telematics", "Gizmondo", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/gladiatr.c b/src/mame/drivers/gladiatr.c
index 8d538907b5e..029352ff5bb 100644
--- a/src/mame/drivers/gladiatr.c
+++ b/src/mame/drivers/gladiatr.c
@@ -994,7 +994,7 @@ DRIVER_INIT_MEMBER(gladiatr_state,gladiatr)
membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x6000);
membank("bank2")->configure_entries(0, 2, memregion("audiocpu")->base() + 0x10000, 0xc000);
-
+
/* make sure bank is valid in cpu-reset */
membank("bank2")->set_entry(0);
}
@@ -1038,8 +1038,8 @@ DRIVER_INIT_MEMBER(gladiatr_state,ppking)
-GAME( 1985, ppking, 0, ppking, 0, gladiatr_state, ppking, ROT90, "Taito America Corporation", "Ping-Pong King", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1986, gladiatr, 0, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito America Corporation", "Gladiator (US)", GAME_SUPPORTS_SAVE )
-GAME( 1986, ogonsiro, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Ougon no Shiro (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1986, greatgur, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Great Gurianos (Japan?)", GAME_SUPPORTS_SAVE )
-GAME( 1986, gcastle, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Golden Castle (prototype?)", GAME_SUPPORTS_SAVE ) // incomplete dump
+GAME( 1985, ppking, 0, ppking, 0, gladiatr_state, ppking, ROT90, "Taito America Corporation", "Ping-Pong King", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1986, gladiatr, 0, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito America Corporation", "Gladiator (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, ogonsiro, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Ougon no Shiro (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, greatgur, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Great Gurianos (Japan?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, gcastle, gladiatr, gladiatr, gladiatr, gladiatr_state, gladiatr, ROT0, "Allumer / Taito Corporation", "Golden Castle (prototype?)", MACHINE_SUPPORTS_SAVE ) // incomplete dump
diff --git a/src/mess/drivers/glasgow.c b/src/mame/drivers/glasgow.c
index 47ac4b8b2e7..803fd591005 100644
--- a/src/mess/drivers/glasgow.c
+++ b/src/mame/drivers/glasgow.c
@@ -61,7 +61,9 @@ public:
glasgow_state(const machine_config &mconfig, device_type type, const char *tag)
: mboard_state(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
- m_beep(*this, "beeper")
+ m_beep(*this, "beeper"),
+ m_line0(*this, "LINE0"),
+ m_line1(*this, "LINE1")
{ }
required_device<cpu_device> m_maincpu;
@@ -89,6 +91,8 @@ public:
DECLARE_MACHINE_START(dallas32);
TIMER_DEVICE_CALLBACK_MEMBER(update_nmi);
TIMER_DEVICE_CALLBACK_MEMBER(update_nmi32);
+ required_ioport m_line0;
+ required_ioport m_line1;
};
@@ -126,10 +130,10 @@ READ16_MEMBER( glasgow_state::glasgow_keys_r )
/* See if any keys pressed */
data = 3;
- if (mboard_key_select == ioport("LINE0")->read())
+ if (mboard_key_select == m_line0->read())
data &= 1;
- if (mboard_key_select == ioport("LINE1")->read())
+ if (mboard_key_select == m_line1->read())
data &= 2;
return data << 8;
@@ -188,9 +192,9 @@ READ16_MEMBER( glasgow_state::read_newkeys16 ) //Amsterdam, Roma
UINT16 data;
if (mboard_key_selector == 0)
- data = ioport("LINE0")->read();
+ data = m_line0->read();
else
- data = ioport("LINE1")->read();
+ data = m_line1->read();
logerror("read Keyboard Offset = %x Data = %x Select = %x \n", offset, data, mboard_key_selector);
data <<= 8;
@@ -251,10 +255,10 @@ READ32_MEMBER( glasgow_state::read_newkeys32 ) // Dallas 32, Roma 32
UINT32 data;
if (mboard_key_selector == 0)
- data = ioport("LINE0")->read();
+ data = m_line0->read();
else
- data = ioport("LINE1")->read();
- //if (mboard_key_selector == 1) data = machine.root_device().ioport("LINE0")->read(); else data = 0;
+ data = m_line1->read();
+ //if (mboard_key_selector == 1) data = m_line0->read(); else data = 0;
if(data)
logerror("read Keyboard Offset = %x Data = %x\n", offset, data);
data <<= 24;
@@ -399,113 +403,16 @@ static INPUT_PORTS_START( old_keyboard ) //Glasgow,Dallas
INPUT_PORTS_END
-static INPUT_PORTS_START( board )
- PORT_START("LINE2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_START("LINE3")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_START("LINE4")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_START("LINE5")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_START("LINE6")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_START("LINE7")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_START("LINE8")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_START("LINE9")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
-
- PORT_START("LINE10")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD)
-
- PORT_START("B_WHITE")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD)
-
- PORT_START("B_BLACK")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD)
-
- PORT_START("B_BUTTONS")
- PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD)
- PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD)
-
-INPUT_PORTS_END
+INPUT_PORTS_EXTERN( chessboard);
static INPUT_PORTS_START( oldkeys )
PORT_INCLUDE( old_keyboard )
- PORT_INCLUDE( board )
+ PORT_INCLUDE( chessboard )
INPUT_PORTS_END
static INPUT_PORTS_START( newkeys )
PORT_INCLUDE( new_keyboard )
- PORT_INCLUDE( board )
+ PORT_INCLUDE( chessboard )
INPUT_PORTS_END
static MACHINE_CONFIG_START( glasgow, glasgow_state )
@@ -593,10 +500,10 @@ ROM_END
***************************************************************************/
/* YEAR, NAME, PARENT, COMPAT, MACHINE, INPUT, INIT, COMPANY, FULLNAME, FLAGS */
-CONS( 1984, glasgow, 0, 0, glasgow, oldkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto III S Glasgow", GAME_SUPPORTS_SAVE)
-CONS( 1984, amsterd, 0, 0, amsterd, newkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Amsterdam", GAME_SUPPORTS_SAVE)
-CONS( 1984, dallas, glasgow, 0, glasgow, oldkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas", GAME_SUPPORTS_SAVE)
-CONS( 1984, roma, amsterd, 0, glasgow, newkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Roma", GAME_NOT_WORKING)
-CONS( 1984, dallas32, amsterd, 0, dallas32, newkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas 32 Bit", GAME_SUPPORTS_SAVE)
-CONS( 1984, roma32, amsterd, 0, dallas32, newkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Roma 32 Bit", GAME_SUPPORTS_SAVE)
-CONS( 1984, dallas16, amsterd, 0, amsterd, newkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas 16 Bit", GAME_SUPPORTS_SAVE)
+CONS( 1984, glasgow, 0, 0, glasgow, oldkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto III S Glasgow", MACHINE_SUPPORTS_SAVE)
+CONS( 1984, amsterd, 0, 0, amsterd, newkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Amsterdam", MACHINE_SUPPORTS_SAVE)
+CONS( 1984, dallas, glasgow, 0, glasgow, oldkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas", MACHINE_SUPPORTS_SAVE)
+CONS( 1984, roma, amsterd, 0, glasgow, newkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Roma", MACHINE_NOT_WORKING)
+CONS( 1984, dallas32, amsterd, 0, dallas32, newkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas 32 Bit", MACHINE_SUPPORTS_SAVE)
+CONS( 1984, roma32, amsterd, 0, dallas32, newkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Roma 32 Bit", MACHINE_SUPPORTS_SAVE)
+CONS( 1984, dallas16, amsterd, 0, amsterd, newkeys, driver_device, 0, "Hegener & Glaser Muenchen", "Mephisto Dallas 16 Bit", MACHINE_SUPPORTS_SAVE)
diff --git a/src/mame/drivers/glass.c b/src/mame/drivers/glass.c
index 17bbc802e52..b4e30ce200a 100644
--- a/src/mame/drivers/glass.c
+++ b/src/mame/drivers/glass.c
@@ -417,6 +417,6 @@ DRIVER_INIT_MEMBER(glass_state,glass)
}
-GAME( 1993, glass, 0, glass, glass, glass_state, glass, ROT0, "OMK / Gaelco", "Glass (Ver 1.1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1993, glass10, glass, glass, glass, glass_state, glass, ROT0, "OMK / Gaelco", "Glass (Ver 1.0)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1993, glassbrk, glass, glass, glass, glass_state, glass, ROT0, "OMK / Gaelco", "Glass (Ver 1.0, Break Edition)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1993, glass, 0, glass, glass, glass_state, glass, ROT0, "OMK / Gaelco", "Glass (Ver 1.1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, glass10, glass, glass, glass, glass_state, glass, ROT0, "OMK / Gaelco", "Glass (Ver 1.0)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, glassbrk, glass, glass, glass, glass_state, glass, ROT0, "OMK / Gaelco", "Glass (Ver 1.0, Break Edition)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/globalfr.c b/src/mame/drivers/globalfr.c
index 5aca2c2c2bb..b64b666aba7 100644
--- a/src/mame/drivers/globalfr.c
+++ b/src/mame/drivers/globalfr.c
@@ -197,32 +197,32 @@ ROM_END
/******************************************************************************/
// standalone game or topbox?
-GAME( 199?, gl_snbev, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Saturday Night Beaver (Global) (Stealth?) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, gl_snbeva, gl_snbev, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Saturday Night Beaver (Global) (Stealth?) (set 2)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, gl_snbev, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Saturday Night Beaver (Global) (Stealth?) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, gl_snbeva, gl_snbev, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Saturday Night Beaver (Global) (Stealth?) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
// standalone game or topbox?
-GAME( 199?, gl_grncl, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Grid Runner Club (Global) (Stealth?) (set 1)",GAME_IS_SKELETON_MECHANICAL )
-GAME( 199?, gl_grncla, gl_grncl, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Grid Runner Club (Global) (Stealth?) (set 2)",GAME_IS_SKELETON_MECHANICAL )
+GAME( 199?, gl_grncl, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Grid Runner Club (Global) (Stealth?) (set 1)",MACHINE_IS_SKELETON_MECHANICAL )
+GAME( 199?, gl_grncla, gl_grncl, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Grid Runner Club (Global) (Stealth?) (set 2)",MACHINE_IS_SKELETON_MECHANICAL )
-GAME( 199?, gl_dow, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels (Global) (v1.4) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_dowp, gl_dow, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels (Global) (v1.4 Protocol) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_dow, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels (Global) (v1.4) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_dowp, gl_dow, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels (Global) (v1.4 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_dowcl,0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels Club (Global) (v1.6) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_dowclp,gl_dowcl,globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels Club (Global) (v1.6 Protocol) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_dowcl,0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels Club (Global) (v1.6) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_dowclp,gl_dowcl,globalfr, globalfr, driver_device, 0, ROT0, "Global", "Deals On Wheels Club (Global) (v1.6 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_wywh, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.9) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_wywhp, gl_wywh, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.9 Protocol) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_wywh24, gl_wywh, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.4) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_wywh24p,gl_wywh, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.4 Protocol) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_wywh, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.9) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_wywhp, gl_wywh, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.9 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_wywh24, gl_wywh, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.4) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_wywh24p,gl_wywh, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Wish You Were Here Club (Global) (v2.4 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_coc, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v3.0) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_cocp, gl_coc, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v3.0 Protocol) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_coc29, gl_coc, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v2.9) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_coc29p,gl_coc, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v2.9 Protocol) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_coc, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v3.0) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_cocp, gl_coc, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v3.0 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_coc29, gl_coc, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v2.9) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_coc29p,gl_coc, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Carry On Clubbin' (Global) (v2.9 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_uyr, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Up Yer Riggin Club (Global) (v2.8) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_uyrp, gl_uyr, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Up Yer Riggin Club (Global) (v2.8 Protocol) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_uyr, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Up Yer Riggin Club (Global) (v2.8) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_uyrp, gl_uyr, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Up Yer Riggin Club (Global) (v2.8 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_hbh, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel (Global) (v1.0) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_hbhcl,0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (v1.9) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_hbhclp,gl_hbhcl, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (v1.9 Protocol) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
-GAME( 199?, gl_hbhcla,gl_hbhcl, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (Set 2) (Stealth)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_hbh, 0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel (Global) (v1.0) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_hbhcl,0, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (v1.9) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_hbhclp,gl_hbhcl, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (v1.9 Protocol) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME( 199?, gl_hbhcla,gl_hbhcl, globalfr, globalfr, driver_device, 0, ROT0, "Global", "Heartbreak Hotel Club (Global) (Set 2) (Stealth)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/globalvr.c b/src/mame/drivers/globalvr.c
index 8565c0b4292..04b957b9c90 100644
--- a/src/mame/drivers/globalvr.c
+++ b/src/mame/drivers/globalvr.c
@@ -144,14 +144,14 @@ ROM_END
/* OS/Global VR specific Setup Installers */
-GAME( 2002, hyperv2, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Hyper V2 (Global VR) Install - 06/12/02", GAME_IS_SKELETON )
-GAME( 2001, hyperv2a, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Hyper V2 (Global VR) Install - 09/30/01", GAME_IS_SKELETON )
-GAME( 2001, gvrxpsys, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Global VR XP OS Install - 09/30/01", GAME_IS_SKELETON )
-GAME( 2002, gvrxpsup, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Global VR XP OS Update/Install - 06/11/02", GAME_IS_SKELETON )
+GAME( 2002, hyperv2, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Hyper V2 (Global VR) Install - 06/12/02", MACHINE_IS_SKELETON )
+GAME( 2001, hyperv2a, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Hyper V2 (Global VR) Install - 09/30/01", MACHINE_IS_SKELETON )
+GAME( 2001, gvrxpsys, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Global VR XP OS Install - 09/30/01", MACHINE_IS_SKELETON )
+GAME( 2002, gvrxpsup, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Global VR XP OS Update/Install - 06/11/02", MACHINE_IS_SKELETON )
/* Game Installer CDs */
-GAME( 2000, bhead2k, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2000 Install - 05/27/03", GAME_IS_SKELETON )
-GAME( 2000, bhead2ka, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2000 Install - 09/16/01", GAME_IS_SKELETON )
-GAME( 2002, bhead2k2, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2002 Install - 05/27/03", GAME_IS_SKELETON )
-GAME( 2003, bhead2k3, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2003 Desert War Install - 05/27/03", GAME_IS_SKELETON )
-GAME( 2005, nfsug, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Need For Speed: Underground Install (2 Discs) (v1.1)", GAME_IS_SKELETON )
+GAME( 2000, bhead2k, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2000 Install - 05/27/03", MACHINE_IS_SKELETON )
+GAME( 2000, bhead2ka, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2000 Install - 09/16/01", MACHINE_IS_SKELETON )
+GAME( 2002, bhead2k2, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2002 Install - 05/27/03", MACHINE_IS_SKELETON )
+GAME( 2003, bhead2k3, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Beach Head 2003 Desert War Install - 05/27/03", MACHINE_IS_SKELETON )
+GAME( 2005, nfsug, 0, globalvr, globalvr, driver_device, 0, ROT0, "Global VR", "Need For Speed: Underground Install (2 Discs) (v1.1)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/gluck2.c b/src/mame/drivers/gluck2.c
index ed4eb8fa51d..a34f598352d 100644
--- a/src/mame/drivers/gluck2.c
+++ b/src/mame/drivers/gluck2.c
@@ -585,4 +585,4 @@ ROM_END
*********************************************/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS... */
-GAME( 1992, gluck2, 0, gluck2, gluck2, driver_device, 0, ROT0, "Yung Yu / CYE", "Good Luck II", GAME_SUPPORTS_SAVE )
+GAME( 1992, gluck2, 0, gluck2, gluck2, driver_device, 0, ROT0, "Yung Yu / CYE", "Good Luck II", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/gmaster.c b/src/mame/drivers/gmaster.c
index 6ed1c9bbf9f..aba49b950b3 100644
--- a/src/mess/drivers/gmaster.c
+++ b/src/mame/drivers/gmaster.c
@@ -312,4 +312,4 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME */
-CONS( 1990, gmaster, 0, 0, gmaster, gmaster, gmaster_state, gmaster, "Hartung", "Game Master", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND)
+CONS( 1990, gmaster, 0, 0, gmaster, gmaster, gmaster_state, gmaster, "Hartung", "Game Master", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/drivers/gng.c b/src/mame/drivers/gng.c
index 6876f23ec63..bcb2af6418f 100644
--- a/src/mame/drivers/gng.c
+++ b/src/mame/drivers/gng.c
@@ -778,14 +778,14 @@ DRIVER_INIT_MEMBER(gng_state,diamond)
-GAME( 1985, gng, 0, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1985, gnga, gng, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1985, gngbl, gng, gng, gng, driver_device, 0, ROT0, "bootleg", "Ghosts'n Goblins (bootleg with Cross)", GAME_SUPPORTS_SAVE )
-GAME( 1985, gngprot, gng, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (prototype)", GAME_SUPPORTS_SAVE )
-GAME( 1985, gngblita, gng, gng, gng, driver_device, 0, ROT0, "bootleg", "Ghosts'n Goblins (Italian bootleg, harder)", GAME_SUPPORTS_SAVE )
-GAME( 1985, gngc, gng, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 3)", GAME_SUPPORTS_SAVE ) // rev c?
-GAME( 1985, gngt, gng, gng, gng, driver_device, 0, ROT0, "Capcom (Taito America license)", "Ghosts'n Goblins (US)", GAME_SUPPORTS_SAVE )
-GAME( 1985, makaimur, gng, gng, makaimur, driver_device, 0, ROT0, "Capcom", "Makai-Mura (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1985, makaimurc, gng, gng, makaimur, driver_device, 0, ROT0, "Capcom", "Makai-Mura (Japan Revision C)", GAME_SUPPORTS_SAVE )
-GAME( 1985, makaimurg, gng, gng, makaimur, driver_device, 0, ROT0, "Capcom", "Makai-Mura (Japan Revision G)", GAME_SUPPORTS_SAVE )
-GAME( 1989, diamond, 0, gng, diamond, gng_state, diamond, ROT0, "KH Video", "Diamond Run", GAME_SUPPORTS_SAVE )
+GAME( 1985, gng, 0, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, gnga, gng, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, gngbl, gng, gng, gng, driver_device, 0, ROT0, "bootleg", "Ghosts'n Goblins (bootleg with Cross)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, gngprot, gng, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (prototype)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, gngblita, gng, gng, gng, driver_device, 0, ROT0, "bootleg", "Ghosts'n Goblins (Italian bootleg, harder)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, gngc, gng, gng, gng, driver_device, 0, ROT0, "Capcom", "Ghosts'n Goblins (World? set 3)", MACHINE_SUPPORTS_SAVE ) // rev c?
+GAME( 1985, gngt, gng, gng, gng, driver_device, 0, ROT0, "Capcom (Taito America license)", "Ghosts'n Goblins (US)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, makaimur, gng, gng, makaimur, driver_device, 0, ROT0, "Capcom", "Makai-Mura (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, makaimurc, gng, gng, makaimur, driver_device, 0, ROT0, "Capcom", "Makai-Mura (Japan Revision C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, makaimurg, gng, gng, makaimur, driver_device, 0, ROT0, "Capcom", "Makai-Mura (Japan Revision G)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, diamond, 0, gng, diamond, gng_state, diamond, ROT0, "KH Video", "Diamond Run", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/go2000.c b/src/mame/drivers/go2000.c
index 714f740f0ec..8e87eec9e6c 100644
--- a/src/mame/drivers/go2000.c
+++ b/src/mame/drivers/go2000.c
@@ -52,7 +52,6 @@ public:
/* memory pointers */
required_shared_ptr<UINT16> m_videoram;
required_shared_ptr<UINT16> m_videoram2;
-// UINT16 * m_paletteram; // currently this uses generic palette handling
/* devices */
required_device<cpu_device> m_soundcpu;
@@ -372,4 +371,4 @@ ROM_START( go2000 )
ROM_END
-GAME( 2000, go2000, 0, go2000, go2000, driver_device, 0, ROT0, "SunA?", "Go 2000", GAME_SUPPORTS_SAVE )
+GAME( 2000, go2000, 0, go2000, go2000, driver_device, 0, ROT0, "SunA?", "Go 2000", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/goal92.c b/src/mame/drivers/goal92.c
index 600b527f700..3fbde29de60 100644
--- a/src/mame/drivers/goal92.c
+++ b/src/mame/drivers/goal92.c
@@ -396,4 +396,4 @@ ROM_END
-GAME( 1992, goal92, cupsoc, goal92, goal92, driver_device, 0, ROT0, "bootleg", "Goal! '92", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1992, goal92, cupsoc, goal92, goal92, driver_device, 0, ROT0, "bootleg", "Goal! '92", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/goindol.c b/src/mame/drivers/goindol.c
index 7dbba538d6f..a47f1892c3c 100644
--- a/src/mame/drivers/goindol.c
+++ b/src/mame/drivers/goindol.c
@@ -401,7 +401,7 @@ DRIVER_INIT_MEMBER(goindol_state,goindol)
-GAME( 1987, goindol, 0, goindol, goindol, goindol_state, goindol, ROT90, "SunA", "Goindol (World)", GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1987, goindolu, goindol, goindol, goindol, goindol_state, goindol, ROT90, "SunA", "Goindol (US)", GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1987, goindolk, goindol, goindol, goindol, goindol_state, goindol, ROT90, "SunA", "Goindol (Korea)", GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE )
-GAME( 1987, homo, goindol, goindol, homo, driver_device, 0, ROT90, "bootleg", "Homo", GAME_SUPPORTS_SAVE )
+GAME( 1987, goindol, 0, goindol, goindol, goindol_state, goindol, ROT90, "SunA", "Goindol (World)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, goindolu, goindol, goindol, goindol, goindol_state, goindol, ROT90, "SunA", "Goindol (US)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, goindolk, goindol, goindol, goindol, goindol_state, goindol, ROT90, "SunA", "Goindol (Korea)", MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, homo, goindol, goindol, homo, driver_device, 0, ROT90, "bootleg", "Homo", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/goldngam.c b/src/mame/drivers/goldngam.c
index a624d213a60..38c3119c451 100644
--- a/src/mame/drivers/goldngam.c
+++ b/src/mame/drivers/goldngam.c
@@ -613,5 +613,5 @@ ROM_END
*************************/
/* YEAR NAME PARENT MACHINE INPUT INIT ROT COMPANY FULLNAME FLAGS */
-GAME( 1990, swisspkr, 0, swisspkr, goldngam, driver_device, 0, ROT0, "Golden Games / C+M Technics AG", "Swiss Poker ('50 SG-.10', V2.5)", GAME_NO_SOUND | GAME_NOT_WORKING )
-GAME( 1998, moviecrd, 0, moviecrd, goldngam, driver_device, 0, ROT0, "Golden Games / C+M Technics AG", "Movie Card", GAME_NO_SOUND | GAME_NOT_WORKING )
+GAME( 1990, swisspkr, 0, swisspkr, goldngam, driver_device, 0, ROT0, "Golden Games / C+M Technics AG", "Swiss Poker ('50 SG-.10', V2.5)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
+GAME( 1998, moviecrd, 0, moviecrd, goldngam, driver_device, 0, ROT0, "Golden Games / C+M Technics AG", "Movie Card", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/goldnpkr.c b/src/mame/drivers/goldnpkr.c
index 2eba2ba4463..4714aedeca0 100644
--- a/src/mame/drivers/goldnpkr.c
+++ b/src/mame/drivers/goldnpkr.c
@@ -717,8 +717,8 @@
- Simulated colors for all sets till color PROMs appear.
- Fixed bit corruption in goldnpkr rom u40_4a.bin.
- Completed inputs in all sets (except DIP switches).
- - Removed flags GAME_WRONG_COLORS and GAME_IMPERFECT_GRAPHICS in all sets.
- - Removed flag GAME_NOT_WORKING. All sets are now playable. :)
+ - Removed flags MACHINE_WRONG_COLORS and MACHINE_IMPERFECT_GRAPHICS in all sets.
+ - Removed flag MACHINE_NOT_WORKING. All sets are now playable. :)
[2006-10-09]
@@ -10187,7 +10187,7 @@ GAMEL( 198?, potnpkrf, pottnpkr, goldnpkr, goldnpkr, driver_device, 0,
GAMEL( 198?, superdbl, pottnpkr, goldnpkr, goldnpkr, driver_device, 0, ROT0, "Karateco", "Super Double (French)", 0, layout_goldnpkr )
GAMEL( 198?, ngold, pottnpkr, pottnpkr, ngold, driver_device, 0, ROT0, "<unknown>", "Jack Potten's Poker (NGold, set 1)", 0, layout_goldnpkr )
GAMEL( 198?, ngolda, pottnpkr, pottnpkr, ngold, driver_device, 0, ROT0, "<unknown>", "Jack Potten's Poker (NGold, set 2)", 0, layout_goldnpkr )
-GAMEL( 198?, ngoldb, pottnpkr, pottnpkr, ngold, driver_device, 0, ROT0, "<unknown>", "Jack Potten's Poker (NGold, set 3)", GAME_IMPERFECT_GRAPHICS, layout_goldnpkr )
+GAMEL( 198?, ngoldb, pottnpkr, pottnpkr, ngold, driver_device, 0, ROT0, "<unknown>", "Jack Potten's Poker (NGold, set 3)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr )
GAMEL( 1991, witchcrd, 0, witchcrd, witchcrd, goldnpkr_state, vkdlsc, ROT0, "Video Klein?", "Witch Card (Video Klein CPU box, set 1)", 0, layout_goldnpkr )
GAME( 1991, witchcda, witchcrd, witchcrd, witchcda, driver_device, 0, ROT0, "<unknown>", "Witch Card (Spanish, witch game, set 1)", 0 )
@@ -10201,16 +10201,16 @@ GAMEL( 1994, witchcdh, witchcrd, witchcrd, witchcdd, driver_device, 0,
GAMEL( 1994, witchcdi, witchcrd, witchcrd, witchcdd, driver_device, 0, ROT0, "Proma", "Witch Card (German, WC3050, 27-4-94)", 0, layout_goldnpkr )
GAMEL( 1991, witchgme, 0, witchcrd, witchcrd, driver_device, 0, ROT0, "Video Klein", "Witch Game (Video Klein, set 1)", 0, layout_goldnpkr )
-GAMEL( 1997, witchcdk, witchgme, witchcrd, witchcrd, driver_device, 0, ROT0, "Video Klein", "Witch Game (Video Klein, set 2)", GAME_NOT_WORKING, layout_goldnpkr )
+GAMEL( 1997, witchcdk, witchgme, witchcrd, witchcrd, driver_device, 0, ROT0, "Video Klein", "Witch Game (Video Klein, set 2)", MACHINE_NOT_WORKING, layout_goldnpkr )
GAMEL( 1994, witchjol, 0, wcrdxtnd, witchjol, goldnpkr_state, vkdlsa, ROT0, "Video Klein", "Jolli Witch (Export, 6T/12T ver 1.57D)", 0, layout_goldnpkr )
GAMEL( 2001, wldwitch, 0, wcrdxtnd, wldwitch, goldnpkr_state, vkdlsww, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.84A)", 0, layout_goldnpkr ) /* Ver 184A, 2001-09-12 */
GAMEL( 1992, wldwitcha, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwa, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.57-SP)", 0, layout_goldnpkr ) /* Ver 157-SP, 1992-12-25 */
-GAMEL( 1992, wldwitchb, wldwitch, wcrdxtnd, wldwitch, driver_device, 0, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.57-TE)", GAME_NOT_WORKING, layout_goldnpkr ) /* Ver 157-TE, 1992-12-25 */
+GAMEL( 1992, wldwitchb, wldwitch, wcrdxtnd, wldwitch, driver_device, 0, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.57-TE)", MACHINE_NOT_WORKING, layout_goldnpkr ) /* Ver 157-TE, 1992-12-25 */
GAMEL( 1994, wldwitchc, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwc, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62A)", 0, layout_goldnpkr ) /* Ver 162A, 1994-04-26 */
GAMEL( 1994, wldwitchd, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwd, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62B)", 0, layout_goldnpkr ) /* Ver 162B, 1994-04-26 */
-GAMEL( 1994, wldwitche, wldwitch, wcrdxtnd, wldwitch, driver_device, 0, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62A-F)", GAME_NOT_WORKING, layout_goldnpkr ) /* Ver 162A-F, 1994-04-26 */
+GAMEL( 1994, wldwitche, wldwitch, wcrdxtnd, wldwitch, driver_device, 0, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62A-F)", MACHINE_NOT_WORKING, layout_goldnpkr ) /* Ver 162A-F, 1994-04-26 */
GAMEL( 1994, wldwitchf, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwc, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62A alt)", 0, layout_goldnpkr ) /* Ver 162A alt, 1994-11-03 */
GAMEL( 1994, wldwitchg, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwd, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.62B alt)", 0, layout_goldnpkr ) /* Ver 162B alt, 1994-11-03 */
GAMEL( 1995, wldwitchh, wldwitch, wcrdxtnd, wldwitch, goldnpkr_state, vkdlswwh, ROT0, "Video Klein", "Wild Witch (Export, 6T/12T ver 1.65A)", 0, layout_goldnpkr ) /* Ver 165A, 1995-11-16 */
@@ -10239,14 +10239,14 @@ GAMEL( 1992, wstrike, 0, wcrdxtnd, wstrike, goldnpkr_state, wstrike,
GAMEL( 1992, wstrikea, wstrike, wcrdxtnd, wstrike, goldnpkr_state, wstrike, ROT0, "Video Klein", "Witch Strike (Export, 6T/12T ver 1.01B)", 0, layout_goldnpkr )
GAMEL( 1996, wtchjack, 0, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.87-89)", 0, layout_goldnpkr ) /* Ver 0.87-89 / 1996-10-08 GFX OK */
-GAMEL( 1994, wtchjacka, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jackpot (Export, 6T/12T ver 0.25)", GAME_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.25 / 1994-11-24 */
-GAMEL( 1995, wtchjackb, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.40)", GAME_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.40 / 1995-02-27 */
-GAMEL( 1995, wtchjackc, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.40T)", GAME_NOT_WORKING, layout_goldnpkr ) /* Ver 0.40T / 1995-02-27 */
-GAMEL( 1995, wtchjackd, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.62)", GAME_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.62 / 1995-08-02 */
-GAMEL( 1995, wtchjacke, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.64)", GAME_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.64 / 1995-09-13 */
-GAMEL( 1995, wtchjackf, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.65)", GAME_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.65 / 1995-10-19 */
-GAMEL( 1996, wtchjackg, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.70S)", GAME_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.70S / 1996-03-26 */
-GAMEL( 1996, wtchjackh, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.70P)", GAME_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.70P / 1996-03-26 */
+GAMEL( 1994, wtchjacka, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jackpot (Export, 6T/12T ver 0.25)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.25 / 1994-11-24 */
+GAMEL( 1995, wtchjackb, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.40)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.40 / 1995-02-27 */
+GAMEL( 1995, wtchjackc, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.40T)", MACHINE_NOT_WORKING, layout_goldnpkr ) /* Ver 0.40T / 1995-02-27 */
+GAMEL( 1995, wtchjackd, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.62)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.62 / 1995-08-02 */
+GAMEL( 1995, wtchjacke, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.64)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.64 / 1995-09-13 */
+GAMEL( 1995, wtchjackf, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.65)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.65 / 1995-10-19 */
+GAMEL( 1996, wtchjackg, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.70S)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.70S / 1996-03-26 */
+GAMEL( 1996, wtchjackh, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.70P)", MACHINE_IMPERFECT_GRAPHICS, layout_goldnpkr ) /* Ver 0.70P / 1996-03-26 */
GAMEL( 1996, wtchjacki, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.87)", 0, layout_goldnpkr ) /* Ver 0.87 / 1996-07-16, GFX OK */
GAMEL( 1996, wtchjackj, wtchjack, wcrdxtnd, wtchjack, driver_device, 0, ROT0, "Video Klein", "Witch Jack (Export, 6T/12T ver 0.87-88)", 0, layout_goldnpkr ) /* Ver 0.87-88 / 1996-10-02, GFX OK */
@@ -10277,7 +10277,7 @@ GAMEL( 1991, goodluck, bsuerte, witchcrd, goodluck, driver_device, 0,
GAMEL( 1991, falcnwld, 0, wildcard, wildcard, driver_device, 0, ROT0, "TVG", "Falcons Wild - Wild Card 1991 (TVG)", 0, layout_goldnpkr )
GAMEL( 1990, falcnwlda, falcnwld, wildcard, wildcard, driver_device, 0, ROT0, "Video Klein", "Falcons Wild - World Wide Poker (Video Klein, set 1)", 0, layout_goldnpkr )
GAMEL( 1990, falcnwldb, falcnwld, wildcard, wildcard, driver_device, 0, ROT0, "Video Klein", "Falcons Wild - World Wide Poker (Video Klein, set 2)", 0, layout_goldnpkr )
-GAME( 1983, falcnwldc, falcnwld, wildcrdb, wildcard, goldnpkr_state, flcnw, ROT0, "Falcon", "Falcons Wild - World Wide Poker (Falcon original)", GAME_NOT_WORKING )
+GAME( 1983, falcnwldc, falcnwld, wildcrdb, wildcard, goldnpkr_state, flcnw, ROT0, "Falcon", "Falcons Wild - World Wide Poker (Falcon original)", MACHINE_NOT_WORKING )
/*************************************** OTHER SETS ***************************************/
@@ -10296,11 +10296,11 @@ GAME( 1993, brasil93, 0, witchcrd, bsuerte, driver_device, 0,
GAME( 1991, poker91, 0, witchcrd, poker91, driver_device, 0, ROT0, "<unknown>", "Poker 91", 0 )
GAME( 198?, genie, 0, genie, genie, driver_device, 0, ROT0, "Video Fun Games Ltd.", "Genie", 0 )
GAMEL( 1983, silverga, 0, goldnpkr, goldnpkr, driver_device, 0, ROT0, "<unknown>", "Silver Game", 0, layout_goldnpkr )
-GAME( 1987, caspoker, 0, goldnpkr, caspoker, driver_device, 0, ROT0, "PM / Beck Elektronik", "Casino Poker (Ver PM86LO-35-5, German)", GAME_IMPERFECT_COLORS )
+GAME( 1987, caspoker, 0, goldnpkr, caspoker, driver_device, 0, ROT0, "PM / Beck Elektronik", "Casino Poker (Ver PM86LO-35-5, German)", MACHINE_IMPERFECT_COLORS )
-GAME( 198?, pokerdub, 0, pottnpkr, goldnpkr, driver_device, 0, ROT0, "<unknown>", "unknown French poker game", GAME_NOT_WORKING ) // lacks of 2nd program ROM.
-GAME( 198?, pokerduc, 0, goldnpkr, goldnpkr, goldnpkr_state, icp1db, ROT0, "<unknown>", "unknown encrypted poker game", GAME_NOT_WORKING ) // encrypted.
+GAME( 198?, pokerdub, 0, pottnpkr, goldnpkr, driver_device, 0, ROT0, "<unknown>", "unknown French poker game", MACHINE_NOT_WORKING ) // lacks of 2nd program ROM.
+GAME( 198?, pokerduc, 0, goldnpkr, goldnpkr, goldnpkr_state, icp1db, ROT0, "<unknown>", "unknown encrypted poker game", MACHINE_NOT_WORKING ) // encrypted.
-GAMEL( 198?, bchancep, 0, bchancep, goldnpkr, goldnpkr_state, bchancep, ROT0, "<unknown>", "Bonne Chance! (Golden Poker prequel HW)", GAME_NOT_WORKING, layout_goldnpkr )
+GAMEL( 198?, bchancep, 0, bchancep, goldnpkr, goldnpkr_state, bchancep, ROT0, "<unknown>", "Bonne Chance! (Golden Poker prequel HW)", MACHINE_NOT_WORKING, layout_goldnpkr )
GAME( 1987, pokermon, 0, mondial, mondial, driver_device, 0, ROT0, "<unknown>", "Mundial/Mondial (Italian/French)", 0 ) // banked selectable program
-GAME( 198?, pokersis, 0, bchancep, goldnpkr, driver_device, 0, ROT0, "Sisteme France", "unknown Sisteme France Poker", GAME_NOT_WORKING ) // fix banking (4 prgs?)...
+GAME( 198?, pokersis, 0, bchancep, goldnpkr, driver_device, 0, ROT0, "Sisteme France", "unknown Sisteme France Poker", MACHINE_NOT_WORKING ) // fix banking (4 prgs?)...
diff --git a/src/mame/drivers/goldstar.c b/src/mame/drivers/goldstar.c
index 51d4291ef4d..4cf3d0b06bd 100644
--- a/src/mame/drivers/goldstar.c
+++ b/src/mame/drivers/goldstar.c
@@ -208,6 +208,7 @@
#include "cmaster.lh"
#include "cmasterb.lh"
#include "cmasterc.lh"
+#include "cmezspin.lh"
#include "cmpacman.lh"
#include "cmv4.lh"
#include "crazybon.lh"
@@ -260,6 +261,7 @@ WRITE8_MEMBER(goldstar_state::p1_lamps_w)
x--- ----
all cm/cmaster use the same scheme
+ cmv4, cmv801 and crazybon don't light the Take button when it's available for hold pair
tonypok uses lamps to indicate current button functions rather than active buttons
skill98 is like schery97 but doesn't activate bit 0 for stop
nfb96, roypok96 and nc96 sets are like schery97 but they don't activate bit 2 for select
@@ -1221,7 +1223,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( cmv4_dsw1 )
PORT_START("DSW1")
- PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW1:1")
+ PORT_DIPNAME( 0x01, 0x00, "Hold Pair" ) PORT_DIPLOCATION("DSW1:1")
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "Hopper Out Switch" ) PORT_DIPLOCATION("DSW1:2")
@@ -1239,7 +1241,7 @@ static INPUT_PORTS_START( cmv4_dsw1 )
PORT_DIPNAME( 0x20, 0x00, "Double Up Game" ) PORT_DIPLOCATION("DSW1:6")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0xc0, 0xc0, "Bet Max" ) PORT_DIPLOCATION("DSW1:7,8")
+ PORT_DIPNAME( 0xc0, 0x00, "Bet Max" ) PORT_DIPLOCATION("DSW1:7,8")
PORT_DIPSETTING( 0x00, "8" )
PORT_DIPSETTING( 0x40, "16" )
PORT_DIPSETTING( 0x80, "32" )
@@ -1456,7 +1458,7 @@ static INPUT_PORTS_START( cmv801 )
PORT_INCLUDE( cmv4_dsw1 )
PORT_MODIFY("DSW1")
- /* DSW1-1 unused */
+ /* Hold Pair OK - use Take button */
/* Hopper Out Switch not checked */
/* Payout Mode not checked */
/* '7' In Double Up Game OK */
@@ -1491,11 +1493,14 @@ static INPUT_PORTS_START( cmv801 )
PORT_INCLUDE( cmv4_dsw4 ) /* Display Of Payout Limit not working; all others OK */
PORT_INCLUDE( cmv4_dsw5 )
+ PORT_MODIFY("DSW5")
/* Display of Doll On Demo only affects payout table screen */
/* Coin In Limit OK */
/* Condition For 3 Kind Of Bonus not checked */
/* Display Of Doll At All Fr. Bonus not checked */
- /* DSW5-7 listed as unused */
+ PORT_DIPNAME( 0x40, 0x40, "Card Shuffle Animation" ) PORT_DIPLOCATION("DSW5:7") /* OK */
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
/* Test Mode For Disp. Of Doll not working */
INPUT_PORTS_END
@@ -1508,7 +1513,7 @@ static INPUT_PORTS_START( cmv4 )
PORT_INCLUDE( cmv4_dsw1 )
PORT_MODIFY("DSW1")
- /* DSW1-1 unused */
+ /* Hold Pair OK - use Take button */
/* Hopper Out Switch not checked */
/* Payout Mode not checked */
/* '7' In Double Up Game OK */
@@ -1564,7 +1569,9 @@ static INPUT_PORTS_START( cmaster )
PORT_INCLUDE( cmv4_dsw1 )
PORT_MODIFY("DSW1")
- /* DSW1-1 unused */
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW1:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
/* Hopper Out Switch not checked */
/* Payout Mode not checked */
/* '7' In Double Up Game OK */
@@ -1620,7 +1627,9 @@ static INPUT_PORTS_START( cmasterb )
PORT_INCLUDE( cmv4_dsw1 )
PORT_MODIFY("DSW1")
- /* DSW1-1 unused */
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW1:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
/* Hopper Out Switch not checked */
/* Payout Mode not checked */
/* '7' In Double Up Game OK */
@@ -1659,6 +1668,76 @@ static INPUT_PORTS_START( cmasterb )
/* Test Mode For Disp. Of Doll not checked */
INPUT_PORTS_END
+static INPUT_PORTS_START( cmezspin )
+ PORT_START("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) PORT_NAME("Stop 3 / Big")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) PORT_NAME("Stop 1 / D-UP")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP_ALL ) PORT_NAME("Stop All / Take")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop 2 / Small / Info")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start")
+
+ PORT_INCLUDE( cmv4_coins )
+
+ PORT_INCLUDE( cmv4_service )
+
+ PORT_INCLUDE( cmv4_dsw1 )
+ PORT_MODIFY("DSW1")
+ /* Hold Pair OK */
+ /* Hopper Out Switch not checked */
+ /* Payout Mode not checked */
+ PORT_DIPNAME( 0x08, 0x00, "'7' In Double Up Game" ) PORT_DIPLOCATION("DSW1:4") /* OK */
+ PORT_DIPSETTING( 0x00, "Win" )
+ PORT_DIPSETTING( 0x08, "Even" )
+ PORT_DIPNAME( 0x10, 0x00, "Double Up Game Pay Rate" ) PORT_DIPLOCATION("DSW1:5") /* OK */
+ PORT_DIPSETTING( 0x00, "70%" )
+ PORT_DIPSETTING( 0x10, "80%" )
+ /* Double Up Game OK */
+ PORT_DIPNAME( 0xc0, 0x00, "Bet Max" ) PORT_DIPLOCATION("DSW1:7,8") /* OK */
+ PORT_DIPSETTING( 0x00, "16" )
+ PORT_DIPSETTING( 0x40, "32" )
+ PORT_DIPSETTING( 0x80, "64" )
+ PORT_DIPSETTING( 0xc0, "96" )
+
+ PORT_INCLUDE( cmv4_dsw2 )
+ PORT_MODIFY("DSW2")
+ PORT_DIPNAME( 0x03, 0x00, "Main Game Pay Rate" ) PORT_DIPLOCATION("DSW2:1,2") /* OK */
+ PORT_DIPSETTING( 0x03, "55%" )
+ PORT_DIPSETTING( 0x02, "60%" )
+ PORT_DIPSETTING( 0x01, "65%" )
+ PORT_DIPSETTING( 0x00, "70%" )
+ PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:3")
+ PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ /* Hopper Limit not checked */
+ /* 100+ Odds Sound not checked */
+ /* Key In Type OK */
+ /* Center Super 7 Bet Limit related with Min. Bet For Bonus Play (DSW4-6) - not checked */
+
+ PORT_INCLUDE( cmv4_dsw3 ) /* all OK */
+
+ PORT_INCLUDE( cmv4_dsw4 )
+ PORT_MODIFY("DSW4")
+ /* Credit Limit not checked */
+ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:4")
+ PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ /* Type Of Coin D OK */
+ /* Min. Bet For Bonus Play OK */
+ /* Reel Speed OK */
+ /* Hopper Out By Coin A OK */
+
+ PORT_INCLUDE( cmv4_dsw5 )
+ /* Display of Doll On Demo only affects payout table screen */
+ /* Coin In Limit OK */
+ /* Condition for 3 Kind Of Bonus OK */
+ /* Display Of Doll At All Fr. Bonus not checked */
+ /* DSW5-7 listed as unused */
+ /* Test Mode For Disp. Of Doll not checked */
+INPUT_PORTS_END
+
static INPUT_PORTS_START( cmasterc )
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -1676,7 +1755,9 @@ static INPUT_PORTS_START( cmasterc )
PORT_INCLUDE( cmv4_dsw1 )
PORT_MODIFY("DSW1")
- /* DSW1-1 unused */
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW1:1")
+ PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( On ) )
/* Hopper Out Switch not checked */
/* Payout Mode not checked */
/* '7' In Double Up Game OK */
@@ -1721,35 +1802,35 @@ static INPUT_PORTS_START( cmast91 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_GAMBLE_HIGH ) PORT_NAME("Big")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_D_UP )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_TAKE )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_LOW ) PORT_NAME("Small / Info")
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start")
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SLOT_STOP1 ) PORT_NAME("Stop 1 / Take")
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SLOT_STOP2 ) PORT_NAME("Stop 2 / Bet" )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SLOT_STOP3 ) PORT_NAME("Stop 3 / Small / Info")
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Start / Stop All")
PORT_INCLUDE( cmv4_coins )
PORT_INCLUDE( cmv4_service )
PORT_START("DSW1")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW1:1") /* OK */
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW1:1") /* OK */
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x02, 0x02, "Hopper Out Switch" ) PORT_DIPLOCATION("DSW1:2") /* OK */
+ PORT_DIPNAME( 0x02, 0x02, "Hopper Out Switch" ) PORT_DIPLOCATION("DSW1:2") /* OK */
PORT_DIPSETTING( 0x02, "Active Low" )
PORT_DIPSETTING( 0x00, "Active High" )
- PORT_DIPNAME( 0x04, 0x00, "Payout Mode" ) PORT_DIPLOCATION("DSW1:3") /* OK */
+ PORT_DIPNAME( 0x04, 0x00, "Payout Mode" ) PORT_DIPLOCATION("DSW1:3") /* OK */
PORT_DIPSETTING( 0x04, "Payout Switch" )
PORT_DIPSETTING( 0x00, "Automatic" )
- PORT_DIPNAME( 0x08, 0x00, "W-UP '7'" ) PORT_DIPLOCATION("DSW1:4") /* not checked */
- PORT_DIPSETTING( 0x08, "Loss" )
- PORT_DIPSETTING( 0x00, "Even" )
- PORT_DIPNAME( 0x10, 0x00, "W-UP Pay Rate" ) PORT_DIPLOCATION("DSW1:5") /* OK */
+ PORT_DIPNAME( 0x08, 0x00, "'7' In Double Up Game" ) PORT_DIPLOCATION("DSW1:4") /* OK */
+ PORT_DIPSETTING( 0x08, "Even" )
+ PORT_DIPSETTING( 0x00, "Loss" )
+ PORT_DIPNAME( 0x10, 0x00, "Double Up Game Pay Rate" ) PORT_DIPLOCATION("DSW1:5") /* OK */
PORT_DIPSETTING( 0x00, "80%" )
PORT_DIPSETTING( 0x10, "90%" )
- PORT_DIPNAME( 0x20, 0x00, "W-UP Game" ) PORT_DIPLOCATION("DSW1:6") /* OK */
+ PORT_DIPNAME( 0x20, 0x00, "Double Up Game" ) PORT_DIPLOCATION("DSW1:6") /* OK */
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0xc0, 0xc0, "Bet Max" ) PORT_DIPLOCATION("DSW1:7,8") /* OK */
+ PORT_DIPNAME( 0xc0, 0xc0, "Bet Max" ) PORT_DIPLOCATION("DSW1:7,8") /* OK */
PORT_DIPSETTING( 0x00, "8" )
PORT_DIPSETTING( 0x40, "16" )
PORT_DIPSETTING( 0x80, "32" )
@@ -1777,16 +1858,18 @@ static INPUT_PORTS_START( cmast91 )
PORT_INCLUDE( cmv4_dsw5 )
PORT_MODIFY("DSW5")
- PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:1") /* normally Display of Doll On Demo, but no whores in this set */
+ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:1") /* normally Display of Doll On Demo, but no whores in this set */
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
/* Coin In Limit OK */
/* Condition For 3 Kind Of Bonus not checked */
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:6") /* normally Display Of Doll At All Fr. Bonus, but no whores in this set */
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
+ PORT_DIPNAME( 0x20, 0x20, "Show Odds In Double Up Game" ) PORT_DIPLOCATION("DSW5:6") /* OK */
+ PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( On ) )
+ PORT_DIPNAME( 0x40, 0x40, "Skill Stop" ) PORT_DIPLOCATION("DSW5:7") /* OK */
+ PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- /* DSW5-7 listed as unused */
- PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:8") /* normally Test Mode For Disp. Of Doll, but no whores in this set */
+ PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW5:8") /* normally Test Mode For Disp. Of Doll, but no whores in this set */
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
@@ -6006,7 +6089,7 @@ static INPUT_PORTS_START( crazybon )
PORT_INCLUDE( cmv4_service )
PORT_START("DSW1")
- PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:1")
+ PORT_DIPNAME( 0x01, 0x00, "Hold Pair" ) PORT_DIPLOCATION("DSW1:1") /* OK - use Take button */
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x00, "Hopper Out Switch" ) PORT_DIPLOCATION("DSW1:2") /* not checked */
@@ -6096,9 +6179,9 @@ static INPUT_PORTS_START( crazybon )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:4")
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW4:5")
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
+ PORT_DIPNAME( 0x10, 0x10, "Fast Take With" ) PORT_DIPLOCATION("DSW4:5") /* OK */
+ PORT_DIPSETTING( 0x10, "Take" )
+ PORT_DIPSETTING( 0x00, "Start" )
PORT_DIPNAME( 0x20, 0x20, "Bonus Min Bet" ) PORT_DIPLOCATION("DSW4:6") /* OK */
PORT_DIPSETTING( 0x20, "16" )
PORT_DIPSETTING( 0x00, "32" )
@@ -13151,9 +13234,9 @@ GAME( 199?, moonlght, goldstar, moonlght, goldstar, driver_device, 0,
GAMEL( 199?, chrygld, 0, chrygld, chrygld, cb3_state, chrygld, ROT0, "bootleg", "Cherry Gold I", 0, layout_chrygld )
GAMEL( 199?, chry10, 0, chrygld, chry10, cb3_state, chry10, ROT0, "bootleg", "Cherry 10 (bootleg with PIC16F84)", 0, layout_chrygld )
GAME( 199?, goldfrui, goldstar, goldfrui, goldstar, driver_device, 0, ROT0, "bootleg", "Gold Fruit", 0 ) // maybe fullname should be 'Gold Fruit (main 40%)'
-GAME( 2001, super9, goldstar, super9, goldstar, goldstar_state, super9, ROT0, "Playmark", "Super Nove (Playmark)", GAME_NOT_WORKING ) // need to decode gfx and see the program loops/reset...
-GAME( 2001, wcherry, 0, wcherry, chrygld, goldstar_state, wcherry, ROT0, "bootleg", "Win Cherry (ver 0.16 - 19990219)", GAME_NOT_WORKING )
-GAME( 199?, star100, 0, star100, star100, driver_device, 0, ROT0, "Sang Ho", "Ming Xing 100 (Star 100)", GAME_IMPERFECT_COLORS )
+GAME( 2001, super9, goldstar, super9, goldstar, goldstar_state, super9, ROT0, "Playmark", "Super Nove (Playmark)", MACHINE_NOT_WORKING ) // need to decode gfx and see the program loops/reset...
+GAME( 2001, wcherry, 0, wcherry, chrygld, goldstar_state, wcherry, ROT0, "bootleg", "Win Cherry (ver 0.16 - 19990219)", MACHINE_NOT_WORKING )
+GAME( 199?, star100, 0, star100, star100, driver_device, 0, ROT0, "Sang Ho", "Ming Xing 100 (Star 100)", MACHINE_IMPERFECT_COLORS )
// are these really dyna, or bootlegs?
@@ -13161,14 +13244,14 @@ GAMEL( 199?, ncb3, 0, ncb3, ncb3, driver_device, 0,
GAMEL( 199?, cb3a, ncb3, ncb3, cb3a, driver_device, 0, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, set 2)", 0, layout_cherryb3 )
GAMEL( 199?, cb3, ncb3, ncb3, ncb3, cb3_state, cb3, ROT0, "Dyna", "Cherry Bonus III (ver.1.40, encrypted)", 0, layout_cherryb3 )
GAMEL( 199?, cb3b, ncb3, cherrys, ncb3, cb3_state, cherrys, ROT0, "Dyna", "Cherry Bonus III (alt)", 0, layout_cherryb3 )
-GAME( 199?, cb3c, ncb3, cb3c, chrygld, cb3_state, cb3, ROT0, "bootleg", "Cherry Bonus III (alt, set 2)", GAME_NOT_WORKING)
+GAME( 199?, cb3c, ncb3, cb3c, chrygld, cb3_state, cb3, ROT0, "bootleg", "Cherry Bonus III (alt, set 2)", MACHINE_NOT_WORKING)
GAMEL( 199?, cb3d, ncb3, ncb3, ncb3, driver_device, 0, ROT0, "bootleg", "Cherry Bonus III (set 3)", 0, layout_cherryb3 )
GAMEL( 199?, cb3e, ncb3, cb3e, chrygld, cb3_state, cb3e, ROT0, "bootleg", "Cherry Bonus III (set 4, encrypted bootleg)", 0, layout_chrygld )
-GAME( 1996, cmast97, ncb3, cm97, chrygld, driver_device, 0, ROT0, "Dyna", "Cherry Master '97", GAME_NOT_WORKING) // fix prom decode
+GAME( 1996, cmast97, ncb3, cm97, chrygld, driver_device, 0, ROT0, "Dyna", "Cherry Master '97", MACHINE_NOT_WORKING) // fix prom decode
// looks like a hack of Cherry Bonus 3
-GAME( 199?, chryangl, ncb3, cm, chryangl, cmaster_state, cmv4, ROT0, "<unknown>", "Cherry Angel", GAME_NOT_WORKING )
+GAME( 199?, chryangl, ncb3, cm, chryangl, cmaster_state, cmv4, ROT0, "<unknown>", "Cherry Angel", MACHINE_NOT_WORKING )
// cherry master hardware has a rather different mem map, but is basically the same
@@ -13181,27 +13264,27 @@ GAMEL( 198?, cmv801, 0, cm, cmv801, cmaster_state, cm,
// the original, unmodified dyna versions is almost impossible due to lack of documentation from back in the day,
// even original boards almost always run modified sets
GAMEL( 1992, cmv4, 0, cm, cmv4, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master (ver.4, set 1)", 0, layout_cmv4 )
-GAMEL( 1992, cmv4a, cmv4, cm, cmv4, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master (ver.4, set 2)", GAME_NOT_WORKING, layout_cmv4 ) // stealth game?
+GAMEL( 1992, cmv4a, cmv4, cm, cmv4, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master (ver.4, set 2)", MACHINE_NOT_WORKING, layout_cmv4 ) // stealth game?
GAMEL( 199?, cmwm, cmv4, cm, cmv4, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master (Watermelon bootleg / hack)", 0, layout_cmv4 ) // CM Fruit Bonus ver.2 T bootleg/hack
GAMEL( 1995, cmfun, cmv4, cm, cmv4, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master (Fun USA v2.5 bootleg / hack)", 0, layout_cmv4 )
GAMEL( 1991, cmaster, 0, cm, cmaster, driver_device, 0, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 1)", 0, layout_cmaster )
GAMEL( 1991, cmasterb, cmaster, cm, cmasterb, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 2)", 0, layout_cmasterb )
-GAMEL( 1991, cmezspin, cmaster, cm, cmasterb, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (E-Z Spin bootleg / hack)", 0, layout_cmasterb ) // CM Fruit Bonus 55 ver.2 bootleg/hack
+GAMEL( 1991, cmezspin, cmaster, cm, cmezspin, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (E-Z Spin bootleg / hack)", 0, layout_cmezspin ) // CM Fruit Bonus 55 ver.2 bootleg/hack
GAMEL( 1991, cmasterc, cmaster, cmasterc, cmasterc, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 3)", 0, layout_cmasterc )
-GAMEL( 1991, cmasterbv, cmaster, cm, cmasterb, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 4, with Blitz Poker ROM?)", GAME_NOT_WORKING, layout_cmasterb ) // Cherry Master works, but no idea how to use the Blitz ROM
+GAMEL( 1991, cmasterbv, cmaster, cm, cmasterb, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 4, with Blitz Poker ROM?)", MACHINE_NOT_WORKING, layout_cmasterb ) // Cherry Master works, but no idea how to use the Blitz ROM
GAMEL( 1991, cmasterd, cmaster, cm, cmasterb, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 5)", 0, layout_cmasterb )
GAMEL( 1991, cmastere, cmaster, cm, cmasterb, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 6)", 0, layout_cmasterb )
GAMEL( 1991, cmasterf, cmaster, cm, cmasterb, cmaster_state, cmv4, ROT0, "Dyna", "Cherry Master I (ver.1.01, set 7)", 0, layout_cmasterb )
GAMEL( 1991, tonypok, 0, cm, tonypok, cmaster_state, tonypok, ROT0, "Corsica", "Poker Master (Tony-Poker V3.A, hack?)", 0 , layout_tonypok )
-GAME( 199?, jkrmast, 0, pkrmast, pkrmast, driver_device, 0, ROT0, "<unknown>", "Joker Master", GAME_NOT_WORKING ) // encrypted?
-GAME( 199?, pkrmast, jkrmast, pkrmast, pkrmast, driver_device, 0, ROT0, "<unknown>", "Poker Master (ED-1993 set 1)", GAME_NOT_WORKING ) // incomplete dump + encrypted?
-GAME( 1993, pkrmasta, jkrmast, pkrmast, pkrmast, driver_device, 0, ROT0, "<unknown>", "Poker Master (ED-1993 set 2)", GAME_NOT_WORKING ) // incomplete dump + encrypted?
+GAME( 199?, jkrmast, 0, pkrmast, pkrmast, driver_device, 0, ROT0, "<unknown>", "Joker Master", MACHINE_NOT_WORKING ) // encrypted?
+GAME( 199?, pkrmast, jkrmast, pkrmast, pkrmast, driver_device, 0, ROT0, "<unknown>", "Poker Master (ED-1993 set 1)", MACHINE_NOT_WORKING ) // incomplete dump + encrypted?
+GAME( 1993, pkrmasta, jkrmast, pkrmast, pkrmast, driver_device, 0, ROT0, "<unknown>", "Poker Master (ED-1993 set 2)", MACHINE_NOT_WORKING ) // incomplete dump + encrypted?
GAME( 1991, cmast91, 0, cmast91, cmast91, goldstar_state, cmast91, ROT0, "Dyna", "Cherry Master '91 (ver.1.30)", 0 )
-GAME( 1992, cmast92, 0, cmast91, cmast91, goldstar_state, cmast91, ROT0, "Dyna", "Cherry Master '92", GAME_NOT_WORKING ) // no gfx roms are dumped
+GAME( 1992, cmast92, 0, cmast91, cmast91, goldstar_state, cmast91, ROT0, "Dyna", "Cherry Master '92", MACHINE_NOT_WORKING ) // no gfx roms are dumped
GAMEL( 1989, lucky8, 0, lucky8, lucky8, driver_device, 0, ROT0, "Wing Co., Ltd.", "New Lucky 8 Lines (set 1, W-4)", 0, layout_lucky8 )
@@ -13213,23 +13296,23 @@ GAMEL( 1989, lucky8e, lucky8, lucky8, lucky8d, driver_device, 0,
GAMEL( 198?, ns8lines, 0, lucky8, lucky8b, driver_device, 0, ROT0, "<unknown>", "New Lucky 8 Lines / New Super 8 Lines (W-4)", 0, layout_lucky8 )
GAMEL( 198?, ns8linew, 0, lucky8, ns8linew, driver_device, 0, ROT0, "<unknown>", "New Lucky 8 Lines / New Super 8 Lines (F-5, Witch Bonus)", 0, layout_lucky8 )
-GAMEL( 198?, kkotnoli, 0, kkotnoli, kkotnoli, driver_device, 0, ROT0, "hack", "Kkot No Li (Kill the Bees)", GAME_IMPERFECT_COLORS, layout_lucky8 )
+GAMEL( 198?, kkotnoli, 0, kkotnoli, kkotnoli, driver_device, 0, ROT0, "hack", "Kkot No Li (Kill the Bees)", MACHINE_IMPERFECT_COLORS, layout_lucky8 )
GAME( 198?, ladylinr, 0, ladylinr, ladylinr, driver_device, 0, ROT0, "TAB Austria", "Lady Liner", 0 )
-GAME( 198?, wcat3, 0, wcat3, lucky8, driver_device, 0, ROT0, "E.A.I.", "Wild Cat 3", GAME_NOT_WORKING )
+GAME( 198?, wcat3, 0, wcat3, lucky8, driver_device, 0, ROT0, "E.A.I.", "Wild Cat 3", MACHINE_NOT_WORKING )
-GAME( 1985, luckylad, 0, lucky8, luckylad, driver_device, 0, ROT0, "Wing Co., Ltd.", "Lucky Lady (Wing, encrypted)", GAME_NOT_WORKING ) // encrypted (see notes in rom_load)...
-GAME( 1991, megaline, 0, megaline, megaline, driver_device, 0, ROT0, "Fun World", "Mega Lines", GAME_NOT_WORKING )
-GAME( 1990, bonusch, 0, bonusch, bonusch, driver_device, 0, ROT0, "Wing Co., Ltd.", "Bonus Chance (W-8)", GAME_NOT_WORKING ) // M80C51F MCU
+GAME( 1985, luckylad, 0, lucky8, luckylad, driver_device, 0, ROT0, "Wing Co., Ltd.", "Lucky Lady (Wing, encrypted)", MACHINE_NOT_WORKING ) // encrypted (see notes in rom_load)...
+GAME( 1991, megaline, 0, megaline, megaline, driver_device, 0, ROT0, "Fun World", "Mega Lines", MACHINE_NOT_WORKING )
+GAME( 1990, bonusch, 0, bonusch, bonusch, driver_device, 0, ROT0, "Wing Co., Ltd.", "Bonus Chance (W-8)", MACHINE_NOT_WORKING ) // M80C51F MCU
GAMEL( 1993, bingowng, 0, bingowng, bingowng, driver_device, 0, ROT0, "Wing Co., Ltd.", "Bingo (set 1)", 0, layout_bingowng )
GAMEL( 1993, bingownga, bingowng, bingownga,bingownga,driver_device, 0, ROT0, "Wing Co., Ltd.", "Bingo (set 2)", 0, layout_bingowng )
-GAME( 1992, magodds, 0, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 1)", GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS )
-GAME( 1992, magoddsa, magodds, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 2)", GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS )
-GAME( 1992, magoddsb, magodds, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 3)", GAME_WRONG_COLORS | GAME_IMPERFECT_GRAPHICS )
-GAME( 1991, magoddsc, magodds, magodds, magoddsc, wingco_state, magoddsc, ROT0, "Pal Company", "Magical Odds (set 4, custom encrypted CPU block)", GAME_WRONG_COLORS | GAME_NOT_WORKING |GAME_NO_SOUND)
-GAME( 1991, magoddsd, magodds, magodds, magoddsc, wingco_state, magoddsc, ROT0, "Pal Company", "Magical Odds (set 5, custom encrypted CPU block)", GAME_WRONG_COLORS | GAME_NOT_WORKING |GAME_NO_SOUND)
+GAME( 1992, magodds, 0, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 1)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, magoddsa, magodds, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 2)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1992, magoddsb, magodds, magodds, magodds, driver_device, 0, ROT0, "Pal Company / Micro Manufacturing Inc.", "Magical Odds (set 3)", MACHINE_WRONG_COLORS | MACHINE_IMPERFECT_GRAPHICS )
+GAME( 1991, magoddsc, magodds, magodds, magoddsc, wingco_state, magoddsc, ROT0, "Pal Company", "Magical Odds (set 4, custom encrypted CPU block)", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING |MACHINE_NO_SOUND)
+GAME( 1991, magoddsd, magodds, magodds, magoddsc, wingco_state, magoddsc, ROT0, "Pal Company", "Magical Odds (set 5, custom encrypted CPU block)", MACHINE_WRONG_COLORS | MACHINE_NOT_WORKING |MACHINE_NO_SOUND)
/* --- Amcoe games --- */
@@ -13260,7 +13343,7 @@ GAMEL( 1996, nc96e, nc96, amcoe2, nfb96, cmaster_state, nfb96_d,
GAMEL( 1996, nc96f, nc96, amcoe2, nfb96, cmaster_state, nfb96_dk, ROT0, "Amcoe", "New Cherry '96 Special Edition (v3.62, DK PCB)", 0, layout_nfb96 ) /* DK Sub-PCB */
GAMEL( 2000, nc96txt, nc96, amcoe2, nfb96tx, cmaster_state, nfb96_c2, ROT0, "Amcoe", "New Cherry '96 Special Edition (v1.32 Texas XT, C2 PCB)", 0, layout_nfb96tx ) /* ver. tc1.32axt C2 Sub-PCB */
-GAME( 2009, fb2010, 0, amcoe2, nfb96tx, cmaster_state, fb2010, ROT0, "Amcoe", "Fruit Bonus 2010", GAME_NOT_WORKING ) // no gfx dumped
+GAME( 2009, fb2010, 0, amcoe2, nfb96tx, cmaster_state, fb2010, ROT0, "Amcoe", "Fruit Bonus 2010", MACHINE_NOT_WORKING ) // no gfx dumped
GAMEL( 1996, roypok96, 0, amcoe2, roypok96, cmaster_state, rp35, ROT0, "Amcoe", "Royal Poker '96 (set 1, v97-3.5)", 0, layout_roypok96 )
GAMEL( 1996, roypok96a, roypok96, amcoe2, roypok96a, cmaster_state, rp36, ROT0, "Amcoe", "Royal Poker '96 (set 2, v98-3.6)", 0, layout_roypok96 )
@@ -13272,12 +13355,12 @@ GAMEL( 1996, roypok96b, roypok96, amcoe2, roypok96a, cmaster_state, rp36c3,
*/
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS */
GAME( 1996, nfb96se, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 1, v97-3.3c Portuguese)", 0 )
-GAME( 1996, nfb96sea, nfb96, amcoe2, nfb96bl, cmaster_state, nfb96sea, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 2, v97-3.3c English)", GAME_WRONG_COLORS ) // encrypted program
-GAME( 1996, nfb96seb, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 3, v97-3.3c Portuguese)", GAME_WRONG_COLORS )
-GAME( 2002, carb2002, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "Carriage Bonus 2002 (bootleg)", GAME_WRONG_COLORS )
-GAME( 2003, carb2003, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "Carriage Bonus 2003 (bootleg)", GAME_WRONG_COLORS )
+GAME( 1996, nfb96sea, nfb96, amcoe2, nfb96bl, cmaster_state, nfb96sea, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 2, v97-3.3c English)", MACHINE_WRONG_COLORS ) // encrypted program
+GAME( 1996, nfb96seb, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "New Fruit Bonus '96 Special Edition (bootleg set 3, v97-3.3c Portuguese)", MACHINE_WRONG_COLORS )
+GAME( 2002, carb2002, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "Carriage Bonus 2002 (bootleg)", MACHINE_WRONG_COLORS )
+GAME( 2003, carb2003, nfb96, amcoe2, nfb96bl, driver_device, 0, ROT0, "bootleg", "Carriage Bonus 2003 (bootleg)", MACHINE_WRONG_COLORS )
-GAME( 2003, nfm, 0, nfm, nfm, driver_device, 0, ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic)", GAME_NOT_WORKING ) // vFB02-07A "Copyright By Ms. Liu Orchis 2003/03/06"
+GAME( 2003, nfm, 0, nfm, nfm, driver_device, 0, ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic)", MACHINE_NOT_WORKING ) // vFB02-07A "Copyright By Ms. Liu Orchis 2003/03/06"
// these have 'cherry 1994' in the program roms, but also "Super Cherry / New Cherry Gold '99" probably hacks of a 1994 version of Cherry Bonus / Cherry Master (Super Cherry Master?)
GAMEL(1999, unkch1, 0, unkch, unkch, unkch_state, unkch1, ROT0, "bootleg", "New Cherry Gold '99 (bootleg of Super Cherry Master) (set 1)", 0, layout_unkch )
@@ -13292,9 +13375,9 @@ GAMEL(1999, unkch4, unkch1, unkch, unkch4, unkch_state, unkch4,
/* YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS LAYOUT */
GAMEL( 198?, cmpacman, 0, cm, cmpacman, cmaster_state, cm, ROT0, "<unknown>", "Super Pacman (v1.2) + Cherry Master (Corsica, v8.31)", 0, layout_cmpacman ) // need to press K to switch between games...
GAMEL( 198?, cmtetris, 0, cm, cmtetris, cmaster_state, cm, ROT0, "<unknown>", "Tetris + Cherry Master (Corsica, v8.01, set 1)", 0, layout_cmpacman ) // need to press K/L to switch between games...
-GAMEL( 198?, cmtetrsa, 0, cm, cmtetris, cmaster_state, cm, ROT0, "<unknown>", "Tetris + Cherry Master (Corsica, v8.01, set 2)", GAME_NOT_WORKING, layout_cmpacman ) // seems banked...
-GAMEL( 198?, cmtetrsb, 0, cm, cmtetris, cmaster_state, cm, ROT0, "<unknown>", "Tetris + Cherry Master (+K, Canada Version, encrypted)", GAME_NOT_WORKING, layout_cmpacman ) // different Tetris game. press insert to throttle and see the attract running.
-GAMEL( 1997, crazybon, 0, pkrmast, crazybon, driver_device, 0, ROT0, "bootleg (Crazy Co.)", "Crazy Bonus 2002", GAME_IMPERFECT_COLORS, layout_crazybon )
+GAMEL( 198?, cmtetrsa, 0, cm, cmtetris, cmaster_state, cm, ROT0, "<unknown>", "Tetris + Cherry Master (Corsica, v8.01, set 2)", MACHINE_NOT_WORKING, layout_cmpacman ) // seems banked...
+GAMEL( 198?, cmtetrsb, 0, cm, cmtetris, cmaster_state, cm, ROT0, "<unknown>", "Tetris + Cherry Master (+K, Canada Version, encrypted)", MACHINE_NOT_WORKING, layout_cmpacman ) // different Tetris game. press insert to throttle and see the attract running.
+GAMEL( 1997, crazybon, 0, pkrmast, crazybon, driver_device, 0, ROT0, "bootleg (Crazy Co.)", "Crazy Bonus 2002", MACHINE_IMPERFECT_COLORS, layout_crazybon )
/* other possible stealth sets:
- cmv4a ---> see the 1fxx zone. put a bp in 1f9f to see the loop.
diff --git a/src/mame/drivers/good.c b/src/mame/drivers/good.c
index 169792cd78b..1169896b980 100644
--- a/src/mame/drivers/good.c
+++ b/src/mame/drivers/good.c
@@ -51,7 +51,6 @@ public:
required_shared_ptr<UINT16> m_fg_tilemapram;
required_shared_ptr<UINT16> m_bg_tilemapram;
UINT16 * m_sprites;
-// UINT16 * m_paletteram; // currently this uses generic palette handling
/* video-related */
tilemap_t *m_bg_tilemap;
@@ -324,4 +323,4 @@ ROM_START( good )
ROM_LOAD16_BYTE( "grp-04", 0x40001, 0x20000, CRC(83dbbb52) SHA1(e597f3cbb54b5cdf2230ea6318f970319061e31b) )
ROM_END
-GAME( 1998, good, 0, good, good, driver_device, 0, ROT0, "<unknown>", "Good (Korea)", GAME_SUPPORTS_SAVE )
+GAME( 1998, good, 0, good, good, driver_device, 0, ROT0, "<unknown>", "Good (Korea)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/goodejan.c b/src/mame/drivers/goodejan.c
index 2559538edcc..b8e66f4608b 100644
--- a/src/mame/drivers/goodejan.c
+++ b/src/mame/drivers/goodejan.c
@@ -756,6 +756,6 @@ ROM_START( goodejana )
ROM_LOAD( "fmj08.083", 0x000, 0x100, CRC(9657b7ad) SHA1(e9b469c2b3534593f7fe0ea19cbbf93b55957e42) )
ROM_END
-GAME( 1991, totmejan, 0, totmejan, goodejan, driver_device, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Tottemo E Jong", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1991, goodejan, 0, goodejan, goodejan, driver_device, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 1)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1991, goodejana,goodejan, goodejan, goodejan, driver_device, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 2)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1991, totmejan, 0, totmejan, goodejan, driver_device, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Tottemo E Jong", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, goodejan, 0, goodejan, goodejan, driver_device, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1991, goodejana,goodejan, goodejan, goodejan, driver_device, 0, ROT0, "Seibu Kaihatsu (Tecmo license)", "Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gotcha.c b/src/mame/drivers/gotcha.c
index c51a283a6f1..11c96bcdb0b 100644
--- a/src/mame/drivers/gotcha.c
+++ b/src/mame/drivers/gotcha.c
@@ -381,5 +381,5 @@ ROM_START( ppchamp )
ROM_LOAD( "uz11", 0x00000, 0x80000, CRC(3d96274c) SHA1(c7a670af86194c370bf8fb30afbe027ab78a0227) )
ROM_END
-GAME( 1997, gotcha, 0, gotcha, gotcha, driver_device, 0, ROT0, "Dongsung / Para", "Got-cha Mini Game Festival", GAME_SUPPORTS_SAVE )
-GAME( 1997, ppchamp, gotcha, gotcha, gotcha, driver_device, 0, ROT0, "Dongsung / Para", "Pasha Pasha Champ Mini Game Festival (Korea)", GAME_SUPPORTS_SAVE )
+GAME( 1997, gotcha, 0, gotcha, gotcha, driver_device, 0, ROT0, "Dongsung / Para", "Got-cha Mini Game Festival", MACHINE_SUPPORTS_SAVE )
+GAME( 1997, ppchamp, gotcha, gotcha, gotcha, driver_device, 0, ROT0, "Dongsung / Para", "Pasha Pasha Champ Mini Game Festival (Korea)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gottlieb.c b/src/mame/drivers/gottlieb.c
index 8c35f4e1864..401417418d2 100644
--- a/src/mame/drivers/gottlieb.c
+++ b/src/mame/drivers/gottlieb.c
@@ -2584,22 +2584,22 @@ DRIVER_INIT_MEMBER(gottlieb_state,vidvince)
*************************************/
/* games using rev 1 sound board */
-GAME( 1982, reactor, 0, reactor, reactor, gottlieb_state, ramtiles, ROT0, "Gottlieb", "Reactor", GAME_IMPERFECT_SOUND )
-GAME( 1982, qbert, 0, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb", "Q*bert (US set 1)", GAME_IMPERFECT_SOUND )
-GAME( 1982, qberta, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb", "Q*bert (US set 2)", GAME_IMPERFECT_SOUND )
-GAME( 1982, qbertj, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb (Konami license)", "Q*bert (Japan)", GAME_IMPERFECT_SOUND )
-GAME( 1982, myqbert, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb", "Mello Yello Q*bert", GAME_IMPERFECT_SOUND )
-GAME( 1982, qberttst, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb", "Q*bert (early test version)", GAME_IMPERFECT_SOUND )
-GAME( 1982, qbtrktst, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb", "Q*bert Board Input Test Rom", GAME_IMPERFECT_SOUND )
+GAME( 1982, reactor, 0, reactor, reactor, gottlieb_state, ramtiles, ROT0, "Gottlieb", "Reactor", MACHINE_IMPERFECT_SOUND )
+GAME( 1982, qbert, 0, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb", "Q*bert (US set 1)", MACHINE_IMPERFECT_SOUND )
+GAME( 1982, qberta, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb", "Q*bert (US set 2)", MACHINE_IMPERFECT_SOUND )
+GAME( 1982, qbertj, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb (Konami license)", "Q*bert (Japan)", MACHINE_IMPERFECT_SOUND )
+GAME( 1982, myqbert, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb", "Mello Yello Q*bert", MACHINE_IMPERFECT_SOUND )
+GAME( 1982, qberttst, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb", "Q*bert (early test version)", MACHINE_IMPERFECT_SOUND )
+GAME( 1982, qbtrktst, qbert, qbert, qbert, gottlieb_state, qbert, ROT270, "Gottlieb", "Q*bert Board Input Test Rom", MACHINE_IMPERFECT_SOUND )
GAME( 1982, insector, 0, gottlieb1, insector, gottlieb_state, romtiles, ROT0, "Gottlieb", "Insector (prototype)", 0 )
-GAME( 1982, tylz, 0, tylz, tylz, gottlieb_state, romtiles, ROT0, "Mylstar", "Tylz (prototype)", GAME_IMPERFECT_SOUND ) // modified sound hw?
+GAME( 1982, tylz, 0, tylz, tylz, gottlieb_state, romtiles, ROT0, "Mylstar", "Tylz (prototype)", MACHINE_IMPERFECT_SOUND ) // modified sound hw?
GAME( 1984, argusg, 0, gottlieb1, argusg, gottlieb_state, ramtiles, ROT0, "Gottlieb", "Argus (Gottlieb, prototype)" , 0) // aka Guardian / Protector?
GAME( 1983, mplanets, 0, gottlieb1, mplanets, gottlieb_state, romtiles, ROT270, "Gottlieb", "Mad Planets", 0 )
GAME( 1983, mplanetsuk,mplanets, gottlieb1, mplanets, gottlieb_state, romtiles, ROT270, "Gottlieb (Taitel license)", "Mad Planets (UK)", 0 )
GAME( 1983, krull, 0, gottlieb1, krull, gottlieb_state, ramtiles, ROT270, "Gottlieb", "Krull", 0 )
-GAME( 1983, kngtmare, 0, gottlieb1, kngtmare, gottlieb_state, romtiles, ROT0, "Gottlieb", "Knightmare (prototype)", GAME_NO_SOUND ) // Missing sound ROMs
-GAME( 1983, sqbert, 0, qbert, qbert, gottlieb_state, qbert, ROT270, "Mylstar", "Faster, Harder, More Challenging Q*bert (prototype)", GAME_IMPERFECT_SOUND )
-GAME( 1983, qbertqub, 0, qbert, qbertqub, gottlieb_state, qbertqub, ROT270, "Mylstar", "Q*bert's Qubes", GAME_IMPERFECT_SOUND )
+GAME( 1983, kngtmare, 0, gottlieb1, kngtmare, gottlieb_state, romtiles, ROT0, "Gottlieb", "Knightmare (prototype)", MACHINE_NO_SOUND ) // Missing sound ROMs
+GAME( 1983, sqbert, 0, qbert, qbert, gottlieb_state, qbert, ROT270, "Mylstar", "Faster, Harder, More Challenging Q*bert (prototype)", MACHINE_IMPERFECT_SOUND )
+GAME( 1983, qbertqub, 0, qbert, qbertqub, gottlieb_state, qbertqub, ROT270, "Mylstar", "Q*bert's Qubes", MACHINE_IMPERFECT_SOUND )
GAME( 1984, curvebal, 0, gottlieb1, curvebal, gottlieb_state, romtiles, ROT270, "Mylstar", "Curve Ball", 0 )
/* games using rev 2 sound board */
@@ -2609,5 +2609,5 @@ GAME( 1984, cobram3, cobra, cobram3, cobram3, gottlieb_state, romtiles,
GAME( 1984, usvsthem, 0, g2laser, usvsthem, gottlieb_state, romtiles, ROT0, "Mylstar", "Us vs. Them", 0 )
GAME( 1984, 3stooges, 0, gottlieb2, 3stooges, gottlieb_state, stooges, ROT0, "Mylstar", "The Three Stooges In Brides Is Brides (set 1)", 0 )
GAME( 1984, 3stoogesa, 3stooges, gottlieb2, 3stooges, gottlieb_state, stooges, ROT0, "Mylstar", "The Three Stooges In Brides Is Brides (set 2)", 0 )
-GAME( 1984, vidvince, 0, gottlieb2, vidvince, gottlieb_state, vidvince, ROT0, "Mylstar", "Video Vince and the Game Factory (prototype)", GAME_IMPERFECT_GRAPHICS ) // sprite wrapping issues
+GAME( 1984, vidvince, 0, gottlieb2, vidvince, gottlieb_state, vidvince, ROT0, "Mylstar", "Video Vince and the Game Factory (prototype)", MACHINE_IMPERFECT_GRAPHICS ) // sprite wrapping issues
GAME( 1984, wizwarz, 0, gottlieb2, wizwarz, gottlieb_state, romtiles, ROT0, "Mylstar", "Wiz Warz (prototype)", 0 )
diff --git a/src/mame/drivers/gotya.c b/src/mame/drivers/gotya.c
index ae2ca946780..cdae400d0bb 100644
--- a/src/mame/drivers/gotya.c
+++ b/src/mame/drivers/gotya.c
@@ -274,5 +274,5 @@ ROM_START( gotya )
ROM_LOAD( "gb-07.bin", 0x7000, 0x1000, CRC(92a9f8bf) SHA1(9231cd86f24f1e6a585c3a919add50c1f8e42a4c) )
ROM_END
-GAME( 1981, thehand, 0, gotya, gotya, driver_device, 0, ROT270, "T.I.C.", "The Hand", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1981, gotya, thehand, gotya, gotya, driver_device, 0, ROT270, "Game-A-Tron", "Got-Ya (12/24/1981, prototype?)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1981, thehand, 0, gotya, gotya, driver_device, 0, ROT270, "T.I.C.", "The Hand", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1981, gotya, thehand, gotya, gotya, driver_device, 0, ROT270, "Game-A-Tron", "Got-Ya (12/24/1981, prototype?)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/gp2x.c b/src/mame/drivers/gp2x.c
index bf7e93ca44a..0865638044e 100644
--- a/src/mess/drivers/gp2x.c
+++ b/src/mame/drivers/gp2x.c
@@ -390,4 +390,4 @@ ROM_START(gp2x)
ROMX_LOAD( "gp2xyaffs.v4", 0x300000, 0x2dfed0, CRC(e77efc53) SHA1(21477ff77aacb84005bc465a03066d71031a6098), ROM_BIOS(3))
ROM_END
-CONS(2005, gp2x, 0, 0, gp2x, gp2x, driver_device, 0, "Game Park Holdings", "GP2X", GAME_NOT_WORKING|GAME_NO_SOUND)
+CONS(2005, gp2x, 0, 0, gp2x, gp2x, driver_device, 0, "Game Park Holdings", "GP2X", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/gp32.c b/src/mame/drivers/gp32.c
index d864d490c1b..26dc298a2ff 100644
--- a/src/mess/drivers/gp32.c
+++ b/src/mame/drivers/gp32.c
@@ -1723,4 +1723,4 @@ ROM_START( gp32 )
#endif
ROM_END
-CONS(2001, gp32, 0, 0, gp32, gp32, driver_device, 0, "Game Park Holdings", "GP32", ROT270|GAME_NOT_WORKING|GAME_NO_SOUND)
+CONS(2001, gp32, 0, 0, gp32, gp32, driver_device, 0, "Game Park Holdings", "GP32", ROT270|MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/gp_1.c b/src/mame/drivers/gp_1.c
index 81829bb7425..4a7911c39d8 100644
--- a/src/mame/drivers/gp_1.c
+++ b/src/mame/drivers/gp_1.c
@@ -528,13 +528,13 @@ ROM_START(vegasgp)
ROM_LOAD( "140b.13", 0x0800, 0x0800, CRC(cf26d67b) SHA1(05481e880e23a7bc1d1716b52ac1effc0db437f2))
ROM_END
-GAME(1978, gp_110, 0, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Model 110", GAME_IS_BIOS_ROOT)
-GAME(1978, blvelvet, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Black Velvet", GAME_MECHANICAL)
-GAME(1978, camlight, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Camel Lights", GAME_MECHANICAL)
-GAME(1978, foxylady, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Foxy Lady", GAME_MECHANICAL)
-GAME(1978, real, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Real", GAME_MECHANICAL)
-GAME(1978, rio, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Rio", GAME_MECHANICAL)
-GAME(1978, chucklck, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Chuck-A-Luck", GAME_MECHANICAL)
-GAME(1979, famlyfun, 0, gp_1s, gp_1, driver_device, 0, ROT0, "Game Plan", "Family Fun!", GAME_MECHANICAL)
-GAME(1979, startrip, 0, gp_1s, gp_1, driver_device, 0, ROT0, "Game Plan", "Star Trip", GAME_MECHANICAL)
-GAME(1979, vegasgp, 0, gp_1s, gp_1, driver_device, 0, ROT0, "Game Plan", "Vegas (Game Plan)", GAME_MECHANICAL)
+GAME(1978, gp_110, 0, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Model 110", MACHINE_IS_BIOS_ROOT)
+GAME(1978, blvelvet, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Black Velvet", MACHINE_MECHANICAL)
+GAME(1978, camlight, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Camel Lights", MACHINE_MECHANICAL)
+GAME(1978, foxylady, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Foxy Lady", MACHINE_MECHANICAL)
+GAME(1978, real, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Real", MACHINE_MECHANICAL)
+GAME(1978, rio, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Rio", MACHINE_MECHANICAL)
+GAME(1978, chucklck, gp_110, gp_1, gp_1, driver_device, 0, ROT0, "Game Plan", "Chuck-A-Luck", MACHINE_MECHANICAL)
+GAME(1979, famlyfun, 0, gp_1s, gp_1, driver_device, 0, ROT0, "Game Plan", "Family Fun!", MACHINE_MECHANICAL)
+GAME(1979, startrip, 0, gp_1s, gp_1, driver_device, 0, ROT0, "Game Plan", "Star Trip", MACHINE_MECHANICAL)
+GAME(1979, vegasgp, 0, gp_1s, gp_1, driver_device, 0, ROT0, "Game Plan", "Vegas (Game Plan)", MACHINE_MECHANICAL)
diff --git a/src/mame/drivers/gp_2.c b/src/mame/drivers/gp_2.c
index 8a506f9b8fa..1f1cd24fb46 100644
--- a/src/mame/drivers/gp_2.c
+++ b/src/mame/drivers/gp_2.c
@@ -807,24 +807,24 @@ ROM_START(suprnova)
ROM_END
// GP1 dips
-GAME(1979, sshootep, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Sharpshooter", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
-GAME(1979, coneyis, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Old Coney Island!", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
-GAME(1980, lizard, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Pinball Lizard", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
-GAME(1982, suprnova, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Super Nova", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
-GAME(1983, sshootr2, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Sharp Shooter II", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
+GAME(1979, sshootep, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Sharpshooter", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
+GAME(1979, coneyis, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Old Coney Island!", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
+GAME(1980, lizard, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Pinball Lizard", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
+GAME(1982, suprnova, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Super Nova", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
+GAME(1983, sshootr2, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Sharp Shooter II", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
// GP2 dips
-GAME(1981, gwarfare, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Global Warfare", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
-GAME(1982, mbossy, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Mike Bossy", GAME_IS_SKELETON_MECHANICAL)
-GAME(1984, attila, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Attila The Hun", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
+GAME(1981, gwarfare, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Global Warfare", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
+GAME(1982, mbossy, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Mike Bossy", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1984, attila, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Attila The Hun", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
// revolving match
-GAME(1984, agent777, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Agents 777", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
-GAME(1985, cpthook, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Captain Hook", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
-GAME(1985, ladyshot, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Lady Sharpshooter (set 1)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
-GAME(1985, ladyshota, ladyshot, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Lady Sharpshooter (set 2)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND )
+GAME(1984, agent777, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Agents 777", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
+GAME(1985, cpthook, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Captain Hook", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
+GAME(1985, ladyshot, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Lady Sharpshooter (set 1)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
+GAME(1985, ladyshota, ladyshot, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Lady Sharpshooter (set 2)", MACHINE_MECHANICAL | MACHINE_IMPERFECT_SOUND )
// credit (start) button not working
-GAME(1985, andromep, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Andromeda (set 1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1985, andromepa, andromep, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Andromeda (set 2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1985, cyclopes, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Cyclopes", GAME_IS_SKELETON_MECHANICAL)
+GAME(1985, andromep, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Andromeda (set 1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1985, andromepa, andromep, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Andromeda (set 2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1985, cyclopes, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Cyclopes", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/gpworld.c b/src/mame/drivers/gpworld.c
index ae4babd485d..eb65d853fb2 100644
--- a/src/mame/drivers/gpworld.c
+++ b/src/mame/drivers/gpworld.c
@@ -559,4 +559,4 @@ DRIVER_INIT_MEMBER(gpworld_state,gpworld)
/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS) */
-GAME( 1984, gpworld, 0, gpworld, gpworld, gpworld_state, gpworld, ROT0, "Sega", "GP World", GAME_NOT_WORKING|GAME_NO_SOUND)
+GAME( 1984, gpworld, 0, gpworld, gpworld, gpworld_state, gpworld, ROT0, "Sega", "GP World", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/gradius3.c b/src/mame/drivers/gradius3.c
index 099ab8690d8..94b4e5f2ed5 100644
--- a/src/mame/drivers/gradius3.c
+++ b/src/mame/drivers/gradius3.c
@@ -307,6 +307,7 @@ static MACHINE_CONFIG_START( gradius3, gradius3_state )
MCFG_DEVICE_ADD("k051960", K051960, 0)
MCFG_GFX_PALETTE("palette")
+ MCFG_K051960_SCREEN_TAG("screen")
MCFG_K051960_CB(gradius3_state, sprite_callback)
MCFG_K051960_PLANEORDER(K051960_PLANEORDER_GRADIUS3)
@@ -412,50 +413,50 @@ ROM_START( gradius3j )
ROM_END
ROM_START( gradius3js )
- ROM_REGION( 0x40000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "945_s13.f15", 0x00000, 0x20000, CRC(70c240a2) SHA1(82dc391572e1f61b0182cb031654d71adcdd5f6e) )
- ROM_LOAD16_BYTE( "945_s12.e15", 0x00001, 0x20000, CRC(bbc300d4) SHA1(e1ca98bc591575285d7bd2d4fefdf35fed10dcb6) )
-
- ROM_REGION( 0x100000, "sub", 0 )
- ROM_LOAD16_BYTE( "945_m09.r17", 0x000000, 0x20000, CRC(b4a6df25) SHA1(85533cf140d28f6f81c0b49b8061bda0924a613a) )
- ROM_LOAD16_BYTE( "945_m08.n17", 0x000001, 0x20000, CRC(74e981d2) SHA1(e7b47a2da01ff73293d2100c48fdf00b33125af5) )
- ROM_LOAD16_BYTE( "945_l06b.r11", 0x040000, 0x20000, CRC(83772304) SHA1(a90c75a3de670b6ec5e0fc201876d463b4a76766) )
- ROM_LOAD16_BYTE( "945_l06a.n11", 0x040001, 0x20000, CRC(e1fd75b6) SHA1(6160d80a2f1bf550e85d6253cf521a96f5a644cc) )
- ROM_LOAD16_BYTE( "945_l07c.r15", 0x080000, 0x20000, CRC(c1e399b6) SHA1(e95bd478dd3beea0175bf9ee4cededb111c4ace1) )
- ROM_LOAD16_BYTE( "945_l07a.n15", 0x080001, 0x20000, CRC(96222d04) SHA1(b55700f683a556b0e73dbac9c7b4ce485420d21c) )
- ROM_LOAD16_BYTE( "945_l07d.r13", 0x0c0000, 0x20000, CRC(4c16d4bd) SHA1(01dcf169b78a1e495214b10181401d1920b0c924) )
- ROM_LOAD16_BYTE( "945_l07b.n13", 0x0c0001, 0x20000, CRC(5e209d01) SHA1(0efa1bbfdc7e2ba1e0bb96245e2bfe961258b446) )
-
- ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "945_m05.d9", 0x00000, 0x10000, CRC(c8c45365) SHA1(b9a7b736b52bca42c7b8c8ed64c8df73e0116158) )
-
- ROM_REGION( 0x200000, "k051960", 0 ) /* graphics (addressable by the main CPU) */
+ ROM_REGION( 0x40000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "945_s13.f15", 0x00000, 0x20000, CRC(70c240a2) SHA1(82dc391572e1f61b0182cb031654d71adcdd5f6e) )
+ ROM_LOAD16_BYTE( "945_s12.e15", 0x00001, 0x20000, CRC(bbc300d4) SHA1(e1ca98bc591575285d7bd2d4fefdf35fed10dcb6) )
+
+ ROM_REGION( 0x100000, "sub", 0 )
+ ROM_LOAD16_BYTE( "945_m09.r17", 0x000000, 0x20000, CRC(b4a6df25) SHA1(85533cf140d28f6f81c0b49b8061bda0924a613a) )
+ ROM_LOAD16_BYTE( "945_m08.n17", 0x000001, 0x20000, CRC(74e981d2) SHA1(e7b47a2da01ff73293d2100c48fdf00b33125af5) )
+ ROM_LOAD16_BYTE( "945_l06b.r11", 0x040000, 0x20000, CRC(83772304) SHA1(a90c75a3de670b6ec5e0fc201876d463b4a76766) )
+ ROM_LOAD16_BYTE( "945_l06a.n11", 0x040001, 0x20000, CRC(e1fd75b6) SHA1(6160d80a2f1bf550e85d6253cf521a96f5a644cc) )
+ ROM_LOAD16_BYTE( "945_l07c.r15", 0x080000, 0x20000, CRC(c1e399b6) SHA1(e95bd478dd3beea0175bf9ee4cededb111c4ace1) )
+ ROM_LOAD16_BYTE( "945_l07a.n15", 0x080001, 0x20000, CRC(96222d04) SHA1(b55700f683a556b0e73dbac9c7b4ce485420d21c) )
+ ROM_LOAD16_BYTE( "945_l07d.r13", 0x0c0000, 0x20000, CRC(4c16d4bd) SHA1(01dcf169b78a1e495214b10181401d1920b0c924) )
+ ROM_LOAD16_BYTE( "945_l07b.n13", 0x0c0001, 0x20000, CRC(5e209d01) SHA1(0efa1bbfdc7e2ba1e0bb96245e2bfe961258b446) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "945_m05.d9", 0x00000, 0x10000, CRC(c8c45365) SHA1(b9a7b736b52bca42c7b8c8ed64c8df73e0116158) )
+
+ ROM_REGION( 0x200000, "k051960", 0 ) /* graphics (addressable by the main CPU) */
ROM_LOAD32_BYTE( "945_A02A.K2", 0x000000, 0x20000, CRC(fbb81511) SHA1(e7988d52e323e46117f5080c469daf9b119f28a0) )
- ROM_LOAD32_BYTE( "945_A02C.M2", 0x000001, 0x20000, CRC(031b55e8) SHA1(64ed8dee60bf012df7c1ed496af1c75263c052a6) )
- ROM_LOAD32_BYTE( "945_A01A.E2", 0x000002, 0x20000, CRC(bace5abb) SHA1(b32df63294c0730f463335b1b760494389c60062) )
- ROM_LOAD32_BYTE( "945_A01C.H2", 0x000003, 0x20000, CRC(d91b29a6) SHA1(0c3027a08996f4c2b86dd88695241b21c8dffd64) )
- ROM_LOAD32_BYTE( "945_A02B.K4", 0x080000, 0x20000, CRC(c0fed4ab) SHA1(f01975b13759cae7c8dfd24f9b3f4ac960d32957) )
- ROM_LOAD32_BYTE( "945_A02D.M4", 0x080001, 0x20000, CRC(d462817c) SHA1(00137e38454e7c3548a1a9553c5ee644916b3959) )
- ROM_LOAD32_BYTE( "945_A01B.E4", 0x080002, 0x20000, CRC(b426090e) SHA1(06a671a648e3255146fe0c325d5451d4f75f08aa) )
- ROM_LOAD32_BYTE( "945_A01D.H4", 0x080003, 0x20000, CRC(3990c09a) SHA1(1f6a089c1d03fb95d4d96fecc0379bde26ee2b9d) )
-
- ROM_LOAD32_BYTE( "945_l04a.k6", 0x100000, 0x20000, CRC(884e21ee) SHA1(ce86dd3a06775e5b1aa09db010dcb674e67828e7) )
- ROM_LOAD32_BYTE( "945_l04c.m6", 0x100001, 0x20000, CRC(45bcd921) SHA1(e51a8a71362a6fb55124aa1dce74519c0a3c6e3f) )
- ROM_LOAD32_BYTE( "945_l03a.e6", 0x100002, 0x20000, CRC(a67ef087) SHA1(fd63474f3bbde5dfc53ed4c1db25d6411a8b54d2) )
- ROM_LOAD32_BYTE( "945_l03c.h6", 0x100003, 0x20000, CRC(a56be17a) SHA1(1d387736144c30fcb5de54235331ab1ff70c356e) )
- ROM_LOAD32_BYTE( "945_l04b.k8", 0x180000, 0x20000, CRC(843bc67d) SHA1(cdf8421083f24ab27867ed5d08d8949da192b2b9) )
- ROM_LOAD32_BYTE( "945_l04d.m8", 0x180001, 0x20000, CRC(0a98d08e) SHA1(1e0ca51a2d45c01fa3f11950ddd387f41ddae691) )
- ROM_LOAD32_BYTE( "945_l03b.e8", 0x180002, 0x20000, CRC(933e68b9) SHA1(f3a39446ca77d17fdbd938bd5f718ae9d5570879) )
- ROM_LOAD32_BYTE( "945_l03d.h8", 0x180003, 0x20000, CRC(f375e87b) SHA1(6427b966795c907c8e516244872fe52217da62c4) )
-
- ROM_REGION( 0x0100, "proms", 0 )
- ROM_LOAD( "945l14.j28", 0x0000, 0x0100, CRC(c778c189) SHA1(847eaf379ba075c25911c6f83dd63ff390534f60) ) /* priority encoder (not used) */
-
- ROM_REGION( 0x80000, "k007232", 0 ) /* 007232 samples */
+ ROM_LOAD32_BYTE( "945_A02C.M2", 0x000001, 0x20000, CRC(031b55e8) SHA1(64ed8dee60bf012df7c1ed496af1c75263c052a6) )
+ ROM_LOAD32_BYTE( "945_A01A.E2", 0x000002, 0x20000, CRC(bace5abb) SHA1(b32df63294c0730f463335b1b760494389c60062) )
+ ROM_LOAD32_BYTE( "945_A01C.H2", 0x000003, 0x20000, CRC(d91b29a6) SHA1(0c3027a08996f4c2b86dd88695241b21c8dffd64) )
+ ROM_LOAD32_BYTE( "945_A02B.K4", 0x080000, 0x20000, CRC(c0fed4ab) SHA1(f01975b13759cae7c8dfd24f9b3f4ac960d32957) )
+ ROM_LOAD32_BYTE( "945_A02D.M4", 0x080001, 0x20000, CRC(d462817c) SHA1(00137e38454e7c3548a1a9553c5ee644916b3959) )
+ ROM_LOAD32_BYTE( "945_A01B.E4", 0x080002, 0x20000, CRC(b426090e) SHA1(06a671a648e3255146fe0c325d5451d4f75f08aa) )
+ ROM_LOAD32_BYTE( "945_A01D.H4", 0x080003, 0x20000, CRC(3990c09a) SHA1(1f6a089c1d03fb95d4d96fecc0379bde26ee2b9d) )
+
+ ROM_LOAD32_BYTE( "945_l04a.k6", 0x100000, 0x20000, CRC(884e21ee) SHA1(ce86dd3a06775e5b1aa09db010dcb674e67828e7) )
+ ROM_LOAD32_BYTE( "945_l04c.m6", 0x100001, 0x20000, CRC(45bcd921) SHA1(e51a8a71362a6fb55124aa1dce74519c0a3c6e3f) )
+ ROM_LOAD32_BYTE( "945_l03a.e6", 0x100002, 0x20000, CRC(a67ef087) SHA1(fd63474f3bbde5dfc53ed4c1db25d6411a8b54d2) )
+ ROM_LOAD32_BYTE( "945_l03c.h6", 0x100003, 0x20000, CRC(a56be17a) SHA1(1d387736144c30fcb5de54235331ab1ff70c356e) )
+ ROM_LOAD32_BYTE( "945_l04b.k8", 0x180000, 0x20000, CRC(843bc67d) SHA1(cdf8421083f24ab27867ed5d08d8949da192b2b9) )
+ ROM_LOAD32_BYTE( "945_l04d.m8", 0x180001, 0x20000, CRC(0a98d08e) SHA1(1e0ca51a2d45c01fa3f11950ddd387f41ddae691) )
+ ROM_LOAD32_BYTE( "945_l03b.e8", 0x180002, 0x20000, CRC(933e68b9) SHA1(f3a39446ca77d17fdbd938bd5f718ae9d5570879) )
+ ROM_LOAD32_BYTE( "945_l03d.h8", 0x180003, 0x20000, CRC(f375e87b) SHA1(6427b966795c907c8e516244872fe52217da62c4) )
+
+ ROM_REGION( 0x0100, "proms", 0 )
+ ROM_LOAD( "945l14.j28", 0x0000, 0x0100, CRC(c778c189) SHA1(847eaf379ba075c25911c6f83dd63ff390534f60) ) /* priority encoder (not used) */
+
+ ROM_REGION( 0x80000, "k007232", 0 ) /* 007232 samples */
ROM_LOAD( "945_A10A.C14", 0x00000, 0x20000, CRC(ec717414) SHA1(8c63d5fe01d0833529fca91bc80cdbd8a04174c0) )
ROM_LOAD( "945_A10B.C16", 0x20000, 0x20000, CRC(709e30e4) SHA1(27fcea720cd2498f1870c9290d30dcb3dd81d5e5) )
- ROM_LOAD( "945_l11a.c18", 0x40000, 0x20000, CRC(6043f4eb) SHA1(1c2e9ace1cfdde504b7b6158e3c3f54dc5ae33d4) )
- ROM_LOAD( "945_l11b.c20", 0x60000, 0x20000, CRC(89ea3baf) SHA1(8edcbaa7969185cfac48c02559826d1b8b081f3f) )
+ ROM_LOAD( "945_l11a.c18", 0x40000, 0x20000, CRC(6043f4eb) SHA1(1c2e9ace1cfdde504b7b6158e3c3f54dc5ae33d4) )
+ ROM_LOAD( "945_l11b.c20", 0x60000, 0x20000, CRC(89ea3baf) SHA1(8edcbaa7969185cfac48c02559826d1b8b081f3f) )
ROM_END
ROM_START( gradius3a )
@@ -499,7 +500,7 @@ ROM_END
-GAME( 1989, gradius3, 0, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (World, program code R)", GAME_SUPPORTS_SAVE )
-GAME( 1989, gradius3j, gradius3, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (Japan, program code S)", GAME_SUPPORTS_SAVE )
-GAME( 1989, gradius3js, gradius3, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (Japan, program code S, split)", GAME_SUPPORTS_SAVE )
-GAME( 1989, gradius3a, gradius3, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (Asia)", GAME_SUPPORTS_SAVE )
+GAME( 1989, gradius3, 0, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (World, program code R)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, gradius3j, gradius3, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (Japan, program code S)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, gradius3js, gradius3, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (Japan, program code S, split)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, gradius3a, gradius3, gradius3, gradius3, driver_device, 0, ROT0, "Konami", "Gradius III (Asia)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/grchamp.c b/src/mame/drivers/grchamp.c
index 216a17ad5f0..ebb65186a9a 100644
--- a/src/mame/drivers/grchamp.c
+++ b/src/mame/drivers/grchamp.c
@@ -760,4 +760,4 @@ ROM_END
*
*************************************/
-GAMEL( 1981, grchamp, 0, grchamp, grchamp, driver_device, 0, ROT270, "Taito", "Grand Champion", GAME_IMPERFECT_SOUND | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE, layout_grchamp )
+GAMEL( 1981, grchamp, 0, grchamp, grchamp, driver_device, 0, ROT270, "Taito", "Grand Champion", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE, layout_grchamp )
diff --git a/src/mess/drivers/grfd2301.c b/src/mame/drivers/grfd2301.c
index d7ec39534c1..e03f9312c2d 100644
--- a/src/mess/drivers/grfd2301.c
+++ b/src/mame/drivers/grfd2301.c
@@ -136,4 +136,4 @@ ROM_START( grfd2301 )
ROM_LOAD( "c10_char.bin", 0x0000, 0x2000, BAD_DUMP CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf))
ROM_END
-COMP( 198?, grfd2301, 0, 0, grfd2301, grfd2301, driver_device, 0, "Genrad", "Futuredata 2301 Network Processor", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 198?, grfd2301, 0, 0, grfd2301, grfd2301, driver_device, 0, "Genrad", "Futuredata 2301 Network Processor", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/gridlee.c b/src/mame/drivers/gridlee.c
index 1e5d956f36a..6bd0ea52280 100644
--- a/src/mame/drivers/gridlee.c
+++ b/src/mame/drivers/gridlee.c
@@ -472,4 +472,4 @@ ROM_END
*
*************************************/
-GAME( 1983, gridlee, 0, gridlee, gridlee, driver_device, 0, ROT0, "Videa", "Gridlee", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND )
+GAME( 1983, gridlee, 0, gridlee, gridlee, driver_device, 0, ROT0, "Videa", "Gridlee", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
diff --git a/src/mame/drivers/groundfx.c b/src/mame/drivers/groundfx.c
index a719cdd9223..ef3386c9985 100644
--- a/src/mame/drivers/groundfx.c
+++ b/src/mame/drivers/groundfx.c
@@ -245,7 +245,7 @@ static INPUT_PORTS_START( groundfx )
PORT_BIT( 0xff, 0x7f, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(15) PORT_REVERSE PORT_PLAYER(1)
PORT_START("AN1") /* IN 3, accel */
- PORT_BIT( 0xff, 0xff, IPT_AD_STICK_Y ) PORT_SENSITIVITY(20) PORT_KEYDELTA(10) PORT_PLAYER(1)
+ PORT_BIT( 0xff, 0x00, IPT_AD_STICK_Y ) PORT_SENSITIVITY(20) PORT_KEYDELTA(10) PORT_PLAYER(1)
PORT_START("AN2") /* IN 4, sound volume */
PORT_BIT( 0xff, 0x00, IPT_AD_STICK_X ) PORT_SENSITIVITY(20) PORT_KEYDELTA(10) PORT_REVERSE PORT_PLAYER(2)
diff --git a/src/mame/drivers/gstream.c b/src/mame/drivers/gstream.c
index b21492213d2..089e69d9cfe 100644
--- a/src/mame/drivers/gstream.c
+++ b/src/mame/drivers/gstream.c
@@ -1171,6 +1171,6 @@ DRIVER_INIT_MEMBER(gstream_state,x2222)
}
-GAME( 2002, gstream, 0, gstream, gstream, gstream_state, gstream, ROT270, "Oriental Soft Japan", "G-Stream G2020", GAME_SUPPORTS_SAVE )
-GAME( 2000, x2222, 0, x2222, x2222, gstream_state, x2222, ROT270, "Oriental Soft / Promat", "X2222 (final debug?)", GAME_SUPPORTS_SAVE | GAME_NO_SOUND )
-GAME( 2000, x2222o, x2222, x2222, x2222, gstream_state, x2222, ROT270, "Oriental Soft / Promat", "X2222 (5-level prototype)", GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND )
+GAME( 2002, gstream, 0, gstream, gstream, gstream_state, gstream, ROT270, "Oriental Soft Japan", "G-Stream G2020", MACHINE_SUPPORTS_SAVE )
+GAME( 2000, x2222, 0, x2222, x2222, gstream_state, x2222, ROT270, "Oriental Soft / Promat", "X2222 (final debug?)", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND )
+GAME( 2000, x2222o, x2222, x2222, x2222, gstream_state, x2222, ROT270, "Oriental Soft / Promat", "X2222 (5-level prototype)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/gstriker.c b/src/mame/drivers/gstriker.c
index 51f9be4173d..c37d4a695af 100644
--- a/src/mame/drivers/gstriker.c
+++ b/src/mame/drivers/gstriker.c
@@ -181,7 +181,7 @@ Frequencies: 68k is XTAL_32MHZ/2
void gstriker_state::machine_start()
{
membank("soundbank")->configure_entries(0, 8, memregion("audiocpu")->base(), 0x8000);
-
+
save_item(NAME(m_dmmy_8f_ret));
save_item(NAME(m_pending_command));
}
@@ -1012,7 +1012,7 @@ void gstriker_state::mcu_init()
m_maincpu->space(AS_PROGRAM).install_write_handler(0x20008e, 0x20008f, write16_delegate(FUNC(gstriker_state::twrldc94_prot_reg_w),this));
m_maincpu->space(AS_PROGRAM).install_read_handler(0x20008e, 0x20008f, read16_delegate(FUNC(gstriker_state::twrldc94_prot_reg_r),this));
-
+
save_item(NAME(m_mcu_data));
save_item(NAME(m_prot_reg));
}
@@ -1040,13 +1040,13 @@ DRIVER_INIT_MEMBER(gstriker_state,vgoalsoc)
/*** GAME DRIVERS ************************************************************/
-GAME( 1993, gstriker, 0, gstriker, gstriker, driver_device, 0, ROT0, "Human", "Grand Striker", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1993, gstrikera, gstriker, gstriker, gstriker, driver_device, 0, ROT0, "Human", "Grand Striker (Americas)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1993, gstrikerj, gstriker, gstriker, gstriker, driver_device, 0, ROT0, "Human", "Grand Striker (Japan)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1993, gstriker, 0, gstriker, gstriker, driver_device, 0, ROT0, "Human", "Grand Striker", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, gstrikera, gstriker, gstriker, gstriker, driver_device, 0, ROT0, "Human", "Grand Striker (Americas)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1993, gstrikerj, gstriker, gstriker, gstriker, driver_device, 0, ROT0, "Human", "Grand Striker (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
/* Similar, but not identical hardware, appear to be protected by an MCU :-( */
-GAME( 1994, vgoalsoc, 0, vgoal, vgoalsoc, gstriker_state, vgoalsoc, ROT0, "Tecmo", "V Goal Soccer (Europe)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // has ger/hol/arg/bra/ita/eng/spa/fra
-GAME( 1994, vgoalsca, vgoalsoc, vgoal, vgoalsoc, gstriker_state, vgoalsoc, ROT0, "Tecmo", "V Goal Soccer (US/Japan/Korea)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // has ger/hol/arg/bra/ita/kor/usa/jpn
-GAME( 1994, twrldc94, 0, twc94, twrldc94, gstriker_state, twrldc94, ROT0, "Tecmo", "Tecmo World Cup '94 (set 1)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1994, twrldc94a,twrldc94, twc94, twrldc94, gstriker_state, twrldc94a, ROT0, "Tecmo", "Tecmo World Cup '94 (set 2)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1994, vgoalsoc, 0, vgoal, vgoalsoc, gstriker_state, vgoalsoc, ROT0, "Tecmo", "V Goal Soccer (Europe)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // has ger/hol/arg/bra/ita/eng/spa/fra
+GAME( 1994, vgoalsca, vgoalsoc, vgoal, vgoalsoc, gstriker_state, vgoalsoc, ROT0, "Tecmo", "V Goal Soccer (US/Japan/Korea)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // has ger/hol/arg/bra/ita/kor/usa/jpn
+GAME( 1994, twrldc94, 0, twc94, twrldc94, gstriker_state, twrldc94, ROT0, "Tecmo", "Tecmo World Cup '94 (set 1)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1994, twrldc94a,twrldc94, twc94, twrldc94, gstriker_state, twrldc94a, ROT0, "Tecmo", "Tecmo World Cup '94 (set 2)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gsword.c b/src/mame/drivers/gsword.c
index 50ae7998a2c..b7a694cb30e 100644
--- a/src/mame/drivers/gsword.c
+++ b/src/mame/drivers/gsword.c
@@ -902,6 +902,6 @@ DRIVER_INIT_MEMBER(gsword_state,gsword2)
}
-GAME( 1983, josvolly, 0, josvolly, josvolly, driver_device, 0, ROT90, "Allumer / Taito Corporation", "Joshi Volleyball", GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1984, gsword, 0, gsword, gsword, gsword_state, gsword, ROT0, "Allumer / Taito Corporation", "Great Swordsman (World?)", GAME_SUPPORTS_SAVE )
-GAME( 1984, gsword2, gsword, gsword, gsword, gsword_state, gsword2, ROT0, "Allumer / Taito Corporation", "Great Swordsman (Japan?)", GAME_SUPPORTS_SAVE )
+GAME( 1983, josvolly, 0, josvolly, josvolly, driver_device, 0, ROT90, "Allumer / Taito Corporation", "Joshi Volleyball", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gsword, 0, gsword, gsword, gsword_state, gsword, ROT0, "Allumer / Taito Corporation", "Great Swordsman (World?)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, gsword2, gsword, gsword, gsword, gsword_state, gsword2, ROT0, "Allumer / Taito Corporation", "Great Swordsman (Japan?)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gticlub.c b/src/mame/drivers/gticlub.c
index fe653e7b83a..e8c88a6981f 100644
--- a/src/mame/drivers/gticlub.c
+++ b/src/mame/drivers/gticlub.c
@@ -1449,12 +1449,12 @@ DRIVER_INIT_MEMBER(gticlub_state,hangpltu)
/*************************************************************************/
-GAME( 1996, gticlub, 0, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver EAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1996, gticlubu, gticlub, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver UAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1996, gticluba, gticlub, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver AAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1996, gticlubj, gticlub, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver JAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAME( 1996, thunderh, 0, thunderh, thunderh, gticlub_state, gticlub, ROT0, "Konami", "Operation Thunder Hurricane (ver EAA)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
-GAME( 1996, thunderhu,thunderh, thunderh, thunderh, gticlub_state, gticlub, ROT0, "Konami", "Operation Thunder Hurricane (ver UAA)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND )
-GAME( 1997, slrasslt, 0, slrasslt, slrasslt, gticlub_state, gticlub, ROT0, "Konami", "Solar Assault (ver UAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND )
-GAMEL(1997, hangplt, 0, hangplt, hangplt, gticlub_state, hangplt, ROT0, "Konami", "Hang Pilot (ver JAB)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND, layout_dualhovu )
-GAMEL(1997, hangpltu, hangplt, hangplt, hangplt, gticlub_state, hangpltu, ROT0, "Konami", "Hang Pilot (ver UAA)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND, layout_dualhovu )
+GAME( 1996, gticlub, 0, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver EAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, gticlubu, gticlub, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, gticluba, gticlub, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver AAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, gticlubj, gticlub, gticlub, gticlub, gticlub_state, gticlub, ROT0, "Konami", "GTI Club (ver JAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, thunderh, 0, thunderh, thunderh, gticlub_state, gticlub, ROT0, "Konami", "Operation Thunder Hurricane (ver EAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME( 1996, thunderhu,thunderh, thunderh, thunderh, gticlub_state, gticlub, ROT0, "Konami", "Operation Thunder Hurricane (ver UAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
+GAME( 1997, slrasslt, 0, slrasslt, slrasslt, gticlub_state, gticlub, ROT0, "Konami", "Solar Assault (ver UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
+GAMEL(1997, hangplt, 0, hangplt, hangplt, gticlub_state, hangplt, ROT0, "Konami", "Hang Pilot (ver JAB)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND, layout_dualhovu )
+GAMEL(1997, hangpltu, hangplt, hangplt, hangplt, gticlub_state, hangpltu, ROT0, "Konami", "Hang Pilot (ver UAA)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND, layout_dualhovu )
diff --git a/src/mame/drivers/gts1.c b/src/mame/drivers/gts1.c
index f5b670d3799..12ff867b851 100644
--- a/src/mame/drivers/gts1.c
+++ b/src/mame/drivers/gts1.c
@@ -975,34 +975,34 @@ ROM_START(sys1test)
ROM_END
-GAME(1977, gts1, 0, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "System 1", GAME_IS_BIOS_ROOT)
+GAME(1977, gts1, 0, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "System 1", MACHINE_IS_BIOS_ROOT)
//Exact same roms as gts1 with added hardware we'll likely need roms for to emulate properly
-GAME(1979, gts1s, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "System 1 with sound board", GAME_IS_BIOS_ROOT)
-GAME(19??, sys1test, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "System 1 Test prom", GAME_IS_SKELETON_MECHANICAL)
+GAME(1979, gts1s, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "System 1 with sound board", MACHINE_IS_BIOS_ROOT)
+GAME(19??, sys1test, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "System 1 Test prom", MACHINE_IS_SKELETON_MECHANICAL)
// chimes
-GAME(1977, cleoptra, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Cleopatra", GAME_IS_SKELETON_MECHANICAL)
-GAME(1978, sinbad, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Sinbad", GAME_IS_SKELETON_MECHANICAL)
-GAME(1978, sinbadn, sinbad, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Sinbad (Norway)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1978, jokrpokr, gts1, gts1, jokrpokr, gts1_state, gts1, ROT0, "Gottlieb", "Joker Poker", GAME_IS_SKELETON_MECHANICAL)
-GAME(1978, dragon, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Dragon", GAME_IS_SKELETON_MECHANICAL)
-GAME(1979, solaride, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Solar Ride", GAME_IS_SKELETON_MECHANICAL)
-GAME(1979, countdwn, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Count-Down", GAME_IS_SKELETON_MECHANICAL)
+GAME(1977, cleoptra, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Cleopatra", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1978, sinbad, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Sinbad", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1978, sinbadn, sinbad, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Sinbad (Norway)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1978, jokrpokr, gts1, gts1, jokrpokr, gts1_state, gts1, ROT0, "Gottlieb", "Joker Poker", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1978, dragon, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Dragon", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1979, solaride, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Solar Ride", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1979, countdwn, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Count-Down", MACHINE_IS_SKELETON_MECHANICAL)
// NE555 beeper
-GAME(1978, closeenc, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Close Encounters of the Third Kind", GAME_IS_SKELETON_MECHANICAL)
-GAME(1978, charlies, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Charlie's Angels", GAME_IS_SKELETON_MECHANICAL)
-GAME(1979, pinpool, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Pinball Pool", GAME_IS_SKELETON_MECHANICAL)
+GAME(1978, closeenc, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Close Encounters of the Third Kind", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1978, charlies, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Charlie's Angels", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1979, pinpool, gts1, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Pinball Pool", MACHINE_IS_SKELETON_MECHANICAL)
// sound card
-GAME(1979, totem, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Totem", GAME_IS_SKELETON_MECHANICAL)
-GAME(1979, hulk, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "The Incredible Hulk", GAME_IS_SKELETON_MECHANICAL)
-GAME(1979, geniep, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Genie (Pinball)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1980, buckrgrs, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Buck Rogers", GAME_IS_SKELETON_MECHANICAL)
-GAME(1980, torch, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Torch", GAME_IS_SKELETON_MECHANICAL)
-GAME(1980, roldisco, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Roller Disco", GAME_IS_SKELETON_MECHANICAL)
-GAME(1980, astannie, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Asteroid Annie and the Aliens", GAME_IS_SKELETON_MECHANICAL)
+GAME(1979, totem, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Totem", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1979, hulk, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "The Incredible Hulk", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1979, geniep, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Genie (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1980, buckrgrs, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Buck Rogers", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1980, torch, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Torch", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1980, roldisco, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Roller Disco", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1980, astannie, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Gottlieb", "Asteroid Annie and the Aliens", MACHINE_IS_SKELETON_MECHANICAL)
// homebrew
-GAME(1986, hexagone, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Christian Tabart", "L'Hexagone (France)", GAME_IS_SKELETON_MECHANICAL)
+GAME(1986, hexagone, gts1s, gts1, gts1, gts1_state, gts1, ROT0, "Christian Tabart", "L'Hexagone (France)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/gts3.c b/src/mame/drivers/gts3.c
index ecc7679e7a7..d4cd95ee06a 100644
--- a/src/mame/drivers/gts3.c
+++ b/src/mame/drivers/gts3.c
@@ -580,19 +580,19 @@ ROM_START(tt_game)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, NO_DUMP)
ROM_END
-GAME(1989, lca, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Lights...Camera...Action!", GAME_IS_SKELETON_MECHANICAL)
-GAME(1989, lca2, lca, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Lights...Camera...Action! (rev.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, silvslug, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Silver Slugger", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, vegas, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Vegas", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, deadweap, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Deadly Weapon", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, tfight, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Title Fight", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, nudgeit, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Nudge-It", GAME_IS_SKELETON_MECHANICAL)
-GAME(1990, bellring, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Bell Ringer", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, carhop, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Car Hop", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, hoops, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Hoops", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, cactjack, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Cactus Jack's", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, clas1812, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Class of 1812", GAME_IS_SKELETON_MECHANICAL)
-GAME(1991, surfnsaf, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Surf'n Safari", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, opthund, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Operation: Thunder", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, tt_game, 0, gts3, gts3, gts3_state, gts3, ROT0, "Toptronic", "unknown Toptronic pinball game", GAME_IS_SKELETON_MECHANICAL)
-GAME(1989, ccruise, 0, gts3, gts3, gts3_state, gts3, ROT0, "International Concepts","Caribbean Cruise", GAME_IS_SKELETON_MECHANICAL)
+GAME(1989, lca, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Lights...Camera...Action!", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1989, lca2, lca, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Lights...Camera...Action! (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, silvslug, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Silver Slugger", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, vegas, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Vegas", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, deadweap, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Deadly Weapon", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, tfight, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Title Fight", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, nudgeit, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Nudge-It", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, bellring, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Bell Ringer", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, carhop, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Car Hop", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, hoops, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Hoops", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, cactjack, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Cactus Jack's", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, clas1812, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Class of 1812", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, surfnsaf, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Surf'n Safari", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, opthund, 0, gts3, gts3, gts3_state, gts3, ROT0, "Gottlieb", "Operation: Thunder", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, tt_game, 0, gts3, gts3, gts3_state, gts3, ROT0, "Toptronic", "unknown Toptronic pinball game", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1989, ccruise, 0, gts3, gts3, gts3_state, gts3, ROT0, "International Concepts","Caribbean Cruise", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/gts3a.c b/src/mame/drivers/gts3a.c
index 0a09121980d..b0187f3ccdb 100644
--- a/src/mame/drivers/gts3a.c
+++ b/src/mame/drivers/gts3a.c
@@ -1175,38 +1175,38 @@ ROM_START(wcsoccerd2)
ROM_LOAD("yrom1.bin", 0x8000, 0x8000, CRC(8b2795b0) SHA1(b838d4e410c815421099c65b0d3b22227dae17c6))
ROM_END
-GAME(1992, smb, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, smb1, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, smb2, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, smb3, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.3)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, smbmush, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers Mushroom World", GAME_IS_SKELETON_MECHANICAL)
-GAME(1992, cueball, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, sfight2, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, sfight2a, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, sfight2b, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, teedoffp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, teedoffp1, teedoffp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off (rev.1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, teedoffp3, teedoffp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off (rev.3)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, gladiatp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Gladiators", GAME_IS_SKELETON_MECHANICAL)
-GAME(1993, wipeout, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Wipeout (rev.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, rescu911, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Rescue 911 (rev.1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, wcsoccer, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "World Challenge Soccer (rev.1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, wcsoccerd2, wcsoccer, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "World Challenge Soccer (disp.rev.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, stargatp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (Pinball)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, stargatp1, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, stargatp2, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, stargatp3, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.3)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, stargatp4, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.4)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, shaqattq, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Shaq Attaq (rev.5)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, shaqattq2, shaqattq, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Shaq Attaq (rev.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, freddy, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Freddy: A Nightmare on Elm Street (rev.3)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1994, freddy4, freddy, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Freddy: A Nightmare on Elm Street (rev.4)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, bighurt, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Frank Thomas' Big Hurt (rev.3)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, waterwld, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.3)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, waterwld2, waterwld, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, snspares, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.6)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, snspares1, snspares, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, andretti, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti", GAME_IS_SKELETON_MECHANICAL)
-GAME(1995, andretti4, andretti, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti (rev.T4)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, barbwire, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Barb Wire", GAME_IS_SKELETON_MECHANICAL)
-GAME(1996, brooks, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Brooks & Dunn (rev.T1)", GAME_IS_SKELETON_MECHANICAL)
+GAME(1992, smb, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, smb1, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, smb2, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, smb3, smb, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers (rev.3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, smbmush, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Super Mario Brothers Mushroom World", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, cueball, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Cue Ball Wizard", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, sfight2, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, sfight2a, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, sfight2b, sfight2, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Street Fighter II (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, teedoffp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, teedoffp1, teedoffp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off (rev.1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, teedoffp3, teedoffp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Tee'd Off (rev.3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, gladiatp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Gladiators", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1993, wipeout, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Wipeout (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, rescu911, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Rescue 911 (rev.1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, wcsoccer, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "World Challenge Soccer (rev.1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, wcsoccerd2, wcsoccer, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "World Challenge Soccer (disp.rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, stargatp, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, stargatp1, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, stargatp2, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, stargatp3, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, stargatp4, stargatp, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Stargate (rev.4)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, shaqattq, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Shaq Attaq (rev.5)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, shaqattq2, shaqattq, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Shaq Attaq (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, freddy, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Freddy: A Nightmare on Elm Street (rev.3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1994, freddy4, freddy, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Freddy: A Nightmare on Elm Street (rev.4)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, bighurt, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Frank Thomas' Big Hurt (rev.3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, waterwld, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, waterwld2, waterwld, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Waterworld (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, snspares, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.6)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, snspares1, snspares, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Strikes n' Spares (rev.1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, andretti, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1995, andretti4, andretti, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Mario Andretti (rev.T4)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, barbwire, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Barb Wire", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, brooks, 0, gts3a, gts3a, gts3a_state, gts3a, ROT0, "Gottlieb", "Brooks & Dunn (rev.T1)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/gts80.c b/src/mame/drivers/gts80.c
index e3f3735d369..2cbcff01279 100644
--- a/src/mame/drivers/gts80.c
+++ b/src/mame/drivers/gts80.c
@@ -748,25 +748,25 @@ ROM_START(s80tst)
ROM_LOAD("80tst-s2.snd", 0x7800, 0x0800, CRC(1a4b1e9d) SHA1(18e7ffbdbdaf83ab1c8daa5fa5201d9f54390758))
ROM_END
-/* disp1 */GAME(1981, s80tst, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "System 80 Test", GAME_IS_SKELETON_MECHANICAL)
-
-/* disp1 */GAME(1980, panthera, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Panthera", GAME_IS_SKELETON_MECHANICAL)
-/* disp1 */GAME(1980, spidermn, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "The Amazing Spider-Man", GAME_IS_SKELETON_MECHANICAL)
-/* disp1 */GAME(1980, circusp, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Circus", GAME_IS_SKELETON_MECHANICAL)
-/* disp1 */GAME(1980, cntforce, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Counterforce", GAME_IS_SKELETON_MECHANICAL)
-/* disp1 */GAME(1980, starrace, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Star Race", GAME_IS_SKELETON_MECHANICAL)
-/* disp2 */GAME(1980, jamesb, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "James Bond (Timed Play)", GAME_IS_SKELETON_MECHANICAL)
-/* disp2 */GAME(1980, jamesb2, jamesb, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "James Bond (3/5-Ball)", GAME_IS_SKELETON_MECHANICAL)
-/* cust */GAME(1980, timeline, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Time Line", GAME_IS_SKELETON_MECHANICAL)
-/* disp1 */GAME(1981, forceii, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Force II", GAME_IS_SKELETON_MECHANICAL)
-/* cust */GAME(1981, pnkpnthr, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Pink Panther", GAME_IS_SKELETON_MECHANICAL)
-/* disp1 */GAME(1981, marsp, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Mars - God of War", GAME_IS_SKELETON_MECHANICAL)
-/* disp1 */GAME(1981, vlcno_ax, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano", GAME_IS_SKELETON_MECHANICAL)
-/* disp1 */GAME(1981, vlcno_1b, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano (Sound Only set 1)", GAME_IS_SKELETON_MECHANICAL)
-/* disp1 */GAME(1981, vlcno_1a, vlcno_1b, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano (Sound Only set 2)", GAME_IS_SKELETON_MECHANICAL)
-/* disp2 */GAME(1981, blckhole, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Rev. 4)", GAME_IS_SKELETON_MECHANICAL)
-/* disp2 */GAME(1981, blckhole2, blckhole, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Rev. 2)", GAME_IS_SKELETON_MECHANICAL)
-/* disp2 */GAME(1981, blckhols, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Sound Only)", GAME_IS_SKELETON_MECHANICAL)
-/* disp2 */GAME(1982, hh, 0, gts80_hh, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Haunted House (Rev. 2)", GAME_IS_SKELETON_MECHANICAL)
-/* disp2 */GAME(1982, hh_1, hh, gts80_hh, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Haunted House (Rev. 1)", GAME_IS_SKELETON_MECHANICAL)
-/* disp2 */GAME(1981, eclipse, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Eclipse", GAME_IS_SKELETON_MECHANICAL)
+/* disp1 */GAME(1981, s80tst, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "System 80 Test", MACHINE_IS_SKELETON_MECHANICAL)
+
+/* disp1 */GAME(1980, panthera, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Panthera", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp1 */GAME(1980, spidermn, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "The Amazing Spider-Man", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp1 */GAME(1980, circusp, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Circus", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp1 */GAME(1980, cntforce, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Counterforce", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp1 */GAME(1980, starrace, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Star Race", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp2 */GAME(1980, jamesb, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "James Bond (Timed Play)", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp2 */GAME(1980, jamesb2, jamesb, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "James Bond (3/5-Ball)", MACHINE_IS_SKELETON_MECHANICAL)
+/* cust */GAME(1980, timeline, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Time Line", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp1 */GAME(1981, forceii, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Force II", MACHINE_IS_SKELETON_MECHANICAL)
+/* cust */GAME(1981, pnkpnthr, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Pink Panther", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp1 */GAME(1981, marsp, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Mars - God of War", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp1 */GAME(1981, vlcno_ax, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp1 */GAME(1981, vlcno_1b, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano (Sound Only set 1)", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp1 */GAME(1981, vlcno_1a, vlcno_1b, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Volcano (Sound Only set 2)", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp2 */GAME(1981, blckhole, 0, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Rev. 4)", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp2 */GAME(1981, blckhole2, blckhole, gts80_ss, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Rev. 2)", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp2 */GAME(1981, blckhols, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Black Hole (Sound Only)", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp2 */GAME(1982, hh, 0, gts80_hh, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Haunted House (Rev. 2)", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp2 */GAME(1982, hh_1, hh, gts80_hh, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Haunted House (Rev. 1)", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp2 */GAME(1981, eclipse, 0, gts80_s, gts80, gts80_state, gts80, ROT0, "Gottlieb", "Eclipse", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/gts80a.c b/src/mame/drivers/gts80a.c
index d18a00c3b36..f8ceda52c66 100644
--- a/src/mame/drivers/gts80a.c
+++ b/src/mame/drivers/gts80a.c
@@ -778,27 +778,27 @@ ROM_START(touchdn)
ROM_END
-/* cust */GAME(1981, dvlsdre, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Devil's Dare", GAME_IS_SKELETON_MECHANICAL)
-/* cust */GAME(1981, dvlsdre2, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Devil's Dare (Sound Only)", GAME_IS_SKELETON_MECHANICAL)
-/* cust */GAME(1982, rocky, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Rocky", GAME_IS_SKELETON_MECHANICAL)
-/* cust */GAME(1982, spirit, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Spirit", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1982, punk, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Punk!", GAME_IS_SKELETON_MECHANICAL)
-/* cust */GAME(1982, striker, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Striker", GAME_IS_SKELETON_MECHANICAL)
-/* cust */GAME(1983, krullp, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Krull (Pinball)", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1983, qbquest, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Q*Bert's Quest", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1983, sorbit, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Super Orbit", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1983, rflshdlx, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Royal Flush Deluxe", GAME_IS_SKELETON_MECHANICAL)
-/* cust */GAME(1983, goinnuts, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Goin' Nuts", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1983, amazonh, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Amazon Hunt", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1983, rackempp, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Rack 'em Up! (Pinball)", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1983, raimfire, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Ready...Aim...Fire!", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1984, jack2opn, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Jacks to Open", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1984, touchdn, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Touchdown", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1984, alienstr, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Alien Star", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1984, thegames, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "The Games", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1984, eldorado, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "El Dorado City of Gold", GAME_IS_SKELETON_MECHANICAL)
-/* disp3 */GAME(1985, icefever, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Ice Fever", GAME_IS_SKELETON_MECHANICAL)
+/* cust */GAME(1981, dvlsdre, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Devil's Dare", MACHINE_IS_SKELETON_MECHANICAL)
+/* cust */GAME(1981, dvlsdre2, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Devil's Dare (Sound Only)", MACHINE_IS_SKELETON_MECHANICAL)
+/* cust */GAME(1982, rocky, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Rocky", MACHINE_IS_SKELETON_MECHANICAL)
+/* cust */GAME(1982, spirit, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Spirit", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1982, punk, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Punk!", MACHINE_IS_SKELETON_MECHANICAL)
+/* cust */GAME(1982, striker, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Striker", MACHINE_IS_SKELETON_MECHANICAL)
+/* cust */GAME(1983, krullp, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Krull (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1983, qbquest, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Q*Bert's Quest", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1983, sorbit, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Super Orbit", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1983, rflshdlx, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Royal Flush Deluxe", MACHINE_IS_SKELETON_MECHANICAL)
+/* cust */GAME(1983, goinnuts, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Goin' Nuts", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1983, amazonh, 0, gts80a_ss, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Amazon Hunt", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1983, rackempp, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Rack 'em Up! (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1983, raimfire, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Ready...Aim...Fire!", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1984, jack2opn, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Jacks to Open", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1984, touchdn, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Touchdown", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1984, alienstr, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Alien Star", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1984, thegames, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "The Games", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1984, eldorado, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "El Dorado City of Gold", MACHINE_IS_SKELETON_MECHANICAL)
+/* disp3 */GAME(1985, icefever, 0, gts80a_s, gts80a, gts80a_state, gts80a, ROT0, "Gottlieb", "Ice Fever", MACHINE_IS_SKELETON_MECHANICAL)
/* custom (+video) */
-GAME(1981, caveman, 0, caveman, caveman, gts80a_state, gts80a, ROT0, "Gottlieb", "Caveman (Pinball/Video Combo, set 1)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1981, cavemana, caveman, caveman, caveman, gts80a_state, gts80a, ROT0, "Gottlieb", "Caveman (Pinball/Video Combo, set 2)", GAME_IS_SKELETON_MECHANICAL)
+GAME(1981, caveman, 0, caveman, caveman, gts80a_state, gts80a, ROT0, "Gottlieb", "Caveman (Pinball/Video Combo, set 1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1981, cavemana, caveman, caveman, caveman, gts80a_state, gts80a, ROT0, "Gottlieb", "Caveman (Pinball/Video Combo, set 2)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/gts80b.c b/src/mame/drivers/gts80b.c
index 5aa3c6bfb5b..75d4d44e123 100644
--- a/src/mame/drivers/gts80b.c
+++ b/src/mame/drivers/gts80b.c
@@ -951,28 +951,28 @@ ROM_START(victoryp)
ROM_END
-GAME(1985, bountyh, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bounty Hunter", GAME_IS_SKELETON_MECHANICAL)
-GAME(1985, triplay, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Triple Play", GAME_IS_SKELETON_MECHANICAL)
-GAME(1985, rock, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock", GAME_IS_SKELETON_MECHANICAL)
-GAME(1985, tagteamp, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Tag-Team Wrestling", GAME_IS_SKELETON_MECHANICAL)
-GAME(1985, tagteamp2, tagteamp, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Tag-Team Wrestling (rev.2)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1986, raven, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Raven", GAME_IS_SKELETON_MECHANICAL)
-GAME(1986, hlywoodh, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hollywood Heat", GAME_IS_SKELETON_MECHANICAL)
-GAME(1986, rock_enc, rock, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock Encore", GAME_IS_SKELETON_MECHANICAL)
-GAME(1986, genesisp, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Genesis", GAME_IS_SKELETON_MECHANICAL)
-GAME(1987, sprbreak, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break", GAME_IS_SKELETON_MECHANICAL)
-GAME(19??, sprbreaks, sprbreak, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break (single ball game)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1986, goldwing, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Gold Wings", GAME_IS_SKELETON_MECHANICAL)
-GAME(1987, mntecrlo, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1987, arena, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Arena", GAME_IS_SKELETON_MECHANICAL)
-GAME(1987, victoryp, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Victory (Pinball)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1988, diamondp, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Diamond Lady", GAME_IS_SKELETON_MECHANICAL)
-GAME(1988, txsector, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "TX-Sector", GAME_IS_SKELETON_MECHANICAL)
-GAME(1989, bighouse, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Big House", GAME_IS_SKELETON_MECHANICAL)
-GAME(1988, robowars, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Robo-War", GAME_IS_SKELETON_MECHANICAL)
-GAME(1988, excalibr, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Excalibur", GAME_IS_SKELETON_MECHANICAL)
-GAME(1988, badgirls, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bad Girls", GAME_IS_SKELETON_MECHANICAL)
-GAME(1989, hotshots, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hot Shots", GAME_IS_SKELETON_MECHANICAL)
-GAME(1989, bonebstr, 0, bonebstr, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bone Busters Inc.", GAME_IS_SKELETON_MECHANICAL)
-GAME(1989, bonebstrf, bonebstr, bonebstr, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bone Busters Inc. (French)", GAME_IS_SKELETON_MECHANICAL)
-GAME(1989, nmoves, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "International Concepts", "Night Moves", GAME_IS_SKELETON_MECHANICAL)
+GAME(1985, bountyh, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bounty Hunter", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1985, triplay, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Triple Play", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1985, rock, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1985, tagteamp, 0, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Tag-Team Wrestling", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1985, tagteamp2, tagteamp, gts80b_s, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Tag-Team Wrestling (rev.2)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1986, raven, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Raven", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1986, hlywoodh, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hollywood Heat", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1986, rock_enc, rock, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Rock Encore", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1986, genesisp, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Genesis", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1987, sprbreak, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(19??, sprbreaks, sprbreak, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Spring Break (single ball game)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1986, goldwing, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Gold Wings", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1987, mntecrlo, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Monte Carlo (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1987, arena, 0, gts80b_s1, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Arena", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1987, victoryp, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Victory (Pinball)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1988, diamondp, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Diamond Lady", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1988, txsector, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "TX-Sector", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1989, bighouse, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Big House", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1988, robowars, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Robo-War", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1988, excalibr, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Excalibur", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1988, badgirls, 0, gts80b_s3, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bad Girls", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1989, hotshots, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Hot Shots", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1989, bonebstr, 0, bonebstr, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bone Busters Inc.", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1989, bonebstrf, bonebstr, bonebstr, gts80b, gts80b_state, gts80b, ROT0, "Gottlieb", "Bone Busters Inc. (French)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1989, nmoves, 0, gts80b_s2, gts80b, gts80b_state, gts80b, ROT0, "International Concepts", "Night Moves", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/guab.c b/src/mame/drivers/guab.c
index 47a250f3074..e129768dddb 100644
--- a/src/mame/drivers/guab.c
+++ b/src/mame/drivers/guab.c
@@ -574,5 +574,5 @@ ROM_END
*************************************/
GAME( 1986, guab, 0, guab, guab, driver_device, 0, ROT0, "JPM", "Give us a Break", 0 )
-GAME( 1986, crisscrs, 0, guab, guab, driver_device, 0, ROT0, "JPM", "Criss Cross (Sweden)", GAME_NOT_WORKING )
+GAME( 1986, crisscrs, 0, guab, guab, driver_device, 0, ROT0, "JPM", "Criss Cross (Sweden)", MACHINE_NOT_WORKING )
GAME( 1988, tenup, 0, guab, tenup, driver_device, 0, ROT0, "JPM", "Ten Up", 0 )
diff --git a/src/mame/drivers/gumbo.c b/src/mame/drivers/gumbo.c
index cf644396194..99509e8ab1f 100644
--- a/src/mame/drivers/gumbo.c
+++ b/src/mame/drivers/gumbo.c
@@ -393,10 +393,10 @@ ROM_START( dblpointd )
ROM_LOAD( "d15.bin", 0x40000, 0x40000, CRC(6b899a51) SHA1(04114ec9695caaac722800ac1a4ffb563ec433c9) )
ROM_END
-GAME( 1994, gumbo, 0, gumbo, gumbo, driver_device, 0, ROT0, "Min Corp.", "Gumbo", GAME_SUPPORTS_SAVE )
-GAME( 1994, mspuzzleg,gumbo, gumbo, gumbo, driver_device, 0, ROT0, "Min Corp.", "Miss Puzzle (Clone of Gumbo)", GAME_SUPPORTS_SAVE )
-GAME( 1994, msbingo, 0, mspuzzle, msbingo, driver_device, 0, ROT0, "Min Corp.", "Miss Bingo", GAME_SUPPORTS_SAVE )
-GAME( 1994, mspuzzle, 0, mspuzzle, mspuzzle, driver_device, 0, ROT90, "Min Corp.", "Miss Puzzle", GAME_SUPPORTS_SAVE )
-GAME( 1994, mspuzzlen,mspuzzle, mspuzzle, mspuzzle, driver_device, 0, ROT90, "Min Corp.", "Miss Puzzle (Nudes)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1995, dblpoint, 0, dblpoint, dblpoint, driver_device, 0, ROT0, "Min Corp.", "Double Point", GAME_SUPPORTS_SAVE )
-GAME( 1995, dblpointd,dblpoint, dblpoint, dblpoint, driver_device, 0, ROT0, "bootleg? (Dong Bang Electron)", "Double Point (Dong Bang Electron, bootleg?)", GAME_SUPPORTS_SAVE )
+GAME( 1994, gumbo, 0, gumbo, gumbo, driver_device, 0, ROT0, "Min Corp.", "Gumbo", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, mspuzzleg,gumbo, gumbo, gumbo, driver_device, 0, ROT0, "Min Corp.", "Miss Puzzle (Clone of Gumbo)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, msbingo, 0, mspuzzle, msbingo, driver_device, 0, ROT0, "Min Corp.", "Miss Bingo", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, mspuzzle, 0, mspuzzle, mspuzzle, driver_device, 0, ROT90, "Min Corp.", "Miss Puzzle", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, mspuzzlen,mspuzzle, mspuzzle, mspuzzle, driver_device, 0, ROT90, "Min Corp.", "Miss Puzzle (Nudes)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+GAME( 1995, dblpoint, 0, dblpoint, dblpoint, driver_device, 0, ROT0, "Min Corp.", "Double Point", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, dblpointd,dblpoint, dblpoint, dblpoint, driver_device, 0, ROT0, "bootleg? (Dong Bang Electron)", "Double Point (Dong Bang Electron, bootleg?)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gundealr.c b/src/mame/drivers/gundealr.c
index e41def96edd..ca6570e3e25 100644
--- a/src/mame/drivers/gundealr.c
+++ b/src/mame/drivers/gundealr.c
@@ -590,10 +590,10 @@ ROM_END
-GAME( 1990, gundealr, 0, gundealr, gundealr, driver_device, 0, ROT270, "Dooyong", "Gun Dealer", GAME_SUPPORTS_SAVE )
-GAME( 1990, gundealra, gundealr, gundealr, gundealr, driver_device, 0, ROT270, "Dooyong", "Gun Dealer (alt card set)", GAME_SUPPORTS_SAVE )
-GAME( 1990, gundealrt, gundealr, gundealr, gundealt, driver_device, 0, ROT270, "Dooyong (Tecmo license)", "Gun Dealer (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1990, gundealr, 0, gundealr, gundealr, driver_device, 0, ROT270, "Dooyong", "Gun Dealer", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, gundealra, gundealr, gundealr, gundealr, driver_device, 0, ROT270, "Dooyong", "Gun Dealer (alt card set)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, gundealrt, gundealr, gundealr, gundealt, driver_device, 0, ROT270, "Dooyong (Tecmo license)", "Gun Dealer (Japan)", MACHINE_SUPPORTS_SAVE )
-GAME( 1990, yamyam, 0, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Yam! Yam!?", GAME_SUPPORTS_SAVE )
-GAME( 1990, yamyamk, yamyam, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Yam! Yam!? (Korea)", GAME_SUPPORTS_SAVE )
-GAME( 1990, wiseguy, yamyam, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Wise Guy", GAME_SUPPORTS_SAVE )
+GAME( 1990, yamyam, 0, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Yam! Yam!?", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, yamyamk, yamyam, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Yam! Yam!? (Korea)", MACHINE_SUPPORTS_SAVE )
+GAME( 1990, wiseguy, yamyam, yamyam, yamyam, driver_device, 0, ROT0, "Dooyong", "Wise Guy", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/gunpey.c b/src/mame/drivers/gunpey.c
index 5b22c38a251..9c00a3b9e8d 100644
--- a/src/mame/drivers/gunpey.c
+++ b/src/mame/drivers/gunpey.c
@@ -1494,4 +1494,4 @@ DRIVER_INIT_MEMBER(gunpey_state,gunpey)
// ...
}
-GAME( 2000, gunpey, 0, gunpey, gunpey, gunpey_state, gunpey, ROT0, "Banpresto", "Gunpey (Japan)",GAME_NOT_WORKING|GAME_IMPERFECT_GRAPHICS)
+GAME( 2000, gunpey, 0, gunpey, gunpey, gunpey_state, gunpey, ROT0, "Banpresto", "Gunpey (Japan)",MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS)
diff --git a/src/mame/drivers/gunsmoke.c b/src/mame/drivers/gunsmoke.c
index 5ca8c98a9f2..0e184a18f2d 100644
--- a/src/mame/drivers/gunsmoke.c
+++ b/src/mame/drivers/gunsmoke.c
@@ -48,13 +48,13 @@ Stephh's notes (based on the games Z80 code and some tests) :
You can enter 8 chars for your initials.
-3) 'gunsmokeu'
+3) 'gunsmokeub'
- US version licensed to Romstar.
You can enter 3 chars for your initials.
-4) 'gunsmokeua'
+4) 'gunsmokeu'
- US version licensed to Romstar.
You can enter 3 chars for your initials.
@@ -211,7 +211,7 @@ static INPUT_PORTS_START( gunsmoke )
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
INPUT_PORTS_END
-static INPUT_PORTS_START( gunsmokeua )
+static INPUT_PORTS_START( gunsmokeu )
PORT_INCLUDE(gunsmoke)
// Same as 'gunsmoke', but "Lives" Dip Switch instead of "Demonstration" Dip Switch
@@ -340,242 +340,296 @@ MACHINE_CONFIG_END
ROM_START( gunsmoke )
ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "09n_gs03.bin", 0x00000, 0x8000, CRC(40a06cef) SHA1(3e2a52d476298b7252f0adaefdb42090351e921c) ) /* Code 0000-7fff */
- ROM_LOAD( "10n_gs04.bin", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
- ROM_LOAD( "12n_gs05.bin", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
+ ROM_LOAD( "gs03.09n", 0x00000, 0x8000, CRC(40a06cef) SHA1(3e2a52d476298b7252f0adaefdb42090351e921c) ) /* Code 0000-7fff */ // gse_03 ?
+ ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
+ ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "14h_gs02.bin", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
+ ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "11f_gs01.bin", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
+ ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
ROM_REGION( 0x40000, "gfx2", 0 )
- ROM_LOAD( "06c_gs13.bin", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
- ROM_LOAD( "05c_gs12.bin", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
- ROM_LOAD( "04c_gs11.bin", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
- ROM_LOAD( "02c_gs10.bin", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
- ROM_LOAD( "06a_gs09.bin", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
- ROM_LOAD( "05a_gs08.bin", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
- ROM_LOAD( "04a_gs07.bin", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
- ROM_LOAD( "02a_gs06.bin", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
+ ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
+ ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
+ ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
+ ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
+ ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
+ ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
+ ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
+ ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 )
- ROM_LOAD( "06n_gs22.bin", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
- ROM_LOAD( "04n_gs21.bin", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
- ROM_LOAD( "03n_gs20.bin", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
- ROM_LOAD( "01n_gs19.bin", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
- ROM_LOAD( "06l_gs18.bin", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
- ROM_LOAD( "04l_gs17.bin", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
- ROM_LOAD( "03l_gs16.bin", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
- ROM_LOAD( "01l_gs15.bin", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
- ROM_LOAD( "11c_gs14.bin", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
+ ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
ROM_REGION( 0x0a00, "proms", 0 )
- ROM_LOAD( "03b_g-01.bin", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
- ROM_LOAD( "04b_g-02.bin", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
- ROM_LOAD( "05b_g-03.bin", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
- ROM_LOAD( "09d_g-04.bin", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
- ROM_LOAD( "14a_g-06.bin", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
- ROM_LOAD( "15a_g-07.bin", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
- ROM_LOAD( "09f_g-09.bin", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
- ROM_LOAD( "08f_g-08.bin", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
- ROM_LOAD( "02j_g-10.bin", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
- ROM_LOAD( "01f_g-05.bin", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
+ ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
+ ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
+ ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
+ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
+ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
+ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
+ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
+ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
+ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
+ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
ROM_END
ROM_START( gunsmokeb )
ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "3.ic85", 0x00000, 0x8000, CRC(ae6f4b75) SHA1(f4ee4f7a7d507ceaef9ce8165704fd80c8c1e8ba) ) /* Code 0000-7fff */
- ROM_LOAD( "10n_gs04.bin", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
- ROM_LOAD( "12n_gs05.bin", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
+ ROM_LOAD( "3.ic85", 0x00000, 0x8000, CRC(ae6f4b75) SHA1(f4ee4f7a7d507ceaef9ce8165704fd80c8c1e8ba) ) /* Code 0000-7fff */
+ ROM_LOAD( "4.ic86", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
+ ROM_LOAD( "5.ic87", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "14h_gs02.bin", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
+ ROM_LOAD( "2.ic41", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "11f_gs01.bin", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
+ ROM_LOAD( "1.ic39", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
ROM_REGION( 0x40000, "gfx2", 0 )
- ROM_LOAD( "06c_gs13.bin", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
- ROM_LOAD( "05c_gs12.bin", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
- ROM_LOAD( "04c_gs11.bin", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
- ROM_LOAD( "02c_gs10.bin", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
- ROM_LOAD( "06a_gs09.bin", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
- ROM_LOAD( "05a_gs08.bin", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
- ROM_LOAD( "04a_gs07.bin", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
- ROM_LOAD( "02a_gs06.bin", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
+ ROM_LOAD( "13.ic21", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
+ ROM_LOAD( "12.ic20", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
+ ROM_LOAD( "11.ic19", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
+ ROM_LOAD( "10.ic18", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
+ ROM_LOAD( "9.ic04", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
+ ROM_LOAD( "8.ic03", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
+ ROM_LOAD( "7.ic02", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
+ ROM_LOAD( "6.ic01", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 )
- ROM_LOAD( "06n_gs22.bin", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
- ROM_LOAD( "04n_gs21.bin", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
- ROM_LOAD( "03n_gs20.bin", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
- ROM_LOAD( "01n_gs19.bin", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
- ROM_LOAD( "06l_gs18.bin", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
- ROM_LOAD( "04l_gs17.bin", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
- ROM_LOAD( "03l_gs16.bin", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
- ROM_LOAD( "01l_gs15.bin", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "22.ic134", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "21.ic133", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "20.ic132", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "19.ic131", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "18.ic115", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "17.ic114", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "16.ic113", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "15.ic112", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
- ROM_LOAD( "11c_gs14.bin", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
+ ROM_LOAD( "14.ic25", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
+ /* The names of the proms starting with "g-" do not yet reflect their position in the pcb layout of this bootleg.
+ As the ICs are not socketed, but directly soldered to the pcb, it is harder to identify which is which.
+ But it would be good to figure this out at some point, for the sake of documenting this specific board layout. */
ROM_REGION( 0x0a00, "proms", 0 )
- ROM_LOAD( "03b_g-01.bin", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
- ROM_LOAD( "04b_g-02.bin", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
- ROM_LOAD( "05b_g-03.bin", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
- ROM_LOAD( "09d_g-04.bin", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
- ROM_LOAD( "14a_g-06.bin", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
- ROM_LOAD( "15a_g-07.bin", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
- ROM_LOAD( "09f_g-09.bin", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
- ROM_LOAD( "08f_g-08.bin", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
- ROM_LOAD( "02j_g-10.bin", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
- ROM_LOAD( "01f_g-05.bin", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
+ ROM_LOAD( "prom.ic3", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
+ ROM_LOAD( "prom.ic4", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
+ ROM_LOAD( "prom.ic5", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
+ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
+ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
+ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
+ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
+ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
+ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
+ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
ROM_END
ROM_START( gunsmokej )
ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "gs03_9n.rom", 0x00000, 0x8000, CRC(b56b5df6) SHA1(0295a3ef491b6b8ee9c198fd08dddc29d88bbef6) ) /* Code 0000-7fff */
- ROM_LOAD( "10n_gs04.bin", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
- ROM_LOAD( "12n_gs05.bin", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
+ ROM_LOAD( "gsj_03.09n", 0x00000, 0x8000, CRC(b56b5df6) SHA1(0295a3ef491b6b8ee9c198fd08dddc29d88bbef6) ) /* Code 0000-7fff */
+ ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
+ ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "14h_gs02.bin", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
+ ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "11f_gs01.bin", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
+ ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
ROM_REGION( 0x40000, "gfx2", 0 )
- ROM_LOAD( "06c_gs13.bin", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
- ROM_LOAD( "05c_gs12.bin", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
- ROM_LOAD( "04c_gs11.bin", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
- ROM_LOAD( "02c_gs10.bin", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
- ROM_LOAD( "06a_gs09.bin", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
- ROM_LOAD( "05a_gs08.bin", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
- ROM_LOAD( "04a_gs07.bin", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
- ROM_LOAD( "02a_gs06.bin", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
+ ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
+ ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
+ ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
+ ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
+ ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
+ ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
+ ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
+ ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 )
- ROM_LOAD( "06n_gs22.bin", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
- ROM_LOAD( "04n_gs21.bin", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
- ROM_LOAD( "03n_gs20.bin", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
- ROM_LOAD( "01n_gs19.bin", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
- ROM_LOAD( "06l_gs18.bin", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
- ROM_LOAD( "04l_gs17.bin", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
- ROM_LOAD( "03l_gs16.bin", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
- ROM_LOAD( "01l_gs15.bin", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
- ROM_LOAD( "11c_gs14.bin", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
+ ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
ROM_REGION( 0x0a00, "proms", 0 )
- ROM_LOAD( "03b_g-01.bin", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
- ROM_LOAD( "04b_g-02.bin", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
- ROM_LOAD( "05b_g-03.bin", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
- ROM_LOAD( "09d_g-04.bin", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
- ROM_LOAD( "14a_g-06.bin", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
- ROM_LOAD( "15a_g-07.bin", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
- ROM_LOAD( "09f_g-09.bin", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
- ROM_LOAD( "08f_g-08.bin", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
- ROM_LOAD( "02j_g-10.bin", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
- ROM_LOAD( "01f_g-05.bin", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
+ ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
+ ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
+ ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
+ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
+ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
+ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
+ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
+ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
+ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
+ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
ROM_END
ROM_START( gunsmokeu )
ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "9n_gs03.bin", 0x00000, 0x8000, CRC(592f211b) SHA1(8de44b3cafa3d2ce9aba515cf3ec4bac0bcdeb5b) ) /* Code 0000-7fff */
- ROM_LOAD( "10n_gs04.bin", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
- ROM_LOAD( "12n_gs05.bin", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
+ ROM_LOAD( "gsa_03.9n", 0x00000, 0x8000, CRC(51dc3f76) SHA1(2a188fee73c3662b665b56a825eb908b7b42dcd0) ) /* Code 0000-7fff */
+ ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(5ecf31b8) SHA1(34ec9727330821a45b497c78c970a1a4f14ff4ee) ) /* Paged code */
+ ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(1c9aca13) SHA1(eb92c373d2241aea4c59248e1b82717733105ac0) ) /* Paged code */
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "14h_gs02.bin", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
+ ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "11f_gs01.bin", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
+ ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
ROM_REGION( 0x40000, "gfx2", 0 )
- ROM_LOAD( "06c_gs13.bin", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
- ROM_LOAD( "05c_gs12.bin", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
- ROM_LOAD( "04c_gs11.bin", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
- ROM_LOAD( "02c_gs10.bin", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
- ROM_LOAD( "06a_gs09.bin", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
- ROM_LOAD( "05a_gs08.bin", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
- ROM_LOAD( "04a_gs07.bin", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
- ROM_LOAD( "02a_gs06.bin", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
+ ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
+ ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
+ ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
+ ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
+ ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
+ ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
+ ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
+ ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 )
- ROM_LOAD( "06n_gs22.bin", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
- ROM_LOAD( "04n_gs21.bin", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
- ROM_LOAD( "03n_gs20.bin", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
- ROM_LOAD( "01n_gs19.bin", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
- ROM_LOAD( "06l_gs18.bin", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
- ROM_LOAD( "04l_gs17.bin", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
- ROM_LOAD( "03l_gs16.bin", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
- ROM_LOAD( "01l_gs15.bin", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
- ROM_LOAD( "11c_gs14.bin", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
+ ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
ROM_REGION( 0x0a00, "proms", 0 )
- ROM_LOAD( "03b_g-01.bin", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
- ROM_LOAD( "04b_g-02.bin", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
- ROM_LOAD( "05b_g-03.bin", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
- ROM_LOAD( "09d_g-04.bin", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
- ROM_LOAD( "14a_g-06.bin", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
- ROM_LOAD( "15a_g-07.bin", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
- ROM_LOAD( "09f_g-09.bin", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
- ROM_LOAD( "08f_g-08.bin", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
- ROM_LOAD( "02j_g-10.bin", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
- ROM_LOAD( "01f_g-05.bin", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
+ ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
+ ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
+ ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
+ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
+ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
+ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
+ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
+ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
+ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
+ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
ROM_END
+
+
+
ROM_START( gunsmokeua )
+ ROM_REGION( 0x20000, "maincpu", 0 ) // has a small extra piece of code at 0x2f00 and a jump to it at 0x297b, otherwise the same as gunsmokeub including the datecode, chip had an 'A' stamped on it, bugfix?
+ ROM_LOAD( "gsr_03a.9n", 0x00000, 0x8000, CRC(2f6e6ad7) SHA1(e9e4a367c240a35a1ba2eeaec9458996f7926f16) ) /* Code 0000-7fff */
+ ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
+ ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
+
+ ROM_REGION( 0x04000, "gfx1", 0 )
+ ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
+
+ ROM_REGION( 0x40000, "gfx2", 0 )
+ ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
+ ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
+ ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
+ ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
+ ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
+ ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
+ ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
+ ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
+
+ ROM_REGION( 0x40000, "gfx3", 0 )
+ ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
+
+ ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
+ ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
+
+ ROM_REGION( 0x0a00, "proms", 0 )
+ ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
+ ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
+ ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
+ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
+ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
+ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
+ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
+ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
+ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
+ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
+ROM_END
+
+ROM_START( gunsmokeub )
ROM_REGION( 0x20000, "maincpu", 0 )
- ROM_LOAD( "gs03.9n", 0x00000, 0x8000, CRC(51dc3f76) SHA1(2a188fee73c3662b665b56a825eb908b7b42dcd0) ) /* Code 0000-7fff */
- ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(5ecf31b8) SHA1(34ec9727330821a45b497c78c970a1a4f14ff4ee) ) /* Paged code */
- ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(1c9aca13) SHA1(eb92c373d2241aea4c59248e1b82717733105ac0) ) /* Paged code */
+ ROM_LOAD( "gsr_03.9n", 0x00000, 0x8000, CRC(592f211b) SHA1(8de44b3cafa3d2ce9aba515cf3ec4bac0bcdeb5b) ) /* Code 0000-7fff */
+ ROM_LOAD( "gs04.10n", 0x10000, 0x8000, CRC(8d4b423f) SHA1(149274c2ed1526ca1f419fdf8a24059ff138f7f2) ) /* Paged code */
+ ROM_LOAD( "gs05.12n", 0x18000, 0x8000, CRC(2b5667fb) SHA1(5b689bca1e76d803b4cae22feaa7744fa528e93f) ) /* Paged code */
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "14h_gs02.bin", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
+ ROM_LOAD( "gs02.14h", 0x00000, 0x8000, CRC(cd7a2c38) SHA1(c76c471f694b76015370f0eacf5350e652f526ff) )
ROM_REGION( 0x04000, "gfx1", 0 )
- ROM_LOAD( "11f_gs01.bin", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
+ ROM_LOAD( "gs01.11f", 0x00000, 0x4000, CRC(b61ece9b) SHA1(eb3fc62644cc5b5a2b9cbe67c393d4a0e2a59ca9) ) /* Characters */
ROM_REGION( 0x40000, "gfx2", 0 )
- ROM_LOAD( "06c_gs13.bin", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
- ROM_LOAD( "05c_gs12.bin", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
- ROM_LOAD( "04c_gs11.bin", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
- ROM_LOAD( "02c_gs10.bin", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
- ROM_LOAD( "06a_gs09.bin", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
- ROM_LOAD( "05a_gs08.bin", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
- ROM_LOAD( "04a_gs07.bin", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
- ROM_LOAD( "02a_gs06.bin", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
+ ROM_LOAD( "gs13.06c", 0x00000, 0x8000, CRC(f6769fc5) SHA1(d192ec176425327ca4b7e25fc8432fc47837ba29) ) /* 32x32 tiles planes 2-3 */
+ ROM_LOAD( "gs12.05c", 0x08000, 0x8000, CRC(d997b78c) SHA1(3b4a9b6f9e57ecfb4ab9734379bd0ee765fd6daa) )
+ ROM_LOAD( "gs11.04c", 0x10000, 0x8000, CRC(125ba58e) SHA1(cf6931653cebd051564bed8121ab8713a55095c5) )
+ ROM_LOAD( "gs10.02c", 0x18000, 0x8000, CRC(f469c13c) SHA1(54eda52d6fce58771c0adfe2c88292a41d5a9b99) )
+ ROM_LOAD( "gs09.06a", 0x20000, 0x8000, CRC(539f182d) SHA1(4190c0adbecc57b92f4d002e121acb77e8c5d8d8) ) /* 32x32 tiles planes 0-1 */
+ ROM_LOAD( "gs08.05a", 0x28000, 0x8000, CRC(e87e526d) SHA1(d10068addf30322424a85bbc6382cb762ae3fbe2) )
+ ROM_LOAD( "gs07.04a", 0x30000, 0x8000, CRC(4382c0d2) SHA1(8615e62bc57b40d082f6ca211d64f22185bed1fd) )
+ ROM_LOAD( "gs06.02a", 0x38000, 0x8000, CRC(4cafe7a6) SHA1(fe501f3a5e9ce9e82e9708f1cd297f4c94ef0f81) )
ROM_REGION( 0x40000, "gfx3", 0 )
- ROM_LOAD( "06n_gs22.bin", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
- ROM_LOAD( "04n_gs21.bin", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
- ROM_LOAD( "03n_gs20.bin", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
- ROM_LOAD( "01n_gs19.bin", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
- ROM_LOAD( "06l_gs18.bin", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
- ROM_LOAD( "04l_gs17.bin", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
- ROM_LOAD( "03l_gs16.bin", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
- ROM_LOAD( "01l_gs15.bin", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs22.06n", 0x00000, 0x8000, CRC(dc9c508c) SHA1(920505dd4c63b177918feb4e54cca8a7948ec9d9) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs21.04n", 0x08000, 0x8000, CRC(68883749) SHA1(c7bf2bf49c53feddf8f30b4001dc2d59b52b1c28) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs20.03n", 0x10000, 0x8000, CRC(0be932ed) SHA1(1c5af5884a23112dbc36579515d1cb497992da2f) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs19.01n", 0x18000, 0x8000, CRC(63072f93) SHA1(cb3a2729782cf2855558d081fe92d28366228b8e) ) /* Sprites planes 2-3 */
+ ROM_LOAD( "gs18.06l", 0x20000, 0x8000, CRC(f69a3c7c) SHA1(e9eb9dfa7d53aa7b728150f91d05bfc3bf6f1e75) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs17.04l", 0x28000, 0x8000, CRC(4e98562a) SHA1(0341b8a79be1d71a57d0d76ed890e15f9f92259e) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs16.03l", 0x30000, 0x8000, CRC(0d99c3b3) SHA1(436c566b76f632242448671e3b6319f7d9f65322) ) /* Sprites planes 0-1 */
+ ROM_LOAD( "gs15.01l", 0x38000, 0x8000, CRC(7f14270e) SHA1(dd06c333c2ea097e25185a1423cd61e1b7afc42b) ) /* Sprites planes 0-1 */
ROM_REGION( 0x8000, "gfx4", 0 ) /* background tilemaps */
- ROM_LOAD( "11c_gs14.bin", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
+ ROM_LOAD( "gs14.11c", 0x00000, 0x8000, CRC(0af4f7eb) SHA1(24a98fdeedeeaf1035b4af52d5a8dd5e47a5e62d) )
ROM_REGION( 0x0a00, "proms", 0 )
- ROM_LOAD( "03b_g-01.bin", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
- ROM_LOAD( "04b_g-02.bin", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
- ROM_LOAD( "05b_g-03.bin", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
- ROM_LOAD( "09d_g-04.bin", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
- ROM_LOAD( "14a_g-06.bin", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
- ROM_LOAD( "15a_g-07.bin", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
- ROM_LOAD( "09f_g-09.bin", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
- ROM_LOAD( "08f_g-08.bin", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
- ROM_LOAD( "02j_g-10.bin", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
- ROM_LOAD( "01f_g-05.bin", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
+ ROM_LOAD( "g-01.03b", 0x0000, 0x0100, CRC(02f55589) SHA1(8a3f98304aedf3aba1c08b615bf457752a480edc) ) /* red component */
+ ROM_LOAD( "g-02.04b", 0x0100, 0x0100, CRC(e1e36dd9) SHA1(5bd88a35898a2d973045bdde8311aac3a12826de) ) /* green component */
+ ROM_LOAD( "g-03.05b", 0x0200, 0x0100, CRC(989399c0) SHA1(e408e391f49ed0c7b9e16479fea44b809440fefc) ) /* blue component */
+ ROM_LOAD( "g-04.09d", 0x0300, 0x0100, CRC(906612b5) SHA1(7b727a6200c088538180758320ede84aa7e5b96d) ) /* char lookup table */
+ ROM_LOAD( "g-06.14a", 0x0400, 0x0100, CRC(4a9da18b) SHA1(fed3b81b56aab2ed0a21ed1fcebe3f1ae095a13b) ) /* tile lookup table */
+ ROM_LOAD( "g-07.15a", 0x0500, 0x0100, CRC(cb9394fc) SHA1(8ad0fde6a8ef8326d2da4b6dbf3b51f5f6c668c8) ) /* tile palette bank */
+ ROM_LOAD( "g-09.09f", 0x0600, 0x0100, CRC(3cee181e) SHA1(3f95bdb12391cb9b3673191bda8d09c84b36b4d3) ) /* sprite lookup table */
+ ROM_LOAD( "g-08.08f", 0x0700, 0x0100, CRC(ef91cdd2) SHA1(90b9191c9f10a153d64055a4238eb6e15b8c12bc) ) /* sprite palette bank */
+ ROM_LOAD( "g-10.02j", 0x0800, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* video timing (not used) */
+ ROM_LOAD( "g-05.01f", 0x0900, 0x0100, CRC(25c90c2a) SHA1(42893572bab757ec01e181fc418cb911638d37e0) ) /* priority? (not used) */
ROM_END
/* Game Drivers */
@@ -586,8 +640,9 @@ ROM_END
// this information is not displayed onscreen
-GAME( 1985, gunsmoke, 0, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom", "Gun.Smoke (World, 851115)", GAME_SUPPORTS_SAVE ) // GSE_03
-GAME( 1985, gunsmokeb, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "bootleg", "Gun.Smoke (World, 851115) (bootleg)", GAME_SUPPORTS_SAVE ) // based on above version, warning message patched out
-GAME( 1985, gunsmokej, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom", "Gun.Smoke (Japan, 851115)", GAME_SUPPORTS_SAVE ) // GSJ_03
-GAME( 1985, gunsmokeu, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 851115)", GAME_SUPPORTS_SAVE ) // GSR_03
-GAME( 1986, gunsmokeua, gunsmoke, gunsmoke, gunsmokeua, driver_device, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 860408)", GAME_SUPPORTS_SAVE ) // GSA_03
+GAME( 1985, gunsmoke, 0, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom", "Gun.Smoke (World, 851115)", MACHINE_SUPPORTS_SAVE ) // GSE_03
+GAME( 1985, gunsmokeb, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "bootleg", "Gun.Smoke (World, 851115) (bootleg)", MACHINE_SUPPORTS_SAVE ) // based on above version, warning message patched out
+GAME( 1985, gunsmokej, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom", "Gun.Smoke (Japan, 851115)", MACHINE_SUPPORTS_SAVE ) // GSJ_03
+GAME( 1986, gunsmokeu, gunsmoke, gunsmoke, gunsmokeu, driver_device, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 860408)", MACHINE_SUPPORTS_SAVE ) // GSA_03
+GAME( 1985, gunsmokeua, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 851115, set 1)", MACHINE_SUPPORTS_SAVE ) // GSR_03 (03A on the chip)
+GAME( 1986, gunsmokeub, gunsmoke, gunsmoke, gunsmoke, driver_device, 0, ROT270, "Capcom (Romstar license)", "Gun.Smoke (US, 851115, set 2)", MACHINE_SUPPORTS_SAVE ) // GSR_03
diff --git a/src/mame/drivers/gyruss.c b/src/mame/drivers/gyruss.c
index e894a93edd2..a88dea9ea8b 100644
--- a/src/mame/drivers/gyruss.c
+++ b/src/mame/drivers/gyruss.c
@@ -684,7 +684,7 @@ DRIVER_INIT_MEMBER(gyruss_state,gyruss)
}
-GAME( 1983, gyruss, 0, gyruss, gyruss, gyruss_state, gyruss, ROT90, "Konami", "Gyruss", GAME_SUPPORTS_SAVE )
-GAME( 1983, gyrussce, gyruss, gyruss, gyrussce, gyruss_state, gyruss, ROT90, "Konami (Centuri license)", "Gyruss (Centuri)", GAME_SUPPORTS_SAVE )
-GAME( 1983, gyrussb, gyruss, gyruss, gyruss, gyruss_state, gyruss, ROT90, "bootleg?", "Gyruss (bootleg?)", GAME_SUPPORTS_SAVE ) /* Supposed Taito NZ license, but (c) Konami */
-GAME( 1983, venus, gyruss, gyruss, gyruss, gyruss_state, gyruss, ROT90, "bootleg", "Venus (bootleg of Gyruss)", GAME_SUPPORTS_SAVE )
+GAME( 1983, gyruss, 0, gyruss, gyruss, gyruss_state, gyruss, ROT90, "Konami", "Gyruss", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, gyrussce, gyruss, gyruss, gyrussce, gyruss_state, gyruss, ROT90, "Konami (Centuri license)", "Gyruss (Centuri)", MACHINE_SUPPORTS_SAVE )
+GAME( 1983, gyrussb, gyruss, gyruss, gyruss, gyruss_state, gyruss, ROT90, "bootleg?", "Gyruss (bootleg?)", MACHINE_SUPPORTS_SAVE ) /* Supposed Taito NZ license, but (c) Konami */
+GAME( 1983, venus, gyruss, gyruss, gyruss, gyruss_state, gyruss, ROT90, "bootleg", "Venus (bootleg of Gyruss)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/h19.c b/src/mame/drivers/h19.c
index 23cd1ff767b..4e44801c862 100644
--- a/src/mess/drivers/h19.c
+++ b/src/mame/drivers/h19.c
@@ -449,4 +449,4 @@ ROM_END
/* Driver (year is either 1978 or 1979) */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1978, h19, 0, 0, h19, h19, driver_device, 0, "Heath Inc", "Heathkit H-19", GAME_NOT_WORKING )
+COMP( 1978, h19, 0, 0, h19, h19, driver_device, 0, "Heath Inc", "Heathkit H-19", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/h8.c b/src/mame/drivers/h8.c
index cfe20e29774..9838ad98100 100644
--- a/src/mess/drivers/h8.c
+++ b/src/mame/drivers/h8.c
@@ -365,4 +365,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS, INIT COMPANY FULLNAME FLAGS */
-COMP( 1977, h8, 0, 0, h8, h8, driver_device, 0, "Heath, Inc.", "Heathkit H8", GAME_NOT_WORKING )
+COMP( 1977, h8, 0, 0, h8, h8, driver_device, 0, "Heath, Inc.", "Heathkit H8", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/h89.c b/src/mame/drivers/h89.c
index a9eb016f47a..8ad90cede45 100644
--- a/src/mess/drivers/h89.c
+++ b/src/mame/drivers/h89.c
@@ -148,4 +148,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1979, h89, 0, 0, h89, h89, driver_device, 0, "Heath Inc", "Heathkit H89", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1979, h89, 0, 0, h89, h89, driver_device, 0, "Heath Inc", "Heathkit H89", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/halleys.c b/src/mame/drivers/halleys.c
index 3933f30ac6b..74af3713368 100644
--- a/src/mame/drivers/halleys.c
+++ b/src/mame/drivers/halleys.c
@@ -2271,8 +2271,8 @@ DRIVER_INIT_MEMBER(halleys_state,halley87)
//**************************************************************************
// Game Definitions
-GAME( 1984, benberob, 0, benberob, benberob, halleys_state, benberob, ROT0, "Taito", "Ben Bero Beh (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS | GAME_NO_COCKTAIL )
-GAME( 1986, halleys, 0, halleys, halleys, halleys_state, halleys, ROT90, "Taito America Corporation (Coin-It license)", "Halley's Comet (US)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL )
-GAME( 1986, halleysc, halleys, halleys, halleys, halleys_state, halleys, ROT90, "Taito Corporation", "Halley's Comet (Japan, Newer)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL )
-GAME( 1986, halleycj, halleys, halleys, halleys, halleys_state, halleys, ROT90, "Taito Corporation", "Halley's Comet (Japan, Older)", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL )
-GAME( 1986, halley87, halleys, halleys, halleys, halleys_state, halley87, ROT90, "Taito Corporation", "Halley's Comet '87", GAME_IMPERFECT_GRAPHICS | GAME_NO_COCKTAIL )
+GAME( 1984, benberob, 0, benberob, benberob, halleys_state, benberob, ROT0, "Taito", "Ben Bero Beh (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_NO_COCKTAIL )
+GAME( 1986, halleys, 0, halleys, halleys, halleys_state, halleys, ROT90, "Taito America Corporation (Coin-It license)", "Halley's Comet (US)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL )
+GAME( 1986, halleysc, halleys, halleys, halleys, halleys_state, halleys, ROT90, "Taito Corporation", "Halley's Comet (Japan, Newer)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL )
+GAME( 1986, halleycj, halleys, halleys, halleys, halleys_state, halleys, ROT90, "Taito Corporation", "Halley's Comet (Japan, Older)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL )
+GAME( 1986, halley87, halleys, halleys, halleys, halleys_state, halley87, ROT90, "Taito Corporation", "Halley's Comet '87", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL )
diff --git a/src/mame/drivers/hanaawas.c b/src/mame/drivers/hanaawas.c
index 2cb0c7acbff..cf50df04135 100644
--- a/src/mame/drivers/hanaawas.c
+++ b/src/mame/drivers/hanaawas.c
@@ -242,4 +242,4 @@ ROM_START( hanaawas )
ROM_END
-GAME( 1982, hanaawas, 0, hanaawas, hanaawas, driver_device, 0, ROT0, "Seta Kikaku, Ltd.", "Hana Awase", GAME_SUPPORTS_SAVE )
+GAME( 1982, hanaawas, 0, hanaawas, hanaawas, driver_device, 0, ROT0, "Seta Kikaku, Ltd.", "Hana Awase", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hankin.c b/src/mame/drivers/hankin.c
index 09bf415c8b8..14dcda9555b 100644
--- a/src/mame/drivers/hankin.c
+++ b/src/mame/drivers/hankin.c
@@ -600,8 +600,8 @@ ROM_START(empsback)
ROM_END
-GAME(1978, fjholden, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "FJ Holden", GAME_MECHANICAL )
-GAME(1978, orbit1, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "Orbit 1", GAME_MECHANICAL )
-GAME(1980, shark, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "Shark", GAME_MECHANICAL )
-GAME(1980, howzat, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "Howzat!", GAME_MECHANICAL )
-GAME(1981, empsback, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "The Empire Strike Back", GAME_MECHANICAL )
+GAME(1978, fjholden, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "FJ Holden", MACHINE_MECHANICAL )
+GAME(1978, orbit1, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "Orbit 1", MACHINE_MECHANICAL )
+GAME(1980, shark, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "Shark", MACHINE_MECHANICAL )
+GAME(1980, howzat, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "Howzat!", MACHINE_MECHANICAL )
+GAME(1981, empsback, 0, hankin, hankin, driver_device, 0, ROT0, "Hankin", "The Empire Strike Back", MACHINE_MECHANICAL )
diff --git a/src/mame/drivers/harddriv.c b/src/mame/drivers/harddriv.c
index 43238a42336..95a60fb7134 100644
--- a/src/mame/drivers/harddriv.c
+++ b/src/mame/drivers/harddriv.c
@@ -355,6 +355,8 @@ harddriv_state::harddriv_state(const machine_config &mconfig, const char *tag, d
m_ds3dac2(*this, "ds3dac2"),
m_harddriv_sound(*this, "harddriv_sound"),
m_jsa(*this, "jsa"),
+ m_screen(*this, "screen"),
+ m_duartn68681(*this, "duartn68681"),
m_hd34010_host_access(0),
m_dsk_pio_access(0),
m_msp_ram(*this, "msp_ram"),
@@ -384,6 +386,11 @@ harddriv_state::harddriv_state(const machine_config &mconfig, const char *tag, d
m_gsp_control_hi(*this, "gsp_control_hi"),
m_gsp_paletteram_lo(*this, "gsp_palram_lo"),
m_gsp_paletteram_hi(*this, "gsp_palram_hi"),
+ m_in0(*this, "IN0"),
+ m_sw1(*this, "SW1"),
+ m_a80000(*this, "a80000"),
+ m_8badc(*this, "8BADC"),
+ m_12badc(*this, "12BADC"),
m_irq_state(0),
m_gsp_irq_state(0),
m_msp_irq_state(0),
@@ -499,9 +506,18 @@ class harddriv_new_state : public driver_device
public:
harddriv_new_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
+ , m_mainpcb(*this, "mainpcb")
+ , m_leftpcb(*this, "leftpcb")
+ , m_rightpcb(*this, "rightpcb")
{ }
TIMER_DEVICE_CALLBACK_MEMBER(hack_timer);
+ DECLARE_WRITE_LINE_MEMBER(tx_a);
+
+ required_device<harddriv_state> m_mainpcb;
+ optional_device<harddriv_state> m_leftpcb;
+ optional_device<harddriv_state> m_rightpcb;
+
};
@@ -777,40 +793,40 @@ static INPUT_PORTS_START( harddriv )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */
PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
+ PORT_START("mainpcb:8BADC.0") /* b00000 - 8 bit ADC 0 - gas pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
- PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */
+ PORT_START("mainpcb:8BADC.1") /* b00000 - 8 bit ADC 1 - clutch pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
- PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 - seat */
+ PORT_START("mainpcb:8BADC.2") /* b00000 - 8 bit ADC 2 - seat */
PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
- PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 - shifter lever Y */
+ PORT_START("mainpcb:8BADC.3") /* b00000 - 8 bit ADC 3 - shifter lever Y */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_R) PORT_CODE_INC(KEYCODE_F) PORT_NAME("Shifter Lever Y")
- PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 - shifter lever X*/
+ PORT_START("mainpcb:8BADC.4") /* b00000 - 8 bit ADC 4 - shifter lever X*/
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_D) PORT_CODE_INC(KEYCODE_G) PORT_NAME("Shifter Lever X")
- PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 - wheel */
+ PORT_START("mainpcb:8BADC.5") /* b00000 - 8 bit ADC 5 - wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Wheel")
- PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 - line volts */
+ PORT_START("mainpcb:8BADC.6") /* b00000 - 8 bit ADC 6 - line volts */
PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
- PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 - shift force */
+ PORT_START("mainpcb:8BADC.7") /* b00000 - 8 bit ADC 7 - shift force */
PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
- PORT_START("mainpcb:12BADC0") /* b80000 - 12 bit ADC 0 - steering wheel */
+ PORT_START("mainpcb:12BADC.0") /* b80000 - 12 bit ADC 0 - steering wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
- PORT_START("mainpcb:12BADC1") /* b80000 - 12 bit ADC 1 - force brake */
+ PORT_START("mainpcb:12BADC.1") /* b80000 - 12 bit ADC 1 - force brake */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
- PORT_START("mainpcb:12BADC2") /* b80000 - 12 bit ADC 2 */
+ PORT_START("mainpcb:12BADC.2") /* b80000 - 12 bit ADC 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC3") /* b80000 - 12 bit ADC 3 */
+ PORT_START("mainpcb:12BADC.3") /* b80000 - 12 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@@ -861,40 +877,40 @@ static INPUT_PORTS_START( racedriv )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 ) /* aux coin */
PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
+ PORT_START("mainpcb:8BADC.0") /* b00000 - 8 bit ADC 0 - gas pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
- PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */
+ PORT_START("mainpcb:8BADC.1") /* b00000 - 8 bit ADC 1 - clutch pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
- PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 - seat */
+ PORT_START("mainpcb:8BADC.2") /* b00000 - 8 bit ADC 2 - seat */
PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
- PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 - shifter lever Y */
+ PORT_START("mainpcb:8BADC.3") /* b00000 - 8 bit ADC 3 - shifter lever Y */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_R) PORT_CODE_INC(KEYCODE_F) PORT_NAME("Shifter Lever Y")
- PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 - shifter lever X*/
+ PORT_START("mainpcb:8BADC.4") /* b00000 - 8 bit ADC 4 - shifter lever X*/
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(128) PORT_CODE_DEC(KEYCODE_D) PORT_CODE_INC(KEYCODE_G) PORT_NAME("Shifter Lever X")
- PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 - wheel */
+ PORT_START("mainpcb:8BADC.5") /* b00000 - 8 bit ADC 5 - wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Wheel")
- PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 - line volts */
+ PORT_START("mainpcb:8BADC.6") /* b00000 - 8 bit ADC 6 - line volts */
PORT_BIT( 0xff, 0x80, IPT_SPECIAL )
- PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 */
+ PORT_START("mainpcb:8BADC.7") /* b00000 - 8 bit ADC 7 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC0") /* b80000 - 12 bit ADC 0 - steering wheel */
+ PORT_START("mainpcb:12BADC.0") /* b80000 - 12 bit ADC 0 - steering wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
- PORT_START("mainpcb:12BADC1") /* b80000 - 12 bit ADC 1 - force brake */
+ PORT_START("mainpcb:12BADC.1") /* b80000 - 12 bit ADC 1 - force brake */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
- PORT_START("mainpcb:12BADC2") /* b80000 - 12 bit ADC 2 */
+ PORT_START("mainpcb:12BADC.2") /* b80000 - 12 bit ADC 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC3") /* b80000 - 12 bit ADC 3 */
+ PORT_START("mainpcb:12BADC.3") /* b80000 - 12 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@@ -991,39 +1007,39 @@ static INPUT_PORTS_START( racedrivc )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* center edge on steering wheel */
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
+ PORT_START("mainpcb:8BADC.0") /* b00000 - 8 bit ADC 0 - gas pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
- PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 - clutch pedal */
+ PORT_START("mainpcb:8BADC.1") /* b00000 - 8 bit ADC 1 - clutch pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL3 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(100) PORT_NAME("Clutch Pedal")
- PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 */
+ PORT_START("mainpcb:8BADC.2") /* b00000 - 8 bit ADC 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 */
+ PORT_START("mainpcb:8BADC.3") /* b00000 - 8 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 */
+ PORT_START("mainpcb:8BADC.4") /* b00000 - 8 bit ADC 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 */
+ PORT_START("mainpcb:8BADC.5") /* b00000 - 8 bit ADC 5 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 - force brake */
+ PORT_START("mainpcb:8BADC.6") /* b00000 - 8 bit ADC 6 - force brake */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Force Brake")
- PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 */
+ PORT_START("mainpcb:8BADC.7") /* b00000 - 8 bit ADC 7 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC0") /* 400000 - steering wheel */
+ PORT_START("mainpcb:12BADC.0") /* 400000 - steering wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
/* dummy ADC ports to end up with the same number as the full version */
- PORT_START("mainpcb:12BADC1")
+ PORT_START("mainpcb:12BADC.1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC2")
+ PORT_START("mainpcb:12BADC.2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC3")
+ PORT_START("mainpcb:12BADC.3")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@@ -1073,40 +1089,40 @@ static INPUT_PORTS_START( stunrun )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0xfff8, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 */
+ PORT_START("mainpcb:8BADC.0") /* b00000 - 8 bit ADC 0 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
- PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 */
+ PORT_START("mainpcb:8BADC.1") /* b00000 - 8 bit ADC 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 */
+ PORT_START("mainpcb:8BADC.2") /* b00000 - 8 bit ADC 2 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10)
- PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 */
+ PORT_START("mainpcb:8BADC.3") /* b00000 - 8 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 */
+ PORT_START("mainpcb:8BADC.4") /* b00000 - 8 bit ADC 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 */
+ PORT_START("mainpcb:8BADC.5") /* b00000 - 8 bit ADC 5 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 */
+ PORT_START("mainpcb:8BADC.6") /* b00000 - 8 bit ADC 6 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 */
+ PORT_START("mainpcb:8BADC.7") /* b00000 - 8 bit ADC 7 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC0") /* b80000 - 12 bit ADC 0 */
+ PORT_START("mainpcb:12BADC.0") /* b80000 - 12 bit ADC 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC1") /* b80000 - 12 bit ADC 1 */
+ PORT_START("mainpcb:12BADC.1") /* b80000 - 12 bit ADC 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC2") /* b80000 - 12 bit ADC 2 */
+ PORT_START("mainpcb:12BADC.2") /* b80000 - 12 bit ADC 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC3") /* b80000 - 12 bit ADC 3 */
+ PORT_START("mainpcb:12BADC.3") /* b80000 - 12 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
/* stunrun has its own coins */
@@ -1163,40 +1179,40 @@ static INPUT_PORTS_START( steeltal )
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Real Helicopter Flight")
PORT_BIT( 0xfff0, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 */
+ PORT_START("mainpcb:8BADC.0") /* b00000 - 8 bit ADC 0 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 */
+ PORT_START("mainpcb:8BADC.1") /* b00000 - 8 bit ADC 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) /* volume control */
- PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 */
+ PORT_START("mainpcb:8BADC.2") /* b00000 - 8 bit ADC 2 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 */
+ PORT_START("mainpcb:8BADC.3") /* b00000 - 8 bit ADC 3 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 */
+ PORT_START("mainpcb:8BADC.4") /* b00000 - 8 bit ADC 4 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 */
+ PORT_START("mainpcb:8BADC.5") /* b00000 - 8 bit ADC 5 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 */
+ PORT_START("mainpcb:8BADC.6") /* b00000 - 8 bit ADC 6 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 */
+ PORT_START("mainpcb:8BADC.7") /* b00000 - 8 bit ADC 7 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC0") /* b80000 - 12 bit ADC 0 */
+ PORT_START("mainpcb:12BADC.0") /* b80000 - 12 bit ADC 0 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) /* left/right */
- PORT_START("mainpcb:12BADC1") /* b80000 - 12 bit ADC 1 */
+ PORT_START("mainpcb:12BADC.1") /* b80000 - 12 bit ADC 1 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) /* up/down */
- PORT_START("mainpcb:12BADC2") /* b80000 - 12 bit ADC 2 */
+ PORT_START("mainpcb:12BADC.2") /* b80000 - 12 bit ADC 2 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Z ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Collective") PORT_REVERSE /* collective */
- PORT_START("mainpcb:12BADC3") /* b80000 - 12 bit ADC 3 */
+ PORT_START("mainpcb:12BADC.3") /* b80000 - 12 bit ADC 3 */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Rudder") PORT_PLAYER(2) /* rudder */
/* steeltal has its own coins */
@@ -1260,39 +1276,39 @@ static INPUT_PORTS_START( strtdriv )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* center edge on steering wheel */
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
+ PORT_START("mainpcb:8BADC.0") /* b00000 - 8 bit ADC 0 - gas pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
- PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 */
+ PORT_START("mainpcb:8BADC.1") /* b00000 - 8 bit ADC 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 - voice mic */
+ PORT_START("mainpcb:8BADC.2") /* b00000 - 8 bit ADC 2 - voice mic */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 - volume */
+ PORT_START("mainpcb:8BADC.3") /* b00000 - 8 bit ADC 3 - volume */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 - elevator */
+ PORT_START("mainpcb:8BADC.4") /* b00000 - 8 bit ADC 4 - elevator */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_NAME("Elevator") PORT_REVERSE /* up/down */
- PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 - canopy */
+ PORT_START("mainpcb:8BADC.5") /* b00000 - 8 bit ADC 5 - canopy */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 - brake */
+ PORT_START("mainpcb:8BADC.6") /* b00000 - 8 bit ADC 6 - brake */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_NAME("Brake") PORT_REVERSE
- PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 - seat adjust */
+ PORT_START("mainpcb:8BADC.7") /* b00000 - 8 bit ADC 7 - seat adjust */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("mainpcb:12BADC0") /* 400000 - steering wheel */
+ PORT_START("mainpcb:12BADC.0") /* 400000 - steering wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_NAME("Steering Wheel")
/* dummy ADC ports to end up with the same number as the full version */
- PORT_START("mainpcb:12BADC1") /* FAKE */
+ PORT_START("mainpcb:12BADC.1") /* FAKE */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC2") /* FAKE */
+ PORT_START("mainpcb:12BADC.2") /* FAKE */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC3") /* FAKE */
+ PORT_START("mainpcb:12BADC.3") /* FAKE */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@@ -1350,39 +1366,39 @@ static INPUT_PORTS_START( hdrivair )
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_SPECIAL ) /* center edge on steering wheel */
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC0") /* b00000 - 8 bit ADC 0 - gas pedal */
+ PORT_START("mainpcb:8BADC.0") /* b00000 - 8 bit ADC 0 - gas pedal */
PORT_BIT( 0xff, 0x00, IPT_PEDAL ) PORT_SENSITIVITY(25) PORT_KEYDELTA(20) PORT_NAME("Gas Pedal")
- PORT_START("mainpcb:8BADC1") /* b00000 - 8 bit ADC 1 */
+ PORT_START("mainpcb:8BADC.1") /* b00000 - 8 bit ADC 1 */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC2") /* b00000 - 8 bit ADC 2 - voice mic */
+ PORT_START("mainpcb:8BADC.2") /* b00000 - 8 bit ADC 2 - voice mic */
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:8BADC3") /* b00000 - 8 bit ADC 3 - volume */
+ PORT_START("mainpcb:8BADC.3") /* b00000 - 8 bit ADC 3 - volume */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("mainpcb:8BADC4") /* b00000 - 8 bit ADC 4 - elevator */
+ PORT_START("mainpcb:8BADC.4") /* b00000 - 8 bit ADC 4 - elevator */
PORT_BIT( 0xff, 0x80, IPT_AD_STICK_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(10) PORT_REVERSE PORT_NAME("Elevator") /* up/down */
- PORT_START("mainpcb:8BADC5") /* b00000 - 8 bit ADC 5 - canopy */
+ PORT_START("mainpcb:8BADC.5") /* b00000 - 8 bit ADC 5 - canopy */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("mainpcb:8BADC6") /* b00000 - 8 bit ADC 6 - brake */
+ PORT_START("mainpcb:8BADC.6") /* b00000 - 8 bit ADC 6 - brake */
PORT_BIT( 0xff, 0x00, IPT_PEDAL2 ) PORT_SENSITIVITY(25) PORT_KEYDELTA(40) PORT_REVERSE PORT_NAME("Brake")
- PORT_START("mainpcb:8BADC7") /* b00000 - 8 bit ADC 7 - seat adjust */
+ PORT_START("mainpcb:8BADC.7") /* b00000 - 8 bit ADC 7 - seat adjust */
PORT_BIT( 0xff, 0X80, IPT_UNUSED )
- PORT_START("mainpcb:12BADC0") /* 400000 - steering wheel */
+ PORT_START("mainpcb:12BADC.0") /* 400000 - steering wheel */
PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x10,0xf0) PORT_SENSITIVITY(25) PORT_KEYDELTA(5) PORT_REVERSE PORT_NAME("Steering Wheel")
/* dummy ADC ports to end up with the same number as the full version */
- PORT_START("mainpcb:12BADC1")
+ PORT_START("mainpcb:12BADC.1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC2")
+ PORT_START("mainpcb:12BADC.2")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_START("mainpcb:12BADC3")
+ PORT_START("mainpcb:12BADC.3")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
@@ -1986,13 +2002,11 @@ static MACHINE_CONFIG_START( steeltalp_machine, harddriv_new_state )
MCFG_DEVICE_ADD("mainpcb", STEELTALP_BOARD_DEVICE, 0)
MACHINE_CONFIG_END
-WRITE_LINE_MEMBER(racedriv_board_device_state::tx_a)
+WRITE_LINE_MEMBER(harddriv_new_state::tx_a)
{
// passive connection, one way, to both screens
- mc68681_device* left = machine().device<mc68681_device>(":leftpcb:duartn68681");
- mc68681_device* right = machine().device<mc68681_device>(":rightpcb:duartn68681");
- left->rx_a_w(state);
- right->rx_a_w(state);
+ m_leftpcb->m_duartn68681->rx_a_w(state);
+ m_rightpcb->m_duartn68681->rx_a_w(state);
}
static MACHINE_CONFIG_START( racedriv_panorama_machine, harddriv_new_state )
@@ -2002,7 +2016,7 @@ static MACHINE_CONFIG_START( racedriv_panorama_machine, harddriv_new_state )
// MCFG_QUANTUM_TIME(attotime::from_hz(100000))
MCFG_DEVICE_MODIFY("mainpcb:duartn68681")
- MCFG_MC68681_A_TX_CALLBACK(WRITELINE(racedriv_board_device_state,tx_a ))
+ MCFG_MC68681_A_TX_CALLBACK(DEVWRITELINE(DEVICE_SELF_OWNER, harddriv_new_state,tx_a))
MCFG_TIMER_DRIVER_ADD_PERIODIC("hack_timer", harddriv_new_state, hack_timer, attotime::from_hz(60))
// MCFG_QUANTUM_TIME(attotime::from_hz(60000))
@@ -2012,13 +2026,9 @@ MACHINE_CONFIG_END
// by forcing them to stay in sync using this ugly method everything works much better.
TIMER_DEVICE_CALLBACK_MEMBER(harddriv_new_state::hack_timer)
{
- screen_device* middle = machine().device<screen_device>(":mainpcb:screen");
- screen_device* left = machine().device<screen_device>(":leftpcb:screen");
- screen_device* right = machine().device<screen_device>(":rightpcb:screen");
-
- left->reset_origin(0, 0);
- middle->reset_origin(0, 0);
- right->reset_origin(0, 0);
+ m_leftpcb->m_screen->reset_origin(0, 0);
+ m_mainpcb->m_screen->reset_origin(0, 0);
+ m_rightpcb->m_screen->reset_origin(0, 0);
}
/*************************************
@@ -5203,9 +5213,9 @@ GAMEL( 1990, racedrivpan, racedriv, racedriv_panorama_machine, racedriv_pan, dri
GAME( 1991, steeltal, 0, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (rev 2)", 0 )
GAME( 1991, steeltalg, steeltal, steeltal_machine, steeltal, driver_device, 0, ROT0, "Atari Games", "Steel Talons (German, rev 2)", 0 )
GAME( 1991, steeltal1, steeltal, steeltal1_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (rev 1)", 0 )
-GAME( 1991, steeltalp, steeltal, steeltalp_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (prototype)", GAME_NOT_WORKING )
+GAME( 1991, steeltalp, steeltal, steeltalp_machine, steeltal, driver_device, 0,ROT0, "Atari Games", "Steel Talons (prototype)", MACHINE_NOT_WORKING )
GAME( 1993, strtdriv, 0, strtdriv_machine, strtdriv, driver_device, 0, ROT0, "Atari Games", "Street Drivin' (prototype)", 0 )
-GAME( 1993, hdrivair, 0, hdrivair_machine, hdrivair, driver_device, 0, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype)", GAME_IMPERFECT_SOUND )
-GAME( 1993, hdrivairp, hdrivair, hdrivairp_machine, hdrivair, driver_device, 0,ROT0, "Atari Games", "Hard Drivin's Airborne (prototype, early rev)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING )
+GAME( 1993, hdrivair, 0, hdrivair_machine, hdrivair, driver_device, 0, ROT0, "Atari Games", "Hard Drivin's Airborne (prototype)", MACHINE_IMPERFECT_SOUND )
+GAME( 1993, hdrivairp, hdrivair, hdrivairp_machine, hdrivair, driver_device, 0,ROT0, "Atari Games", "Hard Drivin's Airborne (prototype, early rev)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/harriet.c b/src/mame/drivers/harriet.c
index 3721c94a80a..b359c19daec 100644
--- a/src/mess/drivers/harriet.c
+++ b/src/mame/drivers/harriet.c
@@ -222,4 +222,4 @@ ROM_START( harriet )
ROM_LOAD16_BYTE( "harriet 36-74c.tdb v5.01 hibyte 2a0c.bin", 0x0000, 0x4000, CRC(a61f441d) SHA1(76af6eddd5c042f1b2eef590eb822379944b9b28) )
ROM_END
-COMP( 1990, harriet, 0, 0, harriet, harriet, driver_device, 0, "Quantel", "Harriet", GAME_IS_SKELETON )
+COMP( 1990, harriet, 0, 0, harriet, harriet, driver_device, 0, "Quantel", "Harriet", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/hazelgr.c b/src/mame/drivers/hazelgr.c
index a97bfaf4a94..b22c62381f9 100644
--- a/src/mame/drivers/hazelgr.c
+++ b/src/mame/drivers/hazelgr.c
@@ -49,4 +49,4 @@ ROM_START( hg_frd )
ROM_END
-GAME( 198?, hg_frd, 0, haze, haze, driver_device, 0, ROT0, "Hazel Grove", "Fruit Deuce (Hazel Grove)", GAME_IS_SKELETON_MECHANICAL)
+GAME( 198?, hg_frd, 0, haze, haze, driver_device, 0, ROT0, "Hazel Grove", "Fruit Deuce (Hazel Grove)", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/hcastle.c b/src/mame/drivers/hcastle.c
index 0f52bb17457..8e2ccb15ce1 100644
--- a/src/mame/drivers/hcastle.c
+++ b/src/mame/drivers/hcastle.c
@@ -372,8 +372,8 @@ ROM_END
-GAME( 1988, hcastle, 0, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Haunted Castle (version M)", GAME_SUPPORTS_SAVE )
-GAME( 1988, hcastlek, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Haunted Castle (version K)", GAME_SUPPORTS_SAVE )
-GAME( 1988, hcastlee, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Haunted Castle (version E)", GAME_SUPPORTS_SAVE )
-GAME( 1988, akumajou, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Akuma-Jou Dracula (Japan version P)", GAME_SUPPORTS_SAVE )
-GAME( 1988, akumajoun, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Akuma-Jou Dracula (Japan version N)", GAME_SUPPORTS_SAVE )
+GAME( 1988, hcastle, 0, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Haunted Castle (version M)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, hcastlek, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Haunted Castle (version K)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, hcastlee, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Haunted Castle (version E)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, akumajou, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Akuma-Jou Dracula (Japan version P)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, akumajoun, hcastle, hcastle, hcastle, driver_device, 0, ROT0, "Konami", "Akuma-Jou Dracula (Japan version N)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/headonb.c b/src/mame/drivers/headonb.c
index b6ae831871a..4d98c1a0e38 100644
--- a/src/mame/drivers/headonb.c
+++ b/src/mame/drivers/headonb.c
@@ -204,4 +204,4 @@ ROM_START( headonb )
ROM_END
-GAME( 1979, headonb, headon, headonb, headonb, driver_device, 0, ROT0, "bootleg (EFG Sanremo)", "Head On (bootleg on dedicated hardware)", GAME_NO_SOUND | GAME_SUPPORTS_SAVE )
+GAME( 1979, headonb, headon, headonb, headonb, driver_device, 0, ROT0, "bootleg (EFG Sanremo)", "Head On (bootleg on dedicated hardware)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/hec2hrp.c b/src/mame/drivers/hec2hrp.c
index 0553958fcfa..ef9e3cac314 100644
--- a/src/mess/drivers/hec2hrp.c
+++ b/src/mame/drivers/hec2hrp.c
@@ -722,10 +722,10 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP(1983, hec2hrp, 0, interact, hec2hrp, hec2hrp, driver_device,0, "Micronique", "Hector 2HR+", GAME_IMPERFECT_SOUND)
-COMP(1980, victor, hec2hrp, 0, hec2hrp, hec2hrp, driver_device,0, "Micronique", "Victor", GAME_IMPERFECT_SOUND)
-COMP(1983, hec2hr, hec2hrp, 0, hec2hr, hec2hrp, driver_device,0, "Micronique", "Hector 2HR", GAME_IMPERFECT_SOUND)
-COMP(1984, hec2hrx, hec2hrp, 0, hec2hrx, hec2hrp, driver_device,0, "Micronique", "Hector HRX + Disc2", GAME_IMPERFECT_SOUND)
-COMP(1985, hec2mdhrx, hec2hrp, 0, hec2mdhrx, hec2hrp, driver_device,0, "Micronique", "Hector HRX + mini Disc" , GAME_IMPERFECT_SOUND)
-COMP(1985, hec2mx80, hec2hrp, 0, hec2mx80, hec2hrp, driver_device,0, "Micronique", "Hector MX 80c + Disc2" , GAME_IMPERFECT_SOUND)
-COMP(1985, hec2mx40, hec2hrp, 0, hec2mx40, hec2hrp, driver_device,0, "Micronique", "Hector MX 40c + Disc2" , GAME_IMPERFECT_SOUND)
+COMP(1983, hec2hrp, 0, interact, hec2hrp, hec2hrp, driver_device,0, "Micronique", "Hector 2HR+", MACHINE_IMPERFECT_SOUND)
+COMP(1980, victor, hec2hrp, 0, hec2hrp, hec2hrp, driver_device,0, "Micronique", "Victor", MACHINE_IMPERFECT_SOUND)
+COMP(1983, hec2hr, hec2hrp, 0, hec2hr, hec2hrp, driver_device,0, "Micronique", "Hector 2HR", MACHINE_IMPERFECT_SOUND)
+COMP(1984, hec2hrx, hec2hrp, 0, hec2hrx, hec2hrp, driver_device,0, "Micronique", "Hector HRX + Disc2", MACHINE_IMPERFECT_SOUND)
+COMP(1985, hec2mdhrx, hec2hrp, 0, hec2mdhrx, hec2hrp, driver_device,0, "Micronique", "Hector HRX + mini Disc" , MACHINE_IMPERFECT_SOUND)
+COMP(1985, hec2mx80, hec2hrp, 0, hec2mx80, hec2hrp, driver_device,0, "Micronique", "Hector MX 80c + Disc2" , MACHINE_IMPERFECT_SOUND)
+COMP(1985, hec2mx40, hec2hrp, 0, hec2mx40, hec2hrp, driver_device,0, "Micronique", "Hector MX 40c + Disc2" , MACHINE_IMPERFECT_SOUND)
diff --git a/src/mess/drivers/hh_cop400.c b/src/mame/drivers/hh_cop400.c
index 568ccd6644e..3400b2d9ab5 100644
--- a/src/mess/drivers/hh_cop400.c
+++ b/src/mame/drivers/hh_cop400.c
@@ -284,7 +284,7 @@ MACHINE_CONFIG_END
The first version was on TMS1100 (see hh_tms1k.c), this is the reprogrammed
second release with a gray case instead of black.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -830,12 +830,12 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1979, ctstein, 0, 0, ctstein, ctstein, driver_device, 0, "Castle Toy", "Einstein (Castle Toy)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
+CONS( 1979, ctstein, 0, 0, ctstein, ctstein, driver_device, 0, "Castle Toy", "Einstein (Castle Toy)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-CONS( 1981, einvaderc, einvader, 0, einvaderc, einvaderc, driver_device, 0, "Entex", "Space Invader (Entex, COP444)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
+CONS( 1981, einvaderc, einvader, 0, einvaderc, einvaderc, driver_device, 0, "Entex", "Space Invader (Entex, COP444)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
-CONS( 1979, funjacks, 0, 0, funjacks, funjacks, driver_device, 0, "Mattel", "Funtronics Jacks", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
-CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, driver_device, 0, "Mattel", "Funtronics Red Light Green Light", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
+CONS( 1979, funjacks, 0, 0, funjacks, funjacks, driver_device, 0, "Mattel", "Funtronics Jacks", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+CONS( 1979, funrlgl, 0, 0, funrlgl, funrlgl, driver_device, 0, "Mattel", "Funtronics Red Light Green Light", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
-CONS( 1980, plus1, 0, 0, plus1, plus1, driver_device, 0, "Milton Bradley", "Plus One", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
-CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", GAME_SUPPORTS_SAVE )
+CONS( 1980, plus1, 0, 0, plus1, plus1, driver_device, 0, "Milton Bradley", "Plus One", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+CONS( 1981, lightfgt, 0, 0, lightfgt, lightfgt, driver_device, 0, "Milton Bradley", "Lightfight", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/hh_hmcs40.c b/src/mame/drivers/hh_hmcs40.c
index b66ebdd2a11..765c453ce13 100644
--- a/src/mess/drivers/hh_hmcs40.c
+++ b/src/mame/drivers/hh_hmcs40.c
@@ -20,6 +20,8 @@
@25 HD38800A 1981, Coleco Alien Attack
@27 HD38800A 1981, Bandai Packri Monster
*31 HD38800A 1981, Entex Select-a-Game cartridge: Space Invader 2 (have dump)
+ *37 HD38800A 1981, Entex Select-a-Game cartridge: Baseball 4 (have dump)
+ *38 HD38800A 1981, Entex Select-a-Game cartridge: Pinball (have dump)
*41 HD38800A 1982, Gakken Puck Monster
*51 HD38800A 1981, Actronics(Hanzawa) Twinvader (larger white version)
@70 HD38800A 1982, Coleco Galaxian
@@ -28,12 +30,13 @@
@88 HD38800A 1984, Tomy Tron (THN-02)
@01 HD38800B 1982, Gakken Crazy Kong
- *19 HD38800B 1982, Bandai Zaxxon
+ @19 HD38800B 1982, Bandai Zaxxon
@23 HD38800B 1982, Tomy Kingman (THF-01II)
*24 HD38800B 1982, Actronics(Hanzawa) Wanted G-Man
*29 HD38800B 1984, Tomy Portable 6000 Bombman
*35 HD38800B 1983, Bandai Gundam vs Gelgoog Zaku
@43 HD38800B 1983, Bandai Dokodemo Dorayaki Doraemon (PT-412)
+ @52 HD38800B 1983, Bandai Ultra Man (PT-424)
@09 HD38820A 1980, Mattel World Championship Baseball
@13 HD38820A 1981, Entex Galaxian 2
@@ -47,26 +50,25 @@
@45 HD38820A 1982, Coleco Donkey Kong
@49 HD38820A 1983, Bandai Zackman
@61 HD38820A 1983, Coleco Ms. Pac-Man
- *63 HD38820A 1983, Bandai Pengo
- *65 HD38820A 1983, Bandai Burger Time
+ @63 HD38820A 1983, Bandai Pengo
+ @65 HD38820A 1983, Bandai Burger Time (PT-389)
@69 HD38820A 1983, Gakken Dig Dug
@70 HD38820A 1983, Parker Brothers Q*Bert
@85 HD38820A 1984, Bandai Machine Man (PT-438)
- *88 HD38820A 1984, Bandai Pair Match (1/2)
- *89 HD38820A 1984, Bandai Pair Match (2/2)
+ @88 HD38820A 1984, Bandai Pair Match (PT-460) (1/2)
+ @89 HD38820A 1984, Bandai Pair Match (PT-460) (2/2)
*75 HD44801A 1982, Alpha 8201 protection MCU (have dump)
*35 HD44801B 1983, Alpha 8302 protection MCU (have dump)
*42 HD44801B 1984, Alpha 8303 protection MCU (have dump)
- (* denotes not yet emulated by MESS, @ denotes it's in this driver)
+ (* denotes not yet emulated by MAME, @ denotes it's in this driver)
TODO:
- cdkong discrete sound (simple volume decay, simulated for now)
- cgalaxn discrete sound (alien attacking sound effect)
- - vinvader locks up at boot
- gckong random lockups (tap the jump button repeatedly): mcu stack overflow,
works ok if stack levels is increased, 38800 B rev. has more stack levels?
Or it could be a race condition: irq happening too late/early.
@@ -83,6 +85,9 @@
#include "cpu/cop400/cop400.h"
#include "sound/speaker.h"
+// internal artwork
+#include "pairmtch.lh"
+
#include "hh_hmcs40_test.lh" // common test-layout - use external artwork
@@ -92,6 +97,7 @@ public:
hh_hmcs40_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
+ m_audiocpu(*this, "audiocpu"),
m_inp_matrix(*this, "IN"),
m_speaker(*this, "speaker"),
m_display_wait(33),
@@ -101,6 +107,7 @@ public:
// devices
required_device<cpu_device> m_maincpu;
+ optional_device<cpu_device> m_audiocpu;
optional_ioport_array<7> m_inp_matrix; // max 7
optional_device<speaker_sound_device> m_speaker;
@@ -327,7 +334,7 @@ INPUT_CHANGED_MEMBER(hh_hmcs40_state::single_interrupt_line)
* Hitachi HD38750A08 MCU
* green VFD display Emix-106, with bezel overlay
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -439,7 +446,7 @@ MACHINE_CONFIG_END
* Hitachi HD38750A07 MCU
* cyan VFD display Emix-103, with blue or green color overlay
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -575,7 +582,7 @@ MACHINE_CONFIG_END
* Hitachi HD38800A77 MCU
* cyan/red/green VFD display Futaba DM-43ZK 2E
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -705,7 +712,7 @@ MACHINE_CONFIG_END
- USA/Canada: Hungry Monster, published by Tandy
- other: Gobble Man/Ogre Monster, published by Tandy
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -816,7 +823,7 @@ MACHINE_CONFIG_END
- Japan: ?
- USA: Star Hawk, published by Mattel
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -938,11 +945,133 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Bandai Zaxxon (manufactured in Japan, licensed from Sega)
+ * PCB label FL Zaxxon
+ * Hitachi HD38800B19 MCU
+ * cyan/red/blue VFD display NEC FIP11BM24T no. 4-8, half of it reflected
+ with a one-way mirror to give the illusion of a 3D display
+
+ NOTE!: MAME external artwork is required
+
+***************************************************************************/
+
+class bzaxxon_state : public hh_hmcs40_state
+{
+public:
+ bzaxxon_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
+ { }
+
+ DECLARE_WRITE8_MEMBER(plate_w);
+ DECLARE_WRITE16_MEMBER(grid_w);
+
+ void update_int1();
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
+};
+
+// handlers
+
+WRITE8_MEMBER(bzaxxon_state::plate_w)
+{
+ // R0x-R3x(,D0-D2): vfd matrix plate
+ int shift = offset * 4;
+ m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
+
+ // update display
+ UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,6,7,8,9,10,5,4,3,2,1,0);
+ UINT32 plate = BITSWAP24(m_plate,23,22,21,20,5,7,0,1,2,3,4,6,19,16,17,18,15,14,13,12,10,8,9,11) | 0x800;
+ display_matrix(20, 11, plate, grid);
+}
+
+WRITE16_MEMBER(bzaxxon_state::grid_w)
+{
+ // D4: speaker out
+ m_speaker->level_w(data >> 4 & 1);
+
+ // D7-D10: input mux
+ UINT8 inp_mux = data >> 7 & 0xf;
+ if (inp_mux != m_inp_mux)
+ {
+ m_inp_mux = inp_mux;
+ update_int1();
+ }
+
+ // D5-D15: vfd matrix grid
+ m_grid = data >> 5 & 0x7ff;
+
+ // D0-D2: plate 7-9 (update display there)
+ plate_w(space, 4, data & 7);
+}
+
+void bzaxxon_state::update_int1()
+{
+ // INT1 on multiplexed inputs
+ set_interrupt(1, read_inputs(4));
+}
+
+
+// config
+
+static INPUT_PORTS_START( bzaxxon )
+ PORT_START("IN.0") // D7 INT1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, NULL)
+
+ PORT_START("IN.1") // D8 INT1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, NULL)
+
+ PORT_START("IN.2") // D9 INT1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, NULL)
+
+ PORT_START("IN.3") // D10 INT1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, bzaxxon_state, input_changed, NULL)
+
+ PORT_START("IN.4") // INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
+
+ PORT_START("IN.5") // port D
+ PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_SELECT )
+ PORT_BIT( 0xfff7, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(bzaxxon_state::input_changed)
+{
+ update_int1();
+}
+
+
+static MACHINE_CONFIG_START( bzaxxon, bzaxxon_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation
+ MCFG_HMCS40_WRITE_R_CB(0, WRITE8(bzaxxon_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bzaxxon_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bzaxxon_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(3, WRITE8(bzaxxon_state, plate_w))
+ MCFG_HMCS40_WRITE_D_CB(WRITE16(bzaxxon_state, grid_w))
+ MCFG_HMCS40_READ_D_CB(IOPORT("IN.5"))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Bandai Zackman "The Pit, FL Exploration of Space" (manufactured in Japan)
* Hitachi QFP HD38820A49 MCU
* cyan/red/yellow VFD display Futaba DM-53Z 3E, with color overlay
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1056,12 +1185,264 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Bandai Pengo (manufactured in Japan, licensed from Sega)
+ * PCB label FL Pengo(in katakana)
+ * Hitachi QFP HD38820A63 MCU
+ * cyan/red/blue VFD display Futaba DM-68ZK 3D DM-63
+
+ NOTE!: MAME external artwork is required
+
+***************************************************************************/
+
+class bpengo_state : public hh_hmcs40_state
+{
+public:
+ bpengo_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE8_MEMBER(plate_w);
+ DECLARE_WRITE16_MEMBER(grid_w);
+
+ void update_int0();
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
+};
+
+// handlers
+
+void bpengo_state::prepare_display()
+{
+ UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
+ UINT32 plate = BITSWAP32(m_plate,31,30,29,28,23,22,21,16,17,18,19,20,27,26,25,24,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0);
+ display_matrix(25, 8, plate, grid);
+}
+
+WRITE8_MEMBER(bpengo_state::plate_w)
+{
+ // R0x-R6x: vfd matrix plate
+ int shift = offset * 4;
+ m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
+ prepare_display();
+}
+
+WRITE16_MEMBER(bpengo_state::grid_w)
+{
+ // D10: speaker out
+ m_speaker->level_w(data >> 10 & 1);
+
+ // D12-D15: input mux
+ UINT8 inp_mux = data >> 12 & 0xf;
+ if (inp_mux != m_inp_mux)
+ {
+ m_inp_mux = inp_mux;
+ update_int0();
+ }
+
+ // D0-D7: vfd matrix grid
+ m_grid = data & 0xff;
+ prepare_display();
+}
+
+void bpengo_state::update_int0()
+{
+ // INT0 on multiplexed inputs
+ set_interrupt(0, read_inputs(4));
+}
+
+
+// config
+
+static INPUT_PORTS_START( bpengo )
+ PORT_START("IN.0") // D12 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, bpengo_state, input_changed, NULL)
+
+ PORT_START("IN.1") // D13 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, bpengo_state, input_changed, NULL)
+
+ PORT_START("IN.2") // D14 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bpengo_state, input_changed, NULL)
+
+ PORT_START("IN.3") // D15 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bpengo_state, input_changed, NULL)
+
+ PORT_START("IN.4") // INT1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
+
+ PORT_START("IN.5") // port D
+ PORT_CONFNAME( 0x0800, 0x0000, "Factory Test" )
+ PORT_CONFSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x0800, DEF_STR( On ) )
+ PORT_BIT( 0xf7ff, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(bpengo_state::input_changed)
+{
+ update_int0();
+}
+
+
+static MACHINE_CONFIG_START( bpengo, bpengo_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation
+ MCFG_HMCS40_WRITE_R_CB(0, WRITE8(bpengo_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bpengo_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bpengo_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(3, WRITE8(bpengo_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(4, WRITE8(bpengo_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(5, WRITE8(bpengo_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(6, WRITE8(bpengo_state, plate_w))
+ MCFG_HMCS40_WRITE_D_CB(WRITE16(bpengo_state, grid_w))
+ MCFG_HMCS40_READ_D_CB(IOPORT("IN.5"))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
+ Bandai Burger Time (manufactured in Japan, licensed from Data East)
+ * PCB label Kaken Corp. PT-389 Burger Time
+ * Hitachi QFP HD38820A65 MCU
+ * cyan/red/green VFD display NEC FIP6AM25T no. 21-21
+
+ NOTE!: MAME external artwork is required
+
+***************************************************************************/
+
+class bbtime_state : public hh_hmcs40_state
+{
+public:
+ bbtime_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE8_MEMBER(plate_w);
+ DECLARE_WRITE16_MEMBER(grid_w);
+
+ void update_int0();
+ DECLARE_INPUT_CHANGED_MEMBER(input_changed);
+};
+
+// handlers
+
+void bbtime_state::prepare_display()
+{
+ UINT8 grid = BITSWAP8(m_grid,7,6,0,1,2,3,4,5);
+ UINT32 plate = BITSWAP32(m_plate,31,30,29,28,25,24,26,27,22,23,15,14,12,11,10,8,7,6,4,1,5,9,13,3,2,16,17,18,19,20,0,21) | 0x1;
+ display_matrix(28, 6, plate, grid);
+}
+
+WRITE8_MEMBER(bbtime_state::plate_w)
+{
+ // R0x-R6x: vfd matrix plate
+ int shift = offset * 4;
+ m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
+ prepare_display();
+}
+
+WRITE16_MEMBER(bbtime_state::grid_w)
+{
+ // D3: speaker out
+ m_speaker->level_w(data >> 3 & 1);
+
+ // D10-D14: input mux
+ UINT8 inp_mux = data >> 10 & 0x1f;
+ if (inp_mux != m_inp_mux)
+ {
+ m_inp_mux = inp_mux;
+ update_int0();
+ }
+
+ // D4-D9: vfd matrix grid
+ m_grid = data >> 4 & 0x3f;
+ prepare_display();
+}
+
+void bbtime_state::update_int0()
+{
+ // INT0 on multiplexed inputs
+ set_interrupt(0, read_inputs(5));
+}
+
+
+// config
+
+static INPUT_PORTS_START( bbtime )
+ PORT_START("IN.0") // D10 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, NULL)
+
+ PORT_START("IN.1") // D11 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, NULL)
+
+ PORT_START("IN.2") // D12 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, NULL)
+
+ PORT_START("IN.3") // D13 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, NULL)
+
+ PORT_START("IN.4") // D14 INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, bbtime_state, input_changed, NULL)
+
+ PORT_START("IN.5") // INT1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)1)
+INPUT_PORTS_END
+
+INPUT_CHANGED_MEMBER(bbtime_state::input_changed)
+{
+ update_int0();
+}
+
+
+static MACHINE_CONFIG_START( bbtime, bbtime_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation
+ MCFG_HMCS40_WRITE_R_CB(0, WRITE8(bbtime_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bbtime_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bbtime_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(3, WRITE8(bbtime_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(4, WRITE8(bbtime_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(5, WRITE8(bbtime_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(6, WRITE8(bbtime_state, plate_w))
+ MCFG_HMCS40_WRITE_D_CB(WRITE16(bbtime_state, grid_w))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Bandai Dokodemo Dorayaki Doraemon (FL LSI Game Push Up) (manufactured in Japan)
* PCB label Kaken Corp PT-412 FL-Doreamon(in katakana)
* Hitachi HD38800B43 MCU
* cyan/red/blue VFD display Futaba DM-71
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1154,12 +1535,102 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Bandai Ultra Man (FL LSI Game Push Up) (manufactured in Japan)
+ * PCB label Kaken Corp. PT-424 FL Ultra Man
+ * Hitachi HD38800B52 MCU
+ * cyan/red/blue VFD display NEC FIP8BM25T no. 21-8 2
+
+ NOTE!: MAME external artwork is required
+
+***************************************************************************/
+
+class bultrman_state : public hh_hmcs40_state
+{
+public:
+ bultrman_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
+ { }
+
+ DECLARE_WRITE8_MEMBER(plate_w);
+ DECLARE_WRITE16_MEMBER(grid_w);
+};
+
+// handlers
+
+WRITE8_MEMBER(bultrman_state::plate_w)
+{
+ // R0x-R3x(,D0-D2): vfd matrix plate
+ int shift = offset * 4;
+ m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
+
+ // update display
+ UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
+ UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,16,15,14,13,12,11,2,10,9,8,7,6,5,4,3,0,1);
+ display_matrix(18, 8, plate, grid);
+}
+
+WRITE16_MEMBER(bultrman_state::grid_w)
+{
+ // D7: speaker out
+ m_speaker->level_w(data >> 7 & 1);
+
+ // D8-D15: vfd matrix grid
+ m_grid = data >> 8 & 0xff;
+
+ // D0-D2: plate 15-17 (update display there)
+ plate_w(space, 4, data & 7);
+}
+
+
+// config
+
+static INPUT_PORTS_START( bultrman )
+ PORT_START("IN.0") // INT0
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_hmcs40_state, single_interrupt_line, (void *)0)
+
+ PORT_START("IN.1") // port D
+ PORT_CONFNAME( 0x0010, 0x0000, "Factory Test" )
+ PORT_CONFSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x0010, DEF_STR( On ) )
+ PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
+ PORT_BIT( 0xff8f, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( bultrman, bultrman_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", HD38800, 400000) // approximation
+ MCFG_HMCS40_WRITE_R_CB(0, WRITE8(bultrman_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(1, WRITE8(bultrman_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(2, WRITE8(bultrman_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(3, WRITE8(bultrman_state, plate_w))
+ MCFG_HMCS40_WRITE_D_CB(WRITE16(bultrman_state, grid_w))
+ MCFG_HMCS40_READ_D_CB(IOPORT("IN.1"))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Bandai Machine Man (FL Flat Type) (manufactured in Japan)
* PCB label Kaken PT-438
* Hitachi QFP HD38820A85 MCU
* cyan/red/green VFD display NEC FIP5CM33T no. 4 21
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1243,6 +1714,161 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Bandai Pair Match (manufactured in Japan)
+ * PCB label Kaken Corp. PT-460
+ * Hitachi QFP HD38820A88 MCU(main), HD38820A89(audio)
+ * cyan/red VFD display
+
+ This is a memory game, the difference is instead of pictures, the player
+ needs to match sound effects. It has an extra MCU for sound. The case is
+ shaped like a glossy black pyramid. Star Trek fans will recognize it as
+ a prop used in TNG Ten Forward.
+
+ note: MAME external artwork is not needed for this game
+
+***************************************************************************/
+
+class pairmtch_state : public hh_hmcs40_state
+{
+public:
+ pairmtch_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_hmcs40_state(mconfig, type, tag)
+ { }
+
+ DECLARE_WRITE8_MEMBER(plate_w);
+ DECLARE_WRITE16_MEMBER(grid_w);
+ DECLARE_READ8_MEMBER(input_r);
+
+ DECLARE_WRITE8_MEMBER(sound_w);
+ DECLARE_WRITE8_MEMBER(sound2_w);
+ DECLARE_WRITE16_MEMBER(speaker_w);
+};
+
+// handlers: maincpu side
+
+WRITE8_MEMBER(pairmtch_state::plate_w)
+{
+ // R2x,R3x,R6x: vfd matrix plate
+ int shift = (offset == HMCS40_PORT_R6X) ? 8 : (offset-2) * 4;
+ m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
+ display_matrix(12, 6, m_plate, m_grid);
+}
+
+WRITE16_MEMBER(pairmtch_state::grid_w)
+{
+ // D7: sound reset (to audiocpu reset line)
+ m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 0x80) ? ASSERT_LINE : CLEAR_LINE);
+
+ // D9: sound start (to audiocpu INT0)
+ m_audiocpu->set_input_line(0, (data & 0x200) ? ASSERT_LINE : CLEAR_LINE);
+
+ // D10,D15: input mux
+ m_inp_mux = (data >> 10 & 1) | (data >> 14 & 2);
+
+ // D0-D5: vfd matrix grid
+ m_grid = data & 0x3f;
+ display_matrix(12, 6, m_plate, m_grid);
+}
+
+READ8_MEMBER(pairmtch_state::input_r)
+{
+ // R4x: multiplexed inputs
+ return read_inputs(2);
+}
+
+WRITE8_MEMBER(pairmtch_state::sound_w)
+{
+ // R5x: soundlatch (to audiocpu R2x)
+ soundlatch_byte_w(space, 0, BITSWAP8(data,7,6,5,4,0,1,2,3));
+}
+
+
+// handlers: audiocpu side
+
+WRITE8_MEMBER(pairmtch_state::sound2_w)
+{
+ // R2x: soundlatch (to maincpu R5x)
+ soundlatch2_byte_w(space, 0, BITSWAP8(data,7,6,5,4,0,1,2,3));
+}
+
+WRITE16_MEMBER(pairmtch_state::speaker_w)
+{
+ // D0: speaker out
+ m_speaker->level_w(data & 1);
+
+ // D1: sound ack (to maincpu INT0)
+ m_maincpu->set_input_line(0, (data & 2) ? ASSERT_LINE : CLEAR_LINE);
+}
+
+
+// config
+
+static INPUT_PORTS_START( pairmtch )
+ PORT_START("IN.0") // D10 port R4x
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_COCKTAIL PORT_16WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL PORT_16WAY
+
+ PORT_START("IN.1") // D15 port R4x
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_16WAY
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_16WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_16WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_16WAY
+
+ PORT_START("IN.2") // port D
+ PORT_CONFNAME( 0x0040, 0x0000, "Factory Test" )
+ PORT_CONFSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_CONFSETTING( 0x0040, DEF_STR( On ) )
+ PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_CONFNAME( 0x0800, 0x0800, "Players" )
+ PORT_CONFSETTING( 0x0800, "1" )
+ PORT_CONFSETTING( 0x0000, "2" )
+ PORT_CONFNAME( 0x3000, 0x2000, "Skill Level" )
+ PORT_CONFSETTING( 0x2000, "1" )
+ PORT_CONFSETTING( 0x1000, "2" )
+ PORT_CONFSETTING( 0x0000, "3" )
+ PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x86bf, IP_ACTIVE_HIGH, IPT_UNUSED )
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( pairmtch, pairmtch_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", HD38820, 400000) // approximation
+ MCFG_HMCS40_WRITE_R_CB(2, WRITE8(pairmtch_state, plate_w))
+ MCFG_HMCS40_WRITE_R_CB(3, WRITE8(pairmtch_state, plate_w))
+ MCFG_HMCS40_READ_R_CB(4, READ8(pairmtch_state, input_r))
+ MCFG_HMCS40_WRITE_R_CB(5, WRITE8(pairmtch_state, sound_w))
+ MCFG_HMCS40_READ_R_CB(5, READ8(driver_device, soundlatch2_byte_r))
+ MCFG_HMCS40_WRITE_R_CB(6, WRITE8(pairmtch_state, plate_w))
+ MCFG_HMCS40_WRITE_D_CB(WRITE16(pairmtch_state, grid_w))
+ MCFG_HMCS40_READ_D_CB(IOPORT("IN.2"))
+
+ MCFG_CPU_ADD("audiocpu", HD38820, 400000) // approximation
+ MCFG_HMCS40_WRITE_R_CB(2, WRITE8(pairmtch_state, sound2_w))
+ MCFG_HMCS40_READ_R_CB(2, READ8(driver_device, soundlatch_byte_r))
+ MCFG_HMCS40_WRITE_D_CB(WRITE16(pairmtch_state, speaker_w))
+
+ MCFG_QUANTUM_PERFECT_CPU("maincpu")
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_pairmtch)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Coleco Alien Attack (manufactured in Taiwan)
* Hitachi HD38800A25 MCU
* cyan/red VFD display Futaba DM-19Z 1J
@@ -1250,7 +1876,7 @@ MACHINE_CONFIG_END
It looks like Coleco took Gakken's Heiankyo Alien and turned it into a more
action-oriented game.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1356,12 +1982,12 @@ MACHINE_CONFIG_END
/***************************************************************************
- Coleco Donkey Kong (manufactured in Taiwan)
+ Coleco Donkey Kong (manufactured in Taiwan, licensed from Nintendo)
* PCB label Coleco Rev C 75790 DK
* Hitachi QFP HD38820A45 MCU
* cyan/red VFD display Futaba DM-47ZK 2K, with color overlay
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1401,7 +2027,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(cdkong_state::speaker_decay_sim)
void cdkong_state::prepare_display()
{
- UINT32 plate = BITSWAP32(m_plate,31,30,29,24,0,16,8,1,23,17,9,2,18,10,25,27,26,3,15,27,11,11,14,22,6,13,21,5,19,12,20,4);
+ UINT32 plate = BITSWAP32(m_plate,31,30,29,24,0,16,8,1,23,17,9,2,18,10,25,27,26,3,15,27,11,11,14,22,6,13,21,5,19,12,20,4) | 0x800800;
display_matrix(29, 11, plate, m_grid);
}
@@ -1495,7 +2121,7 @@ MACHINE_CONFIG_END
- P2 Left: Head-to-Head Galaxian (2-player mode, short)
- P2 Right: Head-to-Head Galaxian (2-player mode, long)
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1611,7 +2237,7 @@ MACHINE_CONFIG_END
/***************************************************************************
- Coleco Pac-Man (manufactured in Taiwan)
+ Coleco Pac-Man (manufactured in Taiwan, licensed from Midway)
* PCB label Coleco 75690
* Hitachi QFP HD38820A28/29 MCU
* cyan/red VFD display Futaba DM-34Z 2A, with color overlay
@@ -1628,7 +2254,7 @@ MACHINE_CONFIG_END
BTANB note: 1st version doesn't show the whole maze on power-on
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1732,7 +2358,7 @@ MACHINE_CONFIG_END
/***************************************************************************
- Coleco Ms. Pac-Man (manufactured in Taiwan)
+ Coleco Ms. Pac-Man (manufactured in Taiwan, licensed from Midway)
* PCB label Coleco 911171
* Hitachi QFP HD38820A61 MCU
* cyan/red VFD display Futaba DM-60Z 3I, with color overlay
@@ -1744,7 +2370,7 @@ MACHINE_CONFIG_END
BTANB note: in demo-mode, she hardly ever walks to the upper two rows
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1770,7 +2396,7 @@ WRITE8_MEMBER(cmspacmn_state::plate_w)
// update display
UINT16 grid = BITSWAP16(m_grid,15,14,13,11,10,9,8,7,6,5,4,3,2,1,0,1);
- UINT64 plate = BIT(m_plate,15)<<32 | BITSWAP32(m_plate,14,13,12,4,5,6,7,24,23,25,22,21,20,13,24,3,19,14,12,11,24,2,10,8,7,25,0,9,1,18,17,16);
+ UINT64 plate = BIT(m_plate,15)<<32 | BITSWAP32(m_plate,14,13,12,4,5,6,7,24,23,25,22,21,20,13,24,3,19,14,12,11,24,2,10,8,7,25,0,9,1,18,17,16) | 0x1004080;
display_matrix(33, 12, plate, grid);
}
@@ -1853,7 +2479,7 @@ MACHINE_CONFIG_END
* Hitachi QFP HD38820A13 MCU
* cyan/red/green VFD display Futaba DM-20
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1977,7 +2603,7 @@ MACHINE_CONFIG_END
2 VFD revisions are known, the difference is Pac-Man's color: cyan or red.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
#if 0
@@ -2035,7 +2661,7 @@ INPUT_PORTS_END
* COP411L sub MCU, labeled COP411L-KED/N
* cyan/red/green VFD display NEC FIP15BM32T
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -2064,7 +2690,7 @@ protected:
virtual void machine_start();
};
-// handlers (maincpu side first)
+// handlers: maincpu side
void eturtles_state::prepare_display()
{
@@ -2109,7 +2735,7 @@ void eturtles_state::update_int()
}
-// COP side
+// handlers: COP side
WRITE_LINE_MEMBER(eturtles_state::speaker_w)
{
@@ -2228,7 +2854,7 @@ MACHINE_CONFIG_END
* COP411L sub MCU, labeled ~/B8236 COP411L-KEC/N
* cyan/red/green VFD display NEC FIP15AM32T (EL628-003) no. 2-421, with partial color overlay
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -2243,7 +2869,7 @@ public:
DECLARE_READ8_MEMBER(cop_data_r);
};
-// handlers (most of it is handled in eturtles_state above)
+// handlers (most of it is in eturtles_state above)
void estargte_state::prepare_display()
{
@@ -2338,7 +2964,7 @@ MACHINE_CONFIG_END
- Japan: Heiankyo Alien
- USA: Earth Invaders, published by CGL
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -2454,7 +3080,7 @@ MACHINE_CONFIG_END
- Japan: Crazy Kong
- USA: Super Kong, published by CGL
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -2482,7 +3108,7 @@ WRITE8_MEMBER(gckong_state::plate_w)
// update display
UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,0,1,2,3,4,5,6,7,8,9,10);
- UINT32 plate = BITSWAP32(m_plate,31,30,29,28,27,26,25,6,7,8,12,13,14,15,16,17,18,17,16,12,11,10,9,8,7,6,5,4,3,2,1,0);
+ UINT32 plate = BITSWAP32(m_plate,31,30,29,28,27,26,25,6,7,8,12,13,14,15,16,17,18,17,16,12,11,10,9,8,7,6,5,4,3,2,1,0) | 0x8000;
display_matrix(32, 11, plate, grid);
}
@@ -2577,7 +3203,7 @@ MACHINE_CONFIG_END
* Hitachi QFP HD38820A69 MCU
* cyan/red/green VFD display Futaba DM-69Z 3F, with color overlay
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -2702,7 +3328,7 @@ MACHINE_CONFIG_END
turn the game on while holding the 1-key and use the visitor's side keypad
to play offsense.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -2860,7 +3486,7 @@ MACHINE_CONFIG_END
* Hitachi QFP HD38820A70 MCU
* cyan/red/green/darkgreen VFD display Itron CP5137
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -2884,7 +3510,7 @@ WRITE8_MEMBER(pbqbert_state::plate_w)
m_plate = (m_plate & ~(0xf << shift)) | (data << shift);
// update display
- UINT32 plate = BITSWAP32(m_plate,31,30,24,25,26,27,28,15,14,29,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,17,18,19,20,21,22,23);
+ UINT32 plate = BITSWAP32(m_plate,31,30,24,25,26,27,28,15,14,29,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,17,18,19,20,21,22,23) | 0x400000;
display_matrix(30, 8, plate, m_grid);
}
@@ -2948,7 +3574,7 @@ MACHINE_CONFIG_END
* Hitachi HD38800B23 MCU
* cyan/red/blue VFD display Futaba DM-65ZK 3A
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -3069,7 +3695,7 @@ MACHINE_CONFIG_END
* Hitachi HD38800A88 MCU
* cyan/red/green VFD display NEC FIP10AM24T no. 2-8 1
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -3194,7 +3820,7 @@ MACHINE_CONFIG_END
- UK: Cosmic Invader, published by Grandstand
- UK: Galactic Invaders, published by Prinztronic
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -3318,6 +3944,13 @@ ROM_START( msthawk )
ROM_END
+ROM_START( bzaxxon )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b19", 0x0000, 0x1000, CRC(4fecb80d) SHA1(7adf079480ffd3825ad5ae1eaa4d892eecbcc42d) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
ROM_START( zackman )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38820a49", 0x0000, 0x1000, CRC(b97f5ef6) SHA1(7fe20e8107361caf9ea657e504be1f8b10b8b03f) )
@@ -3325,6 +3958,20 @@ ROM_START( zackman )
ROM_END
+ROM_START( bpengo )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a63", 0x0000, 0x1000, CRC(ebd6bc64) SHA1(0a322c47b9553a2739a85908ce64b9650cf93d49) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
+ROM_START( bbtime )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a65", 0x0000, 0x1000, CRC(33611faf) SHA1(29b6a30ed543688d31ec2aa18f7938fa4eef30b0) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
ROM_START( bdoramon )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38800b43", 0x0000, 0x1000, CRC(9387ca42) SHA1(8937e208934b34bd9f49700aa50287dfc8bda76c) )
@@ -3332,6 +3979,13 @@ ROM_START( bdoramon )
ROM_END
+ROM_START( bultrman )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38800b52", 0x0000, 0x1000, CRC(88d372dc) SHA1(f2ac3b89be8afe6fb65914ccebe1a56316b9472a) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
ROM_START( machiman )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38820a85", 0x0000, 0x1000, CRC(894b4954) SHA1(cab49638a326b031aa548301beb16f818759ef62) )
@@ -3339,6 +3993,17 @@ ROM_START( machiman )
ROM_END
+ROM_START( pairmtch )
+ ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a88", 0x0000, 0x1000, CRC(ffa35730) SHA1(5a80b9025aaad2ac0ab0b1436a1355ae8cd3f868) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+
+ ROM_REGION( 0x2000, "audiocpu", ROMREGION_ERASE00 )
+ ROM_LOAD( "hd38820a89", 0x0000, 0x1000, CRC(3533ec56) SHA1(556d69e78a0ee1bf766fce16ed58992d7272d57f) )
+ ROM_CONTINUE( 0x1e80, 0x0100 )
+ROM_END
+
+
ROM_START( alnattck )
ROM_REGION( 0x2000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "hd38800a25", 0x0000, 0x1000, CRC(18b50869) SHA1(11e9d5f7b4ae818b077b0ee14a3b43190e20bff3) )
@@ -3465,44 +4130,49 @@ ROM_END
ROM_START( vinvader )
ROM_REGION( 0x1000, "maincpu", ROMREGION_ERASE00 )
- ROM_LOAD( "hd38750a45", 0x0000, 0x0800, CRC(e02d94d9) SHA1(d4679abbb9c6778e5e853aa6c2b90dee1d21c9dd) )
+ ROM_LOAD( "hd38750a45", 0x0000, 0x0800, CRC(32de6056) SHA1(70238c6c40c3d513f8eced1cb81bdd4dbe12f16c) )
ROM_CONTINUE( 0x0f00, 0x0080 )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1979, bambball, 0, 0, bambball, bambball, driver_device, 0, "Bambino", "Dribble Away Basketball", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1979, bmboxing, 0, 0, bmboxing, bmboxing, driver_device, 0, "Bambino", "Knock-Em Out Boxing", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, driver_device, 0, "Bandai", "Frisky Tom (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1981, packmon, 0, 0, packmon, packmon, driver_device, 0, "Bandai", "Packri Monster", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1982, msthawk, 0, 0, msthawk, msthawk, driver_device, 0, "Bandai (Mattel license)", "Star Hawk (Mattel)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1983, zackman, 0, 0, zackman, zackman, driver_device, 0, "Bandai", "Zackman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1983, bdoramon, 0, 0, bdoramon, bdoramon, driver_device, 0, "Bandai", "Dokodemo Dorayaki Doraemon", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1984, machiman, 0, 0, machiman, machiman, driver_device, 0, "Bandai", "Machine Man", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1981, alnattck, 0, 0, alnattck, alnattck, driver_device, 0, "Coleco", "Alien Attack", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1982, cdkong, 0, 0, cdkong, cdkong, driver_device, 0, "Coleco", "Donkey Kong (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_SOUND )
-CONS( 1982, cgalaxn, 0, 0, cgalaxn, cgalaxn, driver_device, 0, "Coleco", "Galaxian (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_IMPERFECT_SOUND )
-CONS( 1981, cpacman, 0, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 29)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 28)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Coleco", "Ms. Pac-Man (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, driver_device, 0, "Entex", "Galaxian 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1981, epacman2, 0, 0, egalaxn2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1982, estargte, 0, 0, estargte, estargte, driver_device, 0, "Entex", "Stargate (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1982, eturtles, 0, 0, eturtles, eturtles, driver_device, 0, "Entex", "Turtles (Entex)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1980, ghalien, 0, 0, ghalien, ghalien, driver_device, 0, "Gakken", "Heiankyo Alien (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1982, gckong, 0, 0, gckong, gckong, driver_device, 0, "Gakken", "Crazy Kong (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
-CONS( 1983, gdigdug, 0, 0, gdigdug, gdigdug, driver_device, 0, "Gakken", "Dig Dug (Gakken)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1980, mwcbaseb, 0, 0, mwcbaseb, mwcbaseb, driver_device, 0, "Mattel", "World Championship Baseball", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, driver_device, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1982, kingman, 0, 0, kingman, kingman, driver_device, 0, "Tomy", "Kingman", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1984, tmtron, 0, 0, tmtron, tmtron, driver_device, 0, "Tomy", "Tron (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1981, vinvader, 0, 0, vinvader, vinvader, driver_device, 0, "VTech", "Invaders (VTech)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
+CONS( 1979, bambball, 0, 0, bambball, bambball, driver_device, 0, "Bambino", "Dribble Away Basketball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1979, bmboxing, 0, 0, bmboxing, bmboxing, driver_device, 0, "Bambino", "Knock-Em Out Boxing", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1982, bfriskyt, 0, 0, bfriskyt, bfriskyt, driver_device, 0, "Bandai", "Frisky Tom (Bandai)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1981, packmon, 0, 0, packmon, packmon, driver_device, 0, "Bandai", "Packri Monster", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, msthawk, 0, 0, msthawk, msthawk, driver_device, 0, "Bandai (Mattel license)", "Star Hawk (Mattel)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, bzaxxon, 0, 0, bzaxxon, bzaxxon, driver_device, 0, "Bandai", "Zaxxon (Bandai)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
+CONS( 1983, zackman, 0, 0, zackman, zackman, driver_device, 0, "Bandai", "Zackman", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1983, bpengo, 0, 0, bpengo, bpengo, driver_device, 0, "Bandai", "Pengo (Bandai)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
+CONS( 1983, bbtime, 0, 0, bbtime, bbtime, driver_device, 0, "Bandai", "Burger Time (Bandai)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
+CONS( 1983, bdoramon, 0, 0, bdoramon, bdoramon, driver_device, 0, "Bandai", "Dokodemo Dorayaki Doraemon", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1983, bultrman, 0, 0, bultrman, bultrman, driver_device, 0, "Bandai", "Ultra Man (Bandai)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
+CONS( 1984, machiman, 0, 0, machiman, machiman, driver_device, 0, "Bandai", "Machine Man", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1984, pairmtch, 0, 0, pairmtch, pairmtch, driver_device, 0, "Bandai", "Pair Match", MACHINE_SUPPORTS_SAVE )
+
+CONS( 1981, alnattck, 0, 0, alnattck, alnattck, driver_device, 0, "Coleco", "Alien Attack", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, cdkong, 0, 0, cdkong, cdkong, driver_device, 0, "Coleco", "Donkey Kong (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_IMPERFECT_SOUND )
+CONS( 1982, cgalaxn, 0, 0, cgalaxn, cgalaxn, driver_device, 0, "Coleco", "Galaxian (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_IMPERFECT_SOUND )
+CONS( 1981, cpacman, 0, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 29)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1981, cpacmanr1, cpacman, 0, cpacman, cpacman, driver_device, 0, "Coleco", "Pac-Man (Coleco, Rev. 28)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1983, cmspacmn, 0, 0, cmspacmn, cmspacmn, driver_device, 0, "Coleco", "Ms. Pac-Man (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1981, egalaxn2, 0, 0, egalaxn2, egalaxn2, driver_device, 0, "Entex", "Galaxian 2 (Entex)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1981, epacman2, 0, 0, egalaxn2, epacman2, driver_device, 0, "Entex", "Pac Man 2 (Entex)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, estargte, 0, 0, estargte, estargte, driver_device, 0, "Entex", "Stargate (Entex)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, eturtles, 0, 0, eturtles, eturtles, driver_device, 0, "Entex", "Turtles (Entex)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1980, ghalien, 0, 0, ghalien, ghalien, driver_device, 0, "Gakken", "Heiankyo Alien (Gakken)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, gckong, 0, 0, gckong, gckong, driver_device, 0, "Gakken", "Crazy Kong (Gakken)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
+CONS( 1983, gdigdug, 0, 0, gdigdug, gdigdug, driver_device, 0, "Gakken", "Dig Dug (Gakken)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1980, mwcbaseb, 0, 0, mwcbaseb, mwcbaseb, driver_device, 0, "Mattel", "World Championship Baseball", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1983, pbqbert, 0, 0, pbqbert, pbqbert, driver_device, 0, "Parker Brothers", "Q*Bert (Parker Brothers)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1982, kingman, 0, 0, kingman, kingman, driver_device, 0, "Tomy", "Kingman", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1984, tmtron, 0, 0, tmtron, tmtron, driver_device, 0, "Tomy", "Tron (Tomy)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1981, vinvader, 0, 0, vinvader, vinvader, driver_device, 0, "VTech", "Invaders (VTech)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
diff --git a/src/mess/drivers/hh_melps4.c b/src/mame/drivers/hh_melps4.c
index 2fc3291e383..92e4bd09228 100644
--- a/src/mess/drivers/hh_melps4.c
+++ b/src/mame/drivers/hh_melps4.c
@@ -36,6 +36,7 @@ public:
UINT16 m_inp_mux; // multiplexed inputs mask
UINT8 read_inputs(int columns);
+ DECLARE_INPUT_CHANGED_MEMBER(reset_button);
// display common
int m_display_wait; // led/lamp off-delay in microseconds (default 33ms)
@@ -188,6 +189,8 @@ void hh_melps4_state::display_matrix(int maxx, int maxy, UINT32 setx, UINT32 set
}
+// generic input handlers
+
UINT8 hh_melps4_state::read_inputs(int columns)
{
UINT8 ret = 0;
@@ -200,6 +203,12 @@ UINT8 hh_melps4_state::read_inputs(int columns)
return ret;
}
+INPUT_CHANGED_MEMBER(hh_melps4_state::reset_button)
+{
+ // for when reset button is directly tied to MCU reset pin
+ m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
+}
+
/***************************************************************************
@@ -210,12 +219,12 @@ UINT8 hh_melps4_state::read_inputs(int columns)
/***************************************************************************
- Coleco Frogger (manufactured in Japan)
+ Coleco Frogger (manufactured in Japan, licensed from Sega)
* PCB label Coleco Frogger Code No. 01-81543, KS-003282 Japan
* Mitsubishi M58846-701P MCU
* cyan/red/green VFD display Itron CP5090GLR R1B, with partial color overlay
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -231,8 +240,6 @@ public:
DECLARE_WRITE16_MEMBER(grid_w);
DECLARE_WRITE_LINE_MEMBER(speaker_w);
DECLARE_READ16_MEMBER(input_r);
-
- DECLARE_INPUT_CHANGED_MEMBER(reset_button);
};
// handlers
@@ -246,14 +253,15 @@ void cfrogger_state::prepare_display()
WRITE8_MEMBER(cfrogger_state::plate_w)
{
+ // F0,F1: input mux
+ if (offset == MELPS4_PORTF)
+ m_inp_mux = data & 3;
+
// Sx,Fx,Gx: vfd matrix plate
int mask = (offset == MELPS4_PORTS) ? 0xff : 0xf; // port S is 8-bit
int shift = (offset == MELPS4_PORTS) ? 0 : (offset + 1) * 4;
m_plate = (m_plate & ~(mask << shift)) | (data << shift);
prepare_display();
-
- // F0,F1: input mux
- m_inp_mux = m_plate >> 8 & 3;
}
WRITE16_MEMBER(cfrogger_state::grid_w)
@@ -281,11 +289,11 @@ READ16_MEMBER(cfrogger_state::input_r)
// config
static INPUT_PORTS_START( cfrogger )
- PORT_START("IN.0") // F0 port K
+ PORT_START("IN.0") // F0 port K0,K1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
- PORT_START("IN.1") // F1 port K
+ PORT_START("IN.1") // F1 port K0,K1
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
@@ -295,16 +303,9 @@ static INPUT_PORTS_START( cfrogger )
PORT_CONFSETTING( 0x08, "2" )
PORT_START("IN.3") // fake
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, cfrogger_state, reset_button, NULL)
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_melps4_state, reset_button, NULL)
INPUT_PORTS_END
-INPUT_CHANGED_MEMBER(cfrogger_state::reset_button)
-{
- // reset button is directly tied to MCU reset pin
- m_maincpu->set_input_line(INPUT_LINE_RESET, newval ? ASSERT_LINE : CLEAR_LINE);
-}
-
-
static MACHINE_CONFIG_START( cfrogger, cfrogger_state )
/* basic machine hardware */
@@ -333,6 +334,122 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Gakken Jungler (manufactured in Japan, licensed from Konami)
+ * PCB label Konami Gakken GR503
+ * Mitsubishi M58846-702P MCU
+ * cyan/red/green VFD display Itron CP5143GLR SGA, with light-yellow color overlay
+
+ NOTE!: MAME external artwork is required
+
+***************************************************************************/
+
+class gjungler_state : public hh_melps4_state
+{
+public:
+ gjungler_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_melps4_state(mconfig, type, tag)
+ { }
+
+ void prepare_display();
+ DECLARE_WRITE8_MEMBER(plate_w);
+ DECLARE_WRITE16_MEMBER(grid_w);
+ DECLARE_WRITE_LINE_MEMBER(speaker_w);
+ DECLARE_READ16_MEMBER(input_r);
+};
+
+// handlers
+
+void gjungler_state::prepare_display()
+{
+ UINT16 grid = BITSWAP16(m_grid,15,14,13,12,11,10,9,8,7,6,5,4,3,2,0,1);
+ UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,8,9,10,11,17,16,15,14,13,12,0,7,1,6,2,5,3,4) | 0x2000;
+ display_matrix(18, 12, plate, grid);
+}
+
+WRITE8_MEMBER(gjungler_state::plate_w)
+{
+ // G0,G1: input mux
+ if (offset == MELPS4_PORTG)
+ m_inp_mux = data & 3;
+
+ // Sx,Fx,Gx,U: vfd matrix plate
+ int mask = (offset == MELPS4_PORTS) ? 0xff : 0xf; // port S is 8-bit
+ int shift = (offset == MELPS4_PORTS) ? 0 : (offset + 1) * 4;
+ m_plate = (m_plate & ~(mask << shift)) | (data << shift);
+ prepare_display();
+}
+
+WRITE16_MEMBER(gjungler_state::grid_w)
+{
+ // D0-D11: vfd matrix grid
+ m_grid = data;
+ prepare_display();
+}
+
+WRITE_LINE_MEMBER(gjungler_state::speaker_w)
+{
+ // T: speaker out
+ m_speaker->level_w(state);
+}
+
+READ16_MEMBER(gjungler_state::input_r)
+{
+ // K0,K1: multiplexed inputs
+ // K2,K3: fixed inputs
+ return (m_inp_matrix[2]->read() & 0xc) | (read_inputs(2) & 3);
+}
+
+
+// config
+
+static INPUT_PORTS_START( gjungler )
+ PORT_START("IN.0") // G0 port K0,K1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT )
+
+ PORT_START("IN.1") // G1 port K0,K1
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP )
+
+ PORT_START("IN.2") // K2,K3
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_CONFNAME( 0x08, 0x00, "Game Mode" )
+ PORT_CONFSETTING( 0x00, "A" )
+ PORT_CONFSETTING( 0x08, "B" )
+
+ PORT_START("IN.3") // fake
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START ) PORT_CHANGED_MEMBER(DEVICE_SELF, hh_melps4_state, reset_button, NULL)
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( gjungler, gjungler_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M58846, XTAL_600kHz)
+ MCFG_MELPS4_READ_K_CB(READ16(gjungler_state, input_r))
+ MCFG_MELPS4_WRITE_S_CB(WRITE8(gjungler_state, plate_w))
+ MCFG_MELPS4_WRITE_F_CB(WRITE8(gjungler_state, plate_w))
+ MCFG_MELPS4_WRITE_G_CB(WRITE8(gjungler_state, plate_w))
+ MCFG_MELPS4_WRITE_U_CB(WRITE8(gjungler_state, plate_w))
+ MCFG_MELPS4_WRITE_D_CB(WRITE16(gjungler_state, grid_w))
+ MCFG_MELPS4_WRITE_T_CB(WRITELINE(gjungler_state, speaker_w))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_melps4_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_hh_melps4_test)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Game driver(s)
***************************************************************************/
@@ -343,6 +460,14 @@ ROM_START( cfrogger )
ROM_END
+ROM_START( gjungler )
+ ROM_REGION( 0x1000, "maincpu", 0 )
+ ROM_LOAD( "m58846-702p", 0x0000, 0x1000, CRC(94ab7060) SHA1(3389bc115d1df8d01a30611fa9e95a900d32b29b) )
+ROM_END
+
+
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1981, cfrogger, 0, 0, cfrogger, cfrogger, driver_device, 0, "Coleco", "Frogger (Coleco)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
+CONS( 1981, cfrogger, 0, 0, cfrogger, cfrogger, driver_device, 0, "Coleco", "Frogger (Coleco)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1982, gjungler, 0, 0, gjungler, gjungler, driver_device, 0, "Gakken / Konami", "Jungler (Gakken)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/hh_pic16.c b/src/mame/drivers/hh_pic16.c
index a7542e6d31d..4a6e6088450 100644
--- a/src/mess/drivers/hh_pic16.c
+++ b/src/mame/drivers/hh_pic16.c
@@ -15,7 +15,7 @@
*192 1650 19??, (a phone dialer, have dump)
*255 1655 19??, (a talking clock, have dump)
- (* denotes not yet emulated by MESS, @ denotes it's in this driver)
+ (* denotes not yet emulated by MAME, @ denotes it's in this driver)
TODO:
@@ -299,4 +299,4 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1979, maniac, 0, 0, maniac, maniac, driver_device, 0, "Ideal", "Maniac", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
+CONS( 1979, maniac, 0, 0, maniac, maniac, driver_device, 0, "Ideal", "Maniac", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/hh_sm510.c b/src/mame/drivers/hh_sm510.c
index ff7e4b7b9cc..87c42f538bb 100644
--- a/src/mess/drivers/hh_sm510.c
+++ b/src/mame/drivers/hh_sm510.c
@@ -57,7 +57,7 @@ void hh_sm510_state::machine_start()
{
// zerofill
m_inp_mux = 0;
-// m_inp_lines = 0;
+// m_inp_lines = 0;
memset(m_lcd_output_cache, ~0, sizeof(m_lcd_output_cache));
// register for savestates
@@ -149,7 +149,7 @@ READ8_MEMBER(hh_sm510_state::input_r)
Konami Top Gun
* PCB label BH003
* Sharp SM510 under epoxy (die label CMS54C, KMS598)
-
+
The ROM listing "BH003 Top Gun" from patent US5137277 is identical to the
released version, except for 2 probable bit errors and filler bytes. Unused
pages list data too, of what looks like assembler leftover garbage.
@@ -396,7 +396,7 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1989, ktopgun, 0, 0, ktopgun, ktopgun, driver_device, 0, "Konami", "Top Gun (Konami)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
-CONS( 1989, ktmnt, 0, 0, ktmnt, ktmnt, driver_device, 0, "Konami", "Teenage Mutant Ninja Turtles (Konami)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
+CONS( 1989, ktopgun, 0, 0, ktopgun, ktopgun, driver_device, 0, "Konami", "Top Gun (Konami)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
+CONS( 1989, ktmnt, 0, 0, ktmnt, ktmnt, driver_device, 0, "Konami", "Teenage Mutant Ninja Turtles (Konami)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
-CONS( 1982, gnwmndon, 0, 0, gnwmndon, gnwmndon, driver_device, 0, "Nintendo", "Game & Watch: Mickey & Donald", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK | GAME_NOT_WORKING )
+CONS( 1982, gnwmndon, 0, 0, gnwmndon, gnwmndon, driver_device, 0, "Nintendo", "Game & Watch: Mickey & Donald", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK | MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/hh_tms1k.c b/src/mame/drivers/hh_tms1k.c
index 7474cff3ebe..357d0f496fe 100644
--- a/src/mess/drivers/hh_tms1k.c
+++ b/src/mame/drivers/hh_tms1k.c
@@ -34,12 +34,14 @@
*MP3208 TMS1000 1977, Milton Bradley Electronic Battleship (1977, model 4750A or B)
@MP3226 TMS1000 1978, Milton Bradley Simon (model 4850)
*MP3232 TMS1000 1979, Fonas 2-Player Baseball (no "MP" on chip label)
+ *MP3300 TMS1000 1980, Estrela Genius (from Brazil, looks and plays identical to Simon)
@MP3301A TMS1000 1979, Milton Bradley Big Trak
*MP3320A TMS1000 1979, Coleco Head to Head Basketball
*M32001 TMS1000 1981, Coleco Quiz Wiz Challenger (note: MP3398, MP3399, M3200x?)
MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.c
@MP3404 TMS1100 1978, Parker Brothers Merlin
@MP3405 TMS1100 1979, Coleco Amaze-A-Tron
+ *MP3415 TMS1100 1978, Coleco Electronic Quarterback
@MP3438A TMS1100 1979, Kenner Star Wars Electronic Battle Command
MP3450A TMS1100 1979, MicroVision cartridge: Blockbuster
MP3454 TMS1100 1979, MicroVision cartridge: Star Trek Phaser Strike
@@ -76,7 +78,7 @@
*M95041 ? 1983, Tsukuda Game Pachinko (? note: 40-pin, VFD-capable)
@CD7282SL TMS1100 1981, Tandy/RadioShack Tandy-12 (serial is similar to TI Speak & Spell series?)
- (* denotes not yet emulated by MESS, @ denotes it's in this driver)
+ (* denotes not yet emulated by MAME, @ denotes it's in this driver)
TODO:
@@ -142,7 +144,10 @@ void hh_tms1k_state::machine_start()
m_o = 0;
m_r = 0;
m_inp_mux = 0;
+ m_power_led = false;
m_power_on = false;
+ m_grid = 0;
+ m_plate = 0;
// register for savestates
save_item(NAME(m_display_maxy));
@@ -151,6 +156,7 @@ void hh_tms1k_state::machine_start()
save_item(NAME(m_display_state));
/* save_item(NAME(m_display_cache)); */ // don't save!
+ /* save_item(NAME(m_power_led)); */ // don't save!
save_item(NAME(m_display_decay));
save_item(NAME(m_display_segmask));
@@ -158,6 +164,8 @@ void hh_tms1k_state::machine_start()
save_item(NAME(m_r));
save_item(NAME(m_inp_mux));
save_item(NAME(m_power_on));
+ save_item(NAME(m_grid));
+ save_item(NAME(m_plate));
}
void hh_tms1k_state::machine_reset()
@@ -227,6 +235,13 @@ void hh_tms1k_state::display_update()
}
memcpy(m_display_cache, active_state, sizeof(m_display_cache));
+
+ // output optional power led
+ if (m_power_led != m_power_on)
+ {
+ m_power_led = m_power_on;
+ output_set_value("power_led", m_power_led ? 1 : 0);
+ }
}
TIMER_DEVICE_CALLBACK_MEMBER(hh_tms1k_state::display_decay_tick)
@@ -909,7 +924,7 @@ MACHINE_CONFIG_END
This is a head to head electronic tabletop LED-display sports console.
One cartridge(Football) was included with the console, the other three were
sold in a pack. Gameplay has emphasis on strategy, read the official manual
- on how to play. Remember that you can rotate the view in MESS: rotate left
+ on how to play. Remember that you can rotate the view in MAME: rotate left
for Home(P1) orientation, rotate right for Visitor(P2) orientation.
Cartridge socket:
@@ -1074,7 +1089,7 @@ MACHINE_CONFIG_END
are denoted by words ("left", "center", "short", etc), and an alternate one
with little guys drawn next to the LEDs.
- lamp translation table: led LDzz from game PCB = MESS lampyx:
+ lamp translation table: led LDzz from game PCB = MAME lampyx:
LD0 = - LD10 = lamp12 LD20 = lamp42 LD30 = lamp60
LD1 = lamp23 LD11 = lamp4 LD21 = lamp41 LD31 = lamp61
@@ -1207,7 +1222,7 @@ MACHINE_CONFIG_END
The sequel to Entex Baseball, this version keeps up with score and innings.
As its predecessor, the pitcher controls are on a separate joypad.
- lamp translation table: led zz from game PCB = MESS lampyx:
+ lamp translation table: led zz from game PCB = MAME lampyx:
00 = - 10 = lamp94 20 = lamp74 30 = lamp50
01 = lamp53 11 = lamp93 21 = lamp75 31 = lamp51
@@ -1333,7 +1348,7 @@ MACHINE_CONFIG_END
This is another improvement over Entex Baseball, where gameplay is a bit more
varied. Like the others, the pitcher controls are on a separate joypad.
- lamp translation table: led zz from game PCB = MESS lampyx:
+ lamp translation table: led zz from game PCB = MAME lampyx:
note: unlabeled panel leds are listed here as Sz, Bz, Oz, Iz, z left-to-right
00 = - 10 = lamp75 20 = lamp72
@@ -1515,7 +1530,7 @@ MACHINE_CONFIG_END
TMS1100, the second more widespread release runs on a COP400. There are
also differences with the overlay mask.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1746,7 +1761,7 @@ MACHINE_CONFIG_END
* TMS1100 6010 MP1218 (die also labeled MP1218)
* 4 7seg LEDs, and other LEDs behind bezel, 1bit sound
- lamp translation table: led zz from game PCB = MESS lampyx:
+ lamp translation table: led zz from game PCB = MAME lampyx:
11 = lamp90 21 = lamp91 31 = lamp92 41 = lamp93 51 = lamp95
12 = lamp80 22 = lamp81 32 = lamp82 42 = lamp83 52 = lamp85
@@ -1871,7 +1886,7 @@ MACHINE_CONFIG_END
* TMS1100 MP1221 (die labeled MP1221)
* 4 7seg LEDs(rightmost one unused), and other LEDs behind bezel, 1bit sound
- lamp translation table: led zz from game PCB = MESS lampyx:
+ lamp translation table: led zz from game PCB = MAME lampyx:
0 = - 10 = lamp44 20 = lamp53 30 = lamp95 40 = lamp92
1 = lamp30 11 = lamp45 21 = lamp54 31 = lamp85 41 = lamp93
@@ -1884,7 +1899,7 @@ MACHINE_CONFIG_END
8 = lamp42 18 = lamp73 28 = lamp84 38 = lamp82
9 = lamp43 19 = - 29 = lamp94 39 = lamp83
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -3682,7 +3697,7 @@ READ8_MEMBER(bankshot_state::read_k)
// config
/* physical button layout and labels is like this:
- (note: remember that you can rotate the display in MESS)
+ (note: remember that you can rotate the display in MAME)
[SELECT [BALL UP] [BALL OVER]
SCORE]
@@ -4017,7 +4032,7 @@ MACHINE_CONFIG_END
- Japan: Block Attack
- UK: Break-In
- lamp translation table: led zz from game PCB = MESS lampyx:
+ lamp translation table: led zz from game PCB = MAME lampyx:
00 = - 10 = lamp50 20 = lamp42
01 = lamp70 11 = lamp51 21 = lamp33
@@ -4575,47 +4590,47 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, driver_device, 0, "APF Electronics Inc.", "Mathemagician", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
+COMP( 1980, mathmagi, 0, 0, mathmagi, mathmagi, driver_device, 0, "APF Electronics Inc.", "Mathemagician", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
-CONS( 1979, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Coleco", "Amaze-A-Tron", GAME_SUPPORTS_SAVE )
-CONS( 1980, h2hbaseb, 0, 0, h2hbaseb, h2hbaseb, driver_device, 0, "Coleco", "Head to Head Baseball", GAME_SUPPORTS_SAVE )
-CONS( 1980, h2hfootb, 0, 0, h2hfootb, h2hfootb, driver_device, 0, "Coleco", "Head to Head Football", GAME_SUPPORTS_SAVE )
-CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", GAME_SUPPORTS_SAVE )
+CONS( 1979, amaztron, 0, 0, amaztron, amaztron, driver_device, 0, "Coleco", "Amaze-A-Tron", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, h2hbaseb, 0, 0, h2hbaseb, h2hbaseb, driver_device, 0, "Coleco", "Head to Head Baseball", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, h2hfootb, 0, 0, h2hfootb, h2hfootb, driver_device, 0, "Coleco", "Head to Head Football", MACHINE_SUPPORTS_SAVE )
+CONS( 1981, tc4, 0, 0, tc4, tc4, driver_device, 0, "Coleco", "Total Control 4", MACHINE_SUPPORTS_SAVE )
-CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Electronic Baseball (Entex)", GAME_SUPPORTS_SAVE )
-CONS( 1979, ebball2, 0, 0, ebball2, ebball2, driver_device, 0, "Entex", "Electronic Baseball 2 (Entex)", GAME_SUPPORTS_SAVE )
-CONS( 1980, ebball3, 0, 0, ebball3, ebball3, driver_device, 0, "Entex", "Electronic Baseball 3 (Entex)", GAME_SUPPORTS_SAVE )
-CONS( 1980, einvader, 0, 0, einvader, einvader, driver_device, 0, "Entex", "Space Invader (Entex, TMS1100)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1980, efootb4 , 0, 0, efootb4, efootb4, driver_device, 0, "Entex", "Color Football 4 (Entex)", GAME_SUPPORTS_SAVE )
-CONS( 1980, ebaskb2 , 0, 0, ebaskb2, ebaskb2, driver_device, 0, "Entex", "Electronic Basketball 2 (Entex)", GAME_SUPPORTS_SAVE )
-CONS( 1980, raisedvl, 0, 0, raisedvl, raisedvl, driver_device, 0, "Entex", "Raise The Devil", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
+CONS( 1979, ebball, 0, 0, ebball, ebball, driver_device, 0, "Entex", "Electronic Baseball (Entex)", MACHINE_SUPPORTS_SAVE )
+CONS( 1979, ebball2, 0, 0, ebball2, ebball2, driver_device, 0, "Entex", "Electronic Baseball 2 (Entex)", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, ebball3, 0, 0, ebball3, ebball3, driver_device, 0, "Entex", "Electronic Baseball 3 (Entex)", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, einvader, 0, 0, einvader, einvader, driver_device, 0, "Entex", "Space Invader (Entex, TMS1100)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1980, efootb4 , 0, 0, efootb4, efootb4, driver_device, 0, "Entex", "Color Football 4 (Entex)", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, ebaskb2 , 0, 0, ebaskb2, ebaskb2, driver_device, 0, "Entex", "Electronic Basketball 2 (Entex)", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, raisedvl, 0, 0, raisedvl, raisedvl, driver_device, 0, "Entex", "Raise The Devil", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
-CONS( 1979, gpoker, 0, 0, gpoker, gpoker, driver_device, 0, "Gakken", "Poker (Gakken, 1979 version)", GAME_SUPPORTS_SAVE )
-CONS( 1980, gjackpot, 0, 0, gjackpot, gjackpot, driver_device, 0, "Gakken", "Jackpot: Gin Rummy & Black Jack", GAME_SUPPORTS_SAVE )
+CONS( 1979, gpoker, 0, 0, gpoker, gpoker, driver_device, 0, "Gakken", "Poker (Gakken, 1979 version)", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, gjackpot, 0, 0, gjackpot, gjackpot, driver_device, 0, "Gakken", "Jackpot: Gin Rummy & Black Jack", MACHINE_SUPPORTS_SAVE )
-CONS( 1979, elecdet, 0, 0, elecdet, elecdet, driver_device, 0, "Ideal", "Electronic Detective", GAME_SUPPORTS_SAVE ) // ***
+CONS( 1979, elecdet, 0, 0, elecdet, elecdet, driver_device, 0, "Ideal", "Electronic Detective", MACHINE_SUPPORTS_SAVE ) // ***
-CONS( 1979, starwbc, 0, 0, starwbc, starwbc, driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command", GAME_SUPPORTS_SAVE )
-CONS( 1979, starwbcp, starwbc, 0, starwbc, starwbc, driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command (patent)", GAME_SUPPORTS_SAVE )
+CONS( 1979, starwbc, 0, 0, starwbc, starwbc, driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command", MACHINE_SUPPORTS_SAVE )
+CONS( 1979, starwbcp, starwbc, 0, starwbc, starwbc, driver_device, 0, "Kenner", "Star Wars - Electronic Battle Command (patent)", MACHINE_SUPPORTS_SAVE )
-COMP( 1979, astro, 0, 0, astro, astro, driver_device, 0, "Kosmos", "Astro", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
+COMP( 1979, astro, 0, 0, astro, astro, driver_device, 0, "Kosmos", "Astro", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
-CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW )
-CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", GAME_SUPPORTS_SAVE )
-CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", GAME_SUPPORTS_SAVE )
-CONS( 1979, bigtrak, 0, 0, bigtrak, bigtrak, driver_device, 0, "Milton Bradley", "Big Trak", GAME_SUPPORTS_SAVE | GAME_MECHANICAL ) // ***
+CONS( 1977, comp4, 0, 0, comp4, comp4, driver_device, 0, "Milton Bradley", "Comp IV", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW )
+CONS( 1978, simon, 0, 0, simon, simon, driver_device, 0, "Milton Bradley", "Simon (Rev. A)", MACHINE_SUPPORTS_SAVE )
+CONS( 1979, ssimon, 0, 0, ssimon, ssimon, driver_device, 0, "Milton Bradley", "Super Simon", MACHINE_SUPPORTS_SAVE )
+CONS( 1979, bigtrak, 0, 0, bigtrak, bigtrak, driver_device, 0, "Milton Bradley", "Big Trak", MACHINE_SUPPORTS_SAVE | MACHINE_MECHANICAL ) // ***
-CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", GAME_SUPPORTS_SAVE | GAME_NO_SOUND_HW ) // ***
-CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", GAME_SUPPORTS_SAVE )
-CONS( 1979, stopthie, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", GAME_SUPPORTS_SAVE ) // ***
-CONS( 1979, stopthiep, stopthie, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner) (patent)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING )
-CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", GAME_SUPPORTS_SAVE )
-CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", GAME_SUPPORTS_SAVE )
-CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Parker Brothers", "Master Merlin", GAME_SUPPORTS_SAVE )
+CONS( 1977, cnsector, 0, 0, cnsector, cnsector, driver_device, 0, "Parker Brothers", "Code Name: Sector", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND_HW ) // ***
+CONS( 1978, merlin, 0, 0, merlin, merlin, driver_device, 0, "Parker Brothers", "Merlin - The Electronic Wizard", MACHINE_SUPPORTS_SAVE )
+CONS( 1979, stopthie, 0, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner)", MACHINE_SUPPORTS_SAVE ) // ***
+CONS( 1979, stopthiep, stopthie, 0, stopthief, stopthief, driver_device, 0, "Parker Brothers", "Stop Thief (Electronic Crime Scanner) (patent)", MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING )
+CONS( 1980, bankshot, 0, 0, bankshot, bankshot, driver_device, 0, "Parker Brothers", "Bank Shot - Electronic Pool", MACHINE_SUPPORTS_SAVE )
+CONS( 1980, splitsec, 0, 0, splitsec, splitsec, driver_device, 0, "Parker Brothers", "Split Second", MACHINE_SUPPORTS_SAVE )
+CONS( 1982, mmerlin, 0, 0, mmerlin, mmerlin, driver_device, 0, "Parker Brothers", "Master Merlin", MACHINE_SUPPORTS_SAVE )
-CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", GAME_SUPPORTS_SAVE ) // some of the minigames: ***
+CONS( 1981, tandy12, 0, 0, tandy12, tandy12, driver_device, 0, "Tandy Radio Shack", "Tandy-12: Computerized Arcade", MACHINE_SUPPORTS_SAVE ) // some of the minigames: ***
-CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, driver_device, 0, "Tomy", "Break Up (Tomy)", GAME_SUPPORTS_SAVE )
+CONS( 1979, tbreakup, 0, 0, tbreakup, tbreakup, driver_device, 0, "Tomy", "Break Up (Tomy)", MACHINE_SUPPORTS_SAVE )
-// ***: As far as MESS is concerned, the game is emulated fine. But for it to be playable, it requires interaction
+// ***: As far as MAME is concerned, the game is emulated fine. But for it to be playable, it requires interaction
// with other, unemulatable, things eg. game board/pieces, playing cards, pen & paper, etc.
diff --git a/src/mess/drivers/hh_ucom4.c b/src/mame/drivers/hh_ucom4.c
index f2bbe1685f3..8aa5836ffe9 100644
--- a/src/mess/drivers/hh_ucom4.c
+++ b/src/mame/drivers/hh_ucom4.c
@@ -44,13 +44,20 @@
@209 uPD553C 1982, Tomy Caveman (TN-12)
@258 uPD553C 1984, Tomy Alien Chase (TN-16)
+ @512 uPD557LC 1980, Castle Toy Tactix
+
*060 uPD650C 1979, Mattel Computer Gin
*085 uPD650C 1980, Roland TR-808
*127 uPD650C 198?, Sony OA-S1100 Typecorder (subcpu, have dump)
*128 uPD650C 1981, Roland TR-606
133 uPD650C 1982, Roland TB-303 -> tb303.c
- (* denotes not yet emulated by MESS, @ denotes it's in this driver)
+ (* denotes not yet emulated by MAME, @ denotes it's in this driver)
+
+
+TODO:
+ - games that rely on the fact that faster/longer strobed elements appear brighter:
+ tactix(player 2)
***************************************************************************/
@@ -59,6 +66,7 @@
// internal artwork
#include "efball.lh"
#include "mvbfree.lh"
+#include "tactix.lh" // clickable
#include "hh_ucom4_test.lh" // common test-layout - use external artwork
@@ -229,7 +237,7 @@ UINT8 hh_ucom4_state::read_inputs(int columns)
- Japan: "Missile Guerilla Warfare Maneuvers", published by Tomy
- World: UFO Master-Blaster Station
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -341,7 +349,7 @@ MACHINE_CONFIG_END
Then choose a formation(A,B,C) and either pass the ball, and/or start
running. For more information, refer to the official manual.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -481,7 +489,7 @@ MACHINE_CONFIG_END
player 1 presses one of the directional keys. In 2-player mode, player 2
controls the goalkeeper, defensive players are still controlled by the CPU.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -603,7 +611,7 @@ MACHINE_CONFIG_END
* NEC uCOM-44 MCU, labeled EMIX D552C 049
* cyan VFD display Emix-108
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -712,7 +720,7 @@ MACHINE_CONFIG_END
This is basically a revamp of their earlier Boxing game (ET-06), case and
buttons are exactly the same.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -865,7 +873,7 @@ MACHINE_CONFIG_END
- Japan: FL Crazy Climbing
- USA: Crazy Climber
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -958,6 +966,125 @@ MACHINE_CONFIG_END
/***************************************************************************
+ Castle Toy Tactix
+ * NEC uCOM-43 MCU, labeled D557LC 512
+ * 16 LEDs behind buttons
+
+ Tactix is similar to Merlin, for 1 or 2 players. In 2-player mode, simply
+ don't press the Comp Turn button. The four included minigames are:
+ 1: Capture (reversi)
+ 2: Jump-Off (peg solitaire)
+ 3: Triple Play (3 in a row)
+ 4: Concentration (memory)
+
+ note: MAME external artwork is not needed for this game
+
+***************************************************************************/
+
+class tactix_state : public hh_ucom4_state
+{
+public:
+ tactix_state(const machine_config &mconfig, device_type type, const char *tag)
+ : hh_ucom4_state(mconfig, type, tag)
+ { }
+
+ DECLARE_WRITE8_MEMBER(leds_w);
+ DECLARE_WRITE8_MEMBER(speaker_w);
+ DECLARE_WRITE8_MEMBER(input_w);
+ DECLARE_READ8_MEMBER(input_r);
+};
+
+// handlers
+
+WRITE8_MEMBER(tactix_state::leds_w)
+{
+ // D,F: 4*4 led matrix
+ m_port[offset] = data;
+ display_matrix(4, 4, m_port[NEC_UCOM4_PORTD], m_port[NEC_UCOM4_PORTF]);
+}
+
+WRITE8_MEMBER(tactix_state::speaker_w)
+{
+ // G0: speaker out
+ m_speaker->level_w(data & 1);
+}
+
+WRITE8_MEMBER(tactix_state::input_w)
+{
+ // C,E0: input mux
+ m_port[offset] = data;
+ m_inp_mux = (m_port[NEC_UCOM4_PORTE] << 4 & 0x10) | m_port[NEC_UCOM4_PORTC];
+}
+
+READ8_MEMBER(tactix_state::input_r)
+{
+ // A: multiplexed inputs
+ return read_inputs(5);
+}
+
+
+// config
+
+static INPUT_PORTS_START( tactix )
+ PORT_START("IN.0") // C0 port A
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Button 1")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Button 5")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Button 9")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("Button 13")
+
+ PORT_START("IN.1") // C1 port A
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Button 2")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("Button 6")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Button 10")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("Button 14")
+
+ PORT_START("IN.2") // C2 port A
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Button 3")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Button 7")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Button 11")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Button 15")
+
+ PORT_START("IN.3") // C3 port A
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Button 4")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Button 8")
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Button 12")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_V) PORT_NAME("Button 16")
+
+ PORT_START("IN.4") // E0 port A
+ PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_NAME("New Game")
+ PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_UNUSED)
+ PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Comp Turn")
+ PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_UNUSED)
+INPUT_PORTS_END
+
+static MACHINE_CONFIG_START( tactix, tactix_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", NEC_D557L, 400000) // approximation
+ MCFG_UCOM4_READ_A_CB(READ8(tactix_state, input_r))
+ MCFG_UCOM4_WRITE_C_CB(WRITE8(tactix_state, input_w))
+ MCFG_UCOM4_WRITE_D_CB(WRITE8(tactix_state, leds_w))
+ MCFG_UCOM4_WRITE_E_CB(WRITE8(tactix_state, input_w))
+ MCFG_UCOM4_WRITE_F_CB(WRITE8(tactix_state, leds_w))
+ MCFG_UCOM4_WRITE_G_CB(WRITE8(tactix_state, speaker_w))
+
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
+ MCFG_DEFAULT_LAYOUT(layout_tactix)
+
+ /* no video! */
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+MACHINE_CONFIG_END
+
+
+
+
+
+/***************************************************************************
+
Epoch Invader From Space (manufactured in Japan)
* PCB labels 36010(A/B)
* NEC uCOM-44 MCU, labeled D552C 054
@@ -967,7 +1094,7 @@ MACHINE_CONFIG_END
- USA: Invader From Space
- UK: Invader From Space, published by Grandstand
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1068,6 +1195,8 @@ MACHINE_CONFIG_END
- USA: Electronic Football (aka Pro-Bowl Football)
- Japan: American Football
+ note: MAME external artwork is not needed for this game
+
***************************************************************************/
class efball_state : public hh_ucom4_state
@@ -1179,7 +1308,7 @@ MACHINE_CONFIG_END
- Japan: Astro Wars
- UK: Astro Wars, published by Grandstand
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1281,7 +1410,7 @@ MACHINE_CONFIG_END
- USA: Astro Command, published by Tandy
- UK: Scramble, published by Grandstand
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1390,7 +1519,7 @@ MACHINE_CONFIG_END
- USA: Dracula, red case
- Other: Dracula, yellow case, published by Hales
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1480,6 +1609,8 @@ MACHINE_CONFIG_END
* NEC uCOM-43 MCU, labeled D553C 049
* cyan VFD display Futaba DM-4.5 91
+ note: MAME external artwork is not needed for this game
+
***************************************************************************/
class mvbfree_state : public hh_ucom4_state
@@ -1589,7 +1720,7 @@ MACHINE_CONFIG_END
- USA: Cosmic Combat
- Japan: Space Attack
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1688,7 +1819,7 @@ MACHINE_CONFIG_END
Press the Serve button to start, then hit the ball by pressing one of the
positional buttons when the ball flies over it.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1850,7 +1981,7 @@ MACHINE_CONFIG_END
The game will start automatically after turning it on. This Pac Man refuses
to eat dots with his butt, you can only eat them going right-to-left.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1871,7 +2002,7 @@ public:
void tmpacman_state::prepare_display()
{
UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
- UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,16,17,18,11,10,9,8,0,2,3,1,4,5,6,7,12,13,14,15);
+ UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,16,17,18,11,10,9,8,0,2,3,1,4,5,6,7,12,13,14,15) | 0x100;
display_matrix(19, 8, plate, grid);
}
@@ -1954,7 +2085,7 @@ MACHINE_CONFIG_END
- UK: Astro Blaster, published by Hales (Epoch Astro Command was named Scramble)
- Germany: Rambler
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -1974,7 +2105,7 @@ public:
void tmscramb_state::prepare_display()
{
- UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,3,15,2,14,1,13,16,0,12,8,4,9,5,10,6,11,7);
+ UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,18,17,3,15,2,14,1,13,16,0,12,8,4,9,5,10,6,11,7) | 0x400;
display_matrix(17, 10, plate, m_grid);
}
@@ -2055,7 +2186,7 @@ MACHINE_CONFIG_END
- USA: Caveman, published by Tandy
- UK: Cave Man - Jr. Caveman vs Dinosaur, published by Grandstand
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -2076,7 +2207,7 @@ public:
void tcaveman_state::prepare_display()
{
UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7);
- UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,10,11,5,6,7,8,0,9,2,18,17,16,3,15,14,13,12,4,1);
+ UINT32 plate = BITSWAP24(m_plate,23,22,21,20,19,10,11,5,6,7,8,0,9,2,18,17,16,3,15,14,13,12,4,1) | 0x40;
display_matrix(19, 8, plate, grid);
}
@@ -2154,7 +2285,7 @@ MACHINE_CONFIG_END
To start the game, simply press [UP]. Hold a joystick direction to move around.
- NOTE!: MESS external artwork is recommended
+ NOTE!: MAME external artwork is required
***************************************************************************/
@@ -2315,6 +2446,12 @@ ROM_START( bcclimbr )
ROM_END
+ROM_START( tactix )
+ ROM_REGION( 0x0800, "maincpu", 0 )
+ ROM_LOAD( "d557lc-512", 0x0000, 0x0800, CRC(1df738cb) SHA1(15a5de28a3c03e6894d29c56b5b424983569ccf2) )
+ROM_END
+
+
ROM_START( invspace )
ROM_REGION( 0x0400, "maincpu", 0 )
ROM_LOAD( "d552c-054", 0x0000, 0x0400, CRC(913d9c13) SHA1(f20edb5458e54d2f6d4e45e5d59efd87e05a6f3f) )
@@ -2389,25 +2526,27 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY, FULLNAME, FLAGS */
-CONS( 1979, ufombs, 0, 0, ufombs, ufombs, driver_device, 0, "Bambino", "UFO Master-Blaster Station", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1979, ssfball, 0, 0, ssfball, ssfball, driver_device, 0, "Bambino", "Superstar Football", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1979, bmsoccer, 0, 0, bmsoccer, bmsoccer, driver_device, 0, "Bambino", "Kick The Goal Soccer", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1981, bmsafari, 0, 0, bmsafari, bmsafari, driver_device, 0, "Bambino", "Safari (Bambino)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1980, splasfgt, 0, 0, splasfgt, splasfgt, driver_device, 0, "Bambino", "Space Laser Fight", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, driver_device, 0, "Bandai", "Crazy Climber (Bandai)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1980, invspace, 0, 0, invspace, invspace, driver_device, 0, "Epoch", "Invader From Space", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1980, efball, 0, 0, efball, efball, driver_device, 0, "Epoch", "Electronic Football (Epoch)", GAME_SUPPORTS_SAVE )
-CONS( 1981, galaxy2, 0, 0, galaxy2, galaxy2, driver_device, 0, "Epoch", "Galaxy II", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, driver_device, 0, "Epoch", "Astro Command", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1982, edracula, 0, 0, edracula, edracula, driver_device, 0, "Epoch", "Dracula (Epoch)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-
-CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, driver_device, 0, "Mego", "Mini-Vid Break Free", GAME_SUPPORTS_SAVE )
-
-CONS( 1980, tccombat, 0, 0, tccombat, tccombat, driver_device, 0, "Tomy", "Cosmic Combat", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tennis (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, driver_device, 0, "Tomy", "Pac Man (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, driver_device, 0, "Tomy", "Scramble (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1982, tcaveman, 0, 0, tcaveman, tcaveman, driver_device, 0, "Tomy", "Caveman (Tomy)", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
-CONS( 1984, alnchase, 0, 0, alnchase, alnchase, driver_device, 0, "Tomy", "Alien Chase", GAME_SUPPORTS_SAVE | GAME_REQUIRES_ARTWORK )
+CONS( 1979, ufombs, 0, 0, ufombs, ufombs, driver_device, 0, "Bambino", "UFO Master-Blaster Station", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1979, ssfball, 0, 0, ssfball, ssfball, driver_device, 0, "Bambino", "Superstar Football", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1979, bmsoccer, 0, 0, bmsoccer, bmsoccer, driver_device, 0, "Bambino", "Kick The Goal Soccer", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1981, bmsafari, 0, 0, bmsafari, bmsafari, driver_device, 0, "Bambino", "Safari (Bambino)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1980, splasfgt, 0, 0, splasfgt, splasfgt, driver_device, 0, "Bambino", "Space Laser Fight", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1982, bcclimbr, 0, 0, bcclimbr, bcclimbr, driver_device, 0, "Bandai", "Crazy Climber (Bandai)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1980, tactix, 0, 0, tactix, tactix, driver_device, 0, "Castle Toy", "Tactix", MACHINE_SUPPORTS_SAVE )
+
+CONS( 1980, invspace, 0, 0, invspace, invspace, driver_device, 0, "Epoch", "Invader From Space", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1980, efball, 0, 0, efball, efball, driver_device, 0, "Epoch", "Electronic Football (Epoch)", MACHINE_SUPPORTS_SAVE )
+CONS( 1981, galaxy2, 0, 0, galaxy2, galaxy2, driver_device, 0, "Epoch", "Galaxy II", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, astrocmd, 0, 0, astrocmd, astrocmd, driver_device, 0, "Epoch", "Astro Command", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, edracula, 0, 0, edracula, edracula, driver_device, 0, "Epoch", "Dracula (Epoch)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+
+CONS( 1979, mvbfree, 0, 0, mvbfree, mvbfree, driver_device, 0, "Mego", "Mini-Vid Break Free", MACHINE_SUPPORTS_SAVE )
+
+CONS( 1980, tccombat, 0, 0, tccombat, tccombat, driver_device, 0, "Tomy", "Cosmic Combat", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1980, tmtennis, 0, 0, tmtennis, tmtennis, driver_device, 0, "Tomy", "Tennis (Tomy)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, tmpacman, 0, 0, tmpacman, tmpacman, driver_device, 0, "Tomy", "Pac Man (Tomy)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, tmscramb, 0, 0, tmscramb, tmscramb, driver_device, 0, "Tomy", "Scramble (Tomy)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1982, tcaveman, 0, 0, tcaveman, tcaveman, driver_device, 0, "Tomy", "Caveman (Tomy)", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
+CONS( 1984, alnchase, 0, 0, alnchase, alnchase, driver_device, 0, "Tomy", "Alien Chase", MACHINE_SUPPORTS_SAVE | MACHINE_REQUIRES_ARTWORK )
diff --git a/src/mame/drivers/hideseek.c b/src/mame/drivers/hideseek.c
index 36d78070dc9..d17b244a4fb 100644
--- a/src/mame/drivers/hideseek.c
+++ b/src/mame/drivers/hideseek.c
@@ -154,4 +154,4 @@ DRIVER_INIT_MEMBER(hideseek_state,hideseek)
}
-GAME( 200?, hideseek, 0, hideseek, hideseek, hideseek_state, hideseek, ROT0, "<unknown>", "Hide & Seek",GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( 200?, hideseek, 0, hideseek, hideseek, hideseek_state, hideseek, ROT0, "<unknown>", "Hide & Seek",MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mame/drivers/higemaru.c b/src/mame/drivers/higemaru.c
index c6a81cc692b..bf341cbb92e 100644
--- a/src/mame/drivers/higemaru.c
+++ b/src/mame/drivers/higemaru.c
@@ -220,4 +220,4 @@ ROM_START( higemaru )
ROM_END
-GAME( 1984, higemaru, 0, higemaru, higemaru, driver_device, 0, ROT0, "Capcom", "Pirate Ship Higemaru", GAME_SUPPORTS_SAVE )
+GAME( 1984, higemaru, 0, higemaru, higemaru, driver_device, 0, ROT0, "Capcom", "Pirate Ship Higemaru", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/highvdeo.c b/src/mame/drivers/highvdeo.c
index fea755235cf..caf4022d786 100644
--- a/src/mame/drivers/highvdeo.c
+++ b/src/mame/drivers/highvdeo.c
@@ -1639,6 +1639,6 @@ GAMEL( 2000, ciclone, 0, ciclone, tv_tcf, highvdeo_state, ciclone, ROT
GAMEL( 2000, newmcard, 0, newmcard, tv_tcf, driver_device, 0, ROT0, "High Video", "New Magic Card", 0, layout_fashion )
GAMEL( 2000, brasil, 0, brasil, brasil, driver_device, 0, ROT0, "High Video", "Bra$il (Version 3)", 0, layout_fashion )
GAMEL( 2000, fashion, brasil, brasil, fashion, highvdeo_state, fashion, ROT0, "High Video", "Fashion (Version 2.14)", 0, layout_fashion )
-GAMEL( 2000, grancapi, 0, grancapi, brasil, driver_device, 0, ROT0, "High Video", "Gran Capitan (Version 3)", GAME_NOT_WORKING, layout_fashion )
-GAMEL( 2000, magicbom, 0, magicbom, fashion, highvdeo_state, fashion, ROT0, "High Video", "Magic Bomb (Version 1)", GAME_NOT_WORKING, layout_fashion )
+GAMEL( 2000, grancapi, 0, grancapi, brasil, driver_device, 0, ROT0, "High Video", "Gran Capitan (Version 3)", MACHINE_NOT_WORKING, layout_fashion )
+GAMEL( 2000, magicbom, 0, magicbom, fashion, highvdeo_state, fashion, ROT0, "High Video", "Magic Bomb (Version 1)", MACHINE_NOT_WORKING, layout_fashion )
GAMEL( 2000, record, 0, newmcard, tv_tcf, highvdeo_state, record, ROT0, "High Video", "Record (Version 1)", 0, layout_fashion )
diff --git a/src/mame/drivers/hikaru.c b/src/mame/drivers/hikaru.c
index e2dd7b80466..a31e865ba03 100644
--- a/src/mame/drivers/hikaru.c
+++ b/src/mame/drivers/hikaru.c
@@ -743,9 +743,9 @@ ROM_START( sgnascar )
ROM_PARAMETER( ":rom_board:key", "56dedf33" )
ROM_END
-GAME( 2000, hikaru, 0, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Hikaru Bios", GAME_NO_SOUND|GAME_NOT_WORKING|GAME_IS_BIOS_ROOT )
-GAME( 1999, braveff, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Brave Fire Fighters", GAME_NO_SOUND|GAME_NOT_WORKING )
-GAME( 2000, airtrix, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Air Trix", GAME_NO_SOUND|GAME_NOT_WORKING )
-GAME( 2000, sgnascar, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega / Electronic Arts", "NASCAR Racing", GAME_NO_SOUND|GAME_NOT_WORKING )
-GAME( 2001, pharrier, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Planet Harriers", GAME_NO_SOUND|GAME_NOT_WORKING )
-GAME( 2001, podrace, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Star Wars Pod Racer", GAME_NO_SOUND|GAME_NOT_WORKING )
+GAME( 2000, hikaru, 0, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Hikaru Bios", MACHINE_NO_SOUND|MACHINE_NOT_WORKING|MACHINE_IS_BIOS_ROOT )
+GAME( 1999, braveff, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Brave Fire Fighters", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+GAME( 2000, airtrix, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Air Trix", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+GAME( 2000, sgnascar, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega / Electronic Arts", "NASCAR Racing", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+GAME( 2001, pharrier, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Planet Harriers", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
+GAME( 2001, podrace, hikaru, hikaru, hikaru, driver_device, 0, ROT0, "Sega", "Star Wars Pod Racer", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/himesiki.c b/src/mame/drivers/himesiki.c
index bcc4f532a6c..12f487b3b97 100644
--- a/src/mame/drivers/himesiki.c
+++ b/src/mame/drivers/himesiki.c
@@ -352,4 +352,4 @@ ROM_START( himesiki )
ROM_LOAD16_BYTE( "14.8c", 0x020001, 0x010000, CRC(8103a207) SHA1(0dde8a0aaf2618d9c1589f35841db210439d0388) )
ROM_END
-GAME( 1989, himesiki, 0, himesiki, himesiki, driver_device, 0, ROT90, "Hi-Soft", "Himeshikibu (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1989, himesiki, 0, himesiki, himesiki, driver_device, 0, ROT90, "Hi-Soft", "Himeshikibu (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hitme.c b/src/mame/drivers/hitme.c
index 60ab820b532..7f285a41cc5 100644
--- a/src/mame/drivers/hitme.c
+++ b/src/mame/drivers/hitme.c
@@ -688,9 +688,9 @@ ROM_END
*
*************************************/
-GAME( 1976, hitme, 0, hitme, hitme, driver_device, 0, ROT0, "RamTek", "Hit Me (set 1)", GAME_SUPPORTS_SAVE ) // 05/1976
-GAME( 1976, hitme1, hitme, hitme, hitme, driver_device, 0, ROT0, "RamTek", "Hit Me (set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1976, m21, hitme, hitme, hitme, driver_device, 0, ROT0, "Mirco Games", "21 (Mirco)", GAME_SUPPORTS_SAVE ) // 08/1976, licensed?
-GAME( 1978, super21, 0, hitme, super21, driver_device, 0, ROT0, "Mirco Games", "Super Twenty One", GAME_SUPPORTS_SAVE )
-GAMEL(1976, barricad, 0, barricad, barricad, driver_device, 0, ROT0, "RamTek", "Barricade", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_barricad )
-GAMEL(1976, brickyrd, barricad, barricad, barricad, driver_device, 0, ROT0, "RamTek", "Brickyard", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_barricad )
+GAME( 1976, hitme, 0, hitme, hitme, driver_device, 0, ROT0, "Ramtek", "Hit Me (set 1)", MACHINE_SUPPORTS_SAVE ) // 05/1976
+GAME( 1976, hitme1, hitme, hitme, hitme, driver_device, 0, ROT0, "Ramtek", "Hit Me (set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1976, m21, hitme, hitme, hitme, driver_device, 0, ROT0, "Mirco Games", "21 (Mirco)", MACHINE_SUPPORTS_SAVE ) // 08/1976, licensed?
+GAME( 1978, super21, 0, hitme, super21, driver_device, 0, ROT0, "Mirco Games", "Super Twenty One", MACHINE_SUPPORTS_SAVE )
+GAMEL(1976, barricad, 0, barricad, barricad, driver_device, 0, ROT0, "Ramtek", "Barricade", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_barricad )
+GAMEL(1976, brickyrd, barricad, barricad, barricad, driver_device, 0, ROT0, "Ramtek", "Brickyard", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_barricad )
diff --git a/src/mame/drivers/hitpoker.c b/src/mame/drivers/hitpoker.c
index d53bd006204..19b4cf59d7d 100644
--- a/src/mame/drivers/hitpoker.c
+++ b/src/mame/drivers/hitpoker.c
@@ -530,4 +530,4 @@ ROM_START( hitpoker )
ROM_LOAD16_BYTE( "u45.bin", 0x80000, 0x40000, CRC(e65b3e52) SHA1(c0c1a360a4a1823bf71c0a4105ff41f4102862e8) ) // the first part of these 2 is almost empty as the standard gfx are 4bpp
ROM_END
-GAME( 1997, hitpoker, 0, hitpoker, hitpoker, hitpoker_state, hitpoker, ROT0, "Accept Ltd.", "Hit Poker (Bulgaria)", GAME_NOT_WORKING )
+GAME( 1997, hitpoker, 0, hitpoker, hitpoker, hitpoker_state, hitpoker, ROT0, "Accept Ltd.", "Hit Poker (Bulgaria)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/hk68v10.c b/src/mame/drivers/hk68v10.c
new file mode 100644
index 00000000000..a5dd838c1d6
--- /dev/null
+++ b/src/mame/drivers/hk68v10.c
@@ -0,0 +1,383 @@
+// license:BSD-3-Clause
+// copyright-holders:Joakim Larsson Edstrom
+/***************************************************************************
+ *
+ * Heurikon HK68/V10 6U SBC driver, initially derived from hk68v10.c
+ *
+ * 21/08/2015
+ *
+ * I baught this board from http://www.retrotechnology.com without documentation.
+ * It has a Motorola 68010 CPU @ 10MHz and two 2764 EPROMS with HBUG firmware
+ * The board is very populated and suitable to run a real server OS supported by
+ * FPU,MMU and DMA controller chips. The firmware supports SCSI, Centronics/FPI
+ * and a serial port. I have not found so much on the FPI interface yet and it is
+ * possibly Heurikon specific. There is also a Heurikon Multibus board called
+ * HK68/M10 for which I might add support from specs, however would need a ROM
+ * to verify.
+ *
+ * ||
+ * || ||
+ * ||||--||
+ * ||||--||
+ * || ||____________________________________________________________ ___
+ * || | | | 12 PALs 68/V-... | | | | | |_| |
+ * || | | 2 x | |74 |74 |74 |74 | | | |
+ * || | | 74273 | VS4-01 VM4-00 | 244 573 645 645 | | |
+ * \==||| |SCSI | | VS3-00 VM3-03 | | | | | | | |
+ * ||| | | | VS2-01 VM2-02 |___|___|___|___| | | |
+ * || |NCR | | VS1-00 VM1-01 | | | | | | |
+ * || | 8530| 2 x | VBX-00 VDB-00 |74 |74 |74 | | |VME|
+ * || | | 74245 | VI1-00 VI2-00 | 244 641 245 | | |
+ * || | | | (90 deg ccw) | | | | | |P1 |
+ * SCSI || |_____| |_____________________|___|___|___| | | |
+ * port || | | _________ _________________________________ | | |
+ * || | | | || |74 |PAL | | | | |
+ * || | | | || 5 x | 244 MP2| 2 x | | | |
+ * || |CIO | | MC68881 || 74373 | | -00| 74646| | | |
+ * || |paral| | FPU || | | | | | | |
+ * || |Z8536| |_________||_________________|_ _| | | |_| |
+ * ||| | | | | | | ------------ |___|
+ * /==||| | | | | | | | 3 PALs | |
+ * FSM || | | | MC68010 | MC68451 | MC68450 | | MP1-00 | |
+ * 1234 || | | | CPU | MMU | DMA | | MX2-00 | |
+ * LEDs || |-----| |_________|__________|_________|__| MX1-01 |---|
+ * || | | ____ ____ ---| |__________|74 |
+ * \==||| | | | | | | |74| 4 x | 3 PALs |145|
+ * ||| |SCC | | | | | |804 74245 | CS3-00 |___|
+ * FPI || |seria| |U12 | |U23 | | | | CS2-00 | |
+ * paralell |Z8530A |HBUG| |HBUG| | | | CS1-00 | |___
+ * port || | | | | | | ---_---------------|__________| _| |
+ * || | | | | | | |MTTLDL|MDLDM| 2 x |___________ | | |
+ * ||| | | |____|_|____|_|____40|TTL75|74280| | | | |
+ * /==||| | || |19. | | | | | |_____| | | | |
+ * \==||| |_____||75 |6608|16 |20 |74|74| ______| 9 x 4 | | | |
+ * ||| +--------+|173| MHz| MHz | MHz| 74 08| | | RAM chips| | |VME|
+ * || | ||___|____|_____|____|__|__||74 74 | on SIL | | | |
+ * || | 2 x || | | |259|257 boards | | |P2 |
+ * || | SIL || 12 PALs 90 deg ccw|74| -______- | | | |
+ * || | boards || |240 | | | | | | |
+ * || | with 2 || BER-00 FPI-01 | | |74 74 | | | | |
+ * Serial|| | DIP16 || AC4-00 ARB-01 |__|___|138|257 | | | |
+ * port || | surf || AC3-00 INT-00 |______| | | | |
+ * || | mounted|| AC2-01 IAK-00 | | | | | | |
+ * || | chips || AC1-01 PAS-01 |74 |74| | | | |
+ * || | each || RFS-01 |590|257 | | | |
+ * ||| | || RCT-01 | | | | |_| |
+ * /==||| +--------+|__________________________|___|__|__________| |___|
+ * || ||------------------------------------------------------------+-+
+ * ||||--||
+ * ||||--||
+ * ||
+ *
+ * History of Heurikon
+ *---------------------
+ * The company was founded 1972 as cellar company. Heurikon was aquired
+ * 1989 by Computer Products, 1990 by Artesyn and finally in 2005 by Emerson
+ * Electric who consilidated it fully by 2009 and closed the office.
+ *
+ * Misc links about Heurikon and this board:
+ * http://www.heurikon.com/
+ * http://www.nytimes.com/1992/01/07/business/company-news-briefs.html
+ * http://bitsavers.informatik.uni-stuttgart.de/pdf/heurikon/brochures/HK68_V10_Brochure.pdf
+ * http://bitsavers.informatik.uni-stuttgart.de/pdf/heurikon/Heurikon_UNIX_System_V_and_V.2_Reference_Guide_Apr87.pdf
+ * From http://www.iri.tudelft.nl/~sfwww/manuals/OS9/PDF/9OM_30.pdf:
+ * "In most cases, you will only need to change the device base address. Some hardware implementations of the MC68451
+ * (specifically the Heurikon M10/V10 CPU's) use the DMA portion of the Address Space Table (AST) instead of the MPU
+ * section which is normally used. You should change the offsets for the AST registers to match your hardware. The
+ * ssmdefs.a file has conditional directives to accommodate either the standard or Heurikon style implementations."
+ *
+ * Address Map from the UNIX Ref Guide
+ * --------------------------------------------------------------------------
+ * Address Range Memory Space (physical) Notes
+ * --------------------------------------------------------------------------
+ * 0xffffff (top of memory)
+ * 0xffc200 0xffc220 Sky FFP 68881 FPU
+ * 0xff8000 ... MCT Reel-to-reel tape (V10) VME
+ * 0xff0000 0xff0100 Tapemaster(00B0,00B1) Reel-to-reel tape (M10) Multibus
+ * Ethernet(0010,0011)
+ * 0xff0000 (base of bus I/O)
+ *
+ * 0xfea000 SCC8530 device
+ * 0xfe9000 offset 6 seems also to be 2 access registers, ie register offset + data pairs
+ * 0xfe8000 offset E reading single byte
+ * 0xfe4000 front LED:s? or move ROM from 0x0 to 0xfc0000...
+ * 0xfe2000 cleared
+ * 0xfe0000 HK68 On-card I/O MMU, DMAC, SCC, SCSI
+ * 0xfc0000 HK68 ROM (128K) Hbug monitor
+ * 0xf00000 (reserved)
+ * (shared memory and logical area
+ * for shared text.)
+ * 0x800000 (Twilight Zone) (top of /dev/mem)
+ * 0x7c0000 (reserved)
+ * 0x780000 8 Chnl serial Expn(1-4) (CDC)
+ * HK68 (1-15) VRTX
+ * MLZ-93 (1-4) CP/M Shell
+ * 0x700000
+ * (open)
+ * 0x*00000 (maxmeml)
+ * RAM (bus) (optional)
+ * 0x200000 (top of 2 meg RAM)
+ * RAM (bus) (optional)
+ * 0x100000 (top of 1 meg RAM)
+ * User RAM
+ * 0x001000 UNIX Kernel
+ * Exception Vectors
+ * 0x000000 (bottom of memory)
+ * --------------------------------------------------------------------------
+ *
+ * Interrupt sources M10/V10
+ * ----------------------------------------------------------
+ * Description Device Lvl IRQ VME board
+ * /Board Vector Address
+ * ----------------------------------------------------------
+ * On board Sources M10/V10
+ *
+ * Off board Sources (other VME boards)
+ * EXOS Ethernet 5 4
+ * TapeMaster Reel-to-Reel Tape 3
+ * MCT Reel-to-Reel Tape 5
+ * CDC MB1031 Serial Expansion 2 2
+ * IT 2190 SMD Interface 1 3
+ * IT 3200 SMD Interface 3
+ * ----------------------------------------------------------
+ *
+ * DMAC Channel Assignments
+ * ----------------------------------------------------------
+ * Channel M10 V10
+ * ----------------------------------------------------------
+ * 0 SCSI SCSI
+ * 1 Streamer (P3) n/a
+ * 2 n/a n/a
+ * 3 SBX-FDIO n/a
+ * ----------------------------------------------------------
+ *
+ * TODO:
+ * - Dump the ROMs (DONE)
+ * - Setup a working address map (DONE)
+ * - Fix terminal for HBUG (DONE)
+ * - Add VME bus driver
+ * - Add DMA/MMU devices
+ * - Add CIO port
+ * - ADD SCSI controller device
+ * - dump PALs and describe descrete logic
+ * - Setup BAUD generation correctly, (eg find that x32 divider)
+ * it is a multilayer PCB so very hard to trace.
+ * - Add LED:s
+ * - Add Jumpers and strap areas
+ * - Find and Boot Heurikon Unix from a SCSI device
+ * - Support that optional 68881 FPU
+ *
+ ****************************************************************************/
+
+#include "emu.h"
+#include "cpu/m68000/m68000.h"
+#include "machine/z80scc.h"
+#include "bus/rs232/rs232.h"
+#include "machine/clock.h"
+
+#define VERBOSE 0
+
+#define LOG(x) do { if (VERBOSE) logerror x; } while (0)
+
+#if VERBOSE == 2
+#define logerror printf
+#endif
+
+#define BAUDGEN_CLOCK XTAL_19_6608MHz /* Raltron */
+/*
+ */
+#define SCC_CLOCK (BAUDGEN_CLOCK / 128) /* This gives prompt at the RS232 terminal device (9600) */
+//#define SCC_CLOCK (BAUDGEN_CLOCK / 4) /* This is correct giving 4.9152MHz as documentation says */
+class hk68v10_state : public driver_device
+{
+public:
+hk68v10_state(const machine_config &mconfig, device_type type, const char *tag) :
+ driver_device (mconfig, type, tag),
+ m_maincpu (*this, "maincpu")
+ ,m_sccterm(*this, "scc")
+// ,m_cart(*this, "exp_rom1")
+{
+}
+
+DECLARE_READ16_MEMBER (bootvect_r);
+DECLARE_WRITE16_MEMBER (bootvect_w);
+DECLARE_READ16_MEMBER (vme_a24_r);
+DECLARE_WRITE16_MEMBER (vme_a24_w);
+DECLARE_READ16_MEMBER (vme_a16_r);
+DECLARE_WRITE16_MEMBER (vme_a16_w);
+virtual void machine_start ();
+virtual void machine_reset ();
+DECLARE_WRITE_LINE_MEMBER (write_sccterm_clock);
+
+protected:
+
+private:
+required_device<cpu_device> m_maincpu;
+required_device<scc8530_device> m_sccterm;
+
+// Pointer to System ROMs needed by bootvect_r and masking RAM buffer for post reset accesses
+ UINT16 *m_sysrom;
+ UINT16 m_sysram[4];
+};
+
+static ADDRESS_MAP_START (hk68v10_mem, AS_PROGRAM, 16, hk68v10_state)
+ADDRESS_MAP_UNMAP_HIGH
+AM_RANGE (0x000000, 0x000007) AM_ROM AM_READ (bootvect_r) /* ROM mirror just durin reset */
+AM_RANGE (0x000000, 0x000007) AM_RAM AM_WRITE (bootvect_w) /* After first write we act as RAM */
+AM_RANGE (0x000008, 0x1fffff) AM_RAM /* 2 Mb RAM */
+AM_RANGE (0xFC0000, 0xFC3fff) AM_ROM /* System EPROM Area 16Kb HBUG */
+AM_RANGE (0xFC4000, 0xFDffff) AM_ROM /* System EPROM Area an additional 112Kb for System ROM */
+AM_RANGE (0xFE9000, 0xFE9009) AM_RAM //AM_DEVREADWRITE8("scc", scc8530_device, ba_cd_r, ba_cd_w, 0xffff) /* Z80-PIO? */
+AM_RANGE (0xFEA000, 0xFEA001) AM_DEVREADWRITE8("scc", scc8530_device, ca_r, ca_w, 0xff00) /* Dual serial port Z80-SCC */
+AM_RANGE (0xFEA002, 0xFEA003) AM_DEVREADWRITE8("scc", scc8530_device, cb_r, cb_w, 0xff00) /* Dual serial port Z80-SCC */
+AM_RANGE (0xFEA004, 0xFEA005) AM_DEVREADWRITE8("scc", scc8530_device, da_r, da_w, 0xff00) /* Dual serial port Z80-SCC */
+AM_RANGE (0xFEA006, 0xFEA007) AM_DEVREADWRITE8("scc", scc8530_device, db_r, db_w, 0xff00) /* Dual serial port Z80-SCC */
+//AM_RANGE(0x100000, 0xfeffff) AM_READWRITE(vme_a24_r, vme_a24_w) /* VMEbus Rev B addresses (24 bits) - not verified */
+//AM_RANGE(0xff0000, 0xffffff) AM_READWRITE(vme_a16_r, vme_a16_w) /* VMEbus Rev B addresses (16 bits) - not verified */
+ADDRESS_MAP_END
+
+/* Input ports */
+static INPUT_PORTS_START (hk68v10)
+INPUT_PORTS_END
+
+/* Start it up */
+void hk68v10_state::machine_start ()
+{
+ LOG (("%" I64FMT "d %s\n", m_maincpu->total_cycles(), __func__));
+
+ /* Setup pointer to bootvector in ROM for bootvector handler bootvect_r */
+ m_sysrom = (UINT16*)(memregion ("maincpu")->base () + 0x0fc0000);
+}
+
+/* Support CPU resets
+
+ TODO: Investigate why the user need two 'softreset' commands for the below to work. Eg F3 + F11 + F3 + F11
+ If only one 'softreset' is given the reset PC gets the RAM content, not the intended ROM vector.
+ Race conditions? Wrong call order in memory system? Debugger prefetch accesses? Better way to to this?
+*/
+void hk68v10_state::machine_reset ()
+{
+ LOG (("%" I64FMT "d %s\n", m_maincpu->total_cycles(), __func__));
+
+ /* Reset pointer to bootvector in ROM for bootvector handler bootvect_r */
+ if (m_sysrom == &m_sysram[0]) /* Condition needed because memory map is not setup first time */
+ m_sysrom = (UINT16*)(memregion ("maincpu")->base () + 0x0fc0000);
+}
+
+/* Boot vector handler, the PCB hardwires the first 8 bytes from 0xfc0000 to 0x0 at reset*/
+/*
+ Right after HBUG reset the bootvector is masked by RAM:
+ FC001C: move.w #$700, $fe4000.l
+ FC0024: move.l #$0, $0.l # <- zeroing the reset vector
+ FC002E: move.l #$0, $4.l # There is for sure some hardware mapping going in here
+*/
+READ16_MEMBER (hk68v10_state::bootvect_r){
+ //LOG (("bootvect_r %s\n", m_sysrom != &m_sysram[0] ? "as reset" : "as swapped"));
+ return m_sysrom[offset];
+}
+
+WRITE16_MEMBER (hk68v10_state::bootvect_w){
+ LOG (("bootvect_w offset %08x, mask %08x, data %04x\n", offset, mem_mask, data));
+ m_sysram[offset % sizeof(m_sysram)] &= ~mem_mask;
+ m_sysram[offset % sizeof(m_sysram)] |= (data & mem_mask);
+ m_sysrom = &m_sysram[0]; // redirect all upcomming accesses to masking RAM until reset.
+}
+
+#if 0
+/* Dummy VME access methods until the VME bus device is ready for use */
+READ16_MEMBER (hk68v10_state::vme_a24_r){
+ LOG (("vme_a24_r\n"));
+ return (UINT16) 0;
+}
+
+WRITE16_MEMBER (hk68v10_state::vme_a24_w){
+ LOG (("vme_a24_w\n"));
+}
+
+READ16_MEMBER (hk68v10_state::vme_a16_r){
+ LOG (("vme_16_r\n"));
+ return (UINT16) 0;
+}
+
+WRITE16_MEMBER (hk68v10_state::vme_a16_w){
+ LOG (("vme_a16_w\n"));
+}
+#endif
+
+/*
+ * Serial port clock source depends on the CPU clock and divider settings
+ * HBUG has a control byte that needs to be patched accordingly:
+ *
+ * CPU clock SCC clock Baud rate offset 0x0b value
+ * 10 Mhz 4.9152MHz 9600 15
+ * 10 Mhz 4.9152MHz 19200 55
+ * 12 Mhz 4.9152MHz 9600 16
+ * 12 Mhz 4.9152MHz 19200 56
+ *
+ * Configuration word detail:
+ * D15-D8 reserved ( = 0 )
+ * D7(MSB) = 0
+ * D6 = 0 for console default 9600 baud
+ * D6 = 1 for console default 19,200 baud
+ * D5,D4,D3,D2 = 0101 for 4.9152 Mhz SCC clock
+ * D1,DO
+ * 01 for 10 Mhz MPU clock
+ * D1,DO = 10 for 12 Mhz MPU clock
+ *
+ * Original HBUG configuration word: 0x003D = 0000 0000 0011 1101
+ *
+ */
+WRITE_LINE_MEMBER (hk68v10_state::write_sccterm_clock){
+ m_sccterm->txca_w (state);
+ m_sccterm->rxca_w (state);
+}
+
+/*
+ * Machine configuration
+ */
+static MACHINE_CONFIG_START (hk68v10, hk68v10_state)
+/* basic machine hardware */
+MCFG_CPU_ADD ("maincpu", M68010, XTAL_10MHz)
+MCFG_CPU_PROGRAM_MAP (hk68v10_mem)
+
+/* Terminal Port config */
+MCFG_SCC8530_ADD("scc", XTAL_4MHz, 0, 0, 0, 0 )
+MCFG_Z80SCC_OUT_TXDA_CB(DEVWRITELINE("rs232trm", rs232_port_device, write_txd))
+MCFG_Z80SCC_OUT_DTRA_CB(DEVWRITELINE("rs232trm", rs232_port_device, write_dtr))
+MCFG_Z80SCC_OUT_RTSA_CB(DEVWRITELINE("rs232trm", rs232_port_device, write_rts))
+
+MCFG_RS232_PORT_ADD ("rs232trm", default_rs232_devices, "terminal")
+MCFG_RS232_RXD_HANDLER (DEVWRITELINE ("scc", scc8530_device, rxa_w))
+MCFG_RS232_CTS_HANDLER (DEVWRITELINE ("scc", scc8530_device, ctsa_w))
+
+MCFG_DEVICE_ADD ("sccterm_clock", CLOCK, SCC_CLOCK)
+MCFG_CLOCK_SIGNAL_HANDLER (WRITELINE (hk68v10_state, write_sccterm_clock))
+
+MACHINE_CONFIG_END
+
+/* ROM definitions */
+ROM_START (hk68v10)
+ROM_REGION (0x1000000, "maincpu", 0)
+
+ROM_LOAD16_BYTE ("hk68kv10U23.bin", 0xFC0001, 0x2000, CRC (632aa026) SHA1 (f2b1ed0cc38dfbeb1602c013e00757015400720d))
+ROM_LOAD16_BYTE ("hk68kv10U12.bin", 0xFC0000, 0x2000, CRC (f2d688e9) SHA1 (e68699965645f0ce53de47625163c3eb02c8b727))
+/*
+ * System ROM information
+ *
+ * The ROMs contains HBUG v1.8, known commands from different sources:
+ *
+ * 'uc' Print HK68 Configuration
+ * 'um' Perform RAM test
+ * 'dm adrs' Display Memory
+ * 'sb adrs' Substitute Byte at adrs
+ * 'c adrs' Call Routine at adrs
+ * 'bw' Boot from Winchester
+ * 'bf' Boot from floppy (MIO, SBX-FDIO)
+ * 'bsf' Boot from floppy (SCSI)
+ *
+ */
+ROM_END
+
+/* Driver */
+/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
+COMP (1985, hk68v10, 0, 0, hk68v10, hk68v10, driver_device, 0, "Heurikon Corporation", "HK68/V10", MACHINE_NO_SOUND_HW | MACHINE_TYPE_COMPUTER )
diff --git a/src/mame/drivers/hnayayoi.c b/src/mame/drivers/hnayayoi.c
index 8865a03dca3..576340f9d4a 100644
--- a/src/mame/drivers/hnayayoi.c
+++ b/src/mame/drivers/hnayayoi.c
@@ -673,6 +673,6 @@ DRIVER_INIT_MEMBER(hnayayoi_state,hnfubuki)
}
-GAME( 1987, hnayayoi, 0, hnayayoi, hnayayoi, driver_device, 0, ROT0, "Dyna Electronics", "Hana Yayoi (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, hnfubuki, hnayayoi, hnfubuki, hnfubuki, hnayayoi_state, hnfubuki, ROT0, "Dynax", "Hana Fubuki [BET] (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, untoucha, 0, untoucha, untoucha, driver_device, 0, ROT0, "Dynax", "Untouchable (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1987, hnayayoi, 0, hnayayoi, hnayayoi, driver_device, 0, ROT0, "Dyna Electronics", "Hana Yayoi (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, hnfubuki, hnayayoi, hnfubuki, hnfubuki, hnayayoi_state, hnfubuki, ROT0, "Dynax", "Hana Fubuki [BET] (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, untoucha, 0, untoucha, untoucha, driver_device, 0, ROT0, "Dynax", "Untouchable (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hng64.c b/src/mame/drivers/hng64.c
index 2d55b0e02d5..7a5d73d7b93 100644
--- a/src/mame/drivers/hng64.c
+++ b/src/mame/drivers/hng64.c
@@ -1,9 +1,8 @@
// license:LGPL-2.1+
-// copyright-holders:David Haywood, Angelo Salese, ElSemi, Andrew Gardner, Andrew Zaferakis
+// copyright-holders:David Haywood, Angelo Salese, ElSemi, Andrew Gardner
/* Hyper NeoGeo 64
Driver by David Haywood, ElSemi, Andrew Gardner and Angelo Salese
-Rasterizing code provided in part by Andrew Zaferakis.
Notes:
@@ -503,20 +502,6 @@ READ8_MEMBER(hng64_state::hng64_com_share_r)
return m_com_shared[offset];
}
-WRITE32_MEMBER(hng64_state::hng64_pal_w)
-{
- UINT32 *paletteram = m_generic_paletteram_32;
- int r, g, b/*, a*/;
-
- COMBINE_DATA(&paletteram[offset]);
-
- b = ((paletteram[offset] & 0x000000ff) >>0);
- g = ((paletteram[offset] & 0x0000ff00) >>8);
- r = ((paletteram[offset] & 0x00ff0000) >>16);
- //a = ((paletteram[offset] & 0xff000000) >>24);
- m_palette->set_pen_color(offset,rgb_t(r,g,b));
-}
-
READ32_MEMBER(hng64_state::hng64_sysregs_r)
{
UINT16 rtc_addr;
@@ -545,7 +530,7 @@ READ32_MEMBER(hng64_state::hng64_sysregs_r)
//case 0x108c:
case 0x1104: return m_irq_level;
case 0x111c:
- printf("Read to IRQ ACK?\n");
+ //printf("Read to IRQ ACK?\n");
break;
case 0x1254: return 0x00000000; //dma status, 0x800
}
@@ -608,7 +593,7 @@ WRITE32_MEMBER(hng64_state::hng64_sysregs_w)
break;
//0x110c global irq mask?
/* irq ack */
- case 0x111c: m_irq_pending &= ~m_sysregs[offset]; m_set_irq(0x0000); break;
+ case 0x111c: m_irq_pending &= ~m_sysregs[offset]; set_irq(0x0000); break;
case 0x1204: m_dma_start = m_sysregs[offset]; break;
case 0x1214: m_dma_dst = m_sysregs[offset]; break;
case 0x1224:
@@ -827,7 +812,7 @@ WRITE32_MEMBER(hng64_state::tcram_w)
m_screen_dis = 0;
visarea.set(min_x, min_x + max_x - 1, min_y, min_y + max_y - 1);
- m_screen->configure(HTOTAL, VTOTAL, visarea, m_screen->frame_period().attoseconds );
+ m_screen->configure(HTOTAL, VTOTAL, visarea, m_screen->frame_period().attoseconds() );
}
}
@@ -931,7 +916,7 @@ READ16_MEMBER(hng64_state::main_sound_comms_r)
case 0x06:
return sound_latch[1];
default:
- printf("%08x R\n",offset*2);
+ //printf("%08x R\n",offset*2);
break;
}
return 0;
@@ -950,10 +935,10 @@ WRITE16_MEMBER(hng64_state::main_sound_comms_w)
case 0x08:
m_audiocpu->set_input_line(5, (data & 1) ? ASSERT_LINE : CLEAR_LINE);
if(data & 0xfe)
- printf("IRQ send %02x?\n",data);
+ //printf("IRQ send %02x?\n",data);
break;
default:
- printf("%02x %04x\n",offset*2,data);
+ //printf("%02x %04x\n",offset*2,data);
break;
}
}
@@ -983,7 +968,7 @@ static ADDRESS_MAP_START( hng_map, AS_PROGRAM, 32, hng64_state )
AM_RANGE(0x20010000, 0x20010013) AM_RAM AM_SHARE("spriteregs")
AM_RANGE(0x20100000, 0x2017ffff) AM_RAM_WRITE(hng64_videoram_w) AM_SHARE("videoram") // Tilemap
AM_RANGE(0x20190000, 0x20190037) AM_RAM_WRITE(hng64_vregs_w) AM_SHARE("videoregs")
- AM_RANGE(0x20200000, 0x20203fff) AM_RAM_WRITE(hng64_pal_w) AM_SHARE("paletteram")
+ AM_RANGE(0x20200000, 0x20203fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x20208000, 0x2020805f) AM_READWRITE(tcram_r, tcram_w) AM_SHARE("tcram") // Transition Control
AM_RANGE(0x20300000, 0x203001ff) AM_WRITE16(dl_w,0xffffffff) // 3d Display List
AM_RANGE(0x20300200, 0x20300203) AM_WRITE(dl_upload_w) // 3d Display List Upload
@@ -1315,7 +1300,6 @@ static const gfx_layout hng64_16x16x4_tilelayout =
32*32
};
-
static const gfx_layout hng64_16x16x8_tilelayout =
{
16,16,
@@ -1369,9 +1353,7 @@ static const gfx_layout hng64_texlayout =
texlayout_yoffset
};
-
static GFXDECODE_START( hng64 )
-
/* tilemap tiles */
GFXDECODE_ENTRY( "scrtile", 0, hng64_8x8x4_tilelayout, 0x0, 0x100 )
GFXDECODE_ENTRY( "scrtile", 0, hng64_8x8x8_tilelayout, 0x0, 0x10 )
@@ -1389,12 +1371,11 @@ static void hng64_reorder( UINT8* gfxregion, size_t gfxregionsize)
{
// by default 2 4bpp tiles are stored in each 8bpp tile, this makes decoding in MAME harder than it needs to be
// reorder them
- int i;
UINT8 tilesize = 4*8; // 4 bytes per line, 8 lines
dynamic_buffer buffer(gfxregionsize);
- for (i=0;i<gfxregionsize/2;i+=tilesize)
+ for (int i = 0; i < gfxregionsize/2; i += tilesize)
{
memcpy(&buffer[i*2+tilesize], gfxregion+i, tilesize);
memcpy(&buffer[i*2], gfxregion+i+(gfxregionsize/2), tilesize);
@@ -1408,7 +1389,6 @@ DRIVER_INIT_MEMBER(hng64_state,hng64_reorder_gfx)
hng64_reorder(memregion("scrtile")->base(), memregion("scrtile")->bytes());
}
-
DRIVER_INIT_MEMBER(hng64_state,hng64)
{
/* 1 meg of virtual address space for the com cpu */
@@ -1460,8 +1440,7 @@ DRIVER_INIT_MEMBER(hng64_state,hng64_shoot)
DRIVER_INIT_CALL(hng64);
}
-
-void hng64_state::m_set_irq(UINT32 irq_vector)
+void hng64_state::set_irq(UINT32 irq_vector)
{
/*
TODO:
@@ -1489,8 +1468,7 @@ void hng64_state::m_set_irq(UINT32 irq_vector)
if(m_irq_pending)
{
- int i;
- for(i=0;i<31;i++)
+ for(int i = 0; i < 31; i++)
{
if(m_irq_pending & 1 << i)
{
@@ -1511,15 +1489,14 @@ TIMER_DEVICE_CALLBACK_MEMBER(hng64_state::hng64_irq)
switch(scanline)
{
- case 224*2: m_set_irq(0x0001); break; // lv 0 vblank irq
-// case 0*2: m_set_irq(0x0002); break; // lv 1
-// case 32*2: m_set_irq(0x0008); break; // lv 2
-// case 64*2: m_set_irq(0x0008); break; // lv 2
- case 128*2: m_set_irq(0x0800); break; // lv 11 network irq?
+ case 224*2: set_irq(0x0001); break; // lv 0 vblank irq
+// case 0*2: set_irq(0x0002); break; // lv 1
+// case 32*2: set_irq(0x0008); break; // lv 2
+// case 64*2: set_irq(0x0008); break; // lv 2
+ case 128*2: set_irq(0x0800); break; // lv 11 network irq?
}
}
-
void hng64_state::machine_start()
{
/* set the fastest DRC options */
@@ -1533,20 +1510,14 @@ void hng64_state::machine_start()
m_comm_rom = memregion("user2")->base();
m_comm_ram = auto_alloc_array(machine(),UINT8,0x10000);
-
for (int i = 0; i < 0x38 / 4; i++)
{
m_videoregs[i] = 0xdeadbeef;
}
-
}
-
void hng64_state::machine_reset()
{
- // "Display List" init - ugly
-// m_activeBuffer = 0;
-
/* For simulate MCU stepping */
m_mcu_fake_time = 0;
m_mcu_en = 0;
@@ -1566,9 +1537,6 @@ static MACHINE_CONFIG_START(hng64, hng64_state)
MCFG_CPU_PROGRAM_MAP(hng_map)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", hng64_state, hng64_irq, "screen", 0, 1)
-
-
-
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_DEVICE_ADD("rtc", MSM6242, XTAL_32_768kHz)
@@ -1581,12 +1549,13 @@ static MACHINE_CONFIG_START(hng64, hng64_state)
MCFG_SCREEN_VBLANK_DRIVER(hng64_state, screen_eof_hng64)
MCFG_PALETTE_ADD("palette", 0x1000)
+ MCFG_PALETTE_FORMAT(XRGB)
MCFG_FRAGMENT_ADD( hng64_audio )
MCFG_FRAGMENT_ADD( hng64_network )
-
MACHINE_CONFIG_END
+
#define ROM_LOAD_HNG64_BIOS(bios,name,offset,length,hash) \
ROMX_LOAD(name, offset, length, hash, ROM_BIOS(bios+1)) /* Note '+1' */
@@ -1596,11 +1565,11 @@ MACHINE_CONFIG_END
ROM_SYSTEM_BIOS( 0, "japan", "Japan" ) \
ROM_LOAD_HNG64_BIOS( 0, "brom1.bin", 0x00000, 0x080000, CRC(a30dd3de) SHA1(3e2fd0a56214e6f5dcb93687e409af13d065ea30) ) \
ROM_SYSTEM_BIOS( 1, "us", "USA" ) \
- ROM_LOAD_HNG64_BIOS( 1, "bios_us.bin", 0x00000, 0x080000, CRC(ab5948d6) SHA1(f8b940c1ae5ce2d3b2cd0c9bfaf6e5b063cec06e) ) \
+ ROM_LOAD_HNG64_BIOS( 1, "bios_us.bin", 0x00000, 0x080000, CRC(ab5948d6) SHA1(f8b940c1ae5ce2d3b2cd0c9bfaf6e5b063cec06e) ) \
ROM_SYSTEM_BIOS( 2, "export", "Export" ) \
- ROM_LOAD_HNG64_BIOS( 2, "bios_export.bin", 0x00000, 0x080000, CRC(bbf07ec6) SHA1(5656aa077f6a6d43953f15b5123eea102a9d5313) ) \
+ ROM_LOAD_HNG64_BIOS( 2, "bios_export.bin", 0x00000, 0x080000, CRC(bbf07ec6) SHA1(5656aa077f6a6d43953f15b5123eea102a9d5313) ) \
ROM_SYSTEM_BIOS( 3, "korea", "Korea" ) \
- ROM_LOAD_HNG64_BIOS( 3, "bios_korea.bin", 0x00000, 0x080000, CRC(ac953e2e) SHA1(f502188ef252b7c9d04934c4b525730a116de48b) ) \
+ ROM_LOAD_HNG64_BIOS( 3, "bios_korea.bin", 0x00000, 0x080000, CRC(ac953e2e) SHA1(f502188ef252b7c9d04934c4b525730a116de48b) ) \
ROM_REGION( 0x0100000, "user2", 0 ) /* KL5C80 BIOS */ \
ROM_LOAD ( "from1.bin", 0x000000, 0x080000, CRC(6b933005) SHA1(e992747f46c48b66e5509fe0adf19c91250b00c7) ) \
ROM_REGION( 0x0100000, "fpga", 0 ) /* FPGA data */ \
@@ -2022,13 +1991,13 @@ ROM_START( buriki )
ROM_END
/* Bios */
-GAME( 1997, hng64, 0, hng64, hng64, hng64_state, hng64, ROT0, "SNK", "Hyper NeoGeo 64 Bios", GAME_NOT_WORKING|GAME_NO_SOUND|GAME_IS_BIOS_ROOT )
+GAME( 1997, hng64, 0, hng64, hng64, hng64_state, hng64, ROT0, "SNK", "Hyper NeoGeo 64 Bios", MACHINE_NOT_WORKING|MACHINE_NO_SOUND|MACHINE_IS_BIOS_ROOT )
/* Games */
-GAME( 1997, roadedge, hng64, hng64, roadedge, hng64_state, hng64_race, ROT0, "SNK", "Roads Edge / Round Trip (rev.B)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 001 */
-GAME( 1998, sams64, hng64, hng64, hng64, hng64_state, ss64, ROT0, "SNK", "Samurai Shodown 64 / Samurai Spirits 64", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 002 */
-GAME( 1998, xrally, hng64, hng64, roadedge, hng64_state, hng64_race, ROT0, "SNK", "Xtreme Rally / Off Beat Racer!", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 003 */
-GAME( 1998, bbust2, hng64, hng64, bbust2, hng64_state, hng64_shoot, ROT0, "SNK", "Beast Busters 2nd Nightmare", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 004 */
-GAME( 1998, sams64_2, hng64, hng64, hng64, hng64_state, ss64, ROT0, "SNK", "Samurai Shodown: Warrior's Rage / Samurai Spirits 2: Asura Zanmaden", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 005 */
-GAME( 1998, fatfurwa, hng64, hng64, hng64, hng64_state, fatfurwa, ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 006 */
-GAME( 1999, buriki, hng64, hng64, hng64, hng64_state, buriki, ROT0, "SNK", "Buriki One (rev.B)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 007 */
+GAME( 1997, roadedge, hng64, hng64, roadedge, hng64_state, hng64_race, ROT0, "SNK", "Roads Edge / Round Trip (rev.B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 001 */
+GAME( 1998, sams64, hng64, hng64, hng64, hng64_state, ss64, ROT0, "SNK", "Samurai Shodown 64 / Samurai Spirits 64", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 002 */
+GAME( 1998, xrally, hng64, hng64, roadedge, hng64_state, hng64_race, ROT0, "SNK", "Xtreme Rally / Off Beat Racer!", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 003 */
+GAME( 1998, bbust2, hng64, hng64, bbust2, hng64_state, hng64_shoot, ROT0, "SNK", "Beast Busters 2nd Nightmare", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 004 */
+GAME( 1998, sams64_2, hng64, hng64, hng64, hng64_state, ss64, ROT0, "SNK", "Samurai Shodown: Warrior's Rage / Samurai Spirits 2: Asura Zanmaden", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 005 */
+GAME( 1998, fatfurwa, hng64, hng64, hng64, hng64_state, fatfurwa, ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 006 */
+GAME( 1999, buriki, hng64, hng64, hng64, hng64_state, buriki, ROT0, "SNK", "Buriki One (rev.B)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) /* 007 */
diff --git a/src/mame/drivers/holeland.c b/src/mame/drivers/holeland.c
index c81e97ee057..6b48104e736 100644
--- a/src/mame/drivers/holeland.c
+++ b/src/mame/drivers/holeland.c
@@ -479,7 +479,7 @@ ROM_START( crzrallyg )
ROM_END
-GAME( 1984, holeland, 0, holeland, holeland, driver_device, 0, ROT0, "Tecfri", "Hole Land", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1985, crzrally, 0, crzrally, crzrally, driver_device, 0, ROT270, "Tecfri", "Crazy Rally (set 1)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1985, crzrallya, crzrally, crzrally, crzrally, driver_device, 0, ROT270, "Tecfri", "Crazy Rally (set 2)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1985, crzrallyg, crzrally, crzrally, crzrally, driver_device, 0, ROT270, "Tecfri (Gecas license)", "Crazy Rally (Gecas license)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1984, holeland, 0, holeland, holeland, driver_device, 0, ROT0, "Tecfri", "Hole Land", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, crzrally, 0, crzrally, crzrally, driver_device, 0, ROT270, "Tecfri", "Crazy Rally (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, crzrallya, crzrally, crzrally, crzrally, driver_device, 0, ROT270, "Tecfri", "Crazy Rally (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1985, crzrallyg, crzrally, crzrally, crzrally, driver_device, 0, ROT270, "Tecfri (Gecas license)", "Crazy Rally (Gecas license)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/homedata.c b/src/mame/drivers/homedata.c
index 3738e18bef5..b10c744920f 100644
--- a/src/mame/drivers/homedata.c
+++ b/src/mame/drivers/homedata.c
@@ -2033,23 +2033,23 @@ DRIVER_INIT_MEMBER(homedata_state,mirderby)
}
-GAME( 1987, hourouki, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Hourouki Part 1 - Seisyun Hen (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1987, mhgaiden, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Hourouki Gaiden (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, mjhokite, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Hourouki Okite (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, mjclinic, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Clinic (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1988, mrokumei, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Rokumeikan (Japan)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-
-GAME( 1988, reikaids, 0, reikaids, reikaids, homedata_state, reikaids, ROT0, "Home Data", "Reikai Doushi (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, battlcry, 0, reikaids, battlcry, homedata_state, battlcry, ROT0, "Home Data", "Battlecry", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1989, mjkojink, 0, pteacher, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong Kojinkyouju (Private Teacher) (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, vitaminc, 0, pteacher, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong Vitamin C (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1989, mjyougo, 0, pteacher, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong-yougo no Kisotairyoku (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, mjkinjas, 0, mjkinjas, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong Kinjirareta Asobi (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1992?,jogakuen, 0, pteacher, jogakuen, homedata_state, jogakuen, ROT0, "Windom", "Mahjong Jogakuen (Japan)", GAME_SUPPORTS_SAVE )
-
-GAME( 1990, lemnangl, 0, lemnangl, lemnangl, driver_device, 0, ROT0, "Home Data", "Mahjong Lemon Angel (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1991, mjprivat, 0, lemnangl, pteacher, driver_device, 0, ROT0, "Matoba", "Mahjong Private (Japan)", GAME_SUPPORTS_SAVE )
-
-GAME( 1991?,mjikaga, 0, lemnangl, mjikaga, homedata_state, mjikaga, ROT0, "Mitchell", "Mahjong Ikaga Desu ka (Japan)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-
-GAME( 1988, mirderby, 0, mirderby, mirderby, homedata_state, mirderby, ROT0, "Home Data?", "Miracle Derby - Ascot", GAME_NO_SOUND|GAME_NOT_WORKING )
+GAME( 1987, hourouki, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Hourouki Part 1 - Seisyun Hen (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1987, mhgaiden, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Hourouki Gaiden (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, mjhokite, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Hourouki Okite (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, mjclinic, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Clinic (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1988, mrokumei, 0, mrokumei, mjhokite, driver_device, 0, ROT0, "Home Data", "Mahjong Rokumeikan (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1988, reikaids, 0, reikaids, reikaids, homedata_state, reikaids, ROT0, "Home Data", "Reikai Doushi (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, battlcry, 0, reikaids, battlcry, homedata_state, battlcry, ROT0, "Home Data", "Battlecry", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mjkojink, 0, pteacher, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong Kojinkyouju (Private Teacher) (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, vitaminc, 0, pteacher, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong Vitamin C (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1989, mjyougo, 0, pteacher, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong-yougo no Kisotairyoku (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, mjkinjas, 0, mjkinjas, pteacher, driver_device, 0, ROT0, "Home Data", "Mahjong Kinjirareta Asobi (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1992?,jogakuen, 0, pteacher, jogakuen, homedata_state, jogakuen, ROT0, "Windom", "Mahjong Jogakuen (Japan)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1990, lemnangl, 0, lemnangl, lemnangl, driver_device, 0, ROT0, "Home Data", "Mahjong Lemon Angel (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1991, mjprivat, 0, lemnangl, pteacher, driver_device, 0, ROT0, "Matoba", "Mahjong Private (Japan)", MACHINE_SUPPORTS_SAVE )
+
+GAME( 1991?,mjikaga, 0, lemnangl, mjikaga, homedata_state, mjikaga, ROT0, "Mitchell", "Mahjong Ikaga Desu ka (Japan)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+
+GAME( 1988, mirderby, 0, mirderby, mirderby, homedata_state, mirderby, ROT0, "Home Data?", "Miracle Derby - Ascot", MACHINE_NO_SOUND|MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/homelab.c b/src/mame/drivers/homelab.c
index 9733d9ff21a..0d6fc6735f1 100644
--- a/src/mess/drivers/homelab.c
+++ b/src/mame/drivers/homelab.c
@@ -904,8 +904,8 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, homelab2, 0, 0, homelab, homelab, driver_device, 0, "Jozsef and Endre Lukacs", "Homelab 2 / Aircomp 16", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
-COMP( 1983, homelab3, homelab2, 0, homelab3, homelab3, driver_device, 0, "Jozsef and Endre Lukacs", "Homelab 3", GAME_NOT_WORKING )
-COMP( 1984, homelab4, homelab2, 0, homelab3, homelab3, driver_device, 0, "Jozsef and Endre Lukacs", "Homelab 4", GAME_NOT_WORKING )
-COMP( 1984, brailab4, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab 4", GAME_NOT_WORKING )
-COMP( 1988, braiplus, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab Plus", GAME_NOT_WORKING | GAME_IS_SKELETON )
+COMP( 1982, homelab2, 0, 0, homelab, homelab, driver_device, 0, "Jozsef and Endre Lukacs", "Homelab 2 / Aircomp 16", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1983, homelab3, homelab2, 0, homelab3, homelab3, driver_device, 0, "Jozsef and Endre Lukacs", "Homelab 3", MACHINE_NOT_WORKING )
+COMP( 1984, homelab4, homelab2, 0, homelab3, homelab3, driver_device, 0, "Jozsef and Endre Lukacs", "Homelab 4", MACHINE_NOT_WORKING )
+COMP( 1984, brailab4, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab 4", MACHINE_NOT_WORKING )
+COMP( 1988, braiplus, homelab2, 0, brailab4, brailab4, homelab_state, brailab4, "Jozsef and Endre Lukacs", "Brailab Plus", MACHINE_NOT_WORKING | MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/homerun.c b/src/mame/drivers/homerun.c
index d745c922d4f..5dfe6ecba4d 100644
--- a/src/mame/drivers/homerun.c
+++ b/src/mame/drivers/homerun.c
@@ -450,6 +450,6 @@ ROM_START( ganjaja )
ROM_END
-GAME( 1988, homerun, 0, homerun, homerun, driver_device, 0, ROT0, "Jaleco", "Moero!! Pro Yakyuu Homerun Kyousou", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1988, dynashot, 0, dynashot, dynashot, driver_device, 0, ROT0, "Jaleco", "Dynamic Shoot Kyousou", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
-GAME( 1990, ganjaja, 0, ganjaja, ganjaja, driver_device, 0, ROT0, "Jaleco", "Ganbare Jajamaru Saisho wa Goo / Ganbare Jajamaru Hop Step & Jump", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1988, homerun, 0, homerun, homerun, driver_device, 0, ROT0, "Jaleco", "Moero!! Pro Yakyuu Homerun Kyousou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, dynashot, 0, dynashot, dynashot, driver_device, 0, ROT0, "Jaleco", "Dynamic Shoot Kyousou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
+GAME( 1990, ganjaja, 0, ganjaja, ganjaja, driver_device, 0, ROT0, "Jaleco", "Ganbare Jajamaru Saisho wa Goo / Ganbare Jajamaru Hop Step & Jump", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/homez80.c b/src/mame/drivers/homez80.c
index f20a0b9c887..3d403ba51d7 100644
--- a/src/mess/drivers/homez80.c
+++ b/src/mame/drivers/homez80.c
@@ -312,4 +312,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 2008, homez80, 0, 0, homez80, homez80, driver_device, 0, "Kun-Szabo Marton", "Homebrew Z80 Computer", GAME_NO_SOUND_HW)
+COMP( 2008, homez80, 0, 0, homez80, homez80, driver_device, 0, "Kun-Szabo Marton", "Homebrew Z80 Computer", MACHINE_NO_SOUND_HW)
diff --git a/src/mess/drivers/horizon.c b/src/mame/drivers/horizon.c
index 6cb01209db8..a888a4a3e0a 100644
--- a/src/mess/drivers/horizon.c
+++ b/src/mame/drivers/horizon.c
@@ -217,5 +217,5 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1976, nshrz, 0, 0, horizon, horizon, driver_device, 0, "North Star Computers", "Horizon (North Star Computers)", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
-COMP( 1979, vector1, nshrz, 0, horizon, horizon, driver_device, 0, "Vector Graphic", "Vector 1+ (DD drive)", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 1976, nshrz, 0, 0, horizon, horizon, driver_device, 0, "North Star Computers", "Horizon (North Star Computers)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
+COMP( 1979, vector1, nshrz, 0, horizon, horizon, driver_device, 0, "Vector Graphic", "Vector 1+ (DD drive)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/hornet.c b/src/mame/drivers/hornet.c
index 3ea911faaf2..e76de3256c8 100644
--- a/src/mame/drivers/hornet.c
+++ b/src/mame/drivers/hornet.c
@@ -1539,17 +1539,17 @@ ROM_END
/*************************************************************************/
-GAME( 1998, gradius4, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "Gradius 4: Fukkatsu", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAME( 1998, nbapbp, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "NBA Play By Play", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE )
-GAMEL( 1998, terabrst, 0, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/07/17 ver UEL)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs )
-GAMEL( 1998, terabrsta, terabrst, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/02/25 ver AAA)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_dualhsxs )
+GAME( 1998, gradius4, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "Gradius 4: Fukkatsu", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 1998, nbapbp, 0, hornet, hornet, hornet_state, hornet, ROT0, "Konami", "NBA Play By Play", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAMEL( 1998, terabrst, 0, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/07/17 ver UEL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_dualhsxs )
+GAMEL( 1998, terabrsta, terabrst, terabrst, hornet, hornet_state, hornet_2board, ROT0, "Konami", "Teraburst (1998/02/25 ver AAA)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE, layout_dualhsxs )
// The region comes from the Timekeeper NVRAM, without a valid default all sets except 'xxD, Ver 1.33' will init their NVRAM to UAx versions, the xxD set seems to incorrectly init it to JXD, which isn't a valid
// version, and thus can't be booted. If you copy the NVRAM from another already initialized set, it will boot as UAD.
// to get the actual game to boot you must calibrate the guns etc.
-GAMEL( 2000, sscope, 0, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxD, Ver 1.33)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
-GAMEL( 2000, sscopec, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxC, Ver 1.30)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
-GAMEL( 2000, sscopeb, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxB, Ver 1.20)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
-GAMEL( 2000, sscopea, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxA, Ver 1.00)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
+GAMEL( 2000, sscope, 0, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxD, Ver 1.33)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_dualhsxs )
+GAMEL( 2000, sscopec, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxC, Ver 1.30)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_dualhsxs )
+GAMEL( 2000, sscopeb, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxB, Ver 1.20)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_dualhsxs )
+GAMEL( 2000, sscopea, sscope, hornet_2board, sscope, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope (ver xxA, Ver 1.00)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_dualhsxs )
-GAMEL( 2000, sscope2, 0, sscope2, sscope2, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope 2", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE, layout_dualhsxs )
+GAMEL( 2000, sscope2, 0, sscope2, sscope2, hornet_state, hornet_2board, ROT0, "Konami", "Silent Scope 2", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE, layout_dualhsxs )
diff --git a/src/mame/drivers/hotblock.c b/src/mame/drivers/hotblock.c
index 8283c48693b..5ffb9bcf445 100644
--- a/src/mame/drivers/hotblock.c
+++ b/src/mame/drivers/hotblock.c
@@ -238,4 +238,4 @@ ROM_START( hotblock )
ROM_LOAD( "hotblk6.ic5", 0x080000, 0x080000, CRC(3176d231) SHA1(ac22fd0e9820c6714f51a3d8315eb5d43ef91eeb) )
ROM_END
-GAME( 1993, hotblock, 0, hotblock, hotblock, driver_device, 0, ROT0, "NIX?", "Hot Blocks - Tetrix II", GAME_SUPPORTS_SAVE )
+GAME( 1993, hotblock, 0, hotblock, hotblock, driver_device, 0, ROT0, "NIX?", "Hot Blocks - Tetrix II", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hotstuff.c b/src/mame/drivers/hotstuff.c
index f17b35ff388..3ce897ea40b 100644
--- a/src/mame/drivers/hotstuff.c
+++ b/src/mame/drivers/hotstuff.c
@@ -152,4 +152,4 @@ ROM_START( hotstuff )
ROM_LOAD16_WORD_SWAP( "hot stuff symbol u8 (68000).bin", 0x00000, 0x80000, CRC(f154a157) SHA1(92ae0fb977e2dcc0377487d768f95c6e447e990b) )
ROM_END
-GAME( ????, hotstuff, 0, hotstuff, hotstuff, driver_device, 0, ROT0, "Olympic Video Gaming", "Olympic Hot Stuff (TAS 5 Reel System)", GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( ????, hotstuff, 0, hotstuff, hotstuff, driver_device, 0, ROT0, "Olympic Video Gaming", "Olympic Hot Stuff (TAS 5 Reel System)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/hp16500.c b/src/mame/drivers/hp16500.c
index 9dcefa85a6e..b847da0c19b 100644
--- a/src/mess/drivers/hp16500.c
+++ b/src/mame/drivers/hp16500.c
@@ -501,7 +501,7 @@ ROM_START( hp16500b )
ROM_LOAD32_BYTE( "16500-80017.bin", 0x000003, 0x008000, CRC(e0b1096b) SHA1(426bb9a4756d8087bded4f6b61365d733ffbb09a) )
ROM_END
-COMP( 1989, hp1650b, 0, 0, hp1650, hp16500, driver_device, 0, "Hewlett Packard", "HP 1650b", GAME_NOT_WORKING|GAME_NO_SOUND)
-COMP( 1989, hp1651b, 0, 0, hp1651, hp16500, driver_device, 0, "Hewlett Packard", "HP 1651b", GAME_NOT_WORKING|GAME_NO_SOUND)
-COMP( 1991, hp165ka0, 0, 0, hp16500a, hp16500, driver_device, 0, "Hewlett Packard", "HP 16500a", GAME_NOT_WORKING|GAME_NO_SOUND)
-COMP( 1991, hp16500b, 0, 0, hp16500, hp16500, driver_device, 0, "Hewlett Packard", "HP 16500b", GAME_NOT_WORKING|GAME_NO_SOUND)
+COMP( 1989, hp1650b, 0, 0, hp1650, hp16500, driver_device, 0, "Hewlett Packard", "HP 1650b", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
+COMP( 1989, hp1651b, 0, 0, hp1651, hp16500, driver_device, 0, "Hewlett Packard", "HP 1651b", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
+COMP( 1991, hp165ka0, 0, 0, hp16500a, hp16500, driver_device, 0, "Hewlett Packard", "HP 16500a", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
+COMP( 1991, hp16500b, 0, 0, hp16500, hp16500, driver_device, 0, "Hewlett Packard", "HP 16500b", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/hp48.c b/src/mame/drivers/hp48.c
index 233ce5e5208..2b9e31dfcdc 100644
--- a/src/mess/drivers/hp48.c
+++ b/src/mame/drivers/hp48.c
@@ -1370,4 +1370,4 @@ COMP ( 1993, hp48g , hp48gx, 0, hp48g, hp48gx, hp48_state, hp48, "Hewlett Packa
COMP ( 1998, hp48gp, hp48gx, 0, hp48gp, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP48G+", 0 )
COMP ( 1999, hp49g , 0, 0, hp49g, hp49g, hp48_state, hp48, "Hewlett Packard", "HP49G", 0 )
COMP ( 1995, hp38g , 0, 0, hp48g, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP38G", 0 )
-COMP ( 2000, hp39g , 0, 0, hp48g, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP39G", GAME_NOT_WORKING )
+COMP ( 2000, hp39g , 0, 0, hp48g, hp48gx, hp48_state, hp48, "Hewlett Packard", "HP39G", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/hp49gp.c b/src/mame/drivers/hp49gp.c
index 567325c9501..dafdf563516 100644
--- a/src/mess/drivers/hp49gp.c
+++ b/src/mame/drivers/hp49gp.c
@@ -334,4 +334,4 @@ ROM_START( hp49gp )
ROMX_LOAD( "31504.bin", 0x0000, 0x4000, CRC(9c71825e) SHA1(0a12b2b70a8573bc90ab5be06e6b2f814b8544ae), ROM_BIOS(2) )
ROM_END
-COMP(2009, hp49gp, 0, 0, hp49gp, hp49gp, hp49gp_state, hp49gp, "Hewlett Packard", "HP49G+", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP(2009, hp49gp, 0, 0, hp49gp, hp49gp, hp49gp_state, hp49gp, "Hewlett Packard", "HP49G+", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/hp64k.c b/src/mame/drivers/hp64k.c
index 7bf0107a597..e56ce89f62b 100644
--- a/src/mess/drivers/hp64k.c
+++ b/src/mame/drivers/hp64k.c
@@ -6,16 +6,16 @@
// ***************************************
//
// Documentation used for this driver:
-// [1] HP, manual 64100-90910, dec 83 rev. - Model 64100A mainframe service manual
+// [1] HP, manual 64100-90910, dec 83 rev. - Model 64100A mainframe service manual
// [2] HP, manual 64941-90902, apr 83 rev. - Model 64941A Flexible disc (Floppy) drive
// controller service manual
//
// A 64100A system ("mainframe" in HP docs) is built around a 13 slot card cage.
// The first 4 slots are reserved for specific card types:
-// J1 I/O card
-// J2 Display and RAM card
-// J3 CPU card
-// J4 Floppy interface card
+// J1 I/O card
+// J2 Display and RAM card
+// J3 CPU card
+// J4 Floppy interface card
//
// The rest of the slots are for CPU emulators, logic analyzers and so on (i.e. those
// cards doing the main functions of a development system).
@@ -35,7 +35,7 @@
// CPU card (64100-66521 or 64100-66532)
//
// This board holds the HP custom CPU with its massive heatsink, the BIOS roms and little else.
-// U30 5061-3011 HP "hybrid" CPU @ 6.25 MHz
+// U30 5061-3011 HP "hybrid" CPU @ 6.25 MHz
// U8
// U9
// U10
@@ -43,7 +43,7 @@
// U18
// U19
// U20
-// U21 2732 16kw of BIOS EPROMs
+// U21 2732 16kw of BIOS EPROMs
//
// **********
// I/O card (64100-66520)
@@ -59,8 +59,8 @@
// exponentially decaying envelope (a bell sound) whereas in the emulation it's inside a
// simple rectangular envelope.
//
-//*U20 HP "PHI" Custom HP-IB interface microcontroller
-//*U28 i8251 RS232 UART
+//*U20 HP "PHI" Custom HP-IB interface microcontroller
+// U28 i8251 RS232 UART
//
// **********
// Display card (64100-66530)
@@ -72,10 +72,10 @@
// CRTC is designed to refresh the whole DRAM in parallel. For some mysterious reason the first
// display row is always blanked (its 40 words of RAM are even used for the stack!).
//
-// U33 i8275 CRT controller
-// U60 2716 Character generator ROM
+// U33 i8275 CRT controller
+// U60 2716 Character generator ROM
// U23-U30
-// U38-U45 HM4864 64 kw of DRAM
+// U38-U45 HM4864 64 kw of DRAM
//
// **********
// Floppy I/F card (64941-66501)
@@ -87,7 +87,7 @@
// I tried to reverse engineer the FSM by looking at the schematics and applying some sensible
// assumptions. Then I did a sort of "clean room" re-implementation. It appears to work correctly.
//
-// U4 FD1791A Floppy disk controller
+// U4 FD1791A Floppy disk controller
//
// A brief summary of the reverse-engineered interface of this card follows.
//
@@ -148,8 +148,6 @@
//
// ICs that are not emulated yet are marked with "*"
//
-// TODO:
-// - RS232 I/F
#include "emu.h"
#include "cpu/hphybrid/hphybrid.h"
@@ -158,12 +156,15 @@
#include "machine/74123.h"
#include "machine/rescap.h"
#include "sound/beep.h"
+#include "machine/com8116.h"
+#include "machine/i8251.h"
+#include "bus/rs232/rs232.h"
#define BIT_MASK(n) (1U << (n))
// Macros to clear/set single bits
-#define BIT_CLR(w , n) ((w) &= ~BIT_MASK(n))
-#define BIT_SET(w , n) ((w) |= BIT_MASK(n))
+#define BIT_CLR(w , n) ((w) &= ~BIT_MASK(n))
+#define BIT_SET(w , n) ((w) |= BIT_MASK(n))
class hp64k_state : public driver_device
{
@@ -212,9 +213,22 @@ public:
void hp64k_floppy_wpt_cb(floppy_image_device *floppy , int state);
DECLARE_READ16_MEMBER(hp64k_usart_r);
+ DECLARE_WRITE16_MEMBER(hp64k_usart_w);
+ DECLARE_WRITE_LINE_MEMBER(hp64k_rxrdy_w);
+ DECLARE_WRITE_LINE_MEMBER(hp64k_txrdy_w);
+ DECLARE_WRITE_LINE_MEMBER(hp64k_txd_w);
+ DECLARE_WRITE_LINE_MEMBER(hp64k_dtr_w);
+ DECLARE_WRITE_LINE_MEMBER(hp64k_rts_w);
+ DECLARE_WRITE16_MEMBER(hp64k_loopback_w);
+ void hp64k_update_loopback(void);
+ DECLARE_WRITE_LINE_MEMBER(hp64k_rs232_rxd_w);
+ DECLARE_WRITE_LINE_MEMBER(hp64k_rs232_dcd_w);
+ DECLARE_WRITE_LINE_MEMBER(hp64k_rs232_cts_w);
DECLARE_WRITE16_MEMBER(hp64k_beep_w);
TIMER_DEVICE_CALLBACK_MEMBER(hp64k_beeper_off);
+
+ DECLARE_WRITE_LINE_MEMBER(hp64k_baud_clk_w);
private:
required_device<hp_5061_3011_cpu_device> m_cpu;
required_device<i8275_device> m_crtc;
@@ -232,6 +246,10 @@ private:
required_ioport m_rs232_sw;
required_device<beep_device> m_beeper;
required_device<timer_device> m_beep_timer;
+ required_device<com8116_device> m_baud_rate;
+ required_ioport m_s5_sw;
+ required_device<i8251_device> m_uart;
+ required_device<rs232_port_device> m_rs232;
// Character generator
const UINT8 *m_chargen;
@@ -256,11 +274,11 @@ private:
UINT8 m_slot_map;
// Floppy I/F
- UINT8 m_floppy_in_latch_msb; // U23
- UINT8 m_floppy_in_latch_lsb; // U38
- UINT8 m_floppy_out_latch_msb; // U22
- UINT8 m_floppy_out_latch_lsb; // U37
- UINT8 m_floppy_if_ctrl; // U24
+ UINT8 m_floppy_in_latch_msb; // U23
+ UINT8 m_floppy_in_latch_lsb; // U38
+ UINT8 m_floppy_out_latch_msb; // U22
+ UINT8 m_floppy_out_latch_lsb; // U37
+ UINT8 m_floppy_if_ctrl; // U24
bool m_floppy_dmaen;
bool m_floppy_dmai;
bool m_floppy_mdci;
@@ -268,8 +286,8 @@ private:
bool m_floppy_drq;
bool m_floppy0_wpt;
bool m_floppy1_wpt;
- UINT8 m_floppy_drv_ctrl; // U39
- UINT8 m_floppy_status; // U25
+ UINT8 m_floppy_drv_ctrl; // U39
+ UINT8 m_floppy_status; // U25
typedef enum {
HP64K_FLPST_IDLE,
@@ -281,6 +299,15 @@ private:
floppy_state_t m_floppy_if_state;
floppy_image_device *m_current_floppy;
+
+ // RS232 I/F
+ bool m_16x_clk;
+ bool m_baud_clk;
+ UINT8 m_16x_div;
+ bool m_loopback;
+ bool m_txd_state;
+ bool m_dtr_state;
+ bool m_rts_state;
};
static ADDRESS_MAP_START(cpu_mem_map , AS_PROGRAM , 16 , hp64k_state)
@@ -293,22 +320,25 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START(cpu_io_map , AS_IO , 16 , hp64k_state)
// PA = 0, IC = [0..3]
// Keyboard input
- AM_RANGE(HP_MAKE_IOADDR(0 , 0) , HP_MAKE_IOADDR(0 , 3)) AM_READ(hp64k_kb_r)
+ AM_RANGE(HP_MAKE_IOADDR(0 , 0) , HP_MAKE_IOADDR(0 , 3)) AM_READ(hp64k_kb_r)
// PA = 2, IC = [0..3]
// Line sync interrupt clear/watchdog reset
- AM_RANGE(HP_MAKE_IOADDR(2 , 0) , HP_MAKE_IOADDR(2 , 3)) AM_READWRITE(hp64k_deltat_r , hp64k_deltat_w)
+ AM_RANGE(HP_MAKE_IOADDR(2 , 0) , HP_MAKE_IOADDR(2 , 3)) AM_READWRITE(hp64k_deltat_r , hp64k_deltat_w)
// PA = 4, IC = [0..3]
// Floppy I/F
- AM_RANGE(HP_MAKE_IOADDR(4 , 0) , HP_MAKE_IOADDR(4 , 3)) AM_READWRITE(hp64k_flp_r , hp64k_flp_w)
+ AM_RANGE(HP_MAKE_IOADDR(4 , 0) , HP_MAKE_IOADDR(4 , 3)) AM_READWRITE(hp64k_flp_r , hp64k_flp_w)
+ // PA = 5, IC = [0..3]
+ // Write to USART
+ AM_RANGE(HP_MAKE_IOADDR(5 , 0) , HP_MAKE_IOADDR(5 , 3)) AM_WRITE(hp64k_usart_w)
// PA = 6, IC = [0..3]
// Read from USART
- AM_RANGE(HP_MAKE_IOADDR(6 , 0) , HP_MAKE_IOADDR(6 , 3)) AM_READ(hp64k_usart_r)
+ AM_RANGE(HP_MAKE_IOADDR(6 , 0) , HP_MAKE_IOADDR(6 , 3)) AM_READ(hp64k_usart_r)
// PA = 7, IC = 2
- // Rear-panel switches
- AM_RANGE(HP_MAKE_IOADDR(7 , 2) , HP_MAKE_IOADDR(7 , 2)) AM_READ(hp64k_rear_sw_r)
+ // Rear-panel switches and loopback relay control
+ AM_RANGE(HP_MAKE_IOADDR(7 , 2) , HP_MAKE_IOADDR(7 , 2)) AM_READWRITE(hp64k_rear_sw_r , hp64k_loopback_w)
// PA = 9, IC = [0..3]
// Beeper control & interrupt status read
- AM_RANGE(HP_MAKE_IOADDR(9 , 0) , HP_MAKE_IOADDR(9 , 3)) AM_WRITE(hp64k_beep_w)
+ AM_RANGE(HP_MAKE_IOADDR(9 , 0) , HP_MAKE_IOADDR(9 , 3)) AM_WRITE(hp64k_beep_w)
// PA = 10, IC = [0..3]
// Slot selection
AM_RANGE(HP_MAKE_IOADDR(10 , 0) , HP_MAKE_IOADDR(10 , 3)) AM_WRITE(hp64k_slot_sel_w)
@@ -334,7 +364,11 @@ hp64k_state::hp64k_state(const machine_config &mconfig, device_type type, const
m_rear_panel_sw(*this , "rear_sw"),
m_rs232_sw(*this , "rs232_sw"),
m_beeper(*this , "beeper"),
- m_beep_timer(*this , "beep_timer")
+ m_beep_timer(*this , "beep_timer"),
+ m_baud_rate(*this , "baud_rate"),
+ m_s5_sw(*this , "s5_sw"),
+ m_uart(*this , "uart"),
+ m_rs232(*this , "rs232")
{
}
@@ -372,6 +406,13 @@ void hp64k_state::machine_reset()
m_floppy0_wpt = false;
m_floppy1_wpt = false;
m_beeper->set_state(0);
+ m_baud_rate->str_w((m_s5_sw->read() >> 1) & 0xf);
+ m_16x_clk = (m_rs232_sw->read() & 0x02) != 0;
+ m_loopback = false;
+ m_txd_state = true;
+ m_dtr_state = true;
+ m_rts_state = true;
+
}
UINT8 hp64k_state::hp64k_crtc_filter(UINT8 data)
@@ -895,9 +936,125 @@ void hp64k_state::hp64k_floppy_wpt_cb(floppy_image_device *floppy , int state)
READ16_MEMBER(hp64k_state::hp64k_usart_r)
{
- // todo
+ UINT16 tmp;
+
+ if ((offset & 1) == 0) {
+ tmp = m_uart->status_r(space , 0);
+ } else {
+ tmp = m_uart->data_r(space , 0);
+ }
+
// bit 8 == bit 7 rear panel switches (modem/terminal) ???
- return m_rs232_sw->read() << 8;
+
+ tmp |= (m_rs232_sw->read() << 8);
+
+ if (BIT(m_rear_panel_sw->read() , 7)) {
+ BIT_SET(tmp , 8);
+ }
+
+ return tmp;
+}
+
+WRITE16_MEMBER(hp64k_state::hp64k_usart_w)
+{
+ if ((offset & 1) == 0) {
+ m_uart->control_w(space , 0 , (UINT8)(data & 0xff));
+ } else {
+ m_uart->data_w(space , 0 , (UINT8)(data & 0xff));
+ }
+}
+
+WRITE_LINE_MEMBER(hp64k_state::hp64k_rxrdy_w)
+{
+ if (state) {
+ BIT_SET(m_irl_pending , 6);
+ } else {
+ BIT_CLR(m_irl_pending , 6);
+ }
+
+ hp64k_update_irl();
+}
+
+WRITE_LINE_MEMBER(hp64k_state::hp64k_txrdy_w)
+{
+ if (state) {
+ BIT_SET(m_irl_pending , 5);
+ } else {
+ BIT_CLR(m_irl_pending , 5);
+ }
+
+ hp64k_update_irl();
+}
+
+WRITE_LINE_MEMBER(hp64k_state::hp64k_txd_w)
+{
+ m_txd_state = state;
+ if (m_loopback) {
+ m_uart->write_rxd(state);
+ }
+ m_rs232->write_txd(state);
+}
+
+WRITE_LINE_MEMBER(hp64k_state::hp64k_dtr_w)
+{
+ m_dtr_state = state;
+ if (m_loopback) {
+ m_uart->write_dsr(state);
+ }
+ m_rs232->write_dtr(state);
+}
+
+WRITE_LINE_MEMBER(hp64k_state::hp64k_rts_w)
+{
+ if (BIT(m_s5_sw->read() , 0)) {
+ // Full duplex, RTS/ = 0
+ state = 0;
+ }
+ m_rts_state = state;
+ if (m_loopback) {
+ m_uart->write_cts(state);
+ }
+ m_rs232->write_rts(state);
+}
+
+WRITE16_MEMBER(hp64k_state::hp64k_loopback_w)
+{
+ m_loopback = BIT(data , 11);
+ hp64k_update_loopback();
+}
+
+void hp64k_state::hp64k_update_loopback(void)
+{
+ if (m_loopback) {
+ m_uart->write_rxd(m_txd_state);
+ m_uart->write_dsr(m_dtr_state);
+ m_uart->write_cts(m_rts_state);
+ } else {
+ m_uart->write_rxd(m_rs232->rxd_r());
+ m_uart->write_dsr(m_rs232->dcd_r());
+ m_uart->write_cts(m_rs232->cts_r());
+ }
+}
+
+WRITE_LINE_MEMBER(hp64k_state::hp64k_rs232_rxd_w)
+{
+ if (!m_loopback) {
+ m_uart->write_rxd(state);
+ }
+}
+
+WRITE_LINE_MEMBER(hp64k_state::hp64k_rs232_dcd_w)
+{
+ if (!m_loopback) {
+ m_uart->write_dsr(state);
+ }
+}
+
+WRITE_LINE_MEMBER(hp64k_state::hp64k_rs232_cts_w)
+{
+ if (!m_loopback) {
+ m_uart->write_cts(state);
+ }
}
WRITE16_MEMBER(hp64k_state::hp64k_beep_w)
@@ -914,6 +1071,19 @@ TIMER_DEVICE_CALLBACK_MEMBER(hp64k_state::hp64k_beeper_off)
m_beeper->set_state(0);
}
+WRITE_LINE_MEMBER(hp64k_state::hp64k_baud_clk_w)
+{
+ if (!m_16x_clk) {
+ if (state && !m_baud_clk) {
+ m_16x_div++;
+ }
+ m_baud_clk = !!state;
+ state = BIT(m_16x_div , 3);
+ }
+ m_uart->write_txc(state);
+ m_uart->write_rxc(state);
+}
+
static INPUT_PORTS_START(hp64k)
// Keyboard is arranged in a 8 x 16 matrix. Of the 128 possible positions, only 77 are used.
// For key arrangement on the matrix, see [1] pg 334
@@ -922,15 +1092,15 @@ static INPUT_PORTS_START(hp64k)
// column = [0..15]
// row = [0..7]
PORT_START("KEY0")
- PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
- PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
- PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
- PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
- PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
- PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
- PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
- PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
- PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
+ PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
+ PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
+ PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
+ PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
+ PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R')
+ PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T')
+ PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y')
+ PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
+ PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_UNUSED)
@@ -938,90 +1108,90 @@ static INPUT_PORTS_START(hp64k)
PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
- PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
+ PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB) PORT_CHAR('\t')
+ PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
- PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
- PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
- PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
- PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=')
- PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('^') PORT_CHAR('~')
- PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('\\') PORT_CHAR('|')
- PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
+ PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
+ PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
+ PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
+ PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('=')
+ PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('^') PORT_CHAR('~')
+ PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('\\') PORT_CHAR('|')
+ PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8)
PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_START("KEY1")
- PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
- PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
- PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
- PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
- PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
- PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
+ PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
+ PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
+ PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
+ PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
+ PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
+ PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_NAME("RECALL")
- PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_NAME("CLRLINE")
- PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F11) PORT_NAME("CAPS")
- PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F12) PORT_NAME("RESET")
- PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("SK1")
- PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_NAME("SK2")
+ PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F9) PORT_NAME("RECALL")
+ PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F10) PORT_NAME("CLRLINE")
+ PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F11) PORT_NAME("CAPS")
+ PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F12) PORT_NAME("RESET")
+ PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F1) PORT_NAME("SK1")
+ PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F2) PORT_NAME("SK2")
PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_NAME("SK3")
- PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("SK4")
+ PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F3) PORT_NAME("SK3")
+ PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F4) PORT_NAME("SK4")
PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_NAME("SK5")
- PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_NAME("SK6")
- PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_NAME("SK7")
+ PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F5) PORT_NAME("SK5")
+ PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F6) PORT_NAME("SK6")
+ PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F7) PORT_NAME("SK7")
PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_NAME("SK8")
+ PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F8) PORT_NAME("SK8")
PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_START("KEY2")
- PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
+ PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
PORT_BIT(BIT_MASK(1) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
- PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
- PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
- PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
- PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
+ PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
+ PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
+ PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F')
+ PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G')
+ PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H')
PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
- PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
+ PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
+ PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_NAME("INSCHAR")
- PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_NAME("DELCHAR")
+ PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT) PORT_NAME("INSCHAR")
+ PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL) PORT_NAME("DELCHAR")
PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(17) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
- PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
- PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
+ PORT_BIT(BIT_MASK(18) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
+ PORT_BIT(BIT_MASK(19) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
+ PORT_BIT(BIT_MASK(20) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
PORT_BIT(BIT_MASK(21) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(22) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
+ PORT_BIT(BIT_MASK(23) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
PORT_BIT(BIT_MASK(24) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(25) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@') PORT_CHAR('`')
- PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR('{')
- PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('_') PORT_CHAR(UCHAR_MAMEKEY(DEL))
- PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_NAME("ROLLUP")
- PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
- PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PGDN) PORT_NAME("NEXTPG")
+ PORT_BIT(BIT_MASK(26) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@') PORT_CHAR('`')
+ PORT_BIT(BIT_MASK(27) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR('{')
+ PORT_BIT(BIT_MASK(28) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('_') PORT_CHAR(UCHAR_MAMEKEY(DEL))
+ PORT_BIT(BIT_MASK(29) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_NAME("ROLLUP")
+ PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
+ PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PGDN) PORT_NAME("NEXTPG")
PORT_START("KEY3")
PORT_BIT(BIT_MASK(0) , IP_ACTIVE_HIGH , IPT_UNUSED)
@@ -1029,15 +1199,15 @@ static INPUT_PORTS_START(hp64k)
PORT_BIT(BIT_MASK(2) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(3) , IP_ACTIVE_HIGH , IPT_UNUSED)
PORT_BIT(BIT_MASK(4) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
- PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
+ PORT_BIT(BIT_MASK(5) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V')
+ PORT_BIT(BIT_MASK(6) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B')
PORT_BIT(BIT_MASK(7) , IP_ACTIVE_HIGH , IPT_UNUSED)
- PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
- PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
- PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
- PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*')
- PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']') PORT_CHAR('}')
- PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
+ PORT_BIT(BIT_MASK(8) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
+ PORT_BIT(BIT_MASK(9) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L')
+ PORT_BIT(BIT_MASK(10) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
+ PORT_BIT(BIT_MASK(11) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') PORT_CHAR('*')
+ PORT_BIT(BIT_MASK(12) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(']') PORT_CHAR('}')
+ PORT_BIT(BIT_MASK(13) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
PORT_BIT(BIT_MASK(14) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
PORT_BIT(BIT_MASK(15) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
PORT_BIT(BIT_MASK(16) , IP_ACTIVE_HIGH , IPT_UNUSED)
@@ -1057,82 +1227,106 @@ static INPUT_PORTS_START(hp64k)
PORT_BIT(BIT_MASK(30) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
PORT_BIT(BIT_MASK(31) , IP_ACTIVE_HIGH , IPT_KEYBOARD) PORT_CODE(KEYCODE_PGUP) PORT_NAME("PREVPG")
- PORT_START("rear_sw")
- PORT_DIPNAME(0x8000 , 0x8000 , "E9-6 jumper")
- PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
- PORT_DIPSETTING(0x8000 , DEF_STR(No))
- PORT_DIPNAME(0x4000 , 0x4000 , "E9-5 jumper")
- PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
- PORT_DIPSETTING(0x4000 , DEF_STR(No))
- PORT_DIPNAME(0x2000 , 0x2000 , "E9-4 jumper")
- PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
- PORT_DIPSETTING(0x2000 , DEF_STR(No))
- PORT_DIPNAME(0x1000 , 0x1000 , "E9-3 jumper")
- PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
- PORT_DIPSETTING(0x1000 , DEF_STR(No))
- PORT_DIPNAME(0x0800 , 0x0800 , "E9-2 jumper")
- PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
- PORT_DIPSETTING(0x0800 , DEF_STR(No))
- PORT_DIPNAME(0x0400 , 0x0400 , "E9-1 jumper")
- PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
- PORT_DIPSETTING(0x0400 , DEF_STR(No))
- PORT_DIPNAME(0x0018 , 0x0000 , "System source")
- PORT_DIPLOCATION("S1:!7,!6")
- PORT_DIPSETTING(0x0000 , "Sys bus")
- PORT_DIPSETTING(0x0008 , "Local storage-talk only")
- PORT_DIPSETTING(0x0010 , "Local storage-addressable")
- PORT_DIPSETTING(0x0018 , "Performance verification")
- PORT_DIPNAME(0x0300 , 0x0000 , "Upper bus address (N/U)")
- PORT_DIPLOCATION("S1:!2,!1")
- PORT_DIPSETTING(0x0000 , "0")
- PORT_DIPSETTING(0x0100 , "1")
- PORT_DIPSETTING(0x0200 , "2")
- PORT_DIPSETTING(0x0300 , "3")
- PORT_DIPNAME(0x0007 , 0x0000 , "System bus address")
- PORT_DIPLOCATION("S1:!5,!4,!3")
- PORT_DIPSETTING(0x0000 , "0")
- PORT_DIPSETTING(0x0001 , "1")
- PORT_DIPSETTING(0x0002 , "2")
- PORT_DIPSETTING(0x0003 , "3")
- PORT_DIPSETTING(0x0004 , "4")
- PORT_DIPSETTING(0x0005 , "5")
- PORT_DIPSETTING(0x0006 , "6")
- PORT_DIPSETTING(0x0007 , "7")
- PORT_DIPNAME(0x0080 , 0x0000 , "RS232 mode")
- PORT_DIPLOCATION("S4 IO:!8")
- PORT_DIPSETTING(0x0000 , "Terminal")
- PORT_DIPSETTING(0x0080 , "Modem")
-
- PORT_START("rs232_sw")
- PORT_DIPNAME(0xc0 , 0x00 , "Stop bits")
- PORT_DIPLOCATION("S4 IO:!2,!1")
- PORT_DIPSETTING(0x00 , "Invalid")
- PORT_DIPSETTING(0x40 , "1")
- PORT_DIPSETTING(0x80 , "1.5")
- PORT_DIPSETTING(0xc0 , "2")
- PORT_DIPNAME(0x20 , 0x00 , "Parity")
- PORT_DIPLOCATION("S4 IO:!3")
- PORT_DIPSETTING(0x00 , "Odd")
- PORT_DIPSETTING(0x20 , "Even")
- PORT_DIPNAME(0x10 , 0x00 , "Parity enable")
- PORT_DIPLOCATION("S4 IO:!4")
- PORT_DIPSETTING(0x00 , DEF_STR(No))
- PORT_DIPSETTING(0x10 , DEF_STR(Yes))
- PORT_DIPNAME(0x0c , 0x00 , "Char length")
- PORT_DIPLOCATION("S4 IO:!6,!5")
- PORT_DIPSETTING(0x00 , "5")
- PORT_DIPSETTING(0x04 , "6")
- PORT_DIPSETTING(0x08 , "7")
- PORT_DIPSETTING(0x0c , "8")
- PORT_DIPNAME(0x02 , 0x00 , "Baud rate factor")
- PORT_DIPLOCATION("S4 IO:!7")
- PORT_DIPSETTING(0x00 , "1x")
- PORT_DIPSETTING(0x02 , "16x")
+ PORT_START("rear_sw")
+ PORT_DIPNAME(0x8000 , 0x8000 , "E9-6 jumper")
+ PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
+ PORT_DIPSETTING(0x8000 , DEF_STR(No))
+ PORT_DIPNAME(0x4000 , 0x4000 , "E9-5 jumper")
+ PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
+ PORT_DIPSETTING(0x4000 , DEF_STR(No))
+ PORT_DIPNAME(0x2000 , 0x2000 , "E9-4 jumper")
+ PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
+ PORT_DIPSETTING(0x2000 , DEF_STR(No))
+ PORT_DIPNAME(0x1000 , 0x1000 , "E9-3 jumper")
+ PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
+ PORT_DIPSETTING(0x1000 , DEF_STR(No))
+ PORT_DIPNAME(0x0800 , 0x0800 , "E9-2 jumper")
+ PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
+ PORT_DIPSETTING(0x0800 , DEF_STR(No))
+ PORT_DIPNAME(0x0400 , 0x0400 , "E9-1 jumper")
+ PORT_DIPSETTING(0x0000 , DEF_STR(Yes))
+ PORT_DIPSETTING(0x0400 , DEF_STR(No))
+ PORT_DIPNAME(0x0018 , 0x0000 , "System source")
+ PORT_DIPLOCATION("S1:!7,!6")
+ PORT_DIPSETTING(0x0000 , "Sys bus")
+ PORT_DIPSETTING(0x0008 , "Local storage-talk only")
+ PORT_DIPSETTING(0x0010 , "Local storage-addressable")
+ PORT_DIPSETTING(0x0018 , "Performance verification")
+ PORT_DIPNAME(0x0300 , 0x0000 , "Upper bus address (N/U)")
+ PORT_DIPLOCATION("S1:!2,!1")
+ PORT_DIPSETTING(0x0000 , "0")
+ PORT_DIPSETTING(0x0100 , "1")
+ PORT_DIPSETTING(0x0200 , "2")
+ PORT_DIPSETTING(0x0300 , "3")
+ PORT_DIPNAME(0x0007 , 0x0000 , "System bus address")
+ PORT_DIPLOCATION("S1:!5,!4,!3")
+ PORT_DIPSETTING(0x0000 , "0")
+ PORT_DIPSETTING(0x0001 , "1")
+ PORT_DIPSETTING(0x0002 , "2")
+ PORT_DIPSETTING(0x0003 , "3")
+ PORT_DIPSETTING(0x0004 , "4")
+ PORT_DIPSETTING(0x0005 , "5")
+ PORT_DIPSETTING(0x0006 , "6")
+ PORT_DIPSETTING(0x0007 , "7")
+ PORT_DIPNAME(0x0080 , 0x0000 , "RS232 mode")
+ PORT_DIPLOCATION("S4 IO:!8")
+ PORT_DIPSETTING(0x0000 , "Terminal")
+ PORT_DIPSETTING(0x0080 , "Modem")
+
+ PORT_START("rs232_sw")
+ PORT_DIPNAME(0xc0 , 0x00 , "Stop bits")
+ PORT_DIPLOCATION("S4 IO:!2,!1")
+ PORT_DIPSETTING(0x00 , "Invalid")
+ PORT_DIPSETTING(0x40 , "1")
+ PORT_DIPSETTING(0x80 , "1.5")
+ PORT_DIPSETTING(0xc0 , "2")
+ PORT_DIPNAME(0x20 , 0x00 , "Parity")
+ PORT_DIPLOCATION("S4 IO:!3")
+ PORT_DIPSETTING(0x00 , "Odd")
+ PORT_DIPSETTING(0x20 , "Even")
+ PORT_DIPNAME(0x10 , 0x00 , "Parity enable")
+ PORT_DIPLOCATION("S4 IO:!4")
+ PORT_DIPSETTING(0x00 , DEF_STR(No))
+ PORT_DIPSETTING(0x10 , DEF_STR(Yes))
+ PORT_DIPNAME(0x0c , 0x00 , "Char length")
+ PORT_DIPLOCATION("S4 IO:!6,!5")
+ PORT_DIPSETTING(0x00 , "5")
+ PORT_DIPSETTING(0x04 , "6")
+ PORT_DIPSETTING(0x08 , "7")
+ PORT_DIPSETTING(0x0c , "8")
+ PORT_DIPNAME(0x02 , 0x00 , "Baud rate factor")
+ PORT_DIPLOCATION("S4 IO:!7")
+ PORT_DIPSETTING(0x00 , "1x")
+ PORT_DIPSETTING(0x02 , "16x")
+
+ PORT_START("s5_sw")
+ PORT_DIPNAME(0x01 , 0x00 , "Duplex")
+ PORT_DIPLOCATION("S5 IO:!1")
+ PORT_DIPSETTING(0x00 , "Half duplex")
+ PORT_DIPSETTING(0x01 , "Full duplex")
+ PORT_DIPNAME(0x1e , 0x00 , "Baud rate")
+ PORT_DIPLOCATION("S5 IO:!5,!4,!3,!2")
+ PORT_DIPSETTING(0x00 , "50")
+ PORT_DIPSETTING(0x02 , "75")
+ PORT_DIPSETTING(0x04 , "110")
+ PORT_DIPSETTING(0x06 , "134.5")
+ PORT_DIPSETTING(0x08 , "150")
+ PORT_DIPSETTING(0x0a , "300")
+ PORT_DIPSETTING(0x0c , "600")
+ PORT_DIPSETTING(0x0e , "1200")
+ PORT_DIPSETTING(0x10 , "1800")
+ PORT_DIPSETTING(0x12 , "2000")
+ PORT_DIPSETTING(0x14 , "2400")
+ PORT_DIPSETTING(0x16 , "3600")
+ PORT_DIPSETTING(0x18 , "4800")
+ PORT_DIPSETTING(0x1a , "7200")
+ PORT_DIPSETTING(0x1c , "9600")
+ PORT_DIPSETTING(0x1e , "19200")
INPUT_PORTS_END
static SLOT_INTERFACE_START(hp64k_floppies)
- SLOT_INTERFACE("525dd" , FLOPPY_525_DD)
+ SLOT_INTERFACE("525dd" , FLOPPY_525_DD)
SLOT_INTERFACE_END
static MACHINE_CONFIG_START(hp64k , hp64k_state)
@@ -1145,11 +1339,12 @@ static MACHINE_CONFIG_START(hp64k , hp64k_state)
// Actual keyboard refresh rate should be between 1 and 2 kHz
MCFG_TIMER_DRIVER_ADD_PERIODIC("kb_timer" , hp64k_state , hp64k_kb_scan , attotime::from_hz(100))
- // Line sync timer. A line frequency of 50 Hz is assumed.
- MCFG_TIMER_DRIVER_ADD_PERIODIC("linesync_timer" , hp64k_state , hp64k_line_sync , attotime::from_hz(50))
+ // Line sync timer. A line frequency of 50 Hz is assumed.
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("linesync_timer" , hp64k_state , hp64k_line_sync , attotime::from_hz(50))
// Clock = 25 MHz / 9 * (112/114)
MCFG_DEVICE_ADD("crtc" , I8275 , 2729045)
+ MCFG_VIDEO_SET_SCREEN("screen")
MCFG_I8275_CHARACTER_WIDTH(9)
MCFG_I8275_DRAW_CHARACTER_CALLBACK_OWNER(hp64k_state , crtc_display_pixels)
MCFG_I8275_DRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_crtc_drq_w))
@@ -1158,39 +1353,56 @@ static MACHINE_CONFIG_START(hp64k , hp64k_state)
MCFG_SCREEN_ADD("screen" , RASTER)
MCFG_SCREEN_UPDATE_DEVICE("crtc" , i8275_device , screen_update)
MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(720 , 390)
MCFG_PALETTE_ADD_MONOCHROME_GREEN_HIGHLIGHT("palette")
- MCFG_FD1791_ADD("fdc" , XTAL_4MHz / 4)
- MCFG_WD_FDC_FORCE_READY
- MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_flp_intrq_w))
- MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_flp_drq_w))
- MCFG_FLOPPY_DRIVE_ADD("fdc:0" , hp64k_floppies , "525dd" , floppy_image_device::default_floppy_formats)
- MCFG_SLOT_FIXED(true)
- MCFG_FLOPPY_DRIVE_ADD("fdc:1" , hp64k_floppies , "525dd" , floppy_image_device::default_floppy_formats)
- MCFG_SLOT_FIXED(true)
-
- MCFG_DEVICE_ADD("fdc_rdy0" , TTL74123 , 0)
- MCFG_TTL74123_CONNECTION_TYPE(TTL74123_NOT_GROUNDED_NO_DIODE)
- MCFG_TTL74123_RESISTOR_VALUE(RES_K(68.1))
- // Warning! Duration formula is not correct for LS123, actual capacitor is 10 uF
- MCFG_TTL74123_CAPACITOR_VALUE(CAP_U(16))
- MCFG_TTL74123_B_PIN_VALUE(1)
- MCFG_TTL74123_CLEAR_PIN_VALUE(1)
- MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITE8(hp64k_state , hp64k_floppy0_rdy));
-
- MCFG_DEVICE_ADD("fdc_rdy1" , TTL74123 , 0)
- MCFG_TTL74123_CONNECTION_TYPE(TTL74123_NOT_GROUNDED_NO_DIODE)
- MCFG_TTL74123_RESISTOR_VALUE(RES_K(68.1))
- MCFG_TTL74123_CAPACITOR_VALUE(CAP_U(16))
- MCFG_TTL74123_B_PIN_VALUE(1)
- MCFG_TTL74123_CLEAR_PIN_VALUE(1)
- MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITE8(hp64k_state , hp64k_floppy1_rdy));
-
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD("beeper" , BEEP , 2500)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS , "mono" , 1.00)
-
- MCFG_TIMER_DRIVER_ADD("beep_timer" , hp64k_state , hp64k_beeper_off);
+ MCFG_FD1791_ADD("fdc" , XTAL_4MHz / 4)
+ MCFG_WD_FDC_FORCE_READY
+ MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_flp_intrq_w))
+ MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(hp64k_state , hp64k_flp_drq_w))
+ MCFG_FLOPPY_DRIVE_ADD("fdc:0" , hp64k_floppies , "525dd" , floppy_image_device::default_floppy_formats)
+ MCFG_SLOT_FIXED(true)
+ MCFG_FLOPPY_DRIVE_ADD("fdc:1" , hp64k_floppies , "525dd" , floppy_image_device::default_floppy_formats)
+ MCFG_SLOT_FIXED(true)
+
+ MCFG_DEVICE_ADD("fdc_rdy0" , TTL74123 , 0)
+ MCFG_TTL74123_CONNECTION_TYPE(TTL74123_NOT_GROUNDED_NO_DIODE)
+ MCFG_TTL74123_RESISTOR_VALUE(RES_K(68.1))
+ // Warning! Duration formula is not correct for LS123, actual capacitor is 10 uF
+ MCFG_TTL74123_CAPACITOR_VALUE(CAP_U(16))
+ MCFG_TTL74123_B_PIN_VALUE(1)
+ MCFG_TTL74123_CLEAR_PIN_VALUE(1)
+ MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITE8(hp64k_state , hp64k_floppy0_rdy));
+
+ MCFG_DEVICE_ADD("fdc_rdy1" , TTL74123 , 0)
+ MCFG_TTL74123_CONNECTION_TYPE(TTL74123_NOT_GROUNDED_NO_DIODE)
+ MCFG_TTL74123_RESISTOR_VALUE(RES_K(68.1))
+ MCFG_TTL74123_CAPACITOR_VALUE(CAP_U(16))
+ MCFG_TTL74123_B_PIN_VALUE(1)
+ MCFG_TTL74123_CLEAR_PIN_VALUE(1)
+ MCFG_TTL74123_OUTPUT_CHANGED_CB(WRITE8(hp64k_state , hp64k_floppy1_rdy));
+
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("beeper" , BEEP , 2500)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS , "mono" , 1.00)
+
+ MCFG_TIMER_DRIVER_ADD("beep_timer" , hp64k_state , hp64k_beeper_off);
+
+ MCFG_DEVICE_ADD("baud_rate" , COM8116 , XTAL_5_0688MHz)
+ MCFG_COM8116_FR_HANDLER(WRITELINE(hp64k_state , hp64k_baud_clk_w));
+
+ MCFG_DEVICE_ADD("uart" , I8251 , 0)
+ MCFG_I8251_RXRDY_HANDLER(WRITELINE(hp64k_state , hp64k_rxrdy_w));
+ MCFG_I8251_TXRDY_HANDLER(WRITELINE(hp64k_state , hp64k_txrdy_w));
+ MCFG_I8251_TXD_HANDLER(WRITELINE(hp64k_state , hp64k_txd_w));
+ MCFG_I8251_DTR_HANDLER(WRITELINE(hp64k_state , hp64k_dtr_w));
+ MCFG_I8251_RTS_HANDLER(WRITELINE(hp64k_state , hp64k_rts_w));
+
+ MCFG_RS232_PORT_ADD("rs232" , default_rs232_devices , NULL)
+ MCFG_RS232_RXD_HANDLER(WRITELINE(hp64k_state , hp64k_rs232_rxd_w))
+ MCFG_RS232_DCD_HANDLER(WRITELINE(hp64k_state , hp64k_rs232_dcd_w))
+ MCFG_RS232_CTS_HANDLER(WRITELINE(hp64k_state , hp64k_rs232_cts_w))
+
MACHINE_CONFIG_END
ROM_START(hp64k)
diff --git a/src/mess/drivers/hp9845.c b/src/mame/drivers/hp9845.c
index 254dc9dc894..2d382a2d1a1 100644
--- a/src/mess/drivers/hp9845.c
+++ b/src/mame/drivers/hp9845.c
@@ -163,10 +163,10 @@ ROM_END
#define rom_hp9845t rom_hp9845b
#define rom_hp9845c rom_hp9845b
-COMP( 1978, hp9845a, 0, 0, hp9845a, hp9845, driver_device, 0, "Hewlett-Packard", "9845A", GAME_IS_SKELETON | GAME_NOT_WORKING | GAME_NO_SOUND )
-COMP( 1978, hp9845s, hp9845a, 0, hp9845a, hp9845, driver_device, 0, "Hewlett-Packard", "9845S", GAME_IS_SKELETON | GAME_NOT_WORKING | GAME_NO_SOUND )
-COMP( 1979, hp9835a, 0, 0, hp9835a, hp9845, driver_device, 0, "Hewlett-Packard", "9835A", GAME_IS_SKELETON | GAME_NOT_WORKING | GAME_NO_SOUND )
-COMP( 1979, hp9835b, hp9835a, 0, hp9835a, hp9845, driver_device, 0, "Hewlett-Packard", "9835B", GAME_IS_SKELETON | GAME_NOT_WORKING | GAME_NO_SOUND )
-COMP( 1980, hp9845b, 0, 0, hp9845b, hp9845, driver_device, 0, "Hewlett-Packard", "9845B", GAME_IS_SKELETON | GAME_NOT_WORKING | GAME_NO_SOUND )
-COMP( 1980, hp9845t, hp9845b, 0, hp9845b, hp9845, driver_device, 0, "Hewlett-Packard", "9845T", GAME_IS_SKELETON | GAME_NOT_WORKING | GAME_NO_SOUND )
-COMP( 1981, hp9845c, hp9845b, 0, hp9845b, hp9845, driver_device, 0, "Hewlett-Packard", "9845C", GAME_IS_SKELETON | GAME_NOT_WORKING | GAME_NO_SOUND )
+COMP( 1978, hp9845a, 0, 0, hp9845a, hp9845, driver_device, 0, "Hewlett-Packard", "9845A", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1978, hp9845s, hp9845a, 0, hp9845a, hp9845, driver_device, 0, "Hewlett-Packard", "9845S", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1979, hp9835a, 0, 0, hp9835a, hp9845, driver_device, 0, "Hewlett-Packard", "9835A", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1979, hp9835b, hp9835a, 0, hp9835a, hp9845, driver_device, 0, "Hewlett-Packard", "9835B", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1980, hp9845b, 0, 0, hp9845b, hp9845, driver_device, 0, "Hewlett-Packard", "9845B", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1980, hp9845t, hp9845b, 0, hp9845b, hp9845, driver_device, 0, "Hewlett-Packard", "9845T", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
+COMP( 1981, hp9845c, hp9845b, 0, hp9845b, hp9845, driver_device, 0, "Hewlett-Packard", "9845C", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/hp9k.c b/src/mame/drivers/hp9k.c
index bb504315408..9fa6ae09513 100644
--- a/src/mess/drivers/hp9k.c
+++ b/src/mame/drivers/hp9k.c
@@ -429,4 +429,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, hp9816, 0, 0, hp9k, hp9k, hp9k_state, hp9k, "Hewlett Packard", "HP 9816" , GAME_NOT_WORKING | GAME_NO_SOUND )
+COMP( 1982, hp9816, 0, 0, hp9k, hp9k, hp9k_state, hp9k, "Hewlett Packard", "HP 9816" , MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/hp9k_3xx.c b/src/mame/drivers/hp9k_3xx.c
index f79f09b94c1..e29034bd71a 100644
--- a/src/mess/drivers/hp9k_3xx.c
+++ b/src/mame/drivers/hp9k_3xx.c
@@ -466,10 +466,10 @@ ROM_START( hp9k382 )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1985, hp9k310, 0, 0, hp9k310, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/310", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1985, hp9k320, 0, 0, hp9k320, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/320", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1987, hp9k330, 0, 0, hp9k330, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/330", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1989, hp9k340, hp9k330,0, hp9k340, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/340", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1988, hp9k370, hp9k330,0, hp9k370, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/370", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1991, hp9k380, 0, 0, hp9k380, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/380", GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1991, hp9k382, 0, 0, hp9k382, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/382", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1985, hp9k310, 0, 0, hp9k310, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/310", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1985, hp9k320, 0, 0, hp9k320, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/320", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1987, hp9k330, 0, 0, hp9k330, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/330", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1989, hp9k340, hp9k330,0, hp9k340, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/340", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1988, hp9k370, hp9k330,0, hp9k370, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/370", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1991, hp9k380, 0, 0, hp9k380, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/380", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1991, hp9k382, 0, 0, hp9k382, hp9k330, driver_device, 0, "Hewlett-Packard", "HP9000/382", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/hp_ipc.c b/src/mame/drivers/hp_ipc.c
new file mode 100644
index 00000000000..1eddffdf46f
--- /dev/null
+++ b/src/mame/drivers/hp_ipc.c
@@ -0,0 +1,358 @@
+// license:BSD-3-Clause
+// copyright-holders:
+/******************************************************************************
+
+
+Integral Personal Computer (HP9807A)
+Hewlett-Packard, 1985
+
+This is a portable mains-powered UNIX workstation computer system produced by Hewlett-Packard and launched in 1985
+Basic hardware specs are....
+- 68000 CPU at 7.96MHz
+- 9" amber electro-luminescent display with a resolution of 255*512 pixels or up to 85 characters x 31 lines (default=80*24) with
+ dedicated 32Kb display memory
+- Internal 3.5" floppy disk drive with the following specification....
+ Encoding: Double Density HP MFM Format
+ Rotational speed: 600 RPM
+ Transfer speed: 62.5kB/second
+ Capacity: 709Kb (709632 bytes)
+ Bytes per sector: 512
+ Sectors per track: 9
+ Total tracks per surface: 80, Available: 77, Spare: 2, Wear: 1
+ Surfaces: 2
+ Interleave: 1
+- HP ThinkJet ink-jet printer integrated into the top of the case. This is a modified HP2225B Thinkjet printer
+- 90-key detachable keyboard
+- ROM: up to 512Kb standard and an additional 512Kb of option ROM
+- RAM: 512Kb, arranged as 256Kbx16. RAM is expandable externally to 7Mb
+- Real Time Clock
+- Speaker
+- External I/O bus with two I/O ports for interfaces and memory modules. Expandable to maximum 10 ports with two 5-port Bus Expander Modules
+- HP-IB (IEEE-488) bus
+- Runs the HP-UX Operating System III or System V (in ROM)
+
+
+PCB Layouts
+===========
+
+CPU/Memory Board (LOGIC A PCA)
+----------------
+
+HP Part# 00095-60953
+ |---------------------------------------------------------------------------------|
+ | 15.92MHz J1 J2 |
+ |LS74 |
+ | |---| |
+ | |T | |
+ | |M | |
+ | |S | |
+ | |4 | |-------------------------| |
+|--------------------| |5 | | 68000 | |
+| |0 | | | |
+| MB81256 MB81256 |0 | |-------------------------| |
+| |A | |
+| MB81256 MB81256 |---| |
+| |----------------J3-----------------| |
+| MB81256 MB81256 | | |
+| | | |
+| MB81256 MB81256 | | |
+| | | |
+| MB81256 MB81256 | | |
+| | | |
+| MB81256 MB81256 | | |
+| |----------------J4-----------------| |
+| MB81256 MB81256 |
+| U58 U60 |
+| MB81256 MB81256 555 |
+| |
+| |
+| |
+| J5 J6 J7 |
+|------------------------------------------------------------------------------------------------------|
+Notes:
+ 68000 - 68000 CPU at U7. Clock input 7.96MHz [15.92/2] (DIP64)
+ LS74 - 74LS74 at U2 provides system clock dividers /4 /2
+ MB81256 - Fujitsu MB81256 256Kx1 DRAM. Total RAM 512Kx8/256Kx16. HP part# 1818-3308. U20-U35 (DIP16)
+ TMS4500 - Texas Instruments TMS4500A DRAM Controller at U4. Clock input 3.98MHz [15.92/4] (DIP40)
+ U58 - HP-HIL Keyboard Interface 'Cerberus'. Clock input on pin 24 is unknown (DIP24)
+ U60 - Unknown IC used as an interrupt encoder. Possibly a logic chip? (DIP20)
+ 555 - 555 Timer
+ J1/J2 - Connectors joining to LOGIC B PCA (logic A to logic B bus)
+ J3/J4 - Connectors for ROM board
+ J5 - Power input connector from power supply PCB
+ J6 - 64-pin external I/O bus. This is connected to the I/O backplane PCB mounted at the rear of the case using a ribbon cable
+ J7 - 10 pin connector. Labelled on schematics as LOOP0 In/Out and LOOP1 In/Out. Connected to 'Cerberus' IC. Possibly for more input devices?
+
+
+Interface & Control Board (LOGIC B PCA)
+-------------------------
+
+HP Part# 00095-60952
+00095-60107 BD REV A
+00095-60149 ASSY LOGIC B
+|---------------------------------------------------------------------------------|
+|SPEAKER NS58167A J11 J10 |
+| LM358 32.768kHz |
+| |
+| 16Kx4 16Kx4 16Kx4 16Kx4 |
+| ROM |
+| |
+| BT1 HP-IL(2) GPU |
+| |--------------------|
+| 1Kb |
+| COP452 |
+| |
+| |
+| WD2797 |
+| LM393 HP-IL(1) |
+| |
+| LS193 |
+| |
+| |
+| |
+| LS74 24MHz LS161 |
+| J2|
+| |
+| TMS9914 |
+| |
+| |
+| 75162 75160 |
+| |
+| J14 J6 J5 J4 J3 J7 J1 J8 J9 J12 |
+|------------------------------------------------------------------------------------------------------|
+Notes:
+ GPU - GPU (Graphics Processor) at U1. Clock input 3MHz [24/8]. VSync on pin 45, HSync on pin 46 (DIP48)
+ 16Kx4 - 16Kx4 DRAM, organised as 32Kx8bit/16Kx16bit at U3, U4, U5 & U6. Chip type unknown, likely Fujitsu MB81416 (DIP18)
+ WD2797 - Western Digital WD2797 Floppy Disk Controller at U18. Clock input 2MHz [24/2/3/2] (DIP40)
+ HP-IL(1) - HP-IL 1LJ7-0015 'Saturn' Thinkjet Printer Controller IC at U28. Clock input 3MHz on pin 9 [24/8] (DIP48)
+ HP-IL(2) - HP-IL Interface IC at U31. Clock input 2MHz on pin 22 [24/2/3/2] (DIP28)
+ 1Kb - 1Kb RAM at U27 for printer buffer (DIP28, type unknown, very old, with only DATA0,1,2,3, C/D and DIN,DOUT)
+ ROM - 16Kb (2Kx8?) Some kind of very early DIP28 PROM/ROM? Same pinout as 1Kb RAM above. Holds the character font table for the printer
+ Four versions of this ROM exist, one each for Japan/Arabic/Hebrew and one for all other regions
+ NS58167A - National Semiconductor NS58167A Clock Controller RTC at U44. Clock input 32.768kHz (DIP24)
+ LM358 - National Semiconductor LM358 Operational Amplifier at U40 (DIP8)
+ LM393 - Texas Instruments LM393 Dual Comparator at U34 (DIP8)
+ BT1 - 3v lithium battery
+ COP452 - National Semiconductor COP452 Speaker Controller at U39. Clock input 2MHz [24/2/3/2]. This IC provides programmable square wave output from 100Hz to 5000Hz (DIP14)
+ TMS9914 - Texas Instruments TMS9914 General Purpose Interface Bus Adapter at U41. Clock input 4MHz [24/2/3] (DIP40)
+ 75160 - National Semiconductor DS75160A IEEE-488 General Purpose Interface Bus Transceiver at U42 (DIP20)
+ 75162 - National Semiconductor DS75162A IEEE-488 General Purpose Interface Bus Transceiver at U43 (DIP22)
+ LS193 - 74LS193 at U9 provides the main system clock dividers /8 /4 /2 (24MHz -> 12MHz, 6MHz, 3MHz). This is also the source of the 6MHz video clock on connector J1
+ LS161 - 74LS161 at U46. Takes 12MHz clock input on pin 2 and outputs 4MHz on pin 13 (i.e. /3). This is the clock source for the TMS9914
+ LS74 - LS74 at U16. Takes output of 4MHz from LS161 at U46 and outputs 2MHz on pin 5 (i.e. /2). This is the source of the 2MHz clocks
+ J1 - Connector joining to video display assembly
+ J2 - Connector joining to floppy drive
+ J3 - Connector joining to printer front switch panel assembly (ADV/CONT/FF/ATTN)
+ J4 - Connector joining to printer out of paper switch connected to ATTN
+ J5 - Connector joining to printer carriage motor
+ J6 - Connector joining to printer mechanism assembly including paper motor
+ J7 - Connector joining to printer printhead
+ J8 - Connector joining to HO?E switch (? ~ M, text unreadable on schems)
+ J9 - Connector for ?
+ J10/J11 - Connectors joining to LOGIC A PCA (logic A to logic B bus)
+ J12 - Power input connector from power supply PCB
+ J14 - Fan connector
+
+
+ROM board (Operating System ROM PCA. Assembly# HP82991A or HP82995A)
+---------
+
+|----------------J3-----------------|
+| |
+| |
+| |
+|J1 U1 U2 U3 U4 J2|
+| |
+| |
+| |
+|----------------J4-----------------|
+Notes:
+ J1/J2 - 20 pin connector joining to 'Option ROM PCA'
+ J3/J4 - 20 pin connector joining to 'LOGIC A PCA'
+ U1-U4 - 28 pin EPROM/MASKROM 0L/1L/0H/1H (note 1Mbit: 128Kx8 28 pin)
+
+
+ROM board (Option ROM PCA)
+---------
+Note this PCB plugs in upside-down on top of the Operating System ROM PCB
+
+|----------------J4-----------------|
+| |
+| |
+| |
+|J1 U1 U2 U3 U4 J2|
+| |
+| |
+| |
+|----------------J3-----------------|
+Notes:
+ J1/J2 - 20 pin connector joining to 'Operating System ROM PCA'
+ J3/J4 - 20 pin connector joining to 'LOGIC A PCA'
+ U1-U4 - 28 pin EPROM/MASKROM 0L/1L/0H/1H (note 1Mbit: 128Kx8 28 pin)
+
+
+Physical Memory Map
+===================
+000000-07FFFF - Internal ROM (Operating System PCA 512Kb)
+080000-0FFFFF - Internal ROM (Option ROM PCA 512Kb)
+100000-4FFFFF - External ROM modules (up to 4Mb)
+500000-5FFFFF - Reserved 1Mb
+600000-6FFFFF - Internal I/O 1Mb
+
+ Address Port Use
+ -------------------------
+ 600000-60FFFF 0 MMU
+ 610000-61FFFF 1 Disk Drive
+ 620000-62FFFF 2 Display
+ 630000-63FFFF 3 HP-IB
+ 640000-64FFFF 4 RTC
+ 650000-65FFFF 5 Printer
+ 660000-66FFFF 6 Keyboard
+ 670000-67FFFF 7 Speaker
+ 680000-68FFFF 8 Reserved
+ 690000-69FFFF 9 Reserved
+ 6A0000-6AFFFF 10 Reserved
+ 6B0000-6BFFFF 11 Reserved
+ 6C0000-6CFFFF 12 Reserved
+ 6D0000-6DFFFF 13 Reserved
+ 6E0000-6EFFFF 14 Reserved
+ 6F0000-6FFFFF 15 Reserved
+
+700000-7FFFFF - External I/O 1Mb
+
+ Address Port Use
+ -------------------------
+ 700000-70FFFF 16 Mainframe Port A
+ 710000-71FFFF 17 Mainframe Port B
+ 720000-72FFFF 18 Bus Expander Port A1
+ 730000-73FFFF 19 Bus Expander Port A2
+ 740000-74FFFF 20 Bus Expander Port A3
+ 750000-75FFFF 21 Bus Expander Port A4
+ 760000-76FFFF 22 Bus Expander Port A5
+ 770000-77FFFF 23 Reserved
+ 780000-78FFFF 24 Reserved
+ 790000-79FFFF 25 Reserved
+ 7A0000-7AFFFF 26 Bus Expander Port B1
+ 7B0000-7BFFFF 27 Bus Expander Port B2
+ 7C0000-7CFFFF 28 Bus Expander Port B3
+ 7D0000-7DFFFF 29 Bus Expander Port B4
+ 7E0000-7EFFFF 30 Bus Expander Port B5
+ 7F0000-7FFFFF 31 Reserved
+
+800000-EFFFFF - External RAM modules (up to 7Mb)
+F00000-F7FFFF - Internal RAM 512Kb
+F80000-FFFFFF - Reserved 512Kb
+
+Access to 800000-FFFFFF can be remapped by the MMU registers.
+
+
+Interrupts
+----------
+High Priority 7 - Soft reset from keyboard (NMI)
+ /\ 6 - RTC or NBIR3 (external I/O)
+ || 5 - Disc Drive or NBIR2 (external I/O)
+ || 4 - GPU or NBIR1 (external I/O)
+ || 3 - HP-IB, printer or NBIR0 (external I/O)
+ \/ 2 - HP-HIL devices (keyboard/mouse)
+Low Priority 1 - RTC
+
+Note external interrupt lines NBIR0 to NBIR3 can be asserted by an interface connected to the external I/O port
+
+
+******************************************************************************/
+
+#include "emu.h"
+#include "cpu/m68000/m68000.h"
+
+
+class hp_ipc_state : public driver_device
+{
+public:
+ hp_ipc_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ { }
+
+ DECLARE_WRITE16_MEMBER(mmu_w);
+ DECLARE_READ16_MEMBER(ram_r);
+ DECLARE_WRITE16_MEMBER(ram_w);
+
+private:
+ required_device<m68000_device> m_maincpu;
+
+ UINT32 m_mmu[4];
+ UINT16 m_internal_ram[0x40000];
+
+ inline UINT32 get_ram_address(offs_t offset) { return (m_mmu[(m_maincpu->get_fc() >> 1) & 3] + offset) & 0x3FFFFF; }
+};
+
+
+static ADDRESS_MAP_START(hp_ipc_mem, AS_PROGRAM, 16, hp_ipc_state)
+ AM_RANGE(0x000000, 0x07FFFF) AM_ROM
+ AM_RANGE(0x600000, 0x60FFFF) AM_WRITE(mmu_w)
+ AM_RANGE(0x800000, 0xFFFFFF) AM_READWRITE(ram_r, ram_w)
+ADDRESS_MAP_END
+
+
+static INPUT_PORTS_START(hp_ipc)
+INPUT_PORTS_END
+
+
+WRITE16_MEMBER(hp_ipc_state::mmu_w)
+{
+ logerror("mmu_w: offset = %08x, data = %04x, register = %d, data_to_add = %08x\n", offset, data, offset & 3, (data & 0xFFF) << 10);
+ m_mmu[offset & 3] = (data & 0xFFF) << 10;
+}
+
+
+READ16_MEMBER(hp_ipc_state::ram_r)
+{
+ UINT32 ram_address = get_ram_address(offset);
+
+ //logerror("RAM read, offset = %08x, ram address = %08X\n", offset, ram_address);
+
+ if (ram_address < 0x380000)
+ {
+ // External RAM modules
+ }
+ else if (ram_address < 0x3c0000)
+ {
+ // Internal RAM
+ return m_internal_ram[offset & 0x3ffff];
+ }
+ return 0xffff;
+}
+
+
+WRITE16_MEMBER(hp_ipc_state::ram_w)
+{
+ UINT32 ram_address = get_ram_address(offset);
+
+ //logerror("RAM write, offset = %08x, ram address = %08X, data = %04x\n", offset, ram_address, data);
+
+ if (ram_address < 0x380000)
+ {
+ // External RAM modules
+ }
+ else if (ram_address < 0x3c0000)
+ {
+ // Internal RAM
+ m_internal_ram[offset & 0x3ffff] = data;
+ }
+}
+
+
+static MACHINE_CONFIG_START(hp_ipc, hp_ipc_state)
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 15920000 / 2)
+ MCFG_CPU_PROGRAM_MAP(hp_ipc_mem)
+MACHINE_CONFIG_END
+
+
+ROM_START(hp_ipc)
+ ROM_REGION(0x100000, "maincpu" , 0)
+ ROM_LOAD("hp ipc os 82991A.bin", 0x00000, 0x80000, BAD_DUMP CRC(df45a37b) SHA1(476af9923bca0d2d0f40aeb81be5145ca76fddf5)) // Should be spread across 4 x 128K ROMs
+ROM_END
+
+
+COMP(1985, hp_ipc, 0, 0, hp_ipc, hp_ipc, driver_device, 0, "HP", "Integral Personal Computer", MACHINE_IS_SKELETON)
diff --git a/src/mess/drivers/hprot1.c b/src/mame/drivers/hprot1.c
index 4f01802e70b..6cff402b711 100644
--- a/src/mess/drivers/hprot1.c
+++ b/src/mame/drivers/hprot1.c
@@ -371,11 +371,11 @@ ROM_START( hprot2r6 )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 2002, hprot1, 0, 0, hprot1, hprot1, hprot1_state, hprot1, "HENRY", "Henry Prot I v19 (REV.1)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND)
+COMP( 2002, hprot1, 0, 0, hprot1, hprot1, hprot1_state, hprot1, "HENRY", "Henry Prot I v19 (REV.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND)
/* fw version: "R19" Release date: February 1st, 2002. */
-COMP( 2006, hprotr8a, hprot1, 0, hprotr8a, hprotr8a, hprot1_state, hprot1, "HENRY", "Henry Prot CARD I (REV.08A)", GAME_NOT_WORKING)
+COMP( 2006, hprotr8a, hprot1, 0, hprotr8a, hprotr8a, hprot1_state, hprot1, "HENRY", "Henry Prot CARD I (REV.08A)", MACHINE_NOT_WORKING)
/* fw version: "V6.5QI I" Release date: September 18th, 2006. */
-COMP( 2003, hprot2r6, hprot1, 0, hprot2r6, hprot2r6, hprot1_state, hprot1, "HENRY", "Henry Prot CARD II (REV.6)", GAME_NOT_WORKING)
+COMP( 2003, hprot2r6, hprot1, 0, hprot2r6, hprot2r6, hprot1_state, hprot1, "HENRY", "Henry Prot CARD II (REV.6)", MACHINE_NOT_WORKING)
/* fw version: "V5.8CF II" Release date: June 23rd, 2003. */
diff --git a/src/mess/drivers/hpz80unk.c b/src/mame/drivers/hpz80unk.c
index c3b4c9ecdba..170aaabd55b 100644
--- a/src/mess/drivers/hpz80unk.c
+++ b/src/mame/drivers/hpz80unk.c
@@ -156,4 +156,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1977, hpz80unk, 0, 0, hpz80unk, hpz80unk, driver_device, 0, "Hewlett-Packard", "unknown Z80-based mainframe", GAME_IS_SKELETON | GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 1977, hpz80unk, 0, 0, hpz80unk, hpz80unk, driver_device, 0, "Hewlett-Packard", "unknown Z80-based mainframe", MACHINE_IS_SKELETON | MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/hshavoc.c b/src/mame/drivers/hshavoc.c
index 105a8183252..e4d0386c172 100644
--- a/src/mame/drivers/hshavoc.c
+++ b/src/mame/drivers/hshavoc.c
@@ -222,4 +222,4 @@ DRIVER_INIT_MEMBER(md_boot_state,hshavoc)
}
-GAME( 1993, hshavoc, 0, md_bootleg, hshavoc, md_boot_state, hshavoc, ROT0, "Data East", "High Seas Havoc",GAME_NOT_WORKING )
+GAME( 1993, hshavoc, 0, md_bootleg, hshavoc, md_boot_state, hshavoc, ROT0, "Data East", "High Seas Havoc",MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/ht68k.c b/src/mame/drivers/ht68k.c
index 5d4bbafb67a..203ec4c8280 100644
--- a/src/mess/drivers/ht68k.c
+++ b/src/mame/drivers/ht68k.c
@@ -157,4 +157,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1987, ht68k, 0, 0, ht68k, ht68k, driver_device, 0, "Hawthorne Technology", "TinyGiant HT68k", GAME_NO_SOUND)
+COMP( 1987, ht68k, 0, 0, ht68k, ht68k, driver_device, 0, "Hawthorne Technology", "TinyGiant HT68k", MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/huebler.c b/src/mame/drivers/huebler.c
index b6b9f2eb022..c97f5aafefc 100644
--- a/src/mess/drivers/huebler.c
+++ b/src/mame/drivers/huebler.c
@@ -395,4 +395,4 @@ ROM_END
/* System Drivers */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1983, amu880, 0, 0, amu880, amu880, driver_device, 0, "Militaerverlag der DDR", "Ausbaufaehiger Mikrocomputer mit dem U 880", GAME_NO_SOUND )
+COMP( 1983, amu880, 0, 0, amu880, amu880, driver_device, 0, "Militaerverlag der DDR", "Ausbaufaehiger Mikrocomputer mit dem U 880", MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/hunter2.c b/src/mame/drivers/hunter2.c
index 0391c42da44..75eb60c6115 100644
--- a/src/mess/drivers/hunter2.c
+++ b/src/mame/drivers/hunter2.c
@@ -439,4 +439,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */
-COMP( 1981, hunter2, 0, 0, hunter2, hunter2, hunter2_state, hunter2, "Husky", "Hunter 2", GAME_NOT_WORKING )
+COMP( 1981, hunter2, 0, 0, hunter2, hunter2, hunter2_state, hunter2, "Husky", "Hunter 2", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/hvyunit.c b/src/mame/drivers/hvyunit.c
index 2dac6fd5de8..ff140bd5829 100644
--- a/src/mame/drivers/hvyunit.c
+++ b/src/mame/drivers/hvyunit.c
@@ -809,7 +809,7 @@ ROM_END
*
*************************************/
-GAME( 1988, hvyunit, 0, hvyunit, hvyunit, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit (World)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1988, hvyunitj, hvyunit, hvyunit, hvyunitj, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit (Japan, Newer)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1988, hvyunitjo,hvyunit, hvyunit, hvyunitj, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit (Japan, Older)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1988, hvyunitu, hvyunit, hvyunit, hvyunitj, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit -U.S.A. Version- (US)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
+GAME( 1988, hvyunit, 0, hvyunit, hvyunit, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit (World)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, hvyunitj, hvyunit, hvyunit, hvyunitj, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit (Japan, Newer)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, hvyunitjo,hvyunit, hvyunit, hvyunitj, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit (Japan, Older)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1988, hvyunitu, hvyunit, hvyunit, hvyunitj, driver_device, 0, ROT0, "Kaneko / Taito", "Heavy Unit -U.S.A. Version- (US)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/hx20.c b/src/mame/drivers/hx20.c
index 20488e67991..bc39844c973 100644
--- a/src/mess/drivers/hx20.c
+++ b/src/mame/drivers/hx20.c
@@ -918,5 +918,5 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1983, ehx20, 0, 0, hx20, hx20, driver_device, 0, "Epson", "Epson HX-20", GAME_NOT_WORKING )
-COMP( 1983, ehx20e, ehx20, 0, hx20, hx20e, driver_device, 0, "Epson", "Epson HX-20 (Europe)", GAME_NOT_WORKING )
+COMP( 1983, ehx20, 0, 0, hx20, hx20, driver_device, 0, "Epson", "Epson HX-20", MACHINE_NOT_WORKING )
+COMP( 1983, ehx20e, ehx20, 0, hx20, hx20e, driver_device, 0, "Epson", "Epson HX-20 (Europe)", MACHINE_NOT_WORKING )
diff --git a/src/mame/drivers/hyhoo.c b/src/mame/drivers/hyhoo.c
index b45ed15f3a4..b4f0ad76389 100644
--- a/src/mame/drivers/hyhoo.c
+++ b/src/mame/drivers/hyhoo.c
@@ -304,5 +304,5 @@ ROM_START( hyhoo2 )
ROM_END
-GAME( 1987, hyhoo, 0, hyhoo, hyhoo, driver_device, 0, ROT90, "Nichibutsu", "Hayaoshi Taisen Quiz Hyhoo (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1987, hyhoo2, 0, hyhoo2, hyhoo2, driver_device, 0, ROT90, "Nichibutsu", "Hayaoshi Taisen Quiz Hyhoo 2 (Japan)", GAME_SUPPORTS_SAVE )
+GAME( 1987, hyhoo, 0, hyhoo, hyhoo, driver_device, 0, ROT90, "Nichibutsu", "Hayaoshi Taisen Quiz Hyhoo (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, hyhoo2, 0, hyhoo2, hyhoo2, driver_device, 0, ROT90, "Nichibutsu", "Hayaoshi Taisen Quiz Hyhoo 2 (Japan)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/hyperscan.c b/src/mame/drivers/hyperscan.c
index 346116e218e..15e1bb8da72 100644
--- a/src/mess/drivers/hyperscan.c
+++ b/src/mame/drivers/hyperscan.c
@@ -644,4 +644,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 2006, hs, 0, 0, hyperscan , hyperscan , driver_device, 0, "Mattel", "HyperScan", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 2006, hs, 0, 0, hyperscan , hyperscan , driver_device, 0, "Mattel", "HyperScan", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/hyperspt.c b/src/mame/drivers/hyperspt.c
index bbbe2f74a26..522b599ad35 100644
--- a/src/mame/drivers/hyperspt.c
+++ b/src/mame/drivers/hyperspt.c
@@ -547,8 +547,8 @@ DRIVER_INIT_MEMBER(hyperspt_state,hyperspt)
}
-GAME( 1984, hyperspt, 0, hyperspt, hyperspt, hyperspt_state, hyperspt, ROT0, "Konami (Centuri license)", "Hyper Sports", GAME_SUPPORTS_SAVE )
-GAME( 1984, hypersptb, hyperspt, hypersptb, hyperspt, hyperspt_state, hyperspt, ROT0, "bootleg", "Hyper Sports (bootleg)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) // has ADPCM vis MSM5205 instead of VLM
-GAME( 1984, hpolym84, hyperspt, hyperspt, hyperspt, hyperspt_state, hyperspt, ROT0, "Konami", "Hyper Olympic '84", GAME_SUPPORTS_SAVE )
-GAME( 1984, roadf, 0, roadf, roadf, hyperspt_state, hyperspt, ROT90, "Konami", "Road Fighter (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1984, roadf2, roadf, roadf, roadf, hyperspt_state, hyperspt, ROT90, "Konami", "Road Fighter (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1984, hyperspt, 0, hyperspt, hyperspt, hyperspt_state, hyperspt, ROT0, "Konami (Centuri license)", "Hyper Sports", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, hypersptb, hyperspt, hypersptb, hyperspt, hyperspt_state, hyperspt, ROT0, "bootleg", "Hyper Sports (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // has ADPCM vis MSM5205 instead of VLM
+GAME( 1984, hpolym84, hyperspt, hyperspt, hyperspt, hyperspt_state, hyperspt, ROT0, "Konami", "Hyper Olympic '84", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, roadf, 0, roadf, roadf, hyperspt_state, hyperspt, ROT90, "Konami", "Road Fighter (set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1984, roadf2, roadf, roadf, roadf, hyperspt_state, hyperspt, ROT90, "Konami", "Road Fighter (set 2)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/hyprduel.c b/src/mame/drivers/hyprduel.c
index dec1940e7ee..356be1ef249 100644
--- a/src/mame/drivers/hyprduel.c
+++ b/src/mame/drivers/hyprduel.c
@@ -790,6 +790,6 @@ DRIVER_INIT_MEMBER(hyprduel_state,magerror)
}
-GAME( 1993, hyprduel, 0, hyprduel, hyprduel, hyprduel_state, hyprduel, ROT0, "Technosoft", "Hyper Duel (Japan set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1993, hyprduel2,hyprduel, hyprduel, hyprduel, hyprduel_state, hyprduel, ROT0, "Technosoft", "Hyper Duel (Japan set 2)", GAME_SUPPORTS_SAVE )
-GAME( 1994, magerror, 0, magerror, magerror, hyprduel_state, magerror, ROT0, "Technosoft / Jaleco", "Magical Error wo Sagase", GAME_SUPPORTS_SAVE )
+GAME( 1993, hyprduel, 0, hyprduel, hyprduel, hyprduel_state, hyprduel, ROT0, "Technosoft", "Hyper Duel (Japan set 1)", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, hyprduel2,hyprduel, hyprduel, hyprduel, hyprduel_state, hyprduel, ROT0, "Technosoft", "Hyper Duel (Japan set 2)", MACHINE_SUPPORTS_SAVE )
+GAME( 1994, magerror, 0, magerror, magerror, hyprduel_state, magerror, ROT0, "Technosoft / Jaleco", "Magical Error wo Sagase", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/i7000.c b/src/mame/drivers/i7000.c
new file mode 100644
index 00000000000..a1dc4b0b24c
--- /dev/null
+++ b/src/mame/drivers/i7000.c
@@ -0,0 +1,415 @@
+// license:GPL-2.0+
+// copyright-holders: Felipe Sanches
+/***************************************************************************
+
+ Itautec I7000
+
+ driver by Felipe C. da S. Sanches <juca@members.fsf.org>
+ with tech info provided by Alexandre Souza (a.k.a. Tabajara).
+
+ The portuguese Wikipedia article available at
+ http://pt.wikipedia.org/wiki/Itautec_I-7000
+ also provides a technical overview of this machine:
+
+ The I-7000 was the first computer manufactured by Itautec
+ (http://www.itautec.com.br/pt-br/produtos). It was originally an 8 bit CP/M
+ computer that became an IBM PC-XT clone in later hardware revisions which
+ took the "I-7000 PC-XT" name.
+
+ * Released in 1982
+ * Operating System: SIM/M / BASIC
+ * CPU: National NSC800 D-4 at 4,00 MHz
+ * Memory: 64KB to 128KB
+ * keyboards: 80 keys (with a reduced numerical keypad and function keys)
+ * display:
+ - 40 X 25 text
+ - 80 X 25 text
+ - 160 X 100 (8 colors)
+ - 640 X 200 (monochrome, with an expansion board)
+ - 320 X 200 (16 colors, with an expansion board)
+ * Expansion slots:
+ - 1 frontal cart slot
+ - 4 internal expansion slots
+ * Ports:
+ - 1 composite video output for a color monitor
+ - 2 cassete interfaces
+ - 1 RS-232C serial port
+ - 1 parallel interface
+ * Storage:
+ - Cassetes recorder
+ - Up to 4 external floppy drives: 8" (FD/DD, 1,1MB) or 5" 1/4
+ - Up to 1 external 10 MB hard-drive
+
+****************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h" //CPU was actually a NSC800 (Z80 compatible)
+#include "bus/generic/carts.h"
+#include "machine/pit8253.h"
+#include "machine/i8279.h"
+#include "sound/speaker.h"
+#include "video/mc6845.h"
+
+class i7000_state : public driver_device
+{
+public:
+ i7000_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_card(*this, "cardslot"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_videoram(*this, "videoram")
+ { }
+
+ void video_start();
+ void machine_start();
+
+ required_device<cpu_device> m_maincpu;
+ required_device<generic_slot_device> m_card;
+ required_device<gfxdecode_device> m_gfxdecode;
+ required_shared_ptr<UINT8> m_videoram;
+ UINT32 screen_update_i7000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ UINT8 *m_char_rom;
+ UINT8 m_row;
+ tilemap_t *m_bg_tilemap;
+
+ TILE_GET_INFO_MEMBER(get_bg_tile_info);
+ MC6845_ON_UPDATE_ADDR_CHANGED(crtc_addr);
+ DECLARE_DRIVER_INIT(i7000);
+ DECLARE_PALETTE_INIT(i7000);
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER( i7000_card );
+
+ DECLARE_READ8_MEMBER(i7000_kbd_r);
+ DECLARE_WRITE8_MEMBER(i7000_scanlines_w);
+};
+
+WRITE8_MEMBER( i7000_state::i7000_scanlines_w )
+{
+ m_row = data;
+}
+
+READ8_MEMBER( i7000_state::i7000_kbd_r )
+{
+ UINT8 data = 0xff;
+
+ for (int i=0; i<40*25; i++){
+ m_bg_tilemap->mark_tile_dirty(i);
+ }
+
+ if (m_row < 8)
+ {
+ char kbdrow[6];
+ sprintf(kbdrow,"X%X",m_row);
+ data = ioport(kbdrow)->read();
+ }
+ return data;
+}
+
+/* Input ports */
+static INPUT_PORTS_START( i7000 )
+ PORT_START("X0")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("!") PORT_CHAR('!')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ENTER") PORT_CODE(KEYCODE_ENTER)
+
+ PORT_START("X1")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0x9D")
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0x8F")
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^R DC2") //0x12
+
+ PORT_START("X2")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("$ ^") PORT_CHAR('$') PORT_CHAR('^')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0xA0")
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("- _") PORT_CODE(KEYCODE_MINUS)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("BACKSPACE") PORT_CODE(KEYCODE_BACKSPACE)
+
+ PORT_START("X3")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("% +") PORT_CHAR('%') PORT_CHAR('+')
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0x9C")
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@") PORT_CHAR('@')
+
+ PORT_START("X4")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5 *") PORT_CODE(KEYCODE_5)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^U NAK") //0x15
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("| <") PORT_CHAR('<')
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(", ;") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR(';')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE)
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^E ENQ") //0x05
+
+ PORT_START("X5")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^O SI") //0x0F
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.')
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("#") PORT_CHAR('#')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("{") PORT_CHAR('{')
+
+ PORT_START("X6")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A)
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^L FF") //0x0C
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^T DC4") //0x14
+
+ PORT_START("X7")
+ PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8)
+ PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W)
+ PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y)
+ PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(">") PORT_CHAR('>')
+ PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z)
+ PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B)
+ PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SPACEBAR") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ')
+ PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("}") PORT_CHAR('}')
+
+ PORT_START("DSW") /* DP01 */
+ PORT_DIPNAME( 0x80, 0x80, "1")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x40, 0x40, "2")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x20, 0x00, "3")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x10, 0x10, "4")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x08, 0x08, "5")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x04, 0x04, "6")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x02, 0x00, "7")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x01, 0x01, "8")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+INPUT_PORTS_END
+
+DRIVER_INIT_MEMBER(i7000_state, i7000)
+{
+}
+
+void i7000_state::machine_start()
+{
+ address_space &program = m_maincpu->space(AS_PROGRAM);
+
+ if (m_card->exists())
+ {
+ // 0x4000 - 0xbfff 32KB ROM
+ program.install_read_handler(0x4000, 0xbfff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_card));
+ }
+}
+
+PALETTE_INIT_MEMBER(i7000_state, i7000)
+{
+ palette.set_pen_color(0, rgb_t(0x33, 0x33, 0x33));
+ palette.set_pen_color(1, rgb_t(0xBB, 0xBB, 0xBB));
+}
+
+/*FIXME: we still need to figure out the proper memory map
+ for the maincpu and where the cartridge slot maps to. */
+static ADDRESS_MAP_START(i7000_mem, AS_PROGRAM, 8, i7000_state)
+ AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("boot", 0)
+ AM_RANGE(0x2000, 0x2fff) AM_RAM AM_SHARE("videoram")
+ AM_RANGE(0x4000, 0xffff) AM_RAM
+// AM_RANGE(0x4000, 0xbfff) AM_ROM AM_REGION("cardslot", 0)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( i7000_io , AS_IO, 8, i7000_state)
+ ADDRESS_MAP_UNMAP_HIGH
+ ADDRESS_MAP_GLOBAL_MASK (0xff)
+// AM_RANGE(0x06, 0x06) AM_WRITE(i7000_io_?_w)
+// AM_RANGE(0x08, 0x09) AM_WRITE(i7000_io_?_w) //printer perhaps?
+// AM_RANGE(0x0c, 0x0c) AM_WRITE(i7000_io_?_w) //0x0C and 0x10 may be related to mem page swapping. (self-test "4. PAG")
+// AM_RANGE(0x10, 0x10) AM_WRITE(i7000_io_?_w)
+// AM_RANGE(0x14, 0x15) AM_WRITE(i7000_io_?_w)
+
+ AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("pit8253", pit8253_device, read, write)
+
+// AM_RANGE(0x1c, 0x1c) AM_WRITE(i7000_io_printer_data_w) //ASCII data
+ AM_RANGE(0x1d, 0x1d) AM_READ_PORT("DSW")
+// AM_RANGE(0x1e, 0x1e) AM_READWRITE(i7000_io_printer_status_r, i7000_io_?_w)
+// AM_RANGE(0x1f, 0x1f) AM_WRITE(i7000_io_printer_strobe_w) //self-test routine writes 0x08 and 0x09 (it seems that bit 0 is the strobe and bit 3 is an enable signal)
+// AM_RANGE(0x20, 0x21) AM_READWRITE(i7000_io_keyboard_r, i7000_io_keyboard_w)
+
+ AM_RANGE( 0x20, 0x20 ) AM_DEVREADWRITE("i8279", i8279_device, data_r, data_w)
+ AM_RANGE( 0x21, 0x21 ) AM_DEVREADWRITE("i8279", i8279_device, status_r, cmd_w)
+
+// AM_RANGE(0x24, 0x24) AM_READ(i7000_io_?_r)
+// AM_RANGE(0x25, 0x25) AM_WRITE(i7000_io_?_w)
+
+// AM_RANGE(0x28, 0x2d) AM_READWRITE(i7000_io_joystick_r, i7000_io_joystick_w)
+
+// AM_RANGE(0x3b, 0x3b) AM_WRITE(i7000_io_?_w)
+// AM_RANGE(0x66, 0x67) AM_WRITE(i7000_io_?_w)
+// AM_RANGE(0xbb, 0xbb) AM_WRITE(i7000_io_?_w) //may be related to page-swapping...
+ADDRESS_MAP_END
+
+DEVICE_IMAGE_LOAD_MEMBER( i7000_state, i7000_card )
+{
+ UINT32 size = m_card->common_get_size("rom");
+
+ m_card->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_BIG);
+ m_card->common_load_rom(m_card->get_rom_base(), size, "rom");
+
+ return IMAGE_INIT_PASS;
+}
+
+static const gfx_layout i7000_charlayout =
+{
+ 8, 8, /* 8 x 8 characters */
+ 256, /* 256 characters */
+ 1, /* 1 bits per pixel */
+ { 0 }, /* no bitplanes */
+ /* x offsets */
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ /* y offsets */
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
+ 8*8 /* every char takes 8 bytes */
+};
+
+static GFXDECODE_START( i7000 )
+ GFXDECODE_ENTRY( "gfx1", 0x0000, i7000_charlayout, 0, 8 )
+GFXDECODE_END
+
+/****************************
+* Video/Character functions *
+****************************/
+
+TILE_GET_INFO_MEMBER(i7000_state::get_bg_tile_info)
+{
+ SET_TILE_INFO_MEMBER(0, /*code:*/ m_videoram[tile_index], /*color:*/ 0, 0);
+}
+
+void i7000_state::video_start()
+{
+ m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(i7000_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 40, 25);
+}
+
+UINT32 i7000_state::screen_update_i7000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
+ return 0;
+}
+
+/* ROCKWELL 6545 - Transparent Memory Addressing */
+MC6845_ON_UPDATE_ADDR_CHANGED(i7000_state::crtc_addr)
+{
+ /* What is this mandatory function meant to do ? */
+}
+
+
+static MACHINE_CONFIG_START( i7000, i7000_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", NSC800, XTAL_4MHz)
+ MCFG_CPU_PROGRAM_MAP(i7000_mem)
+ MCFG_CPU_IO_MAP(i7000_io)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_SIZE(320, 200) /* 40x25 8x8 chars */
+ MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 200-1)
+
+ MCFG_SCREEN_UPDATE_DRIVER(i7000_state, screen_update_i7000)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", i7000)
+ MCFG_PALETTE_ADD("palette", 2)
+ MCFG_PALETTE_INIT_OWNER(i7000_state, i7000)
+
+ MCFG_MC6845_ADD("crtc", R6545_1, "screen", XTAL_20MHz) /* (?) */
+ MCFG_MC6845_SHOW_BORDER_AREA(true)
+ MCFG_MC6845_CHAR_WIDTH(8)
+ MCFG_MC6845_ADDR_CHANGED_CB(i7000_state, crtc_addr)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+
+ /* Programmable timer */
+ MCFG_DEVICE_ADD("pit8253", PIT8253, 0)
+// MCFG_PIT8253_CLK0(XTAL_4MHz / 2) /* TODO: verify on PCB */
+// MCFG_PIT8253_OUT0_HANDLER(WRITELINE(i7000_state,i7000_pit_out0))
+// MCFG_PIT8253_CLK1(XTAL_4MHz / 2) /* TODO: verify on PCB */
+// MCFG_PIT8253_OUT1_HANDLER(WRITELINE(i7000_state,i7000_pit_out1))
+ MCFG_PIT8253_CLK2(XTAL_4MHz / 2) /* TODO: verify on PCB */
+ MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("speaker", speaker_sound_device, level_w))
+
+ /* Keyboard interface */
+ MCFG_DEVICE_ADD("i8279", I8279, 4000000) /* guessed value. TODO: verify on PCB */
+ MCFG_I8279_OUT_SL_CB(WRITE8(i7000_state, i7000_scanlines_w)) // scan SL lines
+ MCFG_I8279_IN_RL_CB(READ8(i7000_state, i7000_kbd_r)) // kbd RL lines
+ MCFG_I8279_IN_SHIFT_CB(VCC) // TODO: Shift key
+ MCFG_I8279_IN_CTRL_CB(VCC) // TODO: Ctrl key
+
+ /* Cartridge slot */
+ MCFG_GENERIC_CARTSLOT_ADD("cardslot", generic_romram_plain_slot, "i7000_card")
+ MCFG_GENERIC_EXTENSIONS("rom")
+ MCFG_GENERIC_LOAD(i7000_state, i7000_card)
+
+ /* Software lists */
+ MCFG_SOFTWARE_LIST_ADD("card_list", "i7000_card")
+MACHINE_CONFIG_END
+
+ROM_START( i7000 )
+ ROM_REGION( 0x1000, "boot", 0 )
+ ROM_LOAD( "i7000_boot_v1_4r02_15_10_85_d52d.rom", 0x0000, 0x1000, CRC(622412e5) SHA1(bf187a095600fd46a739c35132a85b5f39b2f867) )
+
+ ROM_REGION( 0x0800, "gfx1", 0 )
+ ROM_LOAD( "i7000_chargen.rom", 0x0000, 0x0800, CRC(fb7383e9) SHA1(71a6561bb9ff3cbf74711fa7ab445f9b43f15626) )
+ /*
+ The character generator ROM originally dumped had
+ some corrupt data that was manually fixed:
+
+ ROM address | Originally dumped value | Manually fixed value | Comment
+ 0x06A2 | 0xF7 | 0xFE | This is a fix to the upper right portion of a 2x2 tile image of a big filled circle
+ 0x06A3 | 0xF7 | 0xFE | This is another fix to the same tile (character value: 0xD4)
+
+ Also, characters 0x05, 0x06, 0x07 and 0x08
+ as well as lowercase 'x' (0x78), uppercase 'Y' (0x59)
+ may contain corrupt data, but we can't be sure,
+ unless we find another Itautec I7000 computer and
+ redump it's ROMs to double-check.
+ */
+
+ ROM_REGION( 0x1000, "drive", 0 )
+ ROM_LOAD( "i7000_drive_ci01.rom", 0x0000, 0x1000, CRC(d8d6e5c1) SHA1(93e7db42fbfaa8243973321c7fc8c51ed80780be) )
+
+ ROM_REGION( 0x1000, "telex", 0 )
+ ROM_LOAD( "i7000_telex_ci09.rom", 0x0000, 0x1000, CRC(c1c8fcc8) SHA1(cbf5fb600e587b998f190a9e3fb398a51d8a5e87) )
+ROM_END
+
+/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
+COMP( 1982, i7000, 0, 0, i7000, i7000, i7000_state, i7000, "Itautec", "I-7000", MACHINE_NOT_WORKING)
diff --git a/src/mess/drivers/ibm6580.c b/src/mame/drivers/ibm6580.c
index f2c404751e4..8a10c35a487 100644
--- a/src/mess/drivers/ibm6580.c
+++ b/src/mame/drivers/ibm6580.c
@@ -101,4 +101,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1980, ibm6580, 0, 0, ibm6580, ibm6580, driver_device, 0, "IBM", "IBM 6580 DisplayWriter", GAME_IS_SKELETON)
+COMP( 1980, ibm6580, 0, 0, ibm6580, ibm6580, driver_device, 0, "IBM", "IBM 6580 DisplayWriter", MACHINE_IS_SKELETON)
diff --git a/src/mess/drivers/ibmpc.c b/src/mame/drivers/ibmpc.c
index a422ea54cf6..9f9f73e18a5 100644
--- a/src/mess/drivers/ibmpc.c
+++ b/src/mame/drivers/ibmpc.c
@@ -571,7 +571,7 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
COMP( 1981, ibm5150, 0, 0, ibm5150, ibm5150, driver_device, 0, "International Business Machines", "IBM PC 5150" , 0)
COMP( 1982, ibm5155, ibm5150, 0, ibm5150, ibm5150, driver_device, 0, "International Business Machines", "IBM PC 5155" , 0)
-COMP( 1985, ibm5140, ibm5150, 0, ibm5140, ibm5150, driver_device, 0, "International Business Machines", "IBM PC 5140 Convertible" , GAME_NOT_WORKING)
+COMP( 1985, ibm5140, ibm5150, 0, ibm5140, ibm5150, driver_device, 0, "International Business Machines", "IBM PC 5140 Convertible" , MACHINE_NOT_WORKING)
// xt class (pc but 8086)
COMP( 1982, ibm5160, ibm5150, 0, ibm5160, ibm5150, driver_device, 0, "International Business Machines", "IBM XT 5160" , 0)
diff --git a/src/mess/drivers/ibmpcjr.c b/src/mame/drivers/ibmpcjr.c
index 26e4ad0c955..13f421bf12e 100644
--- a/src/mess/drivers/ibmpcjr.c
+++ b/src/mame/drivers/ibmpcjr.c
@@ -701,5 +701,5 @@ ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
// pcjr
-COMP( 1983, ibmpcjr, ibm5150, 0, ibmpcjr, ibmpcjr, pcjr_state, pcjr, "International Business Machines", "IBM PC Jr", GAME_IMPERFECT_COLORS )
-COMP( 1985, ibmpcjx, ibm5150, 0, ibmpcjx, ibmpcjr, pcjr_state, pcjr, "International Business Machines", "IBM PC JX", GAME_IMPERFECT_COLORS | GAME_NOT_WORKING)
+COMP( 1983, ibmpcjr, ibm5150, 0, ibmpcjr, ibmpcjr, pcjr_state, pcjr, "International Business Machines", "IBM PC Jr", MACHINE_IMPERFECT_COLORS )
+COMP( 1985, ibmpcjx, ibm5150, 0, ibmpcjx, ibmpcjr, pcjr_state, pcjr, "International Business Machines", "IBM PC JX", MACHINE_IMPERFECT_COLORS | MACHINE_NOT_WORKING)
diff --git a/src/mess/drivers/icatel.c b/src/mame/drivers/icatel.c
index 400fe02633e..372dafb439a 100644
--- a/src/mess/drivers/icatel.c
+++ b/src/mame/drivers/icatel.c
@@ -2,18 +2,18 @@
// copyright-holders: Felipe Sanches
/***************************************************************************
- icatel - Brazilian public payphone
- manufactured by icatel http://www.icatel.com.br/
+ icatel - Brazilian public payphone
+ manufactured by icatel http://www.icatel.com.br/
- Partial schematics (drawn based on PCB inspection) available at:
- https://github.com/garoa/Icatel/blob/master/doc/icatel.pdf
+ Partial schematics (drawn based on PCB inspection) available at:
+ https://github.com/garoa/Icatel/blob/master/doc/icatel.pdf
- Driver by Felipe Sanches <juca@members.fsf.org>
+ Driver by Felipe Sanches <juca@members.fsf.org>
- Changelog:
+ Changelog:
- 2014 DEC 14 [Felipe Sanches]:
- * Initial driver skeleton
+ 2014 DEC 14 [Felipe Sanches]:
+ * Initial driver skeleton
***************************************************************************/
@@ -81,7 +81,7 @@ static ADDRESS_MAP_START(i80c31_io, AS_IO, 8, icatel_state)
ADDRESS_MAP_END
static ADDRESS_MAP_START(i80c31_data, AS_DATA, 8, icatel_state)
-// AM_RANGE(0x0056,0x005A) AM_READ(magic_string) /* This is a hack! */
+// AM_RANGE(0x0056,0x005A) AM_READ(magic_string) /* This is a hack! */
ADDRESS_MAP_END
DRIVER_INIT_MEMBER( icatel_state, icatel )
@@ -98,7 +98,7 @@ void icatel_state::machine_reset()
READ8_MEMBER(icatel_state::magic_string)
{
-// logerror("read: magic_string, offset=%04X\n", offset);
+// logerror("read: magic_string, offset=%04X\n", offset);
char mstr[] = "TP-OK";
return mstr[offset%5];
}
@@ -108,7 +108,7 @@ READ8_MEMBER(icatel_state::ioport_r)
switch (offset%4)
{
case 0: return 0xff;
- case 1: return 0x7f;
+ case 1: return 0x7f;
case 2: return 0xff;
case 3: return 0xff;
}
@@ -169,8 +169,8 @@ WRITE8_MEMBER(icatel_state::ci8_w)
READ8_MEMBER(icatel_state::ci15_r)
{
/* TODO: Implement-me! */
-// debugger_break(machine());
-// logerror("read: ci15\n");
+// debugger_break(machine());
+// logerror("read: ci15\n");
return (1 << 3) | (1 << 0);
}
@@ -265,5 +265,5 @@ ROM_START( icatel )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1995, icatel, 0, 0, icatel, 0, icatel_state, icatel, "Icatel", "TPCI (Brazilian public payphone)", GAME_IMPERFECT_GRAPHICS | GAME_NO_SOUND)
+COMP( 1995, icatel, 0, 0, icatel, 0, icatel_state, icatel, "Icatel", "TPCI (Brazilian public payphone)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND)
/*The hardware was clearly manufactured in 1995. There's no evindence of the actual date of the firmware.*/
diff --git a/src/mame/drivers/icecold.c b/src/mame/drivers/icecold.c
index 3a625899eb8..142d9f93c32 100644
--- a/src/mame/drivers/icecold.c
+++ b/src/mame/drivers/icecold.c
@@ -397,5 +397,5 @@ ROM_START(zekepeak)
ROM_END
-GAME(1983, icecold, 0, icecold, icecold, driver_device, 0, ROT0, "Taito", "Ice Cold Beer", GAME_NOT_WORKING | GAME_MECHANICAL)
-GAME(1983, zekepeak, icecold, icecold, icecold, driver_device, 0, ROT0, "Taito", "Zeke's Peak", GAME_NOT_WORKING | GAME_MECHANICAL)
+GAME(1983, icecold, 0, icecold, icecold, driver_device, 0, ROT0, "Taito", "Ice Cold Beer", MACHINE_NOT_WORKING | MACHINE_MECHANICAL)
+GAME(1983, zekepeak, icecold, icecold, icecold, driver_device, 0, ROT0, "Taito", "Zeke's Peak", MACHINE_NOT_WORKING | MACHINE_MECHANICAL)
diff --git a/src/mame/drivers/ichiban.c b/src/mame/drivers/ichiban.c
index 8a434dbbc88..772fcb7e27f 100644
--- a/src/mame/drivers/ichiban.c
+++ b/src/mame/drivers/ichiban.c
@@ -167,4 +167,4 @@ ROM_START( ichiban )
ROM_LOAD( "mjb.u38", 0x400, 0x200, CRC(0ef881cb) SHA1(44b61a443d683f5cb2d1b1a4f74d8a8f41021de5) )
ROM_END
-GAME( 199?, ichiban, 0, ichibanjyan, ichibanjyan, driver_device, 0, ROT0, "Excel", "Ichi Ban Jyan", GAME_NOT_WORKING | GAME_NO_SOUND )
+GAME( 199?, ichiban, 0, ichibanjyan, ichibanjyan, driver_device, 0, ROT0, "Excel", "Ichi Ban Jyan", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/ie15.c b/src/mame/drivers/ie15.c
index 80eec85421e..405b33a2b5b 100644
--- a/src/mess/drivers/ie15.c
+++ b/src/mame/drivers/ie15.c
@@ -396,24 +396,24 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( ie15_io, AS_IO, 8, ie15_state )
ADDRESS_MAP_UNMAP_HIGH
- AM_RANGE(000, 000) AM_READ(mem_r) AM_WRITE(mem_w) // 00h W: memory request, R: memory data [6.1.2.2]
+ AM_RANGE(000, 000) AM_READWRITE(mem_r, mem_w) // 00h W: memory request, R: memory data [6.1.2.2]
AM_RANGE(001, 001) AM_READ(serial_rx_ready_r) AM_WRITENOP // 01h W: memory latch [6.1.2.2]
AM_RANGE(002, 002) AM_WRITE(mem_addr_hi_w) // 02h W: memory address high [6.1.2.2]
AM_RANGE(003, 003) AM_WRITE(mem_addr_lo_w) // 03h W: memory address low [6.1.2.2]
AM_RANGE(004, 004) AM_WRITE(mem_addr_inc_w) // 04h W: memory address counter + [6.1.2.2]
AM_RANGE(005, 005) AM_WRITE(mem_addr_dec_w) // 05h W: memory address counter - [6.1.2.2]
- AM_RANGE(006, 006) AM_READ(serial_r) AM_WRITE(serial_w) // 06h W: serial port data [6.1.5.4]
+ AM_RANGE(006, 006) AM_READWRITE(serial_r, serial_w) // 06h W: serial port data [6.1.5.4]
// port 7 is handled in cpu core
- AM_RANGE(010, 010) AM_READ(serial_tx_ready_r) AM_WRITE(beep_w) // 08h W: speaker control [6.1.5.4]
+ AM_RANGE(010, 010) AM_READWRITE(serial_tx_ready_r, beep_w) // 08h W: speaker control [6.1.5.4]
AM_RANGE(011, 011) AM_READ(kb_r) // 09h R: keyboard data [6.1.5.2]
AM_RANGE(012, 012) AM_READ(kb_s_red_r) // 0Ah I: keyboard mode "RED" [6.1.5.2]
AM_RANGE(013, 013) AM_READ(kb_ready_r) // 0Bh R: keyboard data ready [6.1.5.2]
- AM_RANGE(014, 014) AM_READ(kb_s_sdv_r) AM_WRITE(serial_speed_w) // 0Ch W: serial port speed [6.1.3.1], R: keyboard mode "SDV" [6.1.5.2]
- AM_RANGE(015, 015) AM_READ(kb_s_dk_r) AM_WRITE(kb_ready_w) // 0Dh I: keyboard mode "DK" [6.1.5.2]
+ AM_RANGE(014, 014) AM_READWRITE(kb_s_sdv_r, serial_speed_w) // 0Ch W: serial port speed [6.1.3.1], R: keyboard mode "SDV" [6.1.5.2]
+ AM_RANGE(015, 015) AM_READWRITE(kb_s_dk_r, kb_ready_w) // 0Dh I: keyboard mode "DK" [6.1.5.2]
AM_RANGE(016, 016) AM_READ(kb_s_dupl_r) // 0Eh I: keyboard mode "DUPL" [6.1.5.2]
AM_RANGE(017, 017) AM_READ(kb_s_lin_r) // 0Fh I: keyboard mode "LIN" [6.1.5.2]
// simulation of flag registers
- AM_RANGE(020, 027) AM_READ(flag_r) AM_WRITE(flag_w)
+ AM_RANGE(020, 027) AM_READWRITE(flag_r, flag_w)
ADDRESS_MAP_END
/* Input ports */
@@ -454,8 +454,7 @@ void ie15_state::machine_reset()
m_serial_tx_ready = m_serial_rx_ready = IE_TRUE;
set_data_frame(1 /* start bits */, 8 /* data bits */, PARITY_NONE, STOP_BITS_1);
// device supports rates from 150 to 9600 baud but null_modem has hardcoded 9600
- set_tra_rate(9600);
- set_rcv_rate(9600);
+ set_rate(9600);
}
void ie15_state::video_start()
diff --git a/src/mess/drivers/if800.c b/src/mame/drivers/if800.c
index 57b0bc0fdad..610269b9642 100644
--- a/src/mess/drivers/if800.c
+++ b/src/mame/drivers/if800.c
@@ -114,4 +114,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1985, if800, 0, 0, if800, if800, driver_device, 0, "Oki Electric", "if800 model 60", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1985, if800, 0, 0, if800, if800, driver_device, 0, "Oki Electric", "if800 model 60", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/igs009.c b/src/mame/drivers/igs009.c
index fdb289f6632..b94f9b163c8 100644
--- a/src/mame/drivers/igs009.c
+++ b/src/mame/drivers/igs009.c
@@ -965,5 +965,5 @@ ROM_START( gp98 )
// no OKI on this
ROM_END
-GAME( 1995?, jingbell, 0, jingbell, jingbell, igs009_state, jingbell, ROT0, "IGS", "Jingle Bell (Italy, V133I)", GAME_SUPPORTS_SAVE )
-GAME( 1998, gp98, 0, gp98, jingbell, driver_device, 0, ROT0, "Romtec Co. Ltd", "Grand Prix '98 (V100K)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1995?, jingbell, 0, jingbell, jingbell, igs009_state, jingbell, ROT0, "IGS", "Jingle Bell (Italy, V133I)", MACHINE_SUPPORTS_SAVE )
+GAME( 1998, gp98, 0, gp98, jingbell, driver_device, 0, ROT0, "Romtec Co. Ltd", "Grand Prix '98 (V100K)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/igs011.c b/src/mame/drivers/igs011.c
index 810920b6c18..1e0f0c825d4 100644
--- a/src/mame/drivers/igs011.c
+++ b/src/mame/drivers/igs011.c
@@ -4796,20 +4796,20 @@ ROM_END
***************************************************************************/
-GAME( 1997, drgnwrld, 0, drgnwrld, drgnwrld, igs011_state, drgnwrld, ROT0, "IGS", "Dragon World (World, V040O)", GAME_SUPPORTS_SAVE )
-GAME( 1995, drgnwrldv30, drgnwrld, drgnwrld, drgnwrld, igs011_state, drgnwrldv30, ROT0, "IGS", "Dragon World (World, V030O)", GAME_SUPPORTS_SAVE )
-GAME( 1995, drgnwrldv21, drgnwrld, drgnwrld_igs012, drgnwrld, igs011_state, drgnwrldv21, ROT0, "IGS", "Dragon World (World, V021O)", GAME_SUPPORTS_SAVE )
-GAME( 1995, drgnwrldv21j, drgnwrld, drgnwrld_igs012, drgnwrldj, igs011_state, drgnwrldv21j, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V021J)", GAME_SUPPORTS_SAVE )
-GAME( 1995, drgnwrldv20j, drgnwrld, drgnwrld_igs012, drgnwrldj, igs011_state, drgnwrldv20j, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V020J)", GAME_SUPPORTS_SAVE )
-GAME( 1995, drgnwrldv10c, drgnwrld, drgnwrld, drgnwrldc, igs011_state, drgnwrldv10c, ROT0, "IGS", "Zhong Guo Long (China, V010C)", GAME_SUPPORTS_SAVE )
-GAME( 1995, drgnwrldv11h, drgnwrld, drgnwrld, drgnwrldc, igs011_state, drgnwrldv11h, ROT0, "IGS", "Dong Fang Zhi Zhu (Hong Kong, V011H)", GAME_SUPPORTS_SAVE )
-GAME( 1995, lhb, 0, lhb, lhb, igs011_state, lhb, ROT0, "IGS", "Long Hu Bang (China, V035C)", GAME_SUPPORTS_SAVE )
-GAME( 1995, lhbv33c, lhb, lhb, lhb, igs011_state, lhbv33c, ROT0, "IGS", "Long Hu Bang (China, V033C)", GAME_SUPPORTS_SAVE )
-GAME( 1995, dbc, lhb, lhb, lhb, igs011_state, dbc, ROT0, "IGS", "Da Ban Cheng (Hong Kong, V027H)", GAME_SUPPORTS_SAVE )
-GAME( 1995, ryukobou, lhb, lhb, lhb, igs011_state, ryukobou, ROT0, "IGS / Alta", "Mahjong Ryukobou (Japan, V030J)", GAME_SUPPORTS_SAVE )
-GAME( 1996, lhb2, 0, lhb2, lhb2, igs011_state, lhb2, ROT0, "IGS", "Long Hu Bang II (Hong Kong, V185H)", GAME_SUPPORTS_SAVE )
-GAME( 1996, xymg, 0, xymg, xymg, igs011_state, xymg, ROT0, "IGS", "Xing Yun Man Guan (China, V651C)", GAME_SUPPORTS_SAVE )
-GAME( 1996, wlcc, xymg, wlcc, wlcc, igs011_state, wlcc, ROT0, "IGS", "Wan Li Chang Cheng (China, V638C)", GAME_SUPPORTS_SAVE )
-GAME( 1996, vbowl, 0, vbowl, vbowl, igs011_state, vbowl, ROT0, "IGS", "Virtua Bowling (World, V101XCM)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE)
-GAME( 1996, vbowlj, vbowl, vbowl, vbowlj, igs011_state, vbowlj, ROT0, "IGS / Alta", "Virtua Bowling (Japan, V100JCM)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE)
-GAME( 1998, nkishusp, lhb2, nkishusp, nkishusp, igs011_state, nkishusp, ROT0, "IGS / Alta", "Mahjong Nenrikishu SP (Japan, V250J)", GAME_SUPPORTS_SAVE )
+GAME( 1997, drgnwrld, 0, drgnwrld, drgnwrld, igs011_state, drgnwrld, ROT0, "IGS", "Dragon World (World, V040O)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, drgnwrldv30, drgnwrld, drgnwrld, drgnwrld, igs011_state, drgnwrldv30, ROT0, "IGS", "Dragon World (World, V030O)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, drgnwrldv21, drgnwrld, drgnwrld_igs012, drgnwrld, igs011_state, drgnwrldv21, ROT0, "IGS", "Dragon World (World, V021O)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, drgnwrldv21j, drgnwrld, drgnwrld_igs012, drgnwrldj, igs011_state, drgnwrldv21j, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V021J)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, drgnwrldv20j, drgnwrld, drgnwrld_igs012, drgnwrldj, igs011_state, drgnwrldv20j, ROT0, "IGS / Alta", "Zhong Guo Long (Japan, V020J)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, drgnwrldv10c, drgnwrld, drgnwrld, drgnwrldc, igs011_state, drgnwrldv10c, ROT0, "IGS", "Zhong Guo Long (China, V010C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, drgnwrldv11h, drgnwrld, drgnwrld, drgnwrldc, igs011_state, drgnwrldv11h, ROT0, "IGS", "Dong Fang Zhi Zhu (Hong Kong, V011H)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, lhb, 0, lhb, lhb, igs011_state, lhb, ROT0, "IGS", "Long Hu Bang (China, V035C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, lhbv33c, lhb, lhb, lhb, igs011_state, lhbv33c, ROT0, "IGS", "Long Hu Bang (China, V033C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, dbc, lhb, lhb, lhb, igs011_state, dbc, ROT0, "IGS", "Da Ban Cheng (Hong Kong, V027H)", MACHINE_SUPPORTS_SAVE )
+GAME( 1995, ryukobou, lhb, lhb, lhb, igs011_state, ryukobou, ROT0, "IGS / Alta", "Mahjong Ryukobou (Japan, V030J)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, lhb2, 0, lhb2, lhb2, igs011_state, lhb2, ROT0, "IGS", "Long Hu Bang II (Hong Kong, V185H)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, xymg, 0, xymg, xymg, igs011_state, xymg, ROT0, "IGS", "Xing Yun Man Guan (China, V651C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, wlcc, xymg, wlcc, wlcc, igs011_state, wlcc, ROT0, "IGS", "Wan Li Chang Cheng (China, V638C)", MACHINE_SUPPORTS_SAVE )
+GAME( 1996, vbowl, 0, vbowl, vbowl, igs011_state, vbowl, ROT0, "IGS", "Virtua Bowling (World, V101XCM)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
+GAME( 1996, vbowlj, vbowl, vbowl, vbowlj, igs011_state, vbowlj, ROT0, "IGS / Alta", "Virtua Bowling (Japan, V100JCM)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE)
+GAME( 1998, nkishusp, lhb2, nkishusp, nkishusp, igs011_state, nkishusp, ROT0, "IGS / Alta", "Mahjong Nenrikishu SP (Japan, V250J)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/igs017.c b/src/mame/drivers/igs017.c
index c049153dde3..ac979aad5b0 100644
--- a/src/mame/drivers/igs017.c
+++ b/src/mame/drivers/igs017.c
@@ -53,6 +53,7 @@ Notes:
#include "machine/igs025.h"
#include "machine/igs022.h"
#include "machine/ticket.h"
+#include "video/igs017_igs031.h"
class igs017_state : public driver_device
{
@@ -61,54 +62,38 @@ public:
: driver_device(mconfig, type, tag),
m_input_addr(-1),
m_maincpu(*this, "maincpu"),
- m_spriteram(*this, "spriteram", 0),
- m_fg_videoram(*this, "fg_videoram", 0),
- m_bg_videoram(*this, "bg_videoram", 0),
m_oki(*this, "oki"),
m_hopperdev(*this, "hopper"),
m_igs025(*this,"igs025"),
m_igs022(*this,"igs022"),
- m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"),
m_palette(*this, "palette"),
- m_generic_paletteram_8(*this, "paletteram"),
- m_generic_paletteram_16(*this, "paletteram"),
- m_decrypted_opcodes(*this, "decrypted_opcodes")
+ m_decrypted_opcodes(*this, "decrypted_opcodes"),
+ m_igs017_igs031(*this, "igs017_igs031")
{ }
int m_input_addr;
required_device<cpu_device> m_maincpu;
- optional_shared_ptr<UINT8> m_spriteram;
- optional_shared_ptr<UINT8> m_fg_videoram;
- optional_shared_ptr<UINT8> m_bg_videoram;
+
required_device<okim6295_device> m_oki;
optional_device<ticket_dispenser_device> m_hopperdev;
optional_device<igs025_device> m_igs025; // Mj Shuang Long Qiang Zhu 2
optional_device<igs022_device> m_igs022; // Mj Shuang Long Qiang Zhu 2
- required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
- optional_shared_ptr<UINT8> m_generic_paletteram_8;
- optional_shared_ptr<UINT16> m_generic_paletteram_16;
optional_shared_ptr<UINT8> m_decrypted_opcodes;
+ required_device<igs017_igs031_device> m_igs017_igs031;
+
void igs025_to_igs022_callback( void );
- int m_toggle;
- int m_debug_addr;
- int m_debug_width;
- UINT8 m_video_disable;
- tilemap_t *m_fg_tilemap;
- tilemap_t *m_bg_tilemap;
- UINT8 *m_sprites_gfx;
- int m_sprites_gfx_size;
- int m_nmi_enable;
- int m_irq_enable;
+
+
UINT8 m_input_select;
UINT8 m_hopper;
UINT16 m_igs_magic[2];
UINT8 m_scramble_data;
- int m_irq1_enable;
+
UINT8 m_dsw_select;
// lhzb2a protection:
@@ -122,38 +107,28 @@ public:
// IGS029 protection (mgcs)
UINT32 m_igs029_mgcs_long;
- int m_irq2_enable;
- DECLARE_WRITE8_MEMBER(video_disable_w);
- DECLARE_WRITE16_MEMBER(video_disable_lsb_w);
- DECLARE_WRITE8_MEMBER(fg_w);
- DECLARE_WRITE8_MEMBER(bg_w);
- DECLARE_READ16_MEMBER(fg_lsb_r);
- DECLARE_WRITE16_MEMBER(fg_lsb_w);
- DECLARE_READ16_MEMBER(bg_lsb_r);
- DECLARE_WRITE16_MEMBER(bg_lsb_w);
- DECLARE_READ16_MEMBER(spriteram_lsb_r);
- DECLARE_WRITE16_MEMBER(spriteram_lsb_w);
- DECLARE_WRITE8_MEMBER(nmi_enable_w);
- DECLARE_WRITE8_MEMBER(irq_enable_w);
+
DECLARE_WRITE8_MEMBER(input_select_w);
DECLARE_READ8_MEMBER(input_r);
DECLARE_WRITE16_MEMBER(mgcs_magic_w);
DECLARE_READ16_MEMBER(mgcs_magic_r);
- DECLARE_WRITE16_MEMBER(irq1_enable_w);
- DECLARE_WRITE16_MEMBER(irq2_enable_w);
- DECLARE_WRITE16_MEMBER(mgcs_paletteram_w);
- DECLARE_WRITE16_MEMBER(sdmg2_paletteram_w);
+
+ UINT16 mgcs_palette_bitswap(UINT16 bgr);
+ UINT16 lhzb2a_palette_bitswap(UINT16 bgr);
+ UINT16 tjsb_palette_bitswap(UINT16 bgr);
+ UINT16 slqz2_palette_bitswap(UINT16 bgr);
+
DECLARE_READ8_MEMBER(sdmg2_keys_r);
DECLARE_WRITE16_MEMBER(sdmg2_magic_w);
DECLARE_READ16_MEMBER(sdmg2_magic_r);
DECLARE_READ8_MEMBER(mgdh_keys_r);
DECLARE_WRITE16_MEMBER(mgdha_magic_w);
DECLARE_READ16_MEMBER(mgdha_magic_r);
- DECLARE_WRITE8_MEMBER(tjsb_paletteram_w);
+
DECLARE_WRITE8_MEMBER(tjsb_output_w);
DECLARE_READ8_MEMBER(tjsb_input_r);
DECLARE_READ8_MEMBER(spkrform_input_r);
- DECLARE_WRITE16_MEMBER(lhzb2a_paletteram_w);
+
DECLARE_READ16_MEMBER(lhzb2a_input_r);
DECLARE_WRITE16_MEMBER(lhzb2a_input_addr_w);
DECLARE_WRITE16_MEMBER(lhzb2a_input_select_w);
@@ -168,7 +143,7 @@ public:
DECLARE_WRITE16_MEMBER(lhzb2_magic_w);
DECLARE_READ16_MEMBER(lhzb2_magic_r);
- DECLARE_WRITE16_MEMBER(slqz2_paletteram_w);
+
DECLARE_WRITE16_MEMBER(slqz2_magic_w);
DECLARE_READ16_MEMBER(slqz2_magic_r);
DECLARE_READ8_MEMBER(mgcs_keys_r);
@@ -186,8 +161,7 @@ public:
DECLARE_DRIVER_INIT(tarzana);
DECLARE_DRIVER_INIT(lhzb2a);
DECLARE_DRIVER_INIT(mgdha);
- TILE_GET_INFO_MEMBER(get_fg_tile_info);
- TILE_GET_INFO_MEMBER(get_bg_tile_info);
+
virtual void video_start();
virtual void machine_reset();
DECLARE_MACHINE_RESET(iqblocka);
@@ -197,10 +171,8 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(iqblocka_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(mgcs_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(mgdh_interrupt);
- void expand_sprites();
- void draw_sprite(bitmap_ind16 &bitmap,const rectangle &cliprect, int sx, int sy, int dimx, int dimy, int flipx, int flipy, int color, int addr);
- void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect);
- int debug_viewer(bitmap_ind16 &bitmap,const rectangle &cliprect);
+
+
void decrypt_program_rom(int mask, int a7, int a6, int a5, int a4, int a3, int a2, int a1, int a0);
void iqblocka_patch_rom();
void tjsb_decrypt_sprites();
@@ -220,7 +192,6 @@ public:
void igs017_state::machine_reset()
{
- m_video_disable = 0;
m_igs029_send_len = m_igs029_recv_len = 0;
}
@@ -228,274 +199,45 @@ void igs017_state::machine_reset()
Video Hardware
***************************************************************************/
-WRITE8_MEMBER(igs017_state::video_disable_w)
-{
- m_video_disable = data & 1;
- if (data & (~1))
- logerror("%s: unknown bits of video_disable written = %02x\n", machine().describe_context(), data);
-// popmessage("VIDEO %02X",data);
-}
-WRITE16_MEMBER(igs017_state::video_disable_lsb_w)
-{
- if (ACCESSING_BITS_0_7)
- video_disable_w(space,offset,data);
-}
-
-
-#define COLOR(_X) (((_X)>>2)&7)
-
-TILE_GET_INFO_MEMBER(igs017_state::get_fg_tile_info)
-{
- int code = m_fg_videoram[tile_index*4+0] + (m_fg_videoram[tile_index*4+1] << 8);
- int attr = m_fg_videoram[tile_index*4+2] + (m_fg_videoram[tile_index*4+3] << 8);
- SET_TILE_INFO_MEMBER(0, code, COLOR(attr), TILE_FLIPXY( attr >> 5 ));
-}
-TILE_GET_INFO_MEMBER(igs017_state::get_bg_tile_info)
-{
- int code = m_bg_videoram[tile_index*4+0] + (m_bg_videoram[tile_index*4+1] << 8);
- int attr = m_bg_videoram[tile_index*4+2] + (m_bg_videoram[tile_index*4+3] << 8);
- SET_TILE_INFO_MEMBER(0, code, COLOR(attr)+8, TILE_FLIPXY( attr >> 5 ));
-}
-
-WRITE8_MEMBER(igs017_state::fg_w)
-{
- m_fg_videoram[offset] = data;
- m_fg_tilemap->mark_tile_dirty(offset/4);
-}
-
-WRITE8_MEMBER(igs017_state::bg_w)
-{
- m_bg_videoram[offset] = data;
- m_bg_tilemap->mark_tile_dirty(offset/4);
-}
-
-// 16-bit handlers for an 8-bit chip
-
-READ16_MEMBER(igs017_state::fg_lsb_r)
-{
- return m_fg_videoram[offset];
-}
-WRITE16_MEMBER(igs017_state::fg_lsb_w)
-{
- if (ACCESSING_BITS_0_7)
- fg_w(space,offset,data);
-}
-READ16_MEMBER(igs017_state::bg_lsb_r)
-{
- return m_bg_videoram[offset];
-}
-WRITE16_MEMBER(igs017_state::bg_lsb_w)
+void igs017_state::video_start()
{
- if (ACCESSING_BITS_0_7)
- bg_w(space,offset,data);
+ m_igs017_igs031->video_start();
}
-READ16_MEMBER(igs017_state::spriteram_lsb_r)
-{
- return m_spriteram[offset];
-}
-WRITE16_MEMBER(igs017_state::spriteram_lsb_w)
-{
- if (ACCESSING_BITS_0_7)
- m_spriteram[offset] = data;
-}
-
-
-
-// Eeach 16 bit word in the sprites gfx roms contains three 5 bit pens: x-22222-11111-00000 (little endian!).
-// This routine expands each word into three bytes.
-void igs017_state::expand_sprites()
+UINT32 igs017_state::screen_update_igs017(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- UINT8 *rom = memregion("sprites")->base();
- int size = memregion("sprites")->bytes();
- int i;
-
- m_sprites_gfx_size = size / 2 * 3;
- m_sprites_gfx = auto_alloc_array(machine(), UINT8, m_sprites_gfx_size);
-
- for (i = 0; i < size / 2 ; i++)
- {
- UINT16 pens = (rom[i*2+1] << 8) | rom[i*2];
-
- m_sprites_gfx[i * 3 + 0] = (pens >> 0) & 0x1f;
- m_sprites_gfx[i * 3 + 1] = (pens >> 5) & 0x1f;
- m_sprites_gfx[i * 3 + 2] = (pens >> 10) & 0x1f;
- }
+ m_igs017_igs031->screen_update_igs017(screen, bitmap, cliprect);
+ return 0;
}
-void igs017_state::video_start()
+// palette bitswap callbacks
+UINT16 igs017_state::mgcs_palette_bitswap(UINT16 bgr)
{
- m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(igs017_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32);
- m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(igs017_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32);
-
- m_fg_tilemap->set_transparent_pen(0xf);
- m_bg_tilemap->set_transparent_pen(0xf);
+ bgr = ((bgr & 0xff00) >> 8) | ((bgr & 0x00ff) << 8);
- m_toggle = 0;
- m_debug_addr = 0;
- m_debug_width = 512;
-
- expand_sprites();
+ return BITSWAP16(bgr, 7, 8, 9, 2, 14, 3, 13, 15, 12, 11, 10, 0, 1, 4, 5, 6);
}
-/***************************************************************************
- Sprites Format
-
- Offset: Bits: Value:
-
- 0.b Y (low)
-
- 1.b 7654 32-- Size Y (low)
- ---- --10 Y (high)
-
- 2.b 7654 3--- X (low)
- ---- -210 Size Y (high)
-
- 3.b 76-- ---- Size X (low)
- --5- ----
- ---4 3210 X (high)
-
- 4.b 76-- ---- Code (low)
- --54 3210 Size X (high)
-
- 5.b Code (mid low)
-
- 6.b Code (mid high)
-
- 7.b 765- ---- Color
- ---4 ---- Flip X
- ---- 3---
- ---- -210 Code (high)
-
- Code = ROM Address / 2 = Pixel / 3
-
-***************************************************************************/
-
-void igs017_state::draw_sprite(bitmap_ind16 &bitmap,const rectangle &cliprect, int sx, int sy, int dimx, int dimy, int flipx, int flipy, int color, int addr)
+UINT16 igs017_state::lhzb2a_palette_bitswap(UINT16 bgr)
{
- // prepare GfxElement on the fly
-
- // Bounds checking
- if ( addr + dimx * dimy >= m_sprites_gfx_size )
- return;
-
- gfx_element gfx(m_palette, m_sprites_gfx + addr, dimx, dimy, dimx, m_palette->entries(), 0x100, 32);
-
- gfx.transpen(bitmap,cliprect,
- 0, color,
- flipx, flipy,
- sx, sy, 0x1f );
+// bgr = ((bgr & 0xff00) >> 8) | ((bgr & 0x00ff) << 8);
+ return BITSWAP16(bgr, 15,9,13,12,11,5,4,8,7,6,0,14,3,2,1,10);
}
-void igs017_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)
+UINT16 igs017_state::tjsb_palette_bitswap(UINT16 bgr)
{
- UINT8 *s = m_spriteram;
- UINT8 *end = m_spriteram + 0x800;
-
- for ( ; s < end; s += 8 )
- {
- int x,y, sx,sy, dimx,dimy, flipx,flipy, addr,color;
-
- y = s[0] + (s[1] << 8);
- x = s[2] + (s[3] << 8);
- addr = (s[4] >> 6) | (s[5] << 2) | (s[6] << 10) | ((s[7] & 0x07) << 18);
- addr *= 3;
-
- flipx = s[7] & 0x10;
- flipy = 0;
-
- dimx = ((((s[4] & 0x3f)<<2) | ((s[3] & 0xc0)>>6))+1) * 3;
- dimy = ((y >> 10) | ((x & 0x03)<<6))+1;
-
- x >>= 3;
- sx = (x & 0x1ff) - (x & 0x200);
- sy = (y & 0x1ff) - (y & 0x200);
-
- // sprites list stop (used by mgdh & sdmg2 during don den)
- if (sy == -0x200)
- break;
-
- color = (s[7] & 0xe0) >> 5;
-
- draw_sprite(bitmap, cliprect, sx, sy, dimx, dimy, flipx, flipy, color, addr);
- }
+ // bitswap
+ return BITSWAP16(bgr, 15,12,3,6,10,5,4,2,9,13,8,7,11,1,0,14);
}
-// A simple gfx viewer (toggle with T)
-int igs017_state::debug_viewer(bitmap_ind16 &bitmap,const rectangle &cliprect)
+UINT16 igs017_state::slqz2_palette_bitswap(UINT16 bgr)
{
-#ifdef MAME_DEBUG
- if (machine().input().code_pressed_once(KEYCODE_T)) m_toggle = 1-m_toggle;
- if (m_toggle) {
- int h = 256, w = m_debug_width, a = m_debug_addr;
-
- if (machine().input().code_pressed(KEYCODE_O)) w += 1;
- if (machine().input().code_pressed(KEYCODE_I)) w -= 1;
-
- if (machine().input().code_pressed(KEYCODE_U)) w += 8;
- if (machine().input().code_pressed(KEYCODE_Y)) w -= 8;
-
- if (machine().input().code_pressed(KEYCODE_RIGHT)) a += 1;
- if (machine().input().code_pressed(KEYCODE_LEFT)) a -= 1;
-
- if (machine().input().code_pressed(KEYCODE_DOWN)) a += w;
- if (machine().input().code_pressed(KEYCODE_UP)) a -= w;
-
- if (machine().input().code_pressed(KEYCODE_PGDN)) a += w * h;
- if (machine().input().code_pressed(KEYCODE_PGUP)) a -= w * h;
-
- if (a < 0) a = 0;
- if (a > m_sprites_gfx_size) a = m_sprites_gfx_size;
-
- if (w <= 0) w = 0;
- if (w > 1024) w = 1024;
-
- bitmap.fill(0, cliprect);
-
- draw_sprite(bitmap, cliprect, 0,0, w,h, 0,0, 0, a);
-
- popmessage("a: %08X w: %03X p: %02x-%02x-%02x",a,w,m_sprites_gfx[a/3*3+0],m_sprites_gfx[a/3*3+1],m_sprites_gfx[a/3*3+2]);
- m_debug_addr = a;
- m_debug_width = w;
- osd_sleep(200000);
- return 1;
- }
-#endif
- return 0;
+ return BITSWAP16(bgr, 15,14,9,4,11,10,12,3,7,6,5,8,13,2,1,0);
}
-UINT32 igs017_state::screen_update_igs017(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- int layers_ctrl = -1;
-
-#ifdef MAME_DEBUG
- if (machine().input().code_pressed(KEYCODE_Z))
- {
- int mask = 0;
- if (machine().input().code_pressed(KEYCODE_Q)) mask |= 1;
- if (machine().input().code_pressed(KEYCODE_W)) mask |= 2;
- if (machine().input().code_pressed(KEYCODE_A)) mask |= 4;
- if (mask != 0) layers_ctrl &= mask;
- }
-#endif
-
- if (debug_viewer(bitmap,cliprect))
- return 0;
-
- bitmap.fill(m_palette->black_pen(), cliprect);
-
- if (m_video_disable)
- return 0;
-
- if (layers_ctrl & 1) m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- if (layers_ctrl & 4) draw_sprites(bitmap, cliprect);
- if (layers_ctrl & 2) m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
-
- return 0;
-}
/***************************************************************************
Decryption
@@ -697,7 +439,7 @@ void igs017_state::mgcs_decrypt_tiles()
for (i = 0;i < length;i++)
{
int addr = (i & ~0xffff) | BITSWAP16(i,15,14,13,12,11,10,6,7,8,9,5,4,3,2,1,0);
- rom[i] = tmp[addr];
+ rom[i^1] = BITSWAP8(tmp[addr],0,1,2,3,4,5,6,7);
}
}
@@ -1353,19 +1095,7 @@ static ADDRESS_MAP_START( decrypted_opcodes_map, AS_DECRYPTED_OPCODES, 8, igs017
AM_RANGE( 0x00000, 0x3ffff ) AM_ROM AM_SHARE("decrypted_opcodes")
ADDRESS_MAP_END
-WRITE8_MEMBER(igs017_state::nmi_enable_w)
-{
- m_nmi_enable = data & 1;
- if (data & (~1))
- logerror("%s: nmi_enable = %02x\n", machine().describe_context(), data);
-}
-WRITE8_MEMBER(igs017_state::irq_enable_w)
-{
- m_irq_enable = data & 1;
- if (data & (~1))
- logerror("%s: irq_enable = %02x\n", machine().describe_context(), data);
-}
WRITE8_MEMBER(igs017_state::input_select_w)
{
@@ -1413,20 +1143,7 @@ READ8_MEMBER(igs017_state::input_r)
static ADDRESS_MAP_START( iqblocka_io, AS_IO, 8, igs017_state )
AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs
- AM_RANGE( 0x1000, 0x17ff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0x1800, 0x1bff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE( 0x1c00, 0x1fff ) AM_RAM
-
-// AM_RANGE(0x200a, 0x200a) AM_WRITENOP
-
- AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD("ppi8255", i8255_device, read)
- AM_RANGE( 0x2012, 0x2012 ) AM_WRITE(video_disable_w )
-
- AM_RANGE( 0x2014, 0x2014 ) AM_WRITE(nmi_enable_w )
- AM_RANGE( 0x2015, 0x2015 ) AM_WRITE(irq_enable_w )
-
- AM_RANGE( 0x4000, 0x5fff ) AM_RAM_WRITE(fg_w ) AM_SHARE("fg_videoram")
- AM_RANGE( 0x6000, 0x7fff ) AM_RAM_WRITE(bg_w ) AM_SHARE("bg_videoram")
+ AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("igs017_igs031", igs017_igs031_device, read,write)
AM_RANGE( 0x8000, 0x8000 ) AM_WRITE(input_select_w )
AM_RANGE( 0x8001, 0x8001 ) AM_READ(input_r )
@@ -1694,48 +1411,15 @@ READ8_MEMBER(igs017_state::mgcs_keys_r)
return 0xff;
}
-WRITE16_MEMBER(igs017_state::irq1_enable_w)
-{
- if (ACCESSING_BITS_0_7)
- m_irq1_enable = data & 1;
-
- if (data != 0 && data != 1 && data != 0xff)
- logerror("%s: irq1_enable = %04x\n", machine().describe_context(), data);
-}
-
-WRITE16_MEMBER(igs017_state::irq2_enable_w)
-{
- if (ACCESSING_BITS_0_7)
- m_irq2_enable = data & 1;
-
- if (data != 0 && data != 1 && data != 0xff)
- logerror("%s: irq2_enable = %04x\n", machine().describe_context(), data);
-}
-
-WRITE16_MEMBER(igs017_state::mgcs_paletteram_w)
-{
- COMBINE_DATA(&m_generic_paletteram_16[offset]);
-
- int bgr = ((m_generic_paletteram_16[offset/2*2+0] & 0xff) << 8) | (m_generic_paletteram_16[offset/2*2+1] & 0xff);
- // bitswap
- bgr = BITSWAP16(bgr, 7,8,9,2,14,3,13,15,12,11,10,0,1,4,5,6);
-
- m_palette->set_pen_color(offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
-}
static ADDRESS_MAP_START( mgcs, AS_PROGRAM, 16, igs017_state )
AM_RANGE( 0x000000, 0x07ffff ) AM_ROM
AM_RANGE( 0x300000, 0x303fff ) AM_RAM
AM_RANGE( 0x49c000, 0x49c003 ) AM_WRITE(mgcs_magic_w ) AM_READ(mgcs_magic_r )
- AM_RANGE( 0xa02000, 0xa02fff ) AM_READWRITE(spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
- AM_RANGE( 0xa03000, 0xa037ff ) AM_RAM_WRITE(mgcs_paletteram_w ) AM_SHARE("paletteram")
- AM_RANGE( 0xa04020, 0xa04027 ) AM_DEVREAD8("ppi8255", i8255_device, read, 0x00ff)
- AM_RANGE( 0xa04024, 0xa04025 ) AM_WRITE(video_disable_lsb_w )
- AM_RANGE( 0xa04028, 0xa04029 ) AM_RAM_WRITE(irq2_enable_w )
- AM_RANGE( 0xa0402a, 0xa0402b ) AM_RAM_WRITE(irq1_enable_w )
- AM_RANGE( 0xa08000, 0xa0bfff ) AM_READWRITE(fg_lsb_r, fg_lsb_w ) AM_SHARE("fg_videoram")
- AM_RANGE( 0xa0c000, 0xa0ffff ) AM_READWRITE(bg_lsb_r, bg_lsb_w ) AM_SHARE("bg_videoram")
+
+ AM_RANGE( 0xa00000, 0xa0ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+
AM_RANGE( 0xa12000, 0xa12001 ) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
// oki banking through protection (code at $1a350)?
ADDRESS_MAP_END
@@ -1743,16 +1427,6 @@ ADDRESS_MAP_END
// sdmg2
-
-WRITE16_MEMBER(igs017_state::sdmg2_paletteram_w)
-{
- COMBINE_DATA(&m_generic_paletteram_16[offset]);
-
- int bgr = ((m_generic_paletteram_16[offset/2*2+1] & 0xff) << 8) | (m_generic_paletteram_16[offset/2*2+0] & 0xff);
-
- m_palette->set_pen_color(offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
-}
-
READ8_MEMBER(igs017_state::sdmg2_keys_r)
{
if (~m_input_select & 0x01) return ioport("KEY0")->read();
@@ -1824,14 +1498,9 @@ READ16_MEMBER(igs017_state::sdmg2_magic_r)
static ADDRESS_MAP_START( sdmg2, AS_PROGRAM, 16, igs017_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
- AM_RANGE(0x202000, 0x202fff) AM_READWRITE(spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
- AM_RANGE(0x203000, 0x2037ff) AM_RAM_WRITE(sdmg2_paletteram_w ) AM_SHARE("paletteram")
- AM_RANGE(0x204020, 0x204027) AM_DEVREAD8("ppi8255", i8255_device, read, 0x00ff)
- AM_RANGE(0x204024, 0x204025) AM_WRITE(video_disable_lsb_w )
- AM_RANGE(0x204028, 0x204029) AM_WRITE(irq2_enable_w )
- AM_RANGE(0x20402a, 0x20402b) AM_WRITE(irq1_enable_w )
- AM_RANGE(0x208000, 0x20bfff) AM_READWRITE(fg_lsb_r, fg_lsb_w ) AM_SHARE("fg_videoram")
- AM_RANGE(0x20c000, 0x20ffff) AM_READWRITE(bg_lsb_r, bg_lsb_w ) AM_SHARE("bg_videoram")
+
+ AM_RANGE(0x200000, 0x20ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+
AM_RANGE(0x210000, 0x210001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
AM_RANGE(0x300000, 0x300003) AM_WRITE(sdmg2_magic_w )
AM_RANGE(0x300002, 0x300003) AM_READ(sdmg2_magic_r )
@@ -1944,15 +1613,9 @@ static ADDRESS_MAP_START( mgdha_map, AS_PROGRAM, 16, igs017_state )
AM_RANGE(0x600000, 0x603fff) AM_RAM
AM_RANGE(0x876000, 0x876003) AM_WRITE(mgdha_magic_w )
AM_RANGE(0x876002, 0x876003) AM_READ(mgdha_magic_r )
- AM_RANGE(0xa02000, 0xa02fff) AM_READWRITE(spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
- AM_RANGE(0xa03000, 0xa037ff) AM_RAM_WRITE(sdmg2_paletteram_w ) AM_SHARE("paletteram")
-// AM_RANGE(0xa04014, 0xa04015) // written with FF at boot
- AM_RANGE(0xa04020, 0xa04027) AM_DEVREAD8("ppi8255", i8255_device, read, 0x00ff)
- AM_RANGE(0xa04024, 0xa04025) AM_WRITE(video_disable_lsb_w )
- AM_RANGE(0xa04028, 0xa04029) AM_WRITE(irq2_enable_w )
- AM_RANGE(0xa0402a, 0xa0402b) AM_WRITE(irq1_enable_w )
- AM_RANGE(0xa08000, 0xa0bfff) AM_READWRITE(fg_lsb_r, fg_lsb_w ) AM_SHARE("fg_videoram")
- AM_RANGE(0xa0c000, 0xa0ffff) AM_READWRITE(bg_lsb_r, bg_lsb_w ) AM_SHARE("bg_videoram")
+
+ AM_RANGE(0xa00000, 0xa0ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+
AM_RANGE(0xa10000, 0xa10001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
ADDRESS_MAP_END
@@ -1960,17 +1623,6 @@ ADDRESS_MAP_END
// tjsb
-WRITE8_MEMBER(igs017_state::tjsb_paletteram_w)
-{
- m_generic_paletteram_8[offset] = data;
- int bgr = (m_generic_paletteram_8[offset/2*2+1] << 8) | m_generic_paletteram_8[offset/2*2+0];
-
- // bitswap
- bgr = BITSWAP16(bgr, 15,12,3,6,10,5,4,2,9,13,8,7,11,1,0,14);
-
- m_palette->set_pen_color(offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
-}
-
WRITE8_MEMBER(igs017_state::tjsb_output_w)
{
switch(m_input_select)
@@ -2033,20 +1685,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tjsb_io, AS_IO, 8, igs017_state )
AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs
- AM_RANGE( 0x1000, 0x17ff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0x1800, 0x1bff ) AM_RAM_WRITE(tjsb_paletteram_w ) AM_SHARE("paletteram")
- AM_RANGE( 0x1c00, 0x1fff ) AM_RAM
-
-// AM_RANGE(0x200a, 0x200a) AM_WRITENOP
-
- AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD("ppi8255", i8255_device, read)
- AM_RANGE( 0x2012, 0x2012 ) AM_WRITE(video_disable_w )
+ AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("igs017_igs031", igs017_igs031_device, read,write)
- AM_RANGE( 0x2014, 0x2014 ) AM_WRITE(nmi_enable_w )
- AM_RANGE( 0x2015, 0x2015 ) AM_WRITE(irq_enable_w )
-
- AM_RANGE( 0x4000, 0x5fff ) AM_RAM_WRITE(fg_w ) AM_SHARE("fg_videoram")
- AM_RANGE( 0x6000, 0x7fff ) AM_RAM_WRITE(bg_w ) AM_SHARE("bg_videoram")
AM_RANGE( 0x9000, 0x9000 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
@@ -2086,18 +1726,7 @@ READ8_MEMBER(igs017_state::spkrform_input_r)
static ADDRESS_MAP_START( spkrform_io, AS_IO, 8, igs017_state )
AM_RANGE( 0x0000, 0x003f ) AM_RAM // internal regs
- AM_RANGE( 0x1000, 0x17ff ) AM_RAM AM_SHARE("spriteram")
- AM_RANGE( 0x1800, 0x1bff ) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
- AM_RANGE( 0x1c00, 0x1fff ) AM_RAM
-
- AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD("ppi8255", i8255_device, read)
- AM_RANGE( 0x2012, 0x2012 ) AM_WRITE(video_disable_w )
-
- AM_RANGE( 0x2014, 0x2014 ) AM_WRITE(nmi_enable_w )
- AM_RANGE( 0x2015, 0x2015 ) AM_WRITE(irq_enable_w )
-
- AM_RANGE( 0x4000, 0x5fff ) AM_RAM_WRITE(fg_w ) AM_SHARE("fg_videoram")
- AM_RANGE( 0x6000, 0x7fff ) AM_RAM_WRITE(bg_w ) AM_SHARE("bg_videoram")
+ AM_RANGE( 0x0000, 0x7fff ) AM_DEVREADWRITE("igs017_igs031", igs017_igs031_device, read,write)
AM_RANGE( 0x8000, 0x8000 ) AM_DEVREADWRITE("oki", okim6295_device, read, write)
@@ -2177,14 +1806,9 @@ static ADDRESS_MAP_START( lhzb2, AS_PROGRAM, 16, igs017_state )
AM_RANGE(0x500000, 0x503fff) AM_RAM
AM_RANGE(0x910000, 0x910003) AM_WRITE( lhzb2_magic_w )
AM_RANGE(0x910002, 0x910003) AM_READ( lhzb2_magic_r )
- AM_RANGE(0xb02000, 0xb02fff) AM_READWRITE( spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
- AM_RANGE(0xb03000, 0xb037ff) AM_RAM_WRITE( lhzb2a_paletteram_w ) AM_SHARE("paletteram")
- AM_RANGE(0xb04020, 0xb04027) AM_DEVREAD8("ppi8255", i8255_device, read, 0x00ff)
- AM_RANGE(0xb04024, 0xb04025) AM_WRITE( video_disable_lsb_w )
- AM_RANGE(0xb04028, 0xb04029) AM_WRITE( irq2_enable_w )
- AM_RANGE(0xb0402a, 0xb0402b) AM_WRITE( irq1_enable_w )
- AM_RANGE(0xb08000, 0xb0bfff) AM_READWRITE( fg_lsb_r, fg_lsb_w ) AM_SHARE("fg_videoram")
- AM_RANGE(0xb0c000, 0xb0ffff) AM_READWRITE( bg_lsb_r, bg_lsb_w ) AM_SHARE("bg_videoram")
+
+ AM_RANGE( 0xb00000, 0xb0ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+
AM_RANGE(0xb10000, 0xb10001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
ADDRESS_MAP_END
@@ -2422,18 +2046,6 @@ READ16_MEMBER(igs017_state::lhzb2a_prot2_r)
-WRITE16_MEMBER(igs017_state::lhzb2a_paletteram_w)
-{
- COMBINE_DATA(&m_generic_paletteram_16[offset]);
-
- int bgr = ((m_generic_paletteram_16[offset/2*2+1] & 0xff) << 8) | (m_generic_paletteram_16[offset/2*2+0] & 0xff);
-
- // bitswap
- bgr = BITSWAP16(bgr, 15,9,13,12,11,5,4,8,7,6,0,14,3,2,1,10);
-
- m_palette->set_pen_color(offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
-}
-
READ16_MEMBER(igs017_state::lhzb2a_input_r)
{
switch (offset*2)
@@ -2511,13 +2123,9 @@ static ADDRESS_MAP_START( lhzb2a, AS_PROGRAM, 16, igs017_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x500000, 0x503fff) AM_RAM
// AM_RANGE(0x910000, 0x910003) accesses appear to be from leftover code where the final checks were disabled
- AM_RANGE(0xb02000, 0xb02fff) AM_READWRITE( spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
- AM_RANGE(0xb03000, 0xb037ff) AM_RAM_WRITE( lhzb2a_paletteram_w ) AM_SHARE("paletteram")
- AM_RANGE(0xb04024, 0xb04025) AM_WRITE( video_disable_lsb_w )
- AM_RANGE(0xb04028, 0xb04029) AM_WRITE( irq2_enable_w )
- AM_RANGE(0xb0402a, 0xb0402b) AM_WRITE( irq1_enable_w )
- AM_RANGE(0xb08000, 0xb0bfff) AM_READWRITE( fg_lsb_r, fg_lsb_w ) AM_SHARE("fg_videoram")
- AM_RANGE(0xb0c000, 0xb0ffff) AM_READWRITE( bg_lsb_r, bg_lsb_w ) AM_SHARE("bg_videoram")
+
+ AM_RANGE( 0xb00000, 0xb0ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+
AM_RANGE(0xb10000, 0xb10001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
AM_RANGE(0xb12000, 0xb12001) AM_WRITE( lhzb2a_input_select_w )
// Inputs dynamically mapped at xx8000, protection at xx4000 (xx = f0 initially). xx written to xxc000
@@ -2527,18 +2135,6 @@ ADDRESS_MAP_END
// slqz2
-WRITE16_MEMBER(igs017_state::slqz2_paletteram_w)
-{
- COMBINE_DATA(&m_generic_paletteram_16[offset]);
-
- int bgr = ((m_generic_paletteram_16[offset/2*2+1] & 0xff) << 8) | (m_generic_paletteram_16[offset/2*2+0] & 0xff);
-
- // bitswap
- bgr = BITSWAP16(bgr, 15,14,9,4,11,10,12,3,7,6,5,8,13,2,1,0);
-
- m_palette->set_pen_color(offset/2, pal5bit(bgr >> 0), pal5bit(bgr >> 5), pal5bit(bgr >> 10));
-}
-
WRITE16_MEMBER(igs017_state::slqz2_magic_w)
{
COMBINE_DATA(&m_igs_magic[offset]);
@@ -2591,14 +2187,10 @@ static ADDRESS_MAP_START( slqz2, AS_PROGRAM, 16, igs017_state )
AM_RANGE(0x100000, 0x103fff) AM_RAM
AM_RANGE(0x602000, 0x602003) AM_WRITE( slqz2_magic_w )
AM_RANGE(0x602002, 0x602003) AM_READ( slqz2_magic_r )
- AM_RANGE(0x902000, 0x902fff) AM_READWRITE( spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
- AM_RANGE(0x903000, 0x9037ff) AM_RAM_WRITE( slqz2_paletteram_w ) AM_SHARE("paletteram")
- AM_RANGE(0x904020, 0x904027) AM_DEVREAD8("ppi8255", i8255_device, read, 0x00ff)
- AM_RANGE(0x904024, 0x904025) AM_WRITE( video_disable_lsb_w )
- AM_RANGE(0x904028, 0x904029) AM_WRITE( irq2_enable_w )
- AM_RANGE(0x90402a, 0x90402b) AM_WRITE( irq1_enable_w )
- AM_RANGE(0x908000, 0x90bfff) AM_READWRITE( fg_lsb_r, fg_lsb_w ) AM_SHARE("fg_videoram")
- AM_RANGE(0x90c000, 0x90ffff) AM_READWRITE( bg_lsb_r, bg_lsb_w ) AM_SHARE("bg_videoram")
+
+ AM_RANGE(0x900000, 0x90ffff ) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0x00ff)
+
+
AM_RANGE(0x910000, 0x910001) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff )
ADDRESS_MAP_END
@@ -3601,55 +3193,6 @@ static INPUT_PORTS_START( spkrform )
INPUT_PORTS_END
-/***************************************************************************
- Graphics Layout
-***************************************************************************/
-
-static const gfx_layout layout_8x8x4 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 8*3,8*2,8*1,8*0 },
- { STEP8(0, 1) },
- { STEP8(0, 8*4) },
- 8*8*4
-};
-
-static const gfx_layout layout_8x8x4_swapped =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 8*2,8*3,8*0,8*1 },
- { STEP8(0, 1) },
- { STEP8(0, 8*4) },
- 8*8*4
-};
-
-static const gfx_layout layout_8x8x4_flipped =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- { 8*2,8*3,8*0,8*1 },
- { STEP8(7, -1) },
- { STEP8(0, 8*4) },
- 8*8*4
-};
-
-static GFXDECODE_START( igs017 )
- GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4, 0, 16 )
-GFXDECODE_END
-
-static GFXDECODE_START( igs017_swapped )
- GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4_swapped, 0, 16 )
-GFXDECODE_END
-
-static GFXDECODE_START( igs017_flipped )
- GFXDECODE_ENTRY( "tilemaps", 0, layout_8x8x4_flipped, 0, 16 )
-GFXDECODE_END
-
/***************************************************************************
Machine Drivers
@@ -3659,18 +3202,16 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::iqblocka_interrupt)
{
int scanline = param;
- if(scanline == 240 && m_irq_enable)
+ if(scanline == 240 && m_igs017_igs031->get_irq_enable())
m_maincpu->set_input_line(0, HOLD_LINE);
- if(scanline == 0 && m_nmi_enable)
+ if(scanline == 0 && m_igs017_igs031->get_nmi_enable())
m_maincpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
MACHINE_RESET_MEMBER(igs017_state,iqblocka)
{
- m_nmi_enable = 0;
- m_irq_enable = 0;
m_input_select = 0;
}
@@ -3696,11 +3237,13 @@ static MACHINE_CONFIG_START( iqblocka, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs017)
MCFG_PALETTE_ADD("palette", 0x100*2)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("ymsnd", YM2413, XTAL_3_579545MHz)
@@ -3722,18 +3265,17 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::mgcs_interrupt)
{
int scanline = param;
- if(scanline == 240 && m_irq1_enable)
+ if(scanline == 240 && m_igs017_igs031->get_irq_enable())
m_maincpu->set_input_line(1, HOLD_LINE);
- if(scanline == 0 && m_irq2_enable)
+ if(scanline == 0 && m_igs017_igs031->get_nmi_enable())
m_maincpu->set_input_line(2, HOLD_LINE);
}
MACHINE_RESET_MEMBER(igs017_state,mgcs)
{
MACHINE_RESET_CALL_MEMBER( iqblocka );
- m_irq1_enable = 0;
- m_irq2_enable = 0;
+
m_scramble_data = 0;
memset(m_igs_magic, 0, sizeof(m_igs_magic));
}
@@ -3760,10 +3302,12 @@ static MACHINE_CONFIG_START( mgcs, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs017_flipped)
MCFG_PALETTE_ADD("palette", 0x100*2)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+ MCFG_PALETTE_SCRAMBLE_CB( igs017_state, mgcs_palette_bitswap )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -3796,10 +3340,14 @@ static MACHINE_CONFIG_START( lhzb2, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs017_swapped)
+
MCFG_PALETTE_ADD("palette", 0x100*2)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+ MCFG_PALETTE_SCRAMBLE_CB( igs017_state, lhzb2a_palette_bitswap )
+
// protection
MCFG_DEVICE_ADD("igs025", IGS025, 0)
MCFG_IGS025_SET_EXTERNAL_EXECUTE( igs017_state, igs025_to_igs022_callback )
@@ -3841,7 +3389,11 @@ static MACHINE_CONFIG_START( lhzb2a, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs017_swapped)
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+ MCFG_PALETTE_SCRAMBLE_CB( igs017_state, lhzb2a_palette_bitswap )
+
+
MCFG_PALETTE_ADD("palette", 0x100*2)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
@@ -3877,10 +3429,13 @@ static MACHINE_CONFIG_START( slqz2, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs017)
MCFG_PALETTE_ADD("palette", 0x100*2)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+ MCFG_PALETTE_SCRAMBLE_CB( igs017_state, slqz2_palette_bitswap )
+
// protection
MCFG_DEVICE_ADD("igs025", IGS025, 0)
MCFG_IGS025_SET_EXTERNAL_EXECUTE( igs017_state, igs025_to_igs022_callback )
@@ -3917,7 +3472,10 @@ static MACHINE_CONFIG_START( sdmg2, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs017)
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+
+
MCFG_PALETTE_ADD("palette", 0x100*2)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
@@ -3935,10 +3493,10 @@ TIMER_DEVICE_CALLBACK_MEMBER(igs017_state::mgdh_interrupt)
{
int scanline = param;
- if(scanline == 240 && m_irq1_enable)
+ if(scanline == 240 && m_igs017_igs031->get_irq_enable())
m_maincpu->set_input_line(1, HOLD_LINE);
- if(scanline == 0 && m_irq2_enable)
+ if(scanline == 0 && m_igs017_igs031->get_nmi_enable())
m_maincpu->set_input_line(3, HOLD_LINE); // lev 3 instead of 2
}
@@ -3961,7 +3519,10 @@ static MACHINE_CONFIG_START( mgdha, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs017_swapped)
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+
+
MCFG_PALETTE_ADD("palette", 0x100*2)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
@@ -3997,7 +3558,11 @@ static MACHINE_CONFIG_START( tjsb, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs017)
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+ MCFG_PALETTE_SCRAMBLE_CB( igs017_state, tjsb_palette_bitswap )
+
+
MCFG_PALETTE_ADD("palette", 0x100*2)
MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB)
@@ -4036,10 +3601,12 @@ static MACHINE_CONFIG_START( spkrform, igs017_state )
MCFG_SCREEN_UPDATE_DRIVER(igs017_state, screen_update_igs017)
MCFG_SCREEN_PALETTE("palette")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs017)
MCFG_PALETTE_ADD("palette", 0x100*2)
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -4360,7 +3927,7 @@ ROM_START( lhzb2 )
ROM_LOAD16_WORD_SWAP( "m1101.u6", 0x000000, 0x400000, CRC(0114e9d1) SHA1(5b16170d3cd8b8e1662c949b7234fbdd2ca927f7) ) // FIXED BITS (0xxxxxxxxxxxxxxx)
ROM_REGION( 0x80000, "tilemaps", 0 ) // adddress scrambling
- ROM_LOAD( "m1103.u8", 0x00000, 0x80000, CRC(4d3776b4) SHA1(fa9b311b1a6ad56e136b66d090bc62ed5003b2f2) )
+ ROM_LOAD16_WORD_SWAP( "m1103.u8", 0x00000, 0x80000, CRC(4d3776b4) SHA1(fa9b311b1a6ad56e136b66d090bc62ed5003b2f2) )
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "s1102.u23", 0x00000, 0x80000, CRC(51ffe245) SHA1(849011b186096add657ab20d49d260ec23363ef3) )
@@ -4376,7 +3943,7 @@ ROM_START( lhzb2a )
ROM_LOAD16_WORD_SWAP( "m1101.u6", 0x000000, 0x400000, CRC(0114e9d1) SHA1(5b16170d3cd8b8e1662c949b7234fbdd2ca927f7) ) // FIXED BITS (0xxxxxxxxxxxxxxx)
ROM_REGION( 0x80000, "tilemaps", 0 ) // adddress scrambling
- ROM_LOAD( "m1103.u8", 0x00000, 0x80000, CRC(4d3776b4) SHA1(fa9b311b1a6ad56e136b66d090bc62ed5003b2f2) )
+ ROM_LOAD16_WORD_SWAP( "m1103.u8", 0x00000, 0x80000, CRC(4d3776b4) SHA1(fa9b311b1a6ad56e136b66d090bc62ed5003b2f2) )
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "s1102.u23", 0x00000, 0x80000, CRC(51ffe245) SHA1(849011b186096add657ab20d49d260ec23363ef3) )
@@ -4489,7 +4056,7 @@ ROM_START( mgdha )
ROM_LOAD( "m1001.u4", 0x000000, 0x400000, CRC(0cfb60d6) SHA1(e099aca730e7fd91a72915c27e569ad3d21f0d8f) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
ROM_REGION( 0x20000, "tilemaps", 0 )
- ROM_LOAD( "text.u6", 0x00000, 0x20000, CRC(db50f8fc) SHA1(e2ce4a42f5bdc0b4b7988ad9e8d14661f17c3d51) )
+ ROM_LOAD16_WORD_SWAP( "text.u6", 0x00000, 0x20000, CRC(db50f8fc) SHA1(e2ce4a42f5bdc0b4b7988ad9e8d14661f17c3d51) )
ROM_REGION( 0x80000, "oki", 0 )
ROM_LOAD( "s1002.u22", 0x00000, 0x80000, CRC(ac6b55f2) SHA1(7ff91fd1107272ad6bce071dc9ae2f374ebf5e3e) )
@@ -4665,17 +4232,17 @@ ROM_START( spkrform )
ROM_END
-GAME( 1996, iqblocka, iqblock, iqblocka, iqblocka, igs017_state, iqblocka, ROT0, "IGS", "Shu Zi Le Yuan (V127M)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
-GAME( 1996, iqblockf, iqblock, iqblocka, iqblocka, igs017_state, iqblockf, ROT0, "IGS", "Shu Zi Le Yuan (V113FR)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
+GAME( 1996, iqblocka, iqblock, iqblocka, iqblocka, igs017_state, iqblocka, ROT0, "IGS", "Shu Zi Le Yuan (V127M)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1996, iqblockf, iqblock, iqblocka, iqblocka, igs017_state, iqblockf, ROT0, "IGS", "Shu Zi Le Yuan (V113FR)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
GAME( 1997, mgdh, 0, mgdha, mgdh, igs017_state, mgdh, ROT0, "IGS", "Mahjong Man Guan Da Heng (Taiwan, V125T1)", 0 )
GAME( 1997, mgdha, mgdh, mgdha, mgdh , igs017_state, mgdha, ROT0, "IGS", "Mahjong Man Guan Da Heng (Taiwan, V123T1)", 0 )
GAME( 1997, sdmg2, 0, sdmg2, sdmg2, igs017_state, sdmg2, ROT0, "IGS", "Mahjong Super Da Man Guan II (China, V754C)", 0 )
-GAME( 1997, tjsb, 0, tjsb, tjsb, igs017_state, tjsb, ROT0, "IGS", "Mahjong Tian Jiang Shen Bing (V137C)", GAME_UNEMULATED_PROTECTION )
-GAME( 1998, mgcs, 0, mgcs, mgcs, igs017_state, mgcs, ROT0, "IGS", "Mahjong Man Guan Cai Shen (V103CS)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_IMPERFECT_SOUND )
-GAME( 1998, lhzb2, 0, lhzb2, lhzb2, igs017_state, lhzb2, ROT0, "IGS", "Mahjong Long Hu Zheng Ba 2 (set 1)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
+GAME( 1997, tjsb, 0, tjsb, tjsb, igs017_state, tjsb, ROT0, "IGS", "Mahjong Tian Jiang Shen Bing (V137C)", MACHINE_UNEMULATED_PROTECTION )
+GAME( 1998, mgcs, 0, mgcs, mgcs, igs017_state, mgcs, ROT0, "IGS", "Mahjong Man Guan Cai Shen (V103CS)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND )
+GAME( 1998, lhzb2, 0, lhzb2, lhzb2, igs017_state, lhzb2, ROT0, "IGS", "Mahjong Long Hu Zheng Ba 2 (set 1)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
GAME( 1998, lhzb2a, lhzb2, lhzb2a, lhzb2a, igs017_state, lhzb2a, ROT0, "IGS", "Mahjong Long Hu Zheng Ba 2 (VS221M)", 0 )
-GAME( 1998, slqz2, 0, slqz2, slqz2, igs017_state, slqz2, ROT0, "IGS", "Mahjong Shuang Long Qiang Zhu 2 (VS203J)", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
-GAME( 1999?, tarzan, 0, iqblocka, iqblocka, igs017_state, tarzan, ROT0, "IGS", "Tarzan (V109C)", GAME_NOT_WORKING )
-GAME( 1999?, tarzana, tarzan, iqblocka, iqblocka, igs017_state, tarzana, ROT0, "IGS", "Tarzan (V107)", GAME_NOT_WORKING )
-GAME( 2000?, starzan, 0, starzan, iqblocka, igs017_state, starzan, ROT0, "IGS / G.F. Gioca", "Super Tarzan (Italy, V100I)", GAME_NOT_WORKING )
-GAME( ????, spkrform, spk116it, spkrform, spkrform, igs017_state, spkrform, ROT0, "IGS", "Super Poker (v100xD03) / Formosa", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION )
+GAME( 1998, slqz2, 0, slqz2, slqz2, igs017_state, slqz2, ROT0, "IGS", "Mahjong Shuang Long Qiang Zhu 2 (VS203J)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
+GAME( 1999?, tarzan, 0, iqblocka, iqblocka, igs017_state, tarzan, ROT0, "IGS", "Tarzan (V109C)", MACHINE_NOT_WORKING )
+GAME( 1999?, tarzana, tarzan, iqblocka, iqblocka, igs017_state, tarzana, ROT0, "IGS", "Tarzan (V107)", MACHINE_NOT_WORKING )
+GAME( 2000?, starzan, 0, starzan, iqblocka, igs017_state, starzan, ROT0, "IGS / G.F. Gioca", "Super Tarzan (Italy, V100I)", MACHINE_NOT_WORKING )
+GAME( ????, spkrform, spk116it, spkrform, spkrform, igs017_state, spkrform, ROT0, "IGS", "Super Poker (v100xD03) / Formosa", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION )
diff --git a/src/mame/drivers/igs_fear.c b/src/mame/drivers/igs_fear.c
new file mode 100644
index 00000000000..19a3976954c
--- /dev/null
+++ b/src/mame/drivers/igs_fear.c
@@ -0,0 +1,169 @@
+// license:BSD-3-Clause
+// copyright-holders:David Haywood
+
+#include "emu.h"
+#include "cpu/arm7/arm7.h"
+#include "cpu/arm7/arm7core.h"
+#include "machine/nvram.h"
+#include "machine/pgmcrypt.h"
+#include "sound/ics2115.h"
+
+
+class igs_fear_state : public driver_device
+{
+public:
+ igs_fear_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_gfxdecode(*this, "gfxdecode"),
+ m_palette(*this, "palette") { }
+
+
+ DECLARE_WRITE_LINE_MEMBER(sound_irq);
+ DECLARE_DRIVER_INIT(igs_fear);
+ //virtual void video_start();
+ virtual void video_start_igs_fear();
+ UINT32 screen_update_igs_fear(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ void pgm_create_dummy_internal_arm_region();
+ required_device<cpu_device> m_maincpu;
+ optional_device<gfxdecode_device> m_gfxdecode;
+ required_device<palette_device> m_palette;
+};
+
+
+void igs_fear_state::video_start_igs_fear()
+{
+}
+
+
+UINT32 igs_fear_state::screen_update_igs_fear(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+{
+ return 0;
+}
+
+static ADDRESS_MAP_START( igs_igs_fear_map, AS_PROGRAM, 32, igs_fear_state )
+ AM_RANGE(0x00000000, 0x00003fff) AM_ROM /* Internal ROM */
+ AM_RANGE(0x08000000, 0x0807ffff) AM_ROM AM_REGION("user1", 0)/* Game ROM */
+ADDRESS_MAP_END
+
+// debugging only, not tile based
+static const gfx_layout fearlayout =
+{
+ 16,16,
+ RGN_FRAC(1,1),
+ 7, /* 7 bits per pixel - bit 0 unused in the roms we have*/
+ { 1,2,3,4,5,6,7 },
+ { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8},
+ { 0*128,1*128,2*128,3*128,4*128,5*128,6*128,7*128, 8*128,9*128,10*128,11*128,12*128,13*128,14*128,15*128 },
+ 128*16
+};
+
+
+static GFXDECODE_START( igs_fear )
+ GFXDECODE_ENTRY( "gfx1", 0, fearlayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, fearlayout, 0, 16 )
+ GFXDECODE_ENTRY( "gfx3", 0, fearlayout, 0, 16 )
+GFXDECODE_END
+
+static INPUT_PORTS_START( fear )
+INPUT_PORTS_END
+
+WRITE_LINE_MEMBER(igs_fear_state::sound_irq)
+{
+}
+
+
+static MACHINE_CONFIG_START( igs_fear, igs_fear_state )
+ MCFG_CPU_ADD("maincpu",ARM7, 50000000/2)
+ MCFG_CPU_PROGRAM_MAP(igs_igs_fear_map)
+
+// MCFG_CPU_VBLANK_INT_DRIVER("screen", igs_fear_state, igs_majhong_interrupt)
+
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(512, 256)
+ MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
+
+ MCFG_VIDEO_START_OVERRIDE(igs_fear_state, igs_fear)
+ MCFG_SCREEN_UPDATE_DRIVER(igs_fear_state, screen_update_igs_fear)
+ MCFG_SCREEN_PALETTE("palette")
+
+ MCFG_PALETTE_ADD("palette", 0x200)
+
+ MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs_fear)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+ MCFG_ICS2115_ADD("ics", 0)
+ MCFG_ICS2115_IRQ_CB(WRITELINE(igs_fear_state, sound_irq))
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 5.0)
+
+MACHINE_CONFIG_END
+
+
+ROM_START( fearless )
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ /* Internal rom of IGS027A ARM based MCU */
+ ROM_LOAD( "fearless_igs027a", 0x00000, 0x4000, NO_DUMP ) // sticker marked 'F1'
+
+ ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "fearlessp_v-101us.u37", 0x000000, 0x80000, CRC(2522873c) SHA1(8db709877311b6d2796353fc9a44a820937e35c2) )
+
+ ROM_REGION( 0x10000, "plcc", 0 )
+ ROM_LOAD( "fearlessp_07.u33", 0x000000, 0x10000, CRC(7dae4900) SHA1(bbf7ba7c9e95ff2ffeb1dc0fc7ccedd4da274d01) ) // MX10EXAQC (80C51 XA based MCU) marked 07, not read protected?
+
+ // these all report FIXED BITS (0xxxxxxx), hopefully just 7-bit colour data, non-tile based sprites
+ ROM_REGION( 0x1000000, "gfx3", 0 )
+ ROM_LOAD16_BYTE( "fearlessp_u6_cg-0h.u6", 0x000001, 0x800000, CRC(02d8bbbf) SHA1(7cf36c909a5d76096a725ffe0a697bcbafbcf985) )
+ ROM_LOAD16_BYTE( "fearlessp_u7_cg-0l.u7", 0x000000, 0x800000, CRC(ca254db4) SHA1(f5670c2ff0720c84c9aff3cea95b118b6044e469) )
+ ROM_REGION( 0x1000000, "gfx2", 0 )
+ ROM_LOAD16_BYTE( "fearlessp_u13_cg-1h.u13", 0x000001, 0x800000, CRC(c9d2a56d) SHA1(91d1665623bca743f68f15a27bbf433e2ffc0808) )
+ ROM_LOAD16_BYTE( "fearlessp_u14_cg-1l.u14", 0x000000, 0x800000, CRC(7fe312d2) SHA1(c0add22d9fc4c0e32a03922cb709b947bfff429d) )
+ ROM_REGION( 0x1000000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "fearlessp_u17_cg-2h.u17", 0x000001, 0x800000, CRC(756fe1f2) SHA1(48ee81c5fa4808406b57b2521b836db3ff5a7fa9) )
+ ROM_LOAD16_BYTE( "fearlessp_u18_cg-2l.u18", 0x000000, 0x800000, CRC(07623d66) SHA1(041d5e44917bc16caa720ea98bdc0a4f5fb4b8e0) )
+
+
+ ROM_REGION( 0x800000, "ics", 0 )
+ ROM_LOAD( "fearlessp_u25_music0.u25", 0x000000, 0x400000, CRC(a015b9b1) SHA1(7b129c59acd523dec82e58a75d873bbc5341fb28) )
+ ROM_LOAD( "fearlessp_u26_music1.u26", 0x400000, 0x400000, CRC(9d5f18da) SHA1(42e5224c1af0898cc2e02b2e051ea8b629d5fb6d) )
+ROM_END
+
+
+
+void igs_fear_state::pgm_create_dummy_internal_arm_region()
+{
+ UINT16 *temp16 = (UINT16 *)memregion("maincpu")->base();
+
+ // fill with RX 14
+ int i;
+ for (i=0;i<0x4000/2;i+=2)
+ {
+ temp16[i] = 0xff1e;
+ temp16[i+1] = 0xe12f;
+
+ }
+
+ // jump straight to external area
+ temp16[(0x0000)/2] = 0xd088;
+ temp16[(0x0002)/2] = 0xe59f;
+ temp16[(0x0004)/2] = 0x0680;
+ temp16[(0x0006)/2] = 0xe3a0;
+ temp16[(0x0008)/2] = 0xff10;
+ temp16[(0x000a)/2] = 0xe12f;
+ temp16[(0x0090)/2] = 0x0400;
+ temp16[(0x0092)/2] = 0x1000;
+}
+
+
+
+
+DRIVER_INIT_MEMBER(igs_fear_state,igs_fear)
+{
+ fearless_decrypt(machine());
+ //sdwx_gfx_decrypt(machine());
+ pgm_create_dummy_internal_arm_region();
+}
+
+GAME( 2006, fearless, 0, igs_fear, fear, igs_fear_state, igs_fear, ROT0, "IGS", "Fearless Pinocchio (V101US)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/igs_m027.c b/src/mame/drivers/igs_m027.c
index 350e6699b5b..306aabac8bc 100644
--- a/src/mame/drivers/igs_m027.c
+++ b/src/mame/drivers/igs_m027.c
@@ -26,8 +26,7 @@
#include "cpu/arm7/arm7core.h"
#include "machine/nvram.h"
#include "machine/pgmcrypt.h"
-#include "sound/ics2115.h"
-
+#include "video/igs017_igs031.h"
class igs_m027_state : public driver_device
{
@@ -35,26 +34,15 @@ public:
igs_m027_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_igs_mainram(*this, "igs_mainram"),
- m_igs_cg_videoram(*this, "igs_cg_videoram"),
- m_igs_tx_videoram(*this, "igs_tx_videoram"),
- m_igs_bg_videoram(*this, "igs_bg_videoram"),
m_maincpu(*this, "maincpu"),
- m_gfxdecode(*this, "gfxdecode"),
- m_palette(*this, "palette") { }
+ m_igs017_igs031(*this, "igs017_igs031")
+ { }
optional_shared_ptr<UINT32> m_igs_mainram;
- optional_shared_ptr<UINT32> m_igs_cg_videoram;
- optional_shared_ptr<UINT32> m_igs_tx_videoram;
- optional_shared_ptr<UINT32> m_igs_bg_videoram;
-
- tilemap_t *m_igs_tx_tilemap;
- tilemap_t *m_igs_bg_tilemap;
-
- DECLARE_WRITE32_MEMBER(igs_cg_videoram_w);
- DECLARE_WRITE32_MEMBER(igs_tx_videoram_w);
- DECLARE_WRITE32_MEMBER(igs_bg_videoram_w);
- DECLARE_WRITE32_MEMBER(igs_palette32_w);
- DECLARE_WRITE_LINE_MEMBER(sound_irq);
+ required_device<cpu_device> m_maincpu;
+ required_device<igs017_igs031_device> m_igs017_igs031;
+
+
DECLARE_DRIVER_INIT(sdwx);
DECLARE_DRIVER_INIT(chessc2);
DECLARE_DRIVER_INIT(lhzb4);
@@ -65,19 +53,17 @@ public:
DECLARE_DRIVER_INIT(hauntedh);
DECLARE_DRIVER_INIT(zhongguo);
DECLARE_DRIVER_INIT(klxyj);
- DECLARE_DRIVER_INIT(fearless);
- TILE_GET_INFO_MEMBER(get_tx_tilemap_tile_info);
- TILE_GET_INFO_MEMBER(get_bg_tilemap_tile_info);
+ DECLARE_DRIVER_INIT(slqz3);
+ DECLARE_DRIVER_INIT(fruitpar);
+ DECLARE_DRIVER_INIT(amazonia);
+ DECLARE_DRIVER_INIT(amazoni2);
+
virtual void video_start();
- virtual void video_start_fearless();
UINT32 screen_update_igs_majhong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- UINT32 screen_update_fearless(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(igs_majhong_interrupt);
+
void sdwx_gfx_decrypt();
void pgm_create_dummy_internal_arm_region();
- required_device<cpu_device> m_maincpu;
- optional_device<gfxdecode_device> m_gfxdecode;
- required_device<palette_device> m_palette;
};
@@ -91,21 +77,18 @@ public:
0x38004000, 0x38005FFF TX Video RAM????????1E00??????512x240??????
0x38006000, 0x38007FFF BG Video RAM????????1E00??????512x240??????
-
***************************************************************************/
/* CGLayer */
+#if 0
WRITE32_MEMBER(igs_m027_state::igs_cg_videoram_w)
{
COMBINE_DATA(&m_igs_cg_videoram[offset]);
//if(data!=0)
logerror("PC(%08X) CG @%x = %x!\n",space.device().safe_pc(),offset ,m_igs_cg_videoram[offset]);
-
-
-
/*
ROM:08020520 DCW 0x3E ddd1 y
ROM:08020522 DCW 0x29 ddd2 x
@@ -129,96 +112,27 @@ WRITE32_MEMBER(igs_m027_state::igs_cg_videoram_w)
yyyy-yynn
nnnn-nnnn
-
-
-
*/
-
-
-
-}
-
-
-/* TX Layer */
-WRITE32_MEMBER(igs_m027_state::igs_tx_videoram_w)
-{
- COMBINE_DATA(&m_igs_tx_videoram[offset]);
- m_igs_tx_tilemap->mark_tile_dirty(offset);
- //if(data!=0)
- //logerror( "TX VIDEO RAM OFFSET %x ,data %x!\n",offset ,m_igs_tx_videoram[offset]);
-}
-
-TILE_GET_INFO_MEMBER(igs_m027_state::get_tx_tilemap_tile_info)
-{
- //ppppppppNNNNNNNN
- int tileno,colour;
- tileno = m_igs_tx_videoram[tile_index] & 0xffff;
- colour = (m_igs_tx_videoram[tile_index]>>0x10) & 0xffff;
-
- SET_TILE_INFO_MEMBER(0,tileno,colour,0);
-}
-
-/* BG Layer */
-WRITE32_MEMBER(igs_m027_state::igs_bg_videoram_w)
-{
- COMBINE_DATA(&m_igs_bg_videoram[offset]);
- m_igs_bg_tilemap->mark_tile_dirty(offset);
- //if(data!=0)
- logerror("BG VIDEO RAM OFFSET %x ,data %x!\n",offset ,m_igs_bg_videoram[offset]);
-}
-
-TILE_GET_INFO_MEMBER(igs_m027_state::get_bg_tilemap_tile_info)
-{
- //ppppppppNNNNNNNN
- int tileno,colour;
- tileno = m_igs_bg_videoram[tile_index] & 0xffff;
- colour = (m_igs_bg_videoram[tile_index]>>0x10) & 0xffff;
-
- SET_TILE_INFO_MEMBER(0,tileno,colour,0);
}
+#endif
void igs_m027_state::video_start()
{
- m_igs_tx_tilemap= &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(igs_m027_state::get_tx_tilemap_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32);
- m_igs_tx_tilemap->set_transparent_pen(15);
- m_igs_bg_tilemap= &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(igs_m027_state::get_bg_tilemap_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32);
- //m_igs_bg_tilemap= &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(igs_m027_state::get_bg_tilemap_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32);
- //m_igs_bg_tilemap->set_transparent_pen(15);
- logerror("Video START OK!\n");
+ m_igs017_igs031->video_start();
}
-void igs_m027_state::video_start_fearless()
-{
-}
+
UINT32 igs_m027_state::screen_update_igs_majhong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
- //??????????
- bitmap.fill(m_palette->black_pen(), cliprect);
-
- //??????
- m_igs_bg_tilemap->draw(screen, bitmap, cliprect, 0,0);
-
- //CG??????
-
- //??????
- m_igs_tx_tilemap->draw(screen, bitmap, cliprect, 0,0);
- //fprintf(stdout,"Video UPDATE OK!\n");
+ m_igs017_igs031->screen_update_igs017(screen, bitmap, cliprect);
return 0;
-}
-UINT32 igs_m027_state::screen_update_fearless(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
-{
- return 0;
}
-/***************************************************************************
-
- Blitter
-***************************************************************************/
/***************************************************************************
Memory Maps
@@ -231,6 +145,10 @@ static ADDRESS_MAP_START( igs_majhong_map, AS_PROGRAM, 32, igs_m027_state )
AM_RANGE(0x10000000, 0x100003ff) AM_RAM AM_SHARE("igs_mainram")// main ram for asic?
AM_RANGE(0x18000000, 0x18007fff) AM_RAM
+
+ AM_RANGE(0x38000000, 0x38007FFF) AM_DEVREADWRITE8("igs017_igs031", igs017_igs031_device, read,write, 0xffffffff) // guess based on below
+
+#if 0
AM_RANGE(0x38001000, 0x380017ff) AM_RAM_WRITE(igs_cg_videoram_w) AM_SHARE("igs_cg_videoram") //0x200 * 1 CG PALETTE?
AM_RANGE(0x38001800, 0x38001fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") //0x200 * 1
@@ -239,16 +157,15 @@ static ADDRESS_MAP_START( igs_majhong_map, AS_PROGRAM, 32, igs_m027_state )
AM_RANGE(0x38002010, 0x38002017) AM_RAM //??????????????
- AM_RANGE(0x38009000, 0x38009003) AM_RAM //??????????????
+#endif
+
+ AM_RANGE(0x38009000, 0x38009003) AM_RAM //?????????????? oki 6295
+
AM_RANGE(0x70000200, 0x70000203) AM_RAM //??????????????
AM_RANGE(0x50000000, 0x500003ff) AM_WRITENOP // uploads xor table to external rom here
AM_RANGE(0xf0000000, 0xF000000f) AM_WRITENOP // magic registers
ADDRESS_MAP_END
-static ADDRESS_MAP_START( igs_fearless_map, AS_PROGRAM, 32, igs_m027_state )
- AM_RANGE(0x00000000, 0x00003fff) AM_ROM /* Internal ROM */
- AM_RANGE(0x08000000, 0x0807ffff) AM_ROM AM_REGION("user1", 0)/* Game ROM */
-ADDRESS_MAP_END
/***************************************************************************
@@ -290,7 +207,7 @@ void igs_m027_state::sdwx_gfx_decrypt()
{
int i;
unsigned rom_size = 0x80000;
- UINT8 *src = (UINT8 *) (memregion("gfx1")->base());
+ UINT8 *src = (UINT8 *) (memregion("tilemaps")->base());
dynamic_buffer result_data(rom_size);
for (i=0; i<rom_size; i++)
@@ -326,6 +243,79 @@ void igs_m027_state::sdwx_gfx_decrypt()
static INPUT_PORTS_START( sdwx )
INPUT_PORTS_END
+static INPUT_PORTS_START( amazonia )
+ PORT_START("DSW1")
+// Credits proportion
+ PORT_DIPNAME( 0x03, 0x03, "Proporcao Credito" ) PORT_DIPLOCATION("SW1:1,2")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x02, "2" )
+ PORT_DIPSETTING( 0x01, "4" )
+ PORT_DIPSETTING( 0x03, "10" )
+// (Oponent's ?) credits proportion
+ PORT_DIPNAME( 0x0c, 0x0c, "Proporcao Credito Ele" ) PORT_DIPLOCATION("SW1:3,4")
+ PORT_DIPSETTING( 0x00, "1" )
+ PORT_DIPSETTING( 0x08, "2" )
+ PORT_DIPSETTING( 0x04, "4" )
+ PORT_DIPSETTING( 0x0c, "10" )
+// Game Percentage
+ PORT_DIPNAME( 0x70, 0x70, "Porcentagem Jogo" ) PORT_DIPLOCATION("SW1:5,6,7")
+ PORT_DIPSETTING( 0x00, "55%" )
+ PORT_DIPSETTING( 0x40, "60%" )
+ PORT_DIPSETTING( 0x20, "65%" )
+ PORT_DIPSETTING( 0x60, "70%" )
+ PORT_DIPSETTING( 0x10, "75%" )
+ PORT_DIPSETTING( 0x50, "80%" )
+ PORT_DIPSETTING( 0x30, "85%" )
+ PORT_DIPSETTING( 0x70, "90%" )
+// Payment System
+ PORT_DIPNAME( 0x80, 0x80, "Sistema de Pagamento" ) PORT_DIPLOCATION("SW1:8")
+ PORT_DIPSETTING( 0x00, "Normal" )
+ PORT_DIPSETTING( 0x80, "Auto" )
+
+
+ PORT_START("DSW2")
+// Demo Song
+ PORT_DIPNAME( 0x01, 0x01, "Demonstracao Musica" ) PORT_DIPLOCATION("SW2:1")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Yes ) )
+// End of Game
+ PORT_DIPNAME( 0x02, 0x02, "Fim do Sistema" ) PORT_DIPLOCATION("SW2:2")
+ PORT_DIPSETTING( 0x00, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x02, "10000" )
+// Background color
+ PORT_DIPNAME( 0x04, 0x04, "Cor do Fundo" ) PORT_DIPLOCATION("SW2:3")
+ PORT_DIPSETTING( 0x00, "Preto" ) // Black
+ PORT_DIPSETTING( 0x04, "Cor" ) // Coloured
+// Double Percentage
+ PORT_DIPNAME( 0x18, 0x18, "Porcentagem Dobrar" ) PORT_DIPLOCATION("SW2:4,5")
+ PORT_DIPSETTING( 0x00, "70%" )
+ PORT_DIPSETTING( 0x08, "90%" )
+ PORT_DIPSETTING( 0x10, "80%" )
+ PORT_DIPSETTING( 0x18, "90%" )
+// Language
+ PORT_DIPNAME( 0x20, 0x20, "Idioma" ) PORT_DIPLOCATION("SW2:6")
+ PORT_DIPSETTING( 0x00, "Espanhol" ) // Spanish
+ PORT_DIPSETTING( 0x20, "Portugues" ) // Portuguese
+// Credit Mode
+ PORT_DIPNAME( 0x40, 0x40, "Credit Mode" ) PORT_DIPLOCATION("SW2:7")
+ PORT_DIPSETTING( 0x00, "COIN" )
+ PORT_DIPSETTING( 0x40, "KEYIN" )
+// Panel Mode
+ PORT_DIPNAME( 0x80, 0x80, "Panel Mode" ) PORT_DIPLOCATION("SW2:8")
+ PORT_DIPSETTING( 0x00, "36+10" )
+ PORT_DIPSETTING( 0x80, "28" )
+
+ PORT_START("DSW3")
+ PORT_DIPUNKNOWN_DIPLOC( 0x01, 0x01, "SW3:1" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x02, 0x02, "SW3:2" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "SW3:3" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "SW3:4" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW3:5" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "SW3:6" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW3:7" )
+ PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW3:8" )
+INPUT_PORTS_END
+
/***************************************************************************
@@ -334,49 +324,6 @@ INPUT_PORTS_END
***************************************************************************/
-// for debugging
-#if 0
-static const gfx_layout charlayout =
-{
- 8,8, /* 8 x 8 chars */
- RGN_FRAC(1,1),
- 4, /* 4 bits per pixel */
- { 0, 1, 2, 3 }, /* planes are packed in a nibble */
- { 33*4, 32*4, 49*4, 48*4, 1*4, 0*4, 17*4, 16*4 },
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 32*8 /* 32 bytes per char */
-};
-#endif
-
-static const gfx_layout gfxlayout_8x8x4 =
-{
- 8,8,
- RGN_FRAC(1,1),
- 4,
- //{ STEP4(0,8) },
- { 24,8,16,0 },
- { STEP8(7,-1) },
- { STEP8(0,4*8) },
- 8*8*4
-};
-
-#if 0
-static const gfx_layout gfxlayout_16x16x16 =
-{
- 16,16,
- RGN_FRAC(1,1),
- 16,
- { STEP16(0,0) }, // >8planes not supported
- { STEP16(15,-1) },
- { STEP16(0,16*1) },
- 16*16*16
-};
-#endif
-
-static GFXDECODE_START( igs_m027 )
- GFXDECODE_ENTRY( "gfx1", 0, gfxlayout_8x8x4, 0, 16 )
- // GFXDECODE_ENTRY( "gfx2", 0, gfxlayout_16x16x16, 0, 16 )
-GFXDECODE_END
INTERRUPT_GEN_MEMBER(igs_m027_state::igs_majhong_interrupt)
@@ -393,8 +340,6 @@ static MACHINE_CONFIG_START( igs_majhong, igs_m027_state )
MCFG_CPU_VBLANK_INT_DRIVER("screen", igs_m027_state, igs_majhong_interrupt)
//MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", igs_m027)
-
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
@@ -405,131 +350,257 @@ static MACHINE_CONFIG_START( igs_majhong, igs_m027_state )
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 0x200)
- MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
+// MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
- /* sound hardware */
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+ MCFG_REVERSE_TEXT_BITS
+
+ // 82C55? (accessed through igs017/igs031 area like igs017.c?)
+ /* sound hardware */
+ // OK6295
MACHINE_CONFIG_END
-WRITE_LINE_MEMBER(igs_m027_state::sound_irq)
-{
-}
-static MACHINE_CONFIG_START( fearless, igs_m027_state )
- MCFG_CPU_ADD("maincpu",ARM7, 50000000/2)
- MCFG_CPU_PROGRAM_MAP(igs_fearless_map)
+
+static MACHINE_CONFIG_START( amazonia, igs_m027_state )
+ MCFG_CPU_ADD("maincpu",ARM7, 20000000)
+
+ MCFG_CPU_PROGRAM_MAP(igs_majhong_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", igs_m027_state, igs_majhong_interrupt)
+ //MCFG_NVRAM_ADD_0FILL("nvram")
+
+
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(512, 256)
MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-1)
-
- MCFG_VIDEO_START_OVERRIDE(igs_m027_state, fearless)
- MCFG_SCREEN_UPDATE_DRIVER(igs_m027_state, screen_update_fearless)
+ MCFG_SCREEN_UPDATE_DRIVER(igs_m027_state, screen_update_igs_majhong)
MCFG_SCREEN_PALETTE("palette")
MCFG_PALETTE_ADD("palette", 0x200)
+// MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB)
+
+ MCFG_DEVICE_ADD("igs017_igs031", IGS017_IGS031, 0)
+ MCFG_GFX_PALETTE("palette")
+ MCFG_REVERSE_TEXT_BITS
+
+ // 82C55? (accessed through igs017/igs031 area like igs017.c?)
/* sound hardware */
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_ICS2115_ADD("ics", 0)
- MCFG_ICS2115_IRQ_CB(WRITELINE(igs_m027_state, sound_irq))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 5.0)
+ // OK6295
MACHINE_CONFIG_END
+/***************************************************************************
+ ROMs Loading
+***************************************************************************/
/***************************************************************************
- ROMs Loading
+Mahjong Shuang Long Qiang Zhu 3
+IGS, 1999
+
+PCB Layout
+
+IGS PCB-0239-11-EE
+|--------------------------------------------|
+| DSW2 DSW1 U9 U18 |
+| 22MHz IGS031 |
+| PAL |
+| |
+| |
+| |
+| 62256 IGS027A |
+| 55857G |
+| U29 |
+| 8255 |
+| |
+| 62256 |
+| |
+|ULN2004 |
+| M6295 |
+| |
+| RESET_SW|
+|TDA1519C U26 BATTERY |
+|--------------------------------------------|
***************************************************************************/
-ROM_START( sdwx )
+
+ROM_START( slqz3 )
ROM_REGION( 0x04000, "maincpu", 0 )
- /* Internal rom of IGS027A ARM based MCU */
- ROM_LOAD( "sdwx_igs027a", 0x00000, 0x4000, NO_DUMP )
+ /* Internal rom of IGS027A type G ARM based MCU */
+ ROM_LOAD( "slqz3_igs027a", 0x00000, 0x4000, NO_DUMP )
- ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
- ROM_LOAD( "prg.u16", 0x000000, 0x80000, CRC(c94ef6a8) SHA1(69f2f356e05206b0866a9020253d9a112b56316c) )
+ ROM_REGION( 0x200000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "u29", 0x000000, 0x200000, CRC(215fed1e) SHA1(c85d8695e0be1044ac206118c3fc0ddc7063aaf6) ) // 11xxxxxxxxxxxxxxxxxxx = 0xFF
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "text.u24", 0x000000, 0x80000, CRC(60b415ac) SHA1(b4475b0ba1e70504cac9ac05078873df0b16495b) )
+ ROM_REGION( 0x080000, "tilemaps", 0 )
+ ROM_LOAD( "u9", 0x000000, 0x080000, CRC(a82398a9) SHA1(4d2987f57096b7f24ce6571ed3be6dcb33bce88d) )
- ROM_REGION( 0x200000, "gfx2", 0 )
- ROM_LOAD( "cg.u25", 0x000000, 0x200000, CRC(709b9a42) SHA1(18c4b8e159b29c168f5cafb437fe6eb123672471) )
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD( "u18", 0x000000, 0x400000, CRC(81428f18) SHA1(9fb19c8a79cc3443642f4b044e04735df2cb45be) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
- ROM_REGION( 0x80000, "unknown", 0 )
- ROM_LOAD( "sp.u2", 0x00000, 0x80000, CRC(216b5418) SHA1(b7bc24ced0ccb5476c974420aa506c13b971fc9f) )
+
+ ROM_REGION( 0x200000, "oki", 0 )
+ ROM_LOAD( "u26", 0x000000, 0x200000, CRC(84bc2f3e) SHA1(49dcf5eaa39accd5c6bf01782fd4221298cb43ed) ) // 1ST AND 2ND HALF IDENTICAL
ROM_END
-ROM_START( sddz )
+/***************************************************************************
+
+Fruit Paradise
+IGS
+
+PCB Layout
+----------
+
+IGS PCB-0331-02-FG
+|--------------------------------------------|
+|PC817 7805 W4102.U28|
+|ULN2004 ULN2004 TDA1020 VOL M6295 |
+|ULN2004 PAL 62257 3.6VBATT|
+|ULN2004 82C55 22MHz |
+|ULN2004 |
+|8 V214.U23 |
+|L |--------| |
+|I PC817(x20) |IGS027A | |
+|N |--------| |55857G | |
+|E M4101.U13 | | |--------| |
+|R | IGS031 | |
+| | | |
+| TEXT.U12 |--------| |
+|DSW1 |
+|DSW2 ULN2004 61256 |
+|DSW3 PC817(x13) PC817 PC817 |
+| |--| JAMMA |--| |
+|-------| |---------------------------| |--|
+
+***************************************************************************/
+
+ROM_START( fruitpar )
ROM_REGION( 0x04000, "maincpu", 0 )
- /* Internal rom of IGS027A ARM based MCU */
- ROM_LOAD( "sddz_igs027a", 0x00000, 0x4000, NO_DUMP )
+ /* Internal rom of IGS027A type G ARM based MCU */
+ ROM_LOAD( "fruitpar_igs027a", 0x00000, 0x4000, NO_DUMP )
ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
- ROM_LOAD( "ddz_218cn.u17", 0x000000, 0x80000, CRC(3cfe38d5) SHA1(9c7f82ecffbc22879583519d5f753bb35e973ee3) )
+ ROM_LOAD( "fruit_paradise_v214.u23", 0x00000, 0x80000, CRC(e37bc4e0) SHA1(f5580e6007dc60f32efd3b3e7e64c5ee446ede8a) )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "ddz_text.u27", 0x000000, 0x80000, CRC(520dc392) SHA1(0ab2620f20af8253806b6ff4e1d9d77a694da17c) )
+ ROM_REGION( 0x080000, "tilemaps", 0 )
+ ROM_LOAD( "paradise_text.u12", 0x000000, 0x080000, CRC(bdaa4407) SHA1(845eead0902c81290c2b5d7543ac9dfda375fdd1) )
- ROM_REGION( 0x400000, "gfx2", 0 )
- ROM_LOAD( "ddz_ani.u28", 0x000000, 0x400000, CRC(72487508) SHA1(9f4bbc858960ddaae403e4a3330b2345f6fd6cb3))
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD( "igs_m4101.u13", 0x000000, 0x400000, CRC(84899398) SHA1(badac65af6e03c490798f4368eb2b15db8c590d0) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
- ROM_REGION( 0x200000, "unknown", 0 )
- ROM_LOAD( "ddz_sp.u4", 0x00000, 0x200000, CRC(7ef65d95) SHA1(345c587cd449d6d06908e9687480be76b2cb2d28) )
+
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "igs_w4102.u28", 0x00000, 0x80000, CRC(558cab25) SHA1(0280b37a14589329f0385c048e5742b9e89bd587) )
ROM_END
-ROM_START( lhzb3 )
+/***************************************************************************
+
+Amazonia King
+IGS
+
+IGS PCB-0367-00-FG-1
+
+ - IGS 027A
+ - IGS 031
+ - IGS A2107
+ - IGS T2105: Character Generator ROM
+ - K668 (qfp44) == OKI6225
+ - 82C55
+
+***************************************************************************/
+
+ROM_START( amazonia )
ROM_REGION( 0x04000, "maincpu", 0 )
- /* Internal rom of IGS027A ARM based MCU */
- ROM_LOAD( "lhzb3_igs027a", 0x00000, 0x4000, NO_DUMP )
+ /* Internal rom of IGS027A type G ARM based MCU */
+ ROM_LOAD( "amazonia_igs027a", 0x00000, 0x4000, NO_DUMP )
ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
- ROM_LOAD( "lhzb3_104.u9", 0x000000, 0x80000, CRC(70d61846) SHA1(662b59702ef6f26129de6b16346786df92f99097) )
+ ROM_LOAD( "amazonia_v-104br.u23", 0x00000, 0x80000, CRC(103d465e) SHA1(68d088f24171e27c0a9b0660f81d3334f730637a) )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "lhzb3_text.u17", 0x000000, 0x80000,CRC(a82398a9) SHA1(4d2987f57096b7f24ce6571ed3be6dcb33bce88d) )
+ ROM_REGION( 0x480000, "tilemaps", 0 )
+ ROM_LOAD( "igs_t2105_cg_v110.u12", 0x000000, 0x80000, CRC(1d4be260) SHA1(6374c61735144b3ff54d5e490f26adac4a10b14d) )
- ROM_REGION( 0x400000, "gfx2", 0 )
- ROM_LOAD( "m2401.u18", 0x000000, 0x400000, CRC(81428f18) SHA1(9fb19c8a79cc3443642f4b044e04735df2cb45be) )
+ ROM_REGION( 0x480000, "sprites", 0 )
+ ROM_LOAD( "igs_a2107_cg_v110.u13", 0x000000, 0x400000,CRC(d8dadfd7) SHA1(b40a46d56ff46d91e3377be8616c3eed321f7db4) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
+ ROM_LOAD( "amazonia_cg.u11", 0x400000, 0x80000, CRC(2ac2cfd1) SHA1(f8750a4727ddabf1415dab6eaa4a72e60e86e7f1) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
- ROM_REGION( 0x200000, "unknown", 0 )
- ROM_LOAD( "s2402.u14", 0x00000, 0x100000, CRC(56083fe2) SHA1(62afd651809bf5e639bfda6e5579dbf4b903b664) )
+ ROM_REGION( 0x80000, "oki", 0 )
+ ROM_LOAD( "igs_s2102.u28", 0x00000, 0x80000, CRC(90dda82d) SHA1(67fbc1e8d76b85e124136e2f1df09c8b6c5a8f97) )
ROM_END
+/*
+Amazonia King II by IGS 2004 ( International Game System )
+Patented by EAGO.
+
+U12 is a 27c240 labeled ( AKII TEXT ) ( text )
+U13 is a 27c160 labeled ( AKII CG ) ( Grafics)
+U23 is a 27c4096 labeled ( AKII_V-202br ) ( Program version Brazil )
+U28 is a 29F4000 labeled (AKII SP) ( Sound Program )
+U17 is a ATF16V8B-15P labeled ( FG-1 ) (read protected)
+U10 is a IGS 003c Dip 40 pin ( Maybe 8255 ? )
+U24 is a IGS031 QFP with 208 pin
+U32 is a IGS027a QFP with 120 pin ( Encrypted ARM, internal code, stamped P9 A/K II )
+Crystal Frequency = 22.000 Mhz
+Sound Processor ( U6295 )
+*/
-ROM_START( lhzb4 )
+ROM_START( amazoni2 )
ROM_REGION( 0x04000, "maincpu", 0 )
/* Internal rom of IGS027A ARM based MCU */
- ROM_LOAD( "lhzb4_igs027a", 0x00000, 0x4000, NO_DUMP )
+ ROM_LOAD( "sdwx_igs027a", 0x00000, 0x4000, NO_DUMP )
ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
- ROM_LOAD( "lhzb4_104.u17", 0x000000, 0x80000, CRC(6f349bbb) SHA1(54cf895889ef0f208637ba732ede696ca3603ee0) )
+ ROM_LOAD( "27c4096_akii_b-202br.u23", 0x000000, 0x80000, CRC(7147b43c) SHA1(29a4a20867595650918c4ab892ddb71440bd3f4b) )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "lhzb4_text.u27", 0x000000, 0x80000, CRC(8488b039) SHA1(59bc9eccba810fcac2a53866b2da1e71bfd8a6e7) )
+ ROM_REGION( 0x80000, "tilemaps", 0 )
+ ROM_LOAD( "akii_text.u12", 0x000000, 0x80000, CRC(60b415ac) SHA1(b4475b0ba1e70504cac9ac05078873df0b16495b) )
- ROM_REGION( 0x400000, "gfx2", 0 )
- ROM_LOAD( "a05501.u28", 0x000000, 0x400000, CRC(f78b3714) SHA1(c73d8e50b04126bc4f91783384713624ed133ee2) )
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD( "U13_27c160_akii_cg.u13", 0x000000, 0x200000, CRC(254bd84f) SHA1(091ecda792c4c4a7bb039b2c708788ef87fdaf86) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
- ROM_REGION( 0x200000, "unknown", 0 )
- ROM_LOAD( "w05502.u5", 0x00000, 0x200000, CRC(467f677e) SHA1(63927c0d606176c0e22db89ea3a9777ed702abbd) )
+ ROM_REGION( 0x80000, "oki", 0 ) // m6295 samples
+ ROM_LOAD( "akii_sp.u28", 0x00000, 0x80000, CRC(216b5418) SHA1(b7bc24ced0ccb5476c974420aa506c13b971fc9f) )
ROM_END
+// Games with prg at u16
+// text at u24
+// cg at u25
+// samples at u2
+
+ROM_START( sdwx )
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ /* Internal rom of IGS027A ARM based MCU */
+ ROM_LOAD( "sdwx_igs027a", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "prg.u16", 0x000000, 0x80000, CRC(c94ef6a8) SHA1(69f2f356e05206b0866a9020253d9a112b56316c) )
+
+ ROM_REGION( 0x80000, "tilemaps", 0 )
+ ROM_LOAD( "text.u24", 0x000000, 0x80000, CRC(60b415ac) SHA1(b4475b0ba1e70504cac9ac05078873df0b16495b) )
+
+ ROM_REGION( 0x200000, "sprites", 0 )
+ ROM_LOAD( "cg.u25", 0x000000, 0x200000, CRC(709b9a42) SHA1(18c4b8e159b29c168f5cafb437fe6eb123672471) )
+
+ ROM_REGION( 0x80000, "oki", 0 ) // m6295 samples
+ ROM_LOAD( "sp.u2", 0x00000, 0x80000, CRC(216b5418) SHA1(b7bc24ced0ccb5476c974420aa506c13b971fc9f) )
+ROM_END
ROM_START( klxyj )
ROM_REGION( 0x04000, "maincpu", 0 )
@@ -539,36 +610,45 @@ ROM_START( klxyj )
ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "klxyj_104.u16", 0x000000, 0x80000, CRC(8cb9bdc2) SHA1(5a13d0ff6488a938617a9ea89e7cf607539a1f49) )
- ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_REGION( 0x80000, "tilemaps", 0 )
ROM_LOAD( "klxyj_text.u24", 0x000000, 0x80000, CRC(22dcebd0) SHA1(0383f017135230d020d12c8c6cc3aeb136fe9106) )
- ROM_REGION( 0x400000, "gfx2", 0 )
+ ROM_REGION( 0x400000, "sprites", 0 )
ROM_LOAD( "a4202.u25", 0x000000, 0x400000, CRC(97a68f85) SHA1(177c8c23fd0d585b24a71359ede005ac9a2e4d4d) )
- ROM_REGION( 0x200000, "unknown", 0 )
+ ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "w4201.u2", 0x00000, 0x100000, CRC(464f11ab) SHA1(56e45bd31f667fc30387fcd4c940a94819b7ef0f) )
ROM_END
-ROM_START( mgfx )
+// Games with prg at u9
+// text at u17
+// cg at u18
+// samples at u14
+
+
+ROM_START( lhzb3 )
ROM_REGION( 0x04000, "maincpu", 0 )
/* Internal rom of IGS027A ARM based MCU */
- ROM_LOAD( "mgfx_igs027a", 0x00000, 0x4000, NO_DUMP )
+ ROM_LOAD( "lhzb3_igs027a", 0x00000, 0x4000, NO_DUMP )
ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
- ROM_LOAD( "mgfx_101.u10", 0x000000, 0x80000, CRC(897c88a1) SHA1(0f7a7808b9503ff28ad32c0b8e071cb24cff59b1) )
+ ROM_LOAD( "lhzb3_104.u9", 0x000000, 0x80000, CRC(70d61846) SHA1(662b59702ef6f26129de6b16346786df92f99097) )
- ROM_REGION( 0x80000, "gfx1", 0 )
- ROM_LOAD( "mgfx_text.u9", 0x000000, 0x80000, CRC(e41e7768) SHA1(3d0add7c75c23533309e799fd8853c815e6f811c) )
+ ROM_REGION( 0x80000, "tilemaps", 0 )
+ ROM_LOAD( "lhzb3_text.u17", 0x000000, 0x80000,CRC(a82398a9) SHA1(4d2987f57096b7f24ce6571ed3be6dcb33bce88d) )
- ROM_REGION( 0x400000, "gfx2", 0 )
- ROM_LOAD( "mgfx_ani.u17", 0x000000, 0x400000, CRC(9fc75f4d) SHA1(acb600739dcf252a5210e28ec96d749573061b27) )
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD( "m2401.u18", 0x000000, 0x400000, CRC(81428f18) SHA1(9fb19c8a79cc3443642f4b044e04735df2cb45be) )
ROM_REGION( 0x200000, "unknown", 0 )
- ROM_LOAD( "mgfx_sp.u14", 0x00000, 0x100000, CRC(9bb28fc8) SHA1(6368753c29607f2d212d68c5cca3f10aa069649b) )
+ ROM_LOAD( "s2402.u14", 0x00000, 0x100000, CRC(56083fe2) SHA1(62afd651809bf5e639bfda6e5579dbf4b903b664) )
ROM_END
+
+
+
/*
Zhong Guo Chu Da D
@@ -622,17 +702,38 @@ ROM_START( zhongguo )
ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "p2600.u10", 0x000000, 0x80000, CRC(9ad34135) SHA1(54717753d1296efe49946369fd4a27181f19dbc0) )
- ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_REGION( 0x80000, "tilemaps", 0 )
ROM_LOAD( "t2604.u9", 0x000000, 0x80000, CRC(5401a52d) SHA1(05b47a4b39939c1d5904e3fbd5cc56d6ee9b7953) )
- ROM_REGION( 0x400000, "gfx2", 0 )
+ ROM_REGION( 0x480000, "sprites", 0 )
ROM_LOAD( "m2601.u17", 0x000000, 0x400000, CRC(89736e3f) SHA1(6a22e2eb10d2c740cf21640c43a8caf4c72d3be7) )
- ROM_LOAD( "m2603.u18", 0x000000, 0x080000, CRC(fb2e91a8) SHA1(29b2f0ce3749539cbe4cfb5c40b240cc7f6147f1) )
+ ROM_LOAD( "m2603.u18", 0x400000, 0x080000, CRC(fb2e91a8) SHA1(29b2f0ce3749539cbe4cfb5c40b240cc7f6147f1) )
- ROM_REGION( 0x200000, "unknown", 0 )
+ ROM_REGION( 0x200000, "oki", 0 )
ROM_LOAD( "s2602.u14", 0x00000, 0x100000, CRC(f137028c) SHA1(0e4114222820bca2f7026fa653e2b96a489a0183) )
ROM_END
+
+
+ROM_START( mgfx )
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ /* Internal rom of IGS027A ARM based MCU */
+ ROM_LOAD( "mgfx_igs027a", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "mgfx_101.u10", 0x000000, 0x80000, CRC(897c88a1) SHA1(0f7a7808b9503ff28ad32c0b8e071cb24cff59b1) )
+
+ ROM_REGION( 0x80000, "tilemaps", 0 )
+ ROM_LOAD( "mgfx_text.u9", 0x000000, 0x80000, CRC(e41e7768) SHA1(3d0add7c75c23533309e799fd8853c815e6f811c) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD( "mgfx_ani.u17", 0x000000, 0x400000, CRC(9fc75f4d) SHA1(acb600739dcf252a5210e28ec96d749573061b27) )
+
+ ROM_REGION( 0x200000, "oki", 0 )
+ ROM_LOAD( "mgfx_sp.u14", 0x00000, 0x100000, CRC(9bb28fc8) SHA1(6368753c29607f2d212d68c5cca3f10aa069649b) )
+ROM_END
+
+
/*
@@ -705,10 +806,10 @@ ROM_START( gonefsh2 )
ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "gfii_v-904uso.u12", 0x000000, 0x80000, CRC(ef0f6735) SHA1(0add92599b0989f3e50dc64e32ce234b4bd87d33) )
- ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_REGION( 0x80000, "tilemaps", 0 )
ROM_LOAD( "gfii_text.u15", 0x000000, 0x80000, CRC(b48118fd) SHA1(e718d23ce5f7f41ab94df2d05cdd3adbf27eef89) )
- ROM_REGION( 0x400000, "gfx2", 0 )
+ ROM_REGION( 0x400000, "sprites", 0 )
ROM_LOAD( "gfii_cg.u17", 0x000000, 0x200000, CRC(2568359c) SHA1(f1f240246e53496bf624c84f7cae3edb9675579f) )
ROM_REGION( 0x200000, "oki", 0 )
@@ -786,10 +887,10 @@ ROM_START( chessc2 )
ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
ROM_LOAD( "ccii_v-707uso.u12", 0x000000, 0x80000, CRC(5937b67b) SHA1(967b3adf6f5bf92d63ec460d595e473898a78372) )
- ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_REGION( 0x80000, "tilemaps", 0 )
ROM_LOAD( "ccii_text.u15", 0x000000, 0x80000, CRC(25fed033) SHA1(b321c4994f609906597c3f7d5cdfc2dca63cd340) )
- ROM_REGION( 0x400000, "gfx2", 0 )
+ ROM_REGION( 0x400000, "sprites", 0 )
ROM_LOAD( "ccii_cg.u17", 0x000000, 0x200000, CRC(47e45157) SHA1(4459799a4a6c30a2d0a3ad9ac54e92b62221e10b) )
ROM_REGION( 0x200000, "oki", 0 )
@@ -798,7 +899,10 @@ ROM_END
-
+// prg at u34
+// text at u15
+// cg at u32 / u12
+// samples at u3
ROM_START( haunthig )
ROM_REGION( 0x04000, "maincpu", 0 )
@@ -811,47 +915,64 @@ ROM_START( haunthig )
ROM_REGION( 0x10000, "plcc", 0 )
ROM_LOAD( "hauntedhouse.u17", 0x000000, 0x10000, CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) // MX10EXAQC (80C51 XA based MCU) marked J9, not read protected?
- ROM_REGION( 0x80000, "gfx1", 0 )
+ ROM_REGION( 0x80000, "tilemaps", 0 )
ROM_LOAD( "haunted-h_text.u15", 0x000000, 0x80000, CRC(c23f48c8) SHA1(0cb1b6c61611a081ae4a3c0be51812045ff632fe) )
// are these PGM-like sprites?
- ROM_REGION( 0x400000, "gfx2", 0 )
- ROM_LOAD( "haunted-h_cg.u32", 0x000000, 0x400000, CRC(e0ea10e6) SHA1(e81be78fea93e72d4b1f4c0b58560bda46cf7948) )
- ROM_REGION( 0x400000, "gfx3", 0 )
- ROM_LOAD( "haunted-h_ext.u12", 0x000000, 0x400000, CRC(662eb883) SHA1(831ebe29e1e7a8b2c2fff7fbc608975771c3486c) )
+ ROM_REGION( 0x800000, "sprites", 0 )
+ ROM_LOAD( "haunted-h_cg.u32", 0x000000, 0x400000, CRC(e0ea10e6) SHA1(e81be78fea93e72d4b1f4c0b58560bda46cf7948) ) // FIXED BITS (xxxxxxx0xxxxxxxx)
+ ROM_LOAD( "haunted-h_ext.u12", 0x400000, 0x400000, CRC(662eb883) SHA1(831ebe29e1e7a8b2c2fff7fbc608975771c3486c) ) // FIXED BITS (xxxxxxxx0xxxxxxx)
- ROM_REGION( 0x200000, "oki", 0 )
+ ROM_REGION( 0x200000, "samples", 0 ) // samples, but not OKI? possibly ICS?
ROM_LOAD( "haunted-h_sp.u3", 0x00000, 0x200000, CRC(fe3fcddf) SHA1(ac57ab6d4e4883747c093bd19d0025cf6588cb2c) )
ROM_END
-// seems to be a bigger game with different video system
-ROM_START( fearless )
+
+// Games with prg at u17
+// text at u27
+// cg at u28
+// samples at u4 (or u5?)
+
+ROM_START( sddz )
ROM_REGION( 0x04000, "maincpu", 0 )
/* Internal rom of IGS027A ARM based MCU */
- ROM_LOAD( "fearless_igs027a", 0x00000, 0x4000, NO_DUMP ) // sticker marked 'F1'
+ ROM_LOAD( "sddz_igs027a", 0x00000, 0x4000, NO_DUMP )
ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
- ROM_LOAD( "fearlessp_v-101us.u37", 0x000000, 0x80000, CRC(2522873c) SHA1(8db709877311b6d2796353fc9a44a820937e35c2) )
+ ROM_LOAD( "ddz_218cn.u17", 0x000000, 0x80000, CRC(3cfe38d5) SHA1(9c7f82ecffbc22879583519d5f753bb35e973ee3) )
- ROM_REGION( 0x10000, "plcc", 0 )
- ROM_LOAD( "fearlessp_07.u33", 0x000000, 0x10000, CRC(7dae4900) SHA1(bbf7ba7c9e95ff2ffeb1dc0fc7ccedd4da274d01) ) // MX10EXAQC (80C51 XA based MCU) marked 07, not read protected?
-
- ROM_REGION( 0x800000, "gfx1", 0 ) // these all report FIXED BITS (0xxxxxxx), possibly just 7-bit colour data
- ROM_LOAD( "fearlessp_u6_cg-0h.u6", 0x000000, 0x800000, CRC(02d8bbbf) SHA1(7cf36c909a5d76096a725ffe0a697bcbafbcf985) )
- ROM_LOAD( "fearlessp_u7_cg-0l.u7", 0x000000, 0x800000, CRC(ca254db4) SHA1(f5670c2ff0720c84c9aff3cea95b118b6044e469) )
- ROM_LOAD( "fearlessp_u13_cg-1h.u13", 0x000000, 0x800000, CRC(c9d2a56d) SHA1(91d1665623bca743f68f15a27bbf433e2ffc0808) )
- ROM_LOAD( "fearlessp_u14_cg-1l.u14", 0x000000, 0x800000, CRC(7fe312d2) SHA1(c0add22d9fc4c0e32a03922cb709b947bfff429d) )
- ROM_LOAD( "fearlessp_u17_cg-2h.u17", 0x000000, 0x800000, CRC(756fe1f2) SHA1(48ee81c5fa4808406b57b2521b836db3ff5a7fa9) )
- ROM_LOAD( "fearlessp_u18_cg-2l.u18", 0x000000, 0x800000, CRC(07623d66) SHA1(041d5e44917bc16caa720ea98bdc0a4f5fb4b8e0) )
-
- ROM_REGION( 0x800000, "ics", 0 )
- ROM_LOAD( "fearlessp_u25_music0.u25", 0x000000, 0x400000, CRC(a015b9b1) SHA1(7b129c59acd523dec82e58a75d873bbc5341fb28) )
- ROM_LOAD( "fearlessp_u26_music1.u26", 0x400000, 0x400000, CRC(9d5f18da) SHA1(42e5224c1af0898cc2e02b2e051ea8b629d5fb6d) )
+ ROM_REGION( 0x80000, "tilemaps", 0 )
+ ROM_LOAD( "ddz_text.u27", 0x000000, 0x80000, CRC(520dc392) SHA1(0ab2620f20af8253806b6ff4e1d9d77a694da17c) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD( "ddz_ani.u28", 0x000000, 0x400000, CRC(72487508) SHA1(9f4bbc858960ddaae403e4a3330b2345f6fd6cb3))
+
+ ROM_REGION( 0x200000, "samples", 0 ) // samples, but not OKI? possibly ICS?
+ ROM_LOAD( "ddz_sp.u4", 0x00000, 0x200000, CRC(7ef65d95) SHA1(345c587cd449d6d06908e9687480be76b2cb2d28) )
+ROM_END
+
+ROM_START( lhzb4 )
+ ROM_REGION( 0x04000, "maincpu", 0 )
+ /* Internal rom of IGS027A ARM based MCU */
+ ROM_LOAD( "lhzb4_igs027a", 0x00000, 0x4000, NO_DUMP )
+
+ ROM_REGION( 0x80000, "user1", 0 ) // external ARM data / prg
+ ROM_LOAD( "lhzb4_104.u17", 0x000000, 0x80000, CRC(6f349bbb) SHA1(54cf895889ef0f208637ba732ede696ca3603ee0) )
+
+ ROM_REGION( 0x80000, "tilemaps", 0 )
+ ROM_LOAD( "lhzb4_text.u27", 0x000000, 0x80000, CRC(8488b039) SHA1(59bc9eccba810fcac2a53866b2da1e71bfd8a6e7) )
+
+ ROM_REGION( 0x400000, "sprites", 0 )
+ ROM_LOAD( "a05501.u28", 0x000000, 0x400000, CRC(f78b3714) SHA1(c73d8e50b04126bc4f91783384713624ed133ee2) )
+
+ ROM_REGION( 0x200000, "samples", 0 ) // samples, but not OKI? possibly ICS?
+ ROM_LOAD( "w05502.u5", 0x00000, 0x200000, CRC(467f677e) SHA1(63927c0d606176c0e22db89ea3a9777ed702abbd) )
ROM_END
+
void igs_m027_state::pgm_create_dummy_internal_arm_region()
{
UINT16 *temp16 = (UINT16 *)memregion("maincpu")->base();
@@ -912,12 +1033,6 @@ DRIVER_INIT_MEMBER(igs_m027_state,hauntedh)
pgm_create_dummy_internal_arm_region();
}
-DRIVER_INIT_MEMBER(igs_m027_state,fearless)
-{
- fearless_decrypt(machine());
- //sdwx_gfx_decrypt(machine());
- pgm_create_dummy_internal_arm_region();
-}
DRIVER_INIT_MEMBER(igs_m027_state,lhzb4)
@@ -962,20 +1077,51 @@ DRIVER_INIT_MEMBER(igs_m027_state,zhongguo)
pgm_create_dummy_internal_arm_region();
}
+DRIVER_INIT_MEMBER(igs_m027_state,slqz3)
+{
+ slqz3_decrypt(machine());
+ //sdwx_gfx_decrypt(machine());
+ pgm_create_dummy_internal_arm_region();
+}
+
+DRIVER_INIT_MEMBER(igs_m027_state,fruitpar)
+{
+ fruitpar_decrypt(machine());
+ //sdwx_gfx_decrypt(machine());
+ pgm_create_dummy_internal_arm_region();
+}
+
+DRIVER_INIT_MEMBER(igs_m027_state,amazonia)
+{
+ amazonia_decrypt(machine());
+ //sdwx_gfx_decrypt(machine());
+ pgm_create_dummy_internal_arm_region();
+}
+
+DRIVER_INIT_MEMBER(igs_m027_state,amazoni2)
+{
+ amazoni2_decrypt(machine());
+ //sdwx_gfx_decrypt(machine());
+ pgm_create_dummy_internal_arm_region();
+}
+
/***************************************************************************
Game Drivers
***************************************************************************/
-GAME( 2002, sdwx, 0, igs_majhong, sdwx, igs_m027_state, sdwx, ROT0, "IGS", "Sheng Dan Wu Xian", GAME_IS_SKELETON ) // aka Christmas 5 Line?
-GAME( 200?, sddz, 0, igs_majhong, sdwx, igs_m027_state, sddz, ROT0, "IGS", "Super Dou Di Zhu", GAME_IS_SKELETON )
-GAME( 2000, zhongguo, 0, igs_majhong, sdwx, igs_m027_state, zhongguo, ROT0, "IGS", "Zhong Guo Chu Da D", GAME_IS_SKELETON )
-GAME( 200?, lhzb3, 0, igs_majhong, sdwx, igs_m027_state, lhzb3, ROT0, "IGS", "Long Hu Zheng Ba 3", GAME_IS_SKELETON )
-GAME( 200?, lhzb4, 0, igs_majhong, sdwx, igs_m027_state, lhzb4, ROT0, "IGS", "Long Hu Zheng Ba 4", GAME_IS_SKELETON )
-GAME( 200?, klxyj, 0, igs_majhong, sdwx, igs_m027_state, klxyj, ROT0, "IGS", "Kuai Le Xi You Ji", GAME_IS_SKELETON )
-GAME( 2000, mgfx, 0, igs_majhong, sdwx, igs_m027_state, mgfx, ROT0, "IGS", "Man Guan Fu Xing", GAME_IS_SKELETON )
-GAME( 200?, gonefsh2, 0, igs_majhong, sdwx, igs_m027_state, gonefsh2, ROT0, "IGS", "Gone Fishing 2", GAME_IS_SKELETON )
-GAME( 200?, chessc2, 0, igs_majhong, sdwx, igs_m027_state, chessc2, ROT0, "IGS", "Chess Challenge 2", GAME_IS_SKELETON )
-GAME( 200?, haunthig, 0, igs_majhong, sdwx, igs_m027_state, hauntedh, ROT0, "IGS", "Haunted House (IGS)", GAME_IS_SKELETON )
-GAME( 2006, fearless, 0, fearless, sdwx, igs_m027_state, fearless, ROT0, "IGS", "Fearless Pinocchio (V101US)", GAME_IS_SKELETON )
+GAME( 1999, slqz3, 0, igs_majhong, sdwx, igs_m027_state, slqz3, ROT0, "IGS", "Mahjong Shuang Long Qiang Zhu 3 (China, VS107C)", MACHINE_IS_SKELETON )
+GAME( 1999, amazonia, 0, amazonia,amazonia, igs_m027_state, amazonia, ROT0, "IGS", "Amazonia King (V104BR)", MACHINE_IS_SKELETON )
+GAME( 200?, fruitpar, 0, igs_majhong, sdwx, igs_m027_state, fruitpar, ROT0, "IGS", "Fruit Paradise (V214)", MACHINE_IS_SKELETON )
+GAME( 2002, sdwx, 0, igs_majhong, sdwx, igs_m027_state, sdwx, ROT0, "IGS", "Sheng Dan Wu Xian", MACHINE_IS_SKELETON ) // aka Christmas 5 Line? (or Amazonia King II, shares roms at least?)
+GAME( 2002, amazoni2, 0, igs_majhong, sdwx, igs_m027_state, amazoni2, ROT0, "IGS", "Amazonia King II (V202BR)", MACHINE_IS_SKELETON )
+GAME( 200?, sddz, 0, igs_majhong, sdwx, igs_m027_state, sddz, ROT0, "IGS", "Super Dou Di Zhu", MACHINE_IS_SKELETON )
+GAME( 2000, zhongguo, 0, igs_majhong, sdwx, igs_m027_state, zhongguo, ROT0, "IGS", "Zhong Guo Chu Da D", MACHINE_IS_SKELETON )
+GAME( 200?, lhzb3, 0, igs_majhong, sdwx, igs_m027_state, lhzb3, ROT0, "IGS", "Long Hu Zheng Ba 3", MACHINE_IS_SKELETON )
+GAME( 200?, lhzb4, 0, igs_majhong, sdwx, igs_m027_state, lhzb4, ROT0, "IGS", "Long Hu Zheng Ba 4", MACHINE_IS_SKELETON )
+GAME( 200?, klxyj, 0, igs_majhong, sdwx, igs_m027_state, klxyj, ROT0, "IGS", "Kuai Le Xi You Ji", MACHINE_IS_SKELETON )
+GAME( 2000, mgfx, 0, igs_majhong, sdwx, igs_m027_state, mgfx, ROT0, "IGS", "Man Guan Fu Xing", MACHINE_IS_SKELETON )
+GAME( 200?, gonefsh2, 0, igs_majhong, sdwx, igs_m027_state, gonefsh2, ROT0, "IGS", "Gone Fishing 2", MACHINE_IS_SKELETON )
+GAME( 200?, chessc2, 0, igs_majhong, sdwx, igs_m027_state, chessc2, ROT0, "IGS", "Chess Challenge 2", MACHINE_IS_SKELETON )
+GAME( 200?, haunthig, 0, igs_majhong, sdwx, igs_m027_state, hauntedh, ROT0, "IGS", "Haunted House (IGS)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/igs_m036.c b/src/mame/drivers/igs_m036.c
index e22bb7031f8..a101a74b3b9 100644
--- a/src/mame/drivers/igs_m036.c
+++ b/src/mame/drivers/igs_m036.c
@@ -318,11 +318,11 @@ DRIVER_INIT_MEMBER(igs_m036_state, igsm312)
***************************************************************************/
-GAME( 200?, cjdh2, 0, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CN)", GAME_IS_SKELETON )
-GAME( 200?, cjdh2a, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNA)", GAME_IS_SKELETON )
-GAME( 200?, cjdh2b, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNB)", GAME_IS_SKELETON )
-GAME( 200?, cjdh2c, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V215CN)", GAME_IS_SKELETON )
+GAME( 200?, cjdh2, 0, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CN)", MACHINE_IS_SKELETON )
+GAME( 200?, cjdh2a, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNA)", MACHINE_IS_SKELETON )
+GAME( 200?, cjdh2b, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V311CNB)", MACHINE_IS_SKELETON )
+GAME( 200?, cjdh2c, cjdh2, igs_m036, igs_m036, igs_m036_state, cjdh2, ROT0, "IGS", "Chao Ji Da Heng 2 (V215CN)", MACHINE_IS_SKELETON )
-GAME( 200?, cjddzsp, 0, igs_m036_tt, igs_m036, igs_m036_state, cjddzsp, ROT0, "IGS", "Super Dou Di Zhu Special (V122CN)", GAME_IS_SKELETON )
+GAME( 200?, cjddzsp, 0, igs_m036_tt, igs_m036, igs_m036_state, cjddzsp, ROT0, "IGS", "Super Dou Di Zhu Special (V122CN)", MACHINE_IS_SKELETON )
-GAME( 200?, igsm312, 0, igs_m036_tt, igs_m036, igs_m036_state, igsm312, ROT0, "IGS", "unknown 'IGS 6POKER2' game (V312CN)", GAME_IS_SKELETON ) // there's very little code and no gfx roms, might be a 'set/clear' chip for a gambling game.
+GAME( 200?, igsm312, 0, igs_m036_tt, igs_m036, igs_m036_state, igsm312, ROT0, "IGS", "unknown 'IGS 6POKER2' game (V312CN)", MACHINE_IS_SKELETON ) // there's very little code and no gfx roms, might be a 'set/clear' chip for a gambling game.
diff --git a/src/mame/drivers/igspc.c b/src/mame/drivers/igspc.c
index 7846df2687b..2acd3fc9b2f 100644
--- a/src/mame/drivers/igspc.c
+++ b/src/mame/drivers/igspc.c
@@ -113,5 +113,5 @@ DRIVER_INIT_MEMBER(speeddrv_state,speeddrv)
{
}
-GAME( 2004, speeddrv, 0, speeddrv, speeddrv, speeddrv_state, speeddrv, ROT0, "IGS", "Speed Driver", GAME_IS_SKELETON )
-GAME( 200?, eztouch, 0, speeddrv, speeddrv, speeddrv_state, speeddrv, ROT0, "IGS", "EZ Touch (v116 China)", GAME_IS_SKELETON )
+GAME( 2004, speeddrv, 0, speeddrv, speeddrv, speeddrv_state, speeddrv, ROT0, "IGS", "Speed Driver", MACHINE_IS_SKELETON )
+GAME( 200?, eztouch, 0, speeddrv, speeddrv, speeddrv_state, speeddrv, ROT0, "IGS", "EZ Touch (v116 China)", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/igspoker.c b/src/mame/drivers/igspoker.c
index 15a855a65d3..831a5e687d1 100644
--- a/src/mame/drivers/igspoker.c
+++ b/src/mame/drivers/igspoker.c
@@ -122,6 +122,7 @@ public:
DECLARE_DRIVER_INIT(cpoker);
DECLARE_DRIVER_INIT(igs_ncs2);
DECLARE_DRIVER_INIT(cpokerpk);
+ DECLARE_DRIVER_INIT(kungfu);
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
virtual void machine_reset();
@@ -2425,6 +2426,20 @@ ROM_START( citalcup )
ROM_LOAD( "9.bin", 0x0000, 0x40000, CRC(dd213b5c) SHA1(82e32aa44eee227d7424553a743df48606bbd48e) )
ROM_END
+
+ROM_START( pktet346 )
+ ROM_REGION( 0x10000, "maincpu", 0 )
+ ROM_LOAD( "v-346i.bin", 0x00000, 0x10000, CRC(8015ef13) SHA1(62841daff380d40c14ddb9c1b3fccdbb287e0b0d) )
+
+ ROM_REGION( 0x60000, "gfx1", 0 )
+ ROM_LOAD( "346i-1.bin", 0x40000, 0x20000, CRC(1f8ae481) SHA1(259808422ae1c89f08deb982387b342a68afad7f) )
+ ROM_LOAD( "346i-2.bin", 0x20000, 0x20000, CRC(f198a24f) SHA1(a4bc5936f8729b00dc3c5034ce5689e4d16284bf) )
+ ROM_LOAD( "346i-3.bin", 0x00000, 0x20000, CRC(cfc4954d) SHA1(c68edbe0a7ce6a95d978756d2c1c8c5935786bcc) )
+
+ ROM_REGION( 0x30000, "gfx2", ROMREGION_ERASE00 )
+
+ROM_END
+
DRIVER_INIT_MEMBER(igspoker_state,pktet346)
{
int A;
@@ -2445,37 +2460,96 @@ DRIVER_INIT_MEMBER(igspoker_state,pktet346)
rom[0xbb0c] = 0xc3;
}
-ROM_START( pktet346 )
- ROM_REGION( 0x10000, "maincpu", 0 )
- ROM_LOAD( "v-346i.bin", 0x00000, 0x10000, CRC(8015ef13) SHA1(62841daff380d40c14ddb9c1b3fccdbb287e0b0d) )
+
+/*
+
+Cherry master looking board
+
+Big chip with no markings at U80 stickered KUNG FU
+ V1.0
+ 1992
+
+Board silkscreend on top PCB NO.0013-B
+
+.45 27010 stickered 6
+.44 27010 stickered 5
+.43 27010 stickered 4
+.42 27128 stickered 3
+.41 27128 stickered 2
+.40 27128 stickered 1
+.98 27256 stickered 7 couldn't read chip, but board was silkscreened 27c256
+.97 27512 stickered ? looked like japanese writing
+.38 74s287
+.46 18cv8 <--- same checksum as .48
+.47 pal16l8a <--- checksum was 0
+.48 18cv8 <--- same checksum as .46
+
+unknown 24 pin chip @ u29
+open 24 pin socket @ u54
+12 MHz crystal
+
+5 x DSW8
+3 x NEC D8255AC
+
+*/
+
+ROM_START( kungfu )
+ ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASE00 )
+ // u97 contains leftover x86 code at 0-3fff (compiled with Borland Turbo-C).
+ // You can rename the rom to kungfu.exe and run it (DOS MZ executable)!
+ // The rest is Z80 code, so the CPU at u80 is probably a variant with internal ROM.
+ ROM_LOAD( "kungfu-internal.u80", 0x00000, 0x04000, NO_DUMP )
+ ROM_LOAD( "kungfu.u97", 0x00000, 0x10000, CRC(5c8e16de) SHA1(4af3795753d6e08f528b861d3a771c782e173556) )
+ ROM_LOAD( "kungfu-7.u98", 0x10000, 0x08000, CRC(1d3f0c79) SHA1(0a33798b69fbdc0fb7c47c51f5759e42acd2c608) )
ROM_REGION( 0x60000, "gfx1", 0 )
- ROM_LOAD( "346i-1.bin", 0x40000, 0x20000, CRC(1f8ae481) SHA1(259808422ae1c89f08deb982387b342a68afad7f) )
- ROM_LOAD( "346i-2.bin", 0x20000, 0x20000, CRC(f198a24f) SHA1(a4bc5936f8729b00dc3c5034ce5689e4d16284bf) )
- ROM_LOAD( "346i-3.bin", 0x00000, 0x20000, CRC(cfc4954d) SHA1(c68edbe0a7ce6a95d978756d2c1c8c5935786bcc) )
+ ROM_LOAD( "kungfu-4.u43", 0x00000, 0x20000, CRC(df4afedb) SHA1(56ab18c46a199653c284417a8e9edc9f32374318) )
+ ROM_LOAD( "kungfu-5.u44", 0x20000, 0x20000, CRC(25c9c98e) SHA1(2d3a399d8d53ee5cb8106d2b35d1ab1778439f81) )
+ ROM_LOAD( "kungfu-6.u45", 0x40000, 0x20000, CRC(f1ec5f0d) SHA1(0aa888e13312ed5d98953c81f03a61c6175c7fec) )
ROM_REGION( 0x30000, "gfx2", ROMREGION_ERASE00 )
-
+ ROM_LOAD( "kungfu-1.u40", 0x00000, 0x4000, CRC(abaada6b) SHA1(a6b910db7451e8ca737f43f32dfc8fc5ecf865f4) )
+ ROM_LOAD( "kungfu-2.u41", 0x10000, 0x4000, CRC(927b3060) SHA1(a780ea5aaee04287cc9533c2d258dc18f8426530) )
+ ROM_LOAD( "kungfu-3.u42", 0x20000, 0x4000, CRC(bbf78e03) SHA1(06fee093e75e2611d00c076c2e0a681938fa8b74) )
+
+ ROM_REGION( 0x1000, "plds", 0 )
+ ROM_LOAD( "kungfu.u38", 0x000, 0x100, CRC(2074f729) SHA1(eb9a60dec57a029ae6d3fc53aa7bc78e8ac34392) )
+ ROM_LOAD( "kungfu.u46", 0x000, 0xde1, CRC(5d4aacaf) SHA1(733546ce0585c40833e1c34504c33219a2bea0a9) )
+ ROM_LOAD( "kungfu.u47", 0x000, 0xaee, CRC(5c7e25b5) SHA1(7d37e4abfe1256bd9cb168e0f02e651118dfb304) )
+ ROM_LOAD( "kungfu.u48", 0x000, 0xde1, CRC(5d4aacaf) SHA1(733546ce0585c40833e1c34504c33219a2bea0a9) )
ROM_END
+DRIVER_INIT_MEMBER(igspoker_state,kungfu)
+{
+ int A;
+ UINT8 *rom = memregion("maincpu")->base();
+
+ for (A = 0x4000;A < 0x10000;A++)
+ {
+ rom[A] = rom[A] ^ 0x01;
+ }
+ memset( &rom[0xf000], 0, 0x1000);
+}
-GAMEL( 1993?,cpoker, 0, igspoker, cpoker, igspoker_state, cpoker, ROT0, "IGS", "Champion Poker (v220I)", 0, layout_igspoker )
-GAMEL( 1993?,cpokert, cpoker, igspoker, cpoker, igspoker_state, cpokert, ROT0, "IGS (Tuning license)", "Champion Poker (v200G)", 0, layout_igspoker )
-GAMEL( 1993, cpokerx, cpoker, igspoker, cpokerx, igspoker_state, cpokert, ROT0, "IGS", "Champion Poker (v100)", 0, layout_igspoker )
+GAMEL( 1993?,cpoker, 0, igspoker, cpoker, igspoker_state, cpoker, ROT0, "IGS", "Champion Poker (v220I)", 0, layout_igspoker )
+GAMEL( 1993?,cpokert, cpoker, igspoker, cpoker, igspoker_state, cpokert, ROT0, "IGS (Tuning license)", "Champion Poker (v200G)", 0, layout_igspoker )
+GAMEL( 1993, cpokerx, cpoker, igspoker, cpokerx, igspoker_state, cpokert, ROT0, "IGS", "Champion Poker (v100)", 0, layout_igspoker )
GAMEL( 2000, chleague, 0, igspoker, chleague, igspoker_state, chleague, ROT0, "IGS", "Champion League (Poker)", 0, layout_igspoker )
GAMEL( 2000, chleagul, chleague, igspoker, chleague, igspoker_state, chleague, ROT0, "IGS", "Champion League (Lattine)", 0, layout_igspoker )
-GAMEL( 198?, csk227it, 0, csk227it, csk227, igspoker_state, cska, ROT0, "IGS", "Champion Skill (with Ability)", 0, layout_igspoker ) /* SU 062 */
-GAMEL( 198?, csk234it, csk227it, csk234it, csk234, igspoker_state, cska, ROT0, "IGS", "Champion Skill (Ability, Poker & Symbols)", 0, layout_igspoker ) /* SU 062 */
+GAMEL( 198?, csk227it, 0, csk227it, csk227, igspoker_state, cska, ROT0, "IGS", "Champion Skill (with Ability)", 0, layout_igspoker ) /* SU 062 */
+GAMEL( 198?, csk234it, csk227it, csk234it, csk234, igspoker_state, cska, ROT0, "IGS", "Champion Skill (Ability, Poker & Symbols)", 0, layout_igspoker ) /* SU 062 */
GAMEL( 2000, number10, 0, number10, number10, igspoker_state, number10, ROT0, "PlayMark SRL", "Number Dieci (Poker)", 0, layout_igspoker )
GAMEL( 2000, numbr10l, number10, number10, number10, igspoker_state, number10, ROT0, "PlayMark SRL", "Number Dieci (Lattine)", 0, layout_igspoker )
-GAMEL( 198?, igs_ncs, 0, igs_ncs, igs_ncs, igspoker_state, igs_ncs, ROT0, "IGS", "New Champion Skill (v100n)", 0, layout_igspoker ) /* SU 062 */
+GAMEL( 198?, igs_ncs, 0, igs_ncs, igs_ncs, igspoker_state, igs_ncs, ROT0, "IGS", "New Champion Skill (v100n)", 0, layout_igspoker ) /* SU 062 */
GAMEL( 199?, cpokerpk, 0, cpokerpk, cpokerpk, igspoker_state, cpokerpk, ROT0, "bootleg (SGS)", "Champion Italian PK (bootleg, blue board)", 0, layout_igspoker )
GAMEL( 199?, cpokerpkg, cpokerpk, cpokerpk, cpokerpk, igspoker_state, cpokerpk, ROT0, "bootleg (SGS)", "Champion Italian PK (bootleg, green board)", 0, layout_igspoker )
GAMEL( 199?, citalcup, cpokerpk, cpokerpk, cpokerpk, igspoker_state, cpokerpk, ROT0, "bootleg (SGS)", "Champion Italian Cup (bootleg V220IT)", 0, layout_igspoker )
-GAMEL( 2000, igs_ncs2, 0, igs_ncs, igs_ncs, igspoker_state, igs_ncs2, ROT0, "IGS", "New Champion Skill (v100n 2000)", GAME_IMPERFECT_GRAPHICS, layout_igspoker )
+GAMEL( 2000, igs_ncs2, 0, igs_ncs, igs_ncs, igspoker_state, igs_ncs2, ROT0, "IGS", "New Champion Skill (v100n 2000)", MACHINE_IMPERFECT_GRAPHICS, layout_igspoker )
-GAMEL( 1998, stellecu, 0, number10, number10, driver_device, 0, ROT0, "Sure", "Stelle e Cubi (Italy)", GAME_NOT_WORKING, layout_igspoker )
+GAMEL( 1998, stellecu, 0, number10, number10, driver_device, 0, ROT0, "Sure", "Stelle e Cubi (Italy)", MACHINE_NOT_WORKING, layout_igspoker )
GAMEL( 1993?,pktet346, 0, pktetris, pktet346, igspoker_state, pktet346, ROT0, "IGS", "PK Tetris (v346I)", 0, layout_igspoker )
+
+GAMEL( 1992, kungfu, 0, igspoker, cpoker, igspoker_state, kungfu, ROT0, "IGS", "Kung Fu (IGS, v100)", MACHINE_NOT_WORKING, layout_igspoker )
diff --git a/src/mame/drivers/ikki.c b/src/mame/drivers/ikki.c
index 74fa1178c05..8b64a62f80f 100644
--- a/src/mame/drivers/ikki.c
+++ b/src/mame/drivers/ikki.c
@@ -354,5 +354,5 @@ ROM_END
*
*************************************/
-GAME( 1985, ikki, 0, ikki, ikki, driver_device, 0, ROT0, "Sun Electronics", "Ikki (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1985, farmer, ikki, ikki, ikki, driver_device, 0, ROT0, "Sun Electronics", "Farmers Rebellion", GAME_SUPPORTS_SAVE )
+GAME( 1985, ikki, 0, ikki, ikki, driver_device, 0, ROT0, "Sun Electronics", "Ikki (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1985, farmer, ikki, ikki, ikki, driver_device, 0, ROT0, "Sun Electronics", "Farmers Rebellion", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/imds.c b/src/mame/drivers/imds.c
index 0e44a6f6ae9..6e7e3a8d063 100644
--- a/src/mess/drivers/imds.c
+++ b/src/mame/drivers/imds.c
@@ -113,4 +113,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1983, imds, 0, 0, imds, imds, driver_device, 0, "Intel", "Intellec MDS", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1983, imds, 0, 0, imds, imds, driver_device, 0, "Intel", "Intellec MDS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/imds2.c b/src/mame/drivers/imds2.c
index 4db7ffd7555..aae8a4506f7 100644
--- a/src/mess/drivers/imds2.c
+++ b/src/mame/drivers/imds2.c
@@ -140,7 +140,7 @@ static ADDRESS_MAP_START(ioc_io_map , AS_IO , 8 , imds2_state)
AM_RANGE(0x90 , 0x9f) AM_READ(imds2_kb_read)
AM_RANGE(0xa0 , 0xaf) AM_READ(imds2_ioc_status_r)
AM_RANGE(0xb0 , 0xbf) AM_READ(imds2_ioc_dbbin_r)
- AM_RANGE(0xc0 , 0xcf) AM_DEVREADWRITE("iocfdc" , i8271_device , read , write)
+ AM_RANGE(0xc0 , 0xcf) AM_DEVICE("iocfdc" , i8271_device, map)
AM_RANGE(0xd0 , 0xdf) AM_DEVREADWRITE("ioccrtc" , i8275_device , read , write)
AM_RANGE(0xe0 , 0xef) AM_DEVREADWRITE("ioctimer" , pit8253_device , read , write);
// DMA controller range doesn't extend to 0xff because register 0xfd needs to be read as 0xff
@@ -171,11 +171,12 @@ imds2_state::imds2_state(const machine_config &mconfig, device_type type, const
m_iocbeep(*this , "iocbeep"),
m_ioctimer(*this , "ioctimer"),
m_iocfdc(*this , "iocfdc"),
+ m_flop0(*this, "iocfdc:0"),
+ m_flop1(*this, "iocfdc:1"),
m_iocpio(*this , "iocpio"),
m_kbcpu(*this , "kbcpu"),
m_palette(*this , "palette"),
m_gfxdecode(*this, "gfxdecode"),
- m_floppy0(*this , FLOPPY_0),
m_centronics(*this , "centronics"),
m_io_key0(*this , "KEY0"),
m_io_key1(*this , "KEY1"),
@@ -551,6 +552,17 @@ I8275_DRAW_CHARACTER_MEMBER(imds2_state::crtc_display_pixels)
}
}
+int imds2_state::floppy_load(floppy_image_device *dev)
+{
+ dev->mon_w(0);
+ return IMAGE_INIT_PASS;
+}
+
+void imds2_state::floppy_unload(floppy_image_device *dev)
+{
+ dev->mon_w(1);
+}
+
void imds2_state::driver_start()
{
// Allocate 64k for IPC RAM
@@ -566,8 +578,11 @@ void imds2_state::driver_start()
void imds2_state::machine_start()
{
- m_floppy0->floppy_mon_w(0);
- m_floppy0->floppy_drive_set_ready_state(1 , 0);
+ // As far as I can tell from the schmatic, there's no software motor control
+ m_flop0->get_device()->setup_load_cb(floppy_image_device::load_cb(FUNC(imds2_state::floppy_load), this));
+ m_flop0->get_device()->setup_unload_cb(floppy_image_device::unload_cb(FUNC(imds2_state::floppy_unload), this));
+ m_flop1->get_device()->setup_load_cb(floppy_image_device::load_cb(FUNC(imds2_state::floppy_load), this));
+ m_flop1->get_device()->setup_unload_cb(floppy_image_device::unload_cb(FUNC(imds2_state::floppy_unload), this));
}
void imds2_state::video_start()
@@ -580,6 +595,10 @@ void imds2_state::machine_reset()
m_iocbeep->set_frequency(IOC_BEEP_FREQ);
m_ipc_control = 0x00;
m_ipc_ioc_status = 0x0f;
+ m_flop0->get_device()->mon_w(!m_flop0->get_device()->exists());
+ m_flop1->get_device()->mon_w(!m_flop1->get_device()->exists());
+
+ m_iocfdc->set_rate(500000); // The IMD images show a rate of 500kbps
}
bool imds2_state::imds2_in_ipc_rom(offs_t offset) const
@@ -737,15 +756,9 @@ static GFXDECODE_START(imds2)
GFXDECODE_ENTRY("gfx1" , 0x0000 , imds2_charlayout , 0 , 1)
GFXDECODE_END
-static LEGACY_FLOPPY_OPTIONS_START(imds2)
-LEGACY_FLOPPY_OPTIONS_END
-
-static const floppy_interface imds2_floppy_interface =
-{
- FLOPPY_STANDARD_8_SSSD,
- LEGACY_FLOPPY_OPTIONS_NAME(imds2),
- "floppy_8"
-};
+static SLOT_INTERFACE_START( imds2_floppies )
+ SLOT_INTERFACE( "8sssd", FLOPPY_8_SSSD )
+SLOT_INTERFACE_END
static MACHINE_CONFIG_START(imds2 , imds2_state)
MCFG_CPU_ADD("ipccpu" , I8085A , IPC_XTAL_Y2 / 2) // 4 MHz
@@ -805,8 +818,8 @@ static MACHINE_CONFIG_START(imds2 , imds2_state)
MCFG_I8257_OUT_HRQ_CB(WRITELINE(imds2_state, imds2_hrq_w))
MCFG_I8257_IN_MEMR_CB(READ8(imds2_state , imds2_ioc_mem_r))
MCFG_I8257_OUT_MEMW_CB(WRITE8(imds2_state , imds2_ioc_mem_w))
- MCFG_I8257_IN_IOR_1_CB(DEVREAD8("iocfdc" , i8271_device , dack_r))
- MCFG_I8257_OUT_IOW_1_CB(DEVWRITE8("iocfdc" , i8271_device , dack_w))
+ MCFG_I8257_IN_IOR_1_CB(DEVREAD8("iocfdc" , i8271_device , data_r))
+ MCFG_I8257_OUT_IOW_1_CB(DEVWRITE8("iocfdc" , i8271_device , data_w))
MCFG_I8257_OUT_IOW_2_CB(DEVWRITE8("ioccrtc" , i8275_device , dack_w))
MCFG_DEVICE_ADD("ioctimer" , PIT8253 , 0)
@@ -816,9 +829,8 @@ static MACHINE_CONFIG_START(imds2 , imds2_state)
MCFG_DEVICE_ADD("iocfdc" , I8271 , IOC_XTAL_Y1 / 2)
MCFG_I8271_DRQ_CALLBACK(DEVWRITELINE("iocdma" , i8257_device , dreq1_w))
- MCFG_I8271_FLOPPIES(FLOPPY_0 , FLOPPY_1)
-
- MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, imds2_floppy_interface)
+ MCFG_FLOPPY_DRIVE_ADD("iocfdc:0", imds2_floppies, "8sssd", floppy_image_device::default_floppy_formats)
+ MCFG_FLOPPY_DRIVE_ADD("iocfdc:1", imds2_floppies, "8sssd", floppy_image_device::default_floppy_formats)
MCFG_CPU_ADD("iocpio" , I8041 , IOC_XTAL_Y3)
MCFG_CPU_IO_MAP(pio_io_map)
diff --git a/src/mame/drivers/imolagp.c b/src/mame/drivers/imolagp.c
index 4a735828a8c..57fba25c257 100644
--- a/src/mame/drivers/imolagp.c
+++ b/src/mame/drivers/imolagp.c
@@ -571,5 +571,5 @@ ROM_END
/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS */
-GAMEL(1983?, imolagp, 0, imolagp, imolagp, driver_device, 0, ROT90, "RB Bologna", "Imola Grand Prix (set 1)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE, layout_imolagp ) // made by Alberici? year not shown, PCB labels suggests it's from 1983
-GAMEL(1983?, imolagpo, imolagp, imolagp, imolagpo, driver_device, 0, ROT90, "RB Bologna", "Imola Grand Prix (set 2)", GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_COLORS | GAME_SUPPORTS_SAVE, layout_imolagp ) // "
+GAMEL(1983?, imolagp, 0, imolagp, imolagp, driver_device, 0, ROT90, "RB Bologna", "Imola Grand Prix (set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE, layout_imolagp ) // made by Alberici? year not shown, PCB labels suggests it's from 1983
+GAMEL(1983?, imolagpo, imolagp, imolagp, imolagpo, driver_device, 0, ROT90, "RB Bologna", "Imola Grand Prix (set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE, layout_imolagp ) // "
diff --git a/src/mess/drivers/imsai.c b/src/mame/drivers/imsai.c
index 2fb469a363f..60dca210781 100644
--- a/src/mess/drivers/imsai.c
+++ b/src/mame/drivers/imsai.c
@@ -139,4 +139,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1978, imsai, 0, 0, imsai, imsai, driver_device, 0, "Imsai", "MPU-B", GAME_NOT_WORKING | GAME_NO_SOUND_HW )
+COMP( 1978, imsai, 0, 0, imsai, imsai, driver_device, 0, "Imsai", "MPU-B", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
diff --git a/src/mame/drivers/inder.c b/src/mame/drivers/inder.c
index 61c3190d62a..50de5937fbe 100644
--- a/src/mame/drivers/inder.c
+++ b/src/mame/drivers/inder.c
@@ -1621,21 +1621,21 @@ ROM_END
// old cpu board, 6 digits, sn76489
-GAME(1985, brvteam, 0, brvteam, brvteam, driver_device, 0, ROT0, "Inder", "Brave Team", GAME_MECHANICAL)
+GAME(1985, brvteam, 0, brvteam, brvteam, driver_device, 0, ROT0, "Inder", "Brave Team", MACHINE_MECHANICAL)
// old cpu board, 7 digits, ay8910
-GAME(1986, canasta, 0, canasta, canasta, driver_device, 0, ROT0, "Inder", "Canasta '86'", GAME_MECHANICAL)
+GAME(1986, canasta, 0, canasta, canasta, driver_device, 0, ROT0, "Inder", "Canasta '86'", MACHINE_MECHANICAL)
// old cpu board, 7 digits, sound cpu with 2x ay8910
-GAME(1986, lapbylap, 0, lapbylap, lapbylap, driver_device, 0, ROT0, "Inder", "Lap By Lap", GAME_MECHANICAL)
+GAME(1986, lapbylap, 0, lapbylap, lapbylap, driver_device, 0, ROT0, "Inder", "Lap By Lap", MACHINE_MECHANICAL)
// new cpu board, sound board with msm5205
-GAME(1987, pinmoonl, 0, inder, pinmoonl, inder_state, inder, ROT0, "Inder", "Moon Light (Inder)", GAME_MECHANICAL)
-GAME(1988, pinclown, 0, inder, pinclown, inder_state, inder1, ROT0, "Inder", "Clown (Inder)", GAME_MECHANICAL)
-GAME(1989, corsario, 0, inder, corsario, inder_state, inder1, ROT0, "Inder", "Corsario", GAME_MECHANICAL)
-GAME(1990, mundial, 0, inder, mundial, inder_state, inder1, ROT0, "Inder", "Mundial 90", GAME_MECHANICAL)
-GAME(1991, atleta, 0, inder, atleta, inder_state, inder1, ROT0, "Inder", "Atleta", GAME_MECHANICAL)
-GAME(1992, ind250cc, 0, inder, ind250cc, inder_state, inder1, ROT0, "Inder", "250 CC", GAME_MECHANICAL)
+GAME(1987, pinmoonl, 0, inder, pinmoonl, inder_state, inder, ROT0, "Inder", "Moon Light (Inder)", MACHINE_MECHANICAL)
+GAME(1988, pinclown, 0, inder, pinclown, inder_state, inder1, ROT0, "Inder", "Clown (Inder)", MACHINE_MECHANICAL)
+GAME(1989, corsario, 0, inder, corsario, inder_state, inder1, ROT0, "Inder", "Corsario", MACHINE_MECHANICAL)
+GAME(1990, mundial, 0, inder, mundial, inder_state, inder1, ROT0, "Inder", "Mundial 90", MACHINE_MECHANICAL)
+GAME(1991, atleta, 0, inder, atleta, inder_state, inder1, ROT0, "Inder", "Atleta", MACHINE_MECHANICAL)
+GAME(1992, ind250cc, 0, inder, ind250cc, inder_state, inder1, ROT0, "Inder", "250 CC", MACHINE_MECHANICAL)
// new cpu board, later revision of msm5205 sound board
-GAME(1992, metalman, 0, inder, metalman, inder_state, inder, ROT0, "Inder", "Metal Man", GAME_IS_SKELETON_MECHANICAL)
+GAME(1992, metalman, 0, inder, metalman, inder_state, inder, ROT0, "Inder", "Metal Man", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mess/drivers/indiana.c b/src/mame/drivers/indiana.c
index 4f183075057..23e08a8bb81 100644
--- a/src/mess/drivers/indiana.c
+++ b/src/mame/drivers/indiana.c
@@ -119,4 +119,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1993, indiana, 0, 0, indiana, indiana, indiana_state, indiana, "Indiana University", "Indiana University 68030 board", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1993, indiana, 0, 0, indiana, indiana, indiana_state, indiana, "Indiana University", "Indiana University 68030 board", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/instruct.c b/src/mame/drivers/instruct.c
index ae806290293..ae806290293 100644
--- a/src/mess/drivers/instruct.c
+++ b/src/mame/drivers/instruct.c
diff --git a/src/mess/drivers/interact.c b/src/mame/drivers/interact.c
index 893bdf866ba..31a7cf195f2 100644
--- a/src/mess/drivers/interact.c
+++ b/src/mame/drivers/interact.c
@@ -295,5 +295,5 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP(1979, interact, 0, 0, interact, interact, driver_device, 0, "Interact", "Interact Family Computer", GAME_IMPERFECT_SOUND)
-COMP(1983, hector1, interact, 0, hector1, interact, driver_device, 0, "Micronique", "Hector 1", GAME_IMPERFECT_SOUND)
+COMP(1979, interact, 0, 0, interact, interact, driver_device, 0, "Interact", "Interact Family Computer", MACHINE_IMPERFECT_SOUND)
+COMP(1983, hector1, interact, 0, hector1, interact, driver_device, 0, "Micronique", "Hector 1", MACHINE_IMPERFECT_SOUND)
diff --git a/src/mame/drivers/intrscti.c b/src/mame/drivers/intrscti.c
index 1c48ff75d21..f918af988d5 100644
--- a/src/mame/drivers/intrscti.c
+++ b/src/mame/drivers/intrscti.c
@@ -236,4 +236,4 @@ DRIVER_INIT_MEMBER(intrscti_state,intrscti)
}
}
-GAME( 19??, intrscti, 0, intrscti, intrscti, intrscti_state, intrscti, ROT0, "<unknown>", "Intersecti", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND )
+GAME( 19??, intrscti, 0, intrscti, intrscti, intrscti_state, intrscti, ROT0, "<unknown>", "Intersecti", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/intv.c b/src/mame/drivers/intv.c
index 563bc1b8c0a..023cd6fcc36 100644
--- a/src/mess/drivers/intv.c
+++ b/src/mame/drivers/intv.c
@@ -742,11 +742,11 @@ DRIVER_INIT_MEMBER(intv_state,intvkbd)
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-CONS( 1979, intv, 0, 0, intv, intv, intv_state, intv, "Mattel", "Intellivision", GAME_SUPPORTS_SAVE )
-CONS( 1981, intvsrs, intv, 0, intv, intv, intv_state, intv, "Sears", "Super Video Arcade", GAME_SUPPORTS_SAVE )
-COMP( 1981, intvkbd, intv, 0, intvkbd, intvkbd, intv_state, intvkbd, "Mattel", "Intellivision Keyboard Component (Unreleased)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-CONS( 1982, intv2, intv, 0, intv2, intv, intv_state, intv, "Mattel", "Intellivision II", GAME_SUPPORTS_SAVE )
+CONS( 1979, intv, 0, 0, intv, intv, intv_state, intv, "Mattel", "Intellivision", MACHINE_SUPPORTS_SAVE )
+CONS( 1981, intvsrs, intv, 0, intv, intv, intv_state, intv, "Sears", "Super Video Arcade", MACHINE_SUPPORTS_SAVE )
+COMP( 1981, intvkbd, intv, 0, intvkbd, intvkbd, intv_state, intvkbd, "Mattel", "Intellivision Keyboard Component (Unreleased)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
+CONS( 1982, intv2, intv, 0, intv2, intv, intv_state, intv, "Mattel", "Intellivision II", MACHINE_SUPPORTS_SAVE )
// made up, user friendlier machines with pre-mounted passthu expansions
-COMP( 1982, intvoice, intv, 0, intvoice, intv, intv_state, intv, "Mattel", "Intellivision w/IntelliVoice expansion", GAME_SUPPORTS_SAVE )
-COMP( 1983, intvecs, intv, 0, intvecs, intv, intv_state, intv, "Mattel", "Intellivision w/Entertainment Computer System + Intellivoice expansions", GAME_SUPPORTS_SAVE )
+COMP( 1982, intvoice, intv, 0, intvoice, intv, intv_state, intv, "Mattel", "Intellivision w/IntelliVoice expansion", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, intvecs, intv, 0, intvecs, intv, intv_state, intv, "Mattel", "Intellivision w/Entertainment Computer System + Intellivoice expansions", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/inufuku.c b/src/mame/drivers/inufuku.c
index d93795c8591..dcbb74bd400 100644
--- a/src/mame/drivers/inufuku.c
+++ b/src/mame/drivers/inufuku.c
@@ -488,5 +488,5 @@ ROM_END
******************************************************************************/
-GAME( 1998, inufuku, 0, inufuku, inufuku, driver_device, 0, ROT0, "Video System Co.", "Quiz & Variety Sukusuku Inufuku (Japan)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE )
-GAME( 1996, 3on3dunk, 0, _3on3dunk, inufuku, driver_device, 0, ROT0, "Video System Co.", "3 On 3 Dunk Madness (US, prototype? 1997/02/04)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS ) // tilemap priority is wrong in places (basketball before explosion in attract, highscores)
+GAME( 1998, inufuku, 0, inufuku, inufuku, driver_device, 0, ROT0, "Video System Co.", "Quiz & Variety Sukusuku Inufuku (Japan)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
+GAME( 1996, 3on3dunk, 0, _3on3dunk, inufuku, driver_device, 0, ROT0, "Video System Co.", "3 On 3 Dunk Madness (US, prototype? 1997/02/04)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // tilemap priority is wrong in places (basketball before explosion in attract, highscores)
diff --git a/src/mame/drivers/invqix.c b/src/mame/drivers/invqix.c
index 90cdf22fd3d..55d180c0b99 100644
--- a/src/mame/drivers/invqix.c
+++ b/src/mame/drivers/invqix.c
@@ -362,4 +362,4 @@ ROM_START( invqix )
ROM_LOAD16_WORD_SWAP( "93c46.ic6", 0x000000, 0x000080, CRC(564b744e) SHA1(4d9ea7dc253797c513258d07a936dfb63d8ed18c) )
ROM_END
-GAME( 2003, invqix, 0, invqix, invqix, driver_device, 0, ROT270, "Taito / Namco", "Space Invaders / Qix Silver Anniversary Edition (Ver. 2.03)", GAME_SUPPORTS_SAVE )
+GAME( 2003, invqix, 0, invqix, invqix, driver_device, 0, ROT270, "Taito / Namco", "Space Invaders / Qix Silver Anniversary Edition (Ver. 2.03)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/ip20.c b/src/mame/drivers/ip20.c
index 8cfb7b0bebe..b03fb978c78 100644
--- a/src/mess/drivers/ip20.c
+++ b/src/mame/drivers/ip20.c
@@ -629,4 +629,4 @@ ROM_START( ip204415 )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1993, ip204415, 0, 0, ip204415, ip204415, ip20_state, ip204415, "Silicon Graphics Inc", "IRIS Indigo (R4400, 150MHz)", GAME_NOT_WORKING | GAME_NO_SOUND )
+COMP( 1993, ip204415, 0, 0, ip204415, ip204415, ip20_state, ip204415, "Silicon Graphics Inc", "IRIS Indigo (R4400, 150MHz)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
diff --git a/src/mess/drivers/ip22.c b/src/mame/drivers/ip22.c
index 3ca0cd1abfe..2ea0ea03fd6 100644
--- a/src/mess/drivers/ip22.c
+++ b/src/mame/drivers/ip22.c
@@ -1670,6 +1670,6 @@ ROM_START( ip244415 )
ROM_END
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP( 1993, ip225015, 0, 0, ip225015, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indy (R5000, 150MHz)", GAME_NOT_WORKING )
-COMP( 1993, ip224613, 0, 0, ip224613, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indy (R4600, 133MHz)", GAME_NOT_WORKING )
-COMP( 1994, ip244415, 0, 0, ip244415, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indigo2 (R4400, 150MHz)", GAME_NOT_WORKING )
+COMP( 1993, ip225015, 0, 0, ip225015, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indy (R5000, 150MHz)", MACHINE_NOT_WORKING )
+COMP( 1993, ip224613, 0, 0, ip224613, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indy (R4600, 133MHz)", MACHINE_NOT_WORKING )
+COMP( 1994, ip244415, 0, 0, ip244415, ip225015, ip22_state, ip225015, "Silicon Graphics Inc", "Indigo2 (R4400, 150MHz)", MACHINE_NOT_WORKING )
diff --git a/src/mess/drivers/ipc.c b/src/mame/drivers/ipc.c
index 6d4ff45c8c5..672b3b1c354 100644
--- a/src/mess/drivers/ipc.c
+++ b/src/mame/drivers/ipc.c
@@ -136,5 +136,5 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 19??, ipb, 0, 0, ipc, ipc, driver_device, 0, "Intel", "iPB", GAME_NO_SOUND)
-COMP( 19??, ipc, ipb, 0, ipc, ipc, driver_device, 0, "Intel", "iPC", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 19??, ipb, 0, 0, ipc, ipc, driver_device, 0, "Intel", "iPB", MACHINE_NO_SOUND)
+COMP( 19??, ipc, ipb, 0, ipc, ipc, driver_device, 0, "Intel", "iPC", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/ipds.c b/src/mame/drivers/ipds.c
index 91674996ec9..4b25d00bebc 100644
--- a/src/mess/drivers/ipds.c
+++ b/src/mame/drivers/ipds.c
@@ -165,4 +165,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 1982, ipds, 0, 0, ipds, ipds, driver_device, 0, "Intel", "iPDS", GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 1982, ipds, 0, 0, ipds, ipds, driver_device, 0, "Intel", "iPDS", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/iq151.c b/src/mame/drivers/iq151.c
index f6acd08bdd4..f6acd08bdd4 100644
--- a/src/mess/drivers/iq151.c
+++ b/src/mame/drivers/iq151.c
diff --git a/src/mame/drivers/iqblock.c b/src/mame/drivers/iqblock.c
index 9f3240f8097..0eca3938257 100644
--- a/src/mame/drivers/iqblock.c
+++ b/src/mame/drivers/iqblock.c
@@ -533,5 +533,5 @@ DRIVER_INIT_MEMBER(iqblock_state,grndtour)
-GAME( 1993, iqblock, 0, iqblock, iqblock, iqblock_state, iqblock, ROT0, "IGS", "IQ-Block", GAME_SUPPORTS_SAVE )
-GAME( 1993, grndtour, 0, iqblock, grndtour,iqblock_state, grndtour, ROT0, "IGS", "Grand Tour", GAME_SUPPORTS_SAVE )
+GAME( 1993, iqblock, 0, iqblock, iqblock, iqblock_state, iqblock, ROT0, "IGS", "IQ-Block", MACHINE_SUPPORTS_SAVE )
+GAME( 1993, grndtour, 0, iqblock, grndtour,iqblock_state, grndtour, ROT0, "IGS", "Grand Tour", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/irisha.c b/src/mame/drivers/irisha.c
index 092d6b29a0f..be633aa7bce 100644
--- a/src/mess/drivers/irisha.c
+++ b/src/mame/drivers/irisha.c
@@ -438,4 +438,4 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
-COMP( 1983, irisha, 0, 0, irisha, irisha, driver_device, 0, "MGU", "Irisha", GAME_NOT_WORKING)
+COMP( 1983, irisha, 0, 0, irisha, irisha, driver_device, 0, "MGU", "Irisha", MACHINE_NOT_WORKING)
diff --git a/src/mame/drivers/ironhors.c b/src/mame/drivers/ironhors.c
index 03081a78b6e..0d5ea8c8c38 100644
--- a/src/mame/drivers/ironhors.c
+++ b/src/mame/drivers/ironhors.c
@@ -527,6 +527,6 @@ ROM_END
*
*************************************/
-GAME( 1986, ironhors, 0, ironhors, ironhors, driver_device, 0, ROT0, "Konami", "Iron Horse", GAME_SUPPORTS_SAVE )
-GAME( 1986, dairesya, ironhors, ironhors, dairesya, driver_device, 0, ROT0, "Konami (Kawakusu license)", "Dai Ressya Goutou (Japan)", GAME_SUPPORTS_SAVE )
-GAME( 1986, farwest, ironhors, farwest, ironhors, driver_device, 0, ROT0, "bootleg?", "Far West", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1986, ironhors, 0, ironhors, ironhors, driver_device, 0, ROT0, "Konami", "Iron Horse", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, dairesya, ironhors, ironhors, dairesya, driver_device, 0, ROT0, "Konami (Kawakusu license)", "Dai Ressya Goutou (Japan)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, farwest, ironhors, farwest, ironhors, driver_device, 0, ROT0, "bootleg?", "Far West", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
diff --git a/src/mess/drivers/isbc.c b/src/mame/drivers/isbc.c
index 756dd556737..d7a9ba149e0 100644
--- a/src/mess/drivers/isbc.c
+++ b/src/mame/drivers/isbc.c
@@ -361,7 +361,7 @@ ROM_END
/* Driver */
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
-COMP( 19??, rpc86, 0, 0, rpc86, isbc, driver_device, 0, "Intel", "RPC 86",GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1978, isbc86, 0, 0, isbc86, isbc, driver_device, 0, "Intel", "iSBC 86/12A",GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 19??, isbc286, 0, 0, isbc286, isbc, driver_device, 0, "Intel", "iSBC 286",GAME_NOT_WORKING | GAME_NO_SOUND)
-COMP( 1983, isbc2861, 0, 0, isbc2861, isbc, driver_device, 0, "Intel", "iSBC 286/10",GAME_NOT_WORKING | GAME_NO_SOUND)
+COMP( 19??, rpc86, 0, 0, rpc86, isbc, driver_device, 0, "Intel", "RPC 86",MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1978, isbc86, 0, 0, isbc86, isbc, driver_device, 0, "Intel", "iSBC 86/12A",MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 19??, isbc286, 0, 0, isbc286, isbc, driver_device, 0, "Intel", "iSBC 286",MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
+COMP( 1983, isbc2861, 0, 0, isbc2861, isbc, driver_device, 0, "Intel", "iSBC 286/10",MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
diff --git a/src/mess/drivers/iskr103x.c b/src/mame/drivers/iskr103x.c
index 95ed4fe7117..31aae050f61 100644
--- a/src/mess/drivers/iskr103x.c
+++ b/src/mame/drivers/iskr103x.c
@@ -142,5 +142,5 @@ ROM_END
***************************************************************************/
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */
-COMP ( 1989, iskr1030m, ibm5150, 0, iskr1030m, iskr1030m, driver_device, 0, "Schetmash", "Iskra 1030M", GAME_NOT_WORKING)
+COMP ( 1989, iskr1030m, ibm5150, 0, iskr1030m, iskr1030m, driver_device, 0, "Schetmash", "Iskra 1030M", MACHINE_NOT_WORKING)
COMP ( 1989, iskr1031, ibm5150, 0, iskr1031, iskr1031, driver_device, 0, "<unknown>", "Iskra 1031", 0)
diff --git a/src/mame/drivers/istellar.c b/src/mame/drivers/istellar.c
index 616ff35185a..3c47a543680 100644
--- a/src/mame/drivers/istellar.c
+++ b/src/mame/drivers/istellar.c
@@ -434,4 +434,4 @@ DRIVER_INIT_MEMBER(istellar_state,istellar)
}
/* YEAR NAME PARENT MACHINE INPUT INIT MONITOR COMPANY FULLNAME FLAGS) */
-GAME( 1983, istellar, 0, istellar, istellar, istellar_state, istellar, ROT0, "Funai/Gakken", "Interstellar Laser Fantasy", GAME_NOT_WORKING|GAME_NO_SOUND)
+GAME( 1983, istellar, 0, istellar, istellar, istellar_state, istellar, ROT0, "Funai/Gakken", "Interstellar Laser Fantasy", MACHINE_NOT_WORKING|MACHINE_NO_SOUND)
diff --git a/src/mame/drivers/iteagle.c b/src/mame/drivers/iteagle.c
index f8eedcebe80..d277082c207 100644
--- a/src/mame/drivers/iteagle.c
+++ b/src/mame/drivers/iteagle.c
@@ -7,18 +7,18 @@
by Ted Green & R. Belmont
Known games on this hardware and their security chip IDs:
+ * ITVP-1 (c) 1998 Virtual Pool
* E2-LED0 (c) 2000 Golden Tee Fore!
* E2-BBH0 (c) 2000 Big Buck Hunter
* G42-US-U (c) 2001 Golden Tee Fore! 2002
* BB15-US (c) 2002 Big Buck Hunter: Shooter's Challenge (AKA Big Buck Hunter v1.5)
* BBH2-US (c) 2002 Big Buck Hunter II: Sportsman's Paradise
- * CK1-US (C) 2002 Carnival King
+ * CK1-US (c) 2002 Carnival King
* G43-US-U (c) 2002 Golden Tee Fore! 2003
* G44-US-U (c) 2003 Golden Tee Fore! 2004
* G45-US-U (c) 2004 Golden Tee Fore! 2005
* CW-US-U (c) 2005 Big Buck Hunter: Call of the Wild
* G4C-US-U (c) 2006 Golden Tee Complete
- * ???????? (c) ???? Virtual Pool (not on IT's website master list but known to exist)
Valid regions: US = USA, CAN = Canada, ENG = England, EUR = Euro, SWD = Sweden, AUS = Australia, NZ = New Zealand, SA = South Africa
@@ -246,7 +246,7 @@ static MACHINE_CONFIG_DERIVED( virtpool, iteagle )
MCFG_VOODOO_PCI_FBMEM(4)
MCFG_VOODOO_PCI_TMUMEM(4, 4)
MCFG_DEVICE_MODIFY(PCI_ID_FPGA)
- MCFG_ITEAGLE_FPGA_INIT(0x01000202, 0x0c0b0d)
+ MCFG_ITEAGLE_FPGA_INIT(0x01000202, 0x080808)
MCFG_DEVICE_MODIFY(PCI_ID_EEPROM)
MCFG_ITEAGLE_EEPROM_INIT(0x0202, 0x7)
MACHINE_CONFIG_END
@@ -555,9 +555,9 @@ ROM_END
*
*************************************/
-GAME( 2000, iteagle, 0, iteagle, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Eagle BIOS", GAME_IS_BIOS_ROOT )
-GAME( 1998, virtpool, iteagle, virtpool, virtpool, driver_device, 0, ROT0, "Incredible Technologies", "Virtual Pool", GAME_NOT_WORKING )
-GAME( 2002, carnking, iteagle, carnking, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", GAME_NOT_WORKING )
+GAME( 2000, iteagle, 0, iteagle, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Eagle BIOS", MACHINE_IS_BIOS_ROOT )
+GAME( 1998, virtpool, iteagle, virtpool, virtpool, driver_device, 0, ROT0, "Incredible Technologies", "Virtual Pool", 0 )
+GAME( 2002, carnking, iteagle, carnking, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Carnival King (v1.00.11)", MACHINE_NOT_WORKING )
GAME( 2000, gtfore01, iteagle, gtfore01, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! (v1.00.25)", 0 )
GAME( 2001, gtfore02, iteagle, gtfore02, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2002 (v2.01.06)", 0 )
GAME( 2002, gtfore03, iteagle, gtfore03, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2003 (v3.00.10)", 0 )
@@ -569,5 +569,5 @@ GAME( 2004, gtfore05a, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "I
GAME( 2004, gtfore05b, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.01.00)", 0 )
GAME( 2004, gtfore05c, gtfore05, gtfore05, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2005 Extra (v5.00.00)", 0 )
GAME( 2005, gtfore06, iteagle, gtfore06, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Golden Tee Fore! 2006 Complete (v6.00.01)", 0 )
-GAME( 2002, bbhsc, iteagle, bbhsc, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", GAME_NOT_WORKING )
+GAME( 2002, bbhsc, iteagle, bbhsc, iteagle, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter - Shooter's Challenge (v1.50.07)", MACHINE_NOT_WORKING )
GAME( 2006, bbhcotw, iteagle, bbhcotw, bbhcotw, driver_device, 0, ROT0, "Incredible Technologies", "Big Buck Hunter Call of the Wild (v3.02.5)", 0 )
diff --git a/src/mame/drivers/itech32.c b/src/mame/drivers/itech32.c
index 4eae09c985a..fc7e178745f 100644
--- a/src/mame/drivers/itech32.c
+++ b/src/mame/drivers/itech32.c