diff options
author | RobertoFresca <robbie@mamedev.org> | 2017-12-11 03:16:31 -0300 |
---|---|---|
committer | RobertoFresca <robbie@mamedev.org> | 2017-12-11 03:16:31 -0300 |
commit | 0a8d742f5807d93ba6b293f24212952bb7835471 (patch) | |
tree | 1c4880c52a267835de6a8bb71722ad2d6ffc5705 | |
parent | 47960fc1a305cd0a42939c6435fb6e07b8706ea9 (diff) |
New WORKING clones
--------------------
Slot (unknown bootleg?) [Alessandro Ghirardi, Lorenzo Fongaro]
-rw-r--r-- | src/mame/drivers/murogmbl.cpp | 179 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
2 files changed, 178 insertions, 2 deletions
diff --git a/src/mame/drivers/murogmbl.cpp b/src/mame/drivers/murogmbl.cpp index b94bb13b192..6b5fd170e6a 100644 --- a/src/mame/drivers/murogmbl.cpp +++ b/src/mame/drivers/murogmbl.cpp @@ -1,6 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Roberto Zandona' -/* Unknown - Poker (morugem +/* Unknown - Poker (morugem bootleg) + Unknown - Slot driver by Roberto Zandona' thanks to Angelo Salese for some precious advice @@ -65,6 +66,27 @@ public: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; +class slotunbl_state : public driver_device +{ +public: + slotunbl_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), + m_video(*this, "video") { } + + required_device<cpu_device> m_maincpu; + required_device<gfxdecode_device> m_gfxdecode; + required_device<palette_device> m_palette; + + required_shared_ptr<uint8_t> m_video; + + virtual void video_start() override; + DECLARE_PALETTE_INIT(slotunbl); + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); +}; PALETTE_INIT_MEMBER(murogmbl_state, murogmbl) { @@ -92,8 +114,34 @@ PALETTE_INIT_MEMBER(murogmbl_state, murogmbl) } } +PALETTE_INIT_MEMBER(slotunbl_state, slotunbl) +{ + const uint8_t *color_prom = memregion("proms")->base(); + int bit0, bit1, bit2 , r, g, b; + int i; + + for (i = 0; i < 0x20; ++i) + { + bit0 = (color_prom[0] >> 0) & 0x01; + bit1 = (color_prom[0] >> 1) & 0x01; + bit2 = (color_prom[0] >> 2) & 0x01; + r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + bit0 = (color_prom[0] >> 3) & 0x01; + bit1 = (color_prom[0] >> 4) & 0x01; + bit2 = (color_prom[0] >> 5) & 0x01; + g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + bit0 = 0; + bit1 = (color_prom[0] >> 6) & 0x01; + bit2 = (color_prom[0] >> 7) & 0x01; + b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; + + palette.set_pen_color(i, rgb_t(r, g, b)); + color_prom++; + } +} + static ADDRESS_MAP_START( murogmbl_map, AS_PROGRAM, 8, murogmbl_state ) - AM_RANGE(0x0000, 0x1fff) AM_ROM + AM_RANGE(0x0000, 0x1fFf) AM_ROM AM_RANGE(0x4000, 0x43ff) AM_RAM AM_RANGE(0x4800, 0x4bff) AM_RAM AM_RANGE(0x5800, 0x5bff) AM_RAM AM_SHARE("video") @@ -104,10 +152,26 @@ static ADDRESS_MAP_START( murogmbl_map, AS_PROGRAM, 8, murogmbl_state ) AM_RANGE(0x7800, 0x7800) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* read is always discarded */ ADDRESS_MAP_END +static ADDRESS_MAP_START( slotunbl_map, AS_PROGRAM, 8, slotunbl_state ) + AM_RANGE(0x0000, 0x1fFf) AM_ROM + AM_RANGE(0x4000, 0x43ff) AM_RAM + AM_RANGE(0x4800, 0x4fff) AM_RAM + AM_RANGE(0x5000, 0x53ff) AM_RAM AM_SHARE("video") +// AM_RANGE(0x5400, 0x5fff) AM_RAM + AM_RANGE(0x6000, 0x6000) AM_READ_PORT("IN0") + AM_RANGE(0x6800, 0x6800) AM_READ_PORT("DSW") + AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN1") + AM_RANGE(0x7800, 0x7800) AM_READNOP AM_DEVWRITE("dac", dac_byte_interface, write) /* read is always discarded */ +ADDRESS_MAP_END + void murogmbl_state::video_start() { } +void slotunbl_state::video_start() +{ +} + uint32_t murogmbl_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { gfx_element *gfx = m_gfxdecode->gfx(0); @@ -128,6 +192,26 @@ uint32_t murogmbl_state::screen_update(screen_device &screen, bitmap_ind16 &bitm return 0; } +uint32_t slotunbl_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + gfx_element *gfx = m_gfxdecode->gfx(0); + int count = 0; + + int y, x; + + for (y = 0; y < 32; y++) + { + for (x = 0; x < 32; x++) + { + int tile = m_video[count]; + gfx->opaque(bitmap,cliprect, tile, 0, 0, 0, x * 8, y * 8); + + count++; + } + } + return 0; +} + static INPUT_PORTS_START( murogmbl ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_CANCEL ) PORT_NAME("Clear") @@ -176,6 +260,54 @@ static INPUT_PORTS_START( murogmbl ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END +static INPUT_PORTS_START( slotunbl ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_CANCEL ) PORT_NAME("Clear") + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_GAMBLE_BET ) PORT_NAME("Replay") + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_GAMBLE_DEAL ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_POKER_HOLD5 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Coin clear") PORT_CODE(KEYCODE_S) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_NAME("Coin 1") + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_NAME("Coin 2") + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_POKER_HOLD1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_POKER_HOLD2 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_POKER_HOLD3 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_POKER_HOLD4 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_START("DSW") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x08, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x08, "10 credits" ) + PORT_DIPSETTING( 0x00, "5 credits" ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00, DEF_STR( On ) ) +INPUT_PORTS_END + static const gfx_layout layout8x8x2 = { 8,8, @@ -193,6 +325,10 @@ static GFXDECODE_START( murogmbl ) GFXDECODE_ENTRY( "gfx1", 0, layout8x8x2, 0x0, 1 ) GFXDECODE_END +static GFXDECODE_START( slotunbl ) + GFXDECODE_ENTRY( "gfx1", 0, layout8x8x2, 0x0, 1 ) +GFXDECODE_END + static MACHINE_CONFIG_START( murogmbl ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 1000000) /* Z80? */ @@ -219,8 +355,32 @@ static MACHINE_CONFIG_START( murogmbl ) MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END +static MACHINE_CONFIG_START( slotunbl ) + /* basic machine hardware */ + MCFG_CPU_ADD("maincpu", Z80, 1000000) /* Z80? */ + MCFG_CPU_PROGRAM_MAP(slotunbl_map) + + MCFG_GFXDECODE_ADD("gfxdecode", "palette", slotunbl) + /* video hardware */ + MCFG_SCREEN_ADD("screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(60) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) + MCFG_SCREEN_SIZE(64*8, 32*8) + MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1) + MCFG_SCREEN_UPDATE_DRIVER(slotunbl_state, screen_update) + MCFG_SCREEN_PALETTE("palette") + + MCFG_PALETTE_ADD("palette", 0x100) + MCFG_PALETTE_INIT_OWNER(slotunbl_state, slotunbl) + + MCFG_SPEAKER_STANDARD_MONO("speaker") + MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) // unknown DAC + MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) + MCFG_SOUND_ROUTE_EX(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE_EX(0, "dac", -1.0, DAC_VREF_NEG_INPUT) +MACHINE_CONFIG_END + ROM_START(murogmbl) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD("2532.5e", 0x0000, 0x1000, CRC(093d4560) SHA1(d5401b5f7a2ebe5099fefc5b09f8710886e243b2) ) @@ -234,4 +394,19 @@ ROM_START(murogmbl) ROM_LOAD( "74s288.a8", 0x0000, 0x0020, CRC(fc35201c) SHA1(4549e228c48992e0d10957f029b89a547392e72b) ) ROM_END +ROM_START(slotunbl) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD("2532.e7", 0x0000, 0x1000, CRC(031929a7) SHA1(a140e1450b6196bbe9f130e7f3b7cfe2f876b86d) ) + ROM_LOAD("2532.e7", 0x1000, 0x1000, CRC(031929a7) SHA1(a140e1450b6196bbe9f130e7f3b7cfe2f876b86d) ) + + ROM_REGION( 0x1000, "gfx1", 0 ) + ROM_LOAD("2516.d3", 0x0000, 0x0800, CRC(708764d8) SHA1(f914ae3318558c2530f007a427ec98a529984bb4) ) + ROM_LOAD("2516.d4", 0x0800, 0x0800, CRC(2cffb600) SHA1(d7c8ea6395e9cba43b9fe0cb9ddf45b96c442544) ) + + ROM_REGION( 0x0020, "proms", 0 ) + ROM_LOAD( "74s288.a8", 0x0000, 0x0020, NO_DUMP ) +ROM_END + GAME( 1982, murogmbl, murogem, murogmbl, murogmbl, murogmbl_state, 0, ROT0, "bootleg?", "Muroge Monaco (bootleg?)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) + +GAME( 1982, slotunbl, 0, slotunbl, slotunbl, slotunbl_state, 0, ROT0, "bootleg?", "Slot (unknown bootleg?)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 466fa797377..812b478211d 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -28313,6 +28313,7 @@ murogemb // ??? @source:murogmbl.cpp murogmbl // ??? +slotunbl // ??? @source:mustache.cpp mustache // (c) 1987 March |