summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author stephh <stephh@users.noreply.github.com>2008-04-09 05:47:48 +0000
committer stephh <stephh@users.noreply.github.com>2008-04-09 05:47:48 +0000
commit0a3bdaa3ef7730bc5b992a7077024f706a1c5c75 (patch)
tree6db7064d2cc079927cb96a60b301578614d16d0f
parent7800d2bb70989bab6d13c278e1c09afdc30a30cc (diff)
Fixed bug ID 01668 based on etabeta submission.
Checked inputs for all games but 'survival' (Dip Switches still need to be done), so now cocktail mode is correctly supported by 'pleiads' and its clones. Renamed sets : - falcona -> falconz - vautour2 -> vautourz
-rw-r--r--src/mame/drivers/phoenix.c244
-rw-r--r--src/mame/includes/phoenix.h4
-rw-r--r--src/mame/mamedriv.c4
-rw-r--r--src/mame/video/phoenix.c20
4 files changed, 146 insertions, 126 deletions
diff --git a/src/mame/drivers/phoenix.c b/src/mame/drivers/phoenix.c
index 4d689da191f..94debeb4e8b 100644
--- a/src/mame/drivers/phoenix.c
+++ b/src/mame/drivers/phoenix.c
@@ -51,7 +51,7 @@ static ADDRESS_MAP_START( phoenix_memory_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w)
AM_RANGE(0x6000, 0x63ff) AM_WRITE(phoenix_sound_control_a_w)
AM_RANGE(0x6800, 0x6bff) AM_WRITE(phoenix_sound_control_b_w)
- AM_RANGE(0x7000, 0x73ff) AM_READ(phoenix_input_port_0_r) /* IN0 or IN1 */
+ AM_RANGE(0x7000, 0x73ff) AM_READ_PORT("IN0") /* IN0 or IN1 */
AM_RANGE(0x7800, 0x7bff) AM_READ_PORT("DSW0") /* DSW */
ADDRESS_MAP_END
@@ -62,7 +62,7 @@ static ADDRESS_MAP_START( pleiads_memory_map, ADDRESS_SPACE_PROGRAM, 8 )
AM_RANGE(0x5800, 0x5bff) AM_WRITE(phoenix_scroll_w)
AM_RANGE(0x6000, 0x63ff) AM_WRITE(pleiads_sound_control_a_w)
AM_RANGE(0x6800, 0x6bff) AM_WRITE(pleiads_sound_control_b_w)
- AM_RANGE(0x7000, 0x73ff) AM_READ(pleiads_input_port_0_r) /* IN0 or IN1 + protection */
+ AM_RANGE(0x7000, 0x73ff) AM_READ_PORT("IN0") /* IN0 or IN1 + protection */
AM_RANGE(0x7800, 0x7bff) AM_READ_PORT("DSW0") /* DSW */
ADDRESS_MAP_END
@@ -80,50 +80,49 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( phoenix )
- PORT_START_TAG("IN0") /* IN0 */
+ PORT_START_TAG("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(player_input_r, 0)
- PORT_START_TAG("IN1") /* IN1 */
- PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_SPECIAL ) /* comes from IN0 0-2 */
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
-
- PORT_START_TAG("DSW0") /* DSW0 */
- PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:1,2" )
+ PORT_START_TAG("DSW0")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:1,2" )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x01, "4" )
PORT_DIPSETTING( 0x02, "5" )
PORT_DIPSETTING( 0x03, "6" )
- PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:3,4" )
+ PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:3,4" )
PORT_DIPSETTING( 0x00, "3K 30K" )
PORT_DIPSETTING( 0x04, "4K 40K" )
PORT_DIPSETTING( 0x08, "5K 50K" )
PORT_DIPSETTING( 0x0c, "6K 60K" )
- PORT_DIPNAME( 0x10, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:5" )
+ PORT_DIPNAME( 0x10, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:5" )
PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:6" )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:6" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:7" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:7" )
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
PORT_START_TAG("CAB") /* fake port for non-memory mapped dip switch */
- PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION( "SW1:!8" )
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION( "SW1:!8" )
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) )
+
+ PORT_START_TAG("CTRL") /* fake port for multiplexed controls */
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL PORT_CONDITION("CAB",0x01,PORTCOND_EQUALS,0x01)
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL PORT_CONDITION("CAB",0x01,PORTCOND_EQUALS,0x01)
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL PORT_CONDITION("CAB",0x01,PORTCOND_EQUALS,0x01)
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL PORT_CONDITION("CAB",0x01,PORTCOND_EQUALS,0x01)
INPUT_PORTS_END
static INPUT_PORTS_START( phoenixa )
@@ -131,7 +130,7 @@ static INPUT_PORTS_START( phoenixa )
PORT_MODIFY("DSW0")
/* Coinage is backwards from phoenix (Amstar) */
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:5" )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:5" )
PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x10, DEF_STR( 1C_1C ) )
INPUT_PORTS_END
@@ -139,8 +138,8 @@ INPUT_PORTS_END
static INPUT_PORTS_START( phoenixt )
PORT_INCLUDE( phoenix )
-PORT_MODIFY("DSW0")
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:5" )
+ PORT_MODIFY("DSW0")
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:5" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END
@@ -148,33 +147,41 @@ INPUT_PORTS_END
static INPUT_PORTS_START( phoenix3 )
PORT_INCLUDE( phoenix )
+ PORT_MODIFY("IN0")
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
+
PORT_MODIFY("DSW0")
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:5" )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:5" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:6" )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:6" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:7" )
+ PORT_DIPNAME( 0x40, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:7" )
PORT_DIPSETTING( 0x40, "A - 2C/1C B - 1C/3C" )
PORT_DIPSETTING( 0x00, "A - 1C/1C B - 1C/6C" )
INPUT_PORTS_END
static INPUT_PORTS_START( condor )
- PORT_INCLUDE( phoenix )
-
- PORT_MODIFY("DSW0")
- PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:1,2" )
+ PORT_START_TAG("IN0")
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 )
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START2 )
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 )
+ PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(player_input_r, 0)
+
+ PORT_START_TAG("DSW0")
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:1,2" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x01, "3" )
PORT_DIPSETTING( 0x02, "4" )
PORT_DIPSETTING( 0x03, "5" )
- PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:3,4" )
+ PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:3,4" )
PORT_DIPSETTING( 0x00, "Every 6000" )
PORT_DIPSETTING( 0x08, "Every 10000" )
PORT_DIPSETTING( 0x04, "Every 14000" )
PORT_DIPSETTING( 0x0c, "Every 18000" )
- PORT_DIPNAME( 0x70, 0x30, "Fuel Consumption" ) PORT_DIPLOCATION( "SW1:5,6,7" )
+ PORT_DIPNAME( 0x70, 0x30, "Fuel Consumption" ) PORT_DIPLOCATION( "SW1:5,6,7" )
PORT_DIPSETTING( 0x00, "Slowest" )
PORT_DIPSETTING( 0x10, "Slower" )
PORT_DIPSETTING( 0x20, "Slow" )
@@ -183,9 +190,10 @@ static INPUT_PORTS_START( condor )
PORT_DIPSETTING( 0x50, "Fast" )
PORT_DIPSETTING( 0x60, "Faster" )
PORT_DIPSETTING( 0x70, "Fastest" )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_VBLANK )
- PORT_START_TAG("COINAGE")
- PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_B ) )
+ PORT_START_TAG("DSW1")
+ PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION( "SW2:1,2,3,4" )
PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x09, DEF_STR( 2C_2C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
@@ -202,7 +210,7 @@ static INPUT_PORTS_START( condor )
PORT_DIPSETTING( 0x05, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0x06, DEF_STR( 1C_7C ) )
PORT_DIPSETTING( 0x07, DEF_STR( 1C_8C ) )
- PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_A ) )
+ PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION( "SW2:5,6,7,8" )
PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x90, DEF_STR( 2C_2C ) )
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
@@ -219,56 +227,70 @@ static INPUT_PORTS_START( condor )
PORT_DIPSETTING( 0x50, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0x60, DEF_STR( 1C_7C ) )
PORT_DIPSETTING( 0x70, DEF_STR( 1C_8C ) )
+
+ PORT_START_TAG("CAB") /* fake port for non-memory mapped dip switch */
+ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION( "SW1:!8" )
+ PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
+ PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) )
+
+ PORT_START_TAG("CTRL") /* fake port for multiplexed controls */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON2 )
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_CONDITION("CAB",0x01,PORTCOND_EQUALS,0x01)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_COCKTAIL PORT_CONDITION("CAB",0x01,PORTCOND_EQUALS,0x01)
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_COCKTAIL PORT_CONDITION("CAB",0x01,PORTCOND_EQUALS,0x01)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_CONDITION("CAB",0x01,PORTCOND_EQUALS,0x01)
INPUT_PORTS_END
-static INPUT_PORTS_START( falcona )
+static INPUT_PORTS_START( falconz )
PORT_INCLUDE( phoenix )
PORT_MODIFY("DSW0")
- PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:1,2" )
+ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:1,2" )
PORT_DIPSETTING( 0x00, "2" )
PORT_DIPSETTING( 0x01, "3" )
PORT_DIPSETTING( 0x02, "4" )
PORT_DIPSETTING( 0x03, "5" )
- PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:3,4" )
+ PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:3,4" )
PORT_DIPSETTING( 0x00, "3K 30K" )
PORT_DIPSETTING( 0x04, "4K 40K" )
PORT_DIPSETTING( 0x08, "5K 50K" )
PORT_DIPSETTING( 0x0c, "6K 60K" )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:5" )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:5" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:6" )
+ PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:6" )
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:7" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:7" )
PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x40, DEF_STR( 1C_1C ) )
INPUT_PORTS_END
-
static INPUT_PORTS_START( nextfase )
PORT_INCLUDE( phoenix )
PORT_MODIFY("DSW0")
- PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:1,2" )
+ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION( "SW1:1,2" )
PORT_DIPSETTING( 0x00, "1" )
PORT_DIPSETTING( 0x01, "2" )
PORT_DIPSETTING( 0x02, "3" )
PORT_DIPSETTING( 0x03, "4" )
- PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:3,4" )
+ PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:3,4" )
PORT_DIPSETTING( 0x00, "3K 30K" )
PORT_DIPSETTING( 0x04, "4K 40K" )
PORT_DIPSETTING( 0x08, "5K 50K" )
PORT_DIPSETTING( 0x0c, "6K 60K" )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:5" )
+ PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION( "SW1:5" )
PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x60, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:6,7" )
- PORT_DIPSETTING( 0x00, "1C/1C & 1C/2C" )
- PORT_DIPSETTING( 0x20, "2C/3C & 1C/3C" )
- PORT_DIPSETTING( 0x40, "1C/2C & 1C/4C" )
- PORT_DIPSETTING( 0x60, "2C/5C & 1C/5C" )
+ PORT_DIPNAME( 0x60, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION( "SW1:6,7" )
+ PORT_DIPSETTING( 0x00, "A - 1C/1C B - 1C/2C" )
+ PORT_DIPSETTING( 0x20, "A - 2C/3C B - 1C/3C" )
+ PORT_DIPSETTING( 0x40, "A - 1C/2C B - 1C/4C" )
+ PORT_DIPSETTING( 0x60, "A - 2C/5C B - 1C/5C" )
INPUT_PORTS_END
@@ -276,10 +298,10 @@ static INPUT_PORTS_START( pleiads )
PORT_INCLUDE( phoenix )
PORT_MODIFY("IN0")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SPECIAL ) /* Protection. See 0x0552 */
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(pleiads_protection_r, 0) /* Protection. See 0x0552 */
PORT_MODIFY("DSW0")
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "SW1:7" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "SW1:7" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
INPUT_PORTS_END
@@ -288,39 +310,40 @@ static INPUT_PORTS_START( pleiadce )
PORT_INCLUDE( pleiads )
PORT_MODIFY("DSW0")
- PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:3,4" )
+ PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION( "SW1:3,4" )
PORT_DIPSETTING( 0x00, "7K 70K" )
PORT_DIPSETTING( 0x04, "8K 80K" )
PORT_DIPSETTING( 0x08, "9K 90K" )
- /*PORT_DIPSETTING( 0x0c, "INVALID" ) Sets bonus to A000 */
+ /*PORT_DIPSETTING( 0x0c, "INVALID" ) Sets bonus to A000 */
INPUT_PORTS_END
static INPUT_PORTS_START( capitol )
PORT_INCLUDE( phoenix )
PORT_MODIFY("DSW0")
- PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "SW1:7" )
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION( "SW1:7" )
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
INPUT_PORTS_END
+
static INPUT_PORTS_START( survival )
PORT_START_TAG("IN0") /* IN0 */
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT )
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_START_TAG("IN1") /* IN1 */
PORT_BIT( 0x07, IP_ACTIVE_LOW, IPT_SPECIAL ) /* comes from IN0 0-2 */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_COCKTAIL
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_COCKTAIL
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_COCKTAIL
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_COCKTAIL
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_COCKTAIL
PORT_START_TAG("DSW0")
@@ -749,7 +772,31 @@ ROM_START( vautour )
ROM_LOAD( "mmi6301.ic41", 0x0100, 0x0100, CRC(e176b768) SHA1(e2184dd495ed579f10b6da0b78379e02d7a6229f) ) /* palette high bits */
ROM_END
-ROM_START( vautour2 )
+ROM_START( falconz )
+ ROM_REGION( 0x10000, REGION_CPU1, 0 )
+ ROM_LOAD( "f45.bin", 0x0000, 0x0800, CRC(9158b43b) SHA1(222cbcfb3f95d09bb90148813541c2613d8b7e1c) )
+ ROM_LOAD( "f46.bin", 0x0800, 0x0800, CRC(22ddb600) SHA1(9606d11722261990c34b788baae5dc7516ba52d6) )
+ ROM_LOAD( "f47.bin", 0x1000, 0x0800, CRC(cb2838d9) SHA1(332e339475b17d17eeb43a524c5cb3bf9818837a) )
+ ROM_LOAD( "f48.bin", 0x1800, 0x0800, CRC(552cf57a) SHA1(d9d36495f0cb25c1648e0807c8d37daf49bbf0d4) )
+ ROM_LOAD( "f49.bin", 0x2000, 0x0800, CRC(1ff3a982) SHA1(66fb39e7abdf7a9c6e2eb01d41cfe9429781d6aa) )
+ ROM_LOAD( "f50.bin", 0x2800, 0x0800, CRC(8c83bff7) SHA1(3dfb090d7e3a9ae8da882b06e166c48555eaf77c) )
+ ROM_LOAD( "f51.bin", 0x3000, 0x0800, CRC(805ec2e8) SHA1(7e56fc9990eb99512078e2b1e2874fb33b0aa05c) )
+ ROM_LOAD( "f52.bin", 0x3800, 0x0800, CRC(33f3af63) SHA1(f2e2ebdec205360a6fa8ce4bc8cdf15b82b02728) )
+
+ ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
+ ROM_LOAD( "ic23.3d", 0x0000, 0x0800, CRC(3c7e623f) SHA1(e7ff5fc371664af44785c079e92eeb2d8530187b) )
+ ROM_LOAD( "ic24.4d", 0x0800, 0x0800, CRC(59916d3b) SHA1(71aec70a8e096ed1f0c2297b3ae7dca1b8ecc38d) )
+
+ ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
+ ROM_LOAD( "f39.bin", 0x0000, 0x0800, CRC(53c52eb0) SHA1(19624ca359996b77d3c65ef78a7af90eeb092377) )
+ ROM_LOAD( "f40.bin", 0x0800, 0x0800, CRC(eba42f0f) SHA1(378282cb2c4e10c23179ae3c605ae7bf691150f6) )
+
+ ROM_REGION( 0x0200, REGION_PROMS, 0 )
+ ROM_LOAD( "mmi6301.ic40", 0x0000, 0x0100, CRC(79350b25) SHA1(57411be4c1d89677f7919ae295446da90612c8a8) ) /* palette low bits */
+ ROM_LOAD( "mmi6301.ic41", 0x0100, 0x0100, CRC(e176b768) SHA1(e2184dd495ed579f10b6da0b78379e02d7a6229f) ) /* palette high bits */
+ROM_END
+
+ROM_START( vautourz )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "vautour1.bin", 0x0000, 0x0800, CRC(a600f6a4) SHA1(f1aea5ec71da0d0664fb90b87602fe4c4eed2dbe) )
ROM_LOAD( "vautour2.bin", 0x0800, 0x0800, CRC(3699b11a) SHA1(7122685cbfcd75898eaa68f8c5bf87c11df59a3b) )
@@ -821,30 +868,6 @@ ROM_START( griffon )
ROM_LOAD( "mmi6301.ic41", 0x0100, 0x0100, CRC(e176b768) SHA1(e2184dd495ed579f10b6da0b78379e02d7a6229f) ) /* palette high bits */
ROM_END
-ROM_START( falcona )
- ROM_REGION( 0x10000, REGION_CPU1, 0 )
- ROM_LOAD( "f45.bin", 0x0000, 0x0800, CRC(9158b43b) SHA1(222cbcfb3f95d09bb90148813541c2613d8b7e1c) )
- ROM_LOAD( "f46.bin", 0x0800, 0x0800, CRC(22ddb600) SHA1(9606d11722261990c34b788baae5dc7516ba52d6) )
- ROM_LOAD( "f47.bin", 0x1000, 0x0800, CRC(cb2838d9) SHA1(332e339475b17d17eeb43a524c5cb3bf9818837a) )
- ROM_LOAD( "f48.bin", 0x1800, 0x0800, CRC(552cf57a) SHA1(d9d36495f0cb25c1648e0807c8d37daf49bbf0d4) )
- ROM_LOAD( "f49.bin", 0x2000, 0x0800, CRC(1ff3a982) SHA1(66fb39e7abdf7a9c6e2eb01d41cfe9429781d6aa) )
- ROM_LOAD( "f50.bin", 0x2800, 0x0800, CRC(8c83bff7) SHA1(3dfb090d7e3a9ae8da882b06e166c48555eaf77c) )
- ROM_LOAD( "f51.bin", 0x3000, 0x0800, CRC(805ec2e8) SHA1(7e56fc9990eb99512078e2b1e2874fb33b0aa05c) )
- ROM_LOAD( "f52.bin", 0x3800, 0x0800, CRC(33f3af63) SHA1(f2e2ebdec205360a6fa8ce4bc8cdf15b82b02728) )
-
- ROM_REGION( 0x1000, REGION_GFX1, ROMREGION_DISPOSE )
- ROM_LOAD( "ic23.3d", 0x0000, 0x0800, CRC(3c7e623f) SHA1(e7ff5fc371664af44785c079e92eeb2d8530187b) )
- ROM_LOAD( "ic24.4d", 0x0800, 0x0800, CRC(59916d3b) SHA1(71aec70a8e096ed1f0c2297b3ae7dca1b8ecc38d) )
-
- ROM_REGION( 0x1000, REGION_GFX2, ROMREGION_DISPOSE )
- ROM_LOAD( "f39.bin", 0x0000, 0x0800, CRC(53c52eb0) SHA1(19624ca359996b77d3c65ef78a7af90eeb092377) )
- ROM_LOAD( "f40.bin", 0x0800, 0x0800, CRC(eba42f0f) SHA1(378282cb2c4e10c23179ae3c605ae7bf691150f6) )
-
- ROM_REGION( 0x0200, REGION_PROMS, 0 )
- ROM_LOAD( "mmi6301.ic40", 0x0000, 0x0100, CRC(79350b25) SHA1(57411be4c1d89677f7919ae295446da90612c8a8) ) /* palette low bits */
- ROM_LOAD( "mmi6301.ic41", 0x0100, 0x0100, CRC(e176b768) SHA1(e2184dd495ed579f10b6da0b78379e02d7a6229f) ) /* palette high bits */
-ROM_END
-
ROM_START( nextfase )
ROM_REGION( 0x10000, REGION_CPU1, 0 )
ROM_LOAD( "nf01.bin", 0x0000, 0x0800, CRC(b31ce820) SHA1(dfdb17995a14b66d2571c2c8de481d2792f9ce6a) )
@@ -995,7 +1018,7 @@ ROM_END
static DRIVER_INIT( condor )
{
/* additional inputs for coinage */
- memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x5000, 0x5000, 0, 0, input_port_4_r );
+ memory_install_read8_handler(0, ADDRESS_SPACE_PROGRAM, 0x5000, 0x5000, 0, 0, port_tag_to_handler8("DSW1") );
}
static DRIVER_INIT( survival )
@@ -1008,28 +1031,27 @@ static DRIVER_INIT( survival )
-GAME( 1980, phoenix, 0, phoenix, phoenix, 0, ROT90, "Amstar", "Phoenix (Amstar)", GAME_SUPPORTS_SAVE )
-GAME( 1980, phoenixa, phoenix, phoenix, phoenixa, 0, ROT90, "Amstar (Centuri license)", "Phoenix (Centuri), Set 1", GAME_SUPPORTS_SAVE )
-GAME( 1980, phoenixb, phoenix, phoenix, phoenixa, 0, ROT90, "Amstar (Centuri license)", "Phoenix (Centuri), Set 2", GAME_SUPPORTS_SAVE )
-GAME( 1980, phoenixt, phoenix, phoenix, phoenixt, 0, ROT90, "Taito", "Phoenix (Taito)", GAME_SUPPORTS_SAVE )
-GAME( 1980, phoenix3, phoenix, phoenix, phoenix3, 0, ROT90, "bootleg", "Phoenix (T.P.N.)", GAME_SUPPORTS_SAVE )
-GAME( 1981, phoenixc, phoenix, phoenix, phoenixt, 0, ROT90, "bootleg?", "Phoenix (IRECSA, G.G.I Corp)", GAME_SUPPORTS_SAVE )
-
-
-GAME( 1981, condor, phoenix, condor, condor, condor, ROT90, "Sidam (bootleg)", "Condor (bootleg of Phoenix)", GAME_SUPPORTS_SAVE )
+GAME( 1980, phoenix, 0, phoenix, phoenix, 0, ROT90, "Amstar", "Phoenix (Amstar)", GAME_SUPPORTS_SAVE )
+GAME( 1980, phoenixa, phoenix, phoenix, phoenixa, 0, ROT90, "Amstar (Centuri license)", "Phoenix (Centuri, set 1)", GAME_SUPPORTS_SAVE )
+GAME( 1980, phoenixb, phoenix, phoenix, phoenixa, 0, ROT90, "Amstar (Centuri license)", "Phoenix (Centuri, set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1980, phoenixt, phoenix, phoenix, phoenixt, 0, ROT90, "Taito", "Phoenix (Taito)", GAME_SUPPORTS_SAVE )
+GAME( 1980, phoenix3, phoenix, phoenix, phoenix3, 0, ROT90, "bootleg", "Phoenix (T.P.N.)", GAME_SUPPORTS_SAVE )
+GAME( 1981, phoenixc, phoenix, phoenix, phoenixt, 0, ROT90, "bootleg?", "Phoenix (IRECSA, G.G.I Corp)", GAME_SUPPORTS_SAVE )
+GAME( 1981, condor, phoenix, condor, condor, condor, ROT90, "Sidam (bootleg)", "Condor (bootleg of Phoenix)", GAME_SUPPORTS_SAVE )
// the following 2 were common bootlegs in england & france respectively
-GAME( 1980, falcon, phoenix, phoenix, phoenixt, 0, ROT90, "bootleg", "Falcon (bootleg of Phoenix) (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, vautour, phoenix, phoenix, phoenixt, 0, ROT90, "Jeutel (bootleg)", "Vautour (bootleg of Phoenix) (set 1)", GAME_SUPPORTS_SAVE )
-GAME( 1980, vautour2, phoenix, condor, condor, condor, ROT90, "bootleg", "Vautour (bootleg of Phoenix) (set 2)", GAME_SUPPORTS_SAVE )
-// fenix is an italian bootleg based on vautour
-GAME( 1980, fenix, phoenix, condor, condor, condor, ROT90, "bootleg", "Fenix (bootleg of Phoenix)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
-GAME( 1980, griffon, phoenix, condor, condor, condor, ROT90, "Videotron (bootleg)", "Griffon (bootleg of Phoenix)", GAME_SUPPORTS_SAVE )
-GAME( 1980, falcona, phoenix, condor, falcona, 0, ROT90, "bootleg", "Falcon (bootleg of Phoenix) (set 2)", GAME_SUPPORTS_SAVE )
+GAME( 1980, falcon, phoenix, phoenix, phoenixt, 0, ROT90, "bootleg", "Falcon (bootleg of Phoenix) (8085A CPU)", GAME_SUPPORTS_SAVE )
+GAME( 1980, vautour, phoenix, phoenix, phoenixt, 0, ROT90, "Jeutel (bootleg)", "Vautour (bootleg of Phoenix) (8085A CPU)", GAME_SUPPORTS_SAVE )
+GAME( 1980, falconz, phoenix, condor, falconz, 0, ROT90, "bootleg", "Falcon (bootleg of Phoenix) (Z80 CPU)", GAME_SUPPORTS_SAVE )
+GAME( 1980, vautourz, phoenix, condor, condor, condor, ROT90, "bootleg", "Vautour (bootleg of Phoenix) (Z80 CPU)", GAME_SUPPORTS_SAVE )
+// fenix is an italian bootleg based on vautourz
+GAME( 1980, fenix, phoenix, condor, condor, condor, ROT90, "bootleg", "Fenix (bootleg of Phoenix)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
+GAME( 1980, griffon, phoenix, condor, condor, condor, ROT90, "Videotron (bootleg)", "Griffon (bootleg of Phoenix)", GAME_SUPPORTS_SAVE )
// nextfase is a spanish bootleg
-GAME( 1981, nextfase, phoenix, phoenix, nextfase, 0, ROT90, "Petaco S.A. (bootleg)","Next Fase (bootleg of Phoenix)", GAME_SUPPORTS_SAVE )
+GAME( 1981, nextfase, phoenix, phoenix, nextfase, 0, ROT90, "Petaco S.A. (bootleg)", "Next Fase (bootleg of Phoenix)", GAME_SUPPORTS_SAVE )
+
+GAME( 1981, pleiads, 0, pleiads, pleiads, 0, ROT90, "Tehkan", "Pleiads (Tehkan)", GAME_IMPERFECT_COLORS )
+GAME( 1981, pleiadbl, pleiads, pleiads, pleiads, 0, ROT90, "bootleg", "Pleiads (bootleg)", GAME_IMPERFECT_COLORS )
+GAME( 1981, pleiadce, pleiads, pleiads, pleiadce, 0, ROT90, "Tehkan (Centuri license)", "Pleiads (Centuri)", GAME_IMPERFECT_COLORS )
+GAME( 1981, capitol, pleiads, phoenix, capitol, 0, ROT90, "Universal Video Spiel", "Capitol", GAME_IMPERFECT_COLORS )
-GAME( 1981, pleiads, 0, pleiads, pleiads, 0, ROT90, "Tehkan", "Pleiads (Tehkan)", GAME_IMPERFECT_COLORS )
-GAME( 1981, pleiadbl, pleiads, pleiads, pleiads, 0, ROT90, "bootleg", "Pleiads (bootleg)", GAME_IMPERFECT_COLORS )
-GAME( 1981, pleiadce, pleiads, pleiads, pleiadce, 0, ROT90, "Tehkan (Centuri license)", "Pleiads (Centuri)", GAME_IMPERFECT_COLORS )
-GAME( 1981, capitol, pleiads, phoenix, capitol, 0, ROT90, "Universal Video Spiel", "Capitol", GAME_IMPERFECT_COLORS )
-GAME( 1982, survival, 0, survival, survival, survival, ROT90, "Rock-ola", "Survival", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1982, survival, 0, survival, survival, survival, ROT90, "Rock-ola", "Survival", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
diff --git a/src/mame/includes/phoenix.h b/src/mame/includes/phoenix.h
index 0227b4856f8..f908f72d738 100644
--- a/src/mame/includes/phoenix.h
+++ b/src/mame/includes/phoenix.h
@@ -63,8 +63,8 @@ WRITE8_HANDLER( phoenix_videoreg_w );
WRITE8_HANDLER( pleiads_videoreg_w );
WRITE8_HANDLER( phoenix_scroll_w );
-READ8_HANDLER( phoenix_input_port_0_r );
-READ8_HANDLER( pleiads_input_port_0_r );
+CUSTOM_INPUT( player_input_r );
+CUSTOM_INPUT( pleiads_protection_r );
READ8_HANDLER( survival_input_port_0_r );
READ8_HANDLER( survival_protection_r );
diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c
index 6844fbc79df..15233b5773d 100644
--- a/src/mame/mamedriv.c
+++ b/src/mame/mamedriv.c
@@ -548,9 +548,9 @@ const game_driver * const drivers[] =
DRIVER( fenix ) /* bootleg */
DRIVER( falcon ) /* bootleg */
DRIVER( vautour ) /* bootleg (Jeutel) */
- DRIVER( vautour2 ) /* bootleg */
+ DRIVER( falconz ) /* bootleg */
+ DRIVER( vautourz ) /* bootleg */
DRIVER( griffon ) /* bootleg (Videotron) */
- DRIVER( falcona ) /* bootleg */
DRIVER( nextfase ) /* bootleg */
DRIVER( pleiads ) /* (c) 1981 Tehkan */
DRIVER( pleiadbl ) /* bootleg */
diff --git a/src/mame/video/phoenix.c b/src/mame/video/phoenix.c
index f27510dc0e8..a09c2805a82 100644
--- a/src/mame/video/phoenix.c
+++ b/src/mame/video/phoenix.c
@@ -234,7 +234,7 @@ WRITE8_HANDLER( phoenix_videoreg_w )
videoram_pg_index = data & 1;
memory_set_bank(1, videoram_pg_index);
- cocktail_mode = videoram_pg_index && (input_port_read_indexed(machine, 3) & 0x01);
+ cocktail_mode = videoram_pg_index && (input_port_read(machine, "CAB") & 0x01);
tilemap_set_flip(ALL_TILEMAPS, cocktail_mode ? (TILEMAP_FLIPX | TILEMAP_FLIPY) : 0);
tilemap_mark_all_tiles_dirty(ALL_TILEMAPS);
@@ -257,7 +257,7 @@ WRITE8_HANDLER( pleiads_videoreg_w )
videoram_pg_index = data & 1;
memory_set_bank(1, videoram_pg_index);
- cocktail_mode = videoram_pg_index && (input_port_read_indexed(machine, 3) & 0x01);
+ cocktail_mode = videoram_pg_index && (input_port_read(machine, "CAB") & 0x01);
tilemap_set_flip(ALL_TILEMAPS, cocktail_mode ? (TILEMAP_FLIPX | TILEMAP_FLIPY) : 0);
tilemap_mark_all_tiles_dirty(ALL_TILEMAPS);
@@ -290,35 +290,33 @@ WRITE8_HANDLER( phoenix_scroll_w )
}
-READ8_HANDLER( phoenix_input_port_0_r )
+CUSTOM_INPUT( player_input_r )
{
if (cocktail_mode)
- return (input_port_read(machine, "IN0") & 0x07) | (input_port_read(machine, "IN1") & 0xf8);
+ return (input_port_read(machine, "CTRL") & 0xf0) >> 4;
else
- return input_port_read(machine, "IN0");
+ return (input_port_read(machine, "CTRL") & 0x0f) >> 0;
}
-READ8_HANDLER( pleiads_input_port_0_r )
+CUSTOM_INPUT( pleiads_protection_r )
{
- int ret = input_port_read(machine, "IN0") & 0xf7;
-
/* handle Pleiads protection */
switch (pleiads_protection_question)
{
case 0x00:
case 0x20:
/* Bit 3 is 0 */
+ return 0;
break;
case 0x0c:
case 0x30:
/* Bit 3 is 1 */
- ret |= 0x08;
+ return 1;
break;
default:
logerror("Unknown protection question %02X at %04X\n", pleiads_protection_question, activecpu_get_pc());
+ return 0;
}
-
- return ret;
}
READ8_HANDLER( survival_input_port_0_r )