QuarterArcade Coin-Op Tech Net

Quick Nav: # A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

: : : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3: Double Dragon     (c) 1987 Technos Japan
     4: Double Dragon II  (c) 1988 Technos Japan
     5: 
     6: Driver by Carlos A. Lozano, Rob Rosenbrock, Phil Stroffolino, Ernesto Corvi
     7: 
     8: Toffy / Super Toffy added by David Haywood
     9: Thanks to Bryan McPhail for spotting the Toffy program rom encryption
    10: Toffy / Super Toffy sound hooked up by R. Belmont.
    11: 
    12: todo:
    13: 
    14: banking in Toffy / Super toffy
    15: make Dangerous Dungeons work
    16: DIPS etc. in Toffy / Super Toffy
    17: 
    18: -- Read Me --
    19: 
    20: Super Toffy - Unico 1994
    21: 
    22: Main cpu: 	MC6809EP
    23: Sound cpu: 	MC6809P
    24: Sound: 		YM2151
    25: Clocks:		12 MHz, 3.579MHz
    26: 
    27: Graphics custom: MDE-2001
    28: 
    29: -- --
    30: 
    31: Does this make Super Toffy the sequel to a rip-off / bootleg of a
    32: conversion kit which could be applied to a bootleg double dragon :-p?
    33: 
    34: ***************************************************************************/
    35: 
    36: #include "driver.h" 
    37: #include "cpu/m6800/m6800.h" 
    38: #include "cpu/m6809/m6809.h" 
    39: #include "cpu/z80/z80.h" 
    40: #include "vidhrdw/generic.h" 
    41: 
    42: /* from vidhrdw */
    43: extern unsigned char *ddragon_bgvideoram,*ddragon_fgvideoram;
    44: extern int ddragon_scrollx_hi, ddragon_scrolly_hi;
    45: extern unsigned char *ddragon_scrollx_lo;
    46: extern unsigned char *ddragon_scrolly_lo;
    47: VIDEO_START( ddragon );
    48: VIDEO_UPDATE( ddragon );
    49: WRITE_HANDLER( ddragon_bgvideoram_w );
    50: WRITE_HANDLER( ddragon_fgvideoram_w );
    51: extern unsigned char *ddragon_spriteram;
    52: extern int technos_video_hw;
    53: /* end of extern code & data */
    54: 
    55: /* private globals */
    56: static int dd_sub_cpu_busy;
    57: static int sprite_irq, sound_irq, ym_irq, snd_cpu;
    58: static int adpcm_pos[2],adpcm_end[2],adpcm_idle[2];
    59: static data8_t* darktowr_mcu_ports;
    60: /* end of private globals */
    61: 
    62: static MACHINE_INIT( ddragon )
    63: {
    64: 	sprite_irq = IRQ_LINE_NMI;
    65: 	sound_irq = M6809_IRQ_LINE;
    66: 	ym_irq = M6809_FIRQ_LINE;
    67: 	technos_video_hw = 0;
    68: 	dd_sub_cpu_busy = 0x10;
    69: 	adpcm_idle[0] = adpcm_idle[1] = 1;
    70: 	snd_cpu = 2;
    71: }
    72: 
    73: static MACHINE_INIT( toffy )
    74: {
    75: 	sound_irq = M6809_IRQ_LINE;
    76: 	ym_irq = M6809_FIRQ_LINE;
    77: 	technos_video_hw = 0;
    78: 	dd_sub_cpu_busy = 0x10;
    79: 	adpcm_idle[0] = adpcm_idle[1] = 1;
    80: 	snd_cpu = 1;
    81: }
    82: 
    83: static MACHINE_INIT( ddragonb )
    84: {
    85: 	sprite_irq = IRQ_LINE_NMI;
    86: 	sound_irq = M6809_IRQ_LINE;
    87: 	ym_irq = M6809_FIRQ_LINE;
    88: 	technos_video_hw = 0;
    89: 	dd_sub_cpu_busy = 0x10;
    90: 	adpcm_idle[0] = adpcm_idle[1] = 1;
    91: 	snd_cpu = 2;
    92: }
    93: 
    94: static MACHINE_INIT( ddragon2 )
    95: {
    96: 	sprite_irq = IRQ_LINE_NMI;
    97: 	sound_irq = IRQ_LINE_NMI;
    98: 	ym_irq = 0;
    99: 	technos_video_hw = 2;
   100: 	dd_sub_cpu_busy = 0x10;
   101: 	snd_cpu = 2;
   102: }
   103: 
   104: /*****************************************************************************/
   105: 
   106: static WRITE_HANDLER( ddragon_bankswitch_w )
   107: {
   108: 	unsigned char *RAM = memory_region(REGION_CPU1);
   109: 
   110: 	ddragon_scrolly_hi = ( ( data & 0x02 ) << 7 );
   111: 	ddragon_scrollx_hi = ( ( data & 0x01 ) << 8 );
   112: 
   113: 	flip_screen_set(~data & 0x04);
   114: 
   115: 	/* bit 3 unknown */
   116: 
   117: 	if (data & 0x10)
   118: 		dd_sub_cpu_busy = 0x00;
   119: 	else if (dd_sub_cpu_busy == 0x00)
   120: 		cpu_set_irq_line( 1, sprite_irq, (sprite_irq == IRQ_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
   121: 
   122: 	cpu_setbank( 1,&RAM[ 0x10000 + ( 0x4000 * ( ( data & 0xe0) >> 5 ) ) ] );
   123: }
   124: 
   125: static WRITE_HANDLER( toffy_bankswitch_w )
   126: {
   127: 	unsigned char *RAM = memory_region(REGION_CPU1);
   128: 
   129: 	ddragon_scrolly_hi = ( ( data & 0x02 ) << 7 );
   130: 	ddragon_scrollx_hi = ( ( data & 0x01 ) << 8 );
   131: 
   132: //	flip_screen_set(~data & 0x04);
   133: 
   134: 	/* bit 3 unknown */
   135: 
   136: //	if (data & 0x10)
   137: //		dd_sub_cpu_busy = 0x00;
   138: //	else if (dd_sub_cpu_busy == 0x00)
   139: //		cpu_set_irq_line( 1, sprite_irq, (sprite_irq == IRQ_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
   140: 
   141: 	/* I don't know ... */
   142: 	cpu_setbank( 1,&RAM[ 0x10000 + ( 0x4000 * ( ( data & 0x20) >> 5 ) ) ] );
   143: }
   144: 
   145: /*****************************************************************************/
   146: 
   147: static int darktowr_bank=0;
   148: 
   149: static WRITE_HANDLER( darktowr_bankswitch_w )
   150: {
   151: 	ddragon_scrolly_hi = ( ( data & 0x02 ) << 7 );
   152: 	ddragon_scrollx_hi = ( ( data & 0x01 ) << 8 );
   153: 
   154: //	flip_screen_set(~data & 0x04);
   155: 
   156: 	/* bit 3 unknown */
   157: 
   158: 	if (data & 0x10)
   159: 		dd_sub_cpu_busy = 0x00;
   160: 	else if (dd_sub_cpu_busy == 0x00)
   161: 		cpu_set_irq_line( 1, sprite_irq, (sprite_irq == IRQ_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
   162: 
   163: 
   164: 	darktowr_bank=(data & 0xe0) >> 5;
   165: //	cpu_setbank( 1,&RAM[ 0x10000 + ( 0x4000 * ( ( data & 0xe0) >> 5 ) ) ] );
   166: logerror("Bank %05x %02x %02x\n",activecpu_get_pc(),darktowr_bank,data);
   167: 
   168: }
   169: 
   170: static READ_HANDLER( darktowr_bank_r )
   171: {
   172: 	const data8_t *RAM = memory_region(REGION_CPU1);
   173: 
   174: 	/* MCU is mapped into main cpu memory as a bank */
   175: 	if (darktowr_bank==4) {
   176: 		logerror("BankRead %05x %08x\n",activecpu_get_pc(),offset);
   177: 		if (offset==0x1401) {
   178: 			return darktowr_mcu_ports[0];
   179: 		}
   180: 		logerror("Unmapped mcu bank read %04x\n",offset);
   181: 		return 0xff;
   182: 	}
   183: 
   184: 	return RAM[offset + 0x10000 + (0x4000*darktowr_bank)];
   185: }
   186: 
   187: static WRITE_HANDLER( darktowr_bank_w )
   188: {
   189: 	if (darktowr_bank==4) {
   190: 		logerror("BankWrite %05x %08x %08x\n",activecpu_get_pc(),offset,data);
   191: 
   192: 		if (offset==0x1400) {
   193: 			int bitSwappedData=BITSWAP8(data,0,1,2,3,4,5,6,7);
   194: 
   195: 			darktowr_mcu_ports[1]=bitSwappedData;
   196: 
   197: 			logerror("MCU PORT 1 -> %04x (from %04x)\n",bitSwappedData,data);
   198: 			return;
   199: 		}
   200: 		return;
   201: 	}
   202: 
   203: 	logerror("ROM write! %04x %02x\n",offset,data);
   204: }
   205: 
   206: static READ_HANDLER( darktowr_mcu_r )
   207: {
   208: //	logerror("McuRead %05x %08x\n",activecpu_get_pc(),offset);
   209: 	return darktowr_mcu_ports[offset];
   210: }
   211: 
   212: static WRITE_HANDLER( darktowr_mcu_w )
   213: {
   214: 	logerror("McuWrite %05x %08x %08x\n",activecpu_get_pc(),offset,data);
   215: 	darktowr_mcu_ports[offset]=data;
   216: }
   217: 
   218: /**************************************************************************/
   219: 
   220: static WRITE_HANDLER( ddragon_forcedIRQ_w )
   221: {
   222: 	cpu_set_irq_line( 0, M6809_IRQ_LINE, HOLD_LINE );
   223: }
   224: 
   225: static READ_HANDLER( port4_r )
   226: {
   227: 	int port = readinputport( 4 );
   228: 
   229: 	return port | dd_sub_cpu_busy;
   230: }
   231: 
   232: static READ_HANDLER( ddragon_spriteram_r )
   233: {
   234: 	return ddragon_spriteram[offset];
   235: }
   236: 
   237: static WRITE_HANDLER( ddragon_spriteram_w )
   238: {
   239: 	if ( cpu_getactivecpu() == 1 && offset == 0 )
   240: 		dd_sub_cpu_busy = 0x10;
   241: 
   242: 	ddragon_spriteram[offset] = data;
   243: }
   244: 
   245: /*****************************************************************************/
   246: 
   247: static WRITE_HANDLER( cpu_sound_command_w )
   248: {
   249: 	soundlatch_w( offset, data );
   250: 	cpu_set_irq_line( snd_cpu, sound_irq, (sound_irq == IRQ_LINE_NMI) ? PULSE_LINE : HOLD_LINE );
   251: }
   252: 
   253: static WRITE_HANDLER( dd_adpcm_w )
   254: {
   255: 	int chip = offset & 1;
   256: 
   257: 	switch (offset/2)
   258: 	{
   259: 		case 3:
   260: 			adpcm_idle[chip] = 1;
   261: 			MSM5205_reset_w(chip,1);
   262: 			break;
   263: 
   264: 		case 2:
   265: 			adpcm_pos[chip] = (data & 0x7f) * 0x200;
   266: 			break;
   267: 
   268: 		case 1:
   269: 			adpcm_end[chip] = (data & 0x7f) * 0x200;
   270: 			break;
   271: 
   272: 		case 0:
   273: 			adpcm_idle[chip] = 0;
   274: 			MSM5205_reset_w(chip,0);
   275: 			break;
   276: 	}
   277: }
   278: 
   279: static void dd_adpcm_int(int chip)
   280: {
   281: 	static int adpcm_data[2] = { -1, -1 };
   282: 
   283: 	if (adpcm_pos[chip] >= adpcm_end[chip] || adpcm_pos[chip] >= 0x10000)
   284: 	{
   285: 		adpcm_idle[chip] = 1;
   286: 		MSM5205_reset_w(chip,1);
   287: 	}
   288: 	else if (adpcm_data[chip] != -1)
   289: 	{
   290: 		MSM5205_data_w(chip,adpcm_data[chip] & 0x0f);
   291: 		adpcm_data[chip] = -1;
   292: 	}
   293: 	else
   294: 	{
   295: 		unsigned char *ROM = memory_region(REGION_SOUND1) + 0x10000 * chip;
   296: 
   297: 		adpcm_data[chip] = ROM[adpcm_pos[chip]++];
   298: 		MSM5205_data_w(chip,adpcm_data[chip] >> 4);
   299: 	}
   300: }
   301: 
   302: static READ_HANDLER( dd_adpcm_status_r )
   303: {
   304: 	return adpcm_idle[0] + (adpcm_idle[1] << 1);
   305: }
   306: 
   307: /*****************************************************************************/
   308: 
   309: static MEMORY_READ_START( readmem )
   310: 	{ 0x0000, 0x1fff, MRA_RAM },
   311: 	{ 0x2000, 0x2fff, ddragon_spriteram_r },
   312: 	{ 0x3000, 0x37ff, MRA_RAM },
   313: 	{ 0x3800, 0x3800, input_port_0_r },
   314: 	{ 0x3801, 0x3801, input_port_1_r },
   315: 	{ 0x3802, 0x3802, port4_r },
   316: 	{ 0x3803, 0x3803, input_port_2_r },
   317: 	{ 0x3804, 0x3804, input_port_3_r },
   318: 	{ 0x4000, 0x7fff, MRA_BANK1 },
   319: 	{ 0x8000, 0xffff, MRA_ROM },
   320: MEMORY_END
   321: 
   322: static MEMORY_WRITE_START( writemem )
   323: 	{ 0x0000, 0x0fff, MWA_RAM },
   324: 	{ 0x1000, 0x11ff, paletteram_xxxxBBBBGGGGRRRR_split1_w, &paletteram },
   325: 	{ 0x1200, 0x13ff, paletteram_xxxxBBBBGGGGRRRR_split2_w, &paletteram_2 },
   326: 	{ 0x1400, 0x17ff, MWA_RAM },
   327: 	{ 0x1800, 0x1fff, ddragon_fgvideoram_w, &ddragon_fgvideoram },
   328: 	{ 0x2000, 0x2fff, ddragon_spriteram_w, &ddragon_spriteram },
   329: 	{ 0x3000, 0x37ff, ddragon_bgvideoram_w, &ddragon_bgvideoram },
   330: 	{ 0x3808, 0x3808, ddragon_bankswitch_w },
   331: 	{ 0x3809, 0x3809, MWA_RAM, &ddragon_scrollx_lo },
   332: 	{ 0x380a, 0x380a, MWA_RAM, &ddragon_scrolly_lo },
   333: 	{ 0x380b, 0x380d, MWA_RAM },	/* ??? */
   334: 	{ 0x380e, 0x380e, cpu_sound_command_w },
   335: 	{ 0x380f, 0x380f, ddragon_forcedIRQ_w },
   336: 	{ 0x4000, 0xffff, MWA_ROM },
   337: MEMORY_END
   338: 
   339: static MEMORY_READ_START( darktowr_readmem )
   340: 	{ 0x0000, 0x1fff, MRA_RAM },
   341: 	{ 0x2000, 0x2fff, ddragon_spriteram_r },
   342: 	{ 0x3000, 0x37ff, MRA_RAM },
   343: 	{ 0x3800, 0x3800, input_port_0_r },
   344: 	{ 0x3801, 0x3801, input_port_1_r },
   345: 	{ 0x3802, 0x3802, port4_r },
   346: 	{ 0x3803, 0x3803, input_port_2_r },
   347: 	{ 0x3804, 0x3804, input_port_3_r },
   348: 	{ 0x4000, 0x7fff, darktowr_bank_r },
   349: 	{ 0x8000, 0xffff, MRA_ROM },
   350: MEMORY_END
   351: 
   352: static MEMORY_WRITE_START( darktowr_writemem )
   353: 	{ 0x0000, 0x0fff, MWA_RAM },
   354: 	{ 0x1000, 0x11ff, paletteram_xxxxBBBBGGGGRRRR_split1_w, &paletteram },
   355: 	{ 0x1200, 0x13ff, paletteram_xxxxBBBBGGGGRRRR_split2_w, &paletteram_2 },
   356: 	{ 0x1400, 0x17ff, MWA_RAM },
   357: 	{ 0x1800, 0x1fff, ddragon_fgvideoram_w, &ddragon_fgvideoram },
   358: 	{ 0x2000, 0x2fff, ddragon_spriteram_w, &ddragon_spriteram },
   359: 	{ 0x3000, 0x37ff, ddragon_bgvideoram_w, &ddragon_bgvideoram },
   360: 	{ 0x3808, 0x3808, darktowr_bankswitch_w },
   361: 	{ 0x3809, 0x3809, MWA_RAM, &ddragon_scrollx_lo },
   362: 	{ 0x380a, 0x380a, MWA_RAM, &ddragon_scrolly_lo },
   363: 	{ 0x380b, 0x380d, MWA_RAM },	/* ??? */
   364: 	{ 0x380e, 0x380e, cpu_sound_command_w },
   365: 	{ 0x380f, 0x380f, ddragon_forcedIRQ_w },
   366: 	{ 0x4000, 0x7fff, darktowr_bank_w },
   367: 	{ 0x8000, 0xffff, MWA_ROM },
   368: MEMORY_END
   369: 
   370: static MEMORY_READ_START( dd2_readmem )
   371: 	{ 0x0000, 0x1fff, MRA_RAM },
   372: 	{ 0x2000, 0x2fff, ddragon_spriteram_r },
   373: 	{ 0x3000, 0x37ff, MRA_RAM },
   374: 	{ 0x3800, 0x3800, input_port_0_r },
   375: 	{ 0x3801, 0x3801, input_port_1_r },
   376: 	{ 0x3802, 0x3802, port4_r },
   377: 	{ 0x3803, 0x3803, input_port_2_r },
   378: 	{ 0x3804, 0x3804, input_port_3_r },
   379: 	{ 0x3c00, 0x3fff, MRA_RAM },
   380: 	{ 0x4000, 0x7fff, MRA_BANK1 },
   381: 	{ 0x8000, 0xffff, MRA_ROM },
   382: MEMORY_END
   383: 
   384: static MEMORY_WRITE_START( dd2_writemem )
   385: 	{ 0x0000, 0x17ff, MWA_RAM },
   386: 	{ 0x1800, 0x1fff, ddragon_fgvideoram_w, &ddragon_fgvideoram },
   387: 	{ 0x2000, 0x2fff, ddragon_spriteram_w, &ddragon_spriteram },
   388: 	{ 0x3000, 0x37ff, ddragon_bgvideoram_w, &ddragon_bgvideoram },
   389: 	{ 0x3808, 0x3808, ddragon_bankswitch_w },
   390: 	{ 0x3809, 0x3809, MWA_RAM, &ddragon_scrollx_lo },
   391: 	{ 0x380a, 0x380a, MWA_RAM, &ddragon_scrolly_lo },
   392: 	{ 0x380b, 0x380d, MWA_RAM },	/* ??? */
   393: 	{ 0x380e, 0x380e, cpu_sound_command_w },
   394: 	{ 0x380f, 0x380f, ddragon_forcedIRQ_w },
   395: 	{ 0x3c00, 0x3dff, paletteram_xxxxBBBBGGGGRRRR_split1_w, &paletteram },
   396: 	{ 0x3e00, 0x3fff, paletteram_xxxxBBBBGGGGRRRR_split2_w, &paletteram_2 },
   397: 	{ 0x4000, 0xffff, MWA_ROM },
   398: MEMORY_END
   399: 
   400: static MEMORY_WRITE_START( toffy_writemem )
   401: 	{ 0x0000, 0x0fff, MWA_RAM },
   402: 	{ 0x1000, 0x11ff, paletteram_xxxxBBBBGGGGRRRR_split1_w, &paletteram },
   403: 	{ 0x1200, 0x13ff, paletteram_xxxxBBBBGGGGRRRR_split2_w, &paletteram_2 },
   404: 	{ 0x1400, 0x17ff, MWA_RAM },
   405: 	{ 0x1800, 0x1fff, ddragon_fgvideoram_w, &ddragon_fgvideoram },
   406: 	{ 0x2000, 0x2fff, ddragon_spriteram_w, &ddragon_spriteram },
   407: 	{ 0x3000, 0x37ff, ddragon_bgvideoram_w, &ddragon_bgvideoram },
   408: 	{ 0x3808, 0x3808, toffy_bankswitch_w },
   409: 	{ 0x3809, 0x3809, MWA_RAM, &ddragon_scrollx_lo },
   410: 	{ 0x380a, 0x380a, MWA_RAM, &ddragon_scrolly_lo },
   411: 	{ 0x380b, 0x380d, MWA_RAM },	/* ??? */
   412: 	{ 0x380e, 0x380e, cpu_sound_command_w },
   413: 	{ 0x380f, 0x380f, ddragon_forcedIRQ_w },
   414: 	{ 0x4000, 0xffff, MWA_ROM },
   415: MEMORY_END
   416: 
   417: static MEMORY_READ_START( sub_readmem )
   418: 	{ 0x0000, 0x0fff, MRA_RAM },
   419: 	{ 0x8000, 0x8fff, ddragon_spriteram_r },
   420: 	{ 0xc000, 0xffff, MRA_ROM },
   421: MEMORY_END
   422: 
   423: static MEMORY_WRITE_START( sub_writemem )
   424: 	{ 0x0000, 0x0fff, MWA_RAM },
   425: 	{ 0x8000, 0x8fff, ddragon_spriteram_w },
   426: 	{ 0xc000, 0xffff, MWA_ROM },
   427: MEMORY_END
   428: 
   429: static MEMORY_READ_START( sound_readmem )
   430: 	{ 0x0000, 0x0fff, MRA_RAM },
   431: 	{ 0x1000, 0x1000, soundlatch_r },
   432: 	{ 0x1800, 0x1800, dd_adpcm_status_r },
   433: 	{ 0x2800, 0x2801, YM2151_status_port_0_r },
   434: 	{ 0x8000, 0xffff, MRA_ROM },
   435: MEMORY_END
   436: 
   437: static MEMORY_WRITE_START( sound_writemem )
   438: 	{ 0x0000, 0x0fff, MWA_RAM },
   439: 	{ 0x2800, 0x2800, YM2151_register_port_0_w },
   440: 	{ 0x2801, 0x2801, YM2151_data_port_0_w },
   441: 	{ 0x3800, 0x3807, dd_adpcm_w },
   442: 	{ 0x8000, 0xffff, MWA_ROM },
   443: MEMORY_END
   444: 
   445: static MEMORY_READ_START( dd2_sub_readmem )
   446: 	{ 0x0000, 0xbfff, MRA_ROM },
   447: 	{ 0xc000, 0xcfff, ddragon_spriteram_r },
   448: 	{ 0xd000, 0xffff, MRA_RAM },
   449: MEMORY_END
   450: 
   451: static MEMORY_WRITE_START( dd2_sub_writemem )
   452: 	{ 0x0000, 0xbfff, MWA_ROM },
   453: 	{ 0xc000, 0xcfff, ddragon_spriteram_w },
   454: 	{ 0xd000, 0xffff, MWA_RAM },
   455: MEMORY_END
   456: 
   457: static MEMORY_READ_START( dd2_sound_readmem )
   458: 	{ 0x0000, 0x7fff, MRA_ROM },
   459: 	{ 0x8000, 0x87ff, MRA_RAM },
   460: 	{ 0x8801, 0x8801, YM2151_status_port_0_r },
   461: 	{ 0x9800, 0x9800, OKIM6295_status_0_r },
   462: 	{ 0xA000, 0xA000, soundlatch_r },
   463: MEMORY_END
   464: 
   465: static MEMORY_WRITE_START( dd2_sound_writemem )
   466: 	{ 0x0000, 0x7fff, MWA_ROM },
   467: 	{ 0x8000, 0x87ff, MWA_RAM },
   468: 	{ 0x8800, 0x8800, YM2151_register_port_0_w },
   469: 	{ 0x8801, 0x8801, YM2151_data_port_0_w },
   470: 	{ 0x9800, 0x9800, OKIM6295_data_0_w },
   471: MEMORY_END
   472: 
   473: static MEMORY_READ_START( mcu_readmem )
   474: 	{ 0x0000, 0x0007, darktowr_mcu_r },
   475: 	{ 0x0008, 0x007f, MRA_RAM },
   476: 	{ 0x0080, 0x07ff, MRA_ROM },
   477: MEMORY_END
   478: 
   479: static MEMORY_WRITE_START( mcu_writemem )
   480: 	{ 0x0000, 0x0007, darktowr_mcu_w, &darktowr_mcu_ports },
   481: 	{ 0x0008, 0x007f, MWA_RAM },
   482: 	{ 0x0080, 0x07ff, MWA_ROM },
   483: MEMORY_END
   484: 
   485: /*****************************************************************************/
   486: 
   487: #define COMMON_PORT4	PORT_START \ 
   488: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
   489: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON3 ) \
   490: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 ) \
   491: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_VBLANK ) /* verified to be active high (palette fades in ddragon2) */ \
   492: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) /* sub cpu busy */ \
   493: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
   494: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) \
   495: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
   496: 
   497: #define COMMON_INPUT_PORTS PORT_START \ 
   498: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY ) \
   499: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY ) \
   500: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY ) \
   501: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY ) \
   502: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) \
   503: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) \
   504: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) \
   505: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) \
   506: 	PORT_START \
   507: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 ) \
   508: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 ) \
   509: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 ) \
   510: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 ) \
   511: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) \
   512: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) \
   513: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) \
   514: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 ) \
   515: 	PORT_START \
   516: 	PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) \
   517: 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) ) \
   518: 	PORT_DIPSETTING(    0x01, DEF_STR( 3C_1C ) ) \
   519: 	PORT_DIPSETTING(    0x02, DEF_STR( 2C_1C ) ) \
   520: 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_1C ) ) \
   521: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) ) \
   522: 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) ) \
   523: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) ) \
   524: 	PORT_DIPSETTING(    0x03, DEF_STR( 1C_5C ) ) \
   525: 	PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) \
   526: 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) ) \
   527: 	PORT_DIPSETTING(    0x08, DEF_STR( 3C_1C ) ) \
   528: 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) ) \
   529: 	PORT_DIPSETTING(    0x38, DEF_STR( 1C_1C ) ) \
   530: 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_2C ) ) \
   531: 	PORT_DIPSETTING(    0x28, DEF_STR( 1C_3C ) ) \
   532: 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_4C ) ) \
   533: 	PORT_DIPSETTING(    0x18, DEF_STR( 1C_5C ) ) \
   534: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Cabinet ) ) \
   535: 	PORT_DIPSETTING(    0x40, DEF_STR( Upright ) ) \
   536: 	PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) ) \
   537: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) \
   538: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) ) \
   539: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   540: 
   541: 
   542: INPUT_PORTS_START( darktowr )
   543: 	PORT_START
   544: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   545: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
   546: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
   547: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
   548: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
   549: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
   550: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
   551: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
   552: 	PORT_START
   553: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   554: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
   555: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
   556: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
   557: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   558: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   559: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
   560: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
   561: 
   562: 	PORT_START      /* DSW0 */
   563: 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
   564: 	PORT_DIPSETTING(    0x03, DEF_STR( 4C_1C ) )
   565: 	PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
   566: 	PORT_DIPSETTING(    0x07, DEF_STR( 4C_2C ) )
   567: 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
   568: 	PORT_DIPSETTING(    0x06, DEF_STR( 3C_2C ) )
   569: 	PORT_DIPSETTING(    0x0b, DEF_STR( 4C_3C ) )
   570: 	PORT_DIPSETTING(    0x0f, DEF_STR( 4C_4C ) )
   571: 	PORT_DIPSETTING(    0x0a, DEF_STR( 3C_3C ) )
   572: 	PORT_DIPSETTING(    0x05, DEF_STR( 2C_2C ) )
   573: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   574: 	PORT_DIPSETTING(    0x0e, DEF_STR( 3C_4C ) )
   575: 	PORT_DIPSETTING(    0x09, DEF_STR( 2C_3C ) )
   576: 	PORT_DIPSETTING(    0x0d, DEF_STR( 2C_4C ) )
   577: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
   578: 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_3C ) )
   579: 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_4C ) )
   580: 	PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_B ) )
   581: 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
   582: 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
   583: 	PORT_DIPSETTING(    0x70, DEF_STR( 4C_2C ) )
   584: 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
   585: 	PORT_DIPSETTING(    0x60, DEF_STR( 3C_2C ) )
   586: 	PORT_DIPSETTING(    0xb0, DEF_STR( 4C_3C ) )
   587: 	PORT_DIPSETTING(    0xf0, DEF_STR( 4C_4C ) )
   588: 	PORT_DIPSETTING(    0xa0, DEF_STR( 3C_3C ) )
   589: 	PORT_DIPSETTING(    0x50, DEF_STR( 2C_2C ) )
   590: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   591: 	PORT_DIPSETTING(    0xe0, DEF_STR( 3C_4C ) )
   592: 	PORT_DIPSETTING(    0x90, DEF_STR( 2C_3C ) )
   593: 	PORT_DIPSETTING(    0xd0, DEF_STR( 2C_4C ) )
   594: 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_2C ) )
   595: 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) )
   596: 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_4C ) )
   597: 
   598: 	PORT_START      /* DSW1 */
   599: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
   600: 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
   601: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   602: 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) )
   603: 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
   604: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   605: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) )
   606: 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) )
   607: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   608: 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) )
   609: 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
   610: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   611: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) )
   612: 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) )
   613: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   614: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) )
   615: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) )
   616: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   617: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) )
   618: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   619: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   620: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
   621: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) )
   622: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   623: 
   624: 	COMMON_PORT4
   625: INPUT_PORTS_END
   626: 
   627: INPUT_PORTS_START( ddragon )
   628: 	COMMON_INPUT_PORTS
   629: 
   630: 	PORT_START      /* DSW1 */
   631: 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
   632: 	PORT_DIPSETTING(    0x01, "Easy" )
   633: 	PORT_DIPSETTING(    0x03, "Medium" )
   634: 	PORT_DIPSETTING(    0x02, "Hard" )
   635: 	PORT_DIPSETTING(    0x00, "Hardest" )
   636: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) )
   637: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   638: 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
   639: 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) )
   640: 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
   641: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   642: 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Bonus_Life ) )
   643: 	PORT_DIPSETTING(    0x10, "20k" )
   644: 	PORT_DIPSETTING(    0x00, "40k" )
   645: 	PORT_DIPSETTING(    0x30, "30k and every 60k" )
   646: 	PORT_DIPSETTING(    0x20, "40k and every 80k" )
   647: 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Lives ) )
   648: 	PORT_DIPSETTING(    0xc0, "2" )
   649: 	PORT_DIPSETTING(    0x80, "3" )
   650: 	PORT_DIPSETTING(    0x40, "4" )
   651: 	PORT_BITX( 0,       0x00, IPT_DIPSWITCH_SETTING | IPF_CHEAT, "Infinite", IP_KEY_NONE, IP_JOY_NONE )
   652: 
   653: 	COMMON_PORT4
   654: INPUT_PORTS_END
   655: 
   656: INPUT_PORTS_START( ddragon2 )
   657: 	COMMON_INPUT_PORTS
   658: 
   659: 	PORT_START      /* DSW1 */
   660: 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) )
   661: 	PORT_DIPSETTING(    0x01, "Easy" )
   662: 	PORT_DIPSETTING(    0x03, "Medium" )
   663: 	PORT_DIPSETTING(    0x02, "Hard" )
   664: 	PORT_DIPSETTING(    0x00, "Hardest" )
   665: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Demo_Sounds ) )
   666: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   667: 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
   668: 	PORT_DIPNAME( 0x08, 0x08, "Hurricane Kick" )
   669: 	PORT_DIPSETTING(    0x00, "Easy" )
   670: 	PORT_DIPSETTING(    0x08, "Normal" )
   671: 	PORT_DIPNAME( 0x30, 0x30, "Timer" )
   672: 	PORT_DIPSETTING(    0x00, "60" )
   673: 	PORT_DIPSETTING(    0x10, "65" )
   674: 	PORT_DIPSETTING(    0x30, "70" )
   675: 	PORT_DIPSETTING(    0x20, "80" )
   676: 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Lives ) )
   677: 	PORT_DIPSETTING(    0xc0, "1" )
   678: 	PORT_DIPSETTING(    0x80, "2" )
   679: 	PORT_DIPSETTING(    0x40, "3" )
   680: 	PORT_DIPSETTING(    0x00, "4" )
   681: 
   682: 	COMMON_PORT4
   683: INPUT_PORTS_END
   684: 
   685: INPUT_PORTS_START( toffy )
   686: 	PORT_START
   687: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   688: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY )
   689: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY )
   690: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY )
   691: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
   692: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
   693: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 )
   694: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
   695: 
   696: 	PORT_START
   697: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   698: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
   699: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
   700: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
   701: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   702: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   703: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
   704: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
   705: 
   706: 	PORT_START
   707: 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coin_A ) )
   708: 	PORT_DIPSETTING(    0x03, DEF_STR( 4C_1C ) )
   709: 	PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
   710: 	PORT_DIPSETTING(    0x07, DEF_STR( 4C_2C ) )
   711: 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
   712: 	PORT_DIPSETTING(    0x06, DEF_STR( 3C_2C ) )
   713: 	PORT_DIPSETTING(    0x05, DEF_STR( 2C_2C ) )
   714: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   715: 	PORT_DIPSETTING(    0x0b, DEF_STR( 4C_5C ) )
   716: 	PORT_DIPSETTING(    0x0f, "4 Coin/6 Credits" )
   717: 	PORT_DIPSETTING(    0x0a, "3 Coin/5 Credits" )
   718: 	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
   719: 	PORT_DIPSETTING(    0x0e, "3 Coin/6 Credits" )
   720: 	PORT_DIPSETTING(    0x09, DEF_STR( 2C_5C ) )
   721: 	PORT_DIPSETTING(    0x0d, DEF_STR( 2C_6C ) )
   722: 	PORT_DIPSETTING(    0x08, DEF_STR( 1C_5C ) )
   723: 	PORT_DIPSETTING(    0x0c, DEF_STR( 1C_6C ) )
   724: 	PORT_DIPNAME( 0xf0, 0x00, DEF_STR( Coin_B ) )
   725: 	PORT_DIPSETTING(    0x30, DEF_STR( 4C_1C ) )
   726: 	PORT_DIPSETTING(    0x20, DEF_STR( 3C_1C ) )
   727: 	PORT_DIPSETTING(    0x70, DEF_STR( 4C_2C ) )
   728: 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) )
   729: 	PORT_DIPSETTING(    0x60, DEF_STR( 3C_2C ) )
   730: 	PORT_DIPSETTING(    0x50, DEF_STR( 2C_2C ) )
   731: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   732: 	PORT_DIPSETTING(    0xb0, DEF_STR( 4C_5C ) )
   733: 	PORT_DIPSETTING(    0xf0, "4 Coin/6 Credits" )
   734: 	PORT_DIPSETTING(    0xa0, "3 Coin/5 Credits" )
   735: 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_2C ) )
   736: 	PORT_DIPSETTING(    0xe0, "3 Coin/6 Credits" )
   737: 	PORT_DIPSETTING(    0x90, DEF_STR( 2C_5C ) )
   738: 	PORT_DIPSETTING(    0xd0, DEF_STR( 2C_6C ) )
   739: 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_5C ) )
   740: 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_6C ) )
   741: 
   742: 	PORT_START
   743: 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
   744: 	PORT_DIPSETTING(    0x00, "2" )
   745: 	PORT_DIPSETTING(    0x01, "3" )
   746: 	PORT_DIPSETTING(    0x02, "4" )
   747: 	PORT_DIPSETTING(    0x03, "5" )
   748: 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
   749: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   750: 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
   751: 	PORT_DIPNAME( 0x18, 0x00, DEF_STR( Bonus_Life ) )
   752: 	PORT_DIPSETTING(    0x10, "30k, 50k and 100k" )
   753: 	PORT_DIPSETTING(    0x08, "50k and 100k" )
   754: 	PORT_DIPSETTING(    0x18, "100k and 200k" )
   755: 	PORT_DIPSETTING(    0x00, "None" )
   756: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
   757: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   758: 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
   759: 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) )
   760: 	PORT_DIPSETTING(    0xc0, "Easy" )
   761: 	PORT_DIPSETTING(    0x80, "Normal" )
   762: 	PORT_DIPSETTING(    0x40, "Hard" )
   763: 	PORT_DIPSETTING(    0x00, "Hardest" )
   764: 
   765: 	COMMON_PORT4
   766: INPUT_PORTS_END
   767: 
   768: #undef COMMON_INPUT_PORTS 
   769: #undef COMMON_PORT4 
   770: 
   771: /*****************************************************************************/
   772: 
   773: static struct GfxLayout char_layout =
   774: {
   775: 	8,8,
   776: 	RGN_FRAC(1,1),
   777: 	4,
   778: 	{ 0, 2, 4, 6 },
   779: 	{ 1, 0, 8*8+1, 8*8+0, 16*8+1, 16*8+0, 24*8+1, 24*8+0 },
   780: 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
   781: 	32*8
   782: };
   783: 
   784: static struct GfxLayout tile_layout =
   785: {
   786: 	16,16,
   787: 	RGN_FRAC(1,2),
   788: 	4,
   789: 	{ RGN_FRAC(1,2)+0, RGN_FRAC(1,2)+4, 0, 4 },
   790: 	{ 3, 2, 1, 0, 16*8+3, 16*8+2, 16*8+1, 16*8+0,
   791: 		  32*8+3, 32*8+2, 32*8+1, 32*8+0, 48*8+3, 48*8+2, 48*8+1, 48*8+0 },
   792: 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
   793: 		  8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
   794: 	64*8
   795: };
   796: 
   797: static struct GfxDecodeInfo gfxdecodeinfo[] =
   798: {
   799: 	{ REGION_GFX1, 0, &char_layout,   0, 8 },	/* colors   0-127 */
   800: 	{ REGION_GFX2, 0, &tile_layout, 128, 8 },	/* colors 128-255 */
   801: 	{ REGION_GFX3, 0, &tile_layout, 256, 8 },	/* colors 256-383 */
   802: 	{ -1 }
   803: };
   804: 
   805: 
   806: 
   807: static void irq_handler(int irq)
   808: {
   809: 	cpu_set_irq_line( snd_cpu, ym_irq , irq ? ASSERT_LINE : CLEAR_LINE );
   810: }
   811: 
   812: static struct YM2151interface ym2151_interface =
   813: {
   814: 	1,			/* 1 chip */
   815: 	3579545,	/* ??? */
   816: 	{ YM3012_VOL(60,MIXER_PAN_LEFT,60,MIXER_PAN_RIGHT) },
   817: 	{ irq_handler }
   818: };
   819: 
   820: static struct MSM5205interface msm5205_interface =
   821: {
   822: 	2,					/* 2 chips             */
   823: 	384000,				/* 384KHz             */
   824: 	{ dd_adpcm_int, dd_adpcm_int },/* interrupt function */
   825: 	{ MSM5205_S48_4B, MSM5205_S48_4B },	/* 8kHz */
   826: 	{ 40, 40 }				/* volume */
   827: };
   828: 
   829: static struct OKIM6295interface okim6295_interface =
   830: {
   831: 	1,              /* 1 chip */
   832: 	{ 8000 },           /* frequency (Hz) */
   833: 	{ REGION_SOUND1 },  /* memory region */
   834: 	{ 15 }
   835: };
   836: 
   837: static INTERRUPT_GEN( ddragon_interrupt )
   838: {
   839:     cpu_set_irq_line(0, 1, HOLD_LINE); /* hold the FIRQ line */
   840:     cpu_set_nmi_line(0, PULSE_LINE); /* pulse the NMI line */
   841: }
   842: 
   843: 
   844: 
   845: static MACHINE_DRIVER_START( ddragon )
   846: 
   847: 	/* basic machine hardware */
   848:  	MDRV_CPU_ADD(HD6309, 3579545)	/* 3.579545 MHz */
   849: 	MDRV_CPU_MEMORY(readmem,writemem)
   850: 	MDRV_CPU_VBLANK_INT(ddragon_interrupt,1)
   851: 
   852:  	MDRV_CPU_ADD(HD63701, 2000000) /* 2 MHz ???*/
   853: 	MDRV_CPU_MEMORY(sub_readmem,sub_writemem)
   854: 
   855:  	MDRV_CPU_ADD(HD6309, 3579545)
   856:  	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* ? */
   857: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   858: 
   859: 	MDRV_FRAMES_PER_SECOND(60)
   860: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   861: 	MDRV_INTERLEAVE(100) /* heavy interleaving to sync up sprite<->main cpu's */
   862: 
   863: 	MDRV_MACHINE_INIT(ddragon)
   864: 
   865: 	/* video hardware */
   866: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   867: 	MDRV_SCREEN_SIZE(32*8, 32*8)
   868: 	MDRV_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
   869: 	MDRV_GFXDECODE(gfxdecodeinfo)
   870: 	MDRV_PALETTE_LENGTH(384)
   871: 
   872: 	MDRV_VIDEO_START(ddragon)
   873: 	MDRV_VIDEO_UPDATE(ddragon)
   874: 
   875: 	/* sound hardware */
   876: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
   877: 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
   878: 	MDRV_SOUND_ADD(MSM5205, msm5205_interface)
   879: MACHINE_DRIVER_END
   880: 
   881: static MACHINE_DRIVER_START( darktowr )
   882: 
   883: 	/* basic machine hardware */
   884:  	MDRV_CPU_ADD(HD6309, 3579545)	/* 3.579545 MHz */
   885: 	MDRV_CPU_MEMORY(darktowr_readmem,darktowr_writemem)
   886: 	MDRV_CPU_VBLANK_INT(ddragon_interrupt,1)
   887: 
   888:  	MDRV_CPU_ADD(HD63701, 2000000) /* 2 MHz ???*/
   889: 	MDRV_CPU_MEMORY(sub_readmem,sub_writemem)
   890: 
   891:  	MDRV_CPU_ADD(HD6309, 3579545)
   892:  	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* ? */
   893: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   894: 
   895: 	MDRV_CPU_ADD(M68705,8000000/2)  /* ? MHz */
   896: 	MDRV_CPU_MEMORY(mcu_readmem,mcu_writemem)
   897: 
   898: 	MDRV_FRAMES_PER_SECOND(60)
   899: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   900: 	MDRV_INTERLEAVE(100) /* heavy interleaving to sync up sprite<->main cpu's */
   901: 
   902: 	MDRV_MACHINE_INIT(ddragon)
   903: 
   904: 	/* video hardware */
   905: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   906: 	MDRV_SCREEN_SIZE(32*8, 32*8)
   907: 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
   908: 	MDRV_GFXDECODE(gfxdecodeinfo)
   909: 	MDRV_PALETTE_LENGTH(384)
   910: 
   911: 	MDRV_VIDEO_START(ddragon)
   912: 	MDRV_VIDEO_UPDATE(ddragon)
   913: 
   914: 	/* sound hardware */
   915: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
   916: 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
   917: 	MDRV_SOUND_ADD(MSM5205, msm5205_interface)
   918: MACHINE_DRIVER_END
   919: 
   920: static MACHINE_DRIVER_START( ddragonb )
   921: 
   922: 	/* basic machine hardware */
   923:  	MDRV_CPU_ADD(HD6309, 3579545)	/* 3.579545 MHz */
   924: 	MDRV_CPU_MEMORY(readmem,writemem)
   925: 	MDRV_CPU_VBLANK_INT(ddragon_interrupt,1)
   926: 
   927:  	MDRV_CPU_ADD(HD6309, 12000000 / 3) /* 4 MHz */
   928: 	MDRV_CPU_MEMORY(sub_readmem,sub_writemem)
   929: 
   930:  	MDRV_CPU_ADD(HD6309, 3579545)
   931:  	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* ? */
   932: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   933: 
   934: 	MDRV_FRAMES_PER_SECOND(60)
   935: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   936: 	MDRV_INTERLEAVE(100) /* heavy interleaving to sync up sprite<->main cpu's */
   937: 
   938: 	MDRV_MACHINE_INIT(ddragonb)
   939: 
   940: 	/* video hardware */
   941: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   942: 	MDRV_SCREEN_SIZE(32*8, 32*8)
   943: 	MDRV_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
   944: 	MDRV_GFXDECODE(gfxdecodeinfo)
   945: 	MDRV_PALETTE_LENGTH(384)
   946: 
   947: 	MDRV_VIDEO_START(ddragon)
   948: 	MDRV_VIDEO_UPDATE(ddragon)
   949: 
   950: 	/* sound hardware */
   951: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
   952: 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
   953: 	MDRV_SOUND_ADD(MSM5205, msm5205_interface)
   954: MACHINE_DRIVER_END
   955: 
   956: static MACHINE_DRIVER_START( ddragon2 )
   957: 
   958: 	/* basic machine hardware */
   959:  	MDRV_CPU_ADD(HD6309, 3579545)	/* 3.579545 MHz */
   960: 	MDRV_CPU_MEMORY(dd2_readmem,dd2_writemem)
   961: 	MDRV_CPU_VBLANK_INT(ddragon_interrupt,1)
   962: 
   963: 	MDRV_CPU_ADD(Z80,12000000 / 3) /* 4 MHz */
   964: 	MDRV_CPU_MEMORY(dd2_sub_readmem,dd2_sub_writemem)
   965: 
   966: 	MDRV_CPU_ADD(Z80, 3579545)
   967: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 3.579545 MHz */
   968: 	MDRV_CPU_MEMORY(dd2_sound_readmem,dd2_sound_writemem)
   969: 
   970: 	MDRV_FRAMES_PER_SECOND(60)
   971: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
   972: 	MDRV_INTERLEAVE(100) /* heavy interleaving to sync up sprite<->main cpu's */
   973: 
   974: 	MDRV_MACHINE_INIT(ddragon2)
   975: 
   976: 	/* video hardware */
   977: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   978: 	MDRV_SCREEN_SIZE(32*8, 32*8)
   979: 	MDRV_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
   980: 	MDRV_GFXDECODE(gfxdecodeinfo)
   981: 	MDRV_PALETTE_LENGTH(384)
   982: 
   983: 	MDRV_VIDEO_START(ddragon)
   984: 	MDRV_VIDEO_UPDATE(ddragon)
   985: 
   986: 	/* sound hardware */
   987: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
   988: 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
   989: 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
   990: MACHINE_DRIVER_END
   991: 
   992: static MACHINE_DRIVER_START( toffy )
   993: 
   994: 	/* basic machine hardware */
   995: 	MDRV_CPU_ADD(M6809,3579545) // 12 MHz / 2 or 3.579545 ?
   996: 	MDRV_CPU_MEMORY(readmem,toffy_writemem)
   997: 	MDRV_CPU_VBLANK_INT(ddragon_interrupt,1)
   998: 
   999: 	MDRV_CPU_ADD(M6809, 3579545)
  1000: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
  1001: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
  1002: 
  1003: 	MDRV_FRAMES_PER_SECOND(60)
  1004: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_60HZ_VBLANK_DURATION)
  1005: 
  1006: 	/* video hardware */
  1007: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER )
  1008: 	MDRV_SCREEN_SIZE(32*8, 32*8)
  1009: 	MDRV_VISIBLE_AREA(1*8, 31*8-1, 2*8, 30*8-1)
  1010: 	MDRV_GFXDECODE(gfxdecodeinfo)
  1011: 	MDRV_PALETTE_LENGTH(384)
  1012: 
  1013: 	MDRV_VIDEO_START(ddragon)
  1014: 	MDRV_VIDEO_UPDATE(ddragon)
  1015: 
  1016: 	MDRV_MACHINE_INIT(toffy)
  1017: 
  1018: 	/* sound hardware */
  1019: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
  1020: 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
  1021: MACHINE_DRIVER_END
  1022: 
  1023: /***************************************************************************
  1024: 
  1025:   Game driver(s)
  1026: 
  1027: ***************************************************************************/
  1028: 
  1029: ROM_START( ddragon )
  1030: 	ROM_REGION( 0x28000, REGION_CPU1, 0 )	/* 64k for code + bankswitched memory */
  1031: 	ROM_LOAD( "21j-1-5",      0x08000, 0x08000, CRC(42045dfd) SHA1(0983705ea3bb87c4c239692f400e02f15c243479) )
  1032: 	ROM_LOAD( "21j-2-3",      0x10000, 0x08000, CRC(5779705e) SHA1(4b8f22225d10f5414253ce0383bbebd6f720f3af) ) /* banked at 0x4000-0x8000 */
  1033: 	ROM_LOAD( "21j-3",        0x18000, 0x08000, CRC(3bdea613) SHA1(d9038c80646a6ce3ea61da222873237b0383680e) ) /* banked at 0x4000-0x8000 */
  1034: 	ROM_LOAD( "21j-4-1",      0x20000, 0x08000, CRC(728f87b9) SHA1(d7442be24d41bb9fc021587ef44ae5b830e4503d) ) /* banked at 0x4000-0x8000 */
  1035: 
  1036: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sprite cpu */
  1037: 	ROM_LOAD( "63701.bin",    0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
  1038: 
  1039: 	ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* audio cpu */
  1040: 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
  1041: 
  1042: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
  1043: 	ROM_LOAD( "21j-5",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )	/* chars */
  1044: 
  1045: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
  1046: 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )	/* sprites */
  1047: 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
  1048: 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
  1049: 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
  1050: 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
  1051: 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
  1052: 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
  1053: 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
  1054: 
  1055: 	ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
  1056: 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )	/* tiles */
  1057: 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
  1058: 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
  1059: 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
  1060: 
  1061: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* adpcm samples */
  1062: 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
  1063: 	ROM_LOAD( "21j-7",        0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
  1064: 
  1065: 	ROM_REGION( 0x0300, REGION_PROMS, 0 )
  1066: 	ROM_LOAD( "21j-k-0",      0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )	/* unknown */
  1067: 	ROM_LOAD( "21j-l-0",      0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )	/* unknown */
  1068: ROM_END
  1069: 
  1070: ROM_START( ddragonu )
  1071: 	ROM_REGION( 0x28000, REGION_CPU1, 0 )	/* 64k for code + bankswitched memory */
  1072: 	ROM_LOAD( "21a-1-5",      0x08000, 0x08000, CRC(e24a6e11) SHA1(9dd97dd712d5c896f91fd80df58be9b8a2b198ee) )
  1073: 	ROM_LOAD( "21j-2-3",      0x10000, 0x08000, CRC(5779705e) SHA1(4b8f22225d10f5414253ce0383bbebd6f720f3af) ) /* banked at 0x4000-0x8000 */
  1074: 	ROM_LOAD( "21a-3",        0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
  1075: 	ROM_LOAD( "21a-4",        0x20000, 0x08000, CRC(6ea16072) SHA1(0b3b84a0d54f7a3aba411586009babbfee653f9a) ) /* banked at 0x4000-0x8000 */
  1076: 
  1077: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sprite cpu */
  1078: 	ROM_LOAD( "63701.bin",    0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
  1079: 
  1080: 	ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* audio cpu */
  1081: 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
  1082: 
  1083: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
  1084: 	ROM_LOAD( "21j-5",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )	/* chars */
  1085: 
  1086: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
  1087: 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )	/* sprites */
  1088: 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
  1089: 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
  1090: 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
  1091: 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
  1092: 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
  1093: 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
  1094: 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
  1095: 
  1096: 	ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
  1097: 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )	/* tiles */
  1098: 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
  1099: 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
  1100: 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
  1101: 
  1102: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* adpcm samples */
  1103: 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
  1104: 	ROM_LOAD( "21j-7",        0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
  1105: 
  1106: 	ROM_REGION( 0x0300, REGION_PROMS, 0 )
  1107: 	ROM_LOAD( "21j-k-0",      0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )	/* unknown */
  1108: 	ROM_LOAD( "21j-l-0",      0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )	/* unknown */
  1109: ROM_END
  1110: 
  1111: ROM_START( ddragonb )
  1112: 	ROM_REGION( 0x28000, REGION_CPU1, 0 )	/* 64k for code + bankswitched memory */
  1113: 	ROM_LOAD( "ic26",         0x08000, 0x08000, CRC(ae714964) SHA1(072522b97ca4edd099c6b48d7634354dc7088c53) )
  1114: 	ROM_LOAD( "21j-2-3",      0x10000, 0x08000, CRC(5779705e) SHA1(4b8f22225d10f5414253ce0383bbebd6f720f3af) ) /* banked at 0x4000-0x8000 */
  1115: 	ROM_LOAD( "21a-3",        0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
  1116: 	ROM_LOAD( "ic23",         0x20000, 0x08000, CRC(6c9f46fa) SHA1(df251a4aea69b2328f7a543bf085b9c35933e2c1) ) /* banked at 0x4000-0x8000 */
  1117: 
  1118: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sprite cpu */
  1119: 	ROM_LOAD( "ic38",         0x0c000, 0x04000, CRC(6a6a0325) SHA1(98a940a9f23ce9154ff94f7f2ce29efe9a92f71b) )
  1120: 
  1121: 	ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* audio cpu */
  1122: 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
  1123: 
  1124: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
  1125: 	ROM_LOAD( "21j-5",        0x00000, 0x08000, CRC(7a8b8db4) SHA1(8368182234f9d4d763d4714fd7567a9e31b7ebeb) )	/* chars */
  1126: 
  1127: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
  1128: 	ROM_LOAD( "21j-a",        0x00000, 0x10000, CRC(574face3) SHA1(481fe574cb79d0159a65ff7486cbc945d50538c5) )	/* sprites */
  1129: 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) )
  1130: 	ROM_LOAD( "21j-c",        0x20000, 0x10000, CRC(bb0bc76f) SHA1(37b2225e0593335f636c1e5fded9b21fdeab2f5a) )
  1131: 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) )
  1132: 	ROM_LOAD( "21j-e",        0x40000, 0x10000, CRC(a0a0c261) SHA1(25c534d82bd237386d447d72feee8d9541a5ded4) )
  1133: 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) )
  1134: 	ROM_LOAD( "21j-g",        0x60000, 0x10000, CRC(3220a0b6) SHA1(24a16ea509e9aff82b9ddd14935d61bb71acff84) )
  1135: 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) )
  1136: 
  1137: 	ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
  1138: 	ROM_LOAD( "21j-8",        0x00000, 0x10000, CRC(7c435887) SHA1(ecb76f2148fa9773426f05aac208eb3ac02747db) )	/* tiles */
  1139: 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) )
  1140: 	ROM_LOAD( "21j-i",        0x20000, 0x10000, CRC(5effb0a0) SHA1(1f21acb15dad824e831ed9a42b3fde096bb31141) )
  1141: 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) )
  1142: 
  1143: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* adpcm samples */
  1144: 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) )
  1145: 	ROM_LOAD( "21j-7",        0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) )
  1146: 
  1147: 	ROM_REGION( 0x0300, REGION_PROMS, 0 )
  1148: 	ROM_LOAD( "21j-k-0",      0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )	/* unknown */
  1149: 	ROM_LOAD( "21j-l-0",      0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )	/* unknown */
  1150: ROM_END
  1151: 
  1152: ROM_START( ddragon2 )
  1153: 	ROM_REGION( 0x28000, REGION_CPU1, 0 )	/* 64k for code */
  1154: 	ROM_LOAD( "26a9-04.bin",  0x08000, 0x8000, CRC(f2cfc649) SHA1(d3f1e0bae02472914a940222e4f600170a91736d) )
  1155: 	ROM_LOAD( "26aa-03.bin",  0x10000, 0x8000, CRC(44dd5d4b) SHA1(427c4e419668b41545928cfc96435c010ecdc88b) )
  1156: 	ROM_LOAD( "26ab-0.bin",   0x18000, 0x8000, CRC(49ddddcd) SHA1(91dc53718d04718b313f23d86e241027c89d1a03) )
  1157: 	ROM_LOAD( "26ac-0e.63",   0x20000, 0x8000, CRC(57acad2c) SHA1(938e2a78af38ecd7e9e08fb10acc1940f7585f5e) )
  1158: 
  1159: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sprite CPU 64kb (Upper 16kb = 0) */
  1160: 	ROM_LOAD( "26ae-0.bin",   0x00000, 0x10000, CRC(ea437867) SHA1(cd910203af0565f981b9bdef51ea6e9c33ee82d3) )
  1161: 
  1162: 	ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* music CPU, 64kb */
  1163: 	ROM_LOAD( "26ad-0.bin",   0x00000, 0x8000, CRC(75e36cd6) SHA1(f24805f4f6925b3ac508e66a6fc25c275b05f3b9) )
  1164: 
  1165: 	ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE )
  1166: 	ROM_LOAD( "26a8-0e.19",   0x00000, 0x10000, CRC(4e80cd36) SHA1(dcae0709f27f32effb359f6b943f61b102749f2a) )	/* chars */
  1167: 
  1168: 	ROM_REGION( 0xc0000, REGION_GFX2, ROMREGION_DISPOSE )
  1169: 	ROM_LOAD( "26j0-0.bin",   0x00000, 0x20000, CRC(db309c84) SHA1(ee095e4a3bc86737539784945decb1f63da47b9b) )	/* sprites */
  1170: 	ROM_LOAD( "26j1-0.bin",   0x20000, 0x20000, CRC(c3081e0c) SHA1(c4a9ae151aae21073a2c79c5ac088c72d4f3d9db) )
  1171: 	ROM_LOAD( "26af-0.bin",   0x40000, 0x20000, CRC(3a615aad) SHA1(ec90a35224a177d00327de6fd1a299df38abd790) )
  1172: 	ROM_LOAD( "26j2-0.bin",   0x60000, 0x20000, CRC(589564ae) SHA1(1e6e0ef623545615e8409b6d3ba586a71e2612b6) )
  1173: 	ROM_LOAD( "26j3-0.bin",   0x80000, 0x20000, CRC(daf040d6) SHA1(ab0fd5482625dbe64f0f0b0baff5dcde05309b81) )
  1174: 	ROM_LOAD( "26a10-0.bin",  0xa0000, 0x20000, CRC(6d16d889) SHA1(3bc62b3e7f4ddc3200a9cf8469239662da80c854) )
  1175: 
  1176: 	ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
  1177: 	ROM_LOAD( "26j4-0.bin",   0x00000, 0x20000, CRC(a8c93e76) SHA1(54d64f052971e7fa0d21c5ce12f87b0fa2b648d6) )	/* tiles */
  1178: 	ROM_LOAD( "26j5-0.bin",   0x20000, 0x20000, CRC(ee555237) SHA1(f9698f3e57f933a43e508f60667c860dee034d05) )
  1179: 
  1180: 	ROM_REGION( 0x40000, REGION_SOUND1, 0 ) /* adpcm samples */
  1181: 	ROM_LOAD( "26j6-0.bin",   0x00000, 0x20000, CRC(a84b2a29) SHA1(9cb529e4939c16a0a42f45dd5547c76c2f86f07b) )
  1182: 	ROM_LOAD( "26j7-0.bin",   0x20000, 0x20000, CRC(bc6a48d5) SHA1(04c434f8cd42a8f82a263548183569396f9b684d) )
  1183: 
  1184: 	ROM_REGION( 0x0200, REGION_PROMS, 0 )
  1185: 	ROM_LOAD( "prom.16",      0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )	/* unknown (same as ddragon) */
  1186: ROM_END
  1187: 
  1188: ROM_START( ddragn2u )
  1189: 	ROM_REGION( 0x28000, REGION_CPU1, 0 )	/* 64k for code */
  1190: 	ROM_LOAD( "26a9-04.bin",  0x08000, 0x8000, CRC(f2cfc649) SHA1(d3f1e0bae02472914a940222e4f600170a91736d) )
  1191: 	ROM_LOAD( "26aa-03.bin",  0x10000, 0x8000, CRC(44dd5d4b) SHA1(427c4e419668b41545928cfc96435c010ecdc88b) )
  1192: 	ROM_LOAD( "26ab-0.bin",   0x18000, 0x8000, CRC(49ddddcd) SHA1(91dc53718d04718b313f23d86e241027c89d1a03) )
  1193: 	ROM_LOAD( "26ac-02.bin",  0x20000, 0x8000, CRC(097eaf26) SHA1(60504abd30fec44c45197cdf3832c87d05ef577d) )
  1194: 
  1195: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sprite CPU 64kb (Upper 16kb = 0) */
  1196: 	ROM_LOAD( "26ae-0.bin",   0x00000, 0x10000, CRC(ea437867) SHA1(cd910203af0565f981b9bdef51ea6e9c33ee82d3) )
  1197: 
  1198: 	ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* music CPU, 64kb */
  1199: 	ROM_LOAD( "26ad-0.bin",   0x00000, 0x8000, CRC(75e36cd6) SHA1(f24805f4f6925b3ac508e66a6fc25c275b05f3b9) )
  1200: 
  1201: 	ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE )
  1202: 	ROM_LOAD( "26a8-0.bin",   0x00000, 0x10000, CRC(3ad1049c) SHA1(11d9544a56f8e6a84beb307a5c8a9ff8afc55c66) )	/* chars */
  1203: 
  1204: 	ROM_REGION( 0xc0000, REGION_GFX2, ROMREGION_DISPOSE )
  1205: 	ROM_LOAD( "26j0-0.bin",   0x00000, 0x20000, CRC(db309c84) SHA1(ee095e4a3bc86737539784945decb1f63da47b9b) )	/* sprites */
  1206: 	ROM_LOAD( "26j1-0.bin",   0x20000, 0x20000, CRC(c3081e0c) SHA1(c4a9ae151aae21073a2c79c5ac088c72d4f3d9db) )
  1207: 	ROM_LOAD( "26af-0.bin",   0x40000, 0x20000, CRC(3a615aad) SHA1(ec90a35224a177d00327de6fd1a299df38abd790) )
  1208: 	ROM_LOAD( "26j2-0.bin",   0x60000, 0x20000, CRC(589564ae) SHA1(1e6e0ef623545615e8409b6d3ba586a71e2612b6) )
  1209: 	ROM_LOAD( "26j3-0.bin",   0x80000, 0x20000, CRC(daf040d6) SHA1(ab0fd5482625dbe64f0f0b0baff5dcde05309b81) )
  1210: 	ROM_LOAD( "26a10-0.bin",  0xa0000, 0x20000, CRC(6d16d889) SHA1(3bc62b3e7f4ddc3200a9cf8469239662da80c854) )
  1211: 
  1212: 	ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE )
  1213: 	ROM_LOAD( "26j4-0.bin",   0x00000, 0x20000, CRC(a8c93e76) SHA1(54d64f052971e7fa0d21c5ce12f87b0fa2b648d6) )	/* tiles */
  1214: 	ROM_LOAD( "26j5-0.bin",   0x20000, 0x20000, CRC(ee555237) SHA1(f9698f3e57f933a43e508f60667c860dee034d05) )
  1215: 
  1216: 	ROM_REGION( 0x40000, REGION_SOUND1, 0 ) /* adpcm samples */
  1217: 	ROM_LOAD( "26j6-0.bin",   0x00000, 0x20000, CRC(a84b2a29) SHA1(9cb529e4939c16a0a42f45dd5547c76c2f86f07b) )
  1218: 	ROM_LOAD( "26j7-0.bin",   0x20000, 0x20000, CRC(bc6a48d5) SHA1(04c434f8cd42a8f82a263548183569396f9b684d) )
  1219: 
  1220: 	ROM_REGION( 0x0200, REGION_PROMS, 0 )
  1221: 	ROM_LOAD( "prom.16",      0x0000, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )	/* unknown (same as ddragon) */
  1222: ROM_END
  1223: 
  1224: ROM_START( toffy )
  1225: 	ROM_REGION( 0x28000, REGION_CPU1, 0 ) /* Main CPU? */
  1226: 	ROM_LOAD( "2-27512.rom", 0x00000, 0x10000, CRC(244709dd) SHA1(b2db51b910f1a031b94fb50e684351f657a465dc) )
  1227: 	ROM_RELOAD( 0x10000, 0x10000 )
  1228: 
  1229: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU? */
  1230: 	ROM_LOAD( "u142.1", 0x00000, 0x10000, CRC(541bd7f0) SHA1(3f0097f5877eae50651f94d46d7dd9127037eb6e) )
  1231: 
  1232: 	ROM_REGION( 0x10000, REGION_GFX1, 0 ) /* GFX? */
  1233: 	ROM_LOAD( "7-27512.rom", 0x000, 0x10000, CRC(f9e8ec64) SHA1(36891cd8f28800e03fe0eac84b2484a70011eabb) )
  1234: 
  1235: 	ROM_REGION( 0x20000, REGION_GFX3, 0 ) /* GFX */
  1236: 	/* the same as 'Dangerous Dungeons' once decrypted */
  1237: 	ROM_LOAD( "4-27512.rom", 0x00000, 0x10000, CRC(94b5ef6f) SHA1(32967f6cfc6a077c31923318891ed508f83e67f6) )
  1238: 	ROM_LOAD( "3-27512.rom", 0x10000, 0x10000, CRC(a7a053a3) SHA1(98625fe73a409c8d51136931a5f707a0bf75b66a) )
  1239: 
  1240: 	ROM_REGION( 0x20000, REGION_GFX2, 0 ) /* GFX */
  1241: 	ROM_LOAD( "6-27512.rom", 0x00000, 0x10000, CRC(2ba7ca47) SHA1(ad709fc871f1f1a7d4b0fdf0f516c53fd4c8b685) )
  1242: 	ROM_LOAD( "5-27512.rom", 0x10000, 0x10000, CRC(4f91eec6) SHA1(18a5f98dfba33837b73d032a6153eeb03263684b) )
  1243: ROM_END
  1244: 
  1245: ROM_START( stoffy )
  1246: 	ROM_REGION( 0x28000, REGION_CPU1, 0 ) /* Main CPU? */
  1247: 	ROM_LOAD( "u70.2", 0x00000, 0x10000, CRC(3c156610) SHA1(d7fdbc595bdc77c452da39da8b20774db0952e33) )
  1248: 	ROM_RELOAD( 0x10000, 0x10000 )
  1249: 
  1250: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU? */
  1251: 	ROM_LOAD( "u142.1", 0x00000, 0x10000, CRC(541bd7f0) SHA1(3f0097f5877eae50651f94d46d7dd9127037eb6e) ) // same as 'toffy'
  1252: 
  1253: 	ROM_REGION( 0x10000, REGION_GFX1, 0 ) /* GFX? */
  1254: 	ROM_LOAD( "u35.7", 0x00000, 0x10000, CRC(83735d25) SHA1(d82c046db0112d7d2877339652b2111f12513a4f) )
  1255: 
  1256: 	ROM_REGION( 0x20000, REGION_GFX3, 0 ) /* GFX */
  1257: 	ROM_LOAD( "u78.4", 0x00000, 0x10000, CRC(9743a74d) SHA1(876696c5e88e58e6e44671c33a4c140be02a941e) ) // 0
  1258: 	ROM_LOAD( "u77.3", 0x10000, 0x10000, CRC(f267109a) SHA1(679d2147c79636796dda850345c04ad8a9daa6af) ) // 0
  1259: 
  1260: 	ROM_REGION( 0x20000, REGION_GFX2, 0 ) /* GFX */
  1261: 	ROM_LOAD( "u80.5", 0x00000, 0x10000, CRC(ff190865) SHA1(245e69651d0161fcb416bba8f743602b4ee83139) ) // 1 | should be u80.6 ?
  1262: 	ROM_LOAD( "u79.5", 0x10000, 0x10000, CRC(333d5b8a) SHA1(d3573db87e2318c144ee9ace6c975a70fc96f4c4) ) // 1
  1263: ROM_END
  1264: 
  1265: ROM_START( ddungeon )
  1266: 	/* there were various double dragon roms in the zip but
  1267: 	I'm not sure they're needed, there is also an undumped MCU */
  1268: 	ROM_REGION( 0x28000, REGION_CPU1, 0 ) /* Main CPU? */
  1269: 	ROM_LOAD( "dd3.bin", 0x10000, 0x8000, CRC(922e719c) )
  1270: 	ROM_LOAD( "dd2.bin", 0x08000, 0x8000, CRC(a6e7f608) )
  1271: 
  1272: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* Sound CPU? */
  1273: 	// I guess it uses ddragon's Sound Rom?
  1274: 
  1275: 	ROM_REGION( 0x10000, REGION_GFX1, 0 ) /* GFX? */
  1276: 	ROM_LOAD( "dd6.bin", 0x00000, 0x08000, CRC(057588ca) )
  1277: 
  1278: 	ROM_REGION( 0x20000, REGION_GFX3, 0 ) /* GFX */
  1279: 	ROM_LOAD( "dd-6b.bin", 0x00000, 0x08000, CRC(3deacae9) ) // 0
  1280: 	ROM_LOAD( "dd-7c.bin", 0x10000, 0x08000, CRC(5a2f31eb) ) // 0
  1281: 
  1282: 	ROM_REGION( 0x20000, REGION_GFX2, 0 ) /* GFX */
  1283: 	ROM_LOAD( "dd-7r.bin", 0x00000, 0x08000, CRC(50d6ab5d) ) // 1
  1284: 	ROM_LOAD( "dd-7k.bin", 0x10000, 0x08000, CRC(43264ad8) ) // 1
  1285: ROM_END
  1286: 
  1287: ROM_START( darktowr )
  1288: 	ROM_REGION( 0x28000, REGION_CPU1, 0 )	/* 64k for code + bankswitched memory */
  1289: 	ROM_LOAD( "dt.26",         0x08000, 0x08000, CRC(8134a472) SHA1(7d42d2ed8d09855241d98ed94bce140a314c2f66) )
  1290: 	ROM_LOAD( "21j-2-3.25",    0x10000, 0x08000, CRC(5779705e) SHA1(4b8f22225d10f5414253ce0383bbebd6f720f3af) ) /* from ddragon */
  1291: 	ROM_LOAD( "dt.24",         0x18000, 0x08000, CRC(523a5413) SHA1(71c04287e4f2e792c98abdeb97fe70abd0d5e918) ) /* banked at 0x4000-0x8000 */
  1292: 	/* IC23 is replaced with a daughterboard containing a 68705 MCU */
  1293: 
  1294: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sprite cpu */
  1295: 	ROM_LOAD( "63701.bin",    0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
  1296: 
  1297: 	ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* audio cpu */
  1298: 	ROM_LOAD( "21j-0-1",      0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) ) /* from ddragon */
  1299: 
  1300: 	ROM_REGION( 0x0800, REGION_CPU4, 0 )	/* 8k for the microcontroller */
  1301: 	ROM_LOAD( "68705prt.mcu",   0x00000, 0x0800, CRC(34cbb2d3) SHA1(8e0c3b13c636012d88753d547c639b1a8af85680) )
  1302: 
  1303: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE ) /* chars */
  1304: 	ROM_LOAD( "dt.20",        0x00000, 0x08000, CRC(860b0298) SHA1(087e4e6511c5bed74ffbfd077ece55a756b13253) )
  1305: 
  1306: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE ) /* sprites */
  1307: 	ROM_LOAD( "dt.117",       0x00000, 0x10000, CRC(750dd0fa) SHA1(d95b95a54c7ed87a27edb8660810dd89efa10c9f) )
  1308: 	ROM_LOAD( "dt.116",       0x10000, 0x10000, CRC(22cfa87b) SHA1(0008a41f307be96be91f491bdeaa1fa450dd0fdf) )
  1309: 	ROM_LOAD( "dt.115",       0x20000, 0x10000, CRC(8a9f1c34) SHA1(1f07f424b2ab14a051f2c84b3d89fc5d35c5f20b) )
  1310: 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) ) /* from ddragon */
  1311: 	ROM_LOAD( "dt.113",       0x40000, 0x10000, CRC(7b4bbf9c) SHA1(d0caa3c38e059d3ee48e3e801da36f67457ed542) )
  1312: 	ROM_LOAD( "dt.112",       0x50000, 0x10000, CRC(df3709d4) SHA1(9cca44be97260e730786db8244a0d655c86537aa) )
  1313: 	ROM_LOAD( "dt.111",       0x60000, 0x10000, CRC(59032154) SHA1(637372e4619472a958f4971b50a6fe0985bffc8b) )
  1314: 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) ) /* from ddragon */
  1315: 
  1316: 	ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE ) /* tiles */
  1317: 	ROM_LOAD( "dt.78",        0x00000, 0x10000, CRC(72c15604) SHA1(202b46a2445eea5877e986a871bb0a6b76b88a6f) )
  1318: 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) ) /* from ddragon */
  1319: 	ROM_LOAD( "dt.109",       0x20000, 0x10000, CRC(15bdcb62) SHA1(75382a3805dc333b196e119d28b5c3f320bd9f2a) )
  1320: 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) ) /* from ddragon */
  1321: 
  1322: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* adpcm samples */
  1323: 	ROM_LOAD( "21j-6",        0x00000, 0x10000, CRC(34755de3) SHA1(57c06d6ce9497901072fa50a92b6ed0d2d4d6528) ) /* from ddragon */
  1324: 	ROM_LOAD( "21j-7",        0x10000, 0x10000, CRC(904de6f8) SHA1(3623e5ea05fd7c455992b7ed87e605b87c3850aa) ) /* from ddragon */
  1325: 
  1326: 	ROM_REGION( 0x0300, REGION_PROMS, 0 )
  1327: 	ROM_LOAD( "21j-k-0",      0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )	/* unknown */ /* from ddragon */
  1328: 	ROM_LOAD( "21j-l-0",      0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )	/* unknown */ /* from ddragon */
  1329: ROM_END
  1330: 
  1331: ROM_START( tstrike )
  1332: 	ROM_REGION( 0x28000, REGION_CPU1, 0 )	/* 64k for code + bankswitched memory */
  1333: 	ROM_LOAD( "tstrike.26",      0x08000, 0x08000, CRC(871b10bc) )
  1334: 	ROM_LOAD( "tstrike.25",      0x10000, 0x08000, CRC(b6a0c2f3) ) /* banked at 0x4000-0x8000 */
  1335: 	ROM_LOAD( "tstrike.24",      0x18000, 0x08000, CRC(363816fa) ) /* banked at 0x4000-0x8000 */
  1336: 	/* IC23 is replaced with a daughterboard containing a 68705 MCU */
  1337: 
  1338: 	ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* sprite cpu */
  1339: 	ROM_LOAD( "63701.bin",    0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
  1340: 
  1341: 	ROM_REGION( 0x10000, REGION_CPU3, 0 ) /* audio cpu */
  1342: 	ROM_LOAD( "tstrike.30",      0x08000, 0x08000, CRC(3f3f04a1) )
  1343: 
  1344: 	ROM_REGION( 0x0800, REGION_CPU4, 0 )	/* 8k for the microcontroller */
  1345: 	ROM_LOAD( "68705prt.mcu",   0x00000, 0x0800, CRC(34cbb2d3) SHA1(8e0c3b13c636012d88753d547c639b1a8af85680) )
  1346: 
  1347: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
  1348: 	ROM_LOAD( "tstrike.20",        0x00000, 0x08000, CRC(b6b8bfa0) )	/* chars */
  1349: 
  1350: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE ) 	/* sprites */
  1351: 	ROM_LOAD( "tstrike.117",  0x00000, 0x10000, CRC(f7122c0d) )
  1352: 	ROM_LOAD( "21j-b",        0x10000, 0x10000, CRC(40507a76) SHA1(74581a4b6f48100bddf20f319903af2fe36f39fa) ) /* from ddragon (116) */
  1353: 	ROM_LOAD( "tstrike.115",  0x20000, 0x10000, CRC(a13c7b62) )
  1354: 	ROM_LOAD( "21j-d",        0x30000, 0x10000, CRC(cb4f231b) SHA1(9f2270f9ceedfe51c5e9a9bbb00d6f43dbc4a3ea) ) /* from ddragon (114) */
  1355: 	ROM_LOAD( "tstrike.113",  0x40000, 0x10000, CRC(5ad60938) )
  1356: 	ROM_LOAD( "21j-f",        0x50000, 0x10000, CRC(6ba152f6) SHA1(a301ff809be0e1471f4ff8305b30c2fa4aa57fae) ) /* from ddragon (112) */
  1357: 	ROM_LOAD( "tstrike.111",  0x60000, 0x10000, CRC(7b9c87ad) )
  1358: 	ROM_LOAD( "21j-h",        0x70000, 0x10000, CRC(65c7517d) SHA1(f177ba9c1c7cc75ff04d5591b9865ee364788f94) ) /* from ddragon (110) */
  1359: 
  1360: 	ROM_REGION( 0x40000, REGION_GFX3, ROMREGION_DISPOSE ) 	/* tiles */
  1361: 	ROM_LOAD( "tstrike.78",   0x00000, 0x10000, CRC(88284aec) )
  1362: 	ROM_LOAD( "21j-9",        0x10000, 0x10000, CRC(c6640aed) SHA1(f156c337f48dfe4f7e9caee9a72c7ea3d53e3098) ) /* from ddragon (77) */
  1363: 	ROM_LOAD( "tstrike.109",  0x20000, 0x10000, CRC(8c2cd0bb) )
  1364: 	ROM_LOAD( "21j-j",        0x30000, 0x10000, CRC(5fb42e7c) SHA1(7953316712c56c6f8ca6bba127319e24b618b646) ) /* from ddragon (108) */
  1365: 
  1366: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 ) /* adpcm samples */
  1367: 	ROM_LOAD( "tstrike.94",        0x00000, 0x10000, CRC(8a2c09fc) ) /* first+second half identical */
  1368: 	ROM_LOAD( "tstrike.95",        0x10000, 0x08000, CRC(1812eecb) )
  1369: 
  1370: 	ROM_REGION( 0x0300, REGION_PROMS, 0 )
  1371: 	ROM_LOAD( "21j-k-0",      0x0000, 0x0100, CRC(fdb130a9) SHA1(4c4f214229b9fab2b5d69c745ec5428787b89e1f) )	/* unknown */
  1372: 	ROM_LOAD( "21j-l-0",      0x0100, 0x0200, CRC(46339529) SHA1(64f4c42a826d67b7cbaa8a23a45ebc4eb6248891) )	/* unknown */
  1373: ROM_END
  1374: 
  1375: /** INITS **
  1376: toffy / stoffy are 'encrytped
  1377: 
  1378: */
  1379: 
  1380: static DRIVER_INIT( toffy )
  1381: {
  1382: 	/* the program rom has a simple bitswap encryption */
  1383: 	data8_t *rom=memory_region(REGION_CPU1);
  1384: 	int i;
  1385: 
  1386: 	for (i = 0;i < 0x20000;i++)
  1387: 		rom[i] = BITSWAP8(rom[i] , 6,7,5,4,3,2,1,0);
  1388: 
  1389: 	/* and the fg gfx ... */
  1390: 	rom=memory_region(REGION_GFX1);
  1391: 
  1392: 	for (i = 0;i < 0x10000;i++)
  1393: 		rom[i] = BITSWAP8(rom[i] , 7,6,5,3,4,2,1,0);
  1394: 
  1395: 	/* and the bg gfx */
  1396: 	rom=memory_region(REGION_GFX3);
  1397: 
  1398: 	for (i = 0;i < 0x10000;i++)
  1399: 	{
  1400: 		rom[i] = BITSWAP8(rom[i] , 7,6,1,4,3,2,5,0);
  1401: 		rom[i+0x10000] = BITSWAP8(rom[i+0x10000] , 7,6,2,4,3,5,1,0);
  1402: 	}
  1403: 
  1404: 	/* and the sprites gfx */
  1405: 	rom=memory_region(REGION_GFX2);
  1406: 
  1407: 	for (i = 0;i < 0x20000;i++)
  1408: 		rom[i] = BITSWAP8(rom[i] , 7,6,5,4,3,2,0,1);
  1409: 
  1410: 	/* should the sound rom be bitswapped too? */
  1411: 
  1412: }
  1413: 
  1414: GAME( 1987, ddragon,  0,        ddragon,  ddragon,  0, ROT0, "Technos", "Double Dragon (Japan)" )
  1415: GAME( 1987, ddragonu, ddragon,  ddragon,  ddragon,  0, ROT0, "[Technos] (Taito America license)", "Double Dragon (US)" )
  1416: GAME( 1987, ddragonb, ddragon,  ddragonb, ddragon,  0, ROT0, "bootleg", "Double Dragon (bootleg)" )
  1417: GAME( 1988, ddragon2, 0,        ddragon2, ddragon2, 0, ROT0, "Technos", "Double Dragon II - The Revenge (World)" )
  1418: GAME( 1988, ddragn2u, ddragon2, ddragon2, ddragon2, 0, ROT0, "Technos", "Double Dragon II - The Revenge (US)" )
  1419: 
  1420: /* these were conversions of double dragon */
  1421: GAMEX( 199?, ddungeon,  0,        darktowr,  ddragon,  0, ROT0, "East Coast Coin Company (Melbourne)", "Dangerous Dungeons", GAME_NOT_WORKING )
  1422: GAMEX( 1992, darktowr,  0,        darktowr,  darktowr,  0, ROT0, "Game Room", "Dark Tower", GAME_NO_COCKTAIL )
  1423: GAMEX( 19??, tstrike,   0,        darktowr,  ddragon,  0, ROT0, "Game Room", "Thunder Strike", GAME_NOT_WORKING )
  1424: 
  1425: /* these run on their own board, but are basically the same game. Toffy even has 'dangerous dungeons' text in it */
  1426: GAME( 1993, toffy,  0, toffy, toffy, toffy, ROT0, "Midas",                 "Toffy" )
  1427: GAME( 1994, stoffy, 0, toffy, toffy, toffy, ROT0, "Midas (Unico license)", "Super Toffy" )
  1428: 




powered by ggdb.com this page took approx. 0.007s