summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-11-20 01:54:49 +0100
committer hap <happppp@users.noreply.github.com>2021-11-20 01:55:05 +0100
commit0cb2c9ec367149c10a9fa65e203cffe0c0991bb1 (patch)
tree6c9d4cf75d42f7472ea0c95c999c0f8ff077dc41
parentdb40a44d0093bdb2ffa508a9452a81e05750f56e (diff)
New machines marked as NOT_WORKING
---------------------------------- TR-808 Rhythm Composer [afx303, DinSync]
-rw-r--r--scripts/target/mame/mess.lua1
-rw-r--r--src/mame/drivers/hh_ucom4.cpp2
-rw-r--r--src/mame/drivers/roland_tb303.cpp87
-rw-r--r--src/mame/drivers/roland_tr606.cpp79
-rw-r--r--src/mame/drivers/roland_tr808.cpp94
-rw-r--r--src/mame/layout/tr606.lay23
-rw-r--r--src/mame/mame.lst3
-rw-r--r--src/mame/mess.flt1
8 files changed, 167 insertions, 123 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua
index 32d829e9bf0..c4ef39eecfb 100644
--- a/scripts/target/mame/mess.lua
+++ b/scripts/target/mame/mess.lua
@@ -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",
diff --git a/src/mame/drivers/hh_ucom4.cpp b/src/mame/drivers/hh_ucom4.cpp
index 915500d1ddf..fc75f7a5a98 100644
--- a/src/mame/drivers/hh_ucom4.cpp
+++ b/src/mame/drivers/hh_ucom4.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
diff --git a/src/mame/drivers/roland_tb303.cpp b/src/mame/drivers/roland_tb303.cpp
index ce9e8e003c5..007e3ad723e 100644
--- a/src/mame/drivers/roland_tb303.cpp
+++ b/src/mame/drivers/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
+
+
+
+/***************************************************************************
+ Drivers
+***************************************************************************/
-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 )
+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 )
diff --git a/src/mame/drivers/roland_tr606.cpp b/src/mame/drivers/roland_tr606.cpp
index f52c7d488b2..2bafa9f973d 100644
--- a/src/mame/drivers/roland_tr606.cpp
+++ b/src/mame/drivers/roland_tr606.cpp
@@ -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);
-
- 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);
+ // basic machine hardware
+ NEC_D650(config, m_maincpu, 454545); // LC circuit(TI S74230), 2.2us
- /* video hardware */
- config.set_default_layout(layout_tr606);
+ 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);
- /* 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
+
+
+
+/***************************************************************************
+ Drivers
+***************************************************************************/
-CONS( 1982, tr606, 0, 0, tr606, tr606, tr606_state, empty_init, "Roland", "TR-606 Drumatix", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
+SYST( 1982, tr606, 0, 0, tr606, tr606, tr606_state, empty_init, "Roland", "TR-606 Drumatix", MACHINE_IS_SKELETON )
diff --git a/src/mame/drivers/roland_tr808.cpp b/src/mame/drivers/roland_tr808.cpp
new file mode 100644
index 00000000000..a04aabf527c
--- /dev/null
+++ b/src/mame/drivers/roland_tr808.cpp
@@ -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 )
diff --git a/src/mame/layout/tr606.lay b/src/mame/layout/tr606.lay
deleted file mode 100644
index 5e6f5cbf31a..00000000000
--- a/src/mame/layout/tr606.lay
+++ /dev/null
@@ -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>
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index 083be4101aa..f721eb73c95 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -36336,6 +36336,9 @@ tr606 // Roland
tr707 //
tr727 //
+@source:roland_tr808.cpp
+tr808
+
@source:roland_tr909.cpp
tr909 //
diff --git a/src/mame/mess.flt b/src/mame/mess.flt
index 7f76166c49f..1d8e48285b4 100644
--- a/src/mame/mess.flt
+++ b/src/mame/mess.flt
@@ -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