mirror of
https://github.com/holub/mame
synced 2025-04-16 05:24:54 +03:00
New machines marked as NOT_WORKING
---------------------------------- TR-808 Rhythm Composer [afx303, DinSync]
This commit is contained in:
parent
db40a44d00
commit
0cb2c9ec36
@ -3514,6 +3514,7 @@ files {
|
||||
MAME_DIR .. "src/mame/drivers/roland_tr505.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_tr606.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_tr707.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_tr808.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_tr909.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_u20.cpp",
|
||||
MAME_DIR .. "src/mame/audio/bu3905.cpp",
|
||||
|
@ -43,7 +43,7 @@ known chips:
|
||||
@513 uPD557LC 1980, Castle Toy Name That Tune
|
||||
|
||||
@060 uPD650C 1979, Mattel Computer Gin
|
||||
*085 uPD650C 1980, Roland TR-808
|
||||
085 uPD650C 1980, Roland TR-808 -> roland_tr808.cpp
|
||||
*127 uPD650C 198?, Sony OA-S1100 Typecorder (subcpu, have dump)
|
||||
128 uPD650C 1981, Roland TR-606 -> roland_tr606.cpp
|
||||
133 uPD650C 1982, Roland TB-303 -> roland_tb303.cpp
|
||||
|
@ -2,24 +2,29 @@
|
||||
// copyright-holders:hap
|
||||
/***************************************************************************
|
||||
|
||||
Roland TB-303 Bass Line, 1982, designed by Tadao Kikumoto
|
||||
* NEC uCOM-43 MCU, labeled D650C 133
|
||||
* 3*uPD444C 1024x4 Static CMOS SRAM
|
||||
* board is packed with discrete components
|
||||
Roland TB-303 Bass Line, 1982, designed by Tadao Kikumoto
|
||||
|
||||
TODO:
|
||||
- still too much to list here
|
||||
Hardware notes:
|
||||
- NEC uCOM-43 MCU, labeled D650C 133
|
||||
- 3*uPD444C 1024x4 Static CMOS SRAM
|
||||
- board is packed with discrete components
|
||||
|
||||
TODO:
|
||||
- still too much to list here
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "cpu/ucom4/ucom4.h"
|
||||
#include "machine/clock.h"
|
||||
#include "video/pwm.h"
|
||||
#include "machine/timer.h"
|
||||
|
||||
#include "tb303.lh"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class tb303_state : public driver_device
|
||||
{
|
||||
public:
|
||||
@ -42,12 +47,12 @@ private:
|
||||
|
||||
u8 m_ram[0xc00];
|
||||
u8 m_ram_addrset[3];
|
||||
u16 m_ram_address;
|
||||
u8 m_ram_data;
|
||||
bool m_ram_ce;
|
||||
bool m_ram_we;
|
||||
u8 m_led_data;
|
||||
u8 m_inp_mux;
|
||||
u16 m_ram_address = 0;
|
||||
u8 m_ram_data = 0;
|
||||
bool m_ram_ce = false;
|
||||
bool m_ram_we = false;
|
||||
u8 m_led_data = 0;
|
||||
u8 m_inp_mux = 0;
|
||||
|
||||
void refresh_ram();
|
||||
template<int N> void ram_address_w(u8 data);
|
||||
@ -59,9 +64,6 @@ private:
|
||||
void led_w(u8 data);
|
||||
void input_w(u8 data);
|
||||
u8 input_r(offs_t offset);
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(tp3_clock) { m_maincpu->set_input_line(0, ASSERT_LINE); }
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(tp3_clear) { m_maincpu->set_input_line(0, CLEAR_LINE); }
|
||||
};
|
||||
|
||||
void tb303_state::machine_start()
|
||||
@ -69,12 +71,6 @@ void tb303_state::machine_start()
|
||||
// zerofill
|
||||
memset(m_ram, 0, sizeof(m_ram));
|
||||
memset(m_ram_addrset, 0, sizeof(m_ram_addrset));
|
||||
m_ram_address = 0;
|
||||
m_ram_data = 0;
|
||||
m_ram_ce = false;
|
||||
m_ram_we = false;
|
||||
m_led_data = 0;
|
||||
m_inp_mux = 0;
|
||||
|
||||
// register for savestates
|
||||
save_item(NAME(m_ram));
|
||||
@ -87,18 +83,10 @@ void tb303_state::machine_start()
|
||||
save_item(NAME(m_inp_mux));
|
||||
}
|
||||
|
||||
// TP2 to MCU CLK: LC circuit(TI S74230), stable sine wave, 2.2us interval
|
||||
#define TP2_HZ 454545
|
||||
|
||||
// TP3 to MCU _INT: square wave, 1.8ms interval, short duty cycle
|
||||
#define TP3_PERIOD attotime::from_usec(1800)
|
||||
#define TP3_LOW (TP3_PERIOD / 8)
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
I/O
|
||||
|
||||
I/O
|
||||
***************************************************************************/
|
||||
|
||||
// external ram
|
||||
@ -222,9 +210,7 @@ u8 tb303_state::input_r(offs_t offset)
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Inputs
|
||||
|
||||
Inputs
|
||||
***************************************************************************/
|
||||
|
||||
static INPUT_PORTS_START( tb303 )
|
||||
@ -282,15 +268,13 @@ INPUT_PORTS_END
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Machine Config
|
||||
|
||||
Machine Configs
|
||||
***************************************************************************/
|
||||
|
||||
void tb303_state::tb303(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
NEC_D650(config, m_maincpu, TP2_HZ);
|
||||
// basic machine hardware
|
||||
NEC_D650(config, m_maincpu, 454545); // LC circuit(TI S74230), 2.2us
|
||||
m_maincpu->read_a().set(FUNC(tb303_state::input_r));
|
||||
m_maincpu->read_b().set(FUNC(tb303_state::input_r));
|
||||
m_maincpu->read_c().set(FUNC(tb303_state::ram_data_r));
|
||||
@ -302,25 +286,23 @@ void tb303_state::tb303(machine_config &config)
|
||||
m_maincpu->write_h().set(FUNC(tb303_state::input_w));
|
||||
m_maincpu->write_i().set(FUNC(tb303_state::strobe_w));
|
||||
|
||||
timer_device &tp3_clock(TIMER(config, "tp3_clock"));
|
||||
tp3_clock.configure_periodic(FUNC(tb303_state::tp3_clock), TP3_PERIOD);
|
||||
tp3_clock.set_start_delay(TP3_PERIOD - TP3_LOW);
|
||||
TIMER(config, "tp3_clear").configure_periodic(FUNC(tb303_state::tp3_clear), TP3_PERIOD);
|
||||
auto &irq_clock(CLOCK(config, "irq_clock"));
|
||||
irq_clock.set_period(attotime::from_usec(1800)); // clock rate 1.8ms
|
||||
irq_clock.set_duty_cycle(0.1); // short duty cycle
|
||||
irq_clock.signal_handler().set_inputline(m_maincpu, 0);
|
||||
|
||||
/* video hardware */
|
||||
// video hardware
|
||||
PWM_DISPLAY(config, m_display).set_size(4, 4);
|
||||
config.set_default_layout(layout_tb303);
|
||||
|
||||
/* sound hardware */
|
||||
// sound hardware
|
||||
// discrete...
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game driver(s)
|
||||
|
||||
ROM Definitions
|
||||
***************************************************************************/
|
||||
|
||||
ROM_START( tb303 )
|
||||
@ -328,5 +310,12 @@ ROM_START( tb303 )
|
||||
ROM_LOAD( "d650c-133.ic8", 0x0000, 0x0800, CRC(268a8d8b) SHA1(7a4236b2bc9a5cd4c80c63ca1a193e03becfcb4c) )
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
CONS( 1982, tb303, 0, 0, tb303, tb303, tb303_state, empty_init, "Roland", "TB-303 Bass Line", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Drivers
|
||||
***************************************************************************/
|
||||
|
||||
SYST( 1982, tb303, 0, 0, tb303, tb303, tb303_state, empty_init, "Roland", "TB-303 Bass Line", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -2,22 +2,25 @@
|
||||
// copyright-holders:hap
|
||||
/***************************************************************************
|
||||
|
||||
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
|
||||
Roland TR-606 Drumatix, early 1982
|
||||
|
||||
TODO:
|
||||
- still too much to list here
|
||||
Hardware notes:
|
||||
- NEC uCOM-43 MCU, labeled D650C 128
|
||||
- 2*uPD444C 1024x4 Static CMOS SRAM
|
||||
- board is packed with discrete components
|
||||
|
||||
TODO:
|
||||
- everything
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "cpu/ucom4/ucom4.h"
|
||||
#include "machine/timer.h"
|
||||
#include "machine/clock.h"
|
||||
|
||||
#include "tr606.lh"
|
||||
|
||||
namespace {
|
||||
|
||||
class tr606_state : public driver_device
|
||||
{
|
||||
@ -34,76 +37,45 @@ protected:
|
||||
|
||||
private:
|
||||
required_device<ucom4_cpu_device> m_maincpu;
|
||||
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(tp3_clock) { m_maincpu->set_input_line(0, ASSERT_LINE); }
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(tp3_clear) { m_maincpu->set_input_line(0, CLEAR_LINE); }
|
||||
};
|
||||
|
||||
void tr606_state::machine_start()
|
||||
{
|
||||
// zerofill
|
||||
|
||||
// register for savestates
|
||||
}
|
||||
|
||||
// TP2 to MCU CLK: LC circuit(TI S74230), stable sine wave, 2.2us interval
|
||||
#define TP2_HZ 454545
|
||||
|
||||
// MCU interrupt timing is same as in TB303
|
||||
// TP3 to MCU _INT: square wave, 1.8ms interval, short duty cycle
|
||||
#define TP3_PERIOD attotime::from_usec(1800)
|
||||
#define TP3_LOW (TP3_PERIOD / 8)
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
I/O
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Inputs
|
||||
|
||||
Inputs
|
||||
***************************************************************************/
|
||||
|
||||
static INPUT_PORTS_START( tr606 )
|
||||
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Machine Config
|
||||
|
||||
Machine Configs
|
||||
***************************************************************************/
|
||||
|
||||
void tr606_state::tr606(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
NEC_D650(config, m_maincpu, TP2_HZ);
|
||||
// basic machine hardware
|
||||
NEC_D650(config, m_maincpu, 454545); // LC circuit(TI S74230), 2.2us
|
||||
|
||||
timer_device &tp3_clock(TIMER(config, "tp3_clock"));
|
||||
tp3_clock.configure_periodic(FUNC(tr606_state::tp3_clock), TP3_PERIOD);
|
||||
tp3_clock.set_start_delay(TP3_PERIOD - TP3_LOW);
|
||||
TIMER(config, "tp3_clear").configure_periodic(FUNC(tr606_state::tp3_clear), TP3_PERIOD);
|
||||
auto &irq_clock(CLOCK(config, "irq_clock"));
|
||||
irq_clock.set_period(attotime::from_usec(1800)); // clock rate 1.8ms (same as tb303)
|
||||
irq_clock.set_duty_cycle(0.1); // short duty cycle
|
||||
irq_clock.signal_handler().set_inputline(m_maincpu, 0);
|
||||
|
||||
/* video hardware */
|
||||
config.set_default_layout(layout_tr606);
|
||||
|
||||
/* sound hardware */
|
||||
// sound hardware
|
||||
// discrete...
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Game driver(s)
|
||||
|
||||
ROM Definitions
|
||||
***************************************************************************/
|
||||
|
||||
ROM_START( tr606 )
|
||||
@ -111,5 +83,12 @@ ROM_START( tr606 )
|
||||
ROM_LOAD( "d650c-128.ic4", 0x0000, 0x0800, CRC(eee88f80) SHA1(ae605ce2b95adc2e0bacde3cd7ed0f39ac88b981) )
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
CONS( 1982, tr606, 0, 0, tr606, tr606, tr606_state, empty_init, "Roland", "TR-606 Drumatix", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Drivers
|
||||
***************************************************************************/
|
||||
|
||||
SYST( 1982, tr606, 0, 0, tr606, tr606, tr606_state, empty_init, "Roland", "TR-606 Drumatix", MACHINE_IS_SKELETON )
|
||||
|
94
src/mame/drivers/roland_tr808.cpp
Normal file
94
src/mame/drivers/roland_tr808.cpp
Normal file
@ -0,0 +1,94 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:hap
|
||||
/***************************************************************************
|
||||
|
||||
Roland TR-808 Rhythm Composer, drum machine from 1980
|
||||
|
||||
Hardware notes:
|
||||
- NEC uCOM-43 MCU, labeled D650C 085
|
||||
- 4*uPD444C 1024x4 Static CMOS SRAM
|
||||
- board is packed with discrete components
|
||||
|
||||
TODO:
|
||||
- everything
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "cpu/ucom4/ucom4.h"
|
||||
#include "machine/clock.h"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class tr808_state : public driver_device
|
||||
{
|
||||
public:
|
||||
tr808_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||
driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu")
|
||||
{ }
|
||||
|
||||
void tr808(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
private:
|
||||
required_device<ucom4_cpu_device> m_maincpu;
|
||||
};
|
||||
|
||||
void tr808_state::machine_start()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Inputs
|
||||
***************************************************************************/
|
||||
|
||||
static INPUT_PORTS_START( tr808 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Machine Configs
|
||||
***************************************************************************/
|
||||
|
||||
void tr808_state::tr808(machine_config &config)
|
||||
{
|
||||
// basic machine hardware
|
||||
NEC_D650(config, m_maincpu, 500000); // 2us according to schematics
|
||||
|
||||
auto &irq_clock(CLOCK(config, "irq_clock"));
|
||||
irq_clock.set_period(attotime::from_usec(1900)); // clock rate 1.9ms
|
||||
irq_clock.set_duty_cycle(0.1); // short duty cycle
|
||||
irq_clock.signal_handler().set_inputline(m_maincpu, 0);
|
||||
|
||||
// sound hardware
|
||||
// discrete...
|
||||
}
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
ROM Definitions
|
||||
***************************************************************************/
|
||||
|
||||
ROM_START( tr808 )
|
||||
ROM_REGION( 0x0800, "maincpu", 0 )
|
||||
ROM_LOAD( "d650c-085.ic4", 0x0000, 0x0800, CRC(06f0c405) SHA1(eddac7af6396c3f220914d9cad2c9e398872b034) )
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
Drivers
|
||||
***************************************************************************/
|
||||
|
||||
SYST( 1982, tr808, 0, 0, tr808, tr808, tr808_state, empty_init, "Roland", "TR-808 Rhythm Composer", MACHINE_IS_SKELETON )
|
@ -1,23 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
license:CC0
|
||||
-->
|
||||
<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" />
|
||||
|
||||
<element name="0.0" ref="led"><bounds x="1" y="1" width="1" height="1" /></element>
|
||||
|
||||
</view>
|
||||
</mamelayout>
|
@ -36336,6 +36336,9 @@ tr606 // Roland
|
||||
tr707 //
|
||||
tr727 //
|
||||
|
||||
@source:roland_tr808.cpp
|
||||
tr808
|
||||
|
||||
@source:roland_tr909.cpp
|
||||
tr909 //
|
||||
|
||||
|
@ -893,6 +893,7 @@ roland_tb303.cpp
|
||||
roland_tr505.cpp
|
||||
roland_tr606.cpp
|
||||
roland_tr707.cpp
|
||||
roland_tr808.cpp
|
||||
roland_tr909.cpp
|
||||
roland_u20.cpp
|
||||
rt1715.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user