mirror of
https://github.com/holub/mame
synced 2025-06-07 13:23:50 +03:00
New NOT_WORKING machine added
------------ Roland TR-606 [hap, Kevin Horton]
This commit is contained in:
parent
3b94f23dad
commit
c3293c4820
@ -40,7 +40,7 @@
|
|||||||
@MP3301A TMS1000 1979, Milton Bradley Big Trak
|
@MP3301A TMS1000 1979, Milton Bradley Big Trak
|
||||||
*MP3320A TMS1000 1979, Coleco Head to Head Basketball
|
*MP3320A TMS1000 1979, Coleco Head to Head Basketball
|
||||||
*M32001 TMS1000 1981, Coleco Quiz Wiz Challenger (note: MP3398, MP3399, M3200x?)
|
*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
|
@MP3404 TMS1100 1978, Parker Brothers Merlin
|
||||||
@MP3405 TMS1100 1979, Coleco Amaze-A-Tron
|
@MP3405 TMS1100 1979, Coleco Amaze-A-Tron
|
||||||
*MP3415 TMS1100 1978, Coleco Electronic Quarterback
|
*MP3415 TMS1100 1978, Coleco Electronic Quarterback
|
||||||
@ -69,7 +69,7 @@
|
|||||||
@MP7313 TMS1400 1980, Parker Brothers Bank Shot
|
@MP7313 TMS1400 1980, Parker Brothers Bank Shot
|
||||||
@MP7314 TMS1400 1980, Parker Brothers Split Second
|
@MP7314 TMS1400 1980, Parker Brothers Split Second
|
||||||
*MP7324 TMS1400? 1985, Coleco Talking Teacher
|
*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
|
@MP7334 TMS1400 1981, Coleco Total Control 4
|
||||||
@MP7351 TMS1400CR 1982, Parker Brothers Master Merlin
|
@MP7351 TMS1400CR 1982, Parker Brothers Master Merlin
|
||||||
@MP7551 TMS1670 1980, Entex Color Football 4 (6009)
|
@MP7551 TMS1670 1980, Entex Color Football 4 (6009)
|
||||||
|
@ -49,8 +49,8 @@
|
|||||||
*060 uPD650C 1979, Mattel Computer Gin
|
*060 uPD650C 1979, Mattel Computer Gin
|
||||||
*085 uPD650C 1980, Roland TR-808
|
*085 uPD650C 1980, Roland TR-808
|
||||||
*127 uPD650C 198?, Sony OA-S1100 Typecorder (subcpu, have dump)
|
*127 uPD650C 198?, Sony OA-S1100 Typecorder (subcpu, have dump)
|
||||||
*128 uPD650C 1981, Roland TR-606
|
128 uPD650C 1981, Roland TR-606 -> tr606.cpp
|
||||||
133 uPD650C 1982, Roland TB-303 -> tb303.c
|
133 uPD650C 1982, Roland TB-303 -> tb303.cpp
|
||||||
|
|
||||||
(* denotes not yet emulated by MAME, @ denotes it's in this driver)
|
(* denotes not yet emulated by MAME, @ denotes it's in this driver)
|
||||||
|
|
||||||
|
@ -24,10 +24,10 @@ class tb303_state : public hh_ucom4_state
|
|||||||
public:
|
public:
|
||||||
tb303_state(const machine_config &mconfig, device_type type, const char *tag)
|
tb303_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: hh_ucom4_state(mconfig, type, 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];
|
UINT8 m_ram[0xc00];
|
||||||
UINT16 m_ram_address;
|
UINT16 m_ram_address;
|
||||||
@ -43,8 +43,8 @@ public:
|
|||||||
DECLARE_READ8_MEMBER(input_r);
|
DECLARE_READ8_MEMBER(input_r);
|
||||||
void update_leds();
|
void update_leds();
|
||||||
|
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(t3_clock);
|
TIMER_DEVICE_CALLBACK_MEMBER(tp3_clock);
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(t3_off);
|
TIMER_DEVICE_CALLBACK_MEMBER(tp3_off);
|
||||||
|
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
};
|
};
|
||||||
@ -56,22 +56,22 @@ public:
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
// T2 to MCU CLK: LC circuit, stable sine wave, 2.2us interval
|
// TP2 to MCU CLK: LC circuit(TI S74230), stable sine wave, 2.2us interval
|
||||||
#define TB303_T2_CLOCK_HZ 454545 /* in hz */
|
#define TP2_CLOCK_HZ 454545 /* in hz */
|
||||||
|
|
||||||
// T3 to MCU _INT: square wave, 1.8ms interval, short duty cycle
|
// TP3 to MCU _INT: square wave, 1.8ms interval, short duty cycle
|
||||||
#define TB303_T3_CLOCK attotime::from_usec(1800)
|
#define TP3_CLOCK attotime::from_usec(1800)
|
||||||
#define TB303_T3_OFF (TB303_T3_CLOCK / 8)
|
#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);
|
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_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 )
|
static MACHINE_CONFIG_START( tb303, tb303_state )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* 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_A_CB(READ8(tb303_state, input_r))
|
||||||
MCFG_UCOM4_READ_B_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))
|
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_H_CB(WRITE8(tb303_state, switch_w))
|
||||||
MCFG_UCOM4_WRITE_I_CB(WRITE8(tb303_state, strobe_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_DRIVER_ADD_PERIODIC("tp3_clock", tb303_state, tp3_clock, TP3_CLOCK)
|
||||||
MCFG_TIMER_START_DELAY(TB303_T3_CLOCK)
|
MCFG_TIMER_START_DELAY(TP3_CLOCK)
|
||||||
MCFG_TIMER_DRIVER_ADD("t3_off", tb303_state, t3_off)
|
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_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_ucom4_state, display_decay_tick, attotime::from_msec(1))
|
||||||
MCFG_DEFAULT_LAYOUT(layout_tb303)
|
MCFG_DEFAULT_LAYOUT(layout_tb303)
|
||||||
|
|
||||||
/* no video! */
|
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
// discrete...
|
// discrete...
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
@ -309,4 +307,4 @@ ROM_START( tb303 )
|
|||||||
ROM_END
|
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
130
src/mame/drivers/tr606.cpp
Normal 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
20
src/mame/layout/tr606.lay
Normal 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>
|
Loading…
Reference in New Issue
Block a user