diff options
Diffstat (limited to 'src/mame/drivers/stfight.c')
-rw-r--r-- | src/mame/drivers/stfight.c | 808 |
1 files changed, 808 insertions, 0 deletions
diff --git a/src/mame/drivers/stfight.c b/src/mame/drivers/stfight.c new file mode 100644 index 00000000000..d309c774133 --- /dev/null +++ b/src/mame/drivers/stfight.c @@ -0,0 +1,808 @@ +/***************************** (by Mark McDougall) + *** STREET FIGHT hardware *** This has been adapted from the excellent + ***************************** Psychic 5 description (by Roberto Ventura) + +Street Fight (c) Seibu Kaihatsu (1986) + + +0) GENERAL. + +The game has two Z80s. +The second CPU controls the two YM2203 sound chips. +There is an OKI M5205 ADPCM chip fed directly from a ROM. +Screen resolution is 256x224 (horizontal CRT). +256 colors on screen. +128 sprites (16x16). + + +1) ROM CONTENTS. + +SF01 Main program code (encrypted) +SF02 Main program code bank-switched? into main cpu space +SF03 Sound program code +SF04 ADPCM voice data +SF05-07 Foreground tile pixel data +SF09 Foreground map data +SF10 Foreground map/tile data +SF11-14 Background tile pixel data +SF15 Background map data +SF16 Background map/tile data +SF17 Character pixel data +SF18-21 Sprite pixel data + +All ROMS are 32K except SF17 which is 8K. + +Graphics format is a little messy, the 4 planes come from a bit in +the high and low nibble of each byte of a consecutive pair of roms. + +All graphics are made of 16x16 (composite) tiles, each of which is composed +of 4 consecutive 8x8 tiles. In all there are 1024 composite (16x16) tiles +for each of the foreground, background and sprite layers. These can be +considered as four banks each of 256 tiles. + +Text characters are defined as 8x8 tiles. + + +2) CPU. + +The board has a single? crystal @12.000 MHz. +Both CPU clocks run at 3MHz (12/4). + +The main Z80 runs in Interrupt mode 0 (IM0), the game program expects +execution of two different restart (RST) instructions. +RST 10,the main IRQ, is to be triggered each time the screen is refreshed. +RST 08 must be triggered in order to make the game work properly. I haven't +ascertained the exact frequency of this interrupt yet, though the game +appears to run at the correct speed with RST08 at 30Hz. Curiously a trace +on the interrupt pin shows two interrupts occuring at 60Hz, obviously the +VBlank interrupt followed by a second interrupt some 3.3ms later. At some +stage I'll get around to probing the data lines to find the interrupt +vector addresses. + +Sound CPU runs in IM1. + +The sound CPU lies idle waiting the external IRQ occurrence executing code +from $0100 to $010D. + +Game code/data is directly accessible by the main CPU. There is what +appears to be some level data in the second half of sf02 that may +never be bank-switched in!?! Graphics data, ADPCM samples and level maps +are not accessed by the CPUs. + +Text video RAM is situated at $D000-$D7FF. + + +3) MAIN CPU MEMORY MAP. + +$0000-$7FFF R ROM sf01 (encrypted) +$8000-$BFFF R ROM sf02 (2 x 16k banks selected by D2 of ?) +$C000-$C1FF W Palette RAM +$C200 R player 1 controls hard value (negative logic) + - MSB:x,x,B2,B1,RIGHT,LEFT,DOWN,UP +$C201 R player 2 controls hard value (negative logic) + - MSB:x,x,B2,B1,RIGHT,LEFT,DOWN,UP +$C202 R start buttons (negative logic) + - MSB:x,x,x,P2,P1,x,x,x:LSB +$C203 R dipswitch #1 hard value (negative logic) + - 76543210 + xxxxx000 - coin A - 1 coin / 1 credit + xxxxx001 - 2 coins / 1 credit + xxxxx010 - 1 coin / 3 credits + xxxxx011 - 4 coins / 1 credit + xxxxx100 - 1 coin / 2 credits + xxxxx101 - 3 coins / 1 credit + xxxxx110 - 1 coin / 5 credits + xxxxx111 - 5 coins / 1 credit + xxx00xxx - coin B - 1 coin / 1 credit + xxx01xxx - 2 coins / 1 credit + xxx10xxx - 1 coin / 2 credits + xxx11xxx - 2 coins / 3 credits + xx1xxxxx - test mode setting + x1xxxxxx - continue setting + 1xxxxxxx - bullet colour setting +$C204 R dipswitch #2 hard value (negative logic) + - 76543210 + xxxxxxx1 - cabinet style + xxxxx11x - difficulty + xxx11xxx - number of lives (-1) + x00xxxxx - 10,000 & 30,000 + x01xxxxx - 20,000 & 40,000 + x10xxxxx - 30,000 & 60,000 + x11xxxxx - 40,000 & 80,000 + 1xxxxxxx - demo sound on/off +$C205 R read to determine coin circuit check status +$C500 W play fm number +$C600 W play voice number +$C700 W ?coin mechanism control? +$C804 W ?watchdog? +$C806 W ??? +$C807 W current sprite bank h/w register + - bank = b2,b0 +$D000-$D3FF W VRAM (Character RAM) +$D400-$D7FF W VRAM (Attribute RAM) + - b7 Character bank from SF17 + - b6 Flip Y + - b5 Flip X + - b4 ? + - b3-0 ? Colour/Palette +$D800-$D801 W foreground layer x coordinate h/w register +$D802-$D803 W foreground layer y coordinate h/w register +$D804-$D805 W background layer x coordinate h/w register +$D806,$D808 W background layer y coordinate h/w register +$D807 W layer control h/w register + - b7 = text layer + - b6 = sprite layer + - b5 = background layer + - b4 = foreground layer + - b0 = video orientation (1=upside-down) +$E000-$FFFF RW RAM SRM2064C (8k) +$Fxx0-$Fxx3 W Sprite Ram (every 32 ($20) bytes) + - xx0 sprite number + - xx1 sprite attribute + - b7 sign extension of x coord + - b4 flip x + - xx2 y coord of sprite + - xx3 x coord of sprite + +4) SOUND CPU MEMORY MAP. + +$0000-$7FFF R ROM (sf03) +$C000 W YM2203 #1 address register +$C001 W YM2203 #1 data register +$C800 W YM2203 #2 address register +$C801 W YM2203 #2 data register +$E800 W ?? +$F000 R FM Voice number to play + - b7 set for valid data latched + - b6-b0 voice number +$F800-$FFFF RW RAM + + +5) COLOR RAM + +The palette system is dynamic, the game can show up to 256 different +colors on screen. + +Each color component (RGB) depth is 4 bits, two bytes $100 apart are used +for each color code (12 bits). + +format: unknown - probably RRRRGGGG - 0000BBBB + +I suspect that the colors are organized in sub-palettes, since the graphics +layers are all 4 bits (16 colors) each. Each of the text/graphics layers +have 'attribute' bytes associated with them that would define the palette +usage for each character/tile. + +The 16 colours at offset $C0 appear to be the text palette. This group of +colours does not appear to change throughout the game, and the lower 192 +colours fade in/out independantly of these 16 - consistent with observations +of the real game. You'd think then that the palette would be reaonably +easy to deduce from the text video ram attribute byte - go ahead and try! :P + +The mapping of graphics pixels to palette similarly escapes me, though I +must admit I haven't exhausted all avenues of investigation just yet! + +There is a related mystery with the transparency colour. For the most part +colour 15 corresponds to the transparent colour, except in a few cases. + +6) TILE-BASED LAYERS + +The foreground and background layers comprise static virtual layers which +are 8 screens wide and 16 screens deep. The hardware scrolls around the +layers by reading registers which are updated by sofware every VBlank. +The text layer is fixed and cannot scroll. + +The maps that define the foreground and background layers are stored in +ROMs accessed directly by the hardware. They consist of 256 bytes for +each screen which define the tile number, and a corresponding byte in +a matching ROM which defines the tile bank and presumably palette info. + +The top and bottom rows of the screen are not visible - resulting in a +256x224 viewport rather than 256 square. The layers can be individually +enabled/disabled. Inactive sprites are 'parked' at row 0. + +The rom layout for the foreground and sprite tiles are as you would expect, +with the four 8x8 tiles that make a single composite tile consecutive in +address. The background tiles are interleaved for presumably some good +reason, the first two 8x8 tiles from composite tile n are followed by two +8x8 tiles from the (n+512)'th composite tile. + +The map roms are similarly interleaved for the background layer only. + +7) SPRITES + +The sprites are mapped into RAM locations $F000-$FFFF using only the first +4 bytes from each 32-byte slice. Intervening addresses appear to be +conventional RAM. See the memory map for sprite data format. + + **************************************************************************** + +TODO: +- palette is incorporated - fix!!! +- handle transparency in text layer properly (how?) +- second bank of sf02 is this used? (probably NOT) + +DONE? (check on real board) +- sound (fm) +- sound (adpcm) + +*****************************************************************************/ + +#include "driver.h" +#include "sound/2203intf.h" +#include "sound/msm5205.h" + +// machine +DRIVER_INIT( empcity ); +DRIVER_INIT( stfight ); +MACHINE_RESET( stfight ); +INTERRUPT_GEN( stfight_vb_interrupt ); +INTERRUPT_GEN( stfight_interrupt_1 ); +READ8_HANDLER( stfight_dsw_r ); +WRITE8_HANDLER( stfight_fm_w ); +WRITE8_HANDLER( stfight_voice_w ); +READ8_HANDLER( stfight_coin_r ); +WRITE8_HANDLER( stfight_coin_w ); +WRITE8_HANDLER( stfight_e800_w ); +READ8_HANDLER( stfight_fm_r ); +void stfight_adpcm_int( int data ); +WRITE8_HANDLER( stfight_adpcm_control_w ); + +// video +PALETTE_INIT( stfight ); +WRITE8_HANDLER( stfight_text_char_w ); +WRITE8_HANDLER( stfight_text_attr_w ); +WRITE8_HANDLER( stfight_vh_latch_w ); +WRITE8_HANDLER( stfight_sprite_bank_w ); +VIDEO_START( stfight ); +VIDEO_UPDATE( stfight ); + +// video +extern UINT8 *stfight_text_char_ram; +extern UINT8 *stfight_text_attr_ram; +extern UINT8 *stfight_vh_latch_ram; +extern UINT8 *stfight_sprite_ram; + +static ADDRESS_MAP_START( readmem_cpu1, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_READ(MRA8_ROM) + AM_RANGE(0x8000, 0xbfff) AM_READ(MRA8_BANK1) /* sf02.bin */ + AM_RANGE(0xc000, 0xc1ff) AM_READ(MRA8_RAM) /* palette ram */ + AM_RANGE(0xc200, 0xc200) AM_READ(input_port_0_r) /* IN1 */ + AM_RANGE(0xc201, 0xc201) AM_READ(input_port_1_r) /* IN2 */ + AM_RANGE(0xc202, 0xc202) AM_READ(input_port_2_r) /* IN3 */ + AM_RANGE(0xc203, 0xc204) AM_READ(stfight_dsw_r) /* DS0,1 */ + AM_RANGE(0xc205, 0xc205) AM_READ(stfight_coin_r) /* coin mech */ + AM_RANGE(0xd000, 0xd7ff) AM_READ(MRA8_RAM) /* video */ + AM_RANGE(0xe000, 0xffff) AM_READ(MRA8_RAM) + +ADDRESS_MAP_END + +static ADDRESS_MAP_START( writemem_cpu1, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) + AM_RANGE(0x8000, 0xbfff) AM_WRITE(MWA8_BANK1) /* sf02.bin */ + AM_RANGE(0xc000, 0xc0ff) AM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split1_w) AM_BASE(&paletteram) + AM_RANGE(0xc100, 0xc1ff) AM_WRITE(paletteram_xxxxBBBBRRRRGGGG_split2_w) AM_BASE(&paletteram_2) + AM_RANGE(0xc500, 0xc500) AM_WRITE(stfight_fm_w) /* play fm sound */ + AM_RANGE(0xc600, 0xc600) AM_WRITE(stfight_adpcm_control_w) /* voice control */ + AM_RANGE(0xc700, 0xc700) AM_WRITE(stfight_coin_w) /* coin mech */ + AM_RANGE(0xc804, 0xc806) AM_WRITE(MWA8_NOP) /* TBD */ + AM_RANGE(0xc807, 0xc807) AM_WRITE(stfight_sprite_bank_w) + AM_RANGE(0xd000, 0xd3ff) AM_WRITE(stfight_text_char_w) AM_BASE(&stfight_text_char_ram) + AM_RANGE(0xd400, 0xd7ff) AM_WRITE(stfight_text_attr_w) AM_BASE(&stfight_text_attr_ram) + AM_RANGE(0xd800, 0xd808) AM_WRITE(stfight_vh_latch_w) AM_BASE(&stfight_vh_latch_ram) + AM_RANGE(0xe000, 0xefff) AM_WRITE(MWA8_RAM) + AM_RANGE(0xf000, 0xffff) AM_WRITE(MWA8_RAM) AM_BASE(&stfight_sprite_ram) + +ADDRESS_MAP_END + +static ADDRESS_MAP_START( readmem_cpu2, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_READ(MRA8_ROM) + AM_RANGE(0xc001, 0xc001) AM_READ(YM2203_read_port_0_r) + AM_RANGE(0xc801, 0xc801) AM_READ(YM2203_read_port_1_r) + AM_RANGE(0xf000, 0xf000) AM_READ(stfight_fm_r) + AM_RANGE(0xf800, 0xffff) AM_READ(MRA8_RAM) + +ADDRESS_MAP_END + +static ADDRESS_MAP_START( writemem_cpu2, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) + AM_RANGE(0xc000, 0xc000) AM_WRITE(YM2203_control_port_0_w) + AM_RANGE(0xc001, 0xc001) AM_WRITE(YM2203_write_port_0_w) + AM_RANGE(0xc800, 0xc800) AM_WRITE(YM2203_control_port_1_w) + AM_RANGE(0xc801, 0xc801) AM_WRITE(YM2203_write_port_1_w) + AM_RANGE(0xe800, 0xe800) AM_WRITE(stfight_e800_w) + AM_RANGE(0xf800, 0xffff) AM_WRITE(MWA8_RAM) + +ADDRESS_MAP_END + + +static INPUT_PORTS_START( stfight ) + PORT_START /* PLAYER 1 */ + 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_LEFT ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* PLAYER 2 */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* START BUTTONS */ + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0xe7, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START /* DSW0 */ + + PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x07, DEF_STR( 5C_1C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x05, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 1C_5C ) ) + PORT_DIPNAME( 0x18, 0x00, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x18, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) ) + PORT_SERVICE( 0x20, IP_ACTIVE_HIGH ) + PORT_DIPNAME( 0x40, 0x40, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x00, DEF_STR( No ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x80, 0x80, "Bullet Colour" ) + PORT_DIPSETTING( 0x80, "Red" ) + PORT_DIPSETTING( 0x00, "Blue" ) + + PORT_START /* DSW1 */ + PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x01, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x06, 0x02, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x02, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x06, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x18, 0x10, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x00, "1" ) + PORT_DIPSETTING( 0x08, "2" ) + PORT_DIPSETTING( 0x10, "3" ) + PORT_DIPSETTING( 0x18, "4" ) + PORT_DIPNAME( 0x60, 0x20, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x00, "10000 30000" ) + PORT_DIPSETTING( 0x20, "20000 40000" ) + PORT_DIPSETTING( 0x40, "30000 60000" ) + PORT_DIPSETTING( 0x60, "40000 80000" ) + PORT_DIPNAME( 0x80, 0x80, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + + PORT_START /* COIN MECH */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) +INPUT_PORTS_END + + +/* text-layer characters */ +static const gfx_layout charlayout = +{ + 8,8, /* 8*8 pixels */ + 512, /* 512 characters */ + 2, /* 2 bits per pixel */ + { 4, 0 }, + { 0, 1, 2, 3, 8+0, 8+1, 8+2, 8+3 }, + { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 }, + 8*16 /* every char takes 16 consecutive bytes */ +}; + +/* foreground tiles */ +static const gfx_layout fglayout = +{ + 16,16, /* 16*16 pixels */ + 1024, /* 1024 tiles */ + 4, /* 4 bits per pixel */ + { 64*1024*8+0, 64*1024*8+4, 0, 4 }, + { 0, 1, 2, 3, + 8, 9, 10, 11, + 32*8+0, 32*8+1, 32*8+ 2, 32*8+ 3, + 32*8+8, 32*8+9, 32*8+10, 32*8+11 }, + { 0*8, 2*8, 4*8, 6*8, + 8*8, 10*8, 12*8, 14*8, + 16*8, 18*8, 20*8, 22*8, + 24*8, 26*8, 28*8, 30*8 }, + 64*8 /* every char takes 64 consecutive bytes */ +}; + +/* + * The background tiles are interleaved in banks of 2 + * - so we need to create two separate layout structs + * to handle them properly with tilemaps + */ + +/* background tiles */ +static const gfx_layout bglayout = +{ + 16,16, /* 16*16 pixels */ + 512, /* 512 tiles */ + 4, /* 4 bits per pixel */ + { 64*1024*8+4, 64*1024*8+0, 4, 0 }, + { 0, 1, 2, 3, + 8, 9, 10, 11, + 64*8+0, 64*8+1, 64*8+ 2, 64*8+ 3, + 64*8+8, 64*8+9, 64*8+10, 64*8+11 }, + { 0*8, 2*8, 4*8, 6*8, + 8*8, 10*8, 12*8, 14*8, + 16*8, 18*8, 20*8, 22*8, + 24*8, 26*8, 28*8, 30*8 }, + 128*8 /* every tile takes 64/128 consecutive bytes */ +}; + +/* sprites */ +static const gfx_layout spritelayout = +{ + 16,16, /* 16*16 pixels */ + 1024, /* 1024 sprites */ + 4, /* 4 bits per pixel */ + { 64*1024*8+0, 64*1024*8+4, 0, 4 }, + { 0, 1, 2, 3, + 8, 9, 10, 11, + 32*8+0, 32*8+1, 32*8+ 2, 32*8+ 3, + 32*8+8, 32*8+9, 32*8+10, 32*8+11 }, + { 0*8, 2*8, 4*8, 6*8, + 8*8, 10*8, 12*8, 14*8, + 16*8, 18*8, 20*8, 22*8, + 24*8, 26*8, 28*8, 30*8 }, + 64*8 /* every sprite takes 64 consecutive bytes */ +}; + + +static GFXDECODE_START( stfight ) + GFXDECODE_ENTRY( REGION_GFX1, 0x0000, charlayout, 0, 16 ) + GFXDECODE_ENTRY( REGION_GFX2, 0x0000, fglayout, 16*4, 16 ) + GFXDECODE_ENTRY( REGION_GFX3, 0x0000, bglayout, 16*4+16*16, 16 ) + GFXDECODE_ENTRY( REGION_GFX3, 0x0020, bglayout, 16*4+16*16, 16 ) + GFXDECODE_ENTRY( REGION_GFX4, 0x0000, spritelayout, 16*4+16*16+16*16, 16 ) +GFXDECODE_END + +static struct MSM5205interface msm5205_interface = +{ + stfight_adpcm_int, /* interrupt function */ + MSM5205_S48_4B /* 8KHz */ +}; + +static MACHINE_DRIVER_START( stfight ) + + /* basic machine hardware */ + MDRV_CPU_ADD(Z80, 3000000) /* 3 MHz */ + MDRV_CPU_PROGRAM_MAP(readmem_cpu1,writemem_cpu1) + MDRV_CPU_VBLANK_INT(stfight_vb_interrupt,1) + + MDRV_CPU_ADD(Z80, 3000000) + /* audio CPU */ /* 3 MHz */ + MDRV_CPU_PROGRAM_MAP(readmem_cpu2,writemem_cpu2) + MDRV_CPU_PERIODIC_INT(irq0_line_hold,120) + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + MDRV_INTERLEAVE(10) + + MDRV_MACHINE_RESET(stfight) + + /* video hardware */ + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(32*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) + MDRV_GFXDECODE(stfight) + MDRV_PALETTE_LENGTH(256+1) + MDRV_COLORTABLE_LENGTH(16*4+16*16+16*16+16*16) + + MDRV_PALETTE_INIT(stfight) + MDRV_VIDEO_START(stfight) + MDRV_VIDEO_UPDATE(stfight) + + /* sound hardware */ + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD(YM2203, 1500000) + MDRV_SOUND_ROUTE(0, "mono", 0.15) + MDRV_SOUND_ROUTE(1, "mono", 0.15) + MDRV_SOUND_ROUTE(2, "mono", 0.15) + MDRV_SOUND_ROUTE(3, "mono", 0.10) + + MDRV_SOUND_ADD(YM2203, 1500000) + MDRV_SOUND_ROUTE(0, "mono", 0.15) + MDRV_SOUND_ROUTE(1, "mono", 0.15) + MDRV_SOUND_ROUTE(2, "mono", 0.15) + MDRV_SOUND_ROUTE(3, "mono", 0.10) + + MDRV_SOUND_ADD(MSM5205, 384000) + MDRV_SOUND_CONFIG(msm5205_interface) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) +MACHINE_DRIVER_END + + +/*************************************************************************** + + Game driver(s) + +***************************************************************************/ + +ROM_START( empcity ) + ROM_REGION( 2*0x18000, REGION_CPU1, 0 ) /* 96k for code + 96k for decrypted opcodes */ + ROM_LOAD( "ec_01.rom", 0x00000, 0x8000, CRC(fe01d9b1) SHA1(c4b62d1b7e3a062f6a7a75f49cce5712f9016f98) ) + ROM_LOAD( "ec_02.rom", 0x10000, 0x8000, CRC(b3cf1ef7) SHA1(91bc92293cbb47c38a2552c5beea53894b87d446) ) /* bank switched */ + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for the second CPU */ + ROM_LOAD( "ec_04.rom", 0x0000, 0x8000, CRC(aa3e7d1e) SHA1(da350384d55f011253d19ce17fc327cd2604257f) ) + + ROM_REGION( 0x02000, REGION_GFX1, ROMREGION_DISPOSE ) /* character data */ + ROM_LOAD( "sf17.bin", 0x0000, 0x2000, CRC(1b3706b5) SHA1(61f069329a7a836523ffc8cce915b0d0129fd896) ) + + ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* foreground tile pixel data */ + ROM_LOAD( "sf07.bin", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) + ROM_LOAD( "sf08.bin", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) + ROM_LOAD( "sf05.bin", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) + ROM_LOAD( "sf06.bin", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) + + ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* background tile pixel data */ + ROM_LOAD( "sf13.bin", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) + ROM_LOAD( "sf14.bin", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) + ROM_LOAD( "sf11.bin", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) + ROM_LOAD( "sf12.bin", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) + + ROM_REGION( 0x20000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprite data */ + ROM_LOAD( "sf20.bin", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) + ROM_LOAD( "sf21.bin", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) + ROM_LOAD( "sf18.bin", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) + ROM_LOAD( "sf19.bin", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) + + ROM_REGION( 0x10000, REGION_GFX5, 0 ) /* foreground map data */ + ROM_LOAD( "sf09.bin", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) + ROM_LOAD( "sf10.bin", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) + + ROM_REGION( 0x10000, REGION_GFX6, 0 ) /* background map data */ + ROM_LOAD( "sf15.bin", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) + ROM_LOAD( "sf16.bin", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) + + ROM_REGION( 0x0800, REGION_PROMS, 0 ) + ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ + ROM_LOAD( "82s129.002", 0x0100, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ + ROM_LOAD( "82s129.003", 0x0200, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) + ROM_LOAD( "82s129.004", 0x0300, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ + ROM_LOAD( "82s129.005", 0x0400, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) + ROM_LOAD( "82s129.052", 0x0500, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ + ROM_LOAD( "82s129.066", 0x0600, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) + ROM_LOAD( "82s129.015", 0x0700, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* timing? (not used) */ + + ROM_REGION( 0x08000, REGION_SOUND1, 0 ) /* adpcm voice data */ + ROM_LOAD( "sf04.bin", 0x00000, 0x8000, CRC(1b8d0c07) SHA1(c163ccd2b7ed6c84facc075eb1564ca399f3ba17) ) +ROM_END + +/* set just contained the 3 roms cpu.4u, cpu.2u and vid.2p and the prom 82s123.a7 */ +ROM_START( empcityu ) + ROM_REGION( 2*0x18000, REGION_CPU1, 0 ) /* 96k for code + 96k for decrypted opcodes */ + ROM_LOAD( "cpu.4u", 0x00000, 0x8000, CRC(e2c40ea3) SHA1(fd3c21fe3b5faf323a16be54ad2eed23b12c977e) ) + ROM_LOAD( "cpu.2u", 0x10000, 0x8000, CRC(96ee8b81) SHA1(95b516c023766fae79241d4422814e39e268ae7d) ) /* bank switched */ + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for the second CPU */ + ROM_LOAD( "ec_04.rom", 0x0000, 0x8000, CRC(aa3e7d1e) SHA1(da350384d55f011253d19ce17fc327cd2604257f) ) + + ROM_REGION( 0x02000, REGION_GFX1, ROMREGION_DISPOSE ) /* character data */ + ROM_LOAD( "vid.2p", 0x0000, 0x2000, CRC(15593793) SHA1(ac9ca8a0aa0ce3810f45aa41e74d4946ecced245) ) + + ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* foreground tile pixel data */ + ROM_LOAD( "sf07.bin", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) + ROM_LOAD( "sf08.bin", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) + ROM_LOAD( "sf05.bin", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) + ROM_LOAD( "sf06.bin", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) + + ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* background tile pixel data */ + ROM_LOAD( "sf13.bin", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) + ROM_LOAD( "sf14.bin", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) + ROM_LOAD( "sf11.bin", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) + ROM_LOAD( "sf12.bin", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) + + ROM_REGION( 0x20000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprite data */ + ROM_LOAD( "sf20.bin", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) + ROM_LOAD( "sf21.bin", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) + ROM_LOAD( "sf18.bin", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) + ROM_LOAD( "sf19.bin", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) + + ROM_REGION( 0x10000, REGION_GFX5, 0 ) /* foreground map data */ + ROM_LOAD( "sf09.bin", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) + ROM_LOAD( "sf10.bin", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) + + ROM_REGION( 0x10000, REGION_GFX6, 0 ) /* background map data */ + ROM_LOAD( "sf15.bin", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) + ROM_LOAD( "sf16.bin", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) + + ROM_REGION( 0x0800, REGION_PROMS, 0 ) + ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ + ROM_LOAD( "82s129.002", 0x0100, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ + ROM_LOAD( "82s129.003", 0x0200, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) + ROM_LOAD( "82s129.004", 0x0300, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ + ROM_LOAD( "82s129.005", 0x0400, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) + ROM_LOAD( "82s129.052", 0x0500, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ + ROM_LOAD( "82s129.066", 0x0600, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) + ROM_LOAD( "82s129.015", 0x0700, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* timing? (not used) */ + + ROM_REGION( 0x08000, REGION_SOUND1, 0 ) /* adpcm voice data */ + ROM_LOAD( "sf04.bin", 0x00000, 0x8000, CRC(1b8d0c07) SHA1(c163ccd2b7ed6c84facc075eb1564ca399f3ba17) ) + + ROM_REGION( 0x020, REGION_USER1, 0 ) + ROM_LOAD( "82s123.a7", 0x0000, 0x0020, CRC(93e2d292) SHA1(af8edd0cfe85f28ede9604cfaf4516d54e5277c9) ) /* ?*/ +ROM_END + +ROM_START( empcityj ) + ROM_REGION( 2*0x18000, REGION_CPU1, 0 ) /* 96k for code + 96k for decrypted opcodes */ + ROM_LOAD( "1.bin", 0x00000, 0x8000, CRC(8162331c) SHA1(f2fdf5fbc52d4ea692fb87fa049c48935a73d67b) ) + ROM_LOAD( "2.bin", 0x10000, 0x8000, CRC(960edea6) SHA1(fd19475e841defe42625a94c40c6390b7e6e7682) ) /* bank switched */ + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for the second CPU */ + ROM_LOAD( "ec_04.rom", 0x0000, 0x8000, CRC(aa3e7d1e) SHA1(da350384d55f011253d19ce17fc327cd2604257f) ) + + ROM_REGION( 0x02000, REGION_GFX1, ROMREGION_DISPOSE ) /* character data */ + ROM_LOAD( "sf17.bin", 0x0000, 0x2000, CRC(1b3706b5) SHA1(61f069329a7a836523ffc8cce915b0d0129fd896) ) + + ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* foreground tile pixel data */ + ROM_LOAD( "sf07.bin", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) + ROM_LOAD( "sf08.bin", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) + ROM_LOAD( "sf05.bin", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) + ROM_LOAD( "sf06.bin", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) + + ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* background tile pixel data */ + ROM_LOAD( "sf13.bin", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) + ROM_LOAD( "sf14.bin", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) + ROM_LOAD( "sf11.bin", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) + ROM_LOAD( "sf12.bin", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) + + ROM_REGION( 0x20000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprite data */ + ROM_LOAD( "sf20.bin", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) + ROM_LOAD( "sf21.bin", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) + ROM_LOAD( "sf18.bin", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) + ROM_LOAD( "sf19.bin", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) + + ROM_REGION( 0x10000, REGION_GFX5, 0 ) /* foreground map data */ + ROM_LOAD( "sf09.bin", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) + ROM_LOAD( "sf10.bin", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) + + ROM_REGION( 0x10000, REGION_GFX6, 0 ) /* background map data */ + ROM_LOAD( "sf15.bin", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) + ROM_LOAD( "sf16.bin", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) + + ROM_REGION( 0x0800, REGION_PROMS, 0 ) + ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ + ROM_LOAD( "82s129.002", 0x0100, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ + ROM_LOAD( "82s129.003", 0x0200, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) + ROM_LOAD( "82s129.004", 0x0300, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ + ROM_LOAD( "82s129.005", 0x0400, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) + ROM_LOAD( "82s129.052", 0x0500, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ + ROM_LOAD( "82s129.066", 0x0600, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) + ROM_LOAD( "82s129.015", 0x0700, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* timing? (not used) */ + + ROM_REGION( 0x08000, REGION_SOUND1, 0 ) /* adpcm voice data */ + ROM_LOAD( "sf04.bin", 0x00000, 0x8000, CRC(1b8d0c07) SHA1(c163ccd2b7ed6c84facc075eb1564ca399f3ba17) ) +ROM_END + +ROM_START( stfight ) + ROM_REGION( 2*0x18000, REGION_CPU1, 0 ) /* 96k for code + 96k for decrypted opcodes */ + ROM_LOAD( "a-1.4q", 0x00000, 0x8000, CRC(ff83f316) SHA1(84553ebd96ddbf59a1bcb221d53781980a006925) ) + ROM_LOAD( "sf02.bin", 0x10000, 0x8000, CRC(e626ce9e) SHA1(2c6c5a5cf15cc50217c9864a4d861af8a1b1b5ad) ) /* bank switched */ + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for the second CPU */ + ROM_LOAD( "sf03.bin", 0x0000, 0x8000, CRC(6a8cb7a6) SHA1(dc123cc48d3623752b78e7c23dd8d2f5adf84f92) ) + + ROM_REGION( 0x02000, REGION_GFX1, ROMREGION_DISPOSE ) /* character data */ + ROM_LOAD( "sf17.bin", 0x0000, 0x2000, CRC(1b3706b5) SHA1(61f069329a7a836523ffc8cce915b0d0129fd896) ) + + ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* foreground tile pixel data */ + ROM_LOAD( "sf07.bin", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) + ROM_LOAD( "sf08.bin", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) + ROM_LOAD( "sf05.bin", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) + ROM_LOAD( "sf06.bin", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) + + ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* background tile pixel data */ + ROM_LOAD( "sf13.bin", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) + ROM_LOAD( "sf14.bin", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) + ROM_LOAD( "sf11.bin", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) + ROM_LOAD( "sf12.bin", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) + + ROM_REGION( 0x20000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprite data */ + ROM_LOAD( "sf20.bin", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) + ROM_LOAD( "sf21.bin", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) + ROM_LOAD( "sf18.bin", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) + ROM_LOAD( "sf19.bin", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) + + ROM_REGION( 0x10000, REGION_GFX5, 0 ) /* foreground map data */ + ROM_LOAD( "sf09.bin", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) + ROM_LOAD( "sf10.bin", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) + + ROM_REGION( 0x10000, REGION_GFX6, 0 ) /* background map data */ + ROM_LOAD( "sf15.bin", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) + ROM_LOAD( "sf16.bin", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) + + ROM_REGION( 0x0800, REGION_PROMS, 0 ) + ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ + ROM_LOAD( "82s129.002", 0x0100, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ + ROM_LOAD( "82s129.003", 0x0200, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) + ROM_LOAD( "82s129.004", 0x0300, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ + ROM_LOAD( "82s129.005", 0x0400, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) + ROM_LOAD( "82s129.052", 0x0500, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ + ROM_LOAD( "82s129.066", 0x0600, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) + ROM_LOAD( "82s129.015", 0x0700, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* timing? (not used) */ + + ROM_REGION( 0x08000, REGION_SOUND1, 0 ) /* adpcm voice data */ + ROM_LOAD( "sf04.bin", 0x00000, 0x8000, CRC(1b8d0c07) SHA1(c163ccd2b7ed6c84facc075eb1564ca399f3ba17) ) +ROM_END + +/* not sure if this is a bootleg or not, it still displays the seibu copyright on a screen during the attract mode + but not during the initial startup, must investigate this set more later */ +ROM_START( stfighta ) + ROM_REGION( 2*0x18000, REGION_CPU1, 0 ) /* 96k for code + 96k for decrypted opcodes */ + ROM_LOAD( "sfight2.bin", 0x00000, 0x8000, CRC(8fb4dfc9) SHA1(0350f4a8749883a4e2e9c4aed2447a64a078f9ce) )// 2.bin 58.532715% + ROM_LOAD( "sfight1.bin", 0x10000, 0x8000, CRC(983ce746) SHA1(3c7b9498f1adf253ba651558ee40641ec3dbc5eb) )/* bank switched */ // a-1.4q 99.737549% + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k for the second CPU */ + ROM_LOAD( "sf03.bin", 0x0000, 0x8000, CRC(6a8cb7a6) SHA1(dc123cc48d3623752b78e7c23dd8d2f5adf84f92) ) + + ROM_REGION( 0x02000, REGION_GFX1, ROMREGION_DISPOSE ) /* character data */ + ROM_LOAD( "sf17.bin", 0x0000, 0x2000, CRC(1b3706b5) SHA1(61f069329a7a836523ffc8cce915b0d0129fd896) ) + + ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* foreground tile pixel data */ + ROM_LOAD( "sf07.bin", 0x10000, 0x8000, CRC(2c6caa5f) SHA1(f6893cb87004979ead331897c684f995f850447e) ) + ROM_LOAD( "sf08.bin", 0x18000, 0x8000, CRC(e11ded31) SHA1(e3e634ad324d51e52d79dd79e5e6e5697cb8d21f) ) + ROM_LOAD( "sf05.bin", 0x00000, 0x8000, CRC(0c099a31) SHA1(dabaf8edc59e4954941cd8176031a358f45a1956) ) + ROM_LOAD( "sf06.bin", 0x08000, 0x8000, CRC(3cc77c31) SHA1(13d2324df5a322d499c9959a6bb3a844edaefb45) ) + + ROM_REGION( 0x20000, REGION_GFX3, ROMREGION_DISPOSE ) /* background tile pixel data */ + ROM_LOAD( "sf13.bin", 0x10000, 0x8000, CRC(0ae48dd3) SHA1(ca3d9aeb9f4343c379cef9282e408fbf8aa67d99) ) + ROM_LOAD( "sf14.bin", 0x18000, 0x8000, CRC(debf5d76) SHA1(eb18c35166eb5f93be98b3c30c7d909c0a68eada) ) + ROM_LOAD( "sf11.bin", 0x00000, 0x8000, CRC(8261ecfe) SHA1(5817f4a0458a949298414fe09c86bbcf50be52f3) ) + ROM_LOAD( "sf12.bin", 0x08000, 0x8000, CRC(71137301) SHA1(087a9f401939bc30f1dafa9916e8d8c564595a57) ) + + ROM_REGION( 0x20000, REGION_GFX4, ROMREGION_DISPOSE ) /* sprite data */ + ROM_LOAD( "sf20.bin", 0x10000, 0x8000, CRC(8299f247) SHA1(71891f7b1fbfaed14c3854b7f6e10a3ddb4bd479) ) + ROM_LOAD( "sf21.bin", 0x18000, 0x8000, CRC(b57dc037) SHA1(69ac79a95ba9ace7c9ca7af480a4a10176be5ace) ) + ROM_LOAD( "sf18.bin", 0x00000, 0x8000, CRC(68acd627) SHA1(f98ff9ccb0913711079a2988e8dd08695fb5e107) ) + ROM_LOAD( "sf19.bin", 0x08000, 0x8000, CRC(5170a057) SHA1(9222f9febc222fa0c2eead258ad77c857f6d40c8) ) + + ROM_REGION( 0x10000, REGION_GFX5, 0 ) /* foreground map data */ + ROM_LOAD( "sf09.bin", 0x00000, 0x8000, CRC(8ceaf4fe) SHA1(5698f2ff44c109825b8d9d0b6dd2426624df668b) ) + ROM_LOAD( "sf10.bin", 0x08000, 0x8000, CRC(5a1a227a) SHA1(24928ab218824ae1f5380398ceb90dcad525cc08) ) + + ROM_REGION( 0x10000, REGION_GFX6, 0 ) /* background map data */ + ROM_LOAD( "sf15.bin", 0x00000, 0x8000, CRC(27a310bc) SHA1(dd30d72bc33b0bf7ddaf3ab730e028f51b20152a) ) + ROM_LOAD( "sf16.bin", 0x08000, 0x8000, CRC(3d19ce18) SHA1(38f691a23c96ef672637965c1a13f6d1595f9d51) ) + + ROM_REGION( 0x0800, REGION_PROMS, 0 ) + ROM_LOAD( "82s129.006", 0x0000, 0x0100, CRC(f9424b5b) SHA1(e3bc23213406d35d54f1221f17f25d433df273a2) ) /* text lookup table */ + ROM_LOAD( "82s129.002", 0x0100, 0x0100, CRC(c883d49b) SHA1(e84900ccf6f27e5043e43c0d85ea1e4eee7e52d3) ) /* fg lookup table */ + ROM_LOAD( "82s129.003", 0x0200, 0x0100, CRC(af81882a) SHA1(b1008c991bd8d1157b3479e465ab286c70418b58) ) + ROM_LOAD( "82s129.004", 0x0300, 0x0100, CRC(1831ce7c) SHA1(57afbee9225f0efd63895a5f522e96dc87ca2616) ) /* bg lookup table */ + ROM_LOAD( "82s129.005", 0x0400, 0x0100, CRC(96cb6293) SHA1(1dcdeaa995e6ffa3753b742842c5ffe0f68ef8cd) ) + ROM_LOAD( "82s129.052", 0x0500, 0x0100, CRC(3d915ffc) SHA1(921be6d5e5fc0fdee9c9f545c1c4a0c334e9844c) ) /* sprite lookup table */ + ROM_LOAD( "82s129.066", 0x0600, 0x0100, CRC(51e8832f) SHA1(ed8c00559e7a02bb8c11861d747c8c64c01b7437) ) + ROM_LOAD( "82s129.015", 0x0700, 0x0100, CRC(0eaf5158) SHA1(bafd4108708f66cd7b280e47152b108f3e254fc9) ) /* timing? (not used) */ + + ROM_REGION( 0x08000, REGION_SOUND1, 0 ) /* adpcm voice data */ + ROM_LOAD( "sf04.bin", 0x00000, 0x8000, CRC(1b8d0c07) SHA1(c163ccd2b7ed6c84facc075eb1564ca399f3ba17) ) +ROM_END + +GAME( 1986, empcity, 0, stfight, stfight, empcity, ROT0, "Seibu Kaihatsu", "Empire City: 1931 (bootleg?)", 0 ) +GAME( 1986, empcityu, empcity, stfight, stfight, stfight, ROT0, "[Seibu Kaihatsu] (Taito / Romstar license)", "Empire City: 1931 (US)", 0 ) +GAME( 1986, empcityj, empcity, stfight, stfight, stfight, ROT0, "[Seibu Kaihatsu] (Taito license)", "Empire City: 1931 (Japan)", 0 ) +GAME( 1986, stfight, empcity, stfight, stfight, stfight, ROT0, "Seibu Kaihatsu", "Street Fight (Germany)", 0 ) +GAME( 1986, stfighta, empcity, stfight, stfight, stfight, ROT0, "Seibu Kaihatsu", "Street Fight", 0 ) |