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 : Super Punch-Out!! : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3: Punch Out memory map (preliminary)
     4: Arm Wrestling runs on about the same hardware, but the video board is different.
     5: 
     6: TODO:
     7: - The money bag is misplaced in armwrest bonus rounds.
     8: 
     9: 
    10: driver by Nicola Salmoria
    11: 
    12: 
    13: main CPU:
    14: 
    15: 0000-bfff ROM
    16: c000-c3ff NVRAM
    17: d000-d7ff RAM
    18: d800-dfff Video RAM (info screen)
    19: e000-e7ff Video RAM (opponent)
    20: e800-efff Video RAM (player)
    21: f000-f03f Background row scroll (low/high couples)
    22: f000-ffff Video RAM (background)
    23: 
    24: memory mapped ports:
    25: write:
    26: dfe0-dfef ??
    27: 
    28: dff0      big sprite #1 zoom low 8 bits
    29: dff1      big sprite #1 zoom high 4 bits
    30: dff2      big sprite #1 x pos low 8 bits
    31: dff3      big sprite #1 x pos high 4 bits
    32: dff4      big sprite #1 y pos low 8 bits
    33: dff5      big sprite #1 y pos high bit
    34: dff6      big sprite #1 x flip (bit 0)
    35: dff7      big sprite #1 bit 0: show on top monitor; bit 1: show on bottom monitor
    36: 
    37: dff8      big sprite #2 x pos low 8 bits
    38: dff9      big sprite #2 x pos high bit
    39: dffa      big sprite #2 y pos low 8 bits
    40: dffb      big sprite #2 y pos high bit
    41: dffc      big sprite #2 x flip (bit 0)
    42: dffd      palette bank (bit 0 = bottom monitor bit 1 = top monitor)
    43: 
    44: I/O
    45: read:
    46: 00        IN0
    47: 01        IN1
    48: 02        DSW0
    49: 03        DSW1 (bit 4: VLM5030 busy signal)
    50: 
    51: write:
    52: 00        to 2A03 #1 IN0 (unpopulated)
    53: 01        to 2A03 #1 IN1 (unpopulated)
    54: 02        to 2A03 #2 IN0
    55: 03        to 2A03 #2 IN1
    56: 04        to VLM5030
    57: 08        NMI enable + watchdog reset
    58: 09        watchdog reset
    59: 0a        ? latched into Z80 BUS RQ
    60: 0b        to 2A03 #1 and #2 RESET
    61: 0c        to VLM5030 RESET
    62: 0d        to VLM5030 START
    63: 0e        to VLM5030 VCU
    64: 0f        enable NVRAM ?
    65: 
    66: sound CPU:
    67: the sound CPU is a 2A03, which is a modified 6502 with built-in input ports
    68: and two (analog?) outputs. The input ports are memory mapped at 4016-4017;
    69: the outputs are more complicated. The only thing I have found is that 4011
    70: goes straight into a DAC and produces the crowd sounds, but several addresses
    71: in the range 4000-4017 are written to. There are probably three tone generators.
    72: 
    73: 0000-07ff RAM
    74: e000-ffff ROM
    75: 
    76: read:
    77: 4016      IN0
    78: 4017      IN1
    79: 
    80: write:
    81: 4000      ? is usually ORed with 90 or 50
    82: 4001      ? usually 7f, could be associated with 4000
    83: 4002-4003 ? tone #1 freq? (bit 3 of 4003 is always 1, bits 4-7 always 0)
    84: 4004      ? is usually ORed with 90 or 50
    85: 4005      ? usually 7f, could be associated with 4004
    86: 4006-4007 ? tone #2 freq? (bit 3 of 4007 is always 1, bits 4-7 always 0)
    87: 4008      ? at one point the max value is cut at 38
    88: 400a-400b ? tone #3 freq? (bit 3 of 400b is always 1, bits 4-7 always 0)
    89: 400c      ?
    90: 400e-400f ?
    91: 4011      DAC crowd noise
    92: 4015      ?? 00 or 0f
    93: 4017      ?? always c0
    94: 
    95: ***************************************************************************/
    96: 
    97: #include "driver.h" 
    98: #include "vidhrdw/generic.h" 
    99: #include "cpu/m6502/m6502.h" 
   100: 
   101: 
   102: extern unsigned char *punchout_videoram2;
   103: extern size_t punchout_videoram2_size;
   104: extern unsigned char *punchout_bigsprite1ram;
   105: extern size_t punchout_bigsprite1ram_size;
   106: extern unsigned char *punchout_bigsprite2ram;
   107: extern size_t punchout_bigsprite2ram_size;
   108: extern unsigned char *punchout_scroll;
   109: extern unsigned char *punchout_bigsprite1;
   110: extern unsigned char *punchout_bigsprite2;
   111: extern unsigned char *punchout_palettebank;
   112: WRITE_HANDLER( punchout_videoram2_w );
   113: WRITE_HANDLER( punchout_bigsprite1ram_w );
   114: WRITE_HANDLER( punchout_bigsprite2ram_w );
   115: WRITE_HANDLER( punchout_palettebank_w );
   116: VIDEO_START( punchout );
   117: VIDEO_START( armwrest );
   118: PALETTE_INIT( punchout );
   119: PALETTE_INIT( armwrest );
   120: VIDEO_UPDATE( punchout );
   121: VIDEO_UPDATE( armwrest );
   122: 
   123: DRIVER_INIT( punchout );
   124: DRIVER_INIT( spnchout );
   125: DRIVER_INIT( spnchotj );
   126: DRIVER_INIT( armwrest );
   127: 
   128: 
   129: 
   130: READ_HANDLER( punchout_input_3_r )
   131: {
   132: 	int data = input_port_3_r(offset);
   133: 	/* bit 4 is busy pin level */
   134: 	if( VLM5030_BSY() ) data &= ~0x10;
   135: 	else data |= 0x10;
   136: 	return data;
   137: }
   138: 
   139: WRITE_HANDLER( punchout_speech_reset_w )
   140: {
   141: 	VLM5030_RST( data&0x01 );
   142: }
   143: 
   144: WRITE_HANDLER( punchout_speech_st_w )
   145: {
   146: 	VLM5030_ST( data&0x01 );
   147: }
   148: 
   149: WRITE_HANDLER( punchout_speech_vcu_w )
   150: {
   151: 	VLM5030_VCU( data & 0x01 );
   152: }
   153: 
   154: WRITE_HANDLER( punchout_2a03_reset_w )
   155: {
   156: 	if (data & 1)
   157: 		cpu_set_reset_line(1,ASSERT_LINE);
   158: 	else
   159: 		cpu_set_reset_line(1,CLEAR_LINE);
   160: }
   161: 
   162: static int prot_mode_sel = -1; /* Mode selector */
   163: static int prot_mem[16];
   164: 
   165: static READ_HANDLER( spunchout_prot_r ) {
   166: 
   167: 	switch ( offset ) {
   168: 		case 0x00:
   169: 			if ( prot_mode_sel == 0x0a )
   170: 				return cpu_readmem16(0xd012);
   171: 
   172: 			if ( prot_mode_sel == 0x0b || prot_mode_sel == 0x23 )
   173: 				return cpu_readmem16(0xd7c1);
   174: 
   175: 			return prot_mem[offset];
   176: 		break;
   177: 
   178: 		case 0x01:
   179: 			if ( prot_mode_sel == 0x08 ) /* PC = 0x0b6a */
   180: 				return 0x00; /* under 6 */
   181: 		break;
   182: 
   183: 		case 0x02:
   184: 			if ( prot_mode_sel == 0x0b ) /* PC = 0x0613 */
   185: 				return 0x09; /* write "JMP (HL)"code to 0d79fh */
   186: 			if ( prot_mode_sel == 0x09 ) /* PC = 0x20f9, 0x22d9 */
   187: 				return prot_mem[offset]; /* act as registers */
   188: 		break;
   189: 
   190: 		case 0x03:
   191: 			if ( prot_mode_sel == 0x09 ) /* PC = 0x1e4c */
   192: 				return prot_mem[offset] & 0x07; /* act as registers with mask */
   193: 		break;
   194: 
   195: 		case 0x05:
   196: 			if ( prot_mode_sel == 0x09 ) /* PC = 0x29D1 */
   197: 				return prot_mem[offset] & 0x03; /* AND 0FH -> AND 06H */
   198: 		break;
   199: 
   200: 		case 0x06:
   201: 			if ( prot_mode_sel == 0x0b ) /* PC = 0x2dd8 */
   202: 				return 0x0a; /* E=00, HL=23E6, D = (ret and 0x0f), HL+DE = 2de6 */
   203: 
   204: 			if ( prot_mode_sel == 0x09 ) /* PC = 0x2289 */
   205: 				return prot_mem[offset] & 0x07; /* act as registers with mask */
   206: 		break;
   207: 
   208: 		case 0x09:
   209: 			if ( prot_mode_sel == 0x09 ) /* PC = 0x0313 */
   210: 				return ( prot_mem[15] << 4 ); /* pipe through register 0xf7 << 4 */
   211: 				/* (ret or 0x10) -> (D7DF),(D7A0) - (D7DF),(D7A0) = 0d0h(ret nc) */
   212: 		break;
   213: 
   214: 		case 0x0a:
   215: 			if ( prot_mode_sel == 0x0b ) /* PC = 0x060a */
   216: 				return 0x05; /* write "JMP (IX)"code to 0d79eh */
   217: 			if ( prot_mode_sel == 0x09 ) /* PC = 0x1bd7 */
   218: 				return prot_mem[offset] & 0x01; /* AND 0FH -> AND 01H */
   219: 		break;
   220: 
   221: 		case 0x0b:
   222: 			if ( prot_mode_sel == 0x09 ) /* PC = 0x2AA3 */
   223: 				return prot_mem[11] & 0x03;	/* AND 0FH -> AND 03H */
   224: 		break;
   225: 
   226: 		case 0x0c:
   227: 			/* PC = 0x2162 */
   228: 			/* B = 0(return value) */
   229: 			return 0x00;
   230: 		case 0x0d:
   231: 			return prot_mode_sel;
   232: 		break;
   233: 	}
   234: 
   235: 	logerror("Read from unknown protection? port %02x ( selector = %02x )\n", offset, prot_mode_sel );
   236: 
   237: 	return prot_mem[offset];
   238: }
   239: 
   240: static WRITE_HANDLER( spunchout_prot_w ) {
   241: 
   242: 	switch ( offset ) {
   243: 		case 0x00:
   244: 			if ( prot_mode_sel == 0x0a ) {
   245: 				cpu_writemem16(0xd012, data);
   246: 				return;
   247: 			}
   248: 
   249: 			if ( prot_mode_sel == 0x0b || prot_mode_sel == 0x23 ) {
   250: 				cpu_writemem16(0xd7c1, data);
   251: 				return;
   252: 			}
   253: 
   254: 			prot_mem[offset] = data;
   255: 			return;
   256: 		break;
   257: 
   258: 		case 0x02:
   259: 			if ( prot_mode_sel == 0x09 ) { /* PC = 0x20f7, 0x22d7 */
   260: 				prot_mem[offset] = data;
   261: 				return;
   262: 			}
   263: 		break;
   264: 
   265: 		case 0x03:
   266: 			if ( prot_mode_sel == 0x09 ) { /* PC = 0x1e4c */
   267: 				prot_mem[offset] = data;
   268: 				return;
   269: 			}
   270: 		break;
   271: 
   272: 		case 0x05:
   273: 			prot_mem[offset] = data;
   274: 			return;
   275: 
   276: 		case 0x06:
   277: 			if ( prot_mode_sel == 0x09 ) { /* PC = 0x2287 */
   278: 				prot_mem[offset] = data;
   279: 				return;
   280: 			}
   281: 		break;
   282: 
   283: 		case 0x0b:
   284: 			prot_mem[offset] = data;
   285: 			return;
   286: 
   287: 		case 0x0d: /* PC = all over the code */
   288: 			prot_mode_sel = data;
   289: 			return;
   290: 		case 0x0f:
   291: 			prot_mem[offset] = data;
   292: 			return;
   293: 	}
   294: 
   295: 	logerror("Wrote to unknown protection? port %02x ( %02x )\n", offset, data );
   296: 
   297: 	prot_mem[offset] = data;
   298: }
   299: 
   300: static READ_HANDLER( spunchout_prot_0_r ) {
   301: 	return spunchout_prot_r( 0 );
   302: }
   303: 
   304: static WRITE_HANDLER( spunchout_prot_0_w ) {
   305: 	spunchout_prot_w( 0, data );
   306: }
   307: 
   308: static READ_HANDLER( spunchout_prot_1_r ) {
   309: 	return spunchout_prot_r( 1 );
   310: }
   311: 
   312: static WRITE_HANDLER( spunchout_prot_1_w ) {
   313: 	spunchout_prot_w( 1, data );
   314: }
   315: 
   316: static READ_HANDLER( spunchout_prot_2_r ) {
   317: 	return spunchout_prot_r( 2 );
   318: }
   319: 
   320: static WRITE_HANDLER( spunchout_prot_2_w ) {
   321: 	spunchout_prot_w( 2, data );
   322: }
   323: 
   324: static READ_HANDLER( spunchout_prot_3_r ) {
   325: 	return spunchout_prot_r( 3 );
   326: }
   327: 
   328: static WRITE_HANDLER( spunchout_prot_3_w ) {
   329: 	spunchout_prot_w( 3, data );
   330: }
   331: 
   332: static READ_HANDLER( spunchout_prot_5_r ) {
   333: 	return spunchout_prot_r( 5 );
   334: }
   335: 
   336: static WRITE_HANDLER( spunchout_prot_5_w ) {
   337: 	spunchout_prot_w( 5, data );
   338: }
   339: 
   340: 
   341: static READ_HANDLER( spunchout_prot_6_r ) {
   342: 	return spunchout_prot_r( 6 );
   343: }
   344: 
   345: static WRITE_HANDLER( spunchout_prot_6_w ) {
   346: 	spunchout_prot_w( 6, data );
   347: }
   348: 
   349: static READ_HANDLER( spunchout_prot_9_r ) {
   350: 	return spunchout_prot_r( 9 );
   351: }
   352: 
   353: static READ_HANDLER( spunchout_prot_b_r ) {
   354: 	return spunchout_prot_r( 11 );
   355: }
   356: 
   357: static WRITE_HANDLER( spunchout_prot_b_w ) {
   358: 	spunchout_prot_w( 11, data );
   359: }
   360: 
   361: static READ_HANDLER( spunchout_prot_c_r ) {
   362: 	return spunchout_prot_r( 12 );
   363: }
   364: 
   365: static WRITE_HANDLER( spunchout_prot_d_w ) {
   366: 	spunchout_prot_w( 13, data );
   367: }
   368: 
   369: static READ_HANDLER( spunchout_prot_a_r ) {
   370: 	return spunchout_prot_r( 10 );
   371: }
   372: 
   373: static WRITE_HANDLER( spunchout_prot_a_w ) {
   374: 	spunchout_prot_w( 10, data );
   375: }
   376: 
   377: #if 0 
   378: static READ_HANDLER( spunchout_prot_f_r ) {
   379: 	return spunchout_prot_r( 15 );
   380: }
   381: #endif 
   382: 
   383: static WRITE_HANDLER( spunchout_prot_f_w ) {
   384: 	spunchout_prot_w( 15, data );
   385: }
   386: 
   387: 
   388: 
   389: static MEMORY_READ_START( readmem )
   390: 	{ 0x0000, 0xbfff, MRA_ROM },
   391: 	{ 0xc000, 0xc3ff, MRA_RAM },
   392: 	{ 0xd000, 0xffff, MRA_RAM },
   393: MEMORY_END
   394: 
   395: static MEMORY_WRITE_START( writemem )
   396: 	{ 0x0000, 0xbfff, MWA_ROM },
   397: 	{ 0xc000, 0xc3ff, MWA_RAM, &generic_nvram, &generic_nvram_size },
   398: 	{ 0xd000, 0xd7ff, MWA_RAM },
   399: 	{ 0xdff0, 0xdff7, MWA_RAM, &punchout_bigsprite1 },
   400: 	{ 0xdff8, 0xdffc, MWA_RAM, &punchout_bigsprite2 },
   401: 	{ 0xdffd, 0xdffd, punchout_palettebank_w, &punchout_palettebank },
   402: 	{ 0xd800, 0xdfff, videoram_w, &videoram, &videoram_size },
   403: 	{ 0xe000, 0xe7ff, punchout_bigsprite1ram_w, &punchout_bigsprite1ram, &punchout_bigsprite1ram_size },
   404: 	{ 0xe800, 0xefff, punchout_bigsprite2ram_w, &punchout_bigsprite2ram, &punchout_bigsprite2ram_size },
   405: 	{ 0xf000, 0xf03f, MWA_RAM, &punchout_scroll },
   406: 	{ 0xf000, 0xffff, punchout_videoram2_w, &punchout_videoram2, &punchout_videoram2_size },
   407: MEMORY_END
   408: 
   409: static PORT_READ_START( readport )
   410: 	{ 0x00, 0x00, input_port_0_r },
   411: 	{ 0x01, 0x01, input_port_1_r },
   412: 	{ 0x02, 0x02, input_port_2_r },
   413: 	{ 0x03, 0x03, punchout_input_3_r },
   414: 
   415: 	/* protection ports */
   416: 	{ 0x07, 0x07, spunchout_prot_0_r },
   417: 	{ 0x17, 0x17, spunchout_prot_1_r },
   418: 	{ 0x27, 0x27, spunchout_prot_2_r },
   419: 	{ 0x37, 0x37, spunchout_prot_3_r },
   420: 	{ 0x57, 0x57, spunchout_prot_5_r },
   421: 	{ 0x67, 0x67, spunchout_prot_6_r },
   422: 	{ 0x97, 0x97, spunchout_prot_9_r },
   423: 	{ 0xa7, 0xa7, spunchout_prot_a_r },
   424: 	{ 0xb7, 0xb7, spunchout_prot_b_r },
   425: 	{ 0xc7, 0xc7, spunchout_prot_c_r },
   426: 	/* { 0xf7, 0xf7, spunchout_prot_f_r }, */
   427: PORT_END
   428: 
   429: static PORT_WRITE_START( writeport )
   430: 	{ 0x00, 0x01, IOWP_NOP },	/* the 2A03 #1 is not present */
   431: 	{ 0x02, 0x02, soundlatch_w },
   432: 	{ 0x03, 0x03, soundlatch2_w },
   433: 	{ 0x04, 0x04, VLM5030_data_w },	/* VLM5030 */
   434: 	{ 0x05, 0x05, IOWP_NOP },	/* unused */
   435: 	{ 0x08, 0x08, interrupt_enable_w },
   436: 	{ 0x09, 0x09, IOWP_NOP },	/* watchdog reset, seldom used because 08 clears the watchdog as well */
   437: 	{ 0x0a, 0x0a, IOWP_NOP },	/* ?? */
   438: 	{ 0x0b, 0x0b, punchout_2a03_reset_w },
   439: 	{ 0x0c, 0x0c, punchout_speech_reset_w },	/* VLM5030 */
   440: 	{ 0x0d, 0x0d, punchout_speech_st_w    },	/* VLM5030 */
   441: 	{ 0x0e, 0x0e, punchout_speech_vcu_w   },	/* VLM5030 */
   442: 	{ 0x0f, 0x0f, IOWP_NOP },	/* enable NVRAM ? */
   443: 
   444: 	{ 0x06, 0x06, IOWP_NOP},
   445: 
   446: 	/* protection ports */
   447: 	{ 0x07, 0x07, spunchout_prot_0_w },
   448: 	{ 0x17, 0x17, spunchout_prot_1_w },
   449: 	{ 0x27, 0x27, spunchout_prot_2_w },
   450: 	{ 0x37, 0x37, spunchout_prot_3_w },
   451: 	{ 0x57, 0x57, spunchout_prot_5_w },
   452: 	{ 0x67, 0x67, spunchout_prot_6_w },
   453: 	{ 0xa7, 0xa7, spunchout_prot_a_w },
   454: 	{ 0xb7, 0xb7, spunchout_prot_b_w },
   455: 	{ 0xd7, 0xd7, spunchout_prot_d_w },
   456: 	{ 0xf7, 0xf7, spunchout_prot_f_w },
   457: PORT_END
   458: 
   459: static MEMORY_READ_START( sound_readmem )
   460: 	{ 0x0000, 0x07ff, MRA_RAM },
   461: 	{ 0x4016, 0x4016, soundlatch_r },
   462: 	{ 0x4017, 0x4017, soundlatch2_r },
   463: 	{ 0x4000, 0x4017, NESPSG_0_r },
   464: 	{ 0xe000, 0xffff, MRA_ROM },
   465: MEMORY_END
   466: 
   467: static MEMORY_WRITE_START( sound_writemem )
   468: 	{ 0x0000, 0x07ff, MWA_RAM },
   469: 	{ 0x4000, 0x4017, NESPSG_0_w },
   470: 	{ 0xe000, 0xffff, MWA_ROM },
   471: MEMORY_END
   472: 
   473: 
   474: 
   475: INPUT_PORTS_START( punchout )
   476: 	PORT_START	/* IN0 */
   477: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
   478: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   479: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 )
   480: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 )
   481: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   482: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   483: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   484: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   485: 
   486: 	PORT_START	/* IN1 */
   487: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
   488: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY )
   489: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY )
   490: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY )
   491: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   492: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   493: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN2 )
   494: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
   495: 
   496: 	PORT_START	/* DSW0 */
   497: 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
   498: 	PORT_DIPSETTING(    0x00, "Easy" )
   499: 	PORT_DIPSETTING(    0x01, "Medium" )
   500: 	PORT_DIPSETTING(    0x02, "Hard" )
   501: 	PORT_DIPSETTING(    0x03, "Hardest" )
   502: 	PORT_DIPNAME( 0x0c, 0x00, "Time" )
   503: 	PORT_DIPSETTING(    0x00, "Longest" )
   504: 	PORT_DIPSETTING(    0x04, "Long" )
   505: 	PORT_DIPSETTING(    0x08, "Short" )
   506: 	PORT_DIPSETTING(    0x0c, "Shortest" )
   507: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
   508: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   509: 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
   510: 	PORT_DIPNAME( 0x20, 0x00, "Rematch at a Discount" )
   511: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   512: 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
   513: 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
   514: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   515: 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
   516: 	PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
   517: 
   518: 	PORT_START	/* DSW1 */
   519: 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coinage ) )
   520: 	PORT_DIPSETTING(    0x0e, DEF_STR( 5C_1C ) )
   521: 	PORT_DIPSETTING(    0x0b, DEF_STR( 4C_1C ) )
   522: 	PORT_DIPSETTING(    0x0c, DEF_STR( 3C_1C ) )
   523: 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
   524: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   525: //	PORT_DIPSETTING(    0x03, DEF_STR( 1C_1C ) )
   526: 	PORT_DIPSETTING(    0x08, "1 Coin/2 Credits (2 Credits/1 Play)" )
   527: 	PORT_DIPSETTING(    0x0d, "1 Coin/3 Credits (2 Credits/1 Play)" )
   528: 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
   529: //	PORT_DIPSETTING(    0x04, DEF_STR( 1C_2C ) )
   530: //	PORT_DIPSETTING(    0x09, DEF_STR( 1C_2C ) )
   531: 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
   532: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_4C ) )
   533: 	PORT_DIPSETTING(    0x0a, DEF_STR( 1C_5C ) )
   534: 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_6C ) )
   535: 	PORT_DIPSETTING(    0x0f, DEF_STR( Free_Play ) )
   536: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* VLM5030 busy signal */
   537: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
   538: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
   539: 	PORT_DIPNAME( 0x80, 0x00, "Copyright" )
   540: 	PORT_DIPSETTING(    0x00, "Nintendo" )
   541: 	PORT_DIPSETTING(    0x80, "Nintendo of America" )
   542: 	PORT_START
   543: INPUT_PORTS_END
   544: 
   545: /* same as punchout with additional duck button */
   546: INPUT_PORTS_START( spnchout )
   547: 	PORT_START	/* IN0 */
   548: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON1 )
   549: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   550: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON2 )
   551: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_BUTTON3 )
   552: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   553: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   554: 	PORT_BIT( 0x40, IP_ACTIVE_LOW,  IPT_BUTTON4 )
   555: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   556: 
   557: 	PORT_START	/* IN1 */
   558: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
   559: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT  | IPF_4WAY )
   560: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP    | IPF_4WAY )
   561: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN  | IPF_4WAY )
   562: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   563: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   564: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN2 )
   565: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
   566: 
   567: 	PORT_START	/* DSW0 */
   568: 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
   569: 	PORT_DIPSETTING(    0x00, "Easy" )
   570: 	PORT_DIPSETTING(    0x01, "Medium" )
   571: 	PORT_DIPSETTING(    0x02, "Hard" )
   572: 	PORT_DIPSETTING(    0x03, "Hardest" )
   573: 	PORT_DIPNAME( 0x0c, 0x00, "Time" )
   574: 	PORT_DIPSETTING(    0x00, "Longest" )
   575: 	PORT_DIPSETTING(    0x04, "Long" )
   576: 	PORT_DIPSETTING(    0x08, "Short" )
   577: 	PORT_DIPSETTING(    0x0c, "Shortest" )
   578: 	PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) )
   579: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   580: 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
   581: 	PORT_DIPNAME( 0x20, 0x00, "Rematch at a Discount" )
   582: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   583: 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
   584: 	PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )
   585: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   586: 	PORT_DIPSETTING(    0x40, DEF_STR( On ) )
   587: 	PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
   588: 
   589: 	PORT_START	/* DSW1 */
   590: 	PORT_DIPNAME( 0x0f, 0x00, DEF_STR( Coinage ) )
   591: 	PORT_DIPSETTING(    0x08, DEF_STR( 6C_1C ) )
   592: 	PORT_DIPSETTING(    0x04, DEF_STR( 5C_1C ) )
   593: 	PORT_DIPSETTING(    0x03, DEF_STR( 4C_1C ) )
   594: //	PORT_DIPSETTING(    0x09, DEF_STR( 4C_1C ) )
   595: 	PORT_DIPSETTING(    0x0c, DEF_STR( 3C_1C ) )
   596: 	PORT_DIPSETTING(    0x01, DEF_STR( 2C_1C ) )
   597: 	PORT_DIPSETTING(    0x00, DEF_STR( 1C_1C ) )
   598: //	PORT_DIPSETTING(    0x0e, DEF_STR( 1C_1C ) )
   599: 	PORT_DIPSETTING(    0x0d, "1 Coin/3 Credits (2 Credits/1 Play)" )
   600: 	PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
   601: 	PORT_DIPSETTING(    0x0b, "1 Coin/2 Credits (3 Credits/1 Play)" )
   602: 	PORT_DIPSETTING(    0x05, DEF_STR( 1C_3C ) )
   603: 	PORT_DIPSETTING(    0x06, DEF_STR( 1C_4C ) )
   604: 	PORT_DIPSETTING(    0x0a, DEF_STR( 1C_5C ) )
   605: 	PORT_DIPSETTING(    0x07, DEF_STR( 1C_6C ) )
   606: 	PORT_DIPSETTING(    0x0f, DEF_STR( Free_Play ) )
   607: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* VLM5030 busy signal */
   608: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
   609: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
   610: 	PORT_DIPNAME( 0x80, 0x00, "Copyright" )
   611: 	PORT_DIPSETTING(    0x00, "Nintendo" )
   612: 	PORT_DIPSETTING(    0x80, "Nintendo of America" )
   613: 	PORT_START
   614: INPUT_PORTS_END
   615: 
   616: INPUT_PORTS_START( armwrest )
   617: 	PORT_START	/* IN0 */
   618: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   619: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   620: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   621: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   622: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   623: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 )
   624: 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP | IPF_4WAY )
   625: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   626: 
   627: 	PORT_START	/* IN1 */
   628: 	PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_4WAY )
   629: 	PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_4WAY )
   630: 	PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   631: 	PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   632: 	PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
   633: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN2 )
   634: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_SERVICE1 )
   635: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_COIN1 )
   636: 
   637: 	PORT_START	/* DSW0 */
   638: 	PORT_DIPNAME( 0x03, 0x00, DEF_STR( Difficulty ) )
   639: 	PORT_DIPSETTING(    0x00, "Easy" )
   640: 	PORT_DIPSETTING(    0x01, "Medium" )
   641: 	PORT_DIPSETTING(    0x02, "Hard" )
   642: 	PORT_DIPSETTING(    0x03, "Hardest" )
   643: 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
   644: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   645: 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
   646: 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
   647: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   648: 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
   649: 	PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) )
   650: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   651: 	PORT_DIPSETTING(    0x10, DEF_STR( On ) )
   652: 	PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) )
   653: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   654: 	PORT_DIPSETTING(    0x20, DEF_STR( On ) )
   655: 	PORT_DIPNAME( 0x40, 0x00, "Rematches" )
   656: 	PORT_DIPSETTING(    0x40, "3" )
   657: 	PORT_DIPSETTING(    0x00, "7" )
   658: 	PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
   659: 
   660: 	PORT_START	/* DSW1 */
   661: 	PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) )
   662: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   663: 	PORT_DIPSETTING(    0x01, DEF_STR( On ) )
   664: 	PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) )
   665: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   666: 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
   667: 	PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) )
   668: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   669: 	PORT_DIPSETTING(    0x04, DEF_STR( On ) )
   670: 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) )
   671: 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
   672: 	PORT_DIPSETTING(    0x08, DEF_STR( On ) )
   673: 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* VLM5030 busy signal */
   674: 	PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
   675: 	PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
   676: 	PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
   677: INPUT_PORTS_END
   678: 
   679: 
   680: static struct GfxLayout charlayout =
   681: {
   682: 	8,8,	/* 8*8 characters */
   683: 	1024,	/* 1024 characters */
   684: 	2,	/* 2 bits per pixel */
   685: 	{ 1024*8*8, 0 },	/* the bitplanes are separated */
   686: 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
   687: 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
   688: 	8*8	/* every char takes 8 consecutive bytes */
   689: };
   690: 
   691: static struct GfxLayout armwrest_charlayout =
   692: {
   693: 	8,8,	/* 8*8 characters */
   694: 	2048,	/* 2048 characters */
   695: 	2,	/* 2 bits per pixel */
   696: 	{ 2048*8*8, 0 },	/* the bitplanes are separated */
   697: 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
   698: 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
   699: 	8*8	/* every char takes 8 consecutive bytes */
   700: };
   701: 
   702: static struct GfxLayout armwrest_charlayout2 =
   703: {
   704: 	8,8,	/* 8*8 characters */
   705: 	2048,	/* 2048 characters */
   706: 	3,	/* 3 bits per pixel */
   707: 	{ 2*2048*8*8, 2048*8*8, 0 },	/* the bitplanes are separated */
   708: 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
   709: 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
   710: 	8*8	/* every char takes 8 consecutive bytes */
   711: };
   712: 
   713: static struct GfxLayout charlayout1 =
   714: {
   715: 	8,8,	/* 8*8 characters */
   716: 	8192,	/* 8192 characters */
   717: 	3,	/* 3 bits per pixel */
   718: 	{ 2*8192*8*8, 8192*8*8, 0 },	/* the bitplanes are separated */
   719: 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
   720: 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
   721: 	8*8	/* every char takes 8 consecutive bytes */
   722: };
   723: 
   724: static struct GfxLayout charlayout2 =
   725: {
   726: 	8,8,	/* 8*8 characters */
   727: 	4096,	/* 4096 characters */
   728: 	2,	/* 2 bits per pixel */
   729: 	{ 4096*8*8, 0 },	/* the bitplanes are separated */
   730: 	{ 0, 1, 2, 3, 4, 5, 6, 7 },
   731: 	{ 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
   732: 	8*8	/* every char takes 8 consecutive bytes */
   733: };
   734: 
   735: static struct GfxDecodeInfo punchout_gfxdecodeinfo[] =
   736: {
   737: 	{ REGION_GFX1, 0, &charlayout,                 0, 128 },
   738: 	{ REGION_GFX2, 0, &charlayout,             128*4, 128 },
   739: 	{ REGION_GFX3, 0, &charlayout1,      128*4+128*4,  64 },
   740: 	{ REGION_GFX4, 0, &charlayout2, 128*4+128*4+64*8, 128 },
   741: 	{ -1 } /* end of array */
   742: };
   743: 
   744: static struct GfxDecodeInfo armwrest_gfxdecodeinfo[] =
   745: {
   746: 	{ REGION_GFX1, 0, &armwrest_charlayout,        0, 256 },
   747: 	{ REGION_GFX2, 0, &armwrest_charlayout2,   256*4,  64 },
   748: 	{ REGION_GFX3, 0, &charlayout1,       256*4+64*8,  64 },
   749: 	{ REGION_GFX4, 0, &charlayout2,  256*4+64*8+64*8, 128 },
   750: 	{ -1 } /* end of array */
   751: };
   752: 
   753: 
   754: 
   755: static struct NESinterface nes_interface =
   756: {
   757: 	1,
   758: 	{ REGION_CPU2 },
   759: 	{ 50 },
   760: };
   761: 
   762: 
   763: static struct VLM5030interface vlm5030_interface =
   764: {
   765: 	3580000,    /* master clock */
   766: 	50,        /* volume       */
   767: 	REGION_SOUND1,	/* memory region of speech rom */
   768: 	0           /* memory size of speech rom */
   769: };
   770: 
   771: 
   772: 
   773: static MACHINE_DRIVER_START( punchout )
   774: 
   775: 	/* basic machine hardware */
   776: 	MDRV_CPU_ADD(Z80, 8000000/2)	/* 4 MHz */
   777: 	MDRV_CPU_MEMORY(readmem,writemem)
   778: 	MDRV_CPU_PORTS(readport,writeport)
   779: 	MDRV_CPU_VBLANK_INT(nmi_line_pulse,1)
   780: 
   781: 	MDRV_CPU_ADD(N2A03, N2A03_DEFAULTCLOCK)
   782: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
   783: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   784: 	MDRV_CPU_VBLANK_INT(nmi_line_pulse,1)
   785: 
   786: 	MDRV_FRAMES_PER_SECOND(60)
   787: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   788: 
   789: 	MDRV_NVRAM_HANDLER(generic_0fill)
   790: 
   791: 	/* video hardware */
   792: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_DUAL_MONITOR)
   793: 	MDRV_ASPECT_RATIO(4,6)
   794: 	MDRV_SCREEN_SIZE(32*8, 28*8*2)
   795: 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 0*8, 28*8*2-1)
   796: 	MDRV_GFXDECODE(punchout_gfxdecodeinfo)
   797: 	MDRV_PALETTE_LENGTH(1024+1)
   798: 	MDRV_COLORTABLE_LENGTH(128*4+128*4+64*8+128*4)
   799: 
   800: 	MDRV_PALETTE_INIT(punchout)
   801: 	MDRV_VIDEO_START(punchout)
   802: 	MDRV_VIDEO_UPDATE(punchout)
   803: 
   804: 	/* sound hardware */
   805: 	MDRV_SOUND_ADD(NES, nes_interface)
   806: 	MDRV_SOUND_ADD(VLM5030, vlm5030_interface)
   807: MACHINE_DRIVER_END
   808: 
   809: 
   810: static MACHINE_DRIVER_START( armwrest )
   811: 
   812: 	/* basic machine hardware */
   813: 	MDRV_IMPORT_FROM(punchout)
   814: 
   815: 	/* video hardware */
   816: 	MDRV_GFXDECODE(armwrest_gfxdecodeinfo)
   817: 	MDRV_COLORTABLE_LENGTH(256*4+64*8+64*8+128*4)
   818: 
   819: 	MDRV_PALETTE_INIT(armwrest)
   820: 	MDRV_VIDEO_START(armwrest)
   821: 	MDRV_VIDEO_UPDATE(armwrest)
   822: MACHINE_DRIVER_END
   823: 
   824: 
   825: 
   826: /***************************************************************************
   827: 
   828:   Game driver(s)
   829: 
   830: ***************************************************************************/
   831: 
   832: ROM_START( punchout )
   833: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
   834: 	ROM_LOAD( "chp1-c.8l",    0x0000, 0x2000, CRC(a4003adc) SHA1(a8026eb39aa883993a0c9cb4400bf1a7e5898a2b) )
   835: 	ROM_LOAD( "chp1-c.8k",    0x2000, 0x2000, CRC(745ecf40) SHA1(430f80b688a515953fab177a3ec2eb31c886df22) )
   836: 	ROM_LOAD( "chp1-c.8j",    0x4000, 0x2000, CRC(7a7f870e) SHA1(76bb9f3ef0a2fd514db63fb77f35bde12c15c29c) )
   837: 	ROM_LOAD( "chp1-c.8h",    0x6000, 0x2000, CRC(5d8123d7) SHA1(04ddfcde969db93ff31e9c8a2af4dde285b82e2e) )
   838: 	ROM_LOAD( "chp1-c.8f",    0x8000, 0x4000, CRC(c8a55ddb) SHA1(f91fb368542c50969a086f01a2e70ecce7f2697b) )
   839: 
   840: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the sound CPU */
   841: 	ROM_LOAD( "chp1-c.4k",    0xe000, 0x2000, CRC(cb6ef376) SHA1(503dbcc1b18a497311bf129689d5650860bf96c7) )
   842: 
   843: 	ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
   844: 	ROM_LOAD( "chp1-b.4c",    0x00000, 0x2000, CRC(e26dc8b3) SHA1(a704d39ef6f5cbad64a478e5c109b18aae427cbc) )	/* chars #1 */
   845: 	ROM_LOAD( "chp1-b.4d",    0x02000, 0x2000, CRC(dd1310ca) SHA1(918d2eda000244b692f1da7ac57d7a0edaef95fb) )
   846: 
   847: 	ROM_REGION( 0x04000, REGION_GFX2, ROMREGION_DISPOSE )
   848: 	ROM_LOAD( "chp1-b.4a",    0x00000, 0x2000, CRC(20fb4829) SHA1(9f0ce9379eb31c19bfacdc514ac6a28aa4217cbb) )	/* chars #2 */
   849: 	ROM_LOAD( "chp1-b.4b",    0x02000, 0x2000, CRC(edc34594) SHA1(fbb4a8b979d60b183dc23bdbb7425100b9325287) )
   850: 
   851: 	ROM_REGION( 0x30000, REGION_GFX3, ROMREGION_DISPOSE )
   852: 	ROM_LOAD( "chp1-v.2r",    0x00000, 0x4000, CRC(bd1d4b2e) SHA1(492ae301a9890c2603d564c9048b1b67895052dd) )	/* chars #3 */
   853: 	ROM_LOAD( "chp1-v.2t",    0x04000, 0x4000, CRC(dd9a688a) SHA1(fbb98eebfbaab445928da939846a2d07a8046afb) )
   854: 	ROM_LOAD( "chp1-v.2u",    0x08000, 0x2000, CRC(da6a3c4b) SHA1(e03469fb6f552f41a9b7f4b3e51c15a52b61cf84) )
   855: 	/* 0a000-0bfff empty (space for 16k ROM) */
   856: 	ROM_LOAD( "chp1-v.2v",    0x0c000, 0x2000, CRC(8c734a67) SHA1(d59b5a2517e4890e7ca7da52ca2813a6abc484a3) )
   857: 	/* 0e000-0ffff empty (space for 16k ROM) */
   858: 	ROM_LOAD( "chp1-v.3r",    0x10000, 0x4000, CRC(2e74ad1d) SHA1(538b3f9273699106a50887c927f0251537bf0f42) )
   859: 	ROM_LOAD( "chp1-v.3t",    0x14000, 0x4000, CRC(630ba9fb) SHA1(36cec8658597239385cada3bc947b940ab66954b) )
   860: 	ROM_LOAD( "chp1-v.3u",    0x18000, 0x2000, CRC(6440321d) SHA1(c8c084ad408cb6bf65959ed4db03c4b4cf9b1c1a) )
   861: 	/* 1a000-1bfff empty (space for 16k ROM) */
   862: 	ROM_LOAD( "chp1-v.3v",    0x1c000, 0x2000, CRC(bb7b7198) SHA1(64572668d30e008daf4ccaa5689518ecc41f1091) )
   863: 	/* 1e000-1ffff empty (space for 16k ROM) */
   864: 	ROM_LOAD( "chp1-v.4r",    0x20000, 0x4000, CRC(4e5b0fe9) SHA1(c5c4fb735cc232b43c49442e62af0ebe99eaab0c) )
   865: 	ROM_LOAD( "chp1-v.4t",    0x24000, 0x4000, CRC(37ffc940) SHA1(d555807a6a1025c81637c5db0184b48306aa01ac) )
   866: 	ROM_LOAD( "chp1-v.4u",    0x28000, 0x2000, CRC(1a7521d4) SHA1(4e8a8298f2ff8257d2058e5133ad295f92c7deb8) )
   867: 	/* 2a000-2bfff empty (space for 16k ROM) */
   868: 	/* 2c000-2ffff empty (4v doesn't exist, it is seen as a 0xff fill) */
   869: 
   870: 	ROM_REGION( 0x10000, REGION_GFX4, ROMREGION_DISPOSE )
   871: 	ROM_LOAD( "chp1-v.6p",    0x00000, 0x2000, CRC(16588f7a) SHA1(1aeaaa5cc2477c3aa4bf80df7d9474cc9ded9f15) )	/* chars #4 */
   872: 	ROM_LOAD( "chp1-v.6n",    0x02000, 0x2000, CRC(dc743674) SHA1(660582c76ee68a7267d5686a2f8ea0fd6c2b25fc) )
   873: 	/* 04000-07fff empty (space for 6l and 6k) */
   874: 	ROM_LOAD( "chp1-v.8p",    0x08000, 0x2000, CRC(c2db5b4e) SHA1(39d009af597fa28d34af31aec111aa6fe09fea39) )
   875: 	ROM_LOAD( "chp1-v.8n",    0x0a000, 0x2000, CRC(e6af390e) SHA1(73984cbdc8fbf667126ada63ab9500609eb25c61) )
   876: 	/* 0c000-0ffff empty (space for 8l and 8k) */
   877: 
   878: 	ROM_REGION( 0x0d00, REGION_PROMS, 0 )
   879: 	ROM_LOAD( "chp1-b.6e",    0x0000, 0x0200, CRC(e9ca3ac6) SHA1(68d9739d8a0dadc6fe3b3767437526096ca5db98) )	/* red component */
   880: 	ROM_LOAD( "chp1-b.7e",    0x0200, 0x0200, CRC(47adf7a2) SHA1(1d37d5207cd37a9c122251c60cc8f43dd680f484) )	/* red component */
   881: 	ROM_LOAD( "chp1-b.6f",    0x0400, 0x0200, CRC(02be56ab) SHA1(a88f332cb26928350ed20ab5f4c04d5324bb516a) )	/* green component */
   882: 	ROM_LOAD( "chp1-b.8e",    0x0600, 0x0200, CRC(b0fc15a8) SHA1(a1af09cfea81231240bd94f3b98de1be8235ebe7) )	/* green component */
   883: 	ROM_LOAD( "chp1-b.7f",    0x0800, 0x0200, CRC(11de55f1) SHA1(269b82f4bc73fac197e0bb6d9a90a220e77ce478) )	/* blue component */
   884: 	ROM_LOAD( "chp1-b.8f",    0x0a00, 0x0200, CRC(1ffd894a) SHA1(9e8c1c28b4c12acf42f814bc109d353729a25652) )	/* blue component */
   885: 	ROM_LOAD( "chp1-v.2d",    0x0c00, 0x0100, CRC(71dc0d48) SHA1(dd6609f547d74887f520d7e71a1a00317ff181d0) )	/* timing - not used */
   886: 
   887: 	ROM_REGION( 0x4000, REGION_SOUND1, 0 )	/* 16k for the VLM5030 data */
   888: 	ROM_LOAD( "chp1-c.6p",    0x0000, 0x4000, CRC(ea0bbb31) SHA1(b1da024cb688341d39791a78d1144fe09acb00cf) )
   889: ROM_END
   890: 
   891: ROM_START( spnchout )
   892: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
   893: 	ROM_LOAD( "chs1-c.8l",    0x0000, 0x2000, CRC(703b9780) SHA1(93b2fd8392ef094413330cd2474ac406c3db426e) )
   894: 	ROM_LOAD( "chs1-c.8k",    0x2000, 0x2000, CRC(e13719f6) SHA1(d0f08a0999801dd5d55f2f4ae3e76f25b765b8d6) )
   895: 	ROM_LOAD( "chs1-c.8j",    0x4000, 0x2000, CRC(1fa629e8) SHA1(e0c37883e65c77e9f25e323fb4dc05f7dcdc6347) )
   896: 	ROM_LOAD( "chs1-c.8h",    0x6000, 0x2000, CRC(15a6c068) SHA1(3f42697a6d79c6fd4b638feb366c80e98a7f02e2) )
   897: 	ROM_LOAD( "chs1-c.8f",    0x8000, 0x4000, CRC(4ff3cdd9) SHA1(282edf9a3fa085bc82523249a519f2a3fe04e87e) )
   898: 
   899: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the sound CPU */
   900: 	ROM_LOAD( "chp1-c.4k",    0xe000, 0x2000, CRC(cb6ef376) SHA1(503dbcc1b18a497311bf129689d5650860bf96c7) )
   901: 
   902: 	ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
   903: 	ROM_LOAD( "chs1-b.4c",    0x00000, 0x0800, CRC(9f2ede2d) SHA1(58a0f8c34ff9ec425c846c1eb6c6ccd99c2d0132) )	/* chars #1 */
   904: 	ROM_CONTINUE(             0x01000, 0x0800 )
   905: 	ROM_CONTINUE(             0x00800, 0x0800 )
   906: 	ROM_CONTINUE(             0x01800, 0x0800 )
   907: 	ROM_LOAD( "chs1-b.4d",    0x02000, 0x0800, CRC(143ae5c6) SHA1(4c8426ba336941ac3341b1dd65c0d68b9aae56de) )
   908: 	ROM_CONTINUE(             0x03000, 0x0800 )
   909: 	ROM_CONTINUE(             0x02800, 0x0800 )
   910: 	ROM_CONTINUE(             0x03800, 0x0800 )
   911: 
   912: 	ROM_REGION( 0x04000, REGION_GFX2, ROMREGION_DISPOSE )
   913: 	ROM_LOAD( "chp1-b.4a",    0x00000, 0x0800, CRC(c075f831) SHA1(f22d9e415637599420c443ce08e7e70d1eb1c6f5) )	/* chars #2 */
   914: 	ROM_CONTINUE(             0x01000, 0x0800 )
   915: 	ROM_CONTINUE(             0x00800, 0x0800 )
   916: 	ROM_CONTINUE(             0x01800, 0x0800 )
   917: 	ROM_LOAD( "chp1-b.4b",    0x02000, 0x0800, CRC(c4cc2b5a) SHA1(7b9d4dcecc67271980c3c44561fc25a6f6c93ee3) )
   918: 	ROM_CONTINUE(             0x03000, 0x0800 )
   919: 	ROM_CONTINUE(             0x02800, 0x0800 )
   920: 	ROM_CONTINUE(             0x03800, 0x0800 )
   921: 
   922: 	ROM_REGION( 0x30000, REGION_GFX3, ROMREGION_DISPOSE )
   923: 	ROM_LOAD( "chs1-v.2r",    0x00000, 0x4000, CRC(ff33405d) SHA1(31b892d184d24a0ec05fd6facec61a532ce8535b) )	/* chars #3 */
   924: 	ROM_LOAD( "chs1-v.2t",    0x04000, 0x4000, CRC(f507818b) SHA1(fb99c5c88e829d7e81c53ead21554a614b6fdcf9) )
   925: 	ROM_LOAD( "chs1-v.2u",    0x08000, 0x4000, CRC(0995fc95) SHA1(d056fc61ad2409525622b4db69796668c3145460) )
   926: 	ROM_LOAD( "chs1-v.2v",    0x0c000, 0x2000, CRC(f44d9878) SHA1(327a8bbc8f1a33fcf95ebc75db97406feb6435d9) )
   927: 	/* 0e000-0ffff empty (space for 16k ROM) */
   928: 	ROM_LOAD( "chs1-v.3r",    0x10000, 0x4000, CRC(09570945) SHA1(c3e2a8f76eebacc9042d087db2dfdc8ea267d46a) )
   929: 	ROM_LOAD( "chs1-v.3t",    0x14000, 0x4000, CRC(42c6861c) SHA1(2b160cde3cc3ee7adb276fe719f7919c9295ba38) )
   930: 	ROM_LOAD( "chs1-v.3u",    0x18000, 0x4000, CRC(bf5d02dd) SHA1(f1f4932fc258c087783450e7c964902fa45c4568) )
   931: 	ROM_LOAD( "chs1-v.3v",    0x1c000, 0x2000, CRC(5673f4fc) SHA1(682a81b60494b2c77d1da312c97bc807021eac67) )
   932: 	/* 1e000-1ffff empty (space for 16k ROM) */
   933: 	ROM_LOAD( "chs1-v.4r",    0x20000, 0x4000, CRC(8e155758) SHA1(d21ce2d81b2d47e5ff091e48cf46d41d01ea6314) )
   934: 	ROM_LOAD( "chs1-v.4t",    0x24000, 0x4000, CRC(b4e43448) SHA1(1ed6bf913c15851cf86554713c122b55c18c5d67) )
   935: 	ROM_LOAD( "chs1-v.4u",    0x28000, 0x4000, CRC(74e0d956) SHA1(b172cdcc5d26f3be06a7f0f9e19879957e87f992) )
   936: 	/* 2c000-2ffff empty (4v doesn't exist, it is seen as a 0xff fill) */
   937: 
   938: 	ROM_REGION( 0x10000, REGION_GFX4, ROMREGION_DISPOSE )
   939: 	ROM_LOAD( "chp1-v.6p",    0x00000, 0x0800, CRC(75be7aae) SHA1(396bc1d301b99e064de4dad699882618b1b9c958) )	/* chars #4 */
   940: 	ROM_CONTINUE(             0x01000, 0x0800 )
   941: 	ROM_CONTINUE(             0x00800, 0x0800 )
   942: 	ROM_CONTINUE(             0x01800, 0x0800 )
   943: 	ROM_LOAD( "chp1-v.6n",    0x02000, 0x0800, CRC(daf74de0) SHA1(9373d4527b675b3128a5a830f42e1dc5dcb85307) )
   944: 	ROM_CONTINUE(             0x03000, 0x0800 )
   945: 	ROM_CONTINUE(             0x02800, 0x0800 )
   946: 	ROM_CONTINUE(             0x03800, 0x0800 )
   947: 	/* 04000-07fff empty (space for 6l and 6k) */
   948: 	ROM_LOAD( "chp1-v.8p",    0x08000, 0x0800, CRC(4cb7ea82) SHA1(213b7c1431f4c92e5519a8771035bda28b3bab8a) )
   949: 	ROM_CONTINUE(             0x09000, 0x0800 )
   950: 	ROM_CONTINUE(             0x08800, 0x0800 )
   951: 	ROM_CONTINUE(             0x09800, 0x0800 )
   952: 	ROM_LOAD( "chp1-v.8n",    0x0a000, 0x0800, CRC(1c0d09aa) SHA1(3276bae7400453f3612f53d7b47fb199cbe53e6d) )
   953: 	ROM_CONTINUE(             0x0b000, 0x0800 )
   954: 	ROM_CONTINUE(             0x0a800, 0x0800 )
   955: 	ROM_CONTINUE(             0x0b800, 0x0800 )
   956: 	/* 0c000-0ffff empty (space for 8l and 8k) */
   957: 
   958: 	ROM_REGION( 0x0d00, REGION_PROMS, 0 )
   959: 	ROM_LOAD( "chs1-b.6e",    0x0000, 0x0200, CRC(0ad4d727) SHA1(5fa4247d58d10b4644f0a7492efb22b7a9ce7b62) )	/* red component */
   960: 	ROM_LOAD( "chs1-b.7e",    0x0200, 0x0200, CRC(9e170f64) SHA1(9548bfec2f5b7d222e91562b5459aef8c107b3ec) )	/* red component */
   961: 	ROM_LOAD( "chs1-b.6f",    0x0400, 0x0200, CRC(86f5cfdb) SHA1(a2a3a4e9ca15826fe8c86650d50c8ce203d57eae) )	/* green component */
   962: 	ROM_LOAD( "chs1-b.8e",    0x0600, 0x0200, CRC(3a2e333b) SHA1(5cf0324cc07ac4af63598c5c6acc61d24215b233) )	/* green component */
   963: 	ROM_LOAD( "chs1-b.7f",    0x0800, 0x0200, CRC(8bd406f8) SHA1(eaf0b62eccf1f47452bf983b3ffc6cacc25d4585) )	/* blue component */
   964: 	ROM_LOAD( "chs1-b.8f",    0x0a00, 0x0200, CRC(1663eed7) SHA1(90ff876a6b885f8a80c17531cde8b91864f1a6a5) )	/* blue component */
   965: 	ROM_LOAD( "chs1-v.2d",    0x0c00, 0x0100, CRC(71dc0d48) SHA1(dd6609f547d74887f520d7e71a1a00317ff181d0) )	/* timing - not used */
   966: 
   967: 	ROM_REGION( 0x10000, REGION_SOUND1, 0 )	/* 64k for the VLM5030 data */
   968: 	ROM_LOAD( "chs1-c.6p",    0x0000, 0x4000, CRC(ad8b64b8) SHA1(0f1232a10faf71b782f9f6653cca8570243c17e0) )
   969: ROM_END
   970: 
   971: ROM_START( spnchotj )
   972: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
   973: 	ROM_LOAD( "chs1c8la.bin", 0x0000, 0x2000, CRC(dc2a592b) SHA1(a8a7fc5c836e2723ba6abcb1137f4c4f79e21c87) )
   974: 	ROM_LOAD( "chs1c8ka.bin", 0x2000, 0x2000, CRC(ce687182) SHA1(f07d930d90eda199b089f9023b51fd4456c87bdf) )
   975: 	ROM_LOAD( "chs1-c.8j",    0x4000, 0x2000, CRC(1fa629e8) SHA1(e0c37883e65c77e9f25e323fb4dc05f7dcdc6347) )
   976: 	ROM_LOAD( "chs1-c.8h",    0x6000, 0x2000, CRC(15a6c068) SHA1(3f42697a6d79c6fd4b638feb366c80e98a7f02e2) )
   977: 	ROM_LOAD( "chs1c8fa.bin", 0x8000, 0x4000, CRC(f745b5d5) SHA1(8130b5be011848625ebe6691fbb76dc338979b60) )
   978: 
   979: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the sound CPU */
   980: 	ROM_LOAD( "chp1-c.4k",    0xe000, 0x2000, CRC(cb6ef376) SHA1(503dbcc1b18a497311bf129689d5650860bf96c7) )
   981: 
   982: 	ROM_REGION( 0x04000, REGION_GFX1, ROMREGION_DISPOSE )
   983: 	ROM_LOAD( "b_4c_01a.bin", 0x00000, 0x2000, CRC(b017e1e9) SHA1(39e98f48bff762a674a2506efa39b3619337a1e0) )	/* chars #1 */
   984: 	ROM_LOAD( "b_4d_01a.bin", 0x02000, 0x2000, CRC(e3de9d18) SHA1(f55b6f522e127e6239197dd7eb1564e6f275df74) )
   985: 
   986: 	ROM_REGION( 0x04000, REGION_GFX2, ROMREGION_DISPOSE )
   987: 	ROM_LOAD( "chp1-b.4a",    0x00000, 0x0800, CRC(c075f831) SHA1(f22d9e415637599420c443ce08e7e70d1eb1c6f5) )	/* chars #2 */
   988: 	ROM_CONTINUE(             0x01000, 0x0800 )
   989: 	ROM_CONTINUE(             0x00800, 0x0800 )
   990: 	ROM_CONTINUE(             0x01800, 0x0800 )
   991: 	ROM_LOAD( "chp1-b.4b",    0x02000, 0x0800, CRC(c4cc2b5a) SHA1(7b9d4dcecc67271980c3c44561fc25a6f6c93ee3) )
   992: 	ROM_CONTINUE(             0x03000, 0x0800 )
   993: 	ROM_CONTINUE(             0x02800, 0x0800 )
   994: 	ROM_CONTINUE(             0x03800, 0x0800 )
   995: 
   996: 	ROM_REGION( 0x30000, REGION_GFX3, ROMREGION_DISPOSE )
   997: 	ROM_LOAD( "chs1-v.2r",    0x00000, 0x4000, CRC(ff33405d) SHA1(31b892d184d24a0ec05fd6facec61a532ce8535b) )	/* chars #3 */
   998: 	ROM_LOAD( "chs1-v.2t",    0x04000, 0x4000, CRC(f507818b) SHA1(fb99c5c88e829d7e81c53ead21554a614b6fdcf9) )
   999: 	ROM_LOAD( "chs1-v.2u",    0x08000, 0x4000, CRC(0995fc95) SHA1(d056fc61ad2409525622b4db69796668c3145460) )
  1000: 	ROM_LOAD( "chs1-v.2v",    0x0c000, 0x2000, CRC(f44d9878) SHA1(327a8bbc8f1a33fcf95ebc75db97406feb6435d9) )
  1001: 	/* 0e000-0ffff empty (space for 16k ROM) */
  1002: 	ROM_LOAD( "chs1-v.3r",    0x10000, 0x4000, CRC(09570945) SHA1(c3e2a8f76eebacc9042d087db2dfdc8ea267d46a) )
  1003: 	ROM_LOAD( "chs1-v.3t",    0x14000, 0x4000, CRC(42c6861c) SHA1(2b160cde3cc3ee7adb276fe719f7919c9295ba38) )
  1004: 	ROM_LOAD( "chs1-v.3u",    0x18000, 0x4000, CRC(bf5d02dd) SHA1(f1f4932fc258c087783450e7c964902fa45c4568) )
  1005: 	ROM_LOAD( "chs1-v.3v",    0x1c000, 0x2000, CRC(5673f4fc) SHA1(682a81b60494b2c77d1da312c97bc807021eac67) )
  1006: 	/* 1e000-1ffff empty (space for 16k ROM) */
  1007: 	ROM_LOAD( "chs1-v.4r",    0x20000, 0x4000, CRC(8e155758) SHA1(d21ce2d81b2d47e5ff091e48cf46d41d01ea6314) )
  1008: 	ROM_LOAD( "chs1-v.4t",    0x24000, 0x4000, CRC(b4e43448) SHA1(1ed6bf913c15851cf86554713c122b55c18c5d67) )
  1009: 	ROM_LOAD( "chs1-v.4u",    0x28000, 0x4000, CRC(74e0d956) SHA1(b172cdcc5d26f3be06a7f0f9e19879957e87f992) )
  1010: 	/* 2c000-2ffff empty (4v doesn't exist, it is seen as a 0xff fill) */
  1011: 
  1012: 	ROM_REGION( 0x10000, REGION_GFX4, ROMREGION_DISPOSE )
  1013: 	ROM_LOAD( "chp1-v.6p",    0x00000, 0x0800, CRC(75be7aae) SHA1(396bc1d301b99e064de4dad699882618b1b9c958) )	/* chars #4 */
  1014: 	ROM_CONTINUE(             0x01000, 0x0800 )
  1015: 	ROM_CONTINUE(             0x00800, 0x0800 )
  1016: 	ROM_CONTINUE(             0x01800, 0x0800 )
  1017: 	ROM_LOAD( "chp1-v.6n",    0x02000, 0x0800, CRC(daf74de0) SHA1(9373d4527b675b3128a5a830f42e1dc5dcb85307) )
  1018: 	ROM_CONTINUE(             0x03000, 0x0800 )
  1019: 	ROM_CONTINUE(             0x02800, 0x0800 )
  1020: 	ROM_CONTINUE(             0x03800, 0x0800 )
  1021: 	/* 04000-07fff empty (space for 6l and 6k) */
  1022: 	ROM_LOAD( "chp1-v.8p",    0x08000, 0x0800, CRC(4cb7ea82) SHA1(213b7c1431f4c92e5519a8771035bda28b3bab8a) )
  1023: 	ROM_CONTINUE(             0x09000, 0x0800 )
  1024: 	ROM_CONTINUE(             0x08800, 0x0800 )
  1025: 	ROM_CONTINUE(             0x09800, 0x0800 )
  1026: 	ROM_LOAD( "chp1-v.8n",    0x0a000, 0x0800, CRC(1c0d09aa) SHA1(3276bae7400453f3612f53d7b47fb199cbe53e6d) )
  1027: 	ROM_CONTINUE(             0x0b000, 0x0800 )
  1028: 	ROM_CONTINUE(             0x0a800, 0x0800 )
  1029: 	ROM_CONTINUE(             0x0b800, 0x0800 )
  1030: 	/* 0c000-0ffff empty (space for 8l and 8k) */
  1031: 
  1032: 	ROM_REGION( 0x0d00, REGION_PROMS, 0 )
  1033: 	ROM_LOAD( "chs1b_6e.bpr", 0x0000, 0x0200, CRC(8efd867f) SHA1(d5f2bfe750bb5d472922bdb7e915ee28a3eec9bd) )	/* red component */
  1034: 	ROM_LOAD( "chs1-b.7e",    0x0200, 0x0200, CRC(9e170f64) SHA1(9548bfec2f5b7d222e91562b5459aef8c107b3ec) )	/* red component */
  1035: 	ROM_LOAD( "chs1b_6f.bpr", 0x0400, 0x0200, CRC(279d6cbc) SHA1(aea56970801908b4d51be0c15043c7b315d2637f) )	/* green component */
  1036: 	ROM_LOAD( "chs1-b.8e",    0x0600, 0x0200, CRC(3a2e333b) SHA1(5cf0324cc07ac4af63598c5c6acc61d24215b233) )	/* green component */
  1037: 	ROM_LOAD( "chs1b_7f.bpr", 0x0800, 0x0200, CRC(cad6b7ad) SHA1(62b61d5fa47ca6e2dd15295674dff62e4e69471a) )	/* blue component */
  1038: 	ROM_LOAD( "chs1-b.8f",    0x0a00, 0x0200, CRC(1663eed7) SHA1(90ff876a6b885f8a80c17531cde8b91864f1a6a5) )	/* blue component */
  1039: 	ROM_LOAD( "chs1-v.2d",    0x0c00, 0x0100, CRC(71dc0d48) SHA1(dd6609f547d74887f520d7e71a1a00317ff181d0) )	/* timing - not used */
  1040: 
  1041: 	ROM_REGION( 0x10000, REGION_SOUND1, 0 )	/* 64k for the VLM5030 data */
  1042: 	ROM_LOAD( "chs1c6pa.bin", 0x0000, 0x4000, CRC(d05fb730) SHA1(9f4c4c7e5113739312558eff4d3d3e42d513aa31) )
  1043: ROM_END
  1044: 
  1045: ROM_START( armwrest )
  1046: 	ROM_REGION( 0x10000, REGION_CPU1, 0 )	/* 64k for code */
  1047: 	ROM_LOAD( "chv1-c.8l",    0x0000, 0x2000, CRC(b09764c1) SHA1(2f32acd689ef70ec81fe958c7a604855ae39cf5e) )
  1048: 	ROM_LOAD( "chv1-c.8k",    0x2000, 0x2000, CRC(0e147ff7) SHA1(7ea8b7b5562d9432c6cace2ee13377f91543975d) )
  1049: 	ROM_LOAD( "chv1-c.8j",    0x4000, 0x2000, CRC(e7365289) SHA1(9d4ed5ce73b93c3917b1411ed902974e2a4f3d35) )
  1050: 	ROM_LOAD( "chv1-c.8h",    0x6000, 0x2000, CRC(a2118eec) SHA1(93e1b19819352f88888b3caf67ed27cd50f866a9) )
  1051: 	ROM_LOAD( "chpv-c.8f",    0x8000, 0x4000, CRC(664a07c4) SHA1(a8a049be5beeab3940079465fb0c80382f3860f0) )
  1052: 
  1053: 	ROM_REGION( 0x10000, REGION_CPU2, 0 )	/* 64k for the sound CPU */
  1054: 	ROM_LOAD( "chp1-c.4k",    0xe000, 0x2000, CRC(cb6ef376) SHA1(503dbcc1b18a497311bf129689d5650860bf96c7) )	/* same as Punch Out */
  1055: 
  1056: 	ROM_REGION( 0x08000, REGION_GFX1, ROMREGION_DISPOSE )
  1057: 	ROM_LOAD( "chpv-b.2e",    0x00000, 0x4000, CRC(8b45f365) SHA1(15fadccc9afe26672fbbb8eaeaa7d3ee70bcb056) )	/* chars #1 */
  1058: 	ROM_LOAD( "chpv-b.2d",    0x04000, 0x4000, CRC(b1a2850c) SHA1(e3aec428bb52443921fb7ceb5eb21b5f9ee9edcb) )
  1059: 
  1060: 	ROM_REGION( 0x0c000, REGION_GFX2, ROMREGION_DISPOSE )
  1061: 	ROM_LOAD( "chpv-b.2m",    0x00000, 0x4000, CRC(19245b37) SHA1(711e263d487661afca09f731e9333a84eb8d1541) )	/* chars #2 */
  1062: 	ROM_LOAD( "chpv-b.2l",    0x04000, 0x4000, CRC(46797941) SHA1(e21fcec8e19702f9765205a4dc89105b4e98dcdd) )
  1063: 	ROM_LOAD( "chpv-b.2k",    0x08000, 0x4000, CRC(24c4c26d) SHA1(2ed4a8fbb7858aff8a724ca34a0fac915cfc3a3a) )
  1064: 
  1065: 	ROM_REGION( 0x30000, REGION_GFX3, ROMREGION_DISPOSE )
  1066: 	ROM_LOAD( "chv1-v.2r",    0x00000, 0x4000, CRC(d86056d9) SHA1(decedf6b54e5990ff14d8049791b2d06c33ae71b) )	/* chars #3 */
  1067: 	ROM_LOAD( "chv1-v.2t",    0x04000, 0x4000, CRC(5ad77059) SHA1(05a1c7957982fa695bca62a05dc593c7913ccd7f) )
  1068: 	/* 08000-0bfff empty */
  1069: 	ROM_LOAD( "chv1-v.2v",    0x0c000, 0x4000, CRC(a0fd7338) SHA1(afd8d78661c3b7149f4c491ba930a8ce66d29977) )
  1070: 	ROM_LOAD( "chv1-v.3r",    0x10000, 0x4000, CRC(690e26fb) SHA1(6c20daabf5db633482b288c8020130a80cc939fc) )
  1071: 	ROM_LOAD( "chv1-v.3t",    0x14000, 0x4000, CRC(ea5d7759) SHA1(4d72d7b602455349be4a9cbf34127952aa2a99ea) )
  1072: 	/* 18000-1bfff empty */
  1073: 	ROM_LOAD( "chv1-v.3v",    0x1c000, 0x4000, CRC(ceb37c05) SHA1(9d0e3d52e018901c2f26a9de7aa9858b106487d3) )
  1074: 	ROM_LOAD( "chv1-v.4r",    0x20000, 0x4000, CRC(e291cba0) SHA1(a03ff7eea3a7a841000b67a8baeca6e82e8496ef) )
  1075: 	ROM_LOAD( "chv1-v.4t",    0x24000, 0x4000, CRC(e01f3b59) SHA1(9f47507094e03735adaf033f3b99e17dd9dfd5d0) )
  1076: 	/* 28000-2bfff empty */
  1077: 	/* 2c000-2ffff empty (4v doesn't exist, it is seen as a 0xff fill) */
  1078: 
  1079: 	ROM_REGION( 0x10000, REGION_GFX4, ROMREGION_DISPOSE )
  1080: 	ROM_LOAD( "chv1-v.6p",    0x00000, 0x2000, CRC(d834e142) SHA1(e7d654145b695147b744af2284173f90749fbf0e) )	/* chars #4 */
  1081: 	/* 02000-03fff empty (space for 16k ROM) */
  1082: 	/* 04000-07fff empty (space for 6l and 6k) */
  1083: 	ROM_LOAD( "chv1-v.8p",    0x08000, 0x2000, CRC(a2f531db) SHA1(c9be180fbc608135c892e8ee396b138f058edf24) )
  1084: 	/* 0a000-0bfff empty (space for 16k ROM) */
  1085: 	/* 0c000-0ffff empty (space for 8l and 8k) */
  1086: 
  1087: 	ROM_REGION( 0x0e00, REGION_PROMS, 0 )
  1088: 	ROM_LOAD( "chpv-b.7b",    0x0000, 0x0200, CRC(df6fdeb3) SHA1(7766d420cb95377104e26d96afddc83b67553c2f) )	/* red component */
  1089: 	ROM_LOAD( "chpv-b.4b",    0x0200, 0x0200, CRC(9d51416e) SHA1(ae933786c5fc19311144b2094305b4253dc8b75b) )	/* red component */
  1090: 	ROM_LOAD( "chpv-b.7c",    0x0400, 0x0200, CRC(b1da5f42) SHA1(55e744da70bbaa855cb1403eef028771a97578a1) )	/* green component */
  1091: 	ROM_LOAD( "chpv-b.4c",    0x0600, 0x0200, CRC(b8a25795) SHA1(8e41baa796fd8f00739a95b2e07066d68193bd76) )	/* green component */
  1092: 	ROM_LOAD( "chpv-b.7d",    0x0800, 0x0200, CRC(4ede813e) SHA1(6603465dae7d869c483d66768fab16f282caaa8b) )	/* blue component */
  1093: 	ROM_LOAD( "chpv-b.4d",    0x0a00, 0x0200, CRC(474fc3b1) SHA1(9cda1d1626285310524d048b60b1cf89e197a26d) )	/* blue component */
  1094: 	ROM_LOAD( "chv1-b.3c",    0x0c00, 0x0100, CRC(c3f92ea2) SHA1(1a82cca1b9a8d9bd4a1d121d8c131a7d0be554bc) )	/* priority encoder - not used */
  1095: 	ROM_LOAD( "chpv-v.2d",    0x0d00, 0x0100, CRC(71dc0d48) SHA1(dd6609f547d74887f520d7e71a1a00317ff181d0) )	/* timing - not used */
  1096: 
  1097: 	ROM_REGION( 0x10000, REGION_SOUND1, 0 )	/* 64k for the VLM5030 data */
  1098: 	ROM_LOAD( "chv1-c.6p",    0x0000, 0x4000, CRC(31b52896) SHA1(395f59ac38b46042f79e9224ac6bc7d3dc299906) )
  1099: ROM_END
  1100: 
  1101: 
  1102: 
  1103: GAME( 1984, punchout, 0,        punchout, punchout, punchout, ROT0, "Nintendo", "Punch-Out!!" )
  1104: GAME( 1984, spnchout, 0,        punchout, spnchout, spnchout, ROT0, "Nintendo", "Super Punch-Out!!" )
  1105: GAME( 1984, spnchotj, spnchout, punchout, spnchout, spnchotj, ROT0, "Nintendo", "Super Punch-Out!! (Japan)" )
  1106: GAME( 1985, armwrest, 0,        armwrest, armwrest, armwrest, ROT0, "Nintendo", "Arm Wrestling" )
  1107: 




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