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 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 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 + +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 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 m_maincpu; + required_device m_4013a; + required_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 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 + +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 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 m_maincpu; + required_device m_4013a; + required_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)