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 : Tecmo Knight : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3: Ninja Gaiden memory map (preliminary)
     4: 
     5: 000000-03ffff ROM
     6: 060000-063fff RAM
     7: 070000-070fff Video RAM (text layer)
     8: 072000-075fff VRAM (backgrounds)
     9: 076000-077fff Sprite RAM
    10: 078000-079fff Palette RAM
    11: 
    12: 07a100-07a1ff Unknown
    13: 
    14: memory mapped ports:
    15: 
    16: read:
    17: 07a001    IN0
    18: 07a002    IN2
    19: 07a003    IN1
    20: 07a004    DWSB
    21: 07a005    DSWA
    22: see the input_ports definition below for details on the input bits
    23: 
    24: write:
    25: 07a104-07a105 text  layer Y scroll
    26: 07a10c-07a10d text  layer X scroll
    27: 07a204-07a205 front layer Y scroll
    28: 07a20c-07a20d front layer X scroll
    29: 07a304-07a305 back  layer Y scroll
    30: 07a30c-07a30d back  layer X scroll
    31: 
    32: Notes:
    33: - The sprite Y size control is slightly different from gaiden/wildfang to
    34:   raiga. In the first two, size X and Y change together, while in the latter
    35:   they are changed independently. This is handled with a variable set in
    36:   DRIVER_INIT, but it might also be a selectable hardware feature, since
    37:   the two extra bits used by raiga are perfectly merged with the rest.
    38:   Raiga also uses more sprites than the others, but there's no way to tell
    39:   if hardware is more powerful or the extra sprites were just not needed
    40:   in the earlier games.
    41: 
    42: - The hardware supports blending sprites and background.
    43:   There are 3 copies of the palette;
    44:   - one for pixels that aren't blended
    45:   - one for pixels that are behind the object that will be blended
    46:   - one for the object that will be blended
    47:   Blending is performed by switching to the appropriate palettes for the
    48:   pixels behind the blended object and the object itself, and then adding
    49:   the RGB values.
    50: 
    51: todo:
    52: 
    53: - make sure all of the protection accesses in raiga are handled correctly.
    54: - work out how lower priority sprites are affected by blended sprites.
    55: 
    56: ***************************************************************************/
    57: /***************************************************************************
    58: 
    59: Strato Fighter (US version)
    60: Tecmo, 1991
    61: 
    62: 
    63: PCB Layout
    64: ----------
    65: 
    66: Top Board
    67: ---------
    68: 0210-A
    69: MG-Y.VO
    70: -----------------------------------------------
    71: |         MN50005XTA         4MHz  DSW2 DSW1  |
    72: |                    6264 6264       8049     |
    73: |           IOP8     1.3S 2.4S                |
    74: |24MHz                                        |
    75: |                                             |
    76: |18.432MHz                                   J|
    77: |                                             |
    78: |              68000P10                      A|
    79: |                                             |
    80: |          6116                              M|
    81: |          6116                               |
    82: |          6116                              M|
    83: |                                             |
    84: |                                            A|
    85: |                                             |
    86: |              6264    YM2203  YM3014         |
    87: |       Z80    3.4B                           |
    88: | 4MHz  6295   4.4A    YM2203  YM3014         |
    89: -----------------------------------------------
    90: 
    91: Bottom Board
    92: ------------
    93: 0210-B
    94: MG-Y.VO
    95: -----------------------------------------------
    96: |                TECMO-5                      |
    97: |               -----------                   |
    98: |               | TECMO-06|                   |
    99: | ROM.M1 ROM.M3 | YM6048  |     6264          |
   100: |               -----------     6264          |
   101: |   4164  4164  4164  4164                    |
   102: |   4164  4164  4164  4164                    |
   103: |   4164  4164  4164  4164                    |
   104: |                                             |
   105: |                                             |
   106: |        TECMO-3      TECMO-3      TECMO-3    |
   107: | TECMO-4      TECMO-4      TECMO-4           |
   108: |                                             |
   109: |                                             |
   110: |                                             |
   111: |  6264  6264   6116   6116   6264            |
   112: | ROM.1B        ROM.4B        6116            |
   113: |                             ROM.7A          |
   114: -----------------------------------------------
   115: 
   116: Notes:
   117: 	68k clock:		9.216 MHz (18.432 / 2)
   118: 	Z80 clock:		4.000 MHz
   119: 	YM2203 clock:		4.000 MHz
   120: 	MSM6295 clock:	1.000 MHz (samplerate 7575Hz, i.e. / 132)
   121: 
   122: 	IOP8 manufactured by Ricoh. Full part number: RICOH EPLIOP8BP (PAL or PIC?)
   123: 
   124: ***************************************************************************/
   125: 
   126: 
   127: #include "driver.h" 
   128: #include "vidhrdw/generic.h" 
   129: #include "cpu/m68000/m68000.h" 
   130: #include "cpu/z80/z80.h" 
   131: 
   132: extern data16_t *gaiden_videoram,*gaiden_videoram2,*gaiden_videoram3;
   133: extern int gaiden_sprite_sizey;
   134: 
   135: extern int raiga_alpha;
   136: 
   137: VIDEO_START( gaiden );
   138: VIDEO_START( raiga );
   139: 
   140: VIDEO_UPDATE( gaiden );
   141: VIDEO_UPDATE( raiga );
   142: 
   143: WRITE16_HANDLER( gaiden_videoram_w );
   144: WRITE16_HANDLER( gaiden_videoram2_w );
   145: READ16_HANDLER( gaiden_videoram2_r );
   146: WRITE16_HANDLER( gaiden_videoram3_w );
   147: READ16_HANDLER( gaiden_videoram3_r );
   148: 
   149: WRITE16_HANDLER( gaiden_txscrollx_w );
   150: WRITE16_HANDLER( gaiden_txscrolly_w );
   151: WRITE16_HANDLER( gaiden_fgscrollx_w );
   152: WRITE16_HANDLER( gaiden_fgscrolly_w );
   153: WRITE16_HANDLER( gaiden_bgscrollx_w );
   154: WRITE16_HANDLER( gaiden_bgscrolly_w );
   155: WRITE16_HANDLER( gaiden_flip_w );
   156: 
   157: 
   158: 
   159: static WRITE16_HANDLER( gaiden_sound_command_w )
   160: {
   161: 	if (ACCESSING_LSB) soundlatch_w(0,data & 0xff);	/* Ninja Gaiden */
   162: 	if (ACCESSING_MSB) soundlatch_w(0,data >> 8);	/* Tecmo Knight */
   163: 	cpu_set_irq_line(1,IRQ_LINE_NMI,PULSE_LINE);
   164: }
   165: 
   166: 
   167: 
   168: /* Wild Fang / Tecmo Knight has a simple protection. It writes codes to 0x07a804, */
   169: /* and reads the answer from 0x07a007. The returned values contain the address of */
   170: /* a function to jump to. */
   171: 
   172: static int prot;
   173: 
   174: static WRITE16_HANDLER( wildfang_protection_w )
   175: {
   176: 	if (ACCESSING_MSB)
   177: 	{
   178: 		static int jumpcode;
   179: 		static int jumppoints[] =
   180: 		{
   181: 			0x0c0c,0x0cac,0x0d42,0x0da2,0x0eea,0x112e,0x1300,0x13fa,
   182: 			0x159a,0x1630,0x109a,0x1700,0x1750,0x1806,0x18d6,0x1a44,
   183: 			0x1b52
   184: 		};
   185: 
   186: 		data >>= 8;
   187: 
   188: //		logerror("PC %06x: prot = %02x\n",activecpu_get_pc(),data);
   189: 
   190: 		switch (data & 0xf0)
   191: 		{
   192: 			case 0x00:	/* init */
   193: 				prot = 0x00;
   194: 				break;
   195: 			case 0x10:	/* high 4 bits of jump code */
   196: 				jumpcode = (data & 0x0f) << 4;
   197: 				prot = 0x10;
   198: 				break;
   199: 			case 0x20:	/* low 4 bits of jump code */
   200: 				jumpcode |= data & 0x0f;
   201: 				if (jumpcode >= sizeof(jumppoints)/sizeof(jumppoints[0]))
   202: 				{
   203: 					logerror("unknown jumpcode %02x\n",jumpcode);
   204: 					jumpcode = 0;
   205: 				}
   206: 				prot = 0x20;
   207: 				break;
   208: 			case 0x30:	/* ask for bits 12-15 of function address */
   209: 				prot = 0x40 | ((jumppoints[jumpcode] >> 12) & 0x0f);
   210: 				break;
   211: 			case 0x40:	/* ask for bits 8-11 of function address */
   212: 				prot = 0x50 | ((jumppoints[jumpcode] >> 8) & 0x0f);
   213: 				break;
   214: 			case 0x50:	/* ask for bits 4-7 of function address */
   215: 				prot = 0x60 | ((jumppoints[jumpcode] >> 4) & 0x0f);
   216: 				break;
   217: 			case 0x60:	/* ask for bits 0-3 of function address */
   218: 				prot = 0x70 | ((jumppoints[jumpcode] >> 0) & 0x0f);
   219: 				break;
   220: 		}
   221: 	}
   222: }
   223: 
   224: static READ16_HANDLER( wildfang_protection_r )
   225: {
   226: //	logerror("PC %06x: read prot %02x\n",activecpu_get_pc(),prot);
   227: 	return prot;
   228: }
   229: 
   230: 
   231: 
   232: /*
   233: 
   234: Raiga Protection
   235: MCU read routine is at D9CE
   236: 
   237: startup codes
   238: 
   239: it reads 00/36/0e/11/33/34/2d, fetching some code copied to RAM,
   240: and a value which is used as an offset to point to the code in RAM.
   241: 19/12/31/28 are read repeatedly, from the interrupt, and the returned
   242: value chanes, some kind of mode set command?
   243: 
   244: level codes
   245: 
   246: 00 | score screen after level 1 (5457)
   247: 01 | score screen after level 2 (494e)
   248: 02 | score screen after level 3 (5f4b)
   249: 03 | score screen after level 4 (4149)
   250: 04 | score screen after level 5 (5345)
   251: 05 | score screen after level 6 + first loop end sequence (525f)
   252: 06 | score screen after second loop level 1 (4d49)
   253: 07 | score screen after second loop level 2 (5941)
   254: 08 | score screen after second loop level 3 (5241)
   255: 09 | score screen after second loop level 4 (5349)
   256: 0a | score screen after second loop level 5 (4d4f)
   257: 0b | score screen after second loop level 6 + final end sequence (4a49)
   258: 
   259: 
   260: other game codes
   261: 
   262: 13 | Game over (594f)
   263: 15 | at the start of second level attract mode (4e75)
   264: 1c | start of level 4 attract mode (4e75)
   265: 1e | after continue .. (5349)
   266: 23 | after entering hi-score (4e75)
   267: 25 | after attract level 1 (4849)
   268: 2b | after japan / wdud screen, to get back to 'tecmo presents' (524f)
   269: 
   270: also bonus life + when the boss appears but I think they use the
   271: same commands as some of the above
   272: 
   273: */
   274: 
   275: /* these are used during startup */
   276: static int jumppoints_00[0x100] =
   277: {
   278: 	0x6669,	   -1,    -1,    -1,    -1,    -1,    -1,    -1,
   279: 	    -1,    -1,    -1,    -1,    -1,    -1,0x4a46,    -1,
   280: 	    -1,0x6704,    -2,    -1,    -1,    -1,    -1,    -1,
   281: 	    -1,    -2,    -1,    -1,    -1,    -1,    -1,    -1,
   282: 	    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
   283: 	    -2,    -1,    -1,    -1,    -1,0x4e75,    -1,    -1,
   284: 	    -1,    -2,    -1,0x4e71,0x60fc,    -1,0x7288,    -1,
   285: 	    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1
   286: };
   287: 
   288: /* these are used the rest of the time */
   289: static int jumppoints_other[0x100] =
   290: {
   291: 	0x5457,0x494e,0x5f4b,0x4149,0x5345,0x525f,0x4d49,0x5941,
   292: 	0x5241,0x5349,0x4d4f,0x4a49,    -1,    -1,    -1,    -1,
   293: 	    -1,    -1,    -2,0x594f,    -1,0x4e75,    -1,    -1,
   294: 	    -1,    -2,    -1,    -1,0x4e75,    -1,0x5349,    -1,
   295: 	    -1,    -1,    -1,0x4e75,    -1,0x4849,    -1,    -1,
   296: 	    -2,    -1,    -1,0x524f,    -1,    -1,    -1,    -1,
   297: 	    -1,    -2,    -1,    -1,    -1,    -1,    -1,    -1,
   298: 	    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1
   299: };
   300: 
   301: static int *raiga_jumppoints = jumppoints_00;
   302: 
   303: static MACHINE_INIT ( raiga )
   304: {
   305: 	raiga_jumppoints = jumppoints_00;
   306: }
   307: 
   308: static WRITE16_HANDLER( raiga_protection_w )
   309: {
   310: 	if (ACCESSING_MSB)
   311: 	{
   312: 		static int jumpcode;
   313: 
   314: 		data >>= 8;
   315: 
   316: //		logerror("PC %06x: prot = %02x\n",activecpu_get_pc(),data);
   317: 
   318: 		switch (data & 0xf0)
   319: 		{
   320: 			case 0x00:	/* init */
   321: 				prot = 0x00;
   322: 				break;
   323: 			case 0x10:	/* high 4 bits of jump code */
   324: 				jumpcode = (data & 0x0f) << 4;
   325: 				prot = 0x10;
   326: 				break;
   327: 			case 0x20:	/* low 4 bits of jump code */
   328: 				jumpcode |= data & 0x0f;
   329: 				logerror("requested protection jumpcode %02x\n",jumpcode);
   330: //				jumpcode = 0;
   331: 				if (raiga_jumppoints[jumpcode] == -2)
   332: 				{
   333: 					raiga_jumppoints = jumppoints_other;
   334: 				}
   335: 
   336: 				if (raiga_jumppoints[jumpcode] == -1)
   337: 				{
   338: 					logerror("unknown jumpcode %02x\n",jumpcode);
   339: 					usrintf_showmessage("unknown jumpcode %02x",jumpcode);
   340: 					jumpcode = 0;
   341: 				}
   342: 				prot = 0x20;
   343: 				break;
   344: 			case 0x30:	/* ask for bits 12-15 of function address */
   345: 				prot = 0x40 | ((raiga_jumppoints[jumpcode] >> 12) & 0x0f);
   346: 				break;
   347: 			case 0x40:	/* ask for bits 8-11 of function address */
   348: 				prot = 0x50 | ((raiga_jumppoints[jumpcode] >> 8) & 0x0f);
   349: 				break;
   350: 			case 0x50:	/* ask for bits 4-7 of function address */
   351: 				prot = 0x60 | ((raiga_jumppoints[jumpcode] >> 4) & 0x0f);
   352: 				break;
   353: 			case 0x60:	/* ask for bits 0-3 of function address */
   354: 				prot = 0x70 | ((raiga_jumppoints[jumpcode] >> 0) & 0x0f);
   355: 				break;
   356: 		}
   357: 	}
   358: }
   359: 
   360: static READ16_HANDLER( raiga_protection_r )
   361: {
   362: //	logerror("PC %06x: read prot %02x\n",activecpu_get_pc(),prot);
   363: 	return prot;
   364: }
   365: 
   366: static MEMORY_READ16_START( readmem )
   367: 	{ 0x000000, 0x03ffff, MRA16_ROM },
   368: 	{ 0x060000, 0x063fff, MRA16_RAM },
   369: 	{ 0x070000, 0x070fff, MRA16_RAM },
   370: 	{ 0x072000, 0x073fff, gaiden_videoram2_r },
   371: 	{ 0x074000, 0x075fff, gaiden_videoram3_r },
   372: 	{ 0x076000, 0x077fff, MRA16_RAM },
   373: 	{ 0x078000, 0x0787ff, MRA16_RAM },
   374: 	{ 0x078800, 0x079fff, MRA16_NOP },   /* extra portion of palette RAM, not really used */
   375: 	{ 0x07a000, 0x07a001, input_port_0_word_r },
   376: 	{ 0x07a002, 0x07a003, input_port_1_word_r },
   377: 	{ 0x07a004, 0x07a005, input_port_2_word_r },
   378: MEMORY_END
   379: 
   380: static MEMORY_WRITE16_START( writemem )
   381: 	{ 0x000000, 0x03ffff, MWA16_ROM },
   382: 	{ 0x060000, 0x063fff, MWA16_RAM },
   383: 	{ 0x070000, 0x070fff, gaiden_videoram_w, &gaiden_videoram },
   384: 	{ 0x072000, 0x073fff, gaiden_videoram2_w, &gaiden_videoram2 },
   385: 	{ 0x074000, 0x075fff, gaiden_videoram3_w, &gaiden_videoram3 },
   386: 	{ 0x076000, 0x077fff, MWA16_RAM, &spriteram16, &spriteram_size },
   387: 	{ 0x078000, 0x079fff, paletteram16_xxxxBBBBGGGGRRRR_word_w, &paletteram16 },
   388: 	{ 0x07a104, 0x07a105, gaiden_txscrolly_w },
   389: 	{ 0x07a10c, 0x07a10d, gaiden_txscrollx_w },
   390: 	{ 0x07a204, 0x07a205, gaiden_fgscrolly_w },
   391: 	{ 0x07a20c, 0x07a20d, gaiden_fgscrollx_w },
   392: 	{ 0x07a304, 0x07a305, gaiden_bgscrolly_w },
   393: 	{ 0x07a30c, 0x07a30d, gaiden_bgscrollx_w },
   394: 	{ 0x07a800, 0x07a801, watchdog_reset16_w },
   395: 	{ 0x07a802, 0x07a803, gaiden_sound_command_w },
   396: 	{ 0x07a806, 0x07a807, MWA16_NOP },
   397: 	{ 0x07a808, 0x07a809, gaiden_flip_w },
   398: MEMORY_END
   399: 
   400: static MEMORY_READ_START( sound_readmem )
   401: 	{ 0x0000, 0xdfff, MRA_ROM },
   402: 	{ 0xf000, 0xf7ff, MRA_RAM },
   403: 	{ 0xf800, 0xf800, OKIM6295_status_0_r },
   404: 	{ 0xfc00, 0xfc00, MRA_NOP },	/* ?? */
   405: 	{ 0xfc20, 0xfc20, soundlatch_r },
   406: MEMORY_END
   407: 
   408: static MEMORY_WRITE_START( sound_writemem )
   409: 	{ 0x0000, 0xdfff, MWA_ROM },
   410: 	{ 0xf000, 0xf7ff, MWA_RAM },
   411: 	{ 0xf800, 0xf800, OKIM6295_data_0_w },
   412: 	{ 0xf810, 0xf810, YM2203_control_port_0_w },
   413: 	{ 0xf811, 0xf811, YM2203_write_port_0_w },
   414: 	{ 0xf820, 0xf820, YM2203_control_port_1_w },
   415: 	{ 0xf821, 0xf821, YM2203_write_port_1_w },
   416: 	{ 0xfc00, 0xfc00, MWA_NOP },	/* ?? */
   417: MEMORY_END
   418: 
   419: 
   420: 
   421: INPUT_PORTS_START( shadoww )
   422: 	PORT_START	/* System Inputs */
   423: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
   424: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
   425: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
   426: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
   427: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
   428: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
   429: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
   430: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
   431: 
   432: 	PORT_START	/* Players Inputs */
   433: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER1 | IPF_8WAY )
   434: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 | IPF_8WAY )
   435: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER1 | IPF_8WAY )
   436: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER1 | IPF_8WAY )
   437: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
   438: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   439: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   440: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
   441: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER2 | IPF_8WAY )
   442: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 | IPF_8WAY )
   443: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER2 | IPF_8WAY )
   444: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER2 | IPF_8WAY )
   445: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
   446: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   447: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   448: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   449: 
   450: 	/* Dip Switches order fits the first screen */
   451: 
   452: 	PORT_START	/* DSW */
   453: 	PORT_DIPNAME( 0x00e0, 0x00e0, DEF_STR( Coin_A ) )
   454: 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
   455: 	PORT_DIPSETTING(      0x0080, DEF_STR( 4C_1C ) )
   456: 	PORT_DIPSETTING(      0x0040, DEF_STR( 3C_1C ) )
   457: 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
   458: 	PORT_DIPSETTING(      0x00e0, DEF_STR( 1C_1C ) )
   459: 	PORT_DIPSETTING(      0x0060, DEF_STR( 1C_2C ) )
   460: 	PORT_DIPSETTING(      0x00a0, DEF_STR( 1C_3C ) )
   461: 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_4C ) )
   462: 	PORT_DIPNAME( 0x001c, 0x001c, DEF_STR( Coin_B ) )
   463: 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
   464: 	PORT_DIPSETTING(      0x0010, DEF_STR( 4C_1C ) )
   465: 	PORT_DIPSETTING(      0x0008, DEF_STR( 3C_1C ) )
   466: 	PORT_DIPSETTING(      0x0004, DEF_STR( 2C_1C ) )
   467: 	PORT_DIPSETTING(      0x001c, DEF_STR( 1C_1C ) )
   468: 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_2C ) )
   469: 	PORT_DIPSETTING(      0x0014, DEF_STR( 1C_3C ) )
   470: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_4C ) )
   471: 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) )
   472: 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
   473: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   474: 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Demo_Sounds ) )
   475: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
   476: 	PORT_DIPSETTING(      0x0001, DEF_STR( On ) )
   477: 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Lives ) )
   478: 	PORT_DIPSETTING(      0x0000, "1" )
   479: 	PORT_DIPSETTING(      0xc000, "2" )
   480: 	PORT_DIPSETTING(      0x4000, "3" )
   481: 	PORT_DIPSETTING(      0x8000, "4" )
   482: 	PORT_DIPNAME( 0x3000, 0x3000, "Energy" )
   483: 	PORT_DIPSETTING(      0x0000, "2" )
   484: 	PORT_DIPSETTING(      0x3000, "3" )
   485: 	PORT_DIPSETTING(      0x1000, "4" )
   486: 	PORT_DIPSETTING(      0x2000, "5" )
   487: 	PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unused ) )
   488: 	PORT_DIPSETTING(      0x0800, DEF_STR( Off ) )
   489: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   490: 	PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unused ) )
   491: 	PORT_DIPSETTING(      0x0400, DEF_STR( Off ) )
   492: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   493: 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unused ) )
   494: 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
   495: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   496: 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unused ) )
   497: 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
   498: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   499: INPUT_PORTS_END
   500: 
   501: INPUT_PORTS_START( wildfang )
   502: 	PORT_START	/* System Inputs */
   503: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
   504: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
   505: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
   506: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
   507: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
   508: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
   509: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
   510: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
   511: 
   512: 	PORT_START	/* Players Inputs */
   513: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER1 | IPF_8WAY )
   514: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 | IPF_8WAY )
   515: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER1 | IPF_8WAY )
   516: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER1 | IPF_8WAY )
   517: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   518: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   519: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
   520: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
   521: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER2 | IPF_8WAY )
   522: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 | IPF_8WAY )
   523: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER2 | IPF_8WAY )
   524: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER2 | IPF_8WAY )
   525: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   526: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   527: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
   528: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   529: 
   530: 	/* Dip Switches order fits the first screen */
   531: 
   532: 	PORT_START	/* DSW */
   533: 	PORT_DIPNAME( 0x00e0, 0x00e0, DEF_STR( Coin_A ) )
   534: 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
   535: 	PORT_DIPSETTING(      0x0080, DEF_STR( 4C_1C ) )
   536: 	PORT_DIPSETTING(      0x0040, DEF_STR( 3C_1C ) )
   537: 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
   538: 	PORT_DIPSETTING(      0x00e0, DEF_STR( 1C_1C ) )
   539: 	PORT_DIPSETTING(      0x0060, DEF_STR( 1C_2C ) )
   540: 	PORT_DIPSETTING(      0x00a0, DEF_STR( 1C_3C ) )
   541: 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_4C ) )
   542: 	PORT_DIPNAME( 0x001c, 0x001c, DEF_STR( Coin_B ) )
   543: 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
   544: 	PORT_DIPSETTING(      0x0010, DEF_STR( 4C_1C ) )
   545: 	PORT_DIPSETTING(      0x0008, DEF_STR( 3C_1C ) )
   546: 	PORT_DIPSETTING(      0x0004, DEF_STR( 2C_1C ) )
   547: 	PORT_DIPSETTING(      0x001c, DEF_STR( 1C_1C ) )
   548: 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_2C ) )
   549: 	PORT_DIPSETTING(      0x0014, DEF_STR( 1C_3C ) )
   550: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_4C ) )
   551: 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) )
   552: 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
   553: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   554: 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Demo_Sounds ) )
   555: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
   556: 	PORT_DIPSETTING(      0x0001, DEF_STR( On ) )
   557: 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Lives ) )
   558: 	PORT_DIPSETTING(      0x8000, "1" )
   559: 	PORT_DIPSETTING(      0xc000, "2" )
   560: 	PORT_DIPSETTING(      0x4000, "3" )
   561: /*	PORT_DIPSETTING(      0x0000, "2" ) */
   562: 	/* When bit 0 is On,  use bits 4 and 5 for difficulty */
   563: 	PORT_DIPNAME( 0x3000, 0x3000, "Difficulty (Tecmo Knight)" )
   564: 	PORT_DIPSETTING(      0x3000, "Easy" )
   565: 	PORT_DIPSETTING(      0x1000, "Normal" )
   566: 	PORT_DIPSETTING(      0x2000, "Hard" )
   567: 	PORT_DIPSETTING(      0x0000, "Hardest" )
   568: 	/* When bit 0 is 0ff, use bits 2 and 3 for difficulty */
   569: 	PORT_DIPNAME( 0x0c00, 0x0c00, "Difficulty (Wild Fang)" )
   570: 	PORT_DIPSETTING(      0x0c00, "Easy" )
   571: 	PORT_DIPSETTING(      0x0400, "Normal" )
   572: 	PORT_DIPSETTING(      0x0800, "Hard" )
   573: 	PORT_DIPSETTING(      0x0000, "Hardest" )
   574: 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unused ) )
   575: 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
   576: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   577: 	PORT_DIPNAME( 0x0100, 0x0100, "Title" )	// also affects Difficulty Table (see above)
   578: 	PORT_DIPSETTING(      0x0100, "Wild Fang" )
   579: 	PORT_DIPSETTING(      0x0000, "Tecmo Knight" )
   580: INPUT_PORTS_END
   581: 
   582: INPUT_PORTS_START( tknight )
   583: 	PORT_START	/* System Inputs */
   584: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
   585: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
   586: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
   587: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
   588: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
   589: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
   590: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
   591: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
   592: 
   593: 	PORT_START	/* Players Inputs */
   594: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER1 | IPF_8WAY )
   595: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 | IPF_8WAY )
   596: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER1 | IPF_8WAY )
   597: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER1 | IPF_8WAY )
   598: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   599: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   600: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
   601: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
   602: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER2 | IPF_8WAY )
   603: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 | IPF_8WAY )
   604: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER2 | IPF_8WAY )
   605: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER2 | IPF_8WAY )
   606: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   607: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   608: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
   609: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   610: 
   611: 	/* Dip Switches order fits the first screen */
   612: 
   613: 	PORT_START	/* DSW */
   614: 	PORT_DIPNAME( 0x00e0, 0x00e0, DEF_STR( Coin_A ) )
   615: 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
   616: 	PORT_DIPSETTING(      0x0080, DEF_STR( 4C_1C ) )
   617: 	PORT_DIPSETTING(      0x0040, DEF_STR( 3C_1C ) )
   618: 	PORT_DIPSETTING(      0x0020, DEF_STR( 2C_1C ) )
   619: 	PORT_DIPSETTING(      0x00e0, DEF_STR( 1C_1C ) )
   620: 	PORT_DIPSETTING(      0x0060, DEF_STR( 1C_2C ) )
   621: 	PORT_DIPSETTING(      0x00a0, DEF_STR( 1C_3C ) )
   622: 	PORT_DIPSETTING(      0x00c0, DEF_STR( 1C_4C ) )
   623: 	PORT_DIPNAME( 0x001c, 0x001c, DEF_STR( Coin_B ) )
   624: 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
   625: 	PORT_DIPSETTING(      0x0010, DEF_STR( 4C_1C ) )
   626: 	PORT_DIPSETTING(      0x0008, DEF_STR( 3C_1C ) )
   627: 	PORT_DIPSETTING(      0x0004, DEF_STR( 2C_1C ) )
   628: 	PORT_DIPSETTING(      0x001c, DEF_STR( 1C_1C ) )
   629: 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_2C ) )
   630: 	PORT_DIPSETTING(      0x0014, DEF_STR( 1C_3C ) )
   631: 	PORT_DIPSETTING(      0x0018, DEF_STR( 1C_4C ) )
   632: 	PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Flip_Screen ) )
   633: 	PORT_DIPSETTING(      0x0002, DEF_STR( Off ) )
   634: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   635: 	PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Demo_Sounds ) )
   636: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
   637: 	PORT_DIPSETTING(      0x0001, DEF_STR( On ) )
   638: 	PORT_DIPNAME( 0xc000, 0xc000, DEF_STR( Lives ) )
   639: 	PORT_DIPSETTING(      0x8000, "1" )
   640: 	PORT_DIPSETTING(      0xc000, "2" )
   641: 	PORT_DIPSETTING(      0x4000, "3" )
   642: /*	PORT_DIPSETTING(      0x0000, "2" ) */
   643: 	PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unused ) )
   644: 	PORT_DIPSETTING(      0x2000, DEF_STR( Off ) )
   645: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   646: 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unused ) )
   647: 	PORT_DIPSETTING(      0x1000, DEF_STR( Off ) )
   648: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   649: 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Difficulty ) )
   650: 	PORT_DIPSETTING(      0x0c00, "Easy" )
   651: 	PORT_DIPSETTING(      0x0400, "Normal" )
   652: 	PORT_DIPSETTING(      0x0800, "Hard" )
   653: 	PORT_DIPSETTING(      0x0000, "Hardest" )
   654: 	PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unused ) )
   655: 	PORT_DIPSETTING(      0x0200, DEF_STR( Off ) )
   656: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   657: 	PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unused ) )
   658: 	PORT_DIPSETTING(      0x0100, DEF_STR( Off ) )
   659: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   660: INPUT_PORTS_END
   661: 
   662: INPUT_PORTS_START( raiga )
   663: 	PORT_START	/* System Inputs */
   664: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
   665: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
   666: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
   667: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
   668: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
   669: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
   670: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 )
   671: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN2 )
   672: 
   673: 	PORT_START	/* Players Inputs */
   674: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER1 | IPF_8WAY )
   675: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER1 | IPF_8WAY )
   676: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER1 | IPF_8WAY )
   677: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER1 | IPF_8WAY )
   678: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   679: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   680: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
   681: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
   682: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_PLAYER2 | IPF_8WAY )
   683: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_PLAYER2 | IPF_8WAY )
   684: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_PLAYER2 | IPF_8WAY )
   685: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_PLAYER2 | IPF_8WAY )
   686: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   687: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   688: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   689: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
   690: 
   691: 	/* Dip Switches order fits the first screen */
   692: 
   693: 	PORT_START	/* DSW */
   694: 	PORT_DIPNAME( 0x00f0, 0x00f0, DEF_STR( Coin_A ) )
   695: 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
   696: 	PORT_DIPSETTING(      0x0040, DEF_STR( 4C_1C ) )
   697: 	PORT_DIPSETTING(      0x00a0, DEF_STR( 3C_1C ) )
   698: 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_1C ) )
   699: 	PORT_DIPSETTING(      0x0020, DEF_STR( 3C_2C ) )
   700: 	PORT_DIPSETTING(      0x0080, DEF_STR( 4C_3C ) )
   701: 	PORT_DIPSETTING(      0x00f0, DEF_STR( 1C_1C ) )
   702: 	PORT_DIPSETTING(      0x00c0, DEF_STR( 3C_4C ) )
   703: 	PORT_DIPSETTING(      0x00e0, DEF_STR( 2C_3C ) )
   704: 	PORT_DIPSETTING(      0x0070, DEF_STR( 1C_2C ) )
   705: 	PORT_DIPSETTING(      0x0060, DEF_STR( 2C_5C ) )
   706: 	PORT_DIPSETTING(      0x00b0, DEF_STR( 1C_3C ) )
   707: 	PORT_DIPSETTING(      0x0030, DEF_STR( 1C_4C ) )
   708: 	PORT_DIPSETTING(      0x00d0, DEF_STR( 1C_5C ) )
   709: 	PORT_DIPSETTING(      0x0050, DEF_STR( 1C_6C ) )
   710: 	PORT_DIPSETTING(      0x0090, DEF_STR( 1C_7C ) )
   711: 	PORT_DIPNAME( 0x000f, 0x000f, DEF_STR( Coin_B ) )
   712: 	PORT_DIPSETTING(      0x0000, DEF_STR( 5C_1C ) )
   713: 	PORT_DIPSETTING(      0x0004, DEF_STR( 4C_1C ) )
   714: 	PORT_DIPSETTING(      0x000a, DEF_STR( 3C_1C ) )
   715: 	PORT_DIPSETTING(      0x0001, DEF_STR( 2C_1C ) )
   716: 	PORT_DIPSETTING(      0x0002, DEF_STR( 3C_2C ) )
   717: 	PORT_DIPSETTING(      0x0008, DEF_STR( 4C_3C ) )
   718: 	PORT_DIPSETTING(      0x000f, DEF_STR( 1C_1C ) )
   719: 	PORT_DIPSETTING(      0x000c, DEF_STR( 3C_4C ) )
   720: 	PORT_DIPSETTING(      0x000e, DEF_STR( 2C_3C ) )
   721: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_2C ) )
   722: 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_5C ) )
   723: 	PORT_DIPSETTING(      0x000b, DEF_STR( 1C_3C ) )
   724: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_4C ) )
   725: 	PORT_DIPSETTING(      0x000d, DEF_STR( 1C_5C ) )
   726: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_6C ) )
   727: 	PORT_DIPSETTING(      0x0009, DEF_STR( 1C_7C ) )
   728: 	PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Demo_Sounds ) )
   729: 	PORT_DIPSETTING(      0x8000, DEF_STR( Off ) )
   730: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   731: 	PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unused ) )
   732: 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
   733: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   734: 	PORT_DIPNAME( 0x3000, 0x1000, DEF_STR( Difficulty ) )
   735: 	PORT_DIPSETTING(      0x3000, "Easy" )
   736: 	PORT_DIPSETTING(      0x1000, "Normal" )
   737: 	PORT_DIPSETTING(      0x2000, "Hard" )
   738: 	PORT_DIPSETTING(      0x0000, "Hardest" )
   739: 	PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Lives ) )
   740: 	PORT_DIPSETTING(      0x0000, "2" )
   741: 	PORT_DIPSETTING(      0x0c00, "3" )
   742: 	PORT_DIPSETTING(      0x0400, "4" )
   743: 	PORT_DIPSETTING(      0x0800, "5" )
   744: 	PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Bonus_Life ) )
   745: 	PORT_DIPSETTING(      0x0300, "50k 200k" )
   746: 	PORT_DIPSETTING(      0x0100, "100k 300k" )
   747: 	PORT_DIPSETTING(      0x0200, "50k only" )
   748: 	PORT_DIPSETTING(      0x0000, "None" )
   749: INPUT_PORTS_END
   750: 
   751: 
   752: 
   753: static struct GfxLayout tilelayout =
   754: {
   755: 	8,8,	/* tile size */
   756: 	RGN_FRAC(1,1),	/* number of tiles */
   757: 	4,	/* 4 bits per pixel */
   758: 	{ 0, 1, 2, 3 },
   759: 	{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4 },
   760: 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
   761: 	32*8	/* offset to next tile */
   762: };
   763: 
   764: static struct GfxLayout tile2layout =
   765: {
   766: 	16,16,	/* tile size */
   767: 	RGN_FRAC(1,1),	/* number of tiles */
   768: 	4,	/* 4 bits per pixel */
   769: 	{ 0, 1, 2, 3 },	/* the bitplanes are packed in one nibble */
   770: 	{ 0*4, 1*4, 2*4, 3*4, 4*4, 5*4, 6*4, 7*4,
   771: 	  32*8+0*4, 32*8+1*4, 32*8+2*4, 32*8+3*4,
   772: 	  32*8+4*4, 32*8+5*4, 32*8+6*4, 32*8+7*4,},
   773: 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32,
   774: 	  16*32, 17*32, 18*32, 19*32, 20*32, 21*32, 22*32, 23*32},
   775: 	128*8	/* offset to next tile */
   776: };
   777: 
   778: static struct GfxLayout spritelayout =
   779: {
   780: 	8,8,	/* sprites size */
   781: 	RGN_FRAC(1,2),	/* number of sprites */
   782: 	4,	/* 4 bits per pixel */
   783: 	{ 0, 1, 2, 3 },	/* the bitplanes are packed in one nibble */
   784: 	{ 0,4,RGN_FRAC(1,2),4+RGN_FRAC(1,2),8,12,8+RGN_FRAC(1,2),12+RGN_FRAC(1,2) },
   785: 	{ 0*16, 1*16, 2*16, 3*16, 4*16, 5*16, 6*16, 7*16 },
   786: 	16*8	/* offset to next sprite */
   787: };
   788: 
   789: static struct GfxDecodeInfo gfxdecodeinfo[] =
   790: {
   791: 	{ REGION_GFX1, 0, &tilelayout,        256, 4096 - 256 },	/* tiles 8x8  */
   792: 	{ REGION_GFX2, 0, &tile2layout,       768, 4096 - 768 },	/* tiles 16x16 */
   793: 	{ REGION_GFX3, 0, &tile2layout,       512, 4096 - 512 },	/* tiles 16x16 */
   794: 	{ REGION_GFX4, 0, &spritelayout,        0, 4096 -   0 },	/* sprites 8x8 */
   795: 
   796: 	{ -1 } /* end of array */
   797: };
   798: 
   799: 
   800: 
   801: /* handler called by the 2203 emulator when the internal timers cause an IRQ */
   802: static void irqhandler(int irq)
   803: {
   804: 	cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
   805: }
   806: 
   807: static struct YM2203interface ym2203_interface =
   808: {
   809: 	2,			/* 2 chips */
   810: 	4000000,	/* 4 MHz ? (hand tuned) */
   811: 	{ YM2203_VOL(60,15), YM2203_VOL(60,15) },
   812: 	{ 0 },
   813: 	{ 0 },
   814: 	{ 0 },
   815: 	{ 0 },
   816: 	{ irqhandler }
   817: };
   818: 
   819: 
   820: static struct OKIM6295interface okim6295_interface =
   821: {
   822: 	1,                  /* 1 chip */
   823: 	{ 7575 },			/* 7575Hz frequency */
   824: 	{ REGION_SOUND1 },	/* memory region */
   825: 	{ 20 }
   826: };
   827: 
   828: 
   829: static MACHINE_DRIVER_START( shadoww )
   830: 
   831: 	/* basic machine hardware */
   832: 	MDRV_CPU_ADD(M68000, 18432000/2)	/* 9.216 MHz */
   833: 	MDRV_CPU_MEMORY(readmem,writemem)
   834: 	MDRV_CPU_VBLANK_INT(irq5_line_hold,1)
   835: 
   836: 	MDRV_CPU_ADD(Z80, 4000000)	/* 4 MHz */
   837: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
   838: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   839: 								/* IRQs are triggered by the YM2203 */
   840: 	MDRV_FRAMES_PER_SECOND(60)
   841: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   842: 
   843: 	MDRV_MACHINE_INIT(raiga)
   844: 
   845: 	/* video hardware */
   846: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   847: 	MDRV_SCREEN_SIZE(32*8, 32*8)
   848: 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
   849: 	MDRV_GFXDECODE(gfxdecodeinfo)
   850: 	MDRV_PALETTE_LENGTH(4096)
   851: 
   852: 	MDRV_VIDEO_START(gaiden)
   853: 	MDRV_VIDEO_UPDATE(gaiden)
   854: 
   855: 	/* sound hardware */
   856: 	MDRV_SOUND_ADD(YM2203, ym2203_interface)
   857: 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
   858: MACHINE_DRIVER_END
   859: 
   860: static MACHINE_DRIVER_START( raiga )
   861: 	MDRV_IMPORT_FROM(shadoww)
   862: 
   863: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_NEEDS_6BITS_PER_GUN | VIDEO_RGB_DIRECT)
   864: 
   865: 	MDRV_VIDEO_START(raiga)
   866: 	MDRV_VIDEO_UPDATE(raiga)
   867: MACHINE_DRIVER_END
   868: 
   869: 
   870: /***************************************************************************
   871: 
   872:   Game driver(s)
   873: 
   874: ***************************************************************************/
   875: 
   876: ROM_START( shadoww )
   877: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 2*128k for 68000 code */
   878: 	ROM_LOAD16_BYTE( "shadowa.1",     0x00000, 0x20000, CRC(8290d567) SHA1(1e2f80c1548c853ec1127e79438f62eda6592a07) )
   879: 	ROM_LOAD16_BYTE( "shadowa.2",     0x00001, 0x20000, CRC(f3f08921) SHA1(df6bb7302714e0eab12cbd0a7f2a4ca751a600e1) )
   880: 
   881: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
   882: 	ROM_LOAD( "gaiden.3",     0x0000, 0x10000, CRC(75fd3e6a) SHA1(3333e84ed4983caa133e60a8e8895fa897ab4949) )   /* Audio CPU is a Z80  */
   883: 
   884: 	ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE )
   885: 	ROM_LOAD( "gaiden.5",     0x000000, 0x10000, CRC(8d4035f7) SHA1(3473456cdd24e312e3073586d7e8f24eb71bbea1) )	/* 8x8 tiles */
   886: 
   887: 	ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
   888: 	ROM_LOAD( "14.bin",       0x000000, 0x20000, CRC(1ecfddaa) SHA1(e71d60ae1a98fe8512498f91cce01c16be9f0871) )
   889: 	ROM_LOAD( "15.bin",       0x020000, 0x20000, CRC(1291a696) SHA1(023b05260214adc39bdba81d5e2aa246b6d74a6a) )
   890: 	ROM_LOAD( "16.bin",       0x040000, 0x20000, CRC(140b47ca) SHA1(6ffd9b7116658a46a124f9085602d88aa143d829) )
   891: 	ROM_LOAD( "17.bin",       0x060000, 0x20000, CRC(7638cccb) SHA1(780d47d3aa248346e0e7abc6e6284542e7392919) )
   892: 
   893: 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
   894: 	ROM_LOAD( "18.bin",       0x000000, 0x20000, CRC(3fadafd6) SHA1(0cb5387a354c631d5c6aca8f77ecbbc0d175a574) )
   895: 	ROM_LOAD( "19.bin",       0x020000, 0x20000, CRC(ddae9d5b) SHA1(108b202ae7ae124a32400a0a404c7d2b614c60bd) )
   896: 	ROM_LOAD( "20.bin",       0x040000, 0x20000, CRC(08cf7a93) SHA1(fd3278c3fb3ef30ed03c8a95656d86ba82a163d8) )
   897: 	ROM_LOAD( "21.bin",       0x060000, 0x20000, CRC(1ac892f5) SHA1(28364266ca9d1955fb7953f5c2d6f35e114beec6) )
   898: 
   899: 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
   900: 	ROM_LOAD( "gaiden.6",     0x000000, 0x20000, CRC(e7ccdf9f) SHA1(80ffcefc95660471124898a9c2bee55df36bda13) )	/* sprites A1 */
   901: 	ROM_LOAD( "gaiden.8",     0x020000, 0x20000, CRC(7ef7f880) SHA1(26ba9a76adce24beea3cffa1cb95aeafe6f82f96) )	/* sprites B1 */
   902: 	ROM_LOAD( "gaiden.10",    0x040000, 0x20000, CRC(a6451dec) SHA1(553e7a1453b59055fa0b10ca04125543d9f8987c) )	/* sprites C1 */
   903: 	ROM_LOAD( "shadoww.12a",  0x060000, 0x10000, CRC(9bb07731) SHA1(b799b1958dc9b84797fdab2591e33bd5d28884a3) )	/* sprites D1 */
   904: 	ROM_LOAD( "shadoww.12b",  0x070000, 0x10000, CRC(a4a950a2) SHA1(9766b5e88edd16554e59179a37cca49d29f83367) )	/* sprites D1 */
   905: 	ROM_LOAD( "gaiden.7",     0x080000, 0x20000, CRC(016bec95) SHA1(6a6757c52ca9a2398ea43d1af4a8d5adde6f4cd2) )	/* sprites A2 */
   906: 	ROM_LOAD( "gaiden.9",     0x0a0000, 0x20000, CRC(6e9b7fd3) SHA1(c86ff61844fc94c02625bb812b9062d0649c8fdf) )	/* sprites B2 */
   907: 	ROM_LOAD( "gaiden.11",    0x0c0000, 0x20000, CRC(7fbfdf5e) SHA1(ab67b72dcadb5f2236d29de751de5bf890a9e423) )	/* sprites C2 */
   908: 	ROM_LOAD( "shadoww.13a",  0x0e0000, 0x10000, CRC(996d2fa5) SHA1(a32526949af3635914927ebbbe684c3de9562a9d) )	/* sprites D2 */
   909: 	ROM_LOAD( "shadoww.13b",  0x0f0000, 0x10000, CRC(b8df8a34) SHA1(6810f7961052a983b8c78b42d550038051012c6d) )	/* sprites D2 */
   910: 
   911: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* 128k for ADPCM samples - sound chip is OKIM6295 */
   912: 	ROM_LOAD( "gaiden.4",     0x0000, 0x20000, CRC(b0e0faf9) SHA1(2275d2ef5eee356ccf80b9e9644d16fc30a4d107) ) /* samples */
   913: ROM_END
   914: 
   915: ROM_START( shadowwa )
   916: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 2*128k for 68000 code */
   917: 	ROM_LOAD16_BYTE( "shadoww.1",    0x00000, 0x20000, CRC(fefba387) SHA1(20ce28da5877009494c3f3f67488bbe805d91340) )
   918: 	ROM_LOAD16_BYTE( "shadoww.2",    0x00001, 0x20000, CRC(9b9d6b18) SHA1(75068611fb1de61120be8bf840f61d90c0dc86ca) )
   919: 
   920: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
   921: 	ROM_LOAD( "gaiden.3",     0x0000, 0x10000, CRC(75fd3e6a) SHA1(3333e84ed4983caa133e60a8e8895fa897ab4949) )   /* Audio CPU is a Z80  */
   922: 
   923: 	ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE )
   924: 	ROM_LOAD( "gaiden.5",     0x000000, 0x10000, CRC(8d4035f7) SHA1(3473456cdd24e312e3073586d7e8f24eb71bbea1) )	/* 8x8 tiles */
   925: 
   926: 	ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
   927: 	ROM_LOAD( "14.bin",       0x000000, 0x20000, CRC(1ecfddaa) SHA1(e71d60ae1a98fe8512498f91cce01c16be9f0871) )
   928: 	ROM_LOAD( "15.bin",       0x020000, 0x20000, CRC(1291a696) SHA1(023b05260214adc39bdba81d5e2aa246b6d74a6a) )
   929: 	ROM_LOAD( "16.bin",       0x040000, 0x20000, CRC(140b47ca) SHA1(6ffd9b7116658a46a124f9085602d88aa143d829) )
   930: 	ROM_LOAD( "17.bin",       0x060000, 0x20000, CRC(7638cccb) SHA1(780d47d3aa248346e0e7abc6e6284542e7392919) )
   931: 
   932: 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
   933: 	ROM_LOAD( "18.bin",       0x000000, 0x20000, CRC(3fadafd6) SHA1(0cb5387a354c631d5c6aca8f77ecbbc0d175a574) )
   934: 	ROM_LOAD( "19.bin",       0x020000, 0x20000, CRC(ddae9d5b) SHA1(108b202ae7ae124a32400a0a404c7d2b614c60bd) )
   935: 	ROM_LOAD( "20.bin",       0x040000, 0x20000, CRC(08cf7a93) SHA1(fd3278c3fb3ef30ed03c8a95656d86ba82a163d8) )
   936: 	ROM_LOAD( "21.bin",       0x060000, 0x20000, CRC(1ac892f5) SHA1(28364266ca9d1955fb7953f5c2d6f35e114beec6) )
   937: 
   938: 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
   939: 	ROM_LOAD( "gaiden.6",     0x000000, 0x20000, CRC(e7ccdf9f) SHA1(80ffcefc95660471124898a9c2bee55df36bda13) )	/* sprites A1 */
   940: 	ROM_LOAD( "gaiden.8",     0x020000, 0x20000, CRC(7ef7f880) SHA1(26ba9a76adce24beea3cffa1cb95aeafe6f82f96) )	/* sprites B1 */
   941: 	ROM_LOAD( "gaiden.10",    0x040000, 0x20000, CRC(a6451dec) SHA1(553e7a1453b59055fa0b10ca04125543d9f8987c) )	/* sprites C1 */
   942: 	ROM_LOAD( "shadoww.12a",  0x060000, 0x10000, CRC(9bb07731) SHA1(b799b1958dc9b84797fdab2591e33bd5d28884a3) )	/* sprites D1 */
   943: 	ROM_LOAD( "shadoww.12b",  0x070000, 0x10000, CRC(a4a950a2) SHA1(9766b5e88edd16554e59179a37cca49d29f83367) )	/* sprites D1 */
   944: 	ROM_LOAD( "gaiden.7",     0x080000, 0x20000, CRC(016bec95) SHA1(6a6757c52ca9a2398ea43d1af4a8d5adde6f4cd2) )	/* sprites A2 */
   945: 	ROM_LOAD( "gaiden.9",     0x0a0000, 0x20000, CRC(6e9b7fd3) SHA1(c86ff61844fc94c02625bb812b9062d0649c8fdf) )	/* sprites B2 */
   946: 	ROM_LOAD( "gaiden.11",    0x0c0000, 0x20000, CRC(7fbfdf5e) SHA1(ab67b72dcadb5f2236d29de751de5bf890a9e423) )	/* sprites C2 */
   947: 	ROM_LOAD( "shadoww.13a",  0x0e0000, 0x10000, CRC(996d2fa5) SHA1(a32526949af3635914927ebbbe684c3de9562a9d) )	/* sprites D2 */
   948: 	ROM_LOAD( "shadoww.13b",  0x0f0000, 0x10000, CRC(b8df8a34) SHA1(6810f7961052a983b8c78b42d550038051012c6d) )	/* sprites D2 */
   949: 
   950: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* 128k for ADPCM samples - sound chip is OKIM6295 */
   951: 	ROM_LOAD( "gaiden.4",     0x0000, 0x20000, CRC(b0e0faf9) SHA1(2275d2ef5eee356ccf80b9e9644d16fc30a4d107) ) /* samples */
   952: ROM_END
   953: 
   954: ROM_START( gaiden )
   955: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 2*128k for 68000 code */
   956: 	ROM_LOAD16_BYTE( "gaiden.1",     0x00000, 0x20000, CRC(e037ff7c) SHA1(5418bcb80d4c52f05e3c26668193452fd51f1283) )
   957: 	ROM_LOAD16_BYTE( "gaiden.2",     0x00001, 0x20000, CRC(454f7314) SHA1(231296423870f00ea2e545faf0fbb37577430a4f) )
   958: 
   959: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
   960: 	ROM_LOAD( "gaiden.3",     0x0000, 0x10000, CRC(75fd3e6a) SHA1(3333e84ed4983caa133e60a8e8895fa897ab4949) )   /* Audio CPU is a Z80  */
   961: 
   962: 	ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE )
   963: 	ROM_LOAD( "gaiden.5",     0x000000, 0x10000, CRC(8d4035f7) SHA1(3473456cdd24e312e3073586d7e8f24eb71bbea1) )	/* 8x8 tiles */
   964: 
   965: 	ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
   966: 	ROM_LOAD( "14.bin",       0x000000, 0x20000, CRC(1ecfddaa) SHA1(e71d60ae1a98fe8512498f91cce01c16be9f0871) )
   967: 	ROM_LOAD( "15.bin",       0x020000, 0x20000, CRC(1291a696) SHA1(023b05260214adc39bdba81d5e2aa246b6d74a6a) )
   968: 	ROM_LOAD( "16.bin",       0x040000, 0x20000, CRC(140b47ca) SHA1(6ffd9b7116658a46a124f9085602d88aa143d829) )
   969: 	ROM_LOAD( "17.bin",       0x060000, 0x20000, CRC(7638cccb) SHA1(780d47d3aa248346e0e7abc6e6284542e7392919) )
   970: 
   971: 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
   972: 	ROM_LOAD( "18.bin",       0x000000, 0x20000, CRC(3fadafd6) SHA1(0cb5387a354c631d5c6aca8f77ecbbc0d175a574) )
   973: 	ROM_LOAD( "19.bin",       0x020000, 0x20000, CRC(ddae9d5b) SHA1(108b202ae7ae124a32400a0a404c7d2b614c60bd) )
   974: 	ROM_LOAD( "20.bin",       0x040000, 0x20000, CRC(08cf7a93) SHA1(fd3278c3fb3ef30ed03c8a95656d86ba82a163d8) )
   975: 	ROM_LOAD( "21.bin",       0x060000, 0x20000, CRC(1ac892f5) SHA1(28364266ca9d1955fb7953f5c2d6f35e114beec6) )
   976: 
   977: 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
   978: 	ROM_LOAD( "gaiden.6",     0x000000, 0x20000, CRC(e7ccdf9f) SHA1(80ffcefc95660471124898a9c2bee55df36bda13) )	/* sprites A1 */
   979: 	ROM_LOAD( "gaiden.8",     0x020000, 0x20000, CRC(7ef7f880) SHA1(26ba9a76adce24beea3cffa1cb95aeafe6f82f96) )	/* sprites B1 */
   980: 	ROM_LOAD( "gaiden.10",    0x040000, 0x20000, CRC(a6451dec) SHA1(553e7a1453b59055fa0b10ca04125543d9f8987c) )	/* sprites C1 */
   981: 	ROM_LOAD( "gaiden.12",    0x060000, 0x20000, CRC(90f1e13a) SHA1(3fe9fe62aa9e92c871c791a3b11f96c9a48099a9) )	/* sprites D1 */
   982: 	ROM_LOAD( "gaiden.7",     0x080000, 0x20000, CRC(016bec95) SHA1(6a6757c52ca9a2398ea43d1af4a8d5adde6f4cd2) )	/* sprites A2 */
   983: 	ROM_LOAD( "gaiden.9",     0x0a0000, 0x20000, CRC(6e9b7fd3) SHA1(c86ff61844fc94c02625bb812b9062d0649c8fdf) )	/* sprites B2 */
   984: 	ROM_LOAD( "gaiden.11",    0x0c0000, 0x20000, CRC(7fbfdf5e) SHA1(ab67b72dcadb5f2236d29de751de5bf890a9e423) )	/* sprites C2 */
   985: 	ROM_LOAD( "gaiden.13",    0x0e0000, 0x20000, CRC(7d9f5c5e) SHA1(200102532ea9a88c7c708e03f8893c46dff827d1) )	/* sprites D2 */
   986: 
   987: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* 128k for ADPCM samples - sound chip is OKIM6295 */
   988: 	ROM_LOAD( "gaiden.4",     0x0000, 0x20000, CRC(b0e0faf9) SHA1(2275d2ef5eee356ccf80b9e9644d16fc30a4d107) ) /* samples */
   989: ROM_END
   990: 
   991: ROM_START( ryukendn )
   992: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 2*128k for 68000 code */
   993: 	ROM_LOAD16_BYTE( "ryukendn.1",  0x00000, 0x20000, CRC(6203a5e2) SHA1(8cfe05c483a351e938b067ffa642d515e28605a3) )
   994: 	ROM_LOAD16_BYTE( "ryukendn.2",  0x00001, 0x20000, CRC(9e99f522) SHA1(b2277d8934b5e6e2f556aee5092f5d1050774a34) )
   995: 
   996: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
   997: 	ROM_LOAD( "ryukendn.3",   0x0000, 0x10000, CRC(6b686b69) SHA1(f0fa553acb3945f8dbbf466073c8bae35a0375ef) )   /* Audio CPU is a Z80  */
   998: 
   999: 	ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE )
  1000: 	ROM_LOAD( "ryukendn.5",   0x000000, 0x10000, CRC(765e7baa) SHA1(4d0a50f091b284739b6d9a8ceb4f81999da445fc) )	/* 8x8 tiles */
  1001: 
  1002: 	ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
  1003: 	ROM_LOAD( "14.bin",       0x000000, 0x20000, CRC(1ecfddaa) SHA1(e71d60ae1a98fe8512498f91cce01c16be9f0871) )
  1004: 	ROM_LOAD( "15.bin",       0x020000, 0x20000, CRC(1291a696) SHA1(023b05260214adc39bdba81d5e2aa246b6d74a6a) )
  1005: 	ROM_LOAD( "16.bin",       0x040000, 0x20000, CRC(140b47ca) SHA1(6ffd9b7116658a46a124f9085602d88aa143d829) )
  1006: 	ROM_LOAD( "17.bin",       0x060000, 0x20000, CRC(7638cccb) SHA1(780d47d3aa248346e0e7abc6e6284542e7392919) )
  1007: 
  1008: 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
  1009: 	ROM_LOAD( "18.bin",       0x000000, 0x20000, CRC(3fadafd6) SHA1(0cb5387a354c631d5c6aca8f77ecbbc0d175a574) )
  1010: 	ROM_LOAD( "19.bin",       0x020000, 0x20000, CRC(ddae9d5b) SHA1(108b202ae7ae124a32400a0a404c7d2b614c60bd) )
  1011: 	ROM_LOAD( "20.bin",       0x040000, 0x20000, CRC(08cf7a93) SHA1(fd3278c3fb3ef30ed03c8a95656d86ba82a163d8) )
  1012: 	ROM_LOAD( "21.bin",       0x060000, 0x20000, CRC(1ac892f5) SHA1(28364266ca9d1955fb7953f5c2d6f35e114beec6) )
  1013: 
  1014: 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
  1015: 	ROM_LOAD( "gaiden.6",     0x000000, 0x20000, CRC(e7ccdf9f) SHA1(80ffcefc95660471124898a9c2bee55df36bda13) )	/* sprites A1 */
  1016: 	ROM_LOAD( "gaiden.8",     0x020000, 0x20000, CRC(7ef7f880) SHA1(26ba9a76adce24beea3cffa1cb95aeafe6f82f96) )	/* sprites B1 */
  1017: 	ROM_LOAD( "gaiden.10",    0x040000, 0x20000, CRC(a6451dec) SHA1(553e7a1453b59055fa0b10ca04125543d9f8987c) )	/* sprites C1 */
  1018: 	ROM_LOAD( "shadoww.12a",  0x060000, 0x10000, CRC(9bb07731) SHA1(b799b1958dc9b84797fdab2591e33bd5d28884a3) )	/* sprites D1 */
  1019: 	ROM_LOAD( "ryukendn.12b", 0x070000, 0x10000, CRC(1773628a) SHA1(e7eacc880f2a4174f17b263bedf8c1bc64007dbd) )	/* sprites D1 */
  1020: 	ROM_LOAD( "gaiden.7",     0x080000, 0x20000, CRC(016bec95) SHA1(6a6757c52ca9a2398ea43d1af4a8d5adde6f4cd2) )	/* sprites A2 */
  1021: 	ROM_LOAD( "ryukendn.9a",  0x0a0000, 0x10000, CRC(c821e200) SHA1(5867e5055e16c8739d7699ede5e4a708e4c48895) )	/* sprites B2 */
  1022: 	ROM_LOAD( "ryukendn.9b",  0x0b0000, 0x10000, CRC(6a6233b3) SHA1(21b8693335496b851628e6b62c6012e6624d13bf) )	/* sprites B2 */
  1023: 	ROM_LOAD( "gaiden.11",    0x0c0000, 0x20000, CRC(7fbfdf5e) SHA1(ab67b72dcadb5f2236d29de751de5bf890a9e423) )	/* sprites C2 */
  1024: 	ROM_LOAD( "shadoww.13a",  0x0e0000, 0x10000, CRC(996d2fa5) SHA1(a32526949af3635914927ebbbe684c3de9562a9d) )	/* sprites D2 */
  1025: 	ROM_LOAD( "ryukendn.13b", 0x0f0000, 0x10000, CRC(1f43c507) SHA1(29f655442c16677855073284c7ab41059c99c497) )	/* sprites D2 */
  1026: 
  1027: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* 128k for ADPCM samples - sound chip is OKIM6295 */
  1028: 	ROM_LOAD( "gaiden.4",     0x0000, 0x20000, CRC(b0e0faf9) SHA1(2275d2ef5eee356ccf80b9e9644d16fc30a4d107) ) /* samples */
  1029: ROM_END
  1030: 
  1031: ROM_START( tknight )
  1032: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 2*128k for 68000 code */
  1033: 	ROM_LOAD16_BYTE( "tkni1.bin",    0x00000, 0x20000, CRC(9121daa8) SHA1(06ba7779602df8fae32e859371d27c0dbb8d3430) )
  1034: 	ROM_LOAD16_BYTE( "tkni2.bin",    0x00001, 0x20000, CRC(6669cd87) SHA1(8888522a3aef76a979ffc80ba457dd49f279abf1) )
  1035: 
  1036: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
  1037: 	ROM_LOAD( "tkni3.bin",    0x0000, 0x10000, CRC(15623ec7) SHA1(db43fe6c417117d7cd90a26e12a52efb0e1a5ca6) )   /* Audio CPU is a Z80  */
  1038: 
  1039: 	ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE )
  1040: 	ROM_LOAD( "tkni5.bin",    0x000000, 0x10000, CRC(5ed15896) SHA1(87bdddb26934af0b2c4e704e6d85c69a7531aeb1) )	/* 8x8 tiles */
  1041: 
  1042: 	ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
  1043: 	ROM_LOAD( "tkni7.bin",    0x000000, 0x80000, CRC(4b4d4286) SHA1(d386aa223eb288ea829c98d3f39279a75dc66b71) )
  1044: 
  1045: 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
  1046: 	ROM_LOAD( "tkni6.bin",    0x000000, 0x80000, CRC(f68fafb1) SHA1(aeca38eaea2f6dfc484e48ac1114c0c4abaafb9c) )
  1047: 
  1048: 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
  1049: 	ROM_LOAD( "tkni9.bin",    0x000000, 0x80000, CRC(d22f4239) SHA1(360a9a821faabe911eef407ef85452d8b706538f) )	/* sprites */
  1050: 	ROM_LOAD( "tkni8.bin",    0x080000, 0x80000, CRC(4931b184) SHA1(864e827ac109c0ee52a898034c021cd5e92ff000) )	/* sprites */
  1051: 
  1052: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* 128k for ADPCM samples - sound chip is OKIM6295 */
  1053: 	ROM_LOAD( "tkni4.bin",    0x0000, 0x20000, CRC(a7a1dbcf) SHA1(2fee1d9745ce2ab54b0b9cbb6ab2e66ba9677245) ) /* samples */
  1054: ROM_END
  1055: 
  1056: ROM_START( wildfang )
  1057: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )	/* 2*128k for 68000 code */
  1058: 	ROM_LOAD16_BYTE( "1.3st",    0x00000, 0x20000, CRC(ab876c9b) SHA1(b02c822f107df4c9c4f0024998f225c1ddbbd496) )
  1059: 	ROM_LOAD16_BYTE( "2.5st",    0x00001, 0x20000, CRC(1dc74b3b) SHA1(c99051ebefd6ce666b13ab56c0a10b188f15ec28) )
  1060: 
  1061: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the audio CPU */
  1062: 	ROM_LOAD( "tkni3.bin",    0x0000, 0x10000, CRC(15623ec7) SHA1(db43fe6c417117d7cd90a26e12a52efb0e1a5ca6) )   /* Audio CPU is a Z80  */
  1063: 
  1064: 	ROM_REGION( 0x010000, REGION_GFX1, ROMREGION_DISPOSE )
  1065: 	ROM_LOAD( "tkni5.bin",    0x000000, 0x10000, CRC(5ed15896) SHA1(87bdddb26934af0b2c4e704e6d85c69a7531aeb1) )	/* 8x8 tiles */
  1066: 
  1067: 	ROM_REGION( 0x080000, REGION_GFX2, ROMREGION_DISPOSE )
  1068: 	ROM_LOAD( "14.3a",        0x000000, 0x20000, CRC(0d20c10c) SHA1(209ca4e166d0b91ff99a338e135e5388af2c51f5) )
  1069: 	ROM_LOAD( "15.3b",        0x020000, 0x20000, CRC(3f40a6b4) SHA1(7486ddfe4b0ac4198512548b74402f4194c804f1) )
  1070: 	ROM_LOAD( "16.1a",        0x040000, 0x20000, CRC(0f31639e) SHA1(e150db4f617c5fcf505e5ca95d94073c1f6b7d0d) )
  1071: 	ROM_LOAD( "17.1b",        0x060000, 0x20000, CRC(f32c158e) SHA1(2861754bda37e30799151b5ca73771937edf38a9) )
  1072: 
  1073: 	ROM_REGION( 0x080000, REGION_GFX3, ROMREGION_DISPOSE )
  1074: 	ROM_LOAD( "tkni6.bin",    0x000000, 0x80000, CRC(f68fafb1) SHA1(aeca38eaea2f6dfc484e48ac1114c0c4abaafb9c) )
  1075: 
  1076: 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
  1077: 	ROM_LOAD( "tkni9.bin",    0x000000, 0x80000, CRC(d22f4239) SHA1(360a9a821faabe911eef407ef85452d8b706538f) )	/* sprites */
  1078: 	ROM_LOAD( "tkni8.bin",    0x080000, 0x80000, CRC(4931b184) SHA1(864e827ac109c0ee52a898034c021cd5e92ff000) )	/* sprites */
  1079: 
  1080: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )	/* 128k for ADPCM samples - sound chip is OKIM6295 */
  1081: 	ROM_LOAD( "tkni4.bin",    0x0000, 0x20000, CRC(a7a1dbcf) SHA1(2fee1d9745ce2ab54b0b9cbb6ab2e66ba9677245) ) /* samples */
  1082: ROM_END
  1083: 
  1084: ROM_START( stratof )
  1085: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1086: 	ROM_LOAD16_BYTE( "1.3s",        0x00000, 0x20000, CRC(060822a4) SHA1(82abf6ea64695d2f7b5934ad2487e857648aeecf) )
  1087: 	ROM_LOAD16_BYTE( "2.4s",        0x00001, 0x20000, CRC(339358fa) SHA1(b662bccc2206ae888ea36f355d44bf98fcd2ee2c) )
  1088: 
  1089: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )
  1090: 	ROM_LOAD( "a-4b.3",           0x00000, 0x10000, CRC(18655c95) SHA1(8357e0520565a201bb930cadffc759463931ec41) )
  1091: 
  1092: 	ROM_REGION( 0x1000, REGION_CPU3, 0 )	/* protection NEC D8749 */
  1093: 	ROM_LOAD( "a-6v.mcu",         0x00000, 0x1000, NO_DUMP )
  1094: 
  1095: 	ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE )
  1096: 	ROM_LOAD( "b-7a.5",           0x00000, 0x10000, CRC(6d2e4bf1) SHA1(edcf96bbcc109da71e3adbb37d119254d3873b29) )
  1097: 
  1098: 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
  1099: 	ROM_LOAD( "b-1b",  0x00000, 0x80000, CRC(781d1bd2) SHA1(680d91ea02f1e9cb911501f595008f46ad77ded4) )
  1100: 
  1101: 	ROM_REGION( 0x80000, REGION_GFX3, ROMREGION_DISPOSE )
  1102: 	ROM_LOAD( "b-4b",  0x00000, 0x80000, CRC(89468b84) SHA1(af60fe957c98fa3f00623d420a0941a941f5bc6b) )
  1103: 
  1104: 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
  1105: 	ROM_LOAD( "b-2m",  0x00000, 0x80000, CRC(5794ec32) SHA1(07e78d8bcb2373da77ef9f8cde6a01f384f8bf7e) )
  1106: 	ROM_LOAD( "b-1m",  0x80000, 0x80000, CRC(b0de0ded) SHA1(45c74d0c58e3e73c79e587722d9fea9f7ba9cb0a) )
  1107: 
  1108: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )
  1109: 	ROM_LOAD( "a-4a.4", 0x00000, 0x20000, CRC(ef9acdcf) SHA1(8d62a666843f0cb22e8926ae18a961052d4f9ed5) )
  1110: ROM_END
  1111: 
  1112: ROM_START( raiga )
  1113: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1114: 	ROM_LOAD16_BYTE( "a-3s.1",      0x00000, 0x20000, CRC(303c2a6c) SHA1(cd825329fd1f7d87661114f07cc87e43fd34e251) )
  1115: 	ROM_LOAD16_BYTE( "a-4s.2",      0x00001, 0x20000, CRC(5f31fecb) SHA1(b0c88d260d0108100c157ea92f7defdc3cbb8933) )
  1116: 
  1117: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )
  1118: 	ROM_LOAD( "a-4b.3",           0x00000, 0x10000, CRC(18655c95) SHA1(8357e0520565a201bb930cadffc759463931ec41) )
  1119: 
  1120: 	ROM_REGION( 0x1000, REGION_CPU3, 0 )	/* protection NEC D8749 */
  1121: 	ROM_LOAD( "a-6v.mcu",         0x00000, 0x1000, NO_DUMP )
  1122: 
  1123: 	ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE )
  1124: 	ROM_LOAD( "b-7a.5",           0x00000, 0x10000, CRC(6d2e4bf1) SHA1(edcf96bbcc109da71e3adbb37d119254d3873b29) )
  1125: 
  1126: 	ROM_REGION( 0x100000, REGION_GFX2, ROMREGION_DISPOSE )
  1127: 	ROM_LOAD( "b-1b",  0x00000, 0x80000, CRC(781d1bd2) SHA1(680d91ea02f1e9cb911501f595008f46ad77ded4) )
  1128: 
  1129: 	ROM_REGION( 0x80000, REGION_GFX3, ROMREGION_DISPOSE )
  1130: 	ROM_LOAD( "b-4b",  0x00000, 0x80000, CRC(89468b84) SHA1(af60fe957c98fa3f00623d420a0941a941f5bc6b) )
  1131: 
  1132: 	ROM_REGION( 0x100000, REGION_GFX4, ROMREGION_DISPOSE )
  1133: 	ROM_LOAD( "b-2m",  0x00000, 0x80000, CRC(5794ec32) SHA1(07e78d8bcb2373da77ef9f8cde6a01f384f8bf7e) )
  1134: 	ROM_LOAD( "b-1m",  0x80000, 0x80000, CRC(b0de0ded) SHA1(45c74d0c58e3e73c79e587722d9fea9f7ba9cb0a) )
  1135: 
  1136: 	ROM_REGION( 0x20000, REGION_SOUND1, 0 )
  1137: 	ROM_LOAD( "a-4a.4", 0x00000, 0x20000, CRC(ef9acdcf) SHA1(8d62a666843f0cb22e8926ae18a961052d4f9ed5) )
  1138: ROM_END
  1139: 
  1140: 
  1141: 
  1142: static DRIVER_INIT( shadoww )
  1143: {
  1144: 	/* sprite size Y = sprite size X */
  1145: 	gaiden_sprite_sizey = 0;
  1146: }
  1147: 
  1148: static DRIVER_INIT( wildfang )
  1149: {
  1150: 	/* sprite size Y = sprite size X */
  1151: 	gaiden_sprite_sizey = 0;
  1152: 
  1153: 	install_mem_read16_handler (0, 0x07a006, 0x07a007, wildfang_protection_r);
  1154: 	install_mem_write16_handler(0, 0x07a804, 0x07a805, wildfang_protection_w);
  1155: }
  1156: 
  1157: static DRIVER_INIT( raiga )
  1158: {
  1159: 	/* sprite size Y independent from sprite size X */
  1160: 	gaiden_sprite_sizey = 2;
  1161: 
  1162: 	install_mem_read16_handler (0, 0x07a006, 0x07a007, raiga_protection_r);
  1163: 	install_mem_write16_handler(0, 0x07a804, 0x07a805, raiga_protection_w);
  1164: }
  1165: 
  1166: 
  1167: 
  1168: GAME( 1988, shadoww,  0,        shadoww, shadoww,  shadoww,  ROT0, "Tecmo", "Shadow Warriors (World set 1)" )
  1169: GAME( 1988, shadowwa, shadoww,  shadoww, shadoww,  shadoww,  ROT0, "Tecmo", "Shadow Warriors (World set 2)" )
  1170: GAME( 1988, gaiden,   shadoww,  shadoww, shadoww,  shadoww,  ROT0, "Tecmo", "Ninja Gaiden (US)" )
  1171: GAME( 1989, ryukendn, shadoww,  shadoww, shadoww,  shadoww,  ROT0, "Tecmo", "Ninja Ryukenden (Japan)" )
  1172: GAME( 1989, wildfang, 0,        shadoww, wildfang, wildfang, ROT0, "Tecmo", "Wild Fang / Tecmo Knight" )
  1173: GAME( 1989, tknight,  wildfang, shadoww, tknight,  wildfang, ROT0, "Tecmo", "Tecmo Knight" )
  1174: GAMEX(1991, stratof,  0,        raiga,	 raiga,    raiga,    ROT0, "Tecmo", "Raiga - Strato Fighter (US)", GAME_IMPERFECT_GRAPHICS )
  1175: GAMEX(1991, raiga,    stratof,  raiga,	 raiga,    raiga,    ROT0, "Tecmo", "Raiga - Strato Fighter (Japan)", GAME_IMPERFECT_GRAPHICS )
  1176: 




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