/***************************************************************************
Dynamite Duke (c) 1989 Seibu Kaihatsu/Fabtek
The Double Dynamites (c) 1989 Seibu Kaihatsu/Fabtek
To access test mode, reset with both start buttons held.
Coin inputs are handled by the sound CPU, so they don't work with sound
disabled. Just put the game in Free Play mode.
The background layer is 5bpp and I'm not 100% sure the colours are
correct on it, although the layer is 5bpp the palette data is 4bpp.
My current implementation looks pretty good though I've never seen
the real game.
There is a country code byte in the program to select between
Seibu Kaihatsu/Fabtek/Taito licenses.
Emulation by Bryan McPhail, mish@tendril.co.uk
SW#1
--------------------------------------------------------------------
DESCRIPTION 1 2 3 4 5 6 7 8
--------------------------------------------------------------------
COIN MODE MODE 1 OFF
MODE 2 ON
--------------------------------------------------------------------
COIN/CREDIT*
MODE #1 1C/1P OFF OFF OFF OFF
2C/1P ON OFF OFF OFF
3C/1P OFF ON OFF OFF
4C/1P ON ON OFF OFF
FREE PLAY ON ON ON ON
MODE #2
COIN A 1C/1P OFF OFF
2C/1P ON OFF
3C/1P OFF ON
5C/1P ON ON
COIN B 1C/2P OFF OFF
1C/3P ON OFF
1C/5P OFF ON
1C/6P ON ON
--------------------------------------------------------------------
STARTING COIN NORMAL OFF
X2 ON
--------------------------------------------------------------------
CABINET TYPE TABLE ON
UPRIGHT OFF
--------------------------------------------------------------------
VIDEO SCREEN NORMAL OFF
FLIP ON
--------------------------------------------------------------------
FACTORY SETTINGS OFF OFF OFF OFF OFF OFF OFF OFF
--------------------------------------------------------------------
2008-07
Dip locations and factory settings verified with dip listing
Also, implemented conditional port for Coin Mode (SW1:1)
***************************************************************************/
#include "emu.h"
#include "cpu/nec/nec.h"
#include "cpu/z80/z80.h"
#include "audio/seibu.h"
#include "sound/3812intf.h"
#include "sound/okim6295.h"
#include "includes/dynduke.h"
/* Memory Maps */
static ADDRESS_MAP_START( master_map, AS_PROGRAM, 16 )
AM_RANGE(0x00000, 0x06fff) AM_RAM
AM_RANGE(0x07000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0x08000, 0x080ff) AM_RAM AM_BASE_MEMBER(dynduke_state, m_scroll_ram)
AM_RANGE(0x0a000, 0x0afff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x0b000, 0x0b001) AM_READ_PORT("P1_P2")
AM_RANGE(0x0b002, 0x0b003) AM_READ_PORT("DSW")
AM_RANGE(0x0b004, 0x0b005) AM_WRITENOP
AM_RANGE(0x0b006, 0x0b007) AM_WRITE(dynduke_control_w)
AM_RANGE(0x0c000, 0x0c7ff) AM_RAM_WRITE(dynduke_text_w) AM_BASE_MEMBER(dynduke_state, m_videoram)
AM_RANGE(0x0d000, 0x0d00d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w)
AM_RANGE(0xa0000, 0xfffff) AM_ROM
ADDRESS_MAP_END
static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 16 )
AM_RANGE(0x00000, 0x05fff) AM_RAM
AM_RANGE(0x06000, 0x067ff) AM_RAM_WRITE(dynduke_background_w) AM_BASE_MEMBER(dynduke_state, m_back_data)
AM_RANGE(0x06800, 0x06fff) AM_RAM_WRITE(dynduke_foreground_w) AM_BASE_MEMBER(dynduke_state, m_fore_data)
AM_RANGE(0x07000, 0x07fff) AM_RAM_WRITE(dynduke_paletteram_w) AM_BASE_GENERIC(paletteram)
AM_RANGE(0x08000, 0x08fff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x0a000, 0x0a001) AM_WRITE(dynduke_gfxbank_w)
AM_RANGE(0x0c000, 0x0c001) AM_WRITENOP
AM_RANGE(0xc0000, 0xfffff) AM_ROM
ADDRESS_MAP_END
/* Memory map used by DlbDyn - probably an addressing PAL is different */
static ADDRESS_MAP_START( masterj_map, AS_PROGRAM, 16 )
AM_RANGE(0x00000, 0x06fff) AM_RAM
AM_RANGE(0x07000, 0x07fff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
AM_RANGE(0x08000, 0x087ff) AM_RAM_WRITE(dynduke_text_w) AM_BASE_MEMBER(dynduke_state, m_videoram)
AM_RANGE(0x09000, 0x0900d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w)
AM_RANGE(0x0c000, 0x0c0ff) AM_RAM AM_BASE_MEMBER(dynduke_state, m_scroll_ram)
AM_RANGE(0x0e000, 0x0efff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x0f000, 0x0f001) AM_READ_PORT("P1_P2")
AM_RANGE(0x0f002, 0x0f003) AM_READ_PORT("DSW")
AM_RANGE(0x0f004, 0x0f005) AM_WRITENOP
AM_RANGE(0x0f006, 0x0f007) AM_WRITE(dynduke_control_w)
AM_RANGE(0xa0000, 0xfffff) AM_ROM
ADDRESS_MAP_END
/* Input Ports */
static INPUT_PORTS_START( dynduke )
SEIBU_COIN_INPUTS /* coin inputs read through sound cpu */
PORT_START("P1_P2")
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_START1 )
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_START2 )
PORT_START("DSW")
PORT_DIPNAME( 0x0001, 0x0001, "Coin Mode" ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x0001, "Mode 1" )
PORT_DIPSETTING( 0x0000, "Mode 2" )
PORT_DIPNAME( 0x0006, 0x0006, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:2,3") PORT_CONDITION("DSW", 0x0001, PORTCOND_EQUALS, 0x0000)
PORT_DIPSETTING( 0x0000, DEF_STR( 5C_1C ) )
PORT_DIPSETTING( 0x0002, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x0004, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x0006, DEF_STR( 1C_1C ) )
PORT_DIPNAME( 0x0018, 0x0008, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SW1:4,5") PORT_CONDITION("DSW", 0x0001, PORTCOND_EQUALS, 0x0000)
PORT_DIPSETTING( 0x0018, DEF_STR( 1C_2C ) )
PORT_DIPSETTING( 0x0010, DEF_STR( 1C_3C ) )
PORT_DIPSETTING( 0x0008, DEF_STR( 1C_5C ) )
PORT_DIPSETTING( 0x0000, DEF_STR( 1C_6C ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x001e, 0x001e, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:2,3,4,5") PORT_CONDITION("DSW", 0x0001, PORTCOND_EQUALS, 0x0001)
PORT_DIPSETTING( 0x0018, DEF_STR( 4C_1C ) )
PORT_DIPSETTING( 0x001a, DEF_STR( 3C_1C ) )
PORT_DIPSETTING( 0x001c, DEF_STR( 2C_1C ) )
PORT_DIPSETTING( 0x001e, DEF_STR( 1C_1C ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) )
PORT_DIPNAME( 0x0020, 0x0020, "Starting Coin" ) PORT_DIPLOCATION("SW1:6")
PORT_DIPSETTING( 0x0020, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x0000, "X 2" )
PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:7")
PORT_DIPSETTING( 0x0040, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Cocktail ) )
PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW1:8")
PORT_DIPSETTING( 0x0080, DEF_STR( Off ) )
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
PORT_BIT( 0x0300, 0x0300, IPT_UNUSED ) /* "SW2:1,2" - Always OFF according to the manual */
PORT_DIPNAME( 0x0c00, 0x0400, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW2:3,4")
PORT_DIPSETTING( 0x0c00, "80K 100K+" )
PORT_DIPSETTING( 0x0800, "100K 100K+" )
PORT_DIPSETTING( 0x0400, "120K 100K+" )
PORT_DIPSETTING( 0x0000, "120K 120K+" )
PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW2:5,6")
PORT_DIPSETTING( 0x3000, DEF_STR( Normal ) )
PORT_DIPSETTING( 0x2000, DEF_STR( Easy ) )
PORT_DIPSETTING( 0x1000, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW2:8")
PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
INPUT_PORTS_END
/* Graphics Layouts */
static const gfx_layout charlayout =
{
8,8, /* 8*8 characters */
1024,
4, /* 4 bits per pixel */
{ 4,0,(0x10000*8)+4,0x10000*8 },
{ 0,1,2,3,8,9,10,11 },
{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
128
};
static const gfx_layout spritelayout =
{
16,16, /* 16*16 tiles */
0x4000,
4, /* 4 bits per pixel */
{ 12, 8, 4, 0 },
{
0,1,2,3, 16,17,18,19,
512+0,512+1,512+2,512+3,
512+8+8,512+9+8,512+10+8,512+11+8,
},
{
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,
},
1024
};
static const gfx_layout bg_layout =
{
16,16,
RGN_FRAC(1,3),
6,
{ RGN_FRAC(2,3)+4, RGN_FRAC(2,3)+0,
RGN_FRAC(1,3)+4, RGN_FRAC(1,3)+0,
4, 0 },
{
0,1,2,3,8,9,10,11,
256+0,256+1,256+2,256+3,256+8,256+9,256+10,256+11
},
{
0*16,1*16,2*16,3*16,4*16,5*16,6*16,7*16,
8*16,9*16,10*16,11*16,12*16,13*16,14*16,15*16
},
512
};
static const gfx_layout fg_layout =
{
16,16,
0x2000,
4,
{ 0x80000*8+4, 0x80000*8, 4, 0 },
{
0,1,2,3,8,9,10,11,
256+0,256+1,256+2,256+3,256+8,256+9,256+10,256+11
},
{
0*16,1*16,2*16,3*16,4*16,5*16,6*16,7*16,
8*16,9*16,10*16,11*16,12*16,13*16,14*16,15*16
},
512
};
/* Graphics Decode Information */
static GFXDECODE_START( dynduke )
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0x500, 16 )
GFXDECODE_ENTRY( "gfx2", 0, bg_layout, 0x000, 128 )
GFXDECODE_ENTRY( "gfx3", 0, fg_layout, 0x200, 16 )
GFXDECODE_ENTRY( "gfx4", 0, spritelayout, 0x300, 32 )
GFXDECODE_END
/* Interrupt Generator */
static INTERRUPT_GEN( dynduke_interrupt )
{
device_set_input_line_and_vector(device, 0, HOLD_LINE, 0xc8/4); // VBL
}
/* Machine Driver */
static MACHINE_CONFIG_START( dynduke, dynduke_state )
// basic machine hardware
MCFG_CPU_ADD("maincpu", V30, 16000000/2) // NEC V30-8 CPU
MCFG_CPU_PROGRAM_MAP(master_map)
MCFG_CPU_VBLANK_INT("screen", dynduke_interrupt)
MCFG_CPU_ADD("slave", V30, 16000000/2) // NEC V30-8 CPU
MCFG_CPU_PROGRAM_MAP(slave_map)
MCFG_CPU_VBLANK_INT("screen", dynduke_interrupt)
SEIBU_SOUND_SYSTEM_CPU(14318180/4)
MCFG_QUANTUM_TIME(attotime::from_hz(3600))
MCFG_MACHINE_RESET(seibu_sound)
// video hardware
MCFG_VIDEO_ATTRIBUTES(VIDEO_BUFFERS_SPRITERAM)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
MCFG_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
MCFG_SCREEN_SIZE(32*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
MCFG_SCREEN_UPDATE(dynduke)
MCFG_SCREEN_EOF(dynduke)
MCFG_GFXDECODE(dynduke)
MCFG_PALETTE_LENGTH(2048)
MCFG_VIDEO_START(dynduke)
// sound hardware
SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(14318180/4,1320000)
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( dbldyn, dynduke )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(masterj_map)
MACHINE_CONFIG_END
/* ROMs */
ROM_START( dynduke )
ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
ROM_LOAD16_BYTE("1.cd8", 0x0a0000, 0x10000, CRC(a5e2a95a) SHA1(135d57073d826b9cf46fb43dc49439e1400fb021) )
ROM_LOAD16_BYTE("2.cd7", 0x0a0001, 0x10000, CRC(7e51af22) SHA1(b26103c0d41c469d1e2d1e4e89f591c0d9cdb67c) )
ROM_LOAD16_BYTE("3.e8", 0x0c0000, 0x20000, CRC(98b9d243) SHA1(db00ffafa1353425adb79f5bf6a0cf9223a0d031) )
ROM_LOAD16_BYTE("4.e7", 0x0c0001, 0x20000, CRC(4f575177) SHA1(837e6bab531f16efb0d21ab5b88c529ee16b40d0) )
ROM_REGION( 0x100000, "slave", 0 ) /* v30 sub cpu */
ROM_LOAD16_BYTE("5.p8", 0x0e0000, 0x10000, CRC(883d319c) SHA1(b0df05bfe342a5289a6368be26317fa879975463) )
ROM_LOAD16_BYTE("6.p7", 0x0e0001, 0x10000, CRC(d94cb4ff) SHA1(653247c420a2af037106470556e6801b29bc58e8) )
ROM_REGION( 0x20000*2, "audiocpu", 0 ) /* sound Z80 */
ROM_LOAD( "8.w8", 0x000000, 0x08000, CRC(3c29480b) SHA1(031a0b808df32b5ae4f722c9e9f69554d30505c1) )
ROM_CONTINUE( 0x010000, 0x08000 )
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "9.5k", 0x000000, 0x04000, CRC(f2bc9af4) SHA1(9092ebe9dced243c3a7f63198a1180143dd42cea) ) /* chars */
ROM_LOAD( "10.34k", 0x010000, 0x04000, CRC(c2a9f19b) SHA1(0bcea042386109c277c6c5dbe52a020f9ea5972b) )
ROM_REGION( 0x180000, "gfx2", 0 )
ROM_LOAD( "dd.a2", 0x000000, 0x40000, CRC(598f343f) SHA1(eee794d9d0a92e066f00818bfb63e8ca46bda764) ) /* background */
ROM_LOAD( "dd.b2", 0x040000, 0x40000, CRC(41a9088d) SHA1(eb0b7370dc773cb6f5066b044934ffb42bb06587) )
ROM_LOAD( "dd.c2", 0x080000, 0x40000, CRC(cc341b42) SHA1(8c3cf09a3a0080a1cd7c1049cb8d11f03de50919) )
ROM_LOAD( "dd.d2", 0x0c0000, 0x40000, CRC(4752b4d7) SHA1(4625b7885ff9d302e78d7324b3592ac5a3cead86) )
ROM_LOAD( "dd.de3", 0x100000, 0x40000, CRC(44a4cb62) SHA1(70b2043d0428c90ee22ccd479d9710af24d359f6) )
ROM_LOAD( "dd.ef3", 0x140000, 0x40000, CRC(aa8aee1a) SHA1(8b2b8dcb2287318e314b256f84c23424cfe29462) )
ROM_REGION( 0x100000, "gfx3", 0 )
ROM_LOAD( "dd.mn3", 0x000000, 0x40000, CRC(2ee0ca98) SHA1(2ef2c4fd337e0ee4685e4863909985ee0a4c4b91) ) /* foreground */
ROM_LOAD( "dd.mn4", 0x040000, 0x40000, CRC(6c71e2df) SHA1(fe87277a625010c214e05b43572fadb493b3d05d) )
ROM_LOAD( "dd.n45", 0x080000, 0x40000, CRC(85d918e1) SHA1(882cdf633288c95f2349d7c86799875b707ca347) )
ROM_LOAD( "dd.mn5", 0x0c0000, 0x40000, CRC(e71e34df) SHA1(dce8e3de61f3869da57d476bf861856154365058) )
ROM_REGION( 0x200000, "gfx4", 0 )
ROM_LOAD16_BYTE( "dd.n1", 0x000000, 0x40000, CRC(cf1db927) SHA1(3fde2ca7e7e302773ae01ed89edf0bcf69fc7aa1) ) /* sprites */
ROM_LOAD16_BYTE( "dd.n2", 0x000001, 0x40000, CRC(5328150f) SHA1(bb847a2ff7e5ac668e974d2853519d86feb81e03) )
ROM_LOAD16_BYTE( "dd.m1", 0x080000, 0x40000, CRC(80776452) SHA1(319bfc90ccf04b9e5aaac5701767d3f7bbb71626) )
ROM_LOAD16_BYTE( "dd.m2", 0x080001, 0x40000, CRC(ff61a573) SHA1(cfbe6c017c276d2fc1f083013b5df3686381753b) )
ROM_LOAD16_BYTE( "dd.e1", 0x100000, 0x40000, CRC(84a0b87c) SHA1(62075128093f21ee6ea09cc2d4bc8e630b275fce) )
ROM_LOAD16_BYTE( "dd.e2", 0x100001, 0x40000, CRC(a9585df2) SHA1(2eeac27dd018dd334447d539fdae2989c731e764) )
ROM_LOAD16_BYTE( "dd.f1", 0x180000, 0x40000, CRC(9aed24ba) SHA1(0068b5bc0d7c817eee3bfbf7de6d19652ba78d41) )
ROM_LOAD16_BYTE( "dd.f2", 0x180001, 0x40000, CRC(3eb5783f) SHA1(5487ceb4f3241241af1a81b1bb686bd3af10b0d1) )
ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) )
ROM_END
ROM_START( dyndukef )
ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
ROM_LOAD16_BYTE("1.cd8", 0x0a0000, 0x10000, CRC(a5e2a95a) SHA1(135d57073d826b9cf46fb43dc49439e1400fb021) )
ROM_LOAD16_BYTE("2.cd7", 0x0a0001, 0x10000, CRC(7e51af22) SHA1(b26103c0d41c469d1e2d1e4e89f591c0d9cdb67c) )
ROM_LOAD16_BYTE("dd3.ef8", 0x0c0000, 0x20000, CRC(a56f8692) SHA1(00d86c660efae30c008f8220fdfd397b7d69b2cd) )
ROM_LOAD16_BYTE("dd4.ef7", 0x0c0001, 0x20000, CRC(ee4b87b3) SHA1(8e470543bce07cd8682f3745e15c4f1141d9549b) )
ROM_REGION( 0x100000, "slave", 0 ) /* v30 sub cpu */
ROM_LOAD16_BYTE("5.p8", 0x0e0000, 0x10000, CRC(883d319c) SHA1(b0df05bfe342a5289a6368be26317fa879975463) )
ROM_LOAD16_BYTE("6.p7", 0x0e0001, 0x10000, CRC(d94cb4ff) SHA1(653247c420a2af037106470556e6801b29bc58e8) )
ROM_REGION( 0x20000*2, "audiocpu", 0 ) /* sound Z80 */
ROM_LOAD( "8.w8", 0x000000, 0x08000, CRC(3c29480b) SHA1(031a0b808df32b5ae4f722c9e9f69554d30505c1) )
ROM_CONTINUE( 0x010000, 0x08000 )
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "9.5k", 0x000000, 0x04000, CRC(f2bc9af4) SHA1(9092ebe9dced243c3a7f63198a1180143dd42cea) ) /* chars */
ROM_LOAD( "10.34k", 0x010000, 0x04000, CRC(c2a9f19b) SHA1(0bcea042386109c277c6c5dbe52a020f9ea5972b) )
ROM_REGION( 0x180000, "gfx2", 0 )
ROM_LOAD( "dd.a2", 0x000000, 0x40000, CRC(598f343f) SHA1(eee794d9d0a92e066f00818bfb63e8ca46bda764) ) /* background */
ROM_LOAD( "dd.b2", 0x040000, 0x40000, CRC(41a9088d) SHA1(eb0b7370dc773cb6f5066b044934ffb42bb06587) )
ROM_LOAD( "dd.c2", 0x080000, 0x40000, CRC(cc341b42) SHA1(8c3cf09a3a0080a1cd7c1049cb8d11f03de50919) )
ROM_LOAD( "dd.d2", 0x0c0000, 0x40000, CRC(4752b4d7) SHA1(4625b7885ff9d302e78d7324b3592ac5a3cead86) )
ROM_LOAD( "dd.de3", 0x100000, 0x40000, CRC(44a4cb62) SHA1(70b2043d0428c90ee22ccd479d9710af24d359f6) )
ROM_LOAD( "dd.ef3", 0x140000, 0x40000, CRC(aa8aee1a) SHA1(8b2b8dcb2287318e314b256f84c23424cfe29462) )
ROM_REGION( 0x100000, "gfx3", 0 )
ROM_LOAD( "dd.mn3", 0x000000, 0x40000, CRC(2ee0ca98) SHA1(2ef2c4fd337e0ee4685e4863909985ee0a4c4b91) ) /* foreground */
ROM_LOAD( "dd.mn4", 0x040000, 0x40000, CRC(6c71e2df) SHA1(fe87277a625010c214e05b43572fadb493b3d05d) )
ROM_LOAD( "dd.n45", 0x080000, 0x40000, CRC(85d918e1) SHA1(882cdf633288c95f2349d7c86799875b707ca347) )
ROM_LOAD( "dd.mn5", 0x0c0000, 0x40000, CRC(e71e34df) SHA1(dce8e3de61f3869da57d476bf861856154365058) )
ROM_REGION( 0x200000, "gfx4", 0 )
ROM_LOAD16_BYTE( "dd.n1", 0x000000, 0x40000, CRC(cf1db927) SHA1(3fde2ca7e7e302773ae01ed89edf0bcf69fc7aa1) ) /* sprites */
ROM_LOAD16_BYTE( "dd.n2", 0x000001, 0x40000, CRC(5328150f) SHA1(bb847a2ff7e5ac668e974d2853519d86feb81e03) )
ROM_LOAD16_BYTE( "dd.m1", 0x080000, 0x40000, CRC(80776452) SHA1(319bfc90ccf04b9e5aaac5701767d3f7bbb71626) )
ROM_LOAD16_BYTE( "dd.m2", 0x080001, 0x40000, CRC(ff61a573) SHA1(cfbe6c017c276d2fc1f083013b5df3686381753b) )
ROM_LOAD16_BYTE( "dd.e1", 0x100000, 0x40000, CRC(84a0b87c) SHA1(62075128093f21ee6ea09cc2d4bc8e630b275fce) )
ROM_LOAD16_BYTE( "dd.e2", 0x100001, 0x40000, CRC(a9585df2) SHA1(2eeac27dd018dd334447d539fdae2989c731e764) )
ROM_LOAD16_BYTE( "dd.f1", 0x180000, 0x40000, CRC(9aed24ba) SHA1(0068b5bc0d7c817eee3bfbf7de6d19652ba78d41) )
ROM_LOAD16_BYTE( "dd.f2", 0x180001, 0x40000, CRC(3eb5783f) SHA1(5487ceb4f3241241af1a81b1bb686bd3af10b0d1) )
ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) )
ROM_END
ROM_START( dbldyn )
ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
ROM_LOAD16_BYTE("1.cd8", 0x0a0000, 0x10000, CRC(a5e2a95a) SHA1(135d57073d826b9cf46fb43dc49439e1400fb021) )
ROM_LOAD16_BYTE("2.cd7", 0x0a0001, 0x10000, CRC(7e51af22) SHA1(b26103c0d41c469d1e2d1e4e89f591c0d9cdb67c) )
ROM_LOAD16_BYTE("3x.e8", 0x0c0000, 0x20000, CRC(633db1fe) SHA1(b8d67c3eedaf72a0d85eff878595af212f1246eb) )
ROM_LOAD16_BYTE("4x.e7", 0x0c0001, 0x20000, CRC(dc9ee263) SHA1(786bf36e21d9328662916181ec4b13cce8e14f24) )
ROM_REGION( 0x100000, "slave", 0 ) /* v30 sub cpu */
ROM_LOAD16_BYTE("5x.p8", 0x0e0000, 0x10000, CRC(ea56d719) SHA1(6cade731316c280ef4e809aa700fdbaaabff41d0) )
ROM_LOAD16_BYTE("6x.p7", 0x0e0001, 0x10000, CRC(9ffa0ecd) SHA1(a22c46312ab247cd824dadf840cf1f2b0305bb29) )
ROM_REGION( 0x20000, "audiocpu", 0 ) /* sound Z80 */
ROM_LOAD( "8x.w8", 0x000000, 0x08000, CRC(f4066081) SHA1(0e5246f4f5513be11e6ed3ea26aada7e0a17a448) )
ROM_CONTINUE( 0x010000, 0x08000 )
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "9x.5k", 0x000000, 0x04000, CRC(913709E3) SHA1(A469043A09718409F7AF835F7C045BAEDAD92061) ) /* chars */
ROM_LOAD( "10x.34k", 0x010000, 0x04000, CRC(405DAACB) SHA1(2B99AF73BACEB44D7F78AA4A436F6A45538E0876) )
ROM_REGION( 0x180000, "gfx2", 0 )
ROM_LOAD( "dd.a2", 0x000000, 0x40000, CRC(598f343f) SHA1(eee794d9d0a92e066f00818bfb63e8ca46bda764) ) /* background */
ROM_LOAD( "dd.b2", 0x040000, 0x40000, CRC(41a9088d) SHA1(eb0b7370dc773cb6f5066b044934ffb42bb06587) )
ROM_LOAD( "dd.c2", 0x080000, 0x40000, CRC(cc341b42) SHA1(8c3cf09a3a0080a1cd7c1049cb8d11f03de50919) )
ROM_LOAD( "dd.d2", 0x0c0000, 0x40000, CRC(4752b4d7) SHA1(4625b7885ff9d302e78d7324b3592ac5a3cead86) )
ROM_LOAD( "dd.de3", 0x100000, 0x40000, CRC(44a4cb62) SHA1(70b2043d0428c90ee22ccd479d9710af24d359f6) )
ROM_LOAD( "dd.ef3", 0x140000, 0x40000, CRC(aa8aee1a) SHA1(8b2b8dcb2287318e314b256f84c23424cfe29462) )
ROM_REGION( 0x100000, "gfx3", 0 )
ROM_LOAD( "dd.mn3", 0x000000, 0x40000, CRC(2ee0ca98) SHA1(2ef2c4fd337e0ee4685e4863909985ee0a4c4b91) ) /* foreground */
ROM_LOAD( "dd.mn4", 0x040000, 0x40000, CRC(6c71e2df) SHA1(fe87277a625010c214e05b43572fadb493b3d05d) )
ROM_LOAD( "dd.n45", 0x080000, 0x40000, CRC(85d918e1) SHA1(882cdf633288c95f2349d7c86799875b707ca347) )
ROM_LOAD( "dd.mn5", 0x0c0000, 0x40000, CRC(e71e34df) SHA1(dce8e3de61f3869da57d476bf861856154365058) )
ROM_REGION( 0x200000, "gfx4", 0 )
ROM_LOAD16_BYTE( "dd.n1", 0x000000, 0x40000, CRC(cf1db927) SHA1(3fde2ca7e7e302773ae01ed89edf0bcf69fc7aa1) ) /* sprites */
ROM_LOAD16_BYTE( "dd.n2", 0x000001, 0x40000, CRC(5328150f) SHA1(bb847a2ff7e5ac668e974d2853519d86feb81e03) )
ROM_LOAD16_BYTE( "dd.m1", 0x080000, 0x40000, CRC(80776452) SHA1(319bfc90ccf04b9e5aaac5701767d3f7bbb71626) )
ROM_LOAD16_BYTE( "dd.m2", 0x080001, 0x40000, CRC(ff61a573) SHA1(cfbe6c017c276d2fc1f083013b5df3686381753b) )
ROM_LOAD16_BYTE( "dd.e1", 0x100000, 0x40000, CRC(84a0b87c) SHA1(62075128093f21ee6ea09cc2d4bc8e630b275fce) )
ROM_LOAD16_BYTE( "dd.e2", 0x100001, 0x40000, CRC(a9585df2) SHA1(2eeac27dd018dd334447d539fdae2989c731e764) )
ROM_LOAD16_BYTE( "dd.f1", 0x180000, 0x40000, CRC(9aed24ba) SHA1(0068b5bc0d7c817eee3bfbf7de6d19652ba78d41) )
ROM_LOAD16_BYTE( "dd.f2", 0x180001, 0x40000, CRC(3eb5783f) SHA1(5487ceb4f3241241af1a81b1bb686bd3af10b0d1) )
ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) )
ROM_END
ROM_START( dbldynf )
ROM_REGION( 0x100000, "maincpu", 0 ) /* v30 main cpu */
ROM_LOAD16_BYTE("1.cd8", 0x0a0000, 0x10000, CRC(a5e2a95a) SHA1(135d57073d826b9cf46fb43dc49439e1400fb021) )
ROM_LOAD16_BYTE("2.cd7", 0x0a0001, 0x10000, CRC(7e51af22) SHA1(b26103c0d41c469d1e2d1e4e89f591c0d9cdb67c) )
ROM_LOAD16_BYTE("3.8e", 0x0c0000, 0x20000, CRC(9b785028) SHA1(d94c41f9f8969c0effc05d5d6c44474a396a8177) )
ROM_LOAD16_BYTE("4.7e", 0x0c0001, 0x20000, CRC(0d0f6350) SHA1(d289bd9ac308ba1079d5b8931cc913fd326129d3) )
ROM_REGION( 0x100000, "slave", 0 ) /* v30 sub cpu */
ROM_LOAD16_BYTE("5x.p8", 0x0e0000, 0x10000, CRC(ea56d719) SHA1(6cade731316c280ef4e809aa700fdbaaabff41d0) )
ROM_LOAD16_BYTE("6x.p7", 0x0e0001, 0x10000, CRC(9ffa0ecd) SHA1(a22c46312ab247cd824dadf840cf1f2b0305bb29) )
ROM_REGION( 0x20000, "audiocpu", 0 ) /* sound Z80 */
ROM_LOAD( "8x.w8", 0x000000, 0x08000, CRC(f4066081) SHA1(0e5246f4f5513be11e6ed3ea26aada7e0a17a448) )
ROM_CONTINUE( 0x010000, 0x08000 )
ROM_COPY( "audiocpu", 0, 0x018000, 0x08000 )
ROM_REGION( 0x020000, "gfx1", 0 )
ROM_LOAD( "9x.5k", 0x000000, 0x04000, CRC(913709E3) SHA1(A469043A09718409F7AF835F7C045BAEDAD92061) ) /* chars */
ROM_LOAD( "10x.34k", 0x010000, 0x04000, CRC(405DAACB) SHA1(2B99AF73BACEB44D7F78AA4A436F6A45538E0876) )
ROM_REGION( 0x180000, "gfx2", 0 )
ROM_LOAD( "dd.a2", 0x000000, 0x40000, CRC(598f343f) SHA1(eee794d9d0a92e066f00818bfb63e8ca46bda764) ) /* background */
ROM_LOAD( "dd.b2", 0x040000, 0x40000, CRC(41a9088d) SHA1(eb0b7370dc773cb6f5066b044934ffb42bb06587) )
ROM_LOAD( "dd.c2", 0x080000, 0x40000, CRC(cc341b42) SHA1(8c3cf09a3a0080a1cd7c1049cb8d11f03de50919) )
ROM_LOAD( "dd.d2", 0x0c0000, 0x40000, CRC(4752b4d7) SHA1(4625b7885ff9d302e78d7324b3592ac5a3cead86) )
ROM_LOAD( "dd.de3", 0x100000, 0x40000, CRC(44a4cb62) SHA1(70b2043d0428c90ee22ccd479d9710af24d359f6) )
ROM_LOAD( "dd.ef3", 0x140000, 0x40000, CRC(aa8aee1a) SHA1(8b2b8dcb2287318e314b256f84c23424cfe29462) )
ROM_REGION( 0x100000, "gfx3", 0 )
ROM_LOAD( "dd.mn3", 0x000000, 0x40000, CRC(2ee0ca98) SHA1(2ef2c4fd337e0ee4685e4863909985ee0a4c4b91) ) /* foreground */
ROM_LOAD( "dd.mn4", 0x040000, 0x40000, CRC(6c71e2df) SHA1(fe87277a625010c214e05b43572fadb493b3d05d) )
ROM_LOAD( "dd.n45", 0x080000, 0x40000, CRC(85d918e1) SHA1(882cdf633288c95f2349d7c86799875b707ca347) )
ROM_LOAD( "dd.mn5", 0x0c0000, 0x40000, CRC(e71e34df) SHA1(dce8e3de61f3869da57d476bf861856154365058) )
ROM_REGION( 0x200000, "gfx4", 0 )
ROM_LOAD16_BYTE( "dd.n1", 0x000000, 0x40000, CRC(cf1db927) SHA1(3fde2ca7e7e302773ae01ed89edf0bcf69fc7aa1) ) /* sprites */
ROM_LOAD16_BYTE( "dd.n2", 0x000001, 0x40000, CRC(5328150f) SHA1(bb847a2ff7e5ac668e974d2853519d86feb81e03) )
ROM_LOAD16_BYTE( "dd.m1", 0x080000, 0x40000, CRC(80776452) SHA1(319bfc90ccf04b9e5aaac5701767d3f7bbb71626) )
ROM_LOAD16_BYTE( "dd.m2", 0x080001, 0x40000, CRC(ff61a573) SHA1(cfbe6c017c276d2fc1f083013b5df3686381753b) )
ROM_LOAD16_BYTE( "dd.e1", 0x100000, 0x40000, CRC(84a0b87c) SHA1(62075128093f21ee6ea09cc2d4bc8e630b275fce) )
ROM_LOAD16_BYTE( "dd.e2", 0x100001, 0x40000, CRC(a9585df2) SHA1(2eeac27dd018dd334447d539fdae2989c731e764) )
ROM_LOAD16_BYTE( "dd.f1", 0x180000, 0x40000, CRC(9aed24ba) SHA1(0068b5bc0d7c817eee3bfbf7de6d19652ba78d41) )
ROM_LOAD16_BYTE( "dd.f2", 0x180001, 0x40000, CRC(3eb5783f) SHA1(5487ceb4f3241241af1a81b1bb686bd3af10b0d1) )
ROM_REGION( 0x40000, "oki", 0 ) /* ADPCM samples */
ROM_LOAD( "7.x10", 0x000000, 0x10000, CRC(9cbc7b41) SHA1(107c19d3d71ee6af63d03f7278310c5e3786f91d) )
ROM_END
/* Driver Initialization */
static DRIVER_INIT( dynduke )
{
seibu_sound_decrypt(machine,"audiocpu",0x20000);
}
/* Game Drivers */
GAME( 1989, dynduke, 0, dynduke, dynduke, dynduke, ROT0, "Seibu Kaihatsu", "Dynamite Duke (Japan)", 0 )
GAME( 1989, dyndukef,dynduke, dynduke, dynduke, dynduke, ROT0, "Seibu Kaihatsu (Fabtek license)", "Dynamite Duke (US)", 0 )
GAME( 1989, dbldyn, dynduke, dbldyn, dynduke, dynduke, ROT0, "Seibu Kaihatsu", "The Double Dynamites (Japan)", 0 )
GAME( 1989, dbldynf, dynduke, dynduke, dynduke, dynduke, ROT0, "Seibu Kaihatsu (Fabtek license)", "The Double Dynamites (US)", 0 )