diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 984aac00f9f..11242885892 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -4281,6 +4281,7 @@ createMESSProjects(_target, _subtarget, "yamaha") files { MAME_DIR .. "src/mame/machine/mulcd.cpp", MAME_DIR .. "src/mame/drivers/ymdx11.cpp", + MAME_DIR .. "src/mame/drivers/ymmu5.cpp", MAME_DIR .. "src/mame/drivers/ymmu50.cpp", MAME_DIR .. "src/mame/drivers/ymmu80.cpp", MAME_DIR .. "src/mame/drivers/ymmu100.cpp", diff --git a/src/mame/drivers/ymmu5.cpp b/src/mame/drivers/ymmu5.cpp new file mode 100644 index 00000000000..e4405e5ca99 --- /dev/null +++ b/src/mame/drivers/ymmu5.cpp @@ -0,0 +1,75 @@ +// license:BSD-3-Clause +// copyright-holders:R. Belmont +/* + Yamaha MU-5 Tone Generator + Preliminary driver by R. Belmont + + CPU: H8/3002 (HD6413002F10) + Sound: YMW-258-F (aka "MultiPCM") +*/ + +#include "emu.h" + +#include "cpu/h8/h83002.h" +#include "sound/multipcm.h" + +#include "screen.h" +#include "speaker.h" + +class mu5_state : public driver_device +{ +public: + mu5_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_ymw258(*this, "ymw258") + { } + + void mu5(machine_config &config); + +private: + required_device m_maincpu; + required_device m_ymw258; + void mu5_map(address_map &map); + void ymw258_map(address_map &map); +}; + +void mu5_state::mu5_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom().region("maincpu", 0); + map(0x200000, 0x21ffff).ram(); + map(0x400000, 0x400007).rw(m_ymw258, FUNC(multipcm_device::read), FUNC(multipcm_device::write)).umask16(0xff00); +} + +void mu5_state::ymw258_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); +} + +static INPUT_PORTS_START( mu5 ) +INPUT_PORTS_END + +void mu5_state::mu5(machine_config &config) +{ + /* basic machine hardware */ + H83002(config, m_maincpu, 10_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &mu5_state::mu5_map); + + SPEAKER(config, "lspeaker").front_left(); + SPEAKER(config, "rspeaker").front_right(); + + MULTIPCM(config, m_ymw258, 9400000); + m_ymw258->set_addrmap(0, &mu5_state::ymw258_map); + m_ymw258->add_route(0, "lspeaker", 1.0); + m_ymw258->add_route(1, "rspeaker", 1.0); +} + +ROM_START( mu5 ) + ROM_REGION(0x20000, "maincpu", 0) + ROM_LOAD("yamaha_mu5_program_xq201a0.bin", 0x000000, 0x020000, CRC(e9b3ec26) SHA1(cfee69699de78e2792dac24d428a120021ba147b)) + + ROM_REGION(0x200000, "ymw258", 0) + ROM_LOAD("yamaha_mu5_waverom_xp50280-801.bin", 0x000000, 0x200000, CRC(e0913030) SHA1(369f8df4942b6717c142ca8c4913e556dafae187)) +ROM_END + +CONS(1994, mu5, 0, 0, mu5, mu5, mu5_state, empty_init, "Yamaha", "MU-5", MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e0540e912e9..7e6627223ea 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -42677,6 +42677,9 @@ yiear2 // GX407 (c) 1985 @source:ymdx11.cpp dx11 // +@source:ymmu5.cpp +mu5 // 1994 MU-5 + @source:ymmu50.cpp mu50 // 1995 MU-50