summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/gts80.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/gts80.cpp')
-rw-r--r--src/mame/drivers/gts80.cpp772
1 files changed, 772 insertions, 0 deletions
diff --git a/src/mame/drivers/gts80.cpp b/src/mame/drivers/gts80.cpp
new file mode 100644
index 00000000000..2cbcff01279
--- /dev/null
+++ b/src/mame/drivers/gts80.cpp
@@ -0,0 +1,772 @@
+// license:BSD-3-Clause
+// copyright-holders:Robbbert
+/***********************************************************************************************************
+
+ PINBALL
+ Gottlieb System 80
+
+
+Status:
+- Games boot up, score alternates between 0 and high score (currently blank as there is no high score yet)
+- Dips are read and stored to ram
+- Switches are not being read, therefore unable to play, or enter setup/test menu
+- Original sound card added, it continuously produces weird noises
+- 2nd version of sound card not coded yet
+
+
+ToDO:
+- Switches
+- Outputs
+- Mechanical sounds
+- Sound
+
+
+************************************************************************************************************/
+
+
+#include "machine/genpin.h"
+#include "audio/gottlieb.h"
+#include "gts80.lh"
+
+class gts80_state : public genpin_class
+{
+public:
+ gts80_state(const machine_config &mconfig, device_type type, const char *tag)
+ : genpin_class(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_r0_sound(*this, "r0sound")
+ , m_r1_sound(*this, "r1sound")
+ { }
+
+ DECLARE_DRIVER_INIT(gts80);
+ DECLARE_READ8_MEMBER(port1a_r);
+ DECLARE_READ8_MEMBER(port2a_r);
+ DECLARE_WRITE8_MEMBER(port1b_w);
+ DECLARE_WRITE8_MEMBER(port2a_w);
+ DECLARE_WRITE8_MEMBER(port2b_w);
+ DECLARE_WRITE8_MEMBER(port3a_w);
+ DECLARE_WRITE8_MEMBER(port3b_w);
+private:
+ UINT8 m_port2;
+ UINT8 m_segment;
+ UINT8 m_lamprow;
+ UINT8 m_swrow;
+ virtual void machine_reset();
+ required_device<cpu_device> m_maincpu;
+ optional_device<gottlieb_sound_r0_device> m_r0_sound;
+ optional_device<gottlieb_sound_r1_device> m_r1_sound;
+};
+
+static ADDRESS_MAP_START( gts80_map, AS_PROGRAM, 8, gts80_state )
+ ADDRESS_MAP_GLOBAL_MASK(0x3fff)
+ AM_RANGE(0x0000, 0x017f) AM_RAM
+ AM_RANGE(0x0200, 0x027f) AM_DEVREADWRITE("riot1", riot6532_device, read, write)
+ AM_RANGE(0x0280, 0x02ff) AM_DEVREADWRITE("riot2", riot6532_device, read, write)
+ AM_RANGE(0x0300, 0x037f) AM_DEVREADWRITE("riot3", riot6532_device, read, write)
+ AM_RANGE(0x1000, 0x17ff) AM_ROM
+ AM_RANGE(0x1800, 0x18ff) AM_RAM AM_SHARE("nvram") // 5101L-1 256x4
+ AM_RANGE(0x2000, 0x2fff) AM_ROM
+ AM_RANGE(0x3000, 0x3fff) AM_ROM
+ADDRESS_MAP_END
+
+static INPUT_PORTS_START( gts80 )
+ PORT_START("DSW.0")
+ PORT_DIPNAME( 0x80, 0x00, "SW 1")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x80, DEF_STR(On))
+ PORT_DIPNAME( 0x40, 0x00, "SW 2")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x40, DEF_STR(On))
+ PORT_DIPNAME( 0x20, 0x00, "SW 3")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x20, DEF_STR(On))
+ PORT_DIPNAME( 0x10, 0x00, "SW 4")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x10, DEF_STR(On))
+ PORT_DIPNAME( 0x08, 0x00, "SW 5")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x08, DEF_STR(On))
+ PORT_DIPNAME( 0x04, 0x00, "SW 6")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x04, DEF_STR(On))
+ PORT_DIPNAME( 0x02, 0x00, "SW 7")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x02, DEF_STR(On))
+ PORT_DIPNAME( 0x01, 0x00, "SW 8")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x01, DEF_STR(On))
+
+ PORT_START("DSW.1")
+ PORT_DIPNAME( 0x80, 0x00, "SW 9")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x80, DEF_STR(On))
+ PORT_DIPNAME( 0x40, 0x00, "SW 10")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x40, DEF_STR(On))
+ PORT_DIPNAME( 0x20, 0x00, "SW 11")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x20, DEF_STR(On))
+ PORT_DIPNAME( 0x10, 0x00, "SW 12")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x10, DEF_STR(On))
+ PORT_DIPNAME( 0x08, 0x00, "SW 13")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x08, DEF_STR(On))
+ PORT_DIPNAME( 0x04, 0x00, "SW 14")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x04, DEF_STR(On))
+ PORT_DIPNAME( 0x02, 0x02, "SW 15")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x02, DEF_STR(On))
+ PORT_DIPNAME( 0x01, 0x00, "SW 16")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x01, DEF_STR(On))
+
+ PORT_START("DSW.2")
+ PORT_DIPNAME( 0x80, 0x80, "SW 17")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x80, DEF_STR(On))
+ PORT_DIPNAME( 0x40, 0x40, "SW 18")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x40, DEF_STR(On))
+ PORT_DIPNAME( 0x20, 0x00, "SW 19")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x20, DEF_STR(On))
+ PORT_DIPNAME( 0x10, 0x00, "SW 20")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x10, DEF_STR(On))
+ PORT_DIPNAME( 0x08, 0x00, "SW 21")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x08, DEF_STR(On))
+ PORT_DIPNAME( 0x04, 0x00, "SW 22")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x04, DEF_STR(On))
+ PORT_DIPNAME( 0x02, 0x02, "SW 23")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x02, DEF_STR(On))
+ PORT_DIPNAME( 0x01, 0x01, "SW 24")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x01, DEF_STR(On))
+
+ PORT_START("DSW.3")
+ PORT_DIPNAME( 0x80, 0x80, "SW 25")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x80, DEF_STR(On))
+ PORT_DIPNAME( 0x40, 0x40, "SW 26")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x40, DEF_STR(On))
+ PORT_DIPNAME( 0x20, 0x20, "SW 27")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x20, DEF_STR(On))
+ PORT_DIPNAME( 0x10, 0x10, "SW 28")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x10, DEF_STR(On))
+ PORT_DIPNAME( 0x08, 0x08, "SW 29")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x08, DEF_STR(On))
+ PORT_DIPNAME( 0x04, 0x04, "SW 30")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x04, DEF_STR(On))
+ PORT_DIPNAME( 0x02, 0x00, "SW 31")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x02, DEF_STR(On))
+ PORT_DIPNAME( 0x01, 0x00, "SW 32")
+ PORT_DIPSETTING( 0x00, DEF_STR(Off))
+ PORT_DIPSETTING( 0x01, DEF_STR(On))
+
+ PORT_START("X0")
+ PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
+
+ PORT_START("X1")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_1_PAD)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_2_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_3_PAD)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_4_PAD)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_5_PAD)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_6_PAD)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_7_PAD)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_SERVICE1 )
+
+ PORT_START("X2")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
+
+ PORT_START("X4")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_L)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_C)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_V)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_B)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_N)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 )
+
+ PORT_START("X8")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN3 )
+
+ PORT_START("X10")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_UP)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START )
+
+ PORT_START("X20")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_K)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_8_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_9_PAD)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_ASTERISK)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS_PAD)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_PLUS_PAD)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT ) // won't boot if closed
+
+ PORT_START("X40")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH_PAD)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER_PAD)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_0_PAD)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_DEL_PAD)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_HOME)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_END)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_PGUP)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_X)
+
+ PORT_START("X80")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Q)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_W)
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_E)
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_R)
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Y)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_U)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_I)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O)
+INPUT_PORTS_END
+
+READ8_MEMBER( gts80_state::port1a_r )
+{
+ char kbdrow[8];
+ UINT8 data = 0;
+ if ((m_lamprow < 4) && (m_segment==0x80))
+ {
+ sprintf(kbdrow,"DSW.%d",m_lamprow);
+ data = ioport(kbdrow)->read();
+ }
+ else
+ {
+ sprintf(kbdrow,"X%X",m_swrow);
+ data = ioport(kbdrow)->read();
+ }
+
+ return data;
+}
+
+READ8_MEMBER( gts80_state::port2a_r )
+{
+ return m_port2 | 0x80; // slam tilt off
+}
+
+// sw strobes
+WRITE8_MEMBER( gts80_state::port1b_w )
+{
+ m_swrow = data;
+}
+
+// schematic and pinmame say '1' is indicated by m_segment !bits 4,5,6, but it is !bit 7
+WRITE8_MEMBER( gts80_state::port2a_w )
+{
+ m_port2 = data;
+ static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0 }; // 7448
+ UINT16 seg1 = (UINT16)patterns[m_segment & 15];
+ UINT16 seg2 = BITSWAP16(seg1, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0);
+ switch (data & 0x70)
+ {
+ case 0x10: // player 1&2
+ if (!BIT(m_segment, 7)) seg2 |= 0x300; // put '1' in the middle
+ output_set_digit_value(data & 15, seg2);
+ break;
+ case 0x20: // player 3&4
+ if (!BIT(m_segment, 7)) seg2 |= 0x300; // put '1' in the middle
+ output_set_digit_value((data & 15)+20, seg2);
+ break;
+ case 0x40: // credits & balls
+ if (!BIT(m_segment, 7)) m_segment = 1; // turn '1' back to normal
+ output_set_digit_value((data & 15)+40, patterns[m_segment & 15]);
+ break;
+ }
+}
+
+//d0-3 bcd data; d4-6 = centre segment; d7 = dipsw enable
+WRITE8_MEMBER( gts80_state::port2b_w )
+{
+ m_segment = data;//printf("%s:%X ",machine().describe_context(),data);
+}
+
+// solenoids
+WRITE8_MEMBER( gts80_state::port3a_w )
+{
+}
+
+//pb0-3 = sound; pb4-7 = lamprow
+WRITE8_MEMBER( gts80_state::port3b_w )
+{
+ UINT8 sndcmd = data & 15;
+ m_lamprow = data >> 4;
+ if (m_r0_sound)
+ m_r0_sound->write(space, offset, sndcmd);
+ if (m_r1_sound)
+ m_r1_sound->write(space, offset, sndcmd);
+}
+
+void gts80_state::machine_reset()
+{
+}
+
+DRIVER_INIT_MEMBER( gts80_state, gts80 )
+{
+}
+
+/* with Sound Board */
+static MACHINE_CONFIG_START( gts80, gts80_state )
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M6502, XTAL_3_579545MHz/4)
+ MCFG_CPU_PROGRAM_MAP(gts80_map)
+
+ MCFG_NVRAM_ADD_1FILL("nvram") // must be 1
+
+ /* Video */
+ MCFG_DEFAULT_LAYOUT(layout_gts80)
+
+ /* Devices */
+ MCFG_DEVICE_ADD("riot1", RIOT6532, XTAL_3_579545MHz/4)
+ MCFG_RIOT6532_IN_PA_CB(READ8(gts80_state, port1a_r)) // sw_r
+ //MCFG_RIOT6532_OUT_PA_CB(WRITE8(gts80_state, port1a_w))
+ //MCFG_RIOT6532_IN_PB_CB(READ8(gts80_state, port1b_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(gts80_state, port1b_w)) // sw_w
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE("maincpu", M6502_IRQ_LINE))
+ MCFG_DEVICE_ADD("riot2", RIOT6532, XTAL_3_579545MHz/4)
+ MCFG_RIOT6532_IN_PA_CB(READ8(gts80_state, port2a_r)) // pa7 - slam tilt
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(gts80_state, port2a_w)) // digit select
+ //MCFG_RIOT6532_IN_PB_CB(READ8(gts80_state, port2b_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(gts80_state, port2b_w)) // seg
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE("maincpu", M6502_IRQ_LINE))
+ MCFG_DEVICE_ADD("riot3", RIOT6532, XTAL_3_579545MHz/4)
+ //MCFG_RIOT6532_IN_PA_CB(READ8(gts80_state, port3a_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(gts80_state, port3a_w)) // sol, snd
+ //MCFG_RIOT6532_IN_PB_CB(READ8(gts80_state, port3b_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(gts80_state, port3b_w)) // lamps
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE("maincpu", M6502_IRQ_LINE))
+
+ /* Sound */
+ MCFG_FRAGMENT_ADD( genpin_audio )
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( gts80_s, gts80 )
+ MCFG_GOTTLIEB_SOUND_R0_ADD("r0sound")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( gts80_hh, gts80 )
+ MCFG_GOTTLIEB_SOUND_R1_ADD("r1sound")
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( gts80_ss, gts80 )
+ MCFG_GOTTLIEB_SOUND_R1_ADD("r1sound")
+ //MCFG_GOTTLIEB_SOUND_R1_ADD_VOTRAX("r1sound") // votrax crashes
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+/*-------------------------------------------------------------------
+/ Black Hole #668
+/-------------------------------------------------------------------*/
+ROM_START(blckhole)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("668-4.cpu", 0x1000, 0x0800, CRC(01b53045) SHA1(72d73bbb09358b331696cd1cc44fc4958feffbe2))
+
+ ROM_REGION(0x10000, "r1sound:audiocpu", 0)
+ ROM_LOAD("668-s1.snd", 0x7000, 0x0800, CRC(23d5045d) SHA1(a20bf02ece97e8238d1dbe8d35ca63d82b62431e))
+ ROM_LOAD("668-s2.snd", 0x7800, 0x0800, CRC(d63da498) SHA1(84dd87783f47fbf64b1830284c168501f9b455e2))
+ROM_END
+
+ROM_START(blckhole2)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("668-2.cpu", 0x1000, 0x0800, CRC(df03ffea) SHA1(7ca8fc321f74b9193104c282c7b4b92af93694c9))
+
+ ROM_REGION(0x10000, "r1sound:audiocpu", 0)
+ ROM_LOAD("668-s1.snd", 0x7000, 0x0800, CRC(23d5045d) SHA1(a20bf02ece97e8238d1dbe8d35ca63d82b62431e))
+ ROM_LOAD("668-s2.snd", 0x7800, 0x0800, CRC(d63da498) SHA1(84dd87783f47fbf64b1830284c168501f9b455e2))
+ROM_END
+
+ROM_START(blckhols)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("668-a2.cpu", 0x1000, 0x0800, CRC(df56f896) SHA1(1ec945a7ed8d25064476791adab2b554371dadbe))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("668-a-s.snd", 0x0400, 0x0400, CRC(5175f307) SHA1(97be8f2bbc393cc45a07fa43daec4bbba2336af8))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ Circus #654
+/-------------------------------------------------------------------*/
+ROM_START(circusp)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("654-1.cpu", 0x1000, 0x0200, CRC(0eeb2731) SHA1(087cd6400bf0775bda0264422b3f790a77852bc4))
+ ROM_RELOAD(0x1400, 0x0200)
+ ROM_LOAD("654-2.cpu", 0x1200, 0x0200, CRC(01e23569) SHA1(47088421254e487aa1d1e87ea911dc1634e7d9ad))
+ ROM_RELOAD(0x1600, 0x0200)
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("654.snd", 0x0400, 0x0400, CRC(75c3ad67) SHA1(4f59c451b8659d964d5242728814c2d97f68445b))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ Counterforce #656
+/-------------------------------------------------------------------*/
+ROM_START(cntforce)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("656-1.cpu", 0x1000, 0x0200, CRC(42baf51d) SHA1(6c7947df6e4d7ed2fd48410705018bde91db3356))
+ ROM_RELOAD(0x1400, 0x0200)
+ ROM_LOAD("656-2.cpu", 0x1200, 0x0200, CRC(0e185c30) SHA1(01d9fb5d335c24bed9f747d6e23f57adb6ef09a5))
+ ROM_RELOAD(0x1600, 0x0200)
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("656.snd", 0x0400, 0x0400, CRC(0be2cbe9) SHA1(306a3e7d93733562360285de35b331b5daae7250))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ Critical Mass
+/-------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------
+/ Eclipse #671
+/-------------------------------------------------------------------*/
+ROM_START(eclipse)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("671-a.cpu", 0x1000, 0x0800, CRC(efad7312) SHA1(fcfd5e5c7924d65ac42561994797156a80018667))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("671-a-s.snd", 0x0400, 0x0400, CRC(5175f307) SHA1(97be8f2bbc393cc45a07fa43daec4bbba2336af8))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ Force II #661
+/-------------------------------------------------------------------*/
+ROM_START(forceii)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("661-2.cpu", 0x1000, 0x0800, CRC(a4fa42a4) SHA1(c17af4f0da6d5630e43db44655bece0e26b0112a))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("661.snd", 0x0400, 0x0400, CRC(650158a7) SHA1(c7a9d521d1e7de1e00e7abc3a97aaaee04f8052e))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ Haunted House #669, since serial no. 5000
+/-------------------------------------------------------------------*/
+ROM_START(hh)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("669-2.cpu", 0x1000, 0x0800, CRC(f3085f77) SHA1(ebd43588401a735d9c941d06d67ac90183139e90))
+
+ ROM_REGION(0x10000, "r1sound:audiocpu", 0)
+ ROM_LOAD("669-s1.snd", 0x7000, 0x0800, CRC(52ec7335) SHA1(2b08dd8a89057c9c8c184d5b723ecad01572129f))
+ ROM_LOAD("669-s2.snd", 0x7800, 0x0800, CRC(a3317b4b) SHA1(c3b14aa58fd4588c8b8fa3540ea6331a9ee40f1f))
+ROM_END
+
+ROM_START(hh_1)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("669-1.cpu", 0x1000, 0x0800, CRC(96e72b93) SHA1(3eb3d3e064ba2fe637bba2a93ffd07f00edfa0f2))
+
+ ROM_REGION(0x10000, "r1sound:audiocpu", 0)
+ ROM_LOAD("669-s1.snd", 0x7000, 0x0800, CRC(52ec7335) SHA1(2b08dd8a89057c9c8c184d5b723ecad01572129f))
+ ROM_LOAD("669-s2.snd", 0x7800, 0x0800, CRC(a3317b4b) SHA1(c3b14aa58fd4588c8b8fa3540ea6331a9ee40f1f))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ James Bond #658
+/-------------------------------------------------------------------*/
+ROM_START(jamesb)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("658-1.cpu", 0x1000, 0x0800, CRC(b841ad7a) SHA1(3396e82351c975781cac9112bfa341a3b799f296))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("658.snd", 0x0400, 0x0400, CRC(962c03df) SHA1(e8ff5d502a038531a921380b75c27ef79b6feac8))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+ROM_START(jamesb2)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("658-x.cpu", 0x1000, 0x0800, CRC(e7e0febf) SHA1(2c101a88b61229f30ed15d38f395bc538999d766))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("658.snd", 0x0400, 0x0400, CRC(962c03df) SHA1(e8ff5d502a038531a921380b75c27ef79b6feac8))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ Mars - God of War #666
+/-------------------------------------------------------------------*/
+ROM_START(marsp)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("666-1.cpu", 0x1000, 0x0800, CRC(bb7d476a) SHA1(22d5d7f0e52c5180f73a1ca0b3c6bd4b7d0843d6))
+
+ ROM_REGION(0x10000, "r1sound:audiocpu", 0)
+ ROM_LOAD("666-s1.snd", 0x7000, 0x0800, CRC(d33dc8a5) SHA1(8d071c392996a74c3cdc2cf5ea3be3c86553ce89))
+ ROM_LOAD("666-s2.snd", 0x7800, 0x0800, CRC(e5616f3e) SHA1(a6b5ebd0b456a555db0889cd63ce79aafc64dbe5))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ Panthera #652
+/-------------------------------------------------------------------*/
+ROM_START(panthera)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("652.cpu", 0x1000, 0x0800, CRC(5386e5fb) SHA1(822f47951b702f9c6a1ce674baaab0a596f34413))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("652.snd", 0x0400, 0x0400, CRC(4d0cf2c0) SHA1(0da5d118ffd19b1e78dfaaee3e31c43750d45c8d))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+#ifdef MISSING_GAME // all missing games are using a similar set of ROMs.
+ROM_START(panther7)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2g807dc.bin", 0x2000, 0x1000, CRC(f8a687b3) SHA1(ba7747c04a5967df760ace102e47c91d42e07a12))
+ ROM_LOAD("u3g807dc.bin", 0x3000, 0x1000, CRC(6e31242e) SHA1(14e371a0352a6068dec20af1f2b344e34a5b9011))
+ ROM_LOAD("652.cpu", 0x1000, 0x0800, CRC(5386e5fb) SHA1(822f47951b702f9c6a1ce674baaab0a596f34413))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("652.snd", 0x0400, 0x0400, CRC(4d0cf2c0) SHA1(0da5d118ffd19b1e78dfaaee3e31c43750d45c8d))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+#endif
+
+/*-------------------------------------------------------------------
+/ Pink Panther #664
+/-------------------------------------------------------------------*/
+ROM_START(pnkpnthr)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("664-1.cpu", 0x1000, 0x0800, CRC(a0d3e69a) SHA1(590e68dc28067e61832927cd4b3eefcc066f0a92))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("664.snd", 0x0400, 0x0400, CRC(18f4abfd) SHA1(9e85eb7e9b1e2fe71be828ff1b5752424ed42588))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+#ifdef MISSING_GAME // all missing games are using a similar set of ROMs.
+ROM_START(pnkpntr7)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2g807dc.bin", 0x2000, 0x1000, CRC(f8a687b3) SHA1(ba7747c04a5967df760ace102e47c91d42e07a12))
+ ROM_LOAD("u3g807dc.bin", 0x3000, 0x1000, CRC(6e31242e) SHA1(14e371a0352a6068dec20af1f2b344e34a5b9011))
+ ROM_LOAD("664-1.cpu", 0x1000, 0x0800, CRC(a0d3e69a) SHA1(590e68dc28067e61832927cd4b3eefcc066f0a92))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("664.snd", 0x0400, 0x0400, CRC(18f4abfd) SHA1(9e85eb7e9b1e2fe71be828ff1b5752424ed42588))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+#endif
+
+/*-------------------------------------------------------------------
+/ Star Race #657
+/-------------------------------------------------------------------*/
+ROM_START(starrace)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("657-1.cpu", 0x1000, 0x0200, CRC(27081372) SHA1(2d9cd81ffa44c389c4895043fa1e93b899544158))
+ ROM_RELOAD(0x1400, 0x0200)
+ ROM_LOAD("657-2.cpu", 0x1200, 0x0200, CRC(c56e31c8) SHA1(1e129fb6309e015a16f2bdb1e389cbc85d1919a7))
+ ROM_RELOAD(0x1600, 0x0200)
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("657.snd", 0x0400, 0x0400, CRC(3a1d3995) SHA1(6f0bdb34c4fa11d5f8ecbb98ae55bafeb5d62c9e))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+#ifdef MISSING_GAME // all missing games are using a similar set of ROMs.
+ROM_START(starrac7)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2g807dc.bin", 0x2000, 0x1000, CRC(f8a687b3) SHA1(ba7747c04a5967df760ace102e47c91d42e07a12))
+ ROM_LOAD("u3g807dc.bin", 0x3000, 0x1000, CRC(6e31242e) SHA1(14e371a0352a6068dec20af1f2b344e34a5b9011))
+ ROM_LOAD("657-1.cpu", 0x1000, 0x0200, CRC(27081372) SHA1(2d9cd81ffa44c389c4895043fa1e93b899544158))
+ ROM_RELOAD(0x1400, 0x0200)
+ ROM_LOAD("657-2.cpu", 0x1200, 0x0200, CRC(c56e31c8) SHA1(1e129fb6309e015a16f2bdb1e389cbc85d1919a7))
+ ROM_RELOAD(0x1600, 0x0200)
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("657.snd", 0x0400, 0x0400, CRC(3a1d3995) SHA1(6f0bdb34c4fa11d5f8ecbb98ae55bafeb5d62c9e))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+#endif
+
+/*-------------------------------------------------------------------
+/ The Amazing Spider-Man #653
+/-------------------------------------------------------------------*/
+ROM_START(spidermn)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("653-1.cpu", 0x1000, 0x0200, CRC(674ddc58) SHA1(c9be45391b8dd58a0836801807d593d4c7da9904))
+ ROM_RELOAD(0x1400, 0x0200)
+ ROM_LOAD("653-2.cpu", 0x1200, 0x0200, CRC(ff1ddfd7) SHA1(dd7b98e491045916153b760f36432506277a4093))
+ ROM_RELOAD(0x1600, 0x0200)
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("653.snd", 0x0400, 0x0400, CRC(f5650c46) SHA1(2d0e50fa2f4b3d633daeaa7454630e3444453cb2))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ The Incredible Hulk
+/-------------------------------------------------------------------*/
+
+/*-------------------------------------------------------------------
+/ Time Line #659
+/-------------------------------------------------------------------*/
+ROM_START(timeline)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("659.cpu", 0x1000, 0x0800, CRC(d6950e3b) SHA1(939b45a9ee4bb122fbea534ad728ec6b85120416))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("659.snd", 0x0400, 0x0400, CRC(28185568) SHA1(2fd26e7e0a8f050d67159f17634df2b1fc47cbd3))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ Volcano (Sound and Speech) #667
+/-------------------------------------------------------------------*/
+ROM_START(vlcno_ax)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("667-a-x.cpu", 0x1000, 0x0800, CRC(1f51c351) SHA1(8e1850808faab843ac324040ca665a83809cdc7b))
+
+ ROM_REGION(0x10000, "r1sound:audiocpu", 0)
+ ROM_LOAD("667-s1.snd", 0x7000, 0x0800, CRC(ba9d40b7) SHA1(3d6640b259cd8ae87b998cbf1ae2dc13a2913e4f))
+ ROM_LOAD("667-s2.snd", 0x7800, 0x0800, CRC(b54bd123) SHA1(3522ccdcb28bfacff2287f5537d52f22879249ab))
+ROM_END
+
+ROM_START(vlcno_1b)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("667-1b.cpu", 0x1000, 0x0800, CRC(a422d862) SHA1(2785388eb43c08405774a9413ffa52c1591a84f2))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("667-a-s.snd", 0x0400, 0x0400, CRC(894b4e2e) SHA1(d888f8e00b2b50cef5cc916d46e4c5e6699914a1))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+ROM_START(vlcno_1a)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("667-1a.cpu", 0x1000, 0x0800, CRC(5931c6f7) SHA1(e104a6c3ca2175bb49199e06963e26185dd563d2))
+
+ ROM_REGION(0x1000, "r0sound:audiocpu", 0)
+ ROM_LOAD("667-a-s.snd", 0x0400, 0x0400, CRC(894b4e2e) SHA1(d888f8e00b2b50cef5cc916d46e4c5e6699914a1))
+ ROM_RELOAD( 0x0800, 0x0400)
+ ROM_LOAD("6530sy80.bin", 0x0c00, 0x0400, CRC(c8ba951d) SHA1(e4aa152b36695a0205c19a8914e4d77373f64c6c))
+ROM_END
+
+/*-------------------------------------------------------------------
+/ System 80 Test Fixture
+/-------------------------------------------------------------------*/
+ROM_START(s80tst)
+ ROM_REGION(0x10000, "maincpu", 0)
+ ROM_LOAD("u2_80.bin", 0x2000, 0x1000, CRC(4f0bc7b1) SHA1(612cbacdca5cfa6ad23940796df3b7c385be79fe))
+ ROM_LOAD("u3_80.bin", 0x3000, 0x1000, CRC(1e69f9d0) SHA1(ad738cac2555830257b531e5e533b15362f624b9))
+ ROM_LOAD("80tst.cpu", 0x1000, 0x0800, CRC(a0f9e56b) SHA1(5146745ab61fea4b3070c6cf4324a9e77a7cee36))
+
+ ROM_REGION(0x10000, "r1sound:audiocpu", 0)
+ ROM_LOAD("80tst-s1.snd", 0x7000, 0x0800, CRC(b9dbdd21) SHA1(dfe42c9e6e02f82ffd0cafe164df3211cdc2d966))
+ 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", 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)