mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
slapfght driver update from stephh, getstar / tiger heli changes etc.
I don't have the changelist, stephh should really commit his own stuff.
This commit is contained in:
parent
5d5550c907
commit
6f5ef31d90
@ -183,6 +183,126 @@ $8006 - $8035 High score table
|
|||||||
$8609 - $860f High score characters to display to screen for highest score
|
$8609 - $860f High score characters to display to screen for highest score
|
||||||
|
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
Stephh's notes (based on the games Z80 code and some tests) :
|
||||||
|
|
||||||
|
0) all games
|
||||||
|
|
||||||
|
- All these games have a specific way of handling inputs :
|
||||||
|
* when cabinet is set to "Upright", any player can use inputs
|
||||||
|
from player 1 OR from player 2
|
||||||
|
* when cabinet is set to "Cocktail", each player has its own inputs
|
||||||
|
See Mantis bug ID 01746 attached files with Z80 explanations
|
||||||
|
|
||||||
|
|
||||||
|
1) 'tigerh' and clones
|
||||||
|
|
||||||
|
1a) 'tigerh'
|
||||||
|
|
||||||
|
- US version
|
||||||
|
- MCU dumped and emulated
|
||||||
|
- Game inputs aren't working after heliport 4 (area 35);
|
||||||
|
I can't tell at the moment if it's an ingame bug or not.
|
||||||
|
See Mantis bug ID 01785 for more details.
|
||||||
|
|
||||||
|
1b) 'tigerhj'
|
||||||
|
|
||||||
|
- Japan version
|
||||||
|
- MCU dumped and emulated
|
||||||
|
- Game inputs aren't working after heliport 4 (area 35);
|
||||||
|
I can't tell at the moment if it's an ingame bug or not.
|
||||||
|
See Mantis bug ID 01785 for more details.
|
||||||
|
|
||||||
|
1c) 'tigerhb1'
|
||||||
|
|
||||||
|
- Bootleg based on 'tigerhj'
|
||||||
|
- I can't tell if a specific MCU is required for this game :
|
||||||
|
* MCU status doesn't seem to be required
|
||||||
|
(see nop instructions at 0x10da, 0x10db, 0x10e5 and 0x10e6)
|
||||||
|
* there is patched code at 0x0f9c which is called instead of
|
||||||
|
standard call to 0x10cc, and there is no call to 0x0f88
|
||||||
|
* there are writes to unknown ports 0x0e and 0x0f
|
||||||
|
* hardware test is still computed at 0x109d but there is
|
||||||
|
no delay to wait for correct value (0x83) to be returned
|
||||||
|
(thus the need of specific read/write handlers)
|
||||||
|
- Game inputs aren't working after heliport 4 (area 35);
|
||||||
|
I can't tell at the moment if it's an ingame bug or not.
|
||||||
|
See Mantis bug ID 01785 for more details.
|
||||||
|
|
||||||
|
1d) 'tigerhb2'
|
||||||
|
|
||||||
|
- Bootleg based on 'tigerhj'
|
||||||
|
- MCU reads/writes are patched.as well as ROM check
|
||||||
|
- Game inputs are still working after heliport 4 (area 35);
|
||||||
|
This is the ONLY set with this behaviour !
|
||||||
|
See Mantis bug ID 01785 for more details.
|
||||||
|
|
||||||
|
1e) 'tigerhb3'
|
||||||
|
|
||||||
|
- Bootleg based on 'tigerhj'
|
||||||
|
- MCU reads/writes are patched.
|
||||||
|
- There is extra code at 0x10e2 (where MCU status was checked)
|
||||||
|
that prevents player to get any extra lives (even by collecting
|
||||||
|
10 diamonds) when Dip Switch is set to "20k then every 80k"
|
||||||
|
(see Mantis bug ID 00652 with Z80 explanations).
|
||||||
|
- Game inputs aren't working after heliport 4 (area 35);
|
||||||
|
I can't tell at the moment if it's an ingame bug or not.
|
||||||
|
See Mantis bug ID 01785 for more details.
|
||||||
|
|
||||||
|
|
||||||
|
2) 'getstar' and clones
|
||||||
|
|
||||||
|
2a) 'getstar'
|
||||||
|
|
||||||
|
- US version, licenced to Kitkorp - name "Guardian".
|
||||||
|
- MCU missing and simulated.
|
||||||
|
- Difficulty determines the number of energy bars you get.
|
||||||
|
- Each hit removes 1 enegy bar.
|
||||||
|
- According to the manual, default difficulty shall be set to "Hard".
|
||||||
|
- You can only get ONE extra life.
|
||||||
|
- I don't know if it's an ingame bug, but you always have to enter
|
||||||
|
your initials after a game ends, even if you score less than 10th place.
|
||||||
|
|
||||||
|
2b) 'getstarj'
|
||||||
|
|
||||||
|
- Japan version - name "Get Star".
|
||||||
|
- MCU missing and simulated.
|
||||||
|
- You always get 4 energy bars.
|
||||||
|
- Difficulty determines how many energy bars you lose when you get hit.
|
||||||
|
- I don't know what default difficulty shall be, so I set it to "Easy".
|
||||||
|
- You can get multiple extra lives.
|
||||||
|
|
||||||
|
2c) 'gtstarb1'
|
||||||
|
|
||||||
|
- Bootleg based on 'getstarj'
|
||||||
|
- MCU reads/writes are patched, but this hasn't been done in the "test mode".
|
||||||
|
- The game seems to have its own protection on startup (check code at 0x6d1a).
|
||||||
|
|
||||||
|
2d) 'gtstarb2'
|
||||||
|
|
||||||
|
- Bootleg based on 'getstarj'
|
||||||
|
- MCU reads/writes are patched, but this hasn't been done in the "test mode".
|
||||||
|
- The game seems to have its own protection (check code at 0x0569 and 0x0ac6).
|
||||||
|
- Patches are coded diffrently than in 'gtstarb1' and code isn't always perfect
|
||||||
|
(lazy coding ?) which causes LOTS of ingames bugs or strange behaviours :
|
||||||
|
* patched command 0x20 : NO continue play
|
||||||
|
* patched command 0x21 : as soon as a player loses all his lives,
|
||||||
|
the game is over (even if other player still has lives)
|
||||||
|
* patched command 0x22 : difficulty is ALWAYS set to "Easy" at start
|
||||||
|
so "Difficulty" Dip Switches have no effect when you are playing
|
||||||
|
(it still has an effect in the "test mode" though)
|
||||||
|
* patched command 0x23 : different lives settings
|
||||||
|
(thus the need of a specific INPUT_PORTS definition for this game)
|
||||||
|
* patched command 0x25 : right and down directions are swapped
|
||||||
|
(thus the need of a specific INPUT_PORTS definition for this game)
|
||||||
|
* patched command 0x2a : player flag (which determines if player 1 or
|
||||||
|
player 2 is playing) is NOT updated, causing the following things :
|
||||||
|
. current player score will ALWAYS be dusplayed under player 1
|
||||||
|
. when cabinet is set to "Cocktail", player 2 uses player 1 inputs
|
||||||
|
* patched command 0x38 : laser position does NOT change according to
|
||||||
|
player position (it ALWATS starts from the middle of the screen)
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
@ -191,6 +311,9 @@ $8609 - $860f High score characters to display to screen for highest score
|
|||||||
#include "sound/ay8910.h"
|
#include "sound/ay8910.h"
|
||||||
#include "includes/slapfght.h"
|
#include "includes/slapfght.h"
|
||||||
|
|
||||||
|
int getstar_id;
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( perfrman_readmem, ADDRESS_SPACE_PROGRAM, 8 )
|
static ADDRESS_MAP_START( perfrman_readmem, ADDRESS_SPACE_PROGRAM, 8 )
|
||||||
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
|
AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM)
|
||||||
AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
|
AM_RANGE(0x8000, 0x87ff) AM_READ(SMH_RAM)
|
||||||
@ -382,134 +505,130 @@ static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 )
|
|||||||
AM_RANGE(0xd000, 0xffff) AM_WRITE(SMH_RAM)
|
AM_RANGE(0xd000, 0xffff) AM_WRITE(SMH_RAM)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
#define COMMON_START\
|
|
||||||
PORT_START_TAG("IN0")\
|
static INPUT_PORTS_START( slapfght_generic )
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY\
|
PORT_START_TAG("IN0")
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY\
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
|
||||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY\
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
||||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY\
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL\
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL\
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL\
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL\
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
|
||||||
PORT_START_TAG("IN1")\
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )\
|
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )\
|
PORT_START_TAG("IN1")
|
||||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL\
|
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
||||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL\
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )\
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )\
|
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )\
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
|
||||||
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
|
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||||
|
|
||||||
static INPUT_PORTS_START( perfrman )
|
|
||||||
COMMON_START
|
|
||||||
PORT_START_TAG("DSW1")
|
PORT_START_TAG("DSW1")
|
||||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) )
|
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8,7,6")
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
// PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
|
||||||
PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
|
|
||||||
/* Actually, the following DIPSW doesnt seem to do anything */
|
|
||||||
PORT_DIPNAME( 0x20, 0x20, "Screen Test" ) PORT_CODE(KEYCODE_F1) PORT_TOGGLE
|
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Cabinet ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
|
|
||||||
PORT_DIPSETTING( 0x10, DEF_STR( Cocktail ) )
|
|
||||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
|
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
|
|
||||||
// PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
|
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
|
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
|
||||||
PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
|
PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
|
||||||
PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) )
|
PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) )
|
||||||
PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
|
PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
|
||||||
PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
|
PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
|
||||||
|
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:5")
|
||||||
PORT_START_TAG("DSW2")
|
|
||||||
PORT_DIPNAME( 0xf0, 0x70, DEF_STR( Bonus_Life ) )
|
|
||||||
PORT_DIPSETTING( 0xb0, "20k, then each 100k" )
|
|
||||||
PORT_DIPSETTING( 0xa0, "40k, then each 100k" )
|
|
||||||
PORT_DIPSETTING( 0x90, "60k, then each 100k" )
|
|
||||||
PORT_DIPSETTING( 0x70, "20k, then each 200k" )
|
|
||||||
PORT_DIPSETTING( 0x60, "40k, then each 200k" )
|
|
||||||
PORT_DIPSETTING( 0x50, "60k, then each 200k" )
|
|
||||||
PORT_DIPSETTING( 0x30, "20k, then each 300k" )
|
|
||||||
PORT_DIPSETTING( 0x20, "40k, then each 300k" )
|
|
||||||
PORT_DIPSETTING( 0x10, "60k, then each 300k" )
|
|
||||||
PORT_DIPSETTING( 0xf0, "20k" )
|
|
||||||
PORT_DIPSETTING( 0xe0, "40k" )
|
|
||||||
PORT_DIPSETTING( 0xd0, "60k" )
|
|
||||||
PORT_DIPSETTING( 0xc0, DEF_STR( None ) )
|
|
||||||
PORT_DIPNAME( 0x0c, 0x0c, "Game Level" )
|
|
||||||
PORT_DIPSETTING( 0x0c, "0" )
|
|
||||||
PORT_DIPSETTING( 0x08, "1" )
|
|
||||||
PORT_DIPSETTING( 0x04, "2" )
|
|
||||||
PORT_DIPSETTING( 0x00, "3" )
|
|
||||||
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
|
|
||||||
PORT_DIPSETTING( 0x01, "1" )
|
|
||||||
PORT_DIPSETTING( 0x00, "2" )
|
|
||||||
PORT_DIPSETTING( 0x03, "3" )
|
|
||||||
PORT_DIPSETTING( 0x02, "5" )
|
|
||||||
INPUT_PORTS_END
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( tigerh )
|
|
||||||
COMMON_START
|
|
||||||
PORT_START_TAG("DSW1")
|
|
||||||
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
|
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
|
|
||||||
// PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
|
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
|
|
||||||
PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
|
|
||||||
PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) )
|
|
||||||
PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
|
|
||||||
PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
|
|
||||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
||||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Cabinet ) )
|
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:4")
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
|
||||||
PORT_DIPSETTING( 0x10, DEF_STR( Cocktail ) )
|
PORT_DIPSETTING( 0x10, DEF_STR( Cocktail ) )
|
||||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
|
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:3")
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
|
PORT_SERVICE_DIPLOC(0x40, IP_ACTIVE_LOW, "SW1:2" )
|
||||||
PORT_DIPNAME( 0x80, 0x80, "Player Speed" )
|
PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW1:1" )
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
|
|
||||||
PORT_DIPSETTING( 0x00, "Fast" )
|
|
||||||
|
|
||||||
PORT_START_TAG("DSW2")
|
PORT_START_TAG("DSW2")
|
||||||
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) )
|
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:8,7")
|
||||||
PORT_DIPSETTING( 0x01, "1" )
|
PORT_DIPSETTING( 0x01, "1" )
|
||||||
PORT_DIPSETTING( 0x00, "2" )
|
PORT_DIPSETTING( 0x00, "2" )
|
||||||
PORT_DIPSETTING( 0x03, "3" )
|
PORT_DIPSETTING( 0x03, "3" )
|
||||||
PORT_DIPSETTING( 0x02, "5" )
|
PORT_DIPSETTING( 0x02, "5" )
|
||||||
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
|
PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,5")
|
||||||
PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
|
PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( Medium ) )
|
PORT_DIPSETTING( 0x08, DEF_STR( Medium ) )
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
|
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
||||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )
|
/* Filled by "Bonus Lives" settings */
|
||||||
PORT_DIPSETTING( 0x10, "20000 80000" )
|
PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:4" )
|
||||||
PORT_DIPSETTING( 0x00, "50000 120000" )
|
PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:3" )
|
||||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW2:2" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:1" )
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( perfrman )
|
||||||
|
PORT_INCLUDE(slapfght_generic)
|
||||||
|
|
||||||
|
PORT_MODIFY("DSW1")
|
||||||
|
PORT_DIPNAME( 0x20, 0x20, "Intermissions" ) PORT_DIPLOCATION("SW1:3") /* "Screen Test" in the "test mode" */
|
||||||
|
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
|
|
||||||
|
PORT_MODIFY("DSW2")
|
||||||
|
PORT_DIPNAME( 0xf0, 0x70, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4,3,2,1")
|
||||||
|
PORT_DIPSETTING( 0xb0, "20k, 120k, then every 100k" )
|
||||||
|
PORT_DIPSETTING( 0xa0, "40k, 120k, then every 100k" )
|
||||||
|
PORT_DIPSETTING( 0x90, "60k, 160k, then every 100k" )
|
||||||
|
PORT_DIPSETTING( 0x80, "Every 100k" )
|
||||||
|
PORT_DIPSETTING( 0x70, "20k, 220k, then every 200k" )
|
||||||
|
PORT_DIPSETTING( 0x60, "40k, 240k, then every 200k" )
|
||||||
|
PORT_DIPSETTING( 0x50, "60k, 260k, then every 200k" )
|
||||||
|
PORT_DIPSETTING( 0x40, "Every 200k" )
|
||||||
|
PORT_DIPSETTING( 0x30, "20k, 320k, then every 300k" )
|
||||||
|
PORT_DIPSETTING( 0x20, "40k, 340k, then every 300k" )
|
||||||
|
PORT_DIPSETTING( 0x10, "60k, 360k, then every 300k" )
|
||||||
|
PORT_DIPSETTING( 0x00, "Every 300k" )
|
||||||
|
PORT_DIPSETTING( 0xf0, "20k only" )
|
||||||
|
PORT_DIPSETTING( 0xe0, "40k only" )
|
||||||
|
PORT_DIPSETTING( 0xd0, "60k only" )
|
||||||
|
PORT_DIPSETTING( 0xc0, DEF_STR( None ) )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( tigerh )
|
||||||
|
PORT_INCLUDE(slapfght_generic)
|
||||||
|
|
||||||
|
PORT_MODIFY("DSW1")
|
||||||
|
PORT_DIPNAME( 0x80, 0x80, "Player Speed" ) PORT_DIPLOCATION("SW1:1")
|
||||||
|
PORT_DIPSETTING( 0x80, DEF_STR( Normal ) )
|
||||||
|
PORT_DIPSETTING( 0x00, "Fast" )
|
||||||
|
|
||||||
|
PORT_MODIFY("DSW2")
|
||||||
|
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:8,7")
|
||||||
|
PORT_DIPSETTING( 0x01, "1" )
|
||||||
|
PORT_DIPSETTING( 0x00, "2" )
|
||||||
|
PORT_DIPSETTING( 0x03, "3" )
|
||||||
|
PORT_DIPSETTING( 0x02, "5" )
|
||||||
|
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:6,5")
|
||||||
|
PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
|
||||||
|
PORT_DIPSETTING( 0x08, DEF_STR( Medium ) )
|
||||||
|
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
|
||||||
|
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
||||||
|
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4")
|
||||||
|
PORT_DIPSETTING( 0x10, "20k, 100k, then every 80k" ) // see notes for 'tigerhb3'
|
||||||
|
PORT_DIPSETTING( 0x00, "50k, 170k, then every 120k" )
|
||||||
|
PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:3" )
|
||||||
|
PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_LOW, "SW2:2" )
|
||||||
|
PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW2:1" )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( slapfigh )
|
static INPUT_PORTS_START( slapfigh )
|
||||||
COMMON_START
|
PORT_INCLUDE(slapfght_generic)
|
||||||
PORT_START_TAG("DSW1")
|
|
||||||
|
PORT_MODIFY("DSW1")
|
||||||
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) )
|
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) )
|
||||||
PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
|
PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) )
|
||||||
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
|
PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) )
|
||||||
@ -533,7 +652,7 @@ COMMON_START
|
|||||||
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) )
|
PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) )
|
||||||
|
|
||||||
PORT_START_TAG("DSW2")
|
PORT_MODIFY("DSW2")
|
||||||
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
|
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||||
@ -557,141 +676,57 @@ INPUT_PORTS_END
|
|||||||
|
|
||||||
|
|
||||||
static INPUT_PORTS_START( getstar )
|
static INPUT_PORTS_START( getstar )
|
||||||
PORT_START_TAG("IN0")
|
PORT_INCLUDE(slapfght_generic)
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
|
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
|
||||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
|
||||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
|
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
|
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
|
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
|
|
||||||
PORT_START_TAG("IN1")
|
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
|
||||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
|
|
||||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
|
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
|
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
|
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
|
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
|
|
||||||
|
|
||||||
PORT_START_TAG("DSW1")
|
PORT_MODIFY("DSW2")
|
||||||
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
|
/* harder default difficulty (confirmed by manual) */
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
|
PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,5")
|
||||||
// PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
|
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
|
|
||||||
PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
|
|
||||||
PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) )
|
|
||||||
PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
|
|
||||||
PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
|
|
||||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Cabinet ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
|
|
||||||
PORT_DIPSETTING( 0x10, DEF_STR( Cocktail ) )
|
|
||||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
|
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
|
|
||||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
|
|
||||||
PORT_START_TAG("DSW2")
|
|
||||||
PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )
|
|
||||||
PORT_DIPSETTING( 0x02, "3" )
|
|
||||||
PORT_DIPSETTING( 0x01, "4" )
|
|
||||||
PORT_DIPSETTING( 0x00, "5" )
|
|
||||||
PORT_DIPSETTING( 0x03, "240 (Cheat)")
|
|
||||||
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
|
|
||||||
PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
|
PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( Medium ) )
|
PORT_DIPSETTING( 0x08, DEF_STR( Medium ) )
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
|
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
||||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )
|
PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4,3")
|
||||||
PORT_DIPSETTING( 0x10, "30000 100000" )
|
PORT_DIPSETTING( 0x30, "50k only" )
|
||||||
PORT_DIPSETTING( 0x00, "50000 150000" )
|
PORT_DIPSETTING( 0x20, "100k only" )
|
||||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
PORT_DIPSETTING( 0x10, "150k only" )
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
PORT_DIPSETTING( 0x00, "200k only" )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( gtstarba )
|
static INPUT_PORTS_START( getstarj )
|
||||||
PORT_START_TAG("IN0")
|
PORT_INCLUDE(getstar)
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
|
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
|
||||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
|
||||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
|
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
|
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
|
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
|
|
||||||
PORT_START_TAG("IN1")
|
|
||||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON2 )
|
|
||||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 )
|
|
||||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
|
|
||||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
|
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
|
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
|
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
|
|
||||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
|
|
||||||
|
|
||||||
PORT_START_TAG("DSW1")
|
/* easier default difficulty (to be confirmed) and different bonus lives settings */
|
||||||
PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) )
|
PORT_MODIFY("DSW2")
|
||||||
PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
|
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:6,5")
|
||||||
// PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
|
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( 2C_1C ) )
|
|
||||||
PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) )
|
|
||||||
PORT_DIPSETTING( 0x03, DEF_STR( 2C_3C ) )
|
|
||||||
PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) )
|
|
||||||
PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Free_Play ) )
|
|
||||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Cabinet ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
|
|
||||||
PORT_DIPSETTING( 0x10, DEF_STR( Cocktail ) )
|
|
||||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) )
|
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_SERVICE( 0x40, IP_ACTIVE_LOW )
|
|
||||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
|
|
||||||
PORT_START_TAG("DSW2")
|
|
||||||
PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) )
|
|
||||||
PORT_DIPSETTING( 0x02, "3" )
|
|
||||||
PORT_DIPSETTING( 0x01, "4" )
|
|
||||||
PORT_DIPSETTING( 0x00, "5" )
|
|
||||||
PORT_DIPSETTING( 0x03, "240 (Cheat)")
|
|
||||||
PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) )
|
|
||||||
PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
|
PORT_DIPSETTING( 0x0c, DEF_STR( Easy ) )
|
||||||
PORT_DIPSETTING( 0x08, DEF_STR( Medium ) )
|
PORT_DIPSETTING( 0x08, DEF_STR( Medium ) )
|
||||||
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
|
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) )
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
PORT_DIPSETTING( 0x00, DEF_STR( Hardest ) )
|
||||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) )
|
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4")
|
||||||
PORT_DIPSETTING( 0x10, "30000 100000" )
|
PORT_DIPSETTING( 0x10, "30k, 130k, then every 100k" )
|
||||||
PORT_DIPSETTING( 0x00, "50000 150000" )
|
PORT_DIPSETTING( 0x00, "50k, 200k, then every 150k" )
|
||||||
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
|
PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:3" )
|
||||||
PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
|
INPUT_PORTS_END
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
|
static INPUT_PORTS_START( gtstarb2 )
|
||||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
PORT_INCLUDE(getstarj)
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
|
||||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
/* RIGHT and DOWN are swapped due to code at 0x0551 */
|
||||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
PORT_MODIFY("IN0")
|
||||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
||||||
|
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
|
||||||
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
|
||||||
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
|
||||||
|
|
||||||
|
/* different lives settings due to code at 0x0e36 */
|
||||||
|
PORT_MODIFY("DSW2")
|
||||||
|
PORT_DIPNAME( 0x03, 0x02, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW2:8,7")
|
||||||
|
PORT_DIPSETTING( 0x02, "3" )
|
||||||
|
PORT_DIPSETTING( 0x01, "4" )
|
||||||
|
PORT_DIPSETTING( 0x00, "5" )
|
||||||
|
PORT_DIPSETTING( 0x03, "240 (Cheat)")
|
||||||
|
/* difficulty settings have no effect due to code at 0x0e7c */
|
||||||
|
/* I don't mark the Dips as "unused" because they are still read in the "test mode" */
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
@ -935,6 +970,7 @@ static MACHINE_DRIVER_START( tigerh )
|
|||||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||||
MACHINE_DRIVER_END
|
MACHINE_DRIVER_END
|
||||||
|
|
||||||
|
|
||||||
static MACHINE_DRIVER_START( slapfigh )
|
static MACHINE_DRIVER_START( slapfigh )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
@ -981,7 +1017,6 @@ static MACHINE_DRIVER_START( slapfigh )
|
|||||||
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||||
MACHINE_DRIVER_END
|
MACHINE_DRIVER_END
|
||||||
|
|
||||||
|
|
||||||
/* identical to slapfigh_ but writemem has different scroll registers */
|
/* identical to slapfigh_ but writemem has different scroll registers */
|
||||||
static MACHINE_DRIVER_START( slapbtuk )
|
static MACHINE_DRIVER_START( slapbtuk )
|
||||||
|
|
||||||
@ -1087,42 +1122,6 @@ ROM_START( tigerh )
|
|||||||
ROM_LOAD( "pal16r4a.2e", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
|
ROM_LOAD( "pal16r4a.2e", 0x0000, 0x0104, NO_DUMP ) /* PAL is read protected */
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( tigerh2 )
|
|
||||||
ROM_REGION( 0x10000, REGION_CPU1, 0 )
|
|
||||||
ROM_LOAD( "b0.5", 0x00000, 0x4000, CRC(6ae7e13c) SHA1(47ef34635f8648e883a850293d92a46e95976a50) )
|
|
||||||
ROM_LOAD( "a47_01.bin", 0x04000, 0x4000, CRC(65df2152) SHA1(8e1516905a4af379cb0d0b9d42ff1cc3179c3589) )
|
|
||||||
ROM_LOAD( "a47_02.bin", 0x08000, 0x4000, CRC(633d324b) SHA1(70a17d17ebe003bfb2246e92e925a343a92553e5) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x10000, REGION_CPU2, 0 )
|
|
||||||
ROM_LOAD( "a47_03.bin", 0x0000, 0x2000, CRC(d105260f) SHA1(f6a0e393e29354bb37fb723828f3267d030a45ea) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x0800, REGION_CPU3, 0 )
|
|
||||||
/* is this the right mcu for this set? the mcu handling code in the roms seems patched and it doesn't
|
|
||||||
work correctly */
|
|
||||||
ROM_LOAD( "a47_14.6a", 0x0000, 0x0800, CRC(4042489f) SHA1(b977e0821b6b1aa5a0a0f349cd78150af1a231df) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
|
|
||||||
ROM_LOAD( "a47_05.bin", 0x00000, 0x2000, CRC(c5325b49) SHA1(6df9051e7545dcac4995340f80957510457aaf64) ) /* Chars */
|
|
||||||
ROM_LOAD( "a47_04.bin", 0x02000, 0x2000, CRC(cd59628e) SHA1(7be6479f20eb51b79b93e6fd65ab219096d54984) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x10000, REGION_GFX2, ROMREGION_DISPOSE )
|
|
||||||
ROM_LOAD( "a47_09.bin", 0x00000, 0x4000, CRC(31fae8a8) SHA1(ef8c23776431f00a74b25c5800755b6fa8d585ec) ) /* Tiles */
|
|
||||||
ROM_LOAD( "a47_08.bin", 0x04000, 0x4000, CRC(e539af2b) SHA1(0c8369a0fac1cbe40c07b51e16e8f8a9b8ed03b8) )
|
|
||||||
ROM_LOAD( "a47_07.bin", 0x08000, 0x4000, CRC(02fdd429) SHA1(fa392f2e57cfb6af4c124e0c151a4652f83e5577) )
|
|
||||||
ROM_LOAD( "a47_06.bin", 0x0c000, 0x4000, CRC(11fbcc8c) SHA1(b4fdb9ee00b749e1a54cfc0cdf55cc5e9bee3662) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE )
|
|
||||||
ROM_LOAD( "a47_13.bin", 0x00000, 0x4000, CRC(739a7e7e) SHA1(5fee71d9e1540903a6cf7bcaab30acaa088d35ed) ) /* Sprites */
|
|
||||||
ROM_LOAD( "a47_12.bin", 0x04000, 0x4000, CRC(c064ecdb) SHA1(fa8d712e2b2bda78b9375d96c93a4d7549c94075) )
|
|
||||||
ROM_LOAD( "a47_11.bin", 0x08000, 0x4000, CRC(744fae9b) SHA1(b324350469c51043e1d90ce58808d966467435b9) )
|
|
||||||
ROM_LOAD( "a47_10.bin", 0x0c000, 0x4000, CRC(e1cf844e) SHA1(eeb8eff09f96c693e147d155a8c0a87416d64603) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x0300, REGION_PROMS, 0 )
|
|
||||||
ROM_LOAD( "82s129.12q", 0x0000, 0x0100, CRC(2c69350d) SHA1(658bf63c6d1e718f99494cd1c9346c3622913beb) )
|
|
||||||
ROM_LOAD( "82s129.12m", 0x0100, 0x0100, CRC(7142e972) SHA1(4a854c2fdd006077aecb695832110ae6bf5819c1) )
|
|
||||||
ROM_LOAD( "82s129.12n", 0x0200, 0x0100, CRC(25f273f2) SHA1(2c696745f42fa09b64295a39536aeba08ab58d67) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( tigerhj )
|
ROM_START( tigerhj )
|
||||||
ROM_REGION( 0x10000, REGION_CPU1, 0 )
|
ROM_REGION( 0x10000, REGION_CPU1, 0 )
|
||||||
ROM_LOAD( "a47_00.bin", 0x00000, 0x4000, CRC(cbdbe3cc) SHA1(5badf76cdf4a7f0ae9e85ee602420ba5c128efef) )
|
ROM_LOAD( "a47_00.bin", 0x00000, 0x4000, CRC(cbdbe3cc) SHA1(5badf76cdf4a7f0ae9e85ee602420ba5c128efef) )
|
||||||
@ -1159,13 +1158,17 @@ ROM_END
|
|||||||
|
|
||||||
ROM_START( tigerhb1 )
|
ROM_START( tigerhb1 )
|
||||||
ROM_REGION( 0x10000, REGION_CPU1, 0 )
|
ROM_REGION( 0x10000, REGION_CPU1, 0 )
|
||||||
ROM_LOAD( "14", 0x00000, 0x4000, CRC(ca59dd73) SHA1(c07961fcc209ec10ace3830d79c8ccc1cfda9765) )
|
ROM_LOAD( "b0.5", 0x00000, 0x4000, CRC(6ae7e13c) SHA1(47ef34635f8648e883a850293d92a46e95976a50) )
|
||||||
ROM_LOAD( "13", 0x04000, 0x4000, CRC(38bd54db) SHA1(75e999f606c410d7481bc4d29c4b523d45847649) )
|
ROM_LOAD( "a47_01.bin", 0x04000, 0x4000, CRC(65df2152) SHA1(8e1516905a4af379cb0d0b9d42ff1cc3179c3589) )
|
||||||
ROM_LOAD( "a47_02.bin", 0x08000, 0x4000, CRC(633d324b) SHA1(70a17d17ebe003bfb2246e92e925a343a92553e5) )
|
ROM_LOAD( "a47_02.bin", 0x08000, 0x4000, CRC(633d324b) SHA1(70a17d17ebe003bfb2246e92e925a343a92553e5) )
|
||||||
|
|
||||||
ROM_REGION( 0x10000, REGION_CPU2, 0 )
|
ROM_REGION( 0x10000, REGION_CPU2, 0 )
|
||||||
ROM_LOAD( "a47_03.bin", 0x0000, 0x2000, CRC(d105260f) SHA1(f6a0e393e29354bb37fb723828f3267d030a45ea) )
|
ROM_LOAD( "a47_03.bin", 0x0000, 0x2000, CRC(d105260f) SHA1(f6a0e393e29354bb37fb723828f3267d030a45ea) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x0800, REGION_CPU3, 0 )
|
||||||
|
/* is this the right mcu for this set? the mcu handling code in the roms seems patched and it doesn't work correctly */
|
||||||
|
// ROM_LOAD( "a47_14.6a", 0x0000, 0x0800, CRC(4042489f) SHA1(b977e0821b6b1aa5a0a0f349cd78150af1a231df) )
|
||||||
|
|
||||||
ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
|
ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
|
||||||
ROM_LOAD( "a47_05.bin", 0x00000, 0x2000, CRC(c5325b49) SHA1(6df9051e7545dcac4995340f80957510457aaf64) ) /* Chars */
|
ROM_LOAD( "a47_05.bin", 0x00000, 0x2000, CRC(c5325b49) SHA1(6df9051e7545dcac4995340f80957510457aaf64) ) /* Chars */
|
||||||
ROM_LOAD( "a47_04.bin", 0x02000, 0x2000, CRC(cd59628e) SHA1(7be6479f20eb51b79b93e6fd65ab219096d54984) )
|
ROM_LOAD( "a47_04.bin", 0x02000, 0x2000, CRC(cd59628e) SHA1(7be6479f20eb51b79b93e6fd65ab219096d54984) )
|
||||||
@ -1219,6 +1222,37 @@ ROM_START( tigerhb2 )
|
|||||||
ROM_LOAD( "82s129.12n", 0x0200, 0x0100, CRC(25f273f2) SHA1(2c696745f42fa09b64295a39536aeba08ab58d67) )
|
ROM_LOAD( "82s129.12n", 0x0200, 0x0100, CRC(25f273f2) SHA1(2c696745f42fa09b64295a39536aeba08ab58d67) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( tigerhb3 )
|
||||||
|
ROM_REGION( 0x10000, REGION_CPU1, 0 )
|
||||||
|
ROM_LOAD( "14", 0x00000, 0x4000, CRC(ca59dd73) SHA1(c07961fcc209ec10ace3830d79c8ccc1cfda9765) )
|
||||||
|
ROM_LOAD( "13", 0x04000, 0x4000, CRC(38bd54db) SHA1(75e999f606c410d7481bc4d29c4b523d45847649) )
|
||||||
|
ROM_LOAD( "a47_02.bin", 0x08000, 0x4000, CRC(633d324b) SHA1(70a17d17ebe003bfb2246e92e925a343a92553e5) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x10000, REGION_CPU2, 0 )
|
||||||
|
ROM_LOAD( "a47_03.bin", 0x0000, 0x2000, CRC(d105260f) SHA1(f6a0e393e29354bb37fb723828f3267d030a45ea) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
|
||||||
|
ROM_LOAD( "a47_05.bin", 0x00000, 0x2000, CRC(c5325b49) SHA1(6df9051e7545dcac4995340f80957510457aaf64) ) /* Chars */
|
||||||
|
ROM_LOAD( "a47_04.bin", 0x02000, 0x2000, CRC(cd59628e) SHA1(7be6479f20eb51b79b93e6fd65ab219096d54984) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x10000, REGION_GFX2, ROMREGION_DISPOSE )
|
||||||
|
ROM_LOAD( "a47_09.bin", 0x00000, 0x4000, CRC(31fae8a8) SHA1(ef8c23776431f00a74b25c5800755b6fa8d585ec) ) /* Tiles */
|
||||||
|
ROM_LOAD( "a47_08.bin", 0x04000, 0x4000, CRC(e539af2b) SHA1(0c8369a0fac1cbe40c07b51e16e8f8a9b8ed03b8) )
|
||||||
|
ROM_LOAD( "a47_07.bin", 0x08000, 0x4000, CRC(02fdd429) SHA1(fa392f2e57cfb6af4c124e0c151a4652f83e5577) )
|
||||||
|
ROM_LOAD( "a47_06.bin", 0x0c000, 0x4000, CRC(11fbcc8c) SHA1(b4fdb9ee00b749e1a54cfc0cdf55cc5e9bee3662) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE )
|
||||||
|
ROM_LOAD( "a47_13.bin", 0x00000, 0x4000, CRC(739a7e7e) SHA1(5fee71d9e1540903a6cf7bcaab30acaa088d35ed) ) /* Sprites */
|
||||||
|
ROM_LOAD( "a47_12.bin", 0x04000, 0x4000, CRC(c064ecdb) SHA1(fa8d712e2b2bda78b9375d96c93a4d7549c94075) )
|
||||||
|
ROM_LOAD( "a47_11.bin", 0x08000, 0x4000, CRC(744fae9b) SHA1(b324350469c51043e1d90ce58808d966467435b9) )
|
||||||
|
ROM_LOAD( "a47_10.bin", 0x0c000, 0x4000, CRC(e1cf844e) SHA1(eeb8eff09f96c693e147d155a8c0a87416d64603) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x0300, REGION_PROMS, 0 )
|
||||||
|
ROM_LOAD( "82s129.12q", 0x0000, 0x0100, CRC(2c69350d) SHA1(658bf63c6d1e718f99494cd1c9346c3622913beb) )
|
||||||
|
ROM_LOAD( "82s129.12m", 0x0100, 0x0100, CRC(7142e972) SHA1(4a854c2fdd006077aecb695832110ae6bf5819c1) )
|
||||||
|
ROM_LOAD( "82s129.12n", 0x0200, 0x0100, CRC(25f273f2) SHA1(2c696745f42fa09b64295a39536aeba08ab58d67) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
ROM_START( slapfigh )
|
ROM_START( slapfigh )
|
||||||
ROM_REGION( 0x18000, REGION_CPU1, 0 )
|
ROM_REGION( 0x18000, REGION_CPU1, 0 )
|
||||||
ROM_LOAD( "sf_r19.bin", 0x00000, 0x8000, CRC(674c0e0f) SHA1(69fc17881c89cc5e82b0fefec49c4116054f9e3b) )
|
ROM_LOAD( "sf_r19.bin", 0x00000, 0x8000, CRC(674c0e0f) SHA1(69fc17881c89cc5e82b0fefec49c4116054f9e3b) )
|
||||||
@ -1287,6 +1321,39 @@ ROM_START( slapfiga )
|
|||||||
ROM_LOAD( "sf_col19.bin", 0x0200, 0x0100, CRC(5cbf9fbf) SHA1(abfa58fa4e44ebc56f2e0fac9bcc36164c845fa3) )
|
ROM_LOAD( "sf_col19.bin", 0x0200, 0x0100, CRC(5cbf9fbf) SHA1(abfa58fa4e44ebc56f2e0fac9bcc36164c845fa3) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( alcon )
|
||||||
|
ROM_REGION( 0x18000, REGION_CPU1, 0 )
|
||||||
|
ROM_LOAD( "00", 0x00000, 0x8000, CRC(2ba82d60) SHA1(b37659aa18a3f96a3cc7fa93db2439f36487b8c8) )
|
||||||
|
ROM_LOAD( "01", 0x10000, 0x8000, CRC(18bb2f12) SHA1(7c16d4bbb8b5e22f227aff170e5e6326c5968968) ) /* banked at 8000 */
|
||||||
|
|
||||||
|
ROM_REGION( 0x10000, REGION_CPU2, 0 )
|
||||||
|
ROM_LOAD( "sf_r05.bin", 0x0000, 0x2000, CRC(87f4705a) SHA1(a90d5644ce268f3321047a4f96df96ac294d2f1b) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x0800, REGION_CPU3, 0 ) /* 2k for the microcontroller */
|
||||||
|
ROM_LOAD( "68705.bin", 0x0000, 0x0800, NO_DUMP )
|
||||||
|
|
||||||
|
ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
|
||||||
|
ROM_LOAD( "04", 0x00000, 0x2000, CRC(31003483) SHA1(7014ceb6313ac5a3d2dcb735643dfd8bfabaa185) ) /* Chars */
|
||||||
|
ROM_LOAD( "03", 0x02000, 0x2000, CRC(404152c0) SHA1(d05bc9baa1f336475fffc2f19f1018e9f0547f10) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
|
||||||
|
ROM_LOAD( "sf_r06.bin", 0x00000, 0x8000, CRC(b6358305) SHA1(c7bb4236a75ec6b88f011bc30f8fb9a718e2ca3e) ) /* Tiles */
|
||||||
|
ROM_LOAD( "sf_r09.bin", 0x08000, 0x8000, CRC(e92d9d60) SHA1(2554617e0e6615ca8c85a49299a4a0e762478339) )
|
||||||
|
ROM_LOAD( "sf_r08.bin", 0x10000, 0x8000, CRC(5faeeea3) SHA1(696fba24bcf1f3a7e914a4403854da5eededaf7f) )
|
||||||
|
ROM_LOAD( "sf_r07.bin", 0x18000, 0x8000, CRC(974e2ea9) SHA1(3840550fc3a833828dad8f3e300d2ea583d69ce7) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE )
|
||||||
|
ROM_LOAD( "sf_r03.bin", 0x00000, 0x8000, CRC(8545d397) SHA1(9a1fd5bfd8fb830b8e46643c08eef32ba968fc23) ) /* Sprites */
|
||||||
|
ROM_LOAD( "sf_r01.bin", 0x08000, 0x8000, CRC(b1b7b925) SHA1(199b0b52bbeb384211171eca5c50a1c0ebf6826f) )
|
||||||
|
ROM_LOAD( "sf_r04.bin", 0x10000, 0x8000, CRC(422d946b) SHA1(c251ef9597a11ec8de39be4fcbddaba84e649ef2) )
|
||||||
|
ROM_LOAD( "sf_r02.bin", 0x18000, 0x8000, CRC(587113ae) SHA1(90abe961494a1af7c87693a419fbabf7a58a5dee) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x0300, REGION_PROMS, 0 )
|
||||||
|
ROM_LOAD( "sf_col21.bin", 0x0000, 0x0100, CRC(a0efaf99) SHA1(5df01663480acad1f89abab8662d437617a66d1c) )
|
||||||
|
ROM_LOAD( "sf_col20.bin", 0x0100, 0x0100, CRC(a56d57e5) SHA1(bfbd0db52b23fe1b4994e05103be3d412c1c013e) )
|
||||||
|
ROM_LOAD( "sf_col19.bin", 0x0200, 0x0100, CRC(5cbf9fbf) SHA1(abfa58fa4e44ebc56f2e0fac9bcc36164c845fa3) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
ROM_START( slapbtjp )
|
ROM_START( slapbtjp )
|
||||||
ROM_REGION( 0x18000, REGION_CPU1, 0 )
|
ROM_REGION( 0x18000, REGION_CPU1, 0 )
|
||||||
ROM_LOAD( "sf_r19jb.bin", 0x00000, 0x8000, CRC(9a7ac8b3) SHA1(01fbad9b4fc80f2406eff18db20e196e212d0c17) )
|
ROM_LOAD( "sf_r19jb.bin", 0x00000, 0x8000, CRC(9a7ac8b3) SHA1(01fbad9b4fc80f2406eff18db20e196e212d0c17) )
|
||||||
@ -1381,39 +1448,6 @@ ROM_START( slapfgtr )
|
|||||||
ROM_LOAD( "sf_col19.bin", 0x0200, 0x0100, CRC(5cbf9fbf) SHA1(abfa58fa4e44ebc56f2e0fac9bcc36164c845fa3) )
|
ROM_LOAD( "sf_col19.bin", 0x0200, 0x0100, CRC(5cbf9fbf) SHA1(abfa58fa4e44ebc56f2e0fac9bcc36164c845fa3) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( alcon )
|
|
||||||
ROM_REGION( 0x18000, REGION_CPU1, 0 )
|
|
||||||
ROM_LOAD( "00", 0x00000, 0x8000, CRC(2ba82d60) SHA1(b37659aa18a3f96a3cc7fa93db2439f36487b8c8) )
|
|
||||||
ROM_LOAD( "01", 0x10000, 0x8000, CRC(18bb2f12) SHA1(7c16d4bbb8b5e22f227aff170e5e6326c5968968) ) /* banked at 8000 */
|
|
||||||
|
|
||||||
ROM_REGION( 0x10000, REGION_CPU2, 0 )
|
|
||||||
ROM_LOAD( "sf_r05.bin", 0x0000, 0x2000, CRC(87f4705a) SHA1(a90d5644ce268f3321047a4f96df96ac294d2f1b) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x0800, REGION_CPU3, 0 ) /* 2k for the microcontroller */
|
|
||||||
ROM_LOAD( "68705.bin", 0x0000, 0x0800, NO_DUMP )
|
|
||||||
|
|
||||||
ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
|
|
||||||
ROM_LOAD( "04", 0x00000, 0x2000, CRC(31003483) SHA1(7014ceb6313ac5a3d2dcb735643dfd8bfabaa185) ) /* Chars */
|
|
||||||
ROM_LOAD( "03", 0x02000, 0x2000, CRC(404152c0) SHA1(d05bc9baa1f336475fffc2f19f1018e9f0547f10) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
|
|
||||||
ROM_LOAD( "sf_r06.bin", 0x00000, 0x8000, CRC(b6358305) SHA1(c7bb4236a75ec6b88f011bc30f8fb9a718e2ca3e) ) /* Tiles */
|
|
||||||
ROM_LOAD( "sf_r09.bin", 0x08000, 0x8000, CRC(e92d9d60) SHA1(2554617e0e6615ca8c85a49299a4a0e762478339) )
|
|
||||||
ROM_LOAD( "sf_r08.bin", 0x10000, 0x8000, CRC(5faeeea3) SHA1(696fba24bcf1f3a7e914a4403854da5eededaf7f) )
|
|
||||||
ROM_LOAD( "sf_r07.bin", 0x18000, 0x8000, CRC(974e2ea9) SHA1(3840550fc3a833828dad8f3e300d2ea583d69ce7) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE )
|
|
||||||
ROM_LOAD( "sf_r03.bin", 0x00000, 0x8000, CRC(8545d397) SHA1(9a1fd5bfd8fb830b8e46643c08eef32ba968fc23) ) /* Sprites */
|
|
||||||
ROM_LOAD( "sf_r01.bin", 0x08000, 0x8000, CRC(b1b7b925) SHA1(199b0b52bbeb384211171eca5c50a1c0ebf6826f) )
|
|
||||||
ROM_LOAD( "sf_r04.bin", 0x10000, 0x8000, CRC(422d946b) SHA1(c251ef9597a11ec8de39be4fcbddaba84e649ef2) )
|
|
||||||
ROM_LOAD( "sf_r02.bin", 0x18000, 0x8000, CRC(587113ae) SHA1(90abe961494a1af7c87693a419fbabf7a58a5dee) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x0300, REGION_PROMS, 0 )
|
|
||||||
ROM_LOAD( "sf_col21.bin", 0x0000, 0x0100, CRC(a0efaf99) SHA1(5df01663480acad1f89abab8662d437617a66d1c) )
|
|
||||||
ROM_LOAD( "sf_col20.bin", 0x0100, 0x0100, CRC(a56d57e5) SHA1(bfbd0db52b23fe1b4994e05103be3d412c1c013e) )
|
|
||||||
ROM_LOAD( "sf_col19.bin", 0x0200, 0x0100, CRC(5cbf9fbf) SHA1(abfa58fa4e44ebc56f2e0fac9bcc36164c845fa3) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( getstar )
|
ROM_START( getstar )
|
||||||
ROM_REGION( 0x18000, REGION_CPU1, 0 ) /* Region 0 - main cpu code */
|
ROM_REGION( 0x18000, REGION_CPU1, 0 ) /* Region 0 - main cpu code */
|
||||||
ROM_LOAD( "rom0", 0x00000, 0x4000, CRC(6a8bdc6c) SHA1(c923bca539bd2eb9a34cb9c7a67a199e28bc081a) )
|
ROM_LOAD( "rom0", 0x00000, 0x4000, CRC(6a8bdc6c) SHA1(c923bca539bd2eb9a34cb9c7a67a199e28bc081a) )
|
||||||
@ -1482,38 +1516,7 @@ ROM_START( getstarj )
|
|||||||
ROM_LOAD( "rom19", 0x0200, 0x0100, CRC(513224f0) SHA1(15b34612206138f6fc5f7478925b1fff2ed56aa8) )
|
ROM_LOAD( "rom19", 0x0200, 0x0100, CRC(513224f0) SHA1(15b34612206138f6fc5f7478925b1fff2ed56aa8) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START( getstarb )
|
ROM_START( gtstarb1 )
|
||||||
ROM_REGION( 0x18000, REGION_CPU1, 0 ) /* Region 0 - main cpu code */
|
|
||||||
ROM_LOAD( "gs_14.rom", 0x00000, 0x4000, CRC(1a57a920) SHA1(b1e9d5b29c0e3632eec3ad1ee51bf3392e4b816d) )
|
|
||||||
ROM_LOAD( "gs_13.rom", 0x04000, 0x4000, CRC(805f8e77) SHA1(c3ad6eae842d2d10f716998d5a803038fa7b338f) )
|
|
||||||
ROM_LOAD( "a68_02.bin", 0x10000, 0x8000, CRC(3567da17) SHA1(29d698606d0bd30abfc3171d79bfad95b0de89fc) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Region 3 - sound cpu code */
|
|
||||||
ROM_LOAD( "a68-03", 0x0000, 0x2000, CRC(18daa44c) SHA1(1a3d22a186c591321d1b836ee30d89fba4771122) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE ) /* Region 1 - temporary for gfx */
|
|
||||||
ROM_LOAD( "a68_05.bin", 0x00000, 0x2000, CRC(e3d409e7) SHA1(0b6be4767f110729f4dd1a472ef8d9a0c718b684) ) /* Chars */
|
|
||||||
ROM_LOAD( "a68_04.bin", 0x02000, 0x2000, CRC(6e5ac9d4) SHA1(74f90b7a1ceb3b1c2fd92dff100d92dea0155530) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* Region 1 - temporary for gfx */
|
|
||||||
ROM_LOAD( "a68_09", 0x00000, 0x8000, CRC(a293cc2e) SHA1(a2c2598e92982d13b51cbb6efb4b963142233433) ) /* Tiles */
|
|
||||||
ROM_LOAD( "a68_08", 0x08000, 0x8000, CRC(37662375) SHA1(46ba8a3f0b553d476ecf431d0d20556896b4ca43) )
|
|
||||||
ROM_LOAD( "a68_07", 0x10000, 0x8000, CRC(cf1a964c) SHA1(e9223c8d4f3bdafed193a1ded63e377f16f45e17) )
|
|
||||||
ROM_LOAD( "a68_06", 0x18000, 0x8000, CRC(05f9eb9a) SHA1(a71640a63b259799086d361ef293aa26cec46a0c) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* Region 1 - temporary for gfx */
|
|
||||||
ROM_LOAD( "a68-13", 0x00000, 0x8000, CRC(643fb282) SHA1(d904d3c27c2b56341929c5eed4ea97e948c53c34) ) /* Sprites */
|
|
||||||
ROM_LOAD( "a68-12", 0x08000, 0x8000, CRC(11f74e32) SHA1(02d8b4cc679f45a02c4989f2b62cde91b7418235) )
|
|
||||||
ROM_LOAD( "a68-11", 0x10000, 0x8000, CRC(f24158cf) SHA1(db4c6b68a488b0798ea5f793ac8ced283a8ecab2) )
|
|
||||||
ROM_LOAD( "a68-10", 0x18000, 0x8000, CRC(83161ed0) SHA1(a6aa28f22f487dc3a2ec07935e6d42bcdd1eff81) )
|
|
||||||
|
|
||||||
ROM_REGION( 0x0300, REGION_PROMS, 0 )
|
|
||||||
ROM_LOAD( "rom21", 0x0000, 0x0100, CRC(d6360b4d) SHA1(3e64548c82a3378fc091e104cdc2b0c7e592fc44) )
|
|
||||||
ROM_LOAD( "rom20", 0x0100, 0x0100, CRC(4ca01887) SHA1(2892c89d5e60f1d10593adffff55c1a9654e8209) )
|
|
||||||
ROM_LOAD( "rom19", 0x0200, 0x0100, CRC(513224f0) SHA1(15b34612206138f6fc5f7478925b1fff2ed56aa8) )
|
|
||||||
ROM_END
|
|
||||||
|
|
||||||
ROM_START( gtstarba )
|
|
||||||
ROM_REGION( 0x18000, REGION_CPU1, 0 ) /* Region 0 - main cpu code */
|
ROM_REGION( 0x18000, REGION_CPU1, 0 ) /* Region 0 - main cpu code */
|
||||||
ROM_LOAD( "gs_rb_1.bin", 0x00000, 0x4000, CRC(9afad7e0) SHA1(6b2e82a6b7fcbfed5f4d250959ecc571fdf0cbc2) )
|
ROM_LOAD( "gs_rb_1.bin", 0x00000, 0x4000, CRC(9afad7e0) SHA1(6b2e82a6b7fcbfed5f4d250959ecc571fdf0cbc2) )
|
||||||
ROM_LOAD( "gs_rb_2.bin", 0x04000, 0x4000, CRC(5feb0a60) SHA1(b1300055180ddf6ca96475eb3a27a17722273fc6) )
|
ROM_LOAD( "gs_rb_2.bin", 0x04000, 0x4000, CRC(5feb0a60) SHA1(b1300055180ddf6ca96475eb3a27a17722273fc6) )
|
||||||
@ -1549,56 +1552,143 @@ ROM_START( gtstarba )
|
|||||||
ROM_LOAD( "rom19", 0x0200, 0x0100, CRC(513224f0) SHA1(15b34612206138f6fc5f7478925b1fff2ed56aa8) )
|
ROM_LOAD( "rom19", 0x0200, 0x0100, CRC(513224f0) SHA1(15b34612206138f6fc5f7478925b1fff2ed56aa8) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( gtstarb2 )
|
||||||
|
ROM_REGION( 0x18000, REGION_CPU1, 0 ) /* Region 0 - main cpu code */
|
||||||
|
ROM_LOAD( "gs_14.rom", 0x00000, 0x4000, CRC(1a57a920) SHA1(b1e9d5b29c0e3632eec3ad1ee51bf3392e4b816d) )
|
||||||
|
ROM_LOAD( "gs_13.rom", 0x04000, 0x4000, CRC(805f8e77) SHA1(c3ad6eae842d2d10f716998d5a803038fa7b338f) )
|
||||||
|
ROM_LOAD( "a68_02.bin", 0x10000, 0x8000, CRC(3567da17) SHA1(29d698606d0bd30abfc3171d79bfad95b0de89fc) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Region 3 - sound cpu code */
|
||||||
|
ROM_LOAD( "a68-03", 0x0000, 0x2000, CRC(18daa44c) SHA1(1a3d22a186c591321d1b836ee30d89fba4771122) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE ) /* Region 1 - temporary for gfx */
|
||||||
|
ROM_LOAD( "a68_05.bin", 0x00000, 0x2000, CRC(e3d409e7) SHA1(0b6be4767f110729f4dd1a472ef8d9a0c718b684) ) /* Chars */
|
||||||
|
ROM_LOAD( "a68_04.bin", 0x02000, 0x2000, CRC(6e5ac9d4) SHA1(74f90b7a1ceb3b1c2fd92dff100d92dea0155530) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* Region 1 - temporary for gfx */
|
||||||
|
ROM_LOAD( "a68_09", 0x00000, 0x8000, CRC(a293cc2e) SHA1(a2c2598e92982d13b51cbb6efb4b963142233433) ) /* Tiles */
|
||||||
|
ROM_LOAD( "a68_08", 0x08000, 0x8000, CRC(37662375) SHA1(46ba8a3f0b553d476ecf431d0d20556896b4ca43) )
|
||||||
|
ROM_LOAD( "a68_07", 0x10000, 0x8000, CRC(cf1a964c) SHA1(e9223c8d4f3bdafed193a1ded63e377f16f45e17) )
|
||||||
|
ROM_LOAD( "a68_06", 0x18000, 0x8000, CRC(05f9eb9a) SHA1(a71640a63b259799086d361ef293aa26cec46a0c) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* Region 1 - temporary for gfx */
|
||||||
|
ROM_LOAD( "a68-13", 0x00000, 0x8000, CRC(643fb282) SHA1(d904d3c27c2b56341929c5eed4ea97e948c53c34) ) /* Sprites */
|
||||||
|
ROM_LOAD( "a68-12", 0x08000, 0x8000, CRC(11f74e32) SHA1(02d8b4cc679f45a02c4989f2b62cde91b7418235) )
|
||||||
|
ROM_LOAD( "a68-11", 0x10000, 0x8000, CRC(f24158cf) SHA1(db4c6b68a488b0798ea5f793ac8ced283a8ecab2) )
|
||||||
|
ROM_LOAD( "a68-10", 0x18000, 0x8000, CRC(83161ed0) SHA1(a6aa28f22f487dc3a2ec07935e6d42bcdd1eff81) )
|
||||||
|
|
||||||
|
ROM_REGION( 0x0300, REGION_PROMS, 0 )
|
||||||
|
ROM_LOAD( "rom21", 0x0000, 0x0100, CRC(d6360b4d) SHA1(3e64548c82a3378fc091e104cdc2b0c7e592fc44) )
|
||||||
|
ROM_LOAD( "rom20", 0x0100, 0x0100, CRC(4ca01887) SHA1(2892c89d5e60f1d10593adffff55c1a9654e8209) )
|
||||||
|
ROM_LOAD( "rom19", 0x0200, 0x0100, CRC(513224f0) SHA1(15b34612206138f6fc5f7478925b1fff2ed56aa8) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
static DRIVER_INIT( tigerh )
|
static DRIVER_INIT( tigerh )
|
||||||
{
|
{
|
||||||
memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xe803, 0xe803, 0, 0, tigerh_mcu_r, tigerh_mcu_w );
|
memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xe803, 0xe803, 0, 0, tigerh_mcu_r, tigerh_mcu_w );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static READ8_HANDLER( getstar_mcu_r )
|
static DRIVER_INIT( tigerhb )
|
||||||
{
|
{
|
||||||
/* pass the first check only */
|
memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xe803, 0xe803, 0, 0, tigerhb_e803_r, tigerhb_e803_w );
|
||||||
return 0x76;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static DRIVER_INIT( getstar )
|
|
||||||
{
|
|
||||||
memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xe803, 0xe803, 0, 0, getstar_mcu_r );
|
|
||||||
// memory_install_write8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xe803, 0xe803, 0, 0, getstar_mcu_w );
|
|
||||||
}
|
|
||||||
|
|
||||||
static DRIVER_INIT( getstarb )
|
static READ8_HANDLER( gtstarb1_port_0_read )
|
||||||
{
|
{
|
||||||
memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xe803, 0xe803, 0, 0, getstar_e803_r );
|
/* The bootleg has it's own 'protection' on startup ?
|
||||||
}
|
6D1A: 06 04 ld b,$04
|
||||||
|
6D1C: DB 00 in a,($00)
|
||||||
static READ8_HANDLER( gtstarba_port_0_read )
|
6D1E: E6 06 and $06
|
||||||
{
|
6D20: 20 FA jr nz,$6D1C
|
||||||
/* the bootleg has it's own 'protection' on startup? */
|
6D22: DB 00 in a,($00)
|
||||||
|
6D24: E6 06 and $06
|
||||||
|
6D26: FE 06 cp $06
|
||||||
|
6D28: 20 F8 jr nz,$6D22
|
||||||
|
6D2A: DB 00 in a,($00)
|
||||||
|
6D2C: E6 06 and $06
|
||||||
|
6D2E: FE 02 cp $02
|
||||||
|
6D30: 20 F8 jr nz,$6D2A
|
||||||
|
6D32: DB 00 in a,($00)
|
||||||
|
6D34: E6 06 and $06
|
||||||
|
6D36: FE 04 cp $04
|
||||||
|
6D38: 20 F8 jr nz,$6D32
|
||||||
|
6D3A: 10 E0 djnz $6D1C
|
||||||
|
*/
|
||||||
if (activecpu_get_pc() == 0x6d1e) return 0;
|
if (activecpu_get_pc() == 0x6d1e) return 0;
|
||||||
if (activecpu_get_pc() == 0x6d24) return 6;
|
if (activecpu_get_pc() == 0x6d24) return 6;
|
||||||
if (activecpu_get_pc() == 0x6d2c) return 2;
|
if (activecpu_get_pc() == 0x6d2c) return 2;
|
||||||
if (activecpu_get_pc() == 0x6d34) return 4;
|
if (activecpu_get_pc() == 0x6d34) return 4;
|
||||||
|
|
||||||
|
/* The bootleg hangs in the "test mode" before diplaying (wrong) lives settings :
|
||||||
|
6AD4: DB 00 in a,($00)
|
||||||
|
6AD6: CB 4F bit 1,a
|
||||||
|
6AD8: 28 FA jr z,$6AD4
|
||||||
|
6ADA: 3E 23 ld a,$23
|
||||||
|
6ADC: CD 52 11 call $1152
|
||||||
|
6ADF: 32 03 E8 ld ($E803),a
|
||||||
|
6AE2: DB 00 in a,($00)
|
||||||
|
6AE4: CB 4F bit 1,a
|
||||||
|
6AE6: 28 FA jr z,$6AE2
|
||||||
|
6AE8: 3A 0A C8 ld a,($C80A)
|
||||||
|
6AEB: E6 03 and $03
|
||||||
|
6AED: CD 52 11 call $1152
|
||||||
|
6AF0: 32 03 E8 ld ($E803),a
|
||||||
|
6AF3: DB 00 in a,($00)
|
||||||
|
6AF5: CB 57 bit 2,a
|
||||||
|
6AF7: 20 FA jr nz,$6AF3
|
||||||
|
This seems to be what used to be the MCU status.
|
||||||
|
*/
|
||||||
|
if (activecpu_get_pc() == 0x6ad6) return 2; /* bit 1 must be ON */
|
||||||
|
if (activecpu_get_pc() == 0x6ae4) return 2; /* bit 1 must be ON */
|
||||||
|
if (activecpu_get_pc() == 0x6af5) return 0; /* bit 2 must be OFF */
|
||||||
|
|
||||||
logerror("Port Read PC=%04x\n",activecpu_get_pc());
|
logerror("Port Read PC=%04x\n",activecpu_get_pc());
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static READ8_HANDLER( gtstarba_dpram_r )
|
static READ8_HANDLER( gtstarb1_dpram_r )
|
||||||
{
|
{
|
||||||
/* requires this or it gets stuck with 'rom test' on screen */
|
/* requires this or it gets stuck with 'rom test' on screen */
|
||||||
/* it is possible the program roms are slighly corrupt like the gfx roms, or
|
/* it is possible the program roms are slighly corrupt like the gfx roms, or
|
||||||
that the bootleg simply shouldn't execute the code due to the modified
|
that the bootleg simply shouldn't execute the code due to the modified roms */
|
||||||
roms */
|
|
||||||
if (activecpu_get_pc()==0x6d54) return 0xff;
|
if (activecpu_get_pc()==0x6d54) return 0xff;
|
||||||
return slapfight_dpram[offset];
|
return slapfight_dpram[offset];
|
||||||
}
|
}
|
||||||
|
|
||||||
static DRIVER_INIT( gtstarba )
|
static void getstar_init( running_machine *machine )
|
||||||
{
|
{
|
||||||
memory_install_read8_handler(machine, 0, ADDRESS_SPACE_IO, 0x0, 0x0, 0, 0, gtstarba_port_0_read );
|
memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xe803, 0xe803, 0, 0, getstar_e803_r, getstar_e803_w );
|
||||||
memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xc800, 0xc80f, 0, 0, gtstarba_dpram_r );
|
}
|
||||||
|
|
||||||
|
static DRIVER_INIT( getstar )
|
||||||
|
{
|
||||||
|
getstar_id = GETSTAR;
|
||||||
|
getstar_init(machine);
|
||||||
|
}
|
||||||
|
|
||||||
|
static DRIVER_INIT( getstarj )
|
||||||
|
{
|
||||||
|
getstar_id = GETSTARJ;
|
||||||
|
getstar_init(machine);
|
||||||
|
}
|
||||||
|
|
||||||
|
static DRIVER_INIT( gtstarb1 )
|
||||||
|
{
|
||||||
|
getstar_id = GTSTARB1;
|
||||||
|
getstar_init(machine);
|
||||||
|
|
||||||
|
/* specific handlers for this bootleg */
|
||||||
|
memory_install_read8_handler(machine, 0, ADDRESS_SPACE_IO, 0x0, 0x0, 0, 0, gtstarb1_port_0_read );
|
||||||
|
memory_install_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xc800, 0xc80f, 0, 0, gtstarb1_dpram_r );
|
||||||
|
}
|
||||||
|
|
||||||
|
static DRIVER_INIT( gtstarb2 )
|
||||||
|
{
|
||||||
|
getstar_id = GTSTARB2;
|
||||||
|
getstar_init(machine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1638,17 +1728,17 @@ static DRIVER_INIT( slapfigh )
|
|||||||
GAME( 1985, perfrman, 0, perfrman, perfrman, 0, ROT270, "[Toaplan] Data East Corporation", "Performan (Japan)", 0 )
|
GAME( 1985, perfrman, 0, perfrman, perfrman, 0, ROT270, "[Toaplan] Data East Corporation", "Performan (Japan)", 0 )
|
||||||
GAME( 1985, perfrmau, perfrman, perfrman, perfrman, 0, ROT270, "[Toaplan] Data East USA", "Performan (US)", 0 )
|
GAME( 1985, perfrmau, perfrman, perfrman, perfrman, 0, ROT270, "[Toaplan] Data East USA", "Performan (US)", 0 )
|
||||||
GAME( 1985, tigerh, 0, tigerh, tigerh, tigerh, ROT270, "Taito America Corp.", "Tiger Heli (US)", GAME_NO_COCKTAIL )
|
GAME( 1985, tigerh, 0, tigerh, tigerh, tigerh, ROT270, "Taito America Corp.", "Tiger Heli (US)", GAME_NO_COCKTAIL )
|
||||||
GAME( 1985, tigerh2, tigerh, tigerh, tigerh, tigerh, ROT270, "Taito", "Tiger Heli (Japan set 1)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
GAME( 1985, tigerhj, tigerh, tigerh, tigerh, tigerh, ROT270, "Taito", "Tiger Heli (Japan)", GAME_NO_COCKTAIL )
|
||||||
GAME( 1985, tigerhj, tigerh, tigerh, tigerh, tigerh, ROT270, "Taito", "Tiger Heli (Japan set 2)", GAME_NO_COCKTAIL )
|
GAME( 1985, tigerhb1, tigerh, tigerhb, tigerh, tigerhb, ROT270, "bootleg", "Tiger Heli (bootleg set 1)", GAME_NO_COCKTAIL )
|
||||||
GAME( 1985, tigerhb1, tigerh, tigerhb, tigerh, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 1)", 0 )
|
|
||||||
GAME( 1985, tigerhb2, tigerh, tigerhb, tigerh, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 2)", GAME_NO_COCKTAIL )
|
GAME( 1985, tigerhb2, tigerh, tigerhb, tigerh, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 2)", GAME_NO_COCKTAIL )
|
||||||
|
GAME( 1985, tigerhb3, tigerh, tigerhb, tigerh, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 3)", GAME_NO_COCKTAIL )
|
||||||
GAME( 1986, slapfigh, 0, slapfigh, slapfigh, slapfigh, ROT270, "Taito", "Slap Fight (set 1)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
GAME( 1986, slapfigh, 0, slapfigh, slapfigh, slapfigh, ROT270, "Taito", "Slap Fight (set 1)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
||||||
GAME( 1986, slapfiga, slapfigh, slapfigh, slapfigh, slapfigh, ROT270, "Taito", "Slap Fight (set 2)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
GAME( 1986, slapfiga, slapfigh, slapfigh, slapfigh, slapfigh, ROT270, "Taito", "Slap Fight (set 2)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
||||||
|
GAME( 1986, alcon, slapfigh, slapfigh, slapfigh, slapfigh, ROT270, "Taito America Corp.", "Alcon", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
||||||
GAME( 1986, slapbtjp, slapfigh, slapfigh, slapfigh, 0, ROT270, "bootleg", "Slap Fight (Japan bootleg)", GAME_NO_COCKTAIL )
|
GAME( 1986, slapbtjp, slapfigh, slapfigh, slapfigh, 0, ROT270, "bootleg", "Slap Fight (Japan bootleg)", GAME_NO_COCKTAIL )
|
||||||
GAME( 1986, slapbtuk, slapfigh, slapbtuk, slapfigh, 0, ROT270, "bootleg", "Slap Fight (English bootleg)", GAME_NO_COCKTAIL )
|
GAME( 1986, slapbtuk, slapfigh, slapbtuk, slapfigh, 0, ROT270, "bootleg", "Slap Fight (English bootleg)", GAME_NO_COCKTAIL )
|
||||||
GAME( 1986, slapfgtr, slapfigh, slapbtuk, slapfigh, 0, ROT270, "bootleg", "Slap Fight (bootleg)", GAME_NO_COCKTAIL ) // PCB labeled 'slap fighter'
|
GAME( 1986, slapfgtr, slapfigh, slapbtuk, slapfigh, 0, ROT270, "bootleg", "Slap Fight (bootleg)", GAME_NO_COCKTAIL ) // PCB labeled 'slap fighter'
|
||||||
GAME( 1986, alcon, slapfigh, slapfigh, slapfigh, slapfigh, ROT270, "Taito America Corp.", "Alcon", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
GAME( 1986, getstar, 0, slapfigh, getstar, getstar, ROT0, "Taito America Corporation (Kitkorp license)", "Guardian (US)", GAME_NO_COCKTAIL )
|
||||||
GAME( 1986, getstar, 0, slapfigh, getstar, getstar, ROT0, "Taito", "Guardian", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
GAME( 1986, getstarj, getstar, slapfigh, getstarj, getstarj, ROT0, "Taito", "Get Star (Japan)", GAME_NO_COCKTAIL )
|
||||||
GAME( 1986, getstarj, getstar, slapfigh, getstar, getstar, ROT0, "Taito", "Get Star (Japan)", GAME_NOT_WORKING | GAME_NO_COCKTAIL )
|
GAME( 1986, gtstarb1, getstar, slapfigh, getstarj, gtstarb1, ROT0, "bootleg", "Get Star (bootleg set 1)", GAME_NO_COCKTAIL )
|
||||||
GAME( 1986, getstarb, getstar, slapfigh, getstar, getstarb, ROT0, "bootleg", "Get Star (bootleg set 1)", GAME_NO_COCKTAIL )
|
GAME( 1986, gtstarb2, getstar, slapfigh, gtstarb2, gtstarb2, ROT0, "bootleg", "Get Star (bootleg set 2)", GAME_NO_COCKTAIL )
|
||||||
GAME( 1986, gtstarba, getstar, slapfigh, gtstarba, gtstarba, ROT0, "bootleg", "Get Star (bootleg set 2)", GAME_NO_COCKTAIL )
|
|
||||||
|
@ -1,3 +1,35 @@
|
|||||||
|
#include "cpu/z80/z80.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* This it the best way to allow game specific kludges until the system is fully understood */
|
||||||
|
enum {
|
||||||
|
GETSTUNK=0, /* unknown for inclusion of possible new sets */
|
||||||
|
GETSTAR,
|
||||||
|
GETSTARJ,
|
||||||
|
GTSTARB1, /* "good" bootleg with same behaviour as 'getstarj' */
|
||||||
|
GTSTARB2, /* "lame" bootleg with lots of ingame bugs */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*----------- defines -----------*/
|
||||||
|
|
||||||
|
/* due to code at 0x108d (GUARDIAN) or 0x1152 (GETSTARJ),
|
||||||
|
register C is a unaltered copy of register A */
|
||||||
|
|
||||||
|
# define GS_SAVE_REGS gs_a = activecpu_get_reg(Z80_BC) >> 0; \
|
||||||
|
gs_d = activecpu_get_reg(Z80_DE) >> 8; \
|
||||||
|
gs_e = activecpu_get_reg(Z80_DE) >> 0;
|
||||||
|
|
||||||
|
# define GS_RESET_REGS gs_a = 0; \
|
||||||
|
gs_d = 0; \
|
||||||
|
gs_e = 0;
|
||||||
|
|
||||||
|
|
||||||
|
/*----------- defined in drivers/slapfght.c -----------*/
|
||||||
|
|
||||||
|
extern int getstar_id;
|
||||||
|
|
||||||
|
|
||||||
/*----------- defined in machine/slapfght.c -----------*/
|
/*----------- defined in machine/slapfght.c -----------*/
|
||||||
|
|
||||||
MACHINE_RESET( slapfight );
|
MACHINE_RESET( slapfight );
|
||||||
@ -15,7 +47,10 @@ WRITE8_HANDLER( slapfight_port_07_w );
|
|||||||
WRITE8_HANDLER( slapfight_port_08_w );
|
WRITE8_HANDLER( slapfight_port_08_w );
|
||||||
WRITE8_HANDLER( slapfight_port_09_w );
|
WRITE8_HANDLER( slapfight_port_09_w );
|
||||||
|
|
||||||
|
|
||||||
READ8_HANDLER( getstar_e803_r );
|
READ8_HANDLER( getstar_e803_r );
|
||||||
|
WRITE8_HANDLER( getstar_e803_w );
|
||||||
|
|
||||||
|
|
||||||
READ8_HANDLER ( tigerh_68705_portA_r );
|
READ8_HANDLER ( tigerh_68705_portA_r );
|
||||||
WRITE8_HANDLER( tigerh_68705_portA_w );
|
WRITE8_HANDLER( tigerh_68705_portA_w );
|
||||||
@ -30,6 +65,10 @@ WRITE8_HANDLER( tigerh_mcu_w );
|
|||||||
READ8_HANDLER ( tigerh_mcu_r );
|
READ8_HANDLER ( tigerh_mcu_r );
|
||||||
READ8_HANDLER ( tigerh_mcu_status_r );
|
READ8_HANDLER ( tigerh_mcu_status_r );
|
||||||
|
|
||||||
|
READ8_HANDLER( tigerhb_e803_r );
|
||||||
|
WRITE8_HANDLER( tigerhb_e803_w );
|
||||||
|
|
||||||
|
|
||||||
WRITE8_HANDLER( getstar_sh_intenable_w );
|
WRITE8_HANDLER( getstar_sh_intenable_w );
|
||||||
INTERRUPT_GEN( getstar_interrupt );
|
INTERRUPT_GEN( getstar_interrupt );
|
||||||
|
|
||||||
|
@ -22,6 +22,16 @@ static int slapfight_status_state;
|
|||||||
|
|
||||||
static UINT8 mcu_val;
|
static UINT8 mcu_val;
|
||||||
|
|
||||||
|
|
||||||
|
/* used for MCU simulation of 'getstar' and its clones */
|
||||||
|
static UINT8 getstar_cmd;
|
||||||
|
/* copy of some Z80 registers for 'getstar' and its clones */
|
||||||
|
static UINT8 gs_a, gs_d, gs_e;
|
||||||
|
|
||||||
|
/* used for MCU simulation of 'tigerhb1' */
|
||||||
|
static UINT8 tigerhb_cmd;
|
||||||
|
|
||||||
|
|
||||||
/* Perform basic machine initialisation */
|
/* Perform basic machine initialisation */
|
||||||
MACHINE_RESET( slapfight )
|
MACHINE_RESET( slapfight )
|
||||||
{
|
{
|
||||||
@ -114,21 +124,559 @@ READ8_HANDLER( slapfight_port_00_r )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
Reads at e803 expect a sequence of values such that:
|
|
||||||
- first value is different from successive
|
|
||||||
- third value is (first+5)^0x56
|
|
||||||
I don't know what writes to this address do (connected to port 0 reads?).
|
|
||||||
*/
|
|
||||||
READ8_HANDLER( getstar_e803_r )
|
READ8_HANDLER( getstar_e803_r )
|
||||||
{
|
{
|
||||||
static const UINT8 seq[] = { 0, 1, ((0+5)^0x56) };
|
UINT16 tmp = 0; /* needed for values computed on 16 bits */
|
||||||
UINT8 val;
|
UINT8 getstar_val = 0;
|
||||||
|
UINT8 phase_lookup_table[] = {0x00, 0x01, 0x03, 0xff, 0xff, 0x02, 0x05, 0xff, 0xff, 0x05}; /* table at 0x0e05 in 'gtstarb1' */
|
||||||
|
UINT8 lives_lookup_table[] = {0x03, 0x05, 0x01, 0x02}; /* table at 0x0e62 in 'gtstarb1' */
|
||||||
|
UINT8 lgsb2_lookup_table[] = {0x00, 0x03, 0x04, 0x05}; /* fake tanle for "test mode" in 'gtstarb2' */
|
||||||
|
|
||||||
val = seq[getstar_sequence_index];
|
switch (getstar_id)
|
||||||
getstar_sequence_index = (getstar_sequence_index+1)%3;
|
{
|
||||||
return val;
|
case GETSTAR:
|
||||||
|
case GETSTARJ:
|
||||||
|
switch (getstar_cmd)
|
||||||
|
{
|
||||||
|
case 0x20: /* continue play */
|
||||||
|
getstar_val = ((gs_a & 0x30) == 0x30) ? 0x20 : 0x80;
|
||||||
|
break;
|
||||||
|
case 0x21: /* lose life */
|
||||||
|
getstar_val = (gs_a << 1) | (gs_a >> 7);
|
||||||
|
break;
|
||||||
|
case 0x22: /* starting difficulty */
|
||||||
|
getstar_val = ((gs_a & 0x0c) >> 2) + 1;
|
||||||
|
break;
|
||||||
|
case 0x23: /* starting lives */
|
||||||
|
getstar_val = lives_lookup_table[gs_a];
|
||||||
|
break;
|
||||||
|
case 0x24: /* game phase */
|
||||||
|
getstar_val = phase_lookup_table[((gs_a & 0x18) >> 1) | (gs_a & 0x03)];
|
||||||
|
break;
|
||||||
|
case 0x25: /* players inputs */
|
||||||
|
getstar_val = BITSWAP8(gs_a, 3, 2, 1, 0, 7, 5, 6, 4);
|
||||||
|
break;
|
||||||
|
case 0x26: /* background (1st read) */
|
||||||
|
tmp = 0x8800 + (0x001f * gs_a);
|
||||||
|
getstar_val = (tmp & 0x00ff) >> 0;
|
||||||
|
getstar_cmd |= 0x80; /* to allow a second consecutive read */
|
||||||
|
break;
|
||||||
|
case 0xa6: /* background (2nd read) */
|
||||||
|
tmp = 0x8800 + (0x001f * gs_a);
|
||||||
|
getstar_val = (tmp & 0xff00) >> 8;
|
||||||
|
break;
|
||||||
|
case 0x29: /* unknown effect */
|
||||||
|
getstar_val = 0x00;
|
||||||
|
break;
|
||||||
|
case 0x2a: /* change player (if 2 players game) */
|
||||||
|
getstar_val = (gs_a ^ 0x40);
|
||||||
|
break;
|
||||||
|
case 0x37: /* foreground (1st read) */
|
||||||
|
tmp = ((0xd0 + ((gs_e >> 2) & 0x0f)) << 8) | (0x40 * (gs_e & 03) + gs_d);
|
||||||
|
getstar_val = (tmp & 0x00ff) >> 0;
|
||||||
|
getstar_cmd |= 0x80; /* to allow a second consecutive read */
|
||||||
|
break;
|
||||||
|
case 0xb7: /* foreground (2nd read) */
|
||||||
|
tmp = ((0xd0 + ((gs_e >> 2) & 0x0f)) << 8) | (0x40 * (gs_e & 03) + gs_d);
|
||||||
|
getstar_val = (tmp & 0xff00) >> 8;
|
||||||
|
break;
|
||||||
|
case 0x38: /* laser position (1st read) */
|
||||||
|
tmp = 0xf740 - (((gs_e >> 4) << 8) | ((gs_e & 0x08) ? 0x80 : 0x00)) + (0x02 + (gs_d >> 2));
|
||||||
|
getstar_val = (tmp & 0x00ff) >> 0;
|
||||||
|
getstar_cmd |= 0x80; /* to allow a second consecutive read */
|
||||||
|
break;
|
||||||
|
case 0xb8: /* laser position (2nd read) */
|
||||||
|
tmp = 0xf740 - (((gs_e >> 4) << 8) | ((gs_e & 0x08) ? 0x80 : 0x00)) + (0x02 + (gs_d >> 2));
|
||||||
|
getstar_val = (tmp & 0xff00) >> 8;
|
||||||
|
break;
|
||||||
|
case 0x73: /* avoid "BAD HW" message */
|
||||||
|
getstar_val = 0x76;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
logerror("%04x: getstar_e803_r - cmd = %02x\n",activecpu_get_pc(),getstar_cmd);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GTSTARB1:
|
||||||
|
/* value isn't computed by the bootleg but we want to please the "test mode" */
|
||||||
|
if (activecpu_get_pc() == 0x6b04) return (lives_lookup_table[gs_a]);
|
||||||
|
break;
|
||||||
|
case GTSTARB2:
|
||||||
|
/*
|
||||||
|
056B: 21 03 E8 ld hl,$E803
|
||||||
|
056E: 7E ld a,(hl)
|
||||||
|
056F: BE cp (hl)
|
||||||
|
0570: 28 FD jr z,$056F
|
||||||
|
0572: C6 05 add a,$05
|
||||||
|
0574: EE 56 xor $56
|
||||||
|
0576: BE cp (hl)
|
||||||
|
0577: C2 6E 05 jp nz,$056E
|
||||||
|
*/
|
||||||
|
if (activecpu_get_pc() == 0x056e) return (getstar_val);
|
||||||
|
if (activecpu_get_pc() == 0x0570) return (getstar_val+1);
|
||||||
|
if (activecpu_get_pc() == 0x0577) return ((getstar_val+0x05) ^ 0x56);
|
||||||
|
/* value isn't computed by the bootleg but we want to please the "test mode" */
|
||||||
|
if (activecpu_get_pc() == 0x6b04) return (lgsb2_lookup_table[gs_a]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
logerror("%04x: getstar_e803_r - cmd = %02x - unknown set !\n",activecpu_get_pc(),getstar_cmd);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return getstar_val;
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE8_HANDLER( getstar_e803_w )
|
||||||
|
{
|
||||||
|
switch (getstar_id)
|
||||||
|
{
|
||||||
|
case GETSTAR:
|
||||||
|
/* unknown effect - not read back */
|
||||||
|
if (activecpu_get_pc() == 0x00bf)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x00;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
/* players inputs */
|
||||||
|
if (activecpu_get_pc() == 0x0560)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x25;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x056d)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x25;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* lose life */
|
||||||
|
if (activecpu_get_pc() == 0x0a0a)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x21;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0a17)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x21;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* unknown effect */
|
||||||
|
if (activecpu_get_pc() == 0x0a51)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x29;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0a6e)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x29;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* continue play */
|
||||||
|
if (activecpu_get_pc() == 0x0ae3)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x20;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0af0)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x20;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* unknown effect - not read back */
|
||||||
|
if (activecpu_get_pc() == 0x0b62)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x00; /* 0x1f */
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
/* change player (if 2 players game) */
|
||||||
|
if (activecpu_get_pc() == 0x0bab)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x2a;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0bb8)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x2a;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* game phase */
|
||||||
|
if (activecpu_get_pc() == 0x0d37)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x24;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0d44)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x24;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* starting lives */
|
||||||
|
if (activecpu_get_pc() == 0x0d79)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0d8a)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* starting difficulty */
|
||||||
|
if (activecpu_get_pc() == 0x0dc1)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x22;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0dd0)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x22;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* starting lives (again) */
|
||||||
|
if (activecpu_get_pc() == 0x1011)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x101e)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* hardware test */
|
||||||
|
if (activecpu_get_pc() == 0x107a)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x73;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
/* game phase (again) */
|
||||||
|
if (activecpu_get_pc() == 0x10c6)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x24;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x10d3)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x24;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* background */
|
||||||
|
if (activecpu_get_pc() == 0x1910)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x26;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x191d)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x26;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* foreground */
|
||||||
|
if (activecpu_get_pc() == 0x19d5)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x37;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x19e4)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x37;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x19f1)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x37;
|
||||||
|
/* do NOT update the registers because there are 2 writes before 2 reads ! */
|
||||||
|
}
|
||||||
|
/* laser position */
|
||||||
|
if (activecpu_get_pc() == 0x26af)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x38;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x26be)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x38;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x26cb)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x38;
|
||||||
|
/* do NOT update the registers because there are 2 writes before 2 reads ! */
|
||||||
|
}
|
||||||
|
/* starting lives (for "test mode") */
|
||||||
|
if (activecpu_get_pc() == 0x6a27)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x6a38)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GETSTARJ:
|
||||||
|
/* unknown effect - not read back */
|
||||||
|
if (activecpu_get_pc() == 0x00bf)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x00;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
/* players inputs */
|
||||||
|
if (activecpu_get_pc() == 0x0560)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x25;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x056d)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x25;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* lose life */
|
||||||
|
if (activecpu_get_pc() == 0x0ad5)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x21;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0ae2)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x21;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* unknown effect */
|
||||||
|
if (activecpu_get_pc() == 0x0b1c)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x29;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0b29)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x29;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* continue play */
|
||||||
|
if (activecpu_get_pc() == 0x0bae)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x20;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0bbb)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x20;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* unknown effect - not read back */
|
||||||
|
if (activecpu_get_pc() == 0x0c2d)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x00; /* 0x1f */
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
/* change player (if 2 players game) */
|
||||||
|
if (activecpu_get_pc() == 0x0c76)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x2a;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0c83)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x2a;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* game phase */
|
||||||
|
if (activecpu_get_pc() == 0x0e02)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x24;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0e0f)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x24;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* starting lives */
|
||||||
|
if (activecpu_get_pc() == 0x0e44)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0e55)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* starting difficulty */
|
||||||
|
if (activecpu_get_pc() == 0x0e8c)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x22;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x0e9b)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x22;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* starting lives (again) */
|
||||||
|
if (activecpu_get_pc() == 0x10d6)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x10e3)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* hardware test */
|
||||||
|
if (activecpu_get_pc() == 0x113f)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x73;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
/* game phase (again) */
|
||||||
|
if (activecpu_get_pc() == 0x118b)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x24;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x1198)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x24;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* background */
|
||||||
|
if (activecpu_get_pc() == 0x19f8)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x26;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x1a05)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x26;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
/* foreground */
|
||||||
|
if (activecpu_get_pc() == 0x1abd)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x37;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x1acc)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x37;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x1ad9)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x37;
|
||||||
|
/* do NOT update the registers because there are 2 writes before 2 reads ! */
|
||||||
|
}
|
||||||
|
/* laser position */
|
||||||
|
if (activecpu_get_pc() == 0x2792)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x38;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x27a1)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x38;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x27ae)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x38;
|
||||||
|
/* do NOT update the registers because there are 2 writes before 2 reads ! */
|
||||||
|
}
|
||||||
|
/* starting lives (for "test mode") */
|
||||||
|
if (activecpu_get_pc() == 0x6ae2)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x6af3)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x23;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GTSTARB1:
|
||||||
|
/* "Test mode" doesn't compute the lives value :
|
||||||
|
6ADA: 3E 23 ld a,$23
|
||||||
|
6ADC: CD 52 11 call $1152
|
||||||
|
6ADF: 32 03 E8 ld ($E803),a
|
||||||
|
6AE2: DB 00 in a,($00)
|
||||||
|
6AE4: CB 4F bit 1,a
|
||||||
|
6AE6: 28 FA jr z,$6AE2
|
||||||
|
6AE8: 3A 0A C8 ld a,($C80A)
|
||||||
|
6AEB: E6 03 and $03
|
||||||
|
6AED: CD 52 11 call $1152
|
||||||
|
6AF0: 32 03 E8 ld ($E803),a
|
||||||
|
6AF3: DB 00 in a,($00)
|
||||||
|
6AF5: CB 57 bit 2,a
|
||||||
|
6AF7: 20 FA jr nz,$6AF3
|
||||||
|
6AF9: 00 nop
|
||||||
|
6AFA: 00 nop
|
||||||
|
6AFB: 00 nop
|
||||||
|
6AFC: 00 nop
|
||||||
|
6AFD: 00 nop
|
||||||
|
6AFE: 00 nop
|
||||||
|
6AFF: 00 nop
|
||||||
|
6B00: 00 nop
|
||||||
|
6B01: 3A 03 E8 ld a,($E803)
|
||||||
|
We save the regs though to hack it in 'getstar_e803_r' read handler.
|
||||||
|
*/
|
||||||
|
if (activecpu_get_pc() == 0x6ae2)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x00;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x6af3)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x00;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GTSTARB2:
|
||||||
|
/* "Test mode" doesn't compute the lives value :
|
||||||
|
6ADA: 3E 23 ld a,$23
|
||||||
|
6ADC: CD 52 11 call $1152
|
||||||
|
6ADF: 32 03 E8 ld ($E803),a
|
||||||
|
6AE2: DB 00 in a,($00)
|
||||||
|
6AE4: CB 4F bit 1,a
|
||||||
|
6AE6: 00 nop
|
||||||
|
6AE7: 00 nop
|
||||||
|
6AE8: 3A 0A C8 ld a,($C80A)
|
||||||
|
6AEB: E6 03 and $03
|
||||||
|
6AED: CD 52 11 call $1152
|
||||||
|
6AF0: 32 03 E8 ld ($E803),a
|
||||||
|
6AF3: DB 00 in a,($00)
|
||||||
|
6AF5: CB 57 bit 2,a
|
||||||
|
6AF7: 00 nop
|
||||||
|
6AF8: 00 nop
|
||||||
|
6AF9: 00 nop
|
||||||
|
6AFA: 00 nop
|
||||||
|
6AFB: 00 nop
|
||||||
|
6AFC: 00 nop
|
||||||
|
6AFD: 00 nop
|
||||||
|
6AFE: 00 nop
|
||||||
|
6AFF: 00 nop
|
||||||
|
6B00: 00 nop
|
||||||
|
6B01: 3A 03 E8 ld a,($E803)
|
||||||
|
We save the regs though to hack it in 'getstar_e803_r' read handler.
|
||||||
|
*/
|
||||||
|
if (activecpu_get_pc() == 0x6ae2)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x00;
|
||||||
|
GS_RESET_REGS
|
||||||
|
}
|
||||||
|
if (activecpu_get_pc() == 0x6af3)
|
||||||
|
{
|
||||||
|
getstar_cmd = 0x00;
|
||||||
|
GS_SAVE_REGS
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
logerror("%04x: getstar_e803_w - data = %02x - unknown set !\n",activecpu_get_pc(),data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Enable hardware interrupt of sound cpu */
|
/* Enable hardware interrupt of sound cpu */
|
||||||
@ -249,3 +797,33 @@ READ8_HANDLER( tigerh_mcu_status_r )
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
READ8_HANDLER( tigerhb_e803_r )
|
||||||
|
{
|
||||||
|
UINT8 tigerhb_val = 0;
|
||||||
|
switch (tigerhb_cmd)
|
||||||
|
{
|
||||||
|
case 0x73: /* avoid "BAD HW" message */
|
||||||
|
tigerhb_val = 0x83;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
logerror("%04x: tigerhb_e803_r - cmd = %02x\n",activecpu_get_pc(),getstar_cmd);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return tigerhb_val;
|
||||||
|
}
|
||||||
|
|
||||||
|
WRITE8_HANDLER( tigerhb_e803_w )
|
||||||
|
{
|
||||||
|
switch (data)
|
||||||
|
{
|
||||||
|
/* hardware test */
|
||||||
|
case 0x73:
|
||||||
|
tigerhb_cmd = 0x73;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
logerror("%04x: tigerhb_e803_w - data = %02x\n",activecpu_get_pc(),data);
|
||||||
|
tigerhb_cmd = 0x00;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -2029,10 +2029,10 @@ const game_driver * const drivers[] =
|
|||||||
DRIVER( perfrman ) /* (c) 1985 Data East Corporation (Japan) */
|
DRIVER( perfrman ) /* (c) 1985 Data East Corporation (Japan) */
|
||||||
DRIVER( perfrmau ) /* (c) 1985 Data East USA (US) */
|
DRIVER( perfrmau ) /* (c) 1985 Data East USA (US) */
|
||||||
DRIVER( tigerh ) /* A47 (c) 1985 Taito America Corporation GX-551 [not a Konami board!] */
|
DRIVER( tigerh ) /* A47 (c) 1985 Taito America Corporation GX-551 [not a Konami board!] */
|
||||||
DRIVER( tigerh2 ) /* A47 (c) 1985 Taito Corporation GX-551 [not a Konami board!] */
|
|
||||||
DRIVER( tigerhj ) /* A47 (c) 1985 Taito Corporation GX-551 [not a Konami board!] */
|
DRIVER( tigerhj ) /* A47 (c) 1985 Taito Corporation GX-551 [not a Konami board!] */
|
||||||
DRIVER( tigerhb1 ) /* bootleg but (c) 1985 Taito Corporation */
|
DRIVER( tigerhb1 ) /* bootleg but (c) 1985 Taito Corporation */
|
||||||
DRIVER( tigerhb2 ) /* bootleg but (c) 1985 Taito Corporation */
|
DRIVER( tigerhb2 ) /* bootleg but (c) 1985 Taito Corporation */
|
||||||
|
DRIVER( tigerhb3 ) /* bootleg but (c) 1985 Taito Corporation */
|
||||||
DRIVER( slapfigh ) /* A76 / TP-??? */
|
DRIVER( slapfigh ) /* A76 / TP-??? */
|
||||||
DRIVER( slapfiga ) /* A76 / TP-??? */
|
DRIVER( slapfiga ) /* A76 / TP-??? */
|
||||||
DRIVER( slapbtjp ) /* bootleg but (c) 1986 Taito Corporation */
|
DRIVER( slapbtjp ) /* bootleg but (c) 1986 Taito Corporation */
|
||||||
@ -2041,8 +2041,8 @@ const game_driver * const drivers[] =
|
|||||||
DRIVER( alcon ) /* A76 / TP-??? */
|
DRIVER( alcon ) /* A76 / TP-??? */
|
||||||
DRIVER( getstar ) /* A68 (c) 1986 Taito Corporation */
|
DRIVER( getstar ) /* A68 (c) 1986 Taito Corporation */
|
||||||
DRIVER( getstarj ) /* A68 (c) 1986 Taito Corporation */
|
DRIVER( getstarj ) /* A68 (c) 1986 Taito Corporation */
|
||||||
DRIVER( getstarb ) /* GX-006 bootleg but (c) 1986 Taito Corporation */
|
DRIVER( gtstarb1 ) /* GX-006 bootleg but (c) 1986 Taito Corporation */
|
||||||
DRIVER( gtstarba ) /* GX-006 bootleg but (c) 1986 Taito Corporation */
|
DRIVER( gtstarb2 ) /* GX-006 bootleg but (c) 1986 Taito Corporation */
|
||||||
DRIVER( mjsister ) /* (c) 1986 Toaplan */
|
DRIVER( mjsister ) /* (c) 1986 Toaplan */
|
||||||
|
|
||||||
DRIVER( fshark ) /* B02 / TP-007 (c) 1987 Taito Corporation (World) */
|
DRIVER( fshark ) /* B02 / TP-007 (c) 1987 Taito Corporation (World) */
|
||||||
|
Loading…
Reference in New Issue
Block a user