summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/mame/drivers/legionna.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/mame/drivers/legionna.c')
-rw-r--r--trunk/src/mame/drivers/legionna.c2233
1 files changed, 2233 insertions, 0 deletions
diff --git a/trunk/src/mame/drivers/legionna.c b/trunk/src/mame/drivers/legionna.c
new file mode 100644
index 00000000000..d7373da40af
--- /dev/null
+++ b/trunk/src/mame/drivers/legionna.c
@@ -0,0 +1,2233 @@
+/***************************************************************************
+
+Legionnaire (c) Tad 1992
+-----------
+
+David Graves
+
+Made from MAME D-con and Toki drivers (by Bryan McPhail, Jarek Parchanski)
+
+
+Heated Barrel looks like a minor revision of the Legionnaire
+hardware. It has a graphics banking facility, which doubles the 0xfff
+different tiles available for use in the foreground layer.
+
+
+
+TODO
+----
+
+Check work RAM boundaries, they are likely to be too generous right now
+
+
+Legionnaire
+-----------
+
+Need 16 px off top of vis area?
+
+
+Denjin Makai
+------------
+
+- Palette Ram format correct,but color offset wrong? Probably protection related,game updates paletteram with rom data (or bad program rom?)..
+
+- Needs to patch a sound-related comm to make this to work, same as SD Gundam Psycho Salamander No Kyoui (68k never writes to port 6 for whatever reason).
+
+- There are a bunch of unemulated registers, one of them seems to be a brightness control of some sort. Needs a PCB side-by-side test.
+
+- backdrop color is ugly, especially noticeable in the port harbour stage (level 4). It should be dark blue or black but it's currently grey.
+
+- there are some ROM writes from time to time, could be a coding bug or something related to the protection.
+
+Godzilla
+--------
+
+The COP-MCU appears to write to the work ram area,otherwise it resets in mid-animation
+of the title screen.
+
+
+Preliminary COP MCU memory map
+------------------------------
+
+0x400-0x5ff Protection related:
+0x400 Sprite parameter (color)
+0x414-0x412 Sprite DMA source address
+0x478 Layer clearance (?)
+0x48e X limiter (SD Gundam)
+0x48c Y limiter (SD Gundam)
+0x4c0-0x4a0 COP reg 0
+0x4c2-0x4a2 COP reg 1
+0x4c4-0x4a4 COP reg 2
+0x4c6-0x4a6 COP reg 3
+0x580(r) Hit Check (bit 1 & bit 0)
+0x590-0x59c(r)BCD number
+0x5b0 DMA bit flag (bit 1)
+0x600-0x6ff Includes standard screen control words
+0x700-0x7ff Includes standard Seibu sound system
+
+
+***************************************************************************/
+
+#include "emu.h"
+#include "cpu/z80/z80.h"
+#include "audio/seibu.h"
+#include "sound/3812intf.h"
+#include "cpu/m68000/m68000.h"
+#include "machine/seicop.h"
+#include "includes/legionna.h"
+
+/*****************************************************************************/
+
+
+static ADDRESS_MAP_START( legionna_map, AS_PROGRAM, 16, legionna_state )
+ AM_RANGE(0x000000, 0x07ffff) AM_ROM
+ AM_RANGE(0x100000, 0x1003ff) AM_RAM
+ AM_RANGE(0x100400, 0x1007ff) AM_READWRITE_LEGACY(legionna_mcu_r, legionna_mcu_w) AM_BASE_LEGACY(&cop_mcu_ram) /* COP mcu */
+ AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
+ AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
+ AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
+ AM_RANGE(0x102800, 0x1037ff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram") /* palette xRRRRxGGGGxBBBBx ? */
+ AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x106000, 0x107fff) AM_RAM
+ AM_RANGE(0x108000, 0x11ffff) AM_RAM /* main ram */
+ADDRESS_MAP_END
+
+
+static ADDRESS_MAP_START( heatbrl_map, AS_PROGRAM, 16, legionna_state )
+ AM_RANGE(0x000000, 0x07ffff) AM_ROM
+ AM_RANGE(0x100000, 0x1003ff) AM_RAM
+ AM_RANGE(0x100400, 0x1007ff) AM_READWRITE_LEGACY(heatbrl_mcu_r, heatbrl_mcu_w) AM_BASE_LEGACY(&cop_mcu_ram) /* COP mcu */
+ AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
+ AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
+ AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
+ AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
+ AM_RANGE(0x103000, 0x103fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x108000, 0x11ffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( godzilla_map, AS_PROGRAM, 16, legionna_state )
+ AM_RANGE(0x000000, 0x07ffff) AM_ROM
+ AM_RANGE(0x100000, 0x1003ff) AM_RAM
+ AM_RANGE(0x100400, 0x1007ff) AM_READWRITE_LEGACY(godzilla_mcu_r, godzilla_mcu_w) AM_BASE_LEGACY(&cop_mcu_ram) /* COP mcu */
+ AM_RANGE(0x100800, 0x100fff) AM_RAM
+ AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
+ AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
+ AM_RANGE(0x102800, 0x1037ff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
+ AM_RANGE(0x103800, 0x103fff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x106000, 0x1067ff) AM_RAM
+ AM_RANGE(0x106800, 0x106fff) AM_RAM
+ AM_RANGE(0x107000, 0x107fff) AM_RAM /*Ani-DSP ram*/
+ AM_RANGE(0x108000, 0x11ffff) AM_RAM
+ADDRESS_MAP_END
+
+/* did they swap the lines, or does the protection device swap the words during the DMA?? */
+WRITE16_MEMBER(legionna_state::denjin_paletteram16_xBBBBBGGGGGRRRRR_word_w)
+{
+ offset^=1;
+ COMBINE_DATA(&m_generic_paletteram_16[offset]);
+ paletteram_xBBBBBGGGGGRRRRR_word_w(space,offset,data,mem_mask);
+}
+
+static ADDRESS_MAP_START( denjinmk_map, AS_PROGRAM, 16, legionna_state )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM
+ AM_RANGE(0x100000, 0x1003ff) AM_RAM
+ AM_RANGE(0x100400, 0x1007ff) AM_READWRITE_LEGACY(denjinmk_mcu_r, denjinmk_mcu_w) AM_BASE_LEGACY(&cop_mcu_ram) /* COP mcu */
+ AM_RANGE(0x100800, 0x100fff) AM_RAM
+ AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
+ AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
+ AM_RANGE(0x102000, 0x1027ff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
+ AM_RANGE(0x102800, 0x103fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM_WRITE(denjin_paletteram16_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x105000, 0x105fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x106000, 0x107fff) AM_RAM
+ AM_RANGE(0x108000, 0x11dfff) AM_RAM
+ AM_RANGE(0x11e000, 0x11efff) AM_RAM
+ AM_RANGE(0x11f000, 0x11ffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( grainbow_map, AS_PROGRAM, 16, legionna_state )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM
+ AM_RANGE(0x100000, 0x1003ff) AM_RAM
+ AM_RANGE(0x100400, 0x1007ff) AM_READWRITE_LEGACY(grainbow_mcu_r, grainbow_mcu_w) AM_BASE_LEGACY(&cop_mcu_ram) /* COP mcu */
+ AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
+ AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
+ AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
+ AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
+ AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM//_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x105000, 0x105fff) AM_RAM
+ AM_RANGE(0x106000, 0x106fff) AM_RAM
+ AM_RANGE(0x107000, 0x107fff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x108000, 0x11ffff) AM_RAM
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( cupsoc_mem, AS_PROGRAM, 16, legionna_state )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM
+ AM_RANGE(0x100000, 0x1003ff) AM_RAM
+ AM_RANGE(0x100400, 0x1007ff) AM_READWRITE_LEGACY(cupsoc_mcu_r,cupsoc_mcu_w) AM_BASE_LEGACY(&cop_mcu_ram)
+ AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
+ AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
+ AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
+ AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
+ AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM
+ AM_RANGE(0x105000, 0x106fff) AM_RAM
+ AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x107800, 0x107fff) AM_RAM /*Ani Dsp(?) Ram*/
+ AM_RANGE(0x108000, 0x10ffff) AM_RAM
+ AM_RANGE(0x110000, 0x119fff) AM_RAM
+ AM_RANGE(0x11a000, 0x11dfff) AM_RAM
+ AM_RANGE(0x11e000, 0x11ffff) AM_RAM /*Stack Ram*/
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( cupsocs_mem, AS_PROGRAM, 16, legionna_state )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM
+ AM_RANGE(0x100000, 0x1003ff) AM_RAM
+ AM_RANGE(0x100400, 0x1007ff) AM_READWRITE_LEGACY(cupsocs_mcu_r,cupsocs_mcu_w) AM_BASE_LEGACY(&cop_mcu_ram)
+ AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
+ AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
+ AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
+ AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
+ AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM
+ AM_RANGE(0x105000, 0x106fff) AM_RAM
+ AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x107800, 0x107fff) AM_RAM /*Ani Dsp(?) Ram*/
+ AM_RANGE(0x108000, 0x10ffff) AM_RAM
+ AM_RANGE(0x110000, 0x119fff) AM_RAM
+ AM_RANGE(0x11a000, 0x11dfff) AM_RAM
+ AM_RANGE(0x11e000, 0x11ffff) AM_RAM /*Stack Ram*/
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( cupsocbl_mem, AS_PROGRAM, 16, legionna_state )
+ AM_RANGE(0x000000, 0x0fffff) AM_ROM
+ //AM_RANGE(0x100000, 0x1003ff) AM_RAM
+ AM_RANGE(0x100000, 0x1007ff) AM_READWRITE_LEGACY(copdxbl_0_r,copdxbl_0_w) AM_BASE_LEGACY(&cop_mcu_ram)
+ AM_RANGE(0x100800, 0x100fff) AM_RAM_WRITE(legionna_background_w) AM_SHARE("back_data")
+ AM_RANGE(0x101000, 0x1017ff) AM_RAM_WRITE(legionna_foreground_w) AM_SHARE("fore_data")
+ AM_RANGE(0x101800, 0x101fff) AM_RAM_WRITE(legionna_midground_w) AM_SHARE("mid_data")
+ AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(legionna_text_w) AM_SHARE("textram")
+ AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(paletteram_xBBBBBGGGGGRRRRR_word_w) AM_SHARE("paletteram")
+ AM_RANGE(0x104000, 0x104fff) AM_RAM
+ AM_RANGE(0x105000, 0x106fff) AM_RAM
+ AM_RANGE(0x107000, 0x1077ff) AM_RAM AM_SHARE("spriteram")
+ AM_RANGE(0x107800, 0x107fff) AM_RAM /*Ani Dsp(?) Ram*/
+ AM_RANGE(0x108000, 0x10ffff) AM_RAM
+ AM_RANGE(0x110000, 0x119fff) AM_RAM
+ AM_RANGE(0x11a000, 0x11dfff) AM_RAM
+ AM_RANGE(0x11e000, 0x11ffff) AM_RAM /*Stack Ram*/
+ADDRESS_MAP_END
+
+
+static WRITE8_DEVICE_HANDLER( okim_rombank_w )
+{
+// popmessage("%08x",0x40000 * (data & 0x07));
+ downcast<okim6295_device *>(device)->set_bank_base(0x40000 * (data & 0x7));
+}
+
+static ADDRESS_MAP_START( cupsocbl_sound_mem, AS_PROGRAM, 8, legionna_state )
+ AM_RANGE(0x0000, 0x7fff) AM_ROM
+ AM_RANGE(0x8000, 0x87ff) AM_RAM
+ AM_RANGE(0x9000, 0x9000) AM_DEVWRITE_LEGACY("oki", okim_rombank_w)
+ AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
+ AM_RANGE(0xa000, 0xa000) AM_READ(soundlatch_byte_r)
+ADDRESS_MAP_END
+
+/*****************************************************************************/
+
+// All inputs are defined to trigger through test mode for each game (if available).
+// These inputs/dips may or may not coincide with actual in-game usage, however.
+
+static INPUT_PORTS_START( legionna )
+ SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
+
+ PORT_START("SYSTEM")
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("PLAYERS12")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 )
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x001f, 0x001f, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x0015, DEF_STR( 6C_1C ) )
+ PORT_DIPSETTING( 0x0017, DEF_STR( 5C_1C ) )
+ PORT_DIPSETTING( 0x0019, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x001b, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x0003, DEF_STR( 8C_3C ) )
+ PORT_DIPSETTING( 0x001d, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x0005, DEF_STR( 5C_3C ) )
+ PORT_DIPSETTING( 0x0007, DEF_STR( 3C_2C ) )
+ PORT_DIPSETTING( 0x001f, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x0009, DEF_STR( 2C_3C ) )
+ PORT_DIPSETTING( 0x0013, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0011, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x000f, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x000d, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x000b, DEF_STR( 1C_6C ) )
+ PORT_DIPSETTING( 0x001e, "A 1/1 B 1/2" )
+ PORT_DIPSETTING( 0x0014, "A 2/1 B 1/3" )
+ PORT_DIPSETTING( 0x000a, "A 3/1 B 1/5" )
+ PORT_DIPSETTING( 0x0000, "A 5/1 B 1/6" )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0040, 0x0040, "Freeze" )
+ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
+ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x0200, "1" )
+ PORT_DIPSETTING( 0x0300, "2" )
+ PORT_DIPSETTING( 0x0100, "3" )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Infinite ) )
+ PORT_DIPNAME( 0x0400, 0x0400, "Extend" )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x3000, DEF_STR( Medium ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
+ PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Allow_Continue ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
+
+ PORT_START("UNK")
+ PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( heatbrl )
+ SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
+
+ PORT_START("SYSTEM")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_COIN3 )
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_START3 )
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_START4 )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN4 ) // haven't found coin4, maybe it doesn't exist
+ PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("PLAYERS12")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("PLAYERS34")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x001f, 0x001f, DEF_STR( Coinage ) )
+ PORT_DIPSETTING( 0x0015, DEF_STR( 6C_1C ) )
+ PORT_DIPSETTING( 0x0017, DEF_STR( 5C_1C ) )
+ PORT_DIPSETTING( 0x0019, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x001b, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x0003, DEF_STR( 8C_3C ) )
+ PORT_DIPSETTING( 0x001d, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x0005, DEF_STR( 5C_3C ) )
+ PORT_DIPSETTING( 0x0007, DEF_STR( 3C_2C ) )
+ PORT_DIPSETTING( 0x001f, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x0009, DEF_STR( 2C_3C ) )
+ PORT_DIPSETTING( 0x0013, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0011, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x000f, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x000d, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x000b, DEF_STR( 1C_6C ) )
+ PORT_DIPSETTING( 0x001e, "A 1/1 B 1/2" )
+ PORT_DIPSETTING( 0x0014, "A 2/1 B 1/3" )
+ PORT_DIPSETTING( 0x000a, "A 3/1 B 1/5" )
+ PORT_DIPSETTING( 0x0000, "A 5/1 B 1/6" )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Players ) )
+ PORT_DIPSETTING( 0x0020, "2" )
+ PORT_DIPSETTING( 0x0000, "4" )
+ PORT_DIPNAME( 0x0040, 0x0040, "Freeze" )
+ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
+ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x0200, "1" )
+ PORT_DIPSETTING( 0x0100, "2" )
+ PORT_DIPSETTING( 0x0300, "3" )
+ PORT_DIPSETTING( 0x0000, "5" )
+ PORT_DIPNAME( 0x0400, 0x0400, "Extend" )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0400, DEF_STR( On ) )
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x3000, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Very_Hard ) )
+ PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Allow_Continue ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( No ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Yes ) )
+ PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( godzilla )
+ SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
+
+ PORT_START("SYSTEM")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test ))
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("PLAYERS12")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0001, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Flip_Screen ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Service_Mode ) )
+ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0700, 0x0700, DEF_STR( Coin_A ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x0100, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x0200, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x0700, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x0600, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0500, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x0300, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x0400, DEF_STR( 1C_5C ) )
+ PORT_DIPNAME( 0x3800, 0x3800, DEF_STR( Coin_B ) )
+ PORT_DIPSETTING( 0x3800, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x0000, "3 Coins/5 Credits" )
+ PORT_DIPSETTING( 0x1000, DEF_STR( 2C_3C ) )
+ PORT_DIPSETTING( 0x3000, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0800, DEF_STR( 2C_5C ) )
+ PORT_DIPSETTING( 0x2800, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x1800, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( 1C_5C ) )
+ PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Free_Play ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( grainbow )
+ SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
+
+ PORT_START("SYSTEM")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME(DEF_STR( Test ))
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE1 )
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START3 )
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START4 )
+ PORT_BIT( 0xfc00, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("PLAYERS12")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) //debug button
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("PLAYERS34")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) )
+ PORT_DIPSETTING( 0x0002, "2")
+ PORT_DIPSETTING( 0x0003, "3")
+ PORT_DIPSETTING( 0x0000, "5")
+ PORT_DIPSETTING( 0x0001, "4")
+ PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_A ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
+ PORT_DIPSETTING( 0x00a0, DEF_STR( 6C_1C ) )
+ PORT_DIPSETTING( 0x00b0, DEF_STR( 5C_1C ) )
+ PORT_DIPSETTING( 0x00c0, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x00d0, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( 8C_3C ) )
+ PORT_DIPSETTING( 0x00e0, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( 5C_3C ) )
+ PORT_DIPSETTING( 0x0030, DEF_STR( 3C_2C ) )
+ PORT_DIPSETTING( 0x00f0, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x0040, DEF_STR( 2C_3C ) )
+ PORT_DIPSETTING( 0x0090, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0080, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x0070, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x0060, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x0050, DEF_STR( 1C_6C ) )
+ PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Flip_Screen ) )
+ PORT_DIPSETTING( 0x0100, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0200, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0400, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0800, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x4000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Service_Mode ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0040, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
+INPUT_PORTS_END
+
+static INPUT_PORTS_START( denjinmk )
+ PORT_START("COIN") /* coin inputs read through sound cpu, an impulse of 4 frame is too much for this game, especially for coin 2 */
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(2)
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(2)
+
+ PORT_START("SYSTEM")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("PLAYERS12")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("PLAYERS34")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( On ) )
+ PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
+ PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Language ) ) //it actually skips the story entirely, so just remain JP as default
+ PORT_DIPSETTING( 0x0080, DEF_STR( Japanese ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( English ) )
+ PORT_DIPNAME( 0x0f00, 0x0f00, DEF_STR( Coin_A ) )
+ PORT_DIPSETTING( 0x0200, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x0500, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x0800, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x0600, "3 Coins / 5 Credits" )
+ PORT_DIPSETTING( 0x0400, DEF_STR( 3C_2C ) )
+ PORT_DIPSETTING( 0x0100, DEF_STR( 4C_3C ) )
+ PORT_DIPSETTING( 0x0f00, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x0300, DEF_STR( 3C_4C ) )
+ PORT_DIPSETTING( 0x0700, DEF_STR( 2C_3C ) )
+ PORT_DIPSETTING( 0x0e00, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0d00, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x0c00, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x0b00, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0x0a00, DEF_STR( 1C_6C ) )
+ PORT_DIPSETTING( 0x0900, DEF_STR( 1C_7C ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
+ PORT_DIPNAME( 0xf000, 0xf000, DEF_STR( Coin_B ) )
+ PORT_DIPSETTING( 0x2000, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x5000, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x8000, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x6000, "3 Coins / 5 Credits" )
+ PORT_DIPSETTING( 0x4000, DEF_STR( 3C_2C ) )
+ PORT_DIPSETTING( 0x1000, DEF_STR( 4C_3C ) )
+ PORT_DIPSETTING( 0xf000, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x3000, DEF_STR( 3C_4C ) )
+ PORT_DIPSETTING( 0x7000, DEF_STR( 2C_3C ) )
+ PORT_DIPSETTING( 0xe000, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0xd000, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0xc000, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0xb000, DEF_STR( 1C_5C ) )
+ PORT_DIPSETTING( 0xa000, DEF_STR( 1C_6C ) )
+ PORT_DIPSETTING( 0x9000, DEF_STR( 1C_7C ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
+
+ PORT_START("DSW2")
+ PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED ) //unused according to the test mode
+INPUT_PORTS_END
+
+
+static INPUT_PORTS_START( cupsoc )
+ SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
+
+ PORT_START("SYSTEM")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_START1 )
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_START2 )
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) //TEST
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_SERVICE2 )
+ PORT_BIT( 0x00f0, IP_ACTIVE_LOW, IPT_UNUSED )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START3 )
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START4 )
+ PORT_BIT( 0xfc00, IP_ACTIVE_LOW, IPT_UNKNOWN )
+
+ PORT_START("PLAYERS12")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN1 )
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN2 )
+
+ PORT_START("PLAYERS34")
+ PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(3)
+ PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(3)
+ PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(3)
+ PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(3)
+ PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) //TEST
+ PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
+ PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
+ PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
+ PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(4)
+ PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_SERVICE1 )
+
+ PORT_START("DSW1")
+ PORT_DIPNAME( 0x0007, 0x0007, "Coin 1 (3)" )
+ PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x0001, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x0007, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x0006, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0005, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x0004, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x0003, DEF_STR( 1C_6C ) )
+ PORT_DIPNAME( 0x0038, 0x0038, "Coin 2 (4)" )
+ PORT_DIPSETTING( 0x0000, DEF_STR( 4C_1C ) )
+ PORT_DIPSETTING( 0x0008, DEF_STR( 3C_1C ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( 2C_1C ) )
+ PORT_DIPSETTING( 0x0038, DEF_STR( 1C_1C ) )
+ PORT_DIPSETTING( 0x0030, DEF_STR( 1C_2C ) )
+ PORT_DIPSETTING( 0x0028, DEF_STR( 1C_3C ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( 1C_4C ) )
+ PORT_DIPSETTING( 0x0018, DEF_STR( 1C_6C ) )
+ PORT_DIPNAME( 0x0040, 0x0040, "Staring Coin" )
+ PORT_DIPSETTING( 0x0040, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x0000, "x2" )
+ PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) )
+ PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0300, 0x0300, "Time vs Computer" )
+ PORT_DIPSETTING( 0x0200, "1:30" )
+ PORT_DIPSETTING( 0x0300, "2:00" )
+ PORT_DIPSETTING( 0x0100, "2:30" )
+ PORT_DIPSETTING( 0x0000, "3:00" )
+ PORT_DIPNAME( 0x0c00, 0x0c00, "Time vs Player, 2 Players" )
+ PORT_DIPSETTING( 0x0800, "2:00" )
+ PORT_DIPSETTING( 0x0c00, "2:30" )
+ PORT_DIPSETTING( 0x0400, "3:00" )
+ PORT_DIPNAME( 0x3000, 0x3000, "Time vs Player, 3 Players" )
+ PORT_DIPSETTING( 0x2000, "2:30" )
+ PORT_DIPSETTING( 0x3000, "3:00" )
+ PORT_DIPSETTING( 0x1000, "3:30" )
+ PORT_DIPNAME( 0xc000, 0xc000, "Time vs Player, 4 Players" )
+ PORT_DIPSETTING( 0x8000, "3:00" )
+ PORT_DIPSETTING( 0xc000, "3:30" )
+ PORT_DIPSETTING( 0x4000, "4:00" )
+
+ PORT_START("DSW2")
+ PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Difficulty ) )
+ PORT_DIPSETTING( 0x0003, DEF_STR( Normal ) )
+ PORT_DIPSETTING( 0x0002, DEF_STR( Easy ) )
+ PORT_DIPSETTING( 0x0001, DEF_STR( Hard ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
+ PORT_DIPNAME( 0x000c, 0x0000, "Players / Coin Mode" )
+ PORT_DIPSETTING( 0x0000, "4 Players / 1 Coin Slot" )
+ PORT_DIPSETTING( 0x0004, "4 Players / 4 Coin Slots" )
+ PORT_DIPSETTING( 0x0008, "4 Players / 2 Coin Slots" )
+ PORT_DIPSETTING( 0x000c, "2 Players" )
+ PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0010, DEF_STR( On ) )
+ PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Service_Mode ) )
+ PORT_DIPSETTING( 0x0020, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+ PORT_DIPNAME( 0xffc0, 0xffc0, DEF_STR( Unused ) )
+ PORT_DIPSETTING( 0xffc0, DEF_STR( Off ) )
+ PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
+INPUT_PORTS_END
+
+/*****************************************************************************/
+
+static const gfx_layout legionna_new_charlayout =
+{
+ 8,8,
+ RGN_FRAC(1,1),
+ 4,
+ { 0, 4, 8, 12 },
+ { 3, 2, 1, 0, 16+3, 16+2, 16+1, 16+0 },
+ { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
+ 32*8
+};
+
+
+static void descramble_legionnaire_gfx(running_machine &machine, UINT8* src)
+{
+ UINT8 *buffer;
+ int len = 0x10000;
+
+ /* rearrange gfx */
+ buffer = auto_alloc_array(machine, UINT8, len);
+ {
+ int i;
+ for (i = 0;i < len; i++)
+ {
+ buffer[i] = src[BITSWAP24(i,
+ 23,22,21,20,
+ 19,18,17,16,
+ 6,5,15,14,13,12,
+ 11,10,9,8,
+ 7,4,
+ 3,2,1,0)];
+ }
+ memcpy(src,buffer,len);
+ auto_free(machine, buffer);
+ }
+
+}
+
+
+static const gfx_layout legionna_tilelayout =
+{
+ 16,16,
+ RGN_FRAC(1,1),
+ 4,
+ { 2*4, 3*4, 0*4, 1*4 },
+ { 3, 2, 1, 0, 16+3, 16+2, 16+1, 16+0,
+ 64*8+3, 64*8+2, 64*8+1, 64*8+0, 64*8+16+3, 64*8+16+2, 64*8+16+1, 64*8+16+0 },
+ { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
+ 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
+ 128*8
+};
+
+static const gfx_layout legionna_tilelayout2 =
+{
+ 16,16,
+ RGN_FRAC(1,1),
+ 4,
+ { 0*4, 1*4, 2*4, 3*4 },
+ { 3, 2, 1, 0, 16+3, 16+2, 16+1, 16+0,
+ 64*8+3, 64*8+2, 64*8+1, 64*8+0, 64*8+16+3, 64*8+16+2, 64*8+16+1, 64*8+16+0 },
+ { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
+ 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
+ 128*8
+};
+
+static const gfx_layout legionna_spritelayout =
+{
+ 16,16,
+ RGN_FRAC(1,1),
+ 4,
+ { 2*4, 3*4, 0*4, 1*4 },
+ { 3, 2, 1, 0, 16+3, 16+2, 16+1, 16+0,
+ 64*8+3, 64*8+2, 64*8+1, 64*8+0, 64*8+16+3, 64*8+16+2, 64*8+16+1, 64*8+16+0 },
+ { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
+ 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
+ 128*8
+};
+
+static GFXDECODE_START( legionna )
+ GFXDECODE_ENTRY( "gfx1", 0, legionna_new_charlayout, 48*16, 16 )
+ GFXDECODE_ENTRY( "gfx3", 0, legionna_tilelayout, 0*16, 16 )
+ GFXDECODE_ENTRY( "gfx4", 0, legionna_tilelayout, 32*16, 16 )
+ GFXDECODE_ENTRY( "gfx2", 0, legionna_spritelayout, 0*16, 8*16 )
+ GFXDECODE_ENTRY( "gfx5", 0, legionna_tilelayout2, 32*16, 16 )
+ GFXDECODE_ENTRY( "gfx6", 0, legionna_tilelayout, 16*16, 16 )
+GFXDECODE_END
+
+static GFXDECODE_START( heatbrl )
+ GFXDECODE_ENTRY( "gfx1", 0, legionna_new_charlayout, 48*16, 16 )
+ GFXDECODE_ENTRY( "gfx3", 0, legionna_tilelayout, 0*16, 16 )
+ GFXDECODE_ENTRY( "gfx4", 0, legionna_tilelayout, 32*16, 16 ) /* unused */
+ GFXDECODE_ENTRY( "gfx2", 0, legionna_spritelayout, 0*16, 8*16 )
+ GFXDECODE_ENTRY( "gfx5", 0, legionna_tilelayout, 32*16, 16 )
+ GFXDECODE_ENTRY( "gfx6", 0, legionna_tilelayout, 16*16, 16 )
+GFXDECODE_END
+
+static GFXDECODE_START( cupsoc )
+ GFXDECODE_ENTRY( "gfx1", 0, legionna_new_charlayout, 48*16, 16 )
+ GFXDECODE_ENTRY( "gfx3", 0, legionna_tilelayout, 0, 32 )
+ GFXDECODE_ENTRY( "gfx4", 0, legionna_tilelayout, 32*16, 16 ) /* unused */
+ GFXDECODE_ENTRY( "gfx2", 0, legionna_spritelayout, 0*16, 8*16 )
+ GFXDECODE_ENTRY( "gfx5", 0, legionna_tilelayout, 32*16, 16 )
+ GFXDECODE_ENTRY( "gfx6", 0, legionna_tilelayout, 16*16, 16 )
+GFXDECODE_END
+
+
+static const gfx_layout cupsocsb_spritelayout =
+{
+ 16,16,
+ RGN_FRAC(1,1),
+ 4,
+ { 0,1,2,3 },
+ { 4,0,12,8,20,16,28,24, 512+4, 512+0, 512+12, 512+8, 512+20, 512+16, 512+28, 512+24 },
+ { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
+ 32*32
+};
+
+static const gfx_layout cupsocsb_8x8_tilelayout =
+{
+ 8,8,
+ RGN_FRAC(1,1),
+ 4,
+ { 8,12,0,4 },
+ { 0,3,2,1,16,19,18,17 },
+ { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
+ 8*32
+};
+
+
+static const gfx_layout cupsocsb_tilelayout =
+{
+ 16,16,
+ RGN_FRAC(1,1),
+ 4,
+ { 8,12,0,4 },
+ { 0,3,2,1,16,19,18,17, 512+0,512+3,512+2,512+1,512+16,512+19,512+18,512+17 },
+ { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 },
+ 32*32
+};
+
+
+static GFXDECODE_START( heatbrl_csb )
+ GFXDECODE_ENTRY( "gfx1", 0, cupsocsb_8x8_tilelayout, 48*16, 16 )
+ GFXDECODE_ENTRY( "gfx3", 0, cupsocsb_tilelayout, 0*16, 16 )
+ GFXDECODE_ENTRY( "gfx4", 0, cupsocsb_tilelayout, 32*16, 16 ) /* unused */
+ GFXDECODE_ENTRY( "gfx2", 0, cupsocsb_spritelayout, 0*16, 8*16 )
+ GFXDECODE_ENTRY( "gfx5", 0, cupsocsb_tilelayout, 32*16, 16 )
+ GFXDECODE_ENTRY( "gfx6", 0, cupsocsb_tilelayout, 16*16, 16 )
+GFXDECODE_END
+
+
+static GFXDECODE_START( grainbow )
+ GFXDECODE_ENTRY( "gfx1", 0, legionna_new_charlayout, 48*16, 16 )
+ GFXDECODE_ENTRY( "gfx3", 0, legionna_tilelayout, 0*16, 16 )
+ GFXDECODE_ENTRY( "gfx4", 0, legionna_tilelayout, 32*16, 16 ) /* unused */
+ GFXDECODE_ENTRY( "gfx2", 0, legionna_spritelayout, 0*16, 8*16 )
+ GFXDECODE_ENTRY( "gfx5", 0, legionna_tilelayout, 32*16, 16 )
+ GFXDECODE_ENTRY( "gfx6", 0, legionna_tilelayout, 16*16, 16 )
+GFXDECODE_END
+
+/*****************************************************************************/
+
+static MACHINE_CONFIG_START( legionna, legionna_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000,20000000/2) /* ??? */
+ MCFG_CPU_PROGRAM_MAP(legionna_map)
+ MCFG_CPU_VBLANK_INT("screen", irq4_line_hold)/* VBL */
+
+ SEIBU_SOUND_SYSTEM_CPU(14318180/4)
+
+ MCFG_MACHINE_RESET(seibu_sound)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_STATIC(legionna)
+
+ MCFG_GFXDECODE(legionna)
+ MCFG_PALETTE_LENGTH(128*16)
+ MCFG_PALETTE_INIT(all_black)
+
+ MCFG_VIDEO_START(legionna)
+
+ /* sound hardware */
+ SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(14318180/4,1320000)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( heatbrl, legionna_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000,20000000/2) /* ??? */
+ MCFG_CPU_PROGRAM_MAP(heatbrl_map)
+ MCFG_CPU_VBLANK_INT("screen", irq4_line_hold)/* VBL */
+
+ SEIBU_SOUND_SYSTEM_CPU(14318180/4)
+
+ MCFG_MACHINE_RESET(seibu_sound)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(32*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_STATIC(legionna)
+
+ MCFG_GFXDECODE(heatbrl)
+ MCFG_PALETTE_LENGTH(128*16)
+ MCFG_PALETTE_INIT(all_black)
+
+ MCFG_VIDEO_START(legionna)
+
+ /* sound hardware */
+ SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(14318180/4,1320000)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( godzilla, legionna_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 20000000/2)
+ MCFG_CPU_PROGRAM_MAP(godzilla_map)
+ MCFG_CPU_VBLANK_INT("screen", irq4_line_hold)
+
+ SEIBU2_SOUND_SYSTEM_CPU(14318180/4)
+
+ MCFG_MACHINE_RESET(seibu_sound)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(61)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 28*8-1)
+ MCFG_SCREEN_UPDATE_STATIC(godzilla)
+
+ MCFG_GFXDECODE(heatbrl)
+ MCFG_PALETTE_LENGTH(128*16)
+ MCFG_PALETTE_INIT(all_black)
+
+ MCFG_VIDEO_START(godzilla)
+
+ /* sound hardware */
+ SEIBU_SOUND_SYSTEM_YM2151_INTERFACE(14318180/4,1320000)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( denjinmk, legionna_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 20000000/2)
+ MCFG_CPU_PROGRAM_MAP(denjinmk_map)
+ MCFG_CPU_VBLANK_INT("screen", irq4_line_hold)
+
+ SEIBU2_SOUND_SYSTEM_CPU(14318180/4)
+
+ MCFG_MACHINE_RESET(seibu_sound)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_REFRESH_RATE(61)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_STATIC(godzilla)
+
+ MCFG_GFXDECODE(heatbrl)
+ MCFG_PALETTE_LENGTH(128*16)
+ MCFG_PALETTE_INIT(all_black)
+
+ MCFG_VIDEO_START(denjinmk)
+
+ /* sound hardware */
+ SEIBU_SOUND_SYSTEM_YM2151_INTERFACE(14318180/4,1320000)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( grainbow, legionna_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000, 20000000/2)
+ MCFG_CPU_PROGRAM_MAP(grainbow_map)
+ MCFG_CPU_VBLANK_INT("screen", irq4_line_hold)
+
+ SEIBU2_SOUND_SYSTEM_CPU(14318180/4)
+
+ MCFG_MACHINE_RESET(seibu_sound)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(64*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(2*8, 42*8-1, 2*8, 30*8-1)
+ MCFG_SCREEN_UPDATE_STATIC(grainbow)
+
+ MCFG_GFXDECODE(grainbow)
+ MCFG_PALETTE_LENGTH(128*16)
+ MCFG_PALETTE_INIT(all_black)
+
+ MCFG_VIDEO_START(grainbow)
+
+ /* sound hardware */
+ SEIBU_SOUND_SYSTEM_YM2151_INTERFACE(14318180/4,1320000)
+MACHINE_CONFIG_END
+
+
+static MACHINE_CONFIG_START( cupsoc, legionna_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000,20000000/2)
+ MCFG_CPU_PROGRAM_MAP(cupsoc_mem)
+ MCFG_CPU_VBLANK_INT("screen", irq4_line_hold)/* VBL */
+
+ SEIBU_SOUND_SYSTEM_CPU(14318180/4)
+
+ MCFG_MACHINE_RESET(seibu_sound)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_STATIC(grainbow)
+
+ MCFG_GFXDECODE(cupsoc)
+ MCFG_PALETTE_LENGTH(128*16)
+ MCFG_PALETTE_INIT(all_black)
+
+ MCFG_VIDEO_START(cupsoc)
+
+ /* sound hardware */
+ SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(14318180/4,1320000)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_DERIVED( cupsocs, cupsoc )
+ MCFG_CPU_MODIFY("maincpu")
+ MCFG_CPU_PROGRAM_MAP(cupsocs_mem)
+MACHINE_CONFIG_END
+
+static MACHINE_CONFIG_START( cupsocbl, legionna_state )
+
+ /* basic machine hardware */
+ MCFG_CPU_ADD("maincpu", M68000,12000000)
+ MCFG_CPU_PROGRAM_MAP(cupsocbl_mem)
+ MCFG_CPU_VBLANK_INT("screen", irq4_line_hold) /* VBL */
+
+ /*Different Sound hardware*/
+ //SEIBU_SOUND_SYSTEM_CPU(14318180/4)
+ MCFG_CPU_ADD("audiocpu", Z80,14318180/4)
+ MCFG_CPU_PROGRAM_MAP(cupsocbl_sound_mem)
+ //MCFG_PERIODIC_INT("screen", nmi_line_pulse)
+
+ //MCFG_MACHINE_INIT(seibu_sound)
+
+ /* video hardware */
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_REFRESH_RATE(60)
+ MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
+ MCFG_SCREEN_SIZE(40*8, 32*8)
+ MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 0*8, 32*8-1)
+ MCFG_SCREEN_UPDATE_STATIC(grainbow)
+
+ MCFG_GFXDECODE(heatbrl_csb)
+ MCFG_PALETTE_LENGTH(128*16)
+ MCFG_PALETTE_INIT(all_black)
+
+ MCFG_VIDEO_START(cupsoc)
+
+ /* sound hardware */
+ MCFG_SPEAKER_STANDARD_MONO("mono")
+
+ MCFG_OKIM6295_ADD("oki", 1000000, OKIM6295_PIN7_HIGH)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+MACHINE_CONFIG_END
+
+/***************************************************************************
+
+ Game driver(s)
+
+***************************************************************************/
+
+ROM_START( legionna )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "1", 0x00000, 0x20000, CRC(9e2d3ec8) SHA1(8af9ca349389cbbd2b541aafa09de57f87f6fd72) )
+ ROM_LOAD32_BYTE( "2", 0x00001, 0x20000, CRC(35c8a28f) SHA1(31a1f2f9e04dfcab4b3357d6d27c24b434a8c14b) )
+ ROM_LOAD32_BYTE( "3", 0x00002, 0x20000, CRC(553fc7c0) SHA1(b12a2eea6b2c9bd76c0c74ddf2765d58510f586a) )
+ ROM_LOAD32_BYTE( "legion4.bin", 0x00003, 0x20000, CRC(2cc36c98) SHA1(484fc6eeeed89386ec69df0f92919b742cfdd89f) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "6", 0x00000, 0x08000, CRC(fe7b8d06) SHA1(1e5b52ea4b4042940e2ee2db75c7c0f24973422a) )
+ ROM_CONTINUE( 0x10000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "user1", 0 ) /* load the tiles here so we can split them up into the required regions by hand */
+ ROM_LOAD16_BYTE( "7", 0x000000, 0x10000, CRC(88e26809) SHA1(40ee55d3b5329b6f657e0621d93c4caf6a035fdf) )
+ ROM_LOAD16_BYTE( "8", 0x000001, 0x10000, CRC(06e35407) SHA1(affeeb97b7f3cfa9b65a584ebe25c16a5b2c9a89) )
+
+ ROM_REGION( 0x010000, "gfx1", 0 ) /* FG Tiles */
+ ROM_COPY( "user1", 0x010000, 0x000000, 0x010000 )
+
+ ROM_REGION( 0x010000, "gfx5", 0 ) /* BK3 */
+ ROM_COPY( "user1", 0x000000, 0x000000, 0x010000 ) /* decrambled in INIT */
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj1", 0x000000, 0x100000, CRC(d35602f5) SHA1(79379abf1c8131df47f81f42b2dc6876926a4e9d) ) /* sprites */
+ ROM_LOAD( "obj2", 0x100000, 0x100000, CRC(351d3917) SHA1(014562ac55c09227c08275df3129df19d81af164) )
+
+ ROM_REGION( 0x100000, "user2", 0 ) /* load the tiles here so we can split them up into the required regions by hand */
+ ROM_LOAD( "back", 0x000000, 0x100000, CRC(58280989) SHA1(e3eef1f52829a91b8f87cfe27776a1f12679b3ca) ) /* 3 sets of tiles ('MBK','LBK','BK3') */
+
+ ROM_REGION( 0x80000, "gfx3", 0 ) /* MBK */
+ ROM_COPY( "user2", 0x000000, 0x000000, 0x80000 )
+
+ ROM_REGION( 0x100000, "gfx4", ROMREGION_ERASEFF )
+ /* Not Used */
+
+ ROM_REGION( 0x80000, "gfx6", 0 ) /* LBK */
+ ROM_COPY( "user2", 0x080000, 0x000000, 0x78000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "5", 0x00000, 0x20000, CRC(21d09bde) SHA1(8dce5011e083706ac7b57c5aee4b79d30fa8d4cb) )
+ROM_END
+
+ROM_START( legionnau )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "1", 0x00000, 0x20000, CRC(9e2d3ec8) SHA1(8af9ca349389cbbd2b541aafa09de57f87f6fd72) )
+ ROM_LOAD32_BYTE( "2", 0x00001, 0x20000, CRC(35c8a28f) SHA1(31a1f2f9e04dfcab4b3357d6d27c24b434a8c14b) )
+ ROM_LOAD32_BYTE( "3", 0x00002, 0x20000, CRC(553fc7c0) SHA1(b12a2eea6b2c9bd76c0c74ddf2765d58510f586a) )
+ ROM_LOAD32_BYTE( "4", 0x00003, 0x20000, CRC(91fd4648) SHA1(8ad6d0512996b88d3c0c7a96912eebaae2333424) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "6", 0x00000, 0x08000, CRC(fe7b8d06) SHA1(1e5b52ea4b4042940e2ee2db75c7c0f24973422a) )
+ ROM_CONTINUE( 0x10000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "user1", 0 ) /* load the tiles here so we can split them up into the required regions by hand */
+ ROM_LOAD16_BYTE( "7", 0x000000, 0x10000, CRC(88e26809) SHA1(40ee55d3b5329b6f657e0621d93c4caf6a035fdf) ) /* chars, some BK3 tiles too */
+ ROM_LOAD16_BYTE( "8", 0x000001, 0x10000, CRC(06e35407) SHA1(affeeb97b7f3cfa9b65a584ebe25c16a5b2c9a89) )
+
+ ROM_REGION( 0x010000, "gfx1", 0 ) /* FG Tiles */
+ ROM_COPY( "user1", 0x010000, 0x000000, 0x010000 )
+
+ ROM_REGION( 0x010000, "gfx5", 0 ) /* BK3 */
+ ROM_COPY( "user1", 0x000000, 0x000000, 0x010000 ) /* decrambled in INIT */
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj1", 0x000000, 0x100000, CRC(d35602f5) SHA1(79379abf1c8131df47f81f42b2dc6876926a4e9d) ) /* sprites */
+ ROM_LOAD( "obj2", 0x100000, 0x100000, CRC(351d3917) SHA1(014562ac55c09227c08275df3129df19d81af164) )
+
+ ROM_REGION( 0x100000, "user2", 0 ) /* load the tiles here so we can split them up into the required regions by hand */
+ ROM_LOAD( "back", 0x000000, 0x100000, CRC(58280989) SHA1(e3eef1f52829a91b8f87cfe27776a1f12679b3ca) ) /* 3 sets of tiles ('MBK','LBK','BK3') */
+
+ ROM_REGION( 0x80000, "gfx3", 0 ) /* MBK */
+ ROM_COPY( "user2", 0x000000, 0x000000, 0x80000 )
+
+ ROM_REGION( 0x100000, "gfx4", ROMREGION_ERASEFF )
+ /* Not Used */
+
+ ROM_REGION( 0x80000, "gfx6", 0 ) /* LBK */
+ ROM_COPY( "user2", 0x080000, 0x000000, 0x78000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "5", 0x00000, 0x20000, CRC(21d09bde) SHA1(8dce5011e083706ac7b57c5aee4b79d30fa8d4cb) )
+ROM_END
+
+ROM_START( heatbrl )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "1e_ver3.9k", 0x00000, 0x20000, CRC(6b41fbac) SHA1(aa987386be40439450bc02f97e57dc833b32fa63) )
+ ROM_LOAD32_BYTE( "2e_ver3.9m", 0x00001, 0x20000, CRC(dd21969b) SHA1(735e6984ac7b83c10bf4a90608fa3548db62cabc) )
+ ROM_LOAD32_BYTE( "3e_ver3.9f", 0x00002, 0x20000, CRC(09544a91) SHA1(5c24fbf642dd4c40ee21664bdc7b837e8a15b8bb) )
+ ROM_LOAD32_BYTE( "4e_ver3.9h", 0x00003, 0x20000, CRC(ebd34559) SHA1(9d565eb144b9239769a272990c1d1e22e72e3f0c) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "barrel.7", 0x00000, 0x08000, CRC(0784dbd8) SHA1(bdf7f8a3a3eb346eb2aeaf4f9bfc49af059d04c9) )
+ ROM_CONTINUE( 0x10000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "barrel.6", 0x000000, 0x10000, CRC(bea3c581) SHA1(7f7f0a74bf106acaf57c182d47f0c707da2011bd) ) /* chars */
+ ROM_LOAD16_BYTE( "barrel.5", 0x000001, 0x10000, CRC(5604d155) SHA1(afc30347b1e1316ec25056c0c1576f78be5f1a72) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj1", 0x000000, 0x100000, CRC(f7a7c31c) SHA1(683e5c7a0732ff5fd56167dd82035ca050de0507) ) /* sprites */
+ ROM_LOAD( "obj2", 0x100000, 0x100000, CRC(24236116) SHA1(b27bd771cacd1587d4927e3f489c4f54b5dec110) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "bg-1", 0x000000, 0x100000, CRC(2f5d8baa) SHA1(0bf687c46c603150eadb304adcd78d53a338e615) )
+
+ ROM_REGION( 0x020000, "gfx4", 0 ) /* not used? */
+ ROM_COPY( "gfx1", 0x010000, 0x000000, 0x010000 ) // this is just corrupt tiles if we decode it
+
+ ROM_REGION( 0x080000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "bg-3", 0x000000, 0x080000, CRC(83850e2d) SHA1(cdc2df8e3bc58319c50768ea2a05b9c7ddc2a652) )
+
+ ROM_REGION( 0x080000, "gfx6", 0 ) /* LBK tiles */
+ ROM_LOAD( "bg-2", 0x000000, 0x080000, CRC(77ee4c6f) SHA1(a0072331bc970ba448ac5bb1ae5caa0332c82a99) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "barrel.8", 0x00000, 0x20000, CRC(489e5b1d) SHA1(ecd69d87ed354d1d08dbe6c2890af5f05d9d67d0) )
+ROM_END
+
+ROM_START( heatbrl2 )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "1e_ver2.9k", 0x00000, 0x20000, CRC(b30bd632) SHA1(8684dd4787929886b0bce283301e492206ade9d9) )
+ ROM_LOAD32_BYTE( "2e_ver2.9m", 0x00001, 0x20000, CRC(f3a23056) SHA1(d8840468535ac59fede60ea5a2928410d9c7a33a) )
+ ROM_LOAD32_BYTE( "3e_ver2.9f", 0x00002, 0x20000, CRC(a2c41715) SHA1(a15b7a35ae0792ed00c47426d2e07c445acd8b8d) )
+ ROM_LOAD32_BYTE( "4e_ver2.9h", 0x00003, 0x20000, CRC(a50f4f08) SHA1(f468e4a016a53803b8404bacdef5712311c6f0ac) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "barrel.7", 0x00000, 0x08000, CRC(0784dbd8) SHA1(bdf7f8a3a3eb346eb2aeaf4f9bfc49af059d04c9) )
+ ROM_CONTINUE( 0x10000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "barrel.6", 0x000000, 0x10000, CRC(bea3c581) SHA1(7f7f0a74bf106acaf57c182d47f0c707da2011bd) ) /* chars */
+ ROM_LOAD16_BYTE( "barrel.5", 0x000001, 0x10000, CRC(5604d155) SHA1(afc30347b1e1316ec25056c0c1576f78be5f1a72) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj1", 0x000000, 0x100000, CRC(f7a7c31c) SHA1(683e5c7a0732ff5fd56167dd82035ca050de0507) ) /* sprites */
+ ROM_LOAD( "obj2", 0x100000, 0x100000, CRC(24236116) SHA1(b27bd771cacd1587d4927e3f489c4f54b5dec110) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "bg-1", 0x000000, 0x100000, CRC(2f5d8baa) SHA1(0bf687c46c603150eadb304adcd78d53a338e615) )
+
+ ROM_REGION( 0x020000, "gfx4", 0 ) /* not used? */
+ ROM_COPY( "gfx1", 0x010000, 0x000000, 0x010000 ) // this is just corrupt tiles if we decode it
+
+ ROM_REGION( 0x080000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "bg-3", 0x000000, 0x080000, CRC(83850e2d) SHA1(cdc2df8e3bc58319c50768ea2a05b9c7ddc2a652) )
+
+ ROM_REGION( 0x080000, "gfx6", 0 ) /* LBK tiles */
+ ROM_LOAD( "bg-2", 0x000000, 0x080000, CRC(77ee4c6f) SHA1(a0072331bc970ba448ac5bb1ae5caa0332c82a99) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "barrel.8", 0x00000, 0x20000, CRC(489e5b1d) SHA1(ecd69d87ed354d1d08dbe6c2890af5f05d9d67d0) )
+ROM_END
+
+ROM_START( heatbrlo )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "barrel.1h", 0x00000, 0x20000, CRC(d5a85c36) SHA1(421a42863faa940057ed5637748f791152a15502) )
+ ROM_LOAD32_BYTE( "barrel.2h", 0x00001, 0x20000, CRC(5104d463) SHA1(f65ee824508da431567661804f6235b61425b2dd) )
+ ROM_LOAD32_BYTE( "barrel.3h", 0x00002, 0x20000, CRC(823373a0) SHA1(1bb7f811df4f85db8ca10e59fe22137a09470def) )
+ ROM_LOAD32_BYTE( "barrel.4h", 0x00003, 0x20000, CRC(19a8606b) SHA1(6e950212c532e46bb6645c3c1f8205c2a4ea2c87) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "barrel.7", 0x00000, 0x08000, CRC(0784dbd8) SHA1(bdf7f8a3a3eb346eb2aeaf4f9bfc49af059d04c9) )
+ ROM_CONTINUE( 0x10000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "barrel.6", 0x000000, 0x10000, CRC(bea3c581) SHA1(7f7f0a74bf106acaf57c182d47f0c707da2011bd) ) /* chars */
+ ROM_LOAD16_BYTE( "barrel.5", 0x000001, 0x10000, CRC(5604d155) SHA1(afc30347b1e1316ec25056c0c1576f78be5f1a72) )
+
+/* Sprite + tilemap gfx roms not dumped, for now we use ones from heatbrlu
+Readme mentions as undumped:
+barrel1,2,3,4.OBJ
+barrel1,2,3,4.BG */
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj1", 0x000000, 0x100000, CRC(f7a7c31c) SHA1(683e5c7a0732ff5fd56167dd82035ca050de0507) ) /* sprites */
+ ROM_LOAD( "obj2", 0x100000, 0x100000, CRC(24236116) SHA1(b27bd771cacd1587d4927e3f489c4f54b5dec110) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "bg-1", 0x000000, 0x100000, CRC(2f5d8baa) SHA1(0bf687c46c603150eadb304adcd78d53a338e615) )
+
+ ROM_REGION( 0x020000, "gfx4", ROMREGION_ERASEFF ) /* not used */
+
+ ROM_REGION( 0x080000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "bg-3", 0x000000, 0x080000, CRC(83850e2d) SHA1(cdc2df8e3bc58319c50768ea2a05b9c7ddc2a652) )
+
+ ROM_REGION( 0x080000, "gfx6", 0 ) /* LBK tiles */
+ ROM_LOAD( "bg-2", 0x000000, 0x080000, CRC(77ee4c6f) SHA1(a0072331bc970ba448ac5bb1ae5caa0332c82a99) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "barrel.8", 0x00000, 0x20000, CRC(489e5b1d) SHA1(ecd69d87ed354d1d08dbe6c2890af5f05d9d67d0) )
+ROM_END
+
+ROM_START( heatbrlu )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "1e_ver2.9k", 0x00000, 0x20000, CRC(b30bd632) SHA1(8684dd4787929886b0bce283301e492206ade9d9) )
+ ROM_LOAD32_BYTE( "2u", 0x00001, 0x20000, CRC(289dd629) SHA1(fb379e067ffee4e54d55da638e45e22d6b2ef788) )
+ ROM_LOAD32_BYTE( "3e_ver2.9f", 0x00002, 0x20000, CRC(a2c41715) SHA1(a15b7a35ae0792ed00c47426d2e07c445acd8b8d) )
+ ROM_LOAD32_BYTE( "4e_ver2.9h", 0x00003, 0x20000, CRC(a50f4f08) SHA1(f468e4a016a53803b8404bacdef5712311c6f0ac) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "barrel.7", 0x00000, 0x08000, CRC(0784dbd8) SHA1(bdf7f8a3a3eb346eb2aeaf4f9bfc49af059d04c9) )
+ ROM_CONTINUE( 0x10000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "barrel.6", 0x000000, 0x10000, CRC(bea3c581) SHA1(7f7f0a74bf106acaf57c182d47f0c707da2011bd) ) /* chars */
+ ROM_LOAD16_BYTE( "barrel.5", 0x000001, 0x10000, CRC(5604d155) SHA1(afc30347b1e1316ec25056c0c1576f78be5f1a72) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj1", 0x000000, 0x100000, CRC(f7a7c31c) SHA1(683e5c7a0732ff5fd56167dd82035ca050de0507) ) /* sprites */
+ ROM_LOAD( "obj2", 0x100000, 0x100000, CRC(24236116) SHA1(b27bd771cacd1587d4927e3f489c4f54b5dec110) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "bg-1", 0x000000, 0x100000, CRC(2f5d8baa) SHA1(0bf687c46c603150eadb304adcd78d53a338e615) )
+
+ ROM_REGION( 0x020000, "gfx4", ROMREGION_ERASEFF ) /* not used */
+
+ ROM_REGION( 0x080000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "bg-3", 0x000000, 0x080000, CRC(83850e2d) SHA1(cdc2df8e3bc58319c50768ea2a05b9c7ddc2a652) )
+
+ ROM_REGION( 0x080000, "gfx6", 0 ) /* LBK tiles */
+ ROM_LOAD( "bg-2", 0x000000, 0x080000, CRC(77ee4c6f) SHA1(a0072331bc970ba448ac5bb1ae5caa0332c82a99) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "barrel.8", 0x00000, 0x20000, CRC(489e5b1d) SHA1(ecd69d87ed354d1d08dbe6c2890af5f05d9d67d0) )
+ROM_END
+
+ROM_START( heatbrle )
+ ROM_REGION( 0x80000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "2.u025", 0x00000, 0x20000, CRC(b34dc60c) SHA1(f9d1438469bf0d36d53d3f148bdf7f04dee5eae0) )
+ ROM_IGNORE( 0x20000 ) // 1xxxxxxxxxxxxxxxxx = 0xFF
+ ROM_LOAD32_BYTE( "1.u024", 0x00001, 0x20000, CRC(16a3754f) SHA1(3e070f2d004fc17d8ae9171955dc48ec5d14cf8a) )
+ ROM_IGNORE( 0x20000 ) // 1xxxxxxxxxxxxxxxxx = 0xFF
+ ROM_LOAD32_BYTE( "4.u026", 0x00002, 0x20000, CRC(fae85c88) SHA1(1b0316e66d4e0c5b3aa4045d6bfcc8a5464dc74e) )
+ ROM_IGNORE( 0x20000 ) // 1xxxxxxxxxxxxxxxxx = 0xFF
+ ROM_LOAD32_BYTE( "3.u023", 0x00003, 0x20000, CRC(3b035081) SHA1(b7ecbacd85102eda21dd162427a0e57cc6d24661) )
+ ROM_IGNORE( 0x20000 ) // 1xxxxxxxxxxxxxxxxx = 0xFF
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "barrel.7", 0x00000, 0x08000, CRC(0784dbd8) SHA1(bdf7f8a3a3eb346eb2aeaf4f9bfc49af059d04c9) )
+ ROM_CONTINUE( 0x10000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "barrel.6", 0x000000, 0x10000, CRC(bea3c581) SHA1(7f7f0a74bf106acaf57c182d47f0c707da2011bd) ) /* chars */
+ ROM_LOAD16_BYTE( "barrel.5", 0x000001, 0x10000, CRC(5604d155) SHA1(afc30347b1e1316ec25056c0c1576f78be5f1a72) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj1", 0x000000, 0x100000, CRC(f7a7c31c) SHA1(683e5c7a0732ff5fd56167dd82035ca050de0507) ) /* sprites */
+ ROM_LOAD( "obj2", 0x100000, 0x100000, CRC(24236116) SHA1(b27bd771cacd1587d4927e3f489c4f54b5dec110) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "bg-1", 0x000000, 0x100000, CRC(2f5d8baa) SHA1(0bf687c46c603150eadb304adcd78d53a338e615) )
+
+ ROM_REGION( 0x020000, "gfx4", 0 ) /* not used? */
+ ROM_COPY( "gfx1", 0x010000, 0x000000, 0x010000 ) // this is just corrupt tiles if we decode it
+
+ ROM_REGION( 0x080000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "bg-3", 0x000000, 0x080000, CRC(83850e2d) SHA1(cdc2df8e3bc58319c50768ea2a05b9c7ddc2a652) )
+
+ ROM_REGION( 0x080000, "gfx6", 0 ) /* LBK tiles */
+ ROM_LOAD( "bg-2", 0x000000, 0x080000, CRC(77ee4c6f) SHA1(a0072331bc970ba448ac5bb1ae5caa0332c82a99) )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "barrel.8", 0x00000, 0x20000, CRC(489e5b1d) SHA1(ecd69d87ed354d1d08dbe6c2890af5f05d9d67d0) )
+ROM_END
+
+/*
+
+Godzilla
+Banpresto 1993
+
+This game runs on Seibu hardware, similar to Legionairre.
+
+PCB Layout
+|----------------------------------------------------|
+| YM2151 M6295 PCM.922 8 Z80 PAL |
+| YM3014 PAL |
+| YM3931 SEI0220 14.31818MHz 6116 |
+| (SEI0100) |
+| OBJ1.648 OBJ3.743 |
+| SEI0211 |
+|J OBJ2.756 OBJ4.757 |
+|A |
+|M DSW1-8 2.025 4.026 62256 |
+|M DSW2-8 62256 |
+|A S68E08.844 PAL 1.024 3.023 62256 |
+| 6264 PAL PAL 62256 |
+| 6264 |
+| SEI0200 COPX-D2.313 SEI0300 |
+| TC110G21AF TC25SC900AF|
+| |
+|BK1.618 11.620 20MHz PAL PAL |
+| BK3.619 10.615 PAL 68000 |
+|----------------------------------------------------|
+
+Notes:
+ Z80 clock : 3.579545MHz
+ 68000 clock : 10.000MHz
+ YM2151 clock : 3.579545MHz
+ M6295 clock : 1.000MHz, sample rate = clk /132
+ VSync : 61Hz
+ HSync : 15.74kHz
+ S68E08.844 : 82S147 bipolar PROM
+ BK & OBJ : 8M MASK (read as 238000)
+ Main PRG 1-4 : 27C010 EPROM
+ ROMs 8,10,11 : 27C512 EPROM
+ COPX-D2.313 : 4M MASK (read as 234200)
+ PCM : 4M MASK (read as 27C040)
+
+ Custom SEIBU chips:
+ SEI0211 and SEI0220: connected to OBJ ROMs
+ SEI300 : connected to PRG ROMs and 68000
+ SEI0200 : connected to BG ROMs
+
+*/
+
+ROM_START( godzilla )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "2.025", 0x000000, 0x020000, CRC(be9c6e5a) SHA1(9a7e49ac9cdbcc02b13b3448544cee5fe398ec16) )
+ ROM_LOAD32_BYTE( "1.024", 0x000001, 0x020000, CRC(0d6b663d) SHA1(01e02999cffd2642f7a37e492fe7f83770cddd67) )
+ ROM_LOAD32_BYTE( "4.026", 0x000002, 0x020000, CRC(bb8c0132) SHA1(fa8b049f590be710b3cf82f27deade63656db730) )
+ ROM_LOAD32_BYTE( "3.023", 0x000003, 0x020000, CRC(bb16e5d0) SHA1(31d8941e6e297b1f410944f0063a4c9219d23f23) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "8.016", 0x000000, 0x08000, CRC(4ab76e43) SHA1(40c34fade03161c4b50f9f6a2ae61078b8d8ea6d) )
+ ROM_CONTINUE( 0x010000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "11.620", 0x000000, 0x010000, CRC(58e0e41f) SHA1(563c633eb3d4df41e467c93957c74b540a0ae43c) )
+ ROM_LOAD16_BYTE( "10.615", 0x000001, 0x010000, CRC(9c22bc13) SHA1(a94d9ed63ee1f5e358ebcaf517e6a1c986fa5d96) )
+
+ ROM_REGION( 0x800000, "gfx2", ROMREGION_ERASE00 )
+ ROM_LOAD( "obj1.748", 0x000000, 0x200000, CRC(0dfaf26d) SHA1(2af3ea06369c40ae89c2f8362c273f4801db8e68) )
+ ROM_LOAD( "obj2.756", 0x200000, 0x200000, CRC(32b1516a) SHA1(4adcf4b957f6b9baf1a5b8807b381db664de632d) )
+ ROM_LOAD( "obj3.743", 0x400000, 0x100000, CRC(5af0114e) SHA1(9362de9ade6db67ab0e3a2dfea580e688bbf7729) )
+ ROM_LOAD( "obj4.757", 0x500000, 0x100000, CRC(7448b054) SHA1(5c08319329eb8c90b63e5393c0011bc39911ebbb) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "bg1.618", 0x000000, 0x100000, CRC(78fbbb84) SHA1(b1f5d4041bb88c5b2a561949239b11c3fd7c5fbc) )
+
+ ROM_REGION( 0x020000, "gfx4", ROMREGION_ERASEFF ) /* not used */
+
+ ROM_REGION( 0x100000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "bg2.619", 0x000000, 0x100000, CRC(8ac192a5) SHA1(54b557e81a704c70a651e6b8da70207a2a70530f) )
+
+ ROM_REGION( 0x100000, "gfx6", 0 ) /* LBK tiles */
+ ROM_COPY( "gfx3", 0x80000, 0x00000, 0x080000 )
+
+ ROM_REGION( 0x080000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "pcm.922", 0x000000, 0x080000, CRC(59cbef10) SHA1(6b89b7286f80f9c903dfb81dc93a03c38dff707c) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "s68e08.844", 0x000000, 0x000200, CRC(96f7646e) SHA1(400a831b83d6ac4d2a46ef95b97b1ee237099e44) ) /* Priority */
+
+ ROM_REGION( 0x080000, "user1", 0 )
+ ROM_LOAD( "copx-d2.313", 0x000000, 0x080000, CRC(7c52581b) SHA1(7e668476f886806b0c06fa0bcf4bbc955878c87c) )
+ROM_END
+
+/*
+
+Denjin Makai
+Banpresto, 1994
+
+This game runs on early 90's Seibu hardware.
+(i.e. Raiden II, Godzilla, Seibu Cup Soccer, Legionairre, Heated Barrel etc).
+The PCB looks to have been converted from some other game (a lot of flux traces are
+left on the PCB). The game might be a simple ROM swap for some other Seibu-based game.
+
+
+PCB Layout
+----------
+
+|-----------------------------------------------------|
+|LA4460 YM2151 M6295 ROM6 ROM5 Z80 PAL6 |
+| 6116 PAL9 |
+| SEI0100BU SEI0220BP 14.31818MHz |
+| |
+| 6116 |
+| OBJ-0-3 OBJ-6-7 |
+|J 6116 SEI0211 |
+|A OBJ-4-5 OBJ-8-9 |
+|M |
+|M ROM1 ROM3 62256 |
+|M 62256 |
+| ROM2 ROM4 62256 |
+| DSW1 S68E08 PAL7 62256 |
+| DSW2 PAL6 PAL3 |
+|SEI0200 |
+| 6264 |
+| 6264 COPX-D2 |
+| SEI1000 |
+|BG-1-AB ROM7 PAL2 PAL1 |
+| |
+|BG-2-AB BG-3-AB ROM8 20MHz PAL5 68000 |
+|-----------------------------------------------------|
+Notes:
+ 68000 clock : 10.000MHz (20 / 2)
+ Z80 clock : 3.579545MHz (14.31818 / 4)
+ YM2151 clock : 3.579545MHz (14.31818 / 4)
+ M6295 clock : 1.000MHz, sample rate = M6295 clock / 132
+ VSync : 56Hz
+
+ 62256 : 32K x8 SRAM
+ 6264 : 8K x8 SRAM
+ 6116 : 2K x8 SRAM
+ SEI0200 : Custom Seibu QFP100 also stamped TC110G21AF
+ SEI1000 : Custom Seibu QFP184 also stamped SB01-001
+ SEI0211 : Custom Seibu QFP128
+ SEI0100BU: Custom Seibu SDIP64 also stamped YM3931
+ SEI0220BP: Custom Seibu QFP80
+
+ ROMs 1, 2, 3, 4 Main program 27C020 EPROM
+ ROM 6 OKI samples 27C020 EPROM
+ ROM 5 Sound program 27C512 EPROM
+ ROMs 7 and 8 Graphics 27C512 EPROM
+ ROMs BG* Graphics 8M Mask ROM
+ ROMs OBJ* Graphics 8M Mask ROM
+ COPX-D2 ? 4M Mask ROM
+
+ PAL1 : type AMI 18CV8PC, labelled 'S68E01'
+ PAL2 : type MMI PAL16L8ACN, labelled 'S68E02'
+ PAL3 : type MMI PAL16L8ACN, labelled 'S68E03'
+ PAL4 : type AMI 18CV8PC, labelled 'S68E04'
+ PAL5 : type AMI 18CV8PC, labelled 'S68E05T'
+ PAL6 : type AMI 18CV8PC, labelled 'S68E06T'
+ PAL7 : type AMI 18CV8PC, labelled 'S68E07'
+ PAL9 : type MMI PAL16L8ACN, labelled 'S68E09'
+
+ S68E08 : PROM type 82S147, labelled 'S68E08'
+
+
+*/
+
+ROM_START( denjinmk )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "rom1.025", 0x000000, 0x040000, CRC(44a648e8) SHA1(a3c1721e89ac6b9fc16f80682b2f701cb24b5d76) )
+ ROM_LOAD32_BYTE( "rom2.024", 0x000001, 0x040000, CRC(e5ee8fe0) SHA1(2ebff4fdbe82062fb526598e10f11358b0b5c02f) )
+ ROM_LOAD32_BYTE( "rom3.026", 0x000002, 0x040000, CRC(781b942e) SHA1(f1f4ddc332de3dc29b716a1b82c2ecc2045efb3a) )
+ ROM_LOAD32_BYTE( "rom4.023", 0x000003, 0x040000, CRC(502a588b) SHA1(9055b631240fe52d33b572e34275d31a9f3d290f) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "rom5.016", 0x000000, 0x08000, CRC(7fe7e352) SHA1(1ceae22186751ca91dfffab7bd11f275e693451f) )
+ ROM_CONTINUE( 0x010000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "rom7.620", 0x000000, 0x010000, CRC(e1f759b1) SHA1(ddc60e78e7791a59c59403dd4089b3f6e1ecf8cb) )
+ ROM_LOAD16_BYTE( "rom8.615", 0x000001, 0x010000, CRC(cc36af0d) SHA1(69c2ae38f03be79be4d138fcc73a6a86407eb285) )
+
+ ROM_REGION( 0x500000, "gfx2", 0 )
+ ROM_LOAD( "obj-0-3.748", 0x000000, 0x200000, CRC(67c26a67) SHA1(20543ca9dcf3fed0884968b5249b34b59a14b791) ) /* banks 0,1,2,3 */
+ ROM_LOAD( "obj-4-5.756", 0x200000, 0x100000, CRC(01f8d4e6) SHA1(25b69da693be8c3404f750b419c330a7a56e88ec) ) /* 4,5 */
+ ROM_LOAD( "obj-6-7.743", 0x300000, 0x100000, CRC(e5805757) SHA1(9d392c27eef7c1fcda560dac17ba9d7ae2287ac8) ) /* 6,7 */
+ ROM_LOAD( "obj-8-9.757", 0x400000, 0x100000, CRC(c8f7e1c9) SHA1(a746d187b50a0ecdd5a7f687a2601e5dc8bfe272) ) /* 8,9 */
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "bg-1-ab.618", 0x000000, 0x100000, CRC(eaad151a) SHA1(bdd1d83ee8497efe20f21baf873e786446372bcb) )
+
+ ROM_REGION( 0x100000, "gfx4", 0 ) /* BK2 used */
+ ROM_LOAD( "bg-2-ab.617", 0x000000, 0x100000, CRC(40938f74) SHA1(d68b0f8245a8b390ad5d4e6ebc7514a939b8ac51) )
+
+ ROM_REGION( 0x100000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "bg-3-ab.619", 0x000000, 0x100000, CRC(de7366ee) SHA1(0c3969d15f3cd963e579d4164b6e0a6b4012c9c6) )
+
+ ROM_REGION( 0x100000, "gfx6", 0 ) /* LBK tiles */
+ ROM_COPY( "gfx4", 0x00000, 0x00000, 0x100000 )
+
+ ROM_REGION( 0x080000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "rom6.922", 0x000000, 0x040000, CRC(09e13213) SHA1(9500e057104c6b83da0467938e46d9efa2f49f4c) )
+
+ ROM_REGION( 0x200, "proms", 0 )
+ ROM_LOAD( "s68e08.844", 0x000000, 0x000200, CRC(96f7646e) SHA1(400a831b83d6ac4d2a46ef95b97b1ee237099e44) ) /* Priority */
+
+ ROM_REGION( 0x080000, "user1", 0 )
+ ROM_LOAD( "copx-d2.313", 0x000000, 0x080000, CRC(7c52581b) SHA1(7e668476f886806b0c06fa0bcf4bbc955878c87c) )
+ROM_END
+
+/*
+
+SD Gundam Sangokushi Rainbow Tairiku Senki
+(c)1993 Banpresto
+TYPE-R
+Board made by Seibu?
+
+CPU : MC68000P10
+Sound: Z80A YM2151 M6295 Y3014B
+OSC : 20.0000MHz (X11), 14.31818MHz (X71)
+
+ROMs:
+rb-p1.25 - Main programs (27c020)
+rb-p2.24 |
+rb-p3.26 |
+rb-p4.23 /
+
+rb-s.016 - Sound program (27c512)
+rb-ad.922 - Sound data (27c1001)
+
+rb-bg-01.618 - Background (TC538200AP)
+rb-bg-2.619 |
+rb-f1.620 | (27c512)
+rb-f2.615 /
+
+rb-spr01.748 - Sprites (TC538200AP)
+rb-spr23.756 /
+
+copx-d2.313 - ? (2M-16bit)
+
+s68e08.844 - (N82S147N)
+
+PALs:
+s68e01.122
+s68e02.310 (16L8ACN)
+s68e03.322 (16L8ACN)
+s68e04.551
+s68e05.552
+s68e06r.741 (18CV8)
+s68e07.842
+s68e09.015 (16L8ACN)
+
+
+Custom chips:
+SEI0100BU YM3931 9149 EALA
+SEI0220BP JAPAN S 9208 U ("S" for "Sharp")
+SEI0211 9215 ABBB
+SEI0200 TC110G21AF 0076 9324EAI JAPAN
+SEI300 TC25SC900AF 001 9211EAI JAPAN
+
+*/
+
+ROM_START( grainbow )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "rb-p1.25", 0x000000, 0x040000, CRC(0995c511) SHA1(97fb2bd7d26720552ace25e655fce09ad9a7afd7) )
+ ROM_LOAD32_BYTE( "rb-p2.24", 0x000001, 0x040000, CRC(c9eb756f) SHA1(88d784a71bfab4f321d3320aed1b6b2648529979) )
+ ROM_LOAD32_BYTE( "rb-p3.26", 0x000002, 0x040000, CRC(fe2f08a8) SHA1(bb95e5c113a0343b6da43c5dca1292601dec00eb) )
+ ROM_LOAD32_BYTE( "rb-p4.23", 0x000003, 0x040000, CRC(f558962a) SHA1(fcfb6f2cba59effd14c76602b0f87f564235d8ef) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* 64k code for sound Z80 */
+ ROM_LOAD( "rb-s.016", 0x000000, 0x08000, CRC(8439bf5b) SHA1(089009b91768d64edef6639e7694723d2d1c46ff) )
+ ROM_CONTINUE( 0x010000, 0x08000 )
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "rb-f1.620", 0x000000, 0x010000, CRC(792c403d) SHA1(3c606af696fe8f3d6edefdab3940bd5eb341bca9) )
+ ROM_LOAD16_BYTE( "rb-f2.615", 0x000001, 0x010000, CRC(a30e0903) SHA1(b9e7646da1ccab6dadaca6beda08125b34946653) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "rb-spr01.748", 0x000000, 0x100000, CRC(11a3479d) SHA1(4d2d06d62da02c6e9884735de8c319f37ca1715c) )
+ ROM_LOAD( "rb-spr23.756", 0x100000, 0x100000, CRC(fd08a761) SHA1(3297a2bfaabef17ed9320e24e9a4ffa2f3eb3a44) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 )
+ ROM_LOAD( "rb-bg-01.618", 0x000000, 0x100000, CRC(6a4ca7e7) SHA1(13612d29f8f04cf62b4357b69b81240dd1eceae4) )
+
+ ROM_REGION( 0x040000, "gfx4", ROMREGION_ERASEFF ) /* not used */
+
+ ROM_REGION( 0x100000, "gfx5", 0 )
+ ROM_LOAD( "rb-bg-2.619", 0x000000, 0x100000, CRC(a9b5c85e) SHA1(0ae044e05730e8080d94f1f6758f8dd051b03c41) )
+
+ ROM_REGION( 0x100000, "gfx6", 0 )
+//#define ROM_COPY(rgn,srcoffset,offset,length)
+ ROM_COPY( "gfx3", 0x80000, 0x00000, 0x80000 )
+
+ ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "rb-ad.922", 0x000000, 0x020000, CRC(a364cb42) SHA1(c527b39a1627ecee20a2c4df4cf2b5f2ba729081) )
+
+ ROM_REGION( 0x040000, "user1", 0 )
+ ROM_LOAD( "copx-d2.313", 0x0000, 0x040000, CRC(a6732ff9) SHA1(c4856ec77869d9098da24b1bb3d7d58bb74b4cda) )
+ROM_END
+
+
+ROM_START( cupsoc )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "scc_01.bin", 0x000000, 0x040000, CRC(c122203c) SHA1(93c0ae90c0ed3889b9159774ba89536108c9b259) )
+ ROM_LOAD32_BYTE( "scc_02.bin", 0x000001, 0x040000, CRC(105511b4) SHA1(f2ebe95a10f5928f57d4f532e2d2432f13b774b2) )
+ ROM_LOAD32_BYTE( "scc_03.bin", 0x000002, 0x040000, CRC(2d23d78f) SHA1(c479ded8782f2d23e123b7d00ec57c18a8f80578) )
+ ROM_LOAD32_BYTE( "scc_04.bin", 0x000003, 0x040000, CRC(e8877461) SHA1(3be44459699fd455b0daaac10e8a37d1b7985607) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "seibu7.8a", 0x000000, 0x08000, CRC(f63329f9) SHA1(51736de48efc14415cfdf169b43623d4c95fde2b) )
+ ROM_CONTINUE( 0x010000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "scc_06.bin", 0x000000, 0x010000, CRC(f1a18ec6) SHA1(43f8ec3fc541b8dc2a17533329dd3448afadcb3b) )
+ ROM_LOAD16_BYTE( "scc_05.bin", 0x000001, 0x010000, CRC(c0358503) SHA1(e87991c6a6f3e060a1b03b4899fa891510fca15f) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj.8c", 0x000000, 0x100000, CRC(e2377895) SHA1(1d1c7f31a08a464139cdaf383a5e1ade0717dc9f) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "back-1.4y", 0x000000, 0x100000, CRC(3dfea0ec) SHA1(8f41d267e488e07831946ef898d593897f10bfe2) )
+
+ ROM_REGION( 0x020000, "gfx4", ROMREGION_ERASEFF ) /* not used */
+
+ ROM_REGION( 0x080000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "back-2.6y", 0x000000, 0x080000, CRC(e07712af) SHA1(2a0285d6a1e0141838e898252b8d922a6263b05f) )
+
+ ROM_REGION( 0x080000, "gfx6", 0 ) /* LBK tiles */
+ ROM_COPY( "gfx5", 0x00000, 0x00000, 0x080000 )
+
+ ROM_REGION( 0x040000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "seibu8.7a", 0x000000, 0x040000, CRC(6f594808) SHA1(218aa12068aa587c7656355f6a6b86d97c868774) )
+
+ ROM_REGION( 0x080000, "user1", 0 )
+ ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) )
+ROM_END
+
+ROM_START( cupsoca )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "soca_1.bin", 0x000000, 0x040000, CRC(d5f76bd6) SHA1(5e7c3843f6f497a24b8236a9307d347fb24dd0d5) )
+ ROM_LOAD32_BYTE( "soca_2.bin", 0x000001, 0x040000, CRC(34966aa1) SHA1(f07bca19bd92a60c04aa9b23e5d2d2eac073d2e4) )
+ ROM_LOAD32_BYTE( "soca_3.bin", 0x000002, 0x040000, CRC(2b7934ec) SHA1(b78e7079e03b23853397a3848c93f60702ac1c33) )
+ ROM_LOAD32_BYTE( "soca_4.bin", 0x000003, 0x040000, CRC(f4aa1d90) SHA1(eb94efc8cc623434b4c9a22e63d262e80ca84d83) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "seibu7.8a", 0x000000, 0x08000, CRC(f63329f9) SHA1(51736de48efc14415cfdf169b43623d4c95fde2b) )
+ ROM_CONTINUE( 0x010000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "soca_6.bin", 0x000000, 0x010000, CRC(a9e15910) SHA1(305541b16a87d0e38871240fa2e111bb9332e93c) )
+ ROM_LOAD16_BYTE( "soca_5.bin", 0x000001, 0x010000, CRC(73a3e024) SHA1(aeb359dd2dc9eb96330f494c44123bab3f5986a4) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj.8c", 0x000000, 0x100000, CRC(e2377895) SHA1(1d1c7f31a08a464139cdaf383a5e1ade0717dc9f) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "back-1.4y", 0x000000, 0x100000, CRC(3dfea0ec) SHA1(8f41d267e488e07831946ef898d593897f10bfe2) )
+
+ ROM_REGION( 0x020000, "gfx4", ROMREGION_ERASEFF ) /* not used */
+
+ ROM_REGION( 0x080000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "back-2.6y", 0x000000, 0x080000, CRC(e07712af) SHA1(2a0285d6a1e0141838e898252b8d922a6263b05f) )
+
+ ROM_REGION( 0x080000, "gfx6", 0 ) /* LBK tiles */
+ ROM_COPY( "gfx5", 0x00000, 0x00000, 0x080000 )
+
+ ROM_REGION( 0x040000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "seibu8.7a", 0x000000, 0x040000, CRC(6f594808) SHA1(218aa12068aa587c7656355f6a6b86d97c868774) )
+
+ ROM_REGION( 0x080000, "user1", 0 )
+ ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) )
+ROM_END
+
+ROM_START( cupsocs )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "1_10n.bin", 0x000000, 0x040000, CRC(b67835c5) SHA1(4fa562630d1f9cfb6f5bfff3295ebbdd227e4da5) )
+ ROM_LOAD32_BYTE( "2_10q.bin", 0x000001, 0x040000, CRC(de65509c) SHA1(3362258b6d86fc63afa205712416a4aac0cf10e4) )
+ ROM_LOAD32_BYTE( "3_10f.bin", 0x000002, 0x040000, CRC(c0333f0c) SHA1(ed02897724de4cf981aa8c6ce98551b9e79efff3) )
+ ROM_LOAD32_BYTE( "4_10k.bin", 0x000003, 0x040000, CRC(288f11d4) SHA1(424cb3d1428f7195decce2ba6eebc1e24d9bb207) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "7_8a.bin", 0x000000, 0x08000, CRC(f63329f9) SHA1(51736de48efc14415cfdf169b43623d4c95fde2b) )
+ ROM_CONTINUE( 0x010000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "6_7x.bin", 0x000000, 0x010000, CRC(7981366e) SHA1(b859bf23c5ae466f4020958a06935192fa68ee8d) )
+ ROM_LOAD16_BYTE( "5_7y.bin", 0x000001, 0x010000, CRC(26cbfaf0) SHA1(1ba7bc1cecb4bd06ba5c2d3eaa9c9e38e2106cd2) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj.8c", 0x000000, 0x100000, CRC(e2377895) SHA1(1d1c7f31a08a464139cdaf383a5e1ade0717dc9f) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "back-1.4y", 0x000000, 0x100000, CRC(3dfea0ec) SHA1(8f41d267e488e07831946ef898d593897f10bfe2) )
+
+ ROM_REGION( 0x020000, "gfx4", ROMREGION_ERASEFF ) /* not used */
+
+ ROM_REGION( 0x080000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "back-2.6y", 0x000000, 0x080000, CRC(e07712af) SHA1(2a0285d6a1e0141838e898252b8d922a6263b05f) )
+
+ ROM_REGION( 0x080000, "gfx6", 0 ) /* LBK tiles */
+ ROM_COPY( "gfx5", 0x00000, 0x00000, 0x080000 )
+
+ ROM_REGION( 0x040000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "8_7a.bin", 0x000000, 0x040000, CRC(6f594808) SHA1(218aa12068aa587c7656355f6a6b86d97c868774) )
+
+ ROM_REGION( 0x080000, "user1", 0 )
+ ROM_LOAD( "copx-d1.bin", 0x000000, 0x080000, CRC(029bc402) SHA1(0f64e4c32d95abfa3920b39ed3cf0cc6eb50191b) )
+ROM_END
+
+ROM_START( cupsocs2 )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "seibu1.10n", 0x000000, 0x040000, CRC(e91fdc95) SHA1(71c56fffabca79e73dfc61aad17bc58e09a28680) )
+ ROM_LOAD32_BYTE( "seibu2.10q", 0x000001, 0x040000, CRC(7816df3c) SHA1(d5cfbf493cc00c47406b314c08e9cbf159a7f98c) )
+ ROM_LOAD32_BYTE( "seibu3.10f", 0x000002, 0x040000, CRC(3be8a330) SHA1(f821080acd29c5801abc36da3341aabaea82ceb0) )
+ ROM_LOAD32_BYTE( "seibu4.10k", 0x000003, 0x040000, CRC(f30167ea) SHA1(5431296e3245631c90362373027c54166f8fba16) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "seibu7.8a", 0x000000, 0x08000, CRC(f63329f9) SHA1(51736de48efc14415cfdf169b43623d4c95fde2b) )
+ ROM_CONTINUE( 0x010000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "seibu6.7x", 0x000000, 0x010000, CRC(21c1e1b8) SHA1(30928c8ef98bf32ba0bf795ddadba1c95fcffe9d) )
+ ROM_LOAD16_BYTE( "seibu5.7y", 0x000001, 0x010000, CRC(955d9fd7) SHA1(782451e8e85f7ba285d6cacd9d3fdcf48bde60bc) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj.8c", 0x000000, 0x100000, CRC(e2377895) SHA1(1d1c7f31a08a464139cdaf383a5e1ade0717dc9f) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "back-1.4y", 0x000000, 0x100000, CRC(3dfea0ec) SHA1(8f41d267e488e07831946ef898d593897f10bfe2) )
+
+ ROM_REGION( 0x020000, "gfx4", ROMREGION_ERASEFF ) /* not used */
+
+ ROM_REGION( 0x080000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "back-2.6y", 0x000000, 0x080000, CRC(e07712af) SHA1(2a0285d6a1e0141838e898252b8d922a6263b05f) )
+
+ ROM_REGION( 0x080000, "gfx6", 0 ) /* LBK tiles */
+ ROM_COPY( "gfx5", 0x00000, 0x00000, 0x080000 )
+
+ ROM_REGION( 0x040000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "seibu8.7a", 0x000000, 0x040000, CRC(6f594808) SHA1(218aa12068aa587c7656355f6a6b86d97c868774) )
+ROM_END
+
+
+ROM_START( olysoc92 )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 code */
+ ROM_LOAD32_BYTE( "u025.1", 0x000000, 0x040000, CRC(a94e7780) SHA1(abbe328be425b4529e6b75ffa723c6771e4b6fcf) )
+ ROM_LOAD32_BYTE( "u024.2", 0x000001, 0x040000, CRC(cb5f0748) SHA1(e11bf11a3766ab33c60a143867496887c6238b11) )
+ ROM_LOAD32_BYTE( "u026.3", 0x000002, 0x040000, CRC(f71cc626) SHA1(7f66031509063d5fac33a3b5873b616c7ad0c25b) )
+ ROM_LOAD32_BYTE( "u023.4", 0x000003, 0x040000, CRC(2ba10e6c) SHA1(d682d97426a749cfdbaf728edb219dbf84e9eef8) )
+
+ ROM_REGION( 0x20000, "audiocpu", 0 ) /* Z80 code, banked data */
+ ROM_LOAD( "seibu7.8a", 0x000000, 0x08000, CRC(f63329f9) SHA1(51736de48efc14415cfdf169b43623d4c95fde2b) )
+ ROM_CONTINUE( 0x010000, 0x08000 ) /* banked stuff */
+ ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
+
+ ROM_REGION( 0x020000, "gfx1", 0 )
+ ROM_LOAD16_BYTE( "seibu6.7x", 0x000000, 0x010000, CRC(21c1e1b8) SHA1(30928c8ef98bf32ba0bf795ddadba1c95fcffe9d) )
+ ROM_LOAD16_BYTE( "seibu5.7y", 0x000001, 0x010000, CRC(955d9fd7) SHA1(782451e8e85f7ba285d6cacd9d3fdcf48bde60bc) )
+
+ ROM_REGION( 0x200000, "gfx2", 0 )
+ ROM_LOAD( "obj.8c", 0x000000, 0x100000, CRC(e2377895) SHA1(1d1c7f31a08a464139cdaf383a5e1ade0717dc9f) )
+
+ ROM_REGION( 0x100000, "gfx3", 0 ) /* MBK tiles */
+ ROM_LOAD( "back-1.4y", 0x000000, 0x100000, CRC(3dfea0ec) SHA1(8f41d267e488e07831946ef898d593897f10bfe2) )
+
+ ROM_REGION( 0x020000, "gfx4", ROMREGION_ERASEFF ) /* not used */
+
+ ROM_REGION( 0x080000, "gfx5", 0 ) /* BK3 tiles */
+ ROM_LOAD( "back-2.6y", 0x000000, 0x080000, CRC(e07712af) SHA1(2a0285d6a1e0141838e898252b8d922a6263b05f) )
+
+ ROM_REGION( 0x080000, "gfx6", 0 ) /* LBK tiles */
+ ROM_COPY( "gfx5", 0x00000, 0x00000, 0x080000 )
+
+ ROM_REGION( 0x040000, "oki", 0 ) /* ADPCM samples */
+ ROM_LOAD( "seibu8.7a", 0x000000, 0x040000, CRC(6f594808) SHA1(218aa12068aa587c7656355f6a6b86d97c868774) )
+ROM_END
+
+/*
+
+Seibu Cup Soccer - Seibu - Bootleg
+
+2 boards
+
+1st board
+
+(snd)
+1 x z80
+1 x oki 6295
+sc_01 (prg)
+sc_02 and sc_03 (data)
+
+(prg)
+1 x 68000
+sc_04 and sc_05
+
+(gfx)
+2 x ti tpc1020
+from sc_06 to sc_11
+
+2nd board
+
+(gfx)
+1 x actel pl84c
+from sc_12 to sc_15
+
+*/
+
+ROM_START( cupsocsb )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "sc_04.bin", 0x00001, 0x80000, CRC(22566087) SHA1(4392f46ca50cc9947823a5190aa25f5e9654aa0d) )
+ ROM_LOAD16_BYTE( "sc_05.bin", 0x00000, 0x80000, CRC(2f977dff) SHA1(4d8d6e7d06ce17bb7292072965911f8b1f1067e2) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code */
+ ROM_LOAD( "sc_01.bin", 0x000000, 0x08000, CRC(cea39d6d) SHA1(f0b79c03ffafdd1e57673d6d4836becbe415110b) )
+ ROM_CONTINUE( 0x000000, 0x08000 )
+
+ ROM_REGION( 0x200000, "gfx2", ROMREGION_INVERT ) /* bootleg sprite gfx */
+ ROM_LOAD( "sc_07.bin", 0x000000, 0x080000, CRC(dcb29d01) SHA1(72b4234622605f0ab03f21fdb6a61c6dac36000d) )
+ ROM_LOAD( "sc_06.bin", 0x080000, 0x080000, CRC(2dc70e05) SHA1(f1d0beb8428a7e1d7c7818e6719abdc543b2fa80) )
+ ROM_COPY( "gfx2", 0x00000, 0x100000, 0x100000 )
+
+ ROM_REGION( 0x200000, "test1", 0 ) /* bootleg tile gfx */
+ ROM_LOAD16_BYTE( "sc_09.bin", 0x000000, 0x080000, CRC(695b6342) SHA1(dfccb43789021ba2568b9284ae61e64f7f89b152) )
+ ROM_LOAD16_BYTE( "sc_10.bin", 0x000001, 0x080000, CRC(27e172b8) SHA1(ed86db2f42c8061607d46f2407b0130aaf692a02) )
+ ROM_LOAD16_BYTE( "sc_08.bin", 0x100000, 0x080000, CRC(637120f3) SHA1(b4b2ad192e46ff80d4cb440d7fb6dac215a353ed) )
+ ROM_LOAD16_BYTE( "sc_11.bin", 0x100001, 0x080000, CRC(0cd5ca5e) SHA1(a59665e543e9383355de2576e6693348ec356591) )
+
+ ROM_REGION( 0x020000, "gfx1", ROMREGION_INVERT )
+ ROM_COPY( "test1", 0x080000, 0x00000, 0x020000 )
+
+ ROM_REGION( 0x100000, "gfx3", ROMREGION_INVERT ) /* MBK tiles */
+ ROM_COPY( "test1", 0x000000, 0x00000, 0x080000 )
+ ROM_COPY( "test1", 0x100000, 0x80000, 0x080000 )
+
+ ROM_REGION( 0x100000, "gfx4", ROMREGION_INVERT ) /* not used */
+ ROM_COPY("gfx3",0x00000,0x00000,0x100000)
+
+ ROM_REGION( 0x080000, "gfx5", ROMREGION_INVERT ) /* BK3 tiles */
+ ROM_COPY( "test1", 0x180000, 0x00000, 0x080000 )
+
+ ROM_REGION( 0x080000, "gfx6", ROMREGION_INVERT ) /* LBK tiles */
+ ROM_COPY( "gfx5", 0x00000, 0x00000, 0x080000 )
+
+ ROM_REGION( 0x100000, "adpcm", ROMREGION_ERASEFF ) /* ADPCM samples */
+ ROM_LOAD( "sc_02.bin", 0x000000, 0x020000, CRC(a70d4f03) SHA1(c2482e624c8a828a94206a36d10c1021ad8ca1d0) )
+ ROM_LOAD( "sc_03.bin", 0x080000, 0x080000, CRC(6e254d12) SHA1(857779dbd276b688201a8ea3afd5817e38acad2e) )
+
+ ROM_REGION( 0x200000, "oki", ROMREGION_ERASEFF )
+ ROM_COPY( "adpcm", 0x00000, 0x000000, 0x20000 ) //bank 0
+ ROM_COPY( "adpcm", 0x00000, 0x020000, 0x20000 )
+ ROM_COPY( "adpcm", 0x00000, 0x100000, 0x20000 ) //bank 4
+ ROM_COPY( "adpcm", 0x80000, 0x120000, 0x20000 )
+ ROM_COPY( "adpcm", 0x00000, 0x140000, 0x20000 ) //bank 5
+ ROM_COPY( "adpcm", 0xa0000, 0x160000, 0x20000 )
+ ROM_COPY( "adpcm", 0x00000, 0x180000, 0x20000 ) //bank 6
+ ROM_COPY( "adpcm", 0xc0000, 0x1a0000, 0x20000 )
+ ROM_COPY( "adpcm", 0x00000, 0x1c0000, 0x20000 ) //bank 7
+ ROM_COPY( "adpcm", 0xe0000, 0x1e0000, 0x20000 )
+
+
+ /* what are these, they're not gfx... */
+ ROM_REGION( 0x500000, "unknown0", 0 )
+ ROM_LOAD16_BYTE( "sc_13.bin", 0x00000, 0x010000, CRC(229bddd8) SHA1(0924bf29db9c5a970546f154e7752697fdce6a58) )
+ ROM_LOAD16_BYTE( "sc_12.bin", 0x00001, 0x010000, CRC(dabfa826) SHA1(0db587c846755491b169ef7751ba8e7cdc2607e6) )
+
+ /* what are these, they're not gfx... */
+ ROM_REGION( 0x500000, "unknown1", 0 )
+ ROM_LOAD16_BYTE( "sc_15.bin", 0x00000, 0x080000, CRC(8fd87e65) SHA1(acc9fd0289fa9ab60bec16d3e642039380e5180a) )
+ ROM_LOAD16_BYTE( "sc_14.bin", 0x00001, 0x080000, CRC(566086c2) SHA1(b7d09ce978f99ecc0d1975b31330ed49317701d5) )
+ROM_END
+
+/* slight changes in the program roms compared to above set, all remaining roms were the same */
+ROM_START( cupsocsb2 )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "4", 0x00001, 0x80000, CRC(83db76f8) SHA1(ffcd0a728de58871b945c15cc27da374b587e170) )
+ ROM_LOAD16_BYTE( "5", 0x00000, 0x80000, CRC(c01e88c6) SHA1(8f90261792343c92ddd877ab8a2480b5aac82961) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code */
+ ROM_LOAD( "sc_01.bin", 0x000000, 0x08000, CRC(cea39d6d) SHA1(f0b79c03ffafdd1e57673d6d4836becbe415110b) )
+ ROM_CONTINUE( 0x000000, 0x08000 )
+
+ ROM_REGION( 0x200000, "gfx2", ROMREGION_INVERT ) /* bootleg sprite gfx */
+ ROM_LOAD( "sc_07.bin", 0x000000, 0x080000, CRC(dcb29d01) SHA1(72b4234622605f0ab03f21fdb6a61c6dac36000d) )
+ ROM_LOAD( "sc_06.bin", 0x080000, 0x080000, CRC(2dc70e05) SHA1(f1d0beb8428a7e1d7c7818e6719abdc543b2fa80) )
+ ROM_COPY( "gfx2", 0x00000, 0x100000, 0x100000 )
+
+ ROM_REGION( 0x200000, "test1", 0 ) /* bootleg tile gfx */
+ ROM_LOAD16_BYTE( "sc_09.bin", 0x000000, 0x080000, CRC(695b6342) SHA1(dfccb43789021ba2568b9284ae61e64f7f89b152) )
+ ROM_LOAD16_BYTE( "sc_10.bin", 0x000001, 0x080000, CRC(27e172b8) SHA1(ed86db2f42c8061607d46f2407b0130aaf692a02) )
+ ROM_LOAD16_BYTE( "sc_08.bin", 0x100000, 0x080000, CRC(637120f3) SHA1(b4b2ad192e46ff80d4cb440d7fb6dac215a353ed) )
+ ROM_LOAD16_BYTE( "sc_11.bin", 0x100001, 0x080000, CRC(0cd5ca5e) SHA1(a59665e543e9383355de2576e6693348ec356591) )
+
+ ROM_REGION( 0x020000, "gfx1", ROMREGION_INVERT )
+ ROM_COPY( "test1", 0x080000, 0x00000, 0x020000 )
+
+ ROM_REGION( 0x100000, "gfx3", ROMREGION_INVERT ) /* MBK tiles */
+ ROM_COPY( "test1", 0x000000, 0x00000, 0x080000 )
+ ROM_COPY( "test1", 0x100000, 0x80000, 0x080000 )
+
+ ROM_REGION( 0x100000, "gfx4", ROMREGION_INVERT ) /* not used */
+ ROM_COPY("gfx3",0x00000,0x00000,0x100000)
+
+ ROM_REGION( 0x080000, "gfx5", ROMREGION_INVERT ) /* BK3 tiles */
+ ROM_COPY( "test1", 0x180000, 0x00000, 0x080000 )
+
+ ROM_REGION( 0x080000, "gfx6", ROMREGION_INVERT ) /* LBK tiles */
+ ROM_COPY( "gfx5", 0x00000, 0x00000, 0x080000 )
+
+ ROM_REGION( 0x100000, "adpcm", ROMREGION_ERASEFF ) /* ADPCM samples */
+ ROM_LOAD( "sc_02.bin", 0x000000, 0x020000, CRC(a70d4f03) SHA1(c2482e624c8a828a94206a36d10c1021ad8ca1d0) )
+ ROM_LOAD( "sc_03.bin", 0x080000, 0x080000, CRC(6e254d12) SHA1(857779dbd276b688201a8ea3afd5817e38acad2e) )
+
+ ROM_REGION( 0x200000, "oki", ROMREGION_ERASEFF )
+ ROM_COPY( "adpcm", 0x00000, 0x000000, 0x20000 ) //bank 0
+ ROM_COPY( "adpcm", 0x00000, 0x020000, 0x20000 )
+ ROM_COPY( "adpcm", 0x00000, 0x100000, 0x20000 ) //bank 4
+ ROM_COPY( "adpcm", 0x80000, 0x120000, 0x20000 )
+ ROM_COPY( "adpcm", 0x00000, 0x140000, 0x20000 ) //bank 5
+ ROM_COPY( "adpcm", 0xa0000, 0x160000, 0x20000 )
+ ROM_COPY( "adpcm", 0x00000, 0x180000, 0x20000 ) //bank 6
+ ROM_COPY( "adpcm", 0xc0000, 0x1a0000, 0x20000 )
+ ROM_COPY( "adpcm", 0x00000, 0x1c0000, 0x20000 ) //bank 7
+ ROM_COPY( "adpcm", 0xe0000, 0x1e0000, 0x20000 )
+
+
+ /* what are these, they're not gfx... */
+ ROM_REGION( 0x500000, "unknown0", 0 )
+ ROM_LOAD16_BYTE( "sc_13.bin", 0x00000, 0x010000, CRC(229bddd8) SHA1(0924bf29db9c5a970546f154e7752697fdce6a58) )
+ ROM_LOAD16_BYTE( "sc_12.bin", 0x00001, 0x010000, CRC(dabfa826) SHA1(0db587c846755491b169ef7751ba8e7cdc2607e6) )
+
+ /* what are these, they're not gfx... */
+ ROM_REGION( 0x500000, "unknown1", 0 )
+ ROM_LOAD16_BYTE( "sc_15.bin", 0x00000, 0x080000, CRC(8fd87e65) SHA1(acc9fd0289fa9ab60bec16d3e642039380e5180a) )
+ ROM_LOAD16_BYTE( "sc_14.bin", 0x00001, 0x080000, CRC(566086c2) SHA1(b7d09ce978f99ecc0d1975b31330ed49317701d5) )
+ROM_END
+
+#define CUPSOC_DEBUG_MODE 0
+
+static DRIVER_INIT( cupsoc )
+{
+ #if CUPSOC_DEBUG_MODE
+ UINT16 *ROM = (UINT16 *)machine.root_device().memregion("maincpu")->base();
+
+ /*Press p1 button 3 to enter into debug mode during gameplay*/
+ ROM[0xffffb/2] = 0x0000;
+ ROM[0xffff7/2] = 0x0000;
+ #endif
+}
+
+
+static DRIVER_INIT( denjinmk )
+{
+ /* problem with audio comms? */
+ UINT16 *ROM = (UINT16 *)machine.root_device().memregion("maincpu")->base();
+ ROM[0x5fe4/2] = 0x4e71;
+}
+
+static DRIVER_INIT( legiongfx )
+{
+ descramble_legionnaire_gfx( machine, machine.root_device().memregion("gfx5")->base() );
+}
+
+
+
+GAME( 1992, legionna, 0, legionna, legionna, legiongfx, ROT0, "TAD Corporation", "Legionnaire (World)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, legionnau,legionna, legionna, legionna, legiongfx, ROT0, "TAD Corporation (Fabtek license)", "Legionnaire (US)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+
+GAME( 1992, heatbrl, 0, heatbrl, heatbrl, 0, ROT0, "TAD Corporation", "Heated Barrel (World version 3)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, heatbrl2, heatbrl, heatbrl, heatbrl, 0, ROT0, "TAD Corporation", "Heated Barrel (World version 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, heatbrlo, heatbrl, heatbrl, heatbrl, 0, ROT0, "TAD Corporation", "Heated Barrel (World old version)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, heatbrlu, heatbrl, heatbrl, heatbrl, 0, ROT0, "TAD Corporation", "Heated Barrel (US)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, heatbrle, heatbrl, heatbrl, heatbrl, 0, ROT0, "TAD Corporation", "Heated Barrel (Electronic Devices license)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+
+GAME( 1993, godzilla, 0, godzilla, godzilla, 0, ROT0, "Banpresto", "Godzilla", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1993, grainbow, 0, grainbow, grainbow, 0, ROT0, "Banpresto", "SD Gundam Sangokushi Rainbow Tairiku Senki", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1993, denjinmk, 0, denjinmk, denjinmk, denjinmk, ROT0, "Banpresto", "Denjin Makai", GAME_IMPERFECT_GRAPHICS )
+
+GAME( 1992, cupsoc, 0, cupsoc, cupsoc, 0, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, cupsoca, cupsoc, cupsoc, cupsoc, 0, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer (set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, cupsocs, cupsoc, cupsocs, cupsoc, 0, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer :Selection: (set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, cupsocs2, cupsoc, cupsocs, cupsoc, 0, ROT0, "Seibu Kaihatsu", "Seibu Cup Soccer :Selection: (set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, cupsocsb, cupsoc, cupsocbl, cupsoc, cupsoc, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 1)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, cupsocsb2,cupsoc, cupsocbl, cupsoc, cupsoc, ROT0, "bootleg", "Seibu Cup Soccer :Selection: (bootleg, set 2)", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )
+GAME( 1992, olysoc92, cupsoc, cupsoc, cupsoc, 0, ROT0, "Seibu Kaihatsu", "Olympic Soccer '92", GAME_UNEMULATED_PROTECTION | GAME_NOT_WORKING )