From d2a8ac1b4b1a1d344268d355b9ae1e03774d29e6 Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 1 Jul 2017 13:53:17 -0400 Subject: mappy.cpp: Use LS157 device for DSW2 mux (nw) --- src/mame/drivers/mappy.cpp | 160 ++++++++++++++++++++++++--------------------- src/mame/includes/mappy.h | 6 -- 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); -- cgit v1.2.3