mirror of
https://github.com/holub/mame
synced 2025-05-23 14:19:01 +03:00
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:
parent
f6ef599f4d
commit
486d9c32c0
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user