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 : X-Men : VM Driver Source

Source Listing


     1: /***************************************************************************
     2: 
     3: X-Men
     4: 
     5: driver by Nicola Salmoria
     6: 
     7: ***************************************************************************/
     8: #include "driver.h" 
     9: #include "vidhrdw/konamiic.h" 
    10: #include "machine/eeprom.h" 
    11: #include "cpu/z80/z80.h" 
    12: #include "state.h" 
    13: 
    14: VIDEO_START( xmen );
    15: VIDEO_UPDATE( xmen );
    16: 
    17: 
    18: /***************************************************************************
    19: 
    20:   EEPROM
    21: 
    22: ***************************************************************************/
    23: 
    24: static int init_eeprom_count;
    25: 
    26: 
    27: static struct EEPROM_interface eeprom_interface =
    28: {
    29: 	7,				/* address bits */
    30: 	8,				/* data bits */
    31: 	"011000",		/*  read command */
    32: 	"011100",		/* write command */
    33: 	0,				/* erase command */
    34: 	"0100000000000",/* lock command */
    35: 	"0100110000000" /* unlock command */
    36: };
    37: 
    38: static NVRAM_HANDLER( xmen )
    39: {
    40: 	if (read_or_write)
    41: 		EEPROM_save(file);
    42: 	else
    43: 	{
    44: 		EEPROM_init(&eeprom_interface);
    45: 
    46: 		if (file)
    47: 		{
    48: 			init_eeprom_count = 0;
    49: 			EEPROM_load(file);
    50: 		}
    51: 		else
    52: 			init_eeprom_count = 10;
    53: 	}
    54: }
    55: 
    56: static READ16_HANDLER( eeprom_r )
    57: {
    58: 	int res;
    59: 
    60: logerror("%06x eeprom_r\n",activecpu_get_pc());
    61: 	/* bit 6 is EEPROM data */
    62: 	/* bit 7 is EEPROM ready */
    63: 	/* bit 14 is service button */
    64: 	res = (EEPROM_read_bit() << 6) | input_port_2_word_r(0,0);
    65: 	if (init_eeprom_count)
    66: 	{
    67: 		init_eeprom_count--;
    68: 		res &= 0xbfff;
    69: 	}
    70: 	return res;
    71: }
    72: 
    73: static WRITE16_HANDLER( eeprom_w )
    74: {
    75: logerror("%06x: write %04x to 108000\n",activecpu_get_pc(),data);
    76: 	if (ACCESSING_LSB)
    77: 	{
    78: 		/* bit 0 = coin counter */
    79: 		coin_counter_w(0,data & 0x01);
    80: 
    81: 		/* bit 2 is data */
    82: 		/* bit 3 is clock (active high) */
    83: 		/* bit 4 is cs (active low) */
    84: 		EEPROM_write_bit(data & 0x04);
    85: 		EEPROM_set_cs_line((data & 0x10) ? CLEAR_LINE : ASSERT_LINE);
    86: 		EEPROM_set_clock_line((data & 0x08) ? ASSERT_LINE : CLEAR_LINE);
    87: 	}
    88: 	if (ACCESSING_MSB)
    89: 	{
    90: 		/* bit 8 = enable sprite ROM reading */
    91: 		K053246_set_OBJCHA_line((data & 0x0100) ? ASSERT_LINE : CLEAR_LINE);
    92: 		/* bit 9 = enable char ROM reading through the video RAM */
    93: 		K052109_set_RMRD_line((data & 0x0200) ? ASSERT_LINE : CLEAR_LINE);
    94: 	}
    95: }
    96: 
    97: static READ16_HANDLER( sound_status_r )
    98: {
    99: 	return soundlatch2_r(0);
   100: }
   101: 
   102: static WRITE16_HANDLER( sound_cmd_w )
   103: {
   104: 	if (ACCESSING_LSB) {
   105: 		data &= 0xff;
   106: 		soundlatch_w(0, data);
   107: 		if(!Machine->sample_rate)
   108: 			if(data == 0xfc || data == 0xfe)
   109: 				soundlatch2_w(0, 0x7f);
   110: 	}
   111: }
   112: 
   113: static WRITE16_HANDLER( sound_irq_w )
   114: {
   115: 	cpu_set_irq_line(1, 0, HOLD_LINE);
   116: }
   117: 
   118: static WRITE16_HANDLER( xmen_18fa00_w )
   119: {
   120: 	if(ACCESSING_LSB) {
   121: 		/* bit 2 is interrupt enable */
   122: 		interrupt_enable_w(0,data & 0x04);
   123: 	}
   124: }
   125: 
   126: static data8_t sound_curbank;
   127: 
   128: static void sound_reset_bank(void)
   129: {
   130: 	cpu_setbank(4, memory_region(REGION_CPU2) + 0x10000 + (sound_curbank & 0x07) * 0x4000);
   131: }
   132: 
   133: static WRITE_HANDLER( sound_bankswitch_w )
   134: {
   135: 	sound_curbank = data;
   136: 	sound_reset_bank();
   137: }
   138: 
   139: 
   140: static MEMORY_READ16_START( readmem )
   141: 	{ 0x000000, 0x03ffff, MRA16_ROM },
   142: 	{ 0x080000, 0x0fffff, MRA16_ROM },
   143: 	{ 0x100000, 0x100fff, K053247_word_r },
   144: 	{ 0x101000, 0x101fff, MRA16_RAM },
   145: 	{ 0x104000, 0x104fff, MRA16_RAM },
   146: 	{ 0x108054, 0x108055, sound_status_r },
   147: 	{ 0x10a000, 0x10a001, input_port_0_word_r },
   148: 	{ 0x10a002, 0x10a003, input_port_1_word_r },
   149: 	{ 0x10a004, 0x10a005, eeprom_r },
   150: 	{ 0x10a00c, 0x10a00d, K053246_word_r },
   151: 	{ 0x110000, 0x113fff, MRA16_RAM },	/* main RAM */
   152: 	{ 0x18c000, 0x197fff, K052109_lsb_r },
   153: MEMORY_END
   154: 
   155: static MEMORY_WRITE16_START( writemem )
   156: 	{ 0x000000, 0x03ffff, MWA16_ROM },
   157: 	{ 0x080000, 0x0fffff, MWA16_ROM },
   158: 	{ 0x100000, 0x100fff, K053247_word_w },
   159: 	{ 0x101000, 0x101fff, MWA16_RAM },
   160: 	{ 0x104000, 0x104fff, paletteram16_xBBBBBGGGGGRRRRR_word_w, &paletteram16 },
   161: 	{ 0x108000, 0x108001, eeprom_w },
   162: 	{ 0x108020, 0x108027, K053246_word_w },
   163: 	{ 0x10804c, 0x10804d, sound_cmd_w },
   164: 	{ 0x10804e, 0x10804f, sound_irq_w },
   165: 	{ 0x108060, 0x10807f, K053251_lsb_w },
   166: 	{ 0x10a000, 0x10a001, watchdog_reset16_w },
   167: 	{ 0x110000, 0x113fff, MWA16_RAM },	/* main RAM */
   168: 	{ 0x18fa00, 0x18fa01, xmen_18fa00_w },
   169: 	{ 0x18c000, 0x197fff, K052109_lsb_w },
   170: MEMORY_END
   171: 
   172: static MEMORY_READ_START( sound_readmem )
   173: 	{ 0x0000, 0x7fff, MRA_ROM },
   174: 	{ 0x8000, 0xbfff, MRA_BANK4 },
   175: 	{ 0xc000, 0xdfff, MRA_RAM },
   176: 	{ 0xe000, 0xe22f, K054539_0_r },
   177: 	{ 0xec01, 0xec01, YM2151_status_port_0_r },
   178: 	{ 0xf002, 0xf002, soundlatch_r },
   179: MEMORY_END
   180: 
   181: static MEMORY_WRITE_START( sound_writemem )
   182: 	{ 0x0000, 0xbfff, MWA_ROM },
   183: 	{ 0xc000, 0xdfff, MWA_RAM },
   184: 	{ 0xe000, 0xe22f, K054539_0_w },
   185: 	{ 0xe800, 0xe800, YM2151_register_port_0_w },
   186: 	{ 0xec01, 0xec01, YM2151_data_port_0_w },
   187: 	{ 0xf000, 0xf000, soundlatch2_w },
   188: 	{ 0xf800, 0xf800, sound_bankswitch_w },
   189: MEMORY_END
   190: 
   191: 
   192: 
   193: INPUT_PORTS_START( xmen )
   194: 	PORT_START	/* IN1 */
   195: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
   196: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
   197: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
   198: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   199: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   200: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   201: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
   202: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN2 )
   203: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER4 )
   204: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER4 )
   205: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER4 )
   206: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
   207: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
   208: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
   209: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
   210: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN4 )
   211: 
   212: 	PORT_START	/* IN0 */
   213: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
   214: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
   215: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
   216: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   217: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   218: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   219: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
   220: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN1 )
   221: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER3 )
   222: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER3 )
   223: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER3 )
   224: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
   225: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
   226: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
   227: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
   228: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN3 )
   229: 
   230: 	PORT_START	/* COIN  EEPROM and service */
   231: 	PORT_BIT( 0x003f, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* unused? */
   232: 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* EEPROM data */
   233: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* EEPROM status - always 1 */
   234: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
   235: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
   236: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_START3 )
   237: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_START4 )
   238: 	PORT_BIT( 0x3000, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* unused? */
   239: 	PORT_BITX(0x4000, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
   240: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* unused? */
   241: INPUT_PORTS_END
   242: 
   243: INPUT_PORTS_START( xmen2p )
   244: 	PORT_START	/* IN1 */
   245: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER2 )
   246: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER2 )
   247: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER2 )
   248: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER2 )
   249: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER2 )
   250: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER2 )
   251: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER2 )
   252: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN2 )
   253: /*
   254: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER4 )
   255: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER4 )
   256: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER4 )
   257: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER4 )
   258: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER4 )
   259: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER4 )
   260: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER4 )
   261: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN4 )
   262: */
   263: 
   264: 	PORT_START	/* IN0 */
   265: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER1 )
   266: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER1 )
   267: 	PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER1 )
   268: 	PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER1 )
   269: 	PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER1 )
   270: 	PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER1 )
   271: 	PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER1 )
   272: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_COIN1 )
   273: /*
   274: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_UP    | IPF_8WAY | IPF_PLAYER3 )
   275: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN  | IPF_8WAY | IPF_PLAYER3 )
   276: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT  | IPF_8WAY | IPF_PLAYER3 )
   277: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_PLAYER3 )
   278: 	PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 | IPF_PLAYER3 )
   279: 	PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 | IPF_PLAYER3 )
   280: 	PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 | IPF_PLAYER3 )
   281: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_COIN3 )
   282: */
   283: 
   284: 	PORT_START	/* COIN  EEPROM and service */
   285: 	PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_SERVICE1 )
   286: 	PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_SERVICE2 )
   287: 	PORT_BIT( 0x003c, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* unused? */
   288: 	PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_UNKNOWN )	/* EEPROM data */
   289: 	PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* EEPROM status - always 1 */
   290: 	PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 )
   291: 	PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 )
   292: 	PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN )
   293: 	PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN )
   294: 	PORT_BIT( 0x3000, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* unused? */
   295: 	PORT_BITX(0x4000, IP_ACTIVE_LOW, IPT_SERVICE, DEF_STR( Service_Mode ), KEYCODE_F2, IP_JOY_NONE )
   296: 	PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )	/* unused? */
   297: INPUT_PORTS_END
   298: 
   299: 
   300: 
   301: static struct YM2151interface ym2151_interface =
   302: {
   303: 	1,			/* 1 chip */
   304: 	4000000,	/* 4 MHz? (hand tuned) */
   305: 	{ YM3012_VOL(20,MIXER_PAN_LEFT,20,MIXER_PAN_RIGHT) },
   306: 	{ 0 }
   307: };
   308: 
   309: static struct K054539interface k054539_interface =
   310: {
   311: 	1,			/* 1 chip */
   312: 	48000,
   313: 	{ REGION_SOUND1 },
   314: 	{ { 80, 80 } },
   315: 	{ 0 }		/* The YM does not seem to be connected to the 539 analog input */
   316: };
   317: 
   318: 
   319: 
   320: static INTERRUPT_GEN( xmen_interrupt )
   321: {
   322: 	if (cpu_getiloops() == 0) irq5_line_hold();
   323: 	else irq3_line_hold();
   324: }
   325: 
   326: static MACHINE_DRIVER_START( xmen )
   327: 
   328: 	/* basic machine hardware */
   329: 	MDRV_CPU_ADD(M68000, 16000000)	/* ? */
   330: 	MDRV_CPU_MEMORY(readmem,writemem)
   331: 	MDRV_CPU_VBLANK_INT(xmen_interrupt,2)
   332: 
   333: 	MDRV_CPU_ADD(Z80,2*3579545)
   334: 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)	/* ????? */
   335: 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
   336: 
   337: 	MDRV_FRAMES_PER_SECOND(60)
   338: 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
   339: 
   340: 	MDRV_NVRAM_HANDLER(xmen)
   341: 
   342: 	/* video hardware */
   343: 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_HAS_SHADOWS)
   344: 	MDRV_SCREEN_SIZE(64*8, 32*8)
   345: 	MDRV_VISIBLE_AREA(14*8, (64-14)*8-1, 2*8, 30*8-1 )
   346: 	MDRV_PALETTE_LENGTH(2048)
   347: 
   348: 	MDRV_VIDEO_START(xmen)
   349: 	MDRV_VIDEO_UPDATE(xmen)
   350: 
   351: 	/* sound hardware */
   352: 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
   353: 	MDRV_SOUND_ADD(YM2151, ym2151_interface)
   354: 	MDRV_SOUND_ADD(K054539, k054539_interface)
   355: MACHINE_DRIVER_END
   356: 
   357: 
   358: 
   359: /***************************************************************************
   360: 
   361:   Game driver(s)
   362: 
   363: ***************************************************************************/
   364: 
   365: ROM_START( xmen )
   366: 	ROM_REGION( 0x100000, REGION_CPU1, 0 )
   367: 	ROM_LOAD16_BYTE( "065ubb04.10d",  0x00000, 0x20000, CRC(f896c93b) SHA1(0bee89fe4d36a9b2ded864770198eb2df6903580) )
   368: 	ROM_LOAD16_BYTE( "065ubb05.10f",  0x00001, 0x20000, CRC(e02e5d64) SHA1(9838c1cf9862db3ca70a23ef5f3c5883729c4e0c) )
   369: 	ROM_LOAD16_BYTE( "xmen17g.bin",   0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
   370: 	ROM_LOAD16_BYTE( "xmen17j.bin",   0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
   371: 
   372: 	ROM_REGION( 0x30000, REGION_CPU2, 0 )		/* 64k+128k fpr sound cpu */
   373: 	ROM_LOAD( "065-a01.6f",   0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
   374: 	ROM_RELOAD(               0x10000, 0x20000 )
   375: 
   376: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* graphics (addressable by the main CPU) */
   377: 	ROM_LOAD( "xmen1l.bin",   0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )	/* tiles */
   378: 	ROM_LOAD( "xmen1h.bin",   0x100000, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
   379: 
   380: 	ROM_REGION( 0x400000, REGION_GFX2, 0 )	/* graphics (addressable by the main CPU) */
   381: 	ROM_LOAD( "xmen12l.bin",  0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) )	/* sprites */
   382: 	ROM_LOAD( "xmen17l.bin",  0x100000, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
   383: 	ROM_LOAD( "xmen22h.bin",  0x200000, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
   384: 	ROM_LOAD( "xmen22l.bin",  0x300000, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
   385: 
   386: 	ROM_REGION( 0x200000, REGION_SOUND1, 0 )	/* samples for the 054539 */
   387: 	ROM_LOAD( "xmenc25.bin",  0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
   388: ROM_END
   389: 
   390: ROM_START( xmen6p )
   391: 	ROM_REGION( 0x100000, REGION_CPU1, 0 )
   392: 	ROM_LOAD16_BYTE( "065ucb04.10d",  0x00000, 0x20000, CRC(0f09b8e0) )
   393: 	ROM_LOAD16_BYTE( "065ucb05.10f",  0x00001, 0x20000, CRC(867becbf) )
   394: 	ROM_LOAD16_BYTE( "xmen17g.bin",   0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
   395: 	ROM_LOAD16_BYTE( "xmen17j.bin",   0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
   396: 
   397: 	ROM_REGION( 0x30000, REGION_CPU2, 0 )		/* 64k+128k fpr sound cpu */
   398: 	ROM_LOAD( "065-a01.6f",   0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
   399: 	ROM_RELOAD(               0x10000, 0x20000 )
   400: 
   401: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* graphics (addressable by the main CPU) */
   402: 	ROM_LOAD( "xmen1l.bin",   0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )	/* tiles */
   403: 	ROM_LOAD( "xmen1h.bin",   0x100000, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
   404: 
   405: 	ROM_REGION( 0x400000, REGION_GFX2, 0 )	/* graphics (addressable by the main CPU) */
   406: 	ROM_LOAD( "xmen12l.bin",  0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) )	/* sprites */
   407: 	ROM_LOAD( "xmen17l.bin",  0x100000, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
   408: 	ROM_LOAD( "xmen22h.bin",  0x200000, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
   409: 	ROM_LOAD( "xmen22l.bin",  0x300000, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
   410: 
   411: 	ROM_REGION( 0x200000, REGION_SOUND1, 0 )	/* samples for the 054539 */
   412: 	ROM_LOAD( "xmenc25.bin",  0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
   413: ROM_END
   414: 
   415: ROM_START( xmen2p )
   416: 	ROM_REGION( 0x100000, REGION_CPU1, 0 )
   417: 	ROM_LOAD16_BYTE( "065aaa04.10d",  0x00000, 0x20000, CRC(7f8b27c2) SHA1(052db1f47671564a440544a41fc397a19d1aff3a) )
   418: 	ROM_LOAD16_BYTE( "065aaa04.10f",  0x00001, 0x20000, CRC(841ed636) SHA1(33f96022ce3dae9b49eb51fd4e8f7387a1777002) )
   419: 	ROM_LOAD16_BYTE( "xmen17g.bin",   0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
   420: 	ROM_LOAD16_BYTE( "xmen17j.bin",   0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
   421: 
   422: 	ROM_REGION( 0x30000, REGION_CPU2, 0 )		/* 64k+128k fpr sound cpu */
   423: 	ROM_LOAD( "065-a01.6f",   0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
   424: 	ROM_RELOAD(               0x10000, 0x20000 )
   425: 
   426: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* graphics (addressable by the main CPU) */
   427: 	ROM_LOAD( "xmen1l.bin",   0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )	/* tiles */
   428: 	ROM_LOAD( "xmen1h.bin",   0x100000, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
   429: 
   430: 	ROM_REGION( 0x400000, REGION_GFX2, 0 )	/* graphics (addressable by the main CPU) */
   431: 	ROM_LOAD( "xmen12l.bin",  0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) )	/* sprites */
   432: 	ROM_LOAD( "xmen17l.bin",  0x100000, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
   433: 	ROM_LOAD( "xmen22h.bin",  0x200000, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
   434: 	ROM_LOAD( "xmen22l.bin",  0x300000, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
   435: 
   436: 	ROM_REGION( 0x200000, REGION_SOUND1, 0 )	/* samples for the 054539 */
   437: 	ROM_LOAD( "xmenc25.bin",  0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
   438: ROM_END
   439: 
   440: ROM_START( xmen2pj )
   441: 	ROM_REGION( 0x100000, REGION_CPU1, 0 )
   442: 	ROM_LOAD16_BYTE( "065jaa04.10d",  0x00000, 0x20000, CRC(66746339) SHA1(8cc5f5deb4178b0444ffc5974940a30cb003114e) )
   443: 	ROM_LOAD16_BYTE( "065jaa05.10f",  0x00001, 0x20000, CRC(1215b706) SHA1(b746dedab9c509b5cd941f0f4ddd3709e8a58cce) )
   444: 	ROM_LOAD16_BYTE( "xmen17g.bin",   0x80000, 0x40000, CRC(b31dc44c) SHA1(4bdac05826b4d6d4fe46686ede5190e2f73eefc5) )
   445: 	ROM_LOAD16_BYTE( "xmen17j.bin",   0x80001, 0x40000, CRC(13842fe6) SHA1(b61f094eb94336edb8708d3437ead9b853b2d6e6) )
   446: 
   447: 	ROM_REGION( 0x30000, REGION_CPU2, 0 )		/* 64k+128k fpr sound cpu */
   448: 	ROM_LOAD( "065-a01.6f",   0x00000, 0x20000, CRC(147d3a4d) SHA1(a14409fe991e803b9e7812303e3a9ebd857d8b01) )
   449: 	ROM_RELOAD(               0x10000, 0x20000 )
   450: 
   451: 	ROM_REGION( 0x200000, REGION_GFX1, 0 )	/* graphics (addressable by the main CPU) */
   452: 	ROM_LOAD( "xmen1l.bin",   0x000000, 0x100000, CRC(6b649aca) SHA1(2595f314517738e8614facf578cc951a6c36a180) )	/* tiles */
   453: 	ROM_LOAD( "xmen1h.bin",   0x100000, 0x100000, CRC(c5dc8fc4) SHA1(9887cb002c8b72be7ce933cb397f00cdc5506c8c) )
   454: 
   455: 	ROM_REGION( 0x400000, REGION_GFX2, 0 )	/* graphics (addressable by the main CPU) */
   456: 	ROM_LOAD( "xmen12l.bin",  0x000000, 0x100000, CRC(ea05d52f) SHA1(7f2c14f907355856fb94e3a67b73aa1919776835) )	/* sprites */
   457: 	ROM_LOAD( "xmen17l.bin",  0x100000, 0x100000, CRC(96b91802) SHA1(641943557b59b91f0edd49ec8a73cef7d9268b32) )
   458: 	ROM_LOAD( "xmen22h.bin",  0x200000, 0x100000, CRC(321ed07a) SHA1(5b00ed676daeea974bdce6701667cfe573099dad) )
   459: 	ROM_LOAD( "xmen22l.bin",  0x300000, 0x100000, CRC(46da948e) SHA1(168ac9178ee5bad5931557fb549e1237971d7839) )
   460: 
   461: 	ROM_REGION( 0x200000, REGION_SOUND1, 0 )	/* samples for the 054539 */
   462: 	ROM_LOAD( "xmenc25.bin",  0x000000, 0x200000, CRC(5adbcee0) SHA1(435feda697193bc51db80eba46be474cbbc1de4b) )
   463: ROM_END
   464: 
   465: 
   466: 
   467: static DRIVER_INIT( xmen )
   468: {
   469: 	konami_rom_deinterleave_2(REGION_GFX1);
   470: 	konami_rom_deinterleave_4(REGION_GFX2);
   471: 
   472: 	state_save_register_UINT8("main", 0, "sound bank", &sound_curbank, 1);
   473: 	state_save_register_func_postload(sound_reset_bank);
   474: }
   475: 
   476: static DRIVER_INIT( xmen6p )
   477: {
   478: 	data16_t *rom = (data16_t *)memory_region(REGION_CPU1);
   479: 
   480: 	rom[0x21a6/2] = 0x4e71;
   481: 	rom[0x21a8/2] = 0x4e71;
   482: 	rom[0x21aa/2] = 0x4e71;
   483: 
   484: 	init_xmen();
   485: }
   486: 
   487: 
   488: 
   489: GAME ( 1992, xmen,    0,    xmen, xmen,   xmen,   ROT0, "Konami", "X-Men (US 4 Players)" )
   490: GAME ( 1992, xmen2p,  xmen, xmen, xmen2p, xmen,   ROT0, "Konami", "X-Men (World 2 Players)" )
   491: GAME ( 1992, xmen2pj, xmen, xmen, xmen2p, xmen,   ROT0, "Konami", "X-Men (Japan 2 Players)" )
   492: GAMEX( 1992, xmen6p,  xmen, xmen, xmen,   xmen6p, ROT0, "Konami", "X-Men (US 6 Players)", GAME_NOT_WORKING )
   493: 




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