Checked, via Z80 code analysis, inputs and Dip Switches for the following games in snk.c driver :

- gwar, gwarj, gwara, gwarb
  - chopper, choppera, chopperb, legofair
  - tdfever, tdfeverj, tdfever2
  - fsoccer, fsoccerj, fsoccerb
This commit is contained in:
stephh 2008-10-07 22:55:55 +00:00
parent f6ef599f4d
commit 486d9c32c0

View File

@ -45,6 +45,7 @@ Credits (in alphabetical order)
Notes: Notes:
------ ------
- How to enter test mode: - How to enter test mode:
1983 marvins: n/a 1983 marvins: n/a
1984 madcrash: keep F2 pressed during boot 1984 madcrash: keep F2 pressed during boot
@ -200,6 +201,9 @@ Notes:
(a continuous scale is played by the Y8950). Taking the YM3526 out appears to (a continuous scale is played by the Y8950). Taking the YM3526 out appears to
fix the problem since all game sounds are apparently played by the Y8950 alone. fix the problem since all game sounds are apparently played by the Y8950 alone.
- fsoccerb is based on fsoccerj : the only differences are joysticks hacks
(code patched at 0x00f1 + extra code at 0xb700 and after).
TODO: TODO:
----- -----
@ -2907,8 +2911,8 @@ INPUT_PORTS_END
static INPUT_PORTS_START( gwar ) static INPUT_PORTS_START( gwar )
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_sound_busy, 0) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_sound_busy, 0)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x08c8 */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* tilt? causes reset */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* reset */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
@ -2952,9 +2956,7 @@ static INPUT_PORTS_START( gwar )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW1:2") PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW1:2")
PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, "Bonus Occurrence" ) PORT_DIPLOCATION("DSW1:3") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_bonus_r, (void *)0x04)
PORT_DIPSETTING( 0x04, "1st & 2nd only" )
PORT_DIPSETTING( 0x00, "1st & every 2nd" )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW1:4") PORT_DIPNAME( 0x08, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW1:4")
PORT_DIPSETTING( 0x08, "3" ) PORT_DIPSETTING( 0x08, "3" )
PORT_DIPSETTING( 0x00, "5" ) PORT_DIPSETTING( 0x00, "5" )
@ -2980,17 +2982,20 @@ static INPUT_PORTS_START( gwar )
PORT_DIPSETTING( 0x08, "Demo Sounds On" ) PORT_DIPSETTING( 0x08, "Demo Sounds On" )
PORT_DIPSETTING( 0x00, "Freeze" ) PORT_DIPSETTING( 0x00, "Freeze" )
PORT_DIPSETTING( 0x04, "Infinite Lives (Cheat)") PORT_DIPSETTING( 0x04, "Infinite Lives (Cheat)")
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("DSW2:5,6") PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_bonus_r, (void *)0x30)
PORT_DIPSETTING( 0x30, "30k 60k" ) PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "DSW2:7" )
PORT_DIPSETTING( 0x20, "40k 80k" ) PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "DSW2:8" )
PORT_DIPSETTING( 0x10, "50k 100k" )
PORT_START("BONUS") /* fake port to handle bonus lives settings via multiple input ports */
PORT_DIPNAME( 0x34, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("DSW1:3,DSW2:5,6")
PORT_DIPSETTING( 0x30, "30k 60k 60k+" )
PORT_DIPSETTING( 0x20, "40k 80k 80k+" )
PORT_DIPSETTING( 0x10, "50k 100k 100k+" )
PORT_DIPSETTING( 0x34, "30k 60k" )
PORT_DIPSETTING( 0x24, "40k 80k" )
PORT_DIPSETTING( 0x14, "50k 100k" )
// PORT_DIPSETTING( 0x04, DEF_STR( None ) ) /* duplicated setting */
PORT_DIPSETTING( 0x00, DEF_STR( None ) ) PORT_DIPSETTING( 0x00, DEF_STR( None ) )
PORT_DIPNAME( 0x40 ,0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:7")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW2:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( gwarb ) static INPUT_PORTS_START( gwarb )
@ -3015,8 +3020,8 @@ INPUT_PORTS_END
static INPUT_PORTS_START( chopper ) static INPUT_PORTS_START( chopper )
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_sound_busy, 0) PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_sound_busy, 0)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x0849 */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* Reset */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_TILT ) /* reset */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
@ -3051,11 +3056,9 @@ static INPUT_PORTS_START( chopper )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("DSW1:2") PORT_DIPNAME( 0x02, 0x02, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("DSW1:2")
PORT_DIPSETTING( 0x02, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x02, DEF_STR( Upright ) ) /* Single Controls */
PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x04, 0x04, "Bonus Occurrence" ) PORT_DIPLOCATION("DSW1:3") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_bonus_r, (void *)0x04)
PORT_DIPSETTING( 0x00, "1st & every 2nd" )
PORT_DIPSETTING( 0x04, "1st & 2nd only" )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW1:4") PORT_DIPNAME( 0x08, 0x08, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW1:4")
PORT_DIPSETTING( 0x08, "3" ) PORT_DIPSETTING( 0x08, "3" )
PORT_DIPSETTING( 0x00, "5" ) PORT_DIPSETTING( 0x00, "5" )
@ -3081,17 +3084,24 @@ static INPUT_PORTS_START( chopper )
PORT_DIPSETTING( 0x0c, "Demo Sounds On" ) PORT_DIPSETTING( 0x0c, "Demo Sounds On" )
PORT_DIPSETTING( 0x00, "Freeze" ) PORT_DIPSETTING( 0x00, "Freeze" )
PORT_DIPSETTING( 0x04, "Infinite Lives (Cheat)") PORT_DIPSETTING( 0x04, "Infinite Lives (Cheat)")
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("DSW2:5,6") PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_bonus_r, (void *)0x30)
PORT_DIPSETTING( 0x30, "50k 100k" )
PORT_DIPSETTING( 0x20, "75k 150k" )
PORT_DIPSETTING( 0x10, "100k 200k" )
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("DSW2:7") PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("DSW2:7")
PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x40, DEF_STR( Yes ) ) PORT_DIPSETTING( 0x40, DEF_STR( Yes ) )
PORT_DIPNAME( 0x80, 0x80, "Invulnerability (Cheat)") PORT_DIPLOCATION("DSW2:8") PORT_DIPNAME( 0x80, 0x80, "Invulnerability (Cheat)") PORT_DIPLOCATION("DSW2:8")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("BONUS") /* fake port to handle bonus lives settings via multiple input ports */
PORT_DIPNAME( 0x34, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("DSW1:3,DSW2:5,6")
PORT_DIPSETTING( 0x30, "50k 100k 100k+" )
PORT_DIPSETTING( 0x20, "75k 150k 150k+" )
PORT_DIPSETTING( 0x10, "100k 200k 200k+" )
PORT_DIPSETTING( 0x34, "50k 100k" )
PORT_DIPSETTING( 0x24, "75k 150k" )
PORT_DIPSETTING( 0x14, "100k 200k" )
// PORT_DIPSETTING( 0x04, DEF_STR( None ) ) /* duplicated setting */
PORT_DIPSETTING( 0x00, DEF_STR( None ) )
INPUT_PORTS_END INPUT_PORTS_END
static INPUT_PORTS_START( choppera ) static INPUT_PORTS_START( choppera )
@ -3128,8 +3138,8 @@ INPUT_PORTS_END
static INPUT_PORTS_START( tdfever ) static INPUT_PORTS_START( tdfever )
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) /* also reset - code at 0x074a */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* adds 1 credit - code at 0x1065 */
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_sound_busy, 0) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_sound_busy, 0)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
@ -3269,8 +3279,8 @@ INPUT_PORTS_END
static INPUT_PORTS_START( fsoccer ) static INPUT_PORTS_START( fsoccer )
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) // same as the dip switch PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the dip switch / also reset - code at 0x00cc */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 ) /* uses "Coin A" settings - code at 0x677f */
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_sound_busy, 0) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM(snk_sound_busy, 0)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
@ -3378,8 +3388,7 @@ static INPUT_PORTS_START( fsoccer )
PORT_DIPSETTING( 0x00, "Freeze" ) PORT_DIPSETTING( 0x00, "Freeze" )
PORT_DIPSETTING( 0x04, "Win Match Against CPU (Cheat)") PORT_DIPSETTING( 0x04, "Win Match Against CPU (Cheat)")
/* /*
Dip Switch settings are the time for match type A. Here is what you Dip Switch settings are the time for match type A. Here is what you have to add for games B to E :
have to add for games B to E :
Match Type B C D E Match Type B C D E
Time to add 00:30 01:00 01:30 02:00 Time to add 00:30 01:00 01:30 02:00