summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cps1.c
diff options
context:
space:
mode:
author Scott Stone <tafoid@users.noreply.github.com>2014-03-05 20:03:01 +0000
committer Scott Stone <tafoid@users.noreply.github.com>2014-03-05 20:03:01 +0000
commit2642203698facee8687ab7401cdcc69ba8d031a9 (patch)
tree0afa7915da0bcc7e00333c09b426c5bcde8192f8 /src/mame/drivers/cps1.c
parentf6b0b18ad4f8eaba97f04a79322b8564f66ced9a (diff)
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]
Diffstat (limited to 'src/mame/drivers/cps1.c')
-rw-r--r--src/mame/drivers/cps1.c55
1 files 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" )