From c3293c48202387b6246d0387e2997d9f6484f1cb Mon Sep 17 00:00:00 2001 From: hap Date: Sun, 24 Jan 2016 02:55:41 +0100 Subject: [PATCH] New NOT_WORKING machine added ------------ Roland TR-606 [hap, Kevin Horton] --- src/mame/drivers/hh_tms1k.cpp | 4 +- src/mame/drivers/hh_ucom4.cpp | 4 +- src/mame/drivers/tb303.cpp | 36 +++++----- src/mame/drivers/tr606.cpp | 130 ++++++++++++++++++++++++++++++++++ src/mame/layout/tr606.lay | 20 ++++++ 5 files changed, 171 insertions(+), 23 deletions(-) create mode 100644 src/mame/drivers/tr606.cpp create mode 100644 src/mame/layout/tr606.lay diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index 9702aded253..9670ab8be9f 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -40,7 +40,7 @@ @MP3301A TMS1000 1979, Milton Bradley Big Trak *MP3320A TMS1000 1979, Coleco Head to Head Basketball *M32001 TMS1000 1981, Coleco Quiz Wiz Challenger (note: MP3398, MP3399, M3200x?) - MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.c + MP3403 TMS1100 1978, Marx Electronic Bowling -> elecbowl.cpp @MP3404 TMS1100 1978, Parker Brothers Merlin @MP3405 TMS1100 1979, Coleco Amaze-A-Tron *MP3415 TMS1100 1978, Coleco Electronic Quarterback @@ -69,7 +69,7 @@ @MP7313 TMS1400 1980, Parker Brothers Bank Shot @MP7314 TMS1400 1980, Parker Brothers Split Second *MP7324 TMS1400? 1985, Coleco Talking Teacher - MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.c + MP7332 TMS1400 1981, Milton Bradley Dark Tower -> mbdtower.cpp @MP7334 TMS1400 1981, Coleco Total Control 4 @MP7351 TMS1400CR 1982, Parker Brothers Master Merlin @MP7551 TMS1670 1980, Entex Color Football 4 (6009) diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp index 1b7c020bba3..b78b15a40d3 100644 --- a/src/mame/drivers/hh_ucom4.cpp +++ b/src/mame/drivers/hh_ucom4.cpp @@ -49,8 +49,8 @@ *060 uPD650C 1979, Mattel Computer Gin *085 uPD650C 1980, Roland TR-808 *127 uPD650C 198?, Sony OA-S1100 Typecorder (subcpu, have dump) - *128 uPD650C 1981, Roland TR-606 - 133 uPD650C 1982, Roland TB-303 -> tb303.c + 128 uPD650C 1981, Roland TR-606 -> tr606.cpp + 133 uPD650C 1982, Roland TB-303 -> tb303.cpp (* denotes not yet emulated by MAME, @ denotes it's in this driver) diff --git a/src/mame/drivers/tb303.cpp b/src/mame/drivers/tb303.cpp index 6788bb1257d..e0f4e4798c9 100644 --- a/src/mame/drivers/tb303.cpp +++ b/src/mame/drivers/tb303.cpp @@ -24,10 +24,10 @@ class tb303_state : public hh_ucom4_state public: tb303_state(const machine_config &mconfig, device_type type, const char *tag) : hh_ucom4_state(mconfig, type, tag), - m_t3_off_timer(*this, "t3_off") + m_tp3_off_timer(*this, "tp3_off") { } - required_device m_t3_off_timer; + required_device m_tp3_off_timer; UINT8 m_ram[0xc00]; UINT16 m_ram_address; @@ -43,8 +43,8 @@ public: DECLARE_READ8_MEMBER(input_r); void update_leds(); - TIMER_DEVICE_CALLBACK_MEMBER(t3_clock); - TIMER_DEVICE_CALLBACK_MEMBER(t3_off); + TIMER_DEVICE_CALLBACK_MEMBER(tp3_clock); + TIMER_DEVICE_CALLBACK_MEMBER(tp3_off); virtual void machine_start() override; }; @@ -56,22 +56,22 @@ public: ***************************************************************************/ -// T2 to MCU CLK: LC circuit, stable sine wave, 2.2us interval -#define TB303_T2_CLOCK_HZ 454545 /* in hz */ +// TP2 to MCU CLK: LC circuit(TI S74230), stable sine wave, 2.2us interval +#define TP2_CLOCK_HZ 454545 /* in hz */ -// T3 to MCU _INT: square wave, 1.8ms interval, short duty cycle -#define TB303_T3_CLOCK attotime::from_usec(1800) -#define TB303_T3_OFF (TB303_T3_CLOCK / 8) +// TP3 to MCU _INT: square wave, 1.8ms interval, short duty cycle +#define TP3_CLOCK attotime::from_usec(1800) +#define TP3_OFF (TP3_CLOCK / 8) -TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::t3_off) +TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::tp3_off) { m_maincpu->set_input_line(0, CLEAR_LINE); } -TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::t3_clock) +TIMER_DEVICE_CALLBACK_MEMBER(tb303_state::tp3_clock) { m_maincpu->set_input_line(0, ASSERT_LINE); - m_t3_off_timer->adjust(TB303_T3_OFF); + m_tp3_off_timer->adjust(TP3_OFF); } @@ -270,7 +270,7 @@ void tb303_state::machine_start() static MACHINE_CONFIG_START( tb303, tb303_state ) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", NEC_D650, TB303_T2_CLOCK_HZ) + MCFG_CPU_ADD("maincpu", NEC_D650, TP2_CLOCK_HZ) MCFG_UCOM4_READ_A_CB(READ8(tb303_state, input_r)) MCFG_UCOM4_READ_B_CB(READ8(tb303_state, input_r)) MCFG_UCOM4_READ_C_CB(READ8(tb303_state, ram_r)) @@ -282,15 +282,13 @@ static MACHINE_CONFIG_START( tb303, tb303_state ) MCFG_UCOM4_WRITE_H_CB(WRITE8(tb303_state, switch_w)) MCFG_UCOM4_WRITE_I_CB(WRITE8(tb303_state, strobe_w)) - MCFG_TIMER_DRIVER_ADD_PERIODIC("t3_clock", tb303_state, t3_clock, TB303_T3_CLOCK) - MCFG_TIMER_START_DELAY(TB303_T3_CLOCK) - MCFG_TIMER_DRIVER_ADD("t3_off", tb303_state, t3_off) + MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clock", tb303_state, tp3_clock, TP3_CLOCK) + MCFG_TIMER_START_DELAY(TP3_CLOCK) + MCFG_TIMER_DRIVER_ADD("tp3_off", tb303_state, tp3_off) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) MCFG_DEFAULT_LAYOUT(layout_tb303) - /* no video! */ - /* sound hardware */ // discrete... MACHINE_CONFIG_END @@ -309,4 +307,4 @@ ROM_START( tb303 ) ROM_END -CONS( 1982, tb303, 0, 0, tb303, tb303, driver_device, 0, "Roland", "TB-303", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) +CONS( 1982, tb303, 0, 0, tb303, tb303, driver_device, 0, "Roland", "TB-303 Bass Line", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/tr606.cpp b/src/mame/drivers/tr606.cpp new file mode 100644 index 00000000000..3842cb0f875 --- /dev/null +++ b/src/mame/drivers/tr606.cpp @@ -0,0 +1,130 @@ +// license:BSD-3-Clause +// copyright-holders:hap +/*************************************************************************** + + ** subclass of hh_ucom4_state (includes/hh_ucom4.h, drivers/hh_ucom4.cpp) ** + + Roland TR-606 Drumatix, early 1982 + * NEC uCOM-43 MCU, labeled D650C 128 + * 2*uPD444C 1024x4 Static CMOS SRAM + * board is packed with discrete components + + TODO: + - still too much to list here + +***************************************************************************/ + +#include "includes/hh_ucom4.h" + +#include "tr606.lh" + + +class tr606_state : public hh_ucom4_state +{ +public: + tr606_state(const machine_config &mconfig, device_type type, const char *tag) + : hh_ucom4_state(mconfig, type, tag), + m_tp3_off_timer(*this, "tp3_off") + { } + + required_device m_tp3_off_timer; + + TIMER_DEVICE_CALLBACK_MEMBER(tp3_clock); + TIMER_DEVICE_CALLBACK_MEMBER(tp3_off); + + virtual void machine_start() override; +}; + + +/*************************************************************************** + + Timer/Interrupt + +***************************************************************************/ + +// TP2 to MCU CLK: LC circuit(TI S74230), stable sine wave, 2.2us interval +#define TP2_CLOCK_HZ 454545 /* in hz */ + +// TP3 to MCU _INT: square wave, 1.8ms interval, short duty cycle +#define TP3_CLOCK attotime::from_usec(1800) +#define TP3_OFF (TP3_CLOCK / 8) + +TIMER_DEVICE_CALLBACK_MEMBER(tr606_state::tp3_off) +{ + m_maincpu->set_input_line(0, CLEAR_LINE); +} + +TIMER_DEVICE_CALLBACK_MEMBER(tr606_state::tp3_clock) +{ + m_maincpu->set_input_line(0, ASSERT_LINE); + m_tp3_off_timer->adjust(TP3_OFF); +} + + + +/*************************************************************************** + + I/O + +***************************************************************************/ + + + +/*************************************************************************** + + Inputs + +***************************************************************************/ + +static INPUT_PORTS_START( tr606 ) + +INPUT_PORTS_END + + + +/*************************************************************************** + + Machine Config + +***************************************************************************/ + +void tr606_state::machine_start() +{ + hh_ucom4_state::machine_start(); + + // zerofill + + // register for savestates +} + +static MACHINE_CONFIG_START( tr606, tr606_state ) + + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", NEC_D650, TP2_CLOCK_HZ) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("tp3_clock", tr606_state, tp3_clock, TP3_CLOCK) + MCFG_TIMER_START_DELAY(TP3_CLOCK) + MCFG_TIMER_DRIVER_ADD("tp3_off", tr606_state, tp3_off) + + MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1)) + MCFG_DEFAULT_LAYOUT(layout_tr606) + + /* sound hardware */ + // discrete... +MACHINE_CONFIG_END + + + +/*************************************************************************** + + Game driver(s) + +***************************************************************************/ + +ROM_START( tr606 ) + ROM_REGION( 0x0800, "maincpu", 0 ) + ROM_LOAD( "d650c-128.ic4", 0x0000, 0x0800, CRC(eee88f80) SHA1(ae605ce2b95adc2e0bacde3cd7ed0f39ac88b981) ) +ROM_END + + +CONS( 1982, tr606, 0, 0, tr606, tr606, driver_device, 0, "Roland", "TR-606 Drumatix", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/layout/tr606.lay b/src/mame/layout/tr606.lay new file mode 100644 index 00000000000..9d3e4d2766a --- /dev/null +++ b/src/mame/layout/tr606.lay @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + +