mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
Play_1, Play_2, Play_5: added some meat to the bones. (nw)
This commit is contained in:
parent
ecf0907234
commit
4cf6ac6cfd
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user