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 : Spy Hunter II : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3: 	Midway MCR-68k system
     4: 
     5:     driver by Bryan McPhail, Aaron Giles
     6: 
     7: 	Games supported:
     8: 		* Zwackery (Chip Squeak Deluxe)
     9: 		* Xenopohobe (Sounds Good)
    10: 		* Spy Hunter 2 (Sounds Good/Turbo Chip Squeak)
    11: 		* Blasted (Sounds Good)
    12: 		* Arch Rivals
    13: 		* Tri-Sports
    14: 		* Pigskin 621AD
    15: 
    16: 	Known bugs:
    17: 		* none at this time
    18: 
    19: ****************************************************************************
    20: 
    21: 	Memory map
    22: 
    23: ****************************************************************************
    24: 
    25: 	========================================================================
    26: 	CPU #1
    27: 	========================================================================
    28: 	000000-03FFFF   R     xxxxxxxx xxxxxxxx    Program ROM
    29: 	060000-063FFF   R/W   xxxxxxxx xxxxxxxx    Program RAM
    30: 	070000-070FFF   R/W   xxxxxxxx xxxxxxxx    Background video RAM
    31: 	071000-071FFF   R/W   xxxxxxxx xxxxxxxx    Additional RAM
    32: 	080000-080FFF   R/W   xxxxxxxx xxxxxxxx    Sprite RAM
    33: 	090000-0900FF     W   xxxxxxxx xxxxxxxx    Palette RAM
    34: 	0A0000-0A000F   R/W   xxxxxxxx --------    M6840 I/O
    35: 	0B0000-0B0001     W   -------- --------    Watchdog
    36: 	0C0000-0C0001     W   -------- xxxxxxxx    Sound I/O
    37: 	0D0000-0D0001   R     xxxxxxxx xxxxxxxx    External inputs
    38: 	0E0000-0E0001   R     xxxxxxxx xxxxxxxx    External inputs
    39: 	0F0000-0F0001   R     xxxxxxxx xxxxxxxx    External inputs
    40: 	========================================================================
    41: 	Interrupts:
    42: 		NMI ???
    43: 		INT generated by CTC
    44: 	========================================================================
    45: 	NOTE: Pigskin and Tri-Sports have similar memory maps; the addresses
    46: 			are simply shuffled around
    47: 	========================================================================
    48: 
    49: ***************************************************************************/
    50: 
    51: #include "driver.h" 
    52: #include "sndhrdw/mcr.h" 
    53: #include "sndhrdw/williams.h" 
    54: #include "vidhrdw/generic.h" 
    55: #include "mcr.h" 
    56: 
    57: 
    58: 
    59: /*************************************
    60:  *
    61:  *	Statics
    62:  *
    63:  *************************************/
    64: 
    65: static data16_t control_word;
    66: 
    67: 
    68: 
    69: /*************************************
    70:  *
    71:  *	Zwackery-specific handlers
    72:  *
    73:  *************************************/
    74: 
    75: READ_HANDLER( zwackery_port_2_r )
    76: {
    77: 	int result = readinputport(2);
    78: 	int wheel = readinputport(5);
    79: 
    80: 	return result | ((wheel >> 2) & 0x3e);
    81: }
    82: 
    83: 
    84: static READ16_HANDLER( zwackery_6840_r )
    85: {
    86: 	/* Zwackery does a timer test:                          */
    87: 	/* It loads $1388 into one of the timers clocked by E   */
    88: 	/* Then it sits in a tight loop counting down from $4E4 */
    89: 	/*       BTST #$1,($2,A0)                               */
    90: 	/*       DBNE D1,*-6                                    */
    91: 	/* It expects D1 to end up between 0 and 5; in order to */
    92: 	/* make this happen, we must assume that reads from the */
    93: 	/* 6840 take 14 additional cycles                       */
    94: 	activecpu_adjust_icount(-14);
    95: 	return mcr68_6840_upper_r(offset,0);
    96: }
    97: 
    98: 
    99: 
   100: /*************************************
   101:  *
   102:  *	Xenophobe-specific handlers
   103:  *
   104:  *************************************/
   105: 
   106: static WRITE16_HANDLER( xenophobe_control_w )
   107: {
   108: 	COMBINE_DATA(&control_word);
   109: /*	soundsgood_reset_w(~control_word & 0x0020);*/
   110: 	soundsgood_data_w(offset, ((control_word & 0x000f) << 1) | ((control_word & 0x0010) >> 4));
   111: }
   112: 
   113: 
   114: 
   115: /*************************************
   116:  *
   117:  *	Blasted-specific handlers
   118:  *
   119:  *************************************/
   120: 
   121: static WRITE16_HANDLER( blasted_control_w )
   122: {
   123: 	COMBINE_DATA(&control_word);
   124: /*	soundsgood_reset_w(~control_word & 0x0020);*/
   125: 	soundsgood_data_w(offset, (control_word >> 8) & 0x1f);
   126: }
   127: 
   128: 
   129: 
   130: /*************************************
   131:  *
   132:  *	Spy Hunter 2-specific handlers
   133:  *
   134:  *************************************/
   135: 
   136: static READ16_HANDLER( spyhunt2_port_0_r )
   137: {
   138: 	int result = readinputport(0);
   139: 	int which = (control_word >> 3) & 3;
   140: 	int analog = readinputport(3 + which);
   141: 	return result | ((soundsgood_status_r(0) & 1) << 5) | (analog << 8);
   142: }
   143: 
   144: 
   145: static READ16_HANDLER( spyhunt2_port_1_r )
   146: {
   147: 	int result = readinputport(1);
   148: 	return result | ((turbocs_status_r(0) & 1) << 7);
   149: }
   150: 
   151: 
   152: static WRITE16_HANDLER( spyhunt2_control_w )
   153: {
   154: 	COMBINE_DATA(&control_word);
   155: 
   156: /* 	turbocs_reset_w(~control_word & 0x0080);*/
   157: 	turbocs_data_w(offset, (control_word >> 8) & 0x001f);
   158: 
   159: /*	soundsgood_reset_w(~control_word & 0x2000);*/
   160: 	soundsgood_data_w(offset, (control_word >> 8) & 0x001f);
   161: }
   162: 
   163: 
   164: 
   165: /*************************************
   166:  *
   167:  *	Arch Rivals-specific handlers
   168:  *
   169:  *************************************/
   170: 
   171: static READ16_HANDLER( archrivl_port_1_r )
   172: {
   173: 	int joystick = readinputport(3);
   174: 	int result = 0;
   175: 
   176: 	/* each axis of the 49-way joystick is mapped like this:*/
   177: 	/*      0 8      = neutral                              */
   178: 	/*      1        = slightly left/up                     */
   179: 	/*      2 3      = middle left/up                       */
   180: 	/*      4 5 6 7  = full left/up                         */
   181: 	/*      C        = slightly right/down                  */
   182: 	/*      A E      = middle right/down                    */
   183: 	/*      9 B D F  = full right/down                      */
   184: 
   185: 	if (joystick & 0x0001) result |= 0x0040;
   186: 	else if (joystick & 0x0002) result |= 0x0090;
   187: 
   188: 	if (joystick & 0x0004) result |= 0x0004;
   189: 	else if (joystick & 0x0008) result |= 0x0009;
   190: 
   191: 	if (joystick & 0x0010) result |= 0x4000;
   192: 	else if (joystick & 0x0020) result |= 0x9000;
   193: 
   194: 	if (joystick & 0x0040) result |= 0x0400;
   195: 	else if (joystick & 0x0080) result |= 0x0900;
   196: 
   197: 	return result;
   198: }
   199: 
   200: 
   201: static WRITE16_HANDLER( archrivl_control_w )
   202: {
   203: 	COMBINE_DATA(&control_word);
   204: 	williams_cvsd_reset_w(~control_word & 0x0400);
   205: 	williams_cvsd_data_w(control_word & 0x3ff);
   206: }
   207: 
   208: 
   209: 
   210: /*************************************
   211:  *
   212:  *	Pigskin-specific handlers
   213:  *
   214:  *************************************/
   215: 
   216: static UINT8 protection_data[5];
   217: static WRITE16_HANDLER( pigskin_protection_w )
   218: {
   219: 	/* ignore upper-byte only */
   220: 	if (ACCESSING_LSB)
   221: 	{
   222: 		/* track the last 5 bytes */
   223: 		protection_data[0] = protection_data[1];
   224: 		protection_data[1] = protection_data[2];
   225: 		protection_data[2] = protection_data[3];
   226: 		protection_data[3] = protection_data[4];
   227: 		protection_data[4] = data & 0xff;
   228: 
   229: 		logerror("%06X:protection_w=%02X\n", activecpu_get_previouspc(), data & 0xff);
   230: 	}
   231: }
   232: 
   233: 
   234: static READ16_HANDLER( pigskin_protection_r )
   235: {
   236: 	/* based on the last 5 bytes return a value */
   237: 	if (protection_data[4] == 0xe3 && protection_data[3] == 0x94)
   238: 		return 0x00;	/* must be <= 1 */
   239: 	if (protection_data[4] == 0xc7 && protection_data[3] == 0x7b && protection_data[2] == 0x36)
   240: 		return 0x00;	/* must be <= 1 */
   241: 	if (protection_data[4] == 0xc7 && protection_data[3] == 0x7b)
   242: 		return 0x07;	/* must be > 5 */
   243: 	if (protection_data[4] == 0xc7 && protection_data[3] == 0x1f && protection_data[2] == 0x03 &&
   244: 		protection_data[1] == 0x25 && protection_data[0] == 0x36)
   245: 		return 0x00;	/* must be < 3 */
   246: 
   247: 	logerror("Protection read after unrecognized sequence: %02X %02X %02X %02X %02X\n",
   248: 			protection_data[0], protection_data[1], protection_data[2], protection_data[3], protection_data[4]);
   249: 
   250: 	return 0x00;
   251: }
   252: 
   253: 
   254: static READ16_HANDLER( pigskin_port_1_r )
   255: {
   256: 	int joystick = readinputport(3);
   257: 	int result = readinputport(1);
   258: 
   259: 	/* see archrivl_port_1_r for 49-way joystick description */
   260: 
   261: 	if (joystick & 0x0001) result |= 0x4000;
   262: 	else if (joystick & 0x0002) result |= 0x9000;
   263: 
   264: 	if (joystick & 0x0004) result |= 0x0400;
   265: 	else if (joystick & 0x0008) result |= 0x0900;
   266: 
   267: 	return result;
   268: }
   269: 
   270: 
   271: static READ16_HANDLER( pigskin_port_2_r )
   272: {
   273: 	int joystick = readinputport(3);
   274: 	int result = readinputport(2);
   275: 
   276: 	/* see archrivl_port_1_r for 49-way joystick description */
   277: 
   278: 	if (joystick & 0x0010) result |= 0x4000;
   279: 	else if (joystick & 0x0020) result |= 0x9000;
   280: 
   281: 	if (joystick & 0x0040) result |= 0x0400;
   282: 	else if (joystick & 0x0080) result |= 0x0900;
   283: 
   284: 	return result;
   285: }
   286: 
   287: 
   288: 
   289: /*************************************
   290:  *
   291:  *	Tri-Sports-specific handlers
   292:  *
   293:  *************************************/
   294: 
   295: static READ16_HANDLER( trisport_port_1_r )
   296: {
   297: 	int xaxis = (INT8)readinputport(3);
   298: 	int yaxis = (INT8)readinputport(4);
   299: 	int result = readinputport(1);
   300: 
   301: 	result |= (xaxis & 0x3c) << 6;
   302: 	result |= (yaxis & 0x3c) << 10;
   303: 
   304: 	return result;
   305: }
   306: 
   307: 
   308: 
   309: /*************************************
   310:  *
   311:  *	Main CPU memory handlers
   312:  *
   313:  *************************************/
   314: 
   315: static MEMORY_READ16_START( mcr68_readmem )
   316: 	{ 0x000000, 0x03ffff, MRA16_ROM },
   317: 	{ 0x060000, 0x063fff, MRA16_RAM },
   318: 	{ 0x070000, 0x070fff, MRA16_RAM },
   319: 	{ 0x071000, 0x071fff, MRA16_RAM },
   320: 	{ 0x080000, 0x080fff, MRA16_RAM },
   321: 	{ 0x0a0000, 0x0a000f, mcr68_6840_upper_r },
   322: 	{ 0x0d0000, 0x0dffff, input_port_0_word_r },
   323: 	{ 0x0e0000, 0x0effff, input_port_1_word_r },
   324: 	{ 0x0f0000, 0x0fffff, input_port_2_word_r },
   325: MEMORY_END
   326: 
   327: 
   328: static MEMORY_WRITE16_START( mcr68_writemem )
   329: 	{ 0x000000, 0x03ffff, MWA16_ROM },
   330: 	{ 0x060000, 0x063fff, MWA16_RAM },
   331: 	{ 0x070000, 0x070fff, mcr68_videoram_w, &videoram16, &videoram_size },
   332: 	{ 0x071000, 0x071fff, MWA16_RAM },
   333: 	{ 0x080000, 0x080fff, MWA16_RAM, &spriteram16, &spriteram_size },
   334: 	{ 0x090000, 0x09007f, mcr68_paletteram_w, &paletteram16 },
   335: 	{ 0x0a0000, 0x0a000f, mcr68_6840_upper_w },
   336: 	{ 0x0b0000, 0x0bffff, watchdog_reset16_w },
   337: MEMORY_END
   338: 
   339: 
   340: 
   341: /*************************************
   342:  *
   343:  *	Zwackery main CPU memory handlers
   344:  *
   345:  *************************************/
   346: 
   347: static MEMORY_READ16_START( zwackery_readmem )
   348: 	{ 0x000000, 0x037fff, MRA16_ROM },
   349: 	{ 0x080000, 0x080fff, MRA16_RAM },
   350: 	{ 0x084000, 0x084fff, MRA16_RAM },
   351: 	{ 0x100000, 0x10000f, zwackery_6840_r },
   352: 	{ 0x104000, 0x104007, pia_2_msb_r },
   353: 	{ 0x108000, 0x108007, pia_3_lsb_r },
   354: 	{ 0x10c000, 0x10c007, pia_4_lsb_r },
   355: 	{ 0x800000, 0x800fff, MRA16_RAM },
   356: 	{ 0x802000, 0x803fff, MRA16_RAM },
   357: 	{ 0xc00000, 0xc00fff, MRA16_RAM },
   358: MEMORY_END
   359: 
   360: 
   361: static MEMORY_WRITE16_START( zwackery_writemem )
   362: 	{ 0x000000, 0x037fff, MWA16_ROM },
   363: 	{ 0x080000, 0x080fff, MWA16_RAM },
   364: 	{ 0x084000, 0x084fff, MWA16_RAM },
   365: 	{ 0x100000, 0x10000f, mcr68_6840_upper_w },
   366: 	{ 0x104000, 0x104007, pia_2_msb_w },
   367: 	{ 0x108000, 0x108007, pia_3_lsb_w },
   368: 	{ 0x10c000, 0x10c007, pia_4_lsb_w },
   369: 	{ 0x800000, 0x800fff, zwackery_videoram_w, &videoram16, &videoram_size },
   370: 	{ 0x802000, 0x803fff, zwackery_paletteram_w, &paletteram16 },
   371: 	{ 0xc00000, 0xc00fff, zwackery_spriteram_w, &spriteram16, &spriteram_size },
   372: MEMORY_END
   373: 
   374: 
   375: 
   376: /*************************************
   377:  *
   378:  *	Pigskin CPU memory handlers
   379:  *
   380:  *************************************/
   381: 
   382: static MEMORY_READ16_START( pigskin_readmem )
   383: 	{ 0x000000, 0x03ffff, MRA16_ROM },
   384: 	{ 0x080000, 0x08ffff, pigskin_port_1_r },
   385: 	{ 0x0a0000, 0x0affff, pigskin_port_2_r },
   386: 	{ 0x100000, 0x100fff, MRA16_RAM },
   387: 	{ 0x120000, 0x120001, pigskin_protection_r },
   388: 	{ 0x140000, 0x143fff, MRA16_RAM },
   389: 	{ 0x160000, 0x1607ff, MRA16_RAM },
   390: 	{ 0x180000, 0x18000f, mcr68_6840_upper_r },
   391: 	{ 0x1e0000, 0x1effff, input_port_0_word_r },
   392: MEMORY_END
   393: 
   394: 
   395: static MEMORY_WRITE16_START( pigskin_writemem )
   396: 	{ 0x000000, 0x03ffff, MWA16_ROM },
   397: 	{ 0x0c0000, 0x0c007f, mcr68_paletteram_w, &paletteram16 },
   398: 	{ 0x0e0000, 0x0effff, watchdog_reset16_w },
   399: 	{ 0x100000, 0x100fff, mcr68_videoram_w, &videoram16, &videoram_size },
   400: 	{ 0x120000, 0x120001, pigskin_protection_w },
   401: 	{ 0x140000, 0x143fff, MWA16_RAM },
   402: 	{ 0x160000, 0x1607ff, MWA16_RAM, &spriteram16, &spriteram_size },
   403: 	{ 0x180000, 0x18000f, mcr68_6840_upper_w },
   404: 	{ 0x1a0000, 0x1affff, archrivl_control_w },
   405: MEMORY_END
   406: 
   407: 
   408: 
   409: /*************************************
   410:  *
   411:  *	Tri-Sports CPU memory handlers
   412:  *
   413:  *************************************/
   414: 
   415: static MEMORY_READ16_START( trisport_readmem )
   416: 	{ 0x000000, 0x03ffff, MRA16_ROM },
   417: 	{ 0x080000, 0x08ffff, trisport_port_1_r },
   418: 	{ 0x0a0000, 0x0affff, input_port_2_word_r },
   419: 	{ 0x100000, 0x103fff, MRA16_RAM },
   420: 	{ 0x140000, 0x1407ff, MRA16_RAM },
   421: 	{ 0x160000, 0x160fff, MRA16_RAM },
   422: 	{ 0x180000, 0x18000f, mcr68_6840_upper_r },
   423: 	{ 0x1e0000, 0x1effff, input_port_0_word_r },
   424: MEMORY_END
   425: 
   426: 
   427: static MEMORY_WRITE16_START( trisport_writemem )
   428: 	{ 0x000000, 0x03ffff, MWA16_ROM },
   429: 	{ 0x100000, 0x103fff, MWA16_RAM, (data16_t **)&generic_nvram, &generic_nvram_size },
   430: 	{ 0x120000, 0x12007f, mcr68_paletteram_w, &paletteram16 },
   431: 	{ 0x140000, 0x1407ff, MWA16_RAM, &spriteram16, &spriteram_size },
   432: 	{ 0x160000, 0x160fff, mcr68_videoram_w, &videoram16, &videoram_size },
   433: 	{ 0x180000, 0x18000f, mcr68_6840_upper_w },
   434: 	{ 0x1a0000, 0x1affff, archrivl_control_w },
   435: 	{ 0x1c0000, 0x1cffff, watchdog_reset16_w },
   436: MEMORY_END
   437: 
   438: 
   439: 
   440: /*************************************
   441:  *
   442:  *	Port definitions
   443:  *
   444:  *************************************/
   445: 
   446: INPUT_PORTS_START( zwackery )
   447: 	PORT_START
   448: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
   449: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
   450: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
   451: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 )
   452: 	PORT_SERVICE( 0x0010, IP_ACTIVE_LOW )
   453: 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN4 )
   454: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_TILT )
   455: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 )	/* sword */
   456: 
   457: 	PORT_START
   458: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY )
   459: 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY )
   460: 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY )
   461: 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY )
   462: 	PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED )	/* sound communications */
   463: 
   464: 	PORT_START
   465: 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 )	/* spell up */
   466: 	PORT_BIT( 0x3e, IP_ACTIVE_HIGH, IPT_UNUSED )	/* encoder wheel */
   467: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )	/* shield */
   468: 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 )	/* spell down */
   469: 
   470: 	PORT_START
   471: 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
   472: 
   473: 	PORT_START
   474: 	PORT_DIPNAME( 0x07, 0x00, DEF_STR( Coinage ) )
   475: 	PORT_DIPSETTING(    0x05, DEF_STR( 6C_1C ) )
   476: 	PORT_DIPSETTING(    0x04, DEF_STR( 5C_1C ) )
   477: 	PORT_DIPSETTING(    0x03, DEF_STR( 4C_1C ) )
   478: 	PORT_DIPSETTING(    0x02, DEF_STR( 3C_1C ) )
   479: 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
   480: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   481: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_2C ) )
   482: 	PORT_DIPSETTING(    0x07, DEF_STR( Free_Play ) )
   483: 	PORT_DIPNAME( 0x38, 0x00, "Buy-in" )
   484: 	PORT_DIPSETTING(    0x00, "1 coin" )
   485: 	PORT_DIPSETTING(    0x08, "2 coins" )
   486: 	PORT_DIPSETTING(    0x10, "3 coins" )
   487: 	PORT_DIPSETTING(    0x18, "4 coins" )
   488: 	PORT_DIPSETTING(    0x20, "5 coins" )
   489: 	PORT_DIPSETTING(    0x28, "6 coins" )
   490: 	PORT_DIPSETTING(    0x30, "7 coins" )
   491: 	PORT_DIPSETTING(    0x38, "None" )
   492: 	PORT_DIPNAME( 0xc0, 0x00, DEF_STR( Difficulty ) )
   493: 	PORT_DIPSETTING(    0xc0, "Easier" )
   494: 	PORT_DIPSETTING(    0x00, "Normal" )
   495: 	PORT_DIPSETTING(    0x40, "Harder" )
   496: 	PORT_DIPSETTING(    0x80, "Hardest" )
   497: 
   498: 	PORT_START
   499: 	PORT_ANALOGX( 0xff, 0x00, IPT_DIAL | IPF_REVERSE, 50, 10, 0, 0, KEYCODE_Z, KEYCODE_X, 0, 0 )
   500: INPUT_PORTS_END
   501: 
   502: 
   503: INPUT_PORTS_START( xenophob )
   504: 	PORT_START
   505: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
   506: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
   507: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_COIN3 )
   508: 	PORT_BIT( 0x0018, IP_ACTIVE_LOW, IPT_UNUSED )
   509: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
   510: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_TILT )
   511: 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
   512: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
   513: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
   514: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
   515: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   516: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   517: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
   518: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   519: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
   520: 
   521: 	PORT_START
   522: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER3 )
   523: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER3 )
   524: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER3 )
   525: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
   526: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
   527: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
   528: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
   529: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
   530: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
   531: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
   532: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
   533: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   534: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   535: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
   536: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   537: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
   538: 
   539: 	PORT_START
   540: 	PORT_BIT( 0x0003, IP_ACTIVE_LOW, IPT_UNUSED )
   541: 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Free_Play ) )
   542: 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
   543: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   544: 	PORT_DIPNAME( 0x0008, 0x0008, "Coins per Life Unit" )
   545: 	PORT_DIPSETTING(      0x0008, "1" )
   546: 	PORT_DIPSETTING(      0x0000, "2" )
   547: 	PORT_DIPNAME( 0x0010, 0x0010, "Life Unit" )
   548: 	PORT_DIPSETTING(      0x0010, "1000" )
   549: 	PORT_DIPSETTING(      0x0000, "2000" )
   550: 	PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Demo_Sounds ) )
   551: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
   552: 	PORT_DIPSETTING(      0x0020, DEF_STR( On ) )
   553: 	PORT_DIPNAME( 0x00c0, 0x0000, DEF_STR( Difficulty ) )
   554: 	PORT_DIPSETTING(      0x0040, "Easy" )
   555: 	PORT_DIPSETTING(      0x0000, "Medium" )
   556: 	PORT_DIPSETTING(      0x0080, "Hard" )
   557: /*	PORT_DIPSETTING(      0x00c0, "Medium" )*/
   558: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
   559: INPUT_PORTS_END
   560: 
   561: 
   562: INPUT_PORTS_START( spyhunt2 )
   563: 	PORT_START
   564: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
   565: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
   566: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
   567: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 )
   568: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_TILT )
   569: 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* SG status */
   570: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_SERVICE )
   571: 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
   572: 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   573: 
   574: 	PORT_START
   575: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER2 ) /* 1st gear */
   576: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER2 ) /* 2nd gear */
   577: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON7 | IPF_PLAYER2 ) /* 3rd gear */
   578: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
   579: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5 | IPF_PLAYER1 ) /* 1st gear */
   580: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON6 | IPF_PLAYER1 ) /* 2nd gear */
   581: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON7 | IPF_PLAYER1 ) /* 3rd gear */
   582: 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_UNUSED )               /* TCS status */
   583: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 ) /* Left Trigger */
   584: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 ) /* Left Button */
   585: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 ) /* Right Trigger */
   586: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER2 ) /* Right Button */
   587: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 ) /* Left Trigger */
   588: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 ) /* Left Button */
   589: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 ) /* Right Trigger */
   590: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON4 | IPF_PLAYER1 ) /* Right Button */
   591: 
   592: 	PORT_START	/* IN3 -- dipswitches */
   593: 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coinage ) )
   594: 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
   595: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_1C ) )
   596: 	PORT_DIPSETTING(      0x0001, DEF_STR( 1C_2C ) )
   597: 	/*PORT_DIPSETTING(      0x0000, DEF_STR( 1C_2C ) )*/
   598: 	PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Free_Play ) )
   599: 	PORT_DIPSETTING(      0x0004, DEF_STR( Off ) )
   600: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   601: 	PORT_DIPNAME( 0x0018, 0x0008, "Point Threshholds" )
   602: 	PORT_DIPSETTING(      0x0008, "Easy" )
   603: 	PORT_DIPSETTING(      0x0018, "Medium" )
   604: 	PORT_DIPSETTING(      0x0010, "Hard" )
   605: 	PORT_DIPSETTING(      0x0000, "Hardest" )
   606: 	PORT_DIPNAME( 0x0060, 0x0060, "Free Timer After" )
   607: 	PORT_DIPSETTING(      0x0000, "30 sec" )
   608: 	PORT_DIPSETTING(      0x0040, "45 sec" )
   609: 	PORT_DIPSETTING(      0x0060, "60 sec" )
   610: 	PORT_DIPSETTING(      0x0020, "90 sec" )
   611: 	PORT_BITX( 0x0080,    0x0080, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Rack Advance", KEYCODE_F1, IP_JOY_NONE )
   612: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
   613: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   614: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
   615: 
   616: 	PORT_START	/* analog ports for steering and pedals */
   617: 	PORT_ANALOG( 0xff, 0x30, IPT_PEDAL | IPF_PLAYER2 | IPF_REVERSE, 100, 10, 0x30, 0xff )
   618: 
   619: 	PORT_START
   620: 	PORT_ANALOG( 0xff, 0x30, IPT_PEDAL | IPF_PLAYER1 | IPF_REVERSE, 100, 10, 0x30, 0xff )
   621: 
   622: 	PORT_START
   623: 	PORT_ANALOG( 0xff, 0x80, IPT_PADDLE | IPF_PLAYER2 | IPF_REVERSE, 80, 10, 0x10, 0xf0 )
   624: 
   625: 	PORT_START
   626: 	PORT_ANALOG( 0xff, 0x80, IPT_PADDLE | IPF_PLAYER1 | IPF_REVERSE, 80, 10, 0x10, 0xf0 )
   627: INPUT_PORTS_END
   628: 
   629: 
   630: INPUT_PORTS_START( blasted )
   631: 	PORT_START
   632: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
   633: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
   634: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNUSED/* credit w/bill */ )
   635: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNUSED )
   636: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_TILT )
   637: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
   638: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN4 )
   639: 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
   640: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   641: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
   642: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   643: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
   644: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED/* credit 1 w/bill */ )
   645: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED/* credit 2 w/bill */ )
   646: 	PORT_BIT( 0xf000, IP_ACTIVE_LOW, IPT_UNUSED )
   647: 
   648: 	PORT_START
   649: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
   650: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   651: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
   652: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
   653: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
   654: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   655: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
   656: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
   657: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
   658: 
   659: 	PORT_START
   660: 	PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Coinage ) )
   661: 	PORT_DIPSETTING(      0x0002, DEF_STR( 2C_1C ) )
   662: 	PORT_DIPSETTING(      0x0003, DEF_STR( 1C_1C ) )
   663: 	PORT_DIPSETTING(      0x0001, DEF_STR( 1C_2C ) )
   664: 	/*PORT_DIPSETTING(      0x0000, DEF_STR( 1C_2C ) )*/
   665: 	PORT_DIPNAME( 0x000c, 0x0000, DEF_STR( Difficulty ) )
   666: 	PORT_DIPSETTING(      0x0008, "Easy" )
   667: 	PORT_DIPSETTING(      0x0000, "Medium" )
   668: 	PORT_DIPSETTING(      0x0004, "Hard" )
   669: /*	PORT_DIPSETTING(      0x000c, "Medium" )*/
   670: 	PORT_DIPNAME( 0x0020, 0x0020, "Dollar Receptor" )
   671: 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
   672: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   673: 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) )
   674: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
   675: 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
   676: 	PORT_BITX( 0x0080,    0x0080, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Rack Advance", KEYCODE_F1, IP_JOY_NONE )
   677: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
   678: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   679: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
   680: INPUT_PORTS_END
   681: 
   682: 
   683: INPUT_PORTS_START( archrivl )
   684: 	PORT_START
   685: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
   686: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
   687: 	PORT_BIT( 0x000c, IP_ACTIVE_LOW, IPT_UNUSED )
   688: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_TILT )
   689: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNUSED )
   690: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN4 )
   691: 	PORT_SERVICE( 0x0080, IP_ACTIVE_LOW )
   692: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
   693: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
   694: 	PORT_BIT( 0x0c00, IP_ACTIVE_LOW, IPT_UNUSED )
   695: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   696: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   697: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   698: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   699: 
   700: 	PORT_START
   701: 	PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED )	/* player 1/2 joysticks go here */
   702: 
   703: 	PORT_START
   704: 	PORT_DIPNAME( 0x0003, 0x0003, "Game Time" )
   705: 	PORT_DIPSETTING(      0x0003, "Preset Time" )
   706: 	PORT_DIPSETTING(      0x0002, "Preset + 10sec" )
   707: 	PORT_DIPSETTING(      0x0001, "Preset + 20sec" )
   708: 	PORT_DIPSETTING(      0x0000, "Preset + 30sec" )
   709: 	PORT_DIPNAME( 0x001c, 0x001c, DEF_STR( Coinage ) )
   710: 	PORT_DIPSETTING(      0x0014, DEF_STR( 3C_1C ) )
   711: 	PORT_DIPSETTING(      0x0018, DEF_STR( 2C_1C ) )
   712: 	PORT_DIPSETTING(      0x001c, DEF_STR( 1C_1C ) )
   713: 	PORT_DIPSETTING(      0x0010, DEF_STR( 2C_3C ) )
   714: 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_2C ) )
   715: 	PORT_DIPSETTING(      0x0008, DEF_STR( 1C_3C ) )
   716: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_5C ) )
   717: 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_6C ) )
   718: 	PORT_DIPNAME( 0x0020, 0x0020, "Team Names" )
   719: 	PORT_DIPSETTING(      0x0020, "Default" )
   720: 	PORT_DIPSETTING(      0x0000, "Hometown Heroes" )
   721: 	PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Demo_Sounds ) )
   722: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
   723: 	PORT_DIPSETTING(      0x0040, DEF_STR( On ) )
   724: 	PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Free_Play ) )
   725: 	PORT_DIPSETTING(      0x0080, DEF_STR( Off ) )
   726: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   727: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
   728: 
   729: 	PORT_START	/* 49-way joystick simulator */
   730: 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
   731: 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
   732: 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
   733: 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   734: 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
   735: 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
   736: 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
   737: 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   738: INPUT_PORTS_END
   739: 
   740: 
   741: INPUT_PORTS_START( pigskin )
   742: 	PORT_START
   743: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
   744: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
   745: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_START1 )
   746: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_START2 )
   747: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_TILT )
   748: 	PORT_SERVICE( 0x0020, IP_ACTIVE_LOW )
   749: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN4 )
   750: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
   751: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
   752: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
   753: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
   754: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   755: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   756: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   757: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
   758: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNUSED )
   759: 
   760: 	PORT_START
   761: 	PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNUSED )
   762: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   763: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   764: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
   765: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNUSED )
   766: 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNUSED )	/* player 1 joystick goes here */
   767: 
   768: 	PORT_START
   769: 	PORT_DIPNAME( 0x0003, 0x0003, "Game Time" )
   770: 	PORT_DIPSETTING(      0x0000, "Shortest" )
   771: 	PORT_DIPSETTING(      0x0002, "Short" )
   772: 	PORT_DIPSETTING(      0x0003, "Medium" )
   773: 	PORT_DIPSETTING(      0x0001, "Long" )
   774: 	PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Coinage ) )
   775: 	PORT_DIPSETTING(      0x0008, DEF_STR( 2C_1C ) )
   776: 	PORT_DIPSETTING(      0x000c, DEF_STR( 1C_1C ) )
   777: 	PORT_DIPSETTING(      0x0000, DEF_STR( Free_Play ) )
   778: 	PORT_DIPSETTING(      0x0004, "Set Your Own" )
   779: 	PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) )
   780: 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
   781: 	PORT_DIPSETTING(      0x0010, DEF_STR( On ) )
   782: 	PORT_DIPNAME( 0x0020, 0x0020, "Test Switch" )
   783: 	PORT_DIPSETTING(      0x0020, DEF_STR( Off ) )
   784: 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
   785: 	PORT_DIPNAME( 0x0040, 0x0040, "Coin Chutes" )
   786: 	PORT_DIPSETTING(      0x0000, "Individual" )
   787: 	PORT_DIPSETTING(      0x0040, "Common" )
   788: 	PORT_DIPNAME( 0x0080, 0x0080, "Joystick" )
   789: 	PORT_DIPSETTING(      0x0080, "Standard" )
   790: 	PORT_DIPSETTING(      0x0000, "Rotated" )
   791: 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNUSED )	/* player 2 joystick goes here */
   792: 
   793: 	PORT_START	/* 49-way joystick simulator */
   794: 	PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   795: 	PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER1 )
   796: 	PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER1 )
   797: 	PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER1 )
   798: 	PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   799: 	PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_PLAYER2 )
   800: 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_PLAYER2 )
   801: 	PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_PLAYER2 )
   802: INPUT_PORTS_END
   803: 
   804: 
   805: INPUT_PORTS_START( trisport )
   806: 	PORT_START
   807: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 )
   808: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 )
   809: 	PORT_BIT( 0x000c, IP_ACTIVE_LOW, IPT_UNUSED )
   810: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_TILT )
   811: 	PORT_SERVICE( 0x0020, IP_ACTIVE_LOW )
   812: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_COIN4 )
   813: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
   814: 	PORT_BIT( 0x0f00, IP_ACTIVE_LOW, IPT_UNUSED )
   815: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   816: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_START1 )
   817: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   818: 	PORT_BIT( 0xc000, IP_ACTIVE_LOW, IPT_UNUSED )
   819: 
   820: 	PORT_START
   821: 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
   822: 	PORT_BIT( 0xff00, IP_ACTIVE_HIGH, IPT_UNUSED )	/* analog controls go here */
   823: 
   824: 	PORT_START
   825: 	PORT_DIPNAME( 0x0007, 0x0007, DEF_STR( Coinage ) )
   826: 	PORT_DIPSETTING(      0x0002, DEF_STR( 4C_1C ) )
   827: 	PORT_DIPSETTING(      0x0003, DEF_STR( 3C_1C ) )
   828: 	PORT_DIPSETTING(      0x0006, DEF_STR( 2C_1C ) )
   829: 	PORT_DIPSETTING(      0x0007, DEF_STR( 1C_1C ) )
   830: 	PORT_DIPSETTING(      0x0005, DEF_STR( 1C_2C ) )
   831: 	PORT_DIPSETTING(      0x0004, DEF_STR( 1C_3C ) )
   832: 	PORT_DIPSETTING(      0x0001, DEF_STR( Free_Play ) )
   833: 	PORT_DIPSETTING(      0x0000, "Battery Options" )
   834: 	PORT_DIPNAME( 0x0018, 0x0018, "Pool Turns" )
   835: 	PORT_DIPSETTING(      0x0010, "5" )
   836: 	PORT_DIPSETTING(      0x0008, "6" )
   837: 	PORT_DIPSETTING(      0x0018, "7" )
   838: 	PORT_DIPSETTING(      0x0000, "8" )
   839: 	PORT_DIPNAME( 0x0020, 0x0020, "Bowling Difficulty" )
   840: 	PORT_DIPSETTING(      0x0020, "Standard" )
   841: 	PORT_DIPSETTING(      0x0000, "Advanced" )
   842: 	PORT_DIPNAME( 0x0040, 0x0040, "Shot Timer" )
   843: 	PORT_DIPSETTING(      0x0000, "Slower" )
   844: 	PORT_DIPSETTING(      0x0040, "Standard" )
   845: 	PORT_DIPNAME( 0x0080, 0x0080, "Golf Holes" )
   846: 	PORT_DIPSETTING(      0x0080, "3" )
   847: 	PORT_DIPSETTING(      0x0000, "4" )
   848: 	PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
   849: 
   850: 	PORT_START
   851:     PORT_ANALOG( 0xff, 0, IPT_TRACKBALL_X | IPF_PLAYER1, 100, 20, 0, 0 )
   852: 
   853: 	PORT_START
   854:     PORT_ANALOG( 0xff, 0, IPT_TRACKBALL_Y | IPF_REVERSE | IPF_PLAYER1, 100, 20, 0, 0 )
   855: INPUT_PORTS_END
   856: 
   857: 
   858: 
   859: /*************************************
   860:  *
   861:  *	Graphics definitions
   862:  *
   863:  *************************************/
   864: 
   865: static struct GfxLayout zwackery_layout =
   866: {
   867: 	16,16,
   868: 	RGN_FRAC(1,2),
   869: 	8,
   870: 	{ 0, 0, 0, 0, 0, 0, 0, 0 },
   871: 	{  3,  2,  1,  0, 11, 10,  9,  8,
   872: 	  19, 18, 17, 16, 27, 26, 25, 24 },
   873: 	{ 4, RGN_FRAC(1,2)+4, 0, RGN_FRAC(1,2)+0, 36, RGN_FRAC(1,2)+36, 32, RGN_FRAC(1,2)+32,
   874: 	  68, RGN_FRAC(1,2)+68, 64, RGN_FRAC(1,2)+64, 100, RGN_FRAC(1,2)+100, 96, RGN_FRAC(1,2)+96 },
   875: 	128
   876: };
   877: 
   878: static struct GfxDecodeInfo gfxdecodeinfo[] =
   879: {
   880: 	{ REGION_GFX1, 0, &mcr_bg_layout,     0, 4 },
   881: 	{ REGION_GFX2, 0, &mcr_sprite_layout, 0, 4 },
   882: 	{ -1 } /* end of array */
   883: };
   884: 
   885: static struct GfxDecodeInfo zwackery_gfxdecodeinfo[] =
   886: {
   887: 	{ REGION_GFX1, 0, &zwackery_layout,       0, 16 },
   888: 	{ REGION_GFX2, 0, &mcr_sprite_layout, 0x800, 32 },
   889: 	{ REGION_GFX1, 0, &zwackery_layout,       0, 16 },	/* yes, an extra copy */
   890: 	{ -1 } /* end of array */
   891: };
   892: 
   893: 
   894: 
   895: /*************************************
   896:  *
   897:  *	Machine drivers
   898:  *
   899:  *************************************/
   900: 
   901: /*=================================================================
   902: 
   903: 	Timing for these games is crucial. They all use the 6840 timer
   904: 	to preemptively multitask during each frame. The clock on the
   905: 	6840 timer is taken from the 68000's E clock, which runs at
   906: 	1/10th the speed of the 68000 itself.
   907: 
   908: 	All the games run in a sequence of six steps per frame, using
   909: 	counter 1 on the 6840 to time each step. The sum total of the
   910: 	6 programmed steps for each game determines how many E clocks
   911: 	should be generated per frame, which in turn determines the
   912: 	clock we should expect the CPU to have.
   913: 
   914: 	Ideal CPU timings, based on counter usage:
   915: 
   916: 		Zwackery:     7652400
   917: 		Xenophobe:    7723800
   918: 		Spy Hunter 2: 7723800
   919: 		Blasted:      7798800
   920: 		Arch Rivals:  7799100
   921: 		Pigskin:      9211200
   922: 		Tri-Sports:   9211200
   923: 
   924: 	Currently, we are using the Xenophobe CPU for the first four
   925: 	until we spot problems.
   926: 
   927: =================================================================*/
   928: 
   929: static MACHINE_DRIVER_START( zwackery )
   930: 
   931: 	/* basic machine hardware */
   932: 	MDRV_CPU_ADD(M68000, 7652400)
   933: 	MDRV_CPU_MEMORY(zwackery_readmem,zwackery_writemem)
   934: 	MDRV_CPU_VBLANK_INT(mcr68_interrupt,1)
   935: 
   936: 	MDRV_FRAMES_PER_SECOND(30)
   937: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_30HZ_VBLANK_DURATION)
   938: 	MDRV_MACHINE_INIT(zwackery)
   939: 
   940: 	/* video hardware */
   941: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   942: 	MDRV_SCREEN_SIZE(32*16, 30*16)
   943: 	MDRV_VISIBLE_AREA(0, 32*16-1, 0, 30*16-1)
   944: 	MDRV_GFXDECODE(zwackery_gfxdecodeinfo)
   945: 	MDRV_PALETTE_LENGTH(4096)
   946: 
   947: 	MDRV_PALETTE_INIT(zwackery)
   948: 	MDRV_VIDEO_START(zwackery)
   949: 	MDRV_VIDEO_UPDATE(zwackery)
   950: 
   951: 	/* sound hardware */
   952: 	MDRV_IMPORT_FROM(chip_squeak_deluxe)
   953: MACHINE_DRIVER_END
   954: 
   955: 
   956: static MACHINE_DRIVER_START( mcr68 )
   957: 
   958: 	/* basic machine hardware */
   959: 	MDRV_CPU_ADD_TAG("main", M68000, 7723800)
   960: 	MDRV_CPU_MEMORY(mcr68_readmem,mcr68_writemem)
   961: 	MDRV_CPU_VBLANK_INT(mcr68_interrupt,1)
   962: 
   963: 	MDRV_FRAMES_PER_SECOND(30)
   964: 	MDRV_VBLANK_DURATION(DEFAULT_REAL_30HZ_VBLANK_DURATION)
   965: 	MDRV_MACHINE_INIT(mcr68)
   966: 
   967: 	/* video hardware */
   968: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER)
   969: 	MDRV_SCREEN_SIZE(32*16, 30*16)
   970: 	MDRV_VISIBLE_AREA(0, 32*16-1, 0, 30*16-1)
   971: 	MDRV_GFXDECODE(gfxdecodeinfo)
   972: 	MDRV_PALETTE_LENGTH(64)
   973: 
   974: 	MDRV_VIDEO_START(mcr68)
   975: 	MDRV_VIDEO_UPDATE(mcr68)
   976: 
   977: 	/* sound hardware -- determined by specific machine */
   978: MACHINE_DRIVER_END
   979: 
   980: 
   981: static MACHINE_DRIVER_START( xenophob )
   982: 
   983: 	/* basic machine hardware */
   984: 	MDRV_IMPORT_FROM(mcr68)
   985: 	MDRV_IMPORT_FROM(sounds_good)
   986: MACHINE_DRIVER_END
   987: 
   988: 
   989: static MACHINE_DRIVER_START( spyhunt2 )
   990: 
   991: 	/* basic machine hardware */
   992: 	MDRV_IMPORT_FROM(mcr68)
   993: 	MDRV_IMPORT_FROM(turbo_chip_squeak_plus_sounds_good)
   994: MACHINE_DRIVER_END
   995: 
   996: 
   997: static MACHINE_DRIVER_START( archrivl )
   998: 
   999: 	/* basic machine hardware */
  1000: 	MDRV_IMPORT_FROM(mcr68)
  1001: 	MDRV_IMPORT_FROM(williams_cvsd_sound)
  1002: MACHINE_DRIVER_END
  1003: 
  1004: 
  1005: static MACHINE_DRIVER_START( pigskin )
  1006: 
  1007: 	/* basic machine hardware */
  1008: 	MDRV_IMPORT_FROM(mcr68)
  1009: 	MDRV_IMPORT_FROM(williams_cvsd_sound)
  1010: 
  1011: 	MDRV_CPU_MODIFY("main")
  1012: 	MDRV_CPU_MEMORY(pigskin_readmem,pigskin_writemem)
  1013: MACHINE_DRIVER_END
  1014: 
  1015: 
  1016: static MACHINE_DRIVER_START( trisport )
  1017: 
  1018: 	/* basic machine hardware */
  1019: 	MDRV_IMPORT_FROM(mcr68)
  1020: 	MDRV_IMPORT_FROM(williams_cvsd_sound)
  1021: 
  1022: 	MDRV_CPU_MODIFY("main")
  1023: 	MDRV_CPU_MEMORY(trisport_readmem,trisport_writemem)
  1024: 
  1025: 	MDRV_NVRAM_HANDLER(generic_0fill)
  1026: MACHINE_DRIVER_END
  1027: 
  1028: 
  1029: 
  1030: /*************************************
  1031:  *
  1032:  *	ROM definitions
  1033:  *
  1034:  *************************************/
  1035: 
  1036: ROM_START( zwackery )
  1037: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1038: 	ROM_LOAD16_BYTE( "pro0.bin",   0x00000, 0x4000, CRC(6fb9731c) SHA1(ee5b297ef2b4cf20df5e776f1c585b51f174bfa7) )
  1039: 	ROM_LOAD16_BYTE( "pro1.bin",   0x00001, 0x4000, CRC(84b92555) SHA1(9b4af81374828c1742c1e13fc425eea2973b0867) )
  1040: 	ROM_LOAD16_BYTE( "pro2.bin",   0x08000, 0x4000, CRC(e6977a2a) SHA1(602bf3f7e0f4080cb5b72d8fd3ee9fd11f27c558) )
  1041: 	ROM_LOAD16_BYTE( "pro3.bin",   0x08001, 0x4000, CRC(f5d0a60e) SHA1(7e0e4936cb37ac16d6db5533ae4aecdfb07ead93) )
  1042: 	ROM_LOAD16_BYTE( "pro4.bin",   0x10000, 0x4000, CRC(ec5841d9) SHA1(4bafe614e8993994b0ea9aedc8dc2474361e4594) )
  1043: 	ROM_LOAD16_BYTE( "pro5.bin",   0x10001, 0x4000, CRC(d7d99ce0) SHA1(fdf428ab9c96dae555d49bac47495613ba265452) )
  1044: 	ROM_LOAD16_BYTE( "pro6.bin",   0x18000, 0x4000, CRC(b9fe7bf5) SHA1(a94f80f49b4520a2c1098eee8983560b4ecdf3d5) )
  1045: 	ROM_LOAD16_BYTE( "pro7.bin",   0x18001, 0x4000, CRC(5e261b3b) SHA1(dcf99f528c9e3b4f8b52d413c088559bfb37d733) )
  1046: 	ROM_LOAD16_BYTE( "pro8.bin",   0x20000, 0x4000, CRC(55e380a5) SHA1(e3fef8486858cd714086449327a93b4a70ae73ff) )
  1047: 	ROM_LOAD16_BYTE( "pro9.bin",   0x20001, 0x4000, CRC(12249dca) SHA1(154170286047ea78645d45dfdd895a597dad17da) )
  1048: 	ROM_LOAD16_BYTE( "pro10.bin",  0x28000, 0x4000, CRC(6a39a8ca) SHA1(8ac9c3e60dc6f1918bfb95acf3ee170cedfb20ea) )
  1049: 	ROM_LOAD16_BYTE( "pro11.bin",  0x28001, 0x4000, CRC(ad6b45bc) SHA1(118496e898654b028f008a3d493e693ba000ef38) )
  1050: 	ROM_LOAD16_BYTE( "pro12.bin",  0x30000, 0x4000, CRC(e2d25e1f) SHA1(5d8ff303441eccf431422b453a173983a4513630) )
  1051: 	ROM_LOAD16_BYTE( "pro13.bin",  0x30001, 0x4000, CRC(e131f9b8) SHA1(08b131f2acc84d4c2c931bfd24e7de3d92a8a817) )
  1052: 
  1053: 	ROM_REGION( 0x20000, REGION_CPU2, 0 )
  1054: 	ROM_LOAD16_BYTE( "csd7.bin",  0x00000, 0x2000, CRC(5501f54b) SHA1(84c0851fb868e81400cfe3ebfd7b91fe98a47bac) )
  1055: 	ROM_LOAD16_BYTE( "csd17.bin", 0x00001, 0x2000, CRC(2e482580) SHA1(92bd3e64ff580800ee16579d97bcb8b3bd9f755c) )
  1056: 	ROM_LOAD16_BYTE( "csd8.bin",  0x04000, 0x2000, CRC(13366575) SHA1(bcf25a7d4c6b2ccd7cd9978edafc66ef0cadfe72) )
  1057: 	ROM_LOAD16_BYTE( "csd18.bin", 0x04001, 0x2000, CRC(bcfe5820) SHA1(ca32daa645851a2373b3cdb8a5e63ebda84aa762) )
  1058: 
  1059: 	ROM_REGION( 0x8000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1060: 	ROM_LOAD( "tileh.bin",    0x00000, 0x4000, CRC(a7237eb1) SHA1(197e5838ac2bc732ae9eb33a9257b9391d50abf8) )
  1061: 	ROM_LOAD( "tileg.bin",    0x04000, 0x4000, CRC(626cc69b) SHA1(86142bafa78f45d1a0bed0b83f3558b21384fa1a) )
  1062: 
  1063: 	ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE )
  1064: 	ROM_LOAD( "spr6h.bin",    0x00000, 0x4000, CRC(a51158dc) SHA1(8d3b0054950443fdf57f83dcb973d05f6c7ad9c8) )
  1065: 	ROM_LOAD( "spr7h.bin",    0x04000, 0x4000, CRC(941feecf) SHA1(8e88c956332e78dc7e55139879f2272116415714) )
  1066: 	ROM_LOAD( "spr6j.bin",    0x08000, 0x4000, CRC(f3eef316) SHA1(026e18bdfdda8cc9d0774e6d9d758686bf16992c) )
  1067: 	ROM_LOAD( "spr7j.bin",    0x0c000, 0x4000, CRC(a8a34033) SHA1(abd9fde84bb079c84126ad04d584ec03b44b60cd) )
  1068: 	ROM_LOAD( "spr10h.bin",   0x10000, 0x4000, CRC(a99daea6) SHA1(c323e05f398b7e9e04b75fd8ac5e8ab675236d66) )
  1069: 	ROM_LOAD( "spr11h.bin",   0x14000, 0x4000, CRC(c1a767fb) SHA1(c16e09b39b09d409b534ce4c53366e43237a3759) )
  1070: 	ROM_LOAD( "spr10j.bin",   0x18000, 0x4000, CRC(4dd04376) SHA1(069b64397e7a961c1fc246671472f759bd9f6c03) )
  1071: 	ROM_LOAD( "spr11j.bin",   0x1c000, 0x4000, CRC(e8c6a880) SHA1(dd3d52ddbc36e244b96cfb87e6a80adb94626407) )
  1072: 
  1073: 	ROM_REGION( 0x8000, REGION_GFX3, ROMREGION_DISPOSE )	/* bg color maps */
  1074: 	ROM_LOAD16_BYTE( "tilef.bin",  0x0000, 0x4000, CRC(a0dfcd7e) SHA1(0fc6723eddef2a96de9bf1f48006dd067c148540) )
  1075: 	ROM_LOAD16_BYTE( "tilee.bin",  0x0001, 0x4000, CRC(ab504dc8) SHA1(4ebdcd42624e94c29ccdb8247bfff2d8e936ddd7) )
  1076: ROM_END
  1077: 
  1078: 
  1079: ROM_START( xenophob )
  1080: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1081: 	ROM_LOAD16_BYTE( "xeno_pro.3c",  0x00000, 0x10000, CRC(f44c2e60) SHA1(9130b26eb1e0e0a75f9fdec898e1f0976de8a766) )
  1082: 	ROM_LOAD16_BYTE( "xeno_pro.3b",  0x00001, 0x10000, CRC(01609a3b) SHA1(9e065bc72f56439a885bfdfc8eb60df666df7c37) )
  1083: 	ROM_LOAD16_BYTE( "xeno_pro.2c",  0x20000, 0x10000, CRC(e45bf669) SHA1(52b0ffd2311e4d300410de57fbddacab4b9857a1) )
  1084: 	ROM_LOAD16_BYTE( "xeno_pro.2b",  0x20001, 0x10000, CRC(da5d39d5) SHA1(f61b239eb3108faec2f3dbb8139c8d01b0e29873) )
  1085: 
  1086: 	ROM_REGION( 0x40000, REGION_CPU2, 0 )  /* Sounds Good board */
  1087: 	ROM_LOAD16_BYTE( "xeno_snd.u7",  0x00000, 0x10000, CRC(77561d15) SHA1(8c23a9270d54be6380f2d23939b6c6d8c31e334b) )
  1088: 	ROM_LOAD16_BYTE( "xeno_snd.u17", 0x00001, 0x10000, CRC(837a1a71) SHA1(d7d60ef1fd11e5e84dd1ffb9a077686bd2fb452e) )
  1089: 	ROM_LOAD16_BYTE( "xeno_snd.u8",  0x20000, 0x10000, CRC(6e2915c7) SHA1(df1f35f6b743afbab0a3a29adce3639a8c9dc66f) )
  1090: 	ROM_LOAD16_BYTE( "xeno_snd.u18", 0x20001, 0x10000, CRC(12492145) SHA1(c891e86750e51d3b7b93fc96a9f5173fd7869756) )
  1091: 
  1092: 	ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1093: 	ROM_LOAD( "xeno_bg.11d",  0x00000, 0x08000, CRC(3d2cf284) SHA1(39a666197584f24d19d43634b8e2f3923081a336) )
  1094: 	ROM_LOAD( "xeno_bg.12d",  0x08000, 0x08000, CRC(c32288b1) SHA1(a9f9f61c4287cb1e5490b4b7ad4fd94bba1c8fac) )
  1095: 
  1096: 	ROM_REGION( 0x40000, REGION_GFX2, ROMREGION_DISPOSE )
  1097: 	ROM_LOAD( "xeno_fg.7j",   0x00000, 0x10000, CRC(b12eddb2) SHA1(a10df077d60cd821acbdbd32abe6dafd1217737c) )
  1098: 	ROM_LOAD( "xeno_fg.8j",   0x10000, 0x10000, CRC(20e682f5) SHA1(1009f7ec56998df8a1d5ecd724d0523c435c9ee0) )
  1099: 	ROM_LOAD( "xeno_fg.9j",   0x20000, 0x10000, CRC(82fb3e09) SHA1(f06e9df20044244a6c174f4876e615ccc18e1cba) )
  1100: 	ROM_LOAD( "xeno_fg.10j",  0x30000, 0x10000, CRC(6a7a3516) SHA1(1def9c134220eac9ba5e46d38282ff18f51b6398) )
  1101: ROM_END
  1102: 
  1103: 
  1104: ROM_START( spyhunt2 )
  1105: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1106: 	ROM_LOAD16_BYTE( "sh23c.bin",  0x00000, 0x10000, CRC(30b91c90) SHA1(5b76f4e512b17ee80de2694807aa4e2499c2ef8b) )
  1107: 	ROM_LOAD16_BYTE( "sh23b.bin",  0x00001, 0x10000, CRC(f64513c6) SHA1(e42cab599e489a0ba422b28c5cfda0f9c3a60601) )
  1108: 	ROM_LOAD16_BYTE( "sh22c.bin",  0x20000, 0x10000, CRC(8ee65009) SHA1(6adb00888f739b59e3ace1a6eaf1c58c4583d7fd) )
  1109: 	ROM_LOAD16_BYTE( "sh22b.bin",  0x20001, 0x10000, CRC(850c21ad) SHA1(3b944545cb469e2c53166a91eb2834c5f3891ddf) )
  1110: 
  1111: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )  /* 64k for the Turbo Cheap Squeak */
  1112: 	ROM_LOAD( "turbo-cs.u5", 0x08000, 0x4000, CRC(4b1d8a66) SHA1(a1a2f9fe3fc42b668ec97ad6c6ea6032f1dc0695) )
  1113: 	ROM_LOAD( "turbo-cs.u4", 0x0c000, 0x4000, CRC(3722ce48) SHA1(ae064be590c067bda66ca7a72c212ad47f3eb1c5) )
  1114: 
  1115: 	ROM_REGION( 0x40000, REGION_CPU3, 0 )  /* Sounds Good board */
  1116: 	ROM_LOAD16_BYTE( "sh2u7.bin",  0x00000, 0x10000, CRC(02362ea4) SHA1(2d37f06c9156554b8140ed565f6fdd1ef67bb54f) )
  1117: 	ROM_LOAD16_BYTE( "sh2u17.bin", 0x00001, 0x10000, CRC(e29a2c37) SHA1(e0d4df90b533d3325c905d42ddc6876667f32c82) )
  1118: 
  1119: 	ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1120: 	ROM_LOAD( "sh2bg0.bin",  0x00000, 0x08000, CRC(cb3c3d8e) SHA1(5135eefd311e21b62628a6b6dc483ff80e5594fd) )
  1121: 	ROM_LOAD( "sh2bg1.bin",  0x08000, 0x08000, CRC(029d4af1) SHA1(9c2afa7b48f27d09d0e5487ec2a54f903e83c91c) )
  1122: 
  1123: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
  1124: 	ROM_LOAD( "fg0.7j",   0x00000, 0x20000, CRC(55ce12ea) SHA1(db8677e05009db6c79a727f42f35d60f4a716fc2) )
  1125: 	ROM_LOAD( "fg1.8j",   0x20000, 0x20000, CRC(692afb67) SHA1(5669298a646deb2f82e438ae52de03f81a9e11a7) )
  1126: 	ROM_LOAD( "fg2.9j",   0x40000, 0x20000, CRC(f1aba383) SHA1(56d1f7e9eb430671076415dd87fe77a38fadad84) )
  1127: 	ROM_LOAD( "fg3.10j",  0x60000, 0x20000, CRC(d3475ff8) SHA1(aa7a283a190a6c43e365fcd9242c5d0b920dbf32) )
  1128: ROM_END
  1129: 
  1130: 
  1131: ROM_START( spyhnt2a )
  1132: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1133: 	ROM_LOAD16_BYTE( "3c",  0x00000, 0x10000, CRC(5b92aadf) SHA1(0d0e2606fc5346e396f0a7b8ceb190ee42e485c3) )
  1134: 	ROM_LOAD16_BYTE( "3b",  0x00001, 0x10000, CRC(6ed0a25f) SHA1(542f77889b0cfdfeeff47e5beaef97c7516b77e1) )
  1135: 	ROM_LOAD16_BYTE( "2c",  0x20000, 0x10000, CRC(bc834f3f) SHA1(05f6ab508ce2ebe55665e97114070e9d81db48c8) )
  1136: 	ROM_LOAD16_BYTE( "2b",  0x20001, 0x10000, CRC(8a9f7ef3) SHA1(353ebb0a3782c183cc9be800584903e23ca507d9) )
  1137: 
  1138: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )  /* 64k for the Turbo Cheap Squeak */
  1139: 	ROM_LOAD( "turbo-cs.u5", 0x08000, 0x4000, CRC(4b1d8a66) SHA1(a1a2f9fe3fc42b668ec97ad6c6ea6032f1dc0695) )
  1140: 	ROM_LOAD( "turbo-cs.u4", 0x0c000, 0x4000, CRC(3722ce48) SHA1(ae064be590c067bda66ca7a72c212ad47f3eb1c5) )
  1141: 
  1142: 	ROM_REGION( 0x40000, REGION_CPU3, 0 )  /* Sounds Good board */
  1143: 	ROM_LOAD16_BYTE( "sh2u7.bin",  0x00000, 0x10000, CRC(02362ea4) SHA1(2d37f06c9156554b8140ed565f6fdd1ef67bb54f) )
  1144: 	ROM_LOAD16_BYTE( "sh2u17.bin", 0x00001, 0x10000, CRC(e29a2c37) SHA1(e0d4df90b533d3325c905d42ddc6876667f32c82) )
  1145: 
  1146: 	ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1147: 	ROM_LOAD( "bg0.11d",  0x00000, 0x08000, CRC(81efef7a) SHA1(74a6757b374b9f1e0c5a33a13fa492ae2e4347a0) )
  1148: 	ROM_LOAD( "bg1.12d",  0x08000, 0x08000, CRC(6a902e4d) SHA1(0c7f1bcd63f48cf1ad58f8abdcfe9fe9bc25acbc) )
  1149: 
  1150: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
  1151: 	ROM_LOAD( "fg0.7j",   0x00000, 0x20000, CRC(55ce12ea) SHA1(db8677e05009db6c79a727f42f35d60f4a716fc2) )
  1152: 	ROM_LOAD( "fg1.8j",   0x20000, 0x20000, CRC(692afb67) SHA1(5669298a646deb2f82e438ae52de03f81a9e11a7) )
  1153: 	ROM_LOAD( "fg2.9j",   0x40000, 0x20000, CRC(f1aba383) SHA1(56d1f7e9eb430671076415dd87fe77a38fadad84) )
  1154: 	ROM_LOAD( "fg3.10j",  0x60000, 0x20000, CRC(d3475ff8) SHA1(aa7a283a190a6c43e365fcd9242c5d0b920dbf32) )
  1155: ROM_END
  1156: 
  1157: 
  1158: ROM_START( blasted )
  1159: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1160: 	ROM_LOAD16_BYTE( "3c",  0x00000, 0x10000, CRC(b243b7df) SHA1(b44179c30e5286362b0be4e2e9b0742e7e27f7c9) )
  1161: 	ROM_LOAD16_BYTE( "3b",  0x00001, 0x10000, CRC(627e30d3) SHA1(c430191dd539a22603e49df4c4cb697747a0cd02) )
  1162: 	ROM_LOAD16_BYTE( "2c",  0x20000, 0x10000, CRC(026f30bf) SHA1(de327ab5bd4dc9456fa5a91f3ccd293b3ab8c5c2) )
  1163: 	ROM_LOAD16_BYTE( "2b",  0x20001, 0x10000, CRC(8e0e91a9) SHA1(2dc2927a1fd552ead446606a902a2ba0c4595798) )
  1164: 
  1165: 	ROM_REGION( 0x40000, REGION_CPU2, 0 )  /* Sounds Good board */
  1166: 	ROM_LOAD16_BYTE( "blasted.u7",  0x00000, 0x10000, CRC(8d7c8ef6) SHA1(a414e91c20202f800f3e01e4c430e3f99e3df5bb) )
  1167: 	ROM_LOAD16_BYTE( "blasted.u17", 0x00001, 0x10000, CRC(c79040b9) SHA1(e6fa173ff5fb681ddfef831f1ef237a7c4303f32) )
  1168: 	ROM_LOAD16_BYTE( "blasted.u8",  0x20000, 0x10000, CRC(c53094c0) SHA1(8c54cefe8030bf18b9585008a4a6cf8a7dc23f71) )
  1169: 	ROM_LOAD16_BYTE( "blasted.u18", 0x20001, 0x10000, CRC(85688160) SHA1(de0494f3d457ba81d03700ca569fe3fe4f10a8a1) )
  1170: 
  1171: 	ROM_REGION( 0x10000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1172: 	ROM_LOAD( "11d",  0x00000, 0x08000, CRC(d8ed5cbc) SHA1(0ad8b894f40892c734fdda056fefe0aac44f9a82) )
  1173: 	ROM_LOAD( "12d",  0x08000, 0x08000, CRC(60d00c69) SHA1(900d5915a1369c2fc8305c2baeafede5ca627a6b) )
  1174: 
  1175: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
  1176: 	ROM_LOAD( "fg0",  0x00000, 0x20000, CRC(5034ae8a) SHA1(45bee41af64fd52311cb470332de4b1caa0f9c9d) )
  1177: 	ROM_LOAD( "fg1",  0x20000, 0x20000, CRC(4fbdba58) SHA1(5dfaca5447e96d904028a14ef01ab6bd972011e6) )
  1178: 	ROM_LOAD( "fg2",  0x40000, 0x20000, CRC(8891f6f8) SHA1(af07aa290eff3b9632b238d8b5a37280961f63f7) )
  1179: 	ROM_LOAD( "fg3",  0x60000, 0x20000, CRC(18e4a130) SHA1(2412b45ca58b36515c80b0888a5d35303a5ce5a2) )
  1180: ROM_END
  1181: 
  1182: 
  1183: ROM_START( archrivl )
  1184: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1185: 	ROM_LOAD16_BYTE( "3c-rev2",  0x00000, 0x10000, CRC(60d4b760) SHA1(9c24c72f62310475b0dade85299cb661904f8f41) )
  1186: 	ROM_LOAD16_BYTE( "3b-rev2",  0x00001, 0x10000, CRC(e0c07a8d) SHA1(ace5b480d4c2cd3d78dff0e284cf13a8d28c40b7) )
  1187: 	ROM_LOAD16_BYTE( "2c-rev2",  0x20000, 0x10000, CRC(cc2893f7) SHA1(44931299cb98e27ac2f11b3922da76895fbfe0a7) )
  1188: 	ROM_LOAD16_BYTE( "2b-rev2",  0x20001, 0x10000, CRC(fa977050) SHA1(67c66995da755401162f7e668b97eb42ac769ec0) )
  1189: 
  1190: 	ROM_REGION( 0x70000, REGION_CPU2, 0 )  /* Audio System board */
  1191: 	ROM_LOAD( "u4.snd",  0x10000, 0x08000, CRC(96b3c652) SHA1(1bb576d0bf6b6b8df24e7b9352a33e97dd8ebdcb) )
  1192: 	ROM_LOAD( "u19.snd", 0x30000, 0x08000, CRC(c4b3dc23) SHA1(87e6eaec82d749ad28e0fa3d0efecd8a4aaf5cd7) )
  1193: 	ROM_LOAD( "u20.snd", 0x50000, 0x08000, CRC(f7907a02) SHA1(3fabb2b7fd82e773d7b6db53c5328b5866d70617) )
  1194: 
  1195: 	ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1196: 	ROM_LOAD( "11d-rev1",  0x00000, 0x10000, CRC(7eb3d7c6) SHA1(8544d04929cdb36fa7f0dcb67e0b7fd8c7b0fc2b) )
  1197: 	ROM_LOAD( "12d-rev1",  0x10000, 0x10000, CRC(31e68050) SHA1(e25871beb08a8706af70d277fa7305a1f4d7d3e2) )
  1198: 
  1199: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
  1200: 	ROM_LOAD( "7j-rev1",   0x00000, 0x20000, CRC(148ce28c) SHA1(d7dc59d9ae8dc61ecc58a6172fd40aa3926b1f6f) )
  1201: 	ROM_LOAD( "8j-rev1",   0x20000, 0x20000, CRC(58187ac2) SHA1(0bd58598720c41b3c393d47b3b1d6b30696b3a6f) )
  1202: 	ROM_LOAD( "9j-rev1",   0x40000, 0x20000, CRC(0dd1204e) SHA1(bdc9b74e7ae8f071d2eb3ce957eec484f02ef876) )
  1203: 	ROM_LOAD( "10j-rev1",  0x60000, 0x20000, CRC(eb3d0344) SHA1(9db7c7bca45f56550c9a9623f96565901968d0c3) )
  1204: ROM_END
  1205: 
  1206: 
  1207: ROM_START( archriv2 )
  1208: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1209: 	ROM_LOAD16_BYTE( "archrivl.4",  0x00000, 0x10000, CRC(3c545740) SHA1(84a467756c959385a3ec3b97026823470bbab7ab) )
  1210: 	ROM_LOAD16_BYTE( "archrivl.2",  0x00001, 0x10000, CRC(bc4df2b9) SHA1(7314d03d4cf7e8a83135fa67969dda3088e212fb) )
  1211: 	ROM_LOAD16_BYTE( "archrivl.3",  0x20000, 0x10000, CRC(d6d08ff7) SHA1(bbbd4b5c3218c9bb461b17e536191d40ab39f67c) )
  1212: 	ROM_LOAD16_BYTE( "archrivl.1",  0x20001, 0x10000, CRC(92f3a43d) SHA1(45fdcbacd65f5898d54cc2ac95639b7ee2c097e6) )
  1213: 
  1214: 	ROM_REGION( 0x70000, REGION_CPU2, 0 )  /* Audio System board */
  1215: 	ROM_LOAD( "u4.snd",  0x10000, 0x08000, CRC(96b3c652) SHA1(1bb576d0bf6b6b8df24e7b9352a33e97dd8ebdcb) )
  1216: 	ROM_LOAD( "u19.snd", 0x30000, 0x08000, CRC(c4b3dc23) SHA1(87e6eaec82d749ad28e0fa3d0efecd8a4aaf5cd7) )
  1217: 	ROM_LOAD( "u20.snd", 0x50000, 0x08000, CRC(f7907a02) SHA1(3fabb2b7fd82e773d7b6db53c5328b5866d70617) )
  1218: 
  1219: 	ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1220: 	ROM_LOAD( "11d-rev1",  0x00000, 0x10000, CRC(7eb3d7c6) SHA1(8544d04929cdb36fa7f0dcb67e0b7fd8c7b0fc2b) )
  1221: 	ROM_LOAD( "12d-rev1",  0x10000, 0x10000, CRC(31e68050) SHA1(e25871beb08a8706af70d277fa7305a1f4d7d3e2) )
  1222: 
  1223: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
  1224: 	ROM_LOAD( "7j-rev1",   0x00000, 0x20000, CRC(148ce28c) SHA1(d7dc59d9ae8dc61ecc58a6172fd40aa3926b1f6f) )
  1225: 	ROM_LOAD( "8j-rev1",   0x20000, 0x20000, CRC(58187ac2) SHA1(0bd58598720c41b3c393d47b3b1d6b30696b3a6f) )
  1226: 	ROM_LOAD( "9j-rev1",   0x40000, 0x20000, CRC(0dd1204e) SHA1(bdc9b74e7ae8f071d2eb3ce957eec484f02ef876) )
  1227: 	ROM_LOAD( "10j-rev1",  0x60000, 0x20000, CRC(eb3d0344) SHA1(9db7c7bca45f56550c9a9623f96565901968d0c3) )
  1228: ROM_END
  1229: 
  1230: 
  1231: ROM_START( pigskin )
  1232: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1233: 	ROM_LOAD16_BYTE( "pigskin.a5",  0x00000, 0x10000, CRC(ab61c29b) SHA1(01cf2d9b3f41442280e614541d5651c6e46b4a4b) )
  1234: 	ROM_LOAD16_BYTE( "pigskin.b5",  0x00001, 0x10000, CRC(55a802aa) SHA1(a75f54bce5aad3f7375ab15ad204744e2f6fdc92) )
  1235: 	ROM_LOAD16_BYTE( "pigskin.a6",  0x20000, 0x10000, CRC(4d8b7e50) SHA1(9e5d0edf1603e11f22d3129a2b8865ebcb5e27f9) )
  1236: 	ROM_LOAD16_BYTE( "pigskin.b6",  0x20001, 0x10000, CRC(1194f187) SHA1(e7cebe5322a5c8e382b6773939be5bc88492f289) )
  1237: 
  1238: 	ROM_REGION( 0x70000, REGION_CPU2, 0 )  /* Audio System board */
  1239: 	ROM_LOAD( "pigskin.u4",  0x10000, 0x10000, CRC(6daf2d37) SHA1(4c8098520fe44e36b01389bcfcfe3ad1d027cbde) )
  1240: 	ROM_LOAD( "pigskin.u19", 0x30000, 0x10000, CRC(56fd16a3) SHA1(b91aabdbd3185355f2b7177fc4d3a86fa110f51d) )
  1241: 	ROM_LOAD( "pigskin.u20", 0x50000, 0x10000, CRC(5d032fb8) SHA1(a236cdc64856637e560bec7119b051fac13efbe0) )
  1242: 
  1243: 	ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1244: 	ROM_LOAD( "pigskin.e2",  0x00000, 0x10000, CRC(12d5737b) SHA1(73040233bb86eaa42257112e2f0540de1206e310) )
  1245: 	ROM_LOAD( "pigskin.e1",  0x10000, 0x10000, CRC(460202a9) SHA1(8c2f7ae3615519e13e750c99b89ccb28e9946bb8) )
  1246: 
  1247: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
  1248: 	ROM_LOAD( "pigskin.h15", 0x00000, 0x20000, CRC(2655d03f) SHA1(de2e2a7fb40844d921b6afaa724a7089a0397270) )
  1249: 	ROM_LOAD( "pigskin.h17", 0x20000, 0x20000, CRC(31c52ea7) SHA1(1fcb99a70494eecb970bc47bd47ef04a170fab5d) )
  1250: 	ROM_LOAD( "pigskin.h18", 0x40000, 0x20000, CRC(b36c4109) SHA1(4eeae5dfbbe061ea55d7429a7386ec75c734befb) )
  1251: 	ROM_LOAD( "pigskin.h14", 0x60000, 0x20000, CRC(09c87104) SHA1(34ac22bdcd8218b9d6a0b4219c67b9b0cc000375) )
  1252: ROM_END
  1253: 
  1254: 
  1255: ROM_START( trisport )
  1256: 	ROM_REGION( 0x40000, REGION_CPU1, 0 )
  1257: 	ROM_LOAD16_BYTE( "la3.a5",  0x00000, 0x10000, CRC(fe1e9e37) SHA1(583f18531583e038ca57a592b6a6c305896bf2c5) )
  1258: 	ROM_LOAD16_BYTE( "la3.b5",  0x00001, 0x10000, CRC(f352ec81) SHA1(446a68f231ca57540a295742d67ce9f1a8364b15) )
  1259: 	ROM_LOAD16_BYTE( "la3.a6",  0x20000, 0x10000, CRC(9c6a1398) SHA1(ee115d9207f3a9034b7c9eccd2ff151d9c923c9a) )
  1260: 	ROM_LOAD16_BYTE( "la3.b6",  0x20001, 0x10000, CRC(597b564c) SHA1(090da3ec0c86035cc41a9caea182b8a5419c3be9) )
  1261: 
  1262: 	ROM_REGION( 0x70000, REGION_CPU2, 0 )  /* Audio System board */
  1263: 	ROM_LOAD( "sl1-snd.u4",  0x10000, 0x10000, CRC(0ed8c904) SHA1(21292a001c4c44f87b8782c706e5c346b767cd6b) )
  1264: 	ROM_LOAD( "sl1-snd.u19", 0x30000, 0x10000, CRC(b57d7d7e) SHA1(483f718f1cc4549baf5696935532d30803254a19) )
  1265: 	ROM_LOAD( "sl1-snd.u20", 0x50000, 0x08000, CRC(3ae15c08) SHA1(6b0fd09c39da08d1f67b6dd4287e8d2894522e1d) )
  1266: 
  1267: 	ROM_REGION( 0x20000, REGION_GFX1, ROMREGION_DISPOSE | ROMREGION_INVERT )
  1268: 	ROM_LOAD( "la2.e2",  0x00000, 0x10000, CRC(f61149a0) SHA1(a43d184db23c7f194042709550e7bf36b838ee5c) )
  1269: 	ROM_LOAD( "la2.e1",  0x10000, 0x10000, CRC(cf753497) SHA1(e076093134f346e4cdb8d4a71fefef70f3fc1328) )
  1270: 
  1271: 	ROM_REGION( 0x80000, REGION_GFX2, ROMREGION_DISPOSE )
  1272: 	ROM_LOAD( "la2.h15", 0x00000, 0x20000, CRC(18a44d43) SHA1(13ac27860b221b4ee950bc239ca941dadcb06832) )
  1273: 	ROM_LOAD( "la2.h17", 0x20000, 0x20000, CRC(874cd237) SHA1(32983b7fcac3b1a53da3529c5239a1131bb64d4f) )
  1274: 	ROM_LOAD( "la2.h18", 0x40000, 0x20000, CRC(f7637a18) SHA1(21dbe2bed406908f17f5860cd2ca502b8f481f51) )
  1275: 	ROM_LOAD( "la2.h14", 0x60000, 0x20000, CRC(403f9401) SHA1(6ff027943016d894b758dc8f189850bec1ee9360) )
  1276: ROM_END
  1277: 
  1278: 
  1279: 
  1280: /*************************************
  1281:  *
  1282:  *	Driver initialization
  1283:  *
  1284:  *************************************/
  1285: 
  1286: static DRIVER_INIT( zwackery )
  1287: {
  1288: 	MCR_CONFIGURE_SOUND(MCR_CHIP_SQUEAK_DELUXE);
  1289: 
  1290: 	/* Zwackery doesn't care too much about this value; currently taken from Blasted */
  1291: 	mcr68_timing_factor = (256.0 + 16.0) / (double)(Machine->drv->cpu[0].cpu_clock / 10);
  1292: }
  1293: 
  1294: 
  1295: static DRIVER_INIT( xenophob )
  1296: {
  1297: 	MCR_CONFIGURE_SOUND(MCR_SOUNDS_GOOD);
  1298: 
  1299: 	mcr68_sprite_clip = 0;
  1300: 	mcr68_sprite_xoffset = 0;
  1301: 
  1302: 	/* Xenophobe doesn't care too much about this value; currently taken from Blasted */
  1303: 	mcr68_timing_factor = (256.0 + 16.0) / (double)(Machine->drv->cpu[0].cpu_clock / 10);
  1304: 
  1305: 	/* install control port handler */
  1306: 	install_mem_write16_handler(0, 0x0c0000, 0x0cffff, xenophobe_control_w);
  1307: }
  1308: 
  1309: 
  1310: static DRIVER_INIT( spyhunt2 )
  1311: {
  1312: 	MCR_CONFIGURE_SOUND(MCR_TURBO_CHIP_SQUEAK | MCR_SOUNDS_GOOD);
  1313: 
  1314: 	mcr68_sprite_clip = 0;
  1315: 	mcr68_sprite_xoffset = -6;
  1316: 
  1317: 	/* Spy Hunter 2 doesn't care too much about this value; currently taken from Blasted */
  1318: 	mcr68_timing_factor = (256.0 + 16.0) / (double)(Machine->drv->cpu[0].cpu_clock / 10);
  1319: 
  1320: 	/* analog port handling is a bit tricky */
  1321: 	install_mem_write16_handler(0, 0x0c0000, 0x0cffff, spyhunt2_control_w);
  1322: 	install_mem_read16_handler(0, 0x0d0000, 0x0dffff, spyhunt2_port_0_r);
  1323: 	install_mem_read16_handler(0, 0x0e0000, 0x0effff, spyhunt2_port_1_r);
  1324: }
  1325: 
  1326: 
  1327: static DRIVER_INIT( blasted )
  1328: {
  1329: 	MCR_CONFIGURE_SOUND(MCR_SOUNDS_GOOD);
  1330: 
  1331: 	mcr68_sprite_clip = 0;
  1332: 	mcr68_sprite_xoffset = 0;
  1333: 
  1334: 	/* Blasted checks the timing of VBLANK relative to the 493 interrupt */
  1335: 	/* VBLANK is required to come within 220-256 E clocks (i.e., 2200-2560 CPU clocks) */
  1336: 	/* after the 493; we also allow 16 E clocks for latency  */
  1337: 	mcr68_timing_factor = (256.0 + 16.0) / (double)(Machine->drv->cpu[0].cpu_clock / 10);
  1338: 
  1339: 	/* handle control writes */
  1340: 	install_mem_write16_handler(0, 0x0c0000, 0x0cffff, blasted_control_w);
  1341: 
  1342: 	/* 6840 is mapped to the lower 8 bits */
  1343: 	install_mem_write16_handler(0, 0x0a0000, 0x0a000f, mcr68_6840_lower_w);
  1344: 	install_mem_read16_handler(0, 0x0a0000, 0x0a000f, mcr68_6840_lower_r);
  1345: }
  1346: 
  1347: 
  1348: static DRIVER_INIT( archrivl )
  1349: {
  1350: 	MCR_CONFIGURE_SOUND(MCR_WILLIAMS_SOUND);
  1351: 
  1352: 	mcr68_sprite_clip = 16;
  1353: 	mcr68_sprite_xoffset = 0;
  1354: 
  1355: 	/* Arch Rivals doesn't care too much about this value; currently taken from Blasted */
  1356: 	mcr68_timing_factor = (256.0 + 16.0) / (double)(Machine->drv->cpu[0].cpu_clock / 10);
  1357: 
  1358: 	/* handle control writes */
  1359: 	install_mem_write16_handler(0, 0x0c0000, 0x0cffff, archrivl_control_w);
  1360: 
  1361: 	/* 49-way joystick handling is a bit tricky */
  1362: 	install_mem_read16_handler(0, 0x0e0000, 0x0effff, archrivl_port_1_r);
  1363: 
  1364: 	/* 6840 is mapped to the lower 8 bits */
  1365: 	install_mem_write16_handler(0, 0x0a0000, 0x0a000f, mcr68_6840_lower_w);
  1366: 	install_mem_read16_handler(0, 0x0a0000, 0x0a000f, mcr68_6840_lower_r);
  1367: 
  1368: 	/* expand the sound ROMs */
  1369: 	memcpy(&memory_region(REGION_CPU2)[0x18000], &memory_region(REGION_CPU2)[0x10000], 0x08000);
  1370: 	memcpy(&memory_region(REGION_CPU2)[0x20000], &memory_region(REGION_CPU2)[0x10000], 0x10000);
  1371: 	memcpy(&memory_region(REGION_CPU2)[0x38000], &memory_region(REGION_CPU2)[0x30000], 0x08000);
  1372: 	memcpy(&memory_region(REGION_CPU2)[0x40000], &memory_region(REGION_CPU2)[0x30000], 0x10000);
  1373: 	memcpy(&memory_region(REGION_CPU2)[0x58000], &memory_region(REGION_CPU2)[0x50000], 0x08000);
  1374: 	memcpy(&memory_region(REGION_CPU2)[0x60000], &memory_region(REGION_CPU2)[0x50000], 0x10000);
  1375: }
  1376: 
  1377: 
  1378: static DRIVER_INIT( pigskin )
  1379: {
  1380: 	MCR_CONFIGURE_SOUND(MCR_WILLIAMS_SOUND);
  1381: 
  1382: 	/* Pigskin doesn't care too much about this value; currently taken from Tri-Sports */
  1383: 	mcr68_timing_factor = 115.0 / (double)(Machine->drv->cpu[0].cpu_clock / 10);
  1384: 
  1385: 	mcr68_sprite_clip = 16;
  1386: 	mcr68_sprite_xoffset = 0;
  1387: 
  1388: 	/* expand the sound ROMs */
  1389: 	memcpy(&memory_region(REGION_CPU2)[0x20000], &memory_region(REGION_CPU2)[0x10000], 0x10000);
  1390: 	memcpy(&memory_region(REGION_CPU2)[0x40000], &memory_region(REGION_CPU2)[0x30000], 0x10000);
  1391: 	memcpy(&memory_region(REGION_CPU2)[0x60000], &memory_region(REGION_CPU2)[0x50000], 0x10000);
  1392: }
  1393: 
  1394: 
  1395: static DRIVER_INIT( trisport )
  1396: {
  1397: 	MCR_CONFIGURE_SOUND(MCR_WILLIAMS_SOUND);
  1398: 
  1399: 	/* Tri-Sports checks the timing of VBLANK relative to the 493 interrupt */
  1400: 	/* VBLANK is required to come within 87-119 E clocks (i.e., 870-1190 CPU clocks) */
  1401: 	/* after the 493 */
  1402: 	mcr68_timing_factor = 115.0 / (double)(Machine->drv->cpu[0].cpu_clock / 10);
  1403: 
  1404: 	mcr68_sprite_clip = 0;
  1405: 	mcr68_sprite_xoffset = 0;
  1406: 
  1407: 	/* expand the sound ROMs */
  1408: 	memcpy(&memory_region(REGION_CPU2)[0x20000], &memory_region(REGION_CPU2)[0x10000], 0x10000);
  1409: 	memcpy(&memory_region(REGION_CPU2)[0x40000], &memory_region(REGION_CPU2)[0x30000], 0x10000);
  1410: 	memcpy(&memory_region(REGION_CPU2)[0x58000], &memory_region(REGION_CPU2)[0x50000], 0x08000);
  1411: 	memcpy(&memory_region(REGION_CPU2)[0x60000], &memory_region(REGION_CPU2)[0x50000], 0x10000);
  1412: }
  1413: 
  1414: 
  1415: 
  1416: /*************************************
  1417:  *
  1418:  *	Game drivers
  1419:  *
  1420:  *************************************/
  1421: 
  1422: GAME( 1984, zwackery, 0,        zwackery, zwackery, zwackery, ROT0,   "Bally Midway", "Zwackery" )
  1423: GAME( 1987, xenophob, 0,        xenophob, xenophob, xenophob, ROT0,   "Bally Midway", "Xenophobe" )
  1424: GAME( 1987, spyhunt2, 0,        spyhunt2, spyhunt2, spyhunt2, ROT0,   "Bally Midway", "Spy Hunter 2 (rev 2)" )
  1425: GAME( 1987, spyhnt2a, spyhunt2, spyhunt2, spyhunt2, spyhunt2, ROT0,   "Bally Midway", "Spy Hunter 2 (rev 1)" )
  1426: GAME( 1988, blasted,  0,        xenophob, blasted,  blasted,  ROT0,   "Bally Midway", "Blasted" )
  1427: GAME( 1989, archrivl, 0,        archrivl, archrivl, archrivl, ROT0,   "Bally Midway", "Arch Rivals (rev 4.0)" )
  1428: GAME( 1989, archriv2, archrivl, archrivl, archrivl, archrivl, ROT0,   "Bally Midway", "Arch Rivals (rev 2.0)" )
  1429: GAME( 1989, trisport, 0,        trisport, trisport, trisport, ROT270, "Bally Midway", "Tri-Sports" )
  1430: GAME( 1990, pigskin,  0,        pigskin,  pigskin,  pigskin,  ROT0,   "Midway", "Pigskin 621AD" )
  1431: 




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