From 051c81e299173f3852cdaa8725d419a24c16e687 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Sun, 6 Feb 2022 10:06:00 +0100 Subject: New machines marked as NOT_WORKING ---------------------------------- Magic Slot (normal 1.0C) [Jorge Silva] --- src/mame/drivers/rbmk.cpp | 78 +++++++++++++++++++++++++++++++++++++++++++++-- src/mame/mame.lst | 1 + 2 files changed, 76 insertions(+), 3 deletions(-) diff --git a/src/mame/drivers/rbmk.cpp b/src/mame/drivers/rbmk.cpp index 212031a2d84..609e5f3536c 100644 --- a/src/mame/drivers/rbmk.cpp +++ b/src/mame/drivers/rbmk.cpp @@ -85,6 +85,8 @@ public: void rbmk(machine_config &config); void rbspm(machine_config &config); + void magslot(machine_config &config); + protected: virtual void video_start() override; @@ -93,7 +95,7 @@ private: required_shared_ptr m_vidram; required_device m_maincpu; - required_device m_mcu; + optional_device m_mcu; required_device m_eeprom; required_device m_gfxdecode; required_device m_palette; @@ -108,6 +110,8 @@ private: void rbmk_mem(address_map &map); void rbspm_mem(address_map &map); + void magslot_mem(address_map &map); + uint16_t unk_r(); uint16_t dip_mux_r(); void dip_mux_w(uint16_t data); @@ -205,6 +209,24 @@ void rbmk_state::rbspm_mem(address_map &map) map(0x9c0000, 0x9c0fff).ram().share("vidram"); } +void rbmk_state::magslot_mem(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x100000, 0x10ffff).ram(); + 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).r(FUNC(rbmk_state::unk_r)); + map(0x620000, 0x620001).portr("IN3"); + map(0x628000, 0x628001).w(FUNC(rbmk_state::unk_w)); + map(0x900000, 0x900fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); + map(0x940000, 0x940fff).ram().share("vidram2"); + map(0x980000, 0x983fff).ram(); + map(0x9c0000, 0x9c0fff).ram().share("vidram"); + map(0x9e0000, 0x9e0fff).ram().share("vidram3"); + //map(0xf00000, 0xf00001).w(FUNC(rbmk_state::eeprom_w)); // wrong? +} + void rbmk_state::mcu_mem(address_map &map) { // map(0x0000, 0x0fff).rom(); @@ -529,6 +551,12 @@ static GFXDECODE_START( gfx_rbmk ) GFXDECODE_ENTRY( "gfx2", 0, rbmk8_layout, 0x100, 16 ) GFXDECODE_END +static GFXDECODE_START( gfx_magslot ) + GFXDECODE_ENTRY( "gfx1", 0, rbmk32_layout, 0x0, 16 ) // wrong + GFXDECODE_ENTRY( "gfx2", 0, rbmk8_layout, 0x100, 16 ) + GFXDECODE_ENTRY( "gfx3", 0, rbmk8_layout, 0x100, 16 ) // wrong colors +GFXDECODE_END + void rbmk_state::video_start() { save_item(NAME(m_tilebank)); @@ -610,6 +638,19 @@ void rbmk_state::rbspm(machine_config &config) // PIC16F84 but no CPU core available } +void rbmk_state::magslot(machine_config &config) +{ + rbmk(config); + m_maincpu->set_addrmap(AS_PROGRAM, &rbmk_state::magslot_mem); + + config.device_remove("mcu"); + + // PIC16F84 but no CPU core available + + m_gfxdecode->set_info(gfx_magslot); +} + + // 实战麻将王 (Shízhàn Májiàng Wáng) ROM_START( rbmk ) ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */ @@ -668,5 +709,36 @@ ROM_START( rbspm ) ROM_LOAD16_WORD_SWAP( "93c46.u51", 0x00, 0x080, NO_DUMP ) ROM_END -GAME( 1998, rbmk, 0, rbmk, rbmk, rbmk_state, empty_init, ROT0, "GMS", "Shizhan Majiang Wang (Version 8.8)", MACHINE_NOT_WORKING ) -GAME( 1998, rbspm, 0, rbspm, rbspm, rbmk_state, empty_init, ROT0, "GMS", "Shizhan Ding Huang Maque (Version 4.1)", MACHINE_NOT_WORKING ) + +// the PCB is slightly different from the others, both layout-wise and component-wyse, but it's mostly compatible. It seems to use one more GFX layer and not to have the 89C51. +ROM_START( magslot ) // All labels have SLOT canceled with a black pen. No sum matches the one on label. + ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 Code */ + ROM_LOAD( "magic 1.0c _ _ _ _.u64", 0x00000, 0x80000, CRC(84544dd7) SHA1(cf10ad3373c2f35f5fa7986be0865f760a454c28) ) // no sum on label, 1xxxxxxxxxxxxxxxxxx = 0x00 + + ROM_REGION( 0x880, "pic", 0 ) // pic is assumed populated under the plastic cover + ROM_LOAD( "pic16f84_code.bin", 0x000, 0x800, NO_DUMP ) + ROM_LOAD( "pic16f84_data.bin", 0x800, 0x080, NO_DUMP ) + + ROM_REGION( 0x080000, "oki", 0 ) + ROM_LOAD( "magic s1.0c ba8d.u83", 0x00000, 0x80000, CRC(46df3564) SHA1(6b740ca1fd839f7e7e35f097457e87d1260a6aaf) ) + + ROM_REGION( 0x200000, "gfx1", 0 ) + ROM_LOAD( "magic a1.0c _ _ _ _.u178", 0x000000, 0x200000, CRC(11028627) SHA1(80b38acab1cd12462d8fc36a9cdce5e5e76f6403) ) // no sum on label, 1xxxxxxxxxxxxxxxxxx = 0x00 + + ROM_REGION( 0x80000, "gfx2", 0 ) + ROM_LOAD( "magic t1.0c ec43.u64", 0x00000, 0x80000, CRC(18df608d) SHA1(753b8090e8fd89e50131a22259ef3280d7e6b282) ) + + ROM_REGION( 0x40000, "gfx3", 0 ) + ROM_LOAD( "magic u1.0c f7f6.u169", 0x00000, 0x40000, CRC(582631d3) SHA1(92d1b767bc7ef15eed6dad599392c17620210678) ) + + ROM_REGION16_BE( 0x80, "eeprom", 0 ) + ROM_LOAD16_WORD_SWAP( "93c46.u51", 0x00, 0x080, NO_DUMP ) +ROM_END + + +// mahjong +GAME( 1998, rbmk, 0, rbmk, rbmk, rbmk_state, empty_init, ROT0, "GMS", "Shizhan Majiang Wang (Version 8.8)", MACHINE_NOT_WORKING ) +GAME( 1998, rbspm, 0, rbspm, rbspm, rbmk_state, empty_init, ROT0, "GMS", "Shizhan Ding Huang Maque (Version 4.1)", MACHINE_NOT_WORKING ) + +// slot, on slightly different PCB +GAME( 2003, magslot, 0, magslot, rbmk, rbmk_state, empty_init, ROT0, "GMS", "Magic Slot (Normal 1.0C)", MACHINE_NOT_WORKING ) // needs implementing of 3rd GFX layer, correct GFX decode, PIC dump and core, inputs diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 6506282d75c..edab228bfe0 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -36382,6 +36382,7 @@ rbislando // B22 (c) 1987 Taito Corporation rbislande // B39 (c) 1988 Taito Corporation @source:rbmk.cpp +magslot // (c) 2003 GMS rbmk // (c) 1998 GMS rbspm // (c) 1998 GMS -- cgit v1.2.3