Play_1, Play_2, Play_5: added some meat to the bones. (nw)

This commit is contained in:
Robbbert 2016-08-07 01:40:01 +10:00
parent ecf0907234
commit 4cf6ac6cfd
4 changed files with 547 additions and 300 deletions

View File

@ -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)

View File

@ -1,51 +1,194 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
/*
Playmatic MPU 2
*/
// copyright-holders:Miodrag Milanovic, Robbbert
/**********************************************************************************
PINBALL
Playmatic MPU 2
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 "emu.h"
#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;
// driver_device overrides
virtual void machine_reset() override;
public:
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);
private:
UINT16 m_clockcnt;
UINT16 m_resetcnt;
virtual void machine_reset() override;
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);
}
DRIVER_INIT_MEMBER(play_2_state,play_2)
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 )
{
}
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

View File

@ -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

View File

@ -1,52 +1,198 @@
// license:BSD-3-Clause
// copyright-holders:Miodrag Milanovic
/*
Playmatic MPU 5
*/
// copyright-holders:Miodrag Milanovic, Robbbert
/**********************************************************************************
PINBALL
Playmatic MPU 5
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 "emu.h"
#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;
// driver_device overrides
virtual void machine_reset() override;
public:
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);
private:
UINT16 m_clockcnt;
UINT16 m_resetcnt;
virtual void machine_reset() override;
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);
}
DRIVER_INIT_MEMBER(play_5_state,play_5)
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);
}
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)