summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/wpc_an.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/wpc_an.cpp')
-rw-r--r--src/mame/drivers/wpc_an.cpp676
1 files changed, 676 insertions, 0 deletions
diff --git a/src/mame/drivers/wpc_an.cpp b/src/mame/drivers/wpc_an.cpp
new file mode 100644
index 00000000000..49cc252f52a
--- /dev/null
+++ b/src/mame/drivers/wpc_an.cpp
@@ -0,0 +1,676 @@
+// license:BSD-3-Clause
+// copyright-holders:Olivier Galibert, Miodrag Milanovic
+/*
+ Williams WPC (Alpha Numeric)
+*/
+
+
+#include "emu.h"
+#include "cpu/m6809/m6809.h"
+#include "audio/s11c_bg.h"
+#include "audio/wpcsnd.h"
+#include "machine/wpc.h"
+#include "wpc_an.lh"
+
+#define LOG_WPC (1)
+
+class wpc_an_state : public driver_device
+{
+public:
+ wpc_an_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, "maincpu"),
+ m_bg(*this,"bg"),
+ m_wpcsnd(*this,"wpcsnd"),
+ m_cpubank(*this, "cpubank"),
+ m_wpc(*this,"wpc")
+ { }
+
+protected:
+
+ // devices
+ required_device<cpu_device> m_maincpu;
+ optional_device<s11c_bg_device> m_bg; // only used with Dr. Dude
+ optional_device<wpcsnd_device> m_wpcsnd;
+ required_memory_bank m_cpubank;
+ required_device<wpc_device> m_wpc;
+
+ // driver_device overrides
+ virtual void machine_reset();
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
+ static const device_timer_id TIMER_VBLANK = 0;
+ static const device_timer_id TIMER_IRQ = 1;
+public:
+ DECLARE_DRIVER_INIT(wpc_an);
+ DECLARE_READ8_MEMBER(ram_r);
+ DECLARE_WRITE8_MEMBER(ram_w);
+ DECLARE_WRITE_LINE_MEMBER(wpcsnd_reply_w);
+ DECLARE_WRITE_LINE_MEMBER(wpc_irq_w);
+ DECLARE_WRITE_LINE_MEMBER(wpc_firq_w);
+ DECLARE_READ8_MEMBER(wpc_sound_ctrl_r);
+ DECLARE_WRITE8_MEMBER(wpc_sound_ctrl_w);
+ DECLARE_READ8_MEMBER(wpc_sound_data_r);
+ DECLARE_WRITE8_MEMBER(wpc_sound_data_w);
+ DECLARE_WRITE8_MEMBER(wpc_sound_s11_w);
+ DECLARE_WRITE8_MEMBER(wpc_rombank_w);
+private:
+ UINT16 m_vblank_count;
+ UINT32 m_irq_count;
+ UINT8 m_bankmask;
+ UINT8 m_ram[0x3000];
+ emu_timer* m_vblank_timer;
+ emu_timer* m_irq_timer;
+};
+
+
+static ADDRESS_MAP_START( wpc_an_map, AS_PROGRAM, 8, wpc_an_state )
+ AM_RANGE(0x0000, 0x2fff) AM_READWRITE(ram_r,ram_w)
+ AM_RANGE(0x3000, 0x3faf) AM_RAM
+ AM_RANGE(0x3fb0, 0x3fff) AM_DEVREADWRITE("wpc",wpc_device,read,write) // WPC device
+ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("cpubank")
+ AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("fixed",0)
+ADDRESS_MAP_END
+
+static INPUT_PORTS_START( wpc_an )
+ PORT_START("INP0")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("INP1")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) // left flipper
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) // right flipper
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_TILT )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER )
+
+ PORT_START("INP2")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) // always closed
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K)
+
+ PORT_START("INP4")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
+
+ PORT_START("INP8")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
+
+ PORT_START("INP10")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_UP)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN)
+
+ PORT_START("INP20")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W)
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E)
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R)
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O)
+
+ PORT_START("INP40")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LALT)
+ PORT_BIT( 0xfe, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("INP80")
+ PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("COIN")
+ 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_SERVICE ) PORT_NAME("Service / Escape") PORT_CODE(KEYCODE_DEL_PAD)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_VOLUME_DOWN ) PORT_CODE(KEYCODE_MINUS_PAD)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_VOLUME_UP ) PORT_CODE(KEYCODE_PLUS_PAD)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Begin Test / Enter") PORT_CODE(KEYCODE_ENTER_PAD)
+
+ PORT_START("DIPS")
+ PORT_DIPNAME(0x01,0x01,"Switch 1") PORT_DIPLOCATION("SWA:1")
+ PORT_DIPSETTING(0x00,DEF_STR( Off ))
+ PORT_DIPSETTING(0x01,DEF_STR( On ))
+ PORT_DIPNAME(0x02,0x02,"Switch 2") PORT_DIPLOCATION("SWA:2")
+ PORT_DIPSETTING(0x00,DEF_STR( Off ))
+ PORT_DIPSETTING(0x02,DEF_STR( On ))
+ PORT_DIPNAME(0x04,0x00,"W20") PORT_DIPLOCATION("SWA:3")
+ PORT_DIPSETTING(0x00,DEF_STR( Off ))
+ PORT_DIPSETTING(0x04,DEF_STR( On ))
+ PORT_DIPNAME(0x08,0x00,"W19") PORT_DIPLOCATION("SWA:4")
+ PORT_DIPSETTING(0x00,DEF_STR( Off ))
+ PORT_DIPSETTING(0x08,DEF_STR( On ))
+ PORT_DIPNAME(0xf0,0x00,"Country") PORT_DIPLOCATION("SWA:5,6,7,8")
+ PORT_DIPSETTING(0x00,"USA 1")
+ PORT_DIPSETTING(0x10,"France 1")
+ PORT_DIPSETTING(0x20,"Germany")
+ PORT_DIPSETTING(0x30,"France 2")
+ PORT_DIPSETTING(0x40,"Unknown 1")
+ PORT_DIPSETTING(0x50,"Unknown 2")
+ PORT_DIPSETTING(0x60,"Unknown 3")
+ PORT_DIPSETTING(0x70,"Unknown 4")
+ PORT_DIPSETTING(0x80,"Export 1")
+ PORT_DIPSETTING(0x90,"France 3")
+ PORT_DIPSETTING(0xa0,"Export 2")
+ PORT_DIPSETTING(0xb0,"France 4")
+ PORT_DIPSETTING(0xc0,"UK")
+ PORT_DIPSETTING(0xd0,"Europe")
+ PORT_DIPSETTING(0xe0,"Spain")
+ PORT_DIPSETTING(0xf0,"USA 2")
+
+INPUT_PORTS_END
+
+
+void wpc_an_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
+{
+ int x;
+ switch(id)
+ {
+ case TIMER_VBLANK:
+ // update LED segments
+ for(x=0;x<16;x++)
+ {
+ output_set_digit_value(x,BITSWAP16(m_wpc->get_alphanumeric(x), 15, 7, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ output_set_digit_value(x+16,BITSWAP16(m_wpc->get_alphanumeric(20+x), 15, 7, 12, 10, 8, 14, 13, 9, 11, 6, 5, 4, 3, 2, 1, 0));
+ }
+ m_wpc->reset_alphanumeric();
+ m_vblank_count++;
+ break;
+ case TIMER_IRQ:
+ m_maincpu->set_input_line(M6809_IRQ_LINE,ASSERT_LINE);
+ break;
+ }
+}
+
+WRITE8_MEMBER(wpc_an_state::wpc_rombank_w)
+{
+ m_cpubank->set_entry(data & m_bankmask);
+}
+
+WRITE_LINE_MEMBER(wpc_an_state::wpcsnd_reply_w)
+{
+ if(state)
+ m_maincpu->set_input_line(M6809_FIRQ_LINE,ASSERT_LINE);
+}
+
+WRITE_LINE_MEMBER(wpc_an_state::wpc_irq_w)
+{
+ m_maincpu->set_input_line(M6809_IRQ_LINE,CLEAR_LINE);
+}
+
+WRITE_LINE_MEMBER(wpc_an_state::wpc_firq_w)
+{
+ m_maincpu->set_input_line(M6809_FIRQ_LINE,CLEAR_LINE);
+}
+
+READ8_MEMBER(wpc_an_state::wpc_sound_ctrl_r)
+{
+ if(m_wpcsnd)
+ return m_wpcsnd->ctrl_r(); // ack FIRQ?
+ return 0;
+}
+
+WRITE8_MEMBER(wpc_an_state::wpc_sound_ctrl_w)
+{
+ if(m_bg)
+ {
+ m_bg->data_w(data);
+ m_bg->ctrl_w(1);
+ }
+ else
+ m_wpcsnd->ctrl_w(data);
+}
+
+READ8_MEMBER(wpc_an_state::wpc_sound_data_r)
+{
+ if(m_wpcsnd)
+ return m_wpcsnd->data_r();
+ return 0;
+}
+
+WRITE8_MEMBER(wpc_an_state::wpc_sound_data_w)
+{
+ if(m_bg)
+ {
+ m_bg->data_w(data);
+ m_bg->ctrl_w(0);
+ }
+ else
+ m_wpcsnd->data_w(data);
+}
+
+WRITE8_MEMBER(wpc_an_state::wpc_sound_s11_w)
+{
+ if(m_bg)
+ {
+ m_bg->data_w(data);
+ m_bg->ctrl_w(0);
+ m_bg->ctrl_w(1);
+ }
+}
+
+READ8_MEMBER(wpc_an_state::ram_r)
+{
+ return m_ram[offset];
+}
+
+WRITE8_MEMBER(wpc_an_state::ram_w)
+{
+ if((!m_wpc->memprotect_active()) || ((offset & m_wpc->get_memprotect_mask()) != m_wpc->get_memprotect_mask()))
+ m_ram[offset] = data;
+ else
+ if(LOG_WPC) logerror("WPC: Memory protection violation at 0x%04x (mask=0x%04x)\n",offset,m_wpc->get_memprotect_mask());
+}
+
+void wpc_an_state::machine_reset()
+{
+ m_cpubank->set_entry(0);
+ m_vblank_count = 0;
+ m_irq_count = 0;
+}
+
+DRIVER_INIT_MEMBER(wpc_an_state,wpc_an)
+{
+ UINT8 *ROM = memregion("maincpu")->base();
+ UINT8 *fixed = memregion("fixed")->base();
+ UINT32 codeoff = memregion("maincpu")->bytes() - 0x8000;
+ m_cpubank->configure_entries(0, 32, &ROM[0x10000], 0x4000);
+ m_cpubank->set_entry(0);
+ m_vblank_timer = timer_alloc(TIMER_VBLANK);
+ m_vblank_timer->adjust(attotime::from_hz(60),0,attotime::from_hz(60));
+ m_irq_timer = timer_alloc(TIMER_IRQ);
+ m_irq_timer->adjust(attotime::from_hz(976),0,attotime::from_hz(976));
+ m_bankmask = ((memregion("maincpu")->bytes()-0x10000) >> 14) - 1;
+ logerror("WPC: ROM bank mask = %02x\n",m_bankmask);
+ memset(m_ram,0,0x3000);
+ memcpy(fixed,&ROM[codeoff],0x8000); // copy static code from end of U6 ROM.
+}
+
+static MACHINE_CONFIG_FRAGMENT( wpc_an_base )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M6809, 2000000)
+ MCFG_CPU_PROGRAM_MAP(wpc_an_map)
+
+ MCFG_WMS_WPC_ADD("wpc")
+ MCFG_WPC_IRQ_ACKNOWLEDGE(WRITELINE(wpc_an_state,wpc_irq_w))
+ MCFG_WPC_FIRQ_ACKNOWLEDGE(WRITELINE(wpc_an_state,wpc_firq_w))
+ MCFG_WPC_ROMBANK(WRITE8(wpc_an_state,wpc_rombank_w))
+ MCFG_WPC_SOUND_CTRL(READ8(wpc_an_state,wpc_sound_ctrl_r),WRITE8(wpc_an_state,wpc_sound_ctrl_w))
+ MCFG_WPC_SOUND_DATA(READ8(wpc_an_state,wpc_sound_data_r),WRITE8(wpc_an_state,wpc_sound_data_w))
+ MCFG_WPC_SOUND_S11C(WRITE8(wpc_an_state,wpc_sound_s11_w))
+
+ MCFG_DEFAULT_LAYOUT(layout_wpc_an)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( wpc_an, wpc_an_state )
+ MCFG_FRAGMENT_ADD(wpc_an_base)
+ MCFG_WMS_WPC_SOUND_ADD("wpcsnd",":sound1")
+ MCFG_WPC_SOUND_REPLY_CALLBACK(WRITELINE(wpc_an_state,wpcsnd_reply_w))
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( wpc_an_dd, wpc_an_state )
+ MCFG_FRAGMENT_ADD(wpc_an_base)
+ MCFG_WMS_S11C_BG_ADD("bg",":sound1")
+MACHINE_CONFIG_END
+
+/*-----------------
+/ Dr. Dude #2016
+/------------------*/
+ROM_START(dd_p7)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("dude_u6.p7", 0x10000, 0x20000, CRC(b6c35b98) SHA1(5e9d70ce40669e2f402561dc1d8aa70a8b8a2958))
+ ROM_REGION(0x40000, "sound1", 0)
+ ROM_LOAD("dude_u4.l1", 0x10000, 0x10000, CRC(3eeef714) SHA1(74dcc83958cb62819e0ac36ca83001694faafec7))
+ ROM_LOAD("dude_u19.l1", 0x20000, 0x10000, CRC(dc7b985b) SHA1(f672d1f1fe1d1d887113ea6ccd745a78f7760526))
+ ROM_LOAD("dude_u20.l1", 0x30000, 0x10000, CRC(a83d53dd) SHA1(92a81069c42c7760888201fb0787fa7ddfbf1658))
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(dd_p06)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("u6-pa6.wpc", 0x10000, 0x20000, CRC(fb72571b) SHA1(a12b32eac3141c881064e6de2f49d6d213248fde))
+ ROM_REGION(0x40000, "sound1", 0)
+ ROM_LOAD("dude_u4.l1", 0x10000, 0x10000, CRC(3eeef714) SHA1(74dcc83958cb62819e0ac36ca83001694faafec7))
+ ROM_LOAD("dude_u19.l1", 0x20000, 0x10000, CRC(dc7b985b) SHA1(f672d1f1fe1d1d887113ea6ccd745a78f7760526))
+ ROM_LOAD("dude_u20.l1", 0x30000, 0x10000, CRC(a83d53dd) SHA1(92a81069c42c7760888201fb0787fa7ddfbf1658))
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+/*-------------
+/ Funhouse #50003
+/--------------*/
+ROM_START(fh_l9)
+ ROM_REGION(0x50000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("funh_l9.rom", 0x10000, 0x40000, CRC(c8f90ff8) SHA1(8d200ea30a68f5e3ba1ac9232a516c44b765eb45))
+ ROM_REGION(0x180000, "sound1", 0)
+ ROM_LOAD("fh_u14.sl2", 0x000000, 0x20000, CRC(3394b69b) SHA1(34690688f00106b725b27a6975cdbf1e077e3bb3))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u15.sl2", 0x080000, 0x20000, CRC(0744b9f5) SHA1(b626601d82e6b1cf25f7fdcca31e623fc14a3f92))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u18.sl3", 0x100000, 0x20000, CRC(7f6c7045) SHA1(8c8d601e8e6598507d75b4955ccc51623124e8ab))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(fh_l9b)
+ ROM_REGION(0x50000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("fh_l9ger.rom", 0x10000, 0x40000, CRC(e9b32a8f) SHA1(deb77f0d025001ddcc3045b4e49176c54896da3f))
+ ROM_REGION(0x180000, "sound1", 0)
+ ROM_LOAD("fh_u14.sl2", 0x000000, 0x20000, CRC(3394b69b) SHA1(34690688f00106b725b27a6975cdbf1e077e3bb3))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u15.sl2", 0x080000, 0x20000, CRC(0744b9f5) SHA1(b626601d82e6b1cf25f7fdcca31e623fc14a3f92))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u18.sl3", 0x100000, 0x20000, CRC(7f6c7045) SHA1(8c8d601e8e6598507d75b4955ccc51623124e8ab))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(fh_l3)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("u6-l3.rom", 0x10000, 0x20000, CRC(7a74d702) SHA1(91540cdc62c855b4139b202aa6ad5440b2dee141))
+ ROM_REGION(0x180000, "sound1", 0)
+ ROM_LOAD("fh_u14.sl2", 0x000000, 0x20000, CRC(3394b69b) SHA1(34690688f00106b725b27a6975cdbf1e077e3bb3))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u15.sl2", 0x080000, 0x20000, CRC(0744b9f5) SHA1(b626601d82e6b1cf25f7fdcca31e623fc14a3f92))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u18.sl2", 0x100000, 0x20000, CRC(11c8944a) SHA1(425d8da5a036c41e054d201b99856319fd5ef9e2))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(fh_l4)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("u6-l4.rom", 0x10000, 0x20000, CRC(f438aaca) SHA1(42bf75325a0e85a4334a5a710c2eddf99160ffbf))
+ ROM_REGION(0x180000, "sound1", 0)
+ ROM_LOAD("fh_u14.sl2", 0x000000, 0x20000, CRC(3394b69b) SHA1(34690688f00106b725b27a6975cdbf1e077e3bb3))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u15.sl2", 0x080000, 0x20000, CRC(0744b9f5) SHA1(b626601d82e6b1cf25f7fdcca31e623fc14a3f92))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u18.sl2", 0x100000, 0x20000, CRC(11c8944a) SHA1(425d8da5a036c41e054d201b99856319fd5ef9e2))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(fh_l5)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("u6-l5.rom", 0x10000, 0x20000, CRC(e2b25da4) SHA1(87129e18c60a65035ade2f4766c154d5d333696b))
+ ROM_REGION(0x180000, "sound1", 0)
+ ROM_LOAD("fh_u14.sl2", 0x000000, 0x20000, CRC(3394b69b) SHA1(34690688f00106b725b27a6975cdbf1e077e3bb3))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u15.sl2", 0x080000, 0x20000, CRC(0744b9f5) SHA1(b626601d82e6b1cf25f7fdcca31e623fc14a3f92))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u18.sl2", 0x100000, 0x20000, CRC(11c8944a) SHA1(425d8da5a036c41e054d201b99856319fd5ef9e2))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(fh_905h)
+ ROM_REGION(0x90000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("fh_905h.rom", 0x10000, 0x80000, CRC(445b632a) SHA1(6e277027a1d025e2b93f0d7736b414ba3a68a4f8))
+ ROM_REGION(0x180000, "sound1", 0)
+ ROM_LOAD("fh_u14.sl2", 0x000000, 0x20000, CRC(3394b69b) SHA1(34690688f00106b725b27a6975cdbf1e077e3bb3))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u15.sl2", 0x080000, 0x20000, CRC(0744b9f5) SHA1(b626601d82e6b1cf25f7fdcca31e623fc14a3f92))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("fh_u18.sl3", 0x100000, 0x20000, CRC(7f6c7045) SHA1(8c8d601e8e6598507d75b4955ccc51623124e8ab))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+
+/*-----------------
+/ Harley Davidson #20001
+/------------------*/
+ROM_START(hd_l3)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("harly_l3.rom", 0x10000, 0x20000, CRC(65f2e0b4) SHA1(a44216c13b9f9adf4161ff6f9eeceba28ef37963))
+ ROM_REGION(0x180000, "sound1", 0)
+ ROM_LOAD("hd_u18.rom", 0x100000, 0x20000, CRC(810d98c0) SHA1(8080cbbe0f346020b2b2b8e97015dbb615dbadb3))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_LOAD("hd_u15.rom", 0x080000, 0x20000, CRC(e7870938) SHA1(b4f28146a5e7baa8522db65b41311afaf49604c6))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(hd_l1)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("u6-l1.rom", 0x10000, 0x20000, CRC(a0bdcfbf) SHA1(f906ffa2d4d04e87225bf711a07dd3bee1655a40))
+ ROM_REGION(0x180000, "sound1", 0)
+ ROM_LOAD("u18-sp1.rom", 0x100000, 0x20000, CRC(708aa419) SHA1(cfc2692fb3bcbacceb85021e282bfbc8dcdf8fcc))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_LOAD("hd_u15.rom", 0x080000, 0x20000, CRC(e7870938) SHA1(b4f28146a5e7baa8522db65b41311afaf49604c6))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+/*-----------------
+/ The Machine: Bride of Pinbot #50001
+/------------------*/
+ROM_START(bop_l7)
+ ROM_REGION(0x50000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("tmbopl_7.rom", 0x10000, 0x40000, CRC(773e1488) SHA1(36e8957b3903b99844a76bf15ba393b17db0db59))
+ ROM_REGION(0x180000, "sound1",0)
+ ROM_LOAD("mach_u14.l1", 0x000000, 0x20000, CRC(be2a736a) SHA1(ebf7b26a86d3ffcc35eaa1da8e4f432bd281fe15))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u15.l1", 0x080000, 0x20000, CRC(fb49513b) SHA1(01f5243ff258adce3a28b24859eba3f465444bdf))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u18.l1", 0x100000, 0x20000, CRC(f3f53896) SHA1(4be5a8a27c5ac4718713c05ff2ddf51658a1be27))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(bop_l6)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("tmbopl_6.rom", 0x10000, 0x20000, CRC(96b844d6) SHA1(981194c249a8fc2534e24ef672380d751a5dc5fd))
+ ROM_REGION(0x180000, "sound1",0)
+ ROM_LOAD("mach_u14.l1", 0x000000, 0x20000, CRC(be2a736a) SHA1(ebf7b26a86d3ffcc35eaa1da8e4f432bd281fe15))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u15.l1", 0x080000, 0x20000, CRC(fb49513b) SHA1(01f5243ff258adce3a28b24859eba3f465444bdf))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u18.l1", 0x100000, 0x20000, CRC(f3f53896) SHA1(4be5a8a27c5ac4718713c05ff2ddf51658a1be27))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(bop_l5)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("tmbopl_5.rom", 0x10000, 0x20000, CRC(fd5c426d) SHA1(e006f8e39cf382249db0b969cf966fd8deaa344a))
+ ROM_REGION(0x180000, "sound1",0)
+ ROM_LOAD("mach_u14.l1", 0x000000, 0x20000, CRC(be2a736a) SHA1(ebf7b26a86d3ffcc35eaa1da8e4f432bd281fe15))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u15.l1", 0x080000, 0x20000, CRC(fb49513b) SHA1(01f5243ff258adce3a28b24859eba3f465444bdf))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u18.l1", 0x100000, 0x20000, CRC(f3f53896) SHA1(4be5a8a27c5ac4718713c05ff2ddf51658a1be27))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(bop_l4)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("tmbopl_4.rom", 0x10000, 0x20000, CRC(eea14ecd) SHA1(afd670bdc3680f12360561a1a5e5854718c099f7))
+ ROM_REGION(0x180000, "sound1",0)
+ ROM_LOAD("mach_u14.l1", 0x000000, 0x20000, CRC(be2a736a) SHA1(ebf7b26a86d3ffcc35eaa1da8e4f432bd281fe15))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u15.l1", 0x080000, 0x20000, CRC(fb49513b) SHA1(01f5243ff258adce3a28b24859eba3f465444bdf))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u18.l1", 0x100000, 0x20000, CRC(f3f53896) SHA1(4be5a8a27c5ac4718713c05ff2ddf51658a1be27))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(bop_l3)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("bop_l3.u6", 0x10000, 0x20000, CRC(cd4d219d) SHA1(4e73dca186867ebee07682deab058a45cee53be1))
+ ROM_REGION(0x180000, "sound1",0)
+ ROM_LOAD("mach_u14.l1", 0x000000, 0x20000, CRC(be2a736a) SHA1(ebf7b26a86d3ffcc35eaa1da8e4f432bd281fe15))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u15.l1", 0x080000, 0x20000, CRC(fb49513b) SHA1(01f5243ff258adce3a28b24859eba3f465444bdf))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u18.l1", 0x100000, 0x20000, CRC(f3f53896) SHA1(4be5a8a27c5ac4718713c05ff2ddf51658a1be27))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+ROM_START(bop_l2)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("bop_l2.u6", 0x10000, 0x20000, CRC(17ee1f56) SHA1(bee68ed5680455f23dc33e889acec83cba68b1dc))
+ ROM_REGION(0x180000, "sound1",0)
+ ROM_LOAD("mach_u14.l1", 0x000000, 0x20000, CRC(be2a736a) SHA1(ebf7b26a86d3ffcc35eaa1da8e4f432bd281fe15))
+ ROM_RELOAD( 0x000000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x000000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u15.l1", 0x080000, 0x20000, CRC(fb49513b) SHA1(01f5243ff258adce3a28b24859eba3f465444bdf))
+ ROM_RELOAD( 0x080000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x080000 + 0x60000, 0x20000)
+ ROM_LOAD("mach_u18.l1", 0x100000, 0x20000, CRC(f3f53896) SHA1(4be5a8a27c5ac4718713c05ff2ddf51658a1be27))
+ ROM_RELOAD( 0x100000 + 0x20000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x40000, 0x20000)
+ ROM_RELOAD( 0x100000 + 0x60000, 0x20000)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+/*===========
+/ Test Fixture Alphanumeric
+/============*/
+ROM_START(tfa_13)
+ ROM_REGION(0x30000, "maincpu", ROMREGION_ERASEFF)
+ ROM_LOAD("u6_l3.rom", 0x10000, 0x20000, CRC(bf4a37b5) SHA1(91b8bba6182e818a34252a4b2a0b86a2a44d9c42))
+ ROM_REGION(0x180000, "sound1",0)
+ ROM_FILL(0x0000,0x180000,0x00)
+ ROM_REGION(0x8000, "fixed", 0)
+ ROM_FILL(0x0000,0x8000,0x00)
+ROM_END
+
+GAME(1990, tfa_13, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "WPC Test Fixture: Alphanumeric (1.3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, dd_p7, dd_l2, wpc_an_dd, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Dr. Dude (PA-7 WPC)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, dd_p06, dd_l2, wpc_an_dd, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Dr. Dude (PA-6 WPC)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, fh_l9, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-9 (SL-2m)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, fh_l9b, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-9 (SL-2m) Bootleg Improved German translation", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1996, fh_905h, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse 9.05H", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, fh_l3, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-3", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, fh_l4, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-4", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1990, fh_l5, fh_l9, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "Funhouse L-5", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, hd_l3, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Harley Davidson (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, hd_l1, hd_l3, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Bally", "Harley Davidson (L-1)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1992, bop_l7, 0, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-7)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, bop_l6, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-6)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, bop_l5, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-5)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, bop_l4, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-4)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, bop_l3, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-3)", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1991, bop_l2, bop_l7, wpc_an, wpc_an, wpc_an_state, wpc_an, ROT0, "Williams", "The Machine: Bride of Pinbot (L-2)", MACHINE_IS_SKELETON_MECHANICAL)