New machines marked as MACHINE_NOT_WORKING

------------------------------------------
Yamaha MU90B [buffi]
This commit is contained in:
Olivier Galibert 2024-09-14 09:51:29 +02:00
parent f460c1e4b6
commit c69eebe89a
2 changed files with 32 additions and 10 deletions

View File

@ -46647,6 +46647,7 @@ mu80 // 1994 MU-80
@source:yamaha/ymmu90.cpp @source:yamaha/ymmu90.cpp
mu90 // 1996 MU-90 mu90 // 1996 MU-90
mu90b // 2005 MU-90B
@source:yamaha/ymmu100.cpp @source:yamaha/ymmu100.cpp
mu100 // 1997 MU-100 mu100 // 1997 MU-100

View File

@ -7,7 +7,8 @@
Preliminary driver by R. Belmont and O. Galibert Preliminary driver by R. Belmont and O. Galibert
The successor to the mu80, with the swp20/meg/eq combo remplaced by an all-in-one swp30. The successor to the mu80, with the swp20/meg/eq combo remplaced by an all-in-one swp30.
Exists in rackable (mu90r) version but we don't have that firmware variant. Exists in rackable (mu90r) version but we don't have that firmware variant and in
screenless version (mu90b).
Sound roms are a subset of the mu100's. Sound roms are a subset of the mu100's.
@ -67,11 +68,12 @@ public:
{ } { }
void mu90(machine_config &config); void mu90(machine_config &config);
void mu90b(machine_config &config);
private: private:
required_device<h83002_device> m_maincpu; required_device<h83002_device> m_maincpu;
required_device<swp30_device> m_swp30; required_device<swp30_device> m_swp30;
required_device<mulcd_device> m_lcd; optional_device<mulcd_device> m_lcd;
required_ioport m_ioport_p7; required_ioport m_ioport_p7;
required_ioport m_ioport_p8; required_ioport m_ioport_p8;
@ -148,7 +150,7 @@ void mu90_state::pb_w(u8 data)
u8 mu90_state::pb_r() u8 mu90_state::pb_r()
{ {
u8 res = 0xff; u8 res = 0xff;
if((cur_pa & 0x20)) { if(m_lcd && (cur_pa & 0x20)) {
if(cur_pa & 0x40) { if(cur_pa & 0x40) {
if(cur_pa & 0x02) if(cur_pa & 0x02)
res &= m_lcd->data_read(); res &= m_lcd->data_read();
@ -170,12 +172,13 @@ u8 mu90_state::pb_r()
void mu90_state::pa_w(u8 data) void mu90_state::pa_w(u8 data)
{ {
if(!(cur_pa & 0x01) && (data & 0x01)) { if(!(cur_pa & 0x01) && (data & 0x01)) {
if(m_lcd)
m_lcd->set_contrast(cur_pb & 7); m_lcd->set_contrast(cur_pb & 7);
logerror("ad1 input level %s\n", cur_pb & 0x80 ? "line" : "mic"); logerror("ad1 input level %s\n", cur_pb & 0x80 ? "line" : "mic");
logerror("ad2 input level %s\n", cur_pb & 0x40 ? "line" : "mic"); logerror("ad2 input level %s\n", cur_pb & 0x40 ? "line" : "mic");
} }
if((cur_pa & 0x20) && !(data & 0x20)) { if(m_lcd && (cur_pa & 0x20) && !(data & 0x20)) {
if(!(cur_pa & 0x40)) { if(!(cur_pa & 0x40)) {
if(cur_pa & 0x02) if(cur_pa & 0x02)
m_lcd->data_write(cur_pb); m_lcd->data_write(cur_pb);
@ -185,6 +188,7 @@ void mu90_state::pa_w(u8 data)
} }
if(!(cur_pa & 0x08) && (data & 0x08)) { if(!(cur_pa & 0x08) && (data & 0x08)) {
if(m_lcd)
m_lcd->set_leds((cur_pb & 0x1f) | ((cur_pb & 0x80) >> 2)); m_lcd->set_leds((cur_pb & 0x1f) | ((cur_pb & 0x80) >> 2));
cur_ic34 = cur_pb; cur_ic34 = cur_pb;
} }
@ -192,7 +196,7 @@ void mu90_state::pa_w(u8 data)
cur_pa = data; cur_pa = data;
} }
void mu90_state::mu90(machine_config &config) void mu90_state::mu90b(machine_config &config)
{ {
H83002(config, m_maincpu, 16_MHz_XTAL); H83002(config, m_maincpu, 16_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &mu90_state::mu90_map); m_maincpu->set_addrmap(AS_PROGRAM, &mu90_state::mu90_map);
@ -209,8 +213,6 @@ void mu90_state::mu90(machine_config &config)
m_maincpu->read_portb().set(FUNC(mu90_state::pb_r)); m_maincpu->read_portb().set(FUNC(mu90_state::pb_r));
m_maincpu->write_portb().set(FUNC(mu90_state::pb_w)); m_maincpu->write_portb().set(FUNC(mu90_state::pb_w));
MULCD(config, m_lcd);
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right(); SPEAKER(config, "rspeaker").front_right();
@ -232,6 +234,13 @@ void mu90_state::mu90(machine_config &config)
m_maincpu->write_sci_tx<0>().set(mdout, FUNC(midi_port_device::write_txd)); m_maincpu->write_sci_tx<0>().set(mdout, FUNC(midi_port_device::write_txd));
} }
void mu90_state::mu90(machine_config &config)
{
mu90b(config);
MULCD(config, m_lcd);
}
#define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \ #define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_BIOS(bios)) ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_REVERSE | ROM_BIOS(bios))
@ -246,7 +255,19 @@ ROM_START( mu90 )
ROM_LOAD32_WORD( "xs743a0.ic23", 0x0000002, 0x400000, CRC(a9109a6c) SHA1(a67bb49378a38a2d809bd717d286e18bc6496db0) ) ROM_LOAD32_WORD( "xs743a0.ic23", 0x0000002, 0x400000, CRC(a9109a6c) SHA1(a67bb49378a38a2d809bd717d286e18bc6496db0) )
ROM_END ROM_END
ROM_START( mu90b )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_DEFAULT_BIOS("v101")
ROM_SYSTEM_BIOS( 0, "v101", "xt040c0 (v1.01, Dec. 26, 2005)" )
ROM_LOAD16_WORD_SWAP_BIOS( 0, "xt040c0.ic9", 0x000000, 0x100000, CRC(66fe5896) SHA1(811a8c7f0e8aac7a8807922d5add0fbfc07e1cfd) )
ROM_REGION32_LE( 0x800000, "swp30", ROMREGION_ERASE00 )
ROM_LOAD32_WORD( "xs518a0.ic22", 0x0000000, 0x400000, CRC(2550d44f) SHA1(fd3cce228c7d389a2fde25c808a5b26080588cba) )
ROM_LOAD32_WORD( "xs743a0.ic23", 0x0000002, 0x400000, CRC(a9109a6c) SHA1(a67bb49378a38a2d809bd717d286e18bc6496db0) )
ROM_END
} // anonymous namespace } // anonymous namespace
SYST( 1996, mu90, 0, 0, mu90, mu90, mu90_state, empty_init, "Yamaha", "MU90", MACHINE_NOT_WORKING ) SYST( 1996, mu90, 0, 0, mu90, mu90, mu90_state, empty_init, "Yamaha", "MU90", MACHINE_NOT_WORKING )
SYST( 2005, mu90b, mu90, 0, mu90b, mu90, mu90_state, empty_init, "Yamaha", "MU90B", MACHINE_NOT_WORKING )