mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
mappy.cpp: Use LS157 device for DSW2 mux (nw)
This commit is contained in:
parent
23b5d6018f
commit
d2a8ac1b4b
@ -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
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user