New machines marked as NOT_WORKING

----------------------------------
Yamaha AN1x Control Synthesizer [DBWBP]
Yamaha DX100 Digital Programmable Algorithm Synthesizer [DBWBP]
This commit is contained in:
AJR 2021-06-20 11:03:48 -04:00
parent e5390ab1fb
commit 75517876f4
5 changed files with 241 additions and 0 deletions

View File

@ -4408,6 +4408,8 @@ files {
createMESSProjects(_target, _subtarget, "yamaha")
files {
MAME_DIR .. "src/mame/machine/mulcd.cpp",
MAME_DIR .. "src/mame/drivers/yman1x.cpp",
MAME_DIR .. "src/mame/drivers/ymdx100.cpp",
MAME_DIR .. "src/mame/drivers/ymdx11.cpp",
MAME_DIR .. "src/mame/drivers/ymmu5.cpp",
MAME_DIR .. "src/mame/drivers/ymmu50.cpp",

View File

@ -0,0 +1,87 @@
// license:BSD-3-Clause
// copyright-holders:AJR
/*******************************************************************************
Skeleton driver for Yamaha AN1x Control Synthesizer.
This is roughly similar in principle to the MU-80, but the sound chip is a
YSS236-F VOP3 instead of SWP20. A second VOP3 (with its own ROM) is on the
separate DMS board.
*******************************************************************************/
#include "emu.h"
//#include "bus/midi/midi.h"
#include "cpu/h8/h83002.h"
#include "cpu/m6805/m6805.h"
#include "machine/mulcd.h"
#include "machine/nvram.h"
#include "sound/meg.h"
#include "speaker.h"
namespace {
class an1x_state : public driver_device
{
public:
an1x_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_pks(*this, "pks")
, m_meg(*this, "meg")
{
}
void an1x(machine_config &config);
private:
void mem_map(address_map &map);
required_device<h83002_device> m_maincpu;
required_device<cpu_device> m_pks;
required_device<meg_device> m_meg;
};
void an1x_state::mem_map(address_map &map)
{
map(0x000000, 0x0fffff).rom().region("program", 0);
map(0x200000, 0x23ffff).ram().share("nvram");
}
static INPUT_PORTS_START(an1x)
INPUT_PORTS_END
void an1x_state::an1x(machine_config &config)
{
H83002(config, m_maincpu, 16_MHz_XTAL); // HD6413002FP16
m_maincpu->set_addrmap(AS_PROGRAM, &an1x_state::mem_map);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // 2x HM628128BLFP-8 + CR2450 battery
HD63705(config, m_pks, 8_MHz_XTAL).set_disable(); // HD63B05V0E65F
MULCD(config, "lcd"); // LC7985ND (back-lit)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
MEG(config, m_meg, 11.2896_MHz_XTAL);
}
ROM_START(an1x)
ROM_REGION16_BE(0x100000, "program", 0)
ROM_LOAD16_WORD_SWAP("yamaha an1x 1.04.ic2", 0x000000, 0x100000, CRC(f03b8c30) SHA1(778b669a450660f2b15cc385f156dc6676c437f1))
ROM_REGION(0x1000, "pks", 0)
ROM_LOAD("xn668a00.bin", 0x0000, 0x1000, NO_DUMP)
ROM_REGION16_BE(0x20000, "vop3", 0)
ROM_LOAD("xt113b00.ic9", 0x00000, 0x20000, NO_DUMP) // LH531024
ROM_REGION16_BE(0x20000, "vop3s", 0)
ROM_LOAD("xt113b00.ic1", 0x00000, 0x20000, NO_DUMP) // LH531024
ROM_END
} // anonymous namespace
SYST(1997, an1x, 0, 0, an1x, an1x, an1x_state, empty_init, "Yamaha", "AN1x Control Synthesizer", MACHINE_NOT_WORKING)

View File

@ -0,0 +1,144 @@
// license:BSD-3-Clause
// copyright-holders:AJR
/*******************************************************************************
Skeleton driver for Yamaha DX100 & DX27 FM synthesizers.
The main differences between DX100 and DX27 are that DX27 has 61 keys
rather than 49, but DX100 is portable and can run on battery power. Their
tone generation capabilities are identical.
*******************************************************************************/
#include "emu.h"
#include "bus/midi/midi.h"
#include "cpu/m6800/m6801.h"
#include "machine/adc0808.h"
#include "machine/clock.h"
#include "machine/nvram.h"
#include "sound/ymopm.h"
#include "video/hd44780.h"
#include "emupal.h"
#include "screen.h"
#include "speaker.h"
namespace {
class yamaha_dx100_state : public driver_device
{
public:
yamaha_dx100_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_midi_in(true)
{
}
void dx100(machine_config &config);
protected:
virtual void machine_start() override;
private:
HD44780_PIXEL_UPDATE(lcd_pixel_update);
void palette_init(palette_device &palette);
DECLARE_WRITE_LINE_MEMBER(p22_w);
void mem_map(address_map &map);
required_device<hd6303x_cpu_device> m_maincpu;
bool m_midi_in;
};
void yamaha_dx100_state::machine_start()
{
save_item(NAME(m_midi_in));
}
HD44780_PIXEL_UPDATE(yamaha_dx100_state::lcd_pixel_update)
{
if (x < 5 && y < 8 && line < 2 && pos < 16)
bitmap.pix(line * 10 + y + 1 + ((y == 7) ? 1 : 0), pos * 6 + x + 1) = state ? 1 : 2;
}
void yamaha_dx100_state::palette_init(palette_device &palette)
{
palette.set_pen_color(0, rgb_t(0x00, 0x00, 0x00)); // background
palette.set_pen_color(1, rgb_t(0xff, 0xff, 0xff)); // lcd pixel on
palette.set_pen_color(2, rgb_t(0x18, 0x18, 0x18)); // lcd pixel off
}
WRITE_LINE_MEMBER(yamaha_dx100_state::p22_w)
{
if (state)
m_maincpu->m6801_clock_serial();
}
void yamaha_dx100_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, 0x0fff).ram().share("nvram");
map(0x1000, 0x17ff).ram();
map(0x2000, 0x2001).rw("lcdc", FUNC(hd44780_device::read), FUNC(hd44780_device::write));
map(0x2800, 0x2800).r("adc", FUNC(m58990_device::data_r));
map(0x3000, 0x3000).w("adc", FUNC(m58990_device::address_data_start_w));
map(0x3800, 0x3801).rw("ymsnd", FUNC(ym2164_device::read), FUNC(ym2164_device::write));
map(0x8000, 0xffff).rom().region("program", 0);
}
static INPUT_PORTS_START(dx100)
INPUT_PORTS_END
void yamaha_dx100_state::dx100(machine_config &config)
{
HD6303X(config, m_maincpu, 7.15909_MHz_XTAL / 2); // HD6303XP
m_maincpu->set_addrmap(AS_PROGRAM, &yamaha_dx100_state::mem_map);
m_maincpu->in_p2_cb().set([this]() -> u8 { return m_midi_in ? 0x04 : 0; });
m_maincpu->in_p6_cb().set("adc", FUNC(m58990_device::eoc_r)).lshift(4);
m_maincpu->out_ser_tx_cb().set("mdout", FUNC(midi_port_device::write_txd));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // TC5518BPL + CR2032T battery
m58990_device &adc(M58990(config, "adc", 7.15909_MHz_XTAL / 8)); // M58990P-1 (clocked by E)
adc.in_callback<5>().set_constant(0x80); // "CNG RAM BATTERY!" displayed unless value is between 0x70 and 0xCC
CLOCK(config, "subclock", 500_kHz_XTAL).signal_handler().set(FUNC(yamaha_dx100_state::p22_w));
MIDI_PORT(config, "mdin", midiin_slot, "midiin").rxd_handler().set([this](int state) { m_midi_in = state; });
MIDI_PORT(config, "mdout", midiout_slot, "midiout");
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
screen.set_screen_update("lcdc", FUNC(hd44780_device::screen_update));
screen.set_size(6*16+1, 10*2+1);
screen.set_visarea_full();
screen.set_palette("palette");
PALETTE(config, "palette", FUNC(yamaha_dx100_state::palette_init), 3);
hd44780_device &lcdc(HD44780(config, "lcdc", 0)); // HD44780RA00
lcdc.set_lcd_size(2, 16);
lcdc.set_pixel_update_cb(FUNC(yamaha_dx100_state::lcd_pixel_update));
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
ym2164_device &ymsnd(YM2164(config, "ymsnd", 7.15909_MHz_XTAL / 2)); // with YM3014 DAC
ymsnd.add_route(0, "lspeaker", 0.60);
ymsnd.add_route(1, "rspeaker", 0.60);
}
ROM_START(dx100)
ROM_REGION(0x8000, "program", 0)
ROM_LOAD("dx100 v1.1.bin", 0x0000, 0x8000, CRC(c3ed7c86) SHA1(5b003db1bb5c1909907153f6446b63b07f5b41d6))
ROM_END
} // anonymous namespace
SYST(1985, dx100, 0, 0, dx100, dx100, yamaha_dx100_state, empty_init, "Yamaha", "DX100 Digital Programmable Algorithm Synthesizer", MACHINE_IS_SKELETON)

View File

@ -43268,6 +43268,12 @@ yes //
yiear // GX407 (c) 1985
yiear2 // GX407 (c) 1985
@source:yman1x.cpp
an1x //
@source:ymdx100.cpp
dx100 //
@source:ymdx11.cpp
dx11 //

View File

@ -1179,6 +1179,8 @@ xbox.cpp
xerox820.cpp
xor100.cpp
yes.cpp
yman1x.cpp
ymdx100.cpp
ymdx11.cpp
ymmu100.cpp
ymmu5.cpp