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

Coin-Op : Arcade : Darius II : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3: Taito Triple Screen Games
     4: =========================
     5: 
     6: Ninja Warriors (c) 1987 Taito
     7: Darius 2       (c) 1989 Taito
     8: 
     9: David Graves
    10: 
    11: (this is based on the F2 driver by Bryan McPhail, Brad Oliver, Andrew Prime,
    12: Nicola Salmoria. Thanks to Richard Bush and the Raine team, whose open
    13: source was very helpful in many areas particularly the sprites.)
    14: 
    15: 				*****
    16: 
    17: The triple screen games operate on hardware with various similarities to
    18: the Taito F2 system, as they share some custom ics e.g. the TC0100SCN.
    19: 
    20: According to Sixtoe: "The multi-monitor systems had 2 or 3 13" screens;
    21: one in the middle facing the player, and the other 1 or 2 on either side
    22: mounted below and facing directly up reflecting off special semi-reflecting
    23: mirrors, with about 1" of the graphics being overlapped on each screen.
    24: This was the only way to get uninterrupted screens and to be able to see
    25: through both ways. Otherwise you`d have the monitors' edges visible.
    26: You can tell if your arcade has been cheap (like one near me) when you
    27: look at the screens and can see black triangles on the left or right, this
    28: means they bought ordinary mirrors and you can't see through them the
    29: wrong way, as the semi-reflecting mirrors were extremely expensive."
    30: 
    31: For each screen the games have 3 separate layers of graphics:- one
    32: 128x64 tiled scrolling background plane of 8x8 tiles, a similar
    33: foreground plane, and a 128x32 text plane with character definitions
    34: held in ram.
    35: 
    36: Writing to the first TC0100SCN "writes through" to the two subsidiary
    37: chips so that all three have identical contents. The subsidiary ones are
    38: only addressed individually during initial memory checks, I think. (?)
    39: 
    40: There is a single sprite plane which covers all 3 screens.
    41: The sprites are 16x16 and are not zoomable.
    42: 
    43: Twin 68000 processors are used; both have access to sprite ram and
    44: the tilemap areas, and they communicate via 64K of shared ram.
    45: 
    46: Sound is dealt with by a Z80 controlling a YM2610. Sound commands
    47: are written to the Z80 by the 68000 (the same as in Taito F2 games).
    48: 
    49: 
    50: Tilemaps
    51: ========
    52: 
    53: TC0100SCN has tilemaps twice as wide as usual. The two BG tilemaps take
    54: up twice the usual space, $8000 bytes each. The text tilemap takes up
    55: the usual space, because its height is halved.
    56: 
    57: The triple palette generator (one for each screen) is probably just a
    58: result of the way the hardware works: the colors in each are the same.
    59: 
    60: 
    61: Dumpers Notes
    62: -------------
    63: 
    64: Ninja Warriors (JPN Ver.)
    65: (c)1987 Taito
    66: 
    67: Sound Board
    68: K1100313A
    69: CPU 	:Z80
    70: Sound	:YM2610
    71: OSC 	:16000.00KHz
    72: Other	:TC0140SYT,TC0060DCA x2
    73: -----------------------
    74: B31-08.19
    75: B31-09.18
    76: B31-10.17
    77: B31-11.16
    78: B31_37.11
    79: -----------------------
    80: CPU Board
    81: M4300086A
    82: K1100311A
    83: CPU 	:TS68000CP8 x2
    84: Sound	:YM2610
    85: OSC 	:26686.00KHz,16000.00KHz
    86: Other	:TC0040IOC,TC0070RGB x3,TC0110PCR x3,TC0100SCN x3
    87: -----------------------
    88: B31-01.23
    89: B31-01.26
    90: B31-01.28
    91: B31-02.24
    92: B31-02.27
    93: B31-02.29
    94: B31_27.31
    95: B31_28.32
    96: B31_29.34
    97: B31_30.35
    98: B31_31.85
    99: B31_32.86
   100: B31_33.87
   101: B31_34.95
   102: B31_35.96
   103: B31_36.97
   104: B31_38.3
   105: B31_39.2
   106: B31_40.6
   107: B31_41.5
   108: -----------------------
   109: OBJECT Board
   110: K1100312A
   111: Other	:TC0120SHT
   112: -----------------------
   113: B31-04.173
   114: B31-05.174
   115: B31-06.175
   116: B31-07.176
   117: B31-25.38
   118: B31-26.58
   119: 
   120: 
   121: TODO
   122: ====
   123: 
   124: Verify 68000 clock rates. Unknown sprite bits.
   125: 
   126: 
   127: Ninjaw
   128: ------
   129: 
   130: "Subwoofer" sound filtering isn't perfect.
   131: 
   132: Some enemies slide relative to the background when they should
   133: be standing still. High cpu interleaving doesn't help much.
   134: 
   135: 
   136: Darius 2
   137: --------
   138: 
   139: "Subwoofer" sound filtering isn't perfect.
   140: 
   141: (When you lose a life or big enemies appear it's meant to create
   142: rumbling on a subwoofer in the cabinet.)
   143: 
   144: 
   145: ***************************************************************************/
   146: 
   147: #include "driver.h" 
   148: #include "state.h" 
   149: #include "cpu/m68000/m68000.h" 
   150: #include "vidhrdw/generic.h" 
   151: #include "vidhrdw/taitoic.h" 
   152: #include "sndhrdw/taitosnd.h" 
   153: 
   154: MACHINE_INIT( ninjaw );
   155: 
   156: VIDEO_START( ninjaw );
   157: VIDEO_UPDATE( ninjaw );
   158: 
   159: static UINT16 cpua_ctrl = 0xff;
   160: 
   161: static size_t sharedram_size;
   162: static data16_t *sharedram;
   163: 
   164: 
   165: static READ16_HANDLER( sharedram_r )
   166: {
   167: 	return sharedram[offset];
   168: }
   169: 
   170: static WRITE16_HANDLER( sharedram_w )
   171: {
   172: 	COMBINE_DATA(&sharedram[offset]);
   173: }
   174: 
   175: static void parse_control(void)	/* assumes Z80 sandwiched between 68Ks */
   176: {
   177: 	/* bit 0 enables cpu B */
   178: 	/* however this fails when recovering from a save state
   179: 	   if cpu B is disabled !! */
   180: 	cpu_set_reset_line(2,(cpua_ctrl &0x1) ? CLEAR_LINE : ASSERT_LINE);
   181: 
   182: }
   183: 
   184: static WRITE16_HANDLER( cpua_ctrl_w )
   185: {
   186: 	if ((data &0xff00) && ((data &0xff) == 0))
   187: 		data = data >> 8;	/* for Wgp */
   188: 	cpua_ctrl = data;
   189: 
   190: 	parse_control();
   191: 
   192: 	logerror("CPU #0 PC %06x: write %04x to cpu control\n",activecpu_get_pc(),data);
   193: }
   194: 
   195: 
   196: /*****************************************
   197: 			SOUND
   198: *****************************************/
   199: 
   200: static int banknum = -1;
   201: 
   202: static void reset_sound_region(void)
   203: {
   204: 	cpu_setbank( 10, memory_region(REGION_CPU2) + (banknum * 0x4000) + 0x10000 );
   205: }
   206: 
   207: static WRITE_HANDLER( sound_bankswitch_w )
   208: {
   209: 	banknum = (data - 1) & 7;
   210: 	reset_sound_region();
   211: }
   212: 
   213: static WRITE16_HANDLER( ninjaw_sound_w )
   214: {
   215: 	if (offset == 0)
   216: 		taitosound_port_w (0, data & 0xff);
   217: 	else if (offset == 1)
   218: 		taitosound_comm_w (0, data & 0xff);
   219: 
   220: #ifdef MAME_DEBUG 
   221: 	if (data & 0xff00)
   222: 		usrintf_showmessage("ninjaw_sound_w to high byte: %04x",data);
   223: #endif 
   224: }
   225: 
   226: static READ16_HANDLER( ninjaw_sound_r )
   227: {
   228: 	if (offset == 1)
   229: 		return ((taitosound_comm_r (0) & 0xff));
   230: 	else return 0;
   231: }
   232: 
   233: 
   234: /**** sound pan control ****/
   235: static int ninjaw_pandata[4];
   236: WRITE_HANDLER( ninjaw_pancontrol )
   237: {
   238:   offset = offset&3;
   239:   ninjaw_pandata[offset] = (float)data * (100.f / 255.0f);
   240:   //usrintf_showmessage(" pan %02x %02x %02x %02x", ninjaw_pandata[0], ninjaw_pandata[1], ninjaw_pandata[2], ninjaw_pandata[3] );
   241:   if( offset < 2 ){
   242:     mixer_set_stereo_volume( 3, ninjaw_pandata[0], ninjaw_pandata[1] );
   243:   }
   244:   else{
   245:     mixer_set_stereo_volume( 4, ninjaw_pandata[2], ninjaw_pandata[3] );
   246:   }
   247: }
   248: 
   249: 
   250: /***********************************************************
   251: 			 MEMORY STRUCTURES
   252: ***********************************************************/
   253: 
   254: static MEMORY_READ16_START( ninjaw_readmem )
   255: 	{ 0x000000, 0x0bffff, MRA16_ROM },
   256: 	{ 0x0c0000, 0x0cffff, MRA16_RAM },	/* main ram */
   257: 	{ 0x200000, 0x200001, TC0220IOC_halfword_portreg_r },
   258: 	{ 0x200002, 0x200003, TC0220IOC_halfword_port_r },
   259: 	{ 0x220000, 0x220003, ninjaw_sound_r },
   260: 	{ 0x240000, 0x24ffff, sharedram_r },
   261: 	{ 0x260000, 0x263fff, MRA16_RAM },			/* sprite ram */
   262: 	{ 0x280000, 0x293fff, TC0100SCN_word_0_r },	/* tilemaps (1st screen) */
   263: 	{ 0x2a0000, 0x2a000f, TC0100SCN_ctrl_word_0_r },
   264: 	{ 0x2c0000, 0x2d3fff, TC0100SCN_word_1_r },	/* tilemaps (2nd screen) */
   265: 	{ 0x2e0000, 0x2e000f, TC0100SCN_ctrl_word_1_r },
   266: 	{ 0x300000, 0x313fff, TC0100SCN_word_2_r },	/* tilemaps (3rd screen) */
   267: 	{ 0x320000, 0x32000f, TC0100SCN_ctrl_word_2_r },
   268: 	{ 0x340000, 0x340007, TC0110PCR_word_r },		/* palette (1st screen) */
   269: 	{ 0x350000, 0x350007, TC0110PCR_word_1_r },	/* palette (2nd screen) */
   270: 	{ 0x360000, 0x360007, TC0110PCR_word_2_r },	/* palette (3rd screen) */
   271: MEMORY_END
   272: 
   273: static MEMORY_WRITE16_START( ninjaw_writemem )
   274: 	{ 0x000000, 0x0bffff, MWA16_ROM },
   275: 	{ 0x0c0000, 0x0cffff, MWA16_RAM },
   276: 	{ 0x200000, 0x200001, TC0220IOC_halfword_portreg_w },
   277: 	{ 0x200002, 0x200003, TC0220IOC_halfword_port_w },
   278: 	{ 0x210000, 0x210001, cpua_ctrl_w },
   279: 	{ 0x220000, 0x220003, ninjaw_sound_w },
   280: 	{ 0x240000, 0x24ffff, sharedram_w, &sharedram, &sharedram_size },
   281: 	{ 0x260000, 0x263fff, MWA16_RAM, &spriteram16, &spriteram_size },
   282: 	{ 0x280000, 0x293fff, TC0100SCN_triple_screen_w },	/* tilemaps (all screens) */
   283: 	{ 0x2a0000, 0x2a000f, TC0100SCN_ctrl_word_0_w },
   284: 	{ 0x2c0000, 0x2d3fff, TC0100SCN_word_1_w },	/* tilemaps (2nd screen) */
   285: 	{ 0x2e0000, 0x2e000f, TC0100SCN_ctrl_word_1_w },
   286: 	{ 0x300000, 0x313fff, TC0100SCN_word_2_w },	/* tilemaps (3rd screen) */
   287: 	{ 0x320000, 0x32000f, TC0100SCN_ctrl_word_2_w },
   288: 	{ 0x340000, 0x340007, TC0110PCR_step1_word_w },		/* palette (1st screen) */
   289: 	{ 0x350000, 0x350007, TC0110PCR_step1_word_1_w },	/* palette (2nd screen) */
   290: 	{ 0x360000, 0x360007, TC0110PCR_step1_word_2_w },	/* palette (3rd screen) */
   291: MEMORY_END
   292: 
   293: // NB there could be conflicts between which cpu writes what to the
   294: // palette, as our interleaving won't match the original board.
   295: 
   296: static MEMORY_READ16_START( ninjaw_cpub_readmem )
   297: 	{ 0x000000, 0x05ffff, MRA16_ROM },
   298: 	{ 0x080000, 0x08ffff, MRA16_RAM },	/* main ram */
   299: 	{ 0x200000, 0x200001, TC0220IOC_halfword_portreg_r },
   300: 	{ 0x200002, 0x200003, TC0220IOC_halfword_port_r },
   301: 	{ 0x240000, 0x24ffff, sharedram_r },
   302: 	{ 0x260000, 0x263fff, spriteram16_r },	/* sprite ram */
   303: 	{ 0x280000, 0x293fff, TC0100SCN_word_0_r },	/* tilemaps (1st screen) */
   304: 	{ 0x340000, 0x340007, TC0110PCR_word_r },		/* palette (1st screen) */
   305: 	{ 0x350000, 0x350007, TC0110PCR_word_1_r },	/* palette (2nd screen) */
   306: 	{ 0x360000, 0x360007, TC0110PCR_word_2_r },	/* palette (3rd screen) */
   307: MEMORY_END
   308: 
   309: static MEMORY_WRITE16_START( ninjaw_cpub_writemem )
   310: 	{ 0x000000, 0x05ffff, MWA16_ROM },
   311: 	{ 0x080000, 0x08ffff, MWA16_RAM },
   312: 	{ 0x200000, 0x200001, TC0220IOC_halfword_portreg_w },
   313: 	{ 0x200002, 0x200003, TC0220IOC_halfword_port_w },
   314: 	{ 0x240000, 0x24ffff, sharedram_w, &sharedram },
   315: 	{ 0x260000, 0x263fff, spriteram16_w },
   316: 	{ 0x280000, 0x293fff, TC0100SCN_triple_screen_w },	/* tilemaps (all screens) */
   317: 	{ 0x340000, 0x340007, TC0110PCR_step1_word_w },		/* palette (1st screen) */
   318: 	{ 0x350000, 0x350007, TC0110PCR_step1_word_1_w },	/* palette (2nd screen) */
   319: 	{ 0x360000, 0x360007, TC0110PCR_step1_word_2_w },	/* palette (3rd screen) */
   320: MEMORY_END
   321: 
   322: 
   323: static MEMORY_READ16_START( darius2_readmem )
   324: 	{ 0x000000, 0x0bffff, MRA16_ROM },
   325: 	{ 0x0c0000, 0x0cffff, MRA16_RAM },	/* main ram */
   326: 	{ 0x200000, 0x200001, TC0220IOC_halfword_portreg_r },
   327: 	{ 0x200002, 0x200003, TC0220IOC_halfword_port_r },
   328: 	{ 0x220000, 0x220003, ninjaw_sound_r },
   329: 	{ 0x240000, 0x24ffff, sharedram_r },
   330: 	{ 0x260000, 0x263fff, MRA16_RAM },	/* sprite ram */
   331: 	{ 0x280000, 0x293fff, TC0100SCN_word_0_r },	/* tilemaps (1st screen) */
   332: 	{ 0x2a0000, 0x2a000f, TC0100SCN_ctrl_word_0_r },
   333: 	{ 0x2c0000, 0x2d3fff, TC0100SCN_word_1_r },	/* tilemaps (2nd screen) */
   334: 	{ 0x2e0000, 0x2e000f, TC0100SCN_ctrl_word_1_r },
   335: 	{ 0x300000, 0x313fff, TC0100SCN_word_2_r },	/* tilemaps (3rd screen) */
   336: 	{ 0x320000, 0x32000f, TC0100SCN_ctrl_word_2_r },
   337: 	{ 0x340000, 0x340007, TC0110PCR_word_r },		/* palette (1st screen) */
   338: 	{ 0x350000, 0x350007, TC0110PCR_word_1_r },	/* palette (2nd screen) */
   339: 	{ 0x360000, 0x360007, TC0110PCR_word_2_r },	/* palette (3rd screen) */
   340: MEMORY_END
   341: 
   342: static MEMORY_WRITE16_START( darius2_writemem )
   343: 	{ 0x000000, 0x0bffff, MWA16_ROM },
   344: 	{ 0x0c0000, 0x0cffff, MWA16_RAM },
   345: 	{ 0x200000, 0x200001, TC0220IOC_halfword_portreg_w },
   346: 	{ 0x200002, 0x200003, TC0220IOC_halfword_port_w },
   347: 	{ 0x210000, 0x210001, cpua_ctrl_w },
   348: 	{ 0x220000, 0x220003, ninjaw_sound_w },
   349: 	{ 0x240000, 0x24ffff, sharedram_w, &sharedram, &sharedram_size },
   350: 	{ 0x260000, 0x263fff, MWA16_RAM, &spriteram16, &spriteram_size },
   351: 	{ 0x280000, 0x293fff, TC0100SCN_triple_screen_w },	/* tilemaps (all screens) */
   352: 	{ 0x2a0000, 0x2a000f, TC0100SCN_ctrl_word_0_w },
   353: 	{ 0x2c0000, 0x2d3fff, TC0100SCN_word_1_w },	/* tilemaps (2nd screen) */
   354: 	{ 0x2e0000, 0x2e000f, TC0100SCN_ctrl_word_1_w },
   355: 	{ 0x300000, 0x313fff, TC0100SCN_word_2_w },	/* tilemaps (3rd screen) */
   356: 	{ 0x320000, 0x32000f, TC0100SCN_ctrl_word_2_w },
   357: 	{ 0x340000, 0x340007, TC0110PCR_step1_word_w },		/* palette (1st screen) */
   358: 	{ 0x350000, 0x350007, TC0110PCR_step1_word_1_w },	/* palette (2nd screen) */
   359: 	{ 0x360000, 0x360007, TC0110PCR_step1_word_2_w },	/* palette (3rd screen) */
   360: MEMORY_END
   361: 
   362: static MEMORY_READ16_START( darius2_cpub_readmem )
   363: 	{ 0x000000, 0x05ffff, MRA16_ROM },
   364: 	{ 0x080000, 0x08ffff, MRA16_RAM },	/* main ram */
   365: 	{ 0x200000, 0x200001, TC0220IOC_halfword_portreg_r },
   366: 	{ 0x200002, 0x200003, TC0220IOC_halfword_port_r },
   367: 	{ 0x240000, 0x24ffff, sharedram_r },
   368: 	{ 0x260000, 0x263fff, spriteram16_r },	/* sprite ram */
   369: 	{ 0x280000, 0x293fff, TC0100SCN_word_0_r },	/* tilemaps (1st screen) */
   370: MEMORY_END
   371: 
   372: static MEMORY_WRITE16_START( darius2_cpub_writemem )
   373: 	{ 0x000000, 0x05ffff, MWA16_ROM },
   374: 	{ 0x080000, 0x08ffff, MWA16_RAM },
   375: 	{ 0x200000, 0x200001, TC0220IOC_halfword_portreg_w },
   376: 	{ 0x200002, 0x200003, TC0220IOC_halfword_port_w },
   377: 	{ 0x240000, 0x24ffff, sharedram_w, &sharedram },
   378: 	{ 0x260000, 0x263fff, spriteram16_w },
   379: 	{ 0x280000, 0x293fff, TC0100SCN_triple_screen_w },	/* tilemaps (all screens) */
   380: MEMORY_END
   381: 
   382: 
   383: /***************************************************************************/
   384: 
   385: static MEMORY_READ_START( z80_sound_readmem )
   386: 	{ 0x0000, 0x3fff, MRA_ROM },
   387: 	{ 0x4000, 0x7fff, MRA_BANK10 },
   388: 	{ 0xc000, 0xdfff, MRA_RAM },
   389: 	{ 0xe000, 0xe000, YM2610_status_port_0_A_r },
   390: 	{ 0xe001, 0xe001, YM2610_read_port_0_r },
   391: 	{ 0xe002, 0xe002, YM2610_status_port_0_B_r },
   392: 	{ 0xe200, 0xe200, MRA_NOP },
   393: 	{ 0xe201, 0xe201, taitosound_slave_comm_r },
   394: 	{ 0xea00, 0xea00, MRA_NOP },
   395: MEMORY_END
   396: 
   397: static MEMORY_WRITE_START( z80_sound_writemem )
   398: 	{ 0x0000, 0x7fff, MWA_ROM },
   399: 	{ 0xc000, 0xdfff, MWA_RAM },
   400: 	{ 0xe000, 0xe000, YM2610_control_port_0_A_w },
   401: 	{ 0xe001, 0xe001, YM2610_data_port_0_A_w },
   402: 	{ 0xe002, 0xe002, YM2610_control_port_0_B_w },
   403: 	{ 0xe003, 0xe003, YM2610_data_port_0_B_w },
   404: 	{ 0xe200, 0xe200, taitosound_slave_port_w },
   405: 	{ 0xe201, 0xe201, taitosound_slave_comm_w },
   406: 	{ 0xe400, 0xe403, ninjaw_pancontrol }, /* pan */
   407: 	{ 0xee00, 0xee00, MWA_NOP }, /* ? */
   408: 	{ 0xf000, 0xf000, MWA_NOP }, /* ? */
   409: 	{ 0xf200, 0xf200, sound_bankswitch_w },
   410: MEMORY_END
   411: 
   412: 
   413: /***********************************************************
   414: 			 INPUT PORTS, DIPs
   415: ***********************************************************/
   416: 
   417: #define NINJAW_DSWA \ 
   418: 	PORT_START \
   419: 	PORT_DIPNAME( 0x01, 0x01, "Allow Continue" ) \
   420: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) ) \
   421: 	PORT_DIPSETTING(    0x01, DEF_STR( On ) ) \
   422: 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unused ) ) \
   423: 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) ) \
   424: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) ) \
   425: 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW ) \
   426: 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) \
   427: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) ) \
   428: 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
   429: 
   430: #define NINJAW_DSWB \ 
   431: 	PORT_START \
   432: 	TAITO_DIFFICULTY_8 \
   433: 	PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) )  /* all 6 in manual */ \
   434: 	PORT_DIPSETTING(    0x04, DEF_STR( Off ) ) \
   435: 	PORT_DIPSETTING(    0x00, DEF_STR( On) ) \
   436: 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) \
   437: 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) ) \
   438: 	PORT_DIPSETTING(    0x00, DEF_STR( On) ) \
   439: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unused ) ) \
   440: 	PORT_DIPSETTING(    0x10, DEF_STR( Off ) ) \
   441: 	PORT_DIPSETTING(    0x00, DEF_STR( On) ) \
   442: 	PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unused ) ) \
   443: 	PORT_DIPSETTING(    0x20, DEF_STR( Off ) ) \
   444: 	PORT_DIPSETTING(    0x00, DEF_STR( On) ) \
   445: 	PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unused ) ) \
   446: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) ) \
   447: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) ) \
   448: 	PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unused ) ) \
   449: 	PORT_DIPSETTING(    0x80, DEF_STR( Off ) ) \
   450: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   451: 
   452: #define TAITO_COINAGE_JAPAN_8 \ 
   453: 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \
   454: 	PORT_DIPSETTING(    0x10, DEF_STR( 2C_1C ) ) \
   455: 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) ) \
   456: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) ) \
   457: 	PORT_DIPSETTING(    0x20, DEF_STR( 1C_2C ) ) \
   458: 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \
   459: 	PORT_DIPSETTING(    0x40, DEF_STR( 2C_1C ) ) \
   460: 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_1C ) ) \
   461: 	PORT_DIPSETTING(    0x00, DEF_STR( 2C_3C ) ) \
   462: 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_2C ) )
   463: 
   464: #define TAITO_COINAGE_WORLD_8 \ 
   465: 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) \
   466: 	PORT_DIPSETTING(    0x00, DEF_STR( 4C_1C ) ) \
   467: 	PORT_DIPSETTING(    0x10, DEF_STR( 3C_1C ) ) \
   468: 	PORT_DIPSETTING(    0x20, DEF_STR( 2C_1C ) ) \
   469: 	PORT_DIPSETTING(    0x30, DEF_STR( 1C_1C ) ) \
   470: 	PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) \
   471: 	PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) ) \
   472: 	PORT_DIPSETTING(    0x80, DEF_STR( 1C_3C ) ) \
   473: 	PORT_DIPSETTING(    0x40, DEF_STR( 1C_4C ) ) \
   474: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_6C ) )
   475: 
   476: #define TAITO_DIFFICULTY_8 \ 
   477: 	PORT_DIPNAME( 0x03, 0x03, DEF_STR( Difficulty ) ) \
   478: 	PORT_DIPSETTING(    0x02, "Easy" ) \
   479: 	PORT_DIPSETTING(    0x03, "Medium" ) \
   480: 	PORT_DIPSETTING(    0x01, "Hard" ) \
   481: 	PORT_DIPSETTING(    0x00, "Hardest" )
   482: 
   483: #define NINJAW_IN2 \ 
   484: 	PORT_START \
   485: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* Stops working if this is high */ \
   486: 	PORT_BIT( 0x02, IP_ACTIVE_LOW,  IPT_UNKNOWN ) \
   487: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) \
   488: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 ) \
   489: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON3 | IPF_PLAYER1 )	/* Freezes game */ \
   490: 	PORT_BIT( 0x20, IP_ACTIVE_LOW,  IPT_UNKNOWN ) \
   491: 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_UNKNOWN ) \
   492: 	PORT_BIT( 0x80, IP_ACTIVE_LOW,  IPT_UNKNOWN )
   493: 
   494: #define NINJAW_IN3 \ 
   495: 	PORT_START \
   496: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 ) \
   497: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 ) \
   498: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 ) \
   499: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 ) \
   500: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 ) \
   501: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 ) \
   502: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 ) \
   503: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
   504: 
   505: #define NINJAW_IN4 \ 
   506: 	PORT_START \
   507: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) \
   508: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_TILT ) \
   509: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 ) \
   510: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START2 ) \
   511: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) \
   512: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 ) \
   513: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) \
   514: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   515: 
   516: INPUT_PORTS_START( ninjaw )
   517: 	NINJAW_DSWA
   518: 	TAITO_COINAGE_WORLD_8
   519: 
   520: 	NINJAW_DSWB
   521: 
   522: 	NINJAW_IN2
   523: 
   524: 	NINJAW_IN3
   525: 
   526: 	NINJAW_IN4
   527: INPUT_PORTS_END
   528: 
   529: INPUT_PORTS_START( ninjawj )
   530: 	NINJAW_DSWA
   531: 	TAITO_COINAGE_JAPAN_8
   532: 
   533: 	NINJAW_DSWB
   534: 
   535: 	NINJAW_IN2
   536: 
   537: 	NINJAW_IN3
   538: 
   539: 	NINJAW_IN4
   540: INPUT_PORTS_END
   541: 
   542: INPUT_PORTS_START( darius2 )
   543: 	PORT_START /* DSW A */
   544: 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) )
   545: 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
   546: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   547: 	PORT_DIPNAME( 0x02, 0x02, "Continuous Fire" )
   548: 	PORT_DIPSETTING(    0x02, "Normal" )
   549: 	PORT_DIPSETTING(    0x00, "Fast" )
   550: 	PORT_SERVICE( 0x04, IP_ACTIVE_LOW )
   551: 	PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) )
   552: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   553: 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
   554: 	TAITO_COINAGE_JAPAN_8
   555: 
   556: 	PORT_START /* DSW B */
   557: 	TAITO_DIFFICULTY_8
   558: 	PORT_DIPNAME( 0x0c, 0x0c, DEF_STR( Bonus_Life ) )
   559: 	PORT_DIPSETTING(    0x00, "every 500k" )
   560: 	PORT_DIPSETTING(    0x0c, "every 700k" )
   561: 	PORT_DIPSETTING(    0x08, "every 800k" )
   562: 	PORT_DIPSETTING(    0x04, "every 900k" )
   563: 	PORT_DIPNAME( 0x30, 0x30, DEF_STR( Lives ) )
   564: 	PORT_DIPSETTING(    0x30, "3" )
   565: 	PORT_DIPSETTING(    0x20, "4" )
   566: 	PORT_DIPSETTING(    0x10, "5" )
   567: 	PORT_DIPSETTING(    0x00, "6" )
   568: 	PORT_BITX(    0x40, 0x40, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
   569: 	PORT_DIPSETTING(    0x40, DEF_STR( Off ) )
   570: 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
   571: 	PORT_DIPNAME( 0x80, 0x80, "Allow Continue" )
   572: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   573: 	PORT_DIPSETTING(    0x80, DEF_STR( On ) )
   574: 
   575: 	NINJAW_IN2
   576: 
   577: 	NINJAW_IN3
   578: 
   579: 	NINJAW_IN4
   580: INPUT_PORTS_END
   581: 
   582: 
   583: /***********************************************************
   584: 				GFX DECODING
   585: 
   586: 	(Thanks to Raine for the obj decoding)
   587: ***********************************************************/
   588: 
   589: static struct GfxLayout tilelayout =
   590: {
   591: 	16,16,	/* 16*16 sprites */
   592: 	RGN_FRAC(1,1),
   593: 	4,	/* 4 bits per pixel */
   594: 	{ 8, 12, 0, 4 },	/* pixel bits separated, jump 4 to get to next one */
   595: 	{ 3, 2, 1, 0, 19, 18, 17, 16,
   596: 	  3+ 32*8, 2+ 32*8, 1+ 32*8, 0+ 32*8, 19+ 32*8, 18+ 32*8, 17+ 32*8, 16+ 32*8 },
   597: 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
   598: 	  64*8 + 0*32, 64*8 + 1*32, 64*8 + 2*32, 64*8 + 3*32,
   599: 	  64*8 + 4*32, 64*8 + 5*32, 64*8 + 6*32, 64*8 + 7*32 },
   600: 	128*8	/* every sprite takes 128 consecutive bytes */
   601: };
   602: 
   603: static struct GfxLayout charlayout =
   604: {
   605: 	8,8,	/* 8*8 characters */
   606: 	RGN_FRAC(1,1),
   607: 	4,	/* 4 bits per pixel */
   608: 	{ 0, 1, 2, 3 },
   609: 	{ 2*4, 3*4, 0*4, 1*4, 6*4, 7*4, 4*4, 5*4 },
   610: 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
   611: 	32*8	/* every sprite takes 32 consecutive bytes */
   612: };
   613: 
   614: static struct GfxDecodeInfo ninjaw_gfxdecodeinfo[] =
   615: {
   616: 	{ REGION_GFX2, 0, &tilelayout,  0, 256 },	/* sprites */
   617: 	{ REGION_GFX1, 0, &charlayout,  0, 256 },	/* scr tiles (screen 1) */
   618: 	{ REGION_GFX3, 0, &charlayout,  0, 256 },	/* scr tiles (screens 2+) */
   619: 	{ -1 } /* end of array */
   620: };
   621: 
   622: 
   623: /**************************************************************
   624: 			     YM2610 (SOUND)
   625: **************************************************************/
   626: 
   627: /* handler called by the YM2610 emulator when the internal timers cause an IRQ */
   628: static void irqhandler(int irq)
   629: {
   630: 	cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
   631: }
   632: 
   633: static struct YM2610interface ym2610_interface =
   634: {
   635: 	1,	/* 1 chip */
   636: 	16000000/2,	/* 8 MHz ?? */
   637: 	{ 25 },
   638: 	{ 0 },
   639: 	{ 0 },
   640: 	{ 0 },
   641: 	{ 0 },
   642: 	{ irqhandler },
   643: 	{ REGION_SOUND2 },	/* Delta-T */
   644: 	{ REGION_SOUND1 },	/* ADPCM */
   645: 	{ YM3012_VOL(100,MIXER_PAN_CENTER,100,MIXER_PAN_CENTER) }
   646: };
   647: 
   648: 
   649: /**************************************************************
   650: 			     SUBWOOFER (SOUND)
   651: **************************************************************/
   652: 
   653: static int subwoofer_sh_start(const struct MachineSound *msound)
   654: {
   655: 	/* Adjust the lowpass filter of the first three YM2610 channels */
   656: 
   657: 	/* The 150 Hz is a common top frequency played by a generic */
   658: 	/* subwoofer, the real Arcade Machine may differs */
   659: 
   660: 	mixer_set_lowpass_frequency(0,20);
   661: 	mixer_set_lowpass_frequency(1,20);
   662: 	mixer_set_lowpass_frequency(2,20);
   663: 
   664: 	return 0;
   665: }
   666: 
   667: static struct CustomSound_interface subwoofer_interface =
   668: {
   669: 	subwoofer_sh_start,
   670: 	0, /* none */
   671: 	0 /* none */
   672: };
   673: 
   674: 
   675: /*************************************************************
   676: 			     MACHINE DRIVERS
   677: 
   678: Ninjaw: high interleaving of 100, but doesn't stop enemies
   679: "sliding" when they should be standing still relative
   680: to the scrolling background.
   681: 
   682: Darius2: arbitrary interleaving of 10 to keep cpus synced.
   683: *************************************************************/
   684: 
   685: static MACHINE_DRIVER_START( ninjaw )
   686: 
   687: 	/* basic machine hardware */
   688: 	MDRV_CPU_ADD(M68000,16000000/2)	/* 8 MHz ? */
   689: 	MDRV_CPU_MEMORY(ninjaw_readmem,ninjaw_writemem)
   690: 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
   691: 
   692: 	MDRV_CPU_ADD(Z80,16000000/4)
   693: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 16/4 MHz ? */
   694: 	MDRV_CPU_MEMORY(z80_sound_readmem,z80_sound_writemem)
   695: 
   696: 	MDRV_CPU_ADD(M68000,16000000/2)	/* 8 MHz ? */
   697: 	MDRV_CPU_MEMORY(ninjaw_cpub_readmem,ninjaw_cpub_writemem)
   698: 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
   699: 
   700: 	MDRV_FRAMES_PER_SECOND(60)
   701: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   702: 	MDRV_INTERLEAVE(100)	/* CPU slices */
   703: 
   704: 	MDRV_MACHINE_INIT(ninjaw)
   705: 
   706: 	/* video hardware */
   707: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_DUAL_MONITOR)
   708: 	MDRV_ASPECT_RATIO(12,3)
   709: 	MDRV_SCREEN_SIZE(110*8, 32*8)
   710: 	MDRV_VISIBLE_AREA(0*8, 108*8-1, 3*8, 31*8-1)
   711: 	MDRV_GFXDECODE(ninjaw_gfxdecodeinfo)
   712: 	MDRV_PALETTE_LENGTH(4096*3)
   713: 
   714: 	MDRV_VIDEO_START(ninjaw)
   715: 	MDRV_VIDEO_UPDATE(ninjaw)
   716: 
   717: 	/* sound hardware */
   718: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
   719: 	MDRV_SOUND_ADD(YM2610, ym2610_interface)
   720: 	MDRV_SOUND_ADD(CUSTOM, subwoofer_interface)
   721: MACHINE_DRIVER_END
   722: 
   723: 
   724: static MACHINE_DRIVER_START( darius2 )
   725: 
   726: 	/* basic machine hardware */
   727: 	MDRV_CPU_ADD(M68000,16000000/2)	/* 8 MHz ? */
   728: 	MDRV_CPU_MEMORY(darius2_readmem,darius2_writemem)
   729: 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
   730: 
   731: 	MDRV_CPU_ADD(Z80,16000000/4)
   732: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* 4 MHz ? */
   733: 	MDRV_CPU_MEMORY(z80_sound_readmem,z80_sound_writemem)
   734: 
   735: 	MDRV_CPU_ADD(M68000,16000000/2)	/* 8 MHz ? */
   736: 	MDRV_CPU_MEMORY(darius2_cpub_readmem,darius2_cpub_writemem)
   737: 	MDRV_CPU_VBLANK_INT(irq4_line_hold,1)
   738: 
   739: 	MDRV_FRAMES_PER_SECOND(60)
   740: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   741: 	MDRV_INTERLEAVE(10)	/* CPU slices */
   742: 
   743: 	MDRV_MACHINE_INIT(ninjaw)
   744: 
   745: 	/* video hardware */
   746: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_DUAL_MONITOR)
   747: 	MDRV_ASPECT_RATIO(12,3)
   748: 	MDRV_SCREEN_SIZE(110*8, 32*8)
   749: 	MDRV_VISIBLE_AREA(0*8, 108*8-1, 3*8, 31*8-1)
   750: 	MDRV_GFXDECODE(ninjaw_gfxdecodeinfo)
   751: 	MDRV_PALETTE_LENGTH(4096*3)
   752: 
   753: 	MDRV_VIDEO_START(ninjaw)
   754: 	MDRV_VIDEO_UPDATE(ninjaw)
   755: 
   756: 	/* sound hardware */
   757: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
   758: 	MDRV_SOUND_ADD(YM2610, ym2610_interface)
   759: 	MDRV_SOUND_ADD(CUSTOM, subwoofer_interface)
   760: MACHINE_DRIVER_END
   761: 
   762: 
   763: /***************************************************************************
   764: 					DRIVERS
   765: ***************************************************************************/
   766: 
   767: ROM_START( ninjaw )
   768: 	ROM_REGION( 0xc0000, REGION_CPU1, 0 )	/* 256K for 68000 CPUA code */
   769: 	ROM_LOAD16_BYTE( "b31-45",    0x00000, 0x10000, CRC(107902c3) SHA1(026f71a918059e3374ae262304a2ee1270f5c5bd) )
   770: 	ROM_LOAD16_BYTE( "b31-47",    0x00001, 0x10000, CRC(bd536b1e) SHA1(39c86cbb3a33fc77a0141b5648a1aca862e0a5fd) )
   771: 	ROM_LOAD16_BYTE( "b31_29.34", 0x20000, 0x10000, CRC(f2941a37) SHA1(cf1f231d9caddc903116a8b654f49181ca459697) )
   772: 	ROM_LOAD16_BYTE( "b31_27.31", 0x20001, 0x10000, CRC(2f3ff642) SHA1(7d6775b51d96b459b163d8fde2385b0e3f5242ca) )
   773: 
   774: 	ROM_LOAD16_BYTE( "b31_41.5", 0x40000, 0x20000, CRC(0daef28a) SHA1(7c7e16b0eebc589ab99f62ddb98b372596ff5ae6) )	/* data roms ? */
   775: 	ROM_LOAD16_BYTE( "b31_39.2", 0x40001, 0x20000, CRC(e9197c3c) SHA1(a7f0ef2b3c4258c09edf05284fec45832a8fb147) )
   776: 	ROM_LOAD16_BYTE( "b31_40.6", 0x80000, 0x20000, CRC(2ce0f24e) SHA1(39632397ac7e8457607c32c31fccf1c08d4b2621) )
   777: 	ROM_LOAD16_BYTE( "b31_38.3", 0x80001, 0x20000, CRC(bc68cd99) SHA1(bb31ea589339c9f9b61e312e1024b5c8410cdb43) )
   778: 
   779: 	ROM_REGION( 0x60000, REGION_CPU3, 0 )	/* 384K for 68000 CPUB code */
   780: 	ROM_LOAD16_BYTE( "b31_33.87", 0x00000, 0x10000, CRC(6ce9af44) SHA1(486e332af238c211c3f64f7ead114282661687c4) )
   781: 	ROM_LOAD16_BYTE( "b31_36.97", 0x00001, 0x10000, CRC(ba20b0d4) SHA1(fb3dcb7681a95087afac9aa9393765d786243486) )
   782: 	ROM_LOAD16_BYTE( "b31_32.86", 0x20000, 0x10000, CRC(e6025fec) SHA1(071f83a9ddebe67bd6c6c2505318e177895163ee) )
   783: 	ROM_LOAD16_BYTE( "b31_35.96", 0x20001, 0x10000, CRC(70d9a89f) SHA1(20f846beb052fd8cddcf00c3e42e3304e102a87b) )
   784: 	ROM_LOAD16_BYTE( "b31_31.85", 0x40000, 0x10000, CRC(837f47e2) SHA1(88d596f01566456ba18a01afd0a6a7c121d3ca88) )
   785: 	ROM_LOAD16_BYTE( "b31_34.95", 0x40001, 0x10000, CRC(d6b5fb2a) SHA1(e3ae0d7ec62740465a90e4939b10341d3866d860) )
   786: 
   787: 	ROM_REGION( 0x2c000, REGION_CPU2, 0 )	/* sound cpu */
   788: 	ROM_LOAD( "b31_37.11",  0x00000, 0x04000, CRC(0ca5799d) SHA1(6485dde076d15b69b9ee65880dda57ad4f8d129c) )
   789: 	ROM_CONTINUE(           0x10000, 0x1c000 )  /* banked stuff */
   790: 
   791: 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
   792: 	ROM_LOAD( "b31-01.23", 0x00000, 0x80000, CRC(8e8237a7) SHA1(3e181a153d9b4b7f6a620614ea9022285583a5b5) )	/* SCR (screen 1) */
   793: 	ROM_LOAD( "b31-02.24", 0x80000, 0x80000, CRC(4c3b4e33) SHA1(f99b379be1af085bf102d4d7cf35803e002fe80b) )
   794: 
   795: 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
   796: 	ROM_LOAD( "b31-07.176", 0x000000, 0x80000, CRC(33568cdb) SHA1(87abf56bbbd3659a1bd3e6ce9e43176be7950b41) )	/* OBJ */
   797: 	ROM_LOAD( "b31-06.175", 0x080000, 0x80000, CRC(0d59439e) SHA1(54d844492888e7fe2c3bc61afe64f8d47fdee8dc) )
   798: 	ROM_LOAD( "b31-05.174", 0x100000, 0x80000, CRC(0a1fc9fb) SHA1(a5d6975fd4f7e689c8cafd7c9cd3787797955779) )
   799: 	ROM_LOAD( "b31-04.173", 0x180000, 0x80000, CRC(2e1e4cb5) SHA1(4733cfc015a68e021108a9e1e8ea807b0e7eac7a) )
   800: 
   801: 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE )
   802: 	ROM_COPY( REGION_GFX1, 0x000000, 0x000000, 0x100000 )	/* SCR (screens 2+) */
   803: 
   804: /* The actual board duplicates the SCR gfx roms for 2nd/3rd TC0100SCN */
   805: //	ROM_LOAD( "b31-01.26", 0x00000, 0x80000, CRC(8e8237a7) SHA1(3e181a153d9b4b7f6a620614ea9022285583a5b5) )	/* SCR (screen 2) */
   806: //	ROM_LOAD( "b31-02.27", 0x80000, 0x80000, CRC(4c3b4e33) SHA1(f99b379be1af085bf102d4d7cf35803e002fe80b) )
   807: //	ROM_LOAD( "b31-01.28", 0x00000, 0x80000, CRC(8e8237a7) SHA1(3e181a153d9b4b7f6a620614ea9022285583a5b5) )	/* SCR (screen 3) */
   808: //	ROM_LOAD( "b31-02.29", 0x80000, 0x80000, CRC(4c3b4e33) SHA1(f99b379be1af085bf102d4d7cf35803e002fe80b) )
   809: 
   810: 	ROM_REGION( 0x180000, REGION_SOUND1, 0 )	/* ADPCM samples */
   811: 	ROM_LOAD( "b31-09.18", 0x000000, 0x80000, CRC(60a73382) SHA1(0ddeb86fcd4d19a58e62bf8564f996d17e36e5c5) )
   812: 	ROM_LOAD( "b31-10.17", 0x080000, 0x80000, CRC(c6434aef) SHA1(3348ce87882e3f668aa85bbb517975ec1fc9b6fd) )
   813: 	ROM_LOAD( "b31-11.16", 0x100000, 0x80000, CRC(8da531d4) SHA1(525dfab0a0729e9fb6f0e4c8187bf4ce16321b20) )
   814: 
   815: 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
   816: 	ROM_LOAD( "b31-08.19", 0x000000, 0x80000, CRC(a0a1f87d) SHA1(6b0f8094f3a3ef1ced76984e333e22a17c51af29) )
   817: 
   818: 	ROM_REGION( 0x01000, REGION_USER1, 0 )	/* unknown roms */
   819: 	ROM_LOAD( "b31-25.38", 0x00000, 0x200, CRC(a0b4ba48) SHA1(dc9a46366a0cbf63a609f177c3d3ba9675416662) )
   820: 	ROM_LOAD( "b31-26.58", 0x00000, 0x200, CRC(13e5fe15) SHA1(c973c7965954a2a0b427908f099592ed89cf0ff0) )
   821: ROM_END
   822: 
   823: ROM_START( ninjawj )
   824: 	ROM_REGION( 0xc0000, REGION_CPU1, 0 )	/* 256K for 68000 CPUA code */
   825: 	ROM_LOAD16_BYTE( "b31_30.35", 0x00000, 0x10000, CRC(056edd9f) SHA1(8922cede80b31ce0f7a00c8cab13d835464c6058) )
   826: 	ROM_LOAD16_BYTE( "b31_28.32", 0x00001, 0x10000, CRC(cfa7661c) SHA1(a7a6abb33a514d910e3198d5acbd4c31b2434b6c) )
   827: 	ROM_LOAD16_BYTE( "b31_29.34", 0x20000, 0x10000, CRC(f2941a37) SHA1(cf1f231d9caddc903116a8b654f49181ca459697) )
   828: 	ROM_LOAD16_BYTE( "b31_27.31", 0x20001, 0x10000, CRC(2f3ff642) SHA1(7d6775b51d96b459b163d8fde2385b0e3f5242ca) )
   829: 
   830: 	ROM_LOAD16_BYTE( "b31_41.5", 0x40000, 0x20000, CRC(0daef28a) SHA1(7c7e16b0eebc589ab99f62ddb98b372596ff5ae6) )	/* data roms ? */
   831: 	ROM_LOAD16_BYTE( "b31_39.2", 0x40001, 0x20000, CRC(e9197c3c) SHA1(a7f0ef2b3c4258c09edf05284fec45832a8fb147) )
   832: 	ROM_LOAD16_BYTE( "b31_40.6", 0x80000, 0x20000, CRC(2ce0f24e) SHA1(39632397ac7e8457607c32c31fccf1c08d4b2621) )
   833: 	ROM_LOAD16_BYTE( "b31_38.3", 0x80001, 0x20000, CRC(bc68cd99) SHA1(bb31ea589339c9f9b61e312e1024b5c8410cdb43) )
   834: 
   835: 	ROM_REGION( 0x60000, REGION_CPU3, 0 )	/* 384K for 68000 CPUB code */
   836: 	ROM_LOAD16_BYTE( "b31_33.87", 0x00000, 0x10000, CRC(6ce9af44) SHA1(486e332af238c211c3f64f7ead114282661687c4) )
   837: 	ROM_LOAD16_BYTE( "b31_36.97", 0x00001, 0x10000, CRC(ba20b0d4) SHA1(fb3dcb7681a95087afac9aa9393765d786243486) )
   838: 	ROM_LOAD16_BYTE( "b31_32.86", 0x20000, 0x10000, CRC(e6025fec) SHA1(071f83a9ddebe67bd6c6c2505318e177895163ee) )
   839: 	ROM_LOAD16_BYTE( "b31_35.96", 0x20001, 0x10000, CRC(70d9a89f) SHA1(20f846beb052fd8cddcf00c3e42e3304e102a87b) )
   840: 	ROM_LOAD16_BYTE( "b31_31.85", 0x40000, 0x10000, CRC(837f47e2) SHA1(88d596f01566456ba18a01afd0a6a7c121d3ca88) )
   841: 	ROM_LOAD16_BYTE( "b31_34.95", 0x40001, 0x10000, CRC(d6b5fb2a) SHA1(e3ae0d7ec62740465a90e4939b10341d3866d860) )
   842: 
   843: 	ROM_REGION( 0x2c000, REGION_CPU2, 0 )	/* sound cpu */
   844: 	ROM_LOAD( "b31_37.11",  0x00000, 0x04000, CRC(0ca5799d) SHA1(6485dde076d15b69b9ee65880dda57ad4f8d129c) )
   845: 	ROM_CONTINUE(           0x10000, 0x1c000 )  /* banked stuff */
   846: 
   847: 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
   848: 	ROM_LOAD( "b31-01.23", 0x00000, 0x80000, CRC(8e8237a7) SHA1(3e181a153d9b4b7f6a620614ea9022285583a5b5) )	/* SCR (screen 1) */
   849: 	ROM_LOAD( "b31-02.24", 0x80000, 0x80000, CRC(4c3b4e33) SHA1(f99b379be1af085bf102d4d7cf35803e002fe80b) )
   850: 
   851: 	ROM_REGION( 0x200000, REGION_GFX2, ROMREGION_DISPOSE )
   852: 	ROM_LOAD( "b31-07.176", 0x000000, 0x80000, CRC(33568cdb) SHA1(87abf56bbbd3659a1bd3e6ce9e43176be7950b41) )	/* OBJ */
   853: 	ROM_LOAD( "b31-06.175", 0x080000, 0x80000, CRC(0d59439e) SHA1(54d844492888e7fe2c3bc61afe64f8d47fdee8dc) )
   854: 	ROM_LOAD( "b31-05.174", 0x100000, 0x80000, CRC(0a1fc9fb) SHA1(a5d6975fd4f7e689c8cafd7c9cd3787797955779) )
   855: 	ROM_LOAD( "b31-04.173", 0x180000, 0x80000, CRC(2e1e4cb5) SHA1(4733cfc015a68e021108a9e1e8ea807b0e7eac7a) )
   856: 
   857: 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE )
   858: 	ROM_COPY( REGION_GFX1, 0x000000, 0x000000, 0x100000 )	/* SCR (screens 2+) */
   859: 
   860: /* The actual board duplicates the SCR gfx roms for 2nd/3rd TC0100SCN */
   861: //	ROM_LOAD( "b31-01.26", 0x00000, 0x80000, CRC(8e8237a7) SHA1(3e181a153d9b4b7f6a620614ea9022285583a5b5) )	/* SCR (screen 2) */
   862: //	ROM_LOAD( "b31-02.27", 0x80000, 0x80000, CRC(4c3b4e33) SHA1(f99b379be1af085bf102d4d7cf35803e002fe80b) )
   863: //	ROM_LOAD( "b31-01.28", 0x00000, 0x80000, CRC(8e8237a7) SHA1(3e181a153d9b4b7f6a620614ea9022285583a5b5) )	/* SCR (screen 3) */
   864: //	ROM_LOAD( "b31-02.29", 0x80000, 0x80000, CRC(4c3b4e33) SHA1(f99b379be1af085bf102d4d7cf35803e002fe80b) )
   865: 
   866: 	ROM_REGION( 0x180000, REGION_SOUND1, 0 )	/* ADPCM samples */
   867: 	ROM_LOAD( "b31-09.18", 0x000000, 0x80000, CRC(60a73382) SHA1(0ddeb86fcd4d19a58e62bf8564f996d17e36e5c5) )
   868: 	ROM_LOAD( "b31-10.17", 0x080000, 0x80000, CRC(c6434aef) SHA1(3348ce87882e3f668aa85bbb517975ec1fc9b6fd) )
   869: 	ROM_LOAD( "b31-11.16", 0x100000, 0x80000, CRC(8da531d4) SHA1(525dfab0a0729e9fb6f0e4c8187bf4ce16321b20) )
   870: 
   871: 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
   872: 	ROM_LOAD( "b31-08.19", 0x000000, 0x80000, CRC(a0a1f87d) SHA1(6b0f8094f3a3ef1ced76984e333e22a17c51af29) )
   873: 
   874: 	ROM_REGION( 0x01000, REGION_USER1, 0 )	/* unknown roms */
   875: 	ROM_LOAD( "b31-25.38", 0x00000, 0x200, CRC(a0b4ba48) SHA1(dc9a46366a0cbf63a609f177c3d3ba9675416662) )
   876: 	ROM_LOAD( "b31-26.58", 0x00000, 0x200, CRC(13e5fe15) SHA1(c973c7965954a2a0b427908f099592ed89cf0ff0) )
   877: ROM_END
   878: 
   879: ROM_START( darius2 )
   880: 	ROM_REGION( 0xc0000, REGION_CPU1, 0 )	/* 256K for 68000 CPUA code */
   881: 	ROM_LOAD16_BYTE( "c07-32-1", 0x00000, 0x10000, CRC(216c8f6a) SHA1(493b0779b99a228911f56ef9d2d4a3945683bec0) )
   882: 	ROM_LOAD16_BYTE( "c07-29-1", 0x00001, 0x10000, CRC(48de567f) SHA1(cdf50052933cd2603fd4374e8bae8b30a6c690b5) )
   883: 	ROM_LOAD16_BYTE( "c07-31-1", 0x20000, 0x10000, CRC(8279d2f8) SHA1(bd3c80a024a58e4b554f4867f56d7f5741eb3031) )
   884: 	ROM_LOAD16_BYTE( "c07-30-1", 0x20001, 0x10000, CRC(6122e400) SHA1(2f68a423f9db8d69ab74453f8cef755f703cc94c) )
   885: 
   886: 	ROM_LOAD16_BYTE( "c07-27",   0x40000, 0x20000, CRC(0a6f7b6c) SHA1(0ed915201fbc0bf94fdcbef8dfd021cebe87474f) )	/* data roms ? */
   887: 	ROM_LOAD16_BYTE( "c07-25",   0x40001, 0x20000, CRC(059f40ce) SHA1(b05a96580edb66221af2f222df74a020366ce3ea) )
   888: 	ROM_LOAD16_BYTE( "c07-26",   0x80000, 0x20000, CRC(1f411242) SHA1(0fca5d864c1925473d0058e4cf81ad926f56cb14) )
   889: 	ROM_LOAD16_BYTE( "c07-24",   0x80001, 0x20000, CRC(486c9c20) SHA1(9e98fcc1777f044d69cc93eda674501b3be26097) )
   890: 
   891: 	ROM_REGION( 0x60000, REGION_CPU3, 0 )	/* 384K for 68000 CPUB code */
   892: 	ROM_LOAD16_BYTE( "c07-35-1", 0x00000, 0x10000, CRC(dd8c4723) SHA1(e17159f894ee661a84ccd53e2d00ee78f2b46196) )
   893: 	ROM_LOAD16_BYTE( "c07-38-1", 0x00001, 0x10000, CRC(46afb85c) SHA1(a08fb9fd2bf0929a5599ab015680fa663f1d4fe6) )
   894: 	ROM_LOAD16_BYTE( "c07-34-1", 0x20000, 0x10000, CRC(296984b8) SHA1(3ba28e293c9d3ce01ee2f8ae2c2aa450fe021d30) )
   895: 	ROM_LOAD16_BYTE( "c07-37-1", 0x20001, 0x10000, CRC(8b7d461f) SHA1(c783491ca23223dc58fa7e8f408407b9a10cbce4) )
   896: 	ROM_LOAD16_BYTE( "c07-33-1", 0x40000, 0x10000, CRC(2da03a3f) SHA1(f1f2de82e0addc5e19c8935e4f5810896691118f) )
   897: 	ROM_LOAD16_BYTE( "c07-36-1", 0x40001, 0x10000, CRC(02cf2b1c) SHA1(c94a64f26f94f182cfe2b6edb37e4ce35a0f681b) )
   898: 
   899: 	ROM_REGION( 0x2c000, REGION_CPU2, 0 )	/* sound cpu */
   900: 	ROM_LOAD( "c07-28",  0x00000, 0x04000, CRC(da304bc5) SHA1(689b4f329d9a640145f82e12dff3dd1fcf8a28c8) )
   901: 	ROM_CONTINUE(            0x10000, 0x1c000 )  /* banked stuff */
   902: 
   903: 	ROM_REGION( 0x100000, REGION_GFX1, ROMREGION_DISPOSE )
   904: 	ROM_LOAD( "c07-03.12", 0x00000, 0x80000, CRC(189bafce) SHA1(d885e444523489fe24269b90dec58e0d92cfbd6e) )	/* SCR (screen 1) */
   905: 	ROM_LOAD( "c07-04.11", 0x80000, 0x80000, CRC(50421e81) SHA1(27ac420602f1dac00dc32903543a518e6f47fb2f) )
   906: 
   907: 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
   908: 	ROM_LOAD( "c07-01", 0x00000, 0x80000, CRC(3cf0f050) SHA1(f5a1f7e327a2617fb95ce2837e72945fd7447346) )	/* OBJ */
   909: 	ROM_LOAD( "c07-02", 0x80000, 0x80000, CRC(75d16d4b) SHA1(795423278b66eca41accce1f8a4425d65af7b629) )
   910: 
   911: 	ROM_REGION( 0x100000, REGION_GFX3, ROMREGION_DISPOSE )
   912: 	ROM_COPY( REGION_GFX1, 0x000000, 0x000000, 0x100000 )	/* SCR (screens 2+) */
   913: 
   914: 	ROM_REGION( 0x100000, REGION_SOUND1, 0 )	/* ADPCM samples */
   915: 	ROM_LOAD( "c07-10.95", 0x00000, 0x80000, CRC(4bbe0ed9) SHA1(081b73c4e4d4fa548445e5548573099bcb1e9213) )
   916: 	ROM_LOAD( "c07-11.96", 0x80000, 0x80000, CRC(3c815699) SHA1(0471ff5b0c0da905267f2cee52fd68c8661cccc9) )
   917: 
   918: 	ROM_REGION( 0x80000, REGION_SOUND2, 0 )	/* Delta-T samples */
   919: 	ROM_LOAD( "c07-12.107", 0x00000, 0x80000, CRC(e0b71258) SHA1(0258e308b643d723475824752ebffc4ea29d1ac4) )
   920: ROM_END
   921: 
   922: 
   923: static DRIVER_INIT( ninjaw )
   924: {
   925: 	cpua_ctrl = 0xff;
   926: 	state_save_register_UINT16("main1", 0, "control", &cpua_ctrl, 1);
   927: 	state_save_register_func_postload(parse_control);
   928: 
   929: 	state_save_register_int("sound1", 0, "sound region", &banknum);
   930: 	state_save_register_func_postload(reset_sound_region);
   931: }
   932: 
   933: MACHINE_INIT( ninjaw )
   934: {
   935:   /**** mixer control enable ****/
   936:   mixer_sound_enable_global_w( 1 );	/* mixer enabled */
   937: }
   938: 
   939: 
   940: /* Working Games */
   941: 
   942: GAME( 1987, ninjaw,   0,      ninjaw,  ninjaw,   ninjaw,  ROT0, "Taito Corporation Japan", "The Ninja Warriors (World)" )
   943: GAME( 1987, ninjawj,  ninjaw, ninjaw,  ninjawj,  ninjaw,  ROT0, "Taito Corporation", "The Ninja Warriors (Japan)" )
   944: GAME( 1989, darius2,  0,      darius2, darius2,  ninjaw,  ROT0, "Taito Corporation", "Darius II (Japan)" )
   945: 
   946: 




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