summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2017-07-01 13:53:17 -0400
committer AJR <ajrhacker@users.noreply.github.com>2017-07-01 13:53:17 -0400
commitd2a8ac1b4b1a1d344268d355b9ae1e03774d29e6 (patch)
treea5c8370aadd06c0bc49c24a5264dea1a39ddbc2d
parent23b5d6018f6dc57af9a7e9c3fe0d7b6f30388208 (diff)
mappy.cpp: Use LS157 device for DSW2 mux (nw)
-rw-r--r--src/mame/drivers/mappy.cpp160
-rw-r--r--src/mame/includes/mappy.h6
2 files changed, 85 insertions, 81 deletions
diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp
index 9794e777f65..3a3ec8a7d28 100644
--- a/src/mame/drivers/mappy.cpp
+++ b/src/mame/drivers/mappy.cpp
@@ -552,6 +552,7 @@ TODO:
#include "includes/mappy.h"
#include "cpu/m6809/m6809.h"
+#include "machine/74157.h"
#include "machine/watchdog.h"
#include "sound/volt_reg.h"
#include "speaker.h"
@@ -1282,37 +1283,37 @@ static INPUT_PORTS_START( phozon )
PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C ) )
PORT_DIPSETTING( 0x80, DEF_STR( 1C_2C ) )
- PORT_START("DSW2") /* 56XX #1 pins 38-41 multiplexed */
- PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2")
- PORT_DIPSETTING( 0x02, "1" )
- PORT_DIPSETTING( 0x03, "3" )
- PORT_DIPSETTING( 0x01, "4" )
+ PORT_START("DSW2") /* 56XX #1 pins 38-41 multiplexed and interleaved */
+ PORT_DIPNAME( 0x11, 0x11, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:2,1")
+ PORT_DIPSETTING( 0x01, "1" ) // 1 on, 2 off
+ PORT_DIPSETTING( 0x11, "3" )
+ PORT_DIPSETTING( 0x10, "4" ) // 2 on, 1 off
PORT_DIPSETTING( 0x00, "5" )
- PORT_DIPNAME( 0x1c, 0x1c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:3,4,5")
- PORT_DIPSETTING( 0x08, "20k & 80k Only" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x10, "20k, 80k & Every 80k" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x04, "30k Only" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x18, "30k & 60k Only" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x1c, "30k & 100k Only" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00)
-// PORT_DIPSETTING( 0x14, "30k 100k" ) // repeated PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x0c, "30k, 120k & Every 120k" ) PORT_CONDITION("DSW2",0x02,NOTEQUALS,0x00)
- PORT_DIPSETTING( 0x0c, "20k & 80k Only" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_DIPSETTING( 0x08, "30k" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_DIPSETTING( 0x10, "30k, 100k & Every 100k" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_DIPSETTING( 0x1c, "30k & 100k Only" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
-// PORT_DIPSETTING( 0x14, "30k 100k" ) // repeated PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_DIPSETTING( 0x18, "40k & 80k Only" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
- PORT_DIPSETTING( 0x04, "100k Only" ) PORT_CONDITION("DSW2",0x02,EQUALS,0x00)
+ PORT_DIPNAME( 0x62, 0x62, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4,3,5")
+ PORT_DIPSETTING( 0x02, "20k & 80k Only" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00)
+ PORT_DIPSETTING( 0x40, "20k, 80k & Every 80k" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00)
+ PORT_DIPSETTING( 0x20, "30k Only" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00)
+ PORT_DIPSETTING( 0x42, "30k & 60k Only" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00)
+ PORT_DIPSETTING( 0x62, "30k & 100k Only" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00)
+// PORT_DIPSETTING( 0x60, "30k 100k" ) // repeated PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00)
+ PORT_DIPSETTING( 0x22, "30k, 120k & Every 120k" ) PORT_CONDITION("DSW2",0x01,NOTEQUALS,0x00)
+ PORT_DIPSETTING( 0x22, "20k & 80k Only" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00)
+ PORT_DIPSETTING( 0x02, "30k" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00)
+ PORT_DIPSETTING( 0x40, "30k, 100k & Every 100k" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00)
+ PORT_DIPSETTING( 0x62, "30k & 100k Only" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00)
+// PORT_DIPSETTING( 0x60, "30k 100k" ) // repeated PORT_CONDITION("DSW2",0x01,EQUALS,0x00)
+ PORT_DIPSETTING( 0x42, "40k & 80k Only" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00)
+ PORT_DIPSETTING( 0x20, "100k Only" ) PORT_CONDITION("DSW2",0x01,EQUALS,0x00)
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
- PORT_DIPNAME( 0xe0, 0xe0, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:6,7,8")
+ PORT_DIPNAME( 0x8c, 0x8c, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW2:6,8,7")
PORT_DIPSETTING( 0x00, DEF_STR( 3C_1C ) )
- PORT_DIPSETTING( 0x40, DEF_STR( 2C_1C ) )
- PORT_DIPSETTING( 0xe0, DEF_STR( 1C_1C ) )
- PORT_DIPSETTING( 0x20, DEF_STR( 2C_3C ) )
- PORT_DIPSETTING( 0xc0, DEF_STR( 1C_2C ) )
- PORT_DIPSETTING( 0xa0, DEF_STR( 1C_3C ) )
- PORT_DIPSETTING( 0x80, DEF_STR( 1C_6C ) )
- PORT_DIPSETTING( 0x60, DEF_STR( 1C_7C ) )
+ PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x8c, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x04, DEF_STR( 2C_3C ) )
+ PORT_DIPSETTING( 0x88, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0c, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x08, DEF_STR( 1C_6C ) )
+ PORT_DIPSETTING( 0x84, DEF_STR( 1C_7C ) )
INPUT_PORTS_END
@@ -1607,25 +1608,6 @@ GFXDECODE_END
***************************************************************************/
-READ8_MEMBER(mappy_state::dipA_l){ return ioport("DSW1")->read(); } // dips A
-READ8_MEMBER(mappy_state::dipA_h){ return ioport("DSW1")->read() >> 4; } // dips A
-
-READ8_MEMBER(mappy_state::dipB_mux)// dips B
-{
- return ioport("DSW2")->read() >> (4 * m_mux);
-}
-
-READ8_MEMBER(mappy_state::dipB_muxi)// dips B
-{
- // bits are interleaved in Phozon
- return BITSWAP8(ioport("DSW2")->read(),6,4,2,0,7,5,3,1) >> (4 * m_mux);
-}
-
-WRITE8_MEMBER(mappy_state::out_mux)
-{
- m_mux = data & 1;
-}
-
WRITE8_MEMBER(mappy_state::out_lamps)
{
output().set_led_value(0, data & 1);
@@ -1718,11 +1700,15 @@ static MACHINE_CONFIG_START( superpac )
MCFG_NAMCO56XX_IN_3_CB(IOPORT("BUTTONS"))
MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0)
- MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux))
- MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l))
- MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h))
+ MCFG_NAMCO56XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r))
+ MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSW1"))
+ MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4)
MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSW0"))
- MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux))
+ MCFG_NAMCO56XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0)
+
+ MCFG_DEVICE_ADD("dipmux", LS157, 0)
+ MCFG_74157_A_IN_CB(IOPORT("DSW2"))
+ MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( pacnpal )
@@ -1740,11 +1726,15 @@ static MACHINE_CONFIG_START( pacnpal )
MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_lamps))
MCFG_DEVICE_ADD("namcoio_2", NAMCO_59XX, 0)
- MCFG_NAMCO59XX_IN_0_CB(READ8(mappy_state, dipB_mux))
- MCFG_NAMCO59XX_IN_1_CB(READ8(mappy_state, dipA_l))
- MCFG_NAMCO59XX_IN_2_CB(READ8(mappy_state, dipA_h))
+ MCFG_NAMCO59XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r))
+ MCFG_NAMCO59XX_IN_1_CB(IOPORT("DSW1"))
+ MCFG_NAMCO59XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4)
MCFG_NAMCO59XX_IN_3_CB(IOPORT("DSW0"))
- MCFG_NAMCO59XX_OUT_0_CB(WRITE8(mappy_state, out_mux))
+ MCFG_NAMCO59XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0)
+
+ MCFG_DEVICE_ADD("dipmux", LS157, 0)
+ MCFG_74157_A_IN_CB(IOPORT("DSW2"))
+ MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4)
MACHINE_CONFIG_END
@@ -1762,11 +1752,15 @@ static MACHINE_CONFIG_START( grobda )
MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS"))
MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0)
- MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux))
- MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l))
- MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h))
+ MCFG_NAMCO56XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r))
+ MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSW1"))
+ MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4)
MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSW0"))
- MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux))
+ MCFG_NAMCO56XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0)
+
+ MCFG_DEVICE_ADD("dipmux", LS157, 0)
+ MCFG_74157_A_IN_CB(IOPORT("DSW2"))
+ MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4)
/* sound hardware */
MCFG_SOUND_ADD("dac", DAC_4BIT_BINARY_WEIGHTED, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.275) // alternate route to 15XX-related DAC?
@@ -1804,11 +1798,15 @@ static MACHINE_CONFIG_START( phozon )
MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS"))
MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0)
- MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_muxi))
- MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l))
- MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h))
+ MCFG_NAMCO56XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r))
+ MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSW1"))
+ MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4)
MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSW0"))
- MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux))
+ MCFG_NAMCO56XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0)
+
+ MCFG_DEVICE_ADD("dipmux", LS157, 0)
+ MCFG_74157_A_IN_CB(IOPORT("DSW2"))
+ MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4)
/* video hardware */
MCFG_GFXDECODE_ADD("gfxdecode", "palette", phozon)
@@ -1882,11 +1880,15 @@ static MACHINE_CONFIG_START( mappy )
MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS"))
MCFG_DEVICE_ADD("namcoio_2", NAMCO_58XX, 0)
- MCFG_NAMCO58XX_IN_0_CB(READ8(mappy_state, dipB_mux))
- MCFG_NAMCO58XX_IN_1_CB(READ8(mappy_state, dipA_l))
- MCFG_NAMCO58XX_IN_2_CB(READ8(mappy_state, dipA_h))
+ MCFG_NAMCO58XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r))
+ MCFG_NAMCO58XX_IN_1_CB(IOPORT("DSW1"))
+ MCFG_NAMCO58XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4)
MCFG_NAMCO58XX_IN_3_CB(IOPORT("DSW0"))
- MCFG_NAMCO58XX_OUT_0_CB(WRITE8(mappy_state, out_mux))
+ MCFG_NAMCO58XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0)
+
+ MCFG_DEVICE_ADD("dipmux", LS157, 0)
+ MCFG_74157_A_IN_CB(IOPORT("DSW2"))
+ MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4)
MACHINE_CONFIG_END
static MACHINE_CONFIG_START( digdug2 )
@@ -1906,11 +1908,15 @@ static MACHINE_CONFIG_START( digdug2 )
MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS"))
MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0)
- MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux))
- MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l))
- MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h))
+ MCFG_NAMCO56XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r))
+ MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSW1"))
+ MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4)
MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSW0"))
- MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux))
+ MCFG_NAMCO56XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0)
+
+ MCFG_DEVICE_ADD("dipmux", LS157, 0)
+ MCFG_74157_A_IN_CB(IOPORT("DSW2"))
+ MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( todruaga, digdug2 )
@@ -1936,11 +1942,15 @@ static MACHINE_CONFIG_START( motos )
MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_lamps))
MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0)
- MCFG_NAMCO56XX_IN_0_CB(READ8(mappy_state, dipB_mux))
- MCFG_NAMCO56XX_IN_1_CB(READ8(mappy_state, dipA_l))
- MCFG_NAMCO56XX_IN_2_CB(READ8(mappy_state, dipA_h))
+ MCFG_NAMCO56XX_IN_0_CB(DEVREAD8("dipmux", ls157_device, output_r))
+ MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSW1"))
+ MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSW1")) MCFG_DEVCB_RSHIFT(4)
MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSW0"))
- MCFG_NAMCO56XX_OUT_0_CB(WRITE8(mappy_state, out_mux))
+ MCFG_NAMCO56XX_OUT_0_CB(DEVWRITELINE("dipmux", ls157_device, select_w)) MCFG_DEVCB_BIT(0)
+
+ MCFG_DEVICE_ADD("dipmux", LS157, 0)
+ MCFG_74157_A_IN_CB(IOPORT("DSW2"))
+ MCFG_74157_B_IN_CB(IOPORT("DSW2")) MCFG_DEVCB_RSHIFT(4)
MACHINE_CONFIG_END
diff --git a/src/mame/includes/mappy.h b/src/mame/includes/mappy.h
index e74bd66579a..0cecac7c776 100644
--- a/src/mame/includes/mappy.h
+++ b/src/mame/includes/mappy.h
@@ -69,7 +69,6 @@ public:
bitmap_ind16 m_sprite_bitmap;
uint8_t m_scroll;
- int m_mux;
uint8_t m_main_irq_mask;
uint8_t m_sub_irq_mask;
@@ -84,11 +83,6 @@ public:
DECLARE_WRITE8_MEMBER(superpac_flipscreen_w);
DECLARE_READ8_MEMBER(superpac_flipscreen_r);
DECLARE_WRITE8_MEMBER(mappy_scroll_w);
- DECLARE_READ8_MEMBER(dipA_l);
- DECLARE_READ8_MEMBER(dipA_h);
- DECLARE_READ8_MEMBER(dipB_mux);
- DECLARE_READ8_MEMBER(dipB_muxi);
- DECLARE_WRITE8_MEMBER(out_mux);
DECLARE_WRITE8_MEMBER(out_lamps);
TILEMAP_MAPPER_MEMBER(superpac_tilemap_scan);
TILEMAP_MAPPER_MEMBER(mappy_tilemap_scan);