diff options
| author | 2008-07-16 10:16:57 +0000 | |
|---|---|---|
| committer | 2008-07-16 10:16:57 +0000 | |
| commit | 34b353c1e07d01dc7a6d35e9980263351d85488b (patch) | |
| tree | 28ec607df0294d257e8a85817e1bd53c08c52a36 /src | |
| parent | ed46d4f53146b1acbf6d5811b20801947ca85580 (diff) | |
00871: pow: At 3/4 of the 1st level, there is a large pillar, which pops up too late.
general cleanup
Diffstat (limited to 'src')
| -rw-r--r-- | src/mame/drivers/snk68.c | 1312 | ||||
| -rw-r--r-- | src/mame/mamedriv.c | 1 | ||||
| -rw-r--r-- | src/mame/video/snk68.c | 353 |
3 files changed, 722 insertions, 944 deletions
diff --git a/src/mame/drivers/snk68.c b/src/mame/drivers/snk68.c index ce728ed7208..e985d1f5950 100644 --- a/src/mame/drivers/snk68.c +++ b/src/mame/drivers/snk68.c @@ -38,46 +38,38 @@ Notes: #include "sound/3812intf.h" #include "sound/upd7759.h" +extern UINT16* pow_fg_videoram; + VIDEO_START( pow ); VIDEO_START( searchar ); -VIDEO_START( ikari3 ); VIDEO_UPDATE( pow ); -VIDEO_UPDATE( searchar ); WRITE16_HANDLER( pow_paletteram16_word_w ); WRITE16_HANDLER( pow_flipscreen16_w ); -WRITE16_HANDLER( pow_video16_w ); +WRITE16_HANDLER( searchar_flipscreen16_w ); +READ16_HANDLER( pow_spriteram_r ); +WRITE16_HANDLER( pow_spriteram_w ); +READ16_HANDLER( pow_fg_videoram_r ); +WRITE16_HANDLER( pow_fg_videoram_w ); +WRITE16_HANDLER( searchar_fg_videoram_w ); static int invert_controls; +static int sound_status; /******************************************************************************/ -static READ16_HANDLER( sound_cpu_r ) -{ - return 0x0100; -} - -static READ16_HANDLER( pow_video16_r ) -{ - UINT16 data = videoram16[offset]; - return data; -} - -static WRITE16_HANDLER( pow_spriteram16_w ) +static READ16_HANDLER( sound_status_r ) { - /* DWORD aligned bytes should be $ff */ - if (!(offset & 1)) - data |= 0xff00; - COMBINE_DATA(&spriteram16[offset]); + return (sound_status << 8); } -static READ16_HANDLER( pow_spriteram16_r ) +static WRITE8_HANDLER( sound_status_w ) { - return spriteram16[offset]; + sound_status = data; } static READ16_HANDLER( control_1_r ) { - return (input_port_read(machine, "IN0") + (input_port_read(machine, "IN1") << 8)); + return (input_port_read(machine, "IN0") | (input_port_read(machine, "IN1") << 8)); } static READ16_HANDLER( control_2_r ) @@ -85,16 +77,6 @@ static READ16_HANDLER( control_2_r ) return input_port_read(machine, "IN2"); } -static READ16_HANDLER( dip_1_r ) -{ - return input_port_read(machine, "DSW1") << 8; -} - -static READ16_HANDLER( dip_2_r ) -{ - return input_port_read(machine, "DSW2") << 8; -} - static READ16_HANDLER( rotary_1_r ) { return (( ~(1 << input_port_read(machine, "ROT1")) )<<8)&0xff00; @@ -126,223 +108,169 @@ static WRITE16_HANDLER( protection_w ) static WRITE16_HANDLER( sound_w ) { - soundlatch_w(machine,0,(data>>8)&0xff); - cpunum_set_input_line(machine, 1,INPUT_LINE_NMI,PULSE_LINE); + if (ACCESSING_BITS_8_15) + { + soundlatch_w(machine, 0, data >> 8); + cpunum_set_input_line(machine, 1, INPUT_LINE_NMI, PULSE_LINE); + } } /*******************************************************************************/ -static ADDRESS_MAP_START( pow_readmem, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) - AM_RANGE(0x040000, 0x043fff) AM_READ(SMH_RAM) +static ADDRESS_MAP_START( pow_map, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_ROM + AM_RANGE(0x040000, 0x043fff) AM_RAM AM_RANGE(0x080000, 0x080001) AM_READ(control_1_r) - AM_RANGE(0x0c0000, 0x0c0001) AM_READ(control_2_r) - AM_RANGE(0x0e0000, 0x0e0001) AM_READ(SMH_NOP) /* Watchdog or IRQ ack */ - AM_RANGE(0x0e8000, 0x0e8001) AM_READ(SMH_NOP) /* Watchdog or IRQ ack */ - AM_RANGE(0x0f0000, 0x0f0001) AM_READ(dip_1_r) - AM_RANGE(0x0f0008, 0x0f0009) AM_READ(dip_2_r) - AM_RANGE(0x100000, 0x100fff) AM_READ(pow_video16_r) - AM_RANGE(0x200000, 0x207fff) AM_READ(pow_spriteram16_r) - AM_RANGE(0x400000, 0x400fff) AM_READ(SMH_RAM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( pow_writemem, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM) - AM_RANGE(0x040000, 0x043fff) AM_WRITE(SMH_RAM) AM_RANGE(0x080000, 0x080001) AM_WRITE(sound_w) - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(pow_flipscreen16_w) - AM_RANGE(0x0f0008, 0x0f0009) AM_WRITE(SMH_NOP) - AM_RANGE(0x100000, 0x100fff) AM_WRITE(pow_video16_w) AM_BASE(&videoram16) - AM_RANGE(0x101000, 0x101fff) AM_WRITE(SMH_NOP) // unknown register writes - AM_RANGE(0x200000, 0x207fff) AM_WRITE(pow_spriteram16_w) AM_BASE(&spriteram16) - AM_RANGE(0x400000, 0x400fff) AM_WRITE(pow_paletteram16_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x0c0000, 0x0c0001) AM_READ(control_2_r) + AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(pow_flipscreen16_w) // + char bank + AM_RANGE(0x0e0000, 0x0e0001) AM_READNOP /* Watchdog or IRQ ack */ + AM_RANGE(0x0e8000, 0x0e8001) AM_READNOP /* Watchdog or IRQ ack */ + AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1") + AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW2") +// AM_RANGE(0x0f0008, 0x0f0009) AM_WRITENOP /* ?? */ + AM_RANGE(0x100000, 0x100fff) AM_READWRITE(pow_fg_videoram_r, pow_fg_videoram_w) AM_MIRROR(0x1000) AM_BASE(&pow_fg_videoram) // 8-bit + AM_RANGE(0x200000, 0x207fff) AM_READWRITE(pow_spriteram_r, pow_spriteram_w) AM_BASE(&spriteram16) // only partially populated + AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(pow_paletteram16_word_w) AM_BASE(&paletteram16) ADDRESS_MAP_END -static ADDRESS_MAP_START( searchar_readmem, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x03ffff) AM_READ(SMH_ROM) - AM_RANGE(0x040000, 0x043fff) AM_READ(SMH_RAM) +static ADDRESS_MAP_START( searchar_map, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x03ffff) AM_ROM + AM_RANGE(0x040000, 0x043fff) AM_RAM AM_RANGE(0x080000, 0x080005) AM_READ(protcontrols_r) /* Player 1 & 2 */ + AM_RANGE(0x080000, 0x080001) AM_WRITE(sound_w) + AM_RANGE(0x080006, 0x080007) AM_WRITE(protection_w) /* top byte unknown, bottom is protection in ikari3 and streetsm */ + AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(searchar_flipscreen16_w) AM_RANGE(0x0c0000, 0x0c0001) AM_READ(rotary_1_r) /* Player 1 rotary */ AM_RANGE(0x0c8000, 0x0c8001) AM_READ(rotary_2_r) /* Player 2 rotary */ AM_RANGE(0x0d0000, 0x0d0001) AM_READ(rotary_lsb_r) /* Extra rotary bits */ - AM_RANGE(0x0e0000, 0x0e0001) AM_READ(SMH_NOP) /* Watchdog or IRQ ack */ - AM_RANGE(0x0e8000, 0x0e8001) AM_READ(SMH_NOP) /* Watchdog or IRQ ack */ - AM_RANGE(0x0f0000, 0x0f0001) AM_READ(dip_1_r) - AM_RANGE(0x0f0008, 0x0f0009) AM_READ(dip_2_r) - AM_RANGE(0x0f8000, 0x0f8001) AM_READ(sound_cpu_r) - AM_RANGE(0x100000, 0x107fff) AM_READ(pow_spriteram16_r) - AM_RANGE(0x200000, 0x200fff) AM_READ(pow_video16_r) - AM_RANGE(0x300000, 0x33ffff) AM_READ(SMH_BANK1) /* Extra code bank */ - AM_RANGE(0x400000, 0x400fff) AM_READ(SMH_RAM) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( searchar_writemem, ADDRESS_SPACE_PROGRAM, 16 ) - AM_RANGE(0x000000, 0x03ffff) AM_WRITE(SMH_ROM) - AM_RANGE(0x040000, 0x043fff) AM_WRITE(SMH_RAM) - AM_RANGE(0x080000, 0x080001) AM_WRITE(sound_w) - AM_RANGE(0x080006, 0x080007) AM_WRITE(protection_w) /* top byte unknown, bottom is protection in ikari3 and streetsm */ - AM_RANGE(0x0c0000, 0x0c0001) AM_WRITE(pow_flipscreen16_w) - AM_RANGE(0x0f0000, 0x0f0001) AM_WRITE(SMH_NOP) - AM_RANGE(0x100000, 0x107fff) AM_WRITE(pow_spriteram16_w) AM_BASE(&spriteram16) - AM_RANGE(0x200000, 0x200fff) AM_WRITE(pow_video16_w) AM_BASE(&videoram16) - AM_RANGE(0x201000, 0x201fff) AM_WRITE(pow_video16_w) /* Mirror used by Ikari 3 */ - AM_RANGE(0x400000, 0x400fff) AM_WRITE(pow_paletteram16_word_w) AM_BASE(&paletteram16) + AM_RANGE(0x0e0000, 0x0e0001) AM_READNOP /* Watchdog or IRQ ack */ + AM_RANGE(0x0e8000, 0x0e8001) AM_READNOP /* Watchdog or IRQ ack */ +// AM_RANGE(0x0f0000, 0x0f0001) AM_WRITENOP /* ?? */ + AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1") + AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW2") + AM_RANGE(0x0f8000, 0x0f8001) AM_READ(sound_status_r) + AM_RANGE(0x100000, 0x107fff) AM_READWRITE(pow_spriteram_r, pow_spriteram_w) AM_BASE(&spriteram16) // only partially populated + AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(searchar_fg_videoram_w) AM_MIRROR(0x1000) AM_BASE(&pow_fg_videoram) /* Mirror is used by Ikari 3 */ + AM_RANGE(0x300000, 0x33ffff) AM_ROMBANK(1) /* Extra code bank */ + AM_RANGE(0x400000, 0x400fff) AM_RAM_WRITE(pow_paletteram16_word_w) AM_BASE(&paletteram16) ADDRESS_MAP_END /******************************************************************************/ -static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xefff) AM_READ(SMH_ROM) - AM_RANGE(0xf000, 0xf7ff) AM_READ(SMH_RAM) - AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) - AM_RANGE(0x0000, 0xefff) AM_WRITE(SMH_ROM) - AM_RANGE(0xf000, 0xf7ff) AM_WRITE(SMH_RAM) +static ADDRESS_MAP_START( sound_map, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0xefff) AM_ROM + AM_RANGE(0xf000, 0xf7ff) AM_RAM + AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r) AM_WRITE(sound_status_w) ADDRESS_MAP_END static WRITE8_HANDLER( D7759_write_port_0_w ) { upd7759_port_w(offset,data); - upd7759_start_w (0,0); - upd7759_start_w (0,1); + upd7759_start_w(0,0); + upd7759_start_w(0,1); } -static ADDRESS_MAP_START( sound_readport, ADDRESS_SPACE_IO, 8 ) +static ADDRESS_MAP_START( sound_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_READ(YM3812_status_port_0_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( sound_writeport, ADDRESS_SPACE_IO, 8 ) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x00) AM_WRITE(YM3812_control_port_0_w) + AM_RANGE(0x00, 0x00) AM_READWRITE(YM3812_status_port_0_r, YM3812_control_port_0_w) AM_RANGE(0x20, 0x20) AM_WRITE(YM3812_write_port_0_w) AM_RANGE(0x40, 0x40) AM_WRITE(D7759_write_port_0_w) AM_RANGE(0x80, 0x80) AM_WRITE(upd7759_0_reset_w) ADDRESS_MAP_END /******************************************************************************/ -#define POW_IN0\ - PORT_START_TAG("IN0") /* Player 1 controls */\ - 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_BUTTON3 )\ + +static INPUT_PORTS_START( pow ) + PORT_START_TAG("IN0") /* Player 1 controls */ + 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_BUTTON3 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) -#define POW_IN1\ - PORT_START_TAG("IN1") /* Player 2 controls */\ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)\ - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)\ - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)\ - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)\ - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)\ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)\ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)\ - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - -#define POW_IN2\ - PORT_START_TAG("IN2")\ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )\ - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the service mode dsw */\ - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )\ - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )\ - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )\ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )\ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )\ + PORT_START_TAG("IN1") /* Player 2 controls */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + PORT_START_TAG("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the service mode dsw */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) -#define POW_DSW2\ - PORT_START_TAG("DSW2") /* Dip switch bank 2, all active high */\ - PORT_SERVICE( 0x01, IP_ACTIVE_HIGH )\ - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Allow_Continue ) )\ - PORT_DIPSETTING( 0x02, DEF_STR( No ) )\ - PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )\ - PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )\ - PORT_DIPSETTING( 0x00, "20k 50k" )\ - PORT_DIPSETTING( 0x08, "40k 100k" )\ - PORT_DIPSETTING( 0x04, "60k 150k" )\ - PORT_DIPSETTING( 0x0c, DEF_STR( None ) )\ - PORT_DIPNAME( 0x30, 0x00, "Game Mode" )\ - PORT_DIPSETTING( 0x00, "Demo Sounds On" )\ - PORT_DIPSETTING( 0x20, "Demo Sounds Off" )\ - PORT_DIPSETTING( 0x30, "Freeze" )\ - PORT_DIPSETTING( 0x10, "Infinite Lives (Cheat)")\ - PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) )\ - PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )\ - PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )\ - PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )\ - PORT_DIPSETTING( 0xc0, DEF_STR( Hardest ) ) + PORT_START_TAG("DSW1") + PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Coin_B ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0100, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0300, DEF_STR( 1C_4C ) ) + PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Coin_A ) ) + PORT_DIPSETTING( 0x0c00, DEF_STR( 4C_1C ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ) ) + PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x0000, "2" ) + PORT_DIPSETTING( 0x1000, "3" ) + PORT_DIPNAME( 0x2000, 0x0000, "Bonus Occurrence" ) + PORT_DIPSETTING( 0x0000, "1st & 2nd only" ) + PORT_DIPSETTING( 0x2000, "1st & every 2nd" ) + PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Language ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( English ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( Japanese ) ) + PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( On ) ) -static INPUT_PORTS_START( pow ) -POW_IN0 -POW_IN1 -POW_IN2 - - PORT_START_TAG("DSW1") /* Dip switch bank 1, all active high */ - PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_4C ) ) - PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x00, "2" ) - PORT_DIPSETTING( 0x10, "3" ) - PORT_DIPNAME( 0x20, 0x00, "Bonus Occurrence" ) - PORT_DIPSETTING( 0x00, "1st & 2nd only" ) - PORT_DIPSETTING( 0x20, "1st & every 2nd" ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Language ) ) - PORT_DIPSETTING( 0x00, DEF_STR( English ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Japanese ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - -POW_DSW2 + PORT_START_TAG("DSW2") + PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_SERVICE( 0x0100, IP_ACTIVE_HIGH ) + PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( No ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x0000, "20k 50k" ) + PORT_DIPSETTING( 0x0800, "40k 100k" ) + PORT_DIPSETTING( 0x0400, "60k 150k" ) + PORT_DIPSETTING( 0x0c00, DEF_STR( None ) ) + PORT_DIPNAME( 0x3000, 0x0000, "Game Mode" ) + PORT_DIPSETTING( 0x2000, "Demo Sounds Off" ) + PORT_DIPSETTING( 0x0000, "Demo Sounds On" ) + PORT_DIPSETTING( 0x3000, "Freeze" ) + PORT_DIPSETTING( 0x1000, "Infinite Lives (Cheat)") + PORT_DIPNAME( 0xc000, 0x0000, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0xc000, DEF_STR( Hardest ) ) INPUT_PORTS_END /* Identical to pow, but the Language dip switch has no effect */ static INPUT_PORTS_START( powj ) -POW_IN0 -POW_IN1 -POW_IN2 - - PORT_START_TAG("DSW1") /* Dip switch bank 1, all active high */ - PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coin_B ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_4C ) ) - PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coin_A ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( 4C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x00, "2" ) - PORT_DIPSETTING( 0x10, "3" ) - PORT_DIPNAME( 0x20, 0x00, "Bonus Occurrence" ) - PORT_DIPSETTING( 0x00, "1st & 2nd only" ) - PORT_DIPSETTING( 0x20, "1st & every 2nd" ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - -POW_DSW2 + PORT_INCLUDE( pow ) + + PORT_MODIFY("DSW1") + PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( On ) ) INPUT_PORTS_END + static INPUT_PORTS_START( searchar ) PORT_START_TAG("IN0") /* Player 1 controls */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY @@ -362,54 +290,64 @@ static INPUT_PORTS_START( searchar ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - -POW_IN2 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + PORT_START_TAG("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the service mode dsw */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START_TAG("DSW1") - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Joystick ) ) - PORT_DIPSETTING( 0x00, "Rotary Joystick" ) - PORT_DIPSETTING( 0x01, "Standard Joystick" ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x02, DEF_STR( On ) ) - PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x08, "2" ) - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x04, "4" ) - PORT_DIPSETTING( 0x0c, "5" ) - PORT_DIPNAME( 0x30, 0x00, "Coin A & B" ) - PORT_DIPSETTING( 0x20, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x30, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x40, 0x00, "Bonus Occurrence" ) - PORT_DIPSETTING( 0x00, "1st & 2nd only" ) - PORT_DIPSETTING( 0x40, "1st & every 2nd" ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Joystick ) ) + PORT_DIPSETTING( 0x0000, "Rotary Joystick" ) + PORT_DIPSETTING( 0x0100, "Standard Joystick" ) + PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( On ) ) + PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x0800, "2" ) + PORT_DIPSETTING( 0x0000, "3" ) + PORT_DIPSETTING( 0x0400, "4" ) + PORT_DIPSETTING( 0x0c00, "5" ) + PORT_DIPNAME( 0x3000, 0x0000, "Coin A & B" ) + PORT_DIPSETTING( 0x2000, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x3000, DEF_STR( Free_Play ) ) + PORT_DIPNAME( 0x4000, 0x0000, "Bonus Occurrence" ) + PORT_DIPSETTING( 0x0000, "1st & 2nd only" ) + PORT_DIPSETTING( 0x4000, "1st & every 2nd" ) + PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( On ) ) PORT_START_TAG("DSW2") - PORT_SERVICE( 0x01, IP_ACTIVE_HIGH ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Allow_Continue ) ) - PORT_DIPSETTING( 0x02, DEF_STR( No ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) - PORT_DIPSETTING( 0x00, "50k 200k" ) - PORT_DIPSETTING( 0x08, "70k 270k" ) - PORT_DIPSETTING( 0x04, "90k 350k" ) - PORT_DIPSETTING( 0x0c, DEF_STR( None ) ) - PORT_DIPNAME( 0x30, 0x00, "Game Mode" ) - PORT_DIPSETTING( 0x20, "Demo Sounds Off" ) - PORT_DIPSETTING( 0x00, "Demo Sounds On" ) - PORT_DIPSETTING( 0x30, "Freeze" ) - PORT_DIPSETTING( 0x10, "Infinite Lives (Cheat)") - PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0xc0, DEF_STR( Hardest ) ) + PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_SERVICE( 0x0100, IP_ACTIVE_HIGH ) + PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( No ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x0000, "50k 200k" ) + PORT_DIPSETTING( 0x0800, "70k 270k" ) + PORT_DIPSETTING( 0x0400, "90k 350k" ) + PORT_DIPSETTING( 0x0c00, DEF_STR( None ) ) + PORT_DIPNAME( 0x3000, 0x0000, "Game Mode" ) + PORT_DIPSETTING( 0x2000, "Demo Sounds Off" ) + PORT_DIPSETTING( 0x0000, "Demo Sounds On" ) + PORT_DIPSETTING( 0x3000, "Freeze" ) + PORT_DIPSETTING( 0x1000, "Infinite Lives (Cheat)") + PORT_DIPNAME( 0xc000, 0x0000, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0xc000, DEF_STR( Hardest ) ) PORT_START_TAG("ROT1") /* player 1 12-way rotary control */ PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(5) PORT_KEYDELTA(5) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_REVERSE PORT_FULL_TURN_COUNT(12) @@ -418,119 +356,105 @@ POW_IN2 PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(5) PORT_KEYDELTA(5) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M) PORT_PLAYER(2) PORT_REVERSE PORT_FULL_TURN_COUNT(12) INPUT_PORTS_END -#define STREETS_IN0\ - PORT_START_TAG("IN0") /* Player 1 controls */\ - 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_BUTTON3 )\ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )\ - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) - -#define STREETS_IN1\ - PORT_START_TAG("IN1") /* Player 2 controls */\ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)\ - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)\ - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)\ - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)\ - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)\ - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)\ - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)\ - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - -#define STREETS_REST\ - PORT_START_TAG("DSW2") /* Dip switches (Active high) */\ - PORT_SERVICE( 0x01, IP_ACTIVE_HIGH )\ - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Allow_Continue ) )\ - PORT_DIPSETTING( 0x02, DEF_STR( No ) )\ - PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )\ - PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) )\ - PORT_DIPSETTING( 0x00, "200k 400k" )\ - PORT_DIPSETTING( 0x08, "400k 600k" )\ - PORT_DIPSETTING( 0x04, "600k 800k" )\ - PORT_DIPSETTING( 0x0c, DEF_STR( None ) )\ - PORT_DIPNAME( 0x30, 0x00, "Game Mode" )\ - PORT_DIPSETTING( 0x20, "Demo Sounds Off" )\ - PORT_DIPSETTING( 0x00, "Demo Sounds On" )\ - PORT_DIPSETTING( 0x30, "Freeze" )\ - PORT_DIPSETTING( 0x10, "Infinite Lives (Cheat)")\ - PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) )\ - PORT_DIPSETTING( 0x80, DEF_STR( Easy ) )\ - PORT_DIPSETTING( 0x00, DEF_STR( Normal ) )\ - PORT_DIPSETTING( 0x40, DEF_STR( Hard ) )\ - PORT_DIPSETTING( 0xc0, DEF_STR( Hardest ) )\ - PORT_START_TAG("ROT1") /* player 1 12-way rotary control - not used in this game */\ - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )\ - PORT_START_TAG("ROT2") /* player 2 12-way rotary control - not used in this game */\ - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) static INPUT_PORTS_START( streetsm ) -STREETS_IN0 -STREETS_IN1 -POW_IN2 + PORT_START_TAG("IN0") /* Player 1 controls */ + 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_BUTTON3 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) + + PORT_START_TAG("IN1") /* Player 2 controls */ + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + PORT_START_TAG("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the service mode dsw */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START_TAG("DSW1") /* Dip switches (Active high) */ - PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x02, "1" ) - PORT_DIPSETTING( 0x00, "2" ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x03, "4" ) - PORT_DIPNAME( 0x0c, 0x00, "Coin A & B" ) - PORT_DIPSETTING( 0x08, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C ) ) - PORT_DIPSETTING( 0x0c, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, "Bonus Occurrence" ) - PORT_DIPSETTING( 0x00, "1st & 2nd only" ) - PORT_DIPSETTING( 0x20, "1st & every 2nd" ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) -STREETS_REST + PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x0200, "1" ) + PORT_DIPSETTING( 0x0000, "2" ) + PORT_DIPSETTING( 0x0100, "3" ) + PORT_DIPSETTING( 0x0300, "4" ) + PORT_DIPNAME( 0x0c00, 0x0000, "Coin A & B" ) + PORT_DIPSETTING( 0x0800, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x0c00, DEF_STR( Free_Play ) ) + PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( On ) ) + PORT_DIPNAME( 0x2000, 0x0000, "Bonus Occurrence" ) + PORT_DIPSETTING( 0x0000, "1st & 2nd only" ) + PORT_DIPSETTING( 0x2000, "1st & every 2nd" ) + PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( On ) ) + PORT_START_TAG("DSW2") /* Dip switches (Active high) */ + PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_SERVICE( 0x0100, IP_ACTIVE_HIGH ) + PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( No ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x0000, "200k 400k" ) + PORT_DIPSETTING( 0x0800, "400k 600k" ) + PORT_DIPSETTING( 0x0400, "600k 800k" ) + PORT_DIPSETTING( 0x0c00, DEF_STR( None ) ) + PORT_DIPNAME( 0x3000, 0x0000, "Game Mode" ) + PORT_DIPSETTING( 0x2000, "Demo Sounds Off" ) + PORT_DIPSETTING( 0x0000, "Demo Sounds On" ) + PORT_DIPSETTING( 0x3000, "Freeze" ) + PORT_DIPSETTING( 0x1000, "Infinite Lives (Cheat)") + PORT_DIPNAME( 0xc000, 0x0000, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0xc000, DEF_STR( Hardest ) ) + + PORT_START_TAG("ROT1") /* player 1 12-way rotary control - not used in this game */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START_TAG("ROT2") /* player 2 12-way rotary control - not used in this game */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END /* Same as streetsm, but Coinage is different */ static INPUT_PORTS_START( streetsj ) -STREETS_IN0 -STREETS_IN1 -POW_IN2 - - PORT_START_TAG("DSW1") /* Dip switches (Active high) */ - PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x02, "1" ) - PORT_DIPSETTING( 0x00, "2" ) - PORT_DIPSETTING( 0x01, "3" ) - PORT_DIPSETTING( 0x03, "4" ) - PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Coinage ) ) - PORT_DIPSETTING( 0x0c, "A 4/1 B 1/4" ) - PORT_DIPSETTING( 0x04, "A 3/1 B 1/3" ) - PORT_DIPSETTING( 0x08, "A 2/1 B 1/2" ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, "Bonus Occurrence" ) - PORT_DIPSETTING( 0x00, "1st & 2nd only" ) - PORT_DIPSETTING( 0x20, "1st & every 2nd" ) - PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x40, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) - -STREETS_REST + PORT_INCLUDE( streetsm ) + + PORT_MODIFY("DSW1") + PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x0c00, "A 4/1 B 1/4" ) + PORT_DIPSETTING( 0x0400, "A 3/1 B 1/3" ) + PORT_DIPSETTING( 0x0800, "A 2/1 B 1/2" ) + PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ) ) INPUT_PORTS_END + static INPUT_PORTS_START( ikari3 ) PORT_START_TAG("IN0") /* Player 1 controls, maybe all are active_high? */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY @@ -550,54 +474,64 @@ static INPUT_PORTS_START( ikari3 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - -POW_IN2 + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) + + PORT_START_TAG("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE ) /* same as the service mode dsw */ + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START_TAG("DSW1") /* Dip switches (Active high) */ - PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) - PORT_DIPSETTING( 0x02, "2" ) - PORT_DIPSETTING( 0x00, "3" ) - PORT_DIPSETTING( 0x01, "4" ) - PORT_DIPSETTING( 0x03, "5" ) - PORT_DIPNAME( 0x0c, 0x00, "Coin A & B" ) - PORT_DIPSETTING( 0x08, "First 2 Coins/1 Credit then 1/1" ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x04, "First 1 Coin/2 Credits then 1/1" ) - PORT_DIPSETTING( 0x0c, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x10, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x00, "Bonus Occurrence" ) - PORT_DIPSETTING( 0x00, "1st & 2nd only" ) - PORT_DIPSETTING( 0x20, "1st & every 2nd" ) - PORT_DIPNAME( 0x40, 0x00, "Blood" ) - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x00, DEF_STR( Flip_Screen ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x0200, "2" ) + PORT_DIPSETTING( 0x0000, "3" ) + PORT_DIPSETTING( 0x0100, "4" ) + PORT_DIPSETTING( 0x0300, "5" ) + PORT_DIPNAME( 0x0c00, 0x0000, "Coin A & B" ) + PORT_DIPSETTING( 0x0800, "First 2 Coins/1 Credit then 1/1" ) + PORT_DIPSETTING( 0x0000, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0400, "First 1 Coin/2 Credits then 1/1" ) + PORT_DIPSETTING( 0x0c00, DEF_STR( Free_Play ) ) + PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( On ) ) + PORT_DIPNAME( 0x2000, 0x0000, "Bonus Occurrence" ) + PORT_DIPSETTING( 0x0000, "1st & 2nd only" ) + PORT_DIPSETTING( 0x2000, "1st & every 2nd" ) + PORT_DIPNAME( 0x4000, 0x0000, "Blood" ) + PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( On ) ) PORT_START_TAG("DSW2") /* Dip switches (Active high) */ - PORT_SERVICE( 0x01, IP_ACTIVE_HIGH ) - PORT_DIPNAME( 0x02, 0x00, DEF_STR( Allow_Continue ) ) - PORT_DIPSETTING( 0x02, DEF_STR( No ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) - PORT_DIPNAME( 0x0c, 0x00, DEF_STR( Bonus_Life ) ) - PORT_DIPSETTING( 0x00, "20k 50k" ) - PORT_DIPSETTING( 0x08, "40k 100k" ) - PORT_DIPSETTING( 0x04, "60k 150k" ) - PORT_DIPSETTING( 0x0c, DEF_STR( None ) ) - PORT_DIPNAME( 0x30, 0x00, "Game Mode" ) - PORT_DIPSETTING( 0x20, "Demo Sounds Off" ) - PORT_DIPSETTING( 0x00, "Demo Sounds On" ) - PORT_DIPSETTING( 0x30, "Freeze" ) - PORT_DIPSETTING( 0x10, "Infinite Lives (Cheat)") - PORT_DIPNAME( 0xc0, 0x80, DEF_STR( Difficulty ) ) - PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) - PORT_DIPSETTING( 0x80, DEF_STR( Normal ) ) - PORT_DIPSETTING( 0x40, DEF_STR( Hard ) ) - PORT_DIPSETTING( 0xc0, DEF_STR( Hardest ) ) + PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_SERVICE( 0x0100, IP_ACTIVE_HIGH ) + PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Allow_Continue ) ) + PORT_DIPSETTING( 0x0200, DEF_STR( No ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Yes ) ) + PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Bonus_Life ) ) + PORT_DIPSETTING( 0x0000, "20k 50k" ) + PORT_DIPSETTING( 0x0800, "40k 100k" ) + PORT_DIPSETTING( 0x0400, "60k 150k" ) + PORT_DIPSETTING( 0x0c00, DEF_STR( None ) ) + PORT_DIPNAME( 0x3000, 0x0000, "Game Mode" ) + PORT_DIPSETTING( 0x2000, "Demo Sounds Off" ) + PORT_DIPSETTING( 0x0000, "Demo Sounds On" ) + PORT_DIPSETTING( 0x3000, "Freeze" ) + PORT_DIPSETTING( 0x1000, "Infinite Lives (Cheat)") + PORT_DIPNAME( 0xc000, 0x8000, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x4000, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0xc000, DEF_STR( Hardest ) ) PORT_START_TAG("ROT1") /* player 1 12-way rotary control */ PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL ) PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(5) PORT_KEYDELTA(5) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_REVERSE PORT_FULL_TURN_COUNT(12) @@ -610,69 +544,29 @@ INPUT_PORTS_END static const gfx_layout charlayout = { - 8,8, /* 8*8 chars */ - 2048, - 4, /* 4 bits per pixel */ - { 0, 4, 0x8000*8, (0x8000*8)+4 }, - { 8*8+3, 8*8+2, 8*8+1, 8*8+0, 3, 2, 1, 0 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, - 16*8 /* every char takes 8 consecutive bytes */ -}; - -static const gfx_layout pow_spritelayout = -{ - 16,16, /* 16*16 sprites */ - 4096*4, - 4, /* 4 bits per pixel */ - { 0, 0x80000*8, 0x100000*8, 0x180000*8 }, - { 16*8+7, 16*8+6, 16*8+5, 16*8+4, 16*8+3, 16*8+2, 16*8+1, 16*8+0, - 7, 6, 5, 4, 3, 2, 1, 0 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, - 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 }, - 8*32 /* every sprite takes 32 consecutive bytes */ + 8,8, + RGN_FRAC(1,2), + 4, + { 0, 4, RGN_FRAC(1,2), RGN_FRAC(1,2)+4 }, + { STEP4(8*8+3,-1), STEP4(3,-1) }, + { STEP8(0,8) }, + 16*8 }; -static const gfx_layout searchar_spritelayout = +static const gfx_layout spritelayout = { 16,16, - 0x6000, + RGN_FRAC(1,2), 4, - { 0, 8,0x180000*8, 0x180000*8+8 }, - { 32*8+7, 32*8+6, 32*8+5, 32*8+4, 32*8+3, 32*8+2, 32*8+1, 32*8+0, - 7, 6, 5, 4, 3, 2, 1, 0 - }, - { 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16, - 8*16, 9*16, 10*16, 11*16, 12*16, 13*16, 14*16, 15*16 - }, + { 0, 8, RGN_FRAC(1,2), RGN_FRAC(1,2)+8 }, + { STEP8(32*8+7,-1), STEP8(7,-1) }, + { STEP16(0,16) }, 64*8 }; -static const gfx_layout ikari3_spritelayout = -{ - 16,16, /* 16*16 sprites */ - 4096*5, - 4, /* 4 bits per pixel */ - { 0x140000*8, 0, 0xa0000*8, 0x1e0000*8 }, - { 16*8+7, 16*8+6, 16*8+5, 16*8+4, 16*8+3, 16*8+2, 16*8+1, 16*8+0, - 7, 6, 5, 4, 3, 2, 1, 0 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, - 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 }, - 8*32 /* every sprite takes 32 consecutive bytes */ -}; - static GFXDECODE_START( pow ) - GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 128 ) - GFXDECODE_ENTRY( REGION_GFX2, 0, pow_spritelayout, 0, 128 ) -GFXDECODE_END - -static GFXDECODE_START( searchar ) - GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 16 ) - GFXDECODE_ENTRY( REGION_GFX2, 0, searchar_spritelayout, 0, 128 ) -GFXDECODE_END - -static GFXDECODE_START( ikari3 ) - GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 16 ) - GFXDECODE_ENTRY( REGION_GFX2, 0, ikari3_spritelayout, 0, 128 ) + GFXDECODE_ENTRY( REGION_GFX1, 0, charlayout, 0, 0x80>>4 ) + GFXDECODE_ENTRY( REGION_GFX2, 0, spritelayout, 0, 0x800>>4 ) GFXDECODE_END /******************************************************************************/ @@ -694,67 +588,24 @@ static const struct upd7759_interface upd7759_interface = /******************************************************************************/ -static MACHINE_DRIVER_START( ikari3 ) - - /* basic machine hardware */ - MDRV_CPU_ADD(M68000, 10000000) /* Accurate */ - MDRV_CPU_PROGRAM_MAP(searchar_readmem,searchar_writemem) - MDRV_CPU_VBLANK_INT("main", irq1_line_hold) - - MDRV_CPU_ADD(Z80, 4000000) - /* audio CPU */ /* Accurate */ - MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) - MDRV_CPU_IO_MAP(sound_readport,sound_writeport) - - /* video hardware */ - MDRV_SCREEN_ADD("main", RASTER) - MDRV_SCREEN_REFRESH_RATE(60) - MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - 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(ikari3) - MDRV_PALETTE_LENGTH(2048) - - MDRV_VIDEO_START(ikari3) - MDRV_VIDEO_UPDATE(searchar) - - /* sound hardware */ - MDRV_SPEAKER_STANDARD_MONO("mono") - - MDRV_SOUND_ADD(YM3812, 4000000) - MDRV_SOUND_CONFIG(ym3812_interface) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - - MDRV_SOUND_ADD(UPD7759, UPD7759_STANDARD_CLOCK) - MDRV_SOUND_CONFIG(upd7759_interface) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_DRIVER_END - - static MACHINE_DRIVER_START( pow ) /* basic machine hardware */ - MDRV_CPU_ADD(M68000, 10000000) /* Accurate */ - MDRV_CPU_PROGRAM_MAP(pow_readmem,pow_writemem) + MDRV_CPU_ADD_TAG("main", M68000, XTAL_18MHz/2) /* verified on pcb */ + MDRV_CPU_PROGRAM_MAP(pow_map,0) MDRV_CPU_VBLANK_INT("main", irq1_line_hold) - MDRV_CPU_ADD(Z80, 4000000) - /* audio CPU */ /* Accurate */ - MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) - MDRV_CPU_IO_MAP(sound_readport,sound_writeport) + MDRV_CPU_ADD_TAG("sound", Z80, XTAL_8MHz/2) /* verified on pcb */ + MDRV_CPU_PROGRAM_MAP(sound_map,0) + MDRV_CPU_IO_MAP(sound_io_map,0) /* video hardware */ MDRV_SCREEN_ADD("main", RASTER) - MDRV_SCREEN_REFRESH_RATE(60) - MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) 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_SCREEN_RAW_PARAMS(XTAL_24MHz/4, 384, 0, 256, 264, 16, 240) // inaccurate MDRV_GFXDECODE(pow) - MDRV_PALETTE_LENGTH(2048) + MDRV_PALETTE_LENGTH(0x800) MDRV_VIDEO_START(pow) MDRV_VIDEO_UPDATE(pow) @@ -762,7 +613,7 @@ static MACHINE_DRIVER_START( pow ) /* sound hardware */ MDRV_SPEAKER_STANDARD_MONO("mono") - MDRV_SOUND_ADD(YM3812, 4000000) + MDRV_SOUND_ADD(YM3812, XTAL_8MHz/2) /* verified on pcb */ MDRV_SOUND_CONFIG(ym3812_interface) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) @@ -774,81 +625,15 @@ MACHINE_DRIVER_END static MACHINE_DRIVER_START( searchar ) - /* basic machine hardware */ - MDRV_CPU_ADD(M68000, XTAL_18MHz/2) /* verified on pcb */ - MDRV_CPU_PROGRAM_MAP(searchar_readmem,searchar_writemem) - MDRV_CPU_VBLANK_INT("main", irq1_line_hold) - - MDRV_CPU_ADD(Z80, XTAL_8MHz/2) /* verified on pcb */ - /* audio CPU */ - MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) - MDRV_CPU_IO_MAP(sound_readport,sound_writeport) - - /* video hardware */ - MDRV_SCREEN_ADD("main", RASTER) - MDRV_SCREEN_REFRESH_RATE(60) - MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - 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_IMPORT_FROM(pow) - MDRV_GFXDECODE(searchar) - MDRV_PALETTE_LENGTH(2048) + MDRV_CPU_MODIFY("main") + MDRV_CPU_PROGRAM_MAP(searchar_map,0) MDRV_VIDEO_START(searchar) - MDRV_VIDEO_UPDATE(searchar) - - /* sound hardware */ - MDRV_SPEAKER_STANDARD_MONO("mono") - - MDRV_SOUND_ADD(YM3812, XTAL_8MHz/2) /* verified on pcb */ - MDRV_SOUND_CONFIG(ym3812_interface) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - - MDRV_SOUND_ADD(UPD7759, UPD7759_STANDARD_CLOCK) - MDRV_SOUND_CONFIG(upd7759_interface) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_DRIVER_END -static MACHINE_DRIVER_START( streetsm ) - - /* basic machine hardware */ - MDRV_CPU_ADD(M68000, 10000000) /* Accurate */ - MDRV_CPU_PROGRAM_MAP(pow_readmem,pow_writemem) - MDRV_CPU_VBLANK_INT("main", irq1_line_hold) - - MDRV_CPU_ADD(Z80, 4000000) - /* audio CPU */ /* Accurate */ - MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) - MDRV_CPU_IO_MAP(sound_readport,sound_writeport) - - /* video hardware */ - MDRV_SCREEN_ADD("main", RASTER) - MDRV_SCREEN_REFRESH_RATE(60) - MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - 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(searchar) - MDRV_PALETTE_LENGTH(2048) - - MDRV_VIDEO_START(pow) - MDRV_VIDEO_UPDATE(searchar) - - /* sound hardware */ - MDRV_SPEAKER_STANDARD_MONO("mono") - - MDRV_SOUND_ADD(YM3812, 4000000) - MDRV_SOUND_CONFIG(ym3812_interface) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - - MDRV_SOUND_ADD(UPD7759, UPD7759_STANDARD_CLOCK) - MDRV_SOUND_CONFIG(upd7759_interface) - MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_DRIVER_END - /******************************************************************************/ ROM_START( pow ) @@ -864,22 +649,22 @@ ROM_START( pow ) ROM_LOAD( "dg10.m25", 0x008000, 0x08000, CRC(9e470d53) SHA1(f7dc6ac39ade573480e87170a2781f0f72930580) ) ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ - ROM_LOAD( "snk880.11a", 0x000000, 0x20000, CRC(e70fd906) SHA1(b9e734c074ee1c8ae73e6041d739ab30d2df7d62) ) - ROM_LOAD( "snk880.12a", 0x020000, 0x20000, CRC(628b1aed) SHA1(1065ef835da03f7d9776e81c225c3ecdd2affae2) ) - ROM_LOAD( "snk880.13a", 0x040000, 0x20000, CRC(19dc8868) SHA1(82aaf93fc8f4b3bf947d373d0f41cc0044207c34) ) /* Also can be labeled as DG13 */ - ROM_LOAD( "snk880.14a", 0x060000, 0x20000, CRC(47cd498b) SHA1(7fbc007f2d817c26af02fef233f5e0681a17052a) ) - ROM_LOAD( "snk880.15a", 0x080000, 0x20000, CRC(7a90e957) SHA1(9650d7cdbcbbbcdd7f75a1c3c08a195aa456e169) ) - ROM_LOAD( "snk880.16a", 0x0a0000, 0x20000, CRC(e40a6c13) SHA1(7ad9dfc65f8c8b316933f0fdd3bc7a243d6eff65) ) - ROM_LOAD( "snk880.17a", 0x0c0000, 0x20000, CRC(c7931cc2) SHA1(908313d9b7fa4395b5fb79925d068e4f5d354b21) ) - ROM_LOAD( "snk880.18a", 0x0e0000, 0x20000, CRC(eed72232) SHA1(ad614e752cf1d3eac9a04cbc90435f988e90ace7) ) - ROM_LOAD( "snk880.19a", 0x100000, 0x20000, CRC(1775b8dd) SHA1(c01154749379be6e18baa99f4d94d97942f3dd85) ) - ROM_LOAD( "snk880.20a", 0x120000, 0x20000, CRC(f8e752ec) SHA1(1e1e178303f9af84cbb15249c49a870193ef805f) ) - ROM_LOAD( "snk880.21a", 0x140000, 0x20000, CRC(27e9fffe) SHA1(e8058db40832b986c5addd22dd69b0308d10ec71) ) - ROM_LOAD( "snk880.22a", 0x160000, 0x20000, CRC(aa9c00d8) SHA1(1017ed1cc036c6084b71204a998fd05557a6e59f) ) - ROM_LOAD( "snk880.23a", 0x180000, 0x20000, CRC(adb6ad68) SHA1(ed4323d2dfa3efaa496b17f4719f9566d56725e5) ) - ROM_LOAD( "snk880.24a", 0x1a0000, 0x20000, CRC(dd41865a) SHA1(c86f14342beca896784b88920d9e0879af4179ab) ) - ROM_LOAD( "snk880.25a", 0x1c0000, 0x20000, CRC(055759ad) SHA1(f9b12320f142075d49d447fb107af99272567d58) ) - ROM_LOAD( "snk880.26a", 0x1e0000, 0x20000, CRC(9bc261c5) SHA1(f07fef465191d48ccc149d1a62e6382d3fc0ef9f) ) + ROM_LOAD16_BYTE( "snk880.11a", 0x000000, 0x20000, CRC(e70fd906) SHA1(b9e734c074ee1c8ae73e6041d739ab30d2df7d62) ) + ROM_LOAD16_BYTE( "snk880.15a", 0x000001, 0x20000, CRC(7a90e957) SHA1(9650d7cdbcbbbcdd7f75a1c3c08a195aa456e169) ) + ROM_LOAD16_BYTE( "snk880.12a", 0x040000, 0x20000, CRC(628b1aed) SHA1(1065ef835da03f7d9776e81c225c3ecdd2affae2) ) + ROM_LOAD16_BYTE( "snk880.16a", 0x040001, 0x20000, CRC(e40a6c13) SHA1(7ad9dfc65f8c8b316933f0fdd3bc7a243d6eff65) ) + ROM_LOAD16_BYTE( "snk880.13a", 0x080000, 0x20000, CRC(19dc8868) SHA1(82aaf93fc8f4b3bf947d373d0f41cc0044207c34) ) /* Also can be labeled as DG13 */ + ROM_LOAD16_BYTE( "snk880.17a", 0x080001, 0x20000, CRC(c7931cc2) SHA1(908313d9b7fa4395b5fb79925d068e4f5d354b21) ) + ROM_LOAD16_BYTE( "snk880.14a", 0x0c0000, 0x20000, CRC(47cd498b) SHA1(7fbc007f2d817c26af02fef233f5e0681a17052a) ) + ROM_LOAD16_BYTE( "snk880.18a", 0x0c0001, 0x20000, CRC(eed72232) SHA1(ad614e752cf1d3eac9a04cbc90435f988e90ace7) ) + ROM_LOAD16_BYTE( "snk880.19a", 0x100000, 0x20000, CRC(1775b8dd) SHA1(c01154749379be6e18baa99f4d94d97942f3dd85) ) + ROM_LOAD16_BYTE( "snk880.23a", 0x100001, 0x20000, CRC(adb6ad68) SHA1(ed4323d2dfa3efaa496b17f4719f9566d56725e5) ) + ROM_LOAD16_BYTE( "snk880.20a", 0x140000, 0x20000, CRC(f8e752ec) SHA1(1e1e178303f9af84cbb15249c49a870193ef805f) ) + ROM_LOAD16_BYTE( "snk880.24a", 0x140001, 0x20000, CRC(dd41865a) SHA1(c86f14342beca896784b88920d9e0879af4179ab) ) + ROM_LOAD16_BYTE( "snk880.21a", 0x180000, 0x20000, CRC(27e9fffe) SHA1(e8058db40832b986c5addd22dd69b0308d10ec71) ) + ROM_LOAD16_BYTE( "snk880.25a", 0x180001, 0x20000, CRC(055759ad) SHA1(f9b12320f142075d49d447fb107af99272567d58) ) + ROM_LOAD16_BYTE( "snk880.22a", 0x1c0000, 0x20000, CRC(aa9c00d8) SHA1(1017ed1cc036c6084b71204a998fd05557a6e59f) ) + ROM_LOAD16_BYTE( "snk880.26a", 0x1c0001, 0x20000, CRC(9bc261c5) SHA1(f07fef465191d48ccc149d1a62e6382d3fc0ef9f) ) ROM_REGION( 0x10000, REGION_SOUND1, 0 ) /* UPD7759 samples */ ROM_LOAD( "dg7.d20", 0x000000, 0x10000, CRC(aba9a9d3) SHA1(5098cd3a064b8ede24797de8879a277d79e79d75) ) @@ -901,22 +686,22 @@ ROM_START( powj ) ROM_LOAD( "dg10.m25", 0x008000, 0x08000, CRC(9e470d53) SHA1(f7dc6ac39ade573480e87170a2781f0f72930580) ) ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ - ROM_LOAD( "snk880.11a", 0x000000, 0x20000, CRC(e70fd906) SHA1(b9e734c074ee1c8ae73e6041d739ab30d2df7d62) ) - ROM_LOAD( "snk880.12a", 0x020000, 0x20000, CRC(628b1aed) SHA1(1065ef835da03f7d9776e81c225c3ecdd2affae2) ) - ROM_LOAD( "snk880.13a", 0x040000, 0x20000, CRC(19dc8868) SHA1(82aaf93fc8f4b3bf947d373d0f41cc0044207c34) ) /* Also can be labeled as DG13 */ - ROM_LOAD( "snk880.14a", 0x060000, 0x20000, CRC(47cd498b) SHA1(7fbc007f2d817c26af02fef233f5e0681a17052a) ) - ROM_LOAD( "snk880.15a", 0x080000, 0x20000, CRC(7a90e957) SHA1(9650d7cdbcbbbcdd7f75a1c3c08a195aa456e169) ) - ROM_LOAD( "snk880.16a", 0x0a0000, 0x20000, CRC(e40a6c13) SHA1(7ad9dfc65f8c8b316933f0fdd3bc7a243d6eff65) ) - ROM_LOAD( "snk880.17a", 0x0c0000, 0x20000, CRC(c7931cc2) SHA1(908313d9b7fa4395b5fb79925d068e4f5d354b21) ) - ROM_LOAD( "snk880.18a", 0x0e0000, 0x20000, CRC(eed72232) SHA1(ad614e752cf1d3eac9a04cbc90435f988e90ace7) ) - ROM_LOAD( "snk880.19a", 0x100000, 0x20000, CRC(1775b8dd) SHA1(c01154749379be6e18baa99f4d94d97942f3dd85) ) - ROM_LOAD( "snk880.20a", 0x120000, 0x20000, CRC(f8e752ec) SHA1(1e1e178303f9af84cbb15249c49a870193ef805f) ) - ROM_LOAD( "snk880.21a", 0x140000, 0x20000, CRC(27e9fffe) SHA1(e8058db40832b986c5addd22dd69b0308d10ec71) ) - ROM_LOAD( "snk880.22a", 0x160000, 0x20000, CRC(aa9c00d8) SHA1(1017ed1cc036c6084b71204a998fd05557a6e59f) ) - ROM_LOAD( "snk880.23a", 0x180000, 0x20000, CRC(adb6ad68) SHA1(ed4323d2dfa3efaa496b17f4719f9566d56725e5) ) - ROM_LOAD( "snk880.24a", 0x1a0000, 0x20000, CRC(dd41865a) SHA1(c86f14342beca896784b88920d9e0879af4179ab) ) - ROM_LOAD( "snk880.25a", 0x1c0000, 0x20000, CRC(055759ad) SHA1(f9b12320f142075d49d447fb107af99272567d58) ) - ROM_LOAD( "snk880.26a", 0x1e0000, 0x20000, CRC(9bc261c5) SHA1(f07fef465191d48ccc149d1a62e6382d3fc0ef9f) ) + ROM_LOAD16_BYTE( "snk880.11a", 0x000000, 0x20000, CRC(e70fd906) SHA1(b9e734c074ee1c8ae73e6041d739ab30d2df7d62) ) + ROM_LOAD16_BYTE( "snk880.15a", 0x000001, 0x20000, CRC(7a90e957) SHA1(9650d7cdbcbbbcdd7f75a1c3c08a195aa456e169) ) + ROM_LOAD16_BYTE( "snk880.12a", 0x040000, 0x20000, CRC(628b1aed) SHA1(1065ef835da03f7d9776e81c225c3ecdd2affae2) ) + ROM_LOAD16_BYTE( "snk880.16a", 0x040001, 0x20000, CRC(e40a6c13) SHA1(7ad9dfc65f8c8b316933f0fdd3bc7a243d6eff65) ) + ROM_LOAD16_BYTE( "snk880.13a", 0x080000, 0x20000, CRC(19dc8868) SHA1(82aaf93fc8f4b3bf947d373d0f41cc0044207c34) ) /* Also can be labeled as DG13 */ + ROM_LOAD16_BYTE( "snk880.17a", 0x080001, 0x20000, CRC(c7931cc2) SHA1(908313d9b7fa4395b5fb79925d068e4f5d354b21) ) + ROM_LOAD16_BYTE( "snk880.14a", 0x0c0000, 0x20000, CRC(47cd498b) SHA1(7fbc007f2d817c26af02fef233f5e0681a17052a) ) + ROM_LOAD16_BYTE( "snk880.18a", 0x0c0001, 0x20000, CRC(eed72232) SHA1(ad614e752cf1d3eac9a04cbc90435f988e90ace7) ) + ROM_LOAD16_BYTE( "snk880.19a", 0x100000, 0x20000, CRC(1775b8dd) SHA1(c01154749379be6e18baa99f4d94d97942f3dd85) ) + ROM_LOAD16_BYTE( "snk880.23a", 0x100001, 0x20000, CRC(adb6ad68) SHA1(ed4323d2dfa3efaa496b17f4719f9566d56725e5) ) + ROM_LOAD16_BYTE( "snk880.20a", 0x140000, 0x20000, CRC(f8e752ec) SHA1(1e1e178303f9af84cbb15249c49a870193ef805f) ) + ROM_LOAD16_BYTE( "snk880.24a", 0x140001, 0x20000, CRC(dd41865a) SHA1(c86f14342beca896784b88920d9e0879af4179ab) ) + ROM_LOAD16_BYTE( "snk880.21a", 0x180000, 0x20000, CRC(27e9fffe) SHA1(e8058db40832b986c5addd22dd69b0308d10ec71) ) + ROM_LOAD16_BYTE( "snk880.25a", 0x180001, 0x20000, CRC(055759ad) SHA1(f9b12320f142075d49d447fb107af99272567d58) ) + ROM_LOAD16_BYTE( "snk880.22a", 0x1c0000, 0x20000, CRC(aa9c00d8) SHA1(1017ed1cc036c6084b71204a998fd05557a6e59f) ) + ROM_LOAD16_BYTE( "snk880.26a", 0x1c0001, 0x20000, CRC(9bc261c5) SHA1(f07fef465191d48ccc149d1a62e6382d3fc0ef9f) ) ROM_REGION( 0x10000, REGION_SOUND1, 0 ) /* UPD7759 samples */ ROM_LOAD( "dg7.d20", 0x000000, 0x10000, CRC(aba9a9d3) SHA1(5098cd3a064b8ede24797de8879a277d79e79d75) ) @@ -925,90 +710,6 @@ ROM_START( powj ) ROM_LOAD( "pal20l10.a6", 0x0000, 0x00cc, CRC(c3d9e729) SHA1(f05f03eecf12b4d0793124ecd3195307be04046b) ) ROM_END -ROM_START( searchar ) - ROM_REGION( 0x40000, REGION_CPU1, 0 ) - ROM_LOAD16_BYTE( "bhw.2", 0x000000, 0x20000, CRC(e1430138) SHA1(eddc192524a13b2c09bd2bddcd5f8e8b771ceb21) ) - ROM_LOAD16_BYTE( "bhw.3", 0x000001, 0x20000, CRC(ee1f9374) SHA1(fd41c74fd69d65713d8e1a9b8078328381119379) ) - - ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */ - ROM_LOAD( "bh.5", 0x000000, 0x10000, CRC(53e2fa76) SHA1(cf25b1def82545a1fd013822ab3cf02483074623) ) - - ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE ) /* characters */ - ROM_LOAD( "bh.7", 0x000000, 0x08000, CRC(b0f1b049) SHA1(ec276984d91b5759a5e2b6815d1db2abc37b99f8) ) - ROM_LOAD( "bh.8", 0x008000, 0x08000, CRC(174ddba7) SHA1(7b19087cd2ccc409878aefe7fa08bb2e9953d352) ) - - ROM_REGION( 0x300000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ - ROM_LOAD( "bh.c1", 0x000000, 0x80000, CRC(1fb8f0ae) SHA1(d63c7376aa5f01bc009176b23324e720bada4286) ) - ROM_LOAD( "bh.c3", 0x080000, 0x80000, CRC(fd8bc407) SHA1(88d750293808bf6ea23864b22070314b14fbee3c) ) - ROM_LOAD( "bh.c5", 0x100000, 0x80000, CRC(1d30acc3) SHA1(e5ca39853779475b83fe37304e7bed2c293bd587) ) - ROM_LOAD( "bh.c2", 0x180000, 0x80000, CRC(7c803767) SHA1(992516fbb28d00feabbed5769fa3a5748199a7d8) ) - ROM_LOAD( "bh.c4", 0x200000, 0x80000, CRC(eede7c43) SHA1(7645acf0beb4fff9ec92205dcf34124360cd52f6) ) - ROM_LOAD( "bh.c6", 0x280000, 0x80000, CRC(9f785cd9) SHA1(e5c7797ae7a3139e1814b068c5ecfe5c6bf30d0f) ) - - ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ - ROM_LOAD( "bh.v1", 0x000000, 0x20000, CRC(07a6114b) SHA1(224df4616b77a56f33974d3b1793473d48ad52ca) ) - - ROM_REGION16_BE( 0x40000, REGION_USER1, 0 ) /* Extra code bank */ - ROM_LOAD16_BYTE( "bhw.1", 0x000000, 0x20000, CRC(62b60066) SHA1(f7e7985c8f5f8191c580e777e1b7ed29d944d23f) ) - ROM_LOAD16_BYTE( "bhw.4", 0x000001, 0x20000, CRC(16d8525c) SHA1(0098b0a7fcb23de2661bbec9a05254aa46579bb2) ) -ROM_END - -ROM_START( sercharu ) - ROM_REGION( 0x40000, REGION_CPU1, 0 ) - ROM_LOAD16_BYTE( "bh.2", 0x000000, 0x20000, CRC(c852e2e2) SHA1(c4b1b366f452122549046a3dec9b6b375bc273af) ) - ROM_LOAD16_BYTE( "bh.3", 0x000001, 0x20000, CRC(bc04a4a1) SHA1(aa91583b987248a3e99813ab5e8ee03c02dac9b9) ) - - ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */ - ROM_LOAD( "bh.5", 0x000000, 0x10000, CRC(53e2fa76) SHA1(cf25b1def82545a1fd013822ab3cf02483074623) ) - - ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE ) /* characters */ - ROM_LOAD( "bh.7", 0x000000, 0x08000, CRC(b0f1b049) SHA1(ec276984d91b5759a5e2b6815d1db2abc37b99f8) ) - ROM_LOAD( "bh.8", 0x008000, 0x08000, CRC(174ddba7) SHA1(7b19087cd2ccc409878aefe7fa08bb2e9953d352) ) - - ROM_REGION( 0x300000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ - ROM_LOAD( "bh.c1", 0x000000, 0x80000, CRC(1fb8f0ae) SHA1(d63c7376aa5f01bc009176b23324e720bada4286) ) - ROM_LOAD( "bh.c3", 0x080000, 0x80000, CRC(fd8bc407) SHA1(88d750293808bf6ea23864b22070314b14fbee3c) ) - ROM_LOAD( "bh.c5", 0x100000, 0x80000, CRC(1d30acc3) SHA1(e5ca39853779475b83fe37304e7bed2c293bd587) ) - ROM_LOAD( "bh.c2", 0x180000, 0x80000, CRC(7c803767) SHA1(992516fbb28d00feabbed5769fa3a5748199a7d8) ) - ROM_LOAD( "bh.c4", 0x200000, 0x80000, CRC(eede7c43) SHA1(7645acf0beb4fff9ec92205dcf34124360cd52f6) ) - ROM_LOAD( "bh.c6", 0x280000, 0x80000, CRC(9f785cd9) SHA1(e5c7797ae7a3139e1814b068c5ecfe5c6bf30d0f) ) - - ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ - ROM_LOAD( "bh.v1", 0x000000, 0x20000, CRC(07a6114b) SHA1(224df4616b77a56f33974d3b1793473d48ad52ca) ) - - ROM_REGION16_BE( 0x40000, REGION_USER1, 0 ) /* Extra code bank */ - ROM_LOAD16_BYTE( "bh.1", 0x000000, 0x20000, CRC(ba9ca70b) SHA1(c46727473673554cbe4bbbc0288d66357f99a80e) ) - ROM_LOAD16_BYTE( "bh.4", 0x000001, 0x20000, CRC(eabc5ddf) SHA1(08a2a8fcdf6a08a2694e00f4232a5bfbec98fd27) ) -ROM_END - -ROM_START( sercharj ) - ROM_REGION( 0x40000, REGION_CPU1, 0 ) - ROM_LOAD16_BYTE( "bh2ver3j.9c", 0x000000, 0x20000, CRC(7ef7b172) SHA1(85669ba72f59e4ff3a483bf611bf41c73f4e1930) ) - ROM_LOAD16_BYTE( "bh3ver3j.10c", 0x000001, 0x20000, CRC(3fdea793) SHA1(49bafb53466afb7e4486a4894e4fd6fa08ea2eb2) ) - - ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */ - ROM_LOAD( "bh.5", 0x000000, 0x10000, CRC(53e2fa76) SHA1(cf25b1def82545a1fd013822ab3cf02483074623) ) - - ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE ) /* characters */ - ROM_LOAD( "bh.7", 0x000000, 0x08000, CRC(b0f1b049) SHA1(ec276984d91b5759a5e2b6815d1db2abc37b99f8) ) - ROM_LOAD( "bh.8", 0x008000, 0x08000, CRC(174ddba7) SHA1(7b19087cd2ccc409878aefe7fa08bb2e9953d352) ) - - ROM_REGION( 0x300000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ - ROM_LOAD( "bh.c1", 0x000000, 0x80000, CRC(1fb8f0ae) SHA1(d63c7376aa5f01bc009176b23324e720bada4286) ) - ROM_LOAD( "bh.c3", 0x080000, 0x80000, CRC(fd8bc407) SHA1(88d750293808bf6ea23864b22070314b14fbee3c) ) - ROM_LOAD( "bh.c5", 0x100000, 0x80000, CRC(1d30acc3) SHA1(e5ca39853779475b83fe37304e7bed2c293bd587) ) - ROM_LOAD( "bh.c2", 0x180000, 0x80000, CRC(7c803767) SHA1(992516fbb28d00feabbed5769fa3a5748199a7d8) ) - ROM_LOAD( "bh.c4", 0x200000, 0x80000, CRC(eede7c43) SHA1(7645acf0beb4fff9ec92205dcf34124360cd52f6) ) - ROM_LOAD( "bh.c6", 0x280000, 0x80000, CRC(9f785cd9) SHA1(e5c7797ae7a3139e1814b068c5ecfe5c6bf30d0f) ) - - ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ - ROM_LOAD( "bh.v1", 0x000000, 0x20000, CRC(07a6114b) SHA1(224df4616b77a56f33974d3b1793473d48ad52ca) ) - - ROM_REGION16_BE( 0x40000, REGION_USER1, 0 ) /* Extra code bank */ - ROM_LOAD16_BYTE( "bhw.1", 0x000000, 0x20000, CRC(62b60066) SHA1(f7e7985c8f5f8191c580e777e1b7ed29d944d23f) ) - ROM_LOAD16_BYTE( "bhw.4", 0x000001, 0x20000, CRC(16d8525c) SHA1(0098b0a7fcb23de2661bbec9a05254aa46579bb2) ) -ROM_END - ROM_START( streetsm ) ROM_REGION( 0x40000, REGION_CPU1, 0 ) ROM_LOAD16_BYTE( "s2-1ver2.14h", 0x00000, 0x20000, CRC(655f4773) SHA1(5374a6cf0b895c5ff839b0f52402df4cc53241cf) ) @@ -1021,13 +722,15 @@ ROM_START( streetsm ) ROM_LOAD( "s2-9.25l", 0x000000, 0x08000, CRC(09b6ac67) SHA1(0b1ef51d9cd755eacc25b33360811cc86c32c0b7) ) ROM_LOAD( "s2-10.25m", 0x008000, 0x08000, CRC(89e4ee6f) SHA1(21797286836ad71d2497e3e6d4df1fbe545562ab) ) - ROM_REGION( 0x300000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ ROM_LOAD( "stsmart.900", 0x000000, 0x80000, CRC(a8279a7e) SHA1(244bdacb29b00f71da93ed8ddddbcffcce110be8) ) ROM_LOAD( "stsmart.902", 0x080000, 0x80000, CRC(2f021aa1) SHA1(699d0b5ac79e34e4fc4cef70eb448f21f1c3e9e2) ) ROM_LOAD( "stsmart.904", 0x100000, 0x80000, CRC(167346f7) SHA1(fb4ea412622245db49ec15449ee4fa0d90922f06) ) - ROM_LOAD( "stsmart.901", 0x180000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) ) - ROM_LOAD( "stsmart.903", 0x200000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) ) - ROM_LOAD( "stsmart.905", 0x280000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) ) + // 180000-1fffff empty + ROM_LOAD( "stsmart.901", 0x200000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) ) + ROM_LOAD( "stsmart.903", 0x280000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) ) + ROM_LOAD( "stsmart.905", 0x300000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) ) + // 380000-3fffff empty ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ ROM_LOAD( "s2-6.18d", 0x000000, 0x20000, CRC(47db1605) SHA1(ae00e633eb98567f04ff97e3d63e04e049d955ec) ) @@ -1048,13 +751,15 @@ ROM_START( streets1 ) ROM_LOAD( "s2-7.15l", 0x000000, 0x08000, CRC(22bedfe5) SHA1(64efb2281c32afe5a06f35cce939e6a53226c6ed) ) ROM_LOAD( "s2-8.15m", 0x008000, 0x08000, CRC(6a1c70ab) SHA1(019538ddcb713d0810b26b6aa65f6e4596931621) ) - ROM_REGION( 0x300000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ ROM_LOAD( "stsmart.900", 0x000000, 0x80000, CRC(a8279a7e) SHA1(244bdacb29b00f71da93ed8ddddbcffcce110be8) ) ROM_LOAD( "stsmart.902", 0x080000, 0x80000, CRC(2f021aa1) SHA1(699d0b5ac79e34e4fc4cef70eb448f21f1c3e9e2) ) ROM_LOAD( "stsmart.904", 0x100000, 0x80000, CRC(167346f7) SHA1(fb4ea412622245db49ec15449ee4fa0d90922f06) ) - ROM_LOAD( "stsmart.901", 0x180000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) ) - ROM_LOAD( "stsmart.903", 0x200000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) ) - ROM_LOAD( "stsmart.905", 0x280000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) ) + // 180000-1fffff empty + ROM_LOAD( "stsmart.901", 0x200000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) ) + ROM_LOAD( "stsmart.903", 0x280000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) ) + ROM_LOAD( "stsmart.905", 0x300000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) ) + // 380000-3fffff empty ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ ROM_LOAD( "s2-6.18d", 0x000000, 0x20000, CRC(47db1605) SHA1(ae00e633eb98567f04ff97e3d63e04e049d955ec) ) @@ -1072,13 +777,15 @@ ROM_START( streetsw ) ROM_LOAD( "s2-7.15l", 0x000000, 0x08000, CRC(22bedfe5) SHA1(64efb2281c32afe5a06f35cce939e6a53226c6ed) ) ROM_LOAD( "s2-8.15m", 0x008000, 0x08000, CRC(6a1c70ab) SHA1(019538ddcb713d0810b26b6aa65f6e4596931621) ) - ROM_REGION( 0x300000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ ROM_LOAD( "stsmart.900", 0x000000, 0x80000, CRC(a8279a7e) SHA1(244bdacb29b00f71da93ed8ddddbcffcce110be8) ) ROM_LOAD( "stsmart.902", 0x080000, 0x80000, CRC(2f021aa1) SHA1(699d0b5ac79e34e4fc4cef70eb448f21f1c3e9e2) ) ROM_LOAD( "stsmart.904", 0x100000, 0x80000, CRC(167346f7) SHA1(fb4ea412622245db49ec15449ee4fa0d90922f06) ) - ROM_LOAD( "stsmart.901", 0x180000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) ) - ROM_LOAD( "stsmart.903", 0x200000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) ) - ROM_LOAD( "stsmart.905", 0x280000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) ) + // 180000-1fffff empty + ROM_LOAD( "stsmart.901", 0x200000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) ) + ROM_LOAD( "stsmart.903", 0x280000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) ) + ROM_LOAD( "stsmart.905", 0x300000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) ) + // 380000-3fffff empty ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ ROM_LOAD( "s2-6.18d", 0x000000, 0x20000, CRC(47db1605) SHA1(ae00e633eb98567f04ff97e3d63e04e049d955ec) ) @@ -1096,13 +803,15 @@ ROM_START( streetsj ) ROM_LOAD( "s2-7.15l", 0x000000, 0x08000, CRC(22bedfe5) SHA1(64efb2281c32afe5a06f35cce939e6a53226c6ed) ) ROM_LOAD( "s2-8.15m", 0x008000, 0x08000, CRC(6a1c70ab) SHA1(019538ddcb713d0810b26b6aa65f6e4596931621) ) - ROM_REGION( 0x300000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ ROM_LOAD( "stsmart.900", 0x000000, 0x80000, CRC(a8279a7e) SHA1(244bdacb29b00f71da93ed8ddddbcffcce110be8) ) ROM_LOAD( "stsmart.902", 0x080000, 0x80000, CRC(2f021aa1) SHA1(699d0b5ac79e34e4fc4cef70eb448f21f1c3e9e2) ) ROM_LOAD( "stsmart.904", 0x100000, 0x80000, CRC(167346f7) SHA1(fb4ea412622245db49ec15449ee4fa0d90922f06) ) - ROM_LOAD( "stsmart.901", 0x180000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) ) - ROM_LOAD( "stsmart.903", 0x200000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) ) - ROM_LOAD( "stsmart.905", 0x280000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) ) + // 180000-1fffff empty + ROM_LOAD( "stsmart.901", 0x200000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) ) + ROM_LOAD( "stsmart.903", 0x280000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) ) + ROM_LOAD( "stsmart.905", 0x300000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) ) + // 380000-3fffff empty ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ ROM_LOAD( "s2-6.18d", 0x000000, 0x20000, CRC(47db1605) SHA1(ae00e633eb98567f04ff97e3d63e04e049d955ec) ) @@ -1120,27 +829,29 @@ ROM_START( ikari3 ) ROM_LOAD( "ik3-7.bin", 0x000000, 0x08000, CRC(0b4804df) SHA1(66d16d245bfc404366164823faaea0bfec83e487) ) ROM_LOAD( "ik3-8.bin", 0x008000, 0x08000, CRC(10ab4e50) SHA1(dee8416eb720848cf6471e568dadc1cfc6c2e67f) ) - ROM_REGION( 0x280000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ - ROM_LOAD( "ik3-13.bin", 0x000000, 0x20000, CRC(9a56bd32) SHA1(9301b48f970b71a909fb44514b2e93c3f1516b38) ) - ROM_LOAD( "ik3-12.bin", 0x020000, 0x20000, CRC(0ce6a10a) SHA1(13a231aa0002b2c5a0d9404ba05a879e212d638e) ) - ROM_LOAD( "ik3-11.bin", 0x040000, 0x20000, CRC(e4e2be43) SHA1(959d2799708ddae909b017c0696694c46a52697e) ) - ROM_LOAD( "ik3-10.bin", 0x060000, 0x20000, CRC(ac222372) SHA1(8a17e37699d691b962a6d0256a18550cc73ddfef) ) - ROM_LOAD( "ik3-9.bin", 0x080000, 0x20000, CRC(c33971c2) SHA1(91f3eb301803f5a7027da1ff7dd2a28bc97e5125) ) - ROM_LOAD( "ik3-14.bin", 0x0a0000, 0x20000, CRC(453bea77) SHA1(f8f8d0c048fcf32ad99e1de622d9ab635bb86eae) ) - ROM_LOAD( "ik3-15.bin", 0x0c0000, 0x20000, CRC(781a81fc) SHA1(e08a6cf9c632d1002176afe618605bc06168e8aa) ) - ROM_LOAD( "ik3-16.bin", 0x0e0000, 0x20000, CRC(80ba400b) SHA1(2cc3e53c45f239516a60c461ad9cfa5955164262) ) - ROM_LOAD( "ik3-17.bin", 0x100000, 0x20000, CRC(0cc3ce4a) SHA1(7b34435d0bbb089055a183b821ab255170db6bec) ) - ROM_LOAD( "ik3-18.bin", 0x120000, 0x20000, CRC(ba106245) SHA1(ac609ec3046c21fe6058f91dd4528c5c6448dc15) ) - ROM_LOAD( "ik3-23.bin", 0x140000, 0x20000, CRC(d0fd5c77) SHA1(c171c64ad252f0ba5b0bbdf37808102fca37b488) ) - ROM_LOAD( "ik3-22.bin", 0x160000, 0x20000, CRC(4878d883) SHA1(8cdb541bad00e707fb65399d637b7cc9288ada77) ) - ROM_LOAD( "ik3-21.bin", 0x180000, 0x20000, CRC(50d0fbf0) SHA1(9ff5fbea8d35d0f9a38ddd7eb093edcd91d9f874) ) - ROM_LOAD( "ik3-20.bin", 0x1a0000, 0x20000, CRC(9a851efc) SHA1(bc7be338ee4da7fbfe6fe44a9c7889817416bc44) ) - ROM_LOAD( "ik3-19.bin", 0x1c0000, 0x20000, CRC(4ebdba89) SHA1(f3ecfef4c9d2aba58dc3e6aa3cf5813d68686909) ) - ROM_LOAD( "ik3-24.bin", 0x1e0000, 0x20000, CRC(e9b26d68) SHA1(067d582d33157ed4b7980bd87f2f260ab74c347b) ) - ROM_LOAD( "ik3-25.bin", 0x200000, 0x20000, CRC(073b03f1) SHA1(b8053139799fa06c7324cee928154c89d4425ab1) ) - ROM_LOAD( "ik3-26.bin", 0x220000, 0x20000, CRC(9c613561) SHA1(fc7c9a642b18faa94e6a2ba53f35a4d756a25da3) ) - ROM_LOAD( "ik3-27.bin", 0x240000, 0x20000, CRC(16dd227e) SHA1(db3b1718dea65bc9a1a736aa62aa2be389313baf) ) - ROM_LOAD( "ik3-28.bin", 0x260000, 0x20000, CRC(711715ae) SHA1(90978c86884ca3d23c138d95b654e2fb3afc6f9a) ) + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + ROM_LOAD16_BYTE( "ik3-23.bin", 0x000000, 0x20000, CRC(d0fd5c77) SHA1(c171c64ad252f0ba5b0bbdf37808102fca37b488) ) + ROM_LOAD16_BYTE( "ik3-13.bin", 0x000001, 0x20000, CRC(9a56bd32) SHA1(9301b48f970b71a909fb44514b2e93c3f1516b38) ) + ROM_LOAD16_BYTE( "ik3-22.bin", 0x040000, 0x20000, CRC(4878d883) SHA1(8cdb541bad00e707fb65399d637b7cc9288ada77) ) + ROM_LOAD16_BYTE( "ik3-12.bin", 0x040001, 0x20000, CRC(0ce6a10a) SHA1(13a231aa0002b2c5a0d9404ba05a879e212d638e) ) + ROM_LOAD16_BYTE( "ik3-21.bin", 0x080000, 0x20000, CRC(50d0fbf0) SHA1(9ff5fbea8d35d0f9a38ddd7eb093edcd91d9f874) ) + ROM_LOAD16_BYTE( "ik3-11.bin", 0x080001, 0x20000, CRC(e4e2be43) SHA1(959d2799708ddae909b017c0696694c46a52697e) ) + ROM_LOAD16_BYTE( "ik3-20.bin", 0x0c0000, 0x20000, CRC(9a851efc) SHA1(bc7be338ee4da7fbfe6fe44a9c7889817416bc44) ) + ROM_LOAD16_BYTE( "ik3-10.bin", 0x0c0001, 0x20000, CRC(ac222372) SHA1(8a17e37699d691b962a6d0256a18550cc73ddfef) ) + ROM_LOAD16_BYTE( "ik3-19.bin", 0x100000, 0x20000, CRC(4ebdba89) SHA1(f3ecfef4c9d2aba58dc3e6aa3cf5813d68686909) ) + ROM_LOAD16_BYTE( "ik3-9.bin", 0x100001, 0x20000, CRC(c33971c2) SHA1(91f3eb301803f5a7027da1ff7dd2a28bc97e5125) ) + // 140000-1fffff empty + ROM_LOAD16_BYTE( "ik3-14.bin", 0x200000, 0x20000, CRC(453bea77) SHA1(f8f8d0c048fcf32ad99e1de622d9ab635bb86eae) ) + ROM_LOAD16_BYTE( "ik3-24.bin", 0x200001, 0x20000, CRC(e9b26d68) SHA1(067d582d33157ed4b7980bd87f2f260ab74c347b) ) + ROM_LOAD16_BYTE( "ik3-15.bin", 0x240000, 0x20000, CRC(781a81fc) SHA1(e08a6cf9c632d1002176afe618605bc06168e8aa) ) + ROM_LOAD16_BYTE( "ik3-25.bin", 0x240001, 0x20000, CRC(073b03f1) SHA1(b8053139799fa06c7324cee928154c89d4425ab1) ) + ROM_LOAD16_BYTE( "ik3-16.bin", 0x280000, 0x20000, CRC(80ba400b) SHA1(2cc3e53c45f239516a60c461ad9cfa5955164262) ) + ROM_LOAD16_BYTE( "ik3-26.bin", 0x280001, 0x20000, CRC(9c613561) SHA1(fc7c9a642b18faa94e6a2ba53f35a4d756a25da3) ) + ROM_LOAD16_BYTE( "ik3-17.bin", 0x2c0000, 0x20000, CRC(0cc3ce4a) SHA1(7b34435d0bbb089055a183b821ab255170db6bec) ) + ROM_LOAD16_BYTE( "ik3-27.bin", 0x2c0001, 0x20000, CRC(16dd227e) SHA1(db3b1718dea65bc9a1a736aa62aa2be389313baf) ) + ROM_LOAD16_BYTE( "ik3-18.bin", 0x300000, 0x20000, CRC(ba106245) SHA1(ac609ec3046c21fe6058f91dd4528c5c6448dc15) ) + ROM_LOAD16_BYTE( "ik3-28.bin", 0x300001, 0x20000, CRC(711715ae) SHA1(90978c86884ca3d23c138d95b654e2fb3afc6f9a) ) + // 340000-3fffff empty ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ ROM_LOAD( "ik3-6.bin", 0x000000, 0x20000, CRC(59d256a4) SHA1(1e7b33329f761c695bc9a817bbc0c5e13386d073) ) @@ -1162,27 +873,29 @@ ROM_START( ikari3nr ) /* Normal Joystick */ ROM_LOAD( "ik3-7.bin", 0x000000, 0x08000, CRC(0b4804df) SHA1(66d16d245bfc404366164823faaea0bfec83e487) ) ROM_LOAD( "ik3-8.bin", 0x008000, 0x08000, CRC(10ab4e50) SHA1(dee8416eb720848cf6471e568dadc1cfc6c2e67f) ) - ROM_REGION( 0x280000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ - ROM_LOAD( "ik3-13.bin", 0x000000, 0x20000, CRC(9a56bd32) SHA1(9301b48f970b71a909fb44514b2e93c3f1516b38) ) - ROM_LOAD( "ik3-12.bin", 0x020000, 0x20000, CRC(0ce6a10a) SHA1(13a231aa0002b2c5a0d9404ba05a879e212d638e) ) - ROM_LOAD( "ik3-11.bin", 0x040000, 0x20000, CRC(e4e2be43) SHA1(959d2799708ddae909b017c0696694c46a52697e) ) - ROM_LOAD( "ik3-10.bin", 0x060000, 0x20000, CRC(ac222372) SHA1(8a17e37699d691b962a6d0256a18550cc73ddfef) ) - ROM_LOAD( "ik3-9.bin", 0x080000, 0x20000, CRC(c33971c2) SHA1(91f3eb301803f5a7027da1ff7dd2a28bc97e5125) ) - ROM_LOAD( "ik3-14.bin", 0x0a0000, 0x20000, CRC(453bea77) SHA1(f8f8d0c048fcf32ad99e1de622d9ab635bb86eae) ) - ROM_LOAD( "ik3-15.bin", 0x0c0000, 0x20000, CRC(781a81fc) SHA1(e08a6cf9c632d1002176afe618605bc06168e8aa) ) - ROM_LOAD( "ik3-16.bin", 0x0e0000, 0x20000, CRC(80ba400b) SHA1(2cc3e53c45f239516a60c461ad9cfa5955164262) ) - ROM_LOAD( "ik3-17.bin", 0x100000, 0x20000, CRC(0cc3ce4a) SHA1(7b34435d0bbb089055a183b821ab255170db6bec) ) - ROM_LOAD( "ik3-18.bin", 0x120000, 0x20000, CRC(ba106245) SHA1(ac609ec3046c21fe6058f91dd4528c5c6448dc15) ) - ROM_LOAD( "ik3-23.bin", 0x140000, 0x20000, CRC(d0fd5c77) SHA1(c171c64ad252f0ba5b0bbdf37808102fca37b488) ) - ROM_LOAD( "ik3-22.bin", 0x160000, 0x20000, CRC(4878d883) SHA1(8cdb541bad00e707fb65399d637b7cc9288ada77) ) - ROM_LOAD( "ik3-21.bin", 0x180000, 0x20000, CRC(50d0fbf0) SHA1(9ff5fbea8d35d0f9a38ddd7eb093edcd91d9f874) ) - ROM_LOAD( "ik3-20.bin", 0x1a0000, 0x20000, CRC(9a851efc) SHA1(bc7be338ee4da7fbfe6fe44a9c7889817416bc44) ) - ROM_LOAD( "ik3-19.bin", 0x1c0000, 0x20000, CRC(4ebdba89) SHA1(f3ecfef4c9d2aba58dc3e6aa3cf5813d68686909) ) - ROM_LOAD( "ik3-24.bin", 0x1e0000, 0x20000, CRC(e9b26d68) SHA1(067d582d33157ed4b7980bd87f2f260ab74c347b) ) - ROM_LOAD( "ik3-25.bin", 0x200000, 0x20000, CRC(073b03f1) SHA1(b8053139799fa06c7324cee928154c89d4425ab1) ) - ROM_LOAD( "ik3-26.bin", 0x220000, 0x20000, CRC(9c613561) SHA1(fc7c9a642b18faa94e6a2ba53f35a4d756a25da3) ) - ROM_LOAD( "ik3-27.bin", 0x240000, 0x20000, CRC(16dd227e) SHA1(db3b1718dea65bc9a1a736aa62aa2be389313baf) ) - ROM_LOAD( "ik3-28.bin", 0x260000, 0x20000, CRC(711715ae) SHA1(90978c86884ca3d23c138d95b654e2fb3afc6f9a) ) + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + ROM_LOAD16_BYTE( "ik3-23.bin", 0x000000, 0x20000, CRC(d0fd5c77) SHA1(c171c64ad252f0ba5b0bbdf37808102fca37b488) ) + ROM_LOAD16_BYTE( "ik3-13.bin", 0x000001, 0x20000, CRC(9a56bd32) SHA1(9301b48f970b71a909fb44514b2e93c3f1516b38) ) + ROM_LOAD16_BYTE( "ik3-22.bin", 0x040000, 0x20000, CRC(4878d883) SHA1(8cdb541bad00e707fb65399d637b7cc9288ada77) ) + ROM_LOAD16_BYTE( "ik3-12.bin", 0x040001, 0x20000, CRC(0ce6a10a) SHA1(13a231aa0002b2c5a0d9404ba05a879e212d638e) ) + ROM_LOAD16_BYTE( "ik3-21.bin", 0x080000, 0x20000, CRC(50d0fbf0) SHA1(9ff5fbea8d35d0f9a38ddd7eb093edcd91d9f874) ) + ROM_LOAD16_BYTE( "ik3-11.bin", 0x080001, 0x20000, CRC(e4e2be43) SHA1(959d2799708ddae909b017c0696694c46a52697e) ) + ROM_LOAD16_BYTE( "ik3-20.bin", 0x0c0000, 0x20000, CRC(9a851efc) SHA1(bc7be338ee4da7fbfe6fe44a9c7889817416bc44) ) + ROM_LOAD16_BYTE( "ik3-10.bin", 0x0c0001, 0x20000, CRC(ac222372) SHA1(8a17e37699d691b962a6d0256a18550cc73ddfef) ) + ROM_LOAD16_BYTE( "ik3-19.bin", 0x100000, 0x20000, CRC(4ebdba89) SHA1(f3ecfef4c9d2aba58dc3e6aa3cf5813d68686909) ) + ROM_LOAD16_BYTE( "ik3-9.bin", 0x100001, 0x20000, CRC(c33971c2) SHA1(91f3eb301803f5a7027da1ff7dd2a28bc97e5125) ) + // 140000-1fffff empty + ROM_LOAD16_BYTE( "ik3-14.bin", 0x200000, 0x20000, CRC(453bea77) SHA1(f8f8d0c048fcf32ad99e1de622d9ab635bb86eae) ) + ROM_LOAD16_BYTE( "ik3-24.bin", 0x200001, 0x20000, CRC(e9b26d68) SHA1(067d582d33157ed4b7980bd87f2f260ab74c347b) ) + ROM_LOAD16_BYTE( "ik3-15.bin", 0x240000, 0x20000, CRC(781a81fc) SHA1(e08a6cf9c632d1002176afe618605bc06168e8aa) ) + ROM_LOAD16_BYTE( "ik3-25.bin", 0x240001, 0x20000, CRC(073b03f1) SHA1(b8053139799fa06c7324cee928154c89d4425ab1) ) + ROM_LOAD16_BYTE( "ik3-16.bin", 0x280000, 0x20000, CRC(80ba400b) SHA1(2cc3e53c45f239516a60c461ad9cfa5955164262) ) + ROM_LOAD16_BYTE( "ik3-26.bin", 0x280001, 0x20000, CRC(9c613561) SHA1(fc7c9a642b18faa94e6a2ba53f35a4d756a25da3) ) + ROM_LOAD16_BYTE( "ik3-17.bin", 0x2c0000, 0x20000, CRC(0cc3ce4a) SHA1(7b34435d0bbb089055a183b821ab255170db6bec) ) + ROM_LOAD16_BYTE( "ik3-27.bin", 0x2c0001, 0x20000, CRC(16dd227e) SHA1(db3b1718dea65bc9a1a736aa62aa2be389313baf) ) + ROM_LOAD16_BYTE( "ik3-18.bin", 0x300000, 0x20000, CRC(ba106245) SHA1(ac609ec3046c21fe6058f91dd4528c5c6448dc15) ) + ROM_LOAD16_BYTE( "ik3-28.bin", 0x300001, 0x20000, CRC(711715ae) SHA1(90978c86884ca3d23c138d95b654e2fb3afc6f9a) ) + // 340000-3fffff empty ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ ROM_LOAD( "ik3-6.bin", 0x000000, 0x20000, CRC(59d256a4) SHA1(1e7b33329f761c695bc9a817bbc0c5e13386d073) ) @@ -1192,6 +905,96 @@ ROM_START( ikari3nr ) /* Normal Joystick */ ROM_LOAD16_BYTE( "ik3-4.c12", 0x000001, 0x10000, CRC(a43af6b5) SHA1(1ad3acadbadd21642932028ecd7c282f7fd02856) ) ROM_END +ROM_START( searchar ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) + ROM_LOAD16_BYTE( "bhw.2", 0x000000, 0x20000, CRC(e1430138) SHA1(eddc192524a13b2c09bd2bddcd5f8e8b771ceb21) ) + ROM_LOAD16_BYTE( "bhw.3", 0x000001, 0x20000, CRC(ee1f9374) SHA1(fd41c74fd69d65713d8e1a9b8078328381119379) ) + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */ + ROM_LOAD( "bh.5", 0x000000, 0x10000, CRC(53e2fa76) SHA1(cf25b1def82545a1fd013822ab3cf02483074623) ) + + ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE ) /* characters */ + ROM_LOAD( "bh.7", 0x000000, 0x08000, CRC(b0f1b049) SHA1(ec276984d91b5759a5e2b6815d1db2abc37b99f8) ) + ROM_LOAD( "bh.8", 0x008000, 0x08000, CRC(174ddba7) SHA1(7b19087cd2ccc409878aefe7fa08bb2e9953d352) ) + + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + ROM_LOAD( "bh.c1", 0x000000, 0x80000, CRC(1fb8f0ae) SHA1(d63c7376aa5f01bc009176b23324e720bada4286) ) + ROM_LOAD( "bh.c3", 0x080000, 0x80000, CRC(fd8bc407) SHA1(88d750293808bf6ea23864b22070314b14fbee3c) ) + ROM_LOAD( "bh.c5", 0x100000, 0x80000, CRC(1d30acc3) SHA1(e5ca39853779475b83fe37304e7bed2c293bd587) ) + // 180000-1fffff empty + ROM_LOAD( "bh.c2", 0x200000, 0x80000, CRC(7c803767) SHA1(992516fbb28d00feabbed5769fa3a5748199a7d8) ) + ROM_LOAD( "bh.c4", 0x280000, 0x80000, CRC(eede7c43) SHA1(7645acf0beb4fff9ec92205dcf34124360cd52f6) ) + ROM_LOAD( "bh.c6", 0x300000, 0x80000, CRC(9f785cd9) SHA1(e5c7797ae7a3139e1814b068c5ecfe5c6bf30d0f) ) + // 380000-3fffff empty + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ + ROM_LOAD( "bh.v1", 0x000000, 0x20000, CRC(07a6114b) SHA1(224df4616b77a56f33974d3b1793473d48ad52ca) ) + + ROM_REGION16_BE( 0x40000, REGION_USER1, 0 ) /* Extra code bank */ + ROM_LOAD16_BYTE( "bhw.1", 0x000000, 0x20000, CRC(62b60066) SHA1(f7e7985c8f5f8191c580e777e1b7ed29d944d23f) ) + ROM_LOAD16_BYTE( "bhw.4", 0x000001, 0x20000, CRC(16d8525c) SHA1(0098b0a7fcb23de2661bbec9a05254aa46579bb2) ) +ROM_END + +ROM_START( sercharu ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) + ROM_LOAD16_BYTE( "bh.2", 0x000000, 0x20000, CRC(c852e2e2) SHA1(c4b1b366f452122549046a3dec9b6b375bc273af) ) + ROM_LOAD16_BYTE( "bh.3", 0x000001, 0x20000, CRC(bc04a4a1) SHA1(aa91583b987248a3e99813ab5e8ee03c02dac9b9) ) + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */ + ROM_LOAD( "bh.5", 0x000000, 0x10000, CRC(53e2fa76) SHA1(cf25b1def82545a1fd013822ab3cf02483074623) ) + + ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE ) /* characters */ + ROM_LOAD( "bh.7", 0x000000, 0x08000, CRC(b0f1b049) SHA1(ec276984d91b5759a5e2b6815d1db2abc37b99f8) ) + ROM_LOAD( "bh.8", 0x008000, 0x08000, CRC(174ddba7) SHA1(7b19087cd2ccc409878aefe7fa08bb2e9953d352) ) + + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + ROM_LOAD( "bh.c1", 0x000000, 0x80000, CRC(1fb8f0ae) SHA1(d63c7376aa5f01bc009176b23324e720bada4286) ) + ROM_LOAD( "bh.c3", 0x080000, 0x80000, CRC(fd8bc407) SHA1(88d750293808bf6ea23864b22070314b14fbee3c) ) + ROM_LOAD( "bh.c5", 0x100000, 0x80000, CRC(1d30acc3) SHA1(e5ca39853779475b83fe37304e7bed2c293bd587) ) + // 180000-1fffff empty + ROM_LOAD( "bh.c2", 0x200000, 0x80000, CRC(7c803767) SHA1(992516fbb28d00feabbed5769fa3a5748199a7d8) ) + ROM_LOAD( "bh.c4", 0x280000, 0x80000, CRC(eede7c43) SHA1(7645acf0beb4fff9ec92205dcf34124360cd52f6) ) + ROM_LOAD( "bh.c6", 0x300000, 0x80000, CRC(9f785cd9) SHA1(e5c7797ae7a3139e1814b068c5ecfe5c6bf30d0f) ) + // 380000-3fffff empty + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ + ROM_LOAD( "bh.v1", 0x000000, 0x20000, CRC(07a6114b) SHA1(224df4616b77a56f33974d3b1793473d48ad52ca) ) + + ROM_REGION16_BE( 0x40000, REGION_USER1, 0 ) /* Extra code bank */ + ROM_LOAD16_BYTE( "bh.1", 0x000000, 0x20000, CRC(ba9ca70b) SHA1(c46727473673554cbe4bbbc0288d66357f99a80e) ) + ROM_LOAD16_BYTE( "bh.4", 0x000001, 0x20000, CRC(eabc5ddf) SHA1(08a2a8fcdf6a08a2694e00f4232a5bfbec98fd27) ) +ROM_END + +ROM_START( sercharj ) + ROM_REGION( 0x40000, REGION_CPU1, 0 ) + ROM_LOAD16_BYTE( "bh2ver3j.9c", 0x000000, 0x20000, CRC(7ef7b172) SHA1(85669ba72f59e4ff3a483bf611bf41c73f4e1930) ) + ROM_LOAD16_BYTE( "bh3ver3j.10c", 0x000001, 0x20000, CRC(3fdea793) SHA1(49bafb53466afb7e4486a4894e4fd6fa08ea2eb2) ) + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU */ + ROM_LOAD( "bh.5", 0x000000, 0x10000, CRC(53e2fa76) SHA1(cf25b1def82545a1fd013822ab3cf02483074623) ) + + ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE ) /* characters */ + ROM_LOAD( "bh.7", 0x000000, 0x08000, CRC(b0f1b049) SHA1(ec276984d91b5759a5e2b6815d1db2abc37b99f8) ) + ROM_LOAD( "bh.8", 0x008000, 0x08000, CRC(174ddba7) SHA1(7b19087cd2ccc409878aefe7fa08bb2e9953d352) ) + + ROM_REGION( 0x400000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */ + ROM_LOAD( "bh.c1", 0x000000, 0x80000, CRC(1fb8f0ae) SHA1(d63c7376aa5f01bc009176b23324e720bada4286) ) + ROM_LOAD( "bh.c3", 0x080000, 0x80000, CRC(fd8bc407) SHA1(88d750293808bf6ea23864b22070314b14fbee3c) ) + ROM_LOAD( "bh.c5", 0x100000, 0x80000, CRC(1d30acc3) SHA1(e5ca39853779475b83fe37304e7bed2c293bd587) ) + // 180000-1fffff empty + ROM_LOAD( "bh.c2", 0x200000, 0x80000, CRC(7c803767) SHA1(992516fbb28d00feabbed5769fa3a5748199a7d8) ) + ROM_LOAD( "bh.c4", 0x280000, 0x80000, CRC(eede7c43) SHA1(7645acf0beb4fff9ec92205dcf34124360cd52f6) ) + ROM_LOAD( "bh.c6", 0x300000, 0x80000, CRC(9f785cd9) SHA1(e5c7797ae7a3139e1814b068c5ecfe5c6bf30d0f) ) + // 380000-3fffff empty + + ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* UPD7759 samples */ + ROM_LOAD( "bh.v1", 0x000000, 0x20000, CRC(07a6114b) SHA1(224df4616b77a56f33974d3b1793473d48ad52ca) ) + + ROM_REGION16_BE( 0x40000, REGION_USER1, 0 ) /* Extra code bank */ + ROM_LOAD16_BYTE( "bhw.1", 0x000000, 0x20000, CRC(62b60066) SHA1(f7e7985c8f5f8191c580e777e1b7ed29d944d23f) ) + ROM_LOAD16_BYTE( "bhw.4", 0x000001, 0x20000, CRC(16d8525c) SHA1(0098b0a7fcb23de2661bbec9a05254aa46579bb2) ) +ROM_END + /******************************************************************************/ static DRIVER_INIT( searchar ) @@ -1201,15 +1004,14 @@ static DRIVER_INIT( searchar ) /******************************************************************************/ -GAME( 1988, pow, 0, pow, pow, 0, ROT0, "SNK", "P.O.W. - Prisoners of War (US version 1)", 0 ) -GAME( 1988, powj, pow, pow, powj, 0, ROT0, "SNK", "Datsugoku - Prisoners of War (Japan)", 0 ) -GAME( 1989, searchar, 0, searchar, searchar, searchar, ROT90, "SNK", "SAR - Search And Rescue (World)", 0 ) -GAME( 1989, sercharu, searchar, searchar, searchar, searchar, ROT90, "SNK", "SAR - Search And Rescue (US)", 0 ) -GAME( 1989, sercharj, searchar, searchar, searchar, searchar, ROT90, "SNK", "SAR - Search And Rescue (Japan)", 0 ) -GAME( 1989, streetsm, 0, streetsm, streetsm, 0, ROT0, "SNK", "Street Smart (US version 2)", 0 ) +GAME( 1988, pow, 0, pow, pow, 0, ROT0, "SNK", "P.O.W. - Prisoners of War (US version 1)", 0 ) +GAME( 1988, powj, pow, pow, powj, 0, ROT0, "SNK", "Datsugoku - Prisoners of War (Japan)", 0 ) +GAME( 1989, streetsm, 0, pow, streetsm, 0, ROT0, "SNK", "Street Smart (US version 2)", 0 ) GAME( 1989, streets1, streetsm, searchar, streetsm, 0, ROT0, "SNK", "Street Smart (US version 1)", 0 ) GAME( 1989, streetsw, streetsm, searchar, streetsj, 0, ROT0, "SNK", "Street Smart (World version 1)", 0 ) GAME( 1989, streetsj, streetsm, searchar, streetsj, 0, ROT0, "SNK", "Street Smart (Japan version 1)", 0 ) -GAME( 1989, ikari3, 0, ikari3, ikari3, searchar, ROT0, "SNK", "Ikari III - The Rescue (Rotary Joystick)", 0 ) -GAME( 1989, ikari3nr, ikari3, ikari3, ikari3, searchar, ROT0, "SNK", "Ikari III - The Rescue (8-Way Joystick)", 0 ) - +GAME( 1989, ikari3, 0, searchar, ikari3, searchar, ROT0, "SNK", "Ikari III - The Rescue (Rotary Joystick)", 0 ) +GAME( 1989, ikari3nr, ikari3, searchar, ikari3, searchar, ROT0, "SNK", "Ikari III - The Rescue (8-Way Joystick)", 0 ) +GAME( 1989, searchar, 0, searchar, searchar, searchar, ROT90, "SNK", "SAR - Search And Rescue (World)", 0 ) +GAME( 1989, sercharu, searchar, searchar, searchar, searchar, ROT90, "SNK", "SAR - Search And Rescue (US)", 0 ) +GAME( 1989, sercharj, searchar, searchar, searchar, searchar, ROT90, "SNK", "SAR - Search And Rescue (Japan)", 0 ) diff --git a/src/mame/mamedriv.c b/src/mame/mamedriv.c index a9addac1e31..9ceb0adbefc 100644 --- a/src/mame/mamedriv.c +++ b/src/mame/mamedriv.c @@ -5476,7 +5476,6 @@ BOMULEUL CHAJARA SEGA ST-V 1997/04/11 DRIVER( legofair ) /* A7003 'KK' (c) 1988 */ DRIVER( fsoccer ) /* A6006 'FS' (c) 1988 */ DRIVER( fsoccerj ) /* A6006 'FS' (c) 1988 */ - DRIVER( fsoccerb ) /* (c) 1988 */ DRIVER( tdfever ) /* A6006 'TD' (c) 1987 */ DRIVER( tdfeverj ) /* A6006 'TD' (c) 1987 */ diff --git a/src/mame/video/snk68.c b/src/mame/video/snk68.c index f156283f11b..24944eb7201 100644 --- a/src/mame/video/snk68.c +++ b/src/mame/video/snk68.c @@ -14,8 +14,12 @@ Notes: #include "driver.h" -static int sprite_flip, pow_charbase=0; //* -static tilemap *fix_tilemap; +UINT16* pow_fg_videoram; + +static int pow_charbank; +static int sprite_flip_axis; +static tilemap *fg_tilemap; +static int flipscreen; /*************************************************************************** @@ -25,50 +29,22 @@ static tilemap *fix_tilemap; static TILE_GET_INFO( get_pow_tile_info ) { - int tile=videoram16[2*tile_index]&0xff; - int color=videoram16[2*tile_index+1]; - - tile += pow_charbase; //AT: (powj36rc2gre) - color&=0xf; + int tile = (pow_fg_videoram[2*tile_index] & 0xff) | (pow_charbank << 8); + int color = pow_fg_videoram[2*tile_index+1] & 0x07; - SET_TILE_INFO( - 0, - tile, - color, - 0); + SET_TILE_INFO(0, tile, color, 0); } -static TILE_GET_INFO( get_sar_tile_info ) +static TILE_GET_INFO( get_searchar_tile_info ) { - int tile=videoram16[2*tile_index]; - int color=tile >> 12; + int data = pow_fg_videoram[2*tile_index]; + int tile = data & 0x7ff; + int color = (data & 0x7000) >> 12; - tile=tile&0xfff; + // used in the ikari3 intro + int flags = (data & 0x8000) ? TILE_FORCE_LAYER0 : 0; - SET_TILE_INFO( - 0, - tile, - color, - 0); -} - -static TILE_GET_INFO( get_ikari3_tile_info ) -{ - int tile=videoram16[2*tile_index]; - int color=tile >> 12; - - /* Kludge - Tile 0x80ff is meant to be opaque black, but isn't. This fixes it */ - if (tile==0x80ff) { - tile=0x2ca; - color=7; - } else - tile=tile&0xfff; - - SET_TILE_INFO( - 0, - tile, - color, - 0); + SET_TILE_INFO(0, tile, color, flags); } /*************************************************************************** @@ -77,25 +53,26 @@ static TILE_GET_INFO( get_ikari3_tile_info ) ***************************************************************************/ -VIDEO_START( pow ) +static void common_video_start(running_machine *machine) { - fix_tilemap = tilemap_create(get_pow_tile_info,tilemap_scan_cols,8,8,32,32); + tilemap_set_transparent_pen(fg_tilemap,0); - tilemap_set_transparent_pen(fix_tilemap,0); + tilemap_set_scrolldx(fg_tilemap, 0, video_screen_get_width(machine->primary_screen) - 256); + tilemap_set_scrolldy(fg_tilemap, 0, video_screen_get_height(machine->primary_screen) - 256); } -VIDEO_START( searchar ) +VIDEO_START( pow ) { - fix_tilemap = tilemap_create(get_sar_tile_info,tilemap_scan_cols,8,8,32,32); + fg_tilemap = tilemap_create(get_pow_tile_info,tilemap_scan_cols,8,8,32,32); - tilemap_set_transparent_pen(fix_tilemap,0); + common_video_start(machine); } -VIDEO_START( ikari3 ) +VIDEO_START( searchar ) { - fix_tilemap = tilemap_create(get_ikari3_tile_info,tilemap_scan_cols,8,8,32,32); + fg_tilemap = tilemap_create(get_searchar_tile_info,tilemap_scan_cols,8,8,32,32); - tilemap_set_transparent_pen(fix_tilemap,0); + common_video_start(machine); } /*************************************************************************** @@ -104,13 +81,85 @@ VIDEO_START( ikari3 ) ***************************************************************************/ +READ16_HANDLER( pow_spriteram_r ) +{ + // streetsj expects the MSB of every 32-bit word to be FF. Presumably RAM + // exists only for 3 bytes out of 4 and the fourth is unmapped. + if (!(offset & 1)) + return spriteram16[offset] | 0xff00; + else + return spriteram16[offset]; +} + +WRITE16_HANDLER( pow_spriteram_w ) +{ + /* + This kludge fixes bug 00871: pow: At 3/4 of the 1st level, there is a large pillar, which pops up too late. + + The problem: the sprite list is built by the IRQ handler, however there is + code in the main loop that clears some portions of sprite RAM under certain + conditions. Usually, this isn't a problem, but in that specific point the + sprites added by the IRQ handler are erased before the screen is drawn. + + We could force a partial update every time the sprite RAM is modified, however + that would hardly be more accurate since the sprite hardware most likely draws + to a frame buffer one frame behind, so the exact timing is unknown. + Instead, we just force a partial update before changing the RAM location that + causes the problem. + */ + if (offset == 0x10c/2) + video_screen_update_partial(machine->primary_screen, video_screen_get_vpos(machine->primary_screen)); + + if (!(offset & 1)) + data |= 0xff00; + COMBINE_DATA(&spriteram16[offset]); +} + +READ16_HANDLER( pow_fg_videoram_r ) +{ + // RAM is only 8-bit + return pow_fg_videoram[offset] | 0xff00; +} + +WRITE16_HANDLER( pow_fg_videoram_w ) +{ + data |= 0xff00; + COMBINE_DATA(&pow_fg_videoram[offset]); + tilemap_mark_tile_dirty(fg_tilemap, offset >> 1); +} + +WRITE16_HANDLER( searchar_fg_videoram_w ) +{ + // RAM is full 16-bit, though only half of it is used by the hardware + COMBINE_DATA(&pow_fg_videoram[offset]); + tilemap_mark_tile_dirty(fg_tilemap, offset >> 1); +} + WRITE16_HANDLER( pow_flipscreen16_w ) { if (ACCESSING_BITS_0_7) { - flip_screen_set(data & 0x08); - sprite_flip=data&0x4; - pow_charbase = (data & 0x70) << 4; + flipscreen = data & 0x08; + tilemap_set_flip(ALL_TILEMAPS, flipscreen ? (TILEMAP_FLIPX | TILEMAP_FLIPY) : 0); + + sprite_flip_axis = data & 0x04; // for streetsm? though might not be present on this board + + if (pow_charbank != ((data & 0x70) >> 4)) + { + pow_charbank = (data & 0x70) >> 4; + tilemap_mark_all_tiles_dirty(fg_tilemap); + } + } +} + +WRITE16_HANDLER( searchar_flipscreen16_w ) +{ + if (ACCESSING_BITS_0_7) + { + flipscreen = data & 0x08; + tilemap_set_flip(ALL_TILEMAPS, flipscreen ? (TILEMAP_FLIPX | TILEMAP_FLIPY) : 0); + + sprite_flip_axis = data & 0x04; } } @@ -129,12 +178,6 @@ WRITE16_HANDLER( pow_paletteram16_word_w ) palette_set_color_rgb(machine,offset,pal5bit(r),pal5bit(g),pal5bit(b)); } -WRITE16_HANDLER( pow_video16_w ) -{ - COMBINE_DATA(&videoram16[offset]); - tilemap_mark_tile_dirty(fix_tilemap,offset>>1); -} - /*************************************************************************** @@ -142,158 +185,92 @@ WRITE16_HANDLER( pow_video16_w ) ***************************************************************************/ -static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int j,int pos) +static void draw_sprites(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int group) { - int offs,mx,my,color,tile,fx,fy,i; + const UINT16* tiledata = &spriteram16[0x800*group]; - for (offs = pos; offs < pos+0x800; offs += 0x80 ) + // pow has 0x4000 tiles and independent x/y flipping + // the other games have > 0x4000 tiles and flipping in only one direction + // (globally selected) + int const is_pow = (machine->gfx[1]->total_elements <= 0x4000); + int offs; + + for (offs = 0; offs < 0x800; offs += 0x40) { - mx=(spriteram16[(offs+4+(4*j))>>1]&0xff)<<4; - my=spriteram16[(offs+6+(4*j))>>1]; - mx=mx+(my>>12); - mx=((mx+16)&0x1ff)-16; + int mx = (spriteram16[offs + 2*group] & 0xff) << 4; + int my = spriteram16[offs + 2*group + 1]; + int i; - mx=((mx+0x100)&0x1ff)-0x100; - my=((my+0x100)&0x1ff)-0x100; + mx = mx | (my >> 12); - my=0x200 - my; - my-=0x200; + mx = ((mx + 16) & 0x1ff) - 16; + my = -my; - if (flip_screen_get()) { - mx=240-mx; - my=240-my; + if (flipscreen) + { + mx = 240 - mx; + my = 240 - my; } - for (i=0; i<0x80; i+=4) { - color=spriteram16[(offs+i+(0x1000*j)+0x1000)>>1]&0x7f; - - if (color) { - tile=spriteram16[(offs+2+i+(0x1000*j)+0x1000)>>1]; - fy=tile&0x8000; - fx=tile&0x4000; - tile&=0x3fff; - - if (flip_screen_get()) { - if (fx) fx=0; else fx=1; - if (fy) fy=0; else fy=1; - } - - drawgfx(bitmap,machine->gfx[1], - tile, - color, - fx,fy, - mx,my, - cliprect,TRANSPARENCY_PEN,0); - } - - if (flip_screen_get()) { - my-=16; - if (my < -0x100) my+=0x200; + // every sprite is a column 32 tiles tall + for (i = 0; i < 0x20; ++i) + { + int color = *(tiledata++) & 0x7f; + int tile = *(tiledata++); + int fx,fy; + + if (is_pow) + { + fx = tile & 0x4000; + fy = tile & 0x8000; + tile &= 0x3fff; } - else { - my+=16; - if (my > 0x100) my-=0x200; - } - } - } -} - - -VIDEO_UPDATE( pow ) -{ - fillbitmap(bitmap,2047,cliprect); - - /* This appears to be correct priority */ - draw_sprites(screen->machine, bitmap,cliprect,1,0x000); - draw_sprites(screen->machine, bitmap,cliprect,1,0x800); - draw_sprites(screen->machine, bitmap,cliprect,2,0x000); - draw_sprites(screen->machine, bitmap,cliprect,2,0x800); - draw_sprites(screen->machine, bitmap,cliprect,0,0x000); //AT: (pow37b5yel) - draw_sprites(screen->machine, bitmap,cliprect,0,0x800); - - tilemap_draw(bitmap,cliprect,fix_tilemap,0,0); - return 0; -} - - -static void draw_sprites2(running_machine *machine, bitmap_t *bitmap, const rectangle *cliprect, int j, int z, int pos) -{ - int offs,mx,my,color,tile,fx,fy,i; - - for (offs = pos; offs < pos+0x800 ; offs += 0x80 ) - { - mx=spriteram16[(offs+j)>>1]; - my=spriteram16[(offs+j+2)>>1]; - - mx=mx<<4; - mx=mx|((my>>12)&0xf); - my=my&0x1ff; - - mx=(mx+0x100)&0x1ff; - my=(my+0x100)&0x1ff; - mx-=0x100; - my-=0x100; - my=0x200 - my; - my-=0x200; - - if (flip_screen_get()) { - mx=240-mx; - my=240-my; - } - - for (i=0; i<0x80; i+=4) { - color=spriteram16[(offs+i+z)>>1]&0x7f; - if (color) { - tile=spriteram16[(offs+2+i+z)>>1]; - if (sprite_flip) { - fx=0; - fy=tile&0x8000; - } else { - fy=0; - fx=tile&0x8000; + else + { + if (sprite_flip_axis) + { + fx = 0; + fy = tile & 0x8000; } - - if (flip_screen_get()) { - if (fx) fx=0; else fx=1; - if (fy) fy=0; else fy=1; + else + { + fx = tile & 0x8000; + fy = 0; } + tile &= 0x7fff; + } - tile&=0x7fff; - if (tile>0x5fff) break; + if (flipscreen) + { + fx = !fx; + fy = !fy; + } - drawgfx(bitmap,machine->gfx[1], + drawgfx(bitmap,machine->gfx[1], tile, color, - fx,fy, - mx,my, - cliprect,TRANSPARENCY_PEN,0); - } - if (flip_screen_get()) { - my-=16; - if (my < -0x100) my+=0x200; - } - else { - my+=16; - if (my > 0x100) my-=0x200; - } + fx, fy, + mx, my & 0x1ff, + cliprect, TRANSPARENCY_PEN, 0); + + if (flipscreen) + my -= 16; + else + my += 16; } } } -VIDEO_UPDATE( searchar ) +VIDEO_UPDATE( pow ) { - fillbitmap(bitmap,2047,cliprect); + fillbitmap(bitmap, 0x7ff, cliprect); - /* This appears to be correct priority */ - draw_sprites2(screen->machine, bitmap,cliprect,8,0x2000,0x000); - draw_sprites2(screen->machine, bitmap,cliprect,8,0x2000,0x800); - draw_sprites2(screen->machine, bitmap,cliprect,12,0x3000,0x000); - draw_sprites2(screen->machine, bitmap,cliprect,12,0x3000,0x800); - draw_sprites2(screen->machine, bitmap,cliprect,4,0x1000,0x000); - draw_sprites2(screen->machine, bitmap,cliprect,4,0x1000,0x800); + /* This appears to be the correct priority order */ + draw_sprites(screen->machine, bitmap, cliprect, 2); + draw_sprites(screen->machine, bitmap, cliprect, 3); + draw_sprites(screen->machine, bitmap, cliprect, 1); - tilemap_draw(bitmap,cliprect,fix_tilemap,0,0); + tilemap_draw(bitmap, cliprect, fg_tilemap, 0, 0); return 0; } - |
