summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2022-02-06 10:06:00 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2022-02-06 10:06:00 +0100
commit051c81e299173f3852cdaa8725d419a24c16e687 (patch)
treeac1357e64a188d899dae733df9e5b7e6a2747c51
parent4eb7813a49c7fb0ca593ec9350dff1f22835de05 (diff)
New machines marked as NOT_WORKING
---------------------------------- Magic Slot (normal 1.0C) [Jorge Silva]
-rw-r--r--src/mame/drivers/rbmk.cpp78
-rw-r--r--src/mame/mame.lst1
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<uint16_t> m_vidram;
required_device<cpu_device> m_maincpu;
- required_device<at89c4051_device> m_mcu;
+ optional_device<at89c4051_device> m_mcu;
required_device<eeprom_serial_93cxx_device> m_eeprom;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_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