From d57143f1d0cb664ba79a98432c5fee7ded9fb8fb Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 22 Aug 2023 02:23:16 +0200 Subject: [PATCH] misc/rbmk.cpp: added preliminary Oki hookup to the games without MCU --- src/mame/misc/rbmk.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/mame/misc/rbmk.cpp b/src/mame/misc/rbmk.cpp index 83d484012ec..0b824f315ef 100644 --- a/src/mame/misc/rbmk.cpp +++ b/src/mame/misc/rbmk.cpp @@ -103,7 +103,7 @@ private: required_device m_eeprom; required_device m_gfxdecode; required_device m_palette; - required_device m_ymsnd; + optional_device m_ymsnd; required_ioport_array<3> m_dsw; uint16_t m_tilebank = 0; @@ -221,10 +221,10 @@ void rbmk_state::super555_mem(address_map &map) map(0x600000, 0x600001).rw(FUNC(rbmk_state::dip_mux_r), FUNC(rbmk_state::dip_mux_w)); map(0x608000, 0x608001).portr("IN1").w(FUNC(rbmk_state::tilebank_w)); // ok map(0x610000, 0x610001).portr("IN2"); - // map(0x618080, 0x618081).lr16(NAME([this] () -> uint16_t { return m_prot_data; })); // reads something here from below, if these are hooked up booting stops with '0x09 U64 ERROR', like it's failing some checksum test - map(0x620000, 0x620001).portr("IN3"); + map(0x618080, 0x618081).nopr();//.lr16(NAME([this] () -> uint16_t { return m_prot_data; })); // reads something here from below, if these are hooked up booting stops with '0x09 U64 ERROR', like it's failing some checksum test + map(0x620000, 0x620001).r("oki", FUNC(okim6295_device::read)); // TODO: Oki controlled through a GAL at 18C, should be banked, too // map(0x620080, 0x620081).lw16(NAME([this] (uint16_t data) { m_prot_data = data; })); // writes something here that expects to read above - map(0x628000, 0x628001).w(FUNC(rbmk_state::unk_w)); + map(0x628000, 0x628000).w("oki", FUNC(okim6295_device::write)); map(0x900000, 0x900fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x940000, 0x940fff).ram().share(m_vidram[1]); map(0x980000, 0x983fff).ram(); @@ -1065,6 +1065,7 @@ void rbmk_state::super555(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &rbmk_state::super555_mem); config.device_remove("mcu"); + config.device_remove("ymsnd"); } void rbmk_state::magslot(machine_config &config) @@ -1216,8 +1217,8 @@ GAME( 1998, rbmk, 0, rbmk, rbmk, rbmk_state, empty_init, ROT0, " GAME( 1998, rbspm, 0, rbspm, rbspm, rbmk_state, empty_init, ROT0, "GMS", "Shizhan Ding Huang Maque (Version 4.1)", MACHINE_NOT_WORKING ) // card games -GAME( 1999, super555, 0, super555, super555, rbmk_state, init_super555, ROT0, "GMS", "Super 555 (English version V1.5)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now +GAME( 1999, super555, 0, super555, super555, rbmk_state, init_super555, ROT0, "GMS", "Super 555 (English version V1.5)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // stops during boot, patched for now GAME( 2001, sc2in1, 0, magslot, magslot, rbmk_state, empty_init, ROT0, "GMS", "Super Card 2 in 1 (English version 03.23)", MACHINE_NOT_WORKING ) // stops during boot // slot, on slightly different PCB -GAME( 2003, magslot, 0, magslot, magslot, rbmk_state, empty_init, ROT0, "GMS", "Magic Slot (normal 1.0C)", MACHINE_NOT_WORKING ) // needs implementing of 3rd GFX layer, correct GFX decode for 1st layer, inputs +GAME( 2003, magslot, 0, magslot, magslot, rbmk_state, empty_init, ROT0, "GMS", "Magic Slot (normal 1.0C)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // needs implementing of 3rd GFX layer, correct GFX decode for 1st layer, inputs