summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Nicola Salmoria <nicola@mamedev.org>2008-07-16 10:16:57 +0000
committer Nicola Salmoria <nicola@mamedev.org>2008-07-16 10:16:57 +0000
commit34b353c1e07d01dc7a6d35e9980263351d85488b (patch)
tree28ec607df0294d257e8a85817e1bd53c08c52a36 /src
parented46d4f53146b1acbf6d5811b20801947ca85580 (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.c1312
-rw-r--r--src/mame/mamedriv.c1
-rw-r--r--src/mame/video/snk68.c353
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;
}
-