summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/play_1.cpp180
-rw-r--r--src/mame/drivers/play_2.cpp328
-rw-r--r--src/mame/drivers/play_3.cpp10
-rw-r--r--src/mame/drivers/play_5.cpp325
4 files changed, 545 insertions, 298 deletions
diff --git a/src/mame/drivers/play_1.cpp b/src/mame/drivers/play_1.cpp
index 1f4b934c249..1095d67e464 100644
--- a/src/mame/drivers/play_1.cpp
+++ b/src/mame/drivers/play_1.cpp
@@ -1,44 +1,173 @@
// license:BSD-3-Clause
-// copyright-holders:Miodrag Milanovic
+// copyright-holders:Miodrag Milanovic, Robbbert
/*********************************************************************************
- Pinball
- Playmatic MPU 1
+PINBALL
+Playmatic MPU 1
+
+Status:
+- Main board is emulated and appears to be working (currently in attract mode)
+- Displays to add
+- Switches, lamps, solenoids to add
+- Sound board to emulate
+- Mechanical sounds to add
**********************************************************************************/
-#include "emu.h"
+#include "machine/genpin.h"
#include "cpu/cosmac/cosmac.h"
+#include "machine/clock.h"
class play_1_state : public driver_device
{
public:
play_1_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu")
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
{ }
-protected:
-
- // devices
- required_device<cosmac_device> m_maincpu;
-
- // driver_device overrides
- virtual void machine_reset() override;
-public:
DECLARE_DRIVER_INIT(play_1);
+ DECLARE_READ8_MEMBER(port00_r);
+ DECLARE_READ8_MEMBER(port01_r);
+ DECLARE_READ8_MEMBER(port06_r);
+ DECLARE_READ8_MEMBER(port07_r);
+ DECLARE_WRITE8_MEMBER(port01_w);
+ DECLARE_WRITE8_MEMBER(port02_w);
+ DECLARE_WRITE8_MEMBER(port03_w);
+ DECLARE_WRITE8_MEMBER(port04_w);
+ DECLARE_WRITE8_MEMBER(port05_w);
+ DECLARE_WRITE8_MEMBER(port06_w);
+ DECLARE_WRITE8_MEMBER(port07_w);
+ DECLARE_READ_LINE_MEMBER(clear_r);
+ DECLARE_READ_LINE_MEMBER(ef2_r);
+ DECLARE_READ_LINE_MEMBER(ef3_r);
+ DECLARE_READ_LINE_MEMBER(ef4_r);
+ DECLARE_WRITE_LINE_MEMBER(clock_w);
+
+private:
+ UINT16 m_resetcnt;
+ virtual void machine_reset() override;
+ required_device<cosmac_device> m_maincpu;
};
static ADDRESS_MAP_START( play_1_map, AS_PROGRAM, 8, play_1_state )
- AM_RANGE(0x0000, 0xffff) AM_NOP
+ ADDRESS_MAP_GLOBAL_MASK(0xfff)
+ AM_RANGE(0x0000, 0x07ff) AM_ROM
+ AM_RANGE(0x0800, 0x081f) AM_RAM
+ AM_RANGE(0x0c00, 0x0c1f) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( chance_map, AS_PROGRAM, 8, play_1_state )
+ ADDRESS_MAP_GLOBAL_MASK(0xfff)
+ AM_RANGE(0x0000, 0x0bff) AM_ROM
+ AM_RANGE(0x0c00, 0x0c1f) AM_RAM
+ AM_RANGE(0x0e00, 0x0e1f) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( play_1_io, AS_IO, 8, play_1_state )
+ AM_RANGE(0x00, 0x00) AM_READ(port00_r)
+ AM_RANGE(0x01, 0x01) AM_READWRITE(port01_r,port01_w) //segments
+ AM_RANGE(0x02, 0x02) AM_WRITE(port02_w) // N1-8
+ AM_RANGE(0x03, 0x03) AM_WRITE(port03_w) // D1-4
+ AM_RANGE(0x04, 0x04) AM_WRITE(port04_w) // U1-8
+ AM_RANGE(0x05, 0x05) AM_WRITE(port05_w) // V1-8
+ AM_RANGE(0x06, 0x06) AM_READWRITE(port06_r,port06_w) // W1-8, input selector
+ AM_RANGE(0x07, 0x07) AM_READ(port07_r) // another input selector
ADDRESS_MAP_END
static INPUT_PORTS_START( play_1 )
+ PORT_START("DSW0")
+ PORT_DIPNAME(0x01, 0x01, DEF_STR( Coinage ) ) // this is something else, don't know what yet
+ PORT_DIPSETTING ( 0x00, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING ( 0x01, DEF_STR( 1C_1C ) )
+ PORT_DIPNAME(0x02, 0x00, "Balls")
+ PORT_DIPSETTING ( 0x00, "3" )
+ PORT_DIPSETTING ( 0x02, "5" )
+ PORT_DIPNAME(0x04, 0x00, "Special award")
+ PORT_DIPSETTING ( 0x00, "Free game" )
+ PORT_DIPSETTING ( 0x04, "Extra ball" )
+ // rotary switches for credits per coin
INPUT_PORTS_END
void play_1_state::machine_reset()
{
+ m_resetcnt = 0;
+}
+
+READ8_MEMBER( play_1_state::port00_r )
+{
+ return 0;
+}
+
+READ8_MEMBER( play_1_state::port01_r )
+{
+ return 0;
+}
+
+READ8_MEMBER( play_1_state::port06_r )
+{
+ return 0xff; // Big Town etc check this at boot
+}
+
+READ8_MEMBER( play_1_state::port07_r )
+{
+ return 0;
+}
+
+WRITE8_MEMBER( play_1_state::port01_w )
+{
+}
+
+WRITE8_MEMBER( play_1_state::port02_w )
+{
+}
+
+WRITE8_MEMBER( play_1_state::port03_w )
+{
+}
+
+WRITE8_MEMBER( play_1_state::port04_w )
+{
+}
+
+WRITE8_MEMBER( play_1_state::port05_w )
+{
+}
+
+WRITE8_MEMBER( play_1_state::port06_w )
+{
+}
+
+READ_LINE_MEMBER( play_1_state::clear_r )
+{
+ // A hack to make the machine reset itself on boot
+ if (m_resetcnt < 0xffff)
+ m_resetcnt++;
+ return (m_resetcnt == 0xff00) ? 0 : 1;
+}
+
+READ_LINE_MEMBER( play_1_state::ef2_r )
+{
+ return BIT(ioport("DSW0")->read(), 0); // 1 or 3 games dip (1=1 game)
+}
+
+READ_LINE_MEMBER( play_1_state::ef3_r )
+{
+ return BIT(ioport("DSW0")->read(), 1); // 3 or 5 balls dip (1=5 balls)
+}
+
+READ_LINE_MEMBER( play_1_state::ef4_r )
+{
+ return BIT(ioport("DSW0")->read(), 2); // extra ball or game dip (1=extra ball)
+}
+
+WRITE_LINE_MEMBER( play_1_state::clock_w )
+{
+ m_maincpu->int_w(1);
+ m_maincpu->int_w(0); // INT is a pulse-line
+ m_maincpu->ef1_w(state);
+ // also, state and !state go to display panel
}
DRIVER_INIT_MEMBER(play_1_state,play_1)
@@ -49,6 +178,23 @@ static MACHINE_CONFIG_START( play_1, play_1_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", CDP1802, 400000)
MCFG_CPU_PROGRAM_MAP(play_1_map)
+ MCFG_CPU_IO_MAP(play_1_io)
+ MCFG_COSMAC_WAIT_CALLBACK(VCC)
+ MCFG_COSMAC_CLEAR_CALLBACK(READLINE(play_1_state, clear_r))
+ MCFG_COSMAC_EF2_CALLBACK(READLINE(play_1_state, ef2_r))
+ MCFG_COSMAC_EF3_CALLBACK(READLINE(play_1_state, ef3_r))
+ MCFG_COSMAC_EF4_CALLBACK(READLINE(play_1_state, ef4_r))
+
+ MCFG_DEVICE_ADD("xpoint", CLOCK, 60) // crossing-point detector
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_1_state, clock_w))
+
+ /* Sound */
+ MCFG_FRAGMENT_ADD( genpin_audio )
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( chance, play_1 )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(chance_map)
MACHINE_CONFIG_END
/*-------------------------------------------------------------------
@@ -100,7 +246,7 @@ ROM_END
/* Big Town, Last Lap and Party all reportedly share the same roms with different playfield/machine artworks */
GAME(1978, bigtown, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Big Town", MACHINE_IS_SKELETON_MECHANICAL)
-GAME(1978, chance, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Chance", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1978, chance, 0, chance, play_1, play_1_state, play_1, ROT0, "Playmatic", "Chance", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1978, lastlap, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Last Lap", MACHINE_IS_SKELETON_MECHANICAL)
-GAME(1978, spcgambl, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Space Gambler", MACHINE_IS_SKELETON_MECHANICAL)
+GAME(1978, spcgambl, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Space Gambler", MACHINE_IS_SKELETON_MECHANICAL)
GAME(1979, party, 0, play_1, play_1, play_1_state, play_1, ROT0, "Playmatic", "Party", MACHINE_IS_SKELETON_MECHANICAL)
diff --git a/src/mame/drivers/play_2.cpp b/src/mame/drivers/play_2.cpp
index d9130b783ac..4a386b6cc6f 100644
--- a/src/mame/drivers/play_2.cpp
+++ b/src/mame/drivers/play_2.cpp
@@ -1,51 +1,194 @@
// license:BSD-3-Clause
-// copyright-holders:Miodrag Milanovic
-/*
- Playmatic MPU 2
-*/
+// copyright-holders:Miodrag Milanovic, Robbbert
+/**********************************************************************************
+PINBALL
+Playmatic MPU 2
-#include "emu.h"
+Status:
+- Main board is emulated and working (currently runs the initial test mode)
+- Displays to add
+- Switches, lamps, solenoids to add
+- Sound board to emulate
+- Mechanical sounds to add
+
+***********************************************************************************/
+
+
+#include "machine/genpin.h"
#include "cpu/cosmac/cosmac.h"
+#include "machine/clock.h"
+#include "machine/7474.h"
class play_2_state : public driver_device
{
public:
play_2_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu")
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_4013a(*this, "4013a")
+ , m_4013b(*this, "4013b")
{ }
-protected:
-
- // devices
- required_device<cosmac_device> m_maincpu;
+ DECLARE_DRIVER_INIT(play_2);
+ DECLARE_WRITE8_MEMBER(port01_w);
+ DECLARE_WRITE8_MEMBER(port02_w);
+ DECLARE_WRITE8_MEMBER(port03_w);
+ DECLARE_READ8_MEMBER(port04_r);
+ DECLARE_READ8_MEMBER(port05_r);
+ DECLARE_WRITE8_MEMBER(port06_w);
+ DECLARE_WRITE8_MEMBER(port07_w);
+ DECLARE_READ_LINE_MEMBER(clear_r);
+ DECLARE_READ_LINE_MEMBER(ef1_r);
+ DECLARE_READ_LINE_MEMBER(ef4_r);
+ DECLARE_WRITE_LINE_MEMBER(q4013a_w);
+ DECLARE_WRITE_LINE_MEMBER(clock_w);
+ DECLARE_WRITE_LINE_MEMBER(clock2_w);
- // driver_device overrides
+private:
+ UINT16 m_clockcnt;
+ UINT16 m_resetcnt;
virtual void machine_reset() override;
-public:
- DECLARE_DRIVER_INIT(play_2);
+ required_device<cosmac_device> m_maincpu;
+ required_device<ttl7474_device> m_4013a;
+ required_device<ttl7474_device> m_4013b;
};
+
static ADDRESS_MAP_START( play_2_map, AS_PROGRAM, 8, play_2_state )
- AM_RANGE(0x0000, 0xffff) AM_NOP
+ AM_RANGE(0x0000, 0x1fff) AM_ROM
+ AM_RANGE(0x2000, 0x20ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( play_2_io, AS_IO, 8, play_2_state )
+ AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits
+ AM_RANGE(0x02, 0x02) AM_WRITE(port02_w)
+ AM_RANGE(0x03, 0x03) AM_WRITE(port03_w)
+ AM_RANGE(0x04, 0x04) AM_READ(port04_r)
+ AM_RANGE(0x05, 0x05) AM_READ(port05_r)
+ AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // segments
+ AM_RANGE(0x07, 0x07) AM_WRITE(port07_w)
ADDRESS_MAP_END
+
static INPUT_PORTS_START( play_2 )
INPUT_PORTS_END
void play_2_state::machine_reset()
{
+ m_clockcnt = 0;
+ m_resetcnt = 0;
+ m_4013b->d_w(1);
+}
+
+WRITE8_MEMBER( play_2_state::port01_w )
+{
+}
+
+WRITE8_MEMBER( play_2_state::port02_w )
+{
+}
+
+WRITE8_MEMBER( play_2_state::port03_w )
+{
+}
+
+READ8_MEMBER( play_2_state::port04_r )
+{
+ return 0xff;
+}
+
+READ8_MEMBER( play_2_state::port05_r )
+{
+ return 0xff;
+}
+
+WRITE8_MEMBER( play_2_state::port06_w )
+{
}
-DRIVER_INIT_MEMBER(play_2_state,play_2)
+WRITE8_MEMBER( play_2_state::port07_w )
{
+ m_4013b->clear_w(0);
+ m_4013b->clear_w(1);
+}
+
+READ_LINE_MEMBER( play_2_state::clear_r )
+{
+ // A hack to make the machine reset itself on boot
+ if (m_resetcnt < 0xffff)
+ m_resetcnt++;
+ return (m_resetcnt == 0xff00) ? 0 : 1;
+}
+
+READ_LINE_MEMBER( play_2_state::ef1_r )
+{
+ return BIT(m_clockcnt, 10);
+}
+
+READ_LINE_MEMBER( play_2_state::ef4_r )
+{
+ return 1; // test button
+}
+
+DRIVER_INIT_MEMBER( play_2_state, play_2 )
+{
+}
+
+WRITE_LINE_MEMBER( play_2_state::clock_w )
+{
+ m_4013a->clock_w(state);
+
+ if (!state)
+ {
+ m_clockcnt++;
+ // simulate 4020 chip
+ if ((m_clockcnt & 0x3ff) == 0)
+ m_4013b->preset_w(BIT(m_clockcnt, 10)); // Q10 output
+ }
+}
+
+WRITE_LINE_MEMBER( play_2_state::clock2_w )
+{
+ m_4013b->clock_w(state);
+ m_maincpu->ef3_w(!state);
+}
+
+WRITE_LINE_MEMBER( play_2_state::q4013a_w )
+{
+ m_clockcnt = 0;
}
static MACHINE_CONFIG_START( play_2, play_2_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", CDP1802, 2950000)
MCFG_CPU_PROGRAM_MAP(play_2_map)
+ MCFG_CPU_IO_MAP(play_2_io)
+ MCFG_COSMAC_WAIT_CALLBACK(VCC)
+ MCFG_COSMAC_CLEAR_CALLBACK(READLINE(play_2_state, clear_r))
+ MCFG_COSMAC_EF1_CALLBACK(READLINE(play_2_state, ef1_r))
+ MCFG_COSMAC_EF4_CALLBACK(READLINE(play_2_state, ef4_r))
+ MCFG_COSMAC_Q_CALLBACK(DEVWRITELINE("4013a", ttl7474_device, clear_w))
+
+ MCFG_NVRAM_ADD_0FILL("nvram")
+
+ MCFG_DEVICE_ADD("tpb_clock", CLOCK, 2950000 / 8) // TPB line from CPU
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_2_state, clock_w))
+
+ MCFG_DEVICE_ADD("xpoint", CLOCK, 60) // crossing-point detector
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_2_state, clock2_w))
+
+ // This is actually a 4013 chip (has 2 RS flipflops)
+ MCFG_DEVICE_ADD("4013a", TTL7474, 0)
+ MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("4013a", ttl7474_device, d_w))
+ MCFG_7474_OUTPUT_CB(WRITELINE(play_2_state, q4013a_w))
+
+ MCFG_DEVICE_ADD("4013b", TTL7474, 0)
+ MCFG_7474_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, ef2_w))
+ MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, int_w)) MCFG_DEVCB_INVERT // int is reversed in mame
+
+ /* Sound */
+ MCFG_FRAGMENT_ADD( genpin_audio )
MACHINE_CONFIG_END
/*-------------------------------------------------------------------
@@ -53,42 +196,18 @@ MACHINE_CONFIG_END
/-------------------------------------------------------------------*/
ROM_START(antar)
ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763))
- ROM_RELOAD(0x4000, 0x0400)
- ROM_RELOAD(0x8000, 0x0400)
- ROM_RELOAD(0xc000, 0x0400)
- ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47))
- ROM_RELOAD(0x4400, 0x0400)
- ROM_RELOAD(0x8400, 0x0400)
- ROM_RELOAD(0xc400, 0x0400)
- ROM_LOAD("antar10.bin", 0x0800, 0x0400, CRC(a6ce5667) SHA1(85ecd4fce94dc419e4c210262f867310b0889cd3))
- ROM_RELOAD(0x4800, 0x0400)
- ROM_RELOAD(0x8800, 0x0400)
- ROM_RELOAD(0xc800, 0x0400)
- ROM_LOAD("antar11.bin", 0x0c00, 0x0400, CRC(6474b17f) SHA1(e4325ceff820393b06eb2e8e4a85412b0d01a385))
- ROM_RELOAD(0x4c00, 0x0400)
- ROM_RELOAD(0x8c00, 0x0400)
- ROM_RELOAD(0xcc00, 0x0400)
+ ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763))
+ ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47))
+ ROM_LOAD("antar10.bin", 0x0800, 0x0400, CRC(a6ce5667) SHA1(85ecd4fce94dc419e4c210262f867310b0889cd3))
+ ROM_LOAD("antar11.bin", 0x0c00, 0x0400, CRC(6474b17f) SHA1(e4325ceff820393b06eb2e8e4a85412b0d01a385))
ROM_END
ROM_START(antar2)
ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763))
- ROM_RELOAD(0x4000, 0x0400)
- ROM_RELOAD(0x8000, 0x0400)
- ROM_RELOAD(0xc000, 0x0400)
- ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47))
- ROM_RELOAD(0x4400, 0x0400)
- ROM_RELOAD(0x8400, 0x0400)
- ROM_RELOAD(0xc400, 0x0400)
+ ROM_LOAD("antar08.bin", 0x0000, 0x0400, CRC(f6207f77) SHA1(f68ce967c6189457bd0ce8638e9c477f16e65763))
+ ROM_LOAD("antar09.bin", 0x0400, 0x0400, CRC(2c954f1a) SHA1(fa83a5f1c269ea28d4eeff181f493cbb4dc9bc47))
ROM_LOAD("antar10a.bin", 0x0800, 0x0400, CRC(520eb401) SHA1(1d5e3f829a7e7f38c7c519c488e6b7e1a4d34321))
- ROM_RELOAD(0x4800, 0x0400)
- ROM_RELOAD(0x8800, 0x0400)
- ROM_RELOAD(0xc800, 0x0400)
ROM_LOAD("antar11a.bin", 0x0c00, 0x0400, CRC(17ad38bf) SHA1(e2c9472ed8fbe9d5965a5c79515a1b7ea9edaa79))
- ROM_RELOAD(0x4c00, 0x0400)
- ROM_RELOAD(0x8c00, 0x0400)
- ROM_RELOAD(0xcc00, 0x0400)
ROM_END
@@ -97,22 +216,10 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(evlfight)
ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("evfg08.bin", 0x0000, 0x0400, CRC(2cc2e79a) SHA1(17440512c419b3bb2012539666a5f052f3cd8c1d))
- ROM_RELOAD(0x4000, 0x0400)
- ROM_RELOAD(0x8000, 0x0400)
- ROM_RELOAD(0xc000, 0x0400)
- ROM_LOAD("evfg09.bin", 0x0400, 0x0400, CRC(5232dc4c) SHA1(6f95a578e9f09688e6ce8b0a622bcee887936c82))
- ROM_RELOAD(0x4400, 0x0400)
- ROM_RELOAD(0x8400, 0x0400)
- ROM_RELOAD(0xc400, 0x0400)
- ROM_LOAD("evfg10.bin", 0x0800, 0x0400, CRC(de2f754d) SHA1(0287a9975095bcbf03ddb2b374ff25c080c8020f))
- ROM_RELOAD(0x4800, 0x0400)
- ROM_RELOAD(0x8800, 0x0400)
- ROM_RELOAD(0xc800, 0x0400)
- ROM_LOAD("evfg11.bin", 0x0c00, 0x0400, CRC(5eb8ac02) SHA1(31c80e74a4272becf7014aa96eaf7de555e26cd6))
- ROM_RELOAD(0x4c00, 0x0400)
- ROM_RELOAD(0x8c00, 0x0400)
- ROM_RELOAD(0xcc00, 0x0400)
+ ROM_LOAD("evfg08.bin", 0x0000, 0x0400, CRC(2cc2e79a) SHA1(17440512c419b3bb2012539666a5f052f3cd8c1d))
+ ROM_LOAD("evfg09.bin", 0x0400, 0x0400, CRC(5232dc4c) SHA1(6f95a578e9f09688e6ce8b0a622bcee887936c82))
+ ROM_LOAD("evfg10.bin", 0x0800, 0x0400, CRC(de2f754d) SHA1(0287a9975095bcbf03ddb2b374ff25c080c8020f))
+ ROM_LOAD("evfg11.bin", 0x0c00, 0x0400, CRC(5eb8ac02) SHA1(31c80e74a4272becf7014aa96eaf7de555e26cd6))
ROM_END
/*-------------------------------------------------------------------
@@ -120,27 +227,13 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(madrace)
ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("madrace.2a0", 0x0000, 0x0800, CRC(ab487c79) SHA1(a5df29b2af4c9d94d8bf54c5c91d1e9b5ca4d065))
- ROM_RELOAD(0x4000, 0x0800)
- ROM_RELOAD(0x8000, 0x0800)
- ROM_RELOAD(0xc000, 0x0800)
- ROM_LOAD("madrace.2b0", 0x0800, 0x0800, CRC(dcb54b39) SHA1(8e2ca7180f5ea3a28feb34b01f3387b523dbfa3b))
- ROM_RELOAD(0x4800, 0x0800)
- ROM_RELOAD(0x8800, 0x0800)
- ROM_RELOAD(0xc800, 0x0800)
- ROM_LOAD("madrace.2c0", 0x1000, 0x0800, CRC(b24ea245) SHA1(3f868ccbc4bfb77c40c4cc05dcd8eeca85ecd76f))
- ROM_RELOAD(0x5000, 0x0800)
- ROM_RELOAD(0x9000, 0x0800)
- ROM_RELOAD(0xd000, 0x0800)
- ROM_REGION(0x10000, "cpu2", 0)
+ ROM_LOAD("madrace.2a0", 0x0000, 0x0800, CRC(ab487c79) SHA1(a5df29b2af4c9d94d8bf54c5c91d1e9b5ca4d065))
+ ROM_LOAD("madrace.2b0", 0x0800, 0x0800, CRC(dcb54b39) SHA1(8e2ca7180f5ea3a28feb34b01f3387b523dbfa3b))
+ ROM_LOAD("madrace.2c0", 0x1000, 0x0800, CRC(b24ea245) SHA1(3f868ccbc4bfb77c40c4cc05dcd8eeca85ecd76f))
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("madrace1.snd", 0x0000, 0x2000, CRC(49e956a5) SHA1(8790cc27a0fda7b8e07bee65109874140b4018a2))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_LOAD("madrace2.snd", 0x2000, 0x0800, CRC(c19283d3) SHA1(42f9770c46030ef20a80cc94fdbe6548772aa525))
- ROM_RELOAD(0x6000, 0x0800)
- ROM_RELOAD(0xa000, 0x0800)
- ROM_RELOAD(0xe000, 0x0800)
ROM_END
@@ -149,22 +242,10 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(attack)
ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("attack8.bin", 0x0000, 0x0400, CRC(a5204b58) SHA1(afb4b81720f8d56e88f47fc842b23313824a1085))
- ROM_RELOAD(0x4000, 0x0400)
- ROM_RELOAD(0x8000, 0x0400)
- ROM_RELOAD(0xc000, 0x0400)
- ROM_LOAD("attack9.bin", 0x0400, 0x0400, CRC(bbd086b4) SHA1(6fc94b94beea482d8c8f5b3c69d3f218e2b2dfc4))
- ROM_RELOAD(0x4400, 0x0400)
- ROM_RELOAD(0x8400, 0x0400)
- ROM_RELOAD(0xc400, 0x0400)
+ ROM_LOAD("attack8.bin", 0x0000, 0x0400, CRC(a5204b58) SHA1(afb4b81720f8d56e88f47fc842b23313824a1085))
+ ROM_LOAD("attack9.bin", 0x0400, 0x0400, CRC(bbd086b4) SHA1(6fc94b94beea482d8c8f5b3c69d3f218e2b2dfc4))
ROM_LOAD("attack10.bin", 0x0800, 0x0400, CRC(764925e4) SHA1(2f207ef87786d27d0d856c5816a570a59d89b718))
- ROM_RELOAD(0x4800, 0x0400)
- ROM_RELOAD(0x8800, 0x0400)
- ROM_RELOAD(0xc800, 0x0400)
ROM_LOAD("attack11.bin", 0x0c00, 0x0400, CRC(972157b4) SHA1(23c90f23a34b34acfe445496a133b6022a749ccc))
- ROM_RELOAD(0x4c00, 0x0400)
- ROM_RELOAD(0x8c00, 0x0400)
- ROM_RELOAD(0xcc00, 0x0400)
ROM_END
/*-------------------------------------------------------------------
@@ -172,22 +253,10 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(blkfever)
ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("blackf8.bin", 0x0000, 0x0400, CRC(916b8ed8) SHA1(ddc7e09b68e3e1a033af5dc5ec32ab5b0922a833))
- ROM_RELOAD(0x4000, 0x0400)
- ROM_RELOAD(0x8000, 0x0400)
- ROM_RELOAD(0xc000, 0x0400)
- ROM_LOAD("blackf9.bin", 0x0400, 0x0400, CRC(ecb72fdc) SHA1(d3598031b7170fab39727b3402b7053d4f9e1ca7))
- ROM_RELOAD(0x4400, 0x0400)
- ROM_RELOAD(0x8400, 0x0400)
- ROM_RELOAD(0xc400, 0x0400)
+ ROM_LOAD("blackf8.bin", 0x0000, 0x0400, CRC(916b8ed8) SHA1(ddc7e09b68e3e1a033af5dc5ec32ab5b0922a833))
+ ROM_LOAD("blackf9.bin", 0x0400, 0x0400, CRC(ecb72fdc) SHA1(d3598031b7170fab39727b3402b7053d4f9e1ca7))
ROM_LOAD("blackf10.bin", 0x0800, 0x0400, CRC(b3fae788) SHA1(e14e09cc7da1098abf2f60f26a8ec507e123ff7c))
- ROM_RELOAD(0x4800, 0x0400)
- ROM_RELOAD(0x8800, 0x0400)
- ROM_RELOAD(0xc800, 0x0400)
ROM_LOAD("blackf11.bin", 0x0c00, 0x0400, CRC(5a97c1b4) SHA1(b9d7eb0dd55ef6d959c0fab48f710e4b1c8d8003))
- ROM_RELOAD(0x4c00, 0x0400)
- ROM_RELOAD(0x8c00, 0x0400)
- ROM_RELOAD(0xcc00, 0x0400)
ROM_END
/*-------------------------------------------------------------------
@@ -195,16 +264,11 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(zira)
ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("zira_u8.bin", 0x0000, 0x0800, CRC(53f8bf17) SHA1(5eb74f27bc65374a85dd44bbc8f6142488c226a2))
- ROM_RELOAD(0x4000, 0x0800)
- ROM_RELOAD(0x8000, 0x0800)
- ROM_RELOAD(0xc000, 0x0800)
- ROM_LOAD("zira_u9.bin", 0x0800, 0x0800, CRC(d50a2419) SHA1(81b157f579a433389506817b1b6e02afaa2cf0d5))
- ROM_RELOAD(0x4800, 0x0800)
- ROM_RELOAD(0x8800, 0x0800)
- ROM_RELOAD(0xc800, 0x0800)
- ROM_REGION(0x10000, "cpu2", 0)
- ROM_LOAD("zira.snd", 0x0000, 0x0400, NO_DUMP)
+ ROM_LOAD("zira_u8.bin", 0x0000, 0x0800, CRC(53f8bf17) SHA1(5eb74f27bc65374a85dd44bbc8f6142488c226a2))
+ ROM_LOAD("zira_u9.bin", 0x0800, 0x0800, CRC(d50a2419) SHA1(81b157f579a433389506817b1b6e02afaa2cf0d5))
+
+ ROM_REGION(0x10000, "audiocpu", 0)
+ ROM_LOAD("zira.snd", 0x0000, 0x0400, NO_DUMP)
ROM_END
/*-------------------------------------------------------------------
@@ -212,26 +276,12 @@ ROM_END
/-------------------------------------------------------------------*/
ROM_START(cerberup)
ROM_REGION(0x10000, "maincpu", 0)
- ROM_LOAD("cerb8.cpu", 0x0000, 0x0800, CRC(021d0452) SHA1(496010e6892311b1cabcdac62296cd6aa0782c5d))
- ROM_RELOAD(0x4000, 0x0800)
- ROM_RELOAD(0x8000, 0x0800)
- ROM_RELOAD(0xc000, 0x0800)
- ROM_LOAD("cerb9.cpu", 0x0800, 0x0800, CRC(0fd41156) SHA1(95d1bf42c82f480825e3d907ae3c87b5f994fd2a))
- ROM_RELOAD(0x4800, 0x0800)
- ROM_RELOAD(0x8800, 0x0800)
- ROM_RELOAD(0xc800, 0x0800)
- ROM_LOAD("cerb10.cpu", 0x1000, 0x0800, CRC(785602e0) SHA1(f38df3156cd14ab21752dbc849c654802079eb33))
- ROM_RELOAD(0x5000, 0x0800)
- ROM_RELOAD(0x9000, 0x0800)
- ROM_RELOAD(0xd000, 0x0800)
- ROM_REGION(0x10000, "cpu2", 0)
- ROM_LOAD("cerb.snd", 0x0000, 0x2000, CRC(8af53a23) SHA1(a80b57576a1eb1b4544b718b9abba100531e3942))
- ROM_RELOAD(0x2000, 0x2000)
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x6000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xa000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
+ ROM_LOAD("cerb8.cpu", 0x0000, 0x0800, CRC(021d0452) SHA1(496010e6892311b1cabcdac62296cd6aa0782c5d))
+ ROM_LOAD("cerb9.cpu", 0x0800, 0x0800, CRC(0fd41156) SHA1(95d1bf42c82f480825e3d907ae3c87b5f994fd2a))
+ ROM_LOAD("cerb10.cpu", 0x1000, 0x0800, CRC(785602e0) SHA1(f38df3156cd14ab21752dbc849c654802079eb33))
+
+ ROM_REGION(0x10000, "audiocpu", 0)
+ ROM_LOAD("cerb.snd", 0x0000, 0x2000, CRC(8af53a23) SHA1(a80b57576a1eb1b4544b718b9abba100531e3942))
ROM_END
// ??/84 Nautilus
diff --git a/src/mame/drivers/play_3.cpp b/src/mame/drivers/play_3.cpp
index a2cbdb9f5d7..83c4b7c82ac 100644
--- a/src/mame/drivers/play_3.cpp
+++ b/src/mame/drivers/play_3.cpp
@@ -15,9 +15,8 @@ Status:
***********************************************************************************/
-#include "emu.h"
+#include "machine/genpin.h"
#include "cpu/cosmac/cosmac.h"
-#include "machine/nvram.h"
#include "machine/clock.h"
#include "machine/7474.h"
@@ -188,6 +187,9 @@ static MACHINE_CONFIG_START( play_3, play_3_state )
MCFG_DEVICE_ADD("4013b", TTL7474, 0)
MCFG_7474_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, ef2_w))
MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, int_w)) MCFG_DEVCB_INVERT // int is reversed in mame
+
+ /* Sound */
+ MCFG_FRAGMENT_ADD( genpin_audio )
MACHINE_CONFIG_END
/*-------------------------------------------------------------------
@@ -198,7 +200,7 @@ ROM_START(megaaton)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("cpumegat.bin", 0x0000, 0x2000, CRC(7e7a4ede) SHA1(3194b367cbbf6e0cb2629cd5d82ddee6fe36985a))
- ROM_REGION(0x10000, "cpu2", 0)
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("smogot.bin", 0x0000, 0x2000, CRC(fefc3ab2) SHA1(e748d9b443a69fcdd587f22c87d41818b6c0e436))
ROM_LOAD("smegat.bin", 0x2000, 0x1000, CRC(910ab7fe) SHA1(0ddfd15c9c25f43b8fcfc4e11bc8ea180f6bd761))
ROM_END
@@ -208,7 +210,7 @@ ROM_START(megaatona)
ROM_LOAD("mega_u12.bin", 0x0000, 0x1000, CRC(65761b02) SHA1(dd9586eaf70698ef7a80ce1be293322f64829aea))
ROM_LOAD("mega_u11.bin", 0x1000, 0x1000, CRC(513f3683) SHA1(0f080a33426df1ffdb14e9b2e6382304e201e335))
- ROM_REGION(0x10000, "cpu2", 0)
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("smogot.bin", 0x0000, 0x2000, CRC(fefc3ab2) SHA1(e748d9b443a69fcdd587f22c87d41818b6c0e436))
ROM_LOAD("smegat.bin", 0x2000, 0x1000, CRC(910ab7fe) SHA1(0ddfd15c9c25f43b8fcfc4e11bc8ea180f6bd761))
ROM_END
diff --git a/src/mame/drivers/play_5.cpp b/src/mame/drivers/play_5.cpp
index 09edd089fe3..cef4e7dd4c7 100644
--- a/src/mame/drivers/play_5.cpp
+++ b/src/mame/drivers/play_5.cpp
@@ -1,52 +1,198 @@
// license:BSD-3-Clause
-// copyright-holders:Miodrag Milanovic
-/*
- Playmatic MPU 5
-*/
+// copyright-holders:Miodrag Milanovic, Robbbert
+/**********************************************************************************
+PINBALL
+Playmatic MPU 5
-#include "emu.h"
+Status:
+- Main board is emulated and working (currently runs the initial test mode)
+- Displays to add
+- Switches, lamps, solenoids to add
+- Sound board to emulate
+- Mechanical sounds to add
+
+(note to self: MPU3 and MPU5 appear at first glance to be identical apart from
+cpu clock. MPU2 also appears to be identical to MPU3 apart from the RAM address.
+If the sound cards are sufficiently similar, we should be able to merge all 3.)
+
+***********************************************************************************/
+
+
+#include "machine/genpin.h"
#include "cpu/cosmac/cosmac.h"
+#include "machine/clock.h"
+#include "machine/7474.h"
class play_5_state : public driver_device
{
public:
play_5_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu")
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_4013a(*this, "4013a")
+ , m_4013b(*this, "4013b")
{ }
-protected:
-
- // devices
- required_device<cosmac_device> m_maincpu;
+ DECLARE_DRIVER_INIT(play_5);
+ DECLARE_WRITE8_MEMBER(port01_w);
+ DECLARE_WRITE8_MEMBER(port02_w);
+ DECLARE_WRITE8_MEMBER(port03_w);
+ DECLARE_READ8_MEMBER(port04_r);
+ DECLARE_READ8_MEMBER(port05_r);
+ DECLARE_WRITE8_MEMBER(port06_w);
+ DECLARE_WRITE8_MEMBER(port07_w);
+ DECLARE_READ_LINE_MEMBER(clear_r);
+ DECLARE_READ_LINE_MEMBER(ef1_r);
+ DECLARE_READ_LINE_MEMBER(ef4_r);
+ DECLARE_WRITE_LINE_MEMBER(q4013a_w);
+ DECLARE_WRITE_LINE_MEMBER(clock_w);
+ DECLARE_WRITE_LINE_MEMBER(clock2_w);
- // driver_device overrides
+private:
+ UINT16 m_clockcnt;
+ UINT16 m_resetcnt;
virtual void machine_reset() override;
-public:
- DECLARE_DRIVER_INIT(play_5);
+ required_device<cosmac_device> m_maincpu;
+ required_device<ttl7474_device> m_4013a;
+ required_device<ttl7474_device> m_4013b;
};
static ADDRESS_MAP_START( play_5_map, AS_PROGRAM, 8, play_5_state )
- AM_RANGE(0x0000, 0xffff) AM_NOP
+ AM_RANGE(0x0000, 0x3fff) AM_ROM
+ AM_RANGE(0x8000, 0x80ff) AM_RAM AM_SHARE("nvram") // pair of 5101, battery-backed
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( play_5_io, AS_IO, 8, play_5_state )
+ AM_RANGE(0x01, 0x01) AM_WRITE(port01_w) // digits
+ AM_RANGE(0x02, 0x02) AM_WRITE(port02_w)
+ AM_RANGE(0x03, 0x03) AM_WRITE(port03_w)
+ AM_RANGE(0x04, 0x04) AM_READ(port04_r)
+ AM_RANGE(0x05, 0x05) AM_READ(port05_r)
+ AM_RANGE(0x06, 0x06) AM_WRITE(port06_w) // segments
+ AM_RANGE(0x07, 0x07) AM_WRITE(port07_w)
ADDRESS_MAP_END
+
static INPUT_PORTS_START( play_5 )
INPUT_PORTS_END
void play_5_state::machine_reset()
{
+ m_clockcnt = 0;
+ m_resetcnt = 0;
+ m_4013b->d_w(1);
+}
+
+WRITE8_MEMBER( play_5_state::port01_w )
+{
+}
+
+WRITE8_MEMBER( play_5_state::port02_w )
+{
+}
+
+WRITE8_MEMBER( play_5_state::port03_w )
+{
+}
+
+READ8_MEMBER( play_5_state::port04_r )
+{
+ return 0xff;
+}
+
+READ8_MEMBER( play_5_state::port05_r )
+{
+ return 0xff;
+}
+
+WRITE8_MEMBER( play_5_state::port06_w )
+{
+}
+
+WRITE8_MEMBER( play_5_state::port07_w )
+{
+ m_4013b->clear_w(0);
+ m_4013b->clear_w(1);
+}
+
+READ_LINE_MEMBER( play_5_state::clear_r )
+{
+ // A hack to make the machine reset itself on boot
+ if (m_resetcnt < 0xffff)
+ m_resetcnt++;
+ return (m_resetcnt == 0xff00) ? 0 : 1;
+}
+
+READ_LINE_MEMBER( play_5_state::ef1_r )
+{
+ return BIT(m_clockcnt, 10);
+}
+
+READ_LINE_MEMBER( play_5_state::ef4_r )
+{
+ return 1; // reset button
+}
+
+DRIVER_INIT_MEMBER( play_5_state, play_5 )
+{
+}
+
+WRITE_LINE_MEMBER( play_5_state::clock_w )
+{
+ m_4013a->clock_w(state);
+
+ if (!state)
+ {
+ m_clockcnt++;
+ // simulate 4020 chip
+ if ((m_clockcnt & 0x3ff) == 0)
+ m_4013b->preset_w(BIT(m_clockcnt, 10)); // Q10 output
+ }
+}
+
+WRITE_LINE_MEMBER( play_5_state::clock2_w )
+{
+ m_4013b->clock_w(state);
+ m_maincpu->ef3_w(!state);
}
-DRIVER_INIT_MEMBER(play_5_state,play_5)
+WRITE_LINE_MEMBER( play_5_state::q4013a_w )
{
+ m_clockcnt = 0;
}
static MACHINE_CONFIG_START( play_5, play_5_state )
/* basic machine hardware */
- MCFG_CPU_ADD("maincpu", CDP1802, 2950000)
+ MCFG_CPU_ADD("maincpu", CDP1802, XTAL_3_579545MHz)
MCFG_CPU_PROGRAM_MAP(play_5_map)
+ MCFG_CPU_IO_MAP(play_5_io)
+ MCFG_COSMAC_WAIT_CALLBACK(VCC)
+ MCFG_COSMAC_CLEAR_CALLBACK(READLINE(play_5_state, clear_r))
+ MCFG_COSMAC_EF1_CALLBACK(READLINE(play_5_state, ef1_r))
+ MCFG_COSMAC_EF4_CALLBACK(READLINE(play_5_state, ef4_r))
+ MCFG_COSMAC_Q_CALLBACK(DEVWRITELINE("4013a", ttl7474_device, clear_w))
+
+ MCFG_NVRAM_ADD_0FILL("nvram")
+
+ MCFG_DEVICE_ADD("tpb_clock", CLOCK, XTAL_3_579545MHz / 8) // TPB line from CPU
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_5_state, clock_w))
+
+ MCFG_DEVICE_ADD("xpoint", CLOCK, 60) // crossing-point detector
+ MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(play_5_state, clock2_w))
+
+ // This is actually a 4013 chip (has 2 RS flipflops)
+ MCFG_DEVICE_ADD("4013a", TTL7474, 0)
+ MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("4013a", ttl7474_device, d_w))
+ MCFG_7474_OUTPUT_CB(WRITELINE(play_5_state, q4013a_w))
+
+ MCFG_DEVICE_ADD("4013b", TTL7474, 0)
+ MCFG_7474_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, ef2_w))
+ MCFG_7474_COMP_OUTPUT_CB(DEVWRITELINE("maincpu", cosmac_device, int_w)) MCFG_DEVCB_INVERT // int is reversed in mame
+
+ /* Sound */
+ MCFG_FRAGMENT_ADD( genpin_audio )
MACHINE_CONFIG_END
/*-------------------------------------------------------------------
@@ -55,18 +201,10 @@ MACHINE_CONFIG_END
ROM_START(kz26)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("kz26.cpu", 0x0000, 0x2000, CRC(8030a699) SHA1(4f86b325801d8ce16011f7b6ba2f3633e2f2af35))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
- ROM_REGION(0x10000, "cpu2", 0)
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("sound1.su3", 0x0000, 0x2000, CRC(8ad1a804) SHA1(6177619f09af4302ffddd8c0c1b374dab7f47e91))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_LOAD("sound2.su4", 0x2000, 0x0800, CRC(355dc9ad) SHA1(eac8bc27157afd908f9bc5b5a7c40be5b9427269))
- ROM_RELOAD(0x6000, 0x0800)
- ROM_RELOAD(0xa000, 0x0800)
- ROM_RELOAD(0xe000, 0x0800)
ROM_END
/*-------------------------------------------------------------------
@@ -75,21 +213,10 @@ ROM_END
ROM_START(spain82)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("spaic12.bin", 0x0000, 0x1000, CRC(cd37ecdc) SHA1(ff2d406b6ac150daef868121e5857a956aabf005))
- ROM_RELOAD(0x4000, 0x1000)
- ROM_RELOAD(0x8000, 0x1000)
- ROM_RELOAD(0xc000, 0x1000)
ROM_LOAD("spaic11.bin", 0x1000, 0x0800, CRC(c86c0801) SHA1(1b52539538dae883f9c8fe5bc6454f9224780d11))
- ROM_RELOAD(0x5000, 0x0800)
- ROM_RELOAD(0x9000, 0x0800)
- ROM_RELOAD(0xd000, 0x0800)
- ROM_REGION(0x10000, "cpu2", 0)
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("spasnd.bin", 0x0000, 0x2000, CRC(62412e2e) SHA1(9e48dc3295e78e1024f726906be6e8c3fe3e61b1))
- ROM_RELOAD(0x2000, 0x2000)
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x6000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xa000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_END
/*-------------------------------------------------------------------
@@ -98,17 +225,9 @@ ROM_END
ROM_START(nautilus)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("nautilus.rom", 0x0000, 0x2000, CRC(197e5492) SHA1(0f83fc2e742fd0cca0bd162add4bef68c6620067))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
- ROM_REGION(0x10000, "cpu2", 0)
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("nautilus.snd", 0x0000, 0x2000, CRC(413d110f) SHA1(8360f652296c46339a70861efb34c41e92b25d0e))
- ROM_RELOAD(0x2000, 0x2000)
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x6000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xa000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_END
/*-------------------------------------------------------------------
@@ -117,17 +236,9 @@ ROM_END
ROM_START(theraid)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("theraid.rom", 0x0000, 0x2000, CRC(97aa1489) SHA1(6b691b287138cc78cfc1010f380ff8c66342c39b))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
- ROM_REGION(0x10000, "cpu2", 0)
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("theraid.snd", 0x0000, 0x2000, CRC(e33f8363) SHA1(e7f251c334b15e12b1eb7e079c2e9a5f64338052))
- ROM_RELOAD(0x2000, 0x2000)
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x6000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xa000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_END
/*-------------------------------------------------------------------
@@ -136,18 +247,10 @@ ROM_END
ROM_START(ufo_x)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("ufoxcpu.rom", 0x0000, 0x2000, CRC(cf0f7c52) SHA1(ce52da05b310ac84bdd57609e21b0401ee3a2564))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
- ROM_REGION(0x10000, "cpu2", 0)
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("ufoxu3.rom", 0x0000, 0x2000, CRC(6ebd8ee1) SHA1(83522b76a755556fd38d7b292273b4c68bfc0ddf))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_LOAD("ufoxu4.rom", 0x2000, 0x0800, CRC(aa54ede6) SHA1(7dd7e2852d42aa0f971936dbb84c7708727ce0e7))
- ROM_RELOAD(0x6000, 0x0800)
- ROM_RELOAD(0xa000, 0x0800)
- ROM_RELOAD(0xe000, 0x0800)
ROM_END
/*-------------------------------------------------------------------
@@ -156,17 +259,9 @@ ROM_END
ROM_START(rock2500)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("r2500cpu.rom", 0x0000, 0x2000, CRC(9c07e373) SHA1(5bd4e69d11e69fdb911a6e65b3d0a7192075abc8))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
- ROM_REGION(0x10000, "cpu2", 0)
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("r2500snd.rom", 0x0000, 0x2000, CRC(24fbaeae) SHA1(20ff35ed689291f321e483287a977c02e84d4524))
- ROM_RELOAD(0x2000, 0x2000)
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x6000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xa000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_END
/*-------------------------------------------------------------------
@@ -175,35 +270,19 @@ ROM_END
ROM_START(starfirp)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("starfcpu.rom", 0x0000, 0x2000, CRC(450ddf20) SHA1(c63c4e3833ffc1f69fcec39bafecae9c80befb2a))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
- ROM_REGION(0x10000, "cpu2", 0)
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("starfu3.rom", 0x0000, 0x2000, CRC(5d602d80) SHA1(19d21adbcbd0067c051f3033468eda8c5af57be1))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_LOAD("starfu4.rom", 0x2000, 0x0800, CRC(9af8be9a) SHA1(da6db3716db73baf8e1493aba91d4d85c5d613b4))
- ROM_RELOAD(0x6000, 0x0800)
- ROM_RELOAD(0xa000, 0x0800)
- ROM_RELOAD(0xe000, 0x0800)
ROM_END
ROM_START(starfirpa)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("starcpua.rom", 0x0000, 0x2000, CRC(29bac350) SHA1(ab3e3ea4881be954f7fa7278800ffd791c4581da))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
- ROM_REGION(0x10000, "cpu2", 0)
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("starfu3.rom", 0x0000, 0x2000, CRC(5d602d80) SHA1(19d21adbcbd0067c051f3033468eda8c5af57be1))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_LOAD("starfu4.rom", 0x2000, 0x0800, CRC(9af8be9a) SHA1(da6db3716db73baf8e1493aba91d4d85c5d613b4))
- ROM_RELOAD(0x6000, 0x0800)
- ROM_RELOAD(0xa000, 0x0800)
- ROM_RELOAD(0xe000, 0x0800)
ROM_END
/*-------------------------------------------------------------------
@@ -212,22 +291,11 @@ ROM_END
ROM_START(fldragon)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("fldrcpu1.rom", 0x0000, 0x2000, CRC(e513ded0) SHA1(64ed3dcff53311fb93bd50d105a4c1186043fdd7))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
- ROM_LOAD("fldrcpu2.rom", 0x2000, 0x2000, CRC(6ff2b276) SHA1(040b614f0b0587521ef5550b5587b94a7f3f178b))
- ROM_RELOAD(0x6000, 0x2000)
- ROM_RELOAD(0xa000, 0x2000)
- ROM_RELOAD(0xe000, 0x2000)
- ROM_REGION(0x10000, "cpu2", 0)
+ ROM_LOAD("fldraudiocpu.rom", 0x2000, 0x2000, CRC(6ff2b276) SHA1(040b614f0b0587521ef5550b5587b94a7f3f178b))
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("fdsndu3.rom", 0x0000, 0x2000, NO_DUMP)
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_LOAD("fdsndu4.rom", 0x2000, 0x0800, NO_DUMP)
- ROM_RELOAD(0x6000, 0x0800)
- ROM_RELOAD(0xa000, 0x0800)
- ROM_RELOAD(0xe000, 0x0800)
ROM_END
/*-------------------------------------------------------------------
@@ -240,22 +308,11 @@ ROM_END
ROM_START(sklflite)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("skflcpu1.rom", 0x0000, 0x2000, CRC(8f833b55) SHA1(1729203582c22b51d1cc401aa8f270aa5cdadabe))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
- ROM_LOAD("skflcpu2.rom", 0x2000, 0x2000, CRC(ffc497aa) SHA1(3e88539ae1688322b9268f502d8ca41cffb28df3))
- ROM_RELOAD(0x6000, 0x2000)
- ROM_RELOAD(0xa000, 0x2000)
- ROM_RELOAD(0xe000, 0x2000)
- ROM_REGION(0x10000, "cpu2", 0)
+ ROM_LOAD("skflaudiocpu.rom", 0x2000, 0x2000, CRC(ffc497aa) SHA1(3e88539ae1688322b9268f502d8ca41cffb28df3))
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("sfsndu3.rom", 0x0000, 0x2000, NO_DUMP)
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_LOAD("sfsndu4.rom", 0x2000, 0x0800, NO_DUMP)
- ROM_RELOAD(0x6000, 0x0800)
- ROM_RELOAD(0xa000, 0x0800)
- ROM_RELOAD(0xe000, 0x0800)
ROM_END
/*-------------------------------------------------------------------
@@ -268,18 +325,10 @@ ROM_END
ROM_START(trailer)
ROM_REGION(0x10000, "maincpu", 0)
ROM_LOAD("trcpu.rom", 0x0000, 0x2000, CRC(cc81f84d) SHA1(7a3282a47de271fde84cfddbaceb118add0df116))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
- ROM_REGION(0x10000, "cpu2", 0)
+
+ ROM_REGION(0x10000, "audiocpu", 0)
ROM_LOAD("trsndu3.rom", 0x0000, 0x2000, CRC(05975c29) SHA1(e54d3a5613c3e39fc0338a53dbadc2e91c09ffe3))
- ROM_RELOAD(0x4000, 0x2000)
- ROM_RELOAD(0x8000, 0x2000)
- ROM_RELOAD(0xc000, 0x2000)
ROM_LOAD("trsndu4.rom", 0x2000, 0x0800, CRC(bda2a735) SHA1(134b5abb813ed8bf2eeac0861b4c88c7176582d8))
- ROM_RELOAD(0x6000, 0x0800)
- ROM_RELOAD(0xa000, 0x0800)
- ROM_RELOAD(0xe000, 0x0800)
ROM_END
GAME(1982, spain82, 0, play_5, play_5, play_5_state, play_5, ROT0, "Playmatic", "Spain '82", MACHINE_IS_SKELETON_MECHANICAL)