diff options
Diffstat (limited to 'src/mame/drivers/brkthru.c')
-rw-r--r-- | src/mame/drivers/brkthru.c | 200 |
1 files changed, 76 insertions, 124 deletions
diff --git a/src/mame/drivers/brkthru.c b/src/mame/drivers/brkthru.c index e0d7124c93b..bbc25c5d4e5 100644 --- a/src/mame/drivers/brkthru.c +++ b/src/mame/drivers/brkthru.c @@ -43,6 +43,9 @@ The test routine is at F000 Sound: YM2203 and YM3526 driven by 6809. Sound added by Bryan McPhail, 1/4/98. +2008-07 +Dip locations verified with manual for brkthru (US conv. kit) and darwin + ***************************************************************************/ #include "driver.h" @@ -102,10 +105,10 @@ static ADDRESS_MAP_START( brkthru_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0c00, 0x0fff) AM_RAM_WRITE(brkthru_bgram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size) AM_RANGE(0x1000, 0x10ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) AM_RANGE(0x1100, 0x17ff) AM_RAM - AM_RANGE(0x1800, 0x1800) AM_READ(input_port_0_r) /* player controls, player start */ - AM_RANGE(0x1801, 0x1801) AM_READ(input_port_1_r) /* cocktail player controls */ - AM_RANGE(0x1802, 0x1802) AM_READ(input_port_3_r) /* DSW 0 */ - AM_RANGE(0x1803, 0x1803) AM_READ(input_port_2_r) /* coin input & DSW */ + AM_RANGE(0x1800, 0x1800) AM_READ_PORT("P1") + AM_RANGE(0x1801, 0x1801) AM_READ_PORT("P2") + AM_RANGE(0x1802, 0x1802) AM_READ_PORT("DSW1") + AM_RANGE(0x1803, 0x1803) AM_READ_PORT("DSW2/COIN") AM_RANGE(0x1800, 0x1801) AM_WRITE(brkthru_1800_w) /* bg scroll and color, ROM bank selection, flip screen */ AM_RANGE(0x1802, 0x1802) AM_WRITE(brkthru_soundlatch_w) AM_RANGE(0x1803, 0x1803) AM_WRITE(brkthru_1803_w) /* NMI enable, + ? */ @@ -121,10 +124,10 @@ static ADDRESS_MAP_START( darwin_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x1c00, 0x1fff) AM_RAM_WRITE(brkthru_bgram_w) AM_BASE(&videoram) AM_SIZE(&videoram_size) AM_RANGE(0x0000, 0x00ff) AM_RAM AM_BASE(&spriteram) AM_SIZE(&spriteram_size) AM_RANGE(0x0100, 0x01ff) AM_WRITE(SMH_NOP) /*tidyup, nothing realy here?*/ - AM_RANGE(0x0800, 0x0800) AM_READ(input_port_0_r) /* player controls, player start */ - AM_RANGE(0x0801, 0x0801) AM_READ(input_port_1_r) /* cocktail player controls */ - AM_RANGE(0x0802, 0x0802) AM_READ(input_port_3_r) /* DSW 0 */ - AM_RANGE(0x0803, 0x0803) AM_READ(input_port_2_r) /* coin input & DSW */ + AM_RANGE(0x0800, 0x0800) AM_READ_PORT("P1") + AM_RANGE(0x0801, 0x0801) AM_READ_PORT("P2") + AM_RANGE(0x0802, 0x0802) AM_READ_PORT("DSW1") + AM_RANGE(0x0803, 0x0803) AM_READ_PORT("DSW2/COIN") AM_RANGE(0x0800, 0x0801) AM_WRITE(brkthru_1800_w) /* bg scroll and color, ROM bank selection, flip screen */ AM_RANGE(0x0802, 0x0802) AM_WRITE(brkthru_soundlatch_w) AM_RANGE(0x0803, 0x0803) AM_WRITE(darwin_0803_w) /* NMI enable, + ? */ @@ -146,166 +149,115 @@ ADDRESS_MAP_END -#define COMMON_IN0\ - PORT_START_TAG("IN0")\ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )\ - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 )\ - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY\ - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY\ - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY\ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY\ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )\ +static INPUT_PORTS_START( brkthru ) + PORT_START_TAG("P1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) -#define COMMON_IN1\ - PORT_START_TAG("IN1")\ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL\ - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL\ - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL\ - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL\ - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL\ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL\ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )\ + PORT_START_TAG("P2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK ) /* used only by the self test */ -static INPUT_PORTS_START( brkthru ) - COMMON_IN0 - COMMON_IN1 - - PORT_START_TAG("IN2") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x02, "2" ) - PORT_DIPSETTING( 0x03, "3" ) - PORT_DIPSETTING( 0x01, "5" ) - PORT_DIPSETTING( 0x00, "99 (Cheat)") - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) - PORT_DIPSETTING( 0x00, "20000 Points Only" ) - PORT_DIPSETTING( 0x04, "10000/20000 Points" ) - PORT_DIPSETTING( 0x0c, "20000/30000 Points" ) - PORT_DIPSETTING( 0x08, "20000/40000 Points" ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) ) - PORT_DIPSETTING( 0x00, DEF_STR( No ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED(coin_inserted, 0) /* Manual says Picture Flip=On, Normal=Off */ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED(coin_inserted, 0) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_CHANGED(coin_inserted, 0) - - PORT_START_TAG("DSW0") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) + PORT_START_TAG("DSW1") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:3,4") PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x10, 0x10, "Enemy Vehicles" ) + PORT_DIPNAME( 0x10, 0x10, "Enemy Vehicles" ) PORT_DIPLOCATION("SW1:5") PORT_DIPSETTING( 0x10, "Slow" ) PORT_DIPSETTING( 0x00, "Fast" ) - PORT_DIPNAME( 0x20, 0x20, "Enemy Bullets" ) + PORT_DIPNAME( 0x20, 0x20, "Enemy Bullets" ) PORT_DIPLOCATION("SW1:6") PORT_DIPSETTING( 0x20, "Slow" ) PORT_DIPSETTING( 0x00, "Fast" ) - PORT_DIPNAME( 0x40, 0x00, "Control Panel" ) - PORT_DIPSETTING( 0x40, "1 Player" ) - PORT_DIPSETTING( 0x00, "2 Players" ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) ) -INPUT_PORTS_END - -static INPUT_PORTS_START( brkthruj ) - COMMON_IN0 - COMMON_IN1 - - PORT_START_TAG("IN2") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) + PORT_DIPNAME( 0x40, 0x00, "Control Panel" ) PORT_DIPLOCATION("SW1:7") + PORT_DIPSETTING( 0x40, "1 Player" ) + PORT_DIPSETTING( 0x00, "2 Players" ) + PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:8") + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) ) + + PORT_START_TAG("DSW2/COIN") + PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1,2") PORT_DIPSETTING( 0x02, "2" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPSETTING( 0x01, "5" ) PORT_DIPSETTING( 0x00, "99 (Cheat)") - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:3,4") PORT_DIPSETTING( 0x00, "20000 Points Only" ) PORT_DIPSETTING( 0x04, "10000/20000 Points" ) PORT_DIPSETTING( 0x0c, "20000/30000 Points" ) PORT_DIPSETTING( 0x08, "20000/40000 Points" ) - PORT_SERVICE( 0x10, IP_ACTIVE_LOW ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED(coin_inserted, 0) /* Manual says Pitcure Flip=On, Normal=Off */ + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:5") /* Manual says ALWAYS OFF */ + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x10, DEF_STR( Yes ) ) + /* According to the manual, bit 5 should control Flip Screen */ +// PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:6") +// PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) +// PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + /* SW2:7,8 ALWAYS OFF according to the manual */ + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED(coin_inserted, 0) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED(coin_inserted, 0) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_CHANGED(coin_inserted, 0) +INPUT_PORTS_END - PORT_START_TAG("DSW0") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x10, 0x10, "Enemy Vehicles" ) - PORT_DIPSETTING( 0x10, "Slow" ) - PORT_DIPSETTING( 0x00, "Fast" ) - PORT_DIPNAME( 0x20, 0x20, "Enemy Bullets" ) - PORT_DIPSETTING( 0x20, "Slow" ) - PORT_DIPSETTING( 0x00, "Fast" ) - PORT_DIPNAME( 0x40, 0x00, "Control Panel" ) - PORT_DIPSETTING( 0x40, "1 Player" ) - PORT_DIPSETTING( 0x00, "2 Players" ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) ) +static INPUT_PORTS_START( brkthruj ) + PORT_INCLUDE( brkthru ) + + PORT_MODIFY("DSW2/COIN") + PORT_SERVICE_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:5" ) INPUT_PORTS_END static INPUT_PORTS_START( darwin ) - COMMON_IN0 - COMMON_IN1 + PORT_INCLUDE( brkthru ) - PORT_START_TAG("IN2") /* modified by Shingo Suzuki 1999/11/02 */ - PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) + PORT_MODIFY("DSW1") + PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "SW1:5" ) /* Manual says must be OFF */ + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:6") + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:7") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW1:8" ) /* Manual says must be OFF */ + + PORT_MODIFY("DSW2/COIN") /* modified by Shingo Suzuki 1999/11/02 */ + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:1") PORT_DIPSETTING( 0x01, "3" ) PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Bonus_Life ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:2") PORT_DIPSETTING( 0x02, "20k, 50k and every 50k" ) PORT_DIPSETTING( 0x00, "30k, 80k and every 80k" ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:3,4") PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x08, DEF_STR( Medium ) ) PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) ) -// PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) ) + /* According to the manual, bit 5 should control Flip Screen */ +// PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:6") // PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) // PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + /* SW2:5,7,8 ALWAYS OFF according to the manual */ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_CHANGED(coin_inserted, 0) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_CHANGED(coin_inserted, 0) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_CHANGED(coin_inserted, 0) - - PORT_START_TAG("DSW0") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, 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 |