diff options
| author | 2010-02-14 16:00:47 +0000 | |
|---|---|---|
| committer | 2010-02-14 16:00:47 +0000 | |
| commit | 535a84c908f8bdb6475d4ec548639701fd01dd11 (patch) | |
| tree | e7d4b616953402fbec38a8f63d1ebe4601165afd /src | |
| parent | 1d14f429ae20d713730ff5e6687b93f45f6ca3d8 (diff) | |
Fixed Dip Switches and Inputs (after verification of the Z80 code) for 'espial', 'espialu' and 'netwars".
Diffstat (limited to 'src')
| -rw-r--r-- | src/mame/drivers/espial.c | 109 |
1 files changed, 66 insertions, 43 deletions
diff --git a/src/mame/drivers/espial.c b/src/mame/drivers/espial.c index 805c3de45c6..c72940dd2d6 100644 --- a/src/mame/drivers/espial.c +++ b/src/mame/drivers/espial.c @@ -5,6 +5,33 @@ Espial: The Orca logo is displayed, but looks to be "blacked out" via the color proms by having 0x1c & 0x1d set to black. + +Stephh's notes (based on the games Z80 code and some tests) : + +1) 'espial*' + + - The games read both players controls for player 2 when "Cabinet" is set + to "Upright" (code at 0x0321). + - The games read both buttons status regardless of settings. They are + then comnbined if Dip Switch is set to "1" (code at 0x32a). + - The "CRE." displayed at the bottom right of the screen is in fact + not really the number of credits (especially when coinage isn't 1C_1C) + as it relies on a transformation of real number of credits (stored at + 0x5802) based on settings (coins needed stored at 0x5806 and credits + awarded at 0x5804). Check code at 0x080b which displays the odd value. + +2) 'netwars' + + - The game reads both players controls for player 2 when "Cabinet" is set + to "Upright" (code at 0x038e). + - The "CREDIT" displayed at the bottom right of the screen is in fact + not really the number of credits (especially when coinage isn't 1C_1C) + as it relies on a transformation of real number of credits (stored at + 0x5802) based on settings (coins needed stored at 0x5806 and credits + awarded at 0x5804). Check code at 0x0147 which displays the odd value. + - When you get a perfect in the bonus game, you are only awarded 1000 points + even if the game tells you that you have been awarded 10000 points. + ***************************************************************************/ #include "emu.h" @@ -142,19 +169,20 @@ static ADDRESS_MAP_START( espial_sound_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_END +/* verified from Z80 code */ static INPUT_PORTS_START( espial ) PORT_START("IN0") PORT_DIPNAME( 0x01, 0x00, "Number of Buttons" ) PORT_DIPSETTING( 0x01, "1" ) PORT_DIPSETTING( 0x00, "2" ) - PORT_DIPNAME( 0x02, 0x02, "Enemy Bullets Vulnerable" ) /* you can shoot bullets */ + PORT_DIPNAME( 0x02, 0x02, "Enemy Bullets Vulnerable" ) /* you can shoot bullets */ PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( On ) ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_DIPUNUSED( 0x04, IP_ACTIVE_HIGH ) + PORT_DIPUNUSED( 0x08, IP_ACTIVE_HIGH ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START("DSW1") @@ -172,52 +200,47 @@ static INPUT_PORTS_START( espial ) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) PORT_DIPSETTING( 0x10, DEF_STR( 1C_6C ) ) PORT_DIPSETTING( 0x1c, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) ) /* Sources on the net show 20K/50K & 40K/70K */ - PORT_DIPSETTING( 0x00, "20k and every 70k" ) - PORT_DIPSETTING( 0x20, "50k and every 100k" ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) ) /* code at 0x43e1 in 'espial' and 0x44b5 in 'espialu' */ + PORT_DIPSETTING( 0x00, "20k 70k 70k+" ) /* last bonus life at 980k : max. 15 bonus lives */ + PORT_DIPSETTING( 0x20, "50k 100k 100k+" ) /* last bonus life at 900k : max. 10 bonus lives */ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) ) PORT_DIPSETTING( 0x40, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, "Reset on Check Error" ) + PORT_DIPSETTING( 0x80, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL PORT_START("IN2") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_COCKTAIL - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY INPUT_PORTS_END +/* verified from Z80 code */ static INPUT_PORTS_START( netwars ) PORT_START("IN0") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) /* probably unused */ - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x01, DEF_STR( On ) ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) /* used */ - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) - PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) /* probably unused */ - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x04, DEF_STR( On ) ) - PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) /* used */ - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPUNUSED( 0x01, IP_ACTIVE_HIGH ) + PORT_DIPNAME( 0x02, 0x00, DEF_STR( Difficulty ) ) /* when enemies shoot - code at 0x2216 */ + PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Hard ) ) + PORT_DIPUNUSED( 0x04, IP_ACTIVE_HIGH ) + PORT_DIPUNUSED( 0x08, IP_ACTIVE_HIGH ) /* no effect due to code at 0x0e0a */ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) @@ -238,24 +261,24 @@ static INPUT_PORTS_START( netwars ) PORT_DIPSETTING( 0x0c, DEF_STR( 1C_4C ) ) PORT_DIPSETTING( 0x10, DEF_STR( 1C_6C ) ) PORT_DIPSETTING( 0x1c, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) ) - PORT_DIPSETTING( 0x00, "20k and every 70k" ) - PORT_DIPSETTING( 0x20, "50k and every 100k" ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) ) /* code at 0x2383 */ + PORT_DIPSETTING( 0x00, "20k and 50k" ) + PORT_DIPSETTING( 0x20, "40k and 70k" ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) ) PORT_DIPSETTING( 0x40, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x00, DEF_STR( Cocktail ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, "Reset on Check Error" ) + PORT_DIPSETTING( 0x80, DEF_STR( No ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_START("IN1") PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_START1 ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_START("IN2") @@ -263,10 +286,10 @@ static INPUT_PORTS_START( netwars ) PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_COCKTAIL PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY INPUT_PORTS_END |
