From 2642203698facee8687ab7401cdcc69ba8d031a9 Mon Sep 17 00:00:00 2001 From: Scott Stone Date: Wed, 5 Mar 2014 20:03:01 +0000 Subject: [PATCH] CPS1.c: Willow, Strider and Ghouls and Ghosts have some changed factory setting defaults as stated from manual. Also noted differences in bonus live coverage where applicable. [Tafoid] --- src/mame/drivers/cps1.c | 55 ++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c index 4182b6efac2..f85ecbbf0b8 100644 --- a/src/mame/drivers/cps1.c +++ b/src/mame/drivers/cps1.c @@ -900,8 +900,16 @@ static INPUT_PORTS_START( ghouls ) PORT_DIPSETTING( 0x80, "Game" ) PORT_DIPSETTING( 0x00, DEF_STR( Test ) ) - PORT_START("DSWB") - CPS1_DIFFICULTY_2( "SW(B)" ) + PORT_START("DSWB") /* Manual states default difficulty "B" (2) which differs from the normal macro */ + PORT_DIPNAME( 0x07, 0x05, DEF_STR( Difficulty ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):1,2,3") + PORT_DIPSETTING( 0x04, "1 (Easiest)" ) + PORT_DIPSETTING( 0x05, "2" ) + PORT_DIPSETTING( 0x06, "3" ) + PORT_DIPSETTING( 0x07, "4 (Normal)" ) + PORT_DIPSETTING( 0x03, "5" ) + PORT_DIPSETTING( 0x02, "6" ) + PORT_DIPSETTING( 0x01, "7" ) + PORT_DIPSETTING( 0x00, "8 (Hardest)" ) PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" ) PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):5,6") PORT_DIPSETTING( 0x20, "10K, 30K and every 30K" ) @@ -934,23 +942,20 @@ static INPUT_PORTS_START( ghoulsu ) PORT_MODIFY("DSWB") /* Standard Dip Switches */ - PORT_DIPNAME( 0x07, 0x07, DEF_STR( Difficulty ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):1,2,3") - PORT_DIPSETTING( 0x04, "1 (Easiest)" ) - PORT_DIPSETTING( 0x05, "2" ) - PORT_DIPSETTING( 0x06, "3" ) - PORT_DIPSETTING( 0x07, "4 (Normal)" ) - PORT_DIPSETTING( 0x03, "5" ) - PORT_DIPSETTING( 0x02, "6" ) - PORT_DIPSETTING( 0x01, "7" ) - PORT_DIPSETTING( 0x00, "8 (Hardest)" ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):5,6") + PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(B):5,6") PORT_DIPSETTING( 0x20, "10K, 30K and every 30K" ) PORT_DIPSETTING( 0x10, "20K, 50K and every 70K" ) PORT_DIPSETTING( 0x30, "30K, 60K and every 70K" ) PORT_DIPSETTING( 0x00, "40K, 70K and every 80K" ) +/* Manuals states the following bonus settings + PORT_DIPSETTING( 0x20, "20K, 50K and every 70K" ) + PORT_DIPSETTING( 0x10, "10K, 30K and every 30K" ) + PORT_DIPSETTING( 0x30, "40K, 70K and every 80K" ) + PORT_DIPSETTING( 0x00, "30K, 60K and every 70K" ) +*/ /* Debug Dip Switches */ PORT_DIPNAME( 0x07, 0x07, "Starting Weapon" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x00) PORT_DIPLOCATION("SW(B):1,2,3") PORT_DIPSETTING( 0x07, "Spear" ) @@ -1050,19 +1055,35 @@ static INPUT_PORTS_START( strider ) // PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) ) PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_START("DSWB") - CPS1_DIFFICULTY_2( "SW(B)" ) + PORT_START("DSWB") /* Like Ghouls, Strider manual states "B" (or 2) as the recommended difficulty level. */ + PORT_DIPNAME( 0x07, 0x05, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW(B):1,2,3") + PORT_DIPSETTING( 0x04, "1 (Easiest)" ) + PORT_DIPSETTING( 0x05, "2" ) + PORT_DIPSETTING( 0x06, "3" ) + PORT_DIPSETTING( 0x07, "4 (Normal)" ) + PORT_DIPSETTING( 0x03, "5" ) + PORT_DIPSETTING( 0x02, "6" ) + PORT_DIPSETTING( 0x01, "7" ) + PORT_DIPSETTING( 0x00, "8 (Hardest)" ) /* In 'striderj', bit 3 is stored at 0xff8e77 ($e77,A5) via code at 0x000a2a, but this address is never checked again. In 'strider' and 'stridrjr', this code even doesn't exist ! */ PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("SW(B):4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) // Manual says this is 2c start/1c continue but it PORT_DIPSETTING( 0x00, DEF_STR( On ) ) // doesn't work (see comment above) - PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):5,6") + PORT_DIPNAME( 0x30, 0x00, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW(B):5,6") +/* These show in test mode */ PORT_DIPSETTING( 0x30, "20K, 40K then every 60K" ) PORT_DIPSETTING( 0x20, "30K, 50K then every 70K" ) PORT_DIPSETTING( 0x10, "20K & 60K only" ) PORT_DIPSETTING( 0x00, "30K & 60K only" ) +/* According to manual, these are the proper settings + PORT_DIPSETTING( 0x30, "40K, 70K then every 80K" ) + PORT_DIPSETTING( 0x20, "20K, 50K then every 70K" ) + PORT_DIPSETTING( 0x10, "10k, 30k then every 30k" ) + PORT_DIPSETTING( 0x00, "30K, 60k then every 70k" ) +*/ + PORT_DIPNAME( 0xc0, 0x80, "Internal Diff. on Life Loss" ) PORT_DIPLOCATION("SW(B):7,8") PORT_DIPSETTING( 0xc0, "-3" ) // Check code at 0x00d15a // PORT_DIPSETTING( 0x40, "-1" ) // These switches are not documented in the manual @@ -1161,12 +1182,12 @@ static INPUT_PORTS_START( willow ) PORT_START("DSWC") /* Standard Dip Switches */ - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(C):1,2") + PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(C):1,2") PORT_DIPSETTING( 0x02, "1" ) PORT_DIPSETTING( 0x03, "2" ) PORT_DIPSETTING( 0x01, "3" ) PORT_DIPSETTING( 0x00, "4" ) - PORT_DIPNAME( 0x0c, 0x0c, "Vitality" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(C):3,4") + PORT_DIPNAME( 0x0c, 0x08, "Vitality" ) PORT_CONDITION("DSWC", 0x80, EQUALS, 0x80) PORT_DIPLOCATION("SW(C):3,4") PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x0c, "3" ) PORT_DIPSETTING( 0x08, "4" )