New NOT_WORKING machine added

------------
Roland TR-606 [hap, Kevin Horton]
This commit is contained in:
hap 2016-01-24 02:55:41 +01:00
parent 3b94f23dad
commit c3293c4820
5 changed files with 171 additions and 23 deletions

View File

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

View File

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

View File

@ -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<timer_device> m_t3_off_timer;
required_device<timer_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 )

130
src/mame/drivers/tr606.cpp Normal file
View File

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

20
src/mame/layout/tr606.lay Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<mamelayout version="2">
<!-- define elements -->
<element name="led" defstate="0">
<disk state="0"><color red="0.2" green="0.04" blue="0.046" /></disk>
<disk state="1"><color red="1.0" green="0.2" blue="0.23" /></disk>
</element>
<!-- build screen -->
<view name="Internal Layout">
<bounds left="0" right="100" top="0" bottom="100" />
<bezel name="0.0" element="led"><bounds x="1" y="1" width="1" height="1" /></bezel>
</view>
</mamelayout>