mirror of
https://github.com/holub/mame
synced 2025-06-06 12:53:46 +03:00
New machines marked as NOT_WORKING
---------------------------------- Roland TR-707 Rhythm Composer [DBWBP] Roland TR-727 Rhythm Composer [DBWBP]
This commit is contained in:
parent
779dfd39f4
commit
b2e2405c7c
@ -3249,6 +3249,7 @@ files {
|
||||
MAME_DIR .. "src/mame/drivers/roland_sc55.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_tb303.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_tr606.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/roland_tr707.cpp",
|
||||
MAME_DIR .. "src/mame/machine/pg200.cpp",
|
||||
}
|
||||
|
||||
|
@ -71,6 +71,7 @@ const double XTAL::known_xtals[] = {
|
||||
1'008'000, /* 1.008_MHz_XTAL Acorn Microcomputer (System 1) */
|
||||
1'056'000, /* 1.056_MHz_XTAL Resonator - OKI M6295 on Trio The Punch h/w */
|
||||
1'294'400, /* 1.2944_MHz_XTAL BBN BitGraph PSG */
|
||||
1'600'000, /* 1.6_MHz_XTAL Resonator - Roland TR-707 */
|
||||
1'689'600, /* 1.6896_MHz_XTAL Diablo 1355WP Printer */
|
||||
1'750'000, /* 1.75_MHz_XTAL RCA CDP1861 */
|
||||
1'797'100, /* 1.7971_MHz_XTAL SWTPC 6800 (with MIKBUG) */
|
||||
|
198
src/mame/drivers/roland_tr707.cpp
Normal file
198
src/mame/drivers/roland_tr707.cpp
Normal file
@ -0,0 +1,198 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/****************************************************************************
|
||||
|
||||
Skeleton driver for Roland TR-707/727 drum machines.
|
||||
|
||||
From the Service Notes: “The differences between two models [TR-707 and
|
||||
TR-727] are sound data, component values in several audio stages and a
|
||||
couple of pin connections at IC30 of Voice board. Both models derive all
|
||||
rhythm sounds from PCM-encoded samples of real sounds stored in ROM.”
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "bus/generic/carts.h"
|
||||
#include "bus/generic/slot.h"
|
||||
//#include "bus/midi/midi.h"
|
||||
#include "cpu/m6800/m6801.h"
|
||||
#include "machine/nvram.h"
|
||||
//#include "video/hd61603.h"
|
||||
|
||||
class roland_tr707_state : public driver_device
|
||||
{
|
||||
public:
|
||||
roland_tr707_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_key_switches(*this, "KEY%u", 0U)
|
||||
, m_misc_select(0xff)
|
||||
{
|
||||
}
|
||||
|
||||
void tr707(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
private:
|
||||
void misc_select_w(u8 data);
|
||||
u8 key_scan_r();
|
||||
void leds_w(u8 data);
|
||||
void accent_level_w(u8 data);
|
||||
void ga_trigger_w(offs_t offset, u8 data);
|
||||
void voice_select_w(u8 data);
|
||||
|
||||
void mem_map(address_map &map);
|
||||
|
||||
required_device<hd6303x_cpu_device> m_maincpu;
|
||||
required_ioport_array<4> m_key_switches;
|
||||
|
||||
u8 m_misc_select;
|
||||
};
|
||||
|
||||
void roland_tr707_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_misc_select));
|
||||
}
|
||||
|
||||
|
||||
void roland_tr707_state::misc_select_w(u8 data)
|
||||
{
|
||||
m_misc_select = data;
|
||||
}
|
||||
|
||||
u8 roland_tr707_state::key_scan_r()
|
||||
{
|
||||
u8 data = 0xff;
|
||||
|
||||
for (int n = 0; n < 4; n++)
|
||||
if (!BIT(m_misc_select, n))
|
||||
data &= m_key_switches[n]->read();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void roland_tr707_state::leds_w(u8 data)
|
||||
{
|
||||
}
|
||||
|
||||
void roland_tr707_state::accent_level_w(u8 data)
|
||||
{
|
||||
}
|
||||
|
||||
void roland_tr707_state::ga_trigger_w(offs_t offset, u8 data)
|
||||
{
|
||||
}
|
||||
|
||||
void roland_tr707_state::voice_select_w(u8 data)
|
||||
{
|
||||
}
|
||||
|
||||
void roland_tr707_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x001f).m(m_maincpu, FUNC(hd6303x_cpu_device::hd6301x_io));
|
||||
map(0x0040, 0x00ff).ram(); // internal RAM
|
||||
map(0x0800, 0x0800).mirror(0x7ff).r(FUNC(roland_tr707_state::key_scan_r));
|
||||
//map(0x1000, 0x1000).mirror(0xfff).rw("lcdd", FUNC(hd61602_device::ready_r), FUNC(hd61602_device::write));
|
||||
map(0x2000, 0x27ff).ram().share("nvram1");
|
||||
map(0x2800, 0x2fff).ram().share("nvram2");
|
||||
map(0x3000, 0x3fff).rw("cartslot", FUNC(generic_slot_device::read_ram), FUNC(generic_slot_device::write_ram));
|
||||
map(0x4000, 0x4000).mirror(0xfff).w(FUNC(roland_tr707_state::leds_w));
|
||||
map(0x5000, 0x5000).mirror(0xfff).w(FUNC(roland_tr707_state::accent_level_w));
|
||||
map(0x6000, 0x6fff).w(FUNC(roland_tr707_state::ga_trigger_w));
|
||||
map(0x7000, 0x7000).mirror(0xfff).w(FUNC(roland_tr707_state::voice_select_w));
|
||||
map(0x8000, 0xbfff).mirror(0x4000).rom().region("program", 0);
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START(tr707)
|
||||
PORT_START("KEY0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("1")
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("2")
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("3")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("4")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("5")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("6")
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("7")
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("8")
|
||||
|
||||
PORT_START("KEY1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("9")
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("10")
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("11")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("12")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("13")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("14")
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("15")
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("16")
|
||||
|
||||
PORT_START("KEY2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Start")
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Stop/Cont")
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Enter")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Shift")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Pattern Clear")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Scale")
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Last Step")
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Inst Select")
|
||||
|
||||
PORT_START("KEY3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Tempo")
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Track")
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Pattern")
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Shuffle")
|
||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Group A")
|
||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Group B")
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Group C")
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Group D")
|
||||
INPUT_PORTS_END
|
||||
|
||||
void roland_tr707_state::tr707(machine_config &config)
|
||||
{
|
||||
HD6303X(config, m_maincpu, 4_MHz_XTAL); // HD6303XF
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &roland_tr707_state::mem_map);
|
||||
m_maincpu->out_p6_cb().set(FUNC(roland_tr707_state::misc_select_w));
|
||||
|
||||
NVRAM(config, "nvram1", nvram_device::DEFAULT_ALL_0); // HM6116LP-4 + battery
|
||||
NVRAM(config, "nvram2", nvram_device::DEFAULT_ALL_0); // HM6116LP-4 + battery
|
||||
|
||||
//HD61602(config, "lcdd");
|
||||
|
||||
GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, nullptr, "tr707_cart");
|
||||
|
||||
//RD63H114(config, "muxsound", 1.6_MHz_XTAL);
|
||||
}
|
||||
|
||||
ROM_START(tr707)
|
||||
ROM_REGION(0x4000, "program", 0)
|
||||
ROM_LOAD("os_rom_firmware.ic13", 0x0000, 0x4000, CRC(3517ea00) SHA1(f5d57a79abf49131bd9832ae4e2dbced914ea523)) // 27128
|
||||
|
||||
ROM_REGION(0x10000, "voices", 0) // "BD-MT" (IC34) and "HT-TAMB" (IC35)
|
||||
ROM_LOAD("hn61256p_c71_15179694.ic34", 0x0000, 0x8000, CRC(a196489b) SHA1(fd2bfe67d4d03d2b2134aa7feebe9167c44b1f8d))
|
||||
ROM_LOAD("hn61256p_c72_15179695.ic35", 0x8000, 0x8000, CRC(b05302e5) SHA1(5cc866f345906d817147ae2a61bc36d7be926511))
|
||||
|
||||
ROM_REGION(0x8000, "cymbal1", 0) // "Crash Cymbal"
|
||||
ROM_LOAD("hn61256p_c73_15179696.ic19", 0x0000, 0x8000, CRC(b0bea07f) SHA1(965e23ad71e1f95d56307fa67272725dff46ba67))
|
||||
|
||||
ROM_REGION(0x8000, "cymbal2", 0) // "Ride Cymbal"
|
||||
ROM_LOAD("hn61256p_c74_15179697.ic22", 0x0000, 0x8000, CRC(9411943a) SHA1(6c7c0f002ed66e4ccf182a4538d9bb239623ac43))
|
||||
ROM_END
|
||||
|
||||
ROM_START(tr727)
|
||||
ROM_REGION(0x4000, "program", 0)
|
||||
ROM_LOAD("osv_1.0_hd4827128.ic13", 0x0000, 0x4000, CRC(49954161) SHA1(8eb033d9729aa84cc3c33b8ce30925ff3c35e70a))
|
||||
|
||||
ROM_REGION(0x10000, "voices", 0) // "BNG-HTB" (IC34) and "LTB-MC" (IC35)
|
||||
ROM_LOAD("hn61256p_15179694.ic34", 0x0000, 0x8000, NO_DUMP)
|
||||
ROM_LOAD("hn61256p_15179695.ic35", 0x8000, 0x8000, NO_DUMP)
|
||||
|
||||
ROM_REGION(0x8000, "cymbal1", 0) // "Quijada"
|
||||
ROM_LOAD("hn61256p_15179696.ic19", 0x0000, 0x8000, NO_DUMP)
|
||||
|
||||
ROM_REGION(0x8000, "cymbal2", 0) // "Star Chime"
|
||||
ROM_LOAD("hn61256p_15179697.ic22", 0x0000, 0x8000, NO_DUMP)
|
||||
ROM_END
|
||||
|
||||
SYST(1985, tr707, 0, 0, tr707, tr707, roland_tr707_state, empty_init, "Roland", "TR-707 Rhythm Composer", MACHINE_IS_SKELETON)
|
||||
SYST(1985, tr727, 0, 0, tr707, tr707, roland_tr707_state, empty_init, "Roland", "TR-727 Rhythm Composer", MACHINE_IS_SKELETON)
|
@ -34605,6 +34605,10 @@ tb303 // Roland
|
||||
@source:roland_tr606.cpp
|
||||
tr606 // Roland
|
||||
|
||||
@source:roland_tr707.cpp
|
||||
tr707 //
|
||||
tr727 //
|
||||
|
||||
@source:rollerg.cpp
|
||||
rollerg // GX999 (c) 1991 (US)
|
||||
rollergj // GX999 (c) 1991 (Japan)
|
||||
|
@ -759,6 +759,7 @@ roland_r8.cpp
|
||||
roland_sc55.cpp
|
||||
roland_tb303.cpp
|
||||
roland_tr606.cpp
|
||||
roland_tr707.cpp
|
||||
rt1715.cpp
|
||||
rvoice.cpp
|
||||
rx78.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user