From 6f5ef31d90d425b288068ba4d44402a3bb89a8ad Mon Sep 17 00:00:00 2001 From: davidhay Date: Fri, 11 Jul 2008 23:22:42 +0000 Subject: [PATCH] slapfght driver update from stephh, getstar / tiger heli changes etc. I don't have the changelist, stephh should really commit his own stuff. --- src/mame/drivers/slapfght.c | 868 +++++++++++++++++++---------------- src/mame/includes/slapfght.h | 39 ++ src/mame/machine/slapfght.c | 602 +++++++++++++++++++++++- src/mame/mamedriv.c | 6 +- 4 files changed, 1111 insertions(+), 404 deletions(-) diff --git a/src/mame/drivers/slapfght.c b/src/mame/drivers/slapfght.c index b0d3af28242..8d55e6e1a4c 100644 --- a/src/mame/drivers/slapfght.c +++ b/src/mame/drivers/slapfght.c @@ -183,6 +183,126 @@ $8006 - $8035 High score table $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" @@ -191,6 +311,9 @@ $8609 - $860f High score characters to display to screen for highest score #include "sound/ay8910.h" #include "includes/slapfght.h" +int getstar_id; + + static ADDRESS_MAP_START( perfrman_readmem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_READ(SMH_ROM) 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) ADDRESS_MAP_END -#define COMMON_START\ - PORT_START_TAG("IN0")\ - 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 )\ + +static INPUT_PORTS_START( slapfght_generic ) + PORT_START_TAG("IN0") + 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 ) -static INPUT_PORTS_START( perfrman ) -COMMON_START PORT_START_TAG("DSW1") - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - 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_DIPNAME( 0x07, 0x07, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8,7,6") +// 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_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_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW1:5") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) 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( 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( 0x00, DEF_STR( On ) ) - PORT_SERVICE( 0x40, IP_ACTIVE_LOW ) - PORT_DIPNAME( 0x80, 0x80, "Player Speed" ) - PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x00, "Fast" ) + PORT_SERVICE_DIPLOC(0x40, IP_ACTIVE_LOW, "SW1:2" ) + PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_LOW, "SW1:1" ) 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( 0x00, "2" ) PORT_DIPSETTING( 0x03, "3" ) 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( 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_DIPSETTING( 0x10, "20000 80000" ) - PORT_DIPSETTING( 0x00, "50000 120000" ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - 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 ) ) + /* Filled by "Bonus Lives" settings */ + PORT_DIPUNUSED_DIPLOC( 0x10, IP_ACTIVE_LOW, "SW2:4" ) + 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( 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 ) -COMMON_START - PORT_START_TAG("DSW1") + PORT_INCLUDE(slapfght_generic) + + PORT_MODIFY("DSW1") PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_B ) ) PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) @@ -533,7 +652,7 @@ COMMON_START PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x80, DEF_STR( Cocktail ) ) - PORT_START_TAG("DSW2") + PORT_MODIFY("DSW2") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) @@ -557,141 +676,57 @@ INPUT_PORTS_END static INPUT_PORTS_START( getstar ) - PORT_START_TAG("IN0") - 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_INCLUDE(slapfght_generic) - 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( 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_MODIFY("DSW2") + /* harder default difficulty (confirmed by manual) */ + PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2: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_DIPSETTING( 0x10, "30000 100000" ) - PORT_DIPSETTING( 0x00, "50000 150000" ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - 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 ) ) + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4,3") + PORT_DIPSETTING( 0x30, "50k only" ) + PORT_DIPSETTING( 0x20, "100k only" ) + PORT_DIPSETTING( 0x10, "150k only" ) + PORT_DIPSETTING( 0x00, "200k only" ) INPUT_PORTS_END -static INPUT_PORTS_START( gtstarba ) - PORT_START_TAG("IN0") - 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 ) +static INPUT_PORTS_START( getstarj ) + PORT_INCLUDE(getstar) - 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( 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 ) ) + /* easier default difficulty (to be confirmed) and different bonus lives settings */ + PORT_MODIFY("DSW2") + PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2: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_DIPSETTING( 0x10, "30000 100000" ) - PORT_DIPSETTING( 0x00, "50000 150000" ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - 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 ) ) + PORT_DIPNAME( 0x10, 0x10, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:4") + PORT_DIPSETTING( 0x10, "30k, 130k, then every 100k" ) + PORT_DIPSETTING( 0x00, "50k, 200k, then every 150k" ) + PORT_DIPUNUSED_DIPLOC( 0x20, IP_ACTIVE_LOW, "SW2:3" ) +INPUT_PORTS_END + +static INPUT_PORTS_START( gtstarb2 ) + PORT_INCLUDE(getstarj) + + /* RIGHT and DOWN are swapped due to code at 0x0551 */ + PORT_MODIFY("IN0") + 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 @@ -935,6 +970,7 @@ static MACHINE_DRIVER_START( tigerh ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_DRIVER_END + static MACHINE_DRIVER_START( slapfigh ) /* basic machine hardware */ @@ -981,7 +1017,6 @@ static MACHINE_DRIVER_START( slapfigh ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) MACHINE_DRIVER_END - /* identical to slapfigh_ but writemem has different scroll registers */ 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_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_REGION( 0x10000, REGION_CPU1, 0 ) ROM_LOAD( "a47_00.bin", 0x00000, 0x4000, CRC(cbdbe3cc) SHA1(5badf76cdf4a7f0ae9e85ee602420ba5c128efef) ) @@ -1159,13 +1158,17 @@ ROM_END ROM_START( tigerhb1 ) 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( "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) ) @@ -1219,6 +1222,37 @@ ROM_START( tigerhb2 ) ROM_LOAD( "82s129.12n", 0x0200, 0x0100, CRC(25f273f2) SHA1(2c696745f42fa09b64295a39536aeba08ab58d67) ) 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_REGION( 0x18000, REGION_CPU1, 0 ) ROM_LOAD( "sf_r19.bin", 0x00000, 0x8000, CRC(674c0e0f) SHA1(69fc17881c89cc5e82b0fefec49c4116054f9e3b) ) @@ -1255,9 +1289,9 @@ ROM_END /* dump labeled Alcon, but GFX in tile roms clearly read Slap Fight */ ROM_START( slapfiga ) ROM_REGION( 0x18000, REGION_CPU1, 0 ) - ROM_LOAD( "a76-00.bin", 0x00000, 0x4000, CRC(ac22bb86) SHA1(3ecff006fc487d494f21adb7bff6f8c56eb5d707) ) - ROM_LOAD( "a76-01.bin", 0x04000, 0x4000, CRC(d6b4f02e) SHA1(37f840c444ba7dcc75810580c9da83289670d5cc) ) - ROM_LOAD( "a76-02.bin", 0x10000, 0x8000, CRC(9dd0971f) SHA1(92bd0b54635bf5c4118a53e0f897c65f5eb2984a) ) /* banked at 8000 */ + ROM_LOAD( "a76-00.bin", 0x00000, 0x4000, CRC(ac22bb86) SHA1(3ecff006fc487d494f21adb7bff6f8c56eb5d707) ) + ROM_LOAD( "a76-01.bin", 0x04000, 0x4000, CRC(d6b4f02e) SHA1(37f840c444ba7dcc75810580c9da83289670d5cc) ) + ROM_LOAD( "a76-02.bin", 0x10000, 0x8000, CRC(9dd0971f) SHA1(92bd0b54635bf5c4118a53e0f897c65f5eb2984a) ) /* banked at 8000 */ ROM_REGION( 0x10000, REGION_CPU2, 0 ) ROM_LOAD( "a76-03.bin", 0x0000, 0x2000, CRC(87f4705a) SHA1(a90d5644ce268f3321047a4f96df96ac294d2f1b) ) @@ -1287,6 +1321,39 @@ ROM_START( slapfiga ) ROM_LOAD( "sf_col19.bin", 0x0200, 0x0100, CRC(5cbf9fbf) SHA1(abfa58fa4e44ebc56f2e0fac9bcc36164c845fa3) ) 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_REGION( 0x18000, REGION_CPU1, 0 ) ROM_LOAD( "sf_r19jb.bin", 0x00000, 0x8000, CRC(9a7ac8b3) SHA1(01fbad9b4fc80f2406eff18db20e196e212d0c17) ) @@ -1351,62 +1418,29 @@ ROM_END /* very similar to slapbtuk, is slapbtuk missing the logo rom? */ ROM_START( slapfgtr ) ROM_REGION( 0x18000, REGION_CPU1, 0 ) - ROM_LOAD( "k1-10.u90", 0x00000, 0x4000, CRC(2efe47af) SHA1(69ce3e83a0d8fa5ee4737c741d31cf32db6b9919) ) - ROM_LOAD( "k1-09.u89", 0x04000, 0x4000, CRC(17c187c5) SHA1(6e1fd651f56036d1c6c830de8479df25fc182c10) ) - ROM_LOAD( "k1-08.u88", 0x0e000, 0x2000, CRC(945af97f) SHA1(4d901be477b6101338eb1d86497e1bdc57f9c1b4) ) // contains another copy of the logo tilemap read at ec00! + ROM_LOAD( "k1-10.u90", 0x00000, 0x4000, CRC(2efe47af) SHA1(69ce3e83a0d8fa5ee4737c741d31cf32db6b9919) ) + ROM_LOAD( "k1-09.u89", 0x04000, 0x4000, CRC(17c187c5) SHA1(6e1fd651f56036d1c6c830de8479df25fc182c10) ) + ROM_LOAD( "k1-08.u88", 0x0e000, 0x2000, CRC(945af97f) SHA1(4d901be477b6101338eb1d86497e1bdc57f9c1b4) ) // contains another copy of the logo tilemap read at ec00! ROM_LOAD( "k1-07.u87", 0x10000, 0x8000, CRC(3c42e4a7) SHA1(8e4da1e6e73603e484ba4f5609ac9ea92999a526) ) /* banked at 8000 */ ROM_REGION( 0x10000, REGION_CPU2, 0 ) - ROM_LOAD( "k1-11.u89", 0x0000, 0x2000, CRC(87f4705a) SHA1(a90d5644ce268f3321047a4f96df96ac294d2f1b) ) + ROM_LOAD( "k1-11.u89", 0x0000, 0x2000, CRC(87f4705a) SHA1(a90d5644ce268f3321047a4f96df96ac294d2f1b) ) ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE ) - ROM_LOAD( "k1-02.u57", 0x00000, 0x2000, CRC(2ac7b943) SHA1(d0c3560bb1f0c2647aeff807cb4b09450237b955) ) /* Chars */ - ROM_LOAD( "k1-03.u58", 0x02000, 0x2000, CRC(33cadc93) SHA1(59ffc206c62a651d2ac0ef52f519dd56edf2c021) ) + ROM_LOAD( "k1-02.u57", 0x00000, 0x2000, CRC(2ac7b943) SHA1(d0c3560bb1f0c2647aeff807cb4b09450237b955) ) /* Chars */ + ROM_LOAD( "k1-03.u58", 0x02000, 0x2000, CRC(33cadc93) SHA1(59ffc206c62a651d2ac0ef52f519dd56edf2c021) ) ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) - ROM_LOAD( "k1-01.u49", 0x00000, 0x8000, CRC(b6358305) SHA1(c7bb4236a75ec6b88f011bc30f8fb9a718e2ca3e) ) /* Tiles */ - ROM_LOAD( "k1-04.u62", 0x08000, 0x8000, CRC(e92d9d60) SHA1(2554617e0e6615ca8c85a49299a4a0e762478339) ) - ROM_LOAD( "k1-05.u63", 0x10000, 0x8000, CRC(5faeeea3) SHA1(696fba24bcf1f3a7e914a4403854da5eededaf7f) ) - ROM_LOAD( "k1-06.u64", 0x18000, 0x8000, CRC(974e2ea9) SHA1(3840550fc3a833828dad8f3e300d2ea583d69ce7) ) + ROM_LOAD( "k1-01.u49", 0x00000, 0x8000, CRC(b6358305) SHA1(c7bb4236a75ec6b88f011bc30f8fb9a718e2ca3e) ) /* Tiles */ + ROM_LOAD( "k1-04.u62", 0x08000, 0x8000, CRC(e92d9d60) SHA1(2554617e0e6615ca8c85a49299a4a0e762478339) ) + ROM_LOAD( "k1-05.u63", 0x10000, 0x8000, CRC(5faeeea3) SHA1(696fba24bcf1f3a7e914a4403854da5eededaf7f) ) + ROM_LOAD( "k1-06.u64", 0x18000, 0x8000, CRC(974e2ea9) SHA1(3840550fc3a833828dad8f3e300d2ea583d69ce7) ) ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) - ROM_LOAD( "k1-15.u60", 0x00000, 0x8000, CRC(8545d397) SHA1(9a1fd5bfd8fb830b8e46643c08eef32ba968fc23) ) /* Sprites */ - ROM_LOAD( "k1-13.u50", 0x08000, 0x8000, CRC(b1b7b925) SHA1(199b0b52bbeb384211171eca5c50a1c0ebf6826f) ) - ROM_LOAD( "k1-14.u59", 0x10000, 0x8000, CRC(422d946b) SHA1(c251ef9597a11ec8de39be4fcbddaba84e649ef2) ) - ROM_LOAD( "k1-12.u49", 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( 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_LOAD( "k1-15.u60", 0x00000, 0x8000, CRC(8545d397) SHA1(9a1fd5bfd8fb830b8e46643c08eef32ba968fc23) ) /* Sprites */ + ROM_LOAD( "k1-13.u50", 0x08000, 0x8000, CRC(b1b7b925) SHA1(199b0b52bbeb384211171eca5c50a1c0ebf6826f) ) + ROM_LOAD( "k1-14.u59", 0x10000, 0x8000, CRC(422d946b) SHA1(c251ef9597a11ec8de39be4fcbddaba84e649ef2) ) + ROM_LOAD( "k1-12.u49", 0x18000, 0x8000, CRC(587113ae) SHA1(90abe961494a1af7c87693a419fbabf7a58a5dee) ) ROM_REGION( 0x0300, REGION_PROMS, 0 ) ROM_LOAD( "sf_col21.bin", 0x0000, 0x0100, CRC(a0efaf99) SHA1(5df01663480acad1f89abab8662d437617a66d1c) ) @@ -1477,55 +1511,24 @@ ROM_START( getstarj ) 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_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( 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_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_3.bin", 0x10000, 0x8000, CRC(e3cfb1ba) SHA1(bd21655c82a14e18ff9df4539c4d0bb2484c73f1) ) + 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_3.bin", 0x10000, 0x8000, CRC(e3cfb1ba) SHA1(bd21655c82a14e18ff9df4539c4d0bb2484c73f1) ) ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Region 3 - sound cpu code */ ROM_LOAD( "a68-03", 0x00000, 0x2000, CRC(18daa44c) SHA1(1a3d22a186c591321d1b836ee30d89fba4771122) ) ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE ) /* Region 1 - temporary for gfx */ /* these roms were in the set, but they're corrupt */ -// ROM_LOAD( "gs_rb_8.bin", 0x00000, 0x2000, CRC(a30aaf04) SHA1(2509554c3851a68eaec1cadc01f4d69c7aa2c09d) ) /* Chars */ -// ROM_LOAD( "gs_rb_7.bin", 0x02000, 0x2000, CRC(f47a93c6) SHA1(441fee1fb195bb2583d220f30dfcff617a31742a) ) +// ROM_LOAD( "gs_rb_8.bin", 0x00000, 0x2000, CRC(a30aaf04) SHA1(2509554c3851a68eaec1cadc01f4d69c7aa2c09d) ) /* Chars */ +// ROM_LOAD( "gs_rb_7.bin", 0x02000, 0x2000, CRC(f47a93c6) SHA1(441fee1fb195bb2583d220f30dfcff617a31742a) ) /* use the original roms instead */ ROM_LOAD( "a68_05.bin", 0x00000, 0x2000, CRC(e3d409e7) SHA1(0b6be4767f110729f4dd1a472ef8d9a0c718b684) ) /* Chars */ ROM_LOAD( "a68_04.bin", 0x02000, 0x2000, CRC(6e5ac9d4) SHA1(74f90b7a1ceb3b1c2fd92dff100d92dea0155530) ) @@ -1544,61 +1547,148 @@ ROM_START( gtstarba ) 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_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( 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 ) { 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 */ - return 0x76; + memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xe803, 0xe803, 0, 0, tigerhb_e803_r, tigerhb_e803_w ); } -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) + 6D1E: E6 06 and $06 + 6D20: 20 FA jr nz,$6D1C + 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() == 0x6d24) return 6; + if (activecpu_get_pc() == 0x6d2c) return 2; + if (activecpu_get_pc() == 0x6d34) return 4; -static READ8_HANDLER( gtstarba_port_0_read ) -{ - /* the bootleg has it's own 'protection' on startup? */ - if (activecpu_get_pc()==0x6d1e) return 0; - if (activecpu_get_pc()==0x6d24) return 6; - if (activecpu_get_pc()==0x6d2c) return 2; - 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()); 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 */ /* 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 - roms */ + that the bootleg simply shouldn't execute the code due to the modified roms */ if (activecpu_get_pc()==0x6d54) return 0xff; 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_read8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xc800, 0xc80f, 0, 0, gtstarba_dpram_r ); + memory_install_readwrite8_handler(machine, 0, ADDRESS_SPACE_PROGRAM, 0xe803, 0xe803, 0, 0, getstar_e803_r, getstar_e803_w ); +} + +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, 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, 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 set 2)", GAME_NO_COCKTAIL ) -GAME( 1985, tigerhb1, tigerh, tigerhb, tigerh, 0, ROT270, "bootleg", "Tiger Heli (bootleg set 1)", 0 ) +GAME( 1985, tigerhj, tigerh, tigerh, tigerh, tigerh, ROT270, "Taito", "Tiger Heli (Japan)", GAME_NO_COCKTAIL ) +GAME( 1985, tigerhb1, tigerh, tigerhb, tigerh, tigerhb, ROT270, "bootleg", "Tiger Heli (bootleg set 1)", 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, 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, 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, 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", "Guardian", GAME_NOT_WORKING | GAME_NO_COCKTAIL ) -GAME( 1986, getstarj, getstar, slapfigh, getstar, getstar, ROT0, "Taito", "Get Star (Japan)", GAME_NOT_WORKING | GAME_NO_COCKTAIL ) -GAME( 1986, getstarb, getstar, slapfigh, getstar, getstarb, ROT0, "bootleg", "Get Star (bootleg set 1)", GAME_NO_COCKTAIL ) -GAME( 1986, gtstarba, getstar, slapfigh, gtstarba, gtstarba, ROT0, "bootleg", "Get Star (bootleg set 2)", GAME_NO_COCKTAIL ) +GAME( 1986, getstar, 0, slapfigh, getstar, getstar, ROT0, "Taito America Corporation (Kitkorp license)", "Guardian (US)", GAME_NO_COCKTAIL ) +GAME( 1986, getstarj, getstar, slapfigh, getstarj, getstarj, ROT0, "Taito", "Get Star (Japan)", GAME_NO_COCKTAIL ) +GAME( 1986, gtstarb1, getstar, slapfigh, getstarj, gtstarb1, 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 ) diff --git a/src/mame/includes/slapfght.h b/src/mame/includes/slapfght.h index 765087b7336..7c5d29c54b8 100644 --- a/src/mame/includes/slapfght.h +++ b/src/mame/includes/slapfght.h @@ -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 -----------*/ MACHINE_RESET( slapfight ); @@ -15,7 +47,10 @@ WRITE8_HANDLER( slapfight_port_07_w ); WRITE8_HANDLER( slapfight_port_08_w ); WRITE8_HANDLER( slapfight_port_09_w ); + READ8_HANDLER( getstar_e803_r ); +WRITE8_HANDLER( getstar_e803_w ); + READ8_HANDLER ( tigerh_68705_portA_r ); WRITE8_HANDLER( tigerh_68705_portA_w ); @@ -30,6 +65,10 @@ WRITE8_HANDLER( tigerh_mcu_w ); READ8_HANDLER ( tigerh_mcu_r ); READ8_HANDLER ( tigerh_mcu_status_r ); +READ8_HANDLER( tigerhb_e803_r ); +WRITE8_HANDLER( tigerhb_e803_w ); + + WRITE8_HANDLER( getstar_sh_intenable_w ); INTERRUPT_GEN( getstar_interrupt ); diff --git a/src/mame/machine/slapfght.c b/src/mame/machine/slapfght.c index 9d5b0fba6f4..f870dfcd4a6 100644 --- a/src/mame/machine/slapfght.c +++ b/src/mame/machine/slapfght.c @@ -22,6 +22,16 @@ static int slapfight_status_state; 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 */ 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 ) { - static const UINT8 seq[] = { 0, 1, ((0+5)^0x56) }; -UINT8 val; + UINT16 tmp = 0; /* needed for values computed on 16 bits */ + 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]; - getstar_sequence_index = (getstar_sequence_index+1)%3; - return val; + switch (getstar_id) + { + 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 */ @@ -249,3 +797,33 @@ READ8_HANDLER( tigerh_mcu_status_r ) 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; + } +} diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index d0df182f4ee..0ac4a27b3f4 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -2029,10 +2029,10 @@ const game_driver * const drivers[] = DRIVER( perfrman ) /* (c) 1985 Data East Corporation (Japan) */ DRIVER( perfrmau ) /* (c) 1985 Data East USA (US) */ 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( tigerhb1 ) /* 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( slapfiga ) /* A76 / TP-??? */ DRIVER( slapbtjp ) /* bootleg but (c) 1986 Taito Corporation */ @@ -2041,8 +2041,8 @@ const game_driver * const drivers[] = DRIVER( alcon ) /* A76 / TP-??? */ DRIVER( getstar ) /* A68 (c) 1986 Taito Corporation */ DRIVER( getstarj ) /* A68 (c) 1986 Taito Corporation */ - DRIVER( getstarb ) /* GX-006 bootleg but (c) 1986 Taito Corporation */ - DRIVER( gtstarba ) /* GX-006 bootleg but (c) 1986 Taito Corporation */ + DRIVER( gtstarb1 ) /* GX-006 bootleg but (c) 1986 Taito Corporation */ + DRIVER( gtstarb2 ) /* GX-006 bootleg but (c) 1986 Taito Corporation */ DRIVER( mjsister ) /* (c) 1986 Toaplan */ DRIVER( fshark ) /* B02 / TP-007 (c) 1987 Taito Corporation (World) */